UNPKG

2 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack://Blockv/webpack/bootstrap","webpack://Blockv/./node_modules/core-js/modules/_export.js","webpack://Blockv/./src/internal/DataPool/DataObject.js","webpack://Blockv/./node_modules/core-js/modules/_global.js","webpack://Blockv/./node_modules/core-js/modules/_fails.js","webpack://Blockv/./node_modules/core-js/modules/_an-object.js","webpack://Blockv/./node_modules/core-js/modules/_is-object.js","webpack://Blockv/./node_modules/core-js/modules/_wks.js","webpack://Blockv/./node_modules/core-js/modules/_to-length.js","webpack://Blockv/./node_modules/core-js/modules/_core.js","webpack://Blockv/./node_modules/core-js/modules/_descriptors.js","webpack://Blockv/./node_modules/core-js/modules/_object-dp.js","webpack://Blockv/./node_modules/console-browserify/index.js","webpack://Blockv/./node_modules/core-js/modules/_to-object.js","webpack://Blockv/./node_modules/events/events.js","webpack://Blockv/./node_modules/core-js/modules/_redefine.js","webpack://Blockv/./node_modules/core-js/modules/_string-html.js","webpack://Blockv/./node_modules/core-js/modules/_has.js","webpack://Blockv/./node_modules/core-js/modules/_hide.js","webpack://Blockv/./node_modules/core-js/modules/_to-iobject.js","webpack://Blockv/./src/internal/DataPool/Delayer.js","webpack://Blockv/./node_modules/pouchdb/node_modules/inherits/inherits_browser.js","webpack://Blockv/./node_modules/core-js/modules/_strict-method.js","webpack://Blockv/./node_modules/immediate/lib/browser.js","webpack://Blockv/./node_modules/core-js/modules/_ctx.js","webpack://Blockv/./node_modules/core-js/modules/_a-function.js","webpack://Blockv/./node_modules/core-js/modules/_to-integer.js","webpack://Blockv/./node_modules/core-js/modules/_object-gopd.js","webpack://Blockv/./node_modules/core-js/modules/_object-sap.js","webpack://Blockv/./node_modules/core-js/modules/_array-methods.js","webpack://Blockv/./node_modules/core-js/modules/_cof.js","webpack://Blockv/./node_modules/core-js/modules/_defined.js","webpack://Blockv/./node_modules/core-js/modules/_typed-array.js","webpack://Blockv/./node_modules/lodash/lodash.js","webpack://Blockv/./src/model/Vatom.js","webpack://Blockv/./node_modules/core-js/modules/_to-primitive.js","webpack://Blockv/./node_modules/core-js/modules/_meta.js","webpack://Blockv/./src/internal/DataPool/plugins/BLOCKvRegion.js","webpack://Blockv/./node_modules/core-js/modules/_property-desc.js","webpack://Blockv/./node_modules/core-js/modules/_uid.js","webpack://Blockv/./node_modules/core-js/modules/_library.js","webpack://Blockv/./node_modules/core-js/modules/_object-keys.js","webpack://Blockv/./node_modules/core-js/modules/_to-absolute-index.js","webpack://Blockv/./node_modules/core-js/modules/_object-create.js","webpack://Blockv/./node_modules/core-js/modules/_object-gopn.js","webpack://Blockv/./node_modules/core-js/modules/_object-gpo.js","webpack://Blockv/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://Blockv/./node_modules/core-js/modules/_validate-collection.js","webpack://Blockv/./node_modules/argsarray/index.js","webpack://Blockv/(webpack)/buildin/global.js","webpack://Blockv/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://Blockv/./node_modules/core-js/modules/_string-trim.js","webpack://Blockv/./node_modules/core-js/modules/_iterators.js","webpack://Blockv/./node_modules/core-js/modules/_set-species.js","webpack://Blockv/./node_modules/core-js/modules/_an-instance.js","webpack://Blockv/./node_modules/core-js/modules/_redefine-all.js","webpack://Blockv/./node_modules/jwt-decode/lib/index.js","webpack://Blockv/./src/internal/EventEmitter.js","webpack://Blockv/./node_modules/core-js/modules/_iobject.js","webpack://Blockv/./node_modules/core-js/modules/_object-pie.js","webpack://Blockv/./node_modules/core-js/modules/_classof.js","webpack://Blockv/./node_modules/core-js/modules/_species-constructor.js","webpack://Blockv/./src/client/Discover.js","webpack://Blockv/./src/model/User.js","webpack://Blockv/./node_modules/process/browser.js","webpack://Blockv/./node_modules/core-js/modules/_shared.js","webpack://Blockv/./node_modules/core-js/modules/_array-includes.js","webpack://Blockv/./node_modules/core-js/modules/_object-gops.js","webpack://Blockv/./node_modules/core-js/modules/_is-array.js","webpack://Blockv/./node_modules/core-js/modules/_iter-detect.js","webpack://Blockv/./node_modules/core-js/modules/_flags.js","webpack://Blockv/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://Blockv/./node_modules/core-js/modules/_fix-re-wks.js","webpack://Blockv/./node_modules/core-js/modules/_for-of.js","webpack://Blockv/./node_modules/core-js/modules/_user-agent.js","webpack://Blockv/./node_modules/core-js/modules/_collection.js","webpack://Blockv/./node_modules/core-js/modules/_typed.js","webpack://Blockv/./node_modules/url-parse/index.js","webpack://Blockv/./node_modules/spark-md5/spark-md5.js","webpack://Blockv/./src/internal/DataPool/DataObjectAnimator.js","webpack://Blockv/./node_modules/util/util.js","webpack://Blockv/./node_modules/core-js/modules/_dom-create.js","webpack://Blockv/./node_modules/core-js/modules/_wks-ext.js","webpack://Blockv/./node_modules/core-js/modules/_shared-key.js","webpack://Blockv/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://Blockv/./node_modules/core-js/modules/_html.js","webpack://Blockv/./node_modules/core-js/modules/_set-proto.js","webpack://Blockv/./node_modules/core-js/modules/_string-ws.js","webpack://Blockv/./node_modules/core-js/modules/_inherit-if-required.js","webpack://Blockv/./node_modules/core-js/modules/_string-repeat.js","webpack://Blockv/./node_modules/core-js/modules/_math-sign.js","webpack://Blockv/./node_modules/core-js/modules/_math-expm1.js","webpack://Blockv/./node_modules/core-js/modules/_string-at.js","webpack://Blockv/./node_modules/core-js/modules/_iter-define.js","webpack://Blockv/./node_modules/core-js/modules/_string-context.js","webpack://Blockv/./node_modules/core-js/modules/_is-regexp.js","webpack://Blockv/./node_modules/core-js/modules/_fails-is-regexp.js","webpack://Blockv/./node_modules/core-js/modules/_is-array-iter.js","webpack://Blockv/./node_modules/core-js/modules/_create-property.js","webpack://Blockv/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://Blockv/./node_modules/core-js/modules/_array-fill.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.iterator.js","webpack://Blockv/./node_modules/core-js/modules/_regexp-exec.js","webpack://Blockv/./node_modules/core-js/modules/_advance-string-index.js","webpack://Blockv/./node_modules/core-js/modules/_task.js","webpack://Blockv/./node_modules/core-js/modules/_typed-buffer.js","webpack://Blockv/./node_modules/core-js/library/modules/_global.js","webpack://Blockv/./node_modules/core-js/library/modules/_is-object.js","webpack://Blockv/./node_modules/core-js/library/modules/_descriptors.js","webpack://Blockv/./src/internal/DataPool/EventEmitter.js","webpack://Blockv/./node_modules/uuid/index.js","webpack://Blockv/./node_modules/vuvuzela/index.js","webpack://Blockv/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://Blockv/./node_modules/core-js/modules/_wks-define.js","webpack://Blockv/./node_modules/core-js/modules/_object-keys-internal.js","webpack://Blockv/./node_modules/core-js/modules/_object-dps.js","webpack://Blockv/./node_modules/core-js/modules/_object-gopn-ext.js","webpack://Blockv/./node_modules/core-js/modules/_object-assign.js","webpack://Blockv/./node_modules/core-js/modules/_same-value.js","webpack://Blockv/./node_modules/core-js/modules/_bind.js","webpack://Blockv/./node_modules/core-js/modules/_invoke.js","webpack://Blockv/./node_modules/core-js/modules/_parse-int.js","webpack://Blockv/./node_modules/core-js/modules/_parse-float.js","webpack://Blockv/./node_modules/core-js/modules/_a-number-value.js","webpack://Blockv/./node_modules/core-js/modules/_is-integer.js","webpack://Blockv/./node_modules/core-js/modules/_math-log1p.js","webpack://Blockv/./node_modules/core-js/modules/_iter-create.js","webpack://Blockv/./node_modules/core-js/modules/_iter-call.js","webpack://Blockv/./node_modules/core-js/modules/_array-species-create.js","webpack://Blockv/./node_modules/core-js/modules/_array-reduce.js","webpack://Blockv/./node_modules/core-js/modules/_array-copy-within.js","webpack://Blockv/./node_modules/core-js/modules/_iter-step.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.flags.js","webpack://Blockv/./node_modules/core-js/modules/es6.promise.js","webpack://Blockv/./node_modules/core-js/modules/_new-promise-capability.js","webpack://Blockv/./node_modules/core-js/modules/_promise-resolve.js","webpack://Blockv/./node_modules/core-js/modules/_collection-strong.js","webpack://Blockv/./node_modules/core-js/modules/_collection-weak.js","webpack://Blockv/./node_modules/core-js/modules/_to-index.js","webpack://Blockv/./node_modules/core-js/modules/_own-keys.js","webpack://Blockv/./node_modules/core-js/modules/_string-pad.js","webpack://Blockv/./node_modules/core-js/modules/_object-to-array.js","webpack://Blockv/./node_modules/core-js/library/modules/_core.js","webpack://Blockv/./node_modules/core-js/library/modules/_fails.js","webpack://Blockv/./node_modules/uuid/lib/rng-browser.js","webpack://Blockv/./node_modules/uuid/lib/bytesToUuid.js","webpack://Blockv/./node_modules/reassert/assert.js","webpack://Blockv/./node_modules/reassert/utils/isNodejs.js","webpack://Blockv/./src/internal/DataPool/Region.js","webpack://Blockv/./src/internal/DataPool/Filter.js","webpack://Blockv/./src/internal/DataPool/DatabaseMap.js","webpack://Blockv/./node_modules/pouchdb/lib/index-browser.es.js","webpack://Blockv/./src/internal/repo/Store.js","webpack://Blockv/./src/internal/net/rest/api/UserApi.js","webpack://Blockv/./src/internal/net/Client.js","webpack://Blockv/./node_modules/@brillout/fetch/index.js","webpack://Blockv/./src/client/manager/WebSockets.js","webpack://Blockv/./node_modules/@babel/polyfill/lib/index.js","webpack://Blockv/./node_modules/util/support/isBufferBrowser.js","webpack://Blockv/./node_modules/util/node_modules/inherits/inherits_browser.js","webpack://Blockv/./node_modules/assert/assert.js","webpack://Blockv/./node_modules/object-assign/index.js","webpack://Blockv/./node_modules/date-now/index.js","webpack://Blockv/./node_modules/@babel/polyfill/lib/noConflict.js","webpack://Blockv/./node_modules/core-js/es6/index.js","webpack://Blockv/./node_modules/core-js/modules/es6.symbol.js","webpack://Blockv/./node_modules/core-js/modules/_function-to-string.js","webpack://Blockv/./node_modules/core-js/modules/_enum-keys.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.create.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.define-property.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.define-properties.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.keys.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.freeze.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.seal.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.is-frozen.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.is-sealed.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.is-extensible.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.assign.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.is.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://Blockv/./node_modules/core-js/modules/es6.object.to-string.js","webpack://Blockv/./node_modules/core-js/modules/es6.function.bind.js","webpack://Blockv/./node_modules/core-js/modules/es6.function.name.js","webpack://Blockv/./node_modules/core-js/modules/es6.function.has-instance.js","webpack://Blockv/./node_modules/core-js/modules/es6.parse-int.js","webpack://Blockv/./node_modules/core-js/modules/es6.parse-float.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.constructor.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.to-fixed.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.to-precision.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.epsilon.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.is-integer.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.is-nan.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://Blockv/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.acosh.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.asinh.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.atanh.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.cbrt.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.clz32.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.cosh.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.expm1.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.fround.js","webpack://Blockv/./node_modules/core-js/modules/_math-fround.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.hypot.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.imul.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.log10.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.log1p.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.log2.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.sign.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.sinh.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.tanh.js","webpack://Blockv/./node_modules/core-js/modules/es6.math.trunc.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.from-code-point.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.raw.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.trim.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.iterator.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.code-point-at.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.ends-with.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.includes.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.repeat.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.starts-with.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.anchor.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.big.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.blink.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.bold.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.fixed.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.fontcolor.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.fontsize.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.italics.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.link.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.small.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.strike.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.sub.js","webpack://Blockv/./node_modules/core-js/modules/es6.string.sup.js","webpack://Blockv/./node_modules/core-js/modules/es6.date.now.js","webpack://Blockv/./node_modules/core-js/modules/es6.date.to-json.js","webpack://Blockv/./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://Blockv/./node_modules/core-js/modules/_date-to-iso-string.js","webpack://Blockv/./node_modules/core-js/modules/es6.date.to-string.js","webpack://Blockv/./node_modules/core-js/modules/es6.date.to-primitive.js","webpack://Blockv/./node_modules/core-js/modules/_date-to-primitive.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.is-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.from.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.of.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.join.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.slice.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.sort.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.for-each.js","webpack://Blockv/./node_modules/core-js/modules/_array-species-constructor.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.map.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.filter.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.some.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.every.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.reduce.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.reduce-right.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.index-of.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.last-index-of.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.copy-within.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.fill.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.find.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.find-index.js","webpack://Blockv/./node_modules/core-js/modules/es6.array.species.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.constructor.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.to-string.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.match.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.search.js","webpack://Blockv/./node_modules/core-js/modules/es6.regexp.split.js","webpack://Blockv/./node_modules/core-js/modules/_microtask.js","webpack://Blockv/./node_modules/core-js/modules/_perform.js","webpack://Blockv/./node_modules/core-js/modules/es6.map.js","webpack://Blockv/./node_modules/core-js/modules/es6.set.js","webpack://Blockv/./node_modules/core-js/modules/es6.weak-map.js","webpack://Blockv/./node_modules/core-js/modules/es6.weak-set.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.data-view.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.int8-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.int16-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.int32-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.float32-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.typed.float64-array.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.get.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.has.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.set.js","webpack://Blockv/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://Blockv/./node_modules/core-js/fn/array/includes.js","webpack://Blockv/./node_modules/core-js/modules/es7.array.includes.js","webpack://Blockv/./node_modules/core-js/fn/array/flat-map.js","webpack://Blockv/./node_modules/core-js/modules/es7.array.flat-map.js","webpack://Blockv/./node_modules/core-js/modules/_flatten-into-array.js","webpack://Blockv/./node_modules/core-js/fn/string/pad-start.js","webpack://Blockv/./node_modules/core-js/modules/es7.string.pad-start.js","webpack://Blockv/./node_modules/core-js/fn/string/pad-end.js","webpack://Blockv/./node_modules/core-js/modules/es7.string.pad-end.js","webpack://Blockv/./node_modules/core-js/fn/string/trim-start.js","webpack://Blockv/./node_modules/core-js/modules/es7.string.trim-left.js","webpack://Blockv/./node_modules/core-js/fn/string/trim-end.js","webpack://Blockv/./node_modules/core-js/modules/es7.string.trim-right.js","webpack://Blockv/./node_modules/core-js/fn/symbol/async-iterator.js","webpack://Blockv/./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://Blockv/./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://Blockv/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://Blockv/./node_modules/core-js/fn/object/values.js","webpack://Blockv/./node_modules/core-js/modules/es7.object.values.js","webpack://Blockv/./node_modules/core-js/fn/object/entries.js","webpack://Blockv/./node_modules/core-js/modules/es7.object.entries.js","webpack://Blockv/./node_modules/core-js/fn/promise/finally.js","webpack://Blockv/./node_modules/core-js/modules/es7.promise.finally.js","webpack://Blockv/./node_modules/core-js/web/index.js","webpack://Blockv/./node_modules/core-js/modules/web.timers.js","webpack://Blockv/./node_modules/core-js/modules/web.immediate.js","webpack://Blockv/./node_modules/core-js/modules/web.dom.iterable.js","webpack://Blockv/./node_modules/regenerator-runtime/runtime.js","webpack://Blockv/./node_modules/core-js/library/fn/global.js","webpack://Blockv/./node_modules/core-js/library/modules/es7.global.js","webpack://Blockv/./node_modules/core-js/library/modules/_export.js","webpack://Blockv/./node_modules/core-js/library/modules/_ctx.js","webpack://Blockv/./node_modules/core-js/library/modules/_a-function.js","webpack://Blockv/./node_modules/core-js/library/modules/_hide.js","webpack://Blockv/./node_modules/core-js/library/modules/_object-dp.js","webpack://Blockv/./node_modules/core-js/library/modules/_an-object.js","webpack://Blockv/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://Blockv/./node_modules/core-js/library/modules/_dom-create.js","webpack://Blockv/./node_modules/core-js/library/modules/_to-primitive.js","webpack://Blockv/./node_modules/core-js/library/modules/_property-desc.js","webpack://Blockv/./node_modules/core-js/library/modules/_has.js","webpack://Blockv/./src/internal/DataPool/plugins/InventoryRegion.js","webpack://Blockv/(webpack)/buildin/module.js","webpack://Blockv/./node_modules/lz-string/libs/lz-string.js","webpack://Blockv/./node_modules/uuid/v1.js","webpack://Blockv/./node_modules/uuid/v4.js","webpack://Blockv/./node_modules/requires-port/index.js","webpack://Blockv/./node_modules/querystringify/index.js","webpack://Blockv/./src/internal/DataPool/plugins/VatomIDRegion.js","webpack://Blockv/./src/internal/DataPool/plugins/VatomChildrenRegion.js","webpack://Blockv/./src/internal/DataPool/plugins/GeoPosRegion.js","webpack://Blockv/./node_modules/jwt-decode/lib/base64_url_decode.js","webpack://Blockv/./node_modules/jwt-decode/lib/atob.js","webpack://Blockv/./node_modules/reassert/usage.js","webpack://Blockv/./node_modules/reassert/log.js","webpack://Blockv/./node_modules/@brillout/format-text/index.js","webpack://Blockv/./node_modules/reassert/warning.js","webpack://Blockv/./node_modules/string-width/index.js","webpack://Blockv/./node_modules/string-width/node_modules/strip-ansi/index.js","webpack://Blockv/./node_modules/string-width/node_modules/ansi-regex/index.js","webpack://Blockv/./node_modules/is-fullwidth-code-point/index.js","webpack://Blockv/./src/internal/DataPool/index.js","webpack://Blockv/./src/client/manager/UserManager.js","webpack://Blockv/./src/internal/net/rest/api/VatomApi.js","webpack://Blockv/./src/client/manager/Vatoms.js","webpack://Blockv/./src/client/manager/Activity.js","webpack://Blockv/./src/internal/net/rest/api/ActivityApi.js","webpack://Blockv/./src/client/manager/MultiWebSockets.js","webpack://Blockv/./src/client/Blockv.js","webpack://Blockv/./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","core","hide","redefine","ctx","$export","type","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","target","expProto","undefined","Function","U","W","R","DataObject","id","data","_classCallCheck","this","rev","cached","window","Math","self","__g","exec","e","isObject","it","TypeError","store","uid","USE_SYMBOL","toInteger","min","version","__e","a","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","console","util","assert","now","slice","Array","times","functions","log","apply","arguments","warn","label","time","Error","duration","err","message","format","error","stack","inspect","expression","arr","ok","length","tuple","defined","ReflectOwnKeys","Reflect","ReflectApply","receiver","args","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","EventEmitter","init","_events","_eventsCount","_maxListeners","defaultMaxListeners","$getMaxListeners","that","_addListener","listener","prepend","events","existing","warning","newListener","emit","unshift","push","warned","w","String","emitter","count","_onceWrap","state","fired","wrapFn","wrapped","removeListener","_listeners","unwrap","evlistener","ret","unwrapListeners","arrayClone","listenerCount","copy","set","arg","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","context","handler","len","listeners","addListener","on","prependListener","once","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","keys","rawListeners","eventNames","has","SRC","$toString","TPL","split","inspectSource","val","safe","isFunction","join","fails","quot","createHTML","string","tag","attribute","p1","replace","NAME","test","toLowerCase","createDesc","IObject","__webpack_exports__","Delayer","pending","timer","executePendingActions","func","setTimeout","actions","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","next","done","action","ctor","superCtor","super_","constructor","writable","configurable","TempCtor","method","scheduleDrain","draining","Mutation","MutationObserver","WebKitMutationObserver","called","observer","nextTick","element","document","createTextNode","observe","characterData","setImmediate","MessageChannel","createElement","scriptEl","onreadystatechange","parentNode","removeChild","documentElement","appendChild","channel","port1","onmessage","port2","postMessage","queue","oldQueue","task","aFunction","fn","b","ceil","floor","pIE","toIObject","gOPD","getOwnPropertyDescriptor","KEY","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","res","result","toString","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","Uint8Array","ArrayProto","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","values","arrayKeys","arrayEntries","entries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","offset","validate","C","speciesFromList","fromList","addGetter","internal","_d","$from","step","aLen","mapfn","mapping","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","start","every","fill","filter","find","predicate","findIndex","forEach","indexOf","searchElement","includes","separator","map","reverse","middle","some","comparefn","subarray","begin","end","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","v","round","setter","$offset","$length","byteLength","klass","$len","iter","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","from","__WEBPACK_AMD_DEFINE_RESULT__","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","\\","'","\n","\r","
","
","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","thisArg","arrayAggregator","array","iteratee","accumulator","arrayEach","arrayEachRight","resIndex","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","initAccum","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseUnary","baseValues","props","cacheHas","cache","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","escapeHtmlChar","&","<",">","\"","escapeStringChar","chr","hasUnicode","mapToArray","size","overArg","transform","replaceHolders","placeholder","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","asciiToArray","unescapeHtmlChar","&amp;","&lt;","&gt;","&quot;","&#39;","_","runInContext","defaults","pick","Date","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","input","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","symbol","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","escape","evaluate","interpolate","variable","imports","hash","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","criteria","objCriteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","charAt","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","flatten","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","iteratorToArray","remainder","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","toJSON","Vatom","payload","faces","otherVatom","isFolder","isDefinedFolder","policies","templateVariation","template_variation","maxCount","creation_policy","policy_count_max","enforceMaxCount","enforce_policy_count_max","constraints","platform","view_mode","unpublished","sync","when_created","when_modified","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","BLOCKvRegion","dataPool","_this","_possibleConstructorReturn","_getPrototypeOf","queuedMessages","socketPaused","socketProcessing","onWebSocketMessage","_assertThisInitialized","socket","Blockv","WebSockets","connect","addEventListener","DataObjectAnimator","withBlockv","addRegion","Region","_get","removeEventListener","removeRegion","processNextMessage","msg","processMessage","_context","t0","msg_type","new_object","updateObjects","new_data","objects","_this2","parent_id","run","nextUpdate","changes","u","_this3","oldParent","newParent","keyPath","oldValue","_this4","objectOrID","_this5","bitmap","px","$keys","enumBugKeys","dPs","Empty","createDict","iframeDocument","iframe","style","display","contentWindow","open","write","close","Properties","hiddenKeys","ObjectProto","UNSCOPABLES","_t","fun","g","def","stat","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","DESCRIPTORS","SPECIES","Constructor","forbiddenField","base64_url_decode","InvalidTokenError","token","pos","header","JSON","parse","eventName","privateEventListeners","removeAfterCall","when","callbacks","passArguments","otherClass","cof","ARG","T","tryGet","callee","D","Discover","bv","customPayload","overridePayload","filters","FieldTemplateVariation","scope","auth","setScopeToOwnedVatomsOnly","samples","field","compareOperation","combineOperation","filter_op","FilterOperation","Equal","bool_op","CombineOperation","And","fqdn","FieldPublisherFqdn","FieldOwner","group_by","filter_elems","fields","client","request","getPayload","then","results","actionsArray","facesArray","vatomsArray","aName","aKey","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_loop","obj","_iterator3","GreaterThan","GreaterOrEqual","LessThan","LessOrEqual","NotEqual","Match","Or","FieldAcquireable","FieldPrivateName","FieldID","FieldTemplate","FieldVisibilityType","FieldParentID","User","user","firstName","first_name","lastName","last_name","namePublic","name_public","avatarUri","avatar_uri","avatarPublic","avatar_public","birthday","language","nonPushNotification","nonpush_notification","guestId","guest_id","isPasswordSet","is_password_set","activated","system_properties","isAdmin","is_admin","isMerchant","is_merchant","lastLogin","last_login","pubFqdn","pub_fqdn","rawPayload","consents","user_consents","createdBy","created_by","dataType","data_type","modifiedBy","modified_by","whenCreated","whenModified","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","title","browser","env","argv","versions","cwd","chdir","umask","copyright","IS_INCLUDES","el","SAFE_CLOSING","riter","skipClosing","ignoreCase","multiline","unicode","sticky","builtinExec","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","str","arg2","forceStringMethod","strfn","rxfn","BREAK","RETURN","navigator","userAgent","forOf","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","ADDER","fixMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","getConstructor","setStrong","Typed","TypedArrayConstructors","required","qs","slashes","protocolre","left","trimLeft","rules","address","NaN","ignore","query","lolcation","loc","location","finaldestination","protocol","Url","pathname","href","extractProtocol","parser","relative","extracted","instruction","instructions","url","base","up","port","host","hostname","username","password","origin","part","char","ins","stringify","hex_chr","md5cycle","x","k","md5blk","md5blks","md5blk_array","md51","tmp","lo","hi","rhex","j","hex","toUtf8","encodeURIComponent","hexToBinaryString","bytes","substr","fromCharCode","SparkMD5","reset","to","num","targetArray","sourceArray","append","appendBinary","contents","_buff","_length","_hash","raw","buff","_finish","getState","setState","destroy","hashBinary","content","second","returnUInt8Array","utf8Str2ArrayBuffer","md51_array","factory","blockv","regions","updateTimer","timeSkew","animator","action_name","nextPositions","next_positions","updates","vAtom::vAtomType","geo_pos","coordinates","earliestTime","clearUpdatesFor","region","isMonitoringID","setInterval","doNextUpdate","afterTime","clearInterval","change","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","getOwnPropertyDescriptors","descriptors","formatRegExp","deprecate","noDeprecation","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","opts","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","idx","arrayToHash","formatError","output","braces","toUTCString","formatProperty","formatArray","prev","cur","numLinesEst","reduceToSingleString","line","ar","debuglog","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","date","isNullOrUndefined","isPrimitive","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","inherits","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","promisify","original","promiseResolve","promiseReject","promise","setPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","rej","is","shared","check","buggy","__proto__","sign","$expm1","expm1","TO_STRING","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","searchString","MATCH","$defineProperty","getIteratorMethod","endPos","addToUnscopables","iterated","_i","_k","Arguments","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","html","cel","setTask","clearTask","clearImmediate","Dispatch","counter","event","importScripts","PROTOTYPE","WRONG_INDEX","BaseBuffer","abs","pow","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","_eventListeners","onSuccess","onFail","_removeAfterCall","_len","_key","v1","v4","uuid","metaStack","lastMetaElement","lastElementIndex","arrayPrefix","objPrefix","collationIndex","parsedNum","numChar","parsedString","lastCh","numConsecutiveSlashes","ch","arrayElement","objElement","wksExt","$Symbol","names","getKeys","windowNames","getWindowNames","gOPS","$assign","A","K","isEnum","y","factories","construct","partArgs","bound","un","$parseInt","$trim","ws","$parseFloat","log1p","descriptor","memo","inc","forced","flags","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_n","_c","_v","_s","reaction","exited","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","_a","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","catch","capability","$$reject","all","$index","alreadyCalled","race","PromiseCapability","$$resolve","promiseCapability","$iterDefine","SIZE","getEntry","_f","_l","delete","$has","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","ufstore","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","isEntries","getRandomValues","crypto","msCrypto","rnds8","rnds","byteToHex","buf","bth","logify_input","titleFormat","isNodejs","option_keys","is_warning","is_usage","is_internal","throw__browser","stackTraceLimit","is_browser","condition","parsed","msgs","is_option_arg","IS_REASSERT_OPTS","parseArguments","callStack","stackTraceLimit__original","callStackString","lines","lines__filtered","getCallStack","interupt_execution","throwError","getErrorDetailsMessage","getStackMessage","getErrorSummaryMessage","getErrorMessage","node","noCache","_syncPromise","synchronize","_synchronize","stateKey","load","loadedIDs","keysToRemove","removeObjects","existingObject","willUpdateFields","willAdd","didUpdate","_loop2","ids","_loop3","willRemove","info","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","_this6","waitUntilStable","items","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","_this7","getItem","_this8","willUpdateField","_this9","addObjects","Filter","_objects","DatabaseMap","Database","noStore","pouch","setupPouchDB","Queue","PouchDB","loaded","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","row","allDocs","include_docs","sent","rows","abrupt","doc","finish","stop","_x","thisValue","_ref2","_callee3","_context3","_x2","found","_ref3","_callee4","revision","_context4","getRevision","_x3","_ref4","_callee5","_context5","put","_id","_rev","_x4","_context6","status","itm","isRunning","ExportedSet","ExportedMap","immediate__WEBPACK_IMPORTED_MODULE_0__","immediate__WEBPACK_IMPORTED_MODULE_0___default","uuid__WEBPACK_IMPORTED_MODULE_1__","uuid__WEBPACK_IMPORTED_MODULE_1___default","spark_md5__WEBPACK_IMPORTED_MODULE_2__","spark_md5__WEBPACK_IMPORTED_MODULE_2___default","vuvuzela__WEBPACK_IMPORTED_MODULE_3__","vuvuzela__WEBPACK_IMPORTED_MODULE_3___default","argsarray__WEBPACK_IMPORTED_MODULE_4__","argsarray__WEBPACK_IMPORTED_MODULE_4___default","inherits__WEBPACK_IMPORTED_MODULE_5__","inherits__WEBPACK_IMPORTED_MODULE_5___default","events__WEBPACK_IMPORTED_MODULE_6__","mangle","unmangle","Map$1","_store","Set$1","cloneBinaryObject","webkitSlice","mangled","species","supportsMapAndSet","newObject","toISOString","Blob","isBinaryObject","toPromise","usedCB","fulfill","resp","mesg","adapterFun","_closed","_destroyed","logArgs","origCallback","responseArgs","logApiCall","taskqueue","isReady","addTask","failed","hasLocal","MAX_NUM_CONCURRENT_REQUESTS","identityFunction","formatResultForOpenRevsGet","bulkGet","db","requests","docs","requestsById","numDocs","numDone","perDocResults","checkDone","allRequests","nextBatch","upTo","batch","docId","docIdx","docRequests","docOpts","open_revs","formatResult","param","processBatch","localStorage","setItem","hasLocalStorage","Changes","attachBrowserEvents","guardedConsole","defaultBackOff","maxTimeout","randomNumber","explainError","dbName","inprogress","eventFunction","changesOpts","seq","since","cancelled","onChange","notifyLocalWindows","$inject_Object_assign","nextSource","nextKey","PouchError","MISSING_BULK_DOCS","MISSING_DOC","REV_CONFLICT","INVALID_ID","MISSING_ID","RESERVED_ID","UNKNOWN_ERROR","BAD_ARG","QUERY_PARSE_ERROR","DOC_VALIDATION","BAD_REQUEST","NOT_AN_OBJECT","IDB_ERROR","INVALID_REV","MISSING_STUB","createError","CustomPouchError","generateErrorFromResponse","filterChange","req","hasFilter","query_params","filterReturn","tryFilter","attachments","att","_attachments","stub","arrs","invalidIdError","isRemote","_remote","parseDesignDocFunctionName","parts","normalizeDesignDocFunctionName","normalized","qName","qParser","parseUri","uri","encoded","decodeURIComponent","$0","$1","$2","scopeEval","upsert","diffFun","docRev","newDoc","updated","tryAndPut","thisAtob","atob","thisBtoa","btoa","createBlob","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","getBlob","binaryStringToArrayBuffer","bin","binStringToBluffer","binString","b64ToBluffer","b64","readAsBinaryString","blob","reader","FileReader","hasBinaryString","onloadend","binary","arrayBufferToBinaryString","readAsArrayBuffer","blobToBinaryString","blobOrBuffer","blobToBase64","base64","setImmediateShim","MD5_CHUNK_SIZE","appendBlob","sliceBlob","appendString","binaryMd5","inputIsString","chunkSize","chunks","currentChunk","loadNextChunk","rawToBase64","stringMd5","deterministic_revs","clonedDoc","_rev_tree","winningRev","metadata","winningId","winningPos","winningDeleted","toVisit","rev_tree","tree","branches","deleted","traverseRevTree","revs","newCtx","sortByPos","collectLeaves","leaves","isLeaf","acc","collectConflicts","win","conflicts","leaf","rootToLeaf","history","sortByPos$1","insertSorted","item","binarySearch","pathToTree","numStemmed","currentLeaf","compareTree","mergeTree","in_tree1","in_tree2","tree1","tree2","merged","doMerge","dontExpand","restree","branch","t1","t2","diff","candidateParents","trees","parentIdx","elements","elementsLen","newTree","stemmed","stemmedRevs","revHash","stem","getTrees","isDeleted","isLocalId","Changes$1","complete","ee","onDestroy","lastSeq","isCancelled","tryCatchInChangeListener","validateChanges","processChange","changeList","_conflicts","compare","right","yankError","compareByIdThenRev","idCompare","_revisions","AbstractPouchDB","TaskQueue","__opts","auto_compaction","backend","adapter","adapters","preferredAdapters","adapterName","use_prefix","parseAdapter","_adapter","valid","onDestroyed","from_constructor","onClosed","prepareForDestruction","ready","_changesFilterPlugin","doChanges","continuous","live","normalize","shouldFilter","descending","newPromise","_changes","update_seq","post","bulkDocs","_putLocal","_deleted","_removeLocal","oldRevId","newRevNum","newRevId","putDoc","_put","new_edits","force","putAttachment","attachmentId","rev$$1","api","createAttachment","prevrevpos","content_type","revpos","removeAttachment","docOrId","optsOrRev","was_delete","revsDiff","missing","addToMissing","revId","_getRevisionTree","missingForId","processDoc","missingObj","compactDocument","maxHeight","revTree","height","edges","prnt","edge","computeHeight","candidates","_doCompaction","_compactionQueue","doNextCompaction","last_seq","_compact","return_docs","promises","_getLocal","finishOpenRevs","latest","revs_info","splittedRev","revNo","currentPath","hashIndex","indexOfRev","howMany","_revs_info","_getAttachment","getAttachment","start_key","startkey","end_key","endkey","incompatibleOpt","allDocsKeysParse","_allDocs","_close","_info","db_name","_type","attachmentError","attachmentNameError","atts","cleanDocs","_bulkDocs","registerDependentDatabase","dependentDb","depDB","dependentDbs","usePrefix","destroyDb","_destroy","localDoc","deletedMap","trueName","execute","AbortController","abort","f$1","fetch","h","Headers","eventEmitter","Pouch","destructListeners","_destructionListeners","dbList","setUpEventEmitter","addToPreferredAdapters","plugin","__defaults","defaultOpts","PouchAlt","getFieldFromDoc","parsedField","parseField","fieldName","combinationFields","isCombinationalField","getKey","mergeAndedSelectors","selectors","selector","matcher","$eq","fieldMatchers","$gte","$gt","mergeGtGte","$lte","$lt","mergeLtLte","$ne","mergeNe","mergeEq","massageSelector","wasAnded","isAndInSelector","isAnd","mergeAndedSelectorsNested","orOrNor","subSelector","MIN_MAGNITUDE","MAGNITUDE_DIGITS","SEP","collate","normalizeKey","ai","bi","stringCollate","arrayCollate","ak","bk","objectCollate","origKey","indexify","expFormat","toExponential","magnitude","neg","magString","padWith","upToLength","padding","targetLength","factor","factorStr","toFixed","numToIndexableString","toIndexableString","objKey","parseNumber","originalIdx","numAsString","magAsString","filterInMemoryFields","requestDef","inMemoryFields","rowFilter","fieldSorter","getFieldValuesAsArray","sorting","aRow","bRow","collation","createFieldSorter","docFieldValue","orMatchers","matchCominationalSelector","matchSelector","userOperator","userValue","matchers","fieldExists","fieldIsNotUndefined","arrayContainsValue","$elemMatch","$allMatch","$exists","$mod","mod","modField","neValue","$in","$nin","$size","arraySize","$all","arrayContainsAllValues","$regex","regexMatch","$type","typeMatch","filterName","changesHandler","doc_ids","viewName","ddoc","mapFun","views","rowsMatched","matchesSelector","filterFun","reservedWords","dataWords","parseRevisionInfo","parseDoc","newEdits","dbOpts","nRevNum","revInfo","revisions","revisionIds","makeRevTreeFromRevisions","specialKey","preprocessString","blobType","asBinary","parseBase64","digest","preprocessAttachment","md5","preprocessBlob","updateDoc","revLimit","docInfo","writeDoc","splitRev","targetPos","targetId","revExists","previousWinningRev","previouslyDeleted","isRoot","newRev","rev_map","winningRev$$1","winningRevIsDeleted","delta","processDocs","docInfos","fetchedDocs","tx","overallCallback","idsToDocs","docsDone","docsToDo","checkAllDocsDone","currentDoc","resultsIdx","docWritten","nextDoc","rootIsMissing","insertDoc","ADAPTER_VERSION","DOC_STORE","BY_SEQ_STORE","ATTACH_STORE","ATTACH_AND_SEQ_STORE","META_STORE","LOCAL_STORE","DETECT_BLOB_SUPPORT_STORE","safeJsonStringify","json","idbError","evt","encodeMetadata","deletedOrLocal","decodeMetadata","storedObject","safeJsonParse","decodeDoc","_doc_id_rev","readBlobData","body","asBlob","fetchAttachmentsIfNecessary","txn","attObj","objectStore","onsuccess","fetchAttachment","postProcessAttachments","attNames","compactRevs","possiblyOrphanedDigests","seqStore","attStore","attAndSeqStore","countReq","IDBKeyRange","deleteOrphanedAttachments","openCursor","only","cursor","digestSeq","primaryKey","continue","openTransactionSafely","idb","stores","transaction","idbBulkDocs","docStore","bySeqStore","attachStore","attachAndSeqStore","metaStore","docInfoError","metaDoc","allDocsProcessed","docCountDelta","preconditionErrored","_meta","blobSupport","onAllDocsProcessed","updateDocCountIfReady","docCount","newRevIsDeleted","isUpdate","collectResults","finishDoc","attachmentSaved","newAtt","putReq","saveAttachment","writeAttachments","afterPutDoc","revsToDelete","compactTree","metadataToStore","afterPutMetadata","attsAdded","attsToAdd","onerror","preventDefault","stopPropagation","insertAttachmentMappings","overallErr","docv","recv","processedAttachment","preprocessAttachments","txnResult","onabort","ontimeout","oncomplete","digests","filename","verifyAttachment","attErr","verifyAttachments","numFetched","revs_limit","readMetadata","fetchExistingDocs","startTransaction","runBatchedCursor","keyRange","batchSize","onBatch","keysBatch","valuesBatch","pseudoCursor","onGetAll","onGetAllKeys","onCursor","getAll","newKeyRange","lastKey","upperOpen","code","lowerBound","idbAllDocs","keyRangeError","inclusiveEnd","inclusive_end","upperBound","createKeyRange","onResultsReady","updateSeq","docIdRevIndex","allDocsInner","fetchDocAsynchronously","batchValues","batchValue","batchKeys","returnVal","total_rows","maxKey","allDocsKeys","running","applyNext","docIds","numResults","docIdsToMetadata","onGetMetadata","docIdRev","objectStores","winningDocs","metadatas","fetchWinningDocAndMetadata","winningDoc","processMetadataAndWinningDoc","onBatchDone","filtered","blobSupportPromise","cachedDBs","openReqList","IdbPouch","tryCode","enqueueTask","thisCallback","addDeletedOrLocalIndex","createIndex","unique","migrateLocalStore","localStore","local","seqCursor","migrateAttsAndSeqs","digestMap","migrateMetadata","decodeMetadataCompat","onGetMetadataSeq","metadataSeq","fetchMetadataSeq","instanceId","reqOpts","historyNode","attachId","attachment","blobData","doc_count","idb_attachment_format","oldRev","oStore","oldDoc","openReq","indexedDB","deleteDatabase","onupgradeneeded","oldVersion","createObjectStore","autoIncrement","createSchema","currentTarget","createLocalStoreSchema","addAttachAndSeqStore","migrations","migration","onversionchange","storedMetaDoc","completeSetup","storeMetaDocIfReady","instanceKey","countDocs","blob$$1","matchedChrome","matchedEdge","checkBlobSupport","CHANGES_BATCH_SIZE","MAX_SIMULTANEOUS_REVS","CHANGES_TIMEOUT_BUFFER","DEFAULT_HEARTBEAT","supportsBulkGetMap","readAttachmentsAsBlobOrBuffer","encodeDocId","preprocessAttachments$1","getHost","hasUrlPrefix","genDBUrl","genUrl","pathDel","paramsToStr","params","HttpPouch","dbUrl","setupPromise","ourFetch","headers","credentials","nAuth","ua","isIE","isTrident","isEdge","isGET","shouldCacheBust","adapterFun$$1","setup","fetchJSON","response","skip_setup","encodeAttachmentId","uuid$$1","ping","compact_running","interval","doBulkGet","doBulkGetShim","numBatches","onResult","batchNum","subOpts","supportsBulkGet","fetchAttachments","filenames","promiseFactories","doNext","runNextBatch","onError","thisErr","pool","fetchData","docOrDocs","contentType","Content-Type","paramStr","batch_size","heartbeat","requestTimeout","leftToFetch","feed","seq_interval","param_name","lastFetchedSeq","controller","aborted","fetchOpts","signal","fetched","raw_results_length","finished","QueryParseError","captureStackTrace","NotFoundError","BuiltInError","promisedCallback","sequentialize","promiseFactory","theSet","mapToKeysArray","createBuiltInError","jLen","jNum","evalFunctionWithEval","TaskQueue$1","createView","sourceDB","reduceFun","temporary","localDocName","cachedViews","viewSignature","createViewSignature","_cachedViews","promiseForView","depDbName","fullViewName","depDbs","lastSeqDoc","persistentQueues","tempViewQueue","CHANGES_BATCH_SIZE$1","parseViewName","emitError","builtInReduce","_sum","_count","_stats","sumsqr","_sumsqr","abstract","mapper","reducer","ddocValidator","tryMap","tryReduce","rereduce","sortByKeyThenValue","keyCompare","sliceResults","rowToDocId","postprocessAttachments","addHttpParam","paramName","asJson","coerceInteger","integerCandidate","asNumber","checkQueryParseError","startkeyName","endkeyName","group_level","optionName","checkPositiveInteger","defaultsTo","getDocsToPersist","docIdsToChangesAndEmits","metaDocId","defaultMetaDoc","docData","indexableKeysToKeyValues","isGenOne","getKeyValueDocs","kvDocsRes","kvDocs","oldKeys","keyValue","newKeys","kvDoc","processKeyValueDocs","getQueue","updateView","mapResults","currentSeq","listOfDocsToPersist","docsToPersist","saveKeyValues","processNextBatch","createIndexableKeysToKeyValues","createDocIdsToChangesAndEmits","emittedKeyValue","complexKey","updateViewInQueue","queryView","totalRows","shouldReduce","fetchFromView","viewOpts","expectedKeys","parsedKeyAndDocId","parsedStr","parseIndexableString","onMapResultsReady","finalResults","shouldGroup","lvl","POSITIVE_INFINITY","groupKey","reduceTry","reduceView","allDocsRes","docIdsToDocs","fetchPromises","keyStart","keyEnd","queryViewInQueue","queryPromised","_query","customQuery","keysAsString","httpQuery","finalPromiseFactory","designDocName","stale","coerceOptions","viewCleanup","_viewCleanup","customViewCleanup","httpViewCleanup","docsToViews","viewsToStatus","ddocName","viewDBNames","statusIsGood","viewDBName","destroyPromises","localViewCleanup","createAbstractMapReduce","origMap","reduceFunString","builtIn","getBuiltIn","mapreduce","isGenOne$1","getDocAttachments","getDocs","diffs","resultDocs","fetchRevisionOneDocs","hasConflicts","bulkGetOpts","missingRev","createBulkGetOpts","bulkGetResponse","bulkGetInfo","remoteDoc","doCheckForLocalAttachments","fileHasChanged","getDocAttachmentsFromTargetOrSource","Boolean","CHECKPOINT_VERSION","REPLICATOR","CHECKPOINT_HISTORY_SIZE","LOWEST_SEQ","updateCheckpoint","checkpoint","session","returnValue","session_id","replicator","Checkpointer","writeCheckpoint","updateTarget","updateSource","writeTargetCheckpoint","writeSourceCheckpoint","isForbiddenError","comparisons","targetDoc","sourceDoc","1","srcDoc","tgtDoc","compareReplicationHistory","sourceHistory","targetHistory","sourceRest","targetRest","sourceId","hasSessionId","compareReplicationLogs","sessionId","getCheckpoint","STARTING_BACK_OFF","generateReplicationId","queryParams","filterViewName","sortObjectPropertiesByKey","queryData","md5sum","replicate","currentBatch","repId","checkpointer","batches","pendingBatch","writingCheckpoint","changesCompleted","replicationCompleted","batches_limit","changesPending","changedDocs","start_time","docs_read","docs_written","doc_write_failures","errors","initCheckpointer","checkpointOpts","writeDocs","bulkOpts","completeReplication","errorsById","errorsNo","errorName","finishBatch","outResult","getChanges","onCheckpointError","getBatchDocs","got","startNextBatch","abortReplication","processPendingBatch","immediate$$1","fatalError","end_time","retry","back_off_function","backOffSet","current_back_off","backOff","onChangesComplete","onChangesError","_abortChanges","abortChanges","startChanges","_addedListeners","Replication","toPouch","PouchConstructor","replicateWrapper","replicateRet","Sync","canceled","optsPush","optsPull","pullChange","direction","pushChange","pushDenied","pullDenied","pushPaused","pullPaused","pushActive","pullActive","removed","removeAll","addOneListener","success","_readyCalled","replicateMethods","Store","serverAddress","userid","jwtDecode","refreshToken","user_id","APPID","appid","wssocketAddress","websocAddress","accessToken","refresh","privateRefreshToken","rT","provider","privateAssetProvider","UserApi","registration","access_token","refresh_token","assetProvider","asset_provider","userID","setSessionInfo","tokenType","token_type","auth_data","verification","noRequest","aP","aPlen","urlParse","comparethis","queryString","mapString","tokenId","appID","stateID","redirectURI","newWindow","promiseResolved","promiseSuccess","promiseFail","closeChecker","closed","messageListener","oauthObj","oa","profile","assetProviders","grant_type","client_id","redirect_uri","setRefreshToken","getCurrentUser","error_text","ErrorCodes","2","17","401","516","517","521","527","1004","1701","1708","2030","2031","2032","2034","2037","2049","2051","2552","2553","2562","2563","2564","2566","2567","2569","2571","2572","Client","endpoint","checkToken","authRequest","FormData","_typeof","extraHeaders","server","dateString","lockedUntil","httpStatus","requestID","request_id","serverMessage","main","Code","Msg","tokenFetchPromise","Authorization","UserManager","logout","decodedToken","expirationTime","assert_usage","isUsingBrowserBuiltIn","envSupportsFetch","eval","delayTime","shouldRetry","retryConnection","WebSocket","handleConnected","handleMessage","handleError","handleClose","cmd","readyState","send","ed","trigger","retryTimer","_global","default","_babelPolyfill","readUInt8","objectAssign","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","regex","getName","something","rawname","actual","expected","stackStartFunction","AssertionError","_deepEqual","strict","memos","getTime","Float32Array","Float64Array","actualIndex","actualVisitedObjects","aIsArgs","bIsArgs","ka","objectKeys","kb","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","getMessage","fn_name","next_line","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","argument","third","maxCode","digits","aNumberValue","$toFixed","ERROR","c2","numToString","fractionDigits","z","x2","$toPrecision","toPrecision","EPSILON","_isFinite","MIN_SAFE_INTEGER","sqrt","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","fround","EPSILON32","MAX32","MIN32","$abs","$sign","hypot","value1","value2","div","larg","$imul","imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","$fromCodePoint","fromCodePoint","callSite","tpl","$at","point","codePointAt","$endsWith","endPosition","$startsWith","color","pv","$toISOString","lz","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","hint","createProperty","cloned","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","define","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","q","macrotask","Observer","standalone","toggle","strong","InternalMap","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","$WeakMap","$isView","fin","viewS","viewT","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","getProto","V","existingDescriptor","ownDesc","setProto","$includes","flattenIntoArray","arraySpeciesCreate","sourceLen","IS_CONCAT_SPREADABLE","spreadable","targetIndex","sourceIndex","mapFn","$pad","WEBKIT_BUG","trimRight","getDesc","$values","finally","onFinally","MSIE","boundArgs","$task","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","awrap","async","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","accidentalStrictMode","IS_WRAP","virtual","InventoryRegion","sessionInfo","currentUserID","pauseMessages","loadNew","loadOld","resumeMessages","disableSyncV2","currentHash","getExtra","serverHashReq","allSyncs","page","nextToken","vatoms","next_token","idsToFetch","syncInfo","vatom","VatomsPerPage","remainingIds","newObjects","setExtra","pageCount","debug","_iterator7","_iteratorNormalCompletion7","_step7","vatomID","old_owner","new_owner","vatomRef","owner","onObjectPreemptivelyChanged","webpackPolyfill","children","LZString","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","compressToBase64","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","compressToUint8Array","uncompressed","compress","TotalLen","current_value","decompressFromUint8Array","decompress","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","resetValue","getNextValue","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","undef","decode","VatomIDRegion","VatomChildrenRegion","parentID","setScope","GeoPosRegion","top_right","lat","lon","bottom_left","sendRegionCommand","onWebSocketOpen","isOpen","top_left","bottom_right","sendMessage","dropped","publisher_fqdn","op","vatom_id","preemptiveChange","b64DecodeUnicode","InvalidCharacterError","bs","bc","stringification_name","stringify_object","input_str","toStr","get_str","obj_copy","get_prettier_copy","parent_objects","el_copy","thing","tableFormat","indent","columnWidths","cells","cell","columnNumber","getStringWidth","colWidth","paddingRight","getBar","assert_warning","titleWidth","barWidth","leftWidth","bar","title_bar","stringWidth","filler","stripAnsi","isFullwidthCodePoint","width","ansiRegex","DataPool","plugins","onSessionInfoChanged","UserManager_classCallCheck","register","login","loginGuest","loginOAuthPopup","getUserTokens","formData","uploadAvatar","updateUser","getAccessToken","encodeAssetProvider","sendTokenVerification","getRefreshToken","verify","verifyUserToken","addUserToken","tokenID","setDefaultToken","deleteUserToken","getGuestToken","resetPassword","getPublicUserProfile","addRedeemable","VatomApi","VatomApi_classCallCheck","templateID","template_id","_didIteratorError7","_iteratorError7","_iteratorNormalCompletion8","_didIteratorError8","_iteratorError8","_step8","_iterator8","_iteratorNormalCompletion9","_didIteratorError9","_iteratorError9","_step9","_iterator9","return","_iteratorNormalCompletion10","_didIteratorError10","_iteratorError10","_step10","_iterator10","_iteratorNormalCompletion11","_didIteratorError11","_iteratorError11","_step11","_iterator11","_iteratorNormalCompletion12","_didIteratorError12","_iteratorError12","_step12","_loop4","_iterator12","this.id","Vatoms","Vatoms_classCallCheck","vatomApi","getActions","actionName","vatomId","phoneNumber","email","performAction","undos","undo","newParentID","getVatomChildren","child","vatomIds","bottomLeft","topRight","geoDiscover","geoDiscoverGroups","childID","parentPayload","setParent","trashVatom","Activity","activityApi","Activity_classCallCheck","threads","threadMessages","ActivityApi","ActivityApi_classCallCheck","MultiWebSockets","MultiWebSockets_classCallCheck","sockets","addresses","websocketAddress","triggerEvent","Blockv_classCallCheck","Blockv_possibleConstructorReturn","Blockv_getPrototypeOf","Blockv_assertThisInitialized","userApi","isLoggedIn","Blockv_Blockv","BlockvSDKInfo"],"mappings":"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AAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAEAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,MAutBAC,GAAA5M,GAntBA,CACA6M,IAAA,QACAC,IAAA,OACAC,IAAA,OACAC,IAAA,SACA7Q,IAAA,UAutBA,SAAA8Q,GAAAC,GACA,WAAAjR,GAAAiR,GAsBA,SAAAC,GAAAzoB,GACA,OAAAiX,GAAA3W,KAAAN,GAsCA,SAAA0oB,GAAAvc,GACA,IAAAxN,GAAA,EACA8G,EAAA3M,MAAAqT,EAAAwc,MAKA,OAHAxc,EAAAL,QAAA,SAAA/X,EAAAM,GACAoR,IAAA9G,GAAA,CAAAtK,EAAAN,KAEA0R,EAWA,SAAAmjB,GAAA7nB,EAAA8nB,GACA,gBAAAtrB,GACA,OAAAwD,EAAA8nB,EAAAtrB,KAaA,SAAAurB,GAAAjP,EAAAkP,GAMA,IALA,IAAApqB,GAAA,EACAzE,EAAA2f,EAAA3f,OACAggB,EAAA,EACAzU,EAAA,KAEA9G,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACA5K,IAAAg1B,GAAAh1B,IAAAwb,IACAsK,EAAAlb,GAAA4Q,EACA9J,EAAAyU,KAAAvb,GAGA,OAAA8G,EAUA,SAAAujB,GAAA1rB,GACA,IAAAqB,GAAA,EACA8G,EAAA3M,MAAAwE,EAAAqrB,MAKA,OAHArrB,EAAAwO,QAAA,SAAA/X,GACA0R,IAAA9G,GAAA5K,IAEA0R,EAUA,SAAAwjB,GAAA3rB,GACA,IAAAqB,GAAA,EACA8G,EAAA3M,MAAAwE,EAAAqrB,MAKA,OAHArrB,EAAAwO,QAAA,SAAA/X,GACA0R,IAAA9G,GAAA,CAAA5K,OAEA0R,EAoDA,SAAAyjB,GAAAlpB,GACA,OAAAyoB,GAAAzoB,GAkCA,SAAAA,GACA,IAAAyF,EAAAsR,GAAAoS,UAAA,EACA,KAAApS,GAAAzW,KAAAN,MACAyF,EAEA,OAAAA,EAtCA2jB,CAAAppB,GACAya,GAAAza,GAUA,SAAAqpB,GAAArpB,GACA,OAAAyoB,GAAAzoB,GAoCA,SAAAA,GACA,OAAAA,EAAAspB,MAAAvS,KAAA,GApCAwS,CAAAvpB,GAhkBA,SAAAA,GACA,OAAAA,EAAAT,MAAA,IAgkBAiqB,CAAAxpB,GAUA,IAAAypB,GAAAnO,GA/6BA,CACAoO,QAAU,IACVC,OAAS,IACTC,OAAS,IACTC,SAAW,IACXC,QAAU,MAg/BV,IA+zeAC,GA/zeA,SAAAC,EAAAlsB,GAIA,IA6BAnG,EA7BAmB,GAHAgF,EAAA,MAAAA,EAAAsa,GAAA2R,GAAAE,SAAA7R,GAAA5kB,SAAAsK,EAAAisB,GAAAG,KAAA9R,GAAAjB,MAGAre,MACAqxB,EAAArsB,EAAAqsB,KACA5wB,GAAAuE,EAAAvE,MACAjD,GAAAwH,EAAAxH,SACAY,GAAA4G,EAAA5G,KACA1D,GAAAsK,EAAAtK,OACAmgB,GAAA7V,EAAA6V,OACAtX,GAAAyB,EAAAzB,OACA5E,GAAAqG,EAAArG,UAGA2yB,GAAAtxB,EAAApE,UACA21B,GAAA/zB,GAAA5B,UACA41B,GAAA92B,GAAAkB,UAGA61B,GAAAzsB,EAAA,sBAGA0sB,GAAAH,GAAA3kB,SAGA/Q,GAAA21B,GAAA31B,eAGA81B,GAAA,EAGAC,IACA/yB,EAAA,SAAAN,KAAAkzB,OAAAvrB,MAAAurB,GAAAvrB,KAAA2rB,UAAA,KACA,iBAAAhzB,EAAA,GAQAizB,GAAAN,GAAA5kB,SAGAmlB,GAAAL,GAAAv3B,KAAAO,IAGAs3B,GAAA1S,GAAA2R,EAGAgB,GAAApX,GAAA,IACA6W,GAAAv3B,KAAA0B,IAAAyL,QAAA+T,GAAA,QACA/T,QAAA,uEAIA4qB,GAAAxS,GAAA1a,EAAAktB,OAAA30B,EACAxC,GAAAiK,EAAAjK,OACAsT,GAAArJ,EAAAqJ,WACA8jB,GAAAD,MAAAC,YAAA50B,EACA60B,GAAAtC,GAAAp1B,GAAAiK,eAAAjK,IACA23B,GAAA33B,GAAAY,OACAg3B,GAAAd,GAAAc,qBACAC,GAAAjB,GAAAiB,OACAC,GAAAz3B,MAAA03B,mBAAAl1B,EACAm1B,GAAA33B,MAAA0N,SAAAlL,EACAo1B,GAAA53B,MAAAC,YAAAuC,EAEA5C,GAAA,WACA,IACA,IAAAsN,EAAA2qB,GAAAl4B,GAAA,kBAEA,OADAuN,EAAA,GAAe,OACfA,EACO,MAAAzJ,KALP,GASAq0B,GAAA7tB,EAAA8tB,eAAAxT,GAAAwT,cAAA9tB,EAAA8tB,aACAC,GAAA1B,KAAAvxB,MAAAwf,GAAA+R,KAAAvxB,KAAAuxB,EAAAvxB,IACAkzB,GAAAhuB,EAAAkD,aAAAoX,GAAApX,YAAAlD,EAAAkD,WAGA+qB,GAAA70B,GAAAkN,KACA4nB,GAAA90B,GAAAmN,MACA4nB,GAAAz4B,GAAAmH,sBACAuxB,GAAAlB,MAAAmB,SAAA91B,EACA+1B,GAAAtuB,EAAAuuB,SACAC,GAAAlC,GAAAxqB,KACA2sB,GAAA3D,GAAAp1B,GAAAwL,KAAAxL,IACAg5B,GAAAt1B,GAAAu1B,IACAC,GAAAx1B,GAAAY,IACA60B,GAAAxC,EAAAvxB,IACAg0B,GAAA9uB,EAAAma,SACA4U,GAAA31B,GAAA41B,OACAC,GAAA3C,GAAAhe,QAGA5E,GAAAkkB,GAAA5tB,EAAA,YACAkvB,GAAAtB,GAAA5tB,EAAA,OACAmvB,GAAAvB,GAAA5tB,EAAA,WACAovB,GAAAxB,GAAA5tB,EAAA,OACAqvB,GAAAzB,GAAA5tB,EAAA,WACAsvB,GAAA1B,GAAAl4B,GAAA,UAGA65B,GAAAF,IAAA,IAAAA,GAGAG,GAAA,GAGAC,GAAAC,GAAAhmB,IACAimB,GAAAD,GAAAR,IACAU,GAAAF,GAAAP,IACAU,GAAAH,GAAAN,IACAU,GAAAJ,GAAAL,IAGAU,GAAAh6B,MAAAa,UAAA2B,EACAy3B,GAAAD,MAAAE,QAAA13B,EACA23B,GAAAH,MAAAnoB,SAAArP,EAyHA,SAAA43B,GAAAl6B,GACA,GAAAm6B,GAAAn6B,KAAAo6B,GAAAp6B,mBAAAq6B,IAAA,CACA,GAAAr6B,aAAAs6B,GACA,OAAAt6B,EAEA,GAAAY,GAAA1B,KAAAc,EAAA,eACA,OAAAu6B,GAAAv6B,GAGA,WAAAs6B,GAAAt6B,GAWA,IAAAw6B,GAAA,WACA,SAAA/5B,KACA,gBAAA6W,GACA,IAAA9T,GAAA8T,GACA,SAEA,GAAA8f,GACA,OAAAA,GAAA9f,GAEA7W,EAAAE,UAAA2W,EACA,IAAA5F,EAAA,IAAAjR,EAEA,OADAA,EAAAE,UAAA2B,EACAoP,GAZA,GAqBA,SAAA+oB,MAWA,SAAAH,GAAAt6B,EAAA06B,GACA33B,KAAA43B,YAAA36B,EACA+C,KAAA63B,YAAA,GACA73B,KAAA83B,YAAAH,EACA33B,KAAA+3B,UAAA,EACA/3B,KAAAg4B,WAAAz4B,EAgFA,SAAA+3B,GAAAr6B,GACA+C,KAAA43B,YAAA36B,EACA+C,KAAA63B,YAAA,GACA73B,KAAAi4B,QAAA,EACAj4B,KAAAk4B,cAAA,EACAl4B,KAAAm4B,cAAA,GACAn4B,KAAAo4B,cAAAje,EACAna,KAAAq4B,UAAA,GAgHA,SAAAC,GAAA/mB,GACA,IAAA1J,GAAA,EACAzE,EAAA,MAAAmO,EAAA,EAAAA,EAAAnO,OAGA,IADApD,KAAAu4B,UACA1wB,EAAAzE,GAAA,CACA,IAAAo1B,EAAAjnB,EAAA1J,GACA7H,KAAAwG,IAAAgyB,EAAA,GAAAA,EAAA,KAiGA,SAAAC,GAAAlnB,GACA,IAAA1J,GAAA,EACAzE,EAAA,MAAAmO,EAAA,EAAAA,EAAAnO,OAGA,IADApD,KAAAu4B,UACA1wB,EAAAzE,GAAA,CACA,IAAAo1B,EAAAjnB,EAAA1J,GACA7H,KAAAwG,IAAAgyB,EAAA,GAAAA,EAAA,KA8GA,SAAAE,GAAAnnB,GACA,IAAA1J,GAAA,EACAzE,EAAA,MAAAmO,EAAA,EAAAA,EAAAnO,OAGA,IADApD,KAAAu4B,UACA1wB,EAAAzE,GAAA,CACA,IAAAo1B,EAAAjnB,EAAA1J,GACA7H,KAAAwG,IAAAgyB,EAAA,GAAAA,EAAA,KAiGA,SAAAG,GAAAvnB,GACA,IAAAvJ,GAAA,EACAzE,EAAA,MAAAgO,EAAA,EAAAA,EAAAhO,OAGA,IADApD,KAAA44B,SAAA,IAAAF,KACA7wB,EAAAzE,GACApD,KAAA64B,IAAAznB,EAAAvJ,IA6CA,SAAAixB,GAAAvnB,GACA,IAAAzR,EAAAE,KAAA44B,SAAA,IAAAH,GAAAlnB,GACAvR,KAAA6xB,KAAA/xB,EAAA+xB,KAqGA,SAAAkH,GAAA97B,EAAA+7B,GACA,IAAAC,EAAA5B,GAAAp6B,GACAi8B,GAAAD,GAAAE,GAAAl8B,GACAm8B,GAAAH,IAAAC,GAAA7D,GAAAp4B,GACAo8B,GAAAJ,IAAAC,IAAAE,GAAAxW,GAAA3lB,GACAq8B,EAAAL,GAAAC,GAAAE,GAAAC,EACA1qB,EAAA2qB,EAAA3U,GAAA1nB,EAAAmG,OAAAmC,IAAA,GACAnC,EAAAuL,EAAAvL,OAEA,QAAA7F,KAAAN,GACA+7B,IAAAn7B,GAAA1B,KAAAc,EAAAM,IACA+7B,IAEA,UAAA/7B,GAEA67B,IAAA,UAAA77B,GAAA,UAAAA,IAEA87B,IAAA,UAAA97B,GAAA,cAAAA,GAAA,cAAAA,IAEAg8B,GAAAh8B,EAAA6F,KAEAuL,EAAAvJ,KAAA7H,GAGA,OAAAoR,EAUA,SAAA6qB,GAAAzW,GACA,IAAA3f,EAAA2f,EAAA3f,OACA,OAAAA,EAAA2f,EAAA0W,GAAA,EAAAr2B,EAAA,IAAA7D,EAWA,SAAAm6B,GAAA3W,EAAAtlB,GACA,OAAAk8B,GAAAC,GAAA7W,GAAA8W,GAAAp8B,EAAA,EAAAslB,EAAA3f,SAUA,SAAA02B,GAAA/W,GACA,OAAA4W,GAAAC,GAAA7W,IAYA,SAAAgX,GAAAr8B,EAAAH,EAAAN,IACAA,IAAAsC,GAAAy6B,GAAAt8B,EAAAH,GAAAN,MACAA,IAAAsC,GAAAhC,KAAAG,IACAu8B,GAAAv8B,EAAAH,EAAAN,GAcA,SAAAi9B,GAAAx8B,EAAAH,EAAAN,GACA,IAAAk9B,EAAAz8B,EAAAH,GACAM,GAAA1B,KAAAuB,EAAAH,IAAAy8B,GAAAG,EAAAl9B,KACAA,IAAAsC,GAAAhC,KAAAG,IACAu8B,GAAAv8B,EAAAH,EAAAN,GAYA,SAAAm9B,GAAArX,EAAAxlB,GAEA,IADA,IAAA6F,EAAA2f,EAAA3f,OACAA,KACA,GAAA42B,GAAAjX,EAAA3f,GAAA,GAAA7F,GACA,OAAA6F,EAGA,SAcA,SAAAi3B,GAAAvW,EAAAvM,EAAAyL,EAAAC,GAIA,OAHAqX,GAAAxW,EAAA,SAAA7mB,EAAAM,EAAAumB,GACAvM,EAAA0L,EAAAhmB,EAAA+lB,EAAA/lB,GAAA6mB,KAEAb,EAYA,SAAAsX,GAAA78B,EAAAa,GACA,OAAAb,GAAA88B,GAAAj8B,EAAA2J,GAAA3J,GAAAb,GAyBA,SAAAu8B,GAAAv8B,EAAAH,EAAAN,GACA,aAAAM,GAAAZ,GACAA,GAAAe,EAAAH,EAAA,CACA2N,cAAA,EACAtO,YAAA,EACAK,QACAgO,UAAA,IAGAvN,EAAAH,GAAAN,EAYA,SAAAw9B,GAAA/8B,EAAAg9B,GAMA,IALA,IAAA7yB,GAAA,EACAzE,EAAAs3B,EAAAt3B,OACAuL,EAAA3M,EAAAoB,GACAu3B,EAAA,MAAAj9B,IAEAmK,EAAAzE,GACAuL,EAAA9G,GAAA8yB,EAAAp7B,EAAA1C,GAAAa,EAAAg9B,EAAA7yB,IAEA,OAAA8G,EAYA,SAAAkrB,GAAAe,EAAAC,EAAAC,GASA,OARAF,OACAE,IAAAv7B,IACAq7B,KAAAE,EAAAF,EAAAE,GAEAD,IAAAt7B,IACAq7B,KAAAC,EAAAD,EAAAC,IAGAD,EAmBA,SAAAG,GAAA99B,EAAA+9B,EAAAC,EAAA19B,EAAAG,EAAAqF,GACA,IAAA4L,EACAusB,EAAAF,EAAAtiB,EACAyiB,EAAAH,EAAAriB,EACAyiB,EAAAJ,EAAApiB,EAKA,GAHAqiB,IACAtsB,EAAAjR,EAAAu9B,EAAAh+B,EAAAM,EAAAG,EAAAqF,GAAAk4B,EAAAh+B,IAEA0R,IAAApP,EACA,OAAAoP,EAEA,IAAAlO,GAAAxD,GACA,OAAAA,EAEA,IAAAg8B,EAAA5B,GAAAp6B,GACA,GAAAg8B,GAEA,GADAtqB,EAu7GA,SAAAoU,GACA,IAAA3f,EAAA2f,EAAA3f,OACAuL,EAAA,IAAAoU,EAAA/X,YAAA5H,GAOA,OAJAA,GAAA,iBAAA2f,EAAA,IAAAllB,GAAA1B,KAAA4mB,EAAA,WACApU,EAAA9G,MAAAkb,EAAAlb,MACA8G,EAAA0sB,MAAAtY,EAAAsY,OAEA1sB,EAh8GA2sB,CAAAr+B,IACAi+B,EACA,OAAAtB,GAAA38B,EAAA0R,OAEO,CACP,IAAAxF,EAAAoyB,GAAAt+B,GACAu+B,EAAAryB,GAAA2R,GAAA3R,GAAA4R,EAEA,GAAAsa,GAAAp4B,GACA,OAAAw+B,GAAAx+B,EAAAi+B,GAEA,GAAA/xB,GAAAgS,GAAAhS,GAAAoR,GAAAihB,IAAA99B,GAEA,GADAiR,EAAAwsB,GAAAK,EAAA,GAA0CE,GAAAz+B,IAC1Ci+B,EACA,OAAAC,EA2mEA,SAAA58B,EAAAb,GACA,OAAA88B,GAAAj8B,EAAAo9B,GAAAp9B,GAAAb,GA3mEAk+B,CAAA3+B,EAnHA,SAAAS,EAAAa,GACA,OAAAb,GAAA88B,GAAAj8B,EAAAs9B,GAAAt9B,GAAAb,GAkHAo+B,CAAAntB,EAAA1R,IA8lEA,SAAAsB,EAAAb,GACA,OAAA88B,GAAAj8B,EAAAw9B,GAAAx9B,GAAAb,GA9lEAs+B,CAAA/+B,EAAAs9B,GAAA5rB,EAAA1R,QAES,CACT,IAAAujB,GAAArX,GACA,OAAAzL,EAAAT,EAAA,GAEA0R,EAs8GA,SAAAjR,EAAAyL,EAAA+xB,GACA,IAvlDAe,EAulDAC,EAAAx+B,EAAAsN,YACA,OAAA7B,GACA,KAAAyS,GACA,OAAAugB,GAAAz+B,GAEA,KAAAgd,EACA,KAAAC,EACA,WAAAuhB,GAAAx+B,GAEA,KAAAme,GACA,OA1nDA,SAAAugB,EAAAlB,GACA,IAAAhoB,EAAAgoB,EAAAiB,GAAAC,EAAAlpB,QAAAkpB,EAAAlpB,OACA,WAAAkpB,EAAApxB,YAAAkI,EAAAkpB,EAAAtmB,WAAAsmB,EAAA1kB,YAwnDA2kB,CAAA3+B,EAAAw9B,GAEA,KAAApf,GAAA,KAAAC,GACA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GACA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GACA,OAAAggB,GAAA5+B,EAAAw9B,GAEA,KAAAlgB,EACA,WAAAkhB,EAEA,KAAAjhB,EACA,KAAAM,GACA,WAAA2gB,EAAAx+B,GAEA,KAAA2d,GACA,OA7nDA,SAAAkhB,GACA,IAAA5tB,EAAA,IAAA4tB,EAAAvxB,YAAAuxB,EAAAh+B,OAAAyf,GAAAzd,KAAAg8B,IAEA,OADA5tB,EAAA0jB,UAAAkK,EAAAlK,UACA1jB,EA0nDA6tB,CAAA9+B,GAEA,KAAA4d,GACA,WAAA4gB,EAEA,KAAA1gB,GACA,OAtnDAygB,EAsnDAv+B,EArnDAs5B,GAAAt6B,GAAAs6B,GAAA76B,KAAA8/B,IAAA,IAj3DAQ,CAAAx/B,EAAAkM,EAAA+xB,IAIAn4B,MAAA,IAAA+1B,IACA,IAAA4D,EAAA35B,EAAAlG,IAAAI,GACA,GAAAy/B,EACA,OAAAA,EAEA35B,EAAAyD,IAAAvJ,EAAA0R,GAEA+T,GAAAzlB,GACAA,EAAA+X,QAAA,SAAA2nB,GACAhuB,EAAAkqB,IAAAkC,GAAA4B,EAAA3B,EAAAC,EAAA0B,EAAA1/B,EAAA8F,MAEOuf,GAAArlB,IACPA,EAAA+X,QAAA,SAAA2nB,EAAAp/B,GACAoR,EAAAnI,IAAAjJ,EAAAw9B,GAAA4B,EAAA3B,EAAAC,EAAA19B,EAAAN,EAAA8F,MAIA,IAIA+hB,EAAAmU,EAAA15B,GAJA67B,EACAD,EAAAyB,GAAAC,GACA1B,EAAAU,GAAA3zB,IAEAjL,GASA,OARAimB,GAAA4B,GAAA7nB,EAAA,SAAA0/B,EAAAp/B,GACAunB,IAEA6X,EAAA1/B,EADAM,EAAAo/B,IAIAzC,GAAAvrB,EAAApR,EAAAw9B,GAAA4B,EAAA3B,EAAAC,EAAA19B,EAAAN,EAAA8F,MAEA4L,EAyBA,SAAAmuB,GAAAp/B,EAAAa,EAAAumB,GACA,IAAA1hB,EAAA0hB,EAAA1hB,OACA,SAAA1F,EACA,OAAA0F,EAGA,IADA1F,EAAAhB,GAAAgB,GACA0F,KAAA,CACA,IAAA7F,EAAAunB,EAAA1hB,GACA0R,EAAAvW,EAAAhB,GACAN,EAAAS,EAAAH,GAEA,GAAAN,IAAAsC,KAAAhC,KAAAG,KAAAoX,EAAA7X,GACA,SAGA,SAaA,SAAA8/B,GAAA9yB,EAAA+yB,EAAAr5B,GACA,sBAAAsG,EACA,UAAAtJ,GAAA2X,GAEA,OAAApO,GAAA,WAAoCD,EAAA7H,MAAA7C,EAAAoE,IAA+Bq5B,GAcnE,SAAAC,GAAAla,EAAA3R,EAAA4R,EAAAO,GACA,IAAA1b,GAAA,EACAsN,EAAAlE,GACAisB,GAAA,EACA95B,EAAA2f,EAAA3f,OACAuL,EAAA,GACAwuB,EAAA/rB,EAAAhO,OAEA,IAAAA,EACA,OAAAuL,EAEAqU,IACA5R,EAAAoS,GAAApS,EAAAwT,GAAA5B,KAEAO,GACApO,EAAAmO,GACA4Z,GAAA,GAEA9rB,EAAAhO,QAAAgV,IACAjD,EAAA4P,GACAmY,GAAA,EACA9rB,EAAA,IAAAunB,GAAAvnB,IAEAgsB,EACA,OAAAv1B,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACAw1B,EAAA,MAAAra,EAAA/lB,EAAA+lB,EAAA/lB,GAGA,GADAA,EAAAsmB,GAAA,IAAAtmB,IAAA,EACAigC,GAAAG,KAAA,CAEA,IADA,IAAAC,EAAAH,EACAG,KACA,GAAAlsB,EAAAksB,KAAAD,EACA,SAAAD,EAGAzuB,EAAAvJ,KAAAnI,QAEAkY,EAAA/D,EAAAisB,EAAA9Z,IACA5U,EAAAvJ,KAAAnI,GAGA,OAAA0R,EAjkCAwoB,GAAAoG,iBAAA,CAQAC,OAAAzgB,GAQA0gB,SAAAzgB,GAQA0gB,YAAAzgB,GAQA0gB,SAAA,GAQAC,QAAA,CAQA3K,EAAAkE,KAKAA,GAAAv5B,UAAA85B,GAAA95B,UACAu5B,GAAAv5B,UAAAoN,YAAAmsB,GAEAI,GAAA35B,UAAA65B,GAAAC,GAAA95B,WACA25B,GAAA35B,UAAAoN,YAAAusB,GAsHAD,GAAA15B,UAAA65B,GAAAC,GAAA95B,WACA05B,GAAA15B,UAAAoN,YAAAssB,GAoGAgB,GAAA16B,UAAA26B,MAvEA,WACAv4B,KAAA44B,SAAAtC,MAAA,SACAt2B,KAAA6xB,KAAA,GAsEAyG,GAAA16B,UAAA,OAzDA,SAAAL,GACA,IAAAoR,EAAA3O,KAAAqI,IAAA9K,WAAAyC,KAAA44B,SAAAr7B,GAEA,OADAyC,KAAA6xB,MAAAljB,EAAA,IACAA,GAuDA2pB,GAAA16B,UAAAf,IA3CA,SAAAU,GACA,IAAAuC,EAAAE,KAAA44B,SACA,GAAAtC,GAAA,CACA,IAAA3nB,EAAA7O,EAAAvC,GACA,OAAAoR,IAAA4J,EAAAhZ,EAAAoP,EAEA,OAAA9Q,GAAA1B,KAAA2D,EAAAvC,GAAAuC,EAAAvC,GAAAgC,GAsCA+4B,GAAA16B,UAAAyK,IA1BA,SAAA9K,GACA,IAAAuC,EAAAE,KAAA44B,SACA,OAAAtC,GAAAx2B,EAAAvC,KAAAgC,EAAA1B,GAAA1B,KAAA2D,EAAAvC,IAyBA+6B,GAAA16B,UAAA4I,IAZA,SAAAjJ,EAAAN,GACA,IAAA6C,EAAAE,KAAA44B,SAGA,OAFA54B,KAAA6xB,MAAA7xB,KAAAqI,IAAA9K,GAAA,IACAuC,EAAAvC,GAAA+4B,IAAAr5B,IAAAsC,EAAAgZ,EAAAtb,EACA+C,MAyHAy4B,GAAA76B,UAAA26B,MApFA,WACAv4B,KAAA44B,SAAA,GACA54B,KAAA6xB,KAAA,GAmFA4G,GAAA76B,UAAA,OAvEA,SAAAL,GACA,IAAAuC,EAAAE,KAAA44B,SACA/wB,EAAAuyB,GAAAt6B,EAAAvC,GAEA,QAAAsK,EAAA,IAIAA,GADA/H,EAAAsD,OAAA,EAEAtD,EAAAgI,MAEAysB,GAAAp4B,KAAA2D,EAAA+H,EAAA,KAEA7H,KAAA6xB,KACA,KA0DA4G,GAAA76B,UAAAf,IA9CA,SAAAU,GACA,IAAAuC,EAAAE,KAAA44B,SACA/wB,EAAAuyB,GAAAt6B,EAAAvC,GAEA,OAAAsK,EAAA,EAAAtI,EAAAO,EAAA+H,GAAA,IA2CA4wB,GAAA76B,UAAAyK,IA/BA,SAAA9K,GACA,OAAA68B,GAAAp6B,KAAA44B,SAAAr7B,IAAA,GA+BAk7B,GAAA76B,UAAA4I,IAlBA,SAAAjJ,EAAAN,GACA,IAAA6C,EAAAE,KAAA44B,SACA/wB,EAAAuyB,GAAAt6B,EAAAvC,GAQA,OANAsK,EAAA,KACA7H,KAAA6xB,KACA/xB,EAAAsF,KAAA,CAAA7H,EAAAN,KAEA6C,EAAA+H,GAAA,GAAA5K,EAEA+C,MA2GA04B,GAAA96B,UAAA26B,MAtEA,WACAv4B,KAAA6xB,KAAA,EACA7xB,KAAA44B,SAAA,CACAiF,KAAA,IAAAvF,GACAjjB,IAAA,IAAA6gB,IAAAuC,IACAvvB,OAAA,IAAAovB,KAkEAI,GAAA96B,UAAA,OArDA,SAAAL,GACA,IAAAoR,EAAAmvB,GAAA99B,KAAAzC,GAAA,OAAAA,GAEA,OADAyC,KAAA6xB,MAAAljB,EAAA,IACAA,GAmDA+pB,GAAA96B,UAAAf,IAvCA,SAAAU,GACA,OAAAugC,GAAA99B,KAAAzC,GAAAV,IAAAU,IAuCAm7B,GAAA96B,UAAAyK,IA3BA,SAAA9K,GACA,OAAAugC,GAAA99B,KAAAzC,GAAA8K,IAAA9K,IA2BAm7B,GAAA96B,UAAA4I,IAdA,SAAAjJ,EAAAN,GACA,IAAA6C,EAAAg+B,GAAA99B,KAAAzC,GACAs0B,EAAA/xB,EAAA+xB,KAIA,OAFA/xB,EAAA0G,IAAAjJ,EAAAN,GACA+C,KAAA6xB,MAAA/xB,EAAA+xB,QAAA,IACA7xB,MA2DA24B,GAAA/6B,UAAAi7B,IAAAF,GAAA/6B,UAAAwH,KAnBA,SAAAnI,GAEA,OADA+C,KAAA44B,SAAApyB,IAAAvJ,EAAAsb,GACAvY,MAkBA24B,GAAA/6B,UAAAyK,IANA,SAAApL,GACA,OAAA+C,KAAA44B,SAAAvwB,IAAApL,IAuGA67B,GAAAl7B,UAAA26B,MA3EA,WACAv4B,KAAA44B,SAAA,IAAAH,GACAz4B,KAAA6xB,KAAA,GA0EAiH,GAAAl7B,UAAA,OA9DA,SAAAL,GACA,IAAAuC,EAAAE,KAAA44B,SACAjqB,EAAA7O,EAAA,OAAAvC,GAGA,OADAyC,KAAA6xB,KAAA/xB,EAAA+xB,KACAljB,GA0DAmqB,GAAAl7B,UAAAf,IA9CA,SAAAU,GACA,OAAAyC,KAAA44B,SAAA/7B,IAAAU,IA8CAu7B,GAAAl7B,UAAAyK,IAlCA,SAAA9K,GACA,OAAAyC,KAAA44B,SAAAvwB,IAAA9K,IAkCAu7B,GAAAl7B,UAAA4I,IArBA,SAAAjJ,EAAAN,GACA,IAAA6C,EAAAE,KAAA44B,SACA,GAAA94B,aAAA24B,GAAA,CACA,IAAAsF,EAAAj+B,EAAA84B,SACA,IAAA1C,IAAA6H,EAAA36B,OAAAgV,EAAA,EAGA,OAFA2lB,EAAA34B,KAAA,CAAA7H,EAAAN,IACA+C,KAAA6xB,OAAA/xB,EAAA+xB,KACA7xB,KAEAF,EAAAE,KAAA44B,SAAA,IAAAF,GAAAqF,GAIA,OAFAj+B,EAAA0G,IAAAjJ,EAAAN,GACA+C,KAAA6xB,KAAA/xB,EAAA+xB,KACA7xB,MAscA,IAAAs6B,GAAA0D,GAAAC,IAUAC,GAAAF,GAAAG,IAAA,GAWA,SAAAC,GAAAta,EAAAhP,GACA,IAAAnG,GAAA,EAKA,OAJA2rB,GAAAxW,EAAA,SAAA7mB,EAAA4K,EAAAic,GAEA,OADAnV,IAAAmG,EAAA7X,EAAA4K,EAAAic,KAGAnV,EAaA,SAAA0vB,GAAAtb,EAAAC,EAAAO,GAIA,IAHA,IAAA1b,GAAA,EACAzE,EAAA2f,EAAA3f,SAEAyE,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACA6c,EAAA1B,EAAA/lB,GAEA,SAAAynB,IAAA2Y,IAAA99B,EACAmlB,OAAA4Z,GAAA5Z,GACAnB,EAAAmB,EAAA2Y,IAEA,IAAAA,EAAA3Y,EACA/V,EAAA1R,EAGA,OAAA0R,EAuCA,SAAA4vB,GAAAza,EAAAhP,GACA,IAAAnG,EAAA,GAMA,OALA2rB,GAAAxW,EAAA,SAAA7mB,EAAA4K,EAAAic,GACAhP,EAAA7X,EAAA4K,EAAAic,IACAnV,EAAAvJ,KAAAnI,KAGA0R,EAcA,SAAA6vB,GAAAzb,EAAA0b,EAAA3pB,EAAA4pB,EAAA/vB,GACA,IAAA9G,GAAA,EACAzE,EAAA2f,EAAA3f,OAKA,IAHA0R,MAAA6pB,IACAhwB,MAAA,MAEA9G,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACA42B,EAAA,GAAA3pB,EAAA7X,GACAwhC,EAAA,EAEAD,GAAAvhC,EAAAwhC,EAAA,EAAA3pB,EAAA4pB,EAAA/vB,GAEA8U,GAAA9U,EAAA1R,GAESyhC,IACT/vB,IAAAvL,QAAAnG,GAGA,OAAA0R,EAcA,IAAAiwB,GAAAC,KAYAC,GAAAD,IAAA,GAUA,SAAAZ,GAAAvgC,EAAAslB,GACA,OAAAtlB,GAAAkhC,GAAAlhC,EAAAslB,EAAA9a,IAWA,SAAAi2B,GAAAzgC,EAAAslB,GACA,OAAAtlB,GAAAohC,GAAAphC,EAAAslB,EAAA9a,IAYA,SAAA62B,GAAArhC,EAAAonB,GACA,OAAAlU,GAAAkU,EAAA,SAAAvnB,GACA,OAAAsL,GAAAnL,EAAAH,MAYA,SAAAyhC,GAAAthC,EAAAuhC,GAMA,IAHA,IAAAp3B,EAAA,EACAzE,GAHA67B,EAAAC,GAAAD,EAAAvhC,IAGA0F,OAEA,MAAA1F,GAAAmK,EAAAzE,GACA1F,IAAAyhC,GAAAF,EAAAp3B,OAEA,OAAAA,MAAAzE,EAAA1F,EAAA6B,EAcA,SAAA6/B,GAAA1hC,EAAA2hC,EAAAC,GACA,IAAA3wB,EAAA0wB,EAAA3hC,GACA,OAAA25B,GAAA35B,GAAAiR,EAAA8U,GAAA9U,EAAA2wB,EAAA5hC,IAUA,SAAA6hC,GAAAtiC,GACA,aAAAA,EACAA,IAAAsC,EAAAkc,GAAAP,EAEAyZ,UAAAj4B,GAAAO,GAq2FA,SAAAA,GACA,IAAAuiC,EAAA3hC,GAAA1B,KAAAc,EAAA03B,IACAxrB,EAAAlM,EAAA03B,IAEA,IACA13B,EAAA03B,IAAAp1B,EACA,IAAAkgC,GAAA,EACO,MAAAj/B,IAEP,IAAAmO,EAAAmlB,GAAA33B,KAAAc,GAQA,OAPAwiC,IACAD,EACAviC,EAAA03B,IAAAxrB,SAEAlM,EAAA03B,KAGAhmB,EAr3FA+wB,CAAAziC,GAy4GA,SAAAA,GACA,OAAA62B,GAAA33B,KAAAc,GAz4GA0iC,CAAA1iC,GAYA,SAAA2iC,GAAA3iC,EAAA4iC,GACA,OAAA5iC,EAAA4iC,EAWA,SAAAC,GAAApiC,EAAAH,GACA,aAAAG,GAAAG,GAAA1B,KAAAuB,EAAAH,GAWA,SAAAwiC,GAAAriC,EAAAH,GACA,aAAAG,GAAAH,KAAAb,GAAAgB,GA0BA,SAAAsiC,GAAAC,EAAAjd,EAAAO,GASA,IARA,IAAApO,EAAAoO,EAAAD,GAAArS,GACA7N,EAAA68B,EAAA,GAAA78B,OACA88B,EAAAD,EAAA78B,OACA+8B,EAAAD,EACAE,EAAAp+B,EAAAk+B,GACAG,EAAAC,IACA3xB,EAAA,GAEAwxB,KAAA,CACA,IAAApd,EAAAkd,EAAAE,GACAA,GAAAnd,IACAD,EAAAS,GAAAT,EAAA6B,GAAA5B,KAEAqd,EAAAzK,GAAA7S,EAAA3f,OAAAi9B,GACAD,EAAAD,IAAA5c,IAAAP,GAAA5f,GAAA,KAAA2f,EAAA3f,QAAA,KACA,IAAAu1B,GAAAwH,GAAApd,GACAxjB,EAEAwjB,EAAAkd,EAAA,GAEA,IAAAp4B,GAAA,EACA04B,EAAAH,EAAA,GAEAhD,EACA,OAAAv1B,EAAAzE,GAAAuL,EAAAvL,OAAAi9B,GAAA,CACA,IAAApjC,EAAA8lB,EAAAlb,GACAw1B,EAAAra,IAAA/lB,KAGA,GADAA,EAAAsmB,GAAA,IAAAtmB,IAAA,IACAsjC,EACAxb,GAAAwb,EAAAlD,GACAloB,EAAAxG,EAAA0uB,EAAA9Z,IACA,CAEA,IADA4c,EAAAD,IACAC,GAAA,CACA,IAAAnb,EAAAob,EAAAD,GACA,KAAAnb,EACAD,GAAAC,EAAAqY,GACAloB,EAAA8qB,EAAAE,GAAA9C,EAAA9Z,IAEA,SAAA6Z,EAGAmD,GACAA,EAAAn7B,KAAAi4B,GAEA1uB,EAAAvJ,KAAAnI,IAGA,OAAA0R,EA+BA,SAAA6xB,GAAA9iC,EAAAuhC,EAAAt7B,GAGA,IAAAsG,EAAA,OADAvM,EAAA+iC,GAAA/iC,EADAuhC,EAAAC,GAAAD,EAAAvhC,KAEAA,IAAAyhC,GAAAuB,GAAAzB,KACA,aAAAh1B,EAAA1K,EAAA6C,GAAA6H,EAAAvM,EAAAiG,GAUA,SAAAg9B,GAAA1jC,GACA,OAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAsd,EAuCA,SAAAqmB,GAAA3jC,EAAA4iC,EAAA7E,EAAAC,EAAAl4B,GACA,OAAA9F,IAAA4iC,IAGA,MAAA5iC,GAAA,MAAA4iC,IAAAzI,GAAAn6B,KAAAm6B,GAAAyI,GACA5iC,MAAA4iC,KAmBA,SAAAniC,EAAAmiC,EAAA7E,EAAAC,EAAA4F,EAAA99B,GACA,IAAA+9B,EAAAzJ,GAAA35B,GACAqjC,EAAA1J,GAAAwI,GACAmB,EAAAF,EAAAtmB,EAAA+gB,GAAA79B,GACAujC,EAAAF,EAAAvmB,EAAA+gB,GAAAsE,GAKAqB,GAHAF,KAAAzmB,EAAAY,EAAA6lB,IAGA7lB,EACAgmB,GAHAF,KAAA1mB,EAAAY,EAAA8lB,IAGA9lB,EACAimB,EAAAJ,GAAAC,EAEA,GAAAG,GAAA/L,GAAA33B,GAAA,CACA,IAAA23B,GAAAwK,GACA,SAEAiB,GAAA,EACAI,GAAA,EAEA,GAAAE,IAAAF,EAEA,OADAn+B,MAAA,IAAA+1B,IACAgI,GAAAle,GAAAllB,GACA2jC,GAAA3jC,EAAAmiC,EAAA7E,EAAAC,EAAA4F,EAAA99B,GAy0EA,SAAArF,EAAAmiC,EAAA12B,EAAA6xB,EAAAC,EAAA4F,EAAA99B,GACA,OAAAoG,GACA,KAAA0S,GACA,GAAAne,EAAAga,YAAAmoB,EAAAnoB,YACAha,EAAAoY,YAAA+pB,EAAA/pB,WACA,SAEApY,IAAAwV,OACA2sB,IAAA3sB,OAEA,KAAA0I,GACA,QAAAle,EAAAga,YAAAmoB,EAAAnoB,aACAmpB,EAAA,IAAAxwB,GAAA3S,GAAA,IAAA2S,GAAAwvB,KAKA,KAAAnlB,EACA,KAAAC,EACA,KAAAM,EAGA,OAAA+e,IAAAt8B,GAAAmiC,GAEA,KAAAhlB,EACA,OAAAnd,EAAAnB,MAAAsjC,EAAAtjC,MAAAmB,EAAAkF,SAAAi9B,EAAAj9B,QAEA,KAAAyY,GACA,KAAAE,GAIA,OAAA7d,GAAAmiC,EAAA,GAEA,KAAA7kB,EACA,IAAAsmB,EAAA1P,GAEA,KAAAtW,GACA,IAAAimB,EAAAvG,EAAAniB,EAGA,GAFAyoB,MAAApP,IAEAx0B,EAAAm0B,MAAAgO,EAAAhO,OAAA0P,EACA,SAGA,IAAA7E,EAAA35B,EAAAlG,IAAAa,GACA,GAAAg/B,EACA,OAAAA,GAAAmD,EAEA7E,GAAAliB,EAGA/V,EAAAyD,IAAA9I,EAAAmiC,GACA,IAAAlxB,EAAA0yB,GAAAC,EAAA5jC,GAAA4jC,EAAAzB,GAAA7E,EAAAC,EAAA4F,EAAA99B,GAEA,OADAA,EAAA,OAAArF,GACAiR,EAEA,KAAA6M,GACA,GAAAwb,GACA,OAAAA,GAAA76B,KAAAuB,IAAAs5B,GAAA76B,KAAA0jC,GAGA,SAt4EA2B,CAAA9jC,EAAAmiC,EAAAmB,EAAAhG,EAAAC,EAAA4F,EAAA99B,GAEA,KAAAi4B,EAAAniB,GAAA,CACA,IAAA4oB,EAAAP,GAAArjC,GAAA1B,KAAAuB,EAAA,eACAgkC,EAAAP,GAAAtjC,GAAA1B,KAAA0jC,EAAA,eAEA,GAAA4B,GAAAC,EAAA,CACA,IAAAC,EAAAF,EAAA/jC,EAAAT,QAAAS,EACAkkC,EAAAF,EAAA7B,EAAA5iC,QAAA4iC,EAGA,OADA98B,MAAA,IAAA+1B,IACA+H,EAAAc,EAAAC,EAAA5G,EAAAC,EAAAl4B,IAGA,QAAAq+B,IAGAr+B,MAAA,IAAA+1B,IAq4EA,SAAAp7B,EAAAmiC,EAAA7E,EAAAC,EAAA4F,EAAA99B,GACA,IAAAw+B,EAAAvG,EAAAniB,EACAgpB,EAAAhF,GAAAn/B,GACAokC,EAAAD,EAAAz+B,OAEA88B,EADArD,GAAAgD,GACAz8B,OAEA,GAAA0+B,GAAA5B,IAAAqB,EACA,SAGA,IADA,IAAA15B,EAAAi6B,EACAj6B,KAAA,CACA,IAAAtK,EAAAskC,EAAAh6B,GACA,KAAA05B,EAAAhkC,KAAAsiC,EAAAhiC,GAAA1B,KAAA0jC,EAAAtiC,IACA,SAIA,IAAAm/B,EAAA35B,EAAAlG,IAAAa,GACA,GAAAg/B,GAAA35B,EAAAlG,IAAAgjC,GACA,OAAAnD,GAAAmD,EAEA,IAAAlxB,GAAA,EACA5L,EAAAyD,IAAA9I,EAAAmiC,GACA98B,EAAAyD,IAAAq5B,EAAAniC,GAGA,IADA,IAAAqkC,EAAAR,IACA15B,EAAAi6B,GAAA,CACAvkC,EAAAskC,EAAAh6B,GACA,IAAAsyB,EAAAz8B,EAAAH,GACAykC,EAAAnC,EAAAtiC,GAEA,GAAA09B,EACA,IAAAgH,EAAAV,EACAtG,EAAA+G,EAAA7H,EAAA58B,EAAAsiC,EAAAniC,EAAAqF,GACAk4B,EAAAd,EAAA6H,EAAAzkC,EAAAG,EAAAmiC,EAAA98B,GAGA,KAAAk/B,IAAA1iC,EACA46B,IAAA6H,GAAAnB,EAAA1G,EAAA6H,EAAAhH,EAAAC,EAAAl4B,GACAk/B,GACA,CACAtzB,GAAA,EACA,MAEAozB,MAAA,eAAAxkC,GAEA,GAAAoR,IAAAozB,EAAA,CACA,IAAAG,EAAAxkC,EAAAsN,YACAm3B,EAAAtC,EAAA70B,YAGAk3B,GAAAC,GACA,gBAAAzkC,GAAA,gBAAAmiC,KACA,mBAAAqC,mBACA,mBAAAC,qBACAxzB,GAAA,GAKA,OAFA5L,EAAA,OAAArF,GACAqF,EAAA,OAAA88B,GACAlxB,EAj8EAyzB,CAAA1kC,EAAAmiC,EAAA7E,EAAAC,EAAA4F,EAAA99B,IA3DAs/B,CAAAplC,EAAA4iC,EAAA7E,EAAAC,EAAA2F,GAAA79B,IAmFA,SAAAu/B,GAAA5kC,EAAAa,EAAAgkC,EAAAtH,GACA,IAAApzB,EAAA06B,EAAAn/B,OACAA,EAAAyE,EACA26B,GAAAvH,EAEA,SAAAv9B,EACA,OAAA0F,EAGA,IADA1F,EAAAhB,GAAAgB,GACAmK,KAAA,CACA,IAAA/H,EAAAyiC,EAAA16B,GACA,GAAA26B,GAAA1iC,EAAA,GACAA,EAAA,KAAApC,EAAAoC,EAAA,MACAA,EAAA,KAAApC,GAEA,SAGA,OAAAmK,EAAAzE,GAAA,CAEA,IAAA7F,GADAuC,EAAAyiC,EAAA16B,IACA,GACAsyB,EAAAz8B,EAAAH,GACAklC,EAAA3iC,EAAA,GAEA,GAAA0iC,GAAA1iC,EAAA,IACA,GAAAq6B,IAAA56B,KAAAhC,KAAAG,GACA,aAES,CACT,IAAAqF,EAAA,IAAA+1B,GACA,GAAAmC,EACA,IAAAtsB,EAAAssB,EAAAd,EAAAsI,EAAAllC,EAAAG,EAAAa,EAAAwE,GAEA,KAAA4L,IAAApP,EACAqhC,GAAA6B,EAAAtI,EAAAthB,EAAAC,EAAAmiB,EAAAl4B,GACA4L,GAEA,UAIA,SAWA,SAAA+zB,GAAAzlC,GACA,SAAAwD,GAAAxD,KAo4FAgN,EAp4FAhN,EAq4FA22B,UAAA3pB,MAl4FApB,GAAA5L,GAAAg3B,GAAA9V,IACA3U,KAAAktB,GAAAz5B,IAg4FA,IAAAgN,EAp1FA,SAAA04B,GAAA1lC,GAGA,yBAAAA,EACAA,EAEA,MAAAA,EACA2lC,GAEA,iBAAA3lC,EACAo6B,GAAAp6B,GACA4lC,GAAA5lC,EAAA,GAAAA,EAAA,IACA6lC,GAAA7lC,GAEAU,GAAAV,GAUA,SAAA8lC,GAAArlC,GACA,IAAAslC,GAAAtlC,GACA,OAAA+3B,GAAA/3B,GAEA,IAAAiR,EAAA,GACA,QAAApR,KAAAb,GAAAgB,GACAG,GAAA1B,KAAAuB,EAAAH,IAAA,eAAAA,GACAoR,EAAAvJ,KAAA7H,GAGA,OAAAoR,EAUA,SAAAs0B,GAAAvlC,GACA,IAAA+C,GAAA/C,GACA,OAo8FA,SAAAA,GACA,IAAAiR,EAAA,GACA,SAAAjR,EACA,QAAAH,KAAAb,GAAAgB,GACAiR,EAAAvJ,KAAA7H,GAGA,OAAAoR,EA38FAu0B,CAAAxlC,GAEA,IAAAylC,EAAAH,GAAAtlC,GACAiR,EAAA,GAEA,QAAApR,KAAAG,GACA,eAAAH,IAAA4lC,GAAAtlC,GAAA1B,KAAAuB,EAAAH,KACAoR,EAAAvJ,KAAA7H,GAGA,OAAAoR,EAYA,SAAAy0B,GAAAnmC,EAAA4iC,GACA,OAAA5iC,EAAA4iC,EAWA,SAAAwD,GAAAvf,EAAAd,GACA,IAAAnb,GAAA,EACA8G,EAAA20B,GAAAxf,GAAA9hB,EAAA8hB,EAAA1gB,QAAA,GAKA,OAHAk3B,GAAAxW,EAAA,SAAA7mB,EAAAM,EAAAumB,GACAnV,IAAA9G,GAAAmb,EAAA/lB,EAAAM,EAAAumB,KAEAnV,EAUA,SAAAm0B,GAAAvkC,GACA,IAAAgkC,EAAAgB,GAAAhlC,GACA,UAAAgkC,EAAAn/B,QAAAm/B,EAAA,MACAiB,GAAAjB,EAAA,MAAAA,EAAA,OAEA,SAAA7kC,GACA,OAAAA,IAAAa,GAAA+jC,GAAA5kC,EAAAa,EAAAgkC,IAYA,SAAAM,GAAA5D,EAAAwD,GACA,OAAAgB,GAAAxE,IAAAyE,GAAAjB,GACAe,GAAArE,GAAAF,GAAAwD,GAEA,SAAA/kC,GACA,IAAAy8B,EAAAt9B,GAAAa,EAAAuhC,GACA,OAAA9E,IAAA56B,GAAA46B,IAAAsI,EACAkB,GAAAjmC,EAAAuhC,GACA2B,GAAA6B,EAAAtI,EAAAthB,EAAAC,IAeA,SAAA8qB,GAAAlmC,EAAAa,EAAAslC,EAAA5I,EAAAl4B,GACArF,IAAAa,GAGAqgC,GAAArgC,EAAA,SAAAkkC,EAAAllC,GAEA,GADAwF,MAAA,IAAA+1B,IACAr4B,GAAAgiC,IA+BA,SAAA/kC,EAAAa,EAAAhB,EAAAsmC,EAAAC,EAAA7I,EAAAl4B,GACA,IAAAo3B,EAAA4J,GAAArmC,EAAAH,GACAklC,EAAAsB,GAAAxlC,EAAAhB,GACAm/B,EAAA35B,EAAAlG,IAAA4lC,GAEA,GAAA/F,EACA3C,GAAAr8B,EAAAH,EAAAm/B,OADA,CAIA,IAAAsH,EAAA/I,EACAA,EAAAd,EAAAsI,EAAAllC,EAAA,GAAAG,EAAAa,EAAAwE,GACAxD,EAEA29B,EAAA8G,IAAAzkC,EAEA,GAAA29B,EAAA,CACA,IAAAjE,EAAA5B,GAAAoL,GACArJ,GAAAH,GAAA5D,GAAAoN,GACAwB,GAAAhL,IAAAG,GAAAxW,GAAA6f,GAEAuB,EAAAvB,EACAxJ,GAAAG,GAAA6K,EACA5M,GAAA8C,GACA6J,EAAA7J,EAEA+J,GAAA/J,GACA6J,EAAApK,GAAAO,GAEAf,GACA8D,GAAA,EACA8G,EAAAvI,GAAAgH,GAAA,IAEAwB,GACA/G,GAAA,EACA8G,EAAA1H,GAAAmG,GAAA,IAGAuB,EAAA,GAGAG,GAAA1B,IAAAtJ,GAAAsJ,IACAuB,EAAA7J,EACAhB,GAAAgB,GACA6J,EAAAI,GAAAjK,GAEA15B,GAAA05B,KAAAtxB,GAAAsxB,KACA6J,EAAAtI,GAAA+G,KAIAvF,GAAA,EAGAA,IAEAn6B,EAAAyD,IAAAi8B,EAAAuB,GACAF,EAAAE,EAAAvB,EAAAoB,EAAA5I,EAAAl4B,GACAA,EAAA,OAAA0/B,IAEA1I,GAAAr8B,EAAAH,EAAAymC,IAzFAK,CAAA3mC,EAAAa,EAAAhB,EAAAsmC,EAAAD,GAAA3I,EAAAl4B,OAEA,CACA,IAAAihC,EAAA/I,EACAA,EAAA8I,GAAArmC,EAAAH,GAAAklC,EAAAllC,EAAA,GAAAG,EAAAa,EAAAwE,GACAxD,EAEAykC,IAAAzkC,IACAykC,EAAAvB,GAEA1I,GAAAr8B,EAAAH,EAAAymC,KAEOnI,IAwFP,SAAAyI,GAAAvhB,EAAAtlB,GACA,IAAA2F,EAAA2f,EAAA3f,OACA,GAAAA,EAIA,OAAAm2B,GADA97B,KAAA,EAAA2F,EAAA,EACAA,GAAA2f,EAAAtlB,GAAA8B,EAYA,SAAAglC,GAAAzgB,EAAA0gB,EAAAC,GACA,IAAA58B,GAAA,EAUA,OATA28B,EAAAhhB,GAAAghB,EAAAphC,OAAAohC,EAAA,CAAA5B,IAAAhe,GAAA8f,OA1uFA,SAAA3hB,EAAA4hB,GACA,IAAAvhC,EAAA2f,EAAA3f,OAGA,IADA2f,EAAA/Q,KAAA2yB,GACAvhC,KACA2f,EAAA3f,GAAA2f,EAAA3f,GAAAnG,MAEA,OAAA8lB,EA4uFA6hB,CAPAvB,GAAAvf,EAAA,SAAA7mB,EAAAM,EAAAumB,GAIA,OAAgB+gB,SAHhBrhB,GAAAghB,EAAA,SAAAxhB,GACA,OAAAA,EAAA/lB,KAEgB4K,UAAA5K,WAGhB,SAAAS,EAAAmiC,GACA,OAm4BA,SAAAniC,EAAAmiC,EAAA4E,GAOA,IANA,IAAA58B,GAAA,EACAi9B,EAAApnC,EAAAmnC,SACAE,EAAAlF,EAAAgF,SACAzhC,EAAA0hC,EAAA1hC,OACA4hC,EAAAP,EAAArhC,SAEAyE,EAAAzE,GAAA,CACA,IAAAuL,EAAAs2B,GAAAH,EAAAj9B,GAAAk9B,EAAAl9B,IACA,GAAA8G,EAAA,CACA,GAAA9G,GAAAm9B,EACA,OAAAr2B,EAEA,IAAAu2B,EAAAT,EAAA58B,GACA,OAAA8G,GAAA,QAAAu2B,GAAA,MAUA,OAAAxnC,EAAAmK,MAAAg4B,EAAAh4B,MA35BAs9B,CAAAznC,EAAAmiC,EAAA4E,KA4BA,SAAAW,GAAA1nC,EAAAg9B,EAAA5lB,GAKA,IAJA,IAAAjN,GAAA,EACAzE,EAAAs3B,EAAAt3B,OACAuL,EAAA,KAEA9G,EAAAzE,GAAA,CACA,IAAA67B,EAAAvE,EAAA7yB,GACA5K,EAAA+hC,GAAAthC,EAAAuhC,GAEAnqB,EAAA7X,EAAAgiC,IACAoG,GAAA12B,EAAAuwB,GAAAD,EAAAvhC,GAAAT,GAGA,OAAA0R,EA2BA,SAAA22B,GAAAviB,EAAA3R,EAAA4R,EAAAO,GACA,IAAAtO,EAAAsO,EAAAc,GAAAhB,GACAxb,GAAA,EACAzE,EAAAgO,EAAAhO,OACAm9B,EAAAxd,EAQA,IANAA,IAAA3R,IACAA,EAAAwoB,GAAAxoB,IAEA4R,IACAud,EAAA/c,GAAAT,EAAA6B,GAAA5B,OAEAnb,EAAAzE,GAKA,IAJA,IAAA6gB,EAAA,EACAhnB,EAAAmU,EAAAvJ,GACAw1B,EAAAra,IAAA/lB,MAEAgnB,EAAAhP,EAAAsrB,EAAAlD,EAAApZ,EAAAV,KAAA,GACAgd,IAAAxd,GACAwR,GAAAp4B,KAAAokC,EAAAtc,EAAA,GAEAsQ,GAAAp4B,KAAA4mB,EAAAkB,EAAA,GAGA,OAAAlB,EAYA,SAAAwiB,GAAAxiB,EAAAyiB,GAIA,IAHA,IAAApiC,EAAA2f,EAAAyiB,EAAApiC,OAAA,EACAivB,EAAAjvB,EAAA,EAEAA,KAAA,CACA,IAAAyE,EAAA29B,EAAApiC,GACA,GAAAA,GAAAivB,GAAAxqB,IAAA49B,EAAA,CACA,IAAAA,EAAA59B,EACA0xB,GAAA1xB,GACA0sB,GAAAp4B,KAAA4mB,EAAAlb,EAAA,GAEA69B,GAAA3iB,EAAAlb,IAIA,OAAAkb,EAYA,SAAA0W,GAAAoB,EAAAC,GACA,OAAAD,EAAA3F,GAAAa,MAAA+E,EAAAD,EAAA,IAkCA,SAAA8K,GAAAz8B,EAAAzL,GACA,IAAAkR,EAAA,GACA,IAAAzF,GAAAzL,EAAA,GAAAA,EAAAuc,EACA,OAAArL,EAIA,GACAlR,EAAA,IACAkR,GAAAzF,IAEAzL,EAAAy3B,GAAAz3B,EAAA,MAEAyL,YAEOzL,GAEP,OAAAkR,EAWA,SAAAi3B,GAAA37B,EAAAwK,GACA,OAAAoxB,GAAAC,GAAA77B,EAAAwK,EAAAmuB,IAAA34B,EAAA,IAUA,SAAA87B,GAAAjiB,GACA,OAAA0V,GAAApoB,GAAA0S,IAWA,SAAAkiB,GAAAliB,EAAArmB,GACA,IAAAslB,EAAA3R,GAAA0S,GACA,OAAA6V,GAAA5W,EAAA8W,GAAAp8B,EAAA,EAAAslB,EAAA3f,SAaA,SAAAiiC,GAAA3nC,EAAAuhC,EAAAhiC,EAAAg+B,GACA,IAAAx6B,GAAA/C,GACA,OAAAA,EASA,IALA,IAAAmK,GAAA,EACAzE,GAHA67B,EAAAC,GAAAD,EAAAvhC,IAGA0F,OACAivB,EAAAjvB,EAAA,EACA6iC,EAAAvoC,EAEA,MAAAuoC,KAAAp+B,EAAAzE,GAAA,CACA,IAAA7F,EAAA4hC,GAAAF,EAAAp3B,IACAm8B,EAAA/mC,EAEA,GAAA4K,GAAAwqB,EAAA,CACA,IAAA8H,EAAA8L,EAAA1oC,IACAymC,EAAA/I,IAAAd,EAAA58B,EAAA0oC,GAAA1mC,KACAA,IACAykC,EAAAvjC,GAAA05B,GACAA,EACAZ,GAAA0F,EAAAp3B,EAAA,WAGAqyB,GAAA+L,EAAA1oC,EAAAymC,GACAiC,IAAA1oC,GAEA,OAAAG,EAWA,IAAAwoC,GAAA3P,GAAA,SAAAtsB,EAAAnK,GAEA,OADAy2B,GAAA/vB,IAAAyD,EAAAnK,GACAmK,GAFA24B,GAaAuD,GAAAxpC,GAAA,SAAAsN,EAAAf,GACA,OAAAvM,GAAAsN,EAAA,YACAiB,cAAA,EACAtO,YAAA,EACAK,MAAAmpC,GAAAl9B,GACA+B,UAAA,KALA23B,GAgBA,SAAAyD,GAAAviB,GACA,OAAA6V,GAAAvoB,GAAA0S,IAYA,SAAAwiB,GAAAvjB,EAAAtO,EAAAmB,GACA,IAAA/N,GAAA,EACAzE,EAAA2f,EAAA3f,OAEAqR,EAAA,IACAA,KAAArR,EAAA,EAAAA,EAAAqR,IAEAmB,IAAAxS,IAAAwS,GACA,IACAA,GAAAxS,GAEAA,EAAAqR,EAAAmB,EAAA,EAAAA,EAAAnB,IAAA,EACAA,KAAA,EAGA,IADA,IAAA9F,EAAA3M,EAAAoB,KACAyE,EAAAzE,GACAuL,EAAA9G,GAAAkb,EAAAlb,EAAA4M,GAEA,OAAA9F,EAYA,SAAA43B,GAAAziB,EAAAhP,GACA,IAAAnG,EAMA,OAJA2rB,GAAAxW,EAAA,SAAA7mB,EAAA4K,EAAAic,GAEA,QADAnV,EAAAmG,EAAA7X,EAAA4K,EAAAic,QAGAnV,EAeA,SAAA63B,GAAAzjB,EAAA9lB,EAAAwpC,GACA,IAAAC,EAAA,EACAC,EAAA,MAAA5jB,EAAA2jB,EAAA3jB,EAAA3f,OAEA,oBAAAnG,SAAA0pC,GAAAtsB,EAAA,CACA,KAAAqsB,EAAAC,GAAA,CACA,IAAAC,EAAAF,EAAAC,IAAA,EACAtJ,EAAAta,EAAA6jB,GAEA,OAAAvJ,IAAAiB,GAAAjB,KACAoJ,EAAApJ,GAAApgC,EAAAogC,EAAApgC,GACAypC,EAAAE,EAAA,EAEAD,EAAAC,EAGA,OAAAD,EAEA,OAAAE,GAAA9jB,EAAA9lB,EAAA2lC,GAAA6D,GAgBA,SAAAI,GAAA9jB,EAAA9lB,EAAA+lB,EAAAyjB,GACAxpC,EAAA+lB,EAAA/lB,GASA,IAPA,IAAAypC,EAAA,EACAC,EAAA,MAAA5jB,EAAA,EAAAA,EAAA3f,OACA0jC,EAAA7pC,KACA8pC,EAAA,OAAA9pC,EACA+pC,EAAA1I,GAAArhC,GACAgqC,EAAAhqC,IAAAsC,EAEAmnC,EAAAC,GAAA,CACA,IAAAC,EAAA1R,IAAAwR,EAAAC,GAAA,GACAtJ,EAAAra,EAAAD,EAAA6jB,IACAM,EAAA7J,IAAA99B,EACA4nC,EAAA,OAAA9J,EACA+J,EAAA/J,KACAgK,EAAA/I,GAAAjB,GAEA,GAAAyJ,EACA,IAAAQ,EAAAb,GAAAW,OAEAE,EADSL,EACTG,IAAAX,GAAAS,GACSH,EACTK,GAAAF,IAAAT,IAAAU,GACSH,EACTI,GAAAF,IAAAC,IAAAV,IAAAY,IACSF,IAAAE,IAGTZ,EAAApJ,GAAApgC,EAAAogC,EAAApgC,GAEAqqC,EACAZ,EAAAE,EAAA,EAEAD,EAAAC,EAGA,OAAAhR,GAAA+Q,EAAAvsB,GAYA,SAAAmtB,GAAAxkB,EAAAC,GAMA,IALA,IAAAnb,GAAA,EACAzE,EAAA2f,EAAA3f,OACAggB,EAAA,EACAzU,EAAA,KAEA9G,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACAw1B,EAAAra,IAAA/lB,KAEA,IAAA4K,IAAAmyB,GAAAqD,EAAAkD,GAAA,CACA,IAAAA,EAAAlD,EACA1uB,EAAAyU,KAAA,IAAAnmB,EAAA,EAAAA,GAGA,OAAA0R,EAWA,SAAA64B,GAAAvqC,GACA,uBAAAA,EACAA,EAEAqhC,GAAArhC,GACAid,GAEAjd,EAWA,SAAAwqC,GAAAxqC,GAEA,oBAAAA,EACA,OAAAA,EAEA,GAAAo6B,GAAAp6B,GAEA,OAAAumB,GAAAvmB,EAAAwqC,IAAA,GAEA,GAAAnJ,GAAArhC,GACA,OAAAi6B,MAAA/6B,KAAAc,GAAA,GAEA,IAAA0R,EAAA1R,EAAA,GACA,WAAA0R,GAAA,EAAA1R,IAAA8c,EAAA,KAAApL,EAYA,SAAA+4B,GAAA3kB,EAAAC,EAAAO,GACA,IAAA1b,GAAA,EACAsN,EAAAlE,GACA7N,EAAA2f,EAAA3f,OACA85B,GAAA,EACAvuB,EAAA,GACA4xB,EAAA5xB,EAEA,GAAA4U,EACA2Z,GAAA,EACA/nB,EAAAmO,QAEA,GAAAlgB,GAAAgV,EAAA,CACA,IAAA5R,EAAAwc,EAAA,KAAA2kB,GAAA5kB,GACA,GAAAvc,EACA,OAAA0rB,GAAA1rB,GAEA02B,GAAA,EACA/nB,EAAA4P,GACAwb,EAAA,IAAA5H,QAGA4H,EAAAvd,EAAA,GAAArU,EAEAyuB,EACA,OAAAv1B,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACAw1B,EAAAra,IAAA/lB,KAGA,GADAA,EAAAsmB,GAAA,IAAAtmB,IAAA,EACAigC,GAAAG,KAAA,CAEA,IADA,IAAAuK,EAAArH,EAAAn9B,OACAwkC,KACA,GAAArH,EAAAqH,KAAAvK,EACA,SAAAD,EAGApa,GACAud,EAAAn7B,KAAAi4B,GAEA1uB,EAAAvJ,KAAAnI,QAEAkY,EAAAorB,EAAAlD,EAAA9Z,KACAgd,IAAA5xB,GACA4xB,EAAAn7B,KAAAi4B,GAEA1uB,EAAAvJ,KAAAnI,IAGA,OAAA0R,EAWA,SAAA+2B,GAAAhoC,EAAAuhC,GAGA,cADAvhC,EAAA+iC,GAAA/iC,EADAuhC,EAAAC,GAAAD,EAAAvhC,aAEAA,EAAAyhC,GAAAuB,GAAAzB,KAaA,SAAA4I,GAAAnqC,EAAAuhC,EAAA6I,EAAA7M,GACA,OAAAoK,GAAA3nC,EAAAuhC,EAAA6I,EAAA9I,GAAAthC,EAAAuhC,IAAAhE,GAcA,SAAA8M,GAAAhlB,EAAAjO,EAAAkzB,EAAA9jB,GAIA,IAHA,IAAA9gB,EAAA2f,EAAA3f,OACAyE,EAAAqc,EAAA9gB,GAAA,GAEA8gB,EAAArc,QAAAzE,IACA0R,EAAAiO,EAAAlb,KAAAkb,KAEA,OAAAilB,EACA1B,GAAAvjB,EAAAmB,EAAA,EAAArc,EAAAqc,EAAArc,EAAA,EAAAzE,GACAkjC,GAAAvjB,EAAAmB,EAAArc,EAAA,IAAAqc,EAAA9gB,EAAAyE,GAaA,SAAAogC,GAAAhrC,EAAAkN,GACA,IAAAwE,EAAA1R,EAIA,OAHA0R,aAAA2oB,KACA3oB,IAAA1R,SAEAyU,GAAAvH,EAAA,SAAAwE,EAAA/D,GACA,OAAAA,EAAAX,KAAA7H,MAAAwI,EAAAiY,QAAAY,GAAA,CAAA9U,GAAA/D,EAAAjH,QACOgL,GAaP,SAAAu5B,GAAAjI,EAAAjd,EAAAO,GACA,IAAAngB,EAAA68B,EAAA78B,OACA,GAAAA,EAAA,EACA,OAAAA,EAAAskC,GAAAzH,EAAA,OAKA,IAHA,IAAAp4B,GAAA,EACA8G,EAAA3M,EAAAoB,KAEAyE,EAAAzE,GAIA,IAHA,IAAA2f,EAAAkd,EAAAp4B,GACAs4B,GAAA,IAEAA,EAAA/8B,GACA+8B,GAAAt4B,IACA8G,EAAA9G,GAAAo1B,GAAAtuB,EAAA9G,IAAAkb,EAAAkd,EAAAE,GAAAnd,EAAAO,IAIA,OAAAmkB,GAAAlJ,GAAA7vB,EAAA,GAAAqU,EAAAO,GAYA,SAAA4kB,GAAArjB,EAAA1T,EAAAg3B,GAMA,IALA,IAAAvgC,GAAA,EACAzE,EAAA0hB,EAAA1hB,OACAilC,EAAAj3B,EAAAhO,OACAuL,EAAA,KAEA9G,EAAAzE,GAAA,CACA,IAAAnG,EAAA4K,EAAAwgC,EAAAj3B,EAAAvJ,GAAAtI,EACA6oC,EAAAz5B,EAAAmW,EAAAjd,GAAA5K,GAEA,OAAA0R,EAUA,SAAA25B,GAAArrC,GACA,OAAAinC,GAAAjnC,KAAA,GAUA,SAAAsrC,GAAAtrC,GACA,yBAAAA,IAAA2lC,GAWA,SAAA1D,GAAAjiC,EAAAS,GACA,OAAA25B,GAAAp6B,GACAA,EAEAwmC,GAAAxmC,EAAAS,GAAA,CAAAT,GAAAurC,GAAA55B,GAAA3R,IAYA,IAAAwrC,GAAA7C,GAWA,SAAA8C,GAAA3lB,EAAAtO,EAAAmB,GACA,IAAAxS,EAAA2f,EAAA3f,OAEA,OADAwS,MAAArW,EAAA6D,EAAAwS,GACAnB,GAAAmB,GAAAxS,EAAA2f,EAAAujB,GAAAvjB,EAAAtO,EAAAmB,GASA,IAAAkf,GAAAD,IAAA,SAAAh1B,GACA,OAAAyhB,GAAAwT,aAAAj1B,IAWA,SAAA47B,GAAAvoB,EAAAgoB,GACA,GAAAA,EACA,OAAAhoB,EAAAnR,QAEA,IAAAqB,EAAA8P,EAAA9P,OACAuL,EAAAwlB,MAAA/wB,GAAA,IAAA8P,EAAAlI,YAAA5H,GAGA,OADA8P,EAAA3M,KAAAoI,GACAA,EAUA,SAAAwtB,GAAAwM,GACA,IAAAh6B,EAAA,IAAAg6B,EAAA39B,YAAA29B,EAAAjxB,YAEA,OADA,IAAArH,GAAA1B,GAAAnI,IAAA,IAAA6J,GAAAs4B,IACAh6B,EAgDA,SAAA2tB,GAAAsM,EAAA1N,GACA,IAAAhoB,EAAAgoB,EAAAiB,GAAAyM,EAAA11B,QAAA01B,EAAA11B,OACA,WAAA01B,EAAA59B,YAAAkI,EAAA01B,EAAA9yB,WAAA8yB,EAAAxlC,QAWA,SAAA6hC,GAAAhoC,EAAA4iC,GACA,GAAA5iC,IAAA4iC,EAAA,CACA,IAAAgJ,EAAA5rC,IAAAsC,EACAwnC,EAAA,OAAA9pC,EACA6rC,EAAA7rC,KACA+pC,EAAA1I,GAAArhC,GAEAiqC,EAAArH,IAAAtgC,EACA4nC,EAAA,OAAAtH,EACAuH,EAAAvH,KACAwH,EAAA/I,GAAAuB,GAEA,IAAAsH,IAAAE,IAAAL,GAAA/pC,EAAA4iC,GACAmH,GAAAE,GAAAE,IAAAD,IAAAE,GACAN,GAAAG,GAAAE,IACAyB,GAAAzB,IACA0B,EACA,SAEA,IAAA/B,IAAAC,IAAAK,GAAApqC,EAAA4iC,GACAwH,GAAAwB,GAAAC,IAAA/B,IAAAC,GACAG,GAAA0B,GAAAC,IACA5B,GAAA4B,IACA1B,EACA,SAGA,SAuDA,SAAA2B,GAAAplC,EAAAqlC,EAAAC,EAAAC,GAUA,IATA,IAAAC,GAAA,EACAC,EAAAzlC,EAAAP,OACAimC,EAAAJ,EAAA7lC,OACAkmC,GAAA,EACAC,EAAAP,EAAA5lC,OACAomC,EAAA9T,GAAA0T,EAAAC,EAAA,GACA16B,EAAA3M,EAAAunC,EAAAC,GACAC,GAAAP,IAEAI,EAAAC,GACA56B,EAAA26B,GAAAN,EAAAM,GAEA,OAAAH,EAAAE,IACAI,GAAAN,EAAAC,KACAz6B,EAAAs6B,EAAAE,IAAAxlC,EAAAwlC,IAGA,KAAAK,KACA76B,EAAA26B,KAAA3lC,EAAAwlC,KAEA,OAAAx6B,EAcA,SAAA+6B,GAAA/lC,EAAAqlC,EAAAC,EAAAC,GAWA,IAVA,IAAAC,GAAA,EACAC,EAAAzlC,EAAAP,OACAumC,GAAA,EACAN,EAAAJ,EAAA7lC,OACAwmC,GAAA,EACAC,EAAAb,EAAA5lC,OACAomC,EAAA9T,GAAA0T,EAAAC,EAAA,GACA16B,EAAA3M,EAAAwnC,EAAAK,GACAJ,GAAAP,IAEAC,EAAAK,GACA76B,EAAAw6B,GAAAxlC,EAAAwlC,GAGA,IADA,IAAA71B,EAAA61B,IACAS,EAAAC,GACAl7B,EAAA2E,EAAAs2B,GAAAZ,EAAAY,GAEA,OAAAD,EAAAN,IACAI,GAAAN,EAAAC,KACAz6B,EAAA2E,EAAA21B,EAAAU,IAAAhmC,EAAAwlC,MAGA,OAAAx6B,EAWA,SAAAirB,GAAAr7B,EAAAwkB,GACA,IAAAlb,GAAA,EACAzE,EAAA7E,EAAA6E,OAGA,IADA2f,MAAA/gB,EAAAoB,MACAyE,EAAAzE,GACA2f,EAAAlb,GAAAtJ,EAAAsJ,GAEA,OAAAkb,EAaA,SAAAyX,GAAAj8B,EAAAumB,EAAApnB,EAAAu9B,GACA,IAAA6O,GAAApsC,EACAA,MAAA,IAKA,IAHA,IAAAmK,GAAA,EACAzE,EAAA0hB,EAAA1hB,SAEAyE,EAAAzE,GAAA,CACA,IAAA7F,EAAAunB,EAAAjd,GAEAm8B,EAAA/I,EACAA,EAAAv9B,EAAAH,GAAAgB,EAAAhB,KAAAG,EAAAa,GACAgB,EAEAykC,IAAAzkC,IACAykC,EAAAzlC,EAAAhB,IAEAusC,EACA7P,GAAAv8B,EAAAH,EAAAymC,GAEA9J,GAAAx8B,EAAAH,EAAAymC,GAGA,OAAAtmC,EAmCA,SAAAqsC,GAAAxyB,EAAAyyB,GACA,gBAAAlmB,EAAAd,GACA,IAAA/Y,EAAAotB,GAAAvT,GAAAhB,GAAAuX,GACApX,EAAA+mB,MAAA,GAEA,OAAA//B,EAAA6Z,EAAAvM,EAAAmtB,GAAA1hB,EAAA,GAAAC,IAWA,SAAAgnB,GAAAC,GACA,OAAAtE,GAAA,SAAAloC,EAAAysC,GACA,IAAAtiC,GAAA,EACAzE,EAAA+mC,EAAA/mC,OACA63B,EAAA73B,EAAA,EAAA+mC,EAAA/mC,EAAA,GAAA7D,EACA6qC,EAAAhnC,EAAA,EAAA+mC,EAAA,GAAA5qC,EAWA,IATA07B,EAAAiP,EAAA9mC,OAAA,sBAAA63B,GACA73B,IAAA63B,GACA17B,EAEA6qC,GAAAC,GAAAF,EAAA,GAAAA,EAAA,GAAAC,KACAnP,EAAA73B,EAAA,EAAA7D,EAAA07B,EACA73B,EAAA,GAEA1F,EAAAhB,GAAAgB,KACAmK,EAAAzE,GAAA,CACA,IAAA7E,EAAA4rC,EAAAtiC,GACAtJ,GACA2rC,EAAAxsC,EAAAa,EAAAsJ,EAAAozB,GAGA,OAAAv9B,IAYA,SAAAsgC,GAAAja,EAAAG,GACA,gBAAAJ,EAAAd,GACA,SAAAc,EACA,OAAAA,EAEA,IAAAwf,GAAAxf,GACA,OAAAC,EAAAD,EAAAd,GAMA,IAJA,IAAA5f,EAAA0gB,EAAA1gB,OACAyE,EAAAqc,EAAA9gB,GAAA,EACAknC,EAAA5tC,GAAAonB,IAEAI,EAAArc,QAAAzE,KACA,IAAA4f,EAAAsnB,EAAAziC,KAAAyiC,KAIA,OAAAxmB,GAWA,SAAA+a,GAAA3a,GACA,gBAAAxmB,EAAAslB,EAAAqc,GAMA,IALA,IAAAx3B,GAAA,EACAyiC,EAAA5tC,GAAAgB,GACAonB,EAAAua,EAAA3hC,GACA0F,EAAA0hB,EAAA1hB,OAEAA,KAAA,CACA,IAAA7F,EAAAunB,EAAAZ,EAAA9gB,IAAAyE,GACA,QAAAmb,EAAAsnB,EAAA/sC,KAAA+sC,GACA,MAGA,OAAA5sC,GAgCA,SAAA6sC,GAAAC,GACA,gBAAAthC,GAGA,IAAAgc,EAAAyM,GAFAzoB,EAAA0F,GAAA1F,IAGAqpB,GAAArpB,GACA3J,EAEAmyB,EAAAxM,EACAA,EAAA,GACAhc,EAAAuhC,OAAA,GAEAC,EAAAxlB,EACAwjB,GAAAxjB,EAAA,GAAApc,KAAA,IACAI,EAAAnH,MAAA,GAEA,OAAA2vB,EAAA8Y,KAAAE,GAWA,SAAAC,GAAAC,GACA,gBAAA1hC,GACA,OAAAwI,GAAAm5B,GAAAC,GAAA5hC,GAAAI,QAAAyW,GAAA,KAAA6qB,EAAA,KAYA,SAAAG,GAAA7O,GACA,kBAIA,IAAAv4B,EAAAtB,UACA,OAAAsB,EAAAP,QACA,kBAAA84B,EACA,kBAAAA,EAAAv4B,EAAA,IACA,kBAAAu4B,EAAAv4B,EAAA,GAAAA,EAAA,IACA,kBAAAu4B,EAAAv4B,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAu4B,EAAAv4B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAu4B,EAAAv4B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAu4B,EAAAv4B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAu4B,EAAAv4B,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,IAAAqnC,EAAAvT,GAAAyE,EAAAt+B,WACA+Q,EAAAutB,EAAA95B,MAAA4oC,EAAArnC,GAIA,OAAAlD,GAAAkO,KAAAq8B,GAgDA,SAAAC,GAAAC,GACA,gBAAApnB,EAAAhP,EAAAmP,GACA,IAAAqmB,EAAA5tC,GAAAonB,GACA,IAAAwf,GAAAxf,GAAA,CACA,IAAAd,EAAA0hB,GAAA5vB,EAAA,GACAgP,EAAA5b,GAAA4b,GACAhP,EAAA,SAAAvX,GAAqC,OAAAylB,EAAAsnB,EAAA/sC,KAAA+sC,IAErC,IAAAziC,EAAAqjC,EAAApnB,EAAAhP,EAAAmP,GACA,OAAApc,GAAA,EAAAyiC,EAAAtnB,EAAAc,EAAAjc,MAAAtI,GAWA,SAAA4rC,GAAAjnB,GACA,OAAAknB,GAAA,SAAAC,GACA,IAAAjoC,EAAAioC,EAAAjoC,OACAyE,EAAAzE,EACAkoC,EAAA/T,GAAA35B,UAAA2tC,KAKA,IAHArnB,GACAmnB,EAAA/1B,UAEAzN,KAAA,CACA,IAAAoC,EAAAohC,EAAAxjC,GACA,sBAAAoC,EACA,UAAAtJ,GAAA2X,GAEA,GAAAgzB,IAAA50B,GAAA,WAAA80B,GAAAvhC,GACA,IAAAyM,EAAA,IAAA6gB,GAAA,OAIA,IADA1vB,EAAA6O,EAAA7O,EAAAzE,IACAyE,EAAAzE,GAAA,CAGA,IAAAqoC,EAAAD,GAFAvhC,EAAAohC,EAAAxjC,IAGA/H,EAAA,WAAA2rC,EAAAC,GAAAzhC,GAAA1K,EAMAmX,EAJA5W,GAAA6rC,GAAA7rC,EAAA,KACAA,EAAA,KAAAwZ,EAAAJ,EAAAE,EAAAG,KACAzZ,EAAA,GAAAsD,QAAA,GAAAtD,EAAA,GAEA4W,EAAA80B,GAAA1rC,EAAA,KAAAsC,MAAAsU,EAAA5W,EAAA,IAEA,GAAAmK,EAAA7G,QAAAuoC,GAAA1hC,GACAyM,EAAA+0B,KACA/0B,EAAA60B,KAAAthC,GAGA,kBACA,IAAAtG,EAAAtB,UACApF,EAAA0G,EAAA,GAEA,GAAA+S,GAAA,GAAA/S,EAAAP,QAAAi0B,GAAAp6B,GACA,OAAAyZ,EAAAk1B,MAAA3uC,WAKA,IAHA,IAAA4K,EAAA,EACA8G,EAAAvL,EAAAioC,EAAAxjC,GAAAzF,MAAApC,KAAA2D,GAAA1G,IAEA4K,EAAAzE,GACAuL,EAAA08B,EAAAxjC,GAAA1L,KAAA6D,KAAA2O,GAEA,OAAAA,KAwBA,SAAAk9B,GAAA5hC,EAAA+wB,EAAAnY,EAAAmmB,EAAAC,EAAA6C,EAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAnR,EAAA1hB,EACA8yB,EAAApR,EAAAjiB,EACAszB,EAAArR,EAAAhiB,EACAkwB,EAAAlO,GAAA9hB,EAAAC,GACAmzB,EAAAtR,EAAAxhB,EACA0iB,EAAAmQ,EAAA9sC,EAAAwrC,GAAA9gC,GA6CA,OA3CA,SAAAyM,IAKA,IAJA,IAAAtT,EAAAf,UAAAe,OACAO,EAAA3B,EAAAoB,GACAyE,EAAAzE,EAEAyE,KACAlE,EAAAkE,GAAAxF,UAAAwF,GAEA,GAAAqhC,EACA,IAAAjX,EAAAsa,GAAA71B,GACA81B,EAp/HA,SAAAzpB,EAAAkP,GAIA,IAHA,IAAA7uB,EAAA2f,EAAA3f,OACAuL,EAAA,EAEAvL,KACA2f,EAAA3f,KAAA6uB,KACAtjB,EAGA,OAAAA,EA2+HA89B,CAAA9oC,EAAAsuB,GASA,GAPA+W,IACArlC,EAAAolC,GAAAplC,EAAAqlC,EAAAC,EAAAC,IAEA4C,IACAnoC,EAAA+lC,GAAA/lC,EAAAmoC,EAAAC,EAAA7C,IAEA9lC,GAAAopC,EACAtD,GAAA9lC,EAAA8oC,EAAA,CACA,IAAAQ,EAAA1a,GAAAruB,EAAAsuB,GACA,OAAA0a,GACA1iC,EAAA+wB,EAAA6Q,GAAAn1B,EAAAub,YAAApP,EACAlf,EAAA+oC,EAAAV,EAAAC,EAAAC,EAAA9oC,GAGA,IAAA4nC,EAAAoB,EAAAvpB,EAAA7iB,KACAoN,EAAAi/B,EAAArB,EAAA/gC,KAcA,OAZA7G,EAAAO,EAAAP,OACA4oC,EACAroC,EA83CA,SAAAof,EAAAyiB,GAKA,IAJA,IAAAoH,EAAA7pB,EAAA3f,OACAA,EAAAwyB,GAAA4P,EAAApiC,OAAAwpC,GACAC,EAAAjT,GAAA7W,GAEA3f,KAAA,CACA,IAAAyE,EAAA29B,EAAApiC,GACA2f,EAAA3f,GAAAm2B,GAAA1xB,EAAA+kC,GAAAC,EAAAhlC,GAAAtI,EAEA,OAAAwjB,EAv4CA+pB,CAAAnpC,EAAAqoC,GACSM,GAAAlpC,EAAA,GACTO,EAAA2R,UAEA62B,GAAAF,EAAA7oC,IACAO,EAAAP,OAAA6oC,GAEAjsC,aAAAshB,IAAAthB,gBAAA0W,IACAtJ,EAAA8uB,GAAA6O,GAAA39B,IAEAA,EAAAhL,MAAA4oC,EAAArnC,IAaA,SAAAopC,GAAAx1B,EAAAy1B,GACA,gBAAAtvC,EAAAslB,GACA,OA59DA,SAAAtlB,EAAA6Z,EAAAyL,EAAAC,GAIA,OAHAgb,GAAAvgC,EAAA,SAAAT,EAAAM,EAAAG,GACA6Z,EAAA0L,EAAAD,EAAA/lB,GAAAM,EAAAG,KAEAulB,EAw9DAgqB,CAAAvvC,EAAA6Z,EAAAy1B,EAAAhqB,GAAA,KAYA,SAAAkqB,GAAAC,EAAAC,GACA,gBAAAnwC,EAAA4iC,GACA,IAAAlxB,EACA,GAAA1R,IAAAsC,GAAAsgC,IAAAtgC,EACA,OAAA6tC,EAKA,GAHAnwC,IAAAsC,IACAoP,EAAA1R,GAEA4iC,IAAAtgC,EAAA,CACA,GAAAoP,IAAApP,EACA,OAAAsgC,EAEA,iBAAA5iC,GAAA,iBAAA4iC,GACA5iC,EAAAwqC,GAAAxqC,GACA4iC,EAAA4H,GAAA5H,KAEA5iC,EAAAuqC,GAAAvqC,GACA4iC,EAAA2H,GAAA3H,IAEAlxB,EAAAw+B,EAAAlwC,EAAA4iC,GAEA,OAAAlxB,GAWA,SAAA0+B,GAAAC,GACA,OAAAlC,GAAA,SAAA5G,GAEA,OADAA,EAAAhhB,GAAAghB,EAAA5f,GAAA8f,OACAkB,GAAA,SAAAjiC,GACA,IAAAkf,EAAA7iB,KACA,OAAAstC,EAAA9I,EAAA,SAAAxhB,GACA,OAAA5gB,GAAA4gB,EAAAH,EAAAlf,SAeA,SAAA4pC,GAAAnqC,EAAAoqC,GAGA,IAAAC,GAFAD,MAAAjuC,EAAA,IAAAkoC,GAAA+F,IAEApqC,OACA,GAAAqqC,EAAA,EACA,OAAAA,EAAA9H,GAAA6H,EAAApqC,GAAAoqC,EAEA,IAAA7+B,EAAAg3B,GAAA6H,EAAAvY,GAAA7xB,EAAAgvB,GAAAob,KACA,OAAA7b,GAAA6b,GACA9E,GAAAnW,GAAA5jB,GAAA,EAAAvL,GAAA0F,KAAA,IACA6F,EAAA5M,MAAA,EAAAqB,GA6CA,SAAAsqC,GAAAxpB,GACA,gBAAAzP,EAAAmB,EAAA7B,GAaA,OAZAA,GAAA,iBAAAA,GAAAs2B,GAAA51B,EAAAmB,EAAA7B,KACA6B,EAAA7B,EAAAxU,GAGAkV,EAAAk5B,GAAAl5B,GACAmB,IAAArW,GACAqW,EAAAnB,EACAA,EAAA,GAEAmB,EAAA+3B,GAAA/3B,GAr7CA,SAAAnB,EAAAmB,EAAA7B,EAAAmQ,GAKA,IAJA,IAAArc,GAAA,EACAzE,EAAAsyB,GAAAT,IAAArf,EAAAnB,IAAAV,GAAA,OACApF,EAAA3M,EAAAoB,GAEAA,KACAuL,EAAAuV,EAAA9gB,IAAAyE,GAAA4M,EACAA,GAAAV,EAEA,OAAApF,EA+6CAi/B,CAAAn5B,EAAAmB,EADA7B,MAAAxU,EAAAkV,EAAAmB,EAAA,KAAA+3B,GAAA55B,GACAmQ,IAWA,SAAA2pB,GAAAV,GACA,gBAAAlwC,EAAA4iC,GAKA,MAJA,iBAAA5iC,GAAA,iBAAA4iC,IACA5iC,EAAA6wC,GAAA7wC,GACA4iC,EAAAiO,GAAAjO,IAEAsN,EAAAlwC,EAAA4iC,IAqBA,SAAA8M,GAAA1iC,EAAA+wB,EAAA+S,EAAA9b,EAAApP,EAAAmmB,EAAAC,EAAA+C,EAAAC,EAAAC,GACA,IAAA8B,EAAAhT,EAAA9hB,EAMA8hB,GAAAgT,EAAA50B,EAAAC,GACA2hB,KAAAgT,EAAA30B,EAAAD,IAEAH,IACA+hB,KAAAjiB,EAAAC,IAEA,IAAAi1B,EAAA,CACAhkC,EAAA+wB,EAAAnY,EAVAmrB,EAAAhF,EAAAzpC,EAFAyuC,EAAA/E,EAAA1pC,EAGAyuC,EAAAzuC,EAAAypC,EAFAgF,EAAAzuC,EAAA0pC,EAYA+C,EAAAC,EAAAC,GAGAv9B,EAAAo/B,EAAA3rC,MAAA7C,EAAA0uC,GAKA,OAJAtC,GAAA1hC,IACAikC,GAAAv/B,EAAAs/B,GAEAt/B,EAAAsjB,cACAkc,GAAAx/B,EAAA1E,EAAA+wB,GAUA,SAAAoT,GAAA5D,GACA,IAAAvgC,EAAA7J,GAAAoqC,GACA,gBAAA5P,EAAAyT,GAGA,GAFAzT,EAAAkT,GAAAlT,IACAyT,EAAA,MAAAA,EAAA,EAAAzY,GAAA70B,GAAAstC,GAAA,OACA/Y,GAAAsF,GAAA,CAGA,IAAA0T,GAAA1/B,GAAAgsB,GAAA,KAAAnyB,MAAA,KAIA,SADA6lC,GAAA1/B,GAFA3E,EAAAqkC,EAAA,SAAAA,EAAA,GAAAD,KAEA,KAAA5lC,MAAA,MACA,SAAA6lC,EAAA,GAAAD,IAEA,OAAApkC,EAAA2wB,IAWA,IAAA+M,GAAAvR,IAAA,EAAAlE,GAAA,IAAAkE,GAAA,YAAArc,EAAA,SAAA3I,GACA,WAAAglB,GAAAhlB,IADAm9B,GAWA,SAAAC,GAAAnP,GACA,gBAAA3hC,GACA,IAAAyL,EAAAoyB,GAAA79B,GACA,OAAAyL,GAAA6R,EACA4W,GAAAl0B,GAEAyL,GAAAmS,GACA6W,GAAAz0B,GAn3IA,SAAAA,EAAAonB,GACA,OAAAtB,GAAAsB,EAAA,SAAAvnB,GACA,OAAAA,EAAAG,EAAAH,MAm3IAkxC,CAAA/wC,EAAA2hC,EAAA3hC,KA6BA,SAAAgxC,GAAAzkC,EAAA+wB,EAAAnY,EAAAmmB,EAAAC,EAAA+C,EAAAC,EAAAC,GACA,IAAAG,EAAArR,EAAAhiB,EACA,IAAAqzB,GAAA,mBAAApiC,EACA,UAAAtJ,GAAA2X,GAEA,IAAAlV,EAAA4lC,IAAA5lC,OAAA,EASA,GARAA,IACA43B,KAAA5hB,EAAAC,GACA2vB,EAAAC,EAAA1pC,GAEA0sC,MAAA1sC,EAAA0sC,EAAAvW,GAAA30B,GAAAkrC,GAAA,GACAC,MAAA3sC,EAAA2sC,EAAAnrC,GAAAmrC,GACA9oC,GAAA6lC,IAAA7lC,OAAA,EAEA43B,EAAA3hB,EAAA,CACA,IAAAyyB,EAAA9C,EACA+C,EAAA9C,EAEAD,EAAAC,EAAA1pC,EAEA,IAAAO,EAAAusC,EAAA9sC,EAAAmsC,GAAAzhC,GAEAgkC,EAAA,CACAhkC,EAAA+wB,EAAAnY,EAAAmmB,EAAAC,EAAA6C,EAAAC,EACAC,EAAAC,EAAAC,GAkBA,GAfApsC,GAy6BA,SAAAA,EAAAvB,GACA,IAAAy8B,EAAAl7B,EAAA,GACA6uC,EAAApwC,EAAA,GACAqwC,EAAA5T,EAAA2T,EACAzR,EAAA0R,GAAA71B,EAAAC,EAAAM,GAEAu1B,EACAF,GAAAr1B,GAAA0hB,GAAA9hB,GACAy1B,GAAAr1B,GAAA0hB,GAAAzhB,GAAAzZ,EAAA,GAAAsD,QAAA7E,EAAA,IACAowC,IAAAr1B,EAAAC,IAAAhb,EAAA,GAAA6E,QAAA7E,EAAA,IAAAy8B,GAAA9hB,EAGA,IAAAgkB,IAAA2R,EACA,OAAA/uC,EAGA6uC,EAAA51B,IACAjZ,EAAA,GAAAvB,EAAA,GAEAqwC,GAAA5T,EAAAjiB,EAAA,EAAAE,GAGA,IAAAhc,EAAAsB,EAAA,GACA,GAAAtB,EAAA,CACA,IAAA+rC,EAAAlpC,EAAA,GACAA,EAAA,GAAAkpC,EAAAD,GAAAC,EAAA/rC,EAAAsB,EAAA,IAAAtB,EACA6C,EAAA,GAAAkpC,EAAAhX,GAAAlyB,EAAA,GAAA2Y,GAAAla,EAAA,IAGAtB,EAAAsB,EAAA,MAEAyqC,EAAAlpC,EAAA,GACAA,EAAA,GAAAkpC,EAAAU,GAAAV,EAAA/rC,EAAAsB,EAAA,IAAAtB,EACA6C,EAAA,GAAAkpC,EAAAhX,GAAAlyB,EAAA,GAAA2Y,GAAAla,EAAA,KAGAtB,EAAAsB,EAAA,MAEAuB,EAAA,GAAA7C,GAGA0xC,EAAAr1B,IACAxZ,EAAA,SAAAA,EAAA,GAAAvB,EAAA,GAAAq3B,GAAA91B,EAAA,GAAAvB,EAAA,KAGA,MAAAuB,EAAA,KACAA,EAAA,GAAAvB,EAAA,IAGAuB,EAAA,GAAAvB,EAAA,GACAuB,EAAA,GAAA8uC,EA19BAE,CAAAb,EAAAnuC,GAEAmK,EAAAgkC,EAAA,GACAjT,EAAAiT,EAAA,GACAprB,EAAAorB,EAAA,GACAjF,EAAAiF,EAAA,GACAhF,EAAAgF,EAAA,KACA/B,EAAA+B,EAAA,GAAAA,EAAA,KAAA1uC,EACA8sC,EAAA,EAAApiC,EAAA7G,OACAsyB,GAAAuY,EAAA,GAAA7qC,EAAA,KAEA43B,GAAA9hB,EAAAC,KACA6hB,KAAA9hB,EAAAC,IAEA6hB,MAAAjiB,EAGApK,EADOqsB,GAAA9hB,GAAA8hB,GAAA7hB,EApgBP,SAAAlP,EAAA+wB,EAAAkR,GACA,IAAAhQ,EAAA6O,GAAA9gC,GAwBA,OAtBA,SAAAyM,IAMA,IALA,IAAAtT,EAAAf,UAAAe,OACAO,EAAA3B,EAAAoB,GACAyE,EAAAzE,EACA6uB,EAAAsa,GAAA71B,GAEA7O,KACAlE,EAAAkE,GAAAxF,UAAAwF,GAEA,IAAAohC,EAAA7lC,EAAA,GAAAO,EAAA,KAAAsuB,GAAAtuB,EAAAP,EAAA,KAAA6uB,EACA,GACAD,GAAAruB,EAAAsuB,GAGA,OADA7uB,GAAA6lC,EAAA7lC,QACA8oC,EACAS,GACA1iC,EAAA+wB,EAAA6Q,GAAAn1B,EAAAub,YAAA1yB,EACAoE,EAAAslC,EAAA1pC,IAAA2sC,EAAA9oC,GAGAhB,GADApC,aAAAshB,IAAAthB,gBAAA0W,EAAAwlB,EAAAjyB,EACAjK,KAAA2D,IA8eAorC,CAAA9kC,EAAA+wB,EAAAkR,GACOlR,GAAA5hB,GAAA4hB,IAAAjiB,EAAAK,IAAA6vB,EAAA7lC,OAGPyoC,GAAAzpC,MAAA7C,EAAA0uC,GA9OA,SAAAhkC,EAAA+wB,EAAAnY,EAAAmmB,GACA,IAAAoD,EAAApR,EAAAjiB,EACAmjB,EAAA6O,GAAA9gC,GAkBA,OAhBA,SAAAyM,IAQA,IAPA,IAAAyyB,GAAA,EACAC,EAAA/mC,UAAAe,OACAkmC,GAAA,EACAC,EAAAP,EAAA5lC,OACAO,EAAA3B,EAAAunC,EAAAH,GACAh8B,EAAApN,aAAAshB,IAAAthB,gBAAA0W,EAAAwlB,EAAAjyB,IAEAq/B,EAAAC,GACA5lC,EAAA2lC,GAAAN,EAAAM,GAEA,KAAAF,KACAzlC,EAAA2lC,KAAAjnC,YAAA8mC,GAEA,OAAA/mC,GAAAgL,EAAAg/B,EAAAvpB,EAAA7iB,KAAA2D,IA0NAqrC,CAAA/kC,EAAA+wB,EAAAnY,EAAAmmB,QAJA,IAAAr6B,EAhmBA,SAAA1E,EAAA+wB,EAAAnY,GACA,IAAAupB,EAAApR,EAAAjiB,EACAmjB,EAAA6O,GAAA9gC,GAMA,OAJA,SAAAyM,IAEA,OADA1W,aAAAshB,IAAAthB,gBAAA0W,EAAAwlB,EAAAjyB,GACA7H,MAAAgqC,EAAAvpB,EAAA7iB,KAAAqC,YA0lBA4sC,CAAAhlC,EAAA+wB,EAAAnY,GASA,OAAAsrB,IADAruC,EAAAomC,GAAAgI,IACAv/B,EAAAs/B,GAAAhkC,EAAA+wB,GAeA,SAAAkU,GAAA/U,EAAAsI,EAAAllC,EAAAG,GACA,OAAAy8B,IAAA56B,GACAy6B,GAAAG,EAAA3G,GAAAj2B,MAAAM,GAAA1B,KAAAuB,EAAAH,GACAklC,EAEAtI,EAiBA,SAAAgV,GAAAhV,EAAAsI,EAAAllC,EAAAG,EAAAa,EAAAwE,GAOA,OANAtC,GAAA05B,IAAA15B,GAAAgiC,KAEA1/B,EAAAyD,IAAAi8B,EAAAtI,GACAyJ,GAAAzJ,EAAAsI,EAAAljC,EAAA4vC,GAAApsC,GACAA,EAAA,OAAA0/B,IAEAtI,EAYA,SAAAiV,GAAAnyC,GACA,OAAAknC,GAAAlnC,GAAAsC,EAAAtC,EAgBA,SAAAokC,GAAAte,EAAA8c,EAAA7E,EAAAC,EAAA4F,EAAA99B,GACA,IAAAw+B,EAAAvG,EAAAniB,EACA+zB,EAAA7pB,EAAA3f,OACA88B,EAAAL,EAAAz8B,OAEA,GAAAwpC,GAAA1M,KAAAqB,GAAArB,EAAA0M,GACA,SAGA,IAAAlQ,EAAA35B,EAAAlG,IAAAkmB,GACA,GAAA2Z,GAAA35B,EAAAlG,IAAAgjC,GACA,OAAAnD,GAAAmD,EAEA,IAAAh4B,GAAA,EACA8G,GAAA,EACA4xB,EAAAvF,EAAAliB,EAAA,IAAA6f,GAAAp5B,EAMA,IAJAwD,EAAAyD,IAAAuc,EAAA8c,GACA98B,EAAAyD,IAAAq5B,EAAA9c,KAGAlb,EAAA+kC,GAAA,CACA,IAAAyC,EAAAtsB,EAAAlb,GACAm6B,EAAAnC,EAAAh4B,GAEA,GAAAozB,EACA,IAAAgH,EAAAV,EACAtG,EAAA+G,EAAAqN,EAAAxnC,EAAAg4B,EAAA9c,EAAAhgB,GACAk4B,EAAAoU,EAAArN,EAAAn6B,EAAAkb,EAAA8c,EAAA98B,GAEA,GAAAk/B,IAAA1iC,EAAA,CACA,GAAA0iC,EACA,SAEAtzB,GAAA,EACA,MAGA,GAAA4xB,GACA,IAAA1vB,GAAAgvB,EAAA,SAAAmC,EAAA7B,GACA,IAAApb,GAAAwb,EAAAJ,KACAkP,IAAArN,GAAAnB,EAAAwO,EAAArN,EAAAhH,EAAAC,EAAAl4B,IACA,OAAAw9B,EAAAn7B,KAAA+6B,KAEe,CACfxxB,GAAA,EACA,YAES,GACT0gC,IAAArN,IACAnB,EAAAwO,EAAArN,EAAAhH,EAAAC,EAAAl4B,GACA,CACA4L,GAAA,EACA,OAKA,OAFA5L,EAAA,OAAAggB,GACAhgB,EAAA,OAAA88B,GACAlxB,EAyKA,SAAAy8B,GAAAnhC,GACA,OAAA47B,GAAAC,GAAA77B,EAAA1K,EAAA+vC,IAAArlC,EAAA,IAUA,SAAA4yB,GAAAn/B,GACA,OAAA0hC,GAAA1hC,EAAAwK,GAAA6zB,IAWA,SAAAa,GAAAl/B,GACA,OAAA0hC,GAAA1hC,EAAAm+B,GAAAF,IAUA,IAAA+P,GAAAnV,GAAA,SAAAtsB,GACA,OAAAssB,GAAA15B,IAAAoN,IADAskC,GAWA,SAAA/C,GAAAvhC,GAKA,IAJA,IAAA0E,EAAA1E,EAAA1N,KAAA,GACAwmB,EAAAyT,GAAA7nB,GACAvL,EAAAvF,GAAA1B,KAAAq6B,GAAA7nB,GAAAoU,EAAA3f,OAAA,EAEAA,KAAA,CACA,IAAAtD,EAAAijB,EAAA3f,GACAmsC,EAAAzvC,EAAAmK,KACA,SAAAslC,MAAAtlC,EACA,OAAAnK,EAAAvD,KAGA,OAAAoS,EAUA,SAAA49B,GAAAtiC,GAEA,OADApM,GAAA1B,KAAAg7B,GAAA,eAAAA,GAAAltB,GACAgoB,YAcA,SAAAyS,KACA,IAAA/1B,EAAAwoB,GAAAnU,aAEA,OADArU,MAAAqU,GAAA2f,GAAAh0B,EACAtM,UAAAe,OAAAuL,EAAAtM,UAAA,GAAAA,UAAA,IAAAsM,EAWA,SAAAmvB,GAAAzoB,EAAA9X,GACA,IAgYAN,EACAqB,EAjYAwB,EAAAuV,EAAAujB,SACA,OAiYA,WADAt6B,SADArB,EA/XAM,KAiYA,UAAAe,GAAA,UAAAA,GAAA,WAAAA,EACA,cAAArB,EACA,OAAAA,GAlYA6C,EAAA,iBAAAvC,EAAA,iBACAuC,EAAAuV,IAUA,SAAAkuB,GAAA7lC,GAIA,IAHA,IAAAiR,EAAAzG,GAAAxK,GACA0F,EAAAuL,EAAAvL,OAEAA,KAAA,CACA,IAAA7F,EAAAoR,EAAAvL,GACAnG,EAAAS,EAAAH,GAEAoR,EAAAvL,GAAA,CAAA7F,EAAAN,EAAAymC,GAAAzmC,IAEA,OAAA0R,EAWA,SAAAimB,GAAAl3B,EAAAH,GACA,IAAAN,EA7uJA,SAAAS,EAAAH,GACA,aAAAG,EAAA6B,EAAA7B,EAAAH,GA4uJAiyC,CAAA9xC,EAAAH,GACA,OAAAmlC,GAAAzlC,KAAAsC,EAqCA,IAAAw8B,GAAA5G,GAAA,SAAAz3B,GACA,aAAAA,EACA,IAEAA,EAAAhB,GAAAgB,GACAkT,GAAAukB,GAAAz3B,GAAA,SAAAu+B,GACA,OAAA3H,GAAAn4B,KAAAuB,EAAAu+B,OANAwT,GAiBA9T,GAAAxG,GAAA,SAAAz3B,GAEA,IADA,IAAAiR,EAAA,GACAjR,GACA+lB,GAAA9U,EAAAotB,GAAAr+B,IACAA,EAAA02B,GAAA12B,GAEA,OAAAiR,GANA8gC,GAgBAlU,GAAAgE,GA2EA,SAAAmQ,GAAAhyC,EAAAuhC,EAAA0Q,GAOA,IAJA,IAAA9nC,GAAA,EACAzE,GAHA67B,EAAAC,GAAAD,EAAAvhC,IAGA0F,OACAuL,GAAA,IAEA9G,EAAAzE,GAAA,CACA,IAAA7F,EAAA4hC,GAAAF,EAAAp3B,IACA,KAAA8G,EAAA,MAAAjR,GAAAiyC,EAAAjyC,EAAAH,IACA,MAEAG,IAAAH,GAEA,OAAAoR,KAAA9G,GAAAzE,EACAuL,KAEAvL,EAAA,MAAA1F,EAAA,EAAAA,EAAA0F,SACAwsC,GAAAxsC,IAAAm2B,GAAAh8B,EAAA6F,KACAi0B,GAAA35B,IAAAy7B,GAAAz7B,IA6BA,SAAAg+B,GAAAh+B,GACA,yBAAAA,EAAAsN,aAAAg4B,GAAAtlC,GAEA,GADA+5B,GAAArD,GAAA12B,IA8EA,SAAAihC,GAAA1hC,GACA,OAAAo6B,GAAAp6B,IAAAk8B,GAAAl8B,OACAu3B,IAAAv3B,KAAAu3B,KAWA,SAAA+E,GAAAt8B,EAAAmG,GACA,IAAA9E,SAAArB,EAGA,SAFAmG,EAAA,MAAAA,EAAA4W,EAAA5W,KAGA,UAAA9E,GACA,UAAAA,GAAA+f,GAAA7U,KAAAvM,KACAA,GAAA,GAAAA,EAAA,MAAAA,EAAAmG,EAaA,SAAAinC,GAAAptC,EAAA4K,EAAAnK,GACA,IAAA+C,GAAA/C,GACA,SAEA,IAAAY,SAAAuJ,EACA,mBAAAvJ,EACAglC,GAAA5lC,IAAA67B,GAAA1xB,EAAAnK,EAAA0F,QACA,UAAA9E,GAAAuJ,KAAAnK,IAEAs8B,GAAAt8B,EAAAmK,GAAA5K,GAaA,SAAAwmC,GAAAxmC,EAAAS,GACA,GAAA25B,GAAAp6B,GACA,SAEA,IAAAqB,SAAArB,EACA,kBAAAqB,GAAA,UAAAA,GAAA,WAAAA,GACA,MAAArB,IAAAqhC,GAAArhC,KAGAkgB,GAAA3T,KAAAvM,KAAAigB,GAAA1T,KAAAvM,IACA,MAAAS,GAAAT,KAAAP,GAAAgB,GAyBA,SAAAiuC,GAAA1hC,GACA,IAAAwhC,EAAAD,GAAAvhC,GACA41B,EAAA1I,GAAAsU,GAEA,sBAAA5L,KAAA4L,KAAAnU,GAAA15B,WACA,SAEA,GAAAqM,IAAA41B,EACA,SAEA,IAAA//B,EAAA4rC,GAAA7L,GACA,QAAA//B,GAAAmK,IAAAnK,EAAA,IA7SA4Q,IAAA6qB,GAAA,IAAA7qB,GAAA,IAAAF,YAAA,MAAAqL,IACAqa,IAAAqF,GAAA,IAAArF,KAAAlb,GACAmb,IAxzLA,oBAwzLAoF,GAAApF,GAAA0Z,YACAzZ,IAAAmF,GAAA,IAAAnF,KAAA9a,IACA+a,IAAAkF,GAAA,IAAAlF,KAAA3a,MACA6f,GAAA,SAAAt+B,GACA,IAAA0R,EAAA4wB,GAAAtiC,GACAi/B,EAAAvtB,GAAAwM,EAAAle,EAAA+N,YAAAzL,EACAuwC,EAAA5T,EAAAxF,GAAAwF,GAAA,GAEA,GAAA4T,EACA,OAAAA,GACA,KAAArZ,GAAA,OAAA5a,GACA,KAAA8a,GAAA,OAAA3b,EACA,KAAA4b,GAAA,MAp0LA,mBAq0LA,KAAAC,GAAA,OAAAvb,GACA,KAAAwb,GAAA,OAAApb,GAGA,OAAA/M,IA+SA,IAAAohC,GAAAtc,GAAA5qB,GAAAmnC,GASA,SAAAhN,GAAA/lC,GACA,IAAAi/B,EAAAj/B,KAAA+N,YAGA,OAAA/N,KAFA,mBAAAi/B,KAAAt+B,WAAA41B,IAaA,SAAAkQ,GAAAzmC,GACA,OAAAA,OAAAwD,GAAAxD,GAYA,SAAAumC,GAAAjmC,EAAAklC,GACA,gBAAA/kC,GACA,aAAAA,GAGAA,EAAAH,KAAAklC,IACAA,IAAAljC,GAAAhC,KAAAb,GAAAgB,KAsIA,SAAAooC,GAAA77B,EAAAwK,EAAAsd,GAEA,OADAtd,EAAAihB,GAAAjhB,IAAAlV,EAAA0K,EAAA7G,OAAA,EAAAqR,EAAA,GACA,WAMA,IALA,IAAA9Q,EAAAtB,UACAwF,GAAA,EACAzE,EAAAsyB,GAAA/xB,EAAAP,OAAAqR,EAAA,GACAsO,EAAA/gB,EAAAoB,KAEAyE,EAAAzE,GACA2f,EAAAlb,GAAAlE,EAAA8Q,EAAA5M,GAEAA,GAAA,EAEA,IADA,IAAAooC,EAAAjuC,EAAAyS,EAAA,KACA5M,EAAA4M,GACAw7B,EAAApoC,GAAAlE,EAAAkE,GAGA,OADAooC,EAAAx7B,GAAAsd,EAAAhP,GACA3gB,GAAA6H,EAAAjK,KAAAiwC,IAYA,SAAAxP,GAAA/iC,EAAAuhC,GACA,OAAAA,EAAA77B,OAAA,EAAA1F,EAAAshC,GAAAthC,EAAA4oC,GAAArH,EAAA,OAiCA,SAAA8E,GAAArmC,EAAAH,GACA,oBAAAA,GAAA,mBAAAG,EAAAH,KAIA,aAAAA,EAIA,OAAAG,EAAAH,GAiBA,IAAA2wC,GAAAgC,GAAAhK,IAUAh8B,GAAA8qB,IAAA,SAAA/qB,EAAA+yB,GACA,OAAA1b,GAAApX,WAAAD,EAAA+yB,IAWA6I,GAAAqK,GAAA/J,IAYA,SAAAgI,GAAAz3B,EAAAy5B,EAAAnV,GACA,IAAAz8B,EAAA4xC,EAAA,GACA,OAAAtK,GAAAnvB,EA1bA,SAAAnY,EAAA6xC,GACA,IAAAhtC,EAAAgtC,EAAAhtC,OACA,IAAAA,EACA,OAAA7E,EAEA,IAAA8zB,EAAAjvB,EAAA,EAGA,OAFAgtC,EAAA/d,IAAAjvB,EAAA,WAAAgtC,EAAA/d,GACA+d,IAAAtnC,KAAA1F,EAAA,YACA7E,EAAA+K,QAAAoU,GAAA,uBAA6C0yB,EAAA,UAkb7CC,CAAA9xC,EAqHA,SAAA6xC,EAAApV,GAOA,OANA9X,GAAA5I,EAAA,SAAAg0B,GACA,IAAArxC,EAAA,KAAAqxC,EAAA,GACAtT,EAAAsT,EAAA,KAAAr9B,GAAAm/B,EAAAnzC,IACAmzC,EAAAhrC,KAAAnI,KAGAmzC,EAAAp+B,OA5HAs+B,CAtjBA,SAAA/xC,GACA,IAAAi0B,EAAAj0B,EAAAi0B,MAAA7U,IACA,OAAA6U,IAAA,GAAA/pB,MAAAmV,IAAA,GAojBA2yB,CAAAhyC,GAAAy8B,KAYA,SAAAkV,GAAAjmC,GACA,IAAAxE,EAAA,EACA+qC,EAAA,EAEA,kBACA,IAAAC,EAAA5a,KACA6a,EAAA92B,GAAA62B,EAAAD,GAGA,GADAA,EAAAC,EACAC,EAAA,GACA,KAAAjrC,GAAAkU,EACA,OAAAtX,UAAA,QAGAoD,EAAA,EAEA,OAAAwE,EAAA7H,MAAA7C,EAAA8C,YAYA,SAAAs3B,GAAA5W,EAAA8O,GACA,IAAAhqB,GAAA,EACAzE,EAAA2f,EAAA3f,OACAivB,EAAAjvB,EAAA,EAGA,IADAyuB,MAAAtyB,EAAA6D,EAAAyuB,IACAhqB,EAAAgqB,GAAA,CACA,IAAA8e,EAAAlX,GAAA5xB,EAAAwqB,GACAp1B,EAAA8lB,EAAA4tB,GAEA5tB,EAAA4tB,GAAA5tB,EAAAlb,GACAkb,EAAAlb,GAAA5K,EAGA,OADA8lB,EAAA3f,OAAAyuB,EACA9O,EAUA,IAAAylB,GAvTA,SAAAv+B,GACA,IAAA0E,EAAAiiC,GAAA3mC,EAAA,SAAA1M,GAIA,OAHAynB,EAAA6M,OAAArZ,GACAwM,EAAAuT,QAEAh7B,IAGAynB,EAAArW,EAAAqW,MACA,OAAArW,EA8SAkiC,CAAA,SAAA3nC,GACA,IAAAyF,EAAA,GAOA,OANA,KAAAzF,EAAA4nC,WAAA,IACAniC,EAAAvJ,KAAA,IAEA8D,EAAAI,QAAA8T,GAAA,SAAAoV,EAAAoI,EAAAmW,EAAAC,GACAriC,EAAAvJ,KAAA2rC,EAAAC,EAAA1nC,QAAAwU,GAAA,MAAA8c,GAAApI,KAEA7jB,IAUA,SAAAwwB,GAAAliC,GACA,oBAAAA,GAAAqhC,GAAArhC,GACA,OAAAA,EAEA,IAAA0R,EAAA1R,EAAA,GACA,WAAA0R,GAAA,EAAA1R,IAAA8c,EAAA,KAAApL,EAUA,SAAA+nB,GAAAzsB,GACA,SAAAA,EAAA,CACA,IACA,OAAAypB,GAAAv3B,KAAA8N,GACS,MAAAzJ,IACT,IACA,OAAAyJ,EAAA,GACS,MAAAzJ,KAET,SA4BA,SAAAg3B,GAAA9gB,GACA,GAAAA,aAAA4gB,GACA,OAAA5gB,EAAAu6B,QAEA,IAAAtiC,EAAA,IAAA4oB,GAAA7gB,EAAAkhB,YAAAlhB,EAAAohB,WAIA,OAHAnpB,EAAAkpB,YAAA+B,GAAAljB,EAAAmhB,aACAlpB,EAAAopB,UAAArhB,EAAAqhB,UACAppB,EAAAqpB,WAAAthB,EAAAshB,WACArpB,EAsIA,IAAAuiC,GAAAtL,GAAA,SAAA7iB,EAAA3R,GACA,OAAA8yB,GAAAnhB,GACAka,GAAAla,EAAAyb,GAAAptB,EAAA,EAAA8yB,IAAA,IACA,KA6BAiN,GAAAvL,GAAA,SAAA7iB,EAAA3R,GACA,IAAA4R,EAAA0d,GAAAtvB,GAIA,OAHA8yB,GAAAlhB,KACAA,EAAAzjB,GAEA2kC,GAAAnhB,GACAka,GAAAla,EAAAyb,GAAAptB,EAAA,EAAA8yB,IAAA,GAAAQ,GAAA1hB,EAAA,IACA,KA0BAouB,GAAAxL,GAAA,SAAA7iB,EAAA3R,GACA,IAAAmS,EAAAmd,GAAAtvB,GAIA,OAHA8yB,GAAA3gB,KACAA,EAAAhkB,GAEA2kC,GAAAnhB,GACAka,GAAAla,EAAAyb,GAAAptB,EAAA,EAAA8yB,IAAA,GAAA3kC,EAAAgkB,GACA,KAsOA,SAAAxO,GAAAgO,EAAAjO,EAAAmP,GACA,IAAA7gB,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,IAAAA,EACA,SAEA,IAAAyE,EAAA,MAAAoc,EAAA,EAAAljB,GAAAkjB,GAIA,OAHApc,EAAA,IACAA,EAAA6tB,GAAAtyB,EAAAyE,EAAA,IAEAmc,GAAAjB,EAAA2hB,GAAA5vB,EAAA,GAAAjN,GAsCA,SAAAwpC,GAAAtuB,EAAAjO,EAAAmP,GACA,IAAA7gB,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,IAAAA,EACA,SAEA,IAAAyE,EAAAzE,EAAA,EAOA,OANA6gB,IAAA1kB,IACAsI,EAAA9G,GAAAkjB,GACApc,EAAAoc,EAAA,EACAyR,GAAAtyB,EAAAyE,EAAA,GACA+tB,GAAA/tB,EAAAzE,EAAA,IAEA4gB,GAAAjB,EAAA2hB,GAAA5vB,EAAA,GAAAjN,GAAA,GAiBA,SAAAynC,GAAAvsB,GAEA,OADA,MAAAA,KAAA3f,OACAo7B,GAAAzb,EAAA,MAgGA,SAAAuuB,GAAAvuB,GACA,OAAAA,KAAA3f,OAAA2f,EAAA,GAAAxjB,EA0EA,IAAAgyC,GAAA3L,GAAA,SAAA3F,GACA,IAAAuR,EAAAhuB,GAAAyc,EAAAqI,IACA,OAAAkJ,EAAApuC,QAAAouC,EAAA,KAAAvR,EAAA,GACAD,GAAAwR,GACA,KA0BAC,GAAA7L,GAAA,SAAA3F,GACA,IAAAjd,EAAA0d,GAAAT,GACAuR,EAAAhuB,GAAAyc,EAAAqI,IAOA,OALAtlB,IAAA0d,GAAA8Q,GACAxuB,EAAAzjB,EAEAiyC,EAAA1pC,MAEA0pC,EAAApuC,QAAAouC,EAAA,KAAAvR,EAAA,GACAD,GAAAwR,EAAA9M,GAAA1hB,EAAA,IACA,KAwBA0uB,GAAA9L,GAAA,SAAA3F,GACA,IAAA1c,EAAAmd,GAAAT,GACAuR,EAAAhuB,GAAAyc,EAAAqI,IAMA,OAJA/kB,EAAA,mBAAAA,IAAAhkB,IAEAiyC,EAAA1pC,MAEA0pC,EAAApuC,QAAAouC,EAAA,KAAAvR,EAAA,GACAD,GAAAwR,EAAAjyC,EAAAgkB,GACA,KAoCA,SAAAmd,GAAA3d,GACA,IAAA3f,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,EAAA2f,EAAA3f,EAAA,GAAA7D,EAuFA,IAAAoyC,GAAA/L,GAAAgM,IAsBA,SAAAA,GAAA7uB,EAAA3R,GACA,OAAA2R,KAAA3f,QAAAgO,KAAAhO,OACAkiC,GAAAviB,EAAA3R,GACA2R,EAqFA,IAAA8uB,GAAAzG,GAAA,SAAAroB,EAAAyiB,GACA,IAAApiC,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACAuL,EAAA8rB,GAAA1X,EAAAyiB,GAMA,OAJAD,GAAAxiB,EAAAS,GAAAgiB,EAAA,SAAA39B,GACA,OAAA0xB,GAAA1xB,EAAAzE,IAAAyE,MACOmK,KAAAizB,KAEPt2B,IA2EA,SAAA2G,GAAAyN,GACA,aAAAA,IAAAkT,GAAA95B,KAAA4mB,GAkaA,IAAA+uB,GAAAlM,GAAA,SAAA3F,GACA,OAAAyH,GAAAlJ,GAAAyB,EAAA,EAAAiE,IAAA,MA0BA6N,GAAAnM,GAAA,SAAA3F,GACA,IAAAjd,EAAA0d,GAAAT,GAIA,OAHAiE,GAAAlhB,KACAA,EAAAzjB,GAEAmoC,GAAAlJ,GAAAyB,EAAA,EAAAiE,IAAA,GAAAQ,GAAA1hB,EAAA,MAwBAgvB,GAAApM,GAAA,SAAA3F,GACA,IAAA1c,EAAAmd,GAAAT,GAEA,OADA1c,EAAA,mBAAAA,IAAAhkB,EACAmoC,GAAAlJ,GAAAyB,EAAA,EAAAiE,IAAA,GAAA3kC,EAAAgkB,KAgGA,SAAA0uB,GAAAlvB,GACA,IAAAA,MAAA3f,OACA,SAEA,IAAAA,EAAA,EAOA,OANA2f,EAAAnS,GAAAmS,EAAA,SAAAmvB,GACA,GAAAhO,GAAAgO,GAEA,OADA9uC,EAAAsyB,GAAAwc,EAAA9uC,WACA,IAGAuhB,GAAAvhB,EAAA,SAAAyE,GACA,OAAA2b,GAAAT,EAAAa,GAAA/b,MAyBA,SAAAsqC,GAAApvB,EAAAC,GACA,IAAAD,MAAA3f,OACA,SAEA,IAAAuL,EAAAsjC,GAAAlvB,GACA,aAAAC,EACArU,EAEA6U,GAAA7U,EAAA,SAAAujC,GACA,OAAA9vC,GAAA4gB,EAAAzjB,EAAA2yC,KAwBA,IAAAE,GAAAxM,GAAA,SAAA7iB,EAAA3R,GACA,OAAA8yB,GAAAnhB,GACAka,GAAAla,EAAA3R,GACA,KAqBAihC,GAAAzM,GAAA,SAAA3F,GACA,OAAAiI,GAAAt3B,GAAAqvB,EAAAiE,OA0BAoO,GAAA1M,GAAA,SAAA3F,GACA,IAAAjd,EAAA0d,GAAAT,GAIA,OAHAiE,GAAAlhB,KACAA,EAAAzjB,GAEA2oC,GAAAt3B,GAAAqvB,EAAAiE,IAAAQ,GAAA1hB,EAAA,MAwBAuvB,GAAA3M,GAAA,SAAA3F,GACA,IAAA1c,EAAAmd,GAAAT,GAEA,OADA1c,EAAA,mBAAAA,IAAAhkB,EACA2oC,GAAAt3B,GAAAqvB,EAAAiE,IAAA3kC,EAAAgkB,KAmBAivB,GAAA5M,GAAAqM,IA6DA,IAAAQ,GAAA7M,GAAA,SAAA3F,GACA,IAAA78B,EAAA68B,EAAA78B,OACA4f,EAAA5f,EAAA,EAAA68B,EAAA78B,EAAA,GAAA7D,EAGA,OADAyjB,EAAA,mBAAAA,GAAAid,EAAAn4B,MAAAkb,GAAAzjB,EACA4yC,GAAAlS,EAAAjd,KAkCA,SAAA0vB,GAAAz1C,GACA,IAAA0R,EAAAwoB,GAAAl6B,GAEA,OADA0R,EAAAmpB,WAAA,EACAnpB,EAsDA,SAAA48B,GAAAtuC,EAAA01C,GACA,OAAAA,EAAA11C,GAmBA,IAAA21C,GAAAxH,GAAA,SAAA1Q,GACA,IAAAt3B,EAAAs3B,EAAAt3B,OACAqR,EAAArR,EAAAs3B,EAAA,KACAz9B,EAAA+C,KAAA43B,YACA+a,EAAA,SAAAj1C,GAA0C,OAAA+8B,GAAA/8B,EAAAg9B,IAE1C,QAAAt3B,EAAA,GAAApD,KAAA63B,YAAAz0B,SACAnG,aAAAq6B,IAAAiC,GAAA9kB,KAGAxX,IAAA8E,MAAA0S,MAAArR,EAAA,OACAy0B,YAAAzyB,KAAA,CACA6E,KAAAshC,GACA5nC,KAAA,CAAAgvC,GACA9vB,QAAAtjB,IAEA,IAAAg4B,GAAAt6B,EAAA+C,KAAA83B,WAAAyT,KAAA,SAAAxoB,GAIA,OAHA3f,IAAA2f,EAAA3f,QACA2f,EAAA3d,KAAA7F,GAEAwjB,KAZA/iB,KAAAurC,KAAAoH,KA+PA,IAAAE,GAAA9I,GAAA,SAAAp7B,EAAA1R,EAAAM,GACAM,GAAA1B,KAAAwS,EAAApR,KACAoR,EAAApR,GAEA08B,GAAAtrB,EAAApR,EAAA,KAmIA,IAAAsX,GAAAo2B,GAAAl2B,IAqBA+9B,GAAA7H,GAAAoG,IA2GA,SAAAr8B,GAAA8O,EAAAd,GAEA,OADAqU,GAAAvT,GAAAZ,GAAAoX,IACAxW,EAAA4gB,GAAA1hB,EAAA,IAuBA,SAAA+vB,GAAAjvB,EAAAd,GAEA,OADAqU,GAAAvT,GAAAX,GAAA+a,IACApa,EAAA4gB,GAAA1hB,EAAA,IA0BA,IAAAgwB,GAAAjJ,GAAA,SAAAp7B,EAAA1R,EAAAM,GACAM,GAAA1B,KAAAwS,EAAApR,GACAoR,EAAApR,GAAA6H,KAAAnI,GAEAg9B,GAAAtrB,EAAApR,EAAA,CAAAN,MAsEA,IAAAg2C,GAAArN,GAAA,SAAA9hB,EAAAmb,EAAAt7B,GACA,IAAAkE,GAAA,EACA2zB,EAAA,mBAAAyD,EACAtwB,EAAA20B,GAAAxf,GAAA9hB,EAAA8hB,EAAA1gB,QAAA,GAKA,OAHAk3B,GAAAxW,EAAA,SAAA7mB,GACA0R,IAAA9G,GAAA2zB,EAAAp5B,GAAA68B,EAAAhiC,EAAA0G,GAAA68B,GAAAvjC,EAAAgiC,EAAAt7B,KAEAgL,IA+BAukC,GAAAnJ,GAAA,SAAAp7B,EAAA1R,EAAAM,GACA08B,GAAAtrB,EAAApR,EAAAN,KA6CA,SAAAoY,GAAAyO,EAAAd,GAEA,OADAqU,GAAAvT,GAAAN,GAAA6f,IACAvf,EAAA4gB,GAAA1hB,EAAA,IAkFA,IAAAmwB,GAAApJ,GAAA,SAAAp7B,EAAA1R,EAAAM,GACAoR,EAAApR,EAAA,KAAA6H,KAAAnI,IACK,WAAc,gBAmSnB,IAAAm2C,GAAAxN,GAAA,SAAA9hB,EAAA0gB,GACA,SAAA1gB,EACA,SAEA,IAAA1gB,EAAAohC,EAAAphC,OAMA,OALAA,EAAA,GAAAinC,GAAAvmB,EAAA0gB,EAAA,GAAAA,EAAA,IACAA,EAAA,GACOphC,EAAA,GAAAinC,GAAA7F,EAAA,GAAAA,EAAA,GAAAA,EAAA,MACPA,EAAA,CAAAA,EAAA,KAEAD,GAAAzgB,EAAA0a,GAAAgG,EAAA,SAqBA1iC,GAAAizB,IAAA,WACA,OAAAzT,GAAA+R,KAAAvxB,OA0DA,SAAAmqC,GAAAhiC,EAAAxM,EAAA2sC,GAGA,OAFA3sC,EAAA2sC,EAAA7qC,EAAA9B,EACAA,EAAAwM,GAAA,MAAAxM,EAAAwM,EAAA7G,OAAA3F,EACAixC,GAAAzkC,EAAAqP,EAAA/Z,QAAA9B,GAoBA,SAAA41C,GAAA51C,EAAAwM,GACA,IAAA0E,EACA,sBAAA1E,EACA,UAAAtJ,GAAA2X,GAGA,OADA7a,EAAAsD,GAAAtD,GACA,WAOA,QANAA,EAAA,IACAkR,EAAA1E,EAAA7H,MAAApC,KAAAqC,YAEA5E,GAAA,IACAwM,EAAA1K,GAEAoP,GAuCA,IAAAnR,GAAAooC,GAAA,SAAA37B,EAAA4Y,EAAAmmB,GACA,IAAAhO,EAAAjiB,EACA,GAAAiwB,EAAA5lC,OAAA,CACA,IAAA6lC,EAAAjX,GAAAgX,EAAAuD,GAAA/uC,KACAw9B,GAAA5hB,EAEA,OAAAs1B,GAAAzkC,EAAA+wB,EAAAnY,EAAAmmB,EAAAC,KAgDAqK,GAAA1N,GAAA,SAAAloC,EAAAH,EAAAyrC,GACA,IAAAhO,EAAAjiB,EAAAC,EACA,GAAAgwB,EAAA5lC,OAAA,CACA,IAAA6lC,EAAAjX,GAAAgX,EAAAuD,GAAA+G,KACAtY,GAAA5hB,EAEA,OAAAs1B,GAAAnxC,EAAAy9B,EAAAt9B,EAAAsrC,EAAAC,KAsJA,SAAAsK,GAAAtpC,EAAA+yB,EAAAwW,GACA,IAAAC,EACAC,EACAC,EACAhlC,EACAilC,EACAC,EACAC,EAAA,EACAC,GAAA,EACAC,GAAA,EACAtJ,GAAA,EAEA,sBAAAzgC,EACA,UAAAtJ,GAAA2X,GAUA,SAAA27B,EAAAzxC,GACA,IAAAmB,EAAA8vC,EACA5wB,EAAA6wB,EAKA,OAHAD,EAAAC,EAAAn0C,EACAu0C,EAAAtxC,EACAmM,EAAA1E,EAAA7H,MAAAygB,EAAAlf,GAuBA,SAAAuwC,EAAA1xC,GACA,IAAA2xC,EAAA3xC,EAAAqxC,EAMA,OAAAA,IAAAt0C,GAAA40C,GAAAnX,GACAmX,EAAA,GAAAH,GANAxxC,EAAAsxC,GAMAH,EAGA,SAAAS,IACA,IAAA5xC,EAAAV,KACA,GAAAoyC,EAAA1xC,GACA,OAAA6xC,EAAA7xC,GAGAoxC,EAAA1pC,GAAAkqC,EA3BA,SAAA5xC,GACA,IAEA8xC,EAAAtX,GAFAx6B,EAAAqxC,GAIA,OAAAG,EACApe,GAAA0e,EAAAX,GAJAnxC,EAAAsxC,IAKAQ,EAoBAC,CAAA/xC,IAGA,SAAA6xC,EAAA7xC,GAKA,OAJAoxC,EAAAr0C,EAIAmrC,GAAA+I,EACAQ,EAAAzxC,IAEAixC,EAAAC,EAAAn0C,EACAoP,GAeA,SAAA6lC,IACA,IAAAhyC,EAAAV,KACA2yC,EAAAP,EAAA1xC,GAMA,GAJAixC,EAAApxC,UACAqxC,EAAA1zC,KACA6zC,EAAArxC,EAEAiyC,EAAA,CACA,GAAAb,IAAAr0C,EACA,OAzEA,SAAAiD,GAMA,OAJAsxC,EAAAtxC,EAEAoxC,EAAA1pC,GAAAkqC,EAAApX,GAEA+W,EAAAE,EAAAzxC,GAAAmM,EAmEA+lC,CAAAb,GAEA,GAAAG,EAIA,OAFAlf,GAAA8e,GACAA,EAAA1pC,GAAAkqC,EAAApX,GACAiX,EAAAJ,GAMA,OAHAD,IAAAr0C,IACAq0C,EAAA1pC,GAAAkqC,EAAApX,IAEAruB,EAIA,OA3GAquB,EAAA8Q,GAAA9Q,IAAA,EACAv8B,GAAA+yC,KACAO,IAAAP,EAAAO,QAEAJ,GADAK,EAAA,YAAAR,GACA9d,GAAAoY,GAAA0F,EAAAG,UAAA,EAAA3W,GAAA2W,EACAjJ,EAAA,aAAA8I,MAAA9I,YAoGA8J,EAAAG,OApCA,WACAf,IAAAr0C,GACAu1B,GAAA8e,GAEAE,EAAA,EACAL,EAAAI,EAAAH,EAAAE,EAAAr0C,GAgCAi1C,EAAAI,MA7BA,WACA,OAAAhB,IAAAr0C,EAAAoP,EAAA0lC,EAAAvyC,OA6BA0yC,EAqBA,IAAAK,GAAAjP,GAAA,SAAA37B,EAAAtG,GACA,OAAAo5B,GAAA9yB,EAAA,EAAAtG,KAsBAmxC,GAAAlP,GAAA,SAAA37B,EAAA+yB,EAAAr5B,GACA,OAAAo5B,GAAA9yB,EAAA6jC,GAAA9Q,IAAA,EAAAr5B,KAqEA,SAAAitC,GAAA3mC,EAAA8qC,GACA,sBAAA9qC,GAAA,MAAA8qC,GAAA,mBAAAA,EACA,UAAAp0C,GAAA2X,GAEA,IAAA08B,EAAA,WACA,IAAArxC,EAAAtB,UACA9E,EAAAw3C,IAAA3yC,MAAApC,KAAA2D,KAAA,GACAqhB,EAAAgwB,EAAAhwB,MAEA,GAAAA,EAAA3c,IAAA9K,GACA,OAAAynB,EAAAnoB,IAAAU,GAEA,IAAAoR,EAAA1E,EAAA7H,MAAApC,KAAA2D,GAEA,OADAqxC,EAAAhwB,QAAAxe,IAAAjJ,EAAAoR,IAAAqW,EACArW,GAGA,OADAqmC,EAAAhwB,MAAA,IAAA4rB,GAAAqE,OAAAvc,IACAsc,EA0BA,SAAAE,GAAApgC,GACA,sBAAAA,EACA,UAAAnU,GAAA2X,GAEA,kBACA,IAAA3U,EAAAtB,UACA,OAAAsB,EAAAP,QACA,cAAA0R,EAAA3Y,KAAA6D,MACA,cAAA8U,EAAA3Y,KAAA6D,KAAA2D,EAAA,IACA,cAAAmR,EAAA3Y,KAAA6D,KAAA2D,EAAA,GAAAA,EAAA,IACA,cAAAmR,EAAA3Y,KAAA6D,KAAA2D,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEA,OAAAmR,EAAA1S,MAAApC,KAAA2D,IAlCAitC,GAAAqE,MAAAvc,GA2FA,IAAAyc,GAAA1M,GAAA,SAAAx+B,EAAAmrC,GAKA,IAAAC,GAJAD,EAAA,GAAAA,EAAAhyC,QAAAi0B,GAAA+d,EAAA,IACA5xB,GAAA4xB,EAAA,GAAAxwB,GAAA8f,OACAlhB,GAAAgb,GAAA4W,EAAA,GAAAxwB,GAAA8f,QAEAthC,OACA,OAAAwiC,GAAA,SAAAjiC,GAIA,IAHA,IAAAkE,GAAA,EACAzE,EAAAwyB,GAAAjyB,EAAAP,OAAAiyC,KAEAxtC,EAAAzE,GACAO,EAAAkE,GAAAutC,EAAAvtC,GAAA1L,KAAA6D,KAAA2D,EAAAkE,IAEA,OAAAzF,GAAA6H,EAAAjK,KAAA2D,OAqCA2xC,GAAA1P,GAAA,SAAA37B,EAAA++B,GACA,IAAAC,EAAAjX,GAAAgX,EAAAuD,GAAA+I,KACA,OAAA5G,GAAAzkC,EAAAmP,EAAA7Z,EAAAypC,EAAAC,KAmCAsM,GAAA3P,GAAA,SAAA37B,EAAA++B,GACA,IAAAC,EAAAjX,GAAAgX,EAAAuD,GAAAgJ,KACA,OAAA7G,GAAAzkC,EAAAoP,EAAA9Z,EAAAypC,EAAAC,KAyBAuM,GAAApK,GAAA,SAAAnhC,EAAAu7B,GACA,OAAAkJ,GAAAzkC,EAAAsP,EAAAha,MAAAimC,KAiaA,SAAAxL,GAAA/8B,EAAA4iC,GACA,OAAA5iC,IAAA4iC,GAAA5iC,MAAA4iC,KA0BA,IAAA4V,GAAA5H,GAAAjO,IAyBA8V,GAAA7H,GAAA,SAAA5wC,EAAA4iC,GACA,OAAA5iC,GAAA4iC,IAqBA1G,GAAAwH,GAAA,WAAkD,OAAAt+B,UAAlD,IAAsEs+B,GAAA,SAAA1jC,GACtE,OAAAm6B,GAAAn6B,IAAAY,GAAA1B,KAAAc,EAAA,YACAq3B,GAAAn4B,KAAAc,EAAA,WA0BAo6B,GAAAr1B,EAAAq1B,QAmBAnV,GAAAD,GAAA2C,GAAA3C,IAn4PA,SAAAhlB,GACA,OAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAA2e,IA65PA,SAAA0nB,GAAArmC,GACA,aAAAA,GAAA2yC,GAAA3yC,EAAAmG,UAAAyF,GAAA5L,GA4BA,SAAAinC,GAAAjnC,GACA,OAAAm6B,GAAAn6B,IAAAqmC,GAAArmC,GA0CA,IAAAo4B,GAAAD,IAAA4a,GAmBA5tB,GAAAD,GAAAyC,GAAAzC,IA9+PA,SAAAllB,GACA,OAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAA0d,GAqpQA,SAAAg7B,GAAA14C,GACA,IAAAm6B,GAAAn6B,GACA,SAEA,IAAAkM,EAAAo2B,GAAAtiC,GACA,OAAAkM,GAAA0R,GAAA1R,GAAAyR,GACA,iBAAA3d,EAAA2F,SAAA,iBAAA3F,EAAAV,OAAA4nC,GAAAlnC,GAkDA,SAAA4L,GAAA5L,GACA,IAAAwD,GAAAxD,GACA,SAIA,IAAAkM,EAAAo2B,GAAAtiC,GACA,OAAAkM,GAAA2R,GAAA3R,GAAA4R,GAAA5R,GAAAsR,GAAAtR,GAAAiS,GA6BA,SAAAw6B,GAAA34C,GACA,uBAAAA,MAAA8D,GAAA9D,GA6BA,SAAA2yC,GAAA3yC,GACA,uBAAAA,GACAA,GAAA,GAAAA,EAAA,MAAAA,GAAA+c,EA4BA,SAAAvZ,GAAAxD,GACA,IAAAqB,SAAArB,EACA,aAAAA,IAAA,UAAAqB,GAAA,YAAAA,GA2BA,SAAA84B,GAAAn6B,GACA,aAAAA,GAAA,iBAAAA,EAoBA,IAAAqlB,GAAAD,GAAAuC,GAAAvC,IAlwQA,SAAAplB,GACA,OAAAm6B,GAAAn6B,IAAAs+B,GAAAt+B,IAAA+d,GAm9QA,SAAA66B,GAAA54C,GACA,uBAAAA,GACAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAge,EA+BA,SAAAkpB,GAAAlnC,GACA,IAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAke,EACA,SAEA,IAAA5G,EAAA6f,GAAAn3B,GACA,UAAAsX,EACA,SAEA,IAAA2nB,EAAAr+B,GAAA1B,KAAAoY,EAAA,gBAAAA,EAAAvJ,YACA,yBAAAkxB,mBACAxI,GAAAv3B,KAAA+/B,IAAAnI,GAoBA,IAAAvR,GAAAD,GAAAqC,GAAArC,IAl8QA,SAAAtlB,GACA,OAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAoe,IAm/QA,IAAAqH,GAAAD,GAAAmC,GAAAnC,IAz+QA,SAAAxlB,GACA,OAAAm6B,GAAAn6B,IAAAs+B,GAAAt+B,IAAAqe,IA2/QA,SAAAw6B,GAAA74C,GACA,uBAAAA,IACAo6B,GAAAp6B,IAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAse,GAoBA,SAAA+iB,GAAArhC,GACA,uBAAAA,GACAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAue,GAoBA,IAAAoH,GAAAD,GAAAiC,GAAAjC,IA7hRA,SAAA1lB,GACA,OAAAm6B,GAAAn6B,IACA2yC,GAAA3yC,EAAAmG,WAAAmd,GAAAgf,GAAAtiC,KAmnRA,IAAA84C,GAAAlI,GAAAzK,IAyBA4S,GAAAnI,GAAA,SAAA5wC,EAAA4iC,GACA,OAAA5iC,GAAA4iC,IA0BA,SAAAoW,GAAAh5C,GACA,IAAAA,EACA,SAEA,GAAAqmC,GAAArmC,GACA,OAAA64C,GAAA74C,GAAAs1B,GAAAt1B,GAAA28B,GAAA38B,GAEA,GAAAy3B,IAAAz3B,EAAAy3B,IACA,OA95VA,SAAAjqB,GAIA,IAHA,IAAA3K,EACA6O,EAAA,KAEA7O,EAAA2K,EAAAC,QAAAC,MACAgE,EAAAvJ,KAAAtF,EAAA7C,OAEA,OAAA0R,EAu5VAunC,CAAAj5C,EAAAy3B,OAEA,IAAAvrB,EAAAoyB,GAAAt+B,GAGA,OAFAkM,GAAA6R,EAAA4W,GAAAzoB,GAAAmS,GAAA4W,GAAA9gB,IAEAnU,GA0BA,SAAA0wC,GAAA1wC,GACA,OAAAA,GAGAA,EAAA6wC,GAAA7wC,MACA8c,GAAA9c,KAAA8c,GACA9c,EAAA,QACAgd,EAEAhd,OAAA,EAPA,IAAAA,IAAA,EAoCA,SAAA8D,GAAA9D,GACA,IAAA0R,EAAAg/B,GAAA1wC,GACAk5C,EAAAxnC,EAAA,EAEA,OAAAA,KAAAwnC,EAAAxnC,EAAAwnC,EAAAxnC,EAAA,EA8BA,SAAAb,GAAA7Q,GACA,OAAAA,EAAA48B,GAAA94B,GAAA9D,GAAA,EAAAkd,GAAA,EA0BA,SAAA2zB,GAAA7wC,GACA,oBAAAA,EACA,OAAAA,EAEA,GAAAqhC,GAAArhC,GACA,OAAAid,EAEA,GAAAzZ,GAAAxD,GAAA,CACA,IAAA4iC,EAAA,mBAAA5iC,EAAAg6B,QAAAh6B,EAAAg6B,UAAAh6B,EACAA,EAAAwD,GAAAo/B,KAAA,GAAAA,EAEA,oBAAA5iC,EACA,WAAAA,OAEAA,IAAAqM,QAAAiU,GAAA,IACA,IAAA64B,EAAAl4B,GAAA1U,KAAAvM,GACA,OAAAm5C,GAAAh4B,GAAA5U,KAAAvM,GACAikB,GAAAjkB,EAAA8E,MAAA,GAAAq0C,EAAA,KACAn4B,GAAAzU,KAAAvM,GAAAid,GAAAjd,EA2BA,SAAAmnC,GAAAnnC,GACA,OAAAu9B,GAAAv9B,EAAA4+B,GAAA5+B,IAsDA,SAAA2R,GAAA3R,GACA,aAAAA,EAAA,GAAAwqC,GAAAxqC,GAqCA,IAAAo5C,GAAApM,GAAA,SAAAvsC,EAAAa,GACA,GAAAykC,GAAAzkC,IAAA+kC,GAAA/kC,GACAi8B,GAAAj8B,EAAA2J,GAAA3J,GAAAb,QAGA,QAAAH,KAAAgB,EACAV,GAAA1B,KAAAoC,EAAAhB,IACA28B,GAAAx8B,EAAAH,EAAAgB,EAAAhB,MAoCA+4C,GAAArM,GAAA,SAAAvsC,EAAAa,GACAi8B,GAAAj8B,EAAAs9B,GAAAt9B,GAAAb,KAgCA64C,GAAAtM,GAAA,SAAAvsC,EAAAa,EAAAslC,EAAA5I,GACAT,GAAAj8B,EAAAs9B,GAAAt9B,GAAAb,EAAAu9B,KA+BAub,GAAAvM,GAAA,SAAAvsC,EAAAa,EAAAslC,EAAA5I,GACAT,GAAAj8B,EAAA2J,GAAA3J,GAAAb,EAAAu9B,KAoBAwb,GAAArL,GAAA3Q,IA8DA,IAAAtH,GAAAyS,GAAA,SAAAloC,EAAAysC,GACAzsC,EAAAhB,GAAAgB,GAEA,IAAAmK,GAAA,EACAzE,EAAA+mC,EAAA/mC,OACAgnC,EAAAhnC,EAAA,EAAA+mC,EAAA,GAAA5qC,EAMA,IAJA6qC,GAAAC,GAAAF,EAAA,GAAAA,EAAA,GAAAC,KACAhnC,EAAA,KAGAyE,EAAAzE,GAMA,IALA,IAAA7E,EAAA4rC,EAAAtiC,GACAid,EAAA+W,GAAAt9B,GACAm4C,GAAA,EACAC,EAAA7xB,EAAA1hB,SAEAszC,EAAAC,GAAA,CACA,IAAAp5C,EAAAunB,EAAA4xB,GACAz5C,EAAAS,EAAAH,IAEAN,IAAAsC,GACAy6B,GAAA/8B,EAAAu2B,GAAAj2B,MAAAM,GAAA1B,KAAAuB,EAAAH,MACAG,EAAAH,GAAAgB,EAAAhB,IAKA,OAAAG,IAsBAk5C,GAAAhR,GAAA,SAAAjiC,GAEA,OADAA,EAAAyB,KAAA7F,EAAA4vC,IACA/sC,GAAAy0C,GAAAt3C,EAAAoE,KAgSA,SAAA9G,GAAAa,EAAAuhC,EAAAmO,GACA,IAAAz+B,EAAA,MAAAjR,EAAA6B,EAAAy/B,GAAAthC,EAAAuhC,GACA,OAAAtwB,IAAApP,EAAA6tC,EAAAz+B,EA4DA,SAAAg1B,GAAAjmC,EAAAuhC,GACA,aAAAvhC,GAAAgyC,GAAAhyC,EAAAuhC,EAAAc,IAqBA,IAAA+W,GAAA/J,GAAA,SAAAp+B,EAAA1R,EAAAM,GACA,MAAAN,GACA,mBAAAA,EAAA2R,WACA3R,EAAA62B,GAAA33B,KAAAc,IAGA0R,EAAA1R,GAAAM,GACK6oC,GAAAxD,KA4BLmU,GAAAhK,GAAA,SAAAp+B,EAAA1R,EAAAM,GACA,MAAAN,GACA,mBAAAA,EAAA2R,WACA3R,EAAA62B,GAAA33B,KAAAc,IAGAY,GAAA1B,KAAAwS,EAAA1R,GACA0R,EAAA1R,GAAAmI,KAAA7H,GAEAoR,EAAA1R,GAAA,CAAAM,IAEKmnC,IAoBLsS,GAAApR,GAAApF,IA8BA,SAAAt4B,GAAAxK,GACA,OAAA4lC,GAAA5lC,GAAAq7B,GAAAr7B,GAAAqlC,GAAArlC,GA0BA,SAAAm+B,GAAAn+B,GACA,OAAA4lC,GAAA5lC,GAAAq7B,GAAAr7B,GAAA,GAAAulC,GAAAvlC,GAuGA,IAAAu5C,GAAAhN,GAAA,SAAAvsC,EAAAa,EAAAslC,GACAD,GAAAlmC,EAAAa,EAAAslC,KAkCAgT,GAAA5M,GAAA,SAAAvsC,EAAAa,EAAAslC,EAAA5I,GACA2I,GAAAlmC,EAAAa,EAAAslC,EAAA5I,KAuBAic,GAAA9L,GAAA,SAAA1tC,EAAAg9B,GACA,IAAA/rB,EAAA,GACA,SAAAjR,EACA,OAAAiR,EAEA,IAAAusB,GAAA,EACAR,EAAAlX,GAAAkX,EAAA,SAAAuE,GAGA,OAFAA,EAAAC,GAAAD,EAAAvhC,GACAw9B,MAAA+D,EAAA77B,OAAA,GACA67B,IAEAzE,GAAA98B,EAAAk/B,GAAAl/B,GAAAiR,GACAusB,IACAvsB,EAAAosB,GAAApsB,EAAA+J,EAAAC,EAAAC,EAAAw2B,KAGA,IADA,IAAAhsC,EAAAs3B,EAAAt3B,OACAA,KACAsiC,GAAA/2B,EAAA+rB,EAAAt3B,IAEA,OAAAuL,IA4CA,IAAAykB,GAAAgY,GAAA,SAAA1tC,EAAAg9B,GACA,aAAAh9B,EAAA,GAtlTA,SAAAA,EAAAg9B,GACA,OAAA0K,GAAA1nC,EAAAg9B,EAAA,SAAAz9B,EAAAgiC,GACA,OAAA0E,GAAAjmC,EAAAuhC,KAolTgCkY,CAAAz5C,EAAAg9B,KAqBhC,SAAA0c,GAAA15C,EAAAoX,GACA,SAAApX,EACA,SAEA,IAAAonB,EAAAtB,GAAAoZ,GAAAl/B,GAAA,SAAA25C,GACA,OAAAA,KAGA,OADAviC,EAAA4vB,GAAA5vB,GACAswB,GAAA1nC,EAAAonB,EAAA,SAAA7nB,EAAAgiC,GACA,OAAAnqB,EAAA7X,EAAAgiC,EAAA,MA4IA,IAAAqY,GAAA9I,GAAAtmC,IA0BAqvC,GAAA/I,GAAA3S,IA4KA,SAAAzqB,GAAA1T,GACA,aAAAA,EAAA,GAAAmnB,GAAAnnB,EAAAwK,GAAAxK,IAkNA,IAAA85C,GAAA7M,GAAA,SAAAh8B,EAAA8oC,EAAA5vC,GAEA,OADA4vC,IAAAhuC,cACAkF,GAAA9G,EAAA6vC,GAAAD,QAkBA,SAAAC,GAAAxuC,GACA,OAAAyuC,GAAA/oC,GAAA1F,GAAAO,eAqBA,SAAAqhC,GAAA5hC,GAEA,OADAA,EAAA0F,GAAA1F,KACAA,EAAAI,QAAAgV,GAAA+G,IAAA/b,QAAA0W,GAAA,IAsHA,IAAA43B,GAAAjN,GAAA,SAAAh8B,EAAA8oC,EAAA5vC,GACA,OAAA8G,GAAA9G,EAAA,QAAA4vC,EAAAhuC,gBAuBAouC,GAAAlN,GAAA,SAAAh8B,EAAA8oC,EAAA5vC,GACA,OAAA8G,GAAA9G,EAAA,QAAA4vC,EAAAhuC,gBAoBAquC,GAAAvN,GAAA,eA0NA,IAAAwN,GAAApN,GAAA,SAAAh8B,EAAA8oC,EAAA5vC,GACA,OAAA8G,GAAA9G,EAAA,QAAA4vC,EAAAhuC,gBAgEA,IAAAuuC,GAAArN,GAAA,SAAAh8B,EAAA8oC,EAAA5vC,GACA,OAAA8G,GAAA9G,EAAA,QAAA8vC,GAAAF,KAkiBA,IAAAQ,GAAAtN,GAAA,SAAAh8B,EAAA8oC,EAAA5vC,GACA,OAAA8G,GAAA9G,EAAA,QAAA4vC,EAAAS,gBAoBAP,GAAApN,GAAA,eAqBA,SAAAM,GAAA3hC,EAAAivC,EAAA/N,GAIA,OAHAlhC,EAAA0F,GAAA1F,IACAivC,EAAA/N,EAAA7qC,EAAA44C,KAEA54C,EAxvbA,SAAA2J,GACA,OAAAkX,GAAA5W,KAAAN,GAwvbAkvC,CAAAlvC,GA5hbA,SAAAA,GACA,OAAAA,EAAAspB,MAAAtS,KAAA,GA2hbAm4B,CAAAnvC,GA/ncA,SAAAA,GACA,OAAAA,EAAAspB,MAAA3U,KAAA,GA8ncAy6B,CAAApvC,GAEAA,EAAAspB,MAAA2lB,IAAA,GA2BA,IAAAI,GAAA3S,GAAA,SAAA37B,EAAAtG,GACA,IACA,OAAAvB,GAAA6H,EAAA1K,EAAAoE,GACO,MAAAnD,GACP,OAAAm1C,GAAAn1C,KAAA,IAAAiC,GAAAjC,MA8BAg4C,GAAApN,GAAA,SAAA1tC,EAAA+6C,GAKA,OAJAv1B,GAAAu1B,EAAA,SAAAl7C,GACAA,EAAA4hC,GAAA5hC,GACA08B,GAAAv8B,EAAAH,EAAAC,GAAAE,EAAAH,GAAAG,MAEAA,IAqGA,SAAA0oC,GAAAnpC,GACA,kBACA,OAAAA,GAkDA,IAAAy7C,GAAAvN,KAuBAwN,GAAAxN,IAAA,GAkBA,SAAAvI,GAAA3lC,GACA,OAAAA,EA6CA,SAAA+lB,GAAA/Y,GACA,OAAA04B,GAAA,mBAAA14B,IAAA8wB,GAAA9wB,EAAAyO,IAyFA,IAAAtN,GAAAw6B,GAAA,SAAA3G,EAAAt7B,GACA,gBAAAjG,GACA,OAAA8iC,GAAA9iC,EAAAuhC,EAAAt7B,MA2BAi1C,GAAAhT,GAAA,SAAAloC,EAAAiG,GACA,gBAAAs7B,GACA,OAAAuB,GAAA9iC,EAAAuhC,EAAAt7B,MAwCA,SAAAk1C,GAAAn7C,EAAAa,EAAAi1C,GACA,IAAA1uB,EAAA5c,GAAA3J,GACAk6C,EAAA1Z,GAAAxgC,EAAAumB,GAEA,MAAA0uB,GACA/yC,GAAAlC,KAAAk6C,EAAAr1C,SAAA0hB,EAAA1hB,UACAowC,EAAAj1C,EACAA,EAAAb,EACAA,EAAAsC,KACAy4C,EAAA1Z,GAAAxgC,EAAA2J,GAAA3J,KAEA,IAAAm0C,IAAAjyC,GAAA+yC,IAAA,UAAAA,MAAAd,OACAlX,EAAA3yB,GAAAnL,GAqBA,OAnBAwlB,GAAAu1B,EAAA,SAAAjO,GACA,IAAAvgC,EAAA1L,EAAAisC,GACA9sC,EAAA8sC,GAAAvgC,EACAuxB,IACA99B,EAAAE,UAAA4sC,GAAA,WACA,IAAA7S,EAAA33B,KAAA83B,UACA,GAAA4a,GAAA/a,EAAA,CACA,IAAAhpB,EAAAjR,EAAAsC,KAAA43B,aACAztB,EAAAwE,EAAAkpB,YAAA+B,GAAA55B,KAAA63B,aAIA,OAFA1tB,EAAA/E,KAAA,CAA4B6E,OAAAtG,KAAAtB,UAAAwgB,QAAAnlB,IAC5BiR,EAAAmpB,UAAAH,EACAhpB,EAEA,OAAA1E,EAAA7H,MAAA1E,EAAA+lB,GAAA,CAAAzjB,KAAA/C,SAAAoF,gBAKA3E,EAmCA,SAAA6wC,MAiDA,IAAAuK,GAAAzL,GAAA7pB,IA0BAu1B,GAAA1L,GAAAv8B,IA0BAkoC,GAAA3L,GAAAx8B,IAwBA,SAAAlT,GAAAshC,GACA,OAAAwE,GAAAxE,GAAArb,GAAAub,GAAAF,IAt0XA,SAAAA,GACA,gBAAAvhC,GACA,OAAAshC,GAAAthC,EAAAuhC,IAo0XAga,CAAAha,GAuEA,IAAAia,GAAAxL,KAsCAyL,GAAAzL,IAAA,GAoBA,SAAA+B,KACA,SAgBA,SAAAO,KACA,SA+JA,IAAAnX,GAAAqU,GAAA,SAAAkM,EAAAC,GACA,OAAAD,EAAAC,GACK,GAuBL/rC,GAAA8gC,GAAA,QAiBAkL,GAAApM,GAAA,SAAAqM,EAAAC,GACA,OAAAD,EAAAC,GACK,GAuBLjsC,GAAA6gC,GAAA,SAwKA,IAgaA7vC,GAhaAk7C,GAAAvM,GAAA,SAAAwM,EAAAC,GACA,OAAAD,EAAAC,GACK,GAuBLriC,GAAA82B,GAAA,SAiBAwL,GAAA1M,GAAA,SAAA2M,EAAAC,GACA,OAAAD,EAAAC,GACK,GAgmBL,OA1iBA3iB,GAAA4iB,MAv4MA,SAAAt8C,EAAAwM,GACA,sBAAAA,EACA,UAAAtJ,GAAA2X,GAGA,OADA7a,EAAAsD,GAAAtD,GACA,WACA,KAAAA,EAAA,EACA,OAAAwM,EAAA7H,MAAApC,KAAAqC,aAi4MA80B,GAAA8U,OACA9U,GAAAkf,UACAlf,GAAAmf,YACAnf,GAAAof,gBACApf,GAAAqf,cACArf,GAAAsf,MACAtf,GAAAkc,UACAlc,GAAA35B,QACA25B,GAAAqhB,WACArhB,GAAAmc,WACAnc,GAAA6iB,UAr6KA,WACA,IAAA33C,UAAAe,OACA,SAEA,IAAAnG,EAAAoF,UAAA,GACA,OAAAg1B,GAAAp6B,KAAA,CAAAA,IAi6KAk6B,GAAAub,SACAvb,GAAA8iB,MAn+SA,SAAAl3B,EAAA8O,EAAAuY,GAEAvY,GADAuY,EAAAC,GAAAtnB,EAAA8O,EAAAuY,GAAAvY,IAAAtyB,GACA,EAEAm2B,GAAA30B,GAAA8wB,GAAA,GAEA,IAAAzuB,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,IAAAA,GAAAyuB,EAAA,EACA,SAMA,IAJA,IAAAhqB,EAAA,EACAub,EAAA,EACAzU,EAAA3M,EAAAizB,GAAA7xB,EAAAyuB,IAEAhqB,EAAAzE,GACAuL,EAAAyU,KAAAkjB,GAAAvjB,EAAAlb,KAAAgqB,GAEA,OAAAljB,GAm9SAwoB,GAAA+iB,QAj8SA,SAAAn3B,GAMA,IALA,IAAAlb,GAAA,EACAzE,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACAggB,EAAA,EACAzU,EAAA,KAEA9G,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACA5K,IACA0R,EAAAyU,KAAAnmB,GAGA,OAAA0R,GAs7SAwoB,GAAApzB,OA75SA,WACA,IAAAX,EAAAf,UAAAe,OACA,IAAAA,EACA,SAMA,IAJA,IAAAO,EAAA3B,EAAAoB,EAAA,GACA2f,EAAA1gB,UAAA,GACAwF,EAAAzE,EAEAyE,KACAlE,EAAAkE,EAAA,GAAAxF,UAAAwF,GAEA,OAAA4b,GAAA4T,GAAAtU,GAAA6W,GAAA7W,GAAA,CAAAA,GAAAyb,GAAA76B,EAAA,KAk5SAwzB,GAAAgjB,KAlsCA,SAAApc,GACA,IAAA36B,EAAA,MAAA26B,EAAA,EAAAA,EAAA36B,OACA4pC,EAAAtI,KASA,OAPA3G,EAAA36B,EAAAogB,GAAAua,EAAA,SAAAuQ,GACA,sBAAAA,EAAA,GACA,UAAA3tC,GAAA2X,GAEA,OAAA00B,EAAAsB,EAAA,IAAAA,EAAA,MAJA,GAOA1I,GAAA,SAAAjiC,GAEA,IADA,IAAAkE,GAAA,IACAA,EAAAzE,GAAA,CACA,IAAAkrC,EAAAvQ,EAAAl2B,GACA,GAAAzF,GAAAksC,EAAA,GAAAtuC,KAAA2D,GACA,OAAAvB,GAAAksC,EAAA,GAAAtuC,KAAA2D,OAmrCAwzB,GAAAijB,SArpCA,SAAA77C,GACA,OA33YA,SAAAA,GACA,IAAAumB,EAAA5c,GAAA3J,GACA,gBAAAb,GACA,OAAAo/B,GAAAp/B,EAAAa,EAAAumB,IAw3YAu1B,CAAAtf,GAAAx8B,EAAAma,KAqpCAye,GAAAiP,YACAjP,GAAA0b,WACA1b,GAAA75B,OAzsHA,SAAAM,EAAA08C,GACA,IAAA3rC,EAAA8oB,GAAA75B,GACA,aAAA08C,EAAA3rC,EAAA4rB,GAAA5rB,EAAA2rC,IAwsHAnjB,GAAAojB,MA5sMA,SAAAA,EAAAtwC,EAAAiiC,EAAA9B,GAEA,IAAAz7B,EAAA+/B,GAAAzkC,EAAAiP,EAAA3Z,UADA2sC,EAAA9B,EAAA7qC,EAAA2sC,GAGA,OADAv9B,EAAAsjB,YAAAsoB,EAAAtoB,YACAtjB,GAysMAwoB,GAAAqjB,WAhqMA,SAAAA,EAAAvwC,EAAAiiC,EAAA9B,GAEA,IAAAz7B,EAAA+/B,GAAAzkC,EAAAkP,EAAA5Z,UADA2sC,EAAA9B,EAAA7qC,EAAA2sC,GAGA,OADAv9B,EAAAsjB,YAAAuoB,EAAAvoB,YACAtjB,GA6pMAwoB,GAAAoc,YACApc,GAAAhE,YACAgE,GAAAyf,gBACAzf,GAAA0d,SACA1d,GAAA2d,SACA3d,GAAA+Z,cACA/Z,GAAAga,gBACAha,GAAAia,kBACAja,GAAAsjB,KArySA,SAAA13B,EAAAtlB,EAAA2sC,GACA,IAAAhnC,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,EAIAkjC,GAAAvjB,GADAtlB,EAAA2sC,GAAA3sC,IAAA8B,EAAA,EAAAwB,GAAAtD,IACA,IAAAA,EAAA2F,GAHA,IAmySA+zB,GAAAujB,UApwSA,SAAA33B,EAAAtlB,EAAA2sC,GACA,IAAAhnC,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,EAKAkjC,GAAAvjB,EAAA,GADAtlB,EAAA2F,GADA3F,EAAA2sC,GAAA3sC,IAAA8B,EAAA,EAAAwB,GAAAtD,KAEA,IAAAA,GAJA,IAkwSA05B,GAAAwjB,eAxtSA,SAAA53B,EAAAjO,GACA,OAAAiO,KAAA3f,OACA2kC,GAAAhlB,EAAA2hB,GAAA5vB,EAAA,UACA,IAstSAqiB,GAAAyjB,UAhrSA,SAAA73B,EAAAjO,GACA,OAAAiO,KAAA3f,OACA2kC,GAAAhlB,EAAA2hB,GAAA5vB,EAAA,OACA,IA8qSAqiB,GAAAxiB,KA9oSA,SAAAoO,EAAA9lB,EAAAwX,EAAAmB,GACA,IAAAxS,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,GAGAqR,GAAA,iBAAAA,GAAA41B,GAAAtnB,EAAA9lB,EAAAwX,KACAA,EAAA,EACAmB,EAAAxS,GAnuIA,SAAA2f,EAAA9lB,EAAAwX,EAAAmB,GACA,IAAAxS,EAAA2f,EAAA3f,OAWA,KATAqR,EAAA1T,GAAA0T,IACA,IACAA,KAAArR,EAAA,EAAAA,EAAAqR,IAEAmB,MAAArW,GAAAqW,EAAAxS,IAAArC,GAAA6U,IACA,IACAA,GAAAxS,GAEAwS,EAAAnB,EAAAmB,EAAA,EAAA9H,GAAA8H,GACAnB,EAAAmB,GACAmN,EAAAtO,KAAAxX,EAEA,OAAA8lB,EAstIA83B,CAAA93B,EAAA9lB,EAAAwX,EAAAmB,IANA,IA4oSAuhB,GAAAviB,OA9tOA,SAAAkP,EAAAhP,GAEA,OADAuiB,GAAAvT,GAAAlT,GAAA2tB,IACAza,EAAA4gB,GAAA5vB,EAAA,KA6tOAqiB,GAAA2jB,QA1oOA,SAAAh3B,EAAAd,GACA,OAAAwb,GAAAnpB,GAAAyO,EAAAd,GAAA,IA0oOAmU,GAAA4jB,YAnnOA,SAAAj3B,EAAAd,GACA,OAAAwb,GAAAnpB,GAAAyO,EAAAd,GAAAjJ,IAmnOAod,GAAA6jB,aA3lOA,SAAAl3B,EAAAd,EAAAyb,GAEA,OADAA,MAAAl/B,EAAA,EAAAwB,GAAA09B,GACAD,GAAAnpB,GAAAyO,EAAAd,GAAAyb,IA0lOAtH,GAAAmY,WACAnY,GAAA8jB,YAtgSA,SAAAl4B,GAEA,OADA,MAAAA,KAAA3f,OACAo7B,GAAAzb,EAAAhJ,GAAA,IAqgSAod,GAAA+jB,aA9+RA,SAAAn4B,EAAA0b,GAEA,OADA,MAAA1b,KAAA3f,OAKAo7B,GAAAzb,EADA0b,MAAAl/B,EAAA,EAAAwB,GAAA09B,IAFA,IA4+RAtH,GAAAgkB,KA57LA,SAAAlxC,GACA,OAAAykC,GAAAzkC,EAAAuP,IA47LA2d,GAAAuhB,QACAvhB,GAAAwhB,aACAxhB,GAAAikB,UA19RA,SAAArd,GAKA,IAJA,IAAAl2B,GAAA,EACAzE,EAAA,MAAA26B,EAAA,EAAAA,EAAA36B,OACAuL,EAAA,KAEA9G,EAAAzE,GAAA,CACA,IAAAkrC,EAAAvQ,EAAAl2B,GACA8G,EAAA2/B,EAAA,IAAAA,EAAA,GAEA,OAAA3/B,GAk9RAwoB,GAAAj1B,UA96GA,SAAAxE,GACA,aAAAA,EAAA,GAAAqhC,GAAArhC,EAAAwK,GAAAxK,KA86GAy5B,GAAAkkB,YAp5GA,SAAA39C,GACA,aAAAA,EAAA,GAAAqhC,GAAArhC,EAAAm+B,GAAAn+B,KAo5GAy5B,GAAA6b,WACA7b,GAAAmkB,QA34RA,SAAAv4B,GAEA,OADA,MAAAA,KAAA3f,OACAkjC,GAAAvjB,EAAA,UA04RAoU,GAAAoa,gBACApa,GAAAsa,kBACAta,GAAAua,oBACAva,GAAA2f,UACA3f,GAAA4f,YACA5f,GAAA8b,aACA9b,GAAAnU,YACAmU,GAAA+b,SACA/b,GAAAjvB,QACAivB,GAAA0E,UACA1E,GAAA9hB,OACA8hB,GAAAokB,QA7pGA,SAAA79C,EAAAslB,GACA,IAAArU,EAAA,GAMA,OALAqU,EAAA0hB,GAAA1hB,EAAA,GAEAib,GAAAvgC,EAAA,SAAAT,EAAAM,EAAAG,GACAu8B,GAAAtrB,EAAAqU,EAAA/lB,EAAAM,EAAAG,GAAAT,KAEA0R,GAupGAwoB,GAAAqkB,UAxnGA,SAAA99C,EAAAslB,GACA,IAAArU,EAAA,GAMA,OALAqU,EAAA0hB,GAAA1hB,EAAA,GAEAib,GAAAvgC,EAAA,SAAAT,EAAAM,EAAAG,GACAu8B,GAAAtrB,EAAApR,EAAAylB,EAAA/lB,EAAAM,EAAAG,MAEAiR,GAknGAwoB,GAAAskB,QAlgCA,SAAAl9C,GACA,OAAAukC,GAAA/H,GAAAx8B,EAAAma,KAkgCAye,GAAAukB,gBAr+BA,SAAAzc,EAAAwD,GACA,OAAAI,GAAA5D,EAAAlE,GAAA0H,EAAA/pB,KAq+BAye,GAAAyZ,WACAzZ,GAAA8f,SACA9f,GAAA0f,aACA1f,GAAA/rB,UACA+rB,GAAAyhB,YACAzhB,GAAA0hB,SACA1hB,GAAA+d,UACA/d,GAAAwkB,OA9yBA,SAAAl+C,GAEA,OADAA,EAAAsD,GAAAtD,GACAmoC,GAAA,SAAAjiC,GACA,OAAA2gC,GAAA3gC,EAAAlG,MA4yBA05B,GAAA+f,QACA/f,GAAAykB,OAt/FA,SAAAl+C,EAAAoX,GACA,OAAAsiC,GAAA15C,EAAAw3C,GAAAxQ,GAAA5vB,MAs/FAqiB,GAAA5vB,KAh2LA,SAAA0C,GACA,OAAAopC,GAAA,EAAAppC,IAg2LAktB,GAAA0kB,QAx2NA,SAAA/3B,EAAA0gB,EAAAC,EAAA2F,GACA,aAAAtmB,EACA,IAEAuT,GAAAmN,KACAA,EAAA,MAAAA,EAAA,IAAAA,IAGAnN,GADAoN,EAAA2F,EAAA7qC,EAAAklC,KAEAA,EAAA,MAAAA,EAAA,IAAAA,IAEAF,GAAAzgB,EAAA0gB,EAAAC,KA81NAtN,GAAA2hB,QACA3hB,GAAAge,YACAhe,GAAA4hB,aACA5hB,GAAA6hB,YACA7hB,GAAAme,WACAne,GAAAoe,gBACApe,GAAAgc,aACAhc,GAAA/D,QACA+D,GAAAigB,UACAjgB,GAAAx5B,YACAw5B,GAAA2kB,WA/rBA,SAAAp+C,GACA,gBAAAuhC,GACA,aAAAvhC,EAAA6B,EAAAy/B,GAAAthC,EAAAuhC,KA8rBA9H,GAAAwa,QACAxa,GAAAya,WACAza,GAAA4kB,UAnqRA,SAAAh5B,EAAA3R,EAAA4R,GACA,OAAAD,KAAA3f,QAAAgO,KAAAhO,OACAkiC,GAAAviB,EAAA3R,EAAAszB,GAAA1hB,EAAA,IACAD,GAiqRAoU,GAAA6kB,YAvoRA,SAAAj5B,EAAA3R,EAAAmS,GACA,OAAAR,KAAA3f,QAAAgO,KAAAhO,OACAkiC,GAAAviB,EAAA3R,EAAA7R,EAAAgkB,GACAR,GAqoRAoU,GAAA0a,UACA1a,GAAA+hB,SACA/hB,GAAAgiB,cACAhiB,GAAAqe,SACAre,GAAA8kB,OA3tNA,SAAAn4B,EAAAhP,GAEA,OADAuiB,GAAAvT,GAAAlT,GAAA2tB,IACAza,EAAAoxB,GAAAxQ,GAAA5vB,EAAA,MA0tNAqiB,GAAA+kB,OAxkRA,SAAAn5B,EAAAjO,GACA,IAAAnG,EAAA,GACA,IAAAoU,MAAA3f,OACA,OAAAuL,EAEA,IAAA9G,GAAA,EACA29B,EAAA,GACApiC,EAAA2f,EAAA3f,OAGA,IADA0R,EAAA4vB,GAAA5vB,EAAA,KACAjN,EAAAzE,GAAA,CACA,IAAAnG,EAAA8lB,EAAAlb,GACAiN,EAAA7X,EAAA4K,EAAAkb,KACApU,EAAAvJ,KAAAnI,GACAuoC,EAAApgC,KAAAyC,IAIA,OADA09B,GAAAxiB,EAAAyiB,GACA72B,GAujRAwoB,GAAAglB,KArsLA,SAAAlyC,EAAAwK,GACA,sBAAAxK,EACA,UAAAtJ,GAAA2X,GAGA,OAAAstB,GAAA37B,EADAwK,MAAAlV,EAAAkV,EAAA1T,GAAA0T,KAksLA0iB,GAAA7hB,WACA6hB,GAAAilB,WAnrNA,SAAAt4B,EAAArmB,EAAA2sC,GAOA,OALA3sC,GADA2sC,EAAAC,GAAAvmB,EAAArmB,EAAA2sC,GAAA3sC,IAAA8B,GACA,EAEAwB,GAAAtD,IAEA45B,GAAAvT,GAAA4V,GAAAsM,IACAliB,EAAArmB,IA6qNA05B,GAAA3wB,IA14FA,SAAA9I,EAAAuhC,EAAAhiC,GACA,aAAAS,IAAA2nC,GAAA3nC,EAAAuhC,EAAAhiC,IA04FAk6B,GAAAklB,QA/2FA,SAAA3+C,EAAAuhC,EAAAhiC,EAAAg+B,GAEA,OADAA,EAAA,mBAAAA,IAAA17B,EACA,MAAA7B,IAAA2nC,GAAA3nC,EAAAuhC,EAAAhiC,EAAAg+B,IA82FA9D,GAAAmlB,QA7pNA,SAAAx4B,GAEA,OADAuT,GAAAvT,GAAAgW,GAAAuM,IACAviB,IA4pNAqT,GAAAp1B,MA/gRA,SAAAghB,EAAAtO,EAAAmB,GACA,IAAAxS,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,GAGAwS,GAAA,iBAAAA,GAAAy0B,GAAAtnB,EAAAtO,EAAAmB,IACAnB,EAAA,EACAmB,EAAAxS,IAGAqR,EAAA,MAAAA,EAAA,EAAA1T,GAAA0T,GACAmB,MAAArW,EAAA6D,EAAArC,GAAA6U,IAEA0wB,GAAAvjB,EAAAtO,EAAAmB,IAVA,IA6gRAuhB,GAAAic,UACAjc,GAAAolB,WAv1QA,SAAAx5B,GACA,OAAAA,KAAA3f,OACAmkC,GAAAxkB,GACA,IAq1QAoU,GAAAqlB,aAl0QA,SAAAz5B,EAAAC,GACA,OAAAD,KAAA3f,OACAmkC,GAAAxkB,EAAA2hB,GAAA1hB,EAAA,IACA,IAg0QAmU,GAAA1uB,MA//DA,SAAAS,EAAAkM,EAAAqnC,GAKA,OAJAA,GAAA,iBAAAA,GAAApS,GAAAnhC,EAAAkM,EAAAqnC,KACArnC,EAAAqnC,EAAAl9C,IAEAk9C,MAAAl9C,EAAA4a,EAAAsiC,IAAA,IAIAvzC,EAAA0F,GAAA1F,MAEA,iBAAAkM,GACA,MAAAA,IAAAoN,GAAApN,OAEAA,EAAAqyB,GAAAryB,KACAuc,GAAAzoB,GACAw/B,GAAAnW,GAAArpB,GAAA,EAAAuzC,GAGAvzC,EAAAT,MAAA2M,EAAAqnC,GAZA,IA0/DAtlB,GAAAulB,OAtqLA,SAAAzyC,EAAAwK,GACA,sBAAAxK,EACA,UAAAtJ,GAAA2X,GAGA,OADA7D,EAAA,MAAAA,EAAA,EAAAihB,GAAA30B,GAAA0T,GAAA,GACAmxB,GAAA,SAAAjiC,GACA,IAAAof,EAAApf,EAAA8Q,GACAw7B,EAAAvH,GAAA/kC,EAAA,EAAA8Q,GAKA,OAHAsO,GACAU,GAAAwsB,EAAAltB,GAEA3gB,GAAA6H,EAAAjK,KAAAiwC,MA2pLA9Y,GAAAwlB,KAjzQA,SAAA55B,GACA,IAAA3f,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,EAAAkjC,GAAAvjB,EAAA,EAAA3f,GAAA,IAgzQA+zB,GAAAylB,KApxQA,SAAA75B,EAAAtlB,EAAA2sC,GACA,OAAArnB,KAAA3f,OAIAkjC,GAAAvjB,EAAA,GADAtlB,EAAA2sC,GAAA3sC,IAAA8B,EAAA,EAAAwB,GAAAtD,IACA,IAAAA,GAHA,IAmxQA05B,GAAA0lB,UApvQA,SAAA95B,EAAAtlB,EAAA2sC,GACA,IAAAhnC,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,OAAAA,EAKAkjC,GAAAvjB,GADAtlB,EAAA2F,GADA3F,EAAA2sC,GAAA3sC,IAAA8B,EAAA,EAAAwB,GAAAtD,KAEA,IAAAA,EAAA2F,GAJA,IAkvQA+zB,GAAA2lB,eAxsQA,SAAA/5B,EAAAjO,GACA,OAAAiO,KAAA3f,OACA2kC,GAAAhlB,EAAA2hB,GAAA5vB,EAAA,UACA,IAssQAqiB,GAAA4lB,UAhqQA,SAAAh6B,EAAAjO,GACA,OAAAiO,KAAA3f,OACA2kC,GAAAhlB,EAAA2hB,GAAA5vB,EAAA,IACA,IA8pQAqiB,GAAA6lB,IAnsPA,SAAA//C,EAAA01C,GAEA,OADAA,EAAA11C,GACAA,GAksPAk6B,GAAA8lB,SAjnLA,SAAAhzC,EAAA+yB,EAAAwW,GACA,IAAAO,GAAA,EACArJ,GAAA,EAEA,sBAAAzgC,EACA,UAAAtJ,GAAA2X,GAMA,OAJA7X,GAAA+yC,KACAO,EAAA,YAAAP,MAAAO,UACArJ,EAAA,aAAA8I,MAAA9I,YAEA6I,GAAAtpC,EAAA+yB,EAAA,CACA+W,UACAJ,QAAA3W,EACA0N,cAomLAvT,GAAAoU,QACApU,GAAA8e,WACA9e,GAAAmgB,WACAngB,GAAAogB,aACApgB,GAAA+lB,OArfA,SAAAjgD,GACA,OAAAo6B,GAAAp6B,GACAumB,GAAAvmB,EAAAkiC,IAEAb,GAAArhC,GAAA,CAAAA,GAAA28B,GAAA4O,GAAA55B,GAAA3R,MAkfAk6B,GAAAiN,iBACAjN,GAAApF,UA7yFA,SAAAr0B,EAAAslB,EAAAC,GACA,IAAAgW,EAAA5B,GAAA35B,GACAy/C,EAAAlkB,GAAA5D,GAAA33B,IAAAklB,GAAAllB,GAGA,GADAslB,EAAA0hB,GAAA1hB,EAAA,GACA,MAAAC,EAAA,CACA,IAAAiZ,EAAAx+B,KAAAsN,YAEAiY,EADAk6B,EACAlkB,EAAA,IAAAiD,EAAA,GAEAz7B,GAAA/C,IACAmL,GAAAqzB,GAAAzE,GAAArD,GAAA12B,IAGA,GAMA,OAHAy/C,EAAAj6B,GAAA+a,IAAAvgC,EAAA,SAAAT,EAAA4K,EAAAnK,GACA,OAAAslB,EAAAC,EAAAhmB,EAAA4K,EAAAnK,KAEAulB,GA0xFAkU,GAAAimB,MAxlLA,SAAAnzC,GACA,OAAAgiC,GAAAhiC,EAAA,IAwlLAktB,GAAA2a,SACA3a,GAAA4a,WACA5a,GAAA6a,aACA7a,GAAAkmB,KAxkQA,SAAAt6B,GACA,OAAAA,KAAA3f,OAAAskC,GAAA3kB,GAAA,IAwkQAoU,GAAAmmB,OA9iQA,SAAAv6B,EAAAC,GACA,OAAAD,KAAA3f,OAAAskC,GAAA3kB,EAAA2hB,GAAA1hB,EAAA,QA8iQAmU,GAAAomB,SAvhQA,SAAAx6B,EAAAQ,GAEA,OADAA,EAAA,mBAAAA,IAAAhkB,EACAwjB,KAAA3f,OAAAskC,GAAA3kB,EAAAxjB,EAAAgkB,GAAA,IAshQA4T,GAAAqmB,MAnwFA,SAAA9/C,EAAAuhC,GACA,aAAAvhC,GAAAgoC,GAAAhoC,EAAAuhC,IAmwFA9H,GAAA8a,SACA9a,GAAAgb,aACAhb,GAAAsmB,OAvuFA,SAAA//C,EAAAuhC,EAAA6I,GACA,aAAApqC,IAAAmqC,GAAAnqC,EAAAuhC,EAAAsJ,GAAAT,KAuuFA3Q,GAAAumB,WA5sFA,SAAAhgD,EAAAuhC,EAAA6I,EAAA7M,GAEA,OADAA,EAAA,mBAAAA,IAAA17B,EACA,MAAA7B,IAAAmqC,GAAAnqC,EAAAuhC,EAAAsJ,GAAAT,GAAA7M,IA2sFA9D,GAAA/lB,UACA+lB,GAAAwmB,SAnpFA,SAAAjgD,GACA,aAAAA,EAAA,GAAAmnB,GAAAnnB,EAAAm+B,GAAAn+B,KAmpFAy5B,GAAAib,WACAjb,GAAA0T,SACA1T,GAAAymB,KA9kLA,SAAA3gD,EAAAyZ,GACA,OAAA4+B,GAAA/M,GAAA7xB,GAAAzZ,IA8kLAk6B,GAAAkb,OACAlb,GAAAmb,SACAnb,GAAAob,WACApb,GAAAqb,OACArb,GAAA0mB,UAh1PA,SAAA/4B,EAAA1T,GACA,OAAA+2B,GAAArjB,GAAA,GAAA1T,GAAA,GAAA8oB,KAg1PA/C,GAAA2mB,cA9zPA,SAAAh5B,EAAA1T,GACA,OAAA+2B,GAAArjB,GAAA,GAAA1T,GAAA,GAAAi0B,KA8zPAlO,GAAAsb,WAGAtb,GAAA5lB,QAAA+lC,GACAngB,GAAA4mB,UAAAxG,GACApgB,GAAA6mB,OAAA1H,GACAnf,GAAA8mB,WAAA1H,GAGAsC,GAAA1hB,OAKAA,GAAA0B,OACA1B,GAAAohB,WACAphB,GAAAqgB,aACArgB,GAAAugB,cACAvgB,GAAA7pB,QACA6pB,GAAA+mB,MAvpFA,SAAAtjB,EAAAC,EAAAC,GAaA,OAZAA,IAAAv7B,IACAu7B,EAAAD,EACAA,EAAAt7B,GAEAu7B,IAAAv7B,IAEAu7B,GADAA,EAAAgT,GAAAhT,KACAA,IAAA,GAEAD,IAAAt7B,IAEAs7B,GADAA,EAAAiT,GAAAjT,KACAA,IAAA,GAEAhB,GAAAiU,GAAAlT,GAAAC,EAAAC,IA2oFA3D,GAAA8Z,MAhiLA,SAAAh0C,GACA,OAAA89B,GAAA99B,EAAA2b,IAgiLAue,GAAAgnB,UAv+KA,SAAAlhD,GACA,OAAA89B,GAAA99B,EAAAyb,EAAAE,IAu+KAue,GAAAinB,cAx8KA,SAAAnhD,EAAAg+B,GAEA,OAAAF,GAAA99B,EAAAyb,EAAAE,EADAqiB,EAAA,mBAAAA,IAAA17B,IAw8KA43B,GAAAknB,UAhgLA,SAAAphD,EAAAg+B,GAEA,OAAAF,GAAA99B,EAAA2b,EADAqiB,EAAA,mBAAAA,IAAA17B,IAggLA43B,GAAAmnB,WA76KA,SAAA5gD,EAAAa,GACA,aAAAA,GAAAu+B,GAAAp/B,EAAAa,EAAA2J,GAAA3J,KA66KA44B,GAAA2T,UACA3T,GAAAonB,UAjwCA,SAAAthD,EAAAmwC,GACA,aAAAnwC,QAAAmwC,EAAAnwC,GAiwCAk6B,GAAAmiB,UACAniB,GAAAqnB,SA57EA,SAAAt1C,EAAA7J,EAAAqI,GACAwB,EAAA0F,GAAA1F,GACA7J,EAAAooC,GAAApoC,GAEA,IAAA+D,EAAA8F,EAAA9F,OAKAwS,EAJAlO,MAAAnI,EACA6D,EACAy2B,GAAA94B,GAAA2G,GAAA,EAAAtE,GAIA,OADAsE,GAAArI,EAAA+D,SACA,GAAA8F,EAAAnH,MAAA2F,EAAAkO,IAAAvW,GAk7EA83B,GAAA6C,MACA7C,GAAAqG,OAp5EA,SAAAt0B,GAEA,OADAA,EAAA0F,GAAA1F,KACA4T,GAAAtT,KAAAN,GACAA,EAAAI,QAAAqT,GAAAyU,IACAloB,GAi5EAiuB,GAAAsnB,aA/3EA,SAAAv1C,GAEA,OADAA,EAAA0F,GAAA1F,KACAoU,GAAA9T,KAAAN,GACAA,EAAAI,QAAA+T,GAAA,QACAnU,GA43EAiuB,GAAAziB,MA35OA,SAAAoP,EAAAhP,EAAAs1B,GACA,IAAAngC,EAAAotB,GAAAvT,GAAAhT,GAAAstB,GAIA,OAHAgM,GAAAC,GAAAvmB,EAAAhP,EAAAs1B,KACAt1B,EAAAvV,GAEA0K,EAAA6Z,EAAA4gB,GAAA5vB,EAAA,KAu5OAqiB,GAAAtiB,QACAsiB,GAAApiB,aACAoiB,GAAAunB,QAxvHA,SAAAhhD,EAAAoX,GACA,OAAA+O,GAAAnmB,EAAAgnC,GAAA5vB,EAAA,GAAAmpB,KAwvHA9G,GAAA2b,YACA3b,GAAAka,iBACAla,GAAAwnB,YAptHA,SAAAjhD,EAAAoX,GACA,OAAA+O,GAAAnmB,EAAAgnC,GAAA5vB,EAAA,GAAAqpB,KAotHAhH,GAAA5pB,SACA4pB,GAAAniB,WACAmiB,GAAA4b,gBACA5b,GAAAynB,MAxrHA,SAAAlhD,EAAAslB,GACA,aAAAtlB,EACAA,EACAkhC,GAAAlhC,EAAAgnC,GAAA1hB,EAAA,GAAA6Y,KAsrHA1E,GAAA0nB,WAzpHA,SAAAnhD,EAAAslB,GACA,aAAAtlB,EACAA,EACAohC,GAAAphC,EAAAgnC,GAAA1hB,EAAA,GAAA6Y,KAupHA1E,GAAA2nB,OAxnHA,SAAAphD,EAAAslB,GACA,OAAAtlB,GAAAugC,GAAAvgC,EAAAgnC,GAAA1hB,EAAA,KAwnHAmU,GAAA4nB,YA3lHA,SAAArhD,EAAAslB,GACA,OAAAtlB,GAAAygC,GAAAzgC,EAAAgnC,GAAA1hB,EAAA,KA2lHAmU,GAAAt6B,OACAs6B,GAAAse,MACAte,GAAAue,OACAve,GAAA9uB,IA5+GA,SAAA3K,EAAAuhC,GACA,aAAAvhC,GAAAgyC,GAAAhyC,EAAAuhC,EAAAa,KA4+GA3I,GAAAwM,SACAxM,GAAAma,QACAna,GAAAyL,YACAzL,GAAAhiB,SA/nOA,SAAA2O,EAAA7mB,EAAAgnB,EAAAmmB,GACAtmB,EAAAwf,GAAAxf,KAAA1S,GAAA0S,GACAG,MAAAmmB,EAAArpC,GAAAkjB,GAAA,EAEA,IAAA7gB,EAAA0gB,EAAA1gB,OAIA,OAHA6gB,EAAA,IACAA,EAAAyR,GAAAtyB,EAAA6gB,EAAA,IAEA6xB,GAAAhyB,GACAG,GAAA7gB,GAAA0gB,EAAA7O,QAAAhY,EAAAgnB,IAAA,IACA7gB,GAAAigB,GAAAS,EAAA7mB,EAAAgnB,IAAA,GAsnOAkT,GAAAliB,QA7jSA,SAAA8N,EAAA9lB,EAAAgnB,GACA,IAAA7gB,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,IAAAA,EACA,SAEA,IAAAyE,EAAA,MAAAoc,EAAA,EAAAljB,GAAAkjB,GAIA,OAHApc,EAAA,IACAA,EAAA6tB,GAAAtyB,EAAAyE,EAAA,IAEAwb,GAAAN,EAAA9lB,EAAA4K,IAqjSAsvB,GAAA6nB,QAroFA,SAAApkB,EAAAnmB,EAAAmB,GASA,OARAnB,EAAAk5B,GAAAl5B,GACAmB,IAAArW,GACAqW,EAAAnB,EACAA,EAAA,GAEAmB,EAAA+3B,GAAA/3B,GA3qVA,SAAAglB,EAAAnmB,EAAAmB,GACA,OAAAglB,GAAAhF,GAAAnhB,EAAAmB,IAAAglB,EAAAlF,GAAAjhB,EAAAmB,GA6qVAqpC,CADArkB,EAAAkT,GAAAlT,GACAnmB,EAAAmB,IA6nFAuhB,GAAA6f,UACA7f,GAAAgC,eACAhC,GAAAE,WACAF,GAAAjV,iBACAiV,GAAAmM,eACAnM,GAAA+M,qBACA/M,GAAA+nB,UAzuKA,SAAAjiD,GACA,WAAAA,IAAA,IAAAA,GACAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAAyd,GAwuKAyc,GAAA9B,YACA8B,GAAA/U,UACA+U,GAAAgoB,UAhrKA,SAAAliD,GACA,OAAAm6B,GAAAn6B,IAAA,IAAAA,EAAAukB,WAAA2iB,GAAAlnC,IAgrKAk6B,GAAAioB,QA5oKA,SAAAniD,GACA,SAAAA,EACA,SAEA,GAAAqmC,GAAArmC,KACAo6B,GAAAp6B,IAAA,iBAAAA,GAAA,mBAAAA,EAAAs3B,QACAc,GAAAp4B,IAAA2lB,GAAA3lB,IAAAk8B,GAAAl8B,IACA,OAAAA,EAAAmG,OAEA,IAAA+F,EAAAoyB,GAAAt+B,GACA,GAAAkM,GAAA6R,GAAA7R,GAAAmS,GACA,OAAAre,EAAA40B,KAEA,GAAAmR,GAAA/lC,GACA,OAAA8lC,GAAA9lC,GAAAmG,OAEA,QAAA7F,KAAAN,EACA,GAAAY,GAAA1B,KAAAc,EAAAM,GACA,SAGA,UAwnKA45B,GAAAkoB,QAzlKA,SAAApiD,EAAA4iC,GACA,OAAAe,GAAA3jC,EAAA4iC,IAylKA1I,GAAAmoB,YAtjKA,SAAAriD,EAAA4iC,EAAA5E,GAEA,IAAAtsB,GADAssB,EAAA,mBAAAA,IAAA17B,GACA07B,EAAAh+B,EAAA4iC,GAAAtgC,EACA,OAAAoP,IAAApP,EAAAqhC,GAAA3jC,EAAA4iC,EAAAtgC,EAAA07B,KAAAtsB,GAojKAwoB,GAAAwe,WACAxe,GAAA5B,SA7/JA,SAAAt4B,GACA,uBAAAA,GAAAq4B,GAAAr4B,IA6/JAk6B,GAAAtuB,cACAsuB,GAAAye,aACAze,GAAAyY,YACAzY,GAAA7U,SACA6U,GAAAooB,QA7zJA,SAAA7hD,EAAAa,GACA,OAAAb,IAAAa,GAAA+jC,GAAA5kC,EAAAa,EAAAglC,GAAAhlC,KA6zJA44B,GAAAqoB,YA1xJA,SAAA9hD,EAAAa,EAAA08B,GAEA,OADAA,EAAA,mBAAAA,IAAA17B,EACA+iC,GAAA5kC,EAAAa,EAAAglC,GAAAhlC,GAAA08B,IAyxJA9D,GAAAjzB,MA1vJA,SAAAjH,GAIA,OAAA44C,GAAA54C,WAuvJAk6B,GAAAsoB,SA1tJA,SAAAxiD,GACA,GAAA8yC,GAAA9yC,GACA,UAAAwF,GAAA4V,GAEA,OAAAqqB,GAAAzlC,IAutJAk6B,GAAAuoB,MA3qJA,SAAAziD,GACA,aAAAA,GA2qJAk6B,GAAAwoB,OApsJA,SAAA1iD,GACA,cAAAA,GAosJAk6B,GAAA0e,YACA1e,GAAA12B,YACA02B,GAAAC,gBACAD,GAAAgN,iBACAhN,GAAA3U,YACA2U,GAAAyoB,cAxjJA,SAAA3iD,GACA,OAAA24C,GAAA34C,QAAA+c,GAAA/c,GAAA+c,GAwjJAmd,GAAAzU,SACAyU,GAAA2e,YACA3e,GAAAmH,YACAnH,GAAAvU,gBACAuU,GAAA0oB,YAt9IA,SAAA5iD,GACA,OAAAA,IAAAsC,GAs9IA43B,GAAA2oB,UAl8IA,SAAA7iD,GACA,OAAAm6B,GAAAn6B,IAAAs+B,GAAAt+B,IAAAye,IAk8IAyb,GAAA4oB,UA96IA,SAAA9iD,GACA,OAAAm6B,GAAAn6B,IAAAsiC,GAAAtiC,IAAA0e,IA86IAwb,GAAAruB,KAx9RA,SAAAia,EAAA3N,GACA,aAAA2N,EAAA,GAAAyS,GAAAr5B,KAAA4mB,EAAA3N,IAw9RA+hB,GAAAygB,aACAzgB,GAAAuJ,QACAvJ,GAAA1lB,YA/6RA,SAAAsR,EAAA9lB,EAAAgnB,GACA,IAAA7gB,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,IAAAA,EACA,SAEA,IAAAyE,EAAAzE,EAKA,OAJA6gB,IAAA1kB,IAEAsI,GADAA,EAAA9G,GAAAkjB,IACA,EAAAyR,GAAAtyB,EAAAyE,EAAA,GAAA+tB,GAAA/tB,EAAAzE,EAAA,IAEAnG,KAhtMA,SAAA8lB,EAAA9lB,EAAAgnB,GAEA,IADA,IAAApc,EAAAoc,EAAA,EACApc,KACA,GAAAkb,EAAAlb,KAAA5K,EACA,OAAA4K,EAGA,OAAAA,EA0sMAm4C,CAAAj9B,EAAA9lB,EAAA4K,GACAmc,GAAAjB,EAAAqB,GAAAvc,GAAA,IAo6RAsvB,GAAA0gB,aACA1gB,GAAA2gB,cACA3gB,GAAA4e,MACA5e,GAAA6e,OACA7e,GAAAxB,IAhfA,SAAA5S,GACA,OAAAA,KAAA3f,OACAi7B,GAAAtb,EAAA6f,GAAAhD,IACArgC,GA8eA43B,GAAA8oB,MApdA,SAAAl9B,EAAAC,GACA,OAAAD,KAAA3f,OACAi7B,GAAAtb,EAAA2hB,GAAA1hB,EAAA,GAAA4c,IACArgC,GAkdA43B,GAAA+oB,KAjcA,SAAAn9B,GACA,OAAAuB,GAAAvB,EAAA6f,KAicAzL,GAAAgpB,OAvaA,SAAAp9B,EAAAC,GACA,OAAAsB,GAAAvB,EAAA2hB,GAAA1hB,EAAA,KAuaAmU,GAAAn2B,IAlZA,SAAA+hB,GACA,OAAAA,KAAA3f,OACAi7B,GAAAtb,EAAA6f,GAAAQ,IACA7jC,GAgZA43B,GAAAipB,MAtXA,SAAAr9B,EAAAC,GACA,OAAAD,KAAA3f,OACAi7B,GAAAtb,EAAA2hB,GAAA1hB,EAAA,GAAAogB,IACA7jC,GAoXA43B,GAAAsY,aACAtY,GAAA6Y,aACA7Y,GAAAkpB,WAztBA,WACA,UAytBAlpB,GAAAmpB,WAzsBA,WACA,UAysBAnpB,GAAAopB,SAzrBA,WACA,UAyrBAppB,GAAAsiB,YACAtiB,GAAAqpB,IA55RA,SAAAz9B,EAAAtlB,GACA,OAAAslB,KAAA3f,OAAAkhC,GAAAvhB,EAAAhiB,GAAAtD,IAAA8B,GA45RA43B,GAAAspB,WAvhCA,WAIA,OAHAn/B,GAAA2R,IAAAjzB,OACAshB,GAAA2R,EAAAe,IAEAh0B,MAohCAm3B,GAAAoX,QACApX,GAAAr1B,OACAq1B,GAAAupB,IAp3EA,SAAAx3C,EAAA9F,EAAAoqC,GACAtkC,EAAA0F,GAAA1F,GAGA,IAAAy3C,GAFAv9C,EAAArC,GAAAqC,IAEAgvB,GAAAlpB,GAAA,EACA,IAAA9F,GAAAu9C,GAAAv9C,EACA,OAAA8F,EAEA,IAAA09B,GAAAxjC,EAAAu9C,GAAA,EACA,OACApT,GAAArY,GAAA0R,GAAA4G,GACAtkC,EACAqkC,GAAAtY,GAAA2R,GAAA4G,IAy2EArW,GAAAypB,OA90EA,SAAA13C,EAAA9F,EAAAoqC,GACAtkC,EAAA0F,GAAA1F,GAGA,IAAAy3C,GAFAv9C,EAAArC,GAAAqC,IAEAgvB,GAAAlpB,GAAA,EACA,OAAA9F,GAAAu9C,EAAAv9C,EACA8F,EAAAqkC,GAAAnqC,EAAAu9C,EAAAnT,GACAtkC,GAw0EAiuB,GAAA0pB,SA9yEA,SAAA33C,EAAA9F,EAAAoqC,GACAtkC,EAAA0F,GAAA1F,GAGA,IAAAy3C,GAFAv9C,EAAArC,GAAAqC,IAEAgvB,GAAAlpB,GAAA,EACA,OAAA9F,GAAAu9C,EAAAv9C,EACAmqC,GAAAnqC,EAAAu9C,EAAAnT,GAAAtkC,EACAA,GAwyEAiuB,GAAAhW,SA7wEA,SAAAjY,EAAA43C,EAAA1W,GAMA,OALAA,GAAA,MAAA0W,EACAA,EAAA,EACOA,IACPA,MAEAhrB,GAAAlnB,GAAA1F,GAAAI,QAAAkU,GAAA,IAAAsjC,GAAA,IAwwEA3pB,GAAAnB,OA7pFA,SAAA6E,EAAAC,EAAAimB,GA2BA,GA1BAA,GAAA,kBAAAA,GAAA1W,GAAAxP,EAAAC,EAAAimB,KACAjmB,EAAAimB,EAAAxhD,GAEAwhD,IAAAxhD,IACA,kBAAAu7B,GACAimB,EAAAjmB,EACAA,EAAAv7B,GAEA,kBAAAs7B,IACAkmB,EAAAlmB,EACAA,EAAAt7B,IAGAs7B,IAAAt7B,GAAAu7B,IAAAv7B,GACAs7B,EAAA,EACAC,EAAA,IAGAD,EAAA8S,GAAA9S,GACAC,IAAAv7B,GACAu7B,EAAAD,EACAA,EAAA,GAEAC,EAAA6S,GAAA7S,IAGAD,EAAAC,EAAA,CACA,IAAAkmB,EAAAnmB,EACAA,EAAAC,EACAA,EAAAkmB,EAEA,GAAAD,GAAAlmB,EAAA,GAAAC,EAAA,GACA,IAAA6V,EAAA5a,KACA,OAAAH,GAAAiF,EAAA8V,GAAA7V,EAAAD,EAAA7Z,GAAA,QAAA2vB,EAAA,IAAAvtC,OAAA,KAAA03B,GAEA,OAAArB,GAAAoB,EAAAC,IA0nFA3D,GAAAxlB,OA/8NA,SAAAmS,EAAAd,EAAAC,GACA,IAAAhZ,EAAAotB,GAAAvT,GAAApS,GAAA+S,GACAf,EAAArhB,UAAAe,OAAA,EAEA,OAAA6G,EAAA6Z,EAAA4gB,GAAA1hB,EAAA,GAAAC,EAAAS,EAAA4W,KA48NAnD,GAAAtlB,YAn7NA,SAAAiS,EAAAd,EAAAC,GACA,IAAAhZ,EAAAotB,GAAAvT,GAAAlS,GAAA6S,GACAf,EAAArhB,UAAAe,OAAA,EAEA,OAAA6G,EAAA6Z,EAAA4gB,GAAA1hB,EAAA,GAAAC,EAAAS,EAAAwa,KAg7NA/G,GAAA8pB,OAlvEA,SAAA/3C,EAAAzL,EAAA2sC,GAMA,OAJA3sC,GADA2sC,EAAAC,GAAAnhC,EAAAzL,EAAA2sC,GAAA3sC,IAAA8B,GACA,EAEAwB,GAAAtD,GAEAkoC,GAAA/2B,GAAA1F,GAAAzL,IA6uEA05B,GAAA7tB,QAvtEA,WACA,IAAA3F,EAAAtB,UACA6G,EAAA0F,GAAAjL,EAAA,IAEA,OAAAA,EAAAP,OAAA,EAAA8F,IAAAI,QAAA3F,EAAA,GAAAA,EAAA,KAotEAwzB,GAAAxoB,OAzmGA,SAAAjR,EAAAuhC,EAAAmO,GAGA,IAAAvlC,GAAA,EACAzE,GAHA67B,EAAAC,GAAAD,EAAAvhC,IAGA0F,OAOA,IAJAA,IACAA,EAAA,EACA1F,EAAA6B,KAEAsI,EAAAzE,GAAA,CACA,IAAAnG,EAAA,MAAAS,EAAA6B,EAAA7B,EAAAyhC,GAAAF,EAAAp3B,KACA5K,IAAAsC,IACAsI,EAAAzE,EACAnG,EAAAmwC,GAEA1vC,EAAAmL,GAAA5L,KAAAd,KAAAuB,GAAAT,EAEA,OAAAS,GAulGAy5B,GAAA7f,SACA6f,GAAAjE,eACAiE,GAAA+pB,OA73NA,SAAAp9B,GAEA,OADAuT,GAAAvT,GAAA0V,GAAAuM,IACAjiB,IA43NAqT,GAAAtF,KAlzNA,SAAA/N,GACA,SAAAA,EACA,SAEA,GAAAwf,GAAAxf,GACA,OAAAgyB,GAAAhyB,GAAAsO,GAAAtO,KAAA1gB,OAEA,IAAA+F,EAAAoyB,GAAAzX,GACA,OAAA3a,GAAA6R,GAAA7R,GAAAmS,GACAwI,EAAA+N,KAEAkR,GAAAjf,GAAA1gB,QAwyNA+zB,GAAA4gB,aACA5gB,GAAA3hB,KAlwNA,SAAAsO,EAAAhP,EAAAs1B,GACA,IAAAngC,EAAAotB,GAAAvT,GAAAjT,GAAA01B,GAIA,OAHA6D,GAAAC,GAAAvmB,EAAAhP,EAAAs1B,KACAt1B,EAAAvV,GAEA0K,EAAA6Z,EAAA4gB,GAAA5vB,EAAA,KA8vNAqiB,GAAAgqB,YA/pRA,SAAAp+B,EAAA9lB,GACA,OAAAupC,GAAAzjB,EAAA9lB,IA+pRAk6B,GAAAiqB,cAnoRA,SAAAr+B,EAAA9lB,EAAA+lB,GACA,OAAA6jB,GAAA9jB,EAAA9lB,EAAAynC,GAAA1hB,EAAA,KAmoRAmU,GAAAkqB,cAhnRA,SAAAt+B,EAAA9lB,GACA,IAAAmG,EAAA,MAAA2f,EAAA,EAAAA,EAAA3f,OACA,GAAAA,EAAA,CACA,IAAAyE,EAAA2+B,GAAAzjB,EAAA9lB,GACA,GAAA4K,EAAAzE,GAAA42B,GAAAjX,EAAAlb,GAAA5K,GACA,OAAA4K,EAGA,UAymRAsvB,GAAAmqB,gBAplRA,SAAAv+B,EAAA9lB,GACA,OAAAupC,GAAAzjB,EAAA9lB,GAAA,IAolRAk6B,GAAAoqB,kBAxjRA,SAAAx+B,EAAA9lB,EAAA+lB,GACA,OAAA6jB,GAAA9jB,EAAA9lB,EAAAynC,GAAA1hB,EAAA,QAwjRAmU,GAAAqqB,kBAriRA,SAAAz+B,EAAA9lB,GAEA,GADA,MAAA8lB,KAAA3f,OACA,CACA,IAAAyE,EAAA2+B,GAAAzjB,EAAA9lB,GAAA,KACA,GAAA+8B,GAAAjX,EAAAlb,GAAA5K,GACA,OAAA4K,EAGA,UA8hRAsvB,GAAA6gB,aACA7gB,GAAAsqB,WA9mEA,SAAAv4C,EAAA7J,EAAAqI,GAOA,OANAwB,EAAA0F,GAAA1F,GACAxB,EAAA,MAAAA,EACA,EACAmyB,GAAA94B,GAAA2G,GAAA,EAAAwB,EAAA9F,QAEA/D,EAAAooC,GAAApoC,GACA6J,EAAAnH,MAAA2F,IAAArI,EAAA+D,SAAA/D,GAwmEA83B,GAAAyiB,YACAziB,GAAAuqB,IAzUA,SAAA3+B,GACA,OAAAA,KAAA3f,OACAmhB,GAAAxB,EAAA6f,IACA,GAuUAzL,GAAAwqB,MA7SA,SAAA5+B,EAAAC,GACA,OAAAD,KAAA3f,OACAmhB,GAAAxB,EAAA2hB,GAAA1hB,EAAA,IACA,GA2SAmU,GAAAyqB,SAhgEA,SAAA14C,EAAAsqC,EAAApJ,GAIA,IAAAyX,EAAA1qB,GAAAoG,iBAEA6M,GAAAC,GAAAnhC,EAAAsqC,EAAApJ,KACAoJ,EAAAj0C,GAEA2J,EAAA0F,GAAA1F,GACAsqC,EAAA+C,GAAA,GAA+B/C,EAAAqO,EAAA3S,IAE/B,IAIA4S,EACAC,EALAnkB,EAAA2Y,GAAA,GAAmC/C,EAAA5V,QAAAikB,EAAAjkB,QAAAsR,IACnC8S,EAAA95C,GAAA01B,GACAqkB,EAAAp9B,GAAA+Y,EAAAokB,GAIAn6C,EAAA,EACA61B,EAAA8V,EAAA9V,aAAAnf,GACAhgB,EAAA,WAGA2jD,EAAArlC,IACA22B,EAAAhW,QAAAjf,IAAAhgB,OAAA,IACAm/B,EAAAn/B,OAAA,KACAm/B,IAAAzgB,GAAAc,GAAAQ,IAAAhgB,OAAA,KACAi1C,EAAA/V,UAAAlf,IAAAhgB,OAAA,KACA,KAMA4jD,EAAA,kBACAtkD,GAAA1B,KAAAq3C,EAAA,cACAA,EAAA2O,UAAA,IAAA74C,QAAA,eACA,6BAAAgX,GAAA,KACA,KAEApX,EAAAI,QAAA44C,EAAA,SAAA1vB,EAAA4vB,EAAAC,EAAAC,EAAAC,EAAAjvC,GAsBA,OArBA+uC,MAAAC,GAGA/jD,GAAA2K,EAAAnH,MAAA8F,EAAAyL,GAAAhK,QAAAkV,GAAAiT,IAGA2wB,IACAN,GAAA,EACAvjD,GAAA,YAAA6jD,EAAA,UAEAG,IACAR,GAAA,EACAxjD,GAAA,OAAuBgkD,EAAA,eAEvBF,IACA9jD,GAAA,iBAAA8jD,EAAA,+BAEAx6C,EAAAyL,EAAAkf,EAAApvB,OAIAovB,IAGAj0B,GAAA,OAMA,IAAAo/B,EAAA9/B,GAAA1B,KAAAq3C,EAAA,aAAAA,EAAA7V,SACAA,IACAp/B,EAAA,iBAA8BA,EAAA,SAG9BA,GAAAwjD,EAAAxjD,EAAA+K,QAAAiT,GAAA,IAAAhe,GACA+K,QAAAkT,GAAA,MACAlT,QAAAmT,GAAA,OAGAle,EAAA,aAAAo/B,GAAA,gBACAA,EACA,GACA,wBAEA,qBACAmkB,EACA,mBACA,KAEAC,EACA,uFAEA,OAEAxjD,EACA,gBAEA,IAAAoQ,EAAA4pC,GAAA,WACA,OAAA/4C,GAAAwiD,EAAAG,EAAA,UAAA5jD,GACA6D,MAAA7C,EAAA0iD,KAMA,GADAtzC,EAAApQ,SACAo3C,GAAAhnC,GACA,MAAAA,EAEA,OAAAA,GAm5DAwoB,GAAAl1B,MApsBA,SAAAxE,EAAAulB,GAEA,IADAvlB,EAAAsD,GAAAtD,IACA,GAAAA,EAAAuc,EACA,SAEA,IAAAnS,EAAAsS,EACA/W,EAAAwyB,GAAAn4B,EAAA0c,GAEA6I,EAAA0hB,GAAA1hB,GACAvlB,GAAA0c,EAGA,IADA,IAAAxL,EAAAgW,GAAAvhB,EAAA4f,KACAnb,EAAApK,GACAulB,EAAAnb,GAEA,OAAA8G,GAsrBAwoB,GAAAwW,YACAxW,GAAAp2B,aACAo2B,GAAArpB,YACAqpB,GAAAqrB,QA/3DA,SAAAvlD,GACA,OAAA2R,GAAA3R,GAAAwM,eA+3DA0tB,GAAA2W,YACA3W,GAAAsrB,cAvsIA,SAAAxlD,GACA,OAAAA,EACA48B,GAAA94B,GAAA9D,IAAA+c,KACA,IAAA/c,IAAA,GAqsIAk6B,GAAAvoB,YACAuoB,GAAAurB,QA12DA,SAAAzlD,GACA,OAAA2R,GAAA3R,GAAAi7C,eA02DA/gB,GAAAwrB,KAj1DA,SAAAz5C,EAAAskC,EAAApD,GAEA,IADAlhC,EAAA0F,GAAA1F,MACAkhC,GAAAoD,IAAAjuC,GACA,OAAA2J,EAAAI,QAAAiU,GAAA,IAEA,IAAArU,KAAAskC,EAAA/F,GAAA+F,IACA,OAAAtkC,EAEA,IAAAgc,EAAAqN,GAAArpB,GACAic,EAAAoN,GAAAib,GAIA,OAAA9E,GAAAxjB,EAHAD,GAAAC,EAAAC,GACAC,GAAAF,EAAAC,GAAA,GAEArc,KAAA,KAq0DAquB,GAAAyrB,QA/yDA,SAAA15C,EAAAskC,EAAApD,GAEA,IADAlhC,EAAA0F,GAAA1F,MACAkhC,GAAAoD,IAAAjuC,GACA,OAAA2J,EAAAI,QAAAmU,GAAA,IAEA,IAAAvU,KAAAskC,EAAA/F,GAAA+F,IACA,OAAAtkC,EAEA,IAAAgc,EAAAqN,GAAArpB,GAGA,OAAAw/B,GAAAxjB,EAAA,EAFAE,GAAAF,EAAAqN,GAAAib,IAAA,GAEA1kC,KAAA,KAqyDAquB,GAAA0rB,UA/wDA,SAAA35C,EAAAskC,EAAApD,GAEA,IADAlhC,EAAA0F,GAAA1F,MACAkhC,GAAAoD,IAAAjuC,GACA,OAAA2J,EAAAI,QAAAkU,GAAA,IAEA,IAAAtU,KAAAskC,EAAA/F,GAAA+F,IACA,OAAAtkC,EAEA,IAAAgc,EAAAqN,GAAArpB,GAGA,OAAAw/B,GAAAxjB,EAFAD,GAAAC,EAAAqN,GAAAib,KAEA1kC,KAAA,KAqwDAquB,GAAA2rB,SA7tDA,SAAA55C,EAAAsqC,GACA,IAAApwC,EAAAqW,EACAspC,EAAArpC,EAEA,GAAAjZ,GAAA+yC,GAAA,CACA,IAAAp+B,EAAA,cAAAo+B,IAAAp+B,YACAhS,EAAA,WAAAowC,EAAAzyC,GAAAyyC,EAAApwC,UACA2/C,EAAA,aAAAvP,EAAA/L,GAAA+L,EAAAuP,YAIA,IAAApC,GAFAz3C,EAAA0F,GAAA1F,IAEA9F,OACA,GAAAuuB,GAAAzoB,GAAA,CACA,IAAAgc,EAAAqN,GAAArpB,GACAy3C,EAAAz7B,EAAA9hB,OAEA,GAAAA,GAAAu9C,EACA,OAAAz3C,EAEA,IAAA0M,EAAAxS,EAAAgvB,GAAA2wB,GACA,GAAAntC,EAAA,EACA,OAAAmtC,EAEA,IAAAp0C,EAAAuW,EACAwjB,GAAAxjB,EAAA,EAAAtP,GAAA9M,KAAA,IACAI,EAAAnH,MAAA,EAAA6T,GAEA,GAAAR,IAAA7V,EACA,OAAAoP,EAAAo0C,EAKA,GAHA79B,IACAtP,GAAAjH,EAAAvL,OAAAwS,GAEA4M,GAAApN,IACA,GAAAlM,EAAAnH,MAAA6T,GAAAotC,OAAA5tC,GAAA,CACA,IAAAod,EACAywB,EAAAt0C,EAMA,IAJAyG,EAAApX,SACAoX,EAAAyH,GAAAzH,EAAA7W,OAAAqQ,GAAAoP,GAAAzd,KAAA6U,IAAA,MAEAA,EAAAid,UAAA,EACAG,EAAApd,EAAA7U,KAAA0iD,IACA,IAAAC,EAAA1wB,EAAA3qB,MAEA8G,IAAA5M,MAAA,EAAAmhD,IAAA3jD,EAAAqW,EAAAstC,SAEO,GAAAh6C,EAAA+L,QAAAwyB,GAAAryB,GAAAQ,MAAA,CACP,IAAA/N,EAAA8G,EAAA8C,YAAA2D,GACAvN,GAAA,IACA8G,IAAA5M,MAAA,EAAA8F,IAGA,OAAA8G,EAAAo0C,GAyqDA5rB,GAAAgsB,SAnpDA,SAAAj6C,GAEA,OADAA,EAAA0F,GAAA1F,KACA0T,GAAApT,KAAAN,GACAA,EAAAI,QAAAoT,GAAAiW,IACAzpB,GAgpDAiuB,GAAAisB,SAvpBA,SAAAC,GACA,IAAAxjD,IAAA8zB,GACA,OAAA/kB,GAAAy0C,GAAAxjD,GAspBAs3B,GAAA8gB,aACA9gB,GAAAwgB,cAGAxgB,GAAAmsB,KAAAtuC,GACAmiB,GAAAosB,UAAAxQ,GACA5b,GAAAqsB,MAAAlS,GAEAuH,GAAA1hB,IACA54B,GAAA,GACA0/B,GAAA9G,GAAA,SAAAltB,EAAAugC,GACA3sC,GAAA1B,KAAAg7B,GAAAv5B,UAAA4sC,KACAjsC,GAAAisC,GAAAvgC,KAGA1L,IACK,CAAMm0C,OAAA,IAWXvb,GAAAssB,QA98gBA,UAi9gBAvgC,GAAA,0EAAAsnB,GACArT,GAAAqT,GAAAvY,YAAAkF,KAIAjU,GAAA,yBAAAsnB,EAAA3iC,GACAyvB,GAAA15B,UAAA4sC,GAAA,SAAA/sC,GACAA,MAAA8B,EAAA,EAAAm2B,GAAA30B,GAAAtD,GAAA,GAEA,IAAAkR,EAAA3O,KAAAk4B,eAAArwB,EACA,IAAAyvB,GAAAt3B,MACAA,KAAAixC,QAUA,OARAtiC,EAAAupB,aACAvpB,EAAAypB,cAAAxC,GAAAn4B,EAAAkR,EAAAypB,eAEAzpB,EAAA0pB,UAAAjzB,KAAA,CACAysB,KAAA+D,GAAAn4B,EAAA0c,GACA7b,KAAAksC,GAAA77B,EAAAspB,QAAA,gBAGAtpB,GAGA2oB,GAAA15B,UAAA4sC,EAAA,kBAAA/sC,GACA,OAAAuC,KAAAsV,UAAAk1B,GAAA/sC,GAAA6X,aAKA4N,GAAA,sCAAAsnB,EAAA3iC,GACA,IAAAvJ,EAAAuJ,EAAA,EACA67C,EAAAplD,GAAAub,GA/7gBA,GA+7gBAvb,EAEAg5B,GAAA15B,UAAA4sC,GAAA,SAAAxnB,GACA,IAAArU,EAAA3O,KAAAixC,QAMA,OALAtiC,EAAAwpB,cAAA/yB,KAAA,CACA4d,SAAA0hB,GAAA1hB,EAAA,GACA1kB,SAEAqQ,EAAAupB,aAAAvpB,EAAAupB,cAAAwrB,EACA/0C,KAKAuU,GAAA,yBAAAsnB,EAAA3iC,GACA,IAAA87C,EAAA,QAAA97C,EAAA,YAEAyvB,GAAA15B,UAAA4sC,GAAA,WACA,OAAAxqC,KAAA2jD,GAAA,GAAA1mD,QAAA,MAKAimB,GAAA,4BAAAsnB,EAAA3iC,GACA,IAAA+7C,EAAA,QAAA/7C,EAAA,YAEAyvB,GAAA15B,UAAA4sC,GAAA,WACA,OAAAxqC,KAAAk4B,aAAA,IAAAZ,GAAAt3B,WAAA4jD,GAAA,MAIAtsB,GAAA15B,UAAAs8C,QAAA,WACA,OAAAl6C,KAAA4U,OAAAguB,KAGAtL,GAAA15B,UAAAiX,KAAA,SAAAC,GACA,OAAA9U,KAAA4U,OAAAE,GAAAw8B,QAGAha,GAAA15B,UAAAk1C,SAAA,SAAAh+B,GACA,OAAA9U,KAAAsV,UAAAT,KAAAC,IAGAwiB,GAAA15B,UAAAq1C,UAAArN,GAAA,SAAA3G,EAAAt7B,GACA,yBAAAs7B,EACA,IAAA3H,GAAAt3B,MAEAA,KAAAqV,IAAA,SAAApY,GACA,OAAAujC,GAAAvjC,EAAAgiC,EAAAt7B,OAIA2zB,GAAA15B,UAAAq+C,OAAA,SAAAnnC,GACA,OAAA9U,KAAA4U,OAAAsgC,GAAAxQ,GAAA5vB,MAGAwiB,GAAA15B,UAAAmE,MAAA,SAAA0S,EAAAmB,GACAnB,EAAA1T,GAAA0T,GAEA,IAAA9F,EAAA3O,KACA,OAAA2O,EAAAupB,eAAAzjB,EAAA,GAAAmB,EAAA,GACA,IAAA0hB,GAAA3oB,IAEA8F,EAAA,EACA9F,IAAAkuC,WAAApoC,GACOA,IACP9F,IAAA8rC,KAAAhmC,IAEAmB,IAAArW,IAEAoP,GADAiH,EAAA7U,GAAA6U,IACA,EAAAjH,EAAA+rC,WAAA9kC,GAAAjH,EAAAiuC,KAAAhnC,EAAAnB,IAEA9F,IAGA2oB,GAAA15B,UAAAk/C,eAAA,SAAAhoC,GACA,OAAA9U,KAAAsV,UAAAynC,UAAAjoC,GAAAQ,WAGAgiB,GAAA15B,UAAAq4C,QAAA,WACA,OAAAj2C,KAAA48C,KAAAziC,IAIA8jB,GAAA3G,GAAA15B,UAAA,SAAAqM,EAAAugC,GACA,IAAAqZ,EAAA,qCAAAr6C,KAAAghC,GACAsZ,EAAA,kBAAAt6C,KAAAghC,GACAuZ,EAAA5sB,GAAA2sB,EAAA,gBAAAtZ,EAAA,YAAAA,GACAwZ,EAAAF,GAAA,QAAAt6C,KAAAghC,GAEAuZ,IAGA5sB,GAAAv5B,UAAA4sC,GAAA,WACA,IAAAvtC,EAAA+C,KAAA43B,YACAj0B,EAAAmgD,EAAA,IAAAzhD,UACA4hD,EAAAhnD,aAAAq6B,GACAtU,EAAArf,EAAA,GACAugD,EAAAD,GAAA5sB,GAAAp6B,GAEA01C,EAAA,SAAA11C,GACA,IAAA0R,EAAAo1C,EAAA3hD,MAAA+0B,GAAA1T,GAAA,CAAAxmB,GAAA0G,IACA,OAAAmgD,GAAAnsB,EAAAhpB,EAAA,GAAAA,GAGAu1C,GAAAL,GAAA,mBAAA7gC,GAAA,GAAAA,EAAA5f,SAEA6gD,EAAAC,GAAA,GAEA,IAAAvsB,EAAA33B,KAAA83B,UACAqsB,IAAAnkD,KAAA63B,YAAAz0B,OACAghD,EAAAJ,IAAArsB,EACA0sB,EAAAJ,IAAAE,EAEA,IAAAH,GAAAE,EAAA,CACAjnD,EAAAonD,EAAApnD,EAAA,IAAAq6B,GAAAt3B,MACA,IAAA2O,EAAA1E,EAAA7H,MAAAnF,EAAA0G,GAEA,OADAgL,EAAAkpB,YAAAzyB,KAAA,CAAmC6E,KAAAshC,GAAA5nC,KAAA,CAAAgvC,GAAA9vB,QAAAtjB,IACnC,IAAAg4B,GAAA5oB,EAAAgpB,GAEA,OAAAysB,GAAAC,EACAp6C,EAAA7H,MAAApC,KAAA2D,IAEAgL,EAAA3O,KAAAurC,KAAAoH,GACAyR,EAAAN,EAAAn1C,EAAA1R,QAAA,GAAA0R,EAAA1R,QAAA0R,OAKAuU,GAAA,0DAAAsnB,GACA,IAAAvgC,EAAAqpB,GAAAkX,GACA8Z,EAAA,0BAAA96C,KAAAghC,GAAA,aACAwZ,EAAA,kBAAAx6C,KAAAghC,GAEArT,GAAAv5B,UAAA4sC,GAAA,WACA,IAAA7mC,EAAAtB,UACA,GAAA2hD,IAAAhkD,KAAA83B,UAAA,CACA,IAAA76B,EAAA+C,KAAA/C,QACA,OAAAgN,EAAA7H,MAAAi1B,GAAAp6B,KAAA,GAAA0G,GAEA,OAAA3D,KAAAskD,GAAA,SAAArnD,GACA,OAAAgN,EAAA7H,MAAAi1B,GAAAp6B,KAAA,GAAA0G,QAMAs6B,GAAA3G,GAAA15B,UAAA,SAAAqM,EAAAugC,GACA,IAAAuZ,EAAA5sB,GAAAqT,GACA,GAAAuZ,EAAA,CACA,IAAAxmD,EAAAwmD,EAAAxnD,KAAA,GACAsB,GAAA1B,KAAAq6B,GAAAj5B,KACAi5B,GAAAj5B,GAAA,IAEAi5B,GAAAj5B,GAAA6H,KAAA,CAA6B7I,KAAAiuC,EAAAvgC,KAAA85C,OAI7BvtB,GAAAqV,GAAAtsC,EAAAyZ,GAAAzc,MAAA,EACAA,KAAA,UACA0N,KAAA1K,IAIA+3B,GAAA15B,UAAAqzC,MAz5dA,WACA,IAAAtiC,EAAA,IAAA2oB,GAAAt3B,KAAA43B,aAOA,OANAjpB,EAAAkpB,YAAA+B,GAAA55B,KAAA63B,aACAlpB,EAAAspB,QAAAj4B,KAAAi4B,QACAtpB,EAAAupB,aAAAl4B,KAAAk4B,aACAvpB,EAAAwpB,cAAAyB,GAAA55B,KAAAm4B,eACAxpB,EAAAypB,cAAAp4B,KAAAo4B,cACAzpB,EAAA0pB,UAAAuB,GAAA55B,KAAAq4B,WACA1pB,GAk5dA2oB,GAAA15B,UAAA0X,QAv4dA,WACA,GAAAtV,KAAAk4B,aAAA,CACA,IAAAvpB,EAAA,IAAA2oB,GAAAt3B,MACA2O,EAAAspB,SAAA,EACAtpB,EAAAupB,cAAA,OAEAvpB,EAAA3O,KAAAixC,SACAhZ,UAAA,EAEA,OAAAtpB,GA+3dA2oB,GAAA15B,UAAAX,MAp3dA,WACA,IAAA8lB,EAAA/iB,KAAA43B,YAAA36B,QACAsnD,EAAAvkD,KAAAi4B,QACAgB,EAAA5B,GAAAtU,GACAyhC,EAAAD,EAAA,EACA3X,EAAA3T,EAAAlW,EAAA3f,OAAA,EACAqhD,EAwoIA,SAAAhwC,EAAAmB,EAAAw/B,GAIA,IAHA,IAAAvtC,GAAA,EACAzE,EAAAgyC,EAAAhyC,SAEAyE,EAAAzE,GAAA,CACA,IAAAtD,EAAAs1C,EAAAvtC,GACAgqB,EAAA/xB,EAAA+xB,KAEA,OAAA/xB,EAAAxB,MACA,WAAAmW,GAAAod,EAA0C,MAC1C,gBAAAjc,GAAAic,EAAwC,MACxC,WAAAjc,EAAAggB,GAAAhgB,EAAAnB,EAAAod,GAA+D,MAC/D,gBAAApd,EAAAihB,GAAAjhB,EAAAmB,EAAAic,IAGA,OAAcpd,QAAAmB,OAvpId8uC,CAAA,EAAA9X,EAAA5sC,KAAAq4B,WACA5jB,EAAAgwC,EAAAhwC,MACAmB,EAAA6uC,EAAA7uC,IACAxS,EAAAwS,EAAAnB,EACA5M,EAAA28C,EAAA5uC,EAAAnB,EAAA,EACA+vB,EAAAxkC,KAAAm4B,cACAwsB,EAAAngB,EAAAphC,OACAggB,EAAA,EACAwhC,EAAAhvB,GAAAxyB,EAAApD,KAAAo4B,eAEA,IAAAa,IAAAurB,GAAA5X,GAAAxpC,GAAAwhD,GAAAxhD,EACA,OAAA6kC,GAAAllB,EAAA/iB,KAAA63B,aAEA,IAAAlpB,EAAA,GAEAyuB,EACA,KAAAh6B,KAAAggB,EAAAwhC,GAAA,CAMA,IAHA,IAAAC,GAAA,EACA5nD,EAAA8lB,EAHAlb,GAAA08C,KAKAM,EAAAF,GAAA,CACA,IAAA7kD,EAAA0kC,EAAAqgB,GACA7hC,EAAAljB,EAAAkjB,SACA1kB,EAAAwB,EAAAxB,KACA++B,EAAAra,EAAA/lB,GAEA,GAAAqB,GAAAwb,EACA7c,EAAAogC,OACW,IAAAA,EAAA,CACX,GAAA/+B,GAAAub,EACA,SAAAujB,EAEA,MAAAA,GAIAzuB,EAAAyU,KAAAnmB,EAEA,OAAA0R,GAy0dAwoB,GAAAv5B,UAAA64C,GAAA7D,GACAzb,GAAAv5B,UAAA80C,MAzgQA,WACA,OAAAA,GAAA1yC,OAygQAm3B,GAAAv5B,UAAAknD,OA5+PA,WACA,WAAAvtB,GAAAv3B,KAAA/C,QAAA+C,KAAA83B,YA4+PAX,GAAAv5B,UAAA8M,KAn9PA,WACA1K,KAAAg4B,aAAAz4B,IACAS,KAAAg4B,WAAAie,GAAAj2C,KAAA/C,UAEA,IAAA0N,EAAA3K,KAAA+3B,WAAA/3B,KAAAg4B,WAAA50B,OAGA,OAAcuH,OAAA1N,MAFd0N,EAAApL,EAAAS,KAAAg4B,WAAAh4B,KAAA+3B,eA+8PAZ,GAAAv5B,UAAAguC,MA55PA,SAAA3uC,GAIA,IAHA,IAAA0R,EACA8xB,EAAAzgC,KAEAygC,aAAA/I,IAAA,CACA,IAAAuZ,EAAAzZ,GAAAiJ,GACAwQ,EAAAlZ,UAAA,EACAkZ,EAAAjZ,WAAAz4B,EACAoP,EACA82B,EAAA7N,YAAAqZ,EAEAtiC,EAAAsiC,EAEA,IAAAxL,EAAAwL,EACAxQ,IAAA7I,YAGA,OADA6N,EAAA7N,YAAA36B,EACA0R,GA44PAwoB,GAAAv5B,UAAA0X,QAr3PA,WACA,IAAArY,EAAA+C,KAAA43B,YACA,GAAA36B,aAAAq6B,GAAA,CACA,IAAAxxB,EAAA7I,EAUA,OATA+C,KAAA63B,YAAAz0B,SACA0C,EAAA,IAAAwxB,GAAAt3B,QAEA8F,IAAAwP,WACAuiB,YAAAzyB,KAAA,CACA6E,KAAAshC,GACA5nC,KAAA,CAAA2R,IACAuN,QAAAtjB,IAEA,IAAAg4B,GAAAzxB,EAAA9F,KAAA83B,WAEA,OAAA93B,KAAAurC,KAAAj2B,KAu2PA6hB,GAAAv5B,UAAAmnD,OAAA5tB,GAAAv5B,UAAAq5B,QAAAE,GAAAv5B,UAAAX,MAt1PA,WACA,OAAAgrC,GAAAjoC,KAAA43B,YAAA53B,KAAA63B,cAw1PAV,GAAAv5B,UAAA4lD,MAAArsB,GAAAv5B,UAAA0zC,KAEA5c,KACAyC,GAAAv5B,UAAA82B,IAh8PA,WACA,OAAA10B,OAi8PAm3B,GAMAjE,GAQA5R,GAAA2R,MAII9a,EAAA,WACJ,OAAA8a,IACK92B,KAAAL,EAAAF,EAAAE,EAAAC,MAAAwD,IAAAxD,EAAAD,QAAAqc,KAaJhc,KAAA6D,iRC5shBoBglD,aACnB,SAAAA,EAAaC,EAASC,EAAO/6C,gGAASpK,CAAAC,KAAAglD,GACpChlD,KAAKilD,QAAUA,EACfjlD,KAAKklD,MAAQA,EACbllD,KAAKmK,QAAUA,kEAkDCS,GAChB,OAAO5K,KAAKmK,QAAQ0K,KAAK,SAAA1T,GAAC,OAAgC,IAA5BA,EAAE5E,KAAK0Y,QAAQrK,4CAG/Bu6C,GAEd,IAAKA,GAAcnlD,KAAKH,KAAOslD,EAAWtlD,GACxC,OAAO,EAIT,IAAKG,KAAKolD,SACR,OAAO,EAIT,IAAKplD,KAAKqlD,gBACR,OAAO,EAIT,IAAIC,EAAWtlD,KAAKs6C,WAAL,cAAmC,GAGlDgL,EAAWA,EAASjwC,IAAI,SAAAvX,GAAC,MAAK,CAC5BynD,kBAAmBznD,EAAE0nD,mBACrBC,SAAW3nD,EAAE4nD,iBAAmB5nD,EAAE4nD,gBAAgBC,kBAAqB,KACvEC,gBAAkB9nD,EAAE4nD,iBAAmB5nD,EAAE4nD,gBAAgBG,2BAA6B,KAvB9D,IAAAz7C,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IA2B1B,QAAAgL,EAAAC,EAAmB86C,EAAnBvoD,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAA6B,CAE3B,GAF2BG,EAAAtN,MAEhBsoD,oBAAsBJ,EAAW7K,WAAWkL,mBACrD,OAAO,GA9Be,MAAA7iD,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAmC1B,OAAO,6CAKP,QAAStK,KAAKklD,MAAMrwC,KAAK,SAAArT,GAAC,OAA2C,QAAtCA,EAAE84C,WAAWwL,YAAYC,UAA4D,YAAtCvkD,EAAE84C,WAAWwL,YAAYC,WAAkE,SAAvCvkD,EAAE84C,WAAWwL,YAAYE,uDAK3J,QAAShmD,KAAKklD,MAAMrwC,KAAK,SAAArT,GAAC,OAA2C,QAAtCA,EAAE84C,WAAWwL,YAAYC,UAA4D,YAAtCvkD,EAAE84C,WAAWwL,YAAYC,WAAkE,SAAvCvkD,EAAE84C,WAAWwL,YAAYE,6DAK3J,QAAShmD,KAAKklD,MAAMrwC,KAAK,SAAArT,GAAC,OAA2C,QAAtCA,EAAE84C,WAAWwL,YAAYC,UAA4D,YAAtCvkD,EAAE84C,WAAWwL,YAAYC,WAAkE,eAAvCvkD,EAAE84C,WAAWwL,YAAYE,uCApG3J,OAAOhmD,KAAKilD,QAAQplD,mCAIpB,OAAOG,KAAKilD,QAAL,4CAIP,OAAOjlD,KAAKilD,QAAQgB,4CAIpB,OAAOjmD,KAAKilD,QAAQhkD,qCAIpB,OAAOjB,KAAKilD,QAAQiB,yCAIpB,OAAOlmD,KAAKilD,QAAQkB,kDAIpB,OAAOnmD,KAAKilD,QAAQmB,iDAIpB,OAAOpmD,KAAKilD,QAAQ,qDAKpB,OAAkE,IAA3DjlD,KAAKs6C,WAAL,UAA6BrlC,QAAQ,yDAK5C,OAA+E,IAAxEjV,KAAKs6C,WAAL,UAA6BrlC,QAAQ,uEAK5C,OAA+E,GAAxEjV,KAAKs6C,WAAL,UAA6BrlC,QAAQ,qFC7DhD,IAAAxU,EAAe7E,EAAQ,GAGvBG,EAAAD,QAAA,SAAA4E,EAAA1B,GACA,IAAAyB,EAAAC,GAAA,OAAAA,EACA,IAAA0M,EAAAzE,EACA,GAAA3J,GAAA,mBAAAoO,EAAA1M,EAAAkO,YAAAnO,EAAAkI,EAAAyE,EAAAjR,KAAAuE,IAAA,OAAAiI,EACA,sBAAAyE,EAAA1M,EAAAu2B,WAAAx2B,EAAAkI,EAAAyE,EAAAjR,KAAAuE,IAAA,OAAAiI,EACA,IAAA3J,GAAA,mBAAAoO,EAAA1M,EAAAkO,YAAAnO,EAAAkI,EAAAyE,EAAAjR,KAAAuE,IAAA,OAAAiI,EACA,MAAAhI,UAAA,6DCVA,IAAA0lD,EAAWzqD,EAAQ,GAARA,CAAgB,QAC3B6E,EAAe7E,EAAQ,GACvByM,EAAUzM,EAAQ,IAClB0qD,EAAc1qD,EAAQ,IAAc4F,EACpC3B,EAAA,EACA0mD,EAAA7pD,OAAA6pD,cAAA,WACA,UAEAC,GAAc5qD,EAAQ,EAARA,CAAkB,WAChC,OAAA2qD,EAAA7pD,OAAA+pD,kBAAA,OAEAC,EAAA,SAAAhmD,GACA4lD,EAAA5lD,EAAA2lD,EAAA,CAAqBppD,MAAA,CACrBjB,EAAA,OAAA6D,EACAyF,EAAA,OAgCAqhD,EAAA5qD,EAAAD,QAAA,CACA8R,IAAAy4C,EACAO,MAAA,EACAC,QAhCA,SAAAnmD,EAAApD,GAEA,IAAAmD,EAAAC,GAAA,uBAAAA,KAAA,iBAAAA,EAAA,SAAAA,EACA,IAAA2H,EAAA3H,EAAA2lD,GAAA,CAEA,IAAAE,EAAA7lD,GAAA,UAEA,IAAApD,EAAA,UAEAopD,EAAAhmD,GAEG,OAAAA,EAAA2lD,GAAArqD,GAsBH8qD,QApBA,SAAApmD,EAAApD,GACA,IAAA+K,EAAA3H,EAAA2lD,GAAA,CAEA,IAAAE,EAAA7lD,GAAA,SAEA,IAAApD,EAAA,SAEAopD,EAAAhmD,GAEG,OAAAA,EAAA2lD,GAAA/gD,GAYHyhD,SATA,SAAArmD,GAEA,OADA8lD,GAAAG,EAAAC,MAAAL,EAAA7lD,KAAA2H,EAAA3H,EAAA2lD,IAAAK,EAAAhmD,GACAA,o8CCjCqBsmD,cACnB,SAAAA,EAAaC,GAAU,IAAAC,EAAA,mGAAAnnD,CAAAC,KAAAgnD,IACrBE,uEAAAC,CAAAnnD,KAAAonD,EAAAJ,GAAA7qD,KAAA6D,KAAMinD,KAGDI,eAAiB,GACtBH,EAAKI,cAAe,EACpBJ,EAAKK,kBAAmB,EAGxBL,EAAKM,mBAAqBN,EAAKM,mBAAmBhqD,KAAxBiqD,EAAAP,IAG1BA,EAAKQ,OAASR,EAAKD,SAASU,OAAOC,WACnCV,EAAKQ,OAAOG,UACZX,EAAKQ,OAAOI,iBAAiB,gBAAiBZ,EAAKM,oBAGnDO,IAAmBC,WAAWf,EAASU,QAAQM,UAA/CR,EAAAP,IAjBqBA,4PADiBgB,8CAuBtCC,EAAAf,EAAAJ,EAAAppD,WAAA,QAAAoC,MAAA7D,KAAA6D,MAEAA,KAAK0nD,OAAOU,oBAAoB,gBAAiBpoD,KAAKwnD,oBACtDO,IAAmBC,WAAWhoD,KAAKinD,SAASU,QAAQU,aAAaroD,8CAQjEA,KAAKsnD,cAAe,2CAUpBtnD,KAAKsnD,cAAe,EAGftnD,KAAKunD,kBACRvnD,KAAKsoD,gEAUWC,GAElBvoD,KAAKqnD,eAAejiD,KAAKmjD,GAGpBvoD,KAAKsnD,cAAiBtnD,KAAKunD,kBAC9BvnD,KAAKsoD,0LASHtoD,KAAKsnD,kEAKLtnD,KAAKunD,qEAGTvnD,KAAKunD,kBAAmB,EAGpBgB,EAAMvoD,KAAKqnD,eAAez/C,+BAI5B5H,KAAKunD,kBAAmB,sDASlBvnD,KAAKwoD,eAAeD,6DAK1B5mD,EAAQW,KAAK,sEAAwEmmD,EAAAC,GAAI9lD,QAAS2lD,WAKpGvoD,KAAKunD,kBAAmB,EACxBvnD,KAAKsoD,8LAUeC,qFAGA,gBAAhBA,EAAII,6DAIMJ,EAAItD,SAAWsD,EAAItD,QAAQplD,yBAEjC,IAAI4C,MAAJ,2DAIH8lD,EAAItD,QAAQ2D,iCACT,IAAInmD,MAAJ,uDAIRzC,KAAK6oD,cAAc,CAAC,CAClBhpD,GAAI0oD,EAAItD,QAAQplD,GAChBipD,SAAUP,EAAItD,QAAQ2D,oIAKrBlrD,GAEH,GAAoB,UAAhBA,EAAOY,KACT,OAAO,KAIT,IAAI4mD,EAAQljD,MAAMkW,KAAKlY,KAAK+oD,QAAQ33C,UAAUwD,OAAO,SAAAnY,GAAC,MAAe,SAAXA,EAAE6B,MAAmB7B,EAAEqD,KAAK8hD,WAAalkD,EAAOoC,KAAK,oBAAoB8hD,WAAUvsC,IAAI,SAAA5Y,GAAC,OAAIA,EAAEqD,OAGpJqK,EAAUnI,MAAMkW,KAAKlY,KAAK+oD,QAAQ33C,UAAUwD,OAAO,SAAAnY,GAAC,MAAe,WAAXA,EAAE6B,MAAqB7B,EAAEqD,KAAKvD,KAAKklD,WAAW/jD,EAAOoC,KAAK,oBAAoB8hD,SAAW,gBAAevsC,IAAI,SAAA5Y,GAAC,OAAIA,EAAEqD,OAG/K,OAAO,IAAIklD,IAAMtnD,EAAOoC,KAAMolD,EAAO/6C,mCAU9BzM,GAAQ,IAAAsrD,EAAAhpD,KAEXygC,EAAS/iC,EAAOoC,MAAQpC,EAAOoC,KAAK,qBAAuBpC,EAAOoC,KAAK,oBAAoBmpD,UAC3FxoB,GACF52B,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAIwoD,EAAK9jD,KAAK,iBAAkBu7B,KAG/C,IAAI0oB,EAAapB,IAAmBC,WAAWhoD,KAAKinD,SAASU,QAAQyB,QAAQv0C,KAAK,SAAAw0C,GAAC,OAAIA,EAAExpD,KAAOnC,EAAOmC,KACnGspD,GACFlS,gBAAMv5C,EAAOoC,KAAMqpD,EAAWL,mDAYhBprD,EAAQuwC,GAAS,IAAAqb,EAAAtpD,KAE7BupD,EAAY7rD,EAAOoC,MAAQpC,EAAOoC,KAAK,qBAAuBpC,EAAOoC,KAAK,oBAAoBmpD,UAC9FO,EAAYvb,GAAWA,EAAQ,qBAAuBA,EAAQ,oBAAoBgb,UAClFO,GAAa3/C,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAI8oD,EAAKpkD,KAAK,iBAAkBqkD,KAC1DC,GAAa3/C,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAI8oD,EAAKpkD,KAAK,iBAAkBskD,6CAa/C9rD,EAAQ+rD,EAASC,EAAU1lB,GAAU,IAAA2lB,EAAA3pD,KAEpC,+BAAZypD,IAIJ5/C,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAImpD,EAAKzkD,KAAK,iBAAkBwkD,KAC7C7/C,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAImpD,EAAKzkD,KAAK,iBAAkB8+B,yCAUnC4lB,GAAY,IAAAC,EAAA7pD,KAElBtC,EAASksD,EACa,iBAAfA,IACTlsD,EAASsC,KAAK+oD,QAAQlsD,IAAI+sD,IAG5B,IAAInpB,EAAS/iC,GAAUA,EAAOoC,MAAQpC,EAAOoC,KAAK,qBAAuBpC,EAAOoC,KAAK,oBAAoBmpD,UACrGxoB,GACF52B,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAIqpD,EAAK3kD,KAAK,iBAAkBu7B,4EClPnD1kC,EAAAD,QAAA,SAAAguD,EAAA7sD,GACA,OACAL,aAAA,EAAAktD,GACA5+C,eAAA,EAAA4+C,GACA7+C,WAAA,EAAA6+C,GACA7sD,yBCLA,IAAA4C,EAAA,EACAkqD,EAAA3pD,KAAA41B,SACAj6B,EAAAD,QAAA,SAAAyB,GACA,gBAAAwG,YAAAxE,IAAAhC,EAAA,GAAAA,EAAA,QAAAsC,EAAAkqD,GAAAn7C,SAAA,qBCHA7S,EAAAD,SAAA,mBCCA,IAAAkuD,EAAYpuD,EAAQ,KACpBquD,EAAkBruD,EAAQ,IAE1BG,EAAAD,QAAAY,OAAAwL,MAAA,SAAAzG,GACA,OAAAuoD,EAAAvoD,EAAAwoD,qBCLA,IAAAlpD,EAAgBnF,EAAQ,IACxB+5B,EAAAv1B,KAAAu1B,IACA30B,EAAAZ,KAAAY,IACAjF,EAAAD,QAAA,SAAA+L,EAAAzE,GAEA,OADAyE,EAAA9G,EAAA8G,IACA,EAAA8tB,EAAA9tB,EAAAzE,EAAA,GAAApC,EAAA6G,EAAAzE,qBCJA,IAAAhC,EAAexF,EAAQ,GACvBsuD,EAAUtuD,EAAQ,KAClBquD,EAAkBruD,EAAQ,IAC1Bi4B,EAAej4B,EAAQ,GAARA,CAAuB,YACtCuuD,EAAA,aAIAC,EAAA,WAEA,IAIAC,EAJAC,EAAe1uD,EAAQ,GAARA,CAAuB,UACtCI,EAAAiuD,EAAA7mD,OAcA,IAVAknD,EAAAC,MAAAC,QAAA,OACE5uD,EAAQ,IAAS8Q,YAAA49C,GACnBA,EAAAn0C,IAAA,eAGAk0C,EAAAC,EAAAG,cAAA3+C,UACA4+C,OACAL,EAAAM,MAAA5U,uCACAsU,EAAAO,QACAR,EAAAC,EAAAzrD,EACA5C,YAAAouD,EAAA,UAAAH,EAAAjuD,IACA,OAAAouD,KAGAruD,EAAAD,QAAAY,OAAAY,QAAA,SAAAmE,EAAAopD,GACA,IAAAl8C,EAQA,OAPA,OAAAlN,GACA0oD,EAAA,UAAA/oD,EAAAK,GACAkN,EAAA,IAAAw7C,EACAA,EAAA,eAEAx7C,EAAAklB,GAAApyB,GACGkN,EAAAy7C,SACH7qD,IAAAsrD,EAAAl8C,EAAAu7C,EAAAv7C,EAAAk8C,qBCtCA,IAAAb,EAAYpuD,EAAQ,KACpBkvD,EAAiBlvD,EAAQ,IAAkBmI,OAAA,sBAE3CjI,EAAA0F,EAAA9E,OAAAoH,qBAAA,SAAArC,GACA,OAAAuoD,EAAAvoD,EAAAqpD,qBCJA,IAAAziD,EAAUzM,EAAQ,IAClBiS,EAAejS,EAAQ,IACvBi4B,EAAej4B,EAAQ,GAARA,CAAuB,YACtCmvD,EAAAruD,OAAAkB,UAEA7B,EAAAD,QAAAY,OAAAiK,gBAAA,SAAAlF,GAEA,OADAA,EAAAoM,EAAApM,GACA4G,EAAA5G,EAAAoyB,GAAApyB,EAAAoyB,GACA,mBAAApyB,EAAAuJ,aAAAvJ,eAAAuJ,YACAvJ,EAAAuJ,YAAApN,UACG6D,aAAA/E,OAAAquD,EAAA,uBCVH,IAAAC,EAAkBpvD,EAAQ,EAARA,CAAgB,eAClC0U,EAAAtO,MAAApE,UACA2B,MAAA+Q,EAAA06C,IAA0CpvD,EAAQ,GAARA,CAAiB0U,EAAA06C,EAAA,IAC3DjvD,EAAAD,QAAA,SAAAyB,GACA+S,EAAA06C,GAAAztD,IAAA,oBCLA,IAAAkD,EAAe7E,EAAQ,GACvBG,EAAAD,QAAA,SAAA4E,EAAAsN,GACA,IAAAvN,EAAAC,MAAAuqD,KAAAj9C,EAAA,MAAArN,UAAA,0BAAAqN,EAAA,cACA,OAAAtN,iCCDA3E,EAAAD,QAEA,SAAAovD,GACA,kBACA,IAAAhkD,EAAA7E,UAAAe,OACA,GAAA8D,EAAA,CAGA,IAFA,IAAAvD,EAAA,GACA3H,GAAA,IACAA,EAAAkL,GACAvD,EAAA3H,GAAAqG,UAAArG,GAEA,OAAAkvD,EAAA/uD,KAAA6D,KAAA2D,GAEA,OAAAunD,EAAA/uD,KAAA6D,KAAA,qBCfA,IAAAmrD,EAGAA,EAAA,WACA,OAAAnrD,KADA,GAIA,IAEAmrD,KAAA,IAAA3rD,SAAA,iBACC,MAAAgB,GAED,iBAAAL,SAAAgrD,EAAAhrD,QAOApE,EAAAD,QAAAqvD,mBCnBA,IAAAC,EAAUxvD,EAAQ,IAAc4F,EAChC6G,EAAUzM,EAAQ,IAClB0W,EAAU1W,EAAQ,EAARA,CAAgB,eAE1BG,EAAAD,QAAA,SAAA4E,EAAAyI,EAAAkiD,GACA3qD,IAAA2H,EAAA3H,EAAA2qD,EAAA3qD,IAAA9C,UAAA0U,IAAA84C,EAAA1qD,EAAA4R,EAAA,CAAoEpH,cAAA,EAAAjO,MAAAkM,sBCLpE,IAAA9K,EAAczC,EAAQ,GACtB0H,EAAc1H,EAAQ,IACtBmN,EAAYnN,EAAQ,GACpB0vD,EAAa1vD,EAAQ,IACrB2vD,EAAA,IAAAD,EAAA,IAEAE,EAAA3uC,OAAA,IAAA0uC,IAAA,KACAE,EAAA5uC,OAAA0uC,IAAA,MAEAG,EAAA,SAAA99C,EAAArN,EAAAorD,GACA,IAAAjtD,EAAA,GACAktD,EAAA7iD,EAAA,WACA,QAAAuiD,EAAA19C,MAPA,WAOAA,OAEAR,EAAA1O,EAAAkP,GAAAg+C,EAAArrD,EAAAoiD,GAAA2I,EAAA19C,GACA+9C,IAAAjtD,EAAAitD,GAAAv+C,GACA/O,IAAAa,EAAAb,EAAAO,EAAAgtD,EAAA,SAAAltD,IAMAikD,EAAA+I,EAAA/I,KAAA,SAAAz5C,EAAA8E,GAIA,OAHA9E,EAAA3D,OAAAjC,EAAA4F,IACA,EAAA8E,IAAA9E,IAAAI,QAAAkiD,EAAA,KACA,EAAAx9C,IAAA9E,IAAAI,QAAAmiD,EAAA,KACAviD,GAGAnN,EAAAD,QAAA4vD,iBC7BA3vD,EAAAD,QAAA,iCCCA,IAAAkC,EAAapC,EAAQ,GACrB2F,EAAS3F,EAAQ,IACjBiwD,EAAkBjwD,EAAQ,GAC1BkwD,EAAclwD,EAAQ,EAARA,CAAgB,WAE9BG,EAAAD,QAAA,SAAA8R,GACA,IAAA4F,EAAAxV,EAAA4P,GACAi+C,GAAAr4C,MAAAs4C,IAAAvqD,EAAAC,EAAAgS,EAAAs4C,EAAA,CACA5gD,cAAA,EACArO,IAAA,WAAsB,OAAAmD,wBCVtBjE,EAAAD,QAAA,SAAA4E,EAAAqrD,EAAAxvD,EAAAyvD,GACA,KAAAtrD,aAAAqrD,SAAAxsD,IAAAysD,QAAAtrD,EACA,MAAAC,UAAApE,EAAA,2BACG,OAAAmE,oBCHH,IAAAvC,EAAevC,EAAQ,IACvBG,EAAAD,QAAA,SAAAuD,EAAA8W,EAAAvN,GACA,QAAArL,KAAA4Y,EAAAhY,EAAAkB,EAAA9B,EAAA4Y,EAAA5Y,GAAAqL,GACA,OAAAvJ,iCCDA,IAAA4sD,EAAwBrwD,EAAQ,KAEhC,SAAAswD,EAAAtpD,GACA5C,KAAA4C,UAGAspD,EAAAtuD,UAAA,IAAA6E,MACAypD,EAAAtuD,UAAArB,KAAA,oBAEAR,EAAAD,QAAA,SAAAqwD,EAAA3Y,GACA,oBAAA2Y,EACA,UAAAD,EAAA,2BAIA,IAAAE,GAAA,KADA5Y,KAAA,IACA6Y,OAAA,IACA,IACA,OAAAC,KAAAC,MAAAN,EAAAE,EAAA1jD,MAAA,KAAA2jD,KACG,MAAA5rD,GACH,UAAA0rD,EAAA,4BAAA1rD,EAAAoC,WAIA7G,EAAAD,QAAAowD,6MCEM/nD,oLAMEqoD,GAA4B,IAAAtF,EAAAlnD,KAAjB4qC,EAAiBvoC,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAAN,KAQ1B,OANArC,KAAKysD,sBAAwBzsD,KAAKysD,uBAAyB,GAG3DzsD,KAAKysD,sBAAsBD,GAAaxsD,KAAKysD,sBAAsBD,IAAc,GAG7E5hB,GAEF5qC,KAAKysD,sBAAsBD,GAAWpnD,KAAKwlC,GACpC,MAGF,IAAIzU,QAAQ,SAAC0Z,GAGlBA,EAAQ6c,iBAAkB,EAG1BxF,EAAKuF,sBAAsBD,GAAWpnD,KAAKyqC,kCAM7C,OAAO7vC,KAAK2sD,KAAKvqD,MAAMpC,KAAMqC,sDAI7B,OAAOrC,KAAK2sD,KAAKvqD,MAAMpC,KAAMqC,uDAIVmqD,EAAW5hB,GAE9B5qC,KAAKysD,sBAAwBzsD,KAAKysD,uBAAyB,GAG3DzsD,KAAKysD,sBAAsBD,GAAaxsD,KAAKysD,sBAAsBD,IAAc,GAGjF,IAAK,IAAIxwD,EAAI,EAAGA,EAAIgE,KAAKysD,sBAAsBD,GAAWppD,OAAQpH,GAAK,EACjEgE,KAAKysD,sBAAsBD,GAAWxwD,KAAO4uC,IAC/C5qC,KAAKysD,sBAAsBD,GAAWj4B,OAAOv4B,EAAG,GAChDA,GAAK,iCAMT,OAAOgE,KAAKooD,oBAAoBhmD,MAAMpC,KAAMqC,wCAIxCmqD,GAAW,IAAAxD,EAAAhpD,KAMT4sD,EAAa5sD,KAAKysD,uBAAyBzsD,KAAKysD,sBAAsBD,IAAe,GAEvFK,EAAgB7qD,MAAMkW,KAAK7V,WAAWN,MAAM,GAChD6qD,EAAU53C,QAAQ,SAAC41B,GACjBA,EAASxoC,MAAM4mD,EAAM6D,KAIvB,IAAK,IAAI7wD,EAAI,EAAGA,EAAI4wD,EAAUxpD,OAAQpH,GAAK,EACrC4wD,EAAU5wD,GAAG0wD,kBACfE,EAAUr4B,OAAOv4B,EAAG,GACpBA,GAAK,qCAOT,OAAOgE,KAAKkF,KAAK9C,MAAMpC,KAAMqC,kDAI7B,OAAOrC,KAAKkF,KAAK9C,MAAMpC,KAAMqC,gDAKjC8B,EAAa00C,MAAQ,SAA4BiU,GAE/C,IAAK,IAAMzV,KAAQlzC,EAAavG,UAE1BuG,EAAavG,UAAUC,eAAew5C,KAExCyV,EAAWzV,GAAQlzC,EAAavG,UAAUy5C,KAIhDt7C,EAAOD,QAAUqI,mBClIjB,IAAA4oD,EAAUnxD,EAAQ,IAElBG,EAAAD,QAAAY,OAAA,KAAA43B,qBAAA,GAAA53B,OAAA,SAAAgE,GACA,gBAAAqsD,EAAArsD,KAAA+H,MAAA,IAAA/L,OAAAgE,mBCJA5E,EAAA0F,EAAA,GAAc8yB,sCCCd,IAAAy4B,EAAUnxD,EAAQ,IAClB0W,EAAU1W,EAAQ,EAARA,CAAgB,eAE1BoxD,EAA+C,aAA/CD,EAAA,WAA2B,OAAA1qD,UAA3B,IASAtG,EAAAD,QAAA,SAAA4E,GACA,IAAAe,EAAAwrD,EAAA7tD,EACA,YAAAG,IAAAmB,EAAA,mBAAAA,EAAA,OAEA,iBAAAusD,EAVA,SAAAvsD,EAAAnD,GACA,IACA,OAAAmD,EAAAnD,GACG,MAAAiD,KAOH0sD,CAAAzrD,EAAA/E,OAAAgE,GAAA4R,IAAA26C,EAEAD,EAAAD,EAAAtrD,GAEA,WAAArC,EAAA2tD,EAAAtrD,KAAA,mBAAAA,EAAA0rD,OAAA,YAAA/tD,oBCpBA,IAAAgC,EAAexF,EAAQ,GACvBuR,EAAgBvR,EAAQ,IACxBkwD,EAAclwD,EAAQ,EAARA,CAAgB,WAC9BG,EAAAD,QAAA,SAAA2F,EAAA2rD,GACA,IACApuD,EADAwU,EAAApS,EAAAK,GAAAuJ,YAEA,YAAAzL,IAAAiU,GAAAjU,OAAAP,EAAAoC,EAAAoS,GAAAs4C,IAAAsB,EAAAjgD,EAAAnO,wPCMqBquD,aACnB,SAAAA,EAAaC,EAAIC,gGAAextD,CAAAC,KAAAqtD,GAC9BrtD,KAAKstD,GAAKA,EAEVttD,KAAKwtD,gBAAkBD,EACvBvtD,KAAKytD,QAAU,GACfztD,KAAKgzC,QAAU,CAACqa,EAASK,wBACzB1tD,KAAK2tD,MAAQ,KACb3tD,KAAK4tD,MAAO,EAGZ5tD,KAAK6tD,4BAIL7tD,KAAK8tD,QAAU,8DAIHC,EAAO9wD,EAAO+wD,EAAkBC,GAE5CjuD,KAAKytD,QAAQroD,KAAK,CAChB2oD,QACA9wD,QACAixD,UAAWF,GAAoBX,EAASc,gBAAgBC,MACxDC,QAASJ,GAAoBZ,EAASiB,iBAAiBC,sDAKlCC,GAEvBxuD,KAAK2tD,MAAQ,CACXpwD,IAAK8vD,EAASoB,mBACdxxD,MAAOuxD,uDAOTxuD,KAAK2tD,MAAQ,CACXpwD,IAAK8vD,EAASqB,WACdzxD,MAAO,iDAKDM,EAAKN,GAEb+C,KAAK2tD,MAAQ,CACXpwD,MACAN,8CAOF,GAAI+C,KAAKwtD,gBACP,OAAOxtD,KAAKwtD,gBAGd,IAAKxtD,KAAK2tD,MACR,MAAM,IAAIlrD,MAAM,kDAGlB,IAAMwiD,EAAU,GAuBhB,OAtBAA,EAAQ0I,MAAQ3tD,KAAK2tD,MAGjB3tD,KAAK8tD,QAAU,GAAK9tD,KAAKgzC,QAAQ5vC,OAAS,IAC5C6hD,EAAQ/D,OAASlhD,KAAK8tD,QACtB7I,EAAQ0J,SAAW3uD,KAAKgzC,SAItBhzC,KAAKytD,QAAQrqD,OAAS,IACxB6hD,EAAQwI,QAAU,CAAC,CACjBmB,aAAc5uD,KAAKytD,WAKvBxI,EAAO,OAAU,CACf3mD,KAAM,IACNuwD,OAAQ,IAIH5J,oCAMP,OAAOjlD,KAAKstD,GAAGwB,OAAOC,QAAQ,OAAQ,qBAAsB/uD,KAAKgvD,aAAchvD,KAAK4tD,MAAMqB,KAAK,SAACnvD,GAAS,IAC/FqK,EAA4BrK,EAA5BqK,QAAS+6C,EAAmBplD,EAAnBolD,MAAOgK,EAAYpvD,EAAZovD,QAElBC,EAAe,GACfC,EAAa,GACbC,EAAc,GALmFjlD,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAOvG,QAAAgL,EAAAC,EAAcL,EAAdpN,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAAuB,KAAdjJ,EAAcoJ,EAAAtN,MACfqyD,EAAQnuD,EAAE5E,KAAKkM,MAAM,cACrB8mD,EAAOD,EAAM,GACnBH,EAAa/pD,KAAK,CAChBw8C,SAAU2N,EACV3kD,OAAQ0kD,EAAM,GACd3I,KAAMxlD,EAAEwlD,KACRrM,WAAYn5C,EAAEm5C,cAdqF,MAAA33C,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAklD,GAAA,EAAAC,GAAA,EAAAC,OAAAnwD,EAAA,IAkBvG,QAAAowD,EAAAC,EAAc1K,EAAdnoD,OAAA0N,cAAA+kD,GAAAG,EAAAC,EAAAllD,QAAAC,MAAA6kD,GAAA,EAAqB,KAAZhuD,EAAYmuD,EAAA1yD,MACnBmyD,EAAWhqD,KAAK,CACdw8C,SAAUpgD,EAAEogD,SACZ/hD,GAAI2B,EAAE3B,GACN8mD,KAAMnlD,EAAEmlD,KACRrM,WAAY94C,EAAE84C,cAvBqF,MAAA33C,GAAA8sD,GAAA,EAAAC,EAAA/sD,EAAA,YAAA6sD,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAG,GAAA,EAAAC,GAAA,EAAAC,OAAAxwD,EAAA,IA2BvG,IA3BuG,IA2BvGywD,EA3BuGC,EAAA,eA2B9F54C,EA3B8F24C,EAAA/yD,MA4B7F2kD,EAAavqC,EAAE,oBAAfuqC,SACFsO,EAAM,IAAIlL,IAAM3tC,EAAG+3C,EAAWx6C,OAAO,SAAApT,GAAC,OAAIA,EAAEogD,WAAaA,IAAWuN,EAAav6C,OAAO,SAAAzT,GAAC,OAAIA,EAAEygD,WAAaA,KAClHyN,EAAYjqD,KAAK8qD,IAHnBC,EAAcjB,EAAdnyD,OAAA0N,cAAAolD,GAAAG,EAAAG,EAAAzlD,QAAAC,MAAAklD,GAAA,EAAuBI,IA3BgF,MAAAttD,GAAAmtD,GAAA,EAAAC,EAAAptD,EAAA,YAAAktD,GAAA,MAAAM,EAAA,QAAAA,EAAA,oBAAAL,EAAA,MAAAC,GAgCvG,OAAOV,oCAOT,IAAMpK,EAAUjlD,KAAKgvD,aAIrB,OAHA/J,EAAO,OAAQ3mD,KAAO,QAGf0B,KAAKstD,GAAGwB,OAAOC,QAAQ,OAAQ,qBAAsB9J,EAASjlD,KAAK4tD,MACvEqB,KAAK,SAAAnvD,GAAI,OAAIA,EAAK2F,OAAS,yCAKlC4nD,EAASc,gBAAkB,CACzBC,MAAO,KACPgC,YAAa,KACbC,eAAgB,KAChBC,SAAU,KACVC,YAAa,KACbC,SAAU,KACVC,MAAO,SAITpD,EAASiB,iBAAmB,CAC1BC,IAAK,MACLmC,GAAI,MAINrD,EAASsD,iBAAmB,+BAC5BtD,EAASuD,iBAAmB,eAC5BvD,EAASwD,QAAU,KACnBxD,EAASoB,mBAAqB,kCAC9BpB,EAASyD,cAAgB,4BACzBzD,EAASK,uBAAyB,sCAClCL,EAAS0D,oBAAsB,mCAC/B1D,EAASqB,WAAa,yBACtBrB,EAAS2D,cAAgB,+FC7KJC,EACnB,SAAAA,EAAaC,gGAAMnxD,CAAAC,KAAAixD,GACjBjxD,KAAKH,GAAKqxD,EAAKrxD,GACfG,KAAKmxD,UAAYD,EAAK5W,WAAW8W,WACjCpxD,KAAKqxD,SAAWH,EAAK5W,WAAWgX,UAChCtxD,KAAKuxD,WAAaL,EAAK5W,WAAWkX,YAClCxxD,KAAKyxD,UAAYP,EAAK5W,WAAWoX,WACjC1xD,KAAK2xD,aAAeT,EAAK5W,WAAWsX,cACpC5xD,KAAK6xD,SAAWX,EAAK5W,WAAWuX,SAChC7xD,KAAK8xD,SAAWZ,EAAK5W,WAAWwX,SAChC9xD,KAAK+xD,oBAAsBb,EAAK5W,WAAW0X,qBAC3ChyD,KAAKiyD,QAAUf,EAAK5W,WAAW4X,SAC/BlyD,KAAKmyD,cAAgBjB,EAAK5W,WAAW8X,gBACrCpyD,KAAKqyD,UAAYnB,EAAKoB,kBAAkBD,UACxCryD,KAAKuyD,QAAUrB,EAAKoB,kBAAkBE,SACtCxyD,KAAKyyD,WAAavB,EAAKoB,kBAAkBI,YACzC1yD,KAAK2yD,UAAYzB,EAAKoB,kBAAkBM,WACxC5yD,KAAK6yD,QAAU3B,EAAKoB,kBAAkBQ,SACtC9yD,KAAK+yD,WAAa7B,EAClBlxD,KAAKgzD,SAAW9B,EAAK5W,WAAW2Y,cAChCjzD,KAAK2mD,KAAO,CACVuM,UAAWhC,EAAKvK,KAAKwM,WACrBC,SAAUlC,EAAKvK,KAAK0M,UACpBC,WAAYpC,EAAKvK,KAAK4M,YACtBC,YAAatC,EAAKvK,KAAKR,aACvBsN,aAAcvC,EAAKvK,KAAKP,+BClC9B,IAOAsN,EACAC,EARA/xC,EAAA7lB,EAAAD,QAAA,GAUA,SAAA83D,IACA,UAAAnxD,MAAA,mCAEA,SAAAoxD,IACA,UAAApxD,MAAA,qCAsBA,SAAAqxD,EAAA5I,GACA,GAAAwI,IAAAxpD,WAEA,OAAAA,WAAAghD,EAAA,GAGA,IAAAwI,IAAAE,IAAAF,IAAAxpD,WAEA,OADAwpD,EAAAxpD,WACAA,WAAAghD,EAAA,GAEA,IAEA,OAAAwI,EAAAxI,EAAA,GACK,MAAA1qD,GACL,IAEA,OAAAkzD,EAAAv3D,KAAA,KAAA+uD,EAAA,GACS,MAAA1qD,GAET,OAAAkzD,EAAAv3D,KAAA6D,KAAAkrD,EAAA,MAvCA,WACA,IAEAwI,EADA,mBAAAxpD,WACAA,WAEA0pD,EAEK,MAAApzD,GACLkzD,EAAAE,EAEA,IAEAD,EADA,mBAAA7+B,aACAA,aAEA++B,EAEK,MAAArzD,GACLmzD,EAAAE,GAjBA,GAwEA,IAEAE,EAFA/mD,EAAA,GACA1B,GAAA,EAEA0oD,GAAA,EAEA,SAAAC,IACA3oD,GAAAyoD,IAGAzoD,GAAA,EACAyoD,EAAA3wD,OACA4J,EAAA+mD,EAAAhwD,OAAAiJ,GAEAgnD,GAAA,EAEAhnD,EAAA5J,QACA8wD,KAIA,SAAAA,IACA,IAAA5oD,EAAA,CAGA,IAAA6oD,EAAAL,EAAAG,GACA3oD,GAAA,EAGA,IADA,IAAApE,EAAA8F,EAAA5J,OACA8D,GAAA,CAGA,IAFA6sD,EAAA/mD,EACAA,EAAA,KACAgnD,EAAA9sD,GACA6sD,GACAA,EAAAC,GAAA9K,MAGA8K,GAAA,EACA9sD,EAAA8F,EAAA5J,OAEA2wD,EAAA,KACAzoD,GAAA,EAnEA,SAAA8oD,GACA,GAAAT,IAAA7+B,aAEA,OAAAA,aAAAs/B,GAGA,IAAAT,IAAAE,IAAAF,IAAA7+B,aAEA,OADA6+B,EAAA7+B,aACAA,aAAAs/B,GAEA,IAEAT,EAAAS,GACK,MAAA5zD,GACL,IAEA,OAAAmzD,EAAAx3D,KAAA,KAAAi4D,GACS,MAAA5zD,GAGT,OAAAmzD,EAAAx3D,KAAA6D,KAAAo0D,KAgDAC,CAAAF,IAiBA,SAAAG,EAAApJ,EAAAnoC,GACA/iB,KAAAkrD,MACAlrD,KAAA+iB,QAYA,SAAAwrB,KA5BA3sB,EAAAhW,SAAA,SAAAs/C,GACA,IAAAvnD,EAAA,IAAA3B,MAAAK,UAAAe,OAAA,GACA,GAAAf,UAAAe,OAAA,EACA,QAAApH,EAAA,EAAuBA,EAAAqG,UAAAe,OAAsBpH,IAC7C2H,EAAA3H,EAAA,GAAAqG,UAAArG,GAGAgR,EAAA5H,KAAA,IAAAkvD,EAAApJ,EAAAvnD,IACA,IAAAqJ,EAAA5J,QAAAkI,GACAwoD,EAAAI,IASAI,EAAA12D,UAAAsrD,IAAA,WACAlpD,KAAAkrD,IAAA9oD,MAAA,KAAApC,KAAA+iB,QAEAnB,EAAA2yC,MAAA,UACA3yC,EAAA4yC,SAAA,EACA5yC,EAAA6yC,IAAA,GACA7yC,EAAA8yC,KAAA,GACA9yC,EAAA3gB,QAAA,GACA2gB,EAAA+yC,SAAA,GAIA/yC,EAAAva,GAAAknC,EACA3sB,EAAAxa,YAAAmnC,EACA3sB,EAAAra,KAAAgnC,EACA3sB,EAAA5Z,IAAAumC,EACA3sB,EAAA7b,eAAAwoC,EACA3sB,EAAA3Z,mBAAAsmC,EACA3sB,EAAA1c,KAAAqpC,EACA3sB,EAAAta,gBAAAinC,EACA3sB,EAAApa,oBAAA+mC,EAEA3sB,EAAAza,UAAA,SAAA5K,GAAqC,UAErCqlB,EAAAI,QAAA,SAAAzlB,GACA,UAAAkG,MAAA,qCAGAmf,EAAAgzC,IAAA,WAA2B,WAC3BhzC,EAAAizC,MAAA,SAAAtQ,GACA,UAAA9hD,MAAA,mCAEAmf,EAAAkzC,MAAA,WAA4B,2BCvL5B,IAAA72D,EAAWrC,EAAQ,GACnBoC,EAAapC,EAAQ,GAErBgF,EAAA5C,EADA,wBACAA,EADA,sBACA,KAEAjC,EAAAD,QAAA,SAAAyB,EAAAN,GACA,OAAA2D,EAAArD,KAAAqD,EAAArD,QAAAgC,IAAAtC,IAAA,MACC,eAAAmI,KAAA,CACDnE,QAAAhD,EAAAgD,QACA9D,KAAQvB,EAAQ,IAAY,gBAC5Bm5D,UAAA,0DCRA,IAAAtnD,EAAgB7R,EAAQ,IACxBkS,EAAelS,EAAQ,GACvBwT,EAAsBxT,EAAQ,IAC9BG,EAAAD,QAAA,SAAAk5D,GACA,gBAAAxmD,EAAAymD,EAAAhxC,GACA,IAGAhnB,EAHAwE,EAAAgM,EAAAe,GACApL,EAAA0K,EAAArM,EAAA2B,QACAyE,EAAAuH,EAAA6U,EAAA7gB,GAIA,GAAA4xD,GAAAC,MAAA,KAAA7xD,EAAAyE,GAGA,IAFA5K,EAAAwE,EAAAoG,OAEA5K,EAAA,cAEK,KAAYmG,EAAAyE,EAAeA,IAAA,IAAAmtD,GAAAntD,KAAApG,IAChCA,EAAAoG,KAAAotD,EAAA,OAAAD,GAAAntD,GAAA,EACK,OAAAmtD,IAAA,mBCpBLl5D,EAAA0F,EAAA9E,OAAAmH,uCCCA,IAAAkpD,EAAUnxD,EAAQ,IAClBG,EAAAD,QAAAkG,MAAAq1B,SAAA,SAAA5wB,GACA,eAAAsmD,EAAAtmD,qBCHA,IAAA4L,EAAezW,EAAQ,EAARA,CAAgB,YAC/Bs5D,GAAA,EAEA,IACA,IAAAC,EAAA,IAAA9iD,KACA8iD,EAAA,kBAAiCD,GAAA,GAEjClzD,MAAAkW,KAAAi9C,EAAA,WAAiC,UAChC,MAAA30D,IAEDzE,EAAAD,QAAA,SAAAyE,EAAA60D,GACA,IAAAA,IAAAF,EAAA,SACA,IAAAtsD,GAAA,EACA,IACA,IAAA1F,EAAA,IACA2U,EAAA3U,EAAAmP,KACAwF,EAAAnN,KAAA,WAA6B,OAASC,KAAA/B,GAAA,IACtC1F,EAAAmP,GAAA,WAAiC,OAAAwF,GACjCtX,EAAA2C,GACG,MAAA1C,IACH,OAAAoI,iCClBA,IAAAxH,EAAexF,EAAQ,GACvBG,EAAAD,QAAA,WACA,IAAA4I,EAAAtD,EAAApB,MACA2O,EAAA,GAMA,OALAjK,EAAA1G,SAAA2Q,GAAA,KACAjK,EAAA2wD,aAAA1mD,GAAA,KACAjK,EAAA4wD,YAAA3mD,GAAA,KACAjK,EAAA6wD,UAAA5mD,GAAA,KACAjK,EAAA8wD,SAAA7mD,GAAA,KACAA,iCCTA,IAAAU,EAAczT,EAAQ,IACtB65D,EAAA54C,OAAAjf,UAAA2C,KAIAxE,EAAAD,QAAA,SAAA6D,EAAAX,GACA,IAAAuB,EAAAZ,EAAAY,KACA,sBAAAA,EAAA,CACA,IAAAoO,EAAApO,EAAApE,KAAAwD,EAAAX,GACA,oBAAA2P,EACA,UAAAhO,UAAA,sEAEA,OAAAgO,EAEA,cAAAU,EAAA1P,GACA,UAAAgB,UAAA,+CAEA,OAAA80D,EAAAt5D,KAAAwD,EAAAX,kCClBApD,EAAQ,KACR,IAAAuC,EAAevC,EAAQ,IACvBsC,EAAWtC,EAAQ,IACnBmN,EAAYnN,EAAQ,GACpB0H,EAAc1H,EAAQ,IACtB6T,EAAU7T,EAAQ,GAClB85D,EAAiB95D,EAAQ,KAEzBkwD,EAAAr8C,EAAA,WAEAkmD,GAAA5sD,EAAA,WAIA,IAAA6sD,EAAA,IAMA,OALAA,EAAAr1D,KAAA,WACA,IAAAoO,EAAA,GAEA,OADAA,EAAAknD,OAAA,CAAqB10D,EAAA,KACrBwN,GAEA,SAAArF,QAAAssD,EAAA,UAGAE,EAAA,WAEA,IAAAF,EAAA,OACAG,EAAAH,EAAAr1D,KACAq1D,EAAAr1D,KAAA,WAAyB,OAAAw1D,EAAA3zD,MAAApC,KAAAqC,YACzB,IAAAsM,EAAA,KAAAlG,MAAAmtD,GACA,WAAAjnD,EAAAvL,QAAA,MAAAuL,EAAA,UAAAA,EAAA,GANA,GASA5S,EAAAD,QAAA,SAAA8R,EAAAxK,EAAA7C,GACA,IAAAy1D,EAAAvmD,EAAA7B,GAEAqoD,GAAAltD,EAAA,WAEA,IAAAtH,EAAA,GAEA,OADAA,EAAAu0D,GAAA,WAA6B,UAC7B,MAAApoD,GAAAnM,KAGAy0D,EAAAD,GAAAltD,EAAA,WAEA,IAAAotD,GAAA,EACAP,EAAA,IASA,OARAA,EAAAr1D,KAAA,WAA8C,OAAnB41D,GAAA,EAAmB,MAC9C,UAAAvoD,IAGAgoD,EAAA5qD,YAAA,GACA4qD,EAAA5qD,YAAA8gD,GAAA,WAA6C,OAAA8J,IAE7CA,EAAAI,GAAA,KACAG,SACG52D,EAEH,IACA02D,IACAC,GACA,YAAAtoD,IAAA+nD,GACA,UAAA/nD,IAAAkoD,EACA,CACA,IAAAM,EAAA,IAAAJ,GACAK,EAAA91D,EACA+C,EACA0yD,EACA,GAAApoD,GACA,SAAA0oD,EAAA/5B,EAAAg6B,EAAAC,EAAAC,GACA,OAAAl6B,EAAAh8B,OAAAm1D,EACAO,IAAAQ,EAIA,CAAoB9rD,MAAA,EAAA1N,MAAAm5D,EAAAj6D,KAAAogC,EAAAg6B,EAAAC,IAEpB,CAAkB7rD,MAAA,EAAA1N,MAAAq5D,EAAAn6D,KAAAo6D,EAAAh6B,EAAAi6B,IAElB,CAAgB7rD,MAAA,KAGhB+rD,EAAAL,EAAA,GACAM,EAAAN,EAAA,GAEAl4D,EAAAoH,OAAA3H,UAAAgQ,EAAA8oD,GACAx4D,EAAA2e,OAAAjf,UAAAo4D,EAAA,GAAA5yD,EAGA,SAAA8F,EAAAzC,GAAgC,OAAAkwD,EAAAx6D,KAAA+M,EAAAlJ,KAAAyG,IAGhC,SAAAyC,GAA2B,OAAAytD,EAAAx6D,KAAA+M,EAAAlJ,2BC5F3B,IAAA5B,EAAUxC,EAAQ,IAClBO,EAAWP,EAAQ,KACnB0T,EAAkB1T,EAAQ,IAC1BwF,EAAexF,EAAQ,GACvBkS,EAAelS,EAAQ,GACvB4T,EAAgB5T,EAAQ,IACxBg7D,EAAA,GACAC,EAAA,IACA/6D,EAAAC,EAAAD,QAAA,SAAAwuC,EAAA/4B,EAAAnE,EAAA1I,EAAA2N,GACA,IAGAjP,EAAA2Q,EAAAtJ,EAAAkE,EAHAwF,EAAA9B,EAAA,WAAuC,OAAAi4B,GAAmB96B,EAAA86B,GAC1D9oC,EAAApD,EAAAgP,EAAA1I,EAAA6M,EAAA,KACA1J,EAAA,EAEA,sBAAAsM,EAAA,MAAAxT,UAAA2pC,EAAA,qBAEA,GAAAh7B,EAAA6E,IAAA,IAAA/Q,EAAA0K,EAAAw8B,EAAAlnC,QAAmEA,EAAAyE,EAAgBA,IAEnF,IADA8G,EAAA4C,EAAA/P,EAAAJ,EAAA2S,EAAAu2B,EAAAziC,IAAA,GAAAkM,EAAA,IAAAvS,EAAA8oC,EAAAziC,OACA+uD,GAAAjoD,IAAAkoD,EAAA,OAAAloD,OACG,IAAAlE,EAAA0J,EAAAhY,KAAAmuC,KAA4Cv2B,EAAAtJ,EAAAC,QAAAC,MAE/C,IADAgE,EAAAxS,EAAAsO,EAAAjJ,EAAAuS,EAAA9W,MAAAsU,MACAqlD,GAAAjoD,IAAAkoD,EAAA,OAAAloD,IAGAioD,QACA96D,EAAA+6D,0BCxBA,IACAC,EADal7D,EAAQ,GACrBk7D,UAEA/6D,EAAAD,QAAAg7D,KAAAC,WAAA,iCCFA,IAAA/4D,EAAapC,EAAQ,GACrByC,EAAczC,EAAQ,GACtBuC,EAAevC,EAAQ,IACvBsT,EAAkBtT,EAAQ,IAC1B+qD,EAAW/qD,EAAQ,IACnBo7D,EAAYp7D,EAAQ,IACpBoT,EAAiBpT,EAAQ,IACzB6E,EAAe7E,EAAQ,GACvBmN,EAAYnN,EAAQ,GACpBmU,EAAkBnU,EAAQ,IAC1Bq7D,EAAqBr7D,EAAQ,IAC7Bs7D,EAAwBt7D,EAAQ,IAEhCG,EAAAD,QAAA,SAAAyN,EAAAmN,EAAAygD,EAAAC,EAAAlpD,EAAAmpD,GACA,IAAAtgD,EAAA/Y,EAAAuL,GACAiK,EAAAuD,EACAugD,EAAAppD,EAAA,YACAqG,EAAAf,KAAA5V,UACA6D,EAAA,GACA81D,EAAA,SAAA3pD,GACA,IAAAR,EAAAmH,EAAA3G,GACAzP,EAAAoW,EAAA3G,EACA,UAAAA,EAAA,SAAAzM,GACA,QAAAk2D,IAAA52D,EAAAU,KAAAiM,EAAAjR,KAAA6D,KAAA,IAAAmB,EAAA,EAAAA,IACO,OAAAyM,EAAA,SAAAzM,GACP,QAAAk2D,IAAA52D,EAAAU,KAAAiM,EAAAjR,KAAA6D,KAAA,IAAAmB,EAAA,EAAAA,IACO,OAAAyM,EAAA,SAAAzM,GACP,OAAAk2D,IAAA52D,EAAAU,QAAA5B,EAAA6N,EAAAjR,KAAA6D,KAAA,IAAAmB,EAAA,EAAAA,IACO,OAAAyM,EAAA,SAAAzM,GAAmE,OAAhCiM,EAAAjR,KAAA6D,KAAA,IAAAmB,EAAA,EAAAA,GAAgCnB,MAC1E,SAAAmB,EAAAkM,GAAiE,OAAnCD,EAAAjR,KAAA6D,KAAA,IAAAmB,EAAA,EAAAA,EAAAkM,GAAmCrN,QAGjE,sBAAAwT,IAAA6jD,GAAA9iD,EAAAS,UAAAjM,EAAA,YACA,IAAAyK,GAAAjC,UAAA7G,UAMG,CACH,IAAA8sD,EAAA,IAAAhkD,EAEAikD,EAAAD,EAAAF,GAAAD,EAAA,IAAqD,MAAAG,EAErDE,EAAA3uD,EAAA,WAAkDyuD,EAAAnvD,IAAA,KAElDsvD,EAAA5nD,EAAA,SAAA8H,GAAwD,IAAArE,EAAAqE,KAExD+/C,GAAAP,GAAAtuD,EAAA,WAIA,IAFA,IAAA8uD,EAAA,IAAArkD,EACA3L,EAAA,EACAA,KAAAgwD,EAAAP,GAAAzvD,KACA,OAAAgwD,EAAAxvD,KAAA,KAEAsvD,KACAnkD,EAAAkD,EAAA,SAAArX,EAAAirC,GACAt7B,EAAA3P,EAAAmU,EAAAjK,GACA,IAAA7E,EAAAwyD,EAAA,IAAAngD,EAAA1X,EAAAmU,GAEA,OADAjU,MAAA+qC,GAAA0sB,EAAA1sB,EAAAp8B,EAAAxJ,EAAA4yD,GAAA5yD,GACAA,KAEA9G,UAAA2W,EACAA,EAAAvJ,YAAAwI,IAEAkkD,GAAAE,KACAL,EAAA,UACAA,EAAA,OACArpD,GAAAqpD,EAAA,SAEAK,GAAAH,IAAAF,EAAAD,GAEAD,GAAA9iD,EAAAgkB,cAAAhkB,EAAAgkB,WApCA/kB,EAAA4jD,EAAAU,eAAAphD,EAAAnN,EAAA2E,EAAAopD,GACApoD,EAAAsE,EAAA5V,UAAAu5D,GACAxQ,EAAAC,MAAA,EA4CA,OAPAqQ,EAAAzjD,EAAAjK,GAEA9H,EAAA8H,GAAAiK,EACAnV,IAAAS,EAAAT,EAAAqB,EAAArB,EAAAO,GAAA4U,GAAAuD,GAAAtV,GAEA41D,GAAAD,EAAAW,UAAAvkD,EAAAjK,EAAA2E,GAEAsF,oBCpEA,IAfA,IASAwkD,EATAh6D,EAAapC,EAAQ,GACrBsC,EAAWtC,EAAQ,IACnBiF,EAAUjF,EAAQ,IAClBgX,EAAA/R,EAAA,eACAgS,EAAAhS,EAAA,QACAqW,KAAAlZ,EAAAwS,cAAAxS,EAAA0S,UACAgC,EAAAwE,EACAlb,EAAA,EAIAi8D,EAAA,iHAEAxvD,MAAA,KAEAzM,EAPA,IAQAg8D,EAAAh6D,EAAAi6D,EAAAj8D,QACAkC,EAAA85D,EAAAp6D,UAAAgV,GAAA,GACA1U,EAAA85D,EAAAp6D,UAAAiV,GAAA,IACGH,GAAA,EAGH3W,EAAAD,QAAA,CACAob,MACAxE,SACAE,QACAC,uCC1BA,SAAA7U,GAEA,IAAAk6D,EAAet8D,EAAQ,KACvBu8D,EAASv8D,EAAQ,KACjBw8D,EAAA,gCACAC,EAAA,0CAEAC,EAAA,IAAAz7C,OAAA,gLAQA,SAAA07C,EAAAhC,GACA,OAAAA,GAAA,IAAA3nD,WAAAtF,QAAAgvD,EAAA,IAeA,IAAAE,EAAA,CACA,aACA,cACA,SAAAC,GACA,OAAAA,EAAAnvD,QAAA,WAEA,iBACA,eACA,CAAAovD,IAAA,YAAAn5D,EAAA,KACA,uBAAAA,EAAA,GACA,CAAAm5D,IAAA,gBAAAn5D,EAAA,MAWAo5D,EAAA,CAAc96B,KAAA,EAAA+6B,MAAA,GAcd,SAAAC,EAAAC,GACA,IAYAv7D,EALAw7D,GALA,oBAAA54D,mBACA,IAAAnC,IACA,oBAAAqC,UACA,IAEA04D,UAAA,GAGAC,EAAA,GACA16D,SAHAw6D,KAAAC,GAMA,aAAAD,EAAAG,SACAD,EAAA,IAAAE,EAAA/V,SAAA2V,EAAAK,UAAA,SACG,cAAA76D,EAEH,IAAAf,KADAy7D,EAAA,IAAAE,EAAAJ,EAAA,IACAH,SAAAK,EAAAz7D,QACG,cAAAe,EAAA,CACH,IAAAf,KAAAu7D,EACAv7D,KAAAo7D,IACAK,EAAAz7D,GAAAu7D,EAAAv7D,SAGAgC,IAAAy5D,EAAAZ,UACAY,EAAAZ,UAAA5uD,KAAAsvD,EAAAM,OAIA,OAAAJ,EAkBA,SAAAK,EAAAZ,GACAA,EAAAF,EAAAE,GACA,IAAAjmC,EAAA6lC,EAAA93D,KAAAk4D,GAEA,OACAQ,SAAAzmC,EAAA,GAAAA,EAAA,GAAA/oB,cAAA,GACA2uD,UAAA5lC,EAAA,GACA2pB,KAAA3pB,EAAA,IAsDA,SAAA0mC,EAAAT,EAAAM,EAAAO,GAGA,GAFAb,EAAAF,EAAAE,KAEAz4D,gBAAAk5D,GACA,WAAAA,EAAAT,EAAAM,EAAAO,GAGA,IAAAC,EAAAC,EAAAjN,EAAAkN,EAAA5xD,EAAAtK,EACAm8D,EAAAlB,EAAAz2D,QACAzD,SAAAy6D,EACAY,EAAA35D,KACAhE,EAAA,EAqCA,IAxBA,WAAAsC,GAAA,WAAAA,IACAg7D,EAAAP,EACAA,EAAA,MAGAO,GAAA,mBAAAA,MAAAnB,EAAA5L,OAEAwM,EAAAF,EAAAE,GAMAQ,IADAC,EAAAH,EAAAZ,GAAA,KACAQ,WAAAO,EAAApB,QACAuB,EAAAvB,QAAAoB,EAAApB,SAAAmB,GAAAR,EAAAX,QACAuB,EAAAV,SAAAO,EAAAP,UAAAF,EAAAE,UAAA,GACAR,EAAAe,EAAArd,KAMAqd,EAAApB,UAAAsB,EAAA,wBAEQ19D,EAAA09D,EAAAt2D,OAAyBpH,IAGjC,mBAFAy9D,EAAAC,EAAA19D,KAOAuwD,EAAAkN,EAAA,GACAl8D,EAAAk8D,EAAA,GAEAlN,KACAoN,EAAAp8D,GAAAk7D,EACK,iBAAAlM,IACL1kD,EAAA4wD,EAAAxjD,QAAAs3C,MACA,iBAAAkN,EAAA,IACAE,EAAAp8D,GAAAk7D,EAAA12D,MAAA,EAAA8F,GACA4wD,IAAA12D,MAAA8F,EAAA4xD,EAAA,MAEAE,EAAAp8D,GAAAk7D,EAAA12D,MAAA8F,GACA4wD,IAAA12D,MAAA,EAAA8F,MAGKA,EAAA0kD,EAAAhsD,KAAAk4D,MACLkB,EAAAp8D,GAAAsK,EAAA,GACA4wD,IAAA12D,MAAA,EAAA8F,UAGA8xD,EAAAp8D,GAAAo8D,EAAAp8D,IACAg8D,GAAAE,EAAA,IAAAV,EAAAx7D,IAAA,GAOAk8D,EAAA,KAAAE,EAAAp8D,GAAAo8D,EAAAp8D,GAAAkM,gBAhCAgvD,EAAAgB,EAAAhB,GAwCAa,IAAAK,EAAAf,MAAAU,EAAAK,EAAAf,QAMAW,GACAR,EAAAX,SACA,MAAAuB,EAAAR,SAAA1uB,OAAA,KACA,KAAAkvB,EAAAR,UAAA,KAAAJ,EAAAI,YAEAQ,EAAAR,SAjJA,SAAAI,EAAAK,GACA,QAAAL,EAAA,OAAAK,EAQA,IANA,IAAA36B,GAAA26B,GAAA,KAAAnxD,MAAA,KAAA1G,MAAA,MAAAgC,OAAAw1D,EAAA9wD,MAAA,MACAzM,EAAAijC,EAAA77B,OACAs9B,EAAAzB,EAAAjjC,EAAA,GACAmJ,GAAA,EACA00D,EAAA,EAEA79D,KACA,MAAAijC,EAAAjjC,GACAijC,EAAA1K,OAAAv4B,EAAA,GACK,OAAAijC,EAAAjjC,IACLijC,EAAA1K,OAAAv4B,EAAA,GACA69D,KACKA,IACL,IAAA79D,IAAAmJ,GAAA,GACA85B,EAAA1K,OAAAv4B,EAAA,GACA69D,KAOA,OAHA10D,GAAA85B,EAAA95B,QAAA,IACA,MAAAu7B,GAAA,OAAAA,GAAAzB,EAAA75B,KAAA,IAEA65B,EAAAn2B,KAAA,KAwHA+mC,CAAA8pB,EAAAR,SAAAJ,EAAAI,WAQAjB,EAAAyB,EAAAG,KAAAH,EAAAV,YACAU,EAAAI,KAAAJ,EAAAK,SACAL,EAAAG,KAAA,IAMAH,EAAAM,SAAAN,EAAAO,SAAA,GACAP,EAAA/L,OACA6L,EAAAE,EAAA/L,KAAAnlD,MAAA,KACAkxD,EAAAM,SAAAR,EAAA,OACAE,EAAAO,SAAAT,EAAA,QAGAE,EAAAQ,OAAAR,EAAAV,UAAAU,EAAAI,MAAA,UAAAJ,EAAAV,SACAU,EAAAV,SAAA,KAAAU,EAAAI,KACA,OAKAJ,EAAAP,KAAAO,EAAA/qD,WAiIAsqD,EAAAt7D,UAAA,CAAiB4I,IAjHjB,SAAA4zD,EAAAn9D,EAAAmQ,GACA,IAAAusD,EAAA35D,KAEA,OAAAo6D,GACA,YACA,iBAAAn9D,KAAAmG,SACAnG,GAAAmQ,GAAA+qD,EAAA5L,OAAAtvD,IAGA08D,EAAAS,GAAAn9D,EACA,MAEA,WACA08D,EAAAS,GAAAn9D,EAEAi7D,EAAAj7D,EAAA08D,EAAAV,UAGOh8D,IACP08D,EAAAI,KAAAJ,EAAAK,SAAA,IAAA/8D,IAHA08D,EAAAI,KAAAJ,EAAAK,SACAL,EAAAS,GAAA,IAKA,MAEA,eACAT,EAAAS,GAAAn9D,EAEA08D,EAAAG,OAAA78D,GAAA,IAAA08D,EAAAG,MACAH,EAAAI,KAAA98D,EACA,MAEA,WACA08D,EAAAS,GAAAn9D,EAEA,QAAAuM,KAAAvM,IACAA,IAAAwL,MAAA,KACAkxD,EAAAG,KAAA78D,EAAA6K,MACA6xD,EAAAK,SAAA/8D,EAAA6L,KAAA,OAEA6wD,EAAAK,SAAA/8D,EACA08D,EAAAG,KAAA,IAGA,MAEA,eACAH,EAAAV,SAAAh8D,EAAAwM,cACAkwD,EAAAvB,SAAAhrD,EACA,MAEA,eACA,WACA,GAAAnQ,EAAA,CACA,IAAAo9D,EAAA,aAAAD,EAAA,QACAT,EAAAS,GAAAn9D,EAAAwtC,OAAA,KAAA4vB,IAAAp9D,SAEA08D,EAAAS,GAAAn9D,EAEA,MAEA,QACA08D,EAAAS,GAAAn9D,EAGA,QAAAjB,EAAA,EAAiBA,EAAAw8D,EAAAp1D,OAAkBpH,IAAA,CACnC,IAAAs+D,EAAA9B,EAAAx8D,GAEAs+D,EAAA,KAAAX,EAAAW,EAAA,IAAAX,EAAAW,EAAA,IAAA7wD,eASA,OANAkwD,EAAAQ,OAAAR,EAAAV,UAAAU,EAAAI,MAAA,UAAAJ,EAAAV,SACAU,EAAAV,SAAA,KAAAU,EAAAI,KACA,OAEAJ,EAAAP,KAAAO,EAAA/qD,WAEA+qD,GAqCiB/qD,SA3BjB,SAAA2rD,GACAA,GAAA,mBAAAA,MAAApC,EAAAoC,WAEA,IAAA3B,EACAe,EAAA35D,KACAi5D,EAAAU,EAAAV,SAEAA,GAAA,MAAAA,EAAAxuB,OAAAwuB,EAAA71D,OAAA,KAAA61D,GAAA,KAEA,IAAAtqD,EAAAsqD,GAAAU,EAAAvB,QAAA,SAeA,OAbAuB,EAAAM,WACAtrD,GAAAgrD,EAAAM,SACAN,EAAAO,WAAAvrD,GAAA,IAAAgrD,EAAAO,UACAvrD,GAAA,KAGAA,GAAAgrD,EAAAI,KAAAJ,EAAAR,UAEAP,EAAA,iBAAAe,EAAAf,MAAA2B,EAAAZ,EAAAf,OAAAe,EAAAf,SACAjqD,GAAA,MAAAiqD,EAAAnuB,OAAA,OAAAmuB,KAEAe,EAAA97B,OAAAlvB,GAAAgrD,EAAA97B,MAEAlvB,IASAuqD,EAAAG,kBACAH,EAAAH,SAAAF,EACAK,EAAAX,WACAW,EAAAf,KAEAp8D,EAAAD,QAAAo9D,sCC9bAn9D,EAAAD,QAgBC,SAAAyD,GAED,aAeA,IAGAi7D,EAAA,kEAQA,SAAAC,EAAAC,EAAAC,GACA,IAAAx5D,EAAAu5D,EAAA,GACArtD,EAAAqtD,EAAA,GACAr+D,EAAAq+D,EAAA,GACAp+D,EAAAo+D,EAAA,GAEAv5D,IAAAkM,EAAAhR,GAAAgR,EAAA/Q,GAAAq+D,EAAA,eAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,GAAAlM,EAAA9E,GAAAs+D,EAAA,eAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,GAAA7E,EAAA+Q,GAAAstD,EAAA,eAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,GAAAD,EAAA8E,GAAAw5D,EAAA,gBAEAx5D,KADAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GACAA,GAAAgR,EAAA/Q,GAAAq+D,EAAA,eAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,GAAAlM,EAAA9E,GAAAs+D,EAAA,gBAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,GAAA7E,EAAA+Q,GAAAstD,EAAA,gBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,GAAAD,EAAA8E,GAAAw5D,EAAA,cAEAx5D,KADAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GACAA,GAAAgR,EAAA/Q,GAAAq+D,EAAA,gBAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,GAAAlM,EAAA9E,GAAAs+D,EAAA,gBAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,GAAA7E,EAAA+Q,GAAAstD,EAAA,YAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,GAAAD,EAAA8E,GAAAw5D,EAAA,iBAEAx5D,KADAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GACAA,GAAAgR,EAAA/Q,GAAAq+D,EAAA,iBAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,GAAAlM,EAAA9E,GAAAs+D,EAAA,eAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,GAAA7E,EAAA+Q,GAAAstD,EAAA,iBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,GAAAD,EAAA8E,GAAAw5D,EAAA,iBAGAx5D,KAFAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GAEAC,EAAAD,GAAAC,GAAAq+D,EAAA,eAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAhR,EAAAgR,GAAAhR,GAAAs+D,EAAA,gBAEAt+D,KADAC,MAAA,EAAAA,IAAA,IAAA6E,EAAA,GACAkM,EAAAlM,GAAAkM,GAAAstD,EAAA,gBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACA6E,EAAA7E,GAAA6E,GAAAw5D,EAAA,eAEAx5D,KADAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GACAC,EAAAD,GAAAC,GAAAq+D,EAAA,eAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAhR,EAAAgR,GAAAhR,GAAAs+D,EAAA,eAEAt+D,KADAC,MAAA,EAAAA,IAAA,IAAA6E,EAAA,GACAkM,EAAAlM,GAAAkM,GAAAstD,EAAA,gBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACA6E,EAAA7E,GAAA6E,GAAAw5D,EAAA,eAEAx5D,KADAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GACAC,EAAAD,GAAAC,GAAAq+D,EAAA,eAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAhR,EAAAgR,GAAAhR,GAAAs+D,EAAA,iBAEAt+D,KADAC,MAAA,EAAAA,IAAA,IAAA6E,EAAA,GACAkM,EAAAlM,GAAAkM,GAAAstD,EAAA,eAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACA6E,EAAA7E,GAAA6E,GAAAw5D,EAAA,gBAEAx5D,KADAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GACAC,EAAAD,GAAAC,GAAAq+D,EAAA,iBAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAhR,EAAAgR,GAAAhR,GAAAs+D,EAAA,cAEAt+D,KADAC,MAAA,EAAAA,IAAA,IAAA6E,EAAA,GACAkM,EAAAlM,GAAAkM,GAAAstD,EAAA,gBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACA6E,EAAA7E,GAAA6E,GAAAw5D,EAAA,iBAGAx5D,KAFAkM,MAAA,GAAAA,IAAA,IAAAhR,EAAA,GAEAA,EAAAC,GAAAq+D,EAAA,YAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,EAAAhR,GAAAs+D,EAAA,gBAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,EAAAkM,GAAAstD,EAAA,iBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,EAAA6E,GAAAw5D,EAAA,eAEAx5D,KADAkM,MAAA,GAAAA,IAAA,GAAAhR,EAAA,GACAA,EAAAC,GAAAq+D,EAAA,gBAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,EAAAhR,GAAAs+D,EAAA,gBAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,EAAAkM,GAAAstD,EAAA,eAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,EAAA6E,GAAAw5D,EAAA,iBAEAx5D,KADAkM,MAAA,GAAAA,IAAA,GAAAhR,EAAA,GACAA,EAAAC,GAAAq+D,EAAA,gBAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,EAAAhR,GAAAs+D,EAAA,eAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,EAAAkM,GAAAstD,EAAA,eAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,EAAA6E,GAAAw5D,EAAA,cAEAx5D,KADAkM,MAAA,GAAAA,IAAA,GAAAhR,EAAA,GACAA,EAAAC,GAAAq+D,EAAA,eAEAr+D,KADA6E,MAAA,EAAAA,IAAA,IAAAkM,EAAA,GACAA,EAAAhR,GAAAs+D,EAAA,gBAEAt+D,KADAC,MAAA,GAAAA,IAAA,IAAA6E,EAAA,GACAA,EAAAkM,GAAAstD,EAAA,gBAEAttD,KADAhR,MAAA,GAAAA,IAAA,IAAAC,EAAA,GACAA,EAAA6E,GAAAw5D,EAAA,eAGAx5D,IAAA9E,IAFAgR,MAAA,GAAAA,IAAA,GAAAhR,EAAA,IAEAC,IAAAq+D,EAAA,eAEAr+D,IAAA+Q,IADAlM,MAAA,EAAAA,IAAA,IAAAkM,EAAA,IACAhR,IAAAs+D,EAAA,gBAEAt+D,IAAA8E,IADA7E,MAAA,GAAAA,IAAA,IAAA6E,EAAA,IACAkM,IAAAstD,EAAA,iBAEAttD,IAAA/Q,IADAD,MAAA,GAAAA,IAAA,IAAAC,EAAA,IACA6E,IAAAw5D,EAAA,cAEAx5D,IAAA9E,IADAgR,MAAA,GAAAA,IAAA,IAAAhR,EAAA,IACAC,IAAAq+D,EAAA,iBAEAr+D,IAAA+Q,IADAlM,MAAA,EAAAA,IAAA,IAAAkM,EAAA,IACAhR,IAAAs+D,EAAA,gBAEAt+D,IAAA8E,IADA7E,MAAA,GAAAA,IAAA,IAAA6E,EAAA,IACAkM,IAAAstD,EAAA,cAEAttD,IAAA/Q,IADAD,MAAA,GAAAA,IAAA,IAAAC,EAAA,IACA6E,IAAAw5D,EAAA,gBAEAx5D,IAAA9E,IADAgR,MAAA,GAAAA,IAAA,IAAAhR,EAAA,IACAC,IAAAq+D,EAAA,gBAEAr+D,IAAA+Q,IADAlM,MAAA,EAAAA,IAAA,IAAAkM,EAAA,IACAhR,IAAAs+D,EAAA,eAEAt+D,IAAA8E,IADA7E,MAAA,GAAAA,IAAA,IAAA6E,EAAA,IACAkM,IAAAstD,EAAA,gBAEAttD,IAAA/Q,IADAD,MAAA,GAAAA,IAAA,IAAAC,EAAA,IACA6E,IAAAw5D,EAAA,iBAEAx5D,IAAA9E,IADAgR,MAAA,GAAAA,IAAA,IAAAhR,EAAA,IACAC,IAAAq+D,EAAA,eAEAr+D,IAAA+Q,IADAlM,MAAA,EAAAA,IAAA,IAAAkM,EAAA,IACAhR,IAAAs+D,EAAA,iBAEAt+D,IAAA8E,IADA7E,MAAA,GAAAA,IAAA,IAAA6E,EAAA,IACAkM,IAAAstD,EAAA,eAGAttD,IADAA,IAAA/Q,IADAD,MAAA,GAAAA,IAAA,IAAAC,EAAA,IACA6E,IAAAw5D,EAAA,iBACA,GAAAttD,IAAA,IAAAhR,EAAA,EAEAq+D,EAAA,GAAAv5D,EAAAu5D,EAAA,KACAA,EAAA,GAAArtD,EAAAqtD,EAAA,KACAA,EAAA,GAAAr+D,EAAAq+D,EAAA,KACAA,EAAA,GAAAp+D,EAAAo+D,EAAA,KAGA,SAAAE,EAAA78D,GACA,IACA/B,EADA6+D,EAAA,GAGA,IAAA7+D,EAAA,EAAmBA,EAAA,GAAQA,GAAA,EAC3B6+D,EAAA7+D,GAAA,GAAA+B,EAAA+yC,WAAA90C,IAAA+B,EAAA+yC,WAAA90C,EAAA,QAAA+B,EAAA+yC,WAAA90C,EAAA,SAAA+B,EAAA+yC,WAAA90C,EAAA,QAEA,OAAA6+D,EAGA,SAAAC,EAAA35D,GACA,IACAnF,EADA6+D,EAAA,GAGA,IAAA7+D,EAAA,EAAmBA,EAAA,GAAQA,GAAA,EAC3B6+D,EAAA7+D,GAAA,GAAAmF,EAAAnF,IAAAmF,EAAAnF,EAAA,QAAAmF,EAAAnF,EAAA,SAAAmF,EAAAnF,EAAA,QAEA,OAAA6+D,EAGA,SAAAE,EAAAh9D,GACA,IAEA/B,EACAoH,EACAu5C,EACAqe,EACAC,EACAC,EAPAz9D,EAAAM,EAAAqF,OACAuC,EAAA,8CAQA,IAAA3J,EAAA,GAAoBA,GAAAyB,EAAQzB,GAAA,GAC5By+D,EAAA90D,EAAAi1D,EAAA78D,EAAAklD,UAAAjnD,EAAA,GAAAA,KAKA,IAHA+B,IAAAklD,UAAAjnD,EAAA,IACAoH,EAAArF,EAAAqF,OACAu5C,EAAA,kCACA3gD,EAAA,EAAmBA,EAAAoH,EAAYpH,GAAA,EAC/B2gD,EAAA3gD,GAAA,IAAA+B,EAAA+yC,WAAA90C,OAAA,MAGA,GADA2gD,EAAA3gD,GAAA,UAAAA,EAAA,MACAA,EAAA,GAEA,IADAy+D,EAAA90D,EAAAg3C,GACA3gD,EAAA,EAAuBA,EAAA,GAAQA,GAAA,EAC/B2gD,EAAA3gD,GAAA,EAcA,OARAg/D,GADAA,EAAA,EAAAv9D,GACAmR,SAAA,IAAA4jB,MAAA,kBACAyoC,EAAA95C,SAAA65C,EAAA,OACAE,EAAA/5C,SAAA65C,EAAA,UAEAre,EAAA,IAAAse,EACAte,EAAA,IAAAue,EAEAT,EAAA90D,EAAAg3C,GACAh3C,EAmDA,SAAAw1D,EAAA19D,GACA,IACA29D,EADAr9D,EAAA,GAEA,IAAAq9D,EAAA,EAAmBA,EAAA,EAAOA,GAAA,EAC1Br9D,GAAAy8D,EAAA/8D,GAAA,EAAA29D,EAAA,MAAAZ,EAAA/8D,GAAA,EAAA29D,EAAA,IAEA,OAAAr9D,EAGA,SAAAs9D,EAAAX,GACA,IAAA1+D,EACA,IAAAA,EAAA,EAAmBA,EAAA0+D,EAAAt3D,OAAcpH,GAAA,EACjC0+D,EAAA1+D,GAAAm/D,EAAAT,EAAA1+D,IAEA,OAAA0+D,EAAA5xD,KAAA,IAmEA,SAAAwyD,EAAA/E,GAKA,MAJA,kBAAA/sD,KAAA+sD,KACAA,EAAApT,SAAAoY,mBAAAhF,KAGAA,EA6BA,SAAAiF,EAAAH,GACA,IAEAX,EAFAe,EAAA,GACAr4D,EAAAi4D,EAAAj4D,OAGA,IAAAs3D,EAAA,EAAmBA,EAAAt3D,EAAA,EAAgBs3D,GAAA,EACnCe,EAAAr2D,KAAA+b,SAAAk6C,EAAAK,OAAAhB,EAAA,QAGA,OAAAn1D,OAAAo2D,aAAAv5D,MAAAmD,OAAAk2D,GAYA,SAAAG,IAEA57D,KAAA67D,QAwTA,OAhbAR,EAAAN,EAAA,UAgBA,oBAAAvqD,yBAAA5S,UAAAmE,OACA,WACA,SAAAm8C,EAAAv1C,EAAAvF,GAGA,OAFAuF,EAAA,EAAAA,GAAA,GAEA,EACAvI,KAAAu1B,IAAAhtB,EAAAvF,EAAA,GAGAhD,KAAAY,IAAA2H,EAAAvF,GAGAoN,YAAA5S,UAAAmE,MAAA,SAAAmW,EAAA4jD,GACA,IAGAC,EACA18D,EACA28D,EACAC,EANA74D,EAAApD,KAAA0X,WACA/B,EAAAuoC,EAAAhmC,EAAA9U,GACAwS,EAAAxS,EAUA,OAJA04D,IAAAv8D,IACAqW,EAAAsoC,EAAA4d,EAAA14D,IAGAuS,EAAAC,EACA,IAAApF,YAAA,IAGAurD,EAAAnmD,EAAAD,EACAtW,EAAA,IAAAmR,YAAAurD,GACAC,EAAA,IAAA3rD,WAAAhR,GAEA48D,EAAA,IAAA5rD,WAAArQ,KAAA2V,EAAAomD,GACAC,EAAAx1D,IAAAy1D,GAEA58D,IAnCA,GAkHAu8D,EAAAh+D,UAAAs+D,OAAA,SAAA3F,GAKA,OAFAv2D,KAAAm8D,aAAAb,EAAA/E,IAEAv2D,MAUA47D,EAAAh+D,UAAAu+D,aAAA,SAAAC,GACAp8D,KAAAq8D,OAAAD,EACAp8D,KAAAs8D,SAAAF,EAAAh5D,OAEA,IACApH,EADAoH,EAAApD,KAAAq8D,MAAAj5D,OAGA,IAAApH,EAAA,GAAoBA,GAAAoH,EAAapH,GAAA,GACjCy+D,EAAAz6D,KAAAu8D,MAAA3B,EAAA56D,KAAAq8D,MAAApZ,UAAAjnD,EAAA,GAAAA,KAKA,OAFAgE,KAAAq8D,MAAAr8D,KAAAq8D,MAAApZ,UAAAjnD,EAAA,IAEAgE,MAWA47D,EAAAh+D,UAAAgY,IAAA,SAAA4mD,GACA,IAEAxgE,EAEAmK,EAJAs2D,EAAAz8D,KAAAq8D,MACAj5D,EAAAq5D,EAAAr5D,OAEAu5C,EAAA,kCAGA,IAAA3gD,EAAA,EAAmBA,EAAAoH,EAAYpH,GAAA,EAC/B2gD,EAAA3gD,GAAA,IAAAygE,EAAA3rB,WAAA90C,OAAA,MAYA,OATAgE,KAAA08D,QAAA/f,EAAAv5C,GACA+C,EAAAk1D,EAAAr7D,KAAAu8D,OAEAC,IACAr2D,EAAAq1D,EAAAr1D,IAGAnG,KAAA67D,QAEA11D,GAQAy1D,EAAAh+D,UAAAi+D,MAAA,WAKA,OAJA77D,KAAAq8D,MAAA,GACAr8D,KAAAs8D,QAAA,EACAt8D,KAAAu8D,MAAA,8CAEAv8D,MAQA47D,EAAAh+D,UAAA++D,SAAA,WACA,OACAF,KAAAz8D,KAAAq8D,MACAj5D,OAAApD,KAAAs8D,QACAz+B,KAAA79B,KAAAu8D,QAWAX,EAAAh+D,UAAAg/D,SAAA,SAAAj3D,GAKA,OAJA3F,KAAAq8D,MAAA12D,EAAA82D,KACAz8D,KAAAs8D,QAAA32D,EAAAvC,OACApD,KAAAu8D,MAAA52D,EAAAk4B,KAEA79B,MAOA47D,EAAAh+D,UAAAi/D,QAAA,kBACA78D,KAAAu8D,aACAv8D,KAAAq8D,aACAr8D,KAAAs8D,SASAV,EAAAh+D,UAAA8+D,QAAA,SAAA/f,EAAAv5C,GACA,IACA43D,EACAC,EACAC,EAHAl/D,EAAAoH,EAMA,GADAu5C,EAAA3gD,GAAA,UAAAA,EAAA,MACAA,EAAA,GAEA,IADAy+D,EAAAz6D,KAAAu8D,MAAA5f,GACA3gD,EAAA,EAAuBA,EAAA,GAAQA,GAAA,EAC/B2gD,EAAA3gD,GAAA,EAOAg/D,GADAA,EAAA,EAAAh7D,KAAAs8D,SACA1tD,SAAA,IAAA4jB,MAAA,kBACAyoC,EAAA95C,SAAA65C,EAAA,OACAE,EAAA/5C,SAAA65C,EAAA,UAEAre,EAAA,IAAAse,EACAte,EAAA,IAAAue,EACAT,EAAAz6D,KAAAu8D,MAAA5f,IAYAif,EAAA/9B,KAAA,SAAA04B,EAAAiG,GAGA,OAAAZ,EAAAkB,WAAAxB,EAAA/E,GAAAiG,IAWAZ,EAAAkB,WAAA,SAAAC,EAAAP,GACA,IACAr2D,EAAAk1D,EADAN,EAAAgC,IAGA,OAAAP,EAAAhB,EAAAr1D,MAUAy1D,EAAAprD,YAAA,WAEAxQ,KAAA67D,SAUAD,EAAAprD,YAAA5S,UAAAs+D,OAAA,SAAAh5D,GACA,IAEAlH,EAhPAwnD,EAAAwZ,EAAAC,EACAtuD,EA6OA8tD,GA9OAjZ,EA8OAxjD,KAAAq8D,MAAAnpD,OA9OA8pD,EA8OA95D,EA9OA+5D,GA8OA,GA7OAtuD,EAAA,IAAA0B,WAAAmzC,EAAA9rC,WAAAslD,EAAAtlD,aAEAlR,IAAA,IAAA6J,WAAAmzC,IACA70C,EAAAnI,IAAA,IAAA6J,WAAA2sD,GAAAxZ,EAAA9rC,YAEAulD,EAAAtuD,IAAAuE,QAyOA9P,EAAAq5D,EAAAr5D,OAKA,IAFApD,KAAAs8D,SAAAp5D,EAAAwU,WAEA1b,EAAA,GAAoBA,GAAAoH,EAAapH,GAAA,GACjCy+D,EAAAz6D,KAAAu8D,MAAAzB,EAAA2B,EAAA/mD,SAAA1Z,EAAA,GAAAA,KAKA,OAFAgE,KAAAq8D,MAAArgE,EAAA,GAAAoH,EAAA,IAAAiN,WAAAosD,EAAAvpD,OAAAnR,MAAA/F,EAAA,SAAAqU,WAAA,GAEArQ,MAWA47D,EAAAprD,YAAA5S,UAAAgY,IAAA,SAAA4mD,GACA,IAGAxgE,EACAmK,EAJAs2D,EAAAz8D,KAAAq8D,MACAj5D,EAAAq5D,EAAAr5D,OACAu5C,EAAA,kCAIA,IAAA3gD,EAAA,EAAmBA,EAAAoH,EAAYpH,GAAA,EAC/B2gD,EAAA3gD,GAAA,IAAAygE,EAAAzgE,OAAA,MAYA,OATAgE,KAAA08D,QAAA/f,EAAAv5C,GACA+C,EAAAk1D,EAAAr7D,KAAAu8D,OAEAC,IACAr2D,EAAAq1D,EAAAr1D,IAGAnG,KAAA67D,QAEA11D,GAQAy1D,EAAAprD,YAAA5S,UAAAi+D,MAAA,WAKA,OAJA77D,KAAAq8D,MAAA,IAAAhsD,WAAA,GACArQ,KAAAs8D,QAAA,EACAt8D,KAAAu8D,MAAA,8CAEAv8D,MAQA47D,EAAAprD,YAAA5S,UAAA++D,SAAA,WACA,IAnTAF,EAmTA92D,EAAAi2D,EAAAh+D,UAAA++D,SAAAxgE,KAAA6D,MAKA,OAFA2F,EAAA82D,MAtTAA,EAsTA92D,EAAA82D,KArTAl3D,OAAAo2D,aAAAv5D,MAAA,SAAAiO,WAAAosD,KAuTA92D,GAUAi2D,EAAAprD,YAAA5S,UAAAg/D,SAAA,SAAAj3D,GAIA,OAFAA,EAAA82D,KAjVA,SAAAlG,EAAA0G,GACA,IAGAjhE,EAHAoH,EAAAmzD,EAAAnzD,OACAq5D,EAAA,IAAAjsD,YAAApN,GACAF,EAAA,IAAAmN,WAAAosD,GAGA,IAAAzgE,EAAA,EAAmBA,EAAAoH,EAAYpH,GAAA,EAC/BkH,EAAAlH,GAAAu6D,EAAAzlB,WAAA90C,GAGA,OAAAihE,EAAA/5D,EAAAu5D,EAuUAS,CAAAv3D,EAAA82D,MAAA,GAEAb,EAAAh+D,UAAAg/D,SAAAzgE,KAAA6D,KAAA2F,IAGAi2D,EAAAprD,YAAA5S,UAAAi/D,QAAAjB,EAAAh+D,UAAAi/D,QAEAjB,EAAAprD,YAAA5S,UAAA8+D,QAAAd,EAAAh+D,UAAA8+D,QAUAd,EAAAprD,YAAAqtB,KAAA,SAAA36B,EAAAs5D,GACA,IACAr2D,EAAAk1D,EA7eA,SAAAl6D,GACA,IAEAnF,EACAoH,EACAu5C,EACAqe,EACAC,EACAC,EAPAz9D,EAAA0D,EAAAiC,OACAuC,EAAA,8CAQA,IAAA3J,EAAA,GAAoBA,GAAAyB,EAAQzB,GAAA,GAC5By+D,EAAA90D,EAAAm1D,EAAA35D,EAAAuU,SAAA1Z,EAAA,GAAAA,KAWA,IAJAmF,EAAAnF,EAAA,GAAAyB,EAAA0D,EAAAuU,SAAA1Z,EAAA,QAAAqU,WAAA,GAEAjN,EAAAjC,EAAAiC,OACAu5C,EAAA,kCACA3gD,EAAA,EAAmBA,EAAAoH,EAAYpH,GAAA,EAC/B2gD,EAAA3gD,GAAA,IAAAmF,EAAAnF,OAAA,MAIA,GADA2gD,EAAA3gD,GAAA,UAAAA,EAAA,MACAA,EAAA,GAEA,IADAy+D,EAAA90D,EAAAg3C,GACA3gD,EAAA,EAAuBA,EAAA,GAAQA,GAAA,EAC/B2gD,EAAA3gD,GAAA,EAeA,OATAg/D,GADAA,EAAA,EAAAv9D,GACAmR,SAAA,IAAA4jB,MAAA,kBACAyoC,EAAA95C,SAAA65C,EAAA,OACAE,EAAA/5C,SAAA65C,EAAA,UAEAre,EAAA,IAAAse,EACAte,EAAA,IAAAue,EAEAT,EAAA90D,EAAAg3C,GAEAh3C,EA+bAw3D,CAAA,IAAA9sD,WAAAnN,KAGA,OAAAs5D,EAAAhB,EAAAr1D,MAGAy1D,EA1uBAwB,oSCEqBrV,aAOjB,SAAAA,EAAYuF,gGAAIvtD,CAAAC,KAAA+nD,GAEZ/nD,KAAKq9D,OAAS/P,EAGdttD,KAAKs9D,QAAU,GAGft9D,KAAKopD,QAAU,GAGfppD,KAAKu9D,YAAc,KAGnBv9D,KAAKw9D,SAAW,EAGhBx9D,KAAKwnD,mBAAqBxnD,KAAKwnD,mBAAmBhqD,KAAKwC,MACvDA,KAAKq9D,OAAOzV,WAAWE,iBAAiB,gBAAiB9nD,KAAKwnD,sEAxB/C8F,GAGf,OAFKA,EAAGmQ,WACNnQ,EAAGmQ,SAAW,IAAI1V,EAAmBuF,IAChCA,EAAGmQ,2DA2BKlV,GAGf,GAAoB,gBAAhBA,EAAII,UAIuB,gBAA3BJ,EAAItD,QAAQyY,YAAhB,CAIA,IAAIC,EAAgBpV,EAAItD,QAAQ2D,WAAWgV,eAC3C,GAAID,EAAe,CAGf,IAAIE,EAAUF,EAActoD,IAAI,SAAAvX,GAAO,MAAO,CAC1C+B,GAAI0oD,EAAItD,QAAQplD,GAChB2C,KAAM1E,EAAE0E,KACRsmD,SAAU,CACNgV,mBAAoB,CAChBC,QAAW,CACPC,YAAelgE,EAAEigE,cAO7BE,EAAeJ,EAAQ,GAAGr7D,KAhBf4H,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAiBf,QAAAgL,EAAAC,EAAmBqzD,EAAnB9gE,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,OAASqzC,EAATlzC,EAAAtN,MACQghE,EAAexgB,EAAOj7C,OACtBy7D,EAAexgB,EAAOj7C,OAnBf,MAAAG,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAsBftK,KAAKk+D,gBAAgB3V,EAAItD,QAAQplD,GAAIo+D,GAGrCj+D,KAAK64B,IAAIglC,uCAOPM,GACNn+D,KAAKs9D,QAAQl4D,KAAK+4D,wCAITA,GACTn+D,KAAKs9D,QAAUt9D,KAAKs9D,QAAQ1oD,OAAO,SAAA9X,GAAC,OAAIA,GAAKqhE,2CAIlCt+D,GAAI,IAAA2vD,GAAA,EAAAC,GAAA,EAAAC,OAAAnwD,EAAA,IAEf,QAAAowD,EAAAC,EAAmB5vD,KAAKs9D,QAAxBvgE,OAAA0N,cAAA+kD,GAAAG,EAAAC,EAAAllD,QAAAC,MAAA6kD,GAAA,GACI,GADJG,EAAA1yD,MACe8rD,QAAQlsD,IAAIgD,GACnB,OAAO,GAJA,MAAA8C,GAAA8sD,GAAA,EAAAC,EAAA/sD,EAAA,YAAA6sD,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAOf,OAAO,8BAKPmO,GAGA,IAAI/7D,EAAMuxB,KAAKvxB,MAAQ9B,KAAKw9D,SAHnB3N,GAAA,EAAAC,GAAA,EAAAC,OAAAxwD,EAAA,IAIT,QAAAywD,EAAAG,EAAc0N,EAAd9gE,OAAA0N,cAAAolD,GAAAG,EAAAG,EAAAzlD,QAAAC,MAAAklD,GAAA,EAAuB,KAAdxG,EAAc2G,EAAA/yD,MAGd+C,KAAKo+D,eAAe/U,EAAExpD,OAItBwpD,EAAE7mD,MAAQ6mD,EAAE7mD,KAAOV,GAIxB9B,KAAKopD,QAAQhkD,KAAKikD,KAfb,MAAA1mD,GAAAmtD,GAAA,EAAAC,EAAAptD,EAAA,YAAAktD,GAAA,MAAAM,EAAA,QAAAA,EAAA,oBAAAL,EAAA,MAAAC,GAoBT/vD,KAAKopD,QAAQp3C,KAAK,SAAC7Q,EAAGkM,GAAJ,OAAUlM,EAAEqB,KAAO6K,EAAE7K,OAGlCxC,KAAKu9D,cACNv9D,KAAKu9D,YAAcc,YAAYr+D,KAAKs+D,aAAa9gE,KAAKwC,MAAO,6CAKrDH,GAGZ,IAH+B,IAAf0+D,EAAel8D,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAAH,EAGnBrG,EAAI,EAAIA,EAAIgE,KAAKopD,QAAQhmD,OAASpH,IACnCgE,KAAKopD,QAAQptD,GAAG6D,IAAMA,GAAMG,KAAKopD,QAAQptD,GAAGwG,KAAO+7D,GACnDv+D,KAAKopD,QAAQ70B,OAAOv4B,IAAK,0CAQjC,GAA2B,GAAvBgE,KAAKopD,QAAQhmD,OAGb,OAFAo7D,cAAcx+D,KAAKu9D,kBACnBv9D,KAAKu9D,YAAc,MAKvB,IAAIz7D,EAAMuxB,KAAKvxB,MAAQ9B,KAAKw9D,SAC5B,KAAIx9D,KAAKopD,QAAQ,GAAG5mD,KAAOV,GAA3B,CAIA,IAAI28D,EAASz+D,KAAKopD,QAAQxhD,QAff82D,GAAA,EAAAC,GAAA,EAAAC,OAAAr/D,EAAA,IAkBX,QAAAs/D,EAAAC,EAAmB9+D,KAAKs9D,QAAxBvgE,OAAA0N,cAAAi0D,GAAAG,EAAAC,EAAAp0D,QAAAC,MAAA+zD,GAAA,GAAAG,EAAA5hE,MACW4rD,cAAc,CAAC4V,KAnBf,MAAA97D,GAAAg8D,GAAA,EAAAC,EAAAj8D,EAAA,YAAA+7D,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAsBP5+D,KAAKopD,QAAQhmD,OAAS,GAAKpD,KAAKopD,QAAQ,GAAG5mD,KAAOV,GAClD9B,KAAKs+D,2CCpKjB,SAAA18C,EAAAjgB,GAqBA,IAAAo9D,EAAAriE,OAAAqiE,2BACA,SAAA7O,GAGA,IAFA,IAAAhoD,EAAAxL,OAAAwL,KAAAgoD,GACA8O,EAAA,GACAhjE,EAAA,EAAmBA,EAAAkM,EAAA9E,OAAiBpH,IACpCgjE,EAAA92D,EAAAlM,IAAAU,OAAAiR,yBAAAuiD,EAAAhoD,EAAAlM,IAEA,OAAAgjE,GAGAC,EAAA,WACAnjE,EAAA+G,OAAA,SAAArB,GACA,IAAAs0C,EAAAt0C,GAAA,CAEA,IADA,IAAAunD,EAAA,GACA/sD,EAAA,EAAmBA,EAAAqG,UAAAe,OAAsBpH,IACzC+sD,EAAA3jD,KAAApC,EAAAX,UAAArG,KAEA,OAAA+sD,EAAAjgD,KAAA,KAGA9M,EAAA,EAmBA,IAnBA,IACA2H,EAAAtB,UACA6E,EAAAvD,EAAAP,OACAmzD,EAAAhxD,OAAA/D,GAAA8H,QAAA21D,EAAA,SAAAvE,GACA,UAAAA,EAAA,UACA,GAAA1+D,GAAAkL,EAAA,OAAAwzD,EACA,OAAAA,GACA,gBAAAn1D,OAAA5B,EAAA3H,MACA,gBAAAiI,OAAAN,EAAA3H,MACA,SACA,IACA,OAAAswD,KAAAiO,UAAA52D,EAAA3H,MACS,MAAAi3B,GACT,mBAEA,QACA,OAAAynC,KAGAA,EAAA/2D,EAAA3H,GAAuBA,EAAAkL,EAASwzD,EAAA/2D,IAAA3H,GAChC2jD,EAAA+a,KAAAj6D,EAAAi6D,GACAnE,GAAA,IAAAmE,EAEAnE,GAAA,IAAAvzD,EAAA03D,GAGA,OAAAnE,GAOAz6D,EAAAojE,UAAA,SAAA9xD,EAAAm7C,GACA,YAAA3mC,IAAA,IAAAA,EAAAu9C,cACA,OAAA/xD,EAIA,YAAAwU,EACA,kBACA,OAAA9lB,EAAAojE,UAAA9xD,EAAAm7C,GAAAnmD,MAAApC,KAAAqC,YAIA,IAAAgD,GAAA,EAeA,OAdA,WACA,IAAAA,EAAA,CACA,GAAAuc,EAAAw9C,iBACA,UAAA38D,MAAA8lD,GACO3mC,EAAAy9C,iBACP19D,EAAA29D,MAAA/W,GAEA5mD,EAAAmB,MAAAylD,GAEAljD,GAAA,EAEA,OAAA+H,EAAAhL,MAAApC,KAAAqC,aAOA,IACAk9D,EADAC,EAAA,GA6BA,SAAAx8D,EAAAktD,EAAAuP,GAEA,IAAArhE,EAAA,CACAmiC,KAAA,GACAm/B,QAAAC,GAkBA,OAfAt9D,UAAAe,QAAA,IAAAhF,EAAAqgC,MAAAp8B,UAAA,IACAA,UAAAe,QAAA,IAAAhF,EAAAwhE,OAAAv9D,UAAA,IACA68C,EAAAugB,GAEArhE,EAAAyhE,WAAAJ,EACGA,GAEH3jE,EAAAgkE,QAAA1hE,EAAAqhE,GAGA5f,EAAAzhD,EAAAyhE,cAAAzhE,EAAAyhE,YAAA,GACAhgB,EAAAzhD,EAAAqgC,SAAArgC,EAAAqgC,MAAA,GACAohB,EAAAzhD,EAAAwhE,UAAAxhE,EAAAwhE,QAAA,GACA/f,EAAAzhD,EAAA2hE,iBAAA3hE,EAAA2hE,eAAA,GACA3hE,EAAAwhE,SAAAxhE,EAAAshE,QAAAM,GACAC,EAAA7hE,EAAA8xD,EAAA9xD,EAAAqgC,OAoCA,SAAAuhC,EAAAzJ,EAAA2J,GACA,IAAA3V,EAAAvnD,EAAAm9D,OAAAD,GAEA,OAAA3V,EACA,KAAAvnD,EAAA48D,OAAArV,GAAA,OAAAgM,EACA,KAAAvzD,EAAA48D,OAAArV,GAAA,OAEAgM,EAKA,SAAAoJ,EAAApJ,EAAA2J,GACA,OAAA3J,EAeA,SAAA0J,EAAA7hE,EAAAnB,EAAAmjE,GAGA,GAAAhiE,EAAA2hE,eACA9iE,GACA4L,EAAA5L,EAAA+F,UAEA/F,EAAA+F,UAAAlH,EAAAkH,WAEA/F,EAAA+N,aAAA/N,EAAA+N,YAAApN,YAAAX,GAAA,CACA,IAAAkJ,EAAAlJ,EAAA+F,QAAAo9D,EAAAhiE,GAIA,OAHA03C,EAAA3vC,KACAA,EAAA85D,EAAA7hE,EAAA+H,EAAAi6D,IAEAj6D,EAIA,IAAAk6D,EA+FA,SAAAjiE,EAAAnB,GACA,GAAA4iD,EAAA5iD,GACA,OAAAmB,EAAAshE,QAAA,yBACA,GAAA5pB,EAAA74C,GAAA,CACA,IAAAqjE,EAAA,IAAAhU,KAAAiO,UAAAt9D,GAAAqM,QAAA,aACAA,QAAA,YACAA,QAAA,gBACA,OAAAlL,EAAAshE,QAAAY,EAAA,UAEA,GAAAzqB,EAAA54C,GACA,OAAAmB,EAAAshE,QAAA,GAAAziE,EAAA,UACA,GAAAiiD,EAAAjiD,GACA,OAAAmB,EAAAshE,QAAA,GAAAziE,EAAA,WAEA,GAAA0iD,EAAA1iD,GACA,OAAAmB,EAAAshE,QAAA,eA9GAa,CAAAniE,EAAAnB,GACA,GAAAojE,EACA,OAAAA,EAIA,IAAAn4D,EAAAxL,OAAAwL,KAAAjL,GACAujE,EApCA,SAAAz9C,GACA,IAAA8a,EAAA,GAMA,OAJA9a,EAAA/N,QAAA,SAAArM,EAAA83D,GACA5iC,EAAAl1B,IAAA,IAGAk1B,EA6BA6iC,CAAAx4D,GAQA,GANA9J,EAAAyhE,aACA33D,EAAAxL,OAAAoH,oBAAA7G,IAKA04C,EAAA14C,KACAiL,EAAA+M,QAAA,eAAA/M,EAAA+M,QAAA,mBACA,OAAA0rD,EAAA1jE,GAIA,OAAAiL,EAAA9E,OAAA,CACA,GAAAyF,EAAA5L,GAAA,CACA,IAAAV,EAAAU,EAAAV,KAAA,KAAAU,EAAAV,KAAA,GACA,OAAA6B,EAAAshE,QAAA,YAAAnjE,EAAA,eAEA,GAAAimB,EAAAvlB,GACA,OAAAmB,EAAAshE,QAAA7iD,OAAAjf,UAAAgR,SAAAzS,KAAAc,GAAA,UAEA,GAAAmlB,EAAAnlB,GACA,OAAAmB,EAAAshE,QAAArsC,KAAAz1B,UAAAgR,SAAAzS,KAAAc,GAAA,QAEA,GAAA04C,EAAA14C,GACA,OAAA0jE,EAAA1jE,GAIA,IA2CA2jE,EA3CAhH,EAAA,GAAA72C,GAAA,EAAA89C,EAAA,KAA4C,MAG5CxpC,EAAAp6B,KACA8lB,GAAA,EACA89C,EAAA,WAIAh4D,EAAA5L,MAEA28D,EAAA,cADA38D,EAAAV,KAAA,KAAAU,EAAAV,KAAA,IACA,KAkBA,OAdAimB,EAAAvlB,KACA28D,EAAA,IAAA/8C,OAAAjf,UAAAgR,SAAAzS,KAAAc,IAIAmlB,EAAAnlB,KACA28D,EAAA,IAAAvmC,KAAAz1B,UAAAkjE,YAAA3kE,KAAAc,IAIA04C,EAAA14C,KACA28D,EAAA,IAAA+G,EAAA1jE,IAGA,IAAAiL,EAAA9E,QAAA2f,GAAA,GAAA9lB,EAAAmG,OAIAg9D,EAAA,EACA59C,EAAAvlB,GACAmB,EAAAshE,QAAA7iD,OAAAjf,UAAAgR,SAAAzS,KAAAc,GAAA,UAEAmB,EAAAshE,QAAA,uBAIAthE,EAAAmiC,KAAAn7B,KAAAnI,GAIA2jE,EADA79C,EAsCA,SAAA3kB,EAAAnB,EAAAmjE,EAAAI,EAAAt4D,GAEA,IADA,IAAA04D,EAAA,GACA5kE,EAAA,EAAAC,EAAAgB,EAAAmG,OAAmCpH,EAAAC,IAAOD,EAC1C6B,EAAAZ,EAAAsI,OAAAvJ,IACA4kE,EAAAx7D,KAAA27D,EAAA3iE,EAAAnB,EAAAmjE,EAAAI,EACAj7D,OAAAvJ,IAAA,IAEA4kE,EAAAx7D,KAAA,IASA,OANA8C,EAAA8M,QAAA,SAAAzX,GACAA,EAAAi1B,MAAA,UACAouC,EAAAx7D,KAAA27D,EAAA3iE,EAAAnB,EAAAmjE,EAAAI,EACAjjE,GAAA,MAGAqjE,EArDAI,CAAA5iE,EAAAnB,EAAAmjE,EAAAI,EAAAt4D,GAEAA,EAAAmN,IAAA,SAAA9X,GACA,OAAAwjE,EAAA3iE,EAAAnB,EAAAmjE,EAAAI,EAAAjjE,EAAAwlB,KAIA3kB,EAAAmiC,KAAAz4B,MA6GA,SAAA84D,EAAAhH,EAAAiH,GAQA,GANAD,EAAAjvD,OAAA,SAAAsvD,EAAAC,GAGA,OAFAC,EACAD,EAAAjsD,QAAA,UAAAksD,EACAF,EAAAC,EAAA53D,QAAA,sBAAAlG,OAAA,GACG,GAEH,GACA,OAAAy9D,EAAA,IACA,KAAAjH,EAAA,GAAAA,EAAA,OACA,IACAgH,EAAA93D,KAAA,SACA,IACA+3D,EAAA,GAGA,OAAAA,EAAA,GAAAjH,EAAA,IAAAgH,EAAA93D,KAAA,UAAA+3D,EAAA,GA5HAO,CAAAR,EAAAhH,EAAAiH,IAxBAA,EAAA,GAAAjH,EAAAiH,EAAA,GA+CA,SAAAF,EAAA1jE,GACA,UAAAwF,MAAA7E,UAAAgR,SAAAzS,KAAAc,GAAA,IAwBA,SAAA8jE,EAAA3iE,EAAAnB,EAAAmjE,EAAAI,EAAAjjE,EAAAwlB,GACA,IAAAxmB,EAAAg6D,EAAA//C,EAsCA,IArCAA,EAAA9Z,OAAAiR,yBAAA1Q,EAAAM,IAAA,CAAyDN,QAAAM,KACzDV,IAEA05D,EADA//C,EAAAhQ,IACApI,EAAAshE,QAAA,6BAEAthE,EAAAshE,QAAA,sBAGAlpD,EAAAhQ,MACA+vD,EAAAn4D,EAAAshE,QAAA,uBAGA7hE,EAAA2iE,EAAAjjE,KACAhB,EAAA,IAAAgB,EAAA,KAEAg5D,IACAn4D,EAAAmiC,KAAAtrB,QAAAuB,EAAAvZ,OAAA,GAEAs5D,EADA5W,EAAAygB,GACAH,EAAA7hE,EAAAoY,EAAAvZ,MAAA,MAEAgjE,EAAA7hE,EAAAoY,EAAAvZ,MAAAmjE,EAAA,IAEAnrD,QAAA,WAEAshD,EADAxzC,EACAwzC,EAAA9tD,MAAA,MAAA4M,IAAA,SAAAgsD,GACA,WAAAA,IACWv4D,KAAA,MAAA4yD,OAAA,GAEX,KAAAnF,EAAA9tD,MAAA,MAAA4M,IAAA,SAAAgsD,GACA,YAAAA,IACWv4D,KAAA,OAIXytD,EAAAn4D,EAAAshE,QAAA,yBAGA7f,EAAAtjD,GAAA,CACA,GAAAwmB,GAAAxlB,EAAAi1B,MAAA,SACA,OAAA+jC,GAEAh6D,EAAA+vD,KAAAiO,UAAA,GAAAh9D,IACAi1B,MAAA,iCACAj2B,IAAAm/D,OAAA,EAAAn/D,EAAA6G,OAAA,GACA7G,EAAA6B,EAAAshE,QAAAnjE,EAAA,UAEAA,IAAA+M,QAAA,YACAA,QAAA,YACAA,QAAA,gBACA/M,EAAA6B,EAAAshE,QAAAnjE,EAAA,WAIA,OAAAA,EAAA,KAAAg6D,EA2BA,SAAAl/B,EAAAiqC,GACA,OAAAt/D,MAAAq1B,QAAAiqC,GAIA,SAAApiB,EAAAz4C,GACA,wBAAAA,EAIA,SAAAk5C,EAAAl5C,GACA,cAAAA,EASA,SAAAovC,EAAApvC,GACA,uBAAAA,EAIA,SAAAqvC,EAAArvC,GACA,uBAAAA,EASA,SAAAo5C,EAAAp5C,GACA,gBAAAA,EAIA,SAAA+b,EAAAozC,GACA,OAAAn1D,EAAAm1D,IAAA,oBAAAj2B,EAAAi2B,GAIA,SAAAn1D,EAAAgG,GACA,uBAAAA,GAAA,OAAAA,EAIA,SAAA2b,EAAA9lB,GACA,OAAAmE,EAAAnE,IAAA,kBAAAqjC,EAAArjC,GAIA,SAAAq5C,EAAAn1C,GACA,OAAAC,EAAAD,KACA,mBAAAm/B,EAAAn/B,iBAAAiC,OAIA,SAAAoG,EAAApC,GACA,yBAAAA,EAgBA,SAAAk5B,EAAAljC,GACA,OAAAC,OAAAkB,UAAAgR,SAAAzS,KAAAM,GAIA,SAAAikD,EAAAjjD,GACA,OAAAA,EAAA,OAAAA,EAAAmR,SAAA,IAAAnR,EAAAmR,SAAA,IApbA9S,EAAAylE,SAAA,SAAA/6D,GAIA,GAHAq5C,EAAA0f,KACAA,EAAA39C,EAAA6yC,IAAA+M,YAAA,IACAh7D,IAAA0xC,eACAsnB,EAAAh5D,GACA,OAAAqW,OAAA,MAAArW,EAAA,WAAAgD,KAAA+1D,GAAA,CACA,IAAAkC,EAAA7/C,EAAA6/C,IACAjC,EAAAh5D,GAAA,WACA,IAAA+hD,EAAAzsD,EAAA+G,OAAAT,MAAAtG,EAAAuG,WACAV,EAAAmB,MAAA,YAAA0D,EAAAi7D,EAAAlZ,SAGAiX,EAAAh5D,GAAA,aAGA,OAAAg5D,EAAAh5D,IAoCA1K,EAAAkH,UAIAA,EAAA48D,OAAA,CACA8B,KAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,MAAA,QACAC,KAAA,QACAC,MAAA,QACAC,KAAA,QACAC,KAAA,QACAC,MAAA,QACAC,QAAA,QACAC,IAAA,QACAC,OAAA,SAIAt/D,EAAAm9D,OAAA,CACAoC,QAAA,OACA3nC,OAAA,SACA4nC,QAAA,SACAjjE,UAAA,OACAkjE,KAAA,OACAv5D,OAAA,QACAw5D,KAAA,UAEAnmC,OAAA,OAkRAzgC,EAAAu7B,UAKAv7B,EAAAojD,YAKApjD,EAAA6jD,SAKA7jD,EAAA6mE,kBAHA,SAAAl8D,GACA,aAAAA,GAOA3K,EAAA+5C,WAKA/5C,EAAAg6C,WAKAh6C,EAAAwiC,SAHA,SAAA73B,GACA,uBAAAA,GAOA3K,EAAA+jD,cAKA/jD,EAAA0mB,WAKA1mB,EAAA2E,WAKA3E,EAAAsmB,SAMAtmB,EAAA65C,UAKA75C,EAAA+M,aAUA/M,EAAA8mE,YARA,SAAAn8D,GACA,cAAAA,GACA,kBAAAA,GACA,iBAAAA,GACA,iBAAAA,GACA,iBAAAA,QACA,IAAAA,GAIA3K,EAAAu5B,SAAmBz5B,EAAQ,KAY3B,IAAAinE,EAAA,uDACA,mBAGA,SAAAC,IACA,IAAAxmE,EAAA,IAAA+2B,KACA7wB,EAAA,CAAAk+C,EAAApkD,EAAAymE,YACAriB,EAAApkD,EAAA0mE,cACAtiB,EAAApkD,EAAA2mE,eAAAn6D,KAAA,KACA,OAAAxM,EAAA4mE,UAAAL,EAAAvmE,EAAA6mE,YAAA3gE,GAAAsG,KAAA,KAqCA,SAAAjL,EAAAqyD,EAAA7Y,GACA,OAAA36C,OAAAkB,UAAAC,eAAA1B,KAAA+zD,EAAA7Y,GAjCAv7C,EAAAqG,IAAA,WACAR,EAAAQ,IAAA,UAAA2gE,IAAAhnE,EAAA+G,OAAAT,MAAAtG,EAAAuG,aAiBAvG,EAAAsnE,SAAmBxnE,EAAQ,KAE3BE,EAAAgkE,QAAA,SAAA3F,EAAAthC,GAEA,IAAAA,IAAAp4B,EAAAo4B,GAAA,OAAAshC,EAIA,IAFA,IAAAjyD,EAAAxL,OAAAwL,KAAA2wB,GACA78B,EAAAkM,EAAA9E,OACApH,KACAm+D,EAAAjyD,EAAAlM,IAAA68B,EAAA3wB,EAAAlM,IAEA,OAAAm+D,GAOA,IAAAkJ,EAAA,oBAAAtmE,cAAA,8BAAAwC,EA0DA,SAAA+jE,EAAAC,EAAAC,GAKA,IAAAD,EAAA,CACA,IAAAE,EAAA,IAAAhhE,MAAA,2CACAghE,EAAAF,SACAA,EAAAE,EAEA,OAAAD,EAAAD,GAlEAznE,EAAA4nE,UAAA,SAAAC,GACA,sBAAAA,EACA,UAAAhjE,UAAA,oDAEA,GAAA0iE,GAAAM,EAAAN,GAAA,CACA,IAAAj2D,EACA,sBADAA,EAAAu2D,EAAAN,IAEA,UAAA1iE,UAAA,iEAKA,OAHAjE,OAAAC,eAAAyQ,EAAAi2D,EAAA,CACApmE,MAAAmQ,EAAAxQ,YAAA,EAAAqO,UAAA,EAAAC,cAAA,IAEAkC,EAGA,SAAAA,IAQA,IAPA,IAAAw2D,EAAAC,EACAC,EAAA,IAAA3tC,QAAA,SAAA0Z,EAAAoM,GACA2nB,EAAA/zB,EACAg0B,EAAA5nB,IAGAt4C,EAAA,GACA3H,EAAA,EAAmBA,EAAAqG,UAAAe,OAAsBpH,IACzC2H,EAAAyB,KAAA/C,UAAArG,IAEA2H,EAAAyB,KAAA,SAAAzC,EAAA1F,GACA0F,EACAkhE,EAAAlhE,GAEAihE,EAAA3mE,KAIA,IACA0mE,EAAAvhE,MAAApC,KAAA2D,GACK,MAAAhB,GACLkhE,EAAAlhE,GAGA,OAAAmhE,EAQA,OALApnE,OAAAqnE,eAAA32D,EAAA1Q,OAAAiK,eAAAg9D,IAEAN,GAAA3mE,OAAAC,eAAAyQ,EAAAi2D,EAAA,CACApmE,MAAAmQ,EAAAxQ,YAAA,EAAAqO,UAAA,EAAAC,cAAA,IAEAxO,OAAAsnE,iBACA52D,EACA2xD,EAAA4E,KAIA7nE,EAAA4nE,UAAAO,OAAAZ,EAiDAvnE,EAAAooE,YAlCA,SAAAP,GACA,sBAAAA,EACA,UAAAhjE,UAAA,oDAMA,SAAAwjE,IAEA,IADA,IAAAxgE,EAAA,GACA3H,EAAA,EAAmBA,EAAAqG,UAAAe,OAAsBpH,IACzC2H,EAAAyB,KAAA/C,UAAArG,IAGA,IAAAooE,EAAAzgE,EAAAmE,MACA,sBAAAs8D,EACA,UAAAzjE,UAAA,8CAEA,IAAAN,EAAAL,KACAwjE,EAAA,WACA,OAAAY,EAAAhiE,MAAA/B,EAAAgC,YAIAshE,EAAAvhE,MAAApC,KAAA2D,GACAsrD,KAAA,SAAA9oD,GAA2Byb,EAAAhW,SAAA43D,EAAA,KAAAr9D,IAC3B,SAAAk+D,GAA2BziD,EAAAhW,SAAA03D,EAAAe,EAAAb,KAM3B,OAHA9mE,OAAAqnE,eAAAI,EAAAznE,OAAAiK,eAAAg9D,IACAjnE,OAAAsnE,iBAAAG,EACApF,EAAA4E,IACAQ,6CC5rBA,IAAA1jE,EAAe7E,EAAQ,GACvBkQ,EAAelQ,EAAQ,GAAWkQ,SAElCw4D,EAAA7jE,EAAAqL,IAAArL,EAAAqL,EAAAM,eACArQ,EAAAD,QAAA,SAAA4E,GACA,OAAA4jE,EAAAx4D,EAAAM,cAAA1L,GAAA,qBCLA5E,EAAA0F,EAAY5F,EAAQ,oBCApB,IAAA2oE,EAAa3oE,EAAQ,GAARA,CAAmB,QAChCiF,EAAUjF,EAAQ,IAClBG,EAAAD,QAAA,SAAAyB,GACA,OAAAgnE,EAAAhnE,KAAAgnE,EAAAhnE,GAAAsD,EAAAtD,oBCFAxB,EAAAD,QAAA,gGAEA2M,MAAA,sBCHA,IAAAqD,EAAelQ,EAAQ,GAAWkQ,SAClC/P,EAAAD,QAAAgQ,KAAAW,iCCCA,IAAAhM,EAAe7E,EAAQ,GACvBwF,EAAexF,EAAQ,GACvB4oE,EAAA,SAAA/iE,EAAA8S,GAEA,GADAnT,EAAAK,IACAhB,EAAA8T,IAAA,OAAAA,EAAA,MAAA5T,UAAA4T,EAAA,8BAEAxY,EAAAD,QAAA,CACA0K,IAAA9J,OAAAqnE,iBAAA,gBACA,SAAAv6D,EAAAi7D,EAAAj+D,GACA,KACAA,EAAc5K,EAAQ,GAARA,CAAgB4D,SAAArD,KAAiBP,EAAQ,IAAgB4F,EAAA9E,OAAAkB,UAAA,aAAA4I,IAAA,IACvEgD,EAAA,IACAi7D,IAAAj7D,aAAAxH,OACO,MAAAxB,GAAYikE,GAAA,EACnB,gBAAAhjE,EAAA8S,GAIA,OAHAiwD,EAAA/iE,EAAA8S,GACAkwD,EAAAhjE,EAAAijE,UAAAnwD,EACA/N,EAAA/E,EAAA8S,GACA9S,GAVA,CAYK,IAAG,QAAAlC,GACRilE,wBCvBAzoE,EAAAD,QAAA,kECAA,IAAA2E,EAAe7E,EAAQ,GACvBmoE,EAAqBnoE,EAAQ,IAAc4K,IAC3CzK,EAAAD,QAAA,SAAA4I,EAAArF,EAAAmU,GACA,IACAtU,EADAF,EAAAK,EAAA2L,YAIG,OAFHhM,IAAAwU,GAAA,mBAAAxU,IAAAE,EAAAF,EAAApB,aAAA4V,EAAA5V,WAAA6C,EAAAvB,IAAA6kE,GACAA,EAAAr/D,EAAAxF,GACGwF,iCCNH,IAAA3D,EAAgBnF,EAAQ,IACxB0H,EAAc1H,EAAQ,IAEtBG,EAAAD,QAAA,SAAA2J,GACA,IAAA8wD,EAAAhxD,OAAAjC,EAAAtD,OACA0O,EAAA,GACAjR,EAAAsD,EAAA0E,GACA,GAAAhI,EAAA,GAAAA,GAAA6iC,IAAA,MAAA55B,WAAA,2BACA,KAAQjJ,EAAA,GAAMA,KAAA,KAAA84D,MAAA,EAAA94D,IAAAiR,GAAA6nD,GACd,OAAA7nD,kBCTA3S,EAAAD,QAAAsE,KAAAukE,MAAA,SAAAjK,GAEA,WAAAA,gBAAA,uBCFA,IAAAkK,EAAAxkE,KAAAykE,MACA9oE,EAAAD,SAAA8oE,GAEAA,EAAA,wBAAAA,EAAA,yBAEA,OAAAA,GAAA,OACA,SAAAlK,GACA,WAAAA,WAAA,MAAAA,EAAA,KAAAA,MAAA,EAAAt6D,KAAA1B,IAAAg8D,GAAA,GACCkK,mBCTD,IAAA7jE,EAAgBnF,EAAQ,IACxB0H,EAAc1H,EAAQ,IAGtBG,EAAAD,QAAA,SAAAgpE,GACA,gBAAApgE,EAAA0nD,GACA,IAGAjrD,EAAAkM,EAHAtP,EAAAwH,OAAAjC,EAAAoB,IACA1I,EAAA+E,EAAAqrD,GACAnwD,EAAA8B,EAAAqF,OAEA,OAAApH,EAAA,GAAAA,GAAAC,EAAA6oE,EAAA,QAAAvlE,GACA4B,EAAApD,EAAA+yC,WAAA90C,IACA,OAAAmF,EAAA,OAAAnF,EAAA,IAAAC,IAAAoR,EAAAtP,EAAA+yC,WAAA90C,EAAA,WAAAqR,EAAA,MACAy3D,EAAA/mE,EAAA0sC,OAAAzuC,GAAAmF,EACA2jE,EAAA/mE,EAAAgE,MAAA/F,IAAA,GAAAqR,EAAA,OAAAlM,EAAA,iDCbA,IAAA0N,EAAcjT,EAAQ,IACtByC,EAAczC,EAAQ,GACtBuC,EAAevC,EAAQ,IACvBsC,EAAWtC,EAAQ,IACnBkU,EAAgBlU,EAAQ,IACxBmpE,EAAkBnpE,EAAQ,KAC1Bq7D,EAAqBr7D,EAAQ,IAC7B+K,EAAqB/K,EAAQ,IAC7ByW,EAAezW,EAAQ,EAARA,CAAgB,YAC/BopE,IAAA,GAAA98D,MAAA,WAAAA,QAKA+8D,EAAA,WAA8B,OAAAjlE,MAE9BjE,EAAAD,QAAA,SAAAib,EAAAxN,EAAAwiD,EAAArhD,EAAAw6D,EAAAC,EAAAluD,GACA8tD,EAAAhZ,EAAAxiD,EAAAmB,GACA,IAeAysD,EAAA55D,EAAA6nE,EAfAC,EAAA,SAAAC,GACA,IAAAN,GAAAM,KAAA/wD,EAAA,OAAAA,EAAA+wD,GACA,OAAAA,GACA,IAVA,OAWA,IAVA,SAUA,kBAA6C,WAAAvZ,EAAA/rD,KAAAslE,IACxC,kBAA4B,WAAAvZ,EAAA/rD,KAAAslE,KAEjChzD,EAAA/I,EAAA,YACAg8D,EAdA,UAcAL,EACAM,GAAA,EACAjxD,EAAAwC,EAAAnZ,UACA6nE,EAAAlxD,EAAAlC,IAAAkC,EAnBA,eAmBA2wD,GAAA3wD,EAAA2wD,GACAQ,EAAAD,GAAAJ,EAAAH,GACAS,EAAAT,EAAAK,EAAAF,EAAA,WAAAK,OAAAnmE,EACAqmE,EAAA,SAAAr8D,GAAAgL,EAAAhD,SAAAk0D,EAwBA,GArBAG,IACAR,EAAAz+D,EAAAi/D,EAAAzpE,KAAA,IAAA4a,OACAra,OAAAkB,WAAAwnE,EAAA16D,OAEAusD,EAAAmO,EAAA9yD,GAAA,GAEAzD,GAAA,mBAAAu2D,EAAA/yD,IAAAnU,EAAAknE,EAAA/yD,EAAA4yD,IAIAM,GAAAE,GAjCA,WAiCAA,EAAAlpE,OACAipE,GAAA,EACAE,EAAA,WAAkC,OAAAD,EAAAtpE,KAAA6D,QAGlC6O,IAAAoI,IAAA+tD,IAAAQ,GAAAjxD,EAAAlC,IACAnU,EAAAqW,EAAAlC,EAAAqzD,GAGA51D,EAAAvG,GAAAm8D,EACA51D,EAAAwC,GAAA2yD,EACAC,EAMA,GALA/N,EAAA,CACA/lD,OAAAm0D,EAAAG,EAAAL,EA9CA,UA+CAn9D,KAAAi9D,EAAAO,EAAAL,EAhDA,QAiDA9zD,QAAAo0D,GAEA1uD,EAAA,IAAA1Z,KAAA45D,EACA55D,KAAAgX,GAAApW,EAAAoW,EAAAhX,EAAA45D,EAAA55D,SACKc,IAAAa,EAAAb,EAAAO,GAAAomE,GAAAQ,GAAAj8D,EAAA4tD,GAEL,OAAAA,oBClEA,IAAA30C,EAAe5mB,EAAQ,IACvB0H,EAAc1H,EAAQ,IAEtBG,EAAAD,QAAA,SAAA4I,EAAAmhE,EAAAt8D,GACA,GAAAiZ,EAAAqjD,GAAA,MAAAllE,UAAA,UAAA4I,EAAA,0BACA,OAAAhE,OAAAjC,EAAAoB,sBCLA,IAAAjE,EAAe7E,EAAQ,GACvBmxD,EAAUnxD,EAAQ,IAClBkqE,EAAYlqE,EAAQ,EAARA,CAAgB,SAC5BG,EAAAD,QAAA,SAAA4E,GACA,IAAA8hB,EACA,OAAA/hB,EAAAC,UAAAnB,KAAAijB,EAAA9hB,EAAAolE,MAAAtjD,EAAA,UAAAuqC,EAAArsD,sBCNA,IAAAolE,EAAYlqE,EAAQ,EAARA,CAAgB,SAC5BG,EAAAD,QAAA,SAAA8R,GACA,IAAAgoD,EAAA,IACA,IACA,MAAAhoD,GAAAgoD,GACG,MAAAp1D,GACH,IAEA,OADAo1D,EAAAkQ,IAAA,GACA,MAAAl4D,GAAAgoD,GACK,MAAAp0D,KACF,2BCTH,IAAAsO,EAAgBlU,EAAQ,IACxByW,EAAezW,EAAQ,EAARA,CAAgB,YAC/B0U,EAAAtO,MAAApE,UAEA7B,EAAAD,QAAA,SAAA4E,GACA,YAAAnB,IAAAmB,IAAAoP,EAAA9N,QAAAtB,GAAA4P,EAAA+B,KAAA3R,kCCLA,IAAAqlE,EAAsBnqE,EAAQ,IAC9B8N,EAAiB9N,EAAQ,IAEzBG,EAAAD,QAAA,SAAA4B,EAAAmK,EAAA5K,GACA4K,KAAAnK,EAAAqoE,EAAAvkE,EAAA9D,EAAAmK,EAAA6B,EAAA,EAAAzM,IACAS,EAAAmK,GAAA5K,oBCNA,IAAAoS,EAAczT,EAAQ,IACtByW,EAAezW,EAAQ,EAARA,CAAgB,YAC/BkU,EAAgBlU,EAAQ,IACxBG,EAAAD,QAAiBF,EAAQ,GAASoqE,kBAAA,SAAAtlE,GAClC,GAAAnB,MAAAmB,EAAA,OAAAA,EAAA2R,IACA3R,EAAA,eACAoP,EAAAT,EAAA3O,mCCJA,IAAAmN,EAAejS,EAAQ,IACvBwT,EAAsBxT,EAAQ,IAC9BkS,EAAelS,EAAQ,GACvBG,EAAAD,QAAA,SAAAmB,GAOA,IANA,IAAAwE,EAAAoM,EAAA7N,MACAoD,EAAA0K,EAAArM,EAAA2B,QACA4Q,EAAA3R,UAAAe,OACAyE,EAAAuH,EAAA4E,EAAA,EAAA3R,UAAA,QAAA9C,EAAA6D,GACAwS,EAAA5B,EAAA,EAAA3R,UAAA,QAAA9C,EACA0mE,OAAA1mE,IAAAqW,EAAAxS,EAAAgM,EAAAwG,EAAAxS,GACA6iE,EAAAp+D,GAAApG,EAAAoG,KAAA5K,EACA,OAAAwE,iCCZA,IAAAykE,EAAuBtqE,EAAQ,IAC/BmY,EAAWnY,EAAQ,KACnBkU,EAAgBlU,EAAQ,IACxB6R,EAAgB7R,EAAQ,IAMxBG,EAAAD,QAAiBF,EAAQ,GAARA,CAAwBoG,MAAA,iBAAAmkE,EAAAb,GACzCtlE,KAAAirD,GAAAx9C,EAAA04D,GACAnmE,KAAAomE,GAAA,EACApmE,KAAAqmE,GAAAf,GAEC,WACD,IAAA7jE,EAAAzB,KAAAirD,GACAqa,EAAAtlE,KAAAqmE,GACAx+D,EAAA7H,KAAAomE,KACA,OAAA3kE,GAAAoG,GAAApG,EAAA2B,QACApD,KAAAirD,QAAA1rD,EACAwU,EAAA,IAEAA,EAAA,UAAAuxD,EAAAz9D,EACA,UAAAy9D,EAAA7jE,EAAAoG,GACA,CAAAA,EAAApG,EAAAoG,MACC,UAGDiI,EAAAw2D,UAAAx2D,EAAA9N,MAEAkkE,EAAA,QACAA,EAAA,UACAA,EAAA,yCC/BA,IAaAK,EACAC,EAdAC,EAAkB7qE,EAAQ,IAE1B8qE,EAAA7pD,OAAAjf,UAAA2C,KAIAomE,EAAAphE,OAAA3H,UAAA0L,QAEAs9D,EAAAF,EAIAG,GACAN,EAAA,IACAC,EAAA,MACAE,EAAAvqE,KAAAoqE,EAAA,KACAG,EAAAvqE,KAAAqqE,EAAA,KACA,IAAAD,EAAA,eAAAC,EAAA,WAIAM,OAAAvnE,IAAA,OAAAgB,KAAA,QAEAsmE,GAAAC,KAGAF,EAAA,SAAArQ,GACA,IACAlkC,EAAA00C,EAAAv0C,EAAAx2B,EADA45D,EAAA51D,KAwBA,OArBA8mE,IACAC,EAAA,IAAAlqD,OAAA,IAAA+4C,EAAAr3D,OAAA,WAAAkoE,EAAAtqE,KAAAy5D,KAEAiR,IAAAx0C,EAAAujC,EAAA,WAEApjC,EAAAk0C,EAAAvqE,KAAAy5D,EAAAW,GAEAsQ,GAAAr0C,IACAojC,EAAA,UAAAA,EAAA53D,OAAAw0B,EAAA3qB,MAAA2qB,EAAA,GAAApvB,OAAAivB,GAEAy0C,GAAAt0C,KAAApvB,OAAA,GAIAujE,EAAAxqE,KAAAq2B,EAAA,GAAAu0C,EAAA,WACA,IAAA/qE,EAAA,EAAmBA,EAAAqG,UAAAe,OAAA,EAA0BpH,SAC7CuD,IAAA8C,UAAArG,KAAAw2B,EAAAx2B,QAAAuD,KAKAizB,IAIAz2B,EAAAD,QAAA8qE,gCCxDA,IAAAnwB,EAAS76C,EAAQ,GAARA,EAAsB,GAI/BG,EAAAD,QAAA,SAAAkD,EAAA6I,EAAA0tD,GACA,OAAA1tD,GAAA0tD,EAAA9e,EAAAz3C,EAAA6I,GAAAzE,OAAA,qBCNA,IAaAyxC,EAAAloC,EAAAmtD,EAbA17D,EAAUxC,EAAQ,IAClBo7C,EAAap7C,EAAQ,KACrBorE,EAAWprE,EAAQ,IACnBqrE,EAAUrrE,EAAQ,IAClBoC,EAAapC,EAAQ,GACrBgmB,EAAA5jB,EAAA4jB,QACAslD,EAAAlpE,EAAAkO,aACAi7D,EAAAnpE,EAAAopE,eACAj7D,EAAAnO,EAAAmO,eACAk7D,EAAArpE,EAAAqpE,SACAC,EAAA,EACAt6D,EAAA,GAGAk8C,EAAA,WACA,IAAArpD,GAAAG,KAEA,GAAAgN,EAAAnP,eAAAgC,GAAA,CACA,IAAAuN,EAAAJ,EAAAnN,UACAmN,EAAAnN,GACAuN,MAGAxI,EAAA,SAAA2iE,GACAre,EAAA/sD,KAAAorE,EAAAznE,OAGAonE,GAAAC,IACAD,EAAA,SAAA95D,GAGA,IAFA,IAAAzJ,EAAA,GACA3H,EAAA,EACAqG,UAAAe,OAAApH,GAAA2H,EAAAyB,KAAA/C,UAAArG,MAMA,OALAgR,IAAAs6D,GAAA,WAEAtwB,EAAA,mBAAA5pC,IAAA5N,SAAA4N,GAAAzJ,IAEAkxC,EAAAyyB,GACAA,GAEAH,EAAA,SAAAtnE,UACAmN,EAAAnN,IAGsB,WAAhBjE,EAAQ,GAARA,CAAgBgmB,GACtBizB,EAAA,SAAAh1C,GACA+hB,EAAAhW,SAAAxN,EAAA8qD,EAAArpD,EAAA,KAGGwnE,KAAAvlE,IACH+yC,EAAA,SAAAh1C,GACAwnE,EAAAvlE,IAAA1D,EAAA8qD,EAAArpD,EAAA,KAGGsM,GAEH2tD,GADAntD,EAAA,IAAAR,GACAW,MACAH,EAAAC,MAAAC,UAAAjI,EACAiwC,EAAAz2C,EAAA07D,EAAA/sD,YAAA+sD,EAAA,IAGG97D,EAAA8pD,kBAAA,mBAAA/6C,cAAA/O,EAAAwpE,eACH3yB,EAAA,SAAAh1C,GACA7B,EAAA+O,YAAAlN,EAAA,SAEA7B,EAAA8pD,iBAAA,UAAAljD,GAAA,IAGAiwC,EAvDA,uBAsDGoyB,EAAA,UACH,SAAApnE,GACAmnE,EAAAt6D,YAAAu6D,EAAA,yCACAD,EAAAx6D,YAAAxM,MACAkpD,EAAA/sD,KAAA0D,KAKA,SAAAA,GACAqK,WAAA9L,EAAA8qD,EAAArpD,EAAA,QAIA9D,EAAAD,QAAA,CACA0K,IAAA0gE,EACA3uC,MAAA4uC,iCCjFA,IAAAnpE,EAAapC,EAAQ,GACrBiwD,EAAkBjwD,EAAQ,GAC1BiT,EAAcjT,EAAQ,IACtBkT,EAAalT,EAAQ,IACrBsC,EAAWtC,EAAQ,IACnBsT,EAAkBtT,EAAQ,IAC1BmN,EAAYnN,EAAQ,GACpBoT,EAAiBpT,EAAQ,IACzBmF,EAAgBnF,EAAQ,IACxBkS,EAAelS,EAAQ,GACvBuT,EAAcvT,EAAQ,KACtB2T,EAAW3T,EAAQ,IAAgB4F,EACnCD,EAAS3F,EAAQ,IAAc4F,EAC/ByO,EAAgBrU,EAAQ,IACxBq7D,EAAqBr7D,EAAQ,IAG7B6rE,EAAA,YAEAC,EAAA,eACAn3D,EAAAvS,EAAA,YACAyS,EAAAzS,EAAA,SACAoC,EAAApC,EAAAoC,KACAsG,EAAA1I,EAAA0I,WAEA45B,EAAAtiC,EAAAsiC,SACAqnC,EAAAp3D,EACAq3D,EAAAxnE,EAAAwnE,IACAC,EAAAznE,EAAAynE,IACAt6D,EAAAnN,EAAAmN,MACApL,EAAA/B,EAAA+B,IACA2lE,EAAA1nE,EAAA0nE,IAIAC,EAAAlc,EAAA,KAHA,SAIAmc,EAAAnc,EAAA,KAHA,aAIAoc,EAAApc,EAAA,KAHA,aAMA,SAAAqc,EAAAjrE,EAAAkrE,EAAAC,GACA,IAOA5nE,EAAApE,EAAAC,EAPA6W,EAAA,IAAAlR,MAAAomE,GACAC,EAAA,EAAAD,EAAAD,EAAA,EACAG,GAAA,GAAAD,GAAA,EACAE,EAAAD,GAAA,EACAE,EAAA,KAAAL,EAAAN,EAAA,OAAAA,EAAA,SACA7rE,EAAA,EACA+B,EAAAd,EAAA,OAAAA,GAAA,EAAAA,EAAA,MAkCA,KAhCAA,EAAA2qE,EAAA3qE,KAEAA,OAAAqjC,GAEAlkC,EAAAa,KAAA,IACAuD,EAAA8nE,IAEA9nE,EAAA+M,EAAApL,EAAAlF,GAAA6qE,GACA7qE,GAAAZ,EAAAwrE,EAAA,GAAArnE,IAAA,IACAA,IACAnE,GAAA,IAGAY,GADAuD,EAAA+nE,GAAA,EACAC,EAAAnsE,EAEAmsE,EAAAX,EAAA,IAAAU,IAEAlsE,GAAA,IACAmE,IACAnE,GAAA,GAEAmE,EAAA+nE,GAAAD,GACAlsE,EAAA,EACAoE,EAAA8nE,GACK9nE,EAAA+nE,GAAA,GACLnsE,GAAAa,EAAAZ,EAAA,GAAAwrE,EAAA,EAAAM,GACA3nE,GAAA+nE,IAEAnsE,EAAAa,EAAA4qE,EAAA,EAAAU,EAAA,GAAAV,EAAA,EAAAM,GACA3nE,EAAA,IAGQ2nE,GAAA,EAAWj1D,EAAAlX,KAAA,IAAAI,KAAA,IAAA+rE,GAAA,GAGnB,IAFA3nE,KAAA2nE,EAAA/rE,EACAisE,GAAAF,EACQE,EAAA,EAAUn1D,EAAAlX,KAAA,IAAAwE,KAAA,IAAA6nE,GAAA,GAElB,OADAn1D,IAAAlX,IAAA,IAAA+B,EACAmV,EAEA,SAAAu1D,EAAAv1D,EAAAi1D,EAAAC,GACA,IAOAhsE,EAPAisE,EAAA,EAAAD,EAAAD,EAAA,EACAG,GAAA,GAAAD,GAAA,EACAE,EAAAD,GAAA,EACAI,EAAAL,EAAA,EACArsE,EAAAosE,EAAA,EACArqE,EAAAmV,EAAAlX,KACAwE,EAAA,IAAAzC,EAGA,IADAA,IAAA,EACQ2qE,EAAA,EAAWloE,EAAA,IAAAA,EAAA0S,EAAAlX,OAAA0sE,GAAA,GAInB,IAHAtsE,EAAAoE,GAAA,IAAAkoE,GAAA,EACAloE,KAAAkoE,EACAA,GAAAP,EACQO,EAAA,EAAWtsE,EAAA,IAAAA,EAAA8W,EAAAlX,OAAA0sE,GAAA,GACnB,OAAAloE,EACAA,EAAA,EAAA+nE,MACG,IAAA/nE,IAAA8nE,EACH,OAAAlsE,EAAAs8D,IAAA36D,GAAAuiC,IAEAlkC,GAAAyrE,EAAA,EAAAM,GACA3nE,GAAA+nE,EACG,OAAAxqE,GAAA,KAAA3B,EAAAyrE,EAAA,EAAArnE,EAAA2nE,GAGH,SAAAQ,EAAAlN,GACA,OAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,MAAAA,EAAA,GAEA,SAAAmN,EAAAloE,GACA,WAAAA,GAEA,SAAAmoE,EAAAnoE,GACA,WAAAA,KAAA,OAEA,SAAAooE,EAAApoE,GACA,WAAAA,KAAA,MAAAA,GAAA,OAAAA,GAAA,QAEA,SAAAqoE,EAAAroE,GACA,OAAAwnE,EAAAxnE,EAAA,MAEA,SAAAsoE,EAAAtoE,GACA,OAAAwnE,EAAAxnE,EAAA,MAGA,SAAAiT,EAAAH,EAAAjW,EAAAqW,GACArS,EAAAiS,EAAAi0D,GAAAlqE,EAAA,CAAyBV,IAAA,WAAmB,OAAAmD,KAAA4T,MAG5C,SAAA/W,EAAA4nD,EAAAgX,EAAA5zD,EAAAohE,GACA,IACAC,EAAA/5D,GADAtH,GAEA,GAAAqhE,EAAAzN,EAAAhX,EAAAujB,GAAA,MAAAthE,EAAAghE,GACA,IAAA9mE,EAAA6jD,EAAAsjB,GAAAoB,GACA10D,EAAAy0D,EAAAzkB,EAAAwjB,GACAmB,EAAAxoE,EAAAmB,MAAA0S,IAAAgnD,GACA,OAAAwN,EAAAG,IAAA9zD,UAEA,SAAA9O,EAAAi+C,EAAAgX,EAAA5zD,EAAAwhE,EAAApsE,EAAAgsE,GACA,IACAC,EAAA/5D,GADAtH,GAEA,GAAAqhE,EAAAzN,EAAAhX,EAAAujB,GAAA,MAAAthE,EAAAghE,GAIA,IAHA,IAAA9mE,EAAA6jD,EAAAsjB,GAAAoB,GACA10D,EAAAy0D,EAAAzkB,EAAAwjB,GACAmB,EAAAC,GAAApsE,GACAjB,EAAA,EAAiBA,EAAAy/D,EAAWz/D,IAAA4E,EAAA6T,EAAAzY,GAAAotE,EAAAH,EAAAjtE,EAAAy/D,EAAAz/D,EAAA,GAG5B,GAAA8S,EAAAoI,IAgFC,CACD,IAAAnO,EAAA,WACAwH,EAAA,OACGxH,EAAA,WACH,IAAAwH,GAAA,MACGxH,EAAA,WAIH,OAHA,IAAAwH,EACA,IAAAA,EAAA,KACA,IAAAA,EAAAmoD,KApOA,eAqOAnoD,EAAAhU,OACG,CAMH,IADA,IACAgB,EADA+rE,GAJA/4D,EAAA,SAAAnN,GAEA,OADA4L,EAAAhP,KAAAuQ,GACA,IAAAo3D,EAAAx4D,EAAA/L,MAEAqkE,GAAAE,EAAAF,GACAv/D,EAAAqH,EAAAo4D,GAAAvM,EAAA,EAAiDlzD,EAAA9E,OAAAg4D,IACjD79D,EAAA2K,EAAAkzD,QAAA7qD,GAAArS,EAAAqS,EAAAhT,EAAAoqE,EAAApqE,IAEAsR,IAAAy6D,EAAAt+D,YAAAuF,GAGA,IAAAk0C,EAAA,IAAAh0C,EAAA,IAAAF,EAAA,IACAg5D,EAAA94D,EAAAg3D,GAAA+B,QACA/kB,EAAA+kB,QAAA,cACA/kB,EAAA+kB,QAAA,eACA/kB,EAAAglB,QAAA,IAAAhlB,EAAAglB,QAAA,IAAAv6D,EAAAuB,EAAAg3D,GAAA,CACA+B,QAAA,SAAA1zD,EAAA7Y,GACAssE,EAAAptE,KAAA6D,KAAA8V,EAAA7Y,GAAA,SAEAysE,SAAA,SAAA5zD,EAAA7Y,GACAssE,EAAAptE,KAAA6D,KAAA8V,EAAA7Y,GAAA,WAEG,QAhHHsT,EAAA,SAAAnN,GACA4L,EAAAhP,KAAAuQ,EA9IA,eA+IA,IAAAmH,EAAAvI,EAAA/L,GACApD,KAAAmpE,GAAAl5D,EAAA9T,KAAA,IAAA6F,MAAA0V,GAAA,GACA1X,KAAAgoE,GAAAtwD,GAGAjH,EAAA,SAAAyC,EAAA4C,EAAA4B,GACA1I,EAAAhP,KAAAyQ,EApJA,YAqJAzB,EAAAkE,EAAA3C,EArJA,YAsJA,IAAAo5D,EAAAz2D,EAAA80D,GACA10D,EAAAvS,EAAA+U,GACA,GAAAxC,EAAA,GAAAA,EAAAq2D,EAAA,MAAAjjE,EAAA,iBAEA,GAAA4M,GADAoE,OAAAnY,IAAAmY,EAAAiyD,EAAAr2D,EAAAxF,EAAA4J,IACAiyD,EAAA,MAAAjjE,EAxJA,iBAyJA1G,KAAA+nE,GAAA70D,EACAlT,KAAAioE,GAAA30D,EACAtT,KAAAgoE,GAAAtwD,GAGAm0C,IACAl4C,EAAApD,EAhJA,aAgJA,MACAoD,EAAAlD,EAlJA,SAkJA,MACAkD,EAAAlD,EAlJA,aAkJA,MACAkD,EAAAlD,EAlJA,aAkJA,OAGAvB,EAAAuB,EAAAg3D,GAAA,CACAgC,QAAA,SAAA3zD,GACA,OAAAjZ,EAAAmD,KAAA,EAAA8V,GAAA,YAEA8zD,SAAA,SAAA9zD,GACA,OAAAjZ,EAAAmD,KAAA,EAAA8V,GAAA,IAEA+zD,SAAA,SAAA/zD,GACA,IAAA2lD,EAAA5+D,EAAAmD,KAAA,EAAA8V,EAAAzT,UAAA,IACA,OAAAo5D,EAAA,MAAAA,EAAA,aAEAqO,UAAA,SAAAh0D,GACA,IAAA2lD,EAAA5+D,EAAAmD,KAAA,EAAA8V,EAAAzT,UAAA,IACA,OAAAo5D,EAAA,MAAAA,EAAA,IAEAsO,SAAA,SAAAj0D,GACA,OAAA6yD,EAAA9rE,EAAAmD,KAAA,EAAA8V,EAAAzT,UAAA,MAEA2nE,UAAA,SAAAl0D,GACA,OAAA6yD,EAAA9rE,EAAAmD,KAAA,EAAA8V,EAAAzT,UAAA,UAEA4nE,WAAA,SAAAn0D,GACA,OAAA2yD,EAAA5rE,EAAAmD,KAAA,EAAA8V,EAAAzT,UAAA,WAEA6nE,WAAA,SAAAp0D,GACA,OAAA2yD,EAAA5rE,EAAAmD,KAAA,EAAA8V,EAAAzT,UAAA,WAEAmnE,QAAA,SAAA1zD,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAA8yD,EAAA3rE,IAEAysE,SAAA,SAAA5zD,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAA8yD,EAAA3rE,IAEAktE,SAAA,SAAAr0D,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAA+yD,EAAA5rE,EAAAoF,UAAA,KAEA+nE,UAAA,SAAAt0D,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAA+yD,EAAA5rE,EAAAoF,UAAA,KAEAgoE,SAAA,SAAAv0D,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAAgzD,EAAA7rE,EAAAoF,UAAA,KAEAioE,UAAA,SAAAx0D,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAAgzD,EAAA7rE,EAAAoF,UAAA,KAEAkoE,WAAA,SAAAz0D,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAAkzD,EAAA/rE,EAAAoF,UAAA,KAEAmoE,WAAA,SAAA10D,EAAA7Y,GACAuJ,EAAAxG,KAAA,EAAA8V,EAAAizD,EAAA9rE,EAAAoF,UAAA,OAsCA40D,EAAA1mD,EA/PA,eAgQA0mD,EAAAxmD,EA/PA,YAgQAvS,EAAAuS,EAAAg3D,GAAA34D,EAAA+D,MAAA,GACA/W,EAAA,YAAAyU,EACAzU,EAAA,SAAA2U,iBClRA,IAAAzS,EAAAjC,EAAAD,QAAA,oBAAAqE,eAAAC,WACAD,OAAA,oBAAAE,WAAAD,WAAAC,KAEAb,SAAA,cAAAA,GACA,iBAAAc,UAAAtC,kBCLAjC,EAAAD,QAAA,SAAA4E,GACA,uBAAAA,EAAA,OAAAA,EAAA,mBAAAA,oBCAA3E,EAAAD,SAAkBF,EAAQ,IAARA,CAAkB,WACpC,OAA0E,GAA1Ec,OAAAC,eAAA,GAAiC,KAAQE,IAAA,WAAmB,YAAcsE,4OCoBrDgD,oLAKfqoD,GAA4B,IAAAtF,EAAAlnD,KAAjB4qC,EAAiBvoC,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAAN,KAS1B,GANArC,KAAKyqE,gBAAkBzqE,KAAKyqE,iBAAmB,GAG/CzqE,KAAKyqE,gBAAgBje,GAAaxsD,KAAKyqE,gBAAgBje,IAAc,IAGjE5hB,EAQH,OAAO,IAAIzU,QAAQ,SAACu0C,EAAWC,GAG9BD,EAAUE,kBAAmB,EAG7B1jB,EAAKujB,gBAAgBje,GAAWpnD,KAAKslE,KAXtC1qE,KAAKyqE,gBAAgBje,GAAWpnD,KAAKwlC,gCAqBtC,OAAO5qC,KAAK2sD,KAAKvqD,MAAMpC,KAAMqC,sDAI7B,OAAOrC,KAAK2sD,KAAKvqD,MAAMpC,KAAMqC,uDAMPmqD,EAAW5hB,GAGjC5qC,KAAKyqE,gBAAkBzqE,KAAKyqE,iBAAmB,GAG/CzqE,KAAKyqE,gBAAgBje,GAAaxsD,KAAKyqE,gBAAgBje,IAAc,GAG/D,IAAK,IAAIxwD,EAAI,EAAIA,EAAIgE,KAAKyqE,gBAAgBje,GAAWppD,OAASpH,IACtDgE,KAAKyqE,gBAAgBje,GAAWxwD,IAAM4uC,GACtC5qC,KAAKyqE,gBAAgBje,GAAWj4B,OAAOv4B,IAAK,iCAKpD,OAAOgE,KAAKooD,oBAAoBhmD,MAAMpC,KAAMqC,wCAO9CmqD,GAAoB,IAOxB,IAAII,EAAY5sD,KAAKyqE,iBAAmBzqE,KAAKyqE,gBAAgBje,IAAc,GAPnDqe,EAAAxoE,UAAAe,OAANO,EAAM,IAAA3B,MAAA6oE,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANnnE,EAAMmnE,EAAA,GAAAzoE,UAAAyoE,GAAA,IAAA1gE,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAUxB,QAAAgL,EAAAC,EAAqBoiD,EAArB7vD,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAAgC,KAAvBwgC,EAAuBrgC,EAAAtN,MAG/B2tC,EAASxoC,MAAMpC,KAAM2D,IAbE,MAAAhB,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAkBxB,IAAK,IAAItO,EAAI,EAAIA,EAAI4wD,EAAUxpD,OAASpH,IACnC4wD,EAAU5wD,GAAG4uE,kBAChBhe,EAAUr4B,OAAOv4B,IAAK,qCAMxB,OAAOgE,KAAKkF,KAAK9C,MAAMpC,KAAMqC,kDAI7B,OAAOrC,KAAKkF,KAAK9C,MAAMpC,KAAMqC,gDAM/B8B,EAAa00C,MAAQ,SAASiU,GAE7B,IAAK,IAAIzV,KAAQlzC,EAAavG,UACzBuG,EAAavG,UAAUC,eAAew5C,KACzCyV,EAAWzV,GAAQlzC,EAAavG,UAAUy5C,sBCrI7C,IAAA0zB,EAASnvE,EAAQ,KACjBovE,EAASpvE,EAAQ,KAEjBqvE,EAAAD,EACAC,EAAAF,KACAE,EAAAD,KAEAjvE,EAAAD,QAAAmvE,gCCgDA,SAAAnjE,EAAAooD,EAAAntD,EAAAmoE,GACA,IAAAC,EAAAD,IAAA9nE,OAAA,GACA8sD,IAAAib,EAAAt/D,UAEAq/D,EAAApjE,MACAqjE,EAAAD,IAAA9nE,OAAA,IAEA,IAAAyI,EAAAs/D,EAAAt/D,QACAu/D,EAAAD,EAAAtjE,MACA,GAAA7F,MAAAq1B,QAAAxrB,GACAA,EAAAzG,KAAA8qD,QACG,GAAAkb,IAAAroE,EAAAK,OAAA,GAEHyI,EADA9I,EAAA+E,OACAooD,OAEAntD,EAAAqC,KAAA8qD,GA/DAp0D,EAAAy+D,UAAA,SAAAl/B,GACA,IAAAruB,EAAA,GACAA,EAAA5H,KAAA,CAAc8qD,IAAA70B,IAId,IAFA,IACA3wB,EAAAwlD,EAAAvnD,EAAA3M,EAAAqvE,EAAAnjE,EAAAyyD,EAAAp9D,EAAAN,EAAAquE,EADA58D,EAAA,GAEAhE,EAAAsC,EAAAlF,OAKA,GAJAooD,EAAAxlD,EAAAwlD,IAGAxhD,GAFAhE,EAAA24C,QAAA,GACA16C,EAAA+B,EAAA/B,KAAA,GAGA+F,GAAA/F,OACK,oBAAAunD,EACLxhD,QAAA,IAAAwhD,EAAA,KAAA5D,KAAAiO,UAAArK,QACK,UAAAA,EACLxhD,GAAA,YACK,GAAA1M,MAAAq1B,QAAA64B,GAAA,CAEL,IADAljD,EAAA5H,KAAA,CAAkBuD,IAAA,MAClB3M,EAAAk0D,EAAA9sD,OAAA,EAA8BpH,GAAA,EAAQA,IACtCqvE,EAAA,IAAArvE,EAAA,OACAgR,EAAA5H,KAAA,CAAoB8qD,MAAAl0D,GAAAqnD,OAAAgoB,IAEpBr+D,EAAA5H,KAAA,CAAkBuD,IAAA,UACb,CAEL,IAAAgyD,KADAzyD,EAAA,GACAgoD,EACAA,EAAAryD,eAAA88D,IACAzyD,EAAA9C,KAAAu1D,GAIA,IADA3tD,EAAA5H,KAAA,CAAkBuD,IAAA,MAClB3M,EAAAkM,EAAA9E,OAAA,EAA+BpH,GAAA,EAAQA,IAEvCiB,EAAAizD,EADA3yD,EAAA2K,EAAAlM,IAEAsvE,EAAAtvE,EAAA,SACAsvE,GAAAhf,KAAAiO,UAAAh9D,GAAA,IACAyP,EAAA5H,KAAA,CAAoB8qD,IAAAjzD,EAAAomD,OAAAioB,IAEpBt+D,EAAA5H,KAAA,CAAkBuD,IAAA,MAGlB,OAAA+F,GAyBA5S,EAAAywD,MAAA,SAAAgK,GAOA,IANA,IAGAgV,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,EAAAC,EACAC,EAAAC,EALAhpE,EAAA,GACAmoE,EAAA,GACAlvE,EAAA,IAMA,UADAuvE,EAAAhV,EAAAv6D,OAEA,MAAAuvE,QACA,IAAAA,EAQA,OAAAA,GACA,QACA,SACA,SACA,QACA,QACA,MACA,QACAvvE,GAAA,EACA8L,EAAA,KAAA/E,EAAAmoE,GACA,MACA,QACAlvE,GAAA,EACA8L,GAAA,EAAA/E,EAAAmoE,GACA,MACA,QACAlvE,GAAA,EACA8L,GAAA,EAAA/E,EAAAmoE,GACA,MACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QAGA,IAFAM,EAAA,GACAxvE,MACA,CAEA,GADAyvE,EAAAlV,EAAAv6D,MACA,cAAAwN,KAAAiiE,GAEW,CACXzvE,IACA,MAHAwvE,GAAAC,EAMA3jE,EAAAmZ,WAAAuqD,GAAAzoE,EAAAmoE,GACA,MACA,QAIA,IAHAQ,EAAA,GACAC,OAAA,EACAC,EAAA,EAGA,OADAC,EAAAtV,EAAAv6D,OACA,OAAA2vE,GACAC,EAAA,MACAF,GAAAG,EAEA,QADAF,EAAAE,GAEAD,IAEAA,EAAA,EAMA9jE,EAAAwkD,KAAAC,MAAA,IAAAmf,EAAA,KAAA3oE,EAAAmoE,GACA,MACA,QACAY,EAAA,CAAwBjgE,QAAA,GAAAhE,MAAA9E,EAAAK,QACxBL,EAAAqC,KAAA0mE,EAAAjgE,SACAq/D,EAAA9lE,KAAA0mE,GACA,MACA,QACAC,EAAA,CAAsBlgE,QAAA,GAAYhE,MAAA9E,EAAAK,QAClCL,EAAAqC,KAAA2mE,EAAAlgE,SACAq/D,EAAA9lE,KAAA2mE,GACA,MACA,QACA,UAAAtpE,MACA,sCAAA8oE,OAtFA,CAGA,OAAAxoE,EAAAK,OACA,OAAAL,EAAA+E,MAEAA,EAAA/E,EAAA+E,MAAA/E,EAAAmoE,sBCzFAnvE,EAAAD,SAAkBF,EAAQ,KAAsBA,EAAQ,EAARA,CAAkB,WAClE,OAAuG,GAAvGc,OAAAC,eAA+Bf,EAAQ,GAARA,CAAuB,YAAgBiB,IAAA,WAAmB,YAAcsE,qBCDvG,IAAAnD,EAAapC,EAAQ,GACrBqC,EAAWrC,EAAQ,GACnBiT,EAAcjT,EAAQ,IACtBowE,EAAapwE,EAAQ,IACrBe,EAAqBf,EAAQ,IAAc4F,EAC3CzF,EAAAD,QAAA,SAAAS,GACA,IAAA0vE,EAAAhuE,EAAAlB,SAAAkB,EAAAlB,OAAA8R,EAAA,GAA0D7Q,EAAAjB,QAAA,IAC1D,KAAAR,EAAAkuC,OAAA,IAAAluC,KAAA0vE,GAAAtvE,EAAAsvE,EAAA1vE,EAAA,CAAkFU,MAAA+uE,EAAAxqE,EAAAjF,uBCPlF,IAAA8L,EAAUzM,EAAQ,IAClB6R,EAAgB7R,EAAQ,IACxBsV,EAAmBtV,EAAQ,GAARA,EAA2B,GAC9Ci4B,EAAej4B,EAAQ,GAARA,CAAuB,YAEtCG,EAAAD,QAAA,SAAA4B,EAAAwuE,GACA,IAGA3uE,EAHAkE,EAAAgM,EAAA/P,GACA1B,EAAA,EACA2S,EAAA,GAEA,IAAApR,KAAAkE,EAAAlE,GAAAs2B,GAAAxrB,EAAA5G,EAAAlE,IAAAoR,EAAAvJ,KAAA7H,GAEA,KAAA2uE,EAAA9oE,OAAApH,GAAAqM,EAAA5G,EAAAlE,EAAA2uE,EAAAlwE,SACAkV,EAAAvC,EAAApR,IAAAoR,EAAAvJ,KAAA7H,IAEA,OAAAoR,oBCfA,IAAApN,EAAS3F,EAAQ,IACjBwF,EAAexF,EAAQ,GACvBuwE,EAAcvwE,EAAQ,IAEtBG,EAAAD,QAAiBF,EAAQ,GAAgBc,OAAAsnE,iBAAA,SAAAviE,EAAAopD,GACzCzpD,EAAAK,GAKA,IAJA,IAGAvC,EAHAgJ,EAAAikE,EAAAthB,GACAznD,EAAA8E,EAAA9E,OACApH,EAAA,EAEAoH,EAAApH,GAAAuF,EAAAC,EAAAC,EAAAvC,EAAAgJ,EAAAlM,KAAA6uD,EAAA3rD,IACA,OAAAuC,oBCVA,IAAAgM,EAAgB7R,EAAQ,IACxB2T,EAAW3T,EAAQ,IAAgB4F,EACnCoN,EAAA,GAAiBA,SAEjBw9D,EAAA,iBAAAjsE,gBAAAzD,OAAAoH,oBACApH,OAAAoH,oBAAA3D,QAAA,GAUApE,EAAAD,QAAA0F,EAAA,SAAAd,GACA,OAAA0rE,GAAA,mBAAAx9D,EAAAzS,KAAAuE,GATA,SAAAA,GACA,IACA,OAAA6O,EAAA7O,GACG,MAAAF,GACH,OAAA4rE,EAAArqE,SAKAsqE,CAAA3rE,GAAA6O,EAAA9B,EAAA/M,mCCfA,IAAAmrD,EAAkBjwD,EAAQ,GAC1BuwE,EAAcvwE,EAAQ,IACtB0wE,EAAW1wE,EAAQ,IACnB4R,EAAU5R,EAAQ,IAClBiS,EAAejS,EAAQ,IACvB+N,EAAc/N,EAAQ,IACtB2wE,EAAA7vE,OAAA25C,OAGAt6C,EAAAD,SAAAywE,GAA6B3wE,EAAQ,EAARA,CAAkB,WAC/C,IAAA4wE,EAAA,GACAptE,EAAA,GAEAJ,EAAAjC,SACA0vE,EAAA,uBAGA,OAFAD,EAAAxtE,GAAA,EACAytE,EAAAhkE,MAAA,IAAAuM,QAAA,SAAA2lD,GAAoCv7D,EAAAu7D,OACjB,GAAnB4R,EAAA,GAAmBC,GAAAxtE,IAAAtC,OAAAwL,KAAAqkE,EAAA,GAAsCntE,IAAA0J,KAAA,KAAA2jE,IACxD,SAAAptE,EAAAd,GAMD,IALA,IAAA0uD,EAAAp/C,EAAAxO,GACA2U,EAAA3R,UAAAe,OACAyE,EAAA,EACAk0B,EAAAuwC,EAAA9qE,EACAkrE,EAAAl/D,EAAAhM,EACAwS,EAAAnM,GAMA,IALA,IAIAtK,EAJAyB,EAAA2K,EAAAtH,UAAAwF,MACAK,EAAA6zB,EAAAowC,EAAAntE,GAAA+E,OAAAg4B,EAAA/8B,IAAAmtE,EAAAntE,GACAoE,EAAA8E,EAAA9E,OACAg4D,EAAA,EAEAh4D,EAAAg4D,GACA79D,EAAA2K,EAAAkzD,KACAvP,IAAA6gB,EAAAvwE,KAAA6C,EAAAzB,KAAA0vD,EAAA1vD,GAAAyB,EAAAzB,IAEG,OAAA0vD,GACFsf,iBCpCDxwE,EAAAD,QAAAY,OAAA4nE,IAAA,SAAA5J,EAAAiS,GAEA,OAAAjS,IAAAiS,EAAA,IAAAjS,GAAA,EAAAA,GAAA,EAAAiS,EAAAjS,MAAAiS,oCCFA,IAAAx/D,EAAgBvR,EAAQ,IACxB6E,EAAe7E,EAAQ,GACvBo7C,EAAap7C,EAAQ,KACrBqW,EAAA,GAAAlQ,MACA6qE,EAAA,GAEAC,EAAA,SAAAjuE,EAAAsI,EAAAvD,GACA,KAAAuD,KAAA0lE,GAAA,CACA,QAAAnvE,EAAA,GAAAzB,EAAA,EAA2BA,EAAAkL,EAASlL,IAAAyB,EAAAzB,GAAA,KAAAA,EAAA,IAEpC4wE,EAAA1lE,GAAA1H,SAAA,sBAAA/B,EAAAqL,KAAA,UACG,OAAA8jE,EAAA1lE,GAAAtI,EAAA+E,IAGH5H,EAAAD,QAAA0D,SAAAhC,MAAA,SAAAkH,GACA,IAAA0I,EAAAD,EAAAnN,MACA8sE,EAAA76D,EAAA9V,KAAAkG,UAAA,GACA0qE,EAAA,WACA,IAAAppE,EAAAmpE,EAAA/oE,OAAAkO,EAAA9V,KAAAkG,YACA,OAAArC,gBAAA+sE,EAAAF,EAAAz/D,EAAAzJ,EAAAP,OAAAO,GAAAqzC,EAAA5pC,EAAAzJ,EAAAe,IAGA,OADAjE,EAAA2M,EAAAxP,aAAAmvE,EAAAnvE,UAAAwP,EAAAxP,WACAmvE,kBCtBAhxE,EAAAD,QAAA,SAAAsR,EAAAzJ,EAAAe,GACA,IAAAsoE,OAAAztE,IAAAmF,EACA,OAAAf,EAAAP,QACA,cAAA4pE,EAAA5/D,IACAA,EAAAjR,KAAAuI,GACA,cAAAsoE,EAAA5/D,EAAAzJ,EAAA,IACAyJ,EAAAjR,KAAAuI,EAAAf,EAAA,IACA,cAAAqpE,EAAA5/D,EAAAzJ,EAAA,GAAAA,EAAA,IACAyJ,EAAAjR,KAAAuI,EAAAf,EAAA,GAAAA,EAAA,IACA,cAAAqpE,EAAA5/D,EAAAzJ,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACAyJ,EAAAjR,KAAAuI,EAAAf,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,cAAAqpE,EAAA5/D,EAAAzJ,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACAyJ,EAAAjR,KAAAuI,EAAAf,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACG,OAAAyJ,EAAAhL,MAAAsC,EAAAf,qBCdH,IAAAspE,EAAgBrxE,EAAQ,GAAWulB,SACnC+rD,EAAYtxE,EAAQ,IAAgB+mD,KACpCwqB,EAASvxE,EAAQ,IACjBy/D,EAAA,cAEAt/D,EAAAD,QAAA,IAAAmxE,EAAAE,EAAA,YAAAF,EAAAE,EAAA,iBAAA5W,EAAAzV,GACA,IAAA53C,EAAAgkE,EAAA3nE,OAAAgxD,GAAA,GACA,OAAA0W,EAAA/jE,EAAA43C,IAAA,IAAAua,EAAA7xD,KAAAN,GAAA,SACC+jE,mBCRD,IAAAG,EAAkBxxE,EAAQ,GAAWqlB,WACrCisD,EAAYtxE,EAAQ,IAAgB+mD,KAEpC5mD,EAAAD,QAAA,EAAAsxE,EAAiCxxE,EAAQ,IAAc,QAAA0kC,IAAA,SAAAi2B,GACvD,IAAArtD,EAAAgkE,EAAA3nE,OAAAgxD,GAAA,GACA5nD,EAAAy+D,EAAAlkE,GACA,WAAAyF,GAAA,KAAAzF,EAAAuhC,OAAA,MAAA97B,GACCy+D,mBCPD,IAAArgB,EAAUnxD,EAAQ,IAClBG,EAAAD,QAAA,SAAA4E,EAAA6nD,GACA,oBAAA7nD,GAAA,UAAAqsD,EAAArsD,GAAA,MAAAC,UAAA4nD,GACA,OAAA7nD,oBCFA,IAAAD,EAAe7E,EAAQ,GACvB2R,EAAAnN,KAAAmN,MACAxR,EAAAD,QAAA,SAAA4E,GACA,OAAAD,EAAAC,IAAA60B,SAAA70B,IAAA6M,EAAA7M,uBCHA3E,EAAAD,QAAAsE,KAAAitE,OAAA,SAAA3S,GACA,OAAAA,OAAA,MAAAA,EAAA,KAAAA,MAAA,EAAAt6D,KAAA+B,IAAA,EAAAu4D,kCCDA,IAAAp9D,EAAa1B,EAAQ,IACrB0xE,EAAiB1xE,EAAQ,IACzBq7D,EAAqBr7D,EAAQ,IAC7BwpE,EAAA,GAGAxpE,EAAQ,GAARA,CAAiBwpE,EAAqBxpE,EAAQ,EAARA,CAAgB,uBAA4B,OAAAoE,OAElFjE,EAAAD,QAAA,SAAAiwD,EAAAxiD,EAAAmB,GACAqhD,EAAAnuD,UAAAN,EAAA8nE,EAAA,CAAqD16D,KAAA4iE,EAAA,EAAA5iE,KACrDusD,EAAAlL,EAAAxiD,EAAA,+BCVA,IAAAnI,EAAexF,EAAQ,GACvBG,EAAAD,QAAA,SAAA2O,EAAA2C,EAAAnQ,EAAAsU,GACA,IACA,OAAAA,EAAAnE,EAAAhM,EAAAnE,GAAA,GAAAA,EAAA,IAAAmQ,EAAAnQ,GAEG,MAAAuD,GACH,IAAA2F,EAAAsE,EAAA,OAEA,WADAlL,IAAA4G,GAAA/E,EAAA+E,EAAAhK,KAAAsO,IACAjK,qBCRA,IAAAoP,EAAyBhU,EAAQ,KAEjCG,EAAAD,QAAA,SAAA6nE,EAAAvgE,GACA,WAAAwM,EAAA+zD,GAAA,CAAAvgE,qBCJA,IAAA+J,EAAgBvR,EAAQ,IACxBiS,EAAejS,EAAQ,IACvB+N,EAAc/N,EAAQ,IACtBkS,EAAelS,EAAQ,GAEvBG,EAAAD,QAAA,SAAA4I,EAAA+J,EAAAuF,EAAAu5D,EAAA/oB,GACAr3C,EAAAsB,GACA,IAAAhN,EAAAoM,EAAAnJ,GACArE,EAAAsJ,EAAAlI,GACA2B,EAAA0K,EAAArM,EAAA2B,QACAyE,EAAA28C,EAAAphD,EAAA,IACApH,EAAAwoD,GAAA,IACA,GAAAxwC,EAAA,SAAuB,CACvB,GAAAnM,KAAAxH,EAAA,CACAktE,EAAAltE,EAAAwH,GACAA,GAAA7L,EACA,MAGA,GADA6L,GAAA7L,EACAwoD,EAAA38C,EAAA,EAAAzE,GAAAyE,EACA,MAAAlH,UAAA,+CAGA,KAAQ6jD,EAAA38C,GAAA,EAAAzE,EAAAyE,EAAsCA,GAAA7L,EAAA6L,KAAAxH,IAC9CktE,EAAA9+D,EAAA8+D,EAAAltE,EAAAwH,KAAApG,IAEA,OAAA8rE,iCCxBA,IAAA1/D,EAAejS,EAAQ,IACvBwT,EAAsBxT,EAAQ,IAC9BkS,EAAelS,EAAQ,GAEvBG,EAAAD,QAAA,GAAA0Y,YAAA,SAAAnV,EAAAoV,GACA,IAAAhT,EAAAoM,EAAA7N,MACAkH,EAAA4G,EAAArM,EAAA2B,QACA04D,EAAA1sD,EAAA/P,EAAA6H,GACAgR,EAAA9I,EAAAqF,EAAAvN,GACA0O,EAAAvT,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,EACAkG,EAAArF,KAAAY,UAAAzB,IAAAqW,EAAA1O,EAAAkI,EAAAwG,EAAA1O,IAAAgR,EAAAhR,EAAA40D,GACA0R,EAAA,EAMA,IALAt1D,EAAA4jD,KAAA5jD,EAAAzS,IACA+nE,GAAA,EACAt1D,GAAAzS,EAAA,EACAq2D,GAAAr2D,EAAA,GAEAA,KAAA,GACAyS,KAAAzW,IAAAq6D,GAAAr6D,EAAAyW,UACAzW,EAAAq6D,GACAA,GAAA0R,EACAt1D,GAAAs1D,EACG,OAAA/rE,kBCxBH1F,EAAAD,QAAA,SAAA6O,EAAA1N,GACA,OAAUA,QAAA0N,yCCAV,IAAA+qD,EAAiB95D,EAAQ,KACzBA,EAAQ,EAARA,CAAmB,CACnByD,OAAA,SACAkV,OAAA,EACAk5D,OAAA/X,IAAA,IAAAn1D,MACC,CACDA,KAAAm1D,qBCNI95D,EAAQ,IAAgB,UAAA8xE,OAAwB9xE,EAAQ,IAAc4F,EAAAqb,OAAAjf,UAAA,SAC1EsN,cAAA,EACArO,IAAOjB,EAAQ,oCCFf,IAwBA+xE,EAAAC,EAAAC,EAAAC,EAxBAj/D,EAAcjT,EAAQ,IACtBoC,EAAapC,EAAQ,GACrBwC,EAAUxC,EAAQ,IAClByT,EAAczT,EAAQ,IACtByC,EAAczC,EAAQ,GACtB6E,EAAe7E,EAAQ,GACvBuR,EAAgBvR,EAAQ,IACxBoT,EAAiBpT,EAAQ,IACzBo7D,EAAYp7D,EAAQ,IACpBgU,EAAyBhU,EAAQ,IACjCsR,EAAWtR,EAAQ,KAAS4K,IAC5BunE,EAAgBnyE,EAAQ,IAARA,GAChBoyE,EAAiCpyE,EAAQ,KACzCqyE,EAAcryE,EAAQ,KACtBm7D,EAAgBn7D,EAAQ,IACxBgoE,EAAqBhoE,EAAQ,KAE7B+E,EAAA3C,EAAA2C,UACAihB,EAAA5jB,EAAA4jB,QACA+yC,EAAA/yC,KAAA+yC,SACAuZ,EAAAvZ,KAAAuZ,IAAA,GACAC,EAAAnwE,EAAA,QACAowE,EAAA,WAAA/+D,EAAAuS,GACAysD,EAAA,aAEAC,EAAAV,EAAAI,EAAAxsE,EAEA+sE,IAAA,WACA,IAEA,IAAAzK,EAAAqK,EAAAt+B,QAAA,GACA2+B,GAAA1K,EAAA94D,YAAA,IAAiDpP,EAAQ,EAARA,CAAgB,qBAAA2E,GACjEA,EAAA8tE,MAGA,OAAAD,GAAA,mBAAAK,wBACA3K,EAAA7U,KAAAof,aAAAG,GAIA,IAAAN,EAAAj5D,QAAA,SACA,IAAA8hD,EAAA9hD,QAAA,aACG,MAAAzU,KAfH,GAmBAkuE,EAAA,SAAAhuE,GACA,IAAAuuD,EACA,SAAAxuD,EAAAC,IAAA,mBAAAuuD,EAAAvuD,EAAAuuD,WAEA0f,EAAA,SAAA7K,EAAA8K,GACA,IAAA9K,EAAA+K,GAAA,CACA/K,EAAA+K,IAAA,EACA,IAAAn8B,EAAAoxB,EAAAgL,GACAf,EAAA,WAoCA,IAnCA,IAAA9wE,EAAA6mE,EAAAiL,GACA5rE,EAAA,GAAA2gE,EAAAkL,GACAhzE,EAAA,EACAktD,EAAA,SAAA+lB,GACA,IAIAtgE,EAAAsgD,EAAAigB,EAJAjoE,EAAA9D,EAAA8rE,EAAA9rE,GAAA8rE,EAAAE,KACAt/B,EAAAo/B,EAAAp/B,QACAoM,EAAAgzB,EAAAhzB,OACAmzB,EAAAH,EAAAG,OAEA,IACAnoE,GACA9D,IACA,GAAA2gE,EAAAuL,IAAAC,EAAAxL,GACAA,EAAAuL,GAAA,IAEA,IAAApoE,EAAA0H,EAAA1R,GAEAmyE,KAAAG,QACA5gE,EAAA1H,EAAAhK,GACAmyE,IACAA,EAAAI,OACAN,GAAA,IAGAvgE,IAAAsgE,EAAAnL,QACA7nB,EAAAt7C,EAAA,yBACWsuD,EAAAyf,EAAA//D,IACXsgD,EAAA9yD,KAAAwS,EAAAkhC,EAAAoM,GACWpM,EAAAlhC,IACFstC,EAAAh/C,GACF,MAAAuD,GACP4uE,IAAAF,GAAAE,EAAAI,OACAvzB,EAAAz7C,KAGAkyC,EAAAtvC,OAAApH,GAAAktD,EAAAxW,EAAA12C,MACA8nE,EAAAgL,GAAA,GACAhL,EAAA+K,IAAA,EACAD,IAAA9K,EAAAuL,IAAAI,EAAA3L,OAGA2L,EAAA,SAAA3L,GACA52D,EAAA/Q,KAAA6B,EAAA,WACA,IAEA2Q,EAAA1H,EAAAtF,EAFA1E,EAAA6mE,EAAAiL,GACAW,EAAAC,EAAA7L,GAeA,GAbA4L,IACA/gE,EAAAs/D,EAAA,WACAG,EACAxsD,EAAA1c,KAAA,qBAAAjI,EAAA6mE,IACS78D,EAAAjJ,EAAA4xE,sBACT3oE,EAAA,CAAmB68D,UAAAP,OAAAtmE,KACV0E,EAAA3D,EAAA2D,YAAAmB,OACTnB,EAAAmB,MAAA,8BAAA7F,KAIA6mE,EAAAuL,GAAAjB,GAAAuB,EAAA7L,GAAA,KACKA,EAAA+L,QAAAtwE,EACLmwE,GAAA/gE,EAAAnO,EAAA,MAAAmO,EAAA0I,KAGAs4D,EAAA,SAAA7L,GACA,WAAAA,EAAAuL,IAAA,KAAAvL,EAAA+L,IAAA/L,EAAAgL,IAAA1rE,QAEAksE,EAAA,SAAAxL,GACA52D,EAAA/Q,KAAA6B,EAAA,WACA,IAAAiJ,EACAmnE,EACAxsD,EAAA1c,KAAA,mBAAA4+D,IACK78D,EAAAjJ,EAAA8xE,qBACL7oE,EAAA,CAAe68D,UAAAP,OAAAO,EAAAiL,QAIfgB,EAAA,SAAA9yE,GACA,IAAA6mE,EAAA9jE,KACA8jE,EAAAjwD,KACAiwD,EAAAjwD,IAAA,GACAiwD,IAAAkM,IAAAlM,GACAiL,GAAA9xE,EACA6mE,EAAAkL,GAAA,EACAlL,EAAA+L,KAAA/L,EAAA+L,GAAA/L,EAAAgL,GAAA/sE,SACA4sE,EAAA7K,GAAA,KAEAmM,EAAA,SAAAhzE,GACA,IACAgyD,EADA6U,EAAA9jE,KAEA,IAAA8jE,EAAAjwD,GAAA,CACAiwD,EAAAjwD,IAAA,EACAiwD,IAAAkM,IAAAlM,EACA,IACA,GAAAA,IAAA7mE,EAAA,MAAA0D,EAAA,qCACAsuD,EAAAyf,EAAAzxE,IACA8wE,EAAA,WACA,IAAAr3D,EAAA,CAAuBs5D,GAAAlM,EAAAjwD,IAAA,GACvB,IACAo7C,EAAA9yD,KAAAc,EAAAmB,EAAA6xE,EAAAv5D,EAAA,GAAAtY,EAAA2xE,EAAAr5D,EAAA,IACS,MAAAlW,GACTuvE,EAAA5zE,KAAAua,EAAAlW,OAIAsjE,EAAAiL,GAAA9xE,EACA6mE,EAAAkL,GAAA,EACAL,EAAA7K,GAAA,IAEG,MAAAtjE,GACHuvE,EAAA5zE,KAAA,CAAkB6zE,GAAAlM,EAAAjwD,IAAA,GAAyBrT,MAK3C+tE,IAEAJ,EAAA,SAAA+B,GACAlhE,EAAAhP,KAAAmuE,EA3JA,UA2JA,MACAhhE,EAAA+iE,GACAvC,EAAAxxE,KAAA6D,MACA,IACAkwE,EAAA9xE,EAAA6xE,EAAAjwE,KAAA,GAAA5B,EAAA2xE,EAAA/vE,KAAA,IACK,MAAA2C,GACLotE,EAAA5zE,KAAA6D,KAAA2C,MAIAgrE,EAAA,SAAAuC,GACAlwE,KAAA8uE,GAAA,GACA9uE,KAAA6vE,QAAAtwE,EACAS,KAAAgvE,GAAA,EACAhvE,KAAA6T,IAAA,EACA7T,KAAA+uE,QAAAxvE,EACAS,KAAAqvE,GAAA,EACArvE,KAAA6uE,IAAA,IAEAjxE,UAAuBhC,EAAQ,GAARA,CAAyBuyE,EAAAvwE,UAAA,CAEhDqxD,KAAA,SAAAkhB,EAAAC,GACA,IAAAnB,EAAAX,EAAA1+D,EAAA5P,KAAAmuE,IAOA,OANAc,EAAA9rE,GAAA,mBAAAgtE,KACAlB,EAAAE,KAAA,mBAAAiB,KACAnB,EAAAG,OAAAhB,EAAAxsD,EAAAwtD,YAAA7vE,EACAS,KAAA8uE,GAAA1pE,KAAA6pE,GACAjvE,KAAA6vE,IAAA7vE,KAAA6vE,GAAAzqE,KAAA6pE,GACAjvE,KAAAgvE,IAAAL,EAAA3uE,MAAA,GACAivE,EAAAnL,SAGAuM,MAAA,SAAAD,GACA,OAAApwE,KAAAivD,UAAA1vD,EAAA6wE,MAGAvC,EAAA,WACA,IAAA/J,EAAA,IAAA6J,EACA3tE,KAAA8jE,UACA9jE,KAAA6vC,QAAAzxC,EAAA6xE,EAAAnM,EAAA,GACA9jE,KAAAi8C,OAAA79C,EAAA2xE,EAAAjM,EAAA,IAEAkK,EAAAxsE,EAAA8sE,EAAA,SAAA96D,GACA,OAAAA,IAAA26D,GAAA36D,IAAAs6D,EACA,IAAAD,EAAAr6D,GACAo6D,EAAAp6D,KAIAnV,IAAAS,EAAAT,EAAAqB,EAAArB,EAAAO,GAAA2vE,EAAA,CAA0Dp4C,QAAAg4C,IAC1DvyE,EAAQ,GAARA,CAA8BuyE,EA7M9B,WA8MAvyE,EAAQ,GAARA,CA9MA,WA+MAkyE,EAAUlyE,EAAQ,GAAS,QAG3ByC,IAAAW,EAAAX,EAAAO,GAAA2vE,EAlNA,UAkNA,CAEAtyB,OAAA,SAAAn/C,GACA,IAAAwzE,EAAAhC,EAAAtuE,MAGA,OADAuwE,EADAD,EAAAr0B,QACAn/C,GACAwzE,EAAAxM,WAGAzlE,IAAAW,EAAAX,EAAAO,GAAAiQ,IAAA0/D,GA3NA,UA2NA,CAEA1+B,QAAA,SAAA6qB,GACA,OAAAkJ,EAAA/0D,GAAA7O,OAAA8tE,EAAAK,EAAAnuE,KAAA06D,MAGAr8D,IAAAW,EAAAX,EAAAO,IAAA2vE,GAAgD3yE,EAAQ,GAARA,CAAwB,SAAAic,GACxEs2D,EAAAqC,IAAA34D,GAAA,MAAAw2D,MAlOA,UAmOC,CAEDmC,IAAA,SAAAlmC,GACA,IAAA92B,EAAAxT,KACAswE,EAAAhC,EAAA96D,GACAq8B,EAAAygC,EAAAzgC,QACAoM,EAAAq0B,EAAAr0B,OACAttC,EAAAs/D,EAAA,WACA,IAAA78D,EAAA,GACAvJ,EAAA,EACA6oC,EAAA,EACAsmB,EAAA1sB,GAAA,WAAAw5B,GACA,IAAA2M,EAAA5oE,IACA6oE,GAAA,EACAt/D,EAAAhM,UAAA7F,GACAmxC,IACAl9B,EAAAq8B,QAAAi0B,GAAA7U,KAAA,SAAAhyD,GACAyzE,IACAA,GAAA,EACAt/D,EAAAq/D,GAAAxzE,IACAyzC,GAAAb,EAAAz+B,KACS6qC,OAETvL,GAAAb,EAAAz+B,KAGA,OADAzC,EAAAnO,GAAAy7C,EAAAttC,EAAA0I,GACAi5D,EAAAxM,SAGA6M,KAAA,SAAArmC,GACA,IAAA92B,EAAAxT,KACAswE,EAAAhC,EAAA96D,GACAyoC,EAAAq0B,EAAAr0B,OACAttC,EAAAs/D,EAAA,WACAjX,EAAA1sB,GAAA,WAAAw5B,GACAtwD,EAAAq8B,QAAAi0B,GAAA7U,KAAAqhB,EAAAzgC,QAAAoM,OAIA,OADAttC,EAAAnO,GAAAy7C,EAAAttC,EAAA0I,GACAi5D,EAAAxM,yCCzRA,IAAA32D,EAAgBvR,EAAQ,IAExB,SAAAg1E,EAAAp9D,GACA,IAAAq8B,EAAAoM,EACAj8C,KAAA8jE,QAAA,IAAAtwD,EAAA,SAAAq9D,EAAAN,GACA,QAAAhxE,IAAAswC,QAAAtwC,IAAA08C,EAAA,MAAAt7C,UAAA,2BACAkvC,EAAAghC,EACA50B,EAAAs0B,IAEAvwE,KAAA6vC,QAAA1iC,EAAA0iC,GACA7vC,KAAAi8C,OAAA9uC,EAAA8uC,GAGAlgD,EAAAD,QAAA0F,EAAA,SAAAgS,GACA,WAAAo9D,EAAAp9D,qBChBA,IAAApS,EAAexF,EAAQ,GACvB6E,EAAe7E,EAAQ,GACvB0yE,EAA2B1yE,EAAQ,KAEnCG,EAAAD,QAAA,SAAA0X,EAAAknD,GAEA,GADAt5D,EAAAoS,GACA/S,EAAAi6D,MAAA1vD,cAAAwI,EAAA,OAAAknD,EACA,IAAAoW,EAAAxC,EAAA9sE,EAAAgS,GAGA,OADAq8B,EADAihC,EAAAjhC,SACA6qB,GACAoW,EAAAhN,uCCTA,IAAAviE,EAAS3F,EAAQ,IAAc4F,EAC/BlE,EAAa1B,EAAQ,IACrBsT,EAAkBtT,EAAQ,IAC1BwC,EAAUxC,EAAQ,IAClBoT,EAAiBpT,EAAQ,IACzBo7D,EAAYp7D,EAAQ,IACpBm1E,EAAkBn1E,EAAQ,IAC1BmY,EAAWnY,EAAQ,KACnBoU,EAAiBpU,EAAQ,IACzBiwD,EAAkBjwD,EAAQ,GAC1BirD,EAAcjrD,EAAQ,IAASirD,QAC/BtzC,EAAe3X,EAAQ,IACvBo1E,EAAAnlB,EAAA,YAEAolB,EAAA,SAAAvsE,EAAAnH,GAEA,IACAi7B,EADA3wB,EAAAg/C,EAAAtpD,GAEA,SAAAsK,EAAA,OAAAnD,EAAA0hE,GAAAv+D,GAEA,IAAA2wB,EAAA9zB,EAAAwsE,GAAuB14C,EAAOA,IAAA/6B,EAC9B,GAAA+6B,EAAAmiC,GAAAp9D,EAAA,OAAAi7B,GAIAz8B,EAAAD,QAAA,CACAg8D,eAAA,SAAAphD,EAAAnN,EAAA2E,EAAAopD,GACA,IAAA9jD,EAAAkD,EAAA,SAAAhS,EAAA4lC,GACAt7B,EAAAtK,EAAA8O,EAAAjK,EAAA,MACA7E,EAAAumD,GAAA1hD,EACA7E,EAAA0hE,GAAA9oE,EAAA,MACAoH,EAAAwsE,QAAA3xE,EACAmF,EAAAysE,QAAA5xE,EACAmF,EAAAssE,GAAA,EACAzxE,MAAA+qC,GAAA0sB,EAAA1sB,EAAAp8B,EAAAxJ,EAAA4yD,GAAA5yD,KAsDA,OApDAwK,EAAAsE,EAAA5V,UAAA,CAGA26B,MAAA,WACA,QAAA7zB,EAAA6O,EAAAvT,KAAAuJ,GAAAzJ,EAAA4E,EAAA0hE,GAAA5tC,EAAA9zB,EAAAwsE,GAA8E14C,EAAOA,IAAA/6B,EACrF+6B,EAAA17B,GAAA,EACA07B,EAAA16B,IAAA06B,EAAA16B,EAAA06B,EAAA16B,EAAAL,OAAA8B,UACAO,EAAA04B,EAAAx8B,GAEA0I,EAAAwsE,GAAAxsE,EAAAysE,QAAA5xE,EACAmF,EAAAssE,GAAA,GAIAI,OAAA,SAAA7zE,GACA,IAAAmH,EAAA6O,EAAAvT,KAAAuJ,GACAivB,EAAAy4C,EAAAvsE,EAAAnH,GACA,GAAAi7B,EAAA,CACA,IAAA9tB,EAAA8tB,EAAA/6B,EACAwjE,EAAAzoC,EAAA16B,SACA4G,EAAA0hE,GAAA5tC,EAAAx8B,GACAw8B,EAAA17B,GAAA,EACAmkE,MAAAxjE,EAAAiN,GACAA,MAAA5M,EAAAmjE,GACAv8D,EAAAwsE,IAAA14C,IAAA9zB,EAAAwsE,GAAAxmE,GACAhG,EAAAysE,IAAA34C,IAAA9zB,EAAAysE,GAAAlQ,GACAv8D,EAAAssE,KACS,QAAAx4C,GAITxjB,QAAA,SAAAvG,GACA8E,EAAAvT,KAAAuJ,GAGA,IAFA,IACAivB,EADAh3B,EAAApD,EAAAqQ,EAAApM,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,EAAA,GAEAi5B,MAAA/6B,EAAAuC,KAAAkxE,IAGA,IAFA1vE,EAAAg3B,EAAAnhB,EAAAmhB,EAAAmiC,EAAA36D,MAEAw4B,KAAA17B,GAAA07B,IAAA16B,GAKAuK,IAAA,SAAA9K,GACA,QAAA0zE,EAAA19D,EAAAvT,KAAAuJ,GAAAhM,MAGAsuD,GAAAtqD,EAAAiS,EAAA5V,UAAA,QACAf,IAAA,WACA,OAAA0W,EAAAvT,KAAAuJ,GAAAynE,MAGAx9D,GAEA43C,IAAA,SAAA1mD,EAAAnH,EAAAN,GACA,IACAgkE,EAAAp5D,EADA2wB,EAAAy4C,EAAAvsE,EAAAnH,GAoBK,OAjBLi7B,EACAA,EAAAnhB,EAAApa,GAGAyH,EAAAysE,GAAA34C,EAAA,CACAx8B,EAAA6L,EAAAg/C,EAAAtpD,GAAA,GACAo9D,EAAAp9D,EACA8Z,EAAApa,EACAa,EAAAmjE,EAAAv8D,EAAAysE,GACA1zE,OAAA8B,EACAzC,GAAA,GAEA4H,EAAAwsE,KAAAxsE,EAAAwsE,GAAA14C,GACAyoC,MAAAxjE,EAAA+6B,GACA9zB,EAAAssE,KAEA,MAAAnpE,IAAAnD,EAAA0hE,GAAAv+D,GAAA2wB,IACK9zB,GAELusE,WACAlZ,UAAA,SAAAvkD,EAAAjK,EAAA2E,GAGA6iE,EAAAv9D,EAAAjK,EAAA,SAAA48D,EAAAb,GACAtlE,KAAAirD,GAAA13C,EAAA4yD,EAAA58D,GACAvJ,KAAAqmE,GAAAf,EACAtlE,KAAAmxE,QAAA5xE,GACK,WAKL,IAJA,IACA+lE,EADAtlE,KACAqmE,GACA7tC,EAFAx4B,KAEAmxE,GAEA34C,KAAA17B,GAAA07B,IAAA16B,EAEA,OANAkC,KAMAirD,KANAjrD,KAMAmxE,GAAA34C,MAAA/6B,EANAuC,KAMAirD,GAAAimB,IAMAn9D,EAAA,UAAAuxD,EAAA9sC,EAAAmiC,EACA,UAAA2K,EAAA9sC,EAAAnhB,EACA,CAAAmhB,EAAAmiC,EAAAniC,EAAAnhB,KAdArX,KAQAirD,QAAA1rD,EACAwU,EAAA,KAMK7F,EAAA,oBAAAA,GAAA,GAGL8B,EAAAzG,mCC5IA,IAAA2F,EAAkBtT,EAAQ,IAC1BkrD,EAAclrD,EAAQ,IAASkrD,QAC/B1lD,EAAexF,EAAQ,GACvB6E,EAAe7E,EAAQ,GACvBoT,EAAiBpT,EAAQ,IACzBo7D,EAAYp7D,EAAQ,IACpB8T,EAAwB9T,EAAQ,IAChCy1E,EAAWz1E,EAAQ,IACnB2X,EAAe3X,EAAQ,IACvBmV,EAAArB,EAAA,GACAsB,EAAAtB,EAAA,GACA7P,EAAA,EAGAyxE,EAAA,SAAA5sE,GACA,OAAAA,EAAAysE,KAAAzsE,EAAAysE,GAAA,IAAAI,IAEAA,EAAA,WACAvxE,KAAAmB,EAAA,IAEAqwE,EAAA,SAAA5wE,EAAArD,GACA,OAAAwT,EAAAnQ,EAAAO,EAAA,SAAAT,GACA,OAAAA,EAAA,KAAAnD,KAGAg0E,EAAA3zE,UAAA,CACAf,IAAA,SAAAU,GACA,IAAAi7B,EAAAg5C,EAAAxxE,KAAAzC,GACA,GAAAi7B,EAAA,OAAAA,EAAA,IAEAnwB,IAAA,SAAA9K,GACA,QAAAi0E,EAAAxxE,KAAAzC,IAEAiJ,IAAA,SAAAjJ,EAAAN,GACA,IAAAu7B,EAAAg5C,EAAAxxE,KAAAzC,GACAi7B,IAAA,GAAAv7B,EACA+C,KAAAmB,EAAAiE,KAAA,CAAA7H,EAAAN,KAEAm0E,OAAA,SAAA7zE,GACA,IAAAsK,EAAAmJ,EAAAhR,KAAAmB,EAAA,SAAAT,GACA,OAAAA,EAAA,KAAAnD,IAGA,OADAsK,GAAA7H,KAAAmB,EAAAozB,OAAA1sB,EAAA,MACAA,IAIA9L,EAAAD,QAAA,CACAg8D,eAAA,SAAAphD,EAAAnN,EAAA2E,EAAAopD,GACA,IAAA9jD,EAAAkD,EAAA,SAAAhS,EAAA4lC,GACAt7B,EAAAtK,EAAA8O,EAAAjK,EAAA,MACA7E,EAAAumD,GAAA1hD,EACA7E,EAAA0hE,GAAAvmE,IACA6E,EAAAysE,QAAA5xE,EACAA,MAAA+qC,GAAA0sB,EAAA1sB,EAAAp8B,EAAAxJ,EAAA4yD,GAAA5yD,KAoBA,OAlBAwK,EAAAsE,EAAA5V,UAAA,CAGAwzE,OAAA,SAAA7zE,GACA,IAAAkD,EAAAlD,GAAA,SACA,IAAAuC,EAAAgnD,EAAAvpD,GACA,WAAAuC,EAAAwxE,EAAA/9D,EAAAvT,KAAAuJ,IAAA,OAAAhM,GACAuC,GAAAuxE,EAAAvxE,EAAAE,KAAAomE,YAAAtmE,EAAAE,KAAAomE,KAIA/9D,IAAA,SAAA9K,GACA,IAAAkD,EAAAlD,GAAA,SACA,IAAAuC,EAAAgnD,EAAAvpD,GACA,WAAAuC,EAAAwxE,EAAA/9D,EAAAvT,KAAAuJ,IAAAlB,IAAA9K,GACAuC,GAAAuxE,EAAAvxE,EAAAE,KAAAomE,OAGA5yD,GAEA43C,IAAA,SAAA1mD,EAAAnH,EAAAN,GACA,IAAA6C,EAAAgnD,EAAA1lD,EAAA7D,IAAA,GAGA,OAFA,IAAAuC,EAAAwxE,EAAA5sE,GAAA8B,IAAAjJ,EAAAN,GACA6C,EAAA4E,EAAA0hE,IAAAnpE,EACAyH,GAEA+sE,QAAAH,oBClFA,IAAAvwE,EAAgBnF,EAAQ,IACxBkS,EAAelS,EAAQ,GACvBG,EAAAD,QAAA,SAAA4E,GACA,QAAAnB,IAAAmB,EAAA,SACA,IAAAk6B,EAAA75B,EAAAL,GACA0C,EAAA0K,EAAA8sB,GACA,GAAAA,IAAAx3B,EAAA,MAAAsD,WAAA,iBACA,OAAAtD,oBCPA,IAAAmM,EAAW3T,EAAQ,IACnB0wE,EAAW1wE,EAAQ,IACnBwF,EAAexF,EAAQ,GACvB4H,EAAc5H,EAAQ,GAAW4H,QACjCzH,EAAAD,QAAA0H,KAAAI,SAAA,SAAAlD,GACA,IAAAwH,EAAAqH,EAAA/N,EAAAJ,EAAAV,IACAq7B,EAAAuwC,EAAA9qE,EACA,OAAAu6B,EAAA7zB,EAAAnE,OAAAg4B,EAAAr7B,IAAAwH,oBCPA,IAAA4F,EAAelS,EAAQ,GACvBqlD,EAAarlD,EAAQ,IACrB0H,EAAc1H,EAAQ,IAEtBG,EAAAD,QAAA,SAAA4I,EAAA27B,EAAAqxC,EAAApZ,GACA,IAAAt5D,EAAAuG,OAAAjC,EAAAoB,IACAitE,EAAA3yE,EAAAoE,OACAwuE,OAAAryE,IAAAmyE,EAAA,IAAAnsE,OAAAmsE,GACAG,EAAA/jE,EAAAuyB,GACA,GAAAwxC,GAAAF,GAAA,IAAAC,EAAA,OAAA5yE,EACA,IAAA8yE,EAAAD,EAAAF,EACAI,EAAA9wB,EAAA9kD,KAAAy1E,EAAAxxE,KAAAkN,KAAAwkE,EAAAF,EAAAxuE,SAEA,OADA2uE,EAAA3uE,OAAA0uE,IAAAC,IAAAhwE,MAAA,EAAA+vE,IACAxZ,EAAAyZ,EAAA/yE,IAAA+yE,oBCdA,IAAAlmB,EAAkBjwD,EAAQ,GAC1BuwE,EAAcvwE,EAAQ,IACtB6R,EAAgB7R,EAAQ,IACxB8wE,EAAa9wE,EAAQ,IAAe4F,EACpCzF,EAAAD,QAAA,SAAAk2E,GACA,gBAAAtxE,GAOA,IANA,IAKAnD,EALAkE,EAAAgM,EAAA/M,GACAwH,EAAAikE,EAAA1qE,GACA2B,EAAA8E,EAAA9E,OACApH,EAAA,EACA2S,EAAA,GAEAvL,EAAApH,GACAuB,EAAA2K,EAAAlM,KACA6vD,IAAA6gB,EAAAvwE,KAAAsF,EAAAlE,IACAoR,EAAAvJ,KAAA4sE,EAAA,CAAAz0E,EAAAkE,EAAAlE,IAAAkE,EAAAlE,IAGA,OAAAoR,mBClBA,IAAA1Q,EAAAlC,EAAAD,QAAA,CAA6BmF,QAAA,SAC7B,iBAAAC,UAAAjD,kBCDAlC,EAAAD,QAAA,SAAAyE,GACA,IACA,QAAAA,IACG,MAAAC,GACH,0BCEA,IAAAyxE,EAAA,4BAAAC,OAAAD,gBAAAz0E,KAAA00E,SACA,8BAAAC,SAAAF,gBAAAz0E,KAAA20E,UACA,GAAAF,EAAA,CAEA,IAAAG,EAAA,IAAA/hE,WAAA,IAEAtU,EAAAD,QAAA,WAEA,OADAm2E,EAAAG,GACAA,OAEC,CAKD,IAAAC,EAAA,IAAArwE,MAAA,IAEAjG,EAAAD,QAAA,WACA,QAAAgB,EAAAd,EAAA,EAAsBA,EAAA,GAAQA,IAC9B,MAAAA,KAAAc,EAAA,WAAAsD,KAAA41B,UACAq8C,EAAAr2E,GAAAc,MAAA,EAAAd,IAAA,OAGA,OAAAq2E,mBCxBA,IADA,IAAAC,EAAA,GACAt2E,EAAA,EAAeA,EAAA,MAASA,EACxBs2E,EAAAt2E,MAAA,KAAA4S,SAAA,IAAA8sD,OAAA,GAgBA3/D,EAAAD,QAbA,SAAAy2E,EAAAj/D,GACA,IAAAtX,EAAAsX,GAAA,EACAk/D,EAAAF,EACA,OAAAE,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MAAA,IACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MAAA,IACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MAAA,IACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MAAA,IACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,MACAw2E,EAAAD,EAAAv2E,MAAAw2E,EAAAD,EAAAv2E,yBCnBA,SAAA2F,GAAA,IAAA8wE,EAAmB72E,EAAQ,KAAO62E,aAClCC,EAAkB92E,EAAQ,KAAuB82E,YACjDC,EAAe/2E,EAAQ,KAEvBg3E,EAAA,CACAC,WAAA,aACAC,SAAA,WACAC,YAAA,cACA3iC,QAAA,WAwJA,SAAA4iC,EAAApwE,GACA,QAAA5G,KAAA4G,EAAAjB,EAAAmB,MAAAF,EAAA5G,IAEA,MADAyG,MAAAwwE,gBAAA3yC,IACA,IAAA79B,MA+CA,SAAAywE,IACA,0BAAA/yE,OAxMApE,EAAAD,QAEA,SAAAq3E,GAEA,GAAAA,EACA,OAAAA,EAIA,IAAAC,EAgBA,SAAAzvE,GACA,IAAA0vE,EAAA,GACA5T,EAAA,GACA,QAAAzjE,KAAA2H,EAAA,CACA,IAAA8C,EAAA9C,EAAA3H,GACAs3E,EAAA7sE,KAAA8sE,iBACA,GAAAD,EACA,QAAAlY,KAAA30D,EAAA,CACA,IAAAmsE,EAAAxX,IAAA,qBAAAA,EAAA,CACA,IAAA7S,EAAA,mBAAA6S,EAAA,IACA,UAAA34D,MAAA,+BAAA8lD,GAEAkX,EAAArE,GAAA30D,EAAA20D,QAGAiY,EAAAjuE,KAAAqB,GAIA,OAAY4sE,OAAA5T,QAnCZ+T,CAAA,GAAAzxE,MAAA5F,KAAAkG,UAAA,IACAgxE,EAAAD,EAAAC,KACA5T,EAAA2T,EAAA3T,KAEAgU,EA8IA,WACA,IAAAC,EAAAjxE,MAAAwwE,gBACAxwE,MAAAwwE,gBAAA3yC,IACA,IAAAqzC,GAAA,IAAAlxE,OAAAM,MACAN,MAAAwwE,gBAAAS,EAEA,IAAAE,EAAAD,EAAAlrE,MAAA,MAEAorE,EAAA,GACA,QAAA73E,KAAA43E,EAAA,CACA,IAAAvS,EAAAuS,EAAA53E,GACA,UAAAqlE,KAGA,IAAAA,EAAApsD,QAAA,6BAGA,IAAAosD,EAAApsD,QAAA,gBAKA4+D,EAAAzuE,KAAAi8D,IAIA,OADAwS,EAvKAC,GASA,OAuGA,SAAAlxE,EAAA68D,EAAAgU,GACA,IAAAM,GAAAtU,EAAAmT,EAAAC,YAEA,GAAAF,IAAA,CACA,GAAAoB,EAAA,CACA,IAAApxE,EAAA,IAAAF,MAEA,MADAE,EAAAI,MAAAH,EAAAkG,KAAA,MACAnG,EAEA,QAAA3G,KAAA4G,EAAAjB,EAAAmB,MAAAF,EAAA5G,IAIAk3E,MACAa,EACAf,EAAApwE,GAEAsH,WAAA,WACA8oE,EAAApwE,IACa,IA7HboxE,CA4BA,SAAAb,EAAAE,EAAA5T,EAAAgU,GACA,IAAA7wE,EAAA,GAEAA,IAAAmB,OAyDA,SAAA07D,GACA,IAAAA,EAAArvB,QACA,SAGA,IAAAxtC,EAAA,CACA8vE,EAAA,kBAGA,QAAA12E,KAAAyjE,EAAArvB,QACAxtC,EAAAwC,KAAAqtE,EAAAhT,EAAArvB,QAAAp0C,KAKA,OAFA4G,EAAAwC,KAAA,MAEAxC,EAxEAqxE,CAAAxU,IAEAyT,MACAtwE,IAAAmB,OAsCA,SAAA07D,EAAA4T,EAAAI,GACA,GAAAhU,EAAAmT,EAAAC,aAAAQ,EAAAjwE,OAAA,EACA,SAQA,OAEAsvE,EAAA,eACAe,EAAA3qE,KAAA,OAnDAorE,CAAAzU,EAAA4T,EAAAI,KACAruE,KAAA,MAKA,OAFAxC,IAAAmB,OAIA,SAAAovE,EAAAE,EAAA5T,GACA,IAAA78D,EAAA,GAEA,IAAA2xD,GACAkL,EAAAmT,EAAAC,YAAA,UACApT,EAAAmT,EAAAE,WAAA,gBACArT,EAAAmT,EAAAG,cAAA,kBACA,iBASA,QAAA/2E,KANA4G,EAAAwC,KAAAstE,EAAAne,IAEA,IAAA8e,EAAAjwE,QACAR,EAAAwC,KAAA,gCAAA+tE,EAAA,aAGAE,EAAA,CACA,IAAA9qB,EAAA8qB,EAAAr3E,GACAu6D,EAAAkc,EAAAlqB,GAEA3lD,EAAAwC,KAAAmxD,GAQA,OALAkJ,EAAArvB,UACAxtC,EAAAwC,KAAA,IACAxC,EAAAwC,KAAA,oDAGAxC,EAhCAuxE,CAAAhB,EAAAE,EAAA5T,IAzCA2U,CAAAjB,EAAAE,EAAA5T,EAAAgU,GAGAhU,GAGA0T,wCCjCA,SAAAvxD,GAAA7lB,EAAAD,QAEA,WACA,OAAyC8lB,KAAA+yC,UAAA/yC,EAAA+yC,SAAA0f,wwCCepBnsB,cAEnB,SAAAA,EAAajB,GAAU,IAAAC,EAAA,mGAAAnnD,CAAAC,KAAAkoD,IACrBhB,EAAAC,EAAAnnD,KAAAonD,EAAAc,GAAA/rD,KAAA6D,QAGKs0E,SAAU,EAGfptB,EAAKD,SAAWA,EAGhBC,EAAA,cAAoB,EAGpBA,EAAKpkD,MAAQ,KAGbokD,EAAKqtB,aAAe,KACpB1qE,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAI0mD,EAAKstB,gBAjBDttB,4PAFW/iD,yDAwChC,OADAnE,KAAA,cAAoB,EACbA,KAAKw0E,oDASC,IAAAxrB,EAAAhpD,KAEb,OAAIA,KAAKu0E,aAAuBv0E,KAAKu0E,cAGrCv0E,KAAK8C,MAAQ,KACb9C,KAAKkF,KAAK,WAGNlF,KAAA,aAA4Bm2B,QAAQ0Z,WAGxC7vC,KAAKu0E,aAAev0E,KAAKy0E,eAAL,MAA0B,SAAA9xE,GAE5CqmD,EAAKurB,aAAe,KACpBvrB,EAAKlmD,MAAQH,EACbhB,EAAQmB,MAAMH,GACdqmD,EAAK9jD,KAAK,QAASvC,KAId3C,KAAKu0E,+LAOZ5yE,EAAQQ,IAAR,2DAAA4B,OAAuE/D,KAAK00E,oBAGtE10E,KAAK+oD,QAAQ4rB,qBACnB30E,KAAKkF,KAAK,oBAGYlF,KAAK20E,mBAAvBC,WAGyC,iBAArBA,EAAUxxE,wBAEhC,IADIyxE,EAAe,gCACnBrqE,EAAexK,KAAK+oD,QAAQ7gD,OAA5BnL,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAASvK,EAA2B0K,EAAAtN,MAE7B23E,EAAUz/D,SAAStV,IAAOg1E,EAAazvE,KAAKvF,6OAInDG,KAAK80E,cAAcD,WAIrB70E,KAAA,cAAoB,EACpBA,KAAKu0E,aAAe,KACpBv0E,KAAKkF,KAAK,WACVvD,EAAQQ,IAAR,+BAAA4B,OAA2C/D,KAAK00E,SAAhD,+RAsBM,IAAIjyE,MAAJ,8JAUNzC,KAAKinD,SAASoB,aAAaroD,MAC3BA,KAAKkF,KAAK,0CAYHrF,EAAIytE,GACX,MAAM,IAAI7qE,MAAM,gFASNsmD,GAAS,IAAAO,EAAAtpD,KAAAwvD,GAAA,EAAAC,GAAA,EAAAC,OAAAnwD,EAAA,IAGnB,IAHmB,IAGnBowD,EAHmBM,EAAA,eAGVC,EAHUP,EAAA1yD,MAMb83E,EAAiBzrB,EAAKP,QAAQlsD,IAAIqzD,EAAIrwD,IACtCk1E,GAGFzrB,EAAK0rB,iBAAiBD,EAAgB7kB,EAAIpwD,MAG1Ci1E,EAAej1E,KAAOowD,EAAIpwD,KAC1Bi1E,EAAe70E,OAAS,KAGxBopD,EAAKP,QAAQviD,IAAI0pD,EAAIrwD,GAAIqwD,KAKzB5G,EAAK2rB,QAAQ/kB,GAGb5G,EAAKP,QAAQviD,IAAI0pD,EAAIrwD,GAAIqwD,IAK3BrmD,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAI8oD,EAAKpkD,KAAK,iBAAkBgrD,EAAIrwD,OA3BnD+vD,EAAgB7G,EAAhBhsD,OAAA0N,cAAA+kD,GAAAG,EAAAC,EAAAllD,QAAAC,MAAA6kD,GAAA,EAAyBS,IAHN,MAAAttD,GAAA8sD,GAAA,EAAAC,EAAA/sD,EAAA,YAAA6sD,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAmCf3G,EAAQ3lD,OAAS,GACnBpD,KAAKkF,KAAK,iDAUC6jD,GAAS,IAAAY,EAAA3pD,KAElBk1E,GAAY,EAFMrlB,GAAA,EAAAC,GAAA,EAAAC,OAAAxwD,EAAA,IAGtB,IAHsB,IAGtBywD,EAHsBmlB,EAAA,eAGbjlB,EAHaF,EAAA/yD,MAKhB83E,EAAiBprB,EAAKZ,QAAQlsD,IAAIqzD,EAAIrwD,IAC1C,OAAKk1E,GAGAA,EAAej1E,MAGpB6pD,EAAKqrB,iBAAiBD,EAAgB7kB,EAAIpH,UAG1C7R,gBAAM89B,EAAej1E,KAAMowD,EAAIpH,UAG/BisB,EAAe70E,OAAS,KAGxB2J,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAImpD,EAAKzkD,KAAK,iBAAkBgrD,EAAIrwD,WACjDq1E,GAAY,IAhBW,YAHzB/kB,EAAgBpH,EAAhBhsD,OAAA0N,cAAAolD,GAAAG,EAAAG,EAAAzlD,QAAAC,MAAAklD,GAAA,EAAyBslB,IAHH,MAAAxyE,GAAAmtD,GAAA,EAAAC,EAAAptD,EAAA,YAAAktD,GAAA,MAAAM,EAAA,QAAAA,EAAA,oBAAAL,EAAA,MAAAC,GA0BlBmlB,GAAal1E,KAAKkF,KAAK,iDASdkwE,GAAK,IAAAvrB,EAAA7pD,KAEdk1E,GAAY,EAFExW,GAAA,EAAAC,GAAA,EAAAC,OAAAr/D,EAAA,IAGlB,IAHkB,IAGlBs/D,EAHkBwW,EAAA,eAGTx1E,EAHSg/D,EAAA5hE,MAKhB4sD,EAAKyrB,WAAWz1E,GAGZgqD,EAAKd,QAAL,OAAoBlpD,KAEtBgK,IAAQq/C,IAAI,SAAA1oD,GAAC,OAAIqpD,EAAK3kD,KAAK,iBAAkBrF,KAC7Cq1E,GAAY,IARhBpW,EAAesW,EAAfr4E,OAAA0N,cAAAi0D,GAAAG,EAAAC,EAAAp0D,QAAAC,MAAA+zD,GAAA,EAAoB2W,IAHF,MAAA1yE,GAAAg8D,GAAA,EAAAC,EAAAj8D,EAAA,YAAA+7D,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAgBdsW,GAAal1E,KAAKkF,KAAK,wDAUPqwE,gCAWjB73E,GACH,OAAOA,kCASAktC,GAAU,IAAA4qC,GAAA,EAAAC,GAAA,EAAAC,OAAAn2E,EAAA,IAEjB,QAAAo2E,EAAAC,EAAmB51E,KAAK+oD,QAAQ33C,SAAhCrU,OAAA0N,cAAA+qE,GAAAG,EAAAC,EAAAlrE,QAAAC,MAAA6qE,GAAA,EAA0C,KAAjC93E,EAAiCi4E,EAAA14E,MAEpCu0C,EAAS9zC,EAAOwC,OASpB,GANKsxC,IAEH9zC,EAAOwC,OAASsxC,EAASxxC,KAAKqV,IAAI3X,IAI/B8zC,IAGoB,IAArB5G,EAAS4G,GAAqB,OAhBnB,MAAA7uC,GAAA8yE,GAAA,EAAAC,EAAA/yE,EAAA,YAAA6yE,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,kCA0BU,IAAAG,EAAA71E,KAAxB81E,IAAwBzzE,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,KAAAA,UAAA,GAE3B,GAAIyzE,EACF,OAAO91E,KAAKw0E,cAAcvlB,KAAK,SAAAzuD,GAAC,OAAIq1E,EAAKh5E,KAAI,KAI/C,IAAIk5E,EAAQ,GAPeC,GAAA,EAAAC,GAAA,EAAAC,OAAA32E,EAAA,IAQ3B,QAAA42E,EAAAC,EAAmBp2E,KAAK+oD,QAAQ33C,SAAhCrU,OAAA0N,cAAAurE,GAAAG,EAAAC,EAAA1rE,QAAAC,MAAAqrE,GAAA,EAA0C,KAAjCt4E,EAAiCy4E,EAAAl5E,MAExC,GAAIS,EAAOwC,OACT61E,EAAM3wE,KAAK1H,EAAOwC,YADpB,CAMA,IAAIsxC,EAASxxC,KAAKqV,IAAI3X,GACjB8zC,IAKL9zC,EAAOwC,OAASsxC,EAGhBukC,EAAM3wE,KAAKosC,MAzBc,MAAA7uC,GAAAszE,GAAA,EAAAC,EAAAvzE,EAAA,YAAAqzE,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GA6B3B,OAAOH,kCASAl2E,GAA4B,IAAAw2E,EAAAr2E,KAAxB81E,IAAwBzzE,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,KAAAA,UAAA,GAEnC,GAAIyzE,EACF,OAAO91E,KAAKw0E,cAAcvlB,KAAK,SAAAzuD,GAAC,OAAI61E,EAAKC,QAAQz2E,GAAI,KAIvD,IAAInC,EAASsC,KAAK+oD,QAAQlsD,IAAIgD,GAC9B,IAAKnC,EACH,OAAO,KAIT,GAAIA,EAAOwC,OAAU,OAAOxC,EAAOwC,OAGnC,IAAIsxC,EAASxxC,KAAKqV,IAAI3X,GACtB,OAAK8zC,GAGL9zC,EAAOwC,OAASsxC,EAGTA,GANe,iCAenB3xC,GACH,OAAOG,KAAK+oD,QAAQ1gD,IAAIxI,4CAWRA,EAAI4pD,EAASxsD,GAAO,IAAAs5E,EAAAv2E,KAEhCtC,EAASsC,KAAK+oD,QAAQlsD,IAAIgD,GAC9B,IAAKnC,EAAU,OAAO,aAGtB,IAAIgsD,EAAW7sD,cAAIa,EAAOoC,KAAM2pD,GAehC,OAZAzpD,KAAKw2E,gBAAgB94E,EAAQ+rD,EAASC,EAAUzsD,GAGhDuJ,cAAI9I,EAAOoC,KAAM2pD,EAASxsD,GAC1BS,EAAOwC,OAAS,KAChBF,KAAKkF,KAAK,iBAAkBrF,GAC5BG,KAAKkF,KAAK,WAGVlF,KAAK+oD,QAAQviD,IAAI3G,EAAInC,GAGd,SAAA8C,GAEL+1E,EAAKC,gBAAgB94E,EAAQ+rD,EAASxsD,EAAOysD,GAG7CljD,cAAI9I,EAAOoC,KAAM2pD,EAASC,GAC1BhsD,EAAOwC,OAAS,KAChBq2E,EAAKrxE,KAAK,iBAAkBrF,GAC5B02E,EAAKrxE,KAAK,WAGVqxE,EAAKxtB,QAAQviD,IAAI3G,EAAInC,6CAUPmC,GAAI,IAAA42E,EAAAz2E,KAEhBtC,EAASsC,KAAK+oD,QAAQlsD,IAAIgD,GAC9B,OAAKnC,GAGLsC,KAAKs1E,WAAW53E,GAGhBsC,KAAK+oD,QAAL,OAAoBlpD,GACpBG,KAAKkF,KAAK,WAGH,SAAA1E,GAEDi2E,EAAK1tB,QAAQ1gD,IAAIxI,KAGrB42E,EAAKxB,QAAQv3E,GAGb+4E,EAAKC,WAAW,CAACh5E,OAlBG,4CA6BhB+rD,EAASxsD,GACf,OAAO,IAAI05E,IAAO32E,KAAMypD,EAASxsD,mCAU1BS,6CAUSA,EAAQuwC,4CAYTvwC,EAAQ+rD,EAASC,EAAU1lB,uCAShC4lB,oCAneV,OAAI5pD,KAAK42E,SACA52E,KAAK42E,UAGd52E,KAAK42E,SAAW,IAAIC,IAAY72E,KAAK00E,SAAU10E,KAAKs0E,SAC7Ct0E,KAAK42E,2CAkFZ,MAAM,IAAIn0E,MAAJ,sZC7HWk0E,aAGjB,SAAAA,EAAYxY,EAAQ1U,EAASxsD,gGAAO8C,CAAAC,KAAA22E,GAGhC32E,KAAKm+D,OAASA,EACdn+D,KAAKypD,QAAUA,EACfzpD,KAAK/C,MAAQA,+DAWb,OAAO+C,KAAKm+D,OAAOqW,8CAIf30E,GAA4B,IAAxBi2E,IAAwBzzE,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,KAAAA,UAAA,GAChC,OAAOrC,KAAKm+D,OAAOmY,QAAQz2E,EAAIi2E,+BAI/Bp4E,GACA,OAAOsC,KAAKm+D,OAAO9oD,IAAI3X,iCASC,IAAAwpD,EAAAlnD,KAAxB81E,IAAwBzzE,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,KAAAA,UAAA,GAGxB,GAAIyzE,EACA,OAAO91E,KAAKw0E,cAAcvlB,KAAK,SAAAzuD,GAAC,OAAI0mD,EAAKrqD,KAAI,KAGjD,IAAIk5E,EAAQ,GAPY3rE,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAQxB,QAAAgL,EAAAC,EAAmBxK,KAAK+oD,QAAQ33C,SAAhCrU,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAA0C,KAAjC1M,EAAiC6M,EAAAtN,MAGlCA,EAAQJ,cAAIa,EAAOoC,KAAME,KAAKypD,SAClC,GAAIxsD,GAAS+C,KAAK/C,MAIlB,GAAIS,EAAOwC,OACP61E,EAAM3wE,KAAK1H,EAAOwC,YADtB,CAMA,IAAIsxC,EAASxxC,KAAKqV,IAAI3X,GACjB8zC,IAIL9zC,EAAOwC,OAASsxC,EAGhBukC,EAAM3wE,KAAKosC,MA9BS,MAAA7uC,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAmCxB,OAAOyrE,kCA3DP,OAAO/1E,KAAKm+D,OAAOpV,uwBCZN+tB,aAEjB,SAAAA,EAAYj3E,EAAIk3E,GAASh3E,EAAAC,KAAA82E,GAGrB92E,KAAKH,GAAKA,EACVG,KAAK+2E,QAAUA,EAGf/2E,KAAKg3E,MAAQh3E,KAAKi3E,eAGlBj3E,KAAKglB,MAAQ,IAAIkR,IAGjBl2B,KAAKgN,MAAQ,IAAIkqE,2DAOjB,IAGI,OAAIl3E,KAAK+2E,QACE,KAGJ,IAAII,IAAQ,CAGf56E,KAAM,YAAcyD,KAAKH,KAI/B,MAAO8C,GAIL,OADAhB,EAAQW,KAAKK,GACN,kKAUP3C,KAAKo3E,2DACTp3E,KAAKo3E,QAAS,EAGTp3E,KAAKg3E,gFAIHh3E,KAAKgN,MAAMk8C,IAAX,eAAAmuB,EAAAC,EAAAC,mBAAAC,KAAe,SAAAC,EAAMj3E,GAAN,IAAA0uD,EAAA9kD,EAAAC,EAAAC,EAAAE,EAAAD,EAAAmtE,EAAAxnB,EAAA,OAAAqnB,mBAAA35B,KAAA,SAAA6K,GAAA,cAAAA,EAAAwY,KAAAxY,EAAA/9C,MAAA,cAAA+9C,EAAA/9C,KAAA,EAGEw8C,EAAK8vB,MAAMW,QAAQ,CAAEC,cAAc,IAHrC,OAGd1oB,EAHczG,EAAAovB,KAAAztE,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAAkpD,EAAAwY,KAAA,EAAAz2D,EAMF0kD,EAAQ4oB,KANN/6E,OAAA0N,YAAA,UAAAL,GAAAG,EAAAC,EAAAE,QAAAC,KAAA,CAAA89C,EAAA/9C,KAAA,aAMTgtE,EANSntE,EAAAtN,OASL4C,IAAO63E,EAAIz6E,MAAMgD,IATZ,CAAAwoD,EAAA/9C,KAAA,gBAAA+9C,EAAAsvB,OAAA,wBAaV7nB,EAAM,IAAItwD,IAAW83E,EAAIM,IAAI15E,KAAMo5E,EAAI73E,GAAI63E,EAAIM,IAAIl4E,OACnDG,IAAMy3E,EAAIz6E,MAAMgD,IACpBinD,EAAKliC,MAAMxe,IAAIkxE,EAAI73E,GAAIqwD,GAfT,QAAA9lD,GAAA,EAAAq+C,EAAA/9C,KAAA,gBAAA+9C,EAAA/9C,KAAA,iBAAA+9C,EAAAwY,KAAA,GAAAxY,EAAAC,GAAAD,EAAA,SAAAp+C,GAAA,EAAAC,EAAAm+C,EAAAC,GAAA,QAAAD,EAAAwY,KAAA,GAAAxY,EAAAwY,KAAA,GAAA72D,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAi+C,EAAAwY,KAAA,IAAA52D,EAAA,CAAAo+C,EAAA/9C,KAAA,eAAAJ,EAAA,eAAAm+C,EAAAwvB,OAAA,mBAAAxvB,EAAAwvB,OAAA,YA6BlBt2E,EAAQQ,IAAR,mCAAA4B,OAA+CmjD,EAAKliC,MAAM6M,KAA1D,gBAAA9tB,OAA6EmjD,EAAK8vB,MAAMz6E,OA7BtE,yBAAAksD,EAAAyvB,SAAAT,EAAA,oCAAf,gBAAAU,GAAA,OAAAd,EAAAj1E,MAAApC,KAAAqC,YAAA,UA+BE,SAAAM,GAGLhB,EAAQW,KAAK,qCAAsCK,iIAQ/C,OAAO3C,KAAKglB,MAAMzT,0CACtBq5B,EAAUwtC,GAAa,OAAOp4E,KAAKglB,MAAMhQ,QAAQ41B,EAAUwtC,+BAC/D76E,GAAO,OAAOyC,KAAKglB,MAAMnoB,IAAIU,+BAC7BA,GAAO,OAAOyC,KAAKglB,MAAM3c,IAAI9K,kCACxB,OAAOyC,KAAKglB,MAAM9c,wCAChB,OAAOlI,KAAKglB,MAAM5T,gBAC5BrU,OAAO0N,0BAAc,OAAOzK,KAAKglB,MAAMjoB,OAAO0N,4CAEvC,IAAAu+C,EAAAhpD,KAGJA,KAAKglB,MAAMuT,QAGNv4B,KAAKg3E,OAIVh3E,KAAKgN,MAAMk8C,IAAX,eAAAmvB,EAAAf,EAAAC,mBAAAC,KAAe,SAAAc,EAAM93E,GAAN,OAAA+2E,mBAAA35B,KAAA,SAAA26B,GAAA,cAAAA,EAAAtX,KAAAsX,EAAA7tE,MAAA,cAAA6tE,EAAA7tE,KAAA,EAGLs+C,EAAKguB,MAAMna,UAHN,OAMX7T,EAAKguB,MAAQhuB,EAAKiuB,eANP,wBAAAsB,EAAAL,SAAAI,MAAf,gBAAAE,GAAA,OAAAH,EAAAj2E,MAAApC,KAAAqC,YAAA,mCAYG9E,GAAK,IAAA+rD,EAAAtpD,KAGR,IAAKA,KAAKg3E,MACN,OAAOh3E,KAAKglB,MAAL,OAAkBznB,GAG7B,IAAIk7E,EAAQz4E,KAAKglB,MAAL,OAAkBznB,GAgB9B,OAbAyC,KAAKgN,MAAMk8C,IAAX,eAAAwvB,EAAApB,EAAAC,mBAAAC,KAAe,SAAAmB,EAAMn4E,GAAN,IAAAo4E,EAAA,OAAArB,mBAAA35B,KAAA,SAAAi7B,GAAA,cAAAA,EAAA5X,KAAA4X,EAAAnuE,MAAA,cAAAmuE,EAAAnuE,KAAA,EAGU4+C,EAAKwvB,YAAYv7E,GAH3B,UAGPq7E,EAHOC,EAAAhB,KAAA,CAAAgB,EAAAnuE,KAAA,eAAAmuE,EAAAd,OAAA,wBAAAc,EAAAnuE,KAAA,EAQL4+C,EAAK0tB,MAAM96B,OAAO3+C,EAAKq7E,GARlB,wBAAAC,EAAAX,SAAAS,MAAf,gBAAAI,GAAA,OAAAL,EAAAt2E,MAAApC,KAAAqC,YAAA,IAaOo2E,8BAKPl7E,EAAKN,GAAO,IAAA0sD,EAAA3pD,KAGZ,IAAKA,KAAKg3E,MACN,OAAOh3E,KAAKglB,MAAMxe,IAAIjJ,EAAKN,GAG/B+C,KAAKglB,MAAMxe,IAAIjJ,EAAKN,GAGpB+C,KAAKgN,MAAMk8C,IAAX,eAAA8vB,EAAA1B,EAAAC,mBAAAC,KAAe,SAAAyB,EAAMz4E,GAAN,IAAAo4E,EAAA,OAAArB,mBAAA35B,KAAA,SAAAs7B,GAAA,cAAAA,EAAAjY,KAAAiY,EAAAxuE,MAAA,cAAAwuE,EAAAxuE,KAAA,EAGUi/C,EAAKmvB,YAAYv7E,GAH3B,UAGPq7E,EAHOM,EAAArB,KAAA,CAAAqB,EAAAxuE,KAAA,eAAAwuE,EAAAxuE,KAAA,EAODi/C,EAAKqtB,MAAMmC,IAAI,CACjBC,IAAK77E,EACLe,KAAMrB,EAAMqB,KACZwB,KAAM7C,EAAM6C,OAVT,OAAAo5E,EAAAxuE,KAAA,uBAAAwuE,EAAAxuE,KAAA,GAgBDi/C,EAAKqtB,MAAMmC,IAAI,CACjBC,IAAK77E,EACL87E,KAAMT,EACNt6E,KAAMrB,EAAMqB,KACZwB,KAAM7C,EAAM6C,OApBT,yBAAAo5E,EAAAhB,SAAAe,MAAf,gBAAAK,GAAA,OAAAN,EAAA52E,MAAApC,KAAAqC,YAAA,uEA8BcxC,oGAKLG,KAAKg3E,+CACC,6BAGSh3E,KAAKg3E,MAAMn6E,IAAIgD,iBAA/BqvD,2BACGA,GAAWA,EAAQmqB,yCAKR,KAAdE,EAAA7wB,GAAI8wB,iDACG,6JAUVj8E,GAGL,IAAIk8E,EAAMz5E,KAAKnD,IAAI,SAAWU,GAC9B,OAAIk8E,EACOA,EAAI35E,KAEJ,sCAKNvC,EAAKN,GAGV+C,KAAKwG,IAAI,SAAWjJ,EAAK,CACrBe,KAAM,SACNwB,KAAM7C,iCA9ID,OAAO+C,KAAKglB,MAAM6M,cA2J7BqlD,aAEF,SAAAA,IAAcn3E,EAAAC,KAAAk3E,GAGVl3E,KAAK8J,QAAU,GAGf9J,KAAK05E,UAAY,2CAOjBzvE,GAAM,IAAA4/C,EAAA7pD,KAGN,OAAO,IAAIm2B,QAAQ,SAACu0C,EAAWC,GAG3B9gB,EAAK//C,QAAQ1E,KAAK,CACd6E,OACAygE,YACAC,WAIC9gB,EAAK6vB,WACN7vB,EAAK7/C,0EAOO,IAAA6rE,EAAA71E,KAGpB,IAAIA,KAAK05E,UAAT,CACA15E,KAAK05E,WAAY,EAGjB,IAAI9uE,EAAS5K,KAAK8J,QAAQlC,QACrBgD,EASLA,EAAOX,OAAOglD,KAAK,SAAAzuD,GAGfoK,EAAO8/D,UAAUlqE,KAHrB,MAKS,SAAAmC,GAGLhB,EAAQmB,MAAMH,GACdiI,EAAO+/D,OAAOhoE,KAEfssD,KAAK,SAAAzuD,GAGJq1E,EAAK6D,WAAY,EACjB7D,EAAK7rE,0BArBLhK,KAAK05E,WAAY,iCA4BrB/3E,EAAQQ,IAAR,+CAAA4B,OAA2D/D,KAAK8J,QAAQ1G,OAAxE,8ECjVR,SAAAzB,EAAA3D,EAAA4jB,GAAA,IA4FA+3D,EACAC,EA7FAC,EAAAj+E,EAAA,IAAAk+E,EAAAl+E,EAAA6B,EAAAo8E,GAAAE,EAAAn+E,EAAA,KAAAo+E,EAAAp+E,EAAA6B,EAAAs8E,GAAAE,EAAAr+E,EAAA,IAAAs+E,EAAAt+E,EAAA6B,EAAAw8E,GAAAE,EAAAv+E,EAAA,KAAAw+E,EAAAx+E,EAAA6B,EAAA08E,GAAAE,EAAAz+E,EAAA,IAAA0+E,EAAA1+E,EAAA6B,EAAA48E,GAAAE,EAAA3+E,EAAA,IAAA4+E,EAAA5+E,EAAA6B,EAAA88E,GAAAE,EAAA7+E,EAAA,IAQA,SAAA8+E,EAAAn9E,GACA,UAAAA,EAEA,SAAAo9E,EAAAp9E,GACA,OAAAA,EAAA0lD,UAAA,GAEA,SAAA23B,IACA56E,KAAA66E,OAAA,GAoCA,SAAAC,EAAA/3D,GAIA,GAHA/iB,KAAA66E,OAAA,IAAAD,EAGA73D,GAAA/gB,MAAAq1B,QAAAtU,GACA,QAAA/mB,EAAA,EAAAkL,EAAA6b,EAAA3f,OAAuCpH,EAAAkL,EAASlL,IAChDgE,KAAA64B,IAAA9V,EAAA/mB,IAiEA,SAAA++E,EAAAr9E,GACA,GAAAA,aAAA8S,YACA,OAdA,SAAAisD,GACA,sBAAAA,EAAA16D,MACA,OAAA06D,EAAA16D,MAAA,GAGA,IAAA1C,EAAA,IAAAmR,YAAAisD,EAAA/kD,YACAskD,EAAA,IAAA3rD,WAAAhR,GACA48D,EAAA,IAAA5rD,WAAAosD,GAEA,OADAT,EAAAx1D,IAAAy1D,GACA58D,EAKA88B,CAAAz+B,GAEA,IAAAm0B,EAAAn0B,EAAAm0B,KACAvzB,EAAAZ,EAAAY,KAEA,yBAAAZ,EAAAqE,MACArE,EAAAqE,MAAA,EAAA8vB,EAAAvzB,GAGAZ,EAAAs9E,YAAA,EAAAnpD,EAAAvzB,GApHAs8E,EAAAh9E,UAAAf,IAAA,SAAAU,GACA,IAAA09E,EAAAP,EAAAn9E,GACA,OAAAyC,KAAA66E,OAAAI,IAEAL,EAAAh9E,UAAA4I,IAAA,SAAAjJ,EAAAN,GACA,IAAAg+E,EAAAP,EAAAn9E,GAEA,OADAyC,KAAA66E,OAAAI,GAAAh+E,GACA,GAEA29E,EAAAh9E,UAAAyK,IAAA,SAAA9K,GAEA,OADAm9E,EAAAn9E,KACAyC,KAAA66E,QAEAD,EAAAh9E,UAAAwzE,OAAA,SAAA7zE,GACA,IAAA09E,EAAAP,EAAAn9E,GACAmR,EAAAusE,KAAAj7E,KAAA66E,OAEA,cADA76E,KAAA66E,OAAAI,GACAvsE,GAEAksE,EAAAh9E,UAAAoX,QAAA,SAAAwuD,GAEA,IADA,IAAAt7D,EAAAxL,OAAAwL,KAAAlI,KAAA66E,QACA7+E,EAAA,EAAAkL,EAAAgB,EAAA9E,OAAoCpH,EAAAkL,EAASlL,IAAA,CAC7C,IAAAuB,EAAA2K,EAAAlM,GAGAwnE,EAFAxjE,KAAA66E,OAAAt9E,GACAA,EAAAo9E,EAAAp9E,MAIAb,OAAAC,eAAAi+E,EAAAh9E,UAAA,QACAf,IAAA,WACA,OAAAH,OAAAwL,KAAAlI,KAAA66E,QAAAz3E,UAcA03E,EAAAl9E,UAAAi7B,IAAA,SAAAt7B,GACA,OAAAyC,KAAA66E,OAAAr0E,IAAAjJ,GAAA,IAEAu9E,EAAAl9E,UAAAyK,IAAA,SAAA9K,GACA,OAAAyC,KAAA66E,OAAAxyE,IAAA9K,IAEAu9E,EAAAl9E,UAAAoX,QAAA,SAAAwuD,GACAxjE,KAAA66E,OAAA7lE,QAAA,SAAA/X,EAAAM,GACAimE,EAAAjmE,MAGAb,OAAAC,eAAAm+E,EAAAl9E,UAAA,QACAf,IAAA,WACA,OAAAmD,KAAA66E,OAAAhpD,SAQA,WACA,uBAAA90B,QAAA,oBAAAm5B,KAAA,oBAAAE,IACA,SAEA,IAAAihB,EAAA36C,OAAAiR,yBAAAuoB,IAAAn5B,OAAAm+E,SACA,OAAA7jC,GAAA,QAAAA,GAAAnhB,IAAAn5B,OAAAm+E,WAAAhlD,IASAilD,IAIAxB,EAAAmB,EACAlB,EAAAgB,IAJAjB,EAAAvjD,IACAwjD,EAAA1jD,KA0CA,IAAAxC,EAAAl0B,SAAA5B,UAAAgR,SACAmlB,EAAAL,EAAAv3B,KAAAO,QAaA,SAAAu0C,EAAAvzC,GACA,IAAA09E,EACAp/E,EACAkL,EAEA,IAAAxJ,GAAA,iBAAAA,EACA,OAAAA,EAGA,GAAAsE,MAAAq1B,QAAA35B,GAAA,CAEA,IADA09E,EAAA,GACAp/E,EAAA,EAAAkL,EAAAxJ,EAAA0F,OAAoCpH,EAAAkL,EAASlL,IAC7Co/E,EAAAp/E,GAAAi1C,EAAAvzC,EAAA1B,IAEA,OAAAo/E,EAKA,GAAA19E,aAAA21B,KACA,OAAA31B,EAAA29E,cAGA,GAxEA,SAAA39E,GACA,0BAAA8S,aAAA9S,aAAA8S,aACA,oBAAA8qE,MAAA59E,aAAA49E,KAsEAC,CAAA79E,GACA,OAAAq9E,EAAAr9E,GAGA,IAtCA,SAAAT,GACA,IAAAsX,EAAA7X,OAAAiK,eAAA1J,GAEA,UAAAsX,EACA,SAEA,IAAA2nB,EAAA3nB,EAAAvJ,YACA,yBAAAkxB,GACAA,gBAAAxI,EAAAv3B,KAAA+/B,IAAAnI,EA8BAoQ,CAAAzmC,GACA,OAAAA,EAIA,IAAA1B,KADAo/E,EAAA,GACA19E,EAEA,GAAAhB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAA1B,GAAA,CACA,IAAAiB,EAAAg0C,EAAAvzC,EAAA1B,SACA,IAAAiB,IACAm+E,EAAAp/E,GAAAiB,GAIA,OAAAm+E,EAGA,SAAA7zE,EAAA2jD,GACA,IAAAx/C,GAAA,EACA,OAAS4uE,IAAY,SAAA32E,GAErB,GAAA+H,EAEA,UAAAjJ,MAAA,8BAEAiJ,GAAA,EACAw/C,EAAA9oD,MAAApC,KAAA2D,KAKA,SAAA63E,EAAAvxE,GAEA,OAASqwE,IAAY,SAAA32E,GAErBA,EAAAstC,EAAAttC,GACA,IAAAtD,EAAAL,KAEAy7E,EAAA,mBAAA93E,IAAAP,OAAA,IAAAO,EAAAmE,MACAg8D,EAAA,IAAA3tC,QAAA,SAAAulD,EAAAz/B,GACA,IAAA0/B,EACA,IACA,IAAA/wC,EAAArjC,EAAA,SAAA5E,EAAAi5E,GACAj5E,EACAs5C,EAAAt5C,GAEA+4E,EAAAE,KAKAj4E,EAAAyB,KAAAwlC,IACA+wC,EAAA1xE,EAAA7H,MAAA/B,EAAAsD,KACA,mBAAAg4E,EAAA1sB,MACAysB,EAAAC,GAEO,MAAAn7E,GACPy7C,EAAAz7C,MASA,OALAi7E,GACA3X,EAAA7U,KAAA,SAAAtgD,GACA8sE,EAAA,KAAA9sE,IACO8sE,GAEP3X,IA0BA,SAAA+X,EAAAt/E,EAAAquC,GACA,OAAA4wC,EAAmBlB,IAAY,SAAA32E,GAC/B,GAAA3D,KAAA87E,QACA,OAAA3lD,QAAA8lB,OAAA,IAAAx5C,MAAA,uBAEA,GAAAzC,KAAA+7E,WACA,OAAA5lD,QAAA8lB,OAAA,IAAAx5C,MAAA,0BAEA,IAAApC,EAAAL,KAEA,OAhCA,SAAAK,EAAA9D,EAAAoH,GAEA,GAAAtD,EAAA2K,YAAA7D,UAAA,SAAA/D,OAAA,CAEA,IADA,IAAA44E,EAAA,OAAA37E,EAAA9D,QACAP,EAAA,EAAmBA,EAAA2H,EAAAP,OAAA,EAAqBpH,IACxCggF,EAAA52E,KAAAzB,EAAA3H,IAEAqE,EAAA2K,YAAA9F,KAAA,QAAA82E,GAGA,IAAAC,EAAAt4E,IAAAP,OAAA,GACAO,IAAAP,OAAA,YAAAT,EAAA+L,GACA,IAAAwtE,EAAA,OAAA77E,EAAA9D,QACA2/E,IAAAn4E,OACApB,EAAA,SAAAA,GAAA,WAAA+L,IAEArO,EAAA2K,YAAA9F,KAAA,QAAAg3E,GACAD,EAAAt5E,EAAA+L,KAcAytE,CAAA97E,EAAA9D,EAAAoH,GACA3D,KAAAo8E,UAAAC,QAWAzxC,EAAAxoC,MAAApC,KAAA2D,GAVA,IAAAwyB,QAAA,SAAAulD,EAAAz/B,GACA57C,EAAA+7E,UAAAE,QAAA,SAAAC,GACAA,EACAtgC,EAAAsgC,GAEAb,EAAAr7E,EAAA9D,GAAA6F,MAAA/B,EAAAsD,WAUA,SAAAyvB,EAAA88B,EAAAhtD,GAEA,IADA,IAAAwL,EAAA,GACA1S,EAAA,EAAAkL,EAAAhE,EAAAE,OAAmCpH,EAAAkL,EAASlL,IAAA,CAC5C,IAAAq7C,EAAAn0C,EAAAlH,GACAq7C,KAAA6Y,IACAxhD,EAAA2oC,GAAA6Y,EAAA7Y,IAGA,OAAA3oC,EAMA,IAgIA8tE,EAhIAC,EAAA,EAEA,SAAAC,EAAAhiB,GACA,OAAAA,EAGA,SAAAiiB,EAAAhuE,GACA,QACAxL,GAAAwL,IAKA,SAAAiuE,EAAAC,EAAApd,EAAA70B,GACA,IAAAkyC,EAAArd,EAAAsd,KAGAC,EAAA,IAAApD,EACAkD,EAAA9nE,QAAA,SAAA+5C,GACAiuB,EAAA30E,IAAA0mD,EAAAlvD,IACAm9E,EAAAngF,IAAAkyD,EAAAlvD,IAAAuF,KAAA2pD,GAEAiuB,EAAAx2E,IAAAuoD,EAAAlvD,GAAA,CAAAkvD,MAIA,IAAAkuB,EAAAD,EAAAnrD,KACAqrD,EAAA,EACAC,EAAA,IAAAn7E,MAAAi7E,GAeA,SAAAG,IAbA,IACAluB,IAaAguB,IAAAD,IAbA/tB,EAAA,GACAiuB,EAAAnoE,QAAA,SAAAtG,GACAA,EAAAquE,KAAA/nE,QAAA,SAAAugE,GACArmB,EAAA9pD,KAAA,CACAvF,GAAA6O,EAAA7O,GACAk9E,KAAA,CAAAxH,SAIA3qC,EAAA,MAAoBskB,aAcpB,IAAAmuB,EAAA,GACAL,EAAAhoE,QAAA,SAAA/X,EAAAM,GACA8/E,EAAAj4E,KAAA7H,KAGA,IAAAvB,EAAA,EAEA,SAAAshF,IAEA,KAAAthF,GAAAqhF,EAAAj6E,QAAA,CAIA,IAAAm6E,EAAAn9E,KAAAY,IAAAhF,EAAAygF,EAAAY,EAAAj6E,QACAo6E,EAAAH,EAAAt7E,MAAA/F,EAAAuhF,IAKA,SAAAC,EAAAlqE,GACAkqE,EAAAxoE,QAAA,SAAAyoE,EAAAriB,GACA,IAAAsiB,EAAApqE,EAAA8nD,EACAuiB,EAAAX,EAAAngF,IAAA4gF,GAQAG,EAAAxqD,EAAAuqD,EAAA,iCACAC,EAAAC,UAAAF,EAAAtoE,IAAA,SAAA05C,GAEA,OAAAA,EAAA9uD,MAIA29E,EAAAC,UAAAD,EAAAC,UAAAjpE,OAAA8nE,GAEA,IAAAoB,EAAApB,EAEA,IAAAkB,EAAAC,UAAAz6E,gBACAw6E,EAAAC,UAKAC,EAAAnB,GAIA,gDAAA3nE,QAAA,SAAA+oE,GACAA,KAAAte,IACAme,EAAAG,GAAAte,EAAAse,MAGAlB,EAAAhgF,IAAA4gF,EAAAG,EAAA,SAAAj7E,EAAA+L,GACA,IAAAC,EA9DA9O,EAAAk9E,EAiEApuE,EADAhM,EACA,EAAqBG,MAAAH,IAErBm7E,EAAApvE,GAnEA7O,EAqEA49E,EArEAV,EAqEApuE,EApEAwuE,EAoEAO,GApEA,CAA+B79E,KAAAk9E,QAC/BK,IAoEAE,QAlDAU,CAAAR,EAAAxhF,GACAA,GAAAwhF,EAAAp6E,QAsDAk6E,IAMA,IACAW,aAAAC,QAAA,+BACA1B,IAAAyB,aAAA3H,QAAA,6BACC,MAAA91E,GACDg8E,GAAA,EAGA,SAAA2B,IACA,OAAA3B,EAgBA,SAAA4B,IACE3D,EAAA,aAAYt+E,KAAA6D,MACdA,KAAAgG,WAAA,GAVA,SAAA3F,GACA89E,KACAr2B,iBAAA,mBAAAtnD,GACAH,EAAA6E,KAAA1E,EAAAjD,OASA8gF,CAAAr+E,MAsEA,SAAAs+E,EAAAlzE,GAEA,YAAAzJ,GAAA,mBAAAA,EAAAyJ,GAAA,CACA,IAAAzH,EAAA3B,MAAApE,UAAAmE,MAAA5F,KAAAkG,UAAA,GACAV,EAAAyJ,GAAAhJ,MAAAT,EAAAgC,IAwBA,SAAA46E,EAAAv9E,GACA,IAAA20B,EAAA,EAIA,OAHA30B,IACA20B,EAAA,KAvBA,SAAA30B,EAAA20B,GAiBA,OAfA30B,EAAAmgB,SAAAngB,EAAA,QACA20B,EAAAxU,SAAAwU,EAAA,MACAA,MAAA30B,EACA20B,GAAA30B,GAAA,MAEA20B,GAAA,EAGAA,EATA,MAUA30B,EAAAw9E,IACA7oD,EAXA,SAcAA,EAAA30B,GADAZ,KAAA41B,SAGAh1B,GAQAy9E,CAAAz9E,EAAA20B,GAKA,SAAA+oD,EAAAlF,EAAAjjB,GACA+nB,EAAA,oBAAA9E,EAAA,uBAAAjjB,GA5HAikB,IAAQ4D,EAAU3D,EAAA,cAiBlB2D,EAAAxgF,UAAAwJ,YAAA,SAAAu3E,EAAA9+E,EAAAg9E,EAAApd,GAEA,IAAAz/D,KAAAgG,WAAAnG,GAAA,CAGA,IAAAQ,EAAAL,KACA4+E,GAAA,EAiCA5+E,KAAAgG,WAAAnG,GAAAg/E,EACA7+E,KAAAqH,GAAAs3E,EAAAE,GAjCA,SAAAA,IAEA,GAAAx+E,EAAA2F,WAAAnG,GAGA,GAAA++E,EACAA,EAAA,cADA,CAIAA,GAAA,EACA,IAAAE,EAAA1rD,EAAAqsC,EAAA,CACA,0DACA,iEAQAod,EAAAzzB,QAAA01B,GAAAz3E,GAAA,kBAAAhL,GACAA,EAAA0iF,IAAAtf,EAAAuf,QAAAvf,EAAAwf,YACAxf,EAAAuf,MAAA3iF,EAAA0iF,IACAtf,EAAAyf,SAAA7iF,MAEKgL,GAAA,sBACL,YAAAu3E,GACQ9E,IAAS+E,GAEjBD,GAAA,IACKv3E,GAAA,QAdL,WACAu3E,GAAA,OAmBAR,EAAAxgF,UAAAmI,eAAA,SAAA44E,EAAA9+E,GAEAA,KAAAG,KAAAgG,aAGEy0E,EAAA,aAAY78E,UAAAmI,eAAA5J,KAAA6D,KAAA2+E,EACd3+E,KAAAgG,WAAAnG,WACAG,KAAAgG,WAAAnG,KAKAu+E,EAAAxgF,UAAAuhF,mBAAA,SAAAR,GAGAR,MACAF,aAAAU,GAAA,MAAAV,aAAAU,GAAA,UAIAP,EAAAxgF,UAAA+wE,OAAA,SAAAgQ,GACA3+E,KAAAkF,KAAAy5E,GACA3+E,KAAAm/E,mBAAAR,IAwEA,IAAAS,EAzBA,mBAAA1iF,OAAA25C,OACA35C,OAAA25C,OAIA,SAAAh3C,GAGA,IAFA,IAAAy8D,EAAAp/D,OAAA2C,GAEAwI,EAAA,EAAyBA,EAAAxF,UAAAe,OAA0ByE,IAAA,CACnD,IAAAw3E,EAAAh9E,UAAAwF,GAEA,SAAAw3E,EACA,QAAAC,KAAAD,EAEA3iF,OAAAkB,UAAAC,eAAA1B,KAAAkjF,EAAAC,KACAxjB,EAAAwjB,GAAAD,EAAAC,IAKA,OAAAxjB,GASA,SAAAyjB,EAAA/F,EAAA12E,EAAAygE,GACA9gE,MAAAtG,KAAA6D,KAAAujE,GACAvjE,KAAAw5E,SACAx5E,KAAAzD,KAAAuG,EACA9C,KAAA4C,QAAA2gE,EACAvjE,KAAA8C,OAAA,EAPA03E,IAAQ+E,EAAA98E,OAUR88E,EAAA3hF,UAAAgR,SAAA,WACA,OAAA09C,KAAAiO,UAAA,CACAif,OAAAx5E,KAAAw5E,OACAj9E,KAAAyD,KAAAzD,KACAqG,QAAA5C,KAAA4C,QACA2gE,OAAAvjE,KAAAujE,UAIA,IAAAgc,EAAA,yDACAC,EAAA,IAAAD,EAAA,iDACAE,EAAA,IAAAF,EAAA,2BACAG,EAAA,IAAAH,EAAA,2CACAI,EAAA,IAAAJ,EAAA,qDACAK,EAAA,IAAAL,EAAA,6CACAM,EAAA,IAAAN,EAAA,2EAEAO,GADA,IAAAP,EAAA,+CACA,IAAAA,EAAA,8DACAQ,EAAA,IAAAR,EAAA,+CAEAS,GADA,IAAAT,EAAA,6CACA,IAAAA,EAAA,4DACAU,EAAA,IAAAV,EAAA,oDACAW,GAAA,IAAAX,EAAA,sDACAY,GAAA,IAAAZ,EAAA,oDAEAa,IADA,IAAAb,EAAA,sCACA,IAAAA,EAAA,sCAIAc,IAHA,IAAAd,EAAA,kCACA,IAAAA,EAAA,uCACA,IAAAA,EAAA,wEACA,IAAAA,EAAA,yCAEAe,IADA,IAAAf,EAAA,iFACA,IAAAA,EAAA,mEACA,IAAAA,EAAA,6CAEA,SAAAgB,GAAAz9E,EAAAygE,GACA,SAAAid,EAAAjd,GAIA,QAAAzlE,KAAAgF,EACA,mBAAAA,EAAAhF,KACAkC,KAAAlC,GAAAgF,EAAAhF,SAIAyB,IAAAgkE,IACAvjE,KAAAujE,UAIA,OADAid,EAAA5iF,UAAA2hF,EAAA3hF,UACA,IAAA4iF,EAAAjd,GAGA,SAAAkd,GAAA99E,GAEA,oBAAAA,EAAA,CACA,IAAA7C,EAAA6C,GACAA,EAAAm9E,GACAhgF,OAoBA,MAjBA,UAAA6C,GAAA,aAAAA,EAAAG,QACAH,EAAApG,KAAA,WACAoG,EAAA62E,OAAA,KAGA,SAAA72E,IACAA,EAAApG,KAAAoG,EAAAG,OAAA,WAGA,WAAAH,IACAA,EAAA62E,OAAA,KAGA,YAAA72E,IACAA,EAAAC,QAAAD,EAAAC,SAAAD,EAAA4gE,QAGA5gE,EAYA,SAAA+9E,GAAAjhB,GACA,IAAAkhB,EAAA,GACAC,EAAAnhB,EAAA7qD,QAAA,mBAAA6qD,EAAA7qD,OAGA,OAFA+rE,EAAA/nB,MAAA6G,EAAAohB,aAEA,SAAApiB,GACAA,EAAAuZ,MAGAvZ,EAAAuZ,IAAA,IAGA,IAAA8I,EAAAF,GArBA,SAAAhsE,EAAAojE,EAAA2I,GACA,IACA,OAAA/rE,EAAAojE,EAAA2I,GACG,MAAAh+E,GACH,IAAA4lD,EAAA,0BAAA5lD,EAAAiM,WACA,OAAA2xE,GAAAL,GAAA33B,IAgBAw4B,CAAAthB,EAAA7qD,OAAA6pD,EAAAuZ,IAAA2I,GAEA,oBAAAG,EACA,OAAAA,EAGA,GAAAA,EACA,SAGA,GAAArhB,EAAAmY,cAEK,IAAAnY,EAAAuhB,YACL,QAAAC,KAAAxiB,EAAAuZ,IAAAkJ,aAEAziB,EAAAuZ,IAAAkJ,aAAArjF,eAAAojF,KACAxiB,EAAAuZ,IAAAkJ,aAAAD,GAAAE,MAAA,eALA1iB,EAAAuZ,IASA,UAIA,SAAA1oC,GAAA8xC,GAEA,IADA,IAAA1yE,EAAA,GACA1S,EAAA,EAAAkL,EAAAk6E,EAAAh+E,OAAoCpH,EAAAkL,EAASlL,IAC7C0S,IAAA3K,OAAAq9E,EAAAplF,IAEA,OAAA0S,EAUA,SAAA2yE,GAAAxhF,GACA,IAAA8C,EAQA,GAPA9C,EAEG,iBAAAA,EACH8C,EAAA49E,GAAAZ,GACG,KAAAn2E,KAAA3J,KAAA,mBAAA2J,KAAA3J,KACH8C,EAAA49E,GAAAV,IAJAl9E,EAAA49E,GAAAX,GAMAj9E,EACA,MAAAA,EAMA,SAAA2+E,GAAAzE,GACA,wBAAAA,EAAA0E,QACA1E,EAAA0E,QAGA,mBAAA1E,EAAAv+E,OACAggF,EAAA,OACA,8EAEA,SAAAzB,EAAAv+E,QAWA,SAAAkjF,GAAAzjF,GACA,IAAAA,EACA,YAEA,IAAA0jF,EAAA1jF,EAAA0K,MAAA,KACA,WAAAg5E,EAAAr+E,OACAq+E,EAEA,IAAAA,EAAAr+E,OACA,CAAArF,KAEA,KAGA,SAAA2jF,GAAA3jF,GACA,IAAA4jF,EAAAH,GAAAzjF,GACA,OAAA4jF,IAAA74E,KAAA,UAMA,IAAAZ,GAAA,8DACA,qEACA05E,GAAA,WACAC,GAAA,4BAIAvoB,GAAA,mMAEA,SAAAwoB,GAAAvrB,GAKA,IAJA,IAAAn6D,EAAAk9D,GAAA/4D,KAAAg2D,GACAwrB,EAAA,GACA/lF,EAAA,GAEAA,KAAA,CACA,IAAAuB,EAAA2K,GAAAlM,GACAiB,EAAAb,EAAAJ,IAAA,GACAgmF,GAAA,wBAAA/sE,QAAA1X,GACAwkF,EAAAxkF,GAAAykF,EAAAC,mBAAAhlF,KAUA,OAPA8kF,EAAAH,IAAA,GACAG,EAAA75E,GAAA,KAAAoB,QAAAu4E,GAAA,SAAAK,EAAAC,EAAAC,GACAD,IACAJ,EAAAH,IAAAO,GAAAC,KAIAL,EAOA,SAAAM,GAAA9jF,EAAAovD,GACA,IAAAzlD,EAAA,GACAkJ,EAAA,GACA,QAAA7T,KAAAowD,EACAA,EAAA9vD,eAAAN,KACA2K,EAAA9C,KAAA7H,GACA6T,EAAAhM,KAAAuoD,EAAApwD,KAIA,OADA2K,EAAA9C,KAAA7G,GACAiB,SAAA4C,MAAA,KAAA8F,GAAA9F,MAAA,KAAAgP,GAMA,SAAAkxE,GAAAzF,EAAAY,EAAA8E,GACA,WAAApsD,QAAA,SAAAulD,EAAAz/B,GACA4gC,EAAAhgF,IAAA4gF,EAAA,SAAA96E,EAAAq1E,GACA,GAAAr1E,EAAA,CAEA,SAAAA,EAAA62E,OACA,OAAAv9B,EAAAt5C,GAEAq1E,EAAA,GAIA,IAAAwK,EAAAxK,EAAAqB,KACAoJ,EAAAF,EAAAvK,GAEA,IAAAyK,EAGA,OAAA/G,EAAA,CAAwBgH,SAAA,EAAAziF,IAAAuiF,IAKxBC,EAAArJ,IAAAqE,EACAgF,EAAApJ,KAAAmJ,EACA9G,EAKA,SAAAmB,EAAA7E,EAAAuK,GACA,OAAA1F,EAAA1D,IAAAnB,GAAA/oB,KAAA,SAAAvgD,GACA,OACAg0E,SAAA,EACAziF,IAAAyO,EAAAzO,MAEG,SAAA0C,GAEH,SAAAA,EAAA62E,OACA,MAAA72E,EAEA,OAAA2/E,GAAAzF,EAAA7E,EAAAoB,IAAAmJ,KAhBAI,CAAA9F,EAAA4F,EAAAF,QAoBA,IAAAK,GAAA,SAAArsB,GACA,OAAAssB,KAAAtsB,IAGAusB,GAAA,SAAAvsB,GACA,OAAAwsB,KAAAxsB,IAMA,SAAAysB,GAAAvB,EAAAnnC,GAEAmnC,KAAA,GACAnnC,KAAA,GACA,IACA,WAAAghC,KAAAmG,EAAAnnC,GACG,MAAA95C,GACH,iBAAAA,EAAAjE,KACA,MAAAiE,EAOA,IALA,IAIAyiF,EAAA,IAJA,oBAAAC,wBACA,oBAAAC,4BACA,oBAAAC,8BACAC,mBAEArnF,EAAA,EAAmBA,EAAAylF,EAAAr+E,OAAkBpH,GAAA,EACrCinF,EAAA/mB,OAAAulB,EAAAzlF,IAEA,OAAAinF,EAAAK,QAAAhpC,EAAAh8C,OAMA,SAAAilF,GAAAC,GAIA,IAHA,IAAApgF,EAAAogF,EAAApgF,OACAmvE,EAAA,IAAA/hE,YAAApN,GACAF,EAAA,IAAAmN,WAAAkiE,GACAv2E,EAAA,EAAiBA,EAAAoH,EAAYpH,IAC7BkH,EAAAlH,GAAAwnF,EAAA1yC,WAAA90C,GAEA,OAAAu2E,EAGA,SAAAkR,GAAAC,EAAAplF,GACA,OAAA0kF,GAAA,CAAAO,GAAAG,IAAA,CAA6DplF,SAG7D,SAAAqlF,GAAAC,EAAAtlF,GACA,OAAAmlF,GAAAb,GAAAgB,GAAAtlF,GAiBA,SAAAulF,GAAAC,EAAAl5C,GACA,IAAAm5C,EAAA,IAAAC,WACAC,EAAA,mBAAAF,EAAAF,mBACAE,EAAAG,UAAA,SAAA1jF,GACA,IAAAmO,EAAAnO,EAAAnB,OAAAsP,QAAA,GACA,GAAAs1E,EACA,OAAAr5C,EAAAj8B,GAEAi8B,EAnBA,SAAA13B,GAIA,IAHA,IAAAixE,EAAA,GACA1oB,EAAA,IAAAprD,WAAA6C,GACA9P,EAAAq4D,EAAA/jD,WACA1b,EAAA,EAAiBA,EAAAoH,EAAYpH,IAC7BmoF,GAAA5+E,OAAAo2D,aAAAF,EAAAz/D,IAEA,OAAAmoF,EAYAC,CAAAz1E,KAEAs1E,EACAF,EAAAF,mBAAAC,GAEAC,EAAAM,kBAAAP,GAIA,SAAAQ,GAAAC,EAAA35C,GACAi5C,GAAAU,EAAA,SAAAf,GACA54C,EAAA44C,KAIA,SAAAgB,GAAAD,EAAA35C,GACA05C,GAAAC,EAAA,SAAAE,GACA75C,EAAAk4C,GAAA2B,MAgBA,IAAAC,GAAA1mF,EAAAkO,cAAAlO,EAAAkM,WACAy6E,GAAA,MAaA,SAAAC,GAAA1xE,EAAA4wE,EAAArvE,EAAAmB,EAAAg1B,IACAn2B,EAAA,GAAAmB,EAAAkuE,EAAAjyD,QAEAiyD,EAVA,SAAAA,EAAArvE,EAAAmB,GACA,OAAAkuE,EAAA9I,YACA8I,EAAA9I,YAAAvmE,EAAAmB,GAEAkuE,EAAA/hF,MAAA0S,EAAAmB,GAMAivE,CAAAf,EAAArvE,EAAAmB,IA5BA,SAAAkuE,EAAAl5C,GACA,IAAAm5C,EAAA,IAAAC,WACAD,EAAAG,UAAA,SAAA1jF,GACA,IAAAmO,EAAAnO,EAAAnB,OAAAsP,QAAA,IAAA6B,YAAA,GACAo6B,EAAAj8B,IAEAo1E,EAAAM,kBAAAP,GAwBAO,CAAAP,EAAA,SAAAn7C,GACAz1B,EAAAgpD,OAAAvzB,GACAiC,MAIA,SAAAk6C,GAAA5xE,EAAAhK,EAAAuL,EAAAmB,EAAAg1B,IACAn2B,EAAA,GAAAmB,EAAA1M,EAAA9F,UAEA8F,IAAA+5C,UAAAxuC,EAAAmB,IAEA1C,EAAAipD,aAAAjzD,GACA0hC,IAGA,SAAAm6C,GAAAjlF,EAAA8qC,GACA,IAAAo6C,EAAA,iBAAAllF,EACAoH,EAAA89E,EAAAllF,EAAAsD,OAAAtD,EAAA+xB,KACAozD,EAAA7kF,KAAAY,IAAA2jF,GAAAz9E,GACAg+E,EAAA9kF,KAAAkN,KAAApG,EAAA+9E,GACAE,EAAA,EACAjyE,EAAA8xE,EAAA,IAAmC9K,EAAA/4E,EAAG,IAAS+4E,EAAA/4E,EAAGqP,YAElD0rD,EAAA8oB,EAAAF,GAAAF,GAEA,SAAAl6E,IACAg6E,GAAAU,GAGA,SAAAz6E,IACA,IACA85E,EA/CA,SAAAjoB,GACA,OAAAsmB,GAAAtmB,GA8CA6oB,CADAnyE,EAAA0C,KAAA,IAEAg1B,EAAA65C,GACAvxE,EAAA2pD,UAGA,SAAAuoB,IACA,IAAA3wE,EAAA0wE,EAAAF,EACArvE,EAAAnB,EAAAwwE,EAGA/oB,EAAAhpD,EAAApT,EAAA2U,EAAAmB,IAFAuvE,EACAD,EACAx6E,EAEAC,GAGAy6E,IAGA,SAAAE,GAAAp8E,GACA,OAASgxE,EAAA/4E,EAAG08B,KAAA30B,GAGZ,SAAAjJ,GAAA+3E,EAAAuN,GACA,IAAAC,EAAAv0C,EAAA+mC,GACA,OAAAuN,UAIAC,EAAAC,UACAH,GAAAh5B,KAAAiO,UAAAirB,KAJWxL,EAAA74E,EAAM6pE,KAAA1hE,QAAA,SAAAG,cAOjB,IAAAwhE,GAAW+O,EAAA74E,EAAM6pE,GAOjB,SAAA0a,GAAAC,GAMA,IALA,IAAAC,EACAC,EACAC,EAEAzR,EADA0R,EAAAJ,EAAAK,SAAAjkF,QAEAsyE,EAAA0R,EAAAj+E,OAAA,CACA,IAAAm+E,EAAA5R,EAAAe,IACA8Q,EAAAD,EAAA,GACA75B,EAAAioB,EAAAjoB,IACA,GAAA85B,EAAA9iF,OACA,QAAApH,EAAA,EAAAkL,EAAAg/E,EAAA9iF,OAA4CpH,EAAAkL,EAASlL,IACrD+pF,EAAA3gF,KAAA,CAAsBgnD,MAAA,EAAAgpB,IAAA8Q,EAAAlqF,SAFtB,CAMA,IAAAmqF,IAAAF,EAAA,GAAAE,QACAtmF,EAAAomF,EAAA,GAEAL,KAAAE,IAAAK,EAAAL,EACAD,IAAAz5B,EAAAy5B,EAAAz5B,EAAAw5B,EAAA/lF,KACA+lF,EAAA/lF,EACAgmF,EAAAz5B,EACA05B,EAAAK,IAIA,OAAAN,EAAA,IAAAD,EAOA,SAAAQ,GAAAC,EAAAz7C,GAIA,IAHA,IAEAypC,EAFA0R,EAAAM,EAAAtkF,QAGAsyE,EAAA0R,EAAAj+E,OAMA,IALA,IAAAskD,EAAAioB,EAAAjoB,IACA65B,EAAA5R,EAAAe,IACA8Q,EAAAD,EAAA,GACAK,EACA17C,EAAA,IAAAs7C,EAAA9iF,OAAAgpD,EAAA65B,EAAA,GAAA5R,EAAAj2E,IAAA6nF,EAAA,IACAjqF,EAAA,EAAAkL,EAAAg/E,EAAA9iF,OAA0CpH,EAAAkL,EAASlL,IACnD+pF,EAAA3gF,KAAA,CAAoBgnD,MAAA,EAAAgpB,IAAA8Q,EAAAlqF,GAAAoC,IAAAkoF,IAKpB,SAAAC,GAAAplF,EAAAkM,GACA,OAAAlM,EAAAirD,IAAA/+C,EAAA++C,IAGA,SAAAo6B,GAAAH,GACA,IAAAI,EAAA,GACAL,GAAAC,EAAA,SAAAK,EAAAt6B,EAAAvsD,EAAA8mF,EAAAlnB,GACAinB,GACAD,EAAArhF,KAAA,CAAmBnF,IAAAmsD,EAAA,IAAAvsD,EAAAusD,MAAAqT,WAGnBgnB,EAAAz0E,KAAAu0E,IAAAjxE,UACA,QAAAtZ,EAAA,EAAAkL,EAAAu/E,EAAArjF,OAAsCpH,EAAAkL,EAASlL,WAC/CyqF,EAAAzqF,GAAAowD,IAEA,OAAAq6B,EAMA,SAAAG,GAAAjB,GAIA,IAHA,IAAAkB,EAAAnB,GAAAC,GACAc,EAAAD,GAAAb,EAAAK,UACAc,EAAA,GACA9qF,EAAA,EAAAkL,EAAAu/E,EAAArjF,OAAsCpH,EAAAkL,EAASlL,IAAA,CAC/C,IAAA+qF,EAAAN,EAAAzqF,GACA+qF,EAAA9mF,MAAA4mF,GAAAE,EAAAtnB,KAAA0mB,SACAW,EAAA1hF,KAAA2hF,EAAA9mF,KAGA,OAAA6mF,EAkBA,SAAAE,GAAAX,GAIA,IAHA,IAEAhS,EAFA35C,EAAA,GACAqrD,EAAAM,EAAAtkF,QAEAsyE,EAAA0R,EAAAj+E,OAAA,CACA,IAAAskD,EAAAioB,EAAAjoB,IACA65B,EAAA5R,EAAAe,IACAv1E,EAAAomF,EAAA,GACAxmB,EAAAwmB,EAAA,GACAC,EAAAD,EAAA,GACAS,EAAA,IAAAR,EAAA9iF,OAEA6jF,EAAA5S,EAAA4S,QAAA5S,EAAA4S,QAAAllF,QAAA,GACAklF,EAAA7hF,KAAA,CAAkBvF,KAAA4/D,SAClBinB,GACAhsD,EAAAt1B,KAAA,CAAkBgnD,MAAA,EAAA66B,EAAA7jF,OAAAgyE,IAAA6R,IAElB,QAAAjrF,EAAA,EAAAkL,EAAAg/E,EAAA9iF,OAA0CpH,EAAAkL,EAASlL,IACnD+pF,EAAA3gF,KAAA,CAAoBgnD,MAAA,EAAAgpB,IAAA8Q,EAAAlqF,GAAAirF,YAGpB,OAAAvsD,EAAAplB,UAKA,SAAA4xE,GAAA/lF,EAAAkM,GACA,OAAAlM,EAAAirD,IAAA/+C,EAAA++C,IAoBA,SAAA+6B,GAAAjkF,EAAAkkF,EAAA7jE,GACA,IAAAk9C,EAjBA,SAAAv9D,EAAAkkF,EAAA7jE,GAIA,IAHA,IAEAqjB,EAFAF,EAAA,EACAC,EAAAzjC,EAAAE,OAEAsjC,EAAAC,GAEApjB,EAAArgB,EADA0jC,EAAAF,EAAAC,IAAA,GACAygD,GAAA,EACA1gD,EAAAE,EAAA,EAEAD,EAAAC,EAGA,OAAAF,EAKA2gD,CAAAnkF,EAAAkkF,EAAA7jE,GACArgB,EAAAqxB,OAAAksC,EAAA,EAAA2mB,GAMA,SAAAE,GAAAroD,EAAAsoD,GAGA,IAFA,IAAAjmE,EACAylE,EACA/qF,EAAAurF,EAAArgF,EAAA+3B,EAAA77B,OAA6CpH,EAAAkL,EAASlL,IAAA,CACtD,IAAAq4E,EAAAp1C,EAAAjjC,GACAwrF,EAAA,CAAAnT,EAAAx0E,GAAAw0E,EAAA5U,KAAA,IACAsnB,GACAA,EAAA,GAAA3hF,KAAAoiF,GACAT,EAAAS,GAEAlmE,EAAAylE,EAAAS,EAGA,OAAAlmE,EAIA,SAAAmmE,GAAAtmF,EAAAkM,GACA,OAAAlM,EAAA,GAAAkM,EAAA,QAKA,SAAAq6E,GAAAC,EAAAC,GAGA,IAFA,IAAA56E,EAAA,EAAgB66E,MAAAF,EAAAG,MAAAF,IAChBd,GAAA,EACA95E,EAAA5J,OAAA,IACA,IAAAgkF,EAAAp6E,EAAAlF,MACA+/E,EAAAT,EAAAS,MACAC,EAAAV,EAAAU,OAEAD,EAAA,GAAArO,QAAAsO,EAAA,GAAAtO,UACAqO,EAAA,GAAArO,OACA,cAAAqO,EAAA,GAAArO,QACA,cAAAsO,EAAA,GAAAtO,OAAA,uBAGA,QAAAx9E,EAAA,EAAmBA,EAAA8rF,EAAA,GAAA1kF,OAAqBpH,IACxC,GAAA6rF,EAAA,OAOA,IADA,IAAAE,GAAA,EACA3sB,EAAA,EAAqBA,EAAAysB,EAAA,GAAAzkF,OAAqBg4D,IAC1CysB,EAAA,GAAAzsB,GAAA,KAAA0sB,EAAA,GAAA9rF,GAAA,KACAgR,EAAA5H,KAAA,CAAsByiF,QAAA,GAAAzsB,GAAA0sB,QAAA,GAAA9rF,KACtB+rF,GAAA,GAGAA,IACAjB,EAAA,aACAK,GAAAU,EAAA,GAAAC,EAAA,GAAA9rF,GAAAyrF,UAdAX,EAAA,WACAe,EAAA,MAAAC,EAAA,GAAA9rF,GAiBA,OAAU8qF,YAAAb,KAAA0B,GAGV,SAAAK,GAAA/B,EAAAhnD,EAAAgpD,GACA,IAGAv5E,EAHAw5E,EAAA,GACApB,GAAA,EACAiB,GAAA,EAGA,IAAA9B,EAAA7iF,OACA,OAAY6iF,KAAA,CAAAhnD,GAAA6nD,UAAA,YAGZ,QAAA9qF,EAAA,EAAAkL,EAAA++E,EAAA7iF,OAAoCpH,EAAAkL,EAASlL,IAAA,CAC7C,IAAAmsF,EAAAlC,EAAAjqF,GACA,GAAAmsF,EAAA/7B,MAAAntB,EAAAmtB,KAAA+7B,EAAA/S,IAAA,KAAAn2C,EAAAm2C,IAAA,GAGA1mE,EAAAg5E,GAAAS,EAAA/S,IAAAn2C,EAAAm2C,KACA8S,EAAA9iF,KAAA,CAAoBgnD,IAAA+7B,EAAA/7B,IAAAgpB,IAAA1mE,EAAAu3E,OACpBa,KAAAp4E,EAAAo4E,UACAiB,GAAA,OACK,QAAAE,EAAA,CAML,IAAAG,EAAAD,EAAA/7B,IAAAntB,EAAAmtB,IAAA+7B,EAAAlpD,EACAopD,EAAAF,EAAA/7B,IAAAntB,EAAAmtB,IAAAntB,EAAAkpD,EACAG,EAAAD,EAAAj8B,IAAAg8B,EAAAh8B,IAEAm8B,EAAA,GAEAC,EAAA,GAEA,IADAA,EAAApjF,KAAA,CAAkBgwE,IAAAgT,EAAAhT,IAAAkT,OAAA7nD,OAAA,KAAAgoD,UAAA,OAClBD,EAAAplF,OAAA,IACA,IAAAgkF,EAAAoB,EAAA1gF,MACA,OAAAs/E,EAAAkB,KAOA,IADA,IAAAI,EAAAtB,EAAAhS,IAAA,GACAha,EAAA,EAAAutB,EAAAD,EAAAtlF,OAAsDg4D,EAAAutB,EAAiBvtB,IACvEotB,EAAApjF,KAAA,CACAgwE,IAAAsT,EAAAttB,GACAktB,KAAAlB,EAAAkB,KAAA,EACA7nD,OAAA2mD,EAAAhS,IACAqT,UAAArtB,SAXAgsB,EAAAhS,IAAA,KAAAiT,EAAAjT,IAAA,IACAmT,EAAAnjF,KAAAgiF,GAeA,IAAAnyB,EAAAszB,EAAA,GAEAtzB,GAGAvmD,EAAAg5E,GAAAzyB,EAAAmgB,IAAAiT,EAAAjT,KACAngB,EAAAx0B,OAAA,GAAAw0B,EAAAwzB,WAAA/5E,EAAAu3E,KACAiC,EAAA9iF,KAAA,CAAsBgnD,IAAAg8B,EAAAh8B,IAAAgpB,IAAAgT,EAAAhT,MACtB0R,KAAAp4E,EAAAo4E,UACAiB,GAAA,GANAG,EAAA9iF,KAAA+iF,QASAD,EAAA9iF,KAAA+iF,GAWA,OANAJ,GACAG,EAAA9iF,KAAA65B,GAGAipD,EAAAl2E,KAAAk1E,IAEA,CACAjB,KAAAiC,EACApB,aAAA,iBA8DA,SAAA7vC,GAAAgvC,EAAAhnD,EAAAR,GACA,IAAAmqD,EAAAZ,GAAA/B,EAAAhnD,GACA4pD,EA3DA,SAAA5C,EAAAxnD,GAMA,IAJA,IACAqqD,EAEAn6E,EAHA+rB,EAAAssD,GAAAf,GAIAjqF,EAAA,EAAAkL,EAAAwzB,EAAAt3B,OAAqCpH,EAAAkL,EAASlL,IAAA,CAG9C,IAEAq4E,EAFAp1C,EAAAvE,EAAA1+B,GACA6sF,EAAA5pD,EAAAm2C,IAEA,GAAAyT,EAAAzlF,OAAAq7B,EAAA,CAEAqqD,IACAA,EAAA,IAEA,IAAAvB,EAAAsB,EAAAzlF,OAAAq7B,EACA41C,EAAA,CACAjoB,IAAAntB,EAAAmtB,IAAAm7B,EACAnS,IAAAkS,GAAAuB,EAAAtB,IAGA,QAAAxpF,EAAA,EAAqBA,EAAAwpF,EAAgBxpF,IAAA,CACrC,IAAAkC,EAAAg/B,EAAAmtB,IAAAruD,EAAA,IAAA8qF,EAAA9qF,GAAA8B,GACAipF,EAAA7oF,IAAA,QAGAo0E,EAAA,CACAjoB,IAAAntB,EAAAmtB,IACAgpB,IAAAkS,GAAAuB,EAAA,IAOAl6E,EADAA,EACAq5E,GAAAr5E,EAAA0lE,GAAA,GAAA4R,KAEA,CAAA5R,GAYA,OAPAyU,GACA1C,GAAAz3E,EAAA,SAAA+3E,EAAAt6B,EAAA28B,UAEAD,EAAA18B,EAAA,IAAA28B,KAIA,CACA9C,KAAAt3E,EACA03E,KAAAyC,EAAApsF,OAAAwL,KAAA4gF,GAAA,IAMAE,CAAAJ,EAAA3C,KAAAxnD,GACA,OACAwnD,KAAA4C,EAAA5C,KACA6C,YAAAD,EAAAxC,KACAS,UAAA8B,EAAA9B,WAwBA,SAAAmC,GAAA5U,GACA,OAAAA,EAAAe,IAMA,SAAA8T,GAAAvD,EAAA1lF,GACAA,IACAA,EAAAylF,GAAAC,IAMA,IAJA,IAGAM,EAHApmF,EAAAI,EAAAgjD,UAAAhjD,EAAAgV,QAAA,QACA8wE,EAAAJ,EAAAK,SAAA3wE,IAAA4zE,IAGAhD,EAAAF,EAAAj+E,OAAA,CACA,GAAAm+E,EAAA,KAAApmF,EACA,QAAAomF,EAAA,GAAAE,QAEAJ,IAAAhiF,OAAAkiF,EAAA,KAIA,SAAAkD,GAAAtpF,GACA,gBAAA2J,KAAA3J,GAkDA,SAAAupF,GAAAvM,EAAApd,EAAA70B,GACE6vC,EAAA,aAAYt+E,KAAA6D,MACd,IAAAK,EAAAL,KACAA,KAAA68E,KAEA,IAAAwM,GADA5pB,IAAAxuB,EAAAwuB,GAAA,IACA4pB,SAAA9hF,EAAA,SAAA5E,EAAAg5E,GA9wBA,IAAA2N,EAAAhrF,EA+wBAqE,GA/wBArE,EAgxBA,SA/wBA,kBADAgrF,EAgxBAjpF,GA/wBAipF,EAAAhjF,cAAAhI,GACiCm8E,EAAA,aAAYn0E,cAAAgjF,EAAAhrF,IA8wB7C,GACA+B,EAAA6E,KAAA,QAAAvC,IAGAtC,EAAA6E,KAAA,WAAAy2E,GAEAt7E,EAAA4H,qBACA40E,EAAA92E,eAAA,YAAAwjF,KAQA,SAAAA,IACAlpF,EAAAs0C,SAPA/J,IACAvqC,EAAAgH,GAAA,oBAAAs0E,GACA/wC,EAAA,KAAA+wC,KAEAt7E,EAAAgH,GAAA,QAAAujC,IAKAiyC,EAAAt1E,KAAA,YAAAgiF,GAEA9pB,EAAAyf,SAAA,SAAAzgB,EAAA30D,EAAA0/E,GAEAnpF,EAAAopF,aAtCA,SAAAppF,EAAAo+D,EAAA30D,EAAA0/E,GAEA,IACAnpF,EAAA6E,KAAA,SAAAu5D,EAAA30D,EAAA0/E,GACG,MAAAhpF,GACH89E,EAAA,4CAAA99E,IAoCAkpF,CAAArpF,EAAAo+D,EAAA30D,EAAA0/E,IAGA,IAAA1lB,EAAA,IAAA3tC,QAAA,SAAAulD,EAAAz/B,GACAwjB,EAAA4pB,SAAA,SAAA1mF,EAAA+L,GACA/L,EACAs5C,EAAAt5C,GAEA+4E,EAAAhtE,MAIArO,EAAAkH,KAAA,oBACAs1E,EAAA92E,eAAA,YAAAwjF,GACA9pB,EAAA4pB,SAAA,MAAyB7P,OAAA,gBAEzBx5E,KAAAivD,KAAA6U,EAAA7U,KAAAzxD,KAAAsmE,GACA9jE,KAAA,MAAA8jE,EAAA,MAAAtmE,KAAAsmE,GACA9jE,KAAAivD,KAAA,SAAAtgD,GACA06E,EAAA,KAAA16E,IACG06E,GAIHxM,EAAAT,UAAAC,QAWAh8E,EAAAspF,gBAAAlqB,GAVAod,EAAAT,UAAAE,QAAA,SAAAC,GACAA,EACA9c,EAAA4pB,SAAA9M,GACOl8E,EAAAopF,YACPppF,EAAA6E,KAAA,UAEA7E,EAAAspF,gBAAAlqB,KAaA,SAAAmqB,GAAA5R,EAAA2N,EAAAlmB,GACA,IAAAoqB,EAAA,EAAqB5pF,IAAA+3E,EAAAqB,OACrB,aAAA5Z,EAAAlV,QACAs/B,EAAArD,GAAAb,EAAAK,UACA3wE,IAAA,SAAAqlD,GAAuB,OAASz6D,IAAAy6D,EAAAz6D,QAEhC,IAAAw+D,EAAA,CACA5+D,GAAA8lF,EAAA9lF,GACAupD,QAAAygC,EACA7R,OAYA,OATAkR,GAAAvD,EAAA3N,EAAAqB,QACA5a,EAAA0nB,SAAA,GAEA1mB,EAAAqnB,YACAroB,EAAAuZ,IAAA8R,WAAAlD,GAAAjB,GACAlnB,EAAAuZ,IAAA8R,WAAA1mF,eACAq7D,EAAAuZ,IAAA8R,YAGArrB,EAyFA,SAAAsrB,GAAAzxB,EAAA0xB,GACA,OAAA1xB,EAAA0xB,GAAA,EAAA1xB,EAAA0xB,EAAA,IAKA,SAAAC,GAAAr/C,EAAA6yC,GACA,gBAAA96E,EAAAusD,GACAvsD,GAAAusD,EAAA,IAAAA,EAAA,GAAApsD,QACAH,KAAAusD,EAAA,IACAuuB,QACA7yC,EAAAjoC,IAEAioC,EAAA,KAAAskB,EAAA9rD,OAAA8rD,EAAA,GAAAA,IAwBA,SAAAg7B,GAAA/oF,EAAAkM,GACA,IAAA88E,EAAAJ,GAAA5oF,EAAAi4E,IAAA/rE,EAAA+rE,KACA,WAAA+Q,EACAA,EAIAJ,GAFA5oF,EAAAipF,WAAAjpF,EAAAipF,WAAA31E,MAAA,EACApH,EAAA+8E,WAAA/8E,EAAA+8E,WAAA31E,MAAA,GAmFA,SAAA41E,KAIA,QAAAvsF,KAHE28E,EAAA,aAAYt+E,KAAA6D,MAGdqqF,GAAAzsF,UACA,mBAAAoC,KAAAlC,KACAkC,KAAAlC,GAAAkC,KAAAlC,GAAAN,KAAAwC,OA6xBA,SAAAsqF,KACAtqF,KAAAq8E,SAAA,EACAr8E,KAAAu8E,QAAA,EACAv8E,KAAAgN,MAAA,GA2GA,SAAAmqE,GAAA56E,EAAAkjE,GAGA,KAAAz/D,gBAAAm3E,IACA,WAAAA,GAAA56E,EAAAkjE,GAGA,IAAAp/D,EAAAL,KAkBA,GAjBAy/D,KAAA,GAEAljE,GAAA,iBAAAA,IAEAA,GADAkjE,EAAAljE,GACAA,YACAkjE,EAAAljE,WAGAgD,IAAAkgE,EAAA8lB,qBACA9lB,EAAA8lB,oBAAA,GAGAvlF,KAAAuqF,OAAA9qB,EAAAxuB,EAAAwuB,GAEAp/D,EAAAmqF,gBAAA/qB,EAAA+qB,gBACAnqF,EAAAgjD,OAAA8zB,GAAA9zB,OAEA,iBAAA9mD,EACA,UAAAkG,MAAA,2BAGA,IACAgoF,EAvGA,SAAAluF,EAAAkjE,GACA,IAAAjtC,EAAAj2B,EAAAi2B,MAAA,sBACA,GAAAA,EAEA,OACAj2B,KAAA,SAAAiN,KAAAgpB,EAAA,IAAAA,EAAA,SAAAA,EAAA,GAAAA,EAAA,GACAk4D,QAAAl4D,EAAA,IAIA,IAAAm4D,EAAAxT,GAAAwT,SACAC,EAAAzT,GAAAyT,kBACAvnC,EAAA8zB,GAAA9zB,OACAwnC,EAAAprB,EAAAirB,QAEA,IAAAG,EACA,QAAA7uF,EAAA,EAAmBA,EAAA4uF,EAAAxnF,QAInB,SAHAynF,EAAAD,EAAA5uF,KAGA,WAAA2uF,GACAxM,KAAAF,aAAA,oBAAA56B,EAAA9mD,KALiDP,EAOjDsiF,EAAA,iCAAA/hF,EAAA,8EAQA,IAAAmuF,EAAAC,EAAAE,GAMA,OACAtuF,KAJAmuF,GAAA,eAAAA,IACAA,EAAAI,WAGAvuF,EAAA8mD,EAAA9mD,EACAmuF,QAAAG,GAgEAE,EADAtrB,EAAApc,QAAA,IAAA9mD,EACAkjE,GASA,GAPAA,EAAAljE,KAAAkuF,EAAAluF,KACAkjE,EAAAirB,QAAAjrB,EAAAirB,SAAAD,EAAAC,QAEArqF,EAAA9D,OACA8D,EAAA2qF,SAAAvrB,EAAAirB,QACAvT,GAAAjyE,KAAA,sCAAAu6D,EAAAirB,WAEAvT,GAAAwT,SAAAlrB,EAAAirB,WACAvT,GAAAwT,SAAAlrB,EAAAirB,SAAAO,QACA,UAAAxoF,MAAA,oBAAAg9D,EAAAirB,SAGAL,GAAAluF,KAAAkE,GACAA,EAAA+7E,UAAA,IAAAkO,GAEAjqF,EAAAqqF,QAAAjrB,EAAAirB,QAEAvT,GAAAwT,SAAAlrB,EAAAirB,SAAAvuF,KAAAkE,EAAAo/D,EAAA,SAAA98D,GACA,GAAAA,EACA,OAAAtC,EAAA+7E,UAAAjN,KAAAxsE,IAvEA,SAAAtC,GAEA,SAAA6qF,EAAAC,GACA9qF,EAAA0F,eAAA,SAAAqlF,GACAD,GACA9qF,EAAA2K,YAAA9F,KAAA,YAAA7E,EAAA9D,MAIA,SAAA6uF,IACA/qF,EAAA0F,eAAA,YAAAmlF,GACA7qF,EAAA2K,YAAA9F,KAAA,QAAA7E,GAGAA,EAAAkH,KAAA,YAAA2jF,GACA7qF,EAAAkH,KAAA,SAAA6jF,GACA/qF,EAAA2K,YAAA9F,KAAA,MAAA7E,GAyDAgrF,CAAAhrF,GAEAA,EAAA6E,KAAA,UAAA7E,GACA82E,GAAAjyE,KAAA,UAAA7E,EAAA9D,MACA8D,EAAA+7E,UAAAkP,MAAAjrF,KA7wCAm6E,IAAQ4O,GAAY3O,EAAA,cAiFpB2O,GAAAxrF,UAAA+2C,OAAA,WACA30C,KAAAypF,aAAA,EACAzpF,KAAA68E,GAAAT,UAAAC,SACAr8E,KAAAkF,KAAA,WA2BAkkF,GAAAxrF,UAAA+rF,gBAAA,SAAAlqB,GACA,IAAA70B,EAAA60B,EAAA4pB,SACAhpF,EAAAL,KAGAm3E,GAAAoU,qBACApU,GAAAoU,qBAAAh4E,SAAAksD,EAAA,SAAA98D,GACA,GAAAA,EACA,OAAAioC,EAAAjoC,GAEAtC,EAAAmrF,UAAA/rB,KAGAp/D,EAAAmrF,UAAA/rB,IAIA2pB,GAAAxrF,UAAA4tF,UAAA,SAAA/rB,GACA,IAAAp/D,EAAAL,KACA4qC,EAAA60B,EAAA4pB,SAcA,GAXA,SADA5pB,EAAAxuB,EAAAwuB,OACA,eAAAA,KACAA,EAAAgsB,WAAAhsB,EAAAisB,MAEAjsB,EAAAmqB,iBAEA,WAAAnqB,EAAAuf,QACAvf,EAAAuf,MAAA,OAEAvf,EAAAuf,QACAvf,EAAAuf,MAAA,GAEA,QAAAvf,EAAAuf,MAAA,CAcA,GAAA7H,GAAAoU,sBAEA,GADApU,GAAAoU,qBAAAI,UAAAlsB,GACA0X,GAAAoU,qBAAAK,aAAA5rF,KAAAy/D,GACA,OAAA0X,GAAAoU,qBAAA32E,OAAA5U,KAAAy/D,OAGA,uCAAAzqD,QAAA,SAAAzX,GACAA,KAAAkiE,GACA6e,EAAA,OACA,QAAA/gF,EAAA,wKAQA,eAAAkiE,IACAA,EAAAosB,YAAA,GAIApsB,EAAAhjB,MAAA,IAAAgjB,EAAAhjB,MAAA,EAAAgjB,EAAAhjB,MACAgjB,EAAA4pB,SAAAz+C,EACA,IAAAkhD,EAAA9rF,KAAA68E,GAAAkP,SAAAtsB,GAEA,GAAAqsB,GAAA,mBAAAA,EAAAn3C,OAAA,CACA,IAAAA,EAAAt0C,EAAAs0C,OACAt0C,EAAAs0C,OAAkB2lC,IAAY,SAAA32E,GAC9BmoF,EAAAn3C,SACAA,EAAAvyC,MAAApC,KAAA2D,WA3CA3D,KAAA68E,GAAAtH,OAAAtmB,KAAA,SAAAsmB,GAEAl1E,EAAAopF,YACA7+C,EAAA,MAAwB4uC,OAAA,eAGxB/Z,EAAAuf,MAAAzJ,EAAAyW,WACA3rF,EAAAmrF,UAAA/rB,KACK70B,IAwKL4vC,IAAQ6P,GAAkB5P,EAAA,cAa1B4P,GAAAzsF,UAAAquF,KACApQ,EAAA,gBAAA7D,EAAAvY,EAAA70B,GAKA,GAJA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAEA,iBAAAuY,GAAAh2E,MAAAq1B,QAAA2gD,GACA,OAAAptC,EAAA21C,GAAAJ,KAEAngF,KAAAksF,SAAA,CAAiBnP,KAAA,CAAA/E,IAAYvY,EAAAwqB,GAAAr/C,EAAAotC,EAAAoB,QAG7BiR,GAAAzsF,UAAAu7E,IAAA0C,EAAA,eAAA7D,EAAAvY,EAAA+D,GAKA,GAJA,mBAAA/D,IACA+D,EAAA/D,EACAA,EAAA,IAEA,iBAAAuY,GAAAh2E,MAAAq1B,QAAA2gD,GACA,OAAAxU,EAAA+c,GAAAJ,KAGA,GADAkB,GAAArJ,EAAAoB,KACA+P,GAAAnR,EAAAoB,MAAA,mBAAAp5E,KAAAmsF,UACA,OAAAnU,EAAAoU,SACApsF,KAAAqsF,aAAArU,EAAAxU,GAEAxjE,KAAAmsF,UAAAnU,EAAAxU,GAGA,IAYAie,EACA6K,EAGAC,EACAC,EAjBAnsF,EAAAL,KA0BA,SAAAysF,EAAA/hF,GACA,mBAAArK,EAAAqsF,OAAA,IAAAjtB,EAAAktB,UACAtsF,EAAAqsF,KAAA1U,EAAAvY,EAAA/0D,GAEArK,EAAA6rF,SAAA,CAAqBnP,KAAA,CAAA/E,IAAYvY,EAAAwqB,GAAAv/E,EAAAstE,EAAAoB,MA7BjC3Z,EAAAmtB,OAAA5U,EAAAqB,MAWAoI,EAAAzJ,EAAAqB,KAAA5wE,MAAA,KACA6jF,EAAA7K,EAAA,GAGA8K,EAFAprE,SAAAsgE,EAAA,OAEA,EACA+K,EAAAvsF,KAEA+3E,EAAAoS,WAAA,CACA31E,MAAA83E,EACAnX,IAAA,CAAAoX,EAAAF,IAEAtU,EAAAqB,KAAAkT,EAAA,IAAAC,EACA/sB,EAAAktB,WAAA,EArBAF,EAAA,SAAA9pF,GACA,IAAAgM,EAAAhM,EAAA,MAAiCQ,IAAA,EAAAtD,GAAAm4E,EAAAoB,IAAAn5E,IAAA+3E,EAAAqB,MACjC7V,EAAA7gE,EAAAgM,MAGA89E,EAAAjpB,KA2BA6mB,GAAAzsF,UAAAivF,cACAhR,EAAA,yBAAA4B,EAAAqP,EAAAC,EACAjJ,EAAAxlF,GACA,IAAA0uF,EAAAhtF,KAiBA,SAAAitF,EAAAjV,GACA,IAAAkV,EAAA,SAAAlV,EAAA72D,SAAA62D,EAAAqB,KAAA,MAOA,OANArB,EAAAkJ,aAAAlJ,EAAAkJ,cAAA,GACAlJ,EAAAkJ,aAAA4L,GAAA,CACAK,aAAA7uF,EACAwB,KAAAgkF,EACAsJ,SAAAF,GAEAF,EAAA7T,IAAAnB,GAGA,MA3BA,mBAAA15E,IACAA,EAAAwlF,EACAA,EAAAiJ,EACAA,EAAA,WAIA,IAAAzuF,IACAA,EAAAwlF,EACAA,EAAAiJ,EACAA,EAAA,MAEAzuF,GACAggF,EAAA,oBAAAwO,EAAA,cAAArP,EAAA,2BAcAuP,EAAAnwF,IAAA4gF,GAAAxuB,KAAA,SAAA+oB,GACA,GAAAA,EAAAqB,OAAA0T,EACA,MAAAxM,GAAAb,GAGA,OAAAuN,EAAAjV,IACG,SAAAr1E,GAGH,GAAAA,EAAA4gE,SAAAkc,EAAA78E,QACA,OAAAqqF,EAAA,CAA+B7T,IAAAqE,IAE/B,MAAA96E,MAKA0nF,GAAAzsF,UAAAyvF,iBACAxR,EAAA,4BAAA4B,EAAAqP,EAAAC,EACAniD,GACA,IAAAvqC,EAAAL,KACAK,EAAAxD,IAAA4gF,EAAA,SAAA96E,EAAAutD,GAEA,GAAAvtD,EACAioC,EAAAjoC,QAGA,GAAAutD,EAAAmpB,OAAA0T,EAAA,CAKA,IAAA78B,EAAAgxB,aACA,OAAAt2C,WAEAslB,EAAAgxB,aAAA4L,GACA,IAAApwF,OAAAwL,KAAAgoD,EAAAgxB,cAAA99E,eACA8sD,EAAAgxB,aAEA7gF,EAAA84E,IAAAjpB,EAAAtlB,QAXAA,EAAA21C,GAAAb,QAeA2K,GAAAzsF,UAAAs+C,OACA2/B,EAAA,kBAAAyR,EAAAC,EAAA9tB,EAAA70B,GACA,IAAAotC,EACA,iBAAAuV,GAEAvV,EAAA,CACAoB,IAAAkU,EACAjU,KAAAkU,GAEA,mBAAA9tB,IACA70B,EAAA60B,EACAA,EAAA,MAIAuY,EAAAsV,EACA,mBAAAC,GACA3iD,EAAA2iD,EACA9tB,EAAA,KAEA70B,EAAA60B,EACAA,EAAA8tB,KAGA9tB,KAAA,IACA+tB,YAAA,EACA,IAAA/K,EAAA,CAAgBrJ,IAAApB,EAAAoB,IAAAC,KAAArB,EAAAqB,MAAA5Z,EAAAx/D,IAChBmsF,UAAA,GACA,GAAAjD,GAAA1G,EAAArJ,MAAA,mBAAAp5E,KAAAqsF,aACA,OAAArsF,KAAAqsF,aAAArU,EAAAptC,GAEA5qC,KAAAksF,SAAA,CAAiBnP,KAAA,CAAA0F,IAAehjB,EAAAwqB,GAAAr/C,EAAA63C,EAAArJ,QAGhCiR,GAAAzsF,UAAA6vF,SACA5R,EAAA,oBAAA8E,EAAAlhB,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAEA,IAAA2V,EAAA14E,OAAAwL,KAAAy4E,GAEA,IAAAvL,EAAAhyE,OACA,OAAAwnC,EAAA,SAGA,IAAAnlC,EAAA,EACAioF,EAAA,IAAA9T,EAEA,SAAA+T,EAAA9tF,EAAA+tF,GACAF,EAAArlF,IAAAxI,IACA6tF,EAAAlnF,IAAA3G,EAAA,CAAuB6tF,QAAA,KAEvBA,EAAA7wF,IAAAgD,GAAA6tF,QAAAtoF,KAAAwoF,GA4BAxY,EAAA//D,IAAA,SAAAxV,GACAG,KAAA6tF,iBAAAhuF,EAAA,SAAA8C,EAAAqjF,GACA,GAAArjF,GAAA,MAAAA,EAAA62E,QAAA,YAAA72E,EAAAC,QACA8qF,EAAAlnF,IAAA3G,EAAA,CAAyB6tF,QAAA/M,EAAA9gF,SAClB,IAAA8C,EAEP,OAAAioC,EAAAjoC,IA/BA,SAAA9C,EAAAmmF,GAEA,IAAA8H,EAAAnN,EAAA9gF,GAAAkC,MAAA,GACAqkF,GAAAJ,EAAA,SAAAU,EAAAt6B,EAAA28B,EAAA3qF,EACAqhE,GACA,IAAAstB,EAAA3gC,EAAA,IAAA28B,EACAtoB,EAAAqtB,EAAA74E,QAAA83E,IACA,IAAAtsB,IAIAqtB,EAAAv5D,OAAAksC,EAAA,GAEA,cAAAhB,EAAA+Z,QACAmU,EAAA9tF,EAAAktF,MAMAe,EAAA94E,QAAA,SAAA+3E,GACAY,EAAA9tF,EAAAktF,KAYAgB,CAAAluF,EAAAmmF,GAGA,KAAAvgF,IAAA2vE,EAAAhyE,OAAA,CAEA,IAAA4qF,EAAA,GAIA,OAHAN,EAAA14E,QAAA,SAAA/X,EAAAM,GACAywF,EAAAzwF,GAAAN,IAEA2tC,EAAA,KAAAojD,OAGGhuF,QAUHqqF,GAAAzsF,UAAAg/E,QACAf,EAAA,mBAAApc,EAAA70B,GACAgyC,EAAA58E,KAAAy/D,EAAA70B,KAMAy/C,GAAAzsF,UAAAqwF,gBACApS,EAAA,2BAAA4B,EAAAyQ,EAAAtjD,GACA,IAAAvqC,EAAAL,KACAA,KAAA6tF,iBAAApQ,EAAA,SAAA96E,EAAAwrF,GAEA,GAAAxrF,EACA,OAAAioC,EAAAjoC,GAEA,IAAAyrF,EAhWA,SAAA/H,GACA,IAAA+H,EAAA,GACAC,EAAA,GAoBA,OAnBAjI,GAAAC,EAAA,SAAAK,EAAAt6B,EAAAvsD,EAAAyuF,GACA,IAAAvB,EAAA3gC,EAAA,IAAAvsD,EAOA,OANA6mF,IACA0H,EAAArB,GAAA,QAEAxtF,IAAA+uF,GACAD,EAAAjpF,KAAA,CAAkB8S,KAAAo2E,EAAAxyB,GAAAixB,IAElBA,IAGAsB,EAAA/4E,UACA+4E,EAAAr5E,QAAA,SAAAu5E,QACAhvF,IAAA6uF,EAAAG,EAAAr2E,MACAk2E,EAAAG,EAAAr2E,MAAA,EAAAk2E,EAAAG,EAAAzyB,IAEAsyB,EAAAG,EAAAr2E,MAAA9X,KAAAY,IAAAotF,EAAAG,EAAAr2E,MAAA,EAAAk2E,EAAAG,EAAAzyB,OAGAsyB,EA0UAI,CAAAL,GACAM,EAAA,GACApI,EAAA,GACA3pF,OAAAwL,KAAAkmF,GAAAp5E,QAAA,SAAA+3E,GACAqB,EAAArB,GAAAmB,GACAO,EAAArpF,KAAA2nF,KAIA3G,GAAA+H,EAAA,SAAAzH,EAAAt6B,EAAA28B,EAAA3qF,EAAAqhE,GACA,IAAAstB,EAAA3gC,EAAA,IAAA28B,EACA,cAAAtpB,EAAA+Z,SAAA,IAAAiV,EAAAx5E,QAAA83E,IACA1G,EAAAjhF,KAAA2nF,KAGA1sF,EAAAquF,cAAAjR,EAAA4I,EAAAz7C,OAMAy/C,GAAAzsF,UAAAs8C,QACA2hC,EAAA,mBAAApc,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAIAA,KAAA,GADAz/D,KAGA2uF,iBAHA3uF,KAGA2uF,kBAAA,GAHA3uF,KAIA2uF,iBAAAvpF,KAAA,CAA8Bq6D,OAAA70B,aAC9B,IALA5qC,KAKA2uF,iBAAAvrF,QAzVA,SAAAwrF,EAAAvuF,GACA,IAAA6M,EAAA7M,EAAAsuF,iBAAA,GACAlvB,EAAAvyD,EAAAuyD,KACA70B,EAAA19B,EAAA09B,SACAvqC,EAAAxD,IAAA,qBAAAwzE,MAAA,WACA,WACGphB,KAAA,SAAA+oB,GACHA,KAAA6W,WACApvB,EAAAovB,SAAA7W,EAAA6W,UAEAxuF,EAAAyuF,SAAArvB,EAAA,SAAA98D,EAAA+L,GAEA/L,EACAioC,EAAAjoC,GAEAioC,EAAA,KAAAl8B,GAEMorE,IAAS,WACfz5E,EAAAsuF,iBAAA/mF,QACAvH,EAAAsuF,iBAAAvrF,QACAwrF,EAAAvuF,SAsUAuuF,CANA5uF,QASAqqF,GAAAzsF,UAAAkxF,SAAA,SAAArvB,EAAA70B,GACA,IAAAvqC,EAAAL,KACA8+E,EAAA,CACAiQ,aAAA,EACAF,SAAApvB,EAAAovB,UAAA,GAEAG,EAAA,GAmBA3uF,EAAA+oD,QAAA01B,GACAz3E,GAAA,SAlBA,SAAAqwE,GACAsX,EAAA5pF,KAAA/E,EAAA4tF,gBAAAvW,EAAA73E,GAAA,MAkBAwH,GAAA,WAhBA,SAAAs0E,GACA,IAAA6N,EAAA7N,EAAAkT,SACA14D,QAAAq6C,IAAAwe,GAAA//B,KAAA,WACA,OAAAqzB,GAAAjiF,EAAA,6BAAA23E,GACA,QAAAA,EAAA6W,UAAA7W,EAAA6W,SAAArF,KACAxR,EAAA6W,SAAArF,EACAxR,OAIK/oB,KAAA,WACLrkB,EAAA,MAAsBznC,IAAA,MACjBktE,MAAAzlC,KAKLvjC,GAAA,QAAAujC,IAKAy/C,GAAAzsF,UAAAf,IAAAg/E,EAAA,eAAAh8E,EAAA4/D,EAAA+D,GAKA,GAJA,mBAAA/D,IACA+D,EAAA/D,EACAA,EAAA,IAEA,iBAAA5/D,EACA,OAAA2jE,EAAA+c,GAAAZ,IAEA,GAAAwJ,GAAAtpF,IAAA,mBAAAG,KAAAivF,UACA,OAAAjvF,KAAAivF,UAAApvF,EAAA2jE,GAEA,IAAAijB,EAAA,GAAApmF,EAAAL,KAEA,SAAAkvF,IACA,IAAAvgF,EAAA,GACAlJ,EAAAghF,EAAArjF,OAEA,IAAAqC,EACA,OAAA+9D,EAAA,KAAA70D,GAIA83E,EAAAzxE,QAAA,SAAA+xE,GACA1mF,EAAAxD,IAAAgD,EAAA,CACAI,IAAA8mF,EACAV,KAAA5mB,EAAA4mB,KACA8I,OAAA1vB,EAAA0vB,OACAnO,YAAAvhB,EAAAuhB,YACAmD,OAAA1kB,EAAA0kB,QACO,SAAAxhF,EAAAq1E,GACP,GAAAr1E,EAaAgM,EAAAvJ,KAAA,CAAuBsoF,QAAA3G,QAbvB,CAGA,IADA,IAAAhiF,EACA/I,EAAA,EAAAC,EAAA0S,EAAAvL,OAA4CpH,EAAAC,EAAOD,IACnD,GAAA2S,EAAA3S,GAAAmH,IAAAwL,EAAA3S,GAAAmH,GAAAk2E,OAAArB,EAAAqB,KAAA,CACAt0E,GAAA,EACA,MAGAA,GACA4J,EAAAvJ,KAAA,CAAyBjC,GAAA60E,MAKzBvyE,GAEA+9D,EAAA,KAAA70D,OAMA,IAAA8wD,EAAAoe,UA8BA,OAAA79E,KAAAmoD,KAAAtoD,EAAA4/D,EAAA,SAAA98D,EAAAgM,GACA,GAAAhM,EAEA,OADAA,EAAA86E,MAAA59E,EACA2jE,EAAA7gE,GAGA,IAAAq1E,EAAArpE,EAAAqpE,IACA2N,EAAAh3E,EAAAg3E,SACAvnF,EAAAuQ,EAAAvQ,IAEA,GAAAqhE,EAAAqnB,UAAA,CACA,IAAAA,EAAAF,GAAAjB,GACAmB,EAAA1jF,SACA40E,EAAA8R,WAAAhD,GAQA,GAJAoC,GAAAvD,EAAA3N,EAAAqB,QACArB,EAAAoU,UAAA,GAGA3sB,EAAA4mB,MAAA5mB,EAAA2vB,UAAA,CAQA,IAPA,IAAAC,EAAArX,EAAAqB,KAAA5wE,MAAA,KACA6mF,EAAAnuE,SAAAkuE,EAAA,OACAtG,EAAAsG,EAAA,GAEA30D,EAAAssD,GAAArB,EAAAK,UACA/mD,EAAA,KAEAjjC,EAAA,EAAqBA,EAAA0+B,EAAAt3B,OAAkBpH,IAAA,CACvC,IAAAuzF,EAAA70D,EAAA1+B,GACAwzF,EAAAD,EAAAna,IAAA//D,IAAA,SAAAqlD,GAA0D,OAAAA,EAAA76D,KAC1DoV,QAAA8zE,IACAyG,IAAAF,EAAA,IAEArwD,IAAA,IAAAuwD,KACAvwD,EAAAswD,GAKA,IAAAtwD,EAGA,OAFAt8B,EAAA,IAAAF,MAAA,qBACAg7E,MAAA59E,EACA2jE,EAAA7gE,GAGA,IAAA8sF,EAAAxwD,EAAAm2C,IAAA//D,IAAA,SAAAqlD,GAAkD,OAAAA,EAAA76D,KAClDoV,QAAA+iE,EAAAqB,KAAA5wE,MAAA,WACAinF,EAAAzwD,EAAAm2C,IAAAhyE,OAAAqsF,EAYA,GAXAxwD,EAAAm2C,IAAA7gD,OAAAk7D,EAAAC,GACAzwD,EAAAm2C,IAAA9/D,UAEAmqD,EAAA4mB,OACArO,EAAAoS,WAAA,CACA31E,MAAAwqB,EAAAmtB,IAAAntB,EAAAm2C,IAAAhyE,OAAA,EACAgyE,IAAAn2C,EAAAm2C,IAAA//D,IAAA,SAAA03E,GACA,OAAAA,EAAAltF,OAIA4/D,EAAA2vB,UAAA,CACA,IAAAhjC,EAAAntB,EAAAmtB,IAAAntB,EAAAm2C,IAAAhyE,OACA40E,EAAA2X,WAAA1wD,EAAAm2C,IAAA//D,IAAA,SAAA03E,GAEA,OACA9sF,MAFAmsD,EAEA,IAAA2gC,EAAAltF,GACA25E,OAAAuT,EAAAttB,KAAA+Z,WAMA,GAAA/Z,EAAAuhB,aAAAhJ,EAAAkJ,aAAA,CACA,IAAAF,EAAAhJ,EAAAkJ,aACAz7E,EAAA/I,OAAAwL,KAAA84E,GAAA59E,OACA,OAAAqC,EACA,OAAA+9D,EAAA,KAAAwU,GAEAt7E,OAAAwL,KAAA84E,GAAAhsE,QAAA,SAAAzX,GACAyC,KAAA4vF,eAAA5X,EAAAoB,IAAA77E,EAAAyjF,EAAAzjF,GAAA,CAIA0C,IAAA+3E,EAAAqB,KACA8K,OAAA1kB,EAAA0kB,OACA/lF,OACS,SAAAuE,EAAA7C,GACT,IAAAmhF,EAAAjJ,EAAAkJ,aAAA3jF,GACA0jF,EAAAnhF,cACAmhF,EAAAE,YACAF,EAAA79E,SACAqC,GACA+9D,EAAA,KAAAwU,MAGO33E,OACF,CACL,GAAA23E,EAAAkJ,aACA,QAAA3jF,KAAAy6E,EAAAkJ,aAEAlJ,EAAAkJ,aAAArjF,eAAAN,KACAy6E,EAAAkJ,aAAA3jF,GAAA4jF,MAAA,GAIA3d,EAAA,KAAAwU,MAvIA,WAAAvY,EAAAoe,UACA79E,KAAA6tF,iBAAAhuF,EAAA,SAAA8C,EAAAqjF,GAEA,GAAArjF,EACA,OAAA6gE,EAAA7gE,GAEA8jF,EAAAD,GAAAR,GAAA3wE,IAAA,SAAA0xE,GACA,OAAAA,EAAA9mF,MAEAivF,UAEK,CACL,IAAAltF,MAAAq1B,QAAAooC,EAAAoe,WAWA,OAAAra,EAAA+c,GAAAT,EAAA,oBAVA2G,EAAAhnB,EAAAoe,UACA,QAAA7hF,EAAA,EAAuBA,EAAAyqF,EAAArjF,OAAmBpH,IAAA,CAC1C,IAAAC,EAAAwqF,EAAAzqF,GAEA,gCAAAwN,KAAAvN,GACA,OAAAunE,EAAA+c,GAAAF,KAGA6O,OA0HA7E,GAAAzsF,UAAAiyF,cACAhU,EAAA,yBAAA4B,EAAAqP,EAAArtB,EAAA70B,GACA,IAAAvqC,EAAAL,KACAy/D,aAAAjgE,WACAorC,EAAA60B,EACAA,EAAA,IAEAz/D,KAAAmoD,KAAAs1B,EAAAhe,EAAA,SAAA98D,EAAA+L,GACA,OAAA/L,EACAioC,EAAAjoC,GAEA+L,EAAAspE,IAAAkJ,cAAAxyE,EAAAspE,IAAAkJ,aAAA4L,IACArtB,EAAArhE,IAAAsQ,EAAAtQ,IACAqhE,EAAA0kB,QAAA,OACA9jF,EAAAuvF,eAAAnS,EAAAqP,EACAp+E,EAAAspE,IAAAkJ,aAAA4L,GAAArtB,EAAA70B,IAEAA,EAAA21C,GAAAd,QAKA4K,GAAAzsF,UAAA+5E,QACAkE,EAAA,mBAAApc,EAAA70B,GAYA,GAXA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAEAA,EAAA9kC,UAAA,IAAA8kC,EAAA9kC,KAAA8kC,EAAA9kC,KAAA,EACA8kC,EAAAqwB,YACArwB,EAAAswB,SAAAtwB,EAAAqwB,WAEArwB,EAAAuwB,UACAvwB,EAAAwwB,OAAAxwB,EAAAuwB,SAEA,SAAAvwB,EAAA,CACA,IAAAz9D,MAAAq1B,QAAAooC,EAAAv3D,MACA,OAAA0iC,EAAA,IAAAjqC,UAAA,kCAEA,IAAAuvF,EACA,4BAAAt7E,OAAA,SAAAs7E,GACA,OAAAA,KAAAzwB,IACK,GACL,GAAAywB,EAKA,YAJAtlD,EAAA21C,GAAAP,EACA,oBAAAkQ,EACA,uCAIA,IAAA5O,GAAAthF,QApoBA,SAAAy/D,GACA,IAAAv3D,EAAA,UAAAu3D,EACAA,EAAAv3D,KAAAnG,MAAA09D,EAAA9kC,KAAA8kC,EAAAhjB,MAAAgjB,EAAA9kC,MACA8kC,EAAA9kC,KAAA,EAAA8kC,EAAAv3D,KAAAnG,MAAA09D,EAAA9kC,MAAA8kC,EAAAv3D,KACAu3D,EAAAv3D,OACAu3D,EAAA9kC,KAAA,SACA8kC,EAAAhjB,MACAgjB,EAAAosB,aACA3jF,EAAAoN,UACAmqD,EAAAosB,YAAA,GA4nBAsE,CAAA1wB,GACA,IAAAA,EAAAv3D,KAAA9E,QACA,OAAApD,KAAAowF,SAAA,CAA8B3zC,MAAA,GAAS7R,GAKvC,OAAA5qC,KAAAowF,SAAA3wB,EAAA70B,KAGAy/C,GAAAzsF,UAAAwrD,QAAA,SAAAqW,EAAA70B,GAaA,MAZA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,KAGAA,KAAA,IAKAsvB,YAAA,gBAAAtvB,IAAAsvB,aAAAtvB,EAAAisB,KAEA,IAAAtC,GAAAppF,KAAAy/D,EAAA70B,IAGAy/C,GAAAzsF,UAAAgtD,MAAAixB,EAAA,iBAAAjxC,GAGA,OAFA5qC,KAAA87E,SAAA,EACA97E,KAAAkF,KAAA,UACAlF,KAAAqwF,OAAAzlD,KAGAy/C,GAAAzsF,UAAA23E,KAAAsG,EAAA,gBAAAjxC,GACA,IAAAvqC,EAAAL,KACAA,KAAAswF,MAAA,SAAA3tF,EAAA4yE,GACA,GAAA5yE,EACA,OAAAioC,EAAAjoC,GAGA4yE,EAAAgb,QAAAhb,EAAAgb,SAAAlwF,EAAA9D,KACAg5E,EAAAiV,mBAAAnqF,EAAAmqF,iBAAAlJ,GAAAjhF,IACAk1E,EAAAmV,QAAArqF,EAAAqqF,QACA9/C,EAAA,KAAA2qC,OAIA8U,GAAAzsF,UAAAiC,GAAAg8E,EAAA,cAAAjxC,GACA,OAAA5qC,KAAAo5E,IAAAxuC,KAIAy/C,GAAAzsF,UAAAU,KAAA,WACA,yBAAA0B,KAAAwwF,MAAAxwF,KAAAwwF,QAAAxwF,KAAA0qF,SAGAL,GAAAzsF,UAAAsuF,SACArQ,EAAA,oBAAA8E,EAAAlhB,EAAA70B,GAcA,GAbA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAGAA,KAAA,GAEAz9D,MAAAq1B,QAAAspD,KACAA,EAAA,CACA5D,KAAA4D,KAIAA,MAAA5D,OAAA/6E,MAAAq1B,QAAAspD,EAAA5D,MACA,OAAAnyC,EAAA21C,GAAAf,IAGA,QAAAxjF,EAAA,EAAiBA,EAAA2kF,EAAA5D,KAAA35E,SAAqBpH,EACtC,oBAAA2kF,EAAA5D,KAAA/gF,IAAAgG,MAAAq1B,QAAAspD,EAAA5D,KAAA/gF,IACA,OAAA4uC,EAAA21C,GAAAJ,KAIA,IAAAsQ,EAYA,GAXA9P,EAAA5D,KAAA/nE,QAAA,SAAAgjE,GACAA,EAAAkJ,cACAxkF,OAAAwL,KAAA8vE,EAAAkJ,cAAAlsE,QAAA,SAAAzY,GACAk0F,KA/qBA,SAAAl0F,GACA,YAAAA,EAAAkuC,OAAA,IACAluC,EAAA,0EA6qBAm0F,CAAAn0F,GACAy7E,EAAAkJ,aAAA3kF,GAAA4wF,cACA7O,EAAA,oBAAA/hF,EAAA,cAAAy7E,EAAAoB,IAAA,+BAMAqX,EACA,OAAA7lD,EAAA21C,GAAAL,GAAAuQ,IAGA,cAAAhxB,IAEAA,EAAAktB,YADA,cAAAhM,IACAA,EAAAgM,WAMA,IAAAjC,EAAA1qF,KACAy/D,EAAAktB,WAAArL,GAAAoJ,IAGA/J,EAAA5D,KAAA/qE,KAAAk4E,IAxyBA,SAAAnN,GACA,QAAA/gF,EAAA,EAAiBA,EAAA+gF,EAAA35E,OAAiBpH,IAAA,CAClC,IAAAg8E,EAAA+E,EAAA/gF,GACA,GAAAg8E,EAAAoU,gBACApU,EAAAkJ,kBACK,GAAAlJ,EAAAkJ,aAGL,IADA,IAAAyP,EAAAj0F,OAAAwL,KAAA8vE,EAAAkJ,cACA9lB,EAAA,EAAqBA,EAAAu1B,EAAAvtF,OAAiBg4D,IAAA,CACtC,IAAA6lB,EAAA0P,EAAAv1B,GACA4c,EAAAkJ,aAAAD,GAAA7tD,EAAA4kD,EAAAkJ,aAAAD,GACA,6DAgyBA2P,CAAAjQ,EAAA5D,MAKA,IAAA3H,EAAAuL,EAAA5D,KAAA1nE,IAAA,SAAA2iE,GACA,OAAAA,EAAAoB,MAGA,OAAAp5E,KAAA6wF,UAAAlQ,EAAAlhB,EAAA,SAAA98D,EAAA+L,GACA,GAAA/L,EACA,OAAAioC,EAAAjoC,GASA,GAPA88D,EAAAktB,YAEAj+E,IAAAkG,OAAA,SAAA8lD,GACA,OAAAA,EAAA53D,UAIAw+E,GAAAoJ,GACA,QAAA1uF,EAAA,EAAAC,EAAAyS,EAAAtL,OAAqCpH,EAAAC,EAAOD,IAC5C0S,EAAA1S,GAAA6D,GAAA6O,EAAA1S,GAAA6D,IAAAu1E,EAAAp5E,GAIA4uC,EAAA,KAAAl8B,OAIA27E,GAAAzsF,UAAAkzF,0BACAjV,EAAA,qCAAAkV,EACAnmD,GACA,IAAAomD,EAAA,IAAAhxF,KAAAgL,YAAA+lF,EAAA/wF,KAAAuqF,QAUAjI,GAAAtiF,KAAA,6BARA,SAAAg4E,GAEA,OADAA,EAAAiZ,aAAAjZ,EAAAiZ,cAAA,IACAjZ,EAAAiZ,aAAAF,KAGA/Y,EAAAiZ,aAAAF,IAAA,EACA/Y,KAGA/oB,KAAA,WACArkB,EAAA,MAAsBiyC,GAAAmU,MACjB3gB,MAAAzlC,KAGLy/C,GAAAzsF,UAAAi/D,QACAgf,EAAA,mBAAApc,EAAA70B,GAEA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAGA,IAAAp/D,EAAAL,KACAkxF,IAAA,eAAA7wF,MAAAyqF,WAEA,SAAAqG,IAEA9wF,EAAA+wF,SAAA3xB,EAAA,SAAA98D,EAAAg5E,GACA,GAAAh5E,EACA,OAAAioC,EAAAjoC,GAEAtC,EAAA07E,YAAA,EACA17E,EAAA6E,KAAA,aACA0lC,EAAA,KAAA+wC,GAAA,CAA8Bx4E,IAAA,MAI9B,GAAAm+E,GAAAjhF,GAEA,OAAA8wF,IAGA9wF,EAAAxD,IAAA,sCAAA8F,EAAA0uF,GACA,GAAA1uF,EAEA,aAAAA,EAAA62E,OACA5uC,EAAAjoC,GAEAwuF,IAGA,IAAAF,EAAAI,EAAAJ,aACA9Z,EAAA92E,EAAA2K,YACAsmF,EAAA50F,OAAAwL,KAAA+oF,GAAA57E,IAAA,SAAA9Y,GAGA,IAAAg1F,EAAAL,EACA30F,EAAA+M,QAAA,IAAAuT,OAAA,IAAAs6D,EAAA9zB,QAAA,IAAA9mD,EACA,WAAA46E,EAAAoa,EAAAlxF,EAAAkqF,QAAA1tB,YAEA1mC,QAAAq6C,IAAA8gB,GAAAriC,KAAAkiC,EAAAvmD,OAUA0/C,GAAA1sF,UAAA4zF,QAAA,WACA,IAAAtmC,EACA,GAAAlrD,KAAAu8E,OACA,KAAArxB,EAAAlrD,KAAAgN,MAAApF,SACAsjD,EAAAlrD,KAAAu8E,aAGA,KAAArxB,EAAAlrD,KAAAgN,MAAApF,SACAsjD,KAKAo/B,GAAA1sF,UAAAuxE,KAAA,SAAAxsE,GACA3C,KAAAu8E,OAAA55E,EACA3C,KAAAwxF,WAGAlH,GAAA1sF,UAAA0tF,MAAA,SAAAzO,GACA78E,KAAAq8E,SAAA,EACAr8E,KAAA68E,KACA78E,KAAAwxF,WAGAlH,GAAA1sF,UAAA0+E,QAAA,SAAApxB,GACAlrD,KAAAgN,MAAA5H,KAAA8lD,GACAlrD,KAAAu8E,QACAv8E,KAAAwxF,WA4EAhX,IAAQrD,GAAAkT,IAiER,IAAAlpF,GAAA,oBAAAswF,gBACAA,gBACA,WAAmB,OAASC,MAAA,eAE5BC,GAAAC,MACAC,GAAAC,QAEA3a,GAAAwT,SAAA,GACAxT,GAAAyT,kBAAA,GAEAzT,GAAA9zB,OAAA,UAEA,IAAA0uC,GAAA,IAAuBtX,EAAA,cAEvB,SAAAuX,GACAt1F,OAAAwL,KAAcuyE,EAAA,aAAY78E,WAAAoX,QAAA,SAAAzX,GACC,mBAAZk9E,EAAA,aAAY78E,UAAAL,KAC3By0F,EAAAz0F,GAAAw0F,GAAAx0F,GAAAC,KAAAu0F,OAMA,IAAAE,EAAAD,EAAAE,sBAAA,IAAAtY,EAEAoY,EAAA3qF,GAAA,eAAAw1E,GACAoV,EAAA5pF,IAAAw0E,EAAAtgF,OACA01F,EAAAzrF,IAAAq2E,EAAAtgF,KAAA,IAEA01F,EAAAp1F,IAAAggF,EAAAtgF,MAAA6I,KAAAy3E,KAGAmV,EAAA3qF,GAAA,iBAAAw1E,GACA,GAAAoV,EAAA5pF,IAAAw0E,EAAAtgF,MAAA,CAGA,IAAA41F,EAAAF,EAAAp1F,IAAAggF,EAAAtgF,MACA6vD,EAAA+lC,EAAAl9E,QAAA4nE,GACAzwB,EAAA,IAIA+lC,EAAA59D,OAAA63B,EAAA,GACA+lC,EAAA/uF,OAAA,EAEA6uF,EAAAzrF,IAAAq2E,EAAAtgF,KAAA41F,GAEAF,EAAA7gB,OAAAyL,EAAAtgF,UAIAy1F,EAAA3qF,GAAA,qBAAA9K,GACA,GAAA01F,EAAA5pF,IAAA9L,GAAA,CAGA,IAAA41F,EAAAF,EAAAp1F,IAAAN,GACA01F,EAAA7gB,OAAA70E,GACA41F,EAAAn9E,QAAA,SAAA6nE,GACAA,EAAA33E,KAAA,qBAKAktF,CAAAjb,IAEAA,GAAAuT,QAAA,SAAA7qF,EAAAqwD,EAAAmiC,GAEAniC,EAAA+6B,UACA9T,GAAAwT,SAAA9qF,GAAAqwD,EACAmiC,GACAlb,GAAAyT,kBAAAxlF,KAAAvF,KAKAs3E,GAAAmb,OAAA,SAAApiC,GACA,sBAAAA,EACAA,EAAAinB,QACG,qBAAAjnB,GAAA,IAAAxzD,OAAAwL,KAAAgoD,GAAA9sD,OACH,UAAAX,MAAA,wBAAAytD,EAAA,uCAEAxzD,OAAAwL,KAAAgoD,GAAAl7C,QAAA,SAAAnV,GACAs3E,GAAAv5E,UAAAiC,GAAAqwD,EAAArwD,KAMA,OAHAG,KAAAuyF,aACApb,GAAAob,WAAAnT,EAAA,GAAiDp/E,KAAAuyF,aAEjDpb,IAGAA,GAAAhkD,SAAA,SAAAq/D,GACA,SAAAC,EAAAl2F,EAAAkjE,GACA,KAAAz/D,gBAAAyyF,GACA,WAAAA,EAAAl2F,EAAAkjE,GAGAA,KAAA,GAEAljE,GAAA,iBAAAA,IAEAA,GADAkjE,EAAAljE,GACAA,YACAkjE,EAAAljE,MAGAkjE,EAAA2f,EAAA,GAAmCqT,EAAAF,WAAA9yB,GACnC0X,GAAAh7E,KAAA6D,KAAAzD,EAAAkjE,GAgBA,OAbE+a,IAAQiY,EAAAtb,IAEVsb,EAAA7H,kBAAAzT,GAAAyT,kBAAA7oF,QACArF,OAAAwL,KAAAivE,IAAAniE,QAAA,SAAAzX,GACAA,KAAAk1F,IACAA,EAAAl1F,GAAA45E,GAAA55E,MAMAk1F,EAAAF,WAAAnT,EAAA,GAAgDp/E,KAAAuyF,WAAAC,GAEhDC,GAGAtb,GAAAya,MAAA,SAAAj4B,EAAA8F,GACA,OAAAkyB,GAAAh4B,EAAA8F,IAQA,SAAAizB,GAAA1a,EAAA2a,GAEA,IADA,IAAA11F,EAAA+6E,EACAh8E,EAAA,EAAAkL,EAAAyrF,EAAAvvF,OAA2CpH,EAAAkL,EAASlL,IAAA,CAGpD,KADAiB,IADA01F,EAAA32F,KAGA,MAGA,OAAAiB,EAQA,SAAA21F,GAAAC,GAIA,IAFA,IAAAhkC,EAAA,GACAnqC,EAAA,GACA1oB,EAAA,EAAAkL,EAAA2rF,EAAAzvF,OAAyCpH,EAAAkL,EAASlL,IAAA,CAClD,IAAA6vE,EAAAgnB,EAAA72F,GACA,MAAA6vE,EACA7vE,EAAA,UAAA62F,EAAA72F,EAAA,GACA0oB,IAAAu+B,UAAA,EAAAv+B,EAAAthB,OAAA,QAEAyrD,EAAAzpD,KAAAsf,GACAA,EAAA,IAGAA,GAAAmnD,EAIA,OADAhd,EAAAzpD,KAAAsf,GACAmqC,EAGA,IAAAikC,GAAA,sBACA,SAAAC,GAAAhlC,GACA,OAAA+kC,GAAA79E,QAAA84C,IAAA,EAGA,SAAAilC,GAAA9iC,GACA,OAAAxzD,OAAAwL,KAAAgoD,GAAA,GASA,SAAA+iC,GAAAC,GAKA,IAAAxkF,EAAA,GAqCA,OAnCAwkF,EAAAl+E,QAAA,SAAAm+E,GACAz2F,OAAAwL,KAAAirF,GAAAn+E,QAAA,SAAA+4C,GACA,IAAAqlC,EAAAD,EAAAplC,GAKA,GAJA,iBAAAqlC,IACAA,EAAA,CAAmBC,IAAAD,IAGnBL,GAAAhlC,GACAqlC,aAAApxF,MACA0M,EAAAq/C,GAAAqlC,EAAA/9E,IAAA,SAAAjZ,GACA,OAAA62F,GAAA,CAAA72F,MAGAsS,EAAAq/C,GAAAklC,GAAA,CAAAG,QAEO,CACP,IAAAE,EAAA5kF,EAAAq/C,GAAAr/C,EAAAq/C,IAAA,GACArxD,OAAAwL,KAAAkrF,GAAAp+E,QAAA,SAAAm4B,GACA,IAAAlwC,EAAAm2F,EAAAjmD,GAEA,cAAAA,GAAA,SAAAA,EAqBA,SAAAA,EAAAlwC,EAAAq2F,GACA,YAAAA,EAAAD,IACA,YAEA,IAAAC,EAAAC,KACA,SAAApmD,EACAlwC,EAAAq2F,EAAAC,OACAD,EAAAC,KAAAt2F,GAGAA,GAAAq2F,EAAAC,cACAD,EAAAC,KACAD,EAAAE,IAAAv2F,QAGG,IAAAq2F,EAAAE,IACH,SAAArmD,EACAlwC,EAAAq2F,EAAAE,aACAF,EAAAE,IACAF,EAAAC,KAAAt2F,GAGAA,EAAAq2F,EAAAE,MACAF,EAAAE,IAAAv2F,GAIAq2F,EAAAnmD,GAAAlwC,EA/CAw2F,CAAAtmD,EAAAlwC,EAAAq2F,GACW,QAAAnmD,GAAA,SAAAA,EAmDX,SAAAA,EAAAlwC,EAAAq2F,GACA,YAAAA,EAAAD,IACA,YAEA,IAAAC,EAAAI,KACA,SAAAvmD,EACAlwC,EAAAq2F,EAAAI,OACAJ,EAAAI,KAAAz2F,GAGAA,GAAAq2F,EAAAI,cACAJ,EAAAI,KACAJ,EAAAK,IAAA12F,QAGG,IAAAq2F,EAAAK,IACH,SAAAxmD,EACAlwC,EAAAq2F,EAAAK,aACAL,EAAAK,IACAL,EAAAI,KAAAz2F,GAGAA,EAAAq2F,EAAAK,MACAL,EAAAK,IAAA12F,GAIAq2F,EAAAnmD,GAAAlwC,EA7EA22F,CAAAzmD,EAAAlwC,EAAAq2F,GACW,QAAAnmD,EAiFX,SAAAlwC,EAAAq2F,GACA,QAAAA,EAEAA,EAAAO,IAAAzuF,KAAAnI,GAEAq2F,EAAAO,IAAA,CAAA52F,GArFA62F,CAAA72F,EAAAq2F,GACW,QAAAnmD,EAyFX,SAAAlwC,EAAAq2F,UAGAA,EAAAE,WACAF,EAAAC,YACAD,EAAAK,WACAL,EAAAI,YACAJ,EAAAO,IACAP,EAAAD,IAAAp2F,EAhGA82F,CAAA92F,EAAAq2F,QAEAA,EAAAnmD,GAAAlwC,UAMAyR,EA8HA,SAAAslF,GAAA34D,GACA,IAAA1sB,EAAAsiC,EAAA5V,GACA44D,GAAA,GAlBA,SAAAC,EAAAhkC,EAAAikC,GACA,QAAA98C,KAAA6Y,EAAA,CACA,SAAA7Y,IACA88C,GAAA,GAEA,IAAAl3F,EAAAizD,EAAA7Y,GACA,iBAAAp6C,IACAk3F,EAAAD,EAAAj3F,EAAAk3F,IAGA,OAAAA,GAUAD,CAAAvlF,GAAA,KAEA,SADAA,EAvCA,SAAAylF,EAAAlkC,GACA,QAAA7Y,KAAA6Y,EAAA,CACA,GAAAluD,MAAAq1B,QAAA64B,GACA,QAAAl0D,KAAAk0D,EACAA,EAAAl0D,GAAA,OACAk0D,EAAAl0D,GAAAi3F,GAAA/iC,EAAAl0D,GAAA,OAIA,IAAAiB,EAAAizD,EAAA7Y,GACA,iBAAAp6C,GACAm3F,EAAAn3F,GAGA,OAAAizD,EAyBAkkC,CAAAzlF,MAEAA,EAAAskF,GAAAtkF,EAAA,OAEAslF,GAAA,GAGA,eAAAj/E,QAAA,SAAAq/E,GACAA,KAAA1lF,GAGAA,EAAA0lF,GAAAr/E,QAAA,SAAAs/E,GAEA,IADA,IAAAzlC,EAAAnyD,OAAAwL,KAAAosF,GACAt4F,EAAA,EAAuBA,EAAA6yD,EAAAzrD,OAAmBpH,IAAA,CAC1C,IAAA+xD,EAAAc,EAAA7yD,GACAo3F,EAAAkB,EAAAvmC,GACA,iBAAAqlC,GAAA,OAAAA,IACAkB,EAAAvmC,GAAA,CAAkCslC,IAAAD,SAOlC,SAAAzkF,IAGAA,EAAA,KAAAskF,GAAA,CAAAtkF,EAAA,QAKA,IAFA,IAAAkgD,EAAAnyD,OAAAwL,KAAAyG,GAEA3S,EAAA,EAAiBA,EAAA6yD,EAAAzrD,OAAmBpH,IAAA,CACpC,IAAA+xD,EAAAc,EAAA7yD,GACAo3F,EAAAzkF,EAAAo/C,GAEA,iBAAAqlC,GAAA,OAAAA,EACAA,EAAA,CAAiBC,IAAAD,GACZ,QAAAA,IAAAa,IAGLb,EAAAS,IAAA,CAAAT,EAAAS,MAEAllF,EAAAo/C,GAAAqlC,EAGA,OAAAzkF,EAkBA,IAAA4lF,IAAA,IACAC,GAAA,EACAC,GAAA,GAEA,SAAAC,GAAAvzF,EAAAkM,GAEA,GAAAlM,IAAAkM,EACA,SAGAlM,EAAAwzF,GAAAxzF,GACAkM,EAAAsnF,GAAAtnF,GAEA,IAAAunF,EAAArpB,GAAApqE,GACA0zF,EAAAtpB,GAAAl+D,GACA,GAAAunF,EAAAC,GAAA,EACA,OAAAD,EAAAC,EAEA,cAAA1zF,GACA,aACA,OAAAA,EAAAkM,EACA,cACA,OAAAlM,EAAAkM,GAAA,IACA,aACA,OAsPA,SAAAlM,EAAAkM,GAIA,OAAAlM,IAAAkM,EAAA,EAAAlM,EAAAkM,EAAA,KA1PAynF,CAAA3zF,EAAAkM,GAEA,OAAArL,MAAAq1B,QAAAl2B,GAyOA,SAAAA,EAAAkM,GAEA,IADA,IAAAnG,EAAA9G,KAAAY,IAAAG,EAAAiC,OAAAiK,EAAAjK,QACApH,EAAA,EAAiBA,EAAAkL,EAASlL,IAAA,CAC1B,IAAAgW,EAAA0iF,GAAAvzF,EAAAnF,GAAAqR,EAAArR,IACA,OAAAgW,EACA,OAAAA,EAGA,OAAA7Q,EAAAiC,SAAAiK,EAAAjK,OAAA,EACAjC,EAAAiC,OAAAiK,EAAAjK,OAAA,KAlPA2xF,CAAA5zF,EAAAkM,GA0PA,SAAAlM,EAAAkM,GAGA,IAFA,IAAA2nF,EAAAt4F,OAAAwL,KAAA/G,GAAA8zF,EAAAv4F,OAAAwL,KAAAmF,GACAnG,EAAA9G,KAAAY,IAAAg0F,EAAA5xF,OAAA6xF,EAAA7xF,QACApH,EAAA,EAAiBA,EAAAkL,EAASlL,IAAA,CAE1B,IAAAgW,EAAA0iF,GAAAM,EAAAh5F,GAAAi5F,EAAAj5F,IACA,OAAAgW,EACA,OAAAA,EAIA,QADAA,EAAA0iF,GAAAvzF,EAAA6zF,EAAAh5F,IAAAqR,EAAA4nF,EAAAj5F,MAEA,OAAAgW,EAIA,OAAAgjF,EAAA5xF,SAAA6xF,EAAA7xF,OAAA,EACA4xF,EAAA5xF,OAAA6xF,EAAA7xF,OAAA,KA3QA8xF,CAAA/zF,EAAAkM,GAKA,SAAAsnF,GAAAp3F,GACA,cAAAA,GACA,gBACA,YACA,aACA,OAAAA,IAAA+iC,KAAA/iC,KAAA+iC,KAAAp8B,MAAA3G,GACA,KAEAA,EACA,aACA,IAAA43F,EAAA53F,EACA,GAAAyE,MAAAq1B,QAAA95B,GAAA,CACA,IAAA2J,EAAA3J,EAAA6F,OACA7F,EAAA,IAAAyE,MAAAkF,GACA,QAAAlL,EAAA,EAAuBA,EAAAkL,EAASlL,IAChCuB,EAAAvB,GAAA24F,GAAAQ,EAAAn5F,QAGO,IAAAuB,aAAA81B,KACP,OAAA91B,EAAAwnD,SACO,UAAAxnD,EAEP,QAAAo9D,KADAp9D,EAAA,GACA43F,EACA,GAAAA,EAAAt3F,eAAA88D,GAAA,CACA,IAAAhyD,EAAAwsF,EAAAx6B,QACA,IAAAhyD,IACApL,EAAAo9D,GAAAg6B,GAAAhsF,MAMA,OAAApL,EAGA,SAAA63F,GAAA73F,GACA,UAAAA,EACA,cAAAA,GACA,cACA,OAAAA,EAAA,IACA,aACA,OA2PA,SAAAw+D,GAEA,OAAAA,EACA,UAKA,IAAAs5B,EAAAt5B,EAAAu5B,gBAAA7sF,MAAA,QACA8sF,EAAAp0E,SAAAk0E,EAAA,OAEAG,EAAAz5B,EAAA,EAEAptD,EAAA6mF,EAAA,QAKAC,GA1VAl/B,IAyVAi/B,GAAAD,KAAAhB,IACA3lF,WA1VA8mF,EA0VA,IA1VAC,EA0VAnB,GApWA,SAAAj+B,EAAAm/B,EAAAC,GAIA,IAHA,IAAAC,EAAA,GACAC,EAAAF,EAAAp/B,EAAAnzD,OAEAwyF,EAAAxyF,OAAAyyF,GACAD,GAAAF,EAEA,OAAAE,EAIAl1C,CAAA6V,EAAAm/B,EAAAC,GACAp/B,GAFA,IAAAA,EAAAm/B,EAAAC,EA4VAhnF,GAAA8lF,GAAAgB,EAGA,IAAAK,EAAA11F,KAAAwnE,IAAA3mD,WAAAo0E,EAAA,KAEAG,IACAM,EAAA,GAAAA,GAGA,IAAAC,EAAAD,EAAAE,QAAA,IAOA,OAJAD,IAAAzsF,QAAA,aAEAqF,GAAA8lF,GAAAsB,EA7RAE,CAAA14F,GACA,aAOA,OAAAA,EACA+L,QAAA,gBACAA,QAAA,gBACAA,QAAA,gBAEA,aACA,IAAA+tB,EAAAr1B,MAAAq1B,QAAA95B,GACA2F,EAAAm0B,EAAA95B,EAAAb,OAAAwL,KAAA3K,GACAvB,GAAA,EACAkL,EAAAhE,EAAAE,OACAuL,EAAA,GACA,GAAA0oB,EACA,OAAAr7B,EAAAkL,GACAyH,GAAAunF,GAAAhzF,EAAAlH,SAGA,OAAAA,EAAAkL,GAAA,CACA,IAAAivF,EAAAjzF,EAAAlH,GACA2S,GAAAunF,GAAAC,GACAD,GAAA34F,EAAA44F,IAGA,OAAAxnF,EAGA,SAMA,SAAAunF,GAAA34F,GAGA,OAAAguE,GADAhuE,EAAAo3F,GAAAp3F,IACAk3F,GAAAW,GAAA73F,GAFA,KAKA,SAAA64F,GAAA7/B,EAAAv6D,GACA,IACA+/D,EADAs6B,EAAAr6F,EAGA,GADA,MAAAu6D,EAAAv6D,GAEA+/D,EAAA,EACA//D,QACG,CACH,IAAAw5F,EAAA,MAAAj/B,EAAAv6D,GACAA,IACA,IAAAs6F,EAAA,GACAC,EAAAhgC,EAAAtT,UAAAjnD,IAAAw4F,IACAe,EAAAp0E,SAAAo1E,EAAA,IAAAhC,GAMA,IAJAiB,IACAD,MAEAv5F,GAAAw4F,KACA,CACA,IAAA3oB,EAAAtV,EAAAv6D,GACA,UAAA6vE,EACA,MAEAyqB,GAAAzqB,EAEA7vE,IAIA+/D,EADA,KADAu6B,IAAA7tF,MAAA,MACArF,OACA+d,SAAAm1E,EAAA,IAGAr1E,WAAAq1E,EAAA,OAAAA,EAAA,IAGAd,IACAz5B,GAAA,IAGA,IAAAw5B,IAIAx5B,EAAA96C,WAAA86C,EAAA,IAAAw5B,IAGA,OAAUx5B,MAAA34D,OAAApH,EAAAq6F,GAKV,SAAAvuF,GAAA/E,EAAAmoE,GACA,IAAAhb,EAAAntD,EAAA+E,MAEA,GAAAojE,EAAA9nE,OAAA,CACA,IAAA+nE,EAAAD,IAAA9nE,OAAA,GACA8sD,IAAAib,EAAAt/D,UAEAq/D,EAAApjE,MACAqjE,EAAAD,IAAA9nE,OAAA,IAEA,IAAAyI,EAAAs/D,EAAAt/D,QACAu/D,EAAAD,EAAAtjE,MACA,GAAA7F,MAAAq1B,QAAAxrB,GACAA,EAAAzG,KAAA8qD,QACK,GAAAkb,IAAAroE,EAAAK,OAAA,GAELyI,EADA9I,EAAA+E,OACAooD,OAEAntD,EAAAqC,KAAA8qD,IAiHA,SAAAqb,GAAA7Q,GACA,IACA+F,EADA,uCACAxrD,eAAAylD,GAEA,OAAA+F,EACA,OAAA/F,EACA,EAEA14D,MAAAq1B,QAAAqjC,GACA,EAEA+F,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAGAz+D,MAAAq1B,QAAAqjC,GACA,OADA,EAyEA,SAAA87B,GAAA1e,EAAA2e,EAAAC,GAKA,GAJA5e,IAAAljE,OAAA,SAAA8iE,GACA,OAAAif,GAAAjf,EAAAM,IAAAye,EAAAtD,SAAAuD,KAGAD,EAAAzkF,KAAA,CAEA,IAAA4kF,EA9BA,SAAA5kF,GAEA,SAAA6kF,EAAA7e,GACA,OAAAhmE,EAAAqD,IAAA,SAAAyhF,GACA,IACAnE,EAAAC,GADAI,GAAA8D,IAGA,OADApE,GAAA1a,EAAA2a,KAKA,gBAAAoE,EAAAC,GACA,IA7oBA1+B,EAAA0xB,EA+oBAiN,EAAAvC,GAFAmC,EAAAE,EAAA/e,KACA6e,EAAAG,EAAAhf,MAEA,WAAAif,EACAA,GAjpBA3+B,EAopBAy+B,EAAA/e,IAAAoB,IAppBA4Q,EAopBAgN,EAAAhf,IAAAoB,IAnpBA9gB,EAAA0xB,GAAA,EAAA1xB,EAAA0xB,EAAA,MA8pBAkN,CAAAT,EAAAzkF,MACA8lE,IAAA9lE,KAAA4kF,GACA,iBAAAH,EAAAzkF,KAAA,IACA,UA/nBAk+C,EA+nBAumC,EAAAzkF,KAAA,IA9nBAghF,GAAA9iC,MA+nBA4nB,IAAAxiE,WAhoBA,IAAA46C,EAooBA,aAAAumC,GAAA,SAAAA,EAAA,CAEA,IAAA97D,EAAA87D,EAAA97D,MAAA,EACA8hB,GAAA,UAAAg6C,IAAAh6C,MAAAq7B,EAAA10E,QAAAu3B,EACAm9C,IAAA/1E,MAAA44B,EAAA8hB,GAEA,OAAAq7B,EAGA,SAAA6e,GAAA3e,EAAAmb,EAAAuD,GACA,OAAAA,EAAAhiF,MAAA,SAAAq5C,GACA,IAAAqlC,EAAAD,EAAAplC,GACA4kC,EAAAC,GAAA7kC,GACAopC,EAAAzE,GAAA1a,EAAA2a,GACA,OAAAI,GAAAhlC,GA0BA,SAAAA,EAAAqlC,EAAApb,GAEA,WAAAjqB,EACA,OAAAqlC,EAAA59E,KAAA,SAAA4hF,GACA,OAAAT,GAAA3e,EAAAof,EAAA16F,OAAAwL,KAAAkvF,MAIA,YAAArpC,EACA,OAAA4oC,GAAA3e,EAAAob,EAAA12F,OAAAwL,KAAAkrF,IAIA,OAAAA,EAAAv+E,KAAA,SAAAuiF,GACA,OAAAT,GAAA3e,EAAAof,EAAA16F,OAAAwL,KAAAkvF,MAvCAC,CAAAtpC,EAAAqlC,EAAApb,GAGAsf,GAAAlE,EAAApb,EAAA2a,EAAAwE,KAIA,SAAAG,GAAAlE,EAAApb,EAAA2a,EAAAwE,GACA,OAAA/D,IAMA,iBAAAA,EACA12F,OAAAwL,KAAAkrF,GAAA1+E,MAAA,SAAA6iF,GACA,IAAAC,EAAApE,EAAAmE,GACA,OA2BA,SAAAA,EAAAvf,EAAAwf,EAAA7E,EAAAwE,GACA,IAAAM,GAAAF,GACA,UAAA90F,MAAA,qBAAA80F,EACA,sIAGA,OAAAE,GAAAF,GAAAvf,EAAAwf,EAAA7E,EAAAwE,GAjCA3kE,CAAA+kE,EAAAvf,EAAAwf,EAAA7E,EAAAwE,KAKA/D,IAAA+D,GA+BA,SAAAO,GAAAP,GACA,aAAAA,EAGA,SAAAQ,GAAAR,GACA,gBAAAA,EAyBA,SAAAS,GAAAT,EAAAK,GACA,OAAAA,EAAAhiF,KAAA,SAAA7M,GACA,OAAAwuF,aAAAn1F,MACAm1F,EAAAliF,QAAAtM,IAAA,EAGAwuF,IAAAxuF,IA0CA,IAAA8uF,GAAA,CAEAI,WAAA,SAAA7f,EAAAwf,EAAA7E,EAAAwE,GACA,QAAAn1F,MAAAq1B,QAAA8/D,KAIA,IAAAA,EAAA/zF,SAIA,iBAAA+zF,EAAA,GACAA,EAAA3hF,KAAA,SAAA7M,GACA,OAAAguF,GAAAhuF,EAAA6uF,EAAA96F,OAAAwL,KAAAsvF,MAIAL,EAAA3hF,KAAA,SAAA7M,GACA,OAAA2uF,GAAAE,EAAAxf,EAAA2a,EAAAhqF,QAIAmvF,UAAA,SAAA9f,EAAAwf,EAAA7E,EAAAwE,GACA,QAAAn1F,MAAAq1B,QAAA8/D,KAKA,IAAAA,EAAA/zF,SAIA,iBAAA+zF,EAAA,GACAA,EAAAziF,MAAA,SAAA/L,GACA,OAAAguF,GAAAhuF,EAAA6uF,EAAA96F,OAAAwL,KAAAsvF,MAIAL,EAAAziF,MAAA,SAAA/L,GACA,OAAA2uF,GAAAE,EAAAxf,EAAA2a,EAAAhqF,QAIA0qF,IAAA,SAAArb,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAQ,GAAAR,IAAA,IAAAzC,GAAAyC,EAAAK,IAGAjE,KAAA,SAAAvb,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAQ,GAAAR,IAAAzC,GAAAyC,EAAAK,IAAA,GAGAhE,IAAA,SAAAxb,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAQ,GAAAR,IAAAzC,GAAAyC,EAAAK,GAAA,GAGA9D,KAAA,SAAA1b,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAQ,GAAAR,IAAAzC,GAAAyC,EAAAK,IAAA,GAGA7D,IAAA,SAAA3b,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAQ,GAAAR,IAAAzC,GAAAyC,EAAAK,GAAA,GAGAO,QAAA,SAAA/f,EAAAwf,EAAA7E,EAAAwE,GAEA,OAAAK,EACAG,GAAAR,IAGAQ,GAAAR,IAGAa,KAAA,SAAAhgB,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAO,GAAAP,IA/IA,SAAAA,EAAAK,GACA,IAAAh+C,EAAAg+C,EAAA,GACAS,EAAAT,EAAA,GACA,OAAAh+C,EACA,UAAA/2C,MAAA,sCAGA,GAAA0e,SAAAq4B,EAAA,MAAAA,EACA,UAAA/2C,MAAA,6BAGA,GAAA0e,SAAA82E,EAAA,MAAAA,EACA,UAAAx1F,MAAA,6BAGA,OAAA0e,SAAAg2E,EAAA,MAAAA,GAIAA,EAAA39C,IAAAy+C,EA4HAC,CAAAf,EAAAK,IAGA3D,IAAA,SAAA7b,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAK,EAAA9iF,MAAA,SAAAyjF,GACA,WAAAzD,GAAAyC,EAAAgB,MAGAC,IAAA,SAAApgB,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAO,GAAAP,IAAAS,GAAAT,EAAAK,IAGAa,KAAA,SAAArgB,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAO,GAAAP,KAAAS,GAAAT,EAAAK,IAGAc,MAAA,SAAAtgB,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAO,GAAAP,IA1HA,SAAAA,EAAAK,GACA,OAAAL,EAAA/zF,SAAAo0F,EAyHAe,CAAApB,EAAAK,IAGAgB,KAAA,SAAAxgB,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAn1F,MAAAq1B,QAAA8/D,IApIA,SAAAA,EAAAK,GACA,OAAAA,EAAA9iF,MAAA,SAAA/L,GACA,OAAAwuF,EAAAliF,QAAAtM,IAAA,IAkIA8vF,CAAAtB,EAAAK,IAGAkB,OAAA,SAAA1gB,EAAAwf,EAAA7E,EAAAwE,GACA,OAAAO,GAAAP,IA9HA,SAAAA,EAAAK,GAGA,OAFA,IAAA36E,OAAA26E,GAEAhuF,KAAA2tF,GA2HAwB,CAAAxB,EAAAK,IAGAoB,MAAA,SAAA5gB,EAAAwf,EAAA7E,EAAAwE,GACA,OA5HA,SAAAA,EAAAK,GAEA,OAAAA,GACA,WACA,cAAAL,EACA,cACA,0BACA,aACA,yBACA,aACA,yBACA,YACA,OAAAA,aAAAn1F,MACA,aACA,MAAgB,oBAAhB,GAAgB4M,SAAAzS,KAAAg7F,GAGhB,UAAA10F,MAAA+0F,EAAA,8FA2GAqB,CAAA1B,EAAAK,KA4CA,SAAAjkF,GAAAksD,EAAA70B,GACA,GAAA60B,EAAA0zB,UACA1zB,EAAA7qD,QAAA,cAAA6qD,EAAA7qD,OAAA,CACA,IAAAkkF,EAAA,iBAAAr5B,EAAA7qD,OACA6qD,EAAA7qD,OAAA,WACA,OAAAg2B,EAAA,IAAAnoC,MAAA,gCAAAq2F,EAAA,MAGAluD,IAGA,SAAA+gD,GAAAlsB,GACAA,EAAAhb,OAAAgb,EAAA7qD,SACA6qD,EAAA7qD,OAAA,SAGA6qD,EAAA0zB,WAAA1zB,EAAA7qD,SACA6qD,EAAA7qD,OAAA,aAGA6qD,EAAA7qD,QAAA,iBAAA6qD,EAAA7qD,SACA,UAAA6qD,EAAA7qD,OACA6qD,EAAAhb,KAAAi9B,GAAAjiB,EAAAhb,MAEAgb,EAAA7qD,OAAA8sE,GAAAjiB,EAAA7qD,SAKA,SAAAg3E,GAAAmN,EAAAt5B,GACA,OAAAA,EAAA7qD,QAAA,iBAAA6qD,EAAA7qD,SACA6qD,EAAAu5B,UAAA1X,GAAAyX,EAAAlc,IAGA,SAAAjoE,GAAAmkF,EAAAt5B,GACA,IAAA70B,EAAA60B,EAAA4pB,SACA,aAAA5pB,EAAA7qD,OAAA,CACA,IAAA6qD,EAAAhb,MAAA,iBAAAgb,EAAAhb,KAAA,CACA,IAAA9hD,EAAA49E,GAAAL,GACA,iDACA,OAAAt1C,EAAAjoC,GAGA,IAAAs2F,EAAAzX,GAAA/hB,EAAAhb,MACAs0C,EAAAlc,GAAAhgF,IAAA,WAAAo8F,EAAA,YAAAt2F,EAAAu2F,GAEA,GAAAH,EAAAtP,YACA,OAAA7+C,EAAA,MAA+B4uC,OAAA,cAG/B,GAAA72E,EACA,OAAAioC,EAAA61C,GAAA99E,IAEA,IAAAw2F,EAAAD,KAAAE,OAAAF,EAAAE,MAAAH,EAAA,KACAC,EAAAE,MAAAH,EAAA,IAAA5jF,IACA,IAAA8jF,EACA,OAAAvuD,EAAA21C,GAAAd,EACAyZ,EAAAE,MAAA,qBAAAH,EAAA,GACA,4BAEAx5B,EAAA7qD,OA/DAytE,GAfA,CACA,yBACA,kBACA,yBACA,iCACA,sBACA,OACA,gBAuEA8W,EAvEA,IACA,eACA,mBACA,mBACA,MACA,MACArwF,KAAA,MAEA,IAgEAiwF,EAAAvN,UAAA/rB,UAEG,GAAAA,EAAA0zB,SACH1zB,EAAA7qD,OAAA,SAAAojE,GACA,OAxGA,SAAAA,EAAAmb,GAEA,oBAAAA,EAEA,UAAA1wF,MAAA,0CAIA,IAIA42F,EAAA7C,GAAA,CAJA,CACAxe,QAGA,CAAiDmb,SALjDA,EAAAa,GAAAb,IAKwEz2F,OAAAwL,KAAAirF,IACxE,OAAAkG,GAAA,IAAAA,EAAAj2F,OA2FAk2F,CAAAthB,EAAAvY,EAAA0zB,WAEA4F,EAAAvN,UAAA/rB,OACG,CAEH,IAAAq5B,EAAAtX,GAAA/hB,EAAA7qD,QACAmkF,EAAAlc,GAAAhgF,IAAA,WAAAi8F,EAAA,YAAAn2F,EAAAu2F,GAEA,GAAAH,EAAAtP,YACA,OAAA7+C,EAAA,MAA+B4uC,OAAA,cAG/B,GAAA72E,EACA,OAAAioC,EAAA61C,GAAA99E,IAEA,IAAA42F,EAAAL,KAAAzrC,SAAAyrC,EAAAzrC,QAAAqrC,EAAA,IACA,IAAAS,EACA,OAAA3uD,EAAA21C,GAAAd,EACAyZ,KAAAzrC,QAAA,qBAAAqrC,EAAA,GACA,8BAEAr5B,EAAA7qD,OA5GAytE,GAAA,yBA4GAkX,EA5GiC,IAAuB,IA6GxDR,EAAAvN,UAAA/rB,MAmBA,SAAA5xD,GAAAkV,GACA,OAAAA,EAAApR,OAAA,SAAAu+C,EAAAk3B,GAEA,OADAl3B,EAAAk3B,IAAA,EACAl3B,GACG,IARHinB,GAAAmb,OAVA,SAAAnb,GACAA,EAAAoU,qBAAA,CACAh4E,YACAo4E,aACAC,gBACAh3E,aAOAuiE,GAAAl2E,QAnkCA,QA4kCA,IAAAu4F,GAAA3rF,GAAA,CACA,MACA,OACA,eACA,WACA,aACA,aACA,aACA,qBACA,aACA,YAEA,kBACA,qBACA,0BACA,4BACA,qBAEA,aAIA4rF,GAAA5rF,GAAA,CACA,eAEA,kBACA,qBACA,0BACA,4BACA,uBAGA,SAAA6rF,GAAA3M,GACA,aAAAvjF,KAAAujF,GACA,OAAAxM,GAAAF,IAEA,IAAA5f,EAAAssB,EAAA93E,QAAA,KACAqjD,EAAAy0B,EAAA9pC,UAAA,EAAAwd,GACAupB,EAAA+C,EAAA9pC,UAAAwd,EAAA,GACA,OACApd,OAAAliC,SAAAm3C,EAAA,IACAz4D,GAAAmqF,GAsBA,SAAA2P,GAAA3hB,EAAA4hB,EAAAC,GAOA,IAAAC,EACAtN,EACAuN,EARAF,IACAA,EAAA,CACAtU,oBAAA,IAOA,IAAA9lB,EAAA,CAAc+Z,OAAA,aAKd,GAJAxB,EAAAoU,WACA3sB,EAAA0mB,SAAA,GAGAyT,EAKA,GAJA5hB,EAAAoB,MACApB,EAAAoB,IAAAnO,MAEAuhB,EAAAvsF,GAAA+3E,EAAA6hB,EAAAtU,oBACAvN,EAAAqB,KAAA,CAEA,IADA0gB,EAAAL,GAAA1hB,EAAAqB,OACAv2E,MACA,OAAAi3F,EAEA/hB,EAAAyN,UAAA,EACAr5B,IAAA2tC,EAAA12C,OACA+xB,IAAA,CAAA2kB,EAAAl6F,GAAA,CAA2B25E,OAAA,WAAkB,EAAAgT,EAAA/sB,EAAA,QAE7Cq6B,EAAAC,EAAA12C,OAAA,OAEA20B,EAAAyN,UAAA,EACAr5B,IAAA,EACAgpB,IAAA,CAAAoX,EAAA/sB,EAAA,MAEAq6B,EAAA,OAQA,GALA9hB,EAAAoS,aACApS,EAAAyN,UAzDA,SAAAuU,EAAAv6B,GAMA,IALA,IAAArT,EAAA4tC,EAAAvlF,MAAAulF,EAAA5kB,IAAAhyE,OAAA,EAEA62F,EAAAD,EAAA5kB,IACAA,EAAA,CAAA6kB,EAAA,GAAAx6B,EAAA,IAEAzjE,EAAA,EAAAkL,EAAA+yF,EAAA72F,OAA2CpH,EAAAkL,EAASlL,IACpDo5E,EAAA,CAAA6kB,EAAAj+F,GAAA,CAA4Bw9E,OAAA,WAAkB,CAAApE,IAG9C,QACAhpB,MACAgpB,QA6CA8kB,CAAAliB,EAAAoS,WAAA3qB,GACAq6B,EAAA9hB,EAAAoS,WAAA31E,MACA+3E,EAAAxU,EAAAoS,WAAAhV,IAAA,KAEA4C,EAAAyN,UAAA,CAEA,IADAsU,EAAAL,GAAA1hB,EAAAqB,OACAv2E,MACA,OAAAi3F,EAEAD,EAAAC,EAAA12C,OACAmpC,EAAAuN,EAAAl6F,GACAm4E,EAAAyN,UAAA,EACAr5B,IAAA0tC,EACA1kB,IAAA,CAAAoX,EAAA/sB,EAAA,MAKA4hB,GAAArJ,EAAAoB,KAEApB,EAAAqB,KAAAygB,EAAA,IAAAtN,EAEA,IAAA79E,EAAA,CAAgBg3E,SAAA,GAAa7lF,KAAA,IAC7B,QAAAvC,KAAAy6E,EAEA,GAAAt7E,OAAAkB,UAAAC,eAAA1B,KAAA67E,EAAAz6E,GAAA,CACA,IAAA48F,EAAA,MAAA58F,EAAA,GACA,GAAA48F,IAAAX,GAAAj8F,GAAA,CACA,IAAAuF,EAAAy9E,GAAAN,EAAA1iF,GAEA,MADAuF,EAAAF,QAAAq9E,EAAAr9E,QAAA,KAAArF,EACAuF,EACOq3F,IAAAV,GAAAl8F,GACPoR,EAAAg3E,SAAApoF,EAAAwE,MAAA,IAAAi2E,EAAAz6E,GAEAoR,EAAA7O,KAAAvC,GAAAy6E,EAAAz6E,GAIA,OAAAoR,EAaA,SAAAyrF,GAAAnZ,EAAAoZ,EAAAzvD,GACA,IAAA0vD,EAXA,SAAAx6F,GACA,IACA,OAAA8iF,GAAA9iF,GACG,MAAAU,GAGH,OAAYsC,MAFZy9E,GAAAR,EACA,6CAMAwa,CAAAtZ,EAAAnhF,MACA,GAAAw6F,EAAAx3F,MACA,OAAA8nC,EAAA0vD,EAAAx3F,OAGAm+E,EAAA79E,OAAAk3F,EAAAl3F,OAEA69E,EAAAnhF,KADA,SAAAu6F,EACA5W,GAAA6W,EAAArZ,EAAAkM,cACG,WAAAkN,EACHvX,GAAAwX,GAEAA,EAEAvV,GAAAuV,EAAA,SAAA3rF,GACAsyE,EAAAuZ,OAAA,OAAA7rF,EACAi8B,MAyBA,SAAA6vD,GAAAxZ,EAAAoZ,EAAAzvD,GACA,GAAAq2C,EAAAE,KACA,OAAAv2C,IAEA,iBAAAq2C,EAAAnhF,KACAs6F,GAAAnZ,EAAAoZ,EAAAzvD,GA1BA,SAAAq2C,EAAAoZ,EAAAzvD,GACAm6C,GAAA9D,EAAAnhF,KAAA,SAAA46F,GACAzZ,EAAAuZ,OAAA,OAAAE,EAEAzZ,EAAA79E,OAAA69E,EAAAnhF,KAAA+xB,MAAAovD,EAAAnhF,KAAAsD,QAAA,EACA,WAAAi3F,EACA/V,GAAArD,EAAAnhF,KAAA,SAAA4jF,GACAzC,EAAAnhF,KAAA4jF,EACA94C,MAEK,WAAAyvD,EACL7V,GAAAvD,EAAAnhF,KAAA,SAAA8jF,GACA3C,EAAAnhF,KAAA8jF,EACAh5C,MAGAA,MAYA+vD,CAAA1Z,EAAAoZ,EAAAzvD,GAkDA,SAAAgwD,GAAAC,EAAA55B,EAAA65B,EAAA5rC,EACAlzD,EAAAwnE,EAAAu3B,EAAAnB,GAEA,GAlzFA,SAAAvT,EAAApmF,GAOA,IANA,IAKAo0E,EALA0R,EAAAM,EAAAtkF,QACAi5F,EAAA/6F,EAAAwI,MAAA,KACAwyF,EAAA95E,SAAA65E,EAAA,OACAE,EAAAF,EAAA,GAGA3mB,EAAA0R,EAAAj+E,OAAA,CACA,GAAAusE,EAAAjoB,MAAA6uC,GAAA5mB,EAAAe,IAAA,KAAA8lB,EACA,SAGA,IADA,IAAAhV,EAAA7R,EAAAe,IAAA,GACAp5E,EAAA,EAAAkL,EAAAg/E,EAAA9iF,OAA0CpH,EAAAkL,EAASlL,IACnD+pF,EAAA3gF,KAAA,CAAoBgnD,IAAAioB,EAAAjoB,IAAA,EAAAgpB,IAAA8Q,EAAAlqF,KAGpB,SAkyFAm/F,CAAAl6B,EAAA+kB,SAAA8U,EAAAnV,SAAA1lF,OAAA25F,EAEA,OADA1qC,EAAAlzD,GAAA8+F,EACAt3B,IAIA,IAAA43B,EAAAn6B,EAAAykB,eAAAzkB,GACAo6B,EAAA,YAAAp6B,IAAAklB,QACA+C,GAAAjoB,EAAAm6B,GACAjV,EAAA,YAAA2U,EAAAnV,SAAAmV,EAAAnV,SAAAQ,QACA+C,GAAA4R,EAAAnV,UACA2V,EAAA,MAAA9xF,KAAAsxF,EAAAnV,SAAA1lF,KAEA,GAAAo7F,IAAAlV,GAAAyT,GAAA0B,EAAA,CACA,IAAA7Y,EAAAqY,EAAAh7F,KACA2iF,EAAApJ,KAAA+hB,EACA3Y,EAAArJ,IAAA0hB,EAAAnV,SAAA9lF,GACAi7F,EAAAnB,GAAAlX,EAAAmX,GAGA,IAAA7R,EAAA9wC,GAAAgqB,EAAA+kB,SAAA8U,EAAAnV,SAAAK,SAAA,GAAA6U,GAOA,GALAjB,IACAyB,GAAAlV,GAAA,aAAA4B,EAAAjB,YACAuU,GAAA,aAAAtT,EAAAjB,WACAuU,IAAAlV,GAAA,eAAA4B,EAAAjB,WAEA,CACA,IAAAnkF,EAAA49E,GAAAb,GAEA,OADAxwB,EAAAlzD,GAAA2G,EACA6gE,IAGA,IAAA+3B,EAAAT,EAAAnV,SAAA1lF,IACA66F,EAAAnV,SAAAK,SAAA+B,EAAA9B,KACA6U,EAAAhS,YAAAf,EAAAe,aAAA,GAEA7nB,EAAAu6B,UACAV,EAAAnV,SAAA6V,QAAAv6B,EAAAu6B,SAIA,IAAAC,EAAA/V,GAAAoV,EAAAnV,UACA+V,EAAAxS,GAAA4R,EAAAnV,SAAA8V,GAIAE,EAAAN,IAAAK,EAAA,EACAL,EAAAK,GAAA,IAWAX,EAAAD,EAAAW,EAAAC,EARAH,IAAAE,EAEAC,EAGAxS,GAAA4R,EAAAnV,SAAA4V,IAIA,EAAAI,EAAA3/F,EAAAwnE,GAOA,SAAAo4B,GAAAf,EAAAgB,EAAA7O,EAAA8O,EAAAC,EAAA7sC,EACA6rC,EAAAt7B,EAAAu8B,GAGAnB,KAAA,IA0BA,IAAAjB,EAAAn6B,EAAAktB,UACAsP,EAAA,IAAAriB,EAEAsiB,EAAA,EACAC,EAAAN,EAAAz4F,OAEA,SAAAg5F,MACAF,IAAAC,GAAAH,GACAA,IAIAH,EAAA7mF,QAAA,SAAAqnF,EAAAC,GAEA,GAAAD,EAAAjjB,KAAA+P,GAAAkT,EAAAjjB,KAAA,CACA,IAAAluB,EAAAmxC,EAAAjQ,SAAA,2BACAY,EAAA9hC,GAAAmxC,EAAA,CAA4Bj+F,IAAA29F,GAAQ,SAAAp5F,EAAA+L,GACpCwgD,EAAAotC,GAAA35F,GAAA+L,EACA0tF,UAJA,CASA,IAAAv8F,EAAAw8F,EAAA1W,SAAA9lF,GACAo8F,EAAA5zF,IAAAxI,IACAs8F,IACAF,EAAAp/F,IAAAgD,GAAAuF,KAAA,CAAAi3F,EAAAC,KAEAL,EAAAz1F,IAAA3G,EAAA,EAAAw8F,EAAAC,QAMAL,EAAAjnF,QAAA,SAAA+nE,EAAAl9E,GACA,IAAAq9E,EAAA,EAEA,SAAAqf,MACArf,EAAAH,EAAA35E,OACAo5F,IAEAJ,IAGA,SAAAI,IACA,IAAAv/F,EAAA8/E,EAAAG,GACAmf,EAAAp/F,EAAA,GACAq/F,EAAAr/F,EAAA,GAEA,GAAA6+F,EAAAzzF,IAAAxI,GACA+6F,GAAAC,EAAAiB,EAAAj/F,IAAAgD,GAAAw8F,EAAAntC,EACAotC,EAAAC,EAAAxB,EAAAnB,OACO,CAEP,IAAA7R,EAAA9wC,GAAA,GAAAolD,EAAA1W,SAAAK,SAAA,GAAA6U,GACAwB,EAAA1W,SAAAK,SAAA+B,EAAA9B,KACAoW,EAAAvT,YAAAf,EAAAe,aAAA,GAhFA,SAAAgS,EAAAwB,EAAA1xD,GAEA,IAAA6wD,EAAA/V,GAAAoV,EAAAnV,UACAQ,EAAA+C,GAAA4R,EAAAnV,SAAA8V,GACA,kBAAAh8B,GAAA0mB,EAEA,OADAj3B,EAAAotC,GAAA/b,GAAAd,EAAA,WACA70C,IAMA,GAFAgvD,GApBA,SAAAkB,GACA,kBAAAA,EAAAnV,SAAAK,SAAA,GAAA5Q,IAAA,GAAAoE,OAmBAijB,CAAA3B,GAEA,CACA,IAAAn4F,EAAA49E,GAAAb,GAEA,OADAxwB,EAAAotC,GAAA35F,EACAioC,IAKAmwD,EAAAD,EAAAW,EAAAtV,KAAA,EAFAA,EAAA,IAGAmW,EAAA1xD,GA4DA8xD,CAAAL,EAAAC,EAAAC,IAGAC,MAMA,IAAAG,GAAA,EAKAC,GAAA,iBAGAC,GAAA,cAEAC,GAAA,eAGAC,GAAA,mBAIAC,GAAA,aAEAC,GAAA,cAEAC,GAAA,sBAcA,SAAAC,GAAAC,GACA,IACA,OAAA9wC,KAAAiO,UAAA6iC,GACG,MAAA58F,GAEH,OAAW45E,EAAAj5E,EAAQo5D,UAAA6iC,IAInB,SAAAC,GAAAzyD,GACA,gBAAA0yD,GACA,IAAA16F,EAAA,gBACA06F,EAAAj+F,QAAAi+F,EAAAj+F,OAAAyD,QACAF,EAAA06F,EAAAj+F,OAAAyD,MAAAvG,MAAA+gG,EAAAj+F,OAAAyD,MAAAF,SAEAgoC,EAAA21C,GAAAH,GAAAx9E,EAAA06F,EAAAh/F,QAWA,SAAAi/F,GAAA5X,EAAAD,EAAAS,GACA,OACArmF,KAAAq9F,GAAAxX,GACAD,aACA8X,eAAArX,EAAA,QACApH,IAAA4G,EAAA5G,IACAl/E,GAAA8lF,EAAA9lF,IAIA,SAAA49F,GAAAC,GACA,IAAAA,EACA,YAEA,IAAA/X,EApDA,SAAApvB,GAIA,IACA,OAAAjK,KAAAC,MAAAgK,GACG,MAAA/1D,GAEH,OAAW45E,EAAAj5E,EAAQorD,MAAAgK,IA4CnBonC,CAAAD,EAAA59F,MAIA,OAHA6lF,EAAAD,WAAAgY,EAAAhY,WACAC,EAAAQ,QAAA,MAAAuX,EAAAF,eACA7X,EAAA5G,IAAA2e,EAAA3e,IACA4G,EAKA,SAAAiY,GAAA5lB,GACA,IAAAA,EACA,OAAAA,EAEA,IAAAvX,EAAAuX,EAAA6lB,YAAApsF,YAAA,KAIA,OAHAumE,EAAAoB,IAAApB,EAAA6lB,YAAA56C,UAAA,EAAAwd,EAAA,GACAuX,EAAAqB,KAAArB,EAAA6lB,YAAA56C,UAAAwd,EAAA,UACAuX,EAAA6lB,YACA7lB,EAMA,SAAA8lB,GAAAC,EAAAz/F,EAAA0/F,EAAApzD,GACAozD,EAIApzD,EAHAmzD,EAEK,iBAAAA,EACLA,EAEApa,GAAAoa,EAAAz/F,GAJA0kF,GAAA,MAAiC1kF,UAOjCy/F,EAEK,iBAAAA,EACLla,GAAAka,EAAA,SAAA5Z,GACAv5C,EAAAk4C,GAAAqB,MAGAv5C,EAAAmzD,GANAnzD,EAAA,IAWA,SAAAqzD,GAAAjmB,EAAAvY,EAAAy+B,EAAA16B,GACA,IAAAwd,EAAAtkF,OAAAwL,KAAA8vE,EAAAkJ,cAAA,IACA,IAAAF,EAAA59E,OACA,OAAAogE,OAEA,IAAA0Z,EAAA,EAEA,SAAAE,MACAF,IAAA8D,EAAA59E,QAAAogE,GACAA,IAcAwd,EAAAhsE,QAAA,SAAAisE,GACAxhB,EAAAuhB,aAAAvhB,EAAAmY,aAXA,SAAAI,EAAAiJ,GACA,IAAAkd,EAAAnmB,EAAAkJ,aAAAD,GACAuZ,EAAA2D,EAAA3D,OACA0D,EAAAE,YAAAtB,IAAAjgG,IAAA29F,GACA6D,UAAA,SAAA79F,GACA29F,EAAAJ,KAAAv9F,EAAAnB,OAAAsP,OAAAovF,KACA3gB,KAMAkhB,CAAAtmB,EAAAiJ,IAEAjJ,EAAAkJ,aAAAD,GAAAE,MAAA,EACA/D,OASA,SAAAmhB,GAAArvC,EAAA8uC,GACA,OAAA7nE,QAAAq6C,IAAAthB,EAAA75C,IAAA,SAAAqiE,GACA,GAAAA,EAAAM,KAAAN,EAAAM,IAAAkJ,aAAA,CACA,IAAAsd,EAAA9hG,OAAAwL,KAAAwvE,EAAAM,IAAAkJ,cACA,OAAA/qD,QAAAq6C,IAAAguB,EAAAnpF,IAAA,SAAA4rE,GACA,IAAAkd,EAAAzmB,EAAAM,IAAAkJ,aAAAD,GACA,YAAAkd,EAAA,CAGA,IAAAJ,EAAAI,EAAAJ,KACAz/F,EAAA6/F,EAAAhR,aACA,WAAAh3D,QAAA,SAAA0Z,GACAiuD,GAAAC,EAAAz/F,EAAA0/F,EAAA,SAAAl+F,GACA43E,EAAAM,IAAAkJ,aAAAD,GAAA7B,EACAhsD,EAAA+qE,EAAA,2BACA,CAAer+F,SAEf+vC,gBAQA,SAAA4uD,GAAApY,EAAA5I,EAAAygB,GAEA,IAAAQ,EAAA,GACAC,EAAAT,EAAAE,YAAAvB,IACA+B,EAAAV,EAAAE,YAAAtB,IACA+B,EAAAX,EAAAE,YAAArB,IACAt3F,EAAA4gF,EAAAjjF,OAEA,SAAAg6E,MACA33E,GAMA,WACA,IAAAi5F,EAAAt7F,OACA,OAEAs7F,EAAA1pF,QAAA,SAAAwlF,GACA,IAAAsE,EAAAD,EAAAh3F,MAAA,aAAApC,MACAs5F,YAAAhyB,MACAytB,EAAA,KAAAA,EAAA,cACAsE,EAAAT,UAAA,SAAA79F,GACA,IAAAiF,EAAAjF,EAAAnB,OAAAsP,OACAlJ,GAEAm5F,EAAAxtB,OAAAopB,MAhBAwE,GAsBA3Y,EAAArxE,QAAA,SAAA+3E,GACA,IAAAllF,EAAA82F,EAAA92F,MAAA,eACAtK,EAAAkgF,EAAA,KAAAsP,EACAllF,EAAAmrF,OAAAz1F,GAAA8gG,UAAA,SAAA79F,GACA,IAAAu+E,EAAAv+E,EAAAnB,OAAAsP,OACA,oBAAAowE,EACA,OAAA3B,IAEAuhB,EAAAvtB,OAAA2N,GAEA8f,EAAAh3F,MAAA,OACAo3F,WAAAF,YAAAG,KAAAngB,IAEAsf,UAAA,SAAA92B,GACA,IAAA43B,EAAA53B,EAAAloE,OAAAsP,OACA,GAAAwwF,EAAA,CACA,IAAA3E,EAAA2E,EAAAliG,MAAAmiG,UAAA32F,MAAA,SACAi2F,EAAAt5F,KAAAo1F,GACAqE,EAAAztB,OAAA+tB,EAAAE,YACAF,EAAAG,gBAEAliB,QAOA,SAAAmiB,GAAAC,EAAAC,EAAAtiG,GACA,IACA,OACA+gG,IAAAsB,EAAAE,YAAAD,EAAAtiG,IAEG,MAAAwF,GACH,OACAG,MAAAH,IAKA,IAAAo2F,GAAA,IAAA3a,EAEA,SAAAuhB,GAAA9F,EAAAlZ,EAAAlhB,EAAAutB,EAAAwS,EAAA50D,GAWA,IAVA,IACAszD,EACA0B,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EARArE,EAAAlb,EAAA5D,KAUA/gF,EAAA,EAAAkL,EAAA20F,EAAAz4F,OAAwCpH,EAAAkL,EAASlL,IAAA,CACjD,IAAAg8E,EAAA6jB,EAAA7/F,GACAg8E,EAAAoB,KAAA+P,GAAAnR,EAAAoB,OAGApB,EAAA6jB,EAAA7/F,GAAA29F,GAAA3hB,EAAAvY,EAAAktB,UAAAkN,IACA/2F,QAAAm9F,IACAA,EAAAjoB,GAIA,GAAAioB,EACA,OAAAr1D,EAAAq1D,GAGA,IAAAE,GAAA,EACAC,EAAA,EACAlxC,EAAA,IAAAltD,MAAA65F,EAAAz4F,QACA04F,EAAA,IAAAliB,EACAymB,GAAA,EACAhG,EAAArN,EAAAsT,MAAAC,YAAA,gBA6CA,SAAAC,IACAL,GAAA,EACAM,IAQA,SAAAA,IACAP,GAAAC,IAKAD,EAAAQ,UAAAN,EACAJ,EAAA7mB,IAAA+mB,IAqCA,SAAA7W,IACAgX,IAIAtH,GAAApqB,OAAAqe,EAAAsT,MAAA/jG,MACAquC,EAAA,KAAAskB,IAsDA,SAAA6rC,EAAAD,EAAAW,EAAAC,EAAAiF,EACAC,EAAAjF,EAAAW,EAAA1xD,GAEAkwD,EAAAnV,SAAAD,WAAA+V,EACAX,EAAAnV,SAAAQ,QAAAuV,EAEA,IAAA1jB,EAAA8iB,EAAAh7F,KAUA,GATAk4E,EAAAoB,IAAA0hB,EAAAnV,SAAA9lF,GACAm4E,EAAAqB,KAAAyhB,EAAAnV,SAAA1lF,IAEA0gG,IACA3oB,EAAAoU,UAAA,GAGApU,EAAAkJ,cACAxkF,OAAAwL,KAAA8vE,EAAAkJ,cAAA99E,OAEA,OAqEA,SAAA03F,EAAAW,EAAAC,EACAkF,EAAAtE,EAAA1xD,GAGA,IAAAotC,EAAA8iB,EAAAh7F,KAEAo9E,EAAA,EACA8D,EAAAtkF,OAAAwL,KAAA8vE,EAAAkJ,cAEA,SAAA2f,IACA3jB,IAAA8D,EAAA59E,QACA09F,EAAAhG,EAAAW,EAAAC,EACAkF,EAAAtE,EAAA1xD,GAIA,SAAAm2D,IACA7jB,IACA2jB,IAGA7f,EAAAhsE,QAAA,SAAAzX,GACA,IAAA0jF,EAAA6Z,EAAAh7F,KAAAohF,aAAA3jF,GACA,GAAA0jF,EAAAE,KAOAjE,IACA2jB,QARA,CACA,IAAA/gG,EAAAmhF,EAAAnhF,YACAmhF,EAAAnhF,KACAmhF,EAAAmM,OAAAjsE,SAAAs6E,EAAA,IACA,IAAAjB,EAAAvZ,EAAAuZ,QAgDA,SAAAA,EAAA16F,EAAA8qC,GAGAk1D,EAAAr6F,MAAA+0F,GACA6D,UAAA,SAAA79F,GACA,IAAAiF,EAAAjF,EAAAnB,OAAAsP,OACA,GAAAlJ,EACA,OAAAmlC,IAEA,IAAAo2D,EAAA,CACAxG,SACAuD,KAAAj+F,GAEAmhG,EAAAnB,EAAA3mB,IAAA6nB,GACAC,EAAA5C,UAAAzzD,GA7DAs2D,CAAA1G,EAAA16F,EAAAihG,MAjGAI,CAAArG,EAAAW,EAAAC,EACAkF,EAAAtE,EAAA1xD,GAGAw1D,GAAAzE,EACA8E,IAEAK,EAAAhG,EAAAW,EAAAC,EACAkF,EAAAtE,EAAA1xD,GAGA,SAAAk2D,EAAAhG,EAAAW,EAAAC,EACAkF,EAAAtE,EAAA1xD,GAEA,IAAAotC,EAAA8iB,EAAAh7F,KACA6lF,EAAAmV,EAAAnV,SAMA,SAAAyb,EAAA5gG,GACA,IAAA6gG,EAAAvG,EAAAhS,aAAA,GAEA8X,GAAA5T,EAAAxC,kBACA6W,IAAAt9F,OAptHA,SAAA4hF,GACA,IAAAU,EAAA,GAQA,OAPAD,GAAAT,EAAAK,SAAA,SAAAU,EAAAt6B,EACA28B,EAAA3qF,EAAAqhE,GACA,cAAAA,EAAA+Z,QAAAkN,IACAL,EAAAjhF,KAAAgnD,EAAA,IAAA28B,GACAtpB,EAAA+Z,OAAA,aAGA6M,EA2sHAib,CAAAxG,EAAAnV,YAGA0b,KAAAj+F,QACAq7F,GAAA4C,EAAAvG,EAAAnV,SAAA9lF,GAAAq+F,GAGAvY,EAAA5G,IAAAv+E,EAAAnB,OAAAsP,OAGA,IAAA4yF,EAAAhE,GAAA5X,EAAA8V,EACAC,GACAkE,EAAAzmB,IAAAooB,GACAlD,UAAAmD,EAeA,SAAAA,IACAtyC,EAAAotC,GAAA,CACAn5F,IAAA,EACAtD,GAAA8lF,EAAA9lF,GACAI,IAAA0lF,EAAA1lF,KAEA67F,EAAAt1F,IAAAs0F,EAAAnV,SAAA9lF,GAAAi7F,EAAAnV,UAgDA,SAAAmV,EAAA/b,EAAAn0C,GAEA,IAAA62D,EAAA,EACAC,EAAAhlG,OAAAwL,KAAA4yF,EAAAh7F,KAAAohF,cAAA,IAEA,IAAAwgB,EAAAt+F,OACA,OAAAwnC,IAGA,SAAAwyC,MACAqkB,IAAAC,EAAAt+F,QACAwnC,IAIA,SAAA/R,EAAAooD,GACA,IAAAuZ,EAAAM,EAAAh7F,KAAAohF,aAAAD,GAAAuZ,OACA7Z,EAAAof,EAAA5mB,IAAA,CACA4F,MACAqgB,UAAA5E,EAAA,KAAAzb,IAGA4B,EAAA0d,UAAAjhB,EACAuD,EAAAghB,QAAA,SAAAnhG,GAIAA,EAAAohG,iBACAphG,EAAAqhG,kBACAzkB,KAGA,QAAAphF,EAAA,EAAmBA,EAAA0lG,EAAAt+F,OAAsBpH,IACzC68B,EAAA6oE,EAAA1lG,IAhFA8lG,CAAAhH,EAAAnV,EAAA5G,IAAAn0C,GA3CAotC,EAAA6lB,YAAAlY,EAAA9lF,GAAA,KAAA8lF,EAAA1lF,WACA+3E,EAAAoB,WACApB,EAAAqB,KA4CA,IAAA4nB,EAAApB,EAAA1mB,IAAAnB,GAEAipB,EAAA5C,UAAA+C,EACAH,EAAAU,QAzBA,SAAAnhG,GAEAA,EAAAohG,iBACAphG,EAAAqhG,kBACAhC,EAAAh4F,MAAA,eACAmrF,OAAAhb,EAAA6lB,aACAQ,UAAA,SAAA79F,GACAq/F,EAAA1mB,IAAAnB,EAAAx3E,EAAAnB,OAAAsP,QACA0vF,UAAA+C,KArtBA,SAAAvF,EAAAxB,EAAAzvD,GAEA,IAAAixD,EAAAz4F,OACA,OAAAwnC,IAGA,IACAm3D,EADAC,EAAA,EA4BA,SAAAr3F,IACAq3F,IACAnG,EAAAz4F,SAAA4+F,IACAD,EACAn3D,EAAAm3D,GAEAn3D,KA/BAixD,EAAA7mF,QAAA,SAAA8lF,GACA,IAAA9Z,EAAA8Z,EAAAh7F,MAAAg7F,EAAAh7F,KAAAohF,aACAxkF,OAAAwL,KAAA4yF,EAAAh7F,KAAAohF,cAAA,GACA+gB,EAAA,EAEA,IAAAjhB,EAAA59E,OACA,OAAAuH,IAGA,SAAAu3F,EAAAv/F,GACAo/F,EAAAp/F,IACAs/F,IACAjhB,EAAA59E,QACAuH,IAIA,QAAApN,KAAAu9F,EAAAh7F,KAAAohF,aACA4Z,EAAAh7F,KAAAohF,aAAArjF,eAAAN,IACAk9F,GAAAK,EAAAh7F,KAAAohF,aAAA3jF,GACA88F,EAAA6H,KAydAC,CAAAtG,EAAAxB,EAAA,SAAA13F,GACA,GAAAA,EACA,OAAAioC,EAAAjoC,IAKA,WAEA,IAMAy/F,EAAA7C,GAAAC,EANA,CACA5C,GAAAC,GACAC,GACAG,GAAAF,GACAC,IAEA,aACA,GAAAoF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,QAEAo7F,EAAAkE,EAAAlE,KACAmE,QAAAhF,GAAAzyD,GACAszD,EAAAoE,UAAAjF,GAAAzyD,GACAszD,EAAAqE,WAAAlZ,EACAuW,EAAA1B,EAAAE,YAAAxB,IACAiD,EAAA3B,EAAAE,YAAAvB,IACAiD,EAAA5B,EAAAE,YAAAtB,IACAiD,EAAA7B,EAAAE,YAAArB,KACAiD,EAAA9B,EAAAE,YAAApB,KAEAngG,IAAAmgG,IAAAqB,UAAA,SAAA79F,GACA0/F,EAAA1/F,EAAAnB,OAAAsP,OACA8xF,KA2FA,SAAAxoB,GAGA,IAAAuqB,EAAA,GAWA,GAVA3G,EAAA7mF,QAAA,SAAA8lF,GACAA,EAAAh7F,MAAAg7F,EAAAh7F,KAAAohF,cACAxkF,OAAAwL,KAAA4yF,EAAAh7F,KAAAohF,cAAAlsE,QAAA,SAAAytF,GACA,IAAAxhB,EAAA6Z,EAAAh7F,KAAAohF,aAAAuhB,GACAxhB,EAAAE,MACAqhB,EAAAp9F,KAAA67E,EAAAuZ,aAKAgI,EAAAp/F,OACA,OAAA60E,IAEA,IACAt1E,EADAu6E,EAAA,EAQAslB,EAAAxtF,QAAA,SAAAwlF,IAzCA,SAAAA,EAAA5vD,GAEAk1D,EAAAjjG,IAAA29F,GACA6D,UAAA,SAAA79F,GACA,GAAAA,EAAAnB,OAAAsP,OAOAi8B,QAPA,CACA,IAAAjoC,EAAA49E,GAAAD,GACA,uCACAka,GACA73F,EAAA62E,OAAA,IACA5uC,EAAAjoC,KAiCA+/F,CAAAlI,EAAA,SAAAmI,GACAA,IAAAhgG,IACAA,EAAAggG,KAPAzlB,IAAAslB,EAAAp/F,QACA60E,EAAAt1E,OA9GAigG,CAAA,SAAAjgG,GACA,GAAAA,EAEA,OADA09F,GAAA,EACAz1D,EAAAjoC,IA0BA,WAEA,IAAAk5F,EAAAz4F,OACA,OAGA,IAAAy/F,EAAA,EAEA,SAAAzlB,MACAylB,IAAAhH,EAAAz4F,QAvBAw4F,GAAA/B,EAAAiJ,WAAAjH,EAAA7O,EAAA8O,EACAoC,EAAAhvC,EAAA6rC,EAAAt7B,EAAA+gC,GA2BA,SAAAuC,EAAAx7B,GACA,IAAAoe,EAAA8X,GAAAl2B,EAAAloE,OAAAsP,QAEAg3E,GACAmW,EAAAt1F,IAAAm/E,EAAA9lF,GAAA8lF,GAEAvI,IAGA,QAAAphF,EAAA,EAAAkL,EAAA20F,EAAAz4F,OAA0CpH,EAAAkL,EAASlL,IAAA,CACnD,IAAA8+F,EAAAe,EAAA7/F,GACA,GAAA8+F,EAAA1hB,KAAA+P,GAAA2R,EAAA1hB,KACAgE,QADA,CAIA,IAAAuD,EAAAif,EAAA/iG,IAAAi+F,EAAAnV,SAAA9lF,IACA8gF,EAAA0d,UAAA0E,IAtDAC,KAnCAC,KAiVA,SAAAC,GAAA9E,EAAA+E,EAAAtX,EAAAuX,EAAAC,GAWA,IAIAC,EACAC,EACAC,EAEA,SAAAC,EAAAjjG,GACA+iG,EAAA/iG,EAAAnB,OAAAsP,OACA20F,GACAD,EAAAC,EAAAC,EAAAC,GAIA,SAAAE,EAAAljG,GACA8iG,EAAA9iG,EAAAnB,OAAAsP,OACA40F,GACAF,EAAAC,EAAAC,EAAAC,GA8BA,SAAAG,EAAAnjG,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACA,IAAAwwF,EACA,OAAAkE,IAGAA,EAAA,CAAAlE,EAAA5hG,KAAA,CAAA4hG,EAAAliG,OAAAkiG,IA/DA,IAAAiE,IACAA,EAAA,KAQA,mBAAAhF,EAAAwF,QACA,mBAAAxF,EAAAvhE,YACAumE,EAAA,IAAAvX,GAwDA2X,EAAA,CAAoBlE,SApCpB,WACA,IAAAgE,EAAAlgG,OACA,OAAAigG,IAGA,IACAQ,EADAC,EAAAR,IAAAlgG,OAAA,GAEA,GAAA+/F,KAAAroE,MACA,IACA+oE,EAAA9E,YAAAhyB,MAAA+2B,EAAAX,EAAAroE,OACA,EAAAqoE,EAAAY,WACO,MAAAvjG,GACP,iBAAAA,EAAAjE,MAAA,IAAAiE,EAAAwjG,KACA,OAAAX,SAIAQ,EAAA9E,YAAAkF,WAAAH,GAAA,GAEAX,EAAAU,EACAP,EAAA,KACAC,EAAA,KACAnF,EAAAwF,OAAAT,EAAAC,GAAA/E,UAAAoF,EACArF,EAAAvhE,WAAAsmE,EAAAC,GAAA/E,UAAAqF,IAcAtF,EAAAwF,OAAAT,EAAAC,GAAA/E,UAAAoF,EACArF,EAAAvhE,WAAAsmE,EAAAC,GAAA/E,UAAAqF,GACG7X,EACHuS,EAAAa,WAAAkE,EAAA,QAAA9E,UAAAsF,EAEAvF,EAAAa,WAAAkE,GAAA9E,UAAAsF,EA+EA,SAAAO,GAAAzkC,EAAA+/B,EAAA50D,GACA,IAQAu4D,EACAgB,EATA1vF,EAAA,aAAAgrD,KAAAswB,SACAn6E,EAAA,WAAA6pD,KAAAwwB,OACA1yF,EAAA,QAAAkiE,KAAAliE,IACA2K,EAAA,SAAAu3D,KAAAv3D,KACAyyB,EAAA8kC,EAAA9kC,MAAA,EACA8hB,EAAA,iBAAAgjB,EAAAhjB,MAAAgjB,EAAAhjB,OAAA,EACA2nD,GAAA,IAAA3kC,EAAA4kC,cAIA,IAAAn8F,IAEAi8F,GADAhB,EAzCA,SAAA1uF,EAAAmB,EAAAwuF,EAAA7mG,EAAAsuF,GACA,IACA,GAAAp3E,GAAAmB,EACA,OAAAi2E,EACAkT,YAAAhyB,MAAAn3D,EAAAnB,GAAA2vF,GAAA,GAEArF,YAAAhyB,MAAAt4D,EAAAmB,GAAA,GAAAwuF,GAEK,GAAA3vF,EACL,OAAAo3E,EACAkT,YAAAuF,WAAA7vF,GAEAsqF,YAAAkF,WAAAxvF,GAEK,GAAAmB,EACL,OAAAi2E,EACAkT,YAAAkF,WAAAruF,GAAAwuF,GAEArF,YAAAuF,WAAA1uF,GAAAwuF,GAEK,GAAA7mG,EACL,OAAAwhG,YAAAG,KAAA3hG,GAEG,MAAAiD,GACH,OAAYsC,MAAAtC,GAEZ,YAeA+jG,CAAA9vF,EAAAmB,EAAAwuF,EAAA7mG,EAAAkiE,EAAAosB,cACAsX,EAAArgG,SAEA,cAAAqhG,EAAA5nG,MAAA,IAAA4nG,EAAAH,MAGA,OAAAp5D,EAAA21C,GAAAH,GACA+jB,EAAA5nG,KAAA4nG,EAAAvhG,UAIA,IAAA68F,EAAA,CAAA7C,GAAAC,GAAAG,IAEAv9B,EAAAuhB,aACAye,EAAAr6F,KAAA03F,IAEA,IAAAsF,EAAA7C,GAAAC,EAAAC,EAAA,YACA,GAAA2C,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEA,IAAAo7F,EAAAkE,EAAAlE,IACAA,EAAAqE,WAgIA,WACA9iC,EAAAuhB,YACAud,GAAArvC,EAAAuQ,EAAA0kB,QAAAl1B,KAAAu1C,GAEAA,KAnIAtG,EAAAmE,QAAAhF,GAAAzyD,GACA,IAKA81D,EACA+D,EAeA/5B,EArBAk1B,EAAA1B,EAAAE,YAAAxB,IACA+B,EAAAT,EAAAE,YAAAvB,IACAmD,EAAA9B,EAAAE,YAAApB,IACA0H,EAAA/F,EAAA92F,MAAA,eACAqnD,EAAA,GAiDA,SAAAy1C,EAAAlJ,EAAA9V,GACA,IAAAjO,EAAA,CACA73E,GAAA8lF,EAAA9lF,GACAtC,IAAAooF,EAAA9lF,GACA5C,MAAA,CACAgD,IAAAw7F,IAGA9V,EAAAQ,QAEAj+E,IACAgnD,EAAA9pD,KAAAsyE,GAEAA,EAAAz6E,MAAAkpF,SAAA,EACAzO,EAAAM,IAAA,MAEKr9C,KAAA,IACLu0B,EAAA9pD,KAAAsyE,GACAjY,EAAAmY,cAhCA,SAAA+N,EAAAjO,EAAA+jB,GACA,IAAAl+F,EAAAooF,EAAA9lF,GAAA,KAAA47F,EACAiJ,EAAA7nG,IAAAU,GAAA8gG,UAAA,SAAA79F,GAEA,GADAk3E,EAAAM,IAAA4lB,GAAAp9F,EAAAnB,OAAAsP,SAAA,GACA8wD,EAAAqnB,UAAA,CACA,IAAAA,EAAAF,GAAAjB,GACAmB,EAAA1jF,SACAs0E,EAAAM,IAAA8R,WAAAhD,GAGAmX,GAAAvmB,EAAAM,IAAAvY,EAAAy+B,IAuBA0G,CAAAjf,EAAAjO,EAAA+jB,IAKA,SAAAzd,EAAA6mB,GACA,QAAA7oG,EAAA,EAAAkL,EAAA29F,EAAAzhG,OAA6CpH,EAAAkL,GAC7CgoD,EAAA9rD,SAAAq5C,EADsDzgD,IAAA,CAItD,IAAA8oG,EAAAD,EAAA7oG,GACA,GAAA8oG,EAAAhiG,OAAAoF,EAEAgnD,EAAA9pD,KAAA0/F,OAFA,CAKA,IAAAnf,EAAA8X,GAAAqH,GAEAH,EADAhf,EAAAD,WACAC,KAIA,SAAA0d,EAAA0B,EAAAF,EAAA1F,GACAA,IAGAnhB,EAAA6mB,GACA31C,EAAA9rD,OAAAq5C,GACA0iD,EAAAG,YAYA,SAAAkF,IACA,IAAAQ,EAAA,CACAC,WAAAvE,EACAptF,OAAAmsD,EAAA9kC,KACAm9C,KAAA5oB,GAIAuQ,EAAAusB,iBAAAzsF,IAAAklG,IACAO,EAAAhZ,WAAAyY,GAEA75D,EAAA,KAAAo6D,GAYA,OA/HAhF,EAAAnjG,IAAAmgG,IAAAqB,UAAA,SAAA79F,GACAkgG,EAAAlgG,EAAAnB,OAAAsP,OAAA+xF,UAIAjhC,EAAAusB,aAQAthB,EAPA,SAAAlqE,GACAA,EAAAnB,OAAAsP,QAAAnO,EAAAnB,OAAAsP,OAAAvL,OAAA,IACAqhG,EAAAjkG,EAAAnB,OAAAsP,OAAA,KAFAgwF,EAoBAM,WAAA,aAAAZ,UAZA,SAAA79F,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACAu2F,OAAA3lG,EAIA,OAHA4/F,KAAA5hG,MACA2nG,EAAA/F,EAAA5hG,KAEAmtE,EAAA,CACArrE,OAAA,CACAsP,OAAA,CAAAu2F,QAyGAf,GAAA,IAAA1nD,OAAA,EAGAv0C,EA7NA,SAAAA,EAAA03F,EAAAyD,GAEA,IAAAE,EAAA,IAAAvhG,MAAAkG,EAAA9E,QACAqC,EAAA,EACAyC,EAAA8M,QAAA,SAAAzX,EAAAsK,GACA+3F,EAAA/iG,IAAAU,GAAA8gG,UAAA,SAAA92B,GACAA,EAAAloE,OAAAsP,OACA40F,EAAA17F,GAAA0/D,EAAAloE,OAAAsP,OAEA40F,EAAA17F,GAAA,CAA8BtK,MAAAuF,MAAA,eAE9B2C,IACAyC,EAAA9E,QACAigG,EAAAn7F,EAAAq7F,EAAA,OAiNA4B,CAAA1lC,EAAAv3D,KAAA03F,EAAAyD,IAEA,IAAA5mD,EA1PA,SAAA2hD,EAAA+E,EAAAz4B,GACA,sBAAA0zB,EAAAwF,OAAA,CAMA,IAAAxyF,EAAA,GAgBAgtF,EAAAa,WAAAkE,GAAA9E,UAdA,SAAA79F,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACAwwF,GACA/tF,EAAAhM,KAAA+5F,EAAAliG,OACAkiG,EAAAG,YAEA50B,EAAA,CACArrE,OAAA,CACAsP,OAAAyC,WAdAgtF,EAAAwF,OAAAT,GAAA9E,UAAA3zB,EAwPAk5B,CAAAhE,EAAAuD,EAtCA,SAAA3iG,GACA,IAAA4Q,EAAA5Q,EAAAnB,OAAAsP,OACA8wD,EAAAosB,aACAz6E,IAAAkE,WAEA0oE,EAAA5sE,UAqCA8xF,GAAAtD,EAAAuD,EAAA1jC,EAAAosB,WAAApvC,EAAA9hB,EAAA0oE,GAkDA,IAAA+B,IAAA,EACAp4F,GAAA,GAaA,SAAAq4F,MACAD,IAAAp4F,GAAA5J,SAGAgiG,IAAA,EACAp4F,GAAApF,OAAAoF,IAgBA,SAAAo8C,GAAAqW,EAAAutB,EAAArO,EAAA6gB,GAGA,IAFA//B,EAAAxuB,EAAAwuB,IAEAgsB,WAAA,CACA,IAAA5rF,EAAA8+E,EAAA,IAAA1T,KAGA,OAFA8tB,GAAA3xF,YAAAu3E,EAAA9+E,EAAAmtF,EAAAvtB,GACAs5B,GAAApqB,OAAAgQ,GACA,CACAhqC,OAAA,WACAokD,GAAAhzF,eAAA44E,EAAA9+E,KAKA,IAAAylG,EAAA7lC,EAAAu5B,SAAA,IAAArf,EAAAla,EAAAu5B,SAEAv5B,EAAAuf,MAAAvf,EAAAuf,OAAA,EACA,IAAAwK,EAAA/pB,EAAAuf,MAEAviC,EAAA,UAAAgjB,IAAAhjB,OAAA,EACA,IAAAA,IACAA,EAAA,GAGA,IAKAyhD,EACA2B,EACAD,EACA8E,EARAx1C,EAAA,GACAq2C,EAAA,EACA3wF,EAAA8rE,GAAAjhB,GACA+lC,EAAA,IAAA5rB,EA0FA,SAAA6rB,EAAAztB,EAAA+G,EAAA4G,EAAAniB,GACA,GAAAmiB,EAAA5G,QAEA,OAAAvb,IAGA,GAAAmiB,EAAAD,aAAA1N,EAAAqB,KAEA,OAAA7V,EAAAmiB,EAAA3N,GAIA,IAAA0tB,EAAA1tB,EAAAoB,IAAA,KAAAuM,EAAAD,WACAgf,EAAA7nG,IAAA6oG,GACArH,UAAA,SAAA79F,GACAgjE,EAAAmiB,EAAAiY,GAAAp9F,EAAAnB,OAAAsP,UAqBA,SAAAspE,IACAxY,EAAA4pB,SAAA,MACAn6B,UACA2/B,SAAArF,IAcA,IAAAmc,EAAA,CAAA/I,GAAAC,IACAp9B,EAAAuhB,aACA2kB,EAAAvgG,KAAA03F,IAEA,IAAAsF,EAAA7C,GAAAC,EAAAmG,EAAA,YACA,GAAAvD,EAAAt/F,MACA,OAAA28D,EAAA4pB,SAAA+Y,EAAAt/F,QAEAo7F,EAAAkE,EAAAlE,KACAmE,QAAAhF,GAAA59B,EAAA4pB,UACA6U,EAAAqE,WApBA,YACA9iC,EAAAgsB,YAAAhsB,EAAAuhB,YAGAud,GAAArvC,GAAAD,KAAAgpB,GAEAA,KAgBA4nB,EAAA3B,EAAAE,YAAAvB,IACA+C,EAAA1B,EAAAE,YAAAxB,IACA8H,EAAA7E,EAAAh4F,MAAA,eAKAq7F,GAAArD,EAHApgC,EAAAuf,QAAAvf,EAAAosB,WACAkT,YAAAkF,WAAAxkC,EAAAuf,OAAA,QAEAvf,EAAAosB,WAAApvC,EA3JA,SAAAsoD,EAAAF,EAAA1F,GACA,GAAAA,GAAA4F,EAAA3hG,OAAA,CAIA,IAAAwiG,EAAA,IAAA5jG,MAAA+iG,EAAA3hG,QACAyiG,EAAA,IAAA7jG,MAAA+iG,EAAA3hG,QA+DA85E,EAAA,EACA2nB,EAAA7vF,QAAA,SAAA/X,EAAAjB,IAgCA,SAAAg8E,EAAA+G,EAAAvb,GACA,GAAA8hC,MAAAj9F,IAAA2vE,EAAAoB,KACA,OAAA5V,IAGA,IAAAmiB,EAAA6f,EAAA3oG,IAAAm7E,EAAAoB,KACA,GAAAuM,EACA,OAAA8f,EAAAztB,EAAA+G,EAAA4G,EAAAniB,GAGAo8B,EAAA/iG,IAAAm7E,EAAAoB,KAAAilB,UAAA,SAAA79F,GACAmlF,EAAA8X,GAAAj9F,EAAAnB,OAAAsP,QACA62F,EAAAh/F,IAAAwxE,EAAAoB,IAAAuM,GACA8f,EAAAztB,EAAA+G,EAAA4G,EAAAniB,IA1CAsiC,CAFAlI,GAAA3gG,GACA8nG,EAAA/oG,GACA,SAAA2pF,EAAAogB,GACAF,EAAA7pG,GAAA2pF,EACAigB,EAAA5pG,GAAA+pG,IACA7oB,IAAA6nB,EAAA3hG,QArCA,WAEA,IADA,IAAA4rF,EAAA,GACAhzF,EAAA,EAAAkL,EAAA0+F,EAAAxiG,OAA+CpH,EAAAkL,GAC/Cq+F,IAAA9oD,EADwDzgD,IAAA,CAIxD,IAAA+pG,EAAAH,EAAA5pG,GACA,GAAA+pG,EAAA,CAGA,IAAApgB,EAAAkgB,EAAA7pG,GACAgzF,EAAA5pF,KAAA4gG,EAAArgB,EAAAogB,KAGA5vE,QAAAq6C,IAAAwe,GAAA//B,KAAA,SAAA7F,GACA,QAAAptD,EAAA,EAAAkL,EAAAkiD,EAAAhmD,OAA6CpH,EAAAkL,EAASlL,IACtDotD,EAAAptD,IACAyjE,EAAAyf,SAAA91B,EAAAptD,MAGOq0E,MAAA5Q,EAAA4pB,UAEPkc,IAAA9oD,GACA0iD,EAAAG,WAeA2G,OArEA,SAAAD,EAAArgB,EAAAogB,GACA,IAAAtnC,EAAAgB,EAAAmqB,cAAAmc,EAAApgB,EAAAlmB,GACA+pB,EAAA/qB,EAAAsgB,IAAA4G,EAAA5G,IAEA,IAAAmnB,EAAAtxF,EAAA6pD,GACA,uBAAAynC,EACA/vE,QAAA8lB,OAAAiqD,GAGAA,GAGAX,IACA9lC,EAAAsvB,aACA7/B,EAAA9pD,KAAAq5D,GAIAgB,EAAAuhB,aAAAvhB,EAAAmY,aACA,IAAAzhD,QAAA,SAAA0Z,GACAouD,GAAA8H,EAAAtmC,EAAAy+B,EAAA,WACAK,GAAA,CAAA9/B,GAAAgB,EAAA0kB,QAAAl1B,KAAA,WACApf,EAAA4uB,SAKAtoC,QAAA0Z,QAAA4uB,IAjBAtoC,QAAA0Z,aA4IA,IACAs2D,GADAC,GAAA,IAAAxsB,EAEAysB,GAAA,IAAAzsB,EAEA,SAAA0sB,GAAA7mC,EAAA70B,GACA,IAAAoiD,EAAAhtF,MAlNA,SAAA4K,EAAAggC,EAAAusC,GACAnqE,GAAA5H,KAAA,WACAwF,EAAA,SAAAjI,EAAA+L,IArBA,SAAAw8C,EAAAvoD,EAAA+L,EAAAyoE,GACA,IACAjsB,EAAAvoD,EAAA+L,GACG,MAAA/L,GAIHw0E,EAAAjyE,KAAA,QAAAvC,IAeA4jG,CAAA37D,EAAAjoC,EAAA+L,EAAAyoE,GACAiuB,IAAA,EACMtrB,IAAS,WACfurB,WAIAA,KA0MAmB,CAAA,SAAAC,IAKA,SAAAzZ,EAAAvtB,EAAA70B,GAEA,IAAA+zC,EAAAlf,EAAAljE,KAEAijG,EAAA,KA4BA,SAAAkH,EAAAxI,EAAAtzD,GACA,IAAAg1D,EAAA1B,EAAAE,YAAAxB,IACAgD,EAAA+G,YAAA,mCAA8DC,QAAA,IAE9DhH,EAAAX,aAAAZ,UAAA,SAAA92B,GACA,IAAA43B,EAAA53B,EAAAloE,OAAAsP,OACA,GAAAwwF,EAAA,CACA,IAAAxZ,EAAAwZ,EAAAliG,MACAkpF,EAAA+C,GAAAvD,GACAA,EAAA6X,eAAArX,EAAA,QACAyZ,EAAAzmB,IAAAwM,GACAwZ,EAAAG,gBAEA10D,KAYA,SAAAi8D,EAAA3I,EAAA16B,GACA,IAAAsjC,EAAA5I,EAAAE,YAAAnB,IACA2C,EAAA1B,EAAAE,YAAAxB,IACA+B,EAAAT,EAAAE,YAAAvB,IAEAsC,EAAAS,EAAAX,aACAE,EAAAd,UAAA,SAAA92B,GACA,IAAA43B,EAAA53B,EAAAloE,OAAAsP,OACA,GAAAwwF,EAAA,CACA,IAAAxZ,EAAAwZ,EAAAliG,MACAwgF,EAAAkI,EAAA9lF,GACAknG,EAAA5d,GAAA1L,GACAsP,EAAArH,GAAAC,GACA,GAAAohB,EAAA,CACA,IAAArB,EAAAjoB,EAAA,KAAAsP,EAGAt4E,EAAAgpE,EAAA,KACA7nE,EAAA6nE,EAAA,MACA51E,EAAA82F,EAAA92F,MAAA,eACAqxC,EAAA6lD,YAAAhyB,MAAAt4D,EAAAmB,GAAA,MACAoxF,EAAAn/F,EAAAo3F,WAAA/lD,GACA8tD,EAAA3I,UAAA,SAAA79F,GAEA,GADAwmG,EAAAxmG,EAAAnB,OAAAsP,OAKa,CACb,IAAA7O,EAAAknG,EAAA/pG,MACA6C,EAAA+9F,cAAA6H,GACAoB,EAAA3tB,IAAAr5E,GAEA6+F,EAAAvtB,OAAA41B,EAAA3H,YACA2H,EAAA1H,gBARAM,EAAAxuB,OAAA+tB,EAAAE,YACAF,EAAAG,iBAWAH,EAAAG,gBAEO97B,GACPA,KAcA,SAAAyjC,EAAA/I,EAAAtzD,GACA,IAAA+zD,EAAAT,EAAAE,YAAAvB,IACA+B,EAAAV,EAAAE,YAAAtB,IACA+B,EAAAX,EAAAE,YAAArB,IAKApc,EAAAie,EAAAn5F,QACAk7E,EAAA0d,UAAA,SAAA79F,GACA,IAAAiF,EAAAjF,EAAAnB,OAAAsP,OACA,IAAAlJ,EACA,OAAAmlC,IAGA+zD,EAAAM,aAAAZ,UAAA,SAAA79F,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACA,IAAAwwF,EACA,OAAAv0D,IAMA,IAJA,IAAAotC,EAAAmnB,EAAAliG,MACA8hF,EAAAogB,EAAAE,WACA1O,EAAAj0F,OAAAwL,KAAA8vE,EAAAkJ,cAAA,IACAgmB,EAAA,GACA9rC,EAAA,EAAuBA,EAAAu1B,EAAAvtF,OAAiBg4D,IAAA,CACxC,IAAA6lB,EAAAjJ,EAAAkJ,aAAAyP,EAAAv1B,IACA8rC,EAAAjmB,EAAAuZ,SAAA,EAEA,IAAAgI,EAAA9lG,OAAAwL,KAAAg/F,GACA,IAAA9rC,EAAA,EAAmBA,EAAAonC,EAAAp/F,OAAoBg4D,IAAA,CACvC,IAAAo/B,EAAAgI,EAAApnC,GACAyjC,EAAA1lB,IAAA,CACA4F,MACAqgB,UAAA5E,EAAA,KAAAzb,IAGAogB,EAAAG,aAWA,SAAA6H,EAAAjJ,GAaA,IAAA2B,EAAA3B,EAAAE,YAAAvB,IACA+C,EAAA1B,EAAAE,YAAAxB,IACAuC,EAAAS,EAAAX,aACAE,EAAAd,UAAA,SAAA79F,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACA,GAAAwwF,EAAA,CAGA,IAAAxZ,EAnBA,SAAA+X,GACA,IAAAA,EAAA59F,KAGA,OADA49F,EAAAvX,QAAA,MAAAuX,EAAAF,eACAE,EAEA,OAAAD,GAAAC,GAaA0J,CAAAjI,EAAAliG,OAsCA,GApCA0oF,EAAAD,WAAAC,EAAAD,YACAA,GAAAC,GAmCAA,EAAA5G,IACA,OAAAsoB,KAlCA,WAGA,IAAA5yF,EAAAkxE,EAAA9lF,GAAA,KACA+V,EAAA+vE,EAAA9lF,GAAA,MACA8gF,EAAAkf,EAAAh4F,MAAA,eAAAo3F,WACAF,YAAAhyB,MAAAt4D,EAAAmB,IAEA0xF,EAAA,EACA3mB,EAAA0d,UAAA,SAAA79F,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACA,IAAAwwF,EAEA,OADAxZ,EAAA5G,IAAAuoB,EACAD,IAEA,IAAAtoB,EAAAogB,EAAAE,WACAtgB,EAAAuoB,IACAA,EAAAvoB,GAEAogB,EAAAG,YAkBAiI,GAdA,SAAAF,IACA,IAAA9F,EAAAhE,GAAA5X,EACAA,EAAAD,WAAAC,EAAAQ,SAEAxF,EAAAif,EAAAzmB,IAAAooB,GACA5gB,EAAA0d,UAAA,WACAc,EAAAG,cAjNAtS,EAAAsT,MAAA,KA8NAtT,EAAAzL,SAAA,EACAyL,EAAA1uF,KAAA,WACA,aAGA0uF,EAAA5T,IAAAoC,EAAA,SAAA5wC,GACAA,EAAA,KAAAoiD,EAAAsT,MAAAkH,cAGAxa,EAAA6D,UAAA,SAAAlQ,EAAA8mB,EAAA78D,GACA+0D,GAAAlgC,EAAAkhB,EAAA8mB,EAAAza,EAAAwS,EAAA50D,IAKAoiD,EAAA7kC,KAAA,SAAAtoD,EAAA4/D,EAAA70B,GACA,IAAAotC,EACA2N,EACAhjF,EACAu7F,EAAAz+B,EAAArhE,IACA,IAAA8/F,EAAA,CACA,IAAAkE,EAAA7C,GAAAC,EACA,CAAA5C,GAAAC,GAAAC,IAAA,YACA,GAAAsF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEAo7F,EAAAkE,EAAAlE,IAGA,SAAAjmB,IACArtC,EAAAjoC,EAAA,CAAqBq1E,MAAA2N,WAAAvnF,IAAA8/F,IAGrBA,EAAAE,YAAAxB,IAAA//F,IAAAgD,GAAAw+F,UAAA,SAAA79F,GAOA,KANAmlF,EAAA8X,GAAAj9F,EAAAnB,OAAAsP,SAQA,OADAhM,EAAA49E,GAAAd,EAAA,WACAxH,IAGA,IAAA8U,EACA,GAAAttB,EAAAx/D,IAQA8sF,EAAAttB,EAAA0vB,OAt6IA,SAAAlvF,EAAA0lF,GAGA,IAFA,IACAtR,EADA0R,EAAAJ,EAAAK,SAAAjkF,QAEAsyE,EAAA0R,EAAAj+E,OAAA,CACA,IAAAskD,EAAAioB,EAAAjoB,IACA65B,EAAA5R,EAAAe,IACAv1E,EAAAomF,EAAA,GACAxmB,EAAAwmB,EAAA,GACAC,EAAAD,EAAA,GACAS,EAAA,IAAAR,EAAA9iF,OAEA6jF,EAAA5S,EAAA4S,QAAA5S,EAAA4S,QAAAllF,QAAA,GAGA,GAFAklF,EAAA7hF,KAAA,CAAkBvF,KAAAusD,MAAAqT,SAElBinB,EACA,QAAA1qF,EAAA,EAAAkL,EAAA+/E,EAAA7jF,OAA2CpH,EAAAkL,EAASlL,IAAA,CACpD,IAAA0rG,EAAAzgB,EAAAjrF,GAGA,GAFA0rG,EAAAt7C,IAAA,IAAAs7C,EAAA7nG,KAEAI,EAEA,OAAAmsD,EAAA,IAAAvsD,EAKA,QAAAu7D,EAAA,EAAAn/D,EAAAiqF,EAAA9iF,OAAwCg4D,EAAAn/D,EAAOm/D,IAC/C2qB,EAAA3gF,KAAA,CAAoBgnD,MAAA,EAAAgpB,IAAA8Q,EAAA9qB,GAAA6rB,YAKpB,UAAAxkF,MAAA,4CAAAkjF,EAAA9lF,GAAA,SAAAI,GAs4IAkvF,CAAA1vB,EAAAx/D,IAAA0lF,GAAAlmB,EAAAx/D,QARA,CACA8sF,EAAApH,EAAAD,WACA,IAAAS,EAAA+C,GAAAvD,GACA,GAAAQ,EAEA,OADAxjF,EAAA49E,GAAAd,EAAA,WACAxH,IAMA,IAAAmmB,EAAAF,EAAAE,YAAAvB,IACAt/F,EAAAooF,EAAA9lF,GAAA,KAAAktF,EAEAqR,EAAAv2F,MAAA,eAAAhL,IAAAU,GAAA8gG,UAAA,SAAA79F,GAKA,IAJAw3E,EAAAx3E,EAAAnB,OAAAsP,UAEAqpE,EAAA4lB,GAAA5lB,KAEAA,EAEA,OADAr1E,EAAA49E,GAAAd,EAAA,WACAxH,IAEAA,OAKA+U,EAAA4C,eAAA,SAAAnS,EAAAkqB,EAAAC,EAAAnoC,EAAA70B,GACA,IAAAszD,EACA,GAAAz+B,EAAArhE,IACA8/F,EAAAz+B,EAAArhE,QACK,CACL,IAAAgkG,EAAA7C,GAAAC,EACA,CAAA5C,GAAAC,GAAAC,IAAA,YACA,GAAAsF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEAo7F,EAAAkE,EAAAlE,IAEA,IAAA1D,EAAAoN,EAAApN,OACAl8F,EAAAspG,EAAAza,aAEA+Q,EAAAE,YAAAtB,IAAAjgG,IAAA29F,GAAA6D,UAAA,SAAA79F,GACA,IAAAu9F,EAAAv9F,EAAAnB,OAAAsP,OAAAovF,KACAD,GAAAC,EAAAz/F,EAAAmhE,EAAA0kB,OAAA,SAAA0jB,GACAj9D,EAAA,KAAAi9D,OAKA7a,EAAAsD,MAAA,SAAA1lD,GACA,IAAA65D,EACA/D,EAEA0B,EAAA7C,GAAAC,EAAA,CAAAxC,GAAAH,IAAA,YACA,GAAAuF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEA,IAAAo7F,EAAAkE,EAAAlE,IACAA,EAAAE,YAAApB,IAAAngG,IAAAmgG,IAAAqB,UAAA,SAAA79F,GACAkgG,EAAAlgG,EAAAnB,OAAAsP,OAAA+xF,UAEAxC,EAAAE,YAAAvB,IAAAoC,WAAA,aAAAZ,UAAA,SAAA79F,GACA,IAAA2+F,EAAA3+F,EAAAnB,OAAAsP,OACA81F,EAAAtF,IAAA5hG,IAAA,GAGA2gG,EAAAqE,WAAA,WACA33D,EAAA,MACAk9D,UAAApH,EACA1U,WAAAyY,EAEAsD,sBAAA/a,EAAAsT,MAAAC,YAAA,sBAKAvT,EAAAoD,SAAA,SAAA3wB,EAAA70B,GACAs5D,GAAAzkC,EAAA+/B,EAAA50D,IAGAoiD,EAAAjB,SAAA,SAAAtsB,GACA,OAAArW,GAAAqW,EAAAutB,EAAArO,EAAA6gB,IAGAxS,EAAAqD,OAAA,SAAAzlD,GAGA40D,EAAA50C,QACAw7C,GAAAh1B,OAAAuN,GACA/zC,KAGAoiD,EAAAa,iBAAA,SAAApQ,EAAA7yC,GACA,IAAAw3D,EAAA7C,GAAAC,EAAA,CAAA5C,IAAA,YACA,GAAAwF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEA,IAAAo7F,EAAAkE,EAAAlE,IACAvd,EAAAud,EAAAE,YAAAxB,IAAA//F,IAAA4gF,GACAkD,EAAA0d,UAAA,SAAA92B,GACA,IAAAyQ,EAAAylB,GAAAl2B,EAAAloE,OAAAsP,QACAqpE,EAGAptC,EAAA,KAAAotC,EAAAgO,UAFAp7C,EAAA21C,GAAAd,MAUAuN,EAAA0B,cAAA,SAAAjR,EAAA4I,EAAAz7C,GACA,IAAA60D,EAAA,CACA7C,GACAC,GACAC,GACAC,IAEAqF,EAAA7C,GAAAC,EAAAC,EAAA,aACA,GAAA2C,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEA,IAAAo7F,EAAAkE,EAAAlE,IAEA0B,EAAA1B,EAAAE,YAAAxB,IAEAgD,EAAA/iG,IAAA4gF,GAAA4gB,UAAA,SAAA92B,GACA,IAAAoe,EAAA8X,GAAAl2B,EAAAloE,OAAAsP,QACAy3E,GAAAT,EAAAK,SAAA,SAAAU,EAAAt6B,EACA28B,EAAA3qF,EAAAqhE,GACA,IAAAstB,EAAA3gC,EAAA,IAAA28B,GACA,IAAA1C,EAAApxE,QAAA83E,KACAttB,EAAA+Z,OAAA,aAGAilB,GAAApY,EAAA5I,EAAAygB,GACA,IAAAzC,EAAA9V,EAAAD,WACAS,EAAAR,EAAAQ,QACA+X,EAAAE,YAAAxB,IAAAzjB,IACAokB,GAAA5X,EAAA8V,EAAAtV,KAEA+X,EAAAmE,QAAAhF,GAAAzyD,GACAszD,EAAAqE,WAAA,WACA33D,MAKAoiD,EAAAiC,UAAA,SAAApvF,EAAA+qC,GACA,IAAAw3D,EAAA7C,GAAAC,EAAA,CAAAvC,IAAA,YACA,GAAAmF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,OAEA,IAAAi5F,EAAAqG,EAAAlE,IACAvd,EAAAob,EAAAqC,YAAAnB,IAAApgG,IAAAgD,GAEA8gF,EAAAghB,QAAAtE,GAAAzyD,GACA+1C,EAAA0d,UAAA,SAAA79F,GACA,IAAAw3E,EAAAx3E,EAAAnB,OAAAsP,OACAqpE,UAGAA,EAAA,YACAptC,EAAA,KAAAotC,IAHAptC,EAAA21C,GAAAd,MAQAuN,EAAAb,UAAA,SAAAnU,EAAAvY,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,WAEAuY,EAAAoS,WACA,IAAA4d,EAAAhwB,EAAAqB,KACAx5E,EAAAm4E,EAAAoB,IAIApB,EAAAqB,KAHA2uB,EAGA,MAAA7mF,SAAA6mF,EAAAv/F,MAAA,eAFA,MAKA,IACAtC,EADA41F,EAAAt8B,EAAArhE,IAEA,IAAA29F,EAAA,CACA,IAAAqG,EAAA7C,GAAAC,EAAA,CAAAvC,IAAA,aACA,GAAAmF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,QAEAi5F,EAAAqG,EAAAlE,KACAyD,QAAAtE,GAAAzyD,GACAmxD,EAAAwG,WAAA,WACAp8F,GACAykC,EAAA,KAAAzkC,IAKA,IACAw6E,EADAsnB,EAAAlM,EAAAqC,YAAAnB,IAEA+K,GACArnB,EAAAsnB,EAAAprG,IAAAgD,IACAw+F,UAAA,SAAA79F,GACA,IAAA0nG,EAAA1nG,EAAAnB,OAAAsP,OACA,GAAAu5F,KAAA7uB,OAAA2uB,EAES,CACT,IAAArnB,EAAAsnB,EAAA9uB,IAAAnB,GACA2I,EAAA0d,UAAA,WACAl4F,EAAA,CAAmBhD,IAAA,EAAAtD,GAAAm4E,EAAAoB,IAAAn5E,IAAA+3E,EAAAqB,MACnB5Z,EAAArhE,KACAwsC,EAAA,KAAAzkC,SANAykC,EAAA21C,GAAAb,OAYAiB,EAAAsnB,EAAApvE,IAAAm/C,IACA2pB,QAAA,SAAAnhG,GAEAoqC,EAAA21C,GAAAb,IACAl/E,EAAAohG,iBACAphG,EAAAqhG,mBAEAlhB,EAAA0d,UAAA,WACAl4F,EAAA,CAAehD,IAAA,EAAAtD,GAAAm4E,EAAAoB,IAAAn5E,IAAA+3E,EAAAqB,MACf5Z,EAAArhE,KACAwsC,EAAA,KAAAzkC,MAMA6mF,EAAAX,aAAA,SAAArU,EAAAvY,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAEA,IAaAt5D,EAbA41F,EAAAt8B,EAAArhE,IACA,IAAA29F,EAAA,CACA,IAAAqG,EAAA7C,GAAAC,EAAA,CAAAvC,IAAA,aACA,GAAAmF,EAAAt/F,MACA,OAAA8nC,EAAAw3D,EAAAt/F,QAEAi5F,EAAAqG,EAAAlE,KACAqE,WAAA,WACAp8F,GACAykC,EAAA,KAAAzkC,IAKA,IAAAtG,EAAAm4E,EAAAoB,IACA6uB,EAAAlM,EAAAqC,YAAAnB,IACAtc,EAAAsnB,EAAAprG,IAAAgD,GAEA8gF,EAAAghB,QAAAtE,GAAAzyD,GACA+1C,EAAA0d,UAAA,SAAA79F,GACA,IAAA0nG,EAAA1nG,EAAAnB,OAAAsP,OACAu5F,KAAA7uB,OAAArB,EAAAqB,MAGA4uB,EAAA72B,OAAAvxE,GACAsG,EAAA,CAAehD,IAAA,EAAAtD,KAAAI,IAAA,OACfw/D,EAAArhE,KACAwsC,EAAA,KAAAzkC,IALAykC,EAAA21C,GAAAd,MAWAuN,EAAAoE,SAAA,SAAA3xB,EAAA70B,GACAmuD,GAAA9wF,mBAAA02E,GAGA,IAAAwpB,EAAA9B,GAAAxpG,IAAA8hF,GACAwpB,KAAAx5F,SACAw5F,EAAAx5F,OAAAi8C,QACAw7C,GAAAh1B,OAAAuN,IAEA,IAAAgC,EAAAynB,UAAAC,eAAA1pB,GAEAgC,EAAA0d,UAAA,WAEAgI,GAAAj1B,OAAAuN,GACAR,KAAAQ,KAAAV,qBACAA,aAAAU,GAEA/zC,EAAA,MAAsBznC,IAAA,KAGtBw9E,EAAAghB,QAAAtE,GAAAzyD,IAGA,IAAA1qC,EAAAkmG,GAAAvpG,IAAA8hF,GAEA,GAAAz+E,EAGA,OAFAs/F,EAAAt/F,EAAAs/F,IACAxS,EAAAsT,MAAApgG,EAAAlC,OACW87E,IAAS,WACpBlvC,EAAA,KAAAoiD,KAIA,IAAArM,EAAAynB,UAAA19C,KAAAi0B,EAAAge,IACA0J,GAAA7/F,IAAAm4E,EAAAgC,GAEAA,EAAA2nB,gBAAA,SAAA9nG,GACA,IAAAq8E,EAAAr8E,EAAAnB,OAAAsP,OACA,GAAAnO,EAAA+nG,WAAA,EACA,OAlkBA,SAAA1rB,GACA,IAAA+iB,EAAA/iB,EAAA2rB,kBAAA5L,GAAA,CAAoDnzC,QAAA,OACpDozB,EAAA2rB,kBAAA3L,GAAA,CAAwC4L,eAAA,IACxC9B,YAAA,6BAAkDC,QAAA,IAClD/pB,EAAA2rB,kBAAA1L,GAAA,CAAwCrzC,QAAA,WACxCozB,EAAA2rB,kBAAAxL,GAAA,CAAsCvzC,QAAA,KAAAg/C,eAAA,IACtC5rB,EAAA2rB,kBAAAtL,IAGA0C,EAAA+G,YAAA,mCAA8DC,QAAA,IAG9D/pB,EAAA2rB,kBAAAvL,GAAA,CAAuCxzC,QAAA,QAGvC,IAAAo1C,EAAAhiB,EAAA2rB,kBAAAzL,GACA,CAAO0L,eAAA,IACP5J,EAAA8H,YAAA,aACA9H,EAAA8H,YAAA,yBAA0DC,QAAA,IAgjB1D8B,CAAA7rB,GAIA,IAAAqhB,EAAA19F,EAAAmoG,cAAAjJ,YAIAl/F,EAAA+nG,WAAA,GA/hBA,SAAA1rB,GACAA,EAAA2rB,kBAAAvL,GAAA,CAAuCxzC,QAAA,QACvCk9C,YAAA,6BAAkDC,QAAA,IA8hBlDgC,CAAA/rB,GAEAr8E,EAAA+nG,WAAA,GA7eA,SAAA1rB,GACA,IAAAgiB,EAAAhiB,EAAA2rB,kBAAAzL,GACA,CAAO0L,eAAA,IACP5J,EAAA8H,YAAA,aACA9H,EAAA8H,YAAA,yBAA0DC,QAAA,IA0e1DiC,CAAAhsB,GAGA,IAAAisB,EAAA,CACApC,EACAG,EACAI,EACAE,GAGAnrG,EAAAwE,EAAA+nG,YAEA,SAAA79F,IACA,IAAAq+F,EAAAD,EAAA9sG,EAAA,GACAA,IACA+sG,GACAA,EAAA7K,EAAAxzF,GAIAA,IAGAi2E,EAAA0d,UAAA,SAAA79F,IAEAg/F,EAAAh/F,EAAAnB,OAAAsP,QAEAq6F,gBAAA,WACAxJ,EAAA50C,QACAw7C,GAAAh1B,OAAAuN,IAGA6gB,EAAA6C,QAAA,SAAA7hG,GACA89E,EAAA,wCAAA99E,EAAAnB,OAAAyD,OACA08F,EAAA50C,QACAw7C,GAAAh1B,OAAAuN,IAUA,IAOAuhB,EACAQ,EACAH,EACAiH,EAVAtJ,EAAAsB,EAAAE,YAAA,CACA1C,GACAE,GACAN,IACA,aAEAqM,GAAA,EAMA,SAAAC,SACA,IAAA3I,GAAA0I,IAGAjc,EAAAsT,MAAA,CACA/jG,KAAAoiF,EACA6oB,aACAjH,eAGA6F,GAAA5/F,IAAAm4E,EAAA,CACA6gB,MACAxhG,OAAAgvF,EAAAsT,QAEA11D,EAAA,KAAAoiD,IAGA,SAAAmc,IACA,YAAAzI,QAAA,IAAAR,EAAA,CAGA,IAAAkJ,EAAAzqB,EAAA,MACAyqB,KAAAlJ,EACAsH,EAAAtH,EAAAkJ,GAEAlJ,EAAAkJ,GAAA5B,EAAAv8B,KAEAi1B,EAAAQ,WACAxC,EAAAE,YAAApB,IAAA7jB,IAAA+mB,IAMAhC,EAAAE,YAAApB,IAAAngG,IAAAmgG,IAAAqB,UAAA,SAAA79F,GACA0/F,EAAA1/F,EAAAnB,OAAAsP,QAAA,CAAoC9O,GAAAm9F,IACpCmM,KA36BA,SAAAjL,EAAA16B,GACA06B,EAAAE,YAAAxB,IAAA/0F,MAAA,kBACApC,MAAAs5F,YAAAG,KAAA,MAAAb,UAAA,SAAA79F,GACAgjE,EAAAhjE,EAAAnB,OAAAsP,SA86BA06F,CAAAnL,EAAA,SAAAz4F,GACAi7F,EAAAj7F,EACA0jG,MAMAhD,KAEAA,GAr9BA,SAAAjI,GACA,WAAA/nE,QAAA,SAAA0Z,GACA,IAAAy5D,EAAAtmB,GAAA,MACArC,EAAAud,EAAAE,YAAAlB,IAAA/jB,IAAAmwB,EAAA,OAEA3oB,EAAA0d,UAAA,WACA,IAAAkL,EAAAzyC,UAAAC,UAAAvkC,MAAA,iBACAg3E,EAAA1yC,UAAAC,UAAAvkC,MAAA,UAGAqd,EAAA25D,IAAAD,GACApoF,SAAAooF,EAAA,aAGA5oB,EAAAghB,QAAAzD,EAAAmE,QAAA,SAAA7hG,GAGAA,EAAAohG,iBACAphG,EAAAqhG,kBACAhyD,GAAA,MAEGwgC,MAAA,WACH,WA+7BAo5B,CAAAvL,IAGAiI,GAAAl3C,KAAA,SAAAtmD,GACA43F,EAAA53F,EACAugG,MAKAhL,EAAAqE,WAAA,WACA0G,GAAA,EACAC,KAEAhL,EAAAmE,QAAAhF,GAAAzyD,IAGA+1C,EAAAghB,QAAA,WACA,IAAAp5C,EAAA,8DACA+1B,EAAA,QAAA/1B,GACA3d,EAAA21C,GAAAH,GAAA73B,KA3tBAnkD,CAAA4oF,EAAAvtB,EAAAgnC,IACG77D,EAAAoiD,EAAAhiF,aA8tBHs7F,GAAArb,MAAA,WAMA,IAGA,0BAAAmd,WAAA,oBAAArJ,YACG,MAAAv+F,GACH,WA4DA,IAAAkpG,GAAA,GACAC,GAAA,GACAC,GAAA,IACAC,GAAA,IAEAC,GAAA,GAEA,SAAAC,GAAAryB,GACA,IAAAM,EAAAN,EAAAM,KAAAN,EAAAv0E,GACAwtF,EAAA3Y,KAAAkJ,aACAyP,GAGAj0F,OAAAwL,KAAAyoF,GAAA37E,QAAA,SAAAytF,GACA,IAAAxhB,EAAA0P,EAAA8R,GACAxhB,EAAAnhF,KAAA6jF,GAAA1C,EAAAnhF,KAAAmhF,EAAAkM,gBAIA,SAAA6c,GAAAnqG,GACA,iBAAA2J,KAAA3J,GACA,WAAA07D,mBAAA17D,EAAAkC,MAAA,IAEA,UAAAyH,KAAA3J,GACA,UAAA07D,mBAAA17D,EAAAkC,MAAA,IAEAw5D,mBAAA17D,GAGA,SAAAoqG,GAAAjyB,GACA,OAAAA,EAAAkJ,cAAAxkF,OAAAwL,KAAA8vE,EAAAkJ,cAIA/qD,QAAAq6C,IAAA9zE,OAAAwL,KAAA8vE,EAAAkJ,cAAA7rE,IAAA,SAAA9X,GACA,IAAAqqG,EAAA5vB,EAAAkJ,aAAA3jF,GACA,GAAAqqG,EAAA9nG,MAAA,iBAAA8nG,EAAA9nG,KACA,WAAAq2B,QAAA,SAAA0Z,GACA20C,GAAAojB,EAAA9nG,KAAA+vC,KACOof,KAAA,SAAA20B,GACPgkB,EAAA9nG,KAAA8jF,OATAztD,QAAA0Z,UAyBA,SAAAq6D,GAAA3tG,EAAAkjE,GAEA,GAZA,SAAAA,GACA,IAAAA,EAAApc,OACA,SAEA,IAAA4V,EAAA6oB,GAAAriB,EAAApc,QAAA4V,SACA,eAAAA,GAAA,UAAAA,EAOAkxC,CAAA1qC,GAAA,CACA,IAAAkf,EAAAlf,EAAAljE,KAAAm/D,OAAA+D,EAAApc,OAAAjgD,QAGA7G,EADAkjE,EAAApc,OAAA/5C,QAAA,YACAiyD,mBAAAojB,GAGA,IAAAoD,EAAAD,GAAAvlF,IACAwlF,EAAA7wB,MAAA6wB,EAAA7nB,YACA6nB,EAAAn0B,KAAA,CAAgBqM,SAAA8nB,EAAA7wB,KAAAgJ,SAAA6nB,EAAA7nB,WAKhB,IAAAunB,EAAAM,EAAA9iD,KAAA31B,QAAA,iBAAAb,MAAA,KAUA,OARAs5E,EAAAlF,GAAA4E,EAAA35E,OAEA,IAAAi6E,EAAAlF,GAAA5nE,QAAA,OACA8sE,EAAAlF,GAAAthB,mBAAAwmB,EAAAlF,KAGAkF,EAAA9iD,KAAAwiD,EAAA34E,KAAA,KAEAi5E,EAIA,SAAAqoB,GAAA3qC,EAAAxgC,GACA,OAAAorE,GAAA5qC,IAAAod,GAAA,IAAA59C,GAIA,SAAAorE,GAAA5qC,EAAAxgC,GAGA,IAAAqrE,EAAA7qC,EAAAxgC,KAAA,OAIA,OAAAwgC,EAAAxG,SAAA,MAAAwG,EAAA1F,MACA0F,EAAA3F,KAAA,IAAA2F,EAAA3F,KAAA,IACA,IAAA2F,EAAAxgC,KAAAqrE,EAAArrE,EAGA,SAAAsrE,GAAAC,GACA,UAAA9tG,OAAAwL,KAAAsiG,GAAAn1F,IAAA,SAAAslD,GACA,OAAAA,EAAA,IAAAY,mBAAAivC,EAAA7vC,MACG7xD,KAAA,KAcH,SAAA2hG,GAAAhrC,EAAA70B,GAGA,IAAAoiD,EAAAhtF,KAEA+5D,EAAAmwC,GAAAzqC,EAAAljE,KAAAkjE,GACAirC,EAAAN,GAAArwC,EAAA,IAEA0F,EAAAxuB,EAAAwuB,GAEA,IAuFAkrC,EAvFAC,EAAA,SAAAjxC,EAAAnmB,GAOA,IALAA,KAAA,IACAq3D,QAAAr3D,EAAAq3D,SAAA,IAAAhZ,GAEAr+C,EAAAs3D,YAAA,UAEArrC,EAAA7R,MAAAmM,EAAAnM,KAAA,CACA,IAAAm9C,EAAAtrC,EAAA7R,MAAAmM,EAAAnM,KACA2I,EAAAw0C,EAAA9wC,SAAA,IAAA8wC,EAAA7wC,SACA/N,EAAA22B,GAAA3/B,SAAAoY,mBAAAhF,KACA/iB,EAAAq3D,QAAArkG,IAAA,yBAAA2lD,GAGA,IAAA0+C,EAAAprC,EAAAorC,SAAA,GAWA,OAVAnuG,OAAAwL,KAAA2iG,GAAA71F,QAAA,SAAAzX,GACAi2C,EAAAq3D,QAAA3uC,OAAA3+D,EAAAstG,EAAAttG,MArCA,SAAAkiE,GACA,IAAAurC,EAAA,oBAAAl0C,qBAAAC,UACAD,UAAAC,UAAAttD,cAAA,GACAwhG,GAAA,IAAAD,EAAA/1F,QAAA,QACAi2F,GAAA,IAAAF,EAAA/1F,QAAA,WACAk2F,GAAA,IAAAH,EAAA/1F,QAAA,QACAm2F,IAAA,WAAA3rC,IAAA,QAAAA,EAAAr0D,OACA,OAAA6/F,GAAAC,GAAAC,IAAAC,EAkCAC,CAAA73D,KACAmmB,KAAA,IAAAA,EAAA1kD,QAAA,wBAAAoe,KAAAvxB,QAGA29D,EAAAmyB,OAAAD,IACAh4B,EAAAnmB,IAGA,SAAA83D,EAAA/uG,EAAA2uD,GACA,OAAA2wB,EAAAt/E,EAA4B+9E,IAAY,SAAA32E,GACxC4nG,IAAAt8C,KAAA,WACA,OAAA/D,EAAA9oD,MAAApC,KAAA2D,KACO0sE,MAAA,SAAA7vE,GACPmD,EAAAmE,KACA8iC,CAAApqC,QAEKhD,KAAAwvF,GAGL,SAAAwe,EAAA7xC,EAAAnmB,EAAA5I,GAEA,IAAAj8B,EAAA,GAYA,OAVA6kC,KAAA,IACAq3D,QAAAr3D,EAAAq3D,SAAA,IAAAhZ,GAEAr+C,EAAAq3D,QAAAhuG,IAAA,iBACA22C,EAAAq3D,QAAArkG,IAAA,mCAEAgtC,EAAAq3D,QAAAhuG,IAAA,WACA22C,EAAAq3D,QAAArkG,IAAA,6BAGAokG,EAAAjxC,EAAAnmB,GAAAyb,KAAA,SAAAw8C,GAGA,OAFA98F,EAAAxL,GAAAsoG,EAAAtoG,GACAwL,EAAA6qE,OAAAiyB,EAAAjyB,OACAiyB,EAAArO,SACKnuC,KAAA,SAAAmuC,GAEL,GADAzuF,EAAA7O,KAAAs9F,GACAzuF,EAAAxL,GAAA,CACAwL,EAAA7O,KAAA05E,OAAA7qE,EAAA6qE,OACA,IAAA72E,EAAA89E,GAAA9xE,EAAA7O,MACA,GAAA8qC,EACA,OAAAA,EAAAjoC,GAEA,MAAAA,EAcA,GAVAX,MAAAq1B,QAAA1oB,EAAA7O,QACA6O,EAAA7O,KAAA6O,EAAA7O,KAAAuV,IAAA,SAAAgC,GACA,OAAAA,EAAAvU,OAAAuU,EAAAq2E,QACAjN,GAAAppE,GAEAA,MAKAuzB,EAGA,OAAAj8B,EAFAi8B,EAAA,KAAAj8B,EAAA7O,QASA,SAAAyrG,IACA,OAAA9rC,EAAAisC,WACAv1E,QAAA0Z,UAMA86D,KAIAA,EAAAa,EAAAd,GAAAr6B,MAAA,SAAA1tE,GACA,OAAAA,KAAA62E,QAAA,MAAA72E,EAAA62E,QAEAkF,EAAA,uDACA8sB,EAAAd,EAAA,CAAiCt/F,OAAA,SAEjC+qB,QAAA8lB,OAAAt5C,KAEK0tE,MAAA,SAAA1tE,GAIL,SAAAA,MAAA62E,QAAA,MAAA72E,EAAA62E,SAGArjD,QAAA8lB,OAAAt5C,MAGA0tE,MAAA,WACAs6B,EAAA,OAGAA,GA2TA,SAAAgB,EAAA7e,GACA,OAAAA,EAAArkF,MAAA,KAAA4M,IAAAkmD,oBAAAzyD,KAAA,KAzTEgxE,IAAS,WACXlvC,EAAA,KAAAoiD,KAGAA,EAAAzL,SAAA,EAGAyL,EAAA1uF,KAAA,WACA,cAGA0uF,EAAAntF,GAAAyrG,EAAA,cAAA1gE,GACAggE,EAAAP,GAAAtwC,EAAA,KAAA9K,KAAA,SAAAw8C,GACA,OAAAA,EAAArO,SACK/sB,MAAA,WACL,WACKphB,KAAA,SAAAtgD,GAEL,IAAAi9F,EAAAj9F,KAAAs8D,KACAt8D,EAAAs8D,KAAAlR,EAAA8iB,GAAAutB,GAAArwC,EAAA,IACAnvB,EAAA,KAAAghE,OAMA5e,EAAA9yC,QAAAoxD,EAAA,mBAAA7rC,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAEAA,EAAAxuB,EAAAwuB,GAEA+rC,EAAApB,GAAArwC,EAAA,aAA2C3uD,OAAA,SAAe6jD,KAAA,YAC1D,SAAA48C,IACA7e,EAAAzX,KAAA,SAAA5yE,EAAA+L,GAIAA,MAAAo9F,gBACAlhE,EAAA,MAA4BznC,IAAA,IAE5B+G,WAAA2hG,EAAApsC,EAAAssC,UAAA,OAKAF,OAIA7e,EAAApQ,QAAAf,EAAA,mBAAApc,EAAA70B,GACA,IAAAvqC,EAAAL,KAEA,SAAAgsG,EAAAxoC,GACA,IAAAgnC,EAAA,GACA/qC,EAAA4mB,OACAmkB,EAAAnkB,MAAA,GAEA5mB,EAAAuhB,cAEAwpB,EAAAxpB,aAAA,GAEAvhB,EAAA0vB,SACAqb,EAAArb,QAAA,GAEAqc,EAAApB,GAAArwC,EAAA,YAAAwwC,GAAAC,IAAA,CACAp/F,OAAA,OACA2yF,KAAAzxC,KAAAiO,UAAA,CAA8BwiB,KAAAtd,EAAAsd,SACvB9tB,KAAA,SAAAtgD,GACP8wD,EAAAuhB,aAAAvhB,EAAA0kB,QACAx1E,EAAA7O,KAAAovD,QAAAl6C,QAAA,SAAAtG,GACAA,EAAAquE,KAAA/nE,QAAA+0F,MAGAvmC,EAAA,KAAA70D,EAAA7O,QACOuwE,MAAA7M,GAIP,SAAAyoC,IAEA,IAAA7I,EAAAuG,GACAuC,EAAA9rG,KAAAkN,KAAAmyD,EAAAsd,KAAA35E,OAAAggG,GACAlmB,EAAA,EACAhuB,EAAA,IAAAltD,MAAAkqG,GAEA,SAAAC,EAAAC,GACA,gBAAAzpG,EAAA+L,GAEAwgD,EAAAk9C,GAAA19F,EAAAwgD,UACAguB,IAAAgvB,GACAthE,EAAA,MAA4BskB,QAAA5f,GAAA4f,MAK5B,QAAAlzD,EAAA,EAAqBA,EAAAkwG,EAAgBlwG,IAAA,CACrC,IAAAqwG,EAAAj5E,EAAAqsC,EAAA,0CACA4sC,EAAAtvB,KAAAtd,EAAAsd,KAAAh7E,MAAA/F,EAAAonG,EACAhjG,KAAAY,IAAAy+D,EAAAsd,KAAA35E,QAAApH,EAAA,GAAAonG,IACAxmB,EAAAv8E,EAAAgsG,EAAAF,EAAAnwG,KAKA,IAAA0uG,EAAAL,GAAAtwC,EAAA,IACAuyC,EAAAxC,GAAAY,GAGA,kBAAA4B,EAEAN,EAAA,SAAArpG,EAAA+L,GACA/L,GACAmnG,GAAAY,IAAA,EACAhsB,EACA/7E,EAAA62E,OACA,uEAGAyyB,MAEAnC,GAAAY,IAAA,EACA9/D,EAAA,KAAAl8B,MAGK49F,EACLN,EAAAphE,GAEAqhE,MAOAjf,EAAAsD,MAAA,SAAA1lD,GACA2gE,IAAAt8C,KAAA,WACA,OAAA27C,EAAAR,GAAArwC,EAAA,OACK9K,KAAA,SAAAw8C,GACL,OAAAA,EAAArO,SACKnuC,KAAA,SAAAsmB,GACLA,EAAAxb,KAAAqwC,GAAArwC,EAAA,IACAnvB,EAAA,KAAA2qC,KACKlF,MAAAzlC,IAGLoiD,EAAA4E,MAAA,SAAA3yD,EAAAuU,GACA,OAAA+3D,IAAAt8C,KAAA,WACA,IAAA0K,EAAA,MAAA16B,EAAAgkB,UAAA,KACAonD,GAAAtwC,EAAA96B,EAAAgkB,UAAA,IACAmnD,GAAArwC,EAAA96B,GACA,OAAA2rE,EAAAjxC,EAAAnmB,MAOAw5C,EAAAnwF,IAAAyuG,EAAA,eAAAzrG,EAAA4/D,EAAA70B,GAEA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAKA,IAAA+qC,EAAA,GAoCA,SAAA+B,EAAAv0B,GACA,IAAA2Y,EAAA3Y,EAAAkJ,aACAsrB,EAAA7b,GAAAj0F,OAAAwL,KAAAyoF,GACA,GAAAA,GAAA6b,EAAAppG,OA4CA,OA3iBA,SAAAqpG,EAAAhwD,GACA,WAAAtmB,QAAA,SAAA0Z,EAAAoM,GACA,IAIAt5C,EAJAyiG,EAAA,EACA1gF,EAAA,EACA/Z,EAAA,EACAzD,EAAAulG,EAAArpG,OAQA,SAAAspG,MACA/hG,IAAAzD,EAEAvE,EACAs5C,EAAAt5C,GAEAktC,IAGA88D,IAIA,SAAAjiC,IACA06B,IACAsH,IAIA,SAAAE,EAAAC,GACAzH,IACAziG,KAAAkqG,EACAH,IAGA,SAAAC,IACA,KAAAvH,EAAA3oD,GAAA/3B,EAAAxd,GA9BAk+F,IACAqH,EAAA/nF,OAAAuqC,KAAAyb,EAAAkiC,GAkCAD,MA+fAG,CARAN,EAAAn3F,IAAA,SAAAotF,GACA,kBACA,OA/BA,SAAAA,GACA,IAAAxhB,EAAA0P,EAAA8R,GACAxjE,EAAA+qE,GAAAhyB,EAAAoB,KAAA,IAAAuyB,EAAAlJ,GACA,QAAAzqB,EAAAqB,KACA,OAAAuxB,EAAAR,GAAArwC,EAAA96B,IAAAgwB,KAAA,SAAAw8C,GACA,gBAAA7pF,KAAA4yC,QAIAi3C,EAAA3nB,OAHA2nB,EAAAv4F,WAKS+7C,KAAA,SAAA60B,GACT,OAAArkB,EAAA0kB,aAEA,IAAAviE,KAAA4yC,UACAsvB,EAAAxlF,KAAA2iF,EAAAkM,cAEArJ,GAEA,IAAA3tD,QAAA,SAAA0Z,GACA20C,GAAAV,EAAAj0C,OAESof,KAAA,SAAAnvD,UACTmhF,EAAAE,YACAF,EAAA79E,OACA69E,EAAAnhF,SAMAitG,CAAAtK,MAMA,IAtFAhjC,EAAAxuB,EAAAwuB,IAKA4mB,OACAmkB,EAAAnkB,MAAA,GAGA5mB,EAAA2vB,YACAob,EAAApb,WAAA,GAGA3vB,EAAA0vB,SACAqb,EAAArb,QAAA,GAGA1vB,EAAAoe,YACA,QAAApe,EAAAoe,YACApe,EAAAoe,UAAAvxB,KAAAiO,UAAAkF,EAAAoe,YAEA2sB,EAAA3sB,UAAApe,EAAAoe,WAGApe,EAAAx/D,MACAuqG,EAAAvqG,IAAAw/D,EAAAx/D,KAGAw/D,EAAAqnB,YACA0jB,EAAA1jB,UAAArnB,EAAAqnB,WAIArnB,EAAAusB,aACAwe,EAAAxe,WAAAvsB,EAAAusB,YAGAnsF,EAAAmqG,GAAAnqG,GAgEA2rG,EADApB,GAAArwC,EAAAl6D,EAAA0qG,GAAAC,KACAv7C,KAAA,SAAAvgD,GACA,OAAAynB,QAAA0Z,UAAAof,KAAA,WACA,GAAAwQ,EAAAuhB,YACA,OAfAgsB,EAeAt+F,EAAA5O,KAdAkC,MAAAq1B,QAAA21E,GACA72E,QAAAq6C,IAAAw8B,EAAA33F,IAAA,SAAA2iE,GACA,GAAAA,EAAA70E,GACA,OAAAopG,EAAAv0B,EAAA70E,OAIAopG,EAAAS,GARA,IAAAA,IAiBO/9C,KAAA,WACPrkB,EAAA,KAAAl8B,EAAA5O,UAEKuwE,MAAA,SAAA7vE,GACLA,EAAAi9E,MAAA59E,EACA+qC,EAAApqC,OAMAwsF,EAAA9wC,OAAAovD,EAAA,kBAAAhe,EAAAC,EAAA9tB,EAAA+D,GACA,IAAAwU,EACA,iBAAAuV,GAEAvV,EAAA,CACAoB,IAAAkU,EACAjU,KAAAkU,GAEA,mBAAA9tB,IACA+D,EAAA/D,EACAA,EAAA,MAIAuY,EAAAsV,EACA,mBAAAC,GACA/pB,EAAA+pB,EACA9tB,EAAA,KAEA+D,EAAA/D,EACAA,EAAA8tB,IAIA,IAAAR,EAAA/U,EAAAqB,MAAA5Z,EAAAx/D,IAGAurG,EAFApB,GAAArwC,EAAAiwC,GAAAhyB,EAAAoB,MAAA,QAAA2T,EAEA,CAAoB3hF,OAAA,UAAiBo4D,GAAA6M,MAAA7M,KAQrCwpB,EAAA6C,cAAAyb,EAAA,yBAAA7tB,EAAAqP,EACArtB,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAEA,IAGAwtC,EAHAzC,EAAA/qC,EAAAx/D,IAAA,QAAAw/D,EAAAx/D,IAAA,GACA05D,EAAAywC,GAAArwC,EAAAiwC,GAAAvsB,IAAA,IACAkuB,EAAA7e,GAAA0d,EAEAI,EAAAjxC,EAAA,CAAmBvuD,OAAA,QAAc6jD,KAAA,SAAAw8C,GAEjC,GADAwB,EAAAxB,EAAAZ,QAAAhuG,IAAA,gBACA4uG,EAAAtoG,GAGA,gBAAAye,KAAA4yC,QAIAi3C,EAAA3nB,OAHA2nB,EAAAv4F,SAHA,MAAAu4F,IASKx8C,KAAA,SAAA60B,QAEL,IAAAliE,KAAA4yC,UACAsvB,EAAAxlF,KAAA2uG,GAEAriE,EAAA,KAAAk5C,KACKzT,MAAA,SAAA1tE,GACLioC,EAAAjoC,OAKAqqF,EAAAK,iBAAAie,EAAA,4BAAA7tB,EACAqP,EACAC,EACAniD,GAGA4gE,EAFApB,GAAArwC,EAAAiwC,GAAAvsB,GAAA,IACAkuB,EAAA7e,IAAA,QAAAC,EACA,CAAoB3hF,OAAA,UAAiBw/B,GAAAylC,MAAAzlC,KAMrCoiD,EAAAH,cAAAye,EAAA,yBAAA7tB,EAAAqP,EACAC,EAAAjJ,EACAxlF,EAAAssC,GACA,mBAAAtsC,IACAssC,EAAAtsC,EACAA,EAAAwlF,EACAA,EAAAiJ,EACAA,EAAA,MAEA,IAAAltF,EAAAmqG,GAAAvsB,GAAA,IAAAkuB,EAAA7e,GACAnzB,EAAAywC,GAAArwC,EAAAl6D,GAKA,GAJAktF,IACApzB,GAAA,QAAAozB,GAGA,iBAAAjJ,EAAA,CAEA,IAAAK,EACA,IACAA,EAAAvB,GAAAkB,GACO,MAAAnhF,GACP,OAAAioC,EAAA21C,GAAAR,EACA,4CAEA+D,EAAAK,EAAAV,GAAAU,EAAA7lF,GAAA,GAIAktG,EAAA7xC,EAAA,CACAkxC,QAAA,IAAAhZ,GAAA,CAAsBqb,eAAA5uG,IACtB8M,OAAA,MACA2yF,KAAAja,GACKl5C,GAAAylC,MAAAzlC,KAKLoiD,EAAA6D,UAAA,SAAAlQ,EAAAlhB,EAAA70B,GAIA+1C,EAAAgM,UAAAltB,EAAAktB,UAEA4e,IAAAt8C,KAAA,WACA,OAAA94B,QAAAq6C,IAAAmQ,EAAA5D,KAAA1nE,IAAA40F,OACKh7C,KAAA,WAEL,OAAAu8C,EAAApB,GAAArwC,EAAA,eACA3uD,OAAA,OACA2yF,KAAAzxC,KAAAiO,UAAAomB,IACO/1C,KACFylC,MAAAzlC,IAKLoiD,EAAAN,KAAA,SAAA1U,EAAAvY,EAAA70B,GACA2gE,IAAAt8C,KAAA,WACA,OAAAg7C,GAAAjyB,KACK/oB,KAAA,WACL,OAAAu8C,EAAApB,GAAArwC,EAAAiwC,GAAAhyB,EAAAoB,MAAA,CACAhuE,OAAA,MACA2yF,KAAAzxC,KAAAiO,UAAAyd,OAEK/oB,KAAA,SAAAtgD,GACLi8B,EAAA,KAAAj8B,EAAA7O,QACKuwE,MAAA,SAAA1tE,GACLA,EAAA86E,MAAAzF,KAAAoB,IACAxuC,EAAAjoC,MAOAqqF,EAAArV,QAAA2zB,EAAA,mBAAA7rC,EAAA70B,GACA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAKA,IACAs+B,EADAyM,EAAA,GAEAp/F,EAAA,OALAq0D,EAAAxuB,EAAAwuB,IAOAqnB,YACA0jB,EAAA1jB,WAAA,GAIArnB,EAAAusB,aACAwe,EAAAxe,YAAA,GAGAvsB,EAAAosB,aACA2e,EAAA3e,YAAA,GAGApsB,EAAAmY,eACA4yB,EAAA5yB,cAAA,GAIAnY,EAAAuhB,cACAwpB,EAAAxpB,aAAA,GAGAvhB,EAAAliE,MACAitG,EAAAjtG,IAAA+uD,KAAAiO,UAAAkF,EAAAliE,MAGAkiE,EAAAqwB,YACArwB,EAAAswB,SAAAtwB,EAAAqwB,WAGArwB,EAAAswB,WACAya,EAAAza,SAAAzjC,KAAAiO,UAAAkF,EAAAswB,WAGAtwB,EAAAuwB,UACAvwB,EAAAwwB,OAAAxwB,EAAAuwB,SAGAvwB,EAAAwwB,SACAua,EAAAva,OAAA3jC,KAAAiO,UAAAkF,EAAAwwB,cAGA,IAAAxwB,EAAA4kC,gBACAmG,EAAAnG,gBAAA5kC,EAAA4kC,oBAGA,IAAA5kC,EAAAhjB,QACA+tD,EAAA/tD,MAAAgjB,EAAAhjB,YAGA,IAAAgjB,EAAA9kC,OACA6vE,EAAA7vE,KAAA8kC,EAAA9kC,MAGA,IAAAwyE,EAAA5C,GAAAC,QAEA,IAAA/qC,EAAAv3D,OACAkD,EAAA,OACA2yF,EAAA,CAAc71F,KAAAu3D,EAAAv3D,OAGdsjG,EAAApB,GAAArwC,EAAA,YAAAozC,GAAA,CACA/hG,SACA2yF,KAAAzxC,KAAAiO,UAAAwjC,KACK9uC,KAAA,SAAAtgD,GACL8wD,EAAAmY,cAAAnY,EAAAuhB,aAAAvhB,EAAA0kB,QACAx1E,EAAA7O,KAAAg4E,KAAA9iE,QAAA+0F,IAEAn/D,EAAA,KAAAj8B,EAAA7O,QACKuwE,MAAAzlC,KAMLoiD,EAAAjB,SAAA,SAAAtsB,GAMA,IAAA2jC,EAAA,eAAA3jC,IAAA2tC,WAAA1D,KAEAjqC,EAAAxuB,EAAAwuB,IAEAgsB,YAAA,cAAAhsB,IACAA,EAAA4tC,UAAAxD,IAGA,IAAAyD,EAAA,YAAA7tC,IAAAtL,QAAA,IAGA,YAAAsL,KAAAtL,SACAm5C,EAAA7tC,EAAAtL,QAAAy1C,KACA0D,EAAA7tC,EAAAtL,QAAAy1C,IAIA,cAAAnqC,KAAA4tC,WACAC,EAAA7tC,EAAA4tC,UAAAzD,KACA0D,EAAA7tC,EAAA4tC,UAAAzD,IAGA,IAAAY,EAAA,GACA,YAAA/qC,KAAAtL,UACAq2C,EAAAr2C,QAAAsL,EAAAtL,SAGA,IAAA1X,OAAA,IAAAgjB,EAAAhjB,OAAAgjB,EAAAhjB,MACA8wD,EAAA9wD,EAqDA,GAnDAgjB,EAAAlV,QACAigD,EAAAjgD,MAAAkV,EAAAlV,QAGAkV,EAAAmY,cAAAnY,EAAA7qD,QAAA,mBAAA6qD,EAAA7qD,UACA41F,EAAA5yB,cAAA,GAGAnY,EAAAuhB,cACAwpB,EAAAxpB,aAAA,GAGAvhB,EAAAgsB,aACA+e,EAAAgD,KAAA,YAGA/tC,EAAAguC,eACAjD,EAAAiD,aAAAhuC,EAAAguC,cAGAhuC,EAAAqnB,YACA0jB,EAAA1jB,WAAA,GAGArnB,EAAAosB,aACA2e,EAAA3e,YAAA,GAIApsB,EAAAusB,aACAwe,EAAAxe,YAAA,GAGA,cAAAvsB,GAEAA,EAAA4tC,YACA7C,EAAA6C,UAAA5tC,EAAA4tC,WAIA5tC,EAAA7qD,QAAA,iBAAA6qD,EAAA7qD,SACA41F,EAAA51F,OAAA6qD,EAAA7qD,QAGA6qD,EAAAhb,MAAA,iBAAAgb,EAAAhb,OACA+lD,EAAA51F,OAAA,QACA41F,EAAA/lD,KAAAgb,EAAAhb,MAKAgb,EAAAohB,cAAA,iBAAAphB,EAAAohB,aACA,QAAA6sB,KAAAjuC,EAAAohB,aAEAphB,EAAAohB,aAAAhjF,eAAA6vG,KACAlD,EAAAkD,GAAAjuC,EAAAohB,aAAA6sB,IAKA,IACA3P,EADA3yF,EAAA,MAGAq0D,EAAAu5B,SAGAwR,EAAA51F,OAAA,WACAxJ,EAAA,OACA2yF,EAAA,CAAc/E,QAAAv5B,EAAAu5B,UAGdv5B,EAAA0zB,WAEAqX,EAAA51F,OAAA,YACAxJ,EAAA,OACA2yF,EAAA,CAAc5K,SAAA1zB,EAAA0zB,WAGd,IACAwa,EADAC,EAAA,IAAAzsG,GAKA4rG,EAAA,SAAA/tB,EAAAp0C,GACA,IAAA60B,EAAAouC,QAAA,CAGArD,EAAAxrB,QAGA,iBAAAwrB,EAAAxrB,QACAwrB,EAAAxrB,MAAA1yB,KAAAiO,UAAAiwC,EAAAxrB,QAGAvf,EAAAosB,WACApvC,IACA+tD,EAAA/tD,MAAA8wD,GAGA/C,EAAA/tD,UAAA8wD,EAAAnK,EACAA,EAAAmK,EAIA,IAAA5zC,EAAAywC,GAAArwC,EAAA,WAAAwwC,GAAAC,IACAsD,EAAA,CACAC,OAAAH,EAAAG,OACA3iG,SACA2yF,KAAAzxC,KAAAiO,UAAAwjC,IAEA4P,EAAA3uB,EAGAvf,EAAAouC,SAKAtC,IAAAt8C,KAAA,WACA,OAAAu8C,EAAA7xC,EAAAm0C,EAAAljE,KACOylC,MAAAzlC,KAMPskB,EAAA,CAAmBA,QAAA,IAEnB8+C,EAAA,SAAArrG,EAAA+L,GACA,IAAA+wD,EAAAouC,QAAA,CAGA,IAAAI,EAAA,EAEA,GAAAv/F,KAAAwgD,QAAA,CACA++C,EAAAv/F,EAAAwgD,QAAA9rD,OACA8rD,EAAA2/B,SAAAngF,EAAAmgF,SACA,IAAA/kF,EAAA,KACA0/E,EAAA,KAGA,iBAAA96E,EAAA5E,UACAA,EAAA4E,EAAA5E,SAEA,iBAAAolD,EAAA2/B,UAAA,iBAAA3/B,EAAA2/B,WACArF,EAAAt6B,EAAA2/B,UAIApvB,EAAAohB,aACAnyE,EAAAwgD,QAAAxgD,EAAAwgD,QAAAt6C,OAAA,SAAAvY,GACAkxG,IACA,IAAApnG,EAAAu6E,GAAAjhB,EAAAihB,CAAArkF,GAUA,OATA8J,IACAs5D,EAAAmY,cAAAnY,EAAAuhB,aAAAvhB,EAAA0kB,QACA4lB,GAAA1tG,GAEAojE,EAAAsvB,aACA7/B,UAAA9pD,KAAA/I,GAEAojE,EAAAyf,SAAA7iF,EAAAyN,EAAA0/E,IAEArjF,SAEO,GAAAxD,EAKP,OAFA88D,EAAAouC,SAAA,OACApuC,EAAA4pB,SAAA1mF,GAMA+L,KAAAmgF,WACA8e,EAAAj/F,EAAAmgF,UAGA,IAAAqf,EAAAzxD,GAAA8wD,GAAA,GACA7+F,GAAAu/F,EAAA7K,GACA3jC,EAAA,aAEAA,EAAAgsB,YAAAhvC,GAAA8wD,GAAA,IAAAW,EAKAzuC,EAAA4pB,SAAA,KAAAn6B,GAHQ4qB,IAAS,WAAcizB,EAAAY,EAAAK,OAU/B,OAHAjB,EAAAttC,EAAAuf,OAAA,EAAAgvB,GAGA,CACAr5D,OAAA,WACA8qB,EAAAouC,SAAA,EACAD,EAAAlc,WAQA1E,EAAAS,SAAA6d,EAAA,oBAAA3qB,EAAAlhB,EAAA70B,GAEA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,IAIA+rC,EAAApB,GAAArwC,EAAA,eACA3uD,OAAA,OACA2yF,KAAAzxC,KAAAiO,UAAAomB,IACK/1C,GAAAylC,MAAAzlC,KAGLoiD,EAAAqD,OAAA,SAAAzlD,GACAA,KAGAoiD,EAAAoE,SAAA,SAAA59C,EAAA5I,GACA4gE,EAAApB,GAAArwC,EAAA,KAAmC3uD,OAAA,WAAiB6jD,KAAA,SAAAmuC,GACpDxyD,EAAA,KAAAwyD,KACK/sB,MAAA,SAAA1tE,GAEL,MAAAA,EAAA62E,OACA5uC,EAAA,MAAwBznC,IAAA,IAExBynC,EAAAjoC,MAgBA,SAAAwrG,GAAAvrG,GACA5C,KAAAw5E,OAAA,IACAx5E,KAAAzD,KAAA,oBACAyD,KAAA4C,UACA5C,KAAA8C,OAAA,EACA,IACAL,MAAA2rG,kBAAApuG,KAAAmuG,IACG,MAAA3tG,KAKH,SAAA6tG,GAAAzrG,GACA5C,KAAAw5E,OAAA,IACAx5E,KAAAzD,KAAA,YACAyD,KAAA4C,UACA5C,KAAA8C,OAAA,EACA,IACAL,MAAA2rG,kBAAApuG,KAAAquG,IACG,MAAA7tG,KAKH,SAAA8tG,GAAA1rG,GACA5C,KAAAw5E,OAAA,IACAx5E,KAAAzD,KAAA,gBACAyD,KAAA4C,UACA5C,KAAA8C,OAAA,EACA,IACAL,MAAA2rG,kBAAApuG,KAAAsuG,IACG,MAAA9tG,KAKH,SAAA+tG,GAAAzqC,EAAAl5B,GAYA,OAXAA,GACAk5B,EAAA7U,KAAA,SAAAvgD,GACMorE,IAAS,WACflvC,EAAA,KAAAl8B,MAEK,SAAA60D,GACCuW,IAAS,WACflvC,EAAA24B,OAIAO,EA2BA,SAAA0qC,GAAAxhG,EAAAyhG,GACA,kBACA,IAAA9qG,EAAAtB,UACAqC,EAAA1E,KACA,OAAAgN,EAAA6rB,IAAA,WACA,OAAA41E,EAAArsG,MAAAsC,EAAAf,MAOA,SAAA05C,GAAAn6C,GACA,IAAAwrG,EAAA,IAAA/0B,EAAAz2E,GACAyL,EAAA,IAAA3M,MAAA0sG,EAAA78E,MACAhqB,GAAA,EAIA,OAHA6mG,EAAA15F,QAAA,SAAA/X,GACA0R,IAAA9G,GAAA5K,IAEA0R,EAGA,SAAAggG,GAAAt5F,GACA,IAAA1G,EAAA,IAAA3M,MAAAqT,EAAAwc,MACAhqB,GAAA,EAIA,OAHAwN,EAAAL,QAAA,SAAA/X,EAAAM,GACAoR,IAAA9G,GAAAtK,IAEAoR,EAGA,SAAAigG,GAAAryG,GAIA,WAAA+xG,GAHA,WAAA/xG,EACA,gEAKA,SAAAmlD,GAAAtwC,GAEA,IADA,IAAAzC,EAAA,EACA3S,EAAA,EAAAkL,EAAAkK,EAAAhO,OAAsCpH,EAAAkL,EAASlL,IAAA,CAC/C,IAAA+/D,EAAA3qD,EAAApV,GACA,oBAAA+/D,EAAA,CACA,IAAA/5D,MAAAq1B,QAAA0kC,GAcA,MAAA6yC,GAAA,QAZAjgG,EAAA,iBAAAA,EAAA,CAAAA,KACA,QAAAysD,EAAA,EAAAyzC,EAAA9yC,EAAA34D,OAA0Cg4D,EAAAyzC,EAAUzzC,IAAA,CACpD,IAAA0zC,EAAA/yC,EAAAX,GACA,oBAAA0zC,EACA,MAAAF,GAAA,aACW,IAAAjgG,EAAAysD,GACXzsD,EAAAvJ,KAAA0pG,GAEAngG,EAAAysD,IAAA0zC,OAMK,iBAAAngG,EACLA,GAAAotD,EAEAptD,EAAA,IAAAotD,EAGA,OAAAptD,EArJA87F,GAAAxf,MAAA,WACA,UAkBAzQ,IAAQ2zB,GAAA1rG,OAYR+3E,IAAQ6zB,GAAA5rG,OAYR+3E,IAAQ8zB,GAAA7rG,OA6GR,IAAAN,GAAAm8E,EAAA9gF,KAAA,YACA65B,GAAAr1B,MAAAq1B,QACA0tB,GAAAuH,KAAAC,MAEA,SAAAwiD,GAAA9kG,EAAA/E,GACA,OAAAm9E,GACA,WAAAp4E,EAAAX,QAAA,QAAgC,SAChC,CACApE,OACAw8C,OACAv/C,OACAk1B,WACA0tB,YAWA,SAAAiqD,KACAhvG,KAAA8jE,QAAA,IAAA3tC,QAAA,SAAAulD,GAAiDA,MAcjD,SAAAnhB,GAAAl/B,GACA,IAAAA,EACA,kBAIA,cAAAA,GACA,eAGA,aAEA,OAAAA,EAAAzsB,WACA,QAEA,OAAA09C,KAAAiO,UAAAl/B,IAUA,SAAA4zE,GAAAC,EAAAjW,EAAAE,EAAAgW,EAAAC,EAAAC,GACA,IAEAC,EAFAC,EANA,SAAApW,EAAAgW,GAEA,OAAA50C,GAAA4+B,GAAA5+B,GAAA40C,GAAA,YAIAK,CAAArW,EAAAgW,GAGA,IAAAC,IAEAE,EAAAJ,EAAAO,aAAAP,EAAAO,cAAA,IACAF,GACA,OAAAD,EAAAC,GAIA,IAAAG,EAAAR,EAAA35B,OAAAtmB,KAAA,SAAAsmB,GAEA,IAAAo6B,EAAAp6B,EAAAgb,QAAA,YACA6e,EAAA,OAAA9pB,GAAAiqB,IAkBA,OAAAjtB,GAAA4sB,EAAA,UAAAG,EAdA,SAAAr3B,GACAA,EAAAohB,MAAAphB,EAAAohB,OAAA,GACA,IAAAwW,EAAA3W,GACA,IAAA2W,EAAA36F,QAAA,OACA26F,EAAA3W,EAAA,IAAAA,GAEA,IAAA4W,EAAA73B,EAAAohB,MAAAwW,GAAA53B,EAAAohB,MAAAwW,IAAA,GAEA,IAAAC,EAAAF,GAIA,OADAE,EAAAF,IAAA,EACA33B,IAEA/oB,KAAA,WACA,OAAAigD,EAAApe,0BAAA6e,GAAA1gD,KAAA,SAAAvgD,GACA,IAAAmuE,EAAAnuE,EAAAmuE,GACAA,EAAA2N,iBAAA,EACA,IAAA/lC,EAAA,CACAloD,KAAAozG,EACA9yB,KACAqyB,WACAxkB,QAAAwkB,EAAAxkB,QACAyO,SACAgW,aAEA,OAAA1qD,EAAAo4B,GAAAhgF,IAAA,kBAAAwzE,MAAA,SAAA1tE,GAEA,SAAAA,EAAA62E,OACA,MAAA72E,IAESssD,KAAA,SAAA6gD,GAOT,OANArrD,EAAAs6B,IAAA+wB,IAAA/wB,IAAA,EACAuwB,GACA7qD,EAAAo4B,GAAAt1E,KAAA,8BACA+nG,EAAAC,KAGA9qD,UASA,OAHA6qD,IACAA,EAAAC,GAAAG,GAEAA,EAvGAV,GAAApxG,UAAAi7B,IAAA,SAAA41E,GAMA,OALAzuG,KAAA8jE,QAAA9jE,KAAA8jE,QAAAuM,MAAA,cAEGphB,KAAA,WACH,OAAAw/C,MAEAzuG,KAAA8jE,SAEAkrC,GAAApxG,UAAAq6E,OAAA,WACA,OAAAj4E,KAAA8jE,SAiGA,IAAAisC,GAAA,GACAC,GAAA,IAAAhB,GACAiB,GAAA,GAEA,SAAAC,GAAA3zG,GAGA,WAAAA,EAAA0Y,QAAA,MAAA1Y,OAAAkM,MAAA,KASA,SAAA0nG,GAAAtzB,EAAAr8E,GACA,IACAq8E,EAAA33E,KAAA,QAAA1E,GACG,MAAAmC,GACH27E,EAAA,QACA,qMAIAA,EAAA,QAAA99E,IA+4BA,IAAA4vG,GAAA,CACAC,KAAA,SAAAnoG,EAAAkJ,GACA,OAAAswC,GAAAtwC,IAGAk/F,OAAA,SAAApoG,EAAAkJ,GACA,OAAAA,EAAAhO,QAGAmtG,OAAA,SAAAroG,EAAAkJ,GAWA,OACAswC,OAAAtwC,GACApQ,IAAAZ,KAAAY,IAAAoB,MAAA,KAAAgP,GACAukB,IAAAv1B,KAAAu1B,IAAAvzB,MAAA,KAAAgP,GACA3L,MAAA2L,EAAAhO,OACAotG,OAbA,SAAAp/F,GAEA,IADA,IAAAq/F,EAAA,EACAz0G,EAAA,EAAAkL,EAAAkK,EAAAhO,OAA0CpH,EAAAkL,EAASlL,IAAA,CACnD,IAAA+/D,EAAA3qD,EAAApV,GACAy0G,GAAA10C,IAEA,OAAA00C,EAOAD,CAAAp/F,MA+CA,IACAs/F,GA17BA,SAAArB,EAAAsB,EAAAC,EAAAC,GAEA,SAAAC,EAAAj0B,EAAA3xB,EAAA8sB,GAGA,IACA9sB,EAAA8sB,GACK,MAAAx3E,GACL2vG,GAAAtzB,EAAAr8E,IAIA,SAAAuwG,EAAAl0B,EAAA3xB,EAAAhjD,EAAAkJ,EAAA4/F,GAKA,IACA,OAAcpwC,OAAA1V,EAAAhjD,EAAAkJ,EAAA4/F,IACT,MAAAxwG,GAEL,OADA2vG,GAAAtzB,EAAAr8E,GACA,CAAcsC,MAAAtC,IAId,SAAAywG,EAAAv2C,EAAAiS,GACA,IAAAukC,EAAAxc,GAAAh6B,EAAAn9D,IAAAovE,EAAApvE,KACA,WAAA2zG,IAAAxc,GAAAh6B,EAAAz9D,MAAA0vE,EAAA1vE,OAGA,SAAAk0G,EAAAjiD,EAAAzS,EAAA9hB,GAEA,OADAA,KAAA,EACA,iBAAA8hB,EACAyS,EAAAntD,MAAA44B,EAAA8hB,EAAA9hB,GACKA,EAAA,EACLu0B,EAAAntD,MAAA44B,GAEAu0B,EAGA,SAAAkiD,EAAA15B,GACA,IAAA/uE,EAAA+uE,EAAAz6E,MAIA,OADA0L,GAAA,iBAAAA,KAAAywE,KAAA1B,EAAA73E,GAiBA,SAAAwxG,EAAA5xC,GACA,gBAAA/wD,GAIA,OAHA+wD,EAAAmY,cAAAnY,EAAAuhB,aAAAvhB,EAAA0kB,QAfA,SAAAz1E,GACAA,EAAAopE,KAAA9iE,QAAA,SAAA0iE,GACA,IAAAiZ,EAAAjZ,EAAAM,KAAAN,EAAAM,IAAAkJ,aACAyP,GAGAj0F,OAAAwL,KAAAyoF,GAAA37E,QAAA,SAAAytF,GACA,IAAAxhB,EAAA0P,EAAA8R,GACA9R,EAAA8R,GAAA3iG,KAAA6jF,GAAA1C,EAAAnhF,KAAAmhF,EAAAkM,kBAQA4c,CAAAr7F,GAEAA,GAIA,SAAA4iG,EAAAC,EAAA9xC,EAAA+qC,EAAAgH,GAEA,IAAA7oG,EAAA82D,EAAA8xC,QACA,IAAA5oG,IACA6oG,IACA7oG,EAAA4yD,mBAAAjP,KAAAiO,UAAA5xD,KAEA6hG,EAAAplG,KAAAmsG,EAAA,IAAA5oG,IAIA,SAAA8oG,EAAAC,GACA,YAAAA,EAAA,CACA,IAAAC,EAAA1tG,OAAAytG,GAEA,OAAAxtG,MAAAytG,QAAAxwF,SAAAuwF,EAAA,IAGAA,EAFAC,GA2BA,SAAAC,EAAAp+D,EAAA0X,GACA,IAAA2mD,EAAAr+D,EAAAq4C,WAAA,oBACAimB,EAAAt+D,EAAAq4C,WAAA,oBAEA,YAAAr4C,EAAAq+D,SACA,IAAAr+D,EAAAs+D,IACApd,GAAAlhD,EAAAq+D,GAAAr+D,EAAAs+D,IAAA,EACA,UAAA3D,GAAA,mGAEK,GAAAjjD,EAAAv5C,SAAA,IAAA6hC,EAAA7hC,OAAA,CACL,GAAA6hC,EAAAokC,aACA,UAAAu2B,GAAA,6CACO,GAAA36D,EAAAtrC,MAAAsrC,EAAAtrC,KAAA9E,OAAA,IACPowC,EAAAtB,QAAAsB,EAAAu+D,YACA,UAAA5D,GAAA,6DAIA,+BAAAn5F,QAAA,SAAAg9F,GACA,IAAAlvG,EAhCA,SAAA83B,GACA,GAAAA,EAAA,CACA,oBAAAA,EACA,WAAAuzE,GAAA,+BACAvzE,EAAA,KAEA,GAAAA,EAAA,EACA,WAAAuzE,GAAA,wCACAvzE,EAAA,MAwBAq3E,CAAAz+D,EAAAw+D,IACA,GAAAlvG,EACA,MAAAA,IA+IA,SAAAovG,EAAAj1G,GACA,gBAAAsmE,GAEA,SAAAA,EAAAiW,OACA,OAAAv8E,EAEA,MAAAsmE,GAQA,SAAA4uC,EAAA10B,EAAAh5B,EAAA2tD,GACA,IAAAC,EAAA,cAAA50B,EACA60B,EAAA,CAA0Bl5B,IAAAi5B,EAAAnqG,KAAA,IAC1BqqG,EAAAH,EAAAv1G,IAAA4gF,GACA+0B,EAAAD,EAAA,GA+DA,OAnZA,SAAAnpD,GAGA,WAAAA,EAAAhmD,QAAA,MAAAoG,KAAA4/C,EAAA,GAAAnpD,KAqVAwyG,CAHAF,EAAA,IAMAp8E,QAAA0Z,QAAAyiE,GAEA7tD,EAAAo4B,GAAAhgF,IAAAw1G,GAAAhiC,MAAA6hC,EAAAI,KAsDArjD,KAAA,SAAAixC,GACA,OApDA,SAAAA,GACA,OAAAA,EAAAh4F,KAAA9E,OAIAqhD,EAAAo4B,GAAAlF,QAAA,CACAzvE,KAAAg4F,EAAAh4F,KACA0vE,cAAA,IAJAzhD,QAAA0Z,QAAA,CAAgCioC,KAAA,KAiDhC46B,CAAAxS,GAAAjxC,KAAA,SAAA0jD,GACA,OA1CA,SAAAzS,EAAAyS,GAIA,IAHA,IAAAC,EAAA,GACAC,EAAA,IAAAl5B,EAEA39E,EAAA,EAAAkL,EAAAyrG,EAAA76B,KAAA10E,OAAkDpH,EAAAkL,EAASlL,IAAA,CAC3D,IACAg8E,EADA26B,EAAA76B,KAAA97E,GACAg8E,IACA,GAAAA,IAGA46B,EAAAxtG,KAAA4yE,GACA66B,EAAAh6E,IAAAm/C,EAAAoB,KACApB,EAAAoU,UAAAomB,EAAAnqG,IAAA2vE,EAAAoB,MACApB,EAAAoU,UAAA,CACA,IAAA0mB,EAAAN,EAAA31G,IAAAm7E,EAAAoB,KACA,UAAA05B,IACA96B,EAAA/6E,MAAA61G,EAAA71G,QAIA,IAAA81G,EAAApE,GAAA6D,GAiBA,OAhBAO,EAAA/9F,QAAA,SAAAzX,GACA,IAAAs1G,EAAAxqG,IAAA9K,GAAA,CAEA,IAAAy1G,EAAA,CACA55B,IAAA77E,GAEAu1G,EAAAN,EAAA31G,IAAAU,GACA,UAAAu1G,IACAE,EAAA/1G,MAAA61G,EAAA71G,OAEA21G,EAAAxtG,KAAA4tG,MAGA9S,EAAAh4F,KAAAm1C,GAAA01D,EAAAhvG,OAAAm8F,EAAAh4F,OACA0qG,EAAAxtG,KAAA86F,GAEA0S,EAKAK,CAAA/S,EAAAyS,OAyBA,SAAAO,EAAAzuD,GACA,IAAAw0C,EAAA,iBAAAx0C,MAAAloD,KACAyQ,EAAA+iG,GAAA9W,GAIA,OAHAjsF,IACAA,EAAA+iG,GAAA9W,GAAA,IAAA+V,IAEAhiG,EAGA,SAAAmmG,EAAA1uD,GACA,OAAA+pD,GAAA0E,EAAAzuD,GAAA,WACA,OAIA,SAAAA,GAEA,IAAA2uD,EACAp7B,EAYAmhB,EAAAwX,EAAAlsD,EAAA00C,OAVA,SAAA57F,EAAAN,GACA,IAAA2jE,EAAA,CAAoB/gE,GAAAm4E,EAAAoB,IAAA77E,IAAAo3F,GAAAp3F,IAGpB,MAAAN,IACA2jE,EAAA3jE,MAAA03F,GAAA13F,IAEAm2G,EAAAhuG,KAAAw7D,KAKAyyC,EAAA5uD,EAAAs6B,KAAA,EAEA,SAAA6K,EAAAwoB,EAAArzB,GACA,kBACA,OAtDA,SAAAt6B,EAAA2tD,EAAArzB,GAEA,OAAAt6B,EAAAo4B,GAAAhgF,IADA,kBAEAwzE,MAAA6hC,EAAA,CAAyB94B,IAFzB,iBAEyB2F,IAAA,KACzB9vB,KAAA,SAAA6gD,GACA,IAAAxK,EAAAqJ,GAAAyD,GACA,OAAAj8E,QAAAq6C,IAAA80B,EAAAjwF,IAAA,SAAAooE,GACA,OAAA00B,EAAA10B,EAAAh5B,EAAA2tD,MACSnjD,KAAA,SAAAqkD,GACT,IAAAC,EAAAjkE,GAAAgkE,GAIA,OAHAxD,EAAA/wB,MACAw0B,EAAAnuG,KAAA0qG,GAEArrD,EAAAo4B,GAAAqP,SAAA,CAAmCnP,KAAAw2B,QAyCnCC,CAAA/uD,EAAA2tD,EAAArzB,IAIA,IAAA/xE,EAAA,IAAAgiG,GAEA,SAAAyE,IACA,OAAAhvD,EAAAyqD,SAAA9lD,QAAA,CACA2lC,aAAA,EACAjI,WAAA,EACAlP,cAAA,EACArtB,MAAA,WACAy0B,MAAAq0B,EACA52D,MAAAwzD,KACOhhD,KAAA+uB,GAGP,SAAAA,EAAAytB,GACA,IAAAv8C,EAAAu8C,EAAAv8C,QACA,GAAAA,EAAA9rD,OAAA,CAGA,IAAAgvG,EAQA,SAAAljD,GAEA,IADA,IAAAkjD,EAAA,IAAAx4B,EACA59E,EAAA,EAAAkL,EAAAgoD,EAAA9rD,OAA2CpH,EAAAkL,EAASlL,IAAA,CACpD,IAAAyiE,EAAAvP,EAAAlzD,GACA,SAAAyiE,EAAAuZ,IAAAoB,IAAA,IACAg6B,EAAA,IACAp7B,EAAAvZ,EAAAuZ,KAEAoU,UACA0kB,EAAArsD,EAAAyqD,SAAA/V,EAAAnhB,GAEAo7B,EAAAphG,KAAAi/F,GAEA,IAAAuB,EAAAkB,EAAAN,GACAhB,EAAA5rG,IAAAi4D,EAAAuZ,IAAAoB,IAAA,CACAo5B,EACA/zC,EAAArV,UAGAiqD,EAAA50C,EAAAsgB,IAEA,OAAAqzB,EA7BAuB,CAAAzkD,GAEA,GADAliD,EAAA6rB,IAAA+wD,EAAAwoB,EAAAiB,MACAnkD,EAAA9rD,OAAA6sG,IAGA,OAAAwD,KA2BA,SAAAC,EAAAN,GAGA,IAFA,IACAtP,EADA0O,EAAA,IAAA54B,EAEA59E,EAAA,EAAAkL,EAAAksG,EAAAhwG,OAA8CpH,EAAAkL,EAASlL,IAAA,CACvD,IAAA43G,EAAAR,EAAAp3G,GACA63G,EAAA,CAAAD,EAAAr2G,IAAAq2G,EAAA/zG,IACA7D,EAAA,OAAA04F,GAAAkf,EAAAr2G,IAAAumG,IACA+P,EAAAzuG,KAAApJ,GAEAw2G,EAAAhsG,IAAA0vF,GAAA2d,GAAAD,GACA9P,EAAA8P,EAAAr2G,IAEA,OAAAi1G,EAGA,OAAAiB,IAAAxkD,KAAA,WACA,OAAAjiD,EAAAirE,WACKhpB,KAAA,WACLxK,EAAAs6B,IAAAs0B,IAjGAS,CAAArvD,IADA+pD,GAwJA,SAAAuF,EAAAtvD,EAAAgb,GACA,OAAA+uC,GAAA0E,EAAAzuD,GAAA,WACA,OAIA,SAAAA,EAAAgb,GACA,IAAAu0C,EACAC,EAAAxvD,EAAA0qD,YAAA,IAAA1vC,EAAA9tD,OACAgpB,EAAA8kC,EAAA9kC,MAAA,EAOA,SAAAu5E,EAAAC,GAEA,OADAA,EAAAv8B,cAAA,EACAnzB,EAAAo4B,GAAAlF,QAAAw8B,GAAAllD,KAAA,SAAAvgD,GAEA,OADAslG,EAAAtlG,EAAAu2F,WACAv2F,EAAAopE,KAAAziE,IAAA,SAAA1G,GAMA,aAAAA,EAAAqpE,KAAA,iBAAArpE,EAAAqpE,IAAA/6E,OACA,OAAA0R,EAAAqpE,IAAA/6E,MAAA,CACA,IAAAiL,EAAAxL,OAAAwL,KAAAyG,EAAAqpE,IAAA/6E,OAAA+U,OAGAoiG,EAAA,qBACA,KAAAlsG,EAAAksG,GAAAlsG,EAAAksG,GACA,OAAAzlG,EAAAqpE,IAAA/6E,MAIA,IAAAo3G,EA38JA,SAAA99C,GAMA,IALA,IAAAxzD,EAAA,GACAmoE,EAAA,GACAlvE,EAAA,IAGA,CACA,IAAAuvE,EAAAhV,EAAAv6D,KACA,UAAAuvE,EAQA,OAAAA,GACA,QACAxoE,EAAAqC,KAAA,MACA,MACA,QACArC,EAAAqC,KAAA,MAAAmxD,EAAAv6D,IACAA,IACA,MACA,QACA,IAAAwvE,EAAA4qB,GAAA7/B,EAAAv6D,GACA+G,EAAAqC,KAAAomE,EAAAzP,KACA//D,GAAAwvE,EAAApoE,OACA,MACA,QAGA,IAFA,IAAAkxG,EAAA,KAEA,CACA,IAAAzoC,EAAAtV,EAAAv6D,GACA,UAAA6vE,EACA,MAEAyoC,GAAAzoC,EACA7vE,IAKAs4G,IAAAhrG,QAAA,sBACAA,QAAA,qBACAA,QAAA,qBAEAvG,EAAAqC,KAAAkvG,GACA,MACA,QACA,IAAAxoC,EAAA,CAA4BjgE,QAAA,GAAAhE,MAAA9E,EAAAK,QAC5BL,EAAAqC,KAAA0mE,EAAAjgE,SACAq/D,EAAA9lE,KAAA0mE,GACA,MACA,QACA,IAAAC,EAAA,CAA0BlgE,QAAA,GAAYhE,MAAA9E,EAAAK,QACtCL,EAAAqC,KAAA2mE,EAAAlgE,SACAq/D,EAAA9lE,KAAA2mE,GACA,MAEA,QACA,UAAAtpE,MACA,4DACA8oE,OAvDA,CACA,OAAAxoE,EAAAK,OACA,OAAAL,EAAA+E,MAEAA,GAAA/E,EAAAmoE,KA+7JAqpC,CAAA5lG,EAAAqpE,IAAAoB,KACA,OACA77E,IAAA82G,EAAA,GACAx0G,GAAAw0G,EAAA,GACAp3G,MAAA,UAAA0R,EAAAqpE,IAAArpE,EAAAqpE,IAAA/6E,MAAA,UAMA,SAAAu3G,EAAA18B,GACA,IAAA28B,EAcA,GAZAA,EADAR,EAnGA,SAAAxvD,EAAAyK,EAAA1b,GACA,IAAAA,EAAAu+D,oBACAv+D,EAAAu+D,YAGA,IAAA2C,EAAAlhE,EAAAtB,OAAAsB,EAAAu+D,YAEA5C,EAAAyB,EAAAnsD,EAAA0qD,WAEAt5C,EAAA,GACA8+C,EAAAzwG,MAAAsvC,EAAAu+D,aAAA9tG,OAAA2wG,kBACAphE,EAAAu+D,YACA7iD,EAAAl6C,QAAA,SAAAxU,GACA,IAAAkgC,EAAAm1B,IAAAzyD,OAAA,GACAyxG,EAAAH,EAAAl0G,EAAAjD,IAAA,KAOA,GAJAm3G,GAAA1yG,MAAAq1B,QAAAw9E,KACAA,IAAA9yG,MAAA,EAAA4yG,IAGAj0E,GAAA,IAAAg0D,GAAAh0D,EAAAm0E,YAGA,OAFAn0E,EAAAx4B,KAAA9C,KAAA,CAAA5E,EAAAjD,IAAAiD,EAAAX,UACA6gC,EAAAtvB,OAAAhM,KAAA5E,EAAAvD,OAGA44D,EAAAzwD,KAAA,CACA8C,KAAA,EAAA1H,EAAAjD,IAAAiD,EAAAX,KACAuR,OAAA,CAAA5Q,EAAAvD,OACA43G,eAGA3lD,EAAA,GACA,QAAAlzD,EAAA,EAAAkL,EAAA2uD,EAAAzyD,OAAwCpH,EAAAkL,EAASlL,IAAA,CACjD,IAAAwE,EAAAq1D,EAAA75D,GACA84G,EAAA/D,EAAAtsD,EAAAyqD,SAAAC,EAAA3uG,EAAA0H,KAAA1H,EAAA4Q,QAAA,GACA,GAAA0jG,EAAAhyG,OAAAgyG,EAAAhyG,iBAAAwrG,GAEA,MAAAwG,EAAAhyG,MAEAosD,EAAA9pD,KAAA,CAEAnI,MAAA63G,EAAAhyG,MAAA,KAAAgyG,EAAAl0C,OACArjE,IAAAiD,EAAAq0G,WAIA,OAAY/8B,KAAAq5B,EAAAjiD,EAAA1b,EAAAiJ,MAAAjJ,EAAA7Y,OAqDZo6E,CAAAtwD,EAAAqzB,EAAArY,GAEA,CACAwlC,WAAA+O,EACA1gG,OAAAqnB,EACAm9C,QAIArY,EAAAusB,aACAyoB,EAAAzoB,WAAAvnC,EAAAs6B,KAEAtf,EAAAmY,aAAA,CACA,IAAA0tB,EAAAjoD,GAAAy6B,EAAAziE,IAAA+7F,IAEA,OAAA3sD,EAAAyqD,SAAAv3B,QAAA,CACAzvE,KAAAo9F,EACA1tB,cAAA,EACAkP,UAAArnB,EAAAqnB,UACA9F,YAAAvhB,EAAAuhB,YACAmD,OAAA1kB,EAAA0kB,SACSl1B,KAAA,SAAA+lD,GACT,IAAAC,EAAA,IAAAr7B,EAWA,OAVAo7B,EAAAl9B,KAAA9iE,QAAA,SAAA0iE,GACAu9B,EAAAzuG,IAAAkxE,EAAA73E,GAAA63E,EAAAM,OAEAF,EAAA9iE,QAAA,SAAA0iE,GACA,IAAA+F,EAAA2zB,EAAA15B,GACAM,EAAAi9B,EAAAp4G,IAAA4gF,GACAzF,IACAN,EAAAM,SAGAy8B,IAGA,OAAAA,EAIA,QAhFA,IAAAh1C,EAAAv3D,MAAAu3D,EAAAv3D,KAAA9E,SAEAq8D,EAAAhjB,MAAA,SACAgjB,EAAAv3D,WA6EA,IAAAu3D,EAAAv3D,KAAA,CACA,IAAAA,EAAAu3D,EAAAv3D,KACAgtG,EAAAhtG,EAAAmN,IAAA,SAAA9X,GACA,IAAA42G,EAAA,CACApkB,SAAAmG,GAAA,CAAA34F,IACA0yF,OAAAiG,GAAA,CAAA34F,EAAA,MAMA,OAHAkiE,EAAAusB,aACAmoB,EAAAnoB,YAAA,GAEAkoB,EAAAC,KAEA,OAAAh+E,QAAAq6C,IAAA0kC,GAAAjmD,KAAA3f,IAAA2f,KAAAulD,GAEA,IAOAzkB,EACAE,EARAkkB,EAAA,CACAtoB,WAAApsB,EAAAosB,YAyBA,GAtBApsB,EAAAusB,aACAmoB,EAAAnoB,YAAA,GAIA,cAAAvsB,IACAswB,EAAAtwB,EAAAqwB,WAEA,aAAArwB,IACAswB,EAAAtwB,EAAAswB,UAEA,YAAAtwB,IACAwwB,EAAAxwB,EAAAuwB,SAEA,WAAAvwB,IACAwwB,EAAAxwB,EAAAwwB,aAEA,IAAAF,IACAokB,EAAApkB,SAAAtwB,EAAAosB,WACAqK,GAAA,CAAAnG,EAAA,KACAmG,GAAA,CAAAnG,UAEA,IAAAE,EAAA,CACA,IAAAmU,GAAA,IAAA3kC,EAAA4kC,cACA5kC,EAAAosB,aACAuY,MAGA+P,EAAAlkB,OAAAiG,GACAkO,EAAA,CAAAnU,EAAA,IAAoC,CAAAA,IAEpC,YAAAxwB,EAAAliE,IAAA,CACA,IAAA43G,EAAAjf,GAAA,CAAAz2B,EAAAliE,MACA63G,EAAAlf,GAAA,CAAAz2B,EAAAliE,IAAA,KACA42G,EAAAtoB,YACAsoB,EAAAlkB,OAAAklB,EACAhB,EAAApkB,SAAAqlB,IAEAjB,EAAApkB,SAAAolB,EACAhB,EAAAlkB,OAAAmlB,GASA,OANAnB,IACA,iBAAAx0C,EAAAhjB,QACA03D,EAAA13D,MAAAgjB,EAAAhjB,OAEA03D,EAAAx5E,QAEAu5E,EAAAC,GAAAllD,KAAAulD,GA3JAa,CAAA5wD,EAAAgb,IADA+uC,GA+NA,SAAA8G,EAAAz4B,EAAA3xB,EAAAuU,GAEA,sBAAAod,EAAA04B,OACA,OA1gBA,SAAA14B,EAAA3xB,EAAAuU,GACA,WAAAtpC,QAAA,SAAA0Z,EAAAoM,GACA4gC,EAAA04B,OAAArqD,EAAAuU,EAAA,SAAA98D,EAAA+L,GACA,GAAA/L,EACA,OAAAs5C,EAAAt5C,GAEAktC,EAAAnhC,OAogBA8mG,CAAA34B,EAAA3xB,EAAAuU,GAEA,GAAA6hB,GAAAzE,GACA,OA9nBA,SAAAA,EAAA3xB,EAAAuU,GAEA,IACAs+B,EAEA56F,EAAAq2E,EAHAgxB,EAAA,GAEAp/F,EAAA,MA+BA,GAxBAkmG,EAAA,SAAA7xC,EAAA+qC,GACA8G,EAAA,eAAA7xC,EAAA+qC,GACA8G,EAAA,cAAA7xC,EAAA+qC,GACA8G,EAAA,QAAA7xC,EAAA+qC,GACA8G,EAAA,aAAA7xC,EAAA+qC,GACA8G,EAAA,QAAA7xC,EAAA+qC,GACA8G,EAAA,cAAA7xC,EAAA+qC,GACA8G,EAAA,OAAA7xC,EAAA+qC,GACA8G,EAAA,QAAA7xC,EAAA+qC,GACA8G,EAAA,YAAA7xC,EAAA+qC,GACA8G,EAAA,WAAA7xC,EAAA+qC,GAAA,GACA8G,EAAA,YAAA7xC,EAAA+qC,GAAA,GACA8G,EAAA,SAAA7xC,EAAA+qC,GAAA,GACA8G,EAAA,UAAA7xC,EAAA+qC,GAAA,GACA8G,EAAA,gBAAA7xC,EAAA+qC,GACA8G,EAAA,MAAA7xC,EAAA+qC,GAAA,GACA8G,EAAA,aAAA7xC,EAAA+qC,GAIAA,EAAA,MADAA,IAAA1hG,KAAA,MACA,OAAA0hG,OAIA,IAAA/qC,EAAAv3D,KAAA,CACA,IAIAutG,EACA,QAAAl6C,mBAAAjP,KAAAiO,UAAAkF,EAAAv3D,OACAutG,EAAAryG,OAAAonG,EAAApnG,OAAA,GANA,IASAonG,IAAA,MAAAA,EAAA,YAAAiL,GAEArqG,EAAA,OACA,iBAAA8/C,EACA6yC,EAAA,CAAkB71F,KAAAu3D,EAAAv3D,MAElBgjD,EAAAhjD,KAAAu3D,EAAAv3D,MAMA,oBAAAgjD,EAAA,CACA,IAAAu2B,EAAAyuB,GAAAhlD,GACA,OAAA2xB,EAAA+U,MAAA,WAAAnQ,EAAA,aAAAA,EAAA,GAAA+oB,EAAA,CACAK,QAAA,IAAAhZ,GAAA,CAAwBqb,eAAA,qBACxB9hG,SACA2yF,KAAAzxC,KAAAiO,UAAAwjC,KACO9uC,KAAA,SAAAw8C,GAGP,OAFAtoG,EAAAsoG,EAAAtoG,GACAq2E,EAAAiyB,EAAAjyB,OACAiyB,EAAArO,SACOnuC,KAAA,SAAAtgD,GACP,IAAAxL,EAEA,MADAwL,EAAA6qE,SACAiH,GAAA9xE,GASA,OANAA,EAAAmpE,KAAA9iE,QAAA,SAAA0iE,GAEA,GAAAA,EAAAz6E,OAAAy6E,EAAAz6E,MAAA6F,OAAA,yBAAA40E,EAAAz6E,MAAA6F,MACA,UAAAL,MAAAi1E,EAAAnU,UAGA50D,IACOsgD,KAAAoiD,EAAA5xC,IAaP,OATAs+B,KAAA,GACArhG,OAAAwL,KAAAgjD,GAAAl2C,QAAA,SAAAzX,GACAyE,MAAAq1B,QAAA6zB,EAAA3tD,IACAwgG,EAAAxgG,GAAA2tD,EAAA3tD,GAEAwgG,EAAAxgG,GAAA2tD,EAAA3tD,GAAAqR,aAIAiuE,EAAA+U,MAAA,aAAA4Y,EAAA,CACAK,QAAA,IAAAhZ,GAAA,CAAsBqb,eAAA,qBACtB9hG,OAAA,OACA2yF,KAAAzxC,KAAAiO,UAAAwjC,KACK9uC,KAAA,SAAAw8C,GAGL,OAFAtoG,EAAAsoG,EAAAtoG,GACAq2E,EAAAiyB,EAAAjyB,OACAiyB,EAAArO,SACKnuC,KAAA,SAAAtgD,GACL,IAAAxL,EAEA,MADAwL,EAAA6qE,SACAiH,GAAA9xE,GAEA,OAAAA,IACKsgD,KAAAoiD,EAAA5xC,IAmhBLi2C,CAAA74B,EAAA3xB,EAAAuU,GAGA,oBAAAvU,EAoBA,OAlBA0mD,EAAAnyC,EAAAvU,GAEA8kD,GAAAn3E,IAAA,WAQA,OAPAo2E,GACApyB,EACA,sBACA3xB,EAAA71C,IACA61C,EAAAv5C,QACA,EACA09F,GACApgD,KAAA,SAAAxK,GACA,OApiCAqf,EAoiCAqvC,EAAA1uD,GAAAwK,KAAA,WACA,OAAA8kD,EAAAtvD,EAAAgb,KAriCAk2C,EAsiCW,WACX,OAAAlxD,EAAAo4B,GAAAhgB,WAtiCAiH,EAAA7U,KAAA,SAAAvgD,GACA,OAAAinG,IAAA1mD,KAAA,WACA,OAAAvgD,KAEG,SAAA60D,GACH,OAAAoyC,IAAA1mD,KAAA,WACA,MAAAsU,MAPA,IAAAO,EAAA6xC,MA2iCA3F,GAAA/3B,SAGA,IAAA23B,EAAA1kD,EACAu2B,EAAAyuB,GAAAN,GACAgG,EAAAn0B,EAAA,GACAwX,EAAAxX,EAAA,GACA,OAAA5E,EAAAhgF,IAAA,WAAA+4G,GAAA3mD,KAAA,SAAA+oB,GACA,IAAA9sB,EAAA8sB,EAAAohB,OAAAphB,EAAAohB,MAAAH,GAEA,IAAA/tC,EAEA,UAAAmjD,GAAA,QAAAr2B,EAAAoB,IAAA,sBACA6f,GAaA,OAVA4X,EAAA74B,EAAAihB,GACA2Y,EAAAnyC,EAAAvU,GAEA+jD,GACApyB,EACA+yB,EACA1kD,EAAA71C,IACA61C,EAAAv5C,QACA,EACA09F,GACApgD,KAAA,SAAAxK,GACA,aAAAgb,EAAAo2C,OAAA,iBAAAp2C,EAAAo2C,OACA,iBAAAp2C,EAAAo2C,OACc/7B,IAAS,WACvBq5B,EAAA1uD,KAGAsvD,EAAAtvD,EAAAgb,IAEA0zC,EAAA1uD,GAAAwK,KAAA,WACA,OAAA8kD,EAAAtvD,EAAAgb,SA2BA,IAtnCAvU,EAkoCA,OACA0N,MAhCA,SAAA1N,EAAAuU,EAAA70B,GACA,IAAAiyC,EAAA78E,KACA,mBAAAy/D,IACA70B,EAAA60B,EACAA,EAAA,IAEAA,IArvBA,SAAAA,GAIA,OAHAA,EAAAsyC,YAAAN,EAAAhyC,EAAAsyC,aACAtyC,EAAAhjB,MAAAg1D,EAAAhyC,EAAAhjB,OACAgjB,EAAA9kC,KAAA82E,EAAAhyC,EAAA9kC,MACA8kC,EAivBAq2C,CAAAr2C,GAAA,GAEA,mBAAAvU,IACAA,EAAA,CAAa71C,IAAA61C,IAGb,IAAA4Y,EAAA3tC,QAAA0Z,UAAAof,KAAA,WACA,OAAAqmD,EAAAz4B,EAAA3xB,EAAAuU,KAGA,OADA8uC,GAAAzqC,EAAAl5B,GACAk5B,GAiBAiyC,aApoCA7qD,EAsnCA,WACA,IAAA2xB,EAAA78E,KAEA,yBAAA68E,EAAAm5B,aAxlBA,SAAAn5B,GACA,WAAA1mD,QAAA,SAAA0Z,EAAAoM,GACA4gC,EAAAm5B,aAAA,SAAArzG,EAAA+L,GACA,GAAA/L,EACA,OAAAs5C,EAAAt5C,GAEAktC,EAAAnhC,OAmlBAunG,CAAAp5B,GAEAyE,GAAAzE,GAjKA,SAAAA,GACA,OAAAA,EAAA+U,MAAA,iBACAiZ,QAAA,IAAAhZ,GAAA,CAAsBqb,eAAA,qBACtB9hG,OAAA,SACK6jD,KAAA,SAAAw8C,GACL,OAAAA,EAAArO,SA6JA8Y,CAAAr5B,GAzJA,SAAAA,GACA,OAAAA,EAAAhgF,IAAA,UAAAwyG,GAAApgD,KAAA,SAAAixC,GACA,IAAAiW,EAAA,IAAAv8B,EACAl9E,OAAAwL,KAAAg4F,EAAA9G,OAAApkF,QAAA,SAAA46F,GACA,IAAAnuB,EAAAyuB,GAAAN,GACAgG,EAAA,WAAAn0B,EAAA,GACAwX,EAAAxX,EAAA,GACA2X,EAAA+c,EAAAt5G,IAAA+4G,GACAxc,IACAA,EAAA,IAAAzf,EACAw8B,EAAA3vG,IAAAovG,EAAAxc,IAEAA,EAAAvgE,IAAAogE,KAEA,IAAAx5B,EAAA,CACAv3D,KAAAymG,GAAAwH,GACAv+B,cAAA,GAEA,OAAAiF,EAAAlF,QAAAlY,GAAAxQ,KAAA,SAAAvgD,GACA,IAAA0nG,EAAA,GACA1nG,EAAAopE,KAAA9iE,QAAA,SAAA0iE,GACA,IAAA2+B,EAAA3+B,EAAAn6E,IAAA0lD,UAAA,GACAkzD,EAAAt5G,IAAA66E,EAAAn6E,KAAAyX,QAAA,SAAAikF,GACA,IAAA2W,EAAAyG,EAAA,IAAApd,EAEAiH,EAAA9G,MAAAwW,KAGAA,EAAA3W,GAEA,IAAAqd,EAAA55G,OAAAwL,KAAAg4F,EAAA9G,MAAAwW,IAEA2G,EAAA7+B,EAAAM,KAAAN,EAAAM,IAAAohB,OACA1hB,EAAAM,IAAAohB,MAAAH,GACAqd,EAAAthG,QAAA,SAAAwhG,GACAJ,EAAAI,GACAJ,EAAAI,IAAAD,QAIA,IAEAE,EAFA/5G,OAAAwL,KAAAkuG,GAAAxhG,OACA,SAAA4hG,GAAiC,OAAAJ,EAAAI,KACjCnhG,IAAA,SAAAmhG,GACA,OAAAhI,GAAA0E,EAAAsD,GAAA,WACA,WAAA35B,EAAA7xE,YAAAwrG,EAAA35B,EAAA0N,QAAA1tB,WADA2xC,KAIA,OAAAr4E,QAAAq6C,IAAAimC,GAAAxnD,KAAA,WACA,OAAkB9rD,IAAA,QAGb+uG,EAAA,CAAc/uG,IAAA,KAwGnBuzG,CAAA75B,IA9nCSvC,IAAY,SAAA32E,GACrB,IAAA6/D,EAAA7/D,EAAAmE,MACAg8D,EAAA5Y,EAAA9oD,MAAApC,KAAA2D,GAIA,MAHA,mBAAA6/D,GACA+qC,GAAAzqC,EAAAN,GAEAM,MA0sCA6yC,CADA,UA9BA,SAAAxd,EAAAj0F,GAEA,sBAAAi0F,GAAA,IAAAA,EAAA/1F,OAAA,CACA,IAAAwzG,EAAAzd,EACA,gBAAAnhB,GACA,OAAA4+B,EAAA5+B,EAAA9yE,IAGA,OAAA6pG,GAAA5V,EAAAvqF,WAAA1J,IAIA,SAAAiqG,GACA,IAAA0H,EAAA1H,EAAAvgG,WACAkoG,EA1BA,SAAAD,GACA,WAAArtG,KAAAqtG,GACA,OAAAzG,GAAAC,KACG,aAAA7mG,KAAAqtG,GACH,OAAAzG,GAAAE,OACG,aAAA9mG,KAAAqtG,GACH,OAAAzG,GAAAG,OACG,QAAA/mG,KAAAqtG,GACH,UAAAp0G,MAAAo0G,EAAA,wCAkBAE,CAAAF,GACA,OAAAC,GAGA/H,GAAA8H,IAIA,SAAA3d,EAAAD,GACA,IAAA/tC,EAAAguC,EAAAE,OAAAF,EAAAE,MAAAH,GACA,oBAAA/tC,EAAA71C,IACA,UAAAg5F,GAAA,QAAAnV,EAAA9f,IAAA,6BACA6f,EAAA,0CAAA/tC,EAAA71C,OAeA,IAAA2hG,GAAA,CACAp+C,MATA,SAAA1N,EAAAuU,EAAA70B,GACA,OAAA8lE,GAAA93C,MAAAz8D,KAAA6D,KAAAkrD,EAAAuU,EAAA70B,IASAmrE,YANA,SAAAnrE,GACA,OAAA8lE,GAAAqF,YAAA55G,KAAA6D,KAAA4qC,KAQA,SAAAqsE,GAAAlqB,GACA,YAAAvjF,KAAAujF,GASA,SAAAmqB,GAAAr6B,EAAA7E,GACA,IAAAw0B,EAAA9vG,OAAAwL,KAAA8vE,EAAAkJ,cACA,OAAA/qD,QAAAq6C,IAAAg8B,EAAAn3F,IAAA,SAAAotF,GACA,OAAA5lB,EAAAgT,cAAA7X,EAAAoB,IAAAqpB,EAAA,CAAgDxiG,IAAA+3E,EAAAqB,UAuDhD,SAAA89B,GAAAhhG,EAAA9W,EAAA+3G,EAAAzxG,GACAyxG,EAAAnmE,EAAAmmE,GAEA,IAAAC,EAAA,GACAl0G,GAAA,EA2DA,SAAAm0G,EAAAliC,GAGA,OAAAj/D,EAAAwhE,QAAA,CACAzvE,KAAAktE,EACAwC,cAAA,EACAkP,WAAA,IACK73B,KAAA,SAAAvgD,GACL,GAAA/I,EAAAs5E,UACA,UAAAx8E,MAAA,aAEAiM,EAAAopE,KAAA9iE,QAAA,SAAA0iE,GAnBA,IAAAM,EAoBAN,EAAAyO,UAAAzO,EAAAM,MAAAi/B,GAAAv/B,EAAAz6E,MAAAgD,OApBA+3E,EAqBAN,EAAAM,IApBAA,EAAAkJ,cAAAxkF,OAAAwL,KAAA8vE,EAAAkJ,cAAA99E,OAAA,IAGA,SAAA40E,GACA,OAAAA,EAAA8R,YAAA9R,EAAA8R,WAAA1mF,OAAA,EAgBAm0G,CAAA7/B,EAAAM,OAOAN,EAAAM,IAAA8R,mBACApS,EAAAM,IAAA8R,WAIAutB,EAAAjyG,KAAAsyE,EAAAM,YACAo/B,EAAA1/B,EAAA73E,SAqBA,OAAAs2B,QAAA0Z,UACAof,KAjBA,WAGA,IAAAmmB,EAAA14E,OAAAwL,KAAAkvG,GAAAxiG,OAAA,SAAA/U,GACA,IAAA6tF,EAAA0pB,EAAAv3G,GAAA6tF,QACA,WAAAA,EAAAtqF,QAAA6zG,GAAAvpB,EAAA,MAEA,GAAAtY,EAAAhyE,OAAA,EACA,OAAAk0G,EAAAliC,KAUAnmB,KA1GA,WAEA,IAAAuoD,EAjCA,SAAAJ,GACA,IAAAt6B,EAAA,GAWA,OAVApgF,OAAAwL,KAAAkvG,GAAApiG,QAAA,SAAAnV,GACAu3G,EAAAv3G,GAAA6tF,QACA14E,QAAA,SAAAyiG,GACA36B,EAAA13E,KAAA,CACAvF,KACAI,IAAAw3G,QAKA,CACA16B,KAAAD,EACAuJ,MAAA,EACA8I,QAAA,GAkBAuoB,CAAAN,GAEA,GAAAI,EAAAz6B,KAAA35E,OAIA,OAAA+S,EAAAymE,QAAA46B,GAAAvoD,KAAA,SAAA0oD,GAEA,GAAAhyG,EAAAs5E,UACA,UAAAx8E,MAAA,aAEA,OAAA0zB,QAAAq6C,IAAAmnC,EAAAzoD,QAAA75C,IAAA,SAAAuiG,GACA,OAAAzhF,QAAAq6C,IAAAonC,EAAA76B,KAAA1nE,IAAA,SAAA2iE,GACA,IAAA6/B,EAAA7/B,EAAA70E,GAQA,OANA60E,EAAAl1E,QAGAK,GAAA,GAGA00G,KAAA32B,aAhFA,SAAA7hF,EAAA8W,EAAA6hE,GACA,IAAA8/B,EAAAx2B,GAAAnrE,KAAAmrE,GAAAjiF,GACAmtG,EAAA9vG,OAAAwL,KAAA8vE,EAAAkJ,cAEA,OAAA42B,EAIAz4G,EAAAxC,IAAAm7E,EAAAoB,KAAAnqB,KAAA,SAAAoiC,GACA,OAAAl7D,QAAAq6C,IAAAg8B,EAAAn3F,IAAA,SAAAotF,GACA,OAvBA,SAAApR,EAAAwmB,EAAApV,GACA,OAAApR,EAAAnQ,eACAmQ,EAAAnQ,aAAAuhB,IACApR,EAAAnQ,aAAAuhB,GAAAjI,SAAAqd,EAAA32B,aAAAuhB,GAAAjI,OAoBAud,CAAA1mB,EAAArZ,EAAAyqB,GACAtsF,EAAA05E,cAAA7X,EAAAoB,IAAAqpB,GAGApjG,EAAAwwF,cAAAwB,EAAAjY,IAAAqpB,QAEGpyB,MAAA,SAAAvtE,GAEH,SAAAA,EAAA02E,OACA,MAAA12E,EAGA,OAAAo0G,GAAA/gG,EAAA6hE,KAjBAk/B,GAAA/gG,EAAA6hE,GA+EAggC,CAAA34G,EAAA8W,EAAA0hG,GACA5oD,KAAA,SAAA+xB,GACA,IAAAwrB,EAAA9vG,OAAAwL,KAAA2vG,EAAA32B,cASA,OARAF,EACAhsE,QAAA,SAAA4yF,EAAA5rG,GACA,IAAAilF,EAAA42B,EAAA32B,aAAAsrB,EAAAxwG,WACAilF,EAAAE,YACAF,EAAA79E,OACA69E,EAAAnhF,KAAA8nG,IAGAiQ,IAdAA,QAmBA5oD,KAAA,SAAAC,GACAmoD,IAAAtzG,OAAAurC,GAAA4f,GAAAt6C,OAAAqjG,gBA+DAhpD,KAPA,WACA,OAAY9rD,KAAA45E,KAAAs6B,KASZ,IAAAa,GAAA,EACAC,GAAA,UAQAC,GAAA,EACAC,GAAA,EAEA,SAAAC,GAAAz7B,EAAAh9E,EAAA04G,EAAAC,EAAAC,GACA,OAAA57B,EAAAhgF,IAAAgD,GAAAwwE,MAAA,SAAA1tE,GACA,SAAAA,EAAA62E,OAMA,MALA,SAAAqD,EAAA6N,SAAA,UAAA7N,EAAA6N,SACAhM,EACA,+DAGA,CACAg6B,WAAAF,EACAp/B,IAAAv5E,EACAonF,QAAA,GACA0xB,WAAAR,GACAl3G,QAAAi3G,IAGA,MAAAv1G,IACGssD,KAAA,SAAA+oB,GACH,IAAAygC,EAAAx5B,WAKAjH,EAAA6W,WAAA0pB,EA0BA,OArBAvgC,EAAAiP,SAAAjP,EAAAiP,SAAA,IAAAryE,OAAA,SAAAwyE,GACA,OAAAA,EAAAsxB,aAAAF,IAIAxgC,EAAAiP,QAAA9hF,QAAA,CACA0pF,SAAA0pB,EACAG,WAAAF,IAMAxgC,EAAAiP,QAAAjP,EAAAiP,QAAAllF,MAAA,EAAAq2G,IAEApgC,EAAA/2E,QAAAi3G,GACAlgC,EAAA2gC,WAAAR,GAEAngC,EAAA0gC,WAAAF,EACAxgC,EAAA6W,SAAA0pB,EAEA17B,EAAA1D,IAAAnB,GAAA3H,MAAA,SAAA1tE,GACA,SAAAA,EAAA62E,OAEA,OAAA8+B,GAAAz7B,EAAAh9E,EAAA04G,EAAAC,EAAAC,GAEA,MAAA91G,MAKA,SAAAi2G,GAAAziG,EAAA9W,EAAAQ,EAAA44G,EAAAh5C,GACAz/D,KAAAmW,MACAnW,KAAAX,SACAW,KAAAH,KACAG,KAAAy4G,cACAz4G,KAAAy/D,QAAA,GAGAm5C,GAAAh7G,UAAAi7G,gBAAA,SAAAN,EAAAC,GACA,IAAAn4G,EAAAL,KACA,OAAAA,KAAA84G,aAAAP,EAAAC,GAAAvpD,KAAA,WACA,OAAA5uD,EAAA04G,aAAAR,EAAAC,MAIAI,GAAAh7G,UAAAk7G,aAAA,SAAAP,EAAAC,GACA,OAAAx4G,KAAAy/D,KAAAu5C,sBACAV,GAAAt4G,KAAAX,OAAAW,KAAAH,GAAA04G,EACAC,EAAAx4G,KAAAy4G,aAEAtiF,QAAA0Z,SAAA,IAIA+oE,GAAAh7G,UAAAm7G,aAAA,SAAAR,EAAAC,GACA,GAAAx4G,KAAAy/D,KAAAw5C,sBAAA,CACA,IAAA54G,EAAAL,KACA,OAAAs4G,GAAAt4G,KAAAmW,IAAAnW,KAAAH,GAAA04G,EACAC,EAAAx4G,KAAAy4G,aACApoC,MAAA,SAAA1tE,GACA,GAAAu2G,GAAAv2G,GAEA,OADAtC,EAAAo/D,KAAAw5C,uBAAA,GACA,EAEA,MAAAt2G,IAGA,OAAAwzB,QAAA0Z,SAAA,IAIA,IAAAspE,GAAA,CACA55G,UAAA,SAAA65G,EAAAC,GAEA,WAAA3kB,GAAA0kB,EAAAvqB,SAAAwqB,EAAAxqB,UACAwqB,EAAAxqB,SAGA,GAEAyqB,EAAA,SAAAF,EAAAC,GAEA,OAyEA,SAAAE,EAAAC,GACA,GAAAD,EAAAb,aAAAc,EAAAd,WACA,OACA7pB,SAAA0qB,EAAA1qB,SACA5H,QAAAsyB,EAAAtyB,SAIA,OAGA,SAAAwyB,EAAAC,EAAAC,GAGA,IAAA36G,EAAA06G,EAAA,GACA,IAAAE,EAAAF,EAAA33G,MAAA,GACA,IAAAkrD,EAAA0sD,EAAA,GACA,IAAAE,EAAAF,EAAA53G,MAAA,GAEA,IAAA/C,GAAA,IAAA26G,EAAAv2G,OACA,OACAyrF,SAAAwpB,GACApxB,QAAA,IAIA,IAAA6yB,EAAA96G,EAAA05G,WAEA,GAAAqB,GAAAD,EAAAH,GACA,OACA9qB,SAAA7vF,EAAA6vF,SACA5H,QAAAyyB,GAIA,IAAAxe,EAAAjuC,EAAAyrD,WACA,GAAAqB,GAAA7e,EAAA0e,GACA,OACA/qB,SAAA5hC,EAAA4hC,SACA5H,QAAA4yB,GAIA,OAAAJ,EAAAG,EAAAC,GAnCAJ,CAAAF,EAAAtyB,QAAAuyB,EAAAvyB,SAjFA+yB,CAAAX,EAAAD,GAAAvqB,WAuHA,SAAAkrB,GAAAE,EAAAhzB,GACA,IAAAniE,EAAAmiE,EAAA,GACA9qC,EAAA8qC,EAAAllF,MAAA,GAEA,SAAAk4G,GAAA,IAAAhzB,EAAA7jF,UAIA62G,IAAAn1F,EAAA4zF,YAIAqB,GAAAE,EAAA99D,IAGA,SAAA+8D,GAAAv2G,GACA,uBAAAA,EAAA62E,QAAA,IAAAp5E,KAAAmN,MAAA5K,EAAA62E,OAAA,KAnIAo/B,GAAAh7G,UAAAs8G,cAAA,WACA,IAAA75G,EAAAL,KAEA,OAAAK,EAAAo/D,MAAAp/D,EAAAo/D,KAAAw5C,wBAAA54G,EAAAo/D,KAAAu5C,sBACA34G,EAAA8V,IAAAtZ,IAAAwD,EAAAR,IAAAovD,KAAA,SAAAoqD,GACA,OAAAA,EAAAxqB,UAAAwpB,KACKhoC,MAAA,SAAA1tE,GAEL,SAAAA,EAAA62E,OACA,MAAA72E,EAEA,OAAA01G,KAIAh4G,EAAAhB,OAAAxC,IAAAwD,EAAAR,IAAAovD,KAAA,SAAAmqD,GACA,OAAA/4G,EAAAo/D,MAAAp/D,EAAAo/D,KAAAu5C,wBAAA34G,EAAAo/D,KAAAw5C,sBACAG,EAAAvqB,UAAAwpB,GAGAh4G,EAAA8V,IAAAtZ,IAAAwD,EAAAR,IAAAovD,KAAA,SAAAoqD,GAIA,OAAAD,EAAAn4G,UAAAo4G,EAAAp4G,QACAo3G,IAKAp3G,EADAm4G,EAAAn4G,QACAm4G,EAAAn4G,QAAA2N,WAEA,eAGAuqG,GACAA,GAAAl4G,GAAAm4G,EAAAC,GAGAhB,GAXA,IAAAp3G,GAYK,SAAA0B,GACL,SAAAA,EAAA62E,QAAA4/B,EAAAvqB,SACA,OAAAxuF,EAAA8V,IAAAgjE,IAAA,CACAC,IAAA/4E,EAAAR,GACAgvF,SAAAwpB,KACSppD,KAAA,WACT,OAAAopD,IACS,SAAA11G,GACT,OAAAu2G,GAAAv2G,IACAtC,EAAAo/D,KAAAw5C,uBAAA,EACAG,EAAAvqB,UAGAwpB,KAGA,MAAA11G,MAEG0tE,MAAA,SAAA1tE,GACH,SAAAA,EAAA62E,OACA,MAAA72E,EAEA,OAAA01G,MAwEA,IAAA8B,GAAA,EAwCA,SAAAC,GAAAjkG,EAAA9W,EAAAogE,GACA,IAAA6lC,EAAA7lC,EAAAu5B,QAAAv5B,EAAAu5B,QAAAhnF,KAAA0iF,IAAA,GACA6E,EAAA95B,EAAA7qD,OAAA6qD,EAAA7qD,OAAAhG,WAAA,GACAyrG,EAAA,GACAC,EAAA,GACAnnB,EAAA,GAiBA,OAZA1zB,EAAA0zB,WACAA,EAAA7mC,KAAAiO,UAAAkF,EAAA0zB,WAGA1zB,EAAA7qD,QAAA6qD,EAAAohB,eACAw5B,EAAA/tD,KAAAiO,UAxBA,SAAA8/C,GACA,OAAA39G,OAAAwL,KAAAmyG,GAAAroG,KAAA0iF,IAAA/iF,OAAA,SAAAhD,EAAApR,GAEA,OADAoR,EAAApR,GAAA88G,EAAA98G,GACAoR,GACG,IAoBH4rG,CAAA96C,EAAAohB,gBAGAphB,EAAA7qD,QAAA,UAAA6qD,EAAA7qD,SACA0lG,EAAA76C,EAAAhb,KAAA71C,YAGAunB,QAAAq6C,IAAA,CAAAr6D,EAAAtW,KAAAR,EAAAQ,OAAAovD,KAAA,SAAAvgD,GACA,IAAA8rG,EAAA9rG,EAAA,GAAAA,EAAA,GAAA6qF,EAAA+gB,EACAD,EAAA/U,EAAAnS,EACA,WAAAh9D,QAAA,SAAA0Z,GACAk1C,GAAAy1B,EAAA3qE,OAEGof,KAAA,SAAAwrD,GAKH,iBADAA,IAAAnxG,QAAA,WAAAA,QAAA,cAKA,SAAAoxG,GAAAvkG,EAAA9W,EAAAogE,EAAAg5C,EAAA9pG,GACA,IACAgsG,EAgBAC,EACAC,EAlBAC,EAAA,GAEAC,EAAA,CACAh8B,IAAA,EACA31B,QAAA,GACA2zB,KAAA,IAEAi+B,GAAA,EACAC,GAAA,EACAC,GAAA,EACArsB,EAAA,EACApD,EAAAhsB,EAAAgsB,YAAAhsB,EAAAisB,OAAA,EACA0hB,EAAA3tC,EAAA2tC,YAAA,IACA+N,EAAA17C,EAAA07C,eAAA,GACAC,GAAA,EACApiB,EAAAv5B,EAAAu5B,QACA7F,EAAA1zB,EAAA0zB,SAGAkoB,EAAA,GAEA7C,EAAAvtC,KAEAt8D,KAAA,CACAxL,IAAA,EACAm4G,YAAA,IAAAjoF,MAAAgoD,cACAkgC,UAAA,EACAC,aAAA,EACAC,mBAAA,EACAC,OAAA,IAGA,IAAA58B,EAAA,GAGA,SAAA68B,IACA,OAAAd,EACA1kF,QAAA0Z,UAEAuqE,GAAAjkG,EAAA9W,EAAAogE,GAAAxQ,KAAA,SAAAvgD,GACAksG,EAAAlsG,EAEA,IAAAktG,EAAA,GAEAA,GADA,IAAAn8C,EAAA84C,WACA,CAA0BU,uBAAA,EAAAD,uBAAA,GACnB,WAAAv5C,EAAA84C,WACP,CAA0BU,uBAAA,EAAAD,uBAAA,GACnB,WAAAv5C,EAAA84C,WACP,CAA0BU,uBAAA,EAAAD,uBAAA,GAE1B,CAA0BC,uBAAA,EAAAD,uBAAA,GAG1B6B,EAAA,IAAAjC,GAAAziG,EAAA9W,EAAAu7G,EAAAnC,EAAAmD,KAIA,SAAAC,IAGA,GAFAR,EAAA,GAEA,IAAAV,EAAA59B,KAAA35E,OAAA,CAGA,IAAA25E,EAAA49B,EAAA59B,KACA++B,EAAA,CAAoB3nD,QAAAsL,EAAAtL,SACpB,OAAA90D,EAAA6sF,SAAA,CAA4BnP,OAAA4P,WAAA,GAA6BmvB,GAAA7sD,KAAA,SAAAvgD,GAEzD,GAAA+pG,EAAAx5B,UAEA,MADA88B,IACA,IAAAt5G,MAAA,aAKA,IAAAu5G,EAAAt/G,OAAAY,OAAA,MACAoR,EAAAsG,QAAA,SAAAtG,GACAA,EAAA5L,QACAk5G,EAAAttG,EAAA7O,IAAA6O,KAIA,IAAAutG,EAAAv/G,OAAAwL,KAAA8zG,GAAA54G,OACAuL,EAAA8sG,oBAAAQ,EACAttG,EAAA6sG,cAAAz+B,EAAA35E,OAAA64G,EAEAl/B,EAAA/nE,QAAA,SAAAgjE,GACA,IAAAl1E,EAAAk5G,EAAAhkC,EAAAoB,KACA,GAAAt2E,EAAA,CACA6L,EAAA+sG,OAAAt2G,KAAAtC,GAEA,IAAAo5G,GAAAp5G,EAAAvG,MAAA,IAAAkN,cACA,oBAAAyyG,GAAA,cAAAA,EAGA,MAAAp5G,EAFA21G,EAAAvzG,KAAA,SAAA+rC,EAAAnuC,SAKAu4G,EAAAj2G,KAAA4yE,MAIK,SAAAr1E,GAEL,MADAgM,EAAA8sG,oBAAA1+B,EAAA35E,OACAT,KAIA,SAAAw5G,IACA,GAAAxB,EAAA73G,MACA,UAAAL,MAAA,qCAEAkM,EAAAkgF,WAAA8rB,EAAA57B,IACA,IAAAq9B,EAAAnrE,EAAAtiC,GAYA,OAXA0sG,EAAAj4G,SACAg5G,EAAAr/B,KAAAs+B,EAGA,iBAAAV,EAAA7wG,UACAsyG,EAAAtyG,QAAA6wG,EAAA7wG,eACA6wG,EAAA7wG,SAEA2uG,EAAAvzG,KAAA,SAAAk3G,IAEApB,GAAA,EACAH,EAAAhC,gBAAA8B,EAAA57B,IACAy5B,GAAAvpD,KAAA,WAGA,GAFA+rD,GAAA,EAEAvC,EAAAx5B,UAEA,MADA88B,IACA,IAAAt5G,MAAA,aAEAk4G,OAAAp7G,EACA88G,MACKhsC,MAAA,SAAA1tE,GAEL,MADA25G,EAAA35G,GACAA,IA2BA,SAAA45G,IACA,OAAApF,GAAAhhG,EAAA9W,EAAAs7G,EAAAvD,MAAAqB,GAAAxpD,KAAA,SAAAutD,GACA7B,EAAA73G,OAAA05G,EAAAr5G,GACAq5G,EAAAz/B,KAAA/nE,QAAA,SAAAgjE,UACA2iC,EAAAvD,MAAAp/B,EAAAoB,KACAzqE,EAAA4sG,YACAZ,EAAA59B,KAAA33E,KAAA4yE,OAKA,SAAAykC,IAlCA,IACAn0B,EAkCAmwB,EAAAx5B,WAAA07B,IAGA,IAAAG,EAAA13G,QAIAu3G,EAAAG,EAAAlzG,SAzCA0gF,EAAA,GACAqyB,EAAAvxD,QAAAp0C,QAAA,SAAAypD,GAGA,WAAAA,EAAA5+D,KAGAyoF,EAAA7pB,EAAA5+D,IAAA4+D,EAAArV,QAAA/zC,IAAA,SAAAqlD,GACA,OAAAA,EAAAz6D,SAGAZ,EAAAouF,SAAAnF,GAAAr5B,KAAA,SAAAmoD,GAEA,GAAAqB,EAAAx5B,UAEA,MADA88B,IACA,IAAAt5G,MAAA,aAGAk4G,EAAAvD,WAyBAnoD,KAAAstD,GACAttD,KAAA4sD,GACA5sD,KAAAktD,GACAltD,KAAAwtD,GACApsC,MAAA,SAAA1tE,GACA+5G,EAAA,yCAAA/5G,MAVAg6G,GAAA,IAeA,SAAAA,EAAAC,GACA,IAAA7B,EAAA3xD,QAAAhmD,QAaAw5G,GACA3B,GACAF,EAAA3xD,QAAAhmD,QAAAgqG,KAEA0N,EAAA11G,KAAA21G,GACAA,EAAA,CACAh8B,IAAA,EACA31B,QAAA,GACA2zB,KAAA,IAEA,YAAA07B,EAAA9yG,OAAA,YAAA8yG,EAAA9yG,QACA8yG,EAAA9yG,MAAA,SACA8yG,EAAAvzG,KAAA,WAEAu3G,KA1BA,IAAA3B,EAAA13G,QAAAu3G,KACAlvB,GAAA3M,EAAA4M,MAAAuvB,KACAxC,EAAA9yG,MAAA,UACA8yG,EAAAvzG,KAAA,WAEA+1G,GACAc,KAyBA,SAAAW,EAAAn5C,EAAA5gE,GACAu4G,IAGAv4G,EAAAC,UACAD,EAAAC,QAAA2gE,GAEA50D,EAAAxL,IAAA,EACAwL,EAAA6qE,OAAA,WACAshC,EAAA,GACAC,EAAA,CACAh8B,IAAA,EACA31B,QAAA,GACA2zB,KAAA,IAEAg/B,EAAAp5G,IAIA,SAAAo5G,EAAAc,GACA,KAAA3B,GAIAzC,EAAAx5B,YACAtwE,EAAA6qE,OAAA,YACAwhC,IASA,GALArsG,EAAA6qE,OAAA7qE,EAAA6qE,QAAA,WACA7qE,EAAAmuG,UAAA,IAAAzpF,MAAAgoD,cACA1sE,EAAAkgF,WACAqsB,GAAA,EAEA2B,EAAA,EAEAA,EAAAt8B,GAAAs8B,IACAluG,SAGA,IAAAutG,GAAAW,EAAAtgH,MAAA,IAAAkN,cACA,iBAAAyyG,GAAA,cAAAA,GACAzD,EAAAvzG,KAAA,QAAA23G,GACApE,EAAAxwG,sBA3VA,SAAAw3D,EAAAg5C,EAAA31G,EAAA8nC,GACA,QAAA60B,EAAAs9C,MAGA,OAFAtE,EAAAvzG,KAAA,QAAApC,QACA21G,EAAAxwG,qBAQA,GAJA,mBAAAw3D,EAAAu9C,oBACAv9C,EAAAu9C,kBAAAz+B,GAEAk6B,EAAAvzG,KAAA,eAAApC,GACA,WAAA21G,EAAA9yG,OAAA,YAAA8yG,EAAA9yG,MAAA,CACA8yG,EAAAvzG,KAAA,SAAApC,GACA21G,EAAA9yG,MAAA,UACA,IAAAs3G,EAAA,WACAx9C,EAAAy9C,iBAAA/C,IAKA1B,EAAAlxG,KAAA,SAHA,WACAkxG,EAAA1yG,eAAA,SAAAk3G,KAGAxE,EAAAlxG,KAAA,SAAA01G,GAGAx9C,EAAAy9C,iBAAAz9C,EAAAy9C,kBAAA/C,GACA16C,EAAAy9C,iBAAAz9C,EAAAu9C,kBAAAv9C,EAAAy9C,kBACAhzG,WAAA0gC,EAAA60B,EAAAy9C,kBAmUAC,CAAA19C,EAAAg5C,EAAAoE,EAAA,WACAnC,GAAAvkG,EAAA9W,EAAAogE,EAAAg5C,UAIAA,EAAAvzG,KAAA,WAAAyJ,GACA8pG,EAAAxwG,qBAKA,SAAAi3E,EAAAzgB,EAAA30D,EAAA0/E,GAEA,GAAAivB,EAAAx5B,UACA,OAAA88B,IAIA,iBAAAjyG,IACAixG,EAAAjxG,WAGA42E,GAAAjhB,EAAAihB,CAAAjiB,KAIAs8C,EAAAh8B,IAAAtgB,EAAAsgB,KAAAyK,EACAuxB,EAAA3xD,QAAAhkD,KAAAq5D,GACIqb,IAAS,WACb6iC,EAAA,IAAA7B,EAAA13G,QAAA07E,EAAA4M,SAKA,SAAA0xB,EAAAh0D,GAGA,GAFAgyD,GAAA,EAEA3C,EAAAx5B,UACA,OAAA88B,IAKA,GAAA3yD,EAAA8F,QAAA9rD,OAAA,EACA07E,EAAAE,MAAA51B,EAAA8F,QAAA9F,EAAA8F,QAAA9rD,OAAA,GAAA27E,IACAs9B,IACAM,GAAA,OACK,CAEL,IAAAtzB,EAAA,WACAoC,GACA3M,EAAA4M,MAAA,EACA2wB,KAEApB,GAAA,EAEA0B,GAAA,IAIAhC,GAAA,IAAAvxD,EAAA8F,QAAA9rD,OAUAimF,KATA2xB,GAAA,EACAH,EAAAhC,gBAAAzvD,EAAAylC,SACA2pB,GAAAvpD,KAAA,WACA+rD,GAAA,EACArsG,EAAAkgF,WAAAzlC,EAAAylC,SACAxF,MAEAhZ,MAAAisC,KAQA,SAAAe,EAAA16G,GAGA,GAFAy4G,GAAA,EAEA3C,EAAAx5B,UACA,OAAA88B,IAEAW,EAAA,mBAAA/5G,GAIA,SAAA05G,IACA,IACAjB,IACAH,GACAH,EAAA13G,OAAA+3G,EAHA,CAOAC,GAAA,EAQA3C,EAAA1sB,WACA0sB,EAAA1yG,eAAA,SAAA0yG,EAAA6E,eACA7E,EAAA1sB,SAAAp3C,UAEA8jE,EAAAlxG,KAAA,SAAAg2G,GAEA,IAAAn0D,EAAAjzC,EAAAizC,QAAA01B,GACAz3E,GAAA,SAAA63E,GACA91B,EAAA6F,KAAAlpD,KACAqjD,EAAA6F,KAAAmuD,GACA/sC,MAAAgtC,GAEA59C,EAAAs9C,QAEAtE,EAAA1sB,SAAA3iC,EACAqvD,EAAA6E,cAAAC,GAtBA,SAAAA,IACAn0D,EAAAzU,SAEA,SAAA5uC,IACA0yG,EAAA1yG,eAAA,SAAAw3G,IAuBA,SAAAC,IACA7B,IAAA1sD,KAAA,WAEA,IAAAwpD,EAAAx5B,UAIA,OAAA47B,EAAAX,gBAAAjrD,KAAA,SAAAspD,GAEAz5B,EAAA,CACAE,MAFA6P,EAAA0pB,EAGA97D,MAAA2wD,EACAA,aACA7iD,MAAA,WACAyuC,UACA7F,WACApE,aAAA,GAEAtvB,EAAA7qD,SACA,iBAAA6qD,EAAA7qD,OAEAkqE,EAAAlH,cAAA,EAEAkH,EAAAlqE,OAAA6qD,EAAA7qD,QAGA,cAAA6qD,IACAqf,EAAAuuB,UAAA5tC,EAAA4tC,WAEA,YAAA5tC,IACAqf,EAAA3qB,QAAAsL,EAAAtL,SAEAsL,EAAAohB,eACA/B,EAAA+B,aAAAphB,EAAAohB,cAEAphB,EAAAhb,OACAq6B,EAAAr6B,KAAAgb,EAAAhb,MAEA43D,MAlCAN,MAoCK1rC,MAAA,SAAA1tE,GACL+5G,EAAA,+BAAA/5G,KAKA,SAAA25G,EAAA35G,GACAq4G,GAAA,EACA0B,EAAA,uCAAA/5G,GA1ZA81G,EAAAntB,MAAAn1E,EAAA9W,GA8ZAo5G,EAAAx5B,UACA88B,KAIAtD,EAAAgF,kBACAhF,EAAAlxG,KAAA,SAAAw0G,GAEA,mBAAAt8C,EAAA4pB,WACAovB,EAAAlxG,KAAA,QAAAk4D,EAAA4pB,UACAovB,EAAAlxG,KAAA,oBAAAoH,GACA8wD,EAAA4pB,SAAA,KAAA16E,MAGA8pG,EAAAgF,iBAAA,QAGA,IAAAh+C,EAAAuf,MACAw+B,IAEA7B,IAAA1sD,KAAA,WAEA,OADA+rD,GAAA,EACAH,EAAAhC,gBAAAp5C,EAAAuf,MAAAw5B,KACKvpD,KAAA,WACL+rD,GAAA,EAEAvC,EAAAx5B,UACA88B,KAGAltB,EAAApvB,EAAAuf,MACAw+B,OACKntC,MAAAisC,IAOL,SAAAoB,KACEjjC,EAAA,aAAYt+E,KAAA6D,MACdA,KAAAi/E,WAAA,EACAj/E,KAAA2F,MAAA,UACA,IAAAtF,EAAAL,KACA8jE,EAAA,IAAA3tC,QAAA,SAAAulD,EAAAz/B,GACA57C,EAAAkH,KAAA,WAAAm0E,GACAr7E,EAAAkH,KAAA,QAAA00C,KAEA57C,EAAA4uD,KAAA,SAAApf,EAAAoM,GACA,OAAA6nB,EAAA7U,KAAApf,EAAAoM,IAEA57C,EAAAgwE,MAAA,SAAAp0B,GACA,OAAA6nB,EAAAuM,MAAAp0B,IAIA57C,EAAAgwE,MAAA,cA4BA,SAAAstC,GAAA9gC,EAAApd,GACA,IAAAm+C,EAAAn+C,EAAAm+C,iBACA,uBAAA/gC,EACA,IAAA+gC,EAAA/gC,EAAApd,GAEAod,EAIA,SAAAghC,GAAA1nG,EAAA9W,EAAAogE,EAAA70B,GAUA,GARA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,SAEA,IAAAA,IACAA,EAAA,IAGAA,EAAAu5B,UAAAh3F,MAAAq1B,QAAAooC,EAAAu5B,SACA,MAAAzY,GAAAL,GACA,6CAGAzgB,EAAA4pB,SAAAz+C,GACA60B,EAAAxuB,EAAAwuB,IACAgsB,WAAAhsB,EAAAgsB,YAAAhsB,EAAAisB,KACAjsB,EAAAs9C,MAAA,UAAAt9C,KAAAs9C,MAEAt9C,EAAAm+C,iBAAAn+C,EAAAm+C,kBAAA59G,KACA,IAAA89G,EAAA,IAAAJ,GAAAj+C,GAIA,OADAi7C,GAFAiD,GAAAxnG,EAAAspD,GACAk+C,GAAAt+G,EAAAogE,GACAA,EAAAq+C,GACAA,EAIA,SAAA53D,GAAA/vC,EAAA9W,EAAAogE,EAAA70B,GAaA,MAZA,mBAAA60B,IACA70B,EAAA60B,EACAA,EAAA,SAEA,IAAAA,IACAA,EAAA,KAEAA,EAAAxuB,EAAAwuB,IAEAm+C,iBAAAn+C,EAAAm+C,kBAAA59G,KAGA,IAAA+9G,GAFA5nG,EAAAwnG,GAAAxnG,EAAAspD,GACApgE,EAAAs+G,GAAAt+G,EAAAogE,GACAA,EAAA70B,GAGA,SAAAmzE,GAAA5nG,EAAA9W,EAAAogE,EAAA70B,GACA,IAAAvqC,EAAAL,KACAA,KAAAg+G,UAAA,EAEA,IAAAC,EAAAx+C,EAAAr6D,KAAAg6E,EAAA,GAAqD3f,IAAAr6D,MAAAq6D,EACrDy+C,EAAAz+C,EAAA9tB,KAAAytC,EAAA,GAAqD3f,IAAA9tB,MAAA8tB,EAQrD,SAAA0+C,EAAA1/C,GACAp+D,EAAA6E,KAAA,UACAk5G,UAAA,OACA3/C,WAGA,SAAA4/C,EAAA5/C,GACAp+D,EAAA6E,KAAA,UACAk5G,UAAA,OACA3/C,WAGA,SAAA6/C,EAAAtmC,GACA33E,EAAA6E,KAAA,UACAk5G,UAAA,OACApmC,QAGA,SAAAumC,EAAAvmC,GACA33E,EAAA6E,KAAA,UACAk5G,UAAA,OACApmC,QAGA,SAAAwmC,IACAn+G,EAAAm+G,YAAA,EAEAn+G,EAAAo+G,YACAp+G,EAAA6E,KAAA,UAGA,SAAAu5G,IACAp+G,EAAAo+G,YAAA,EAEAp+G,EAAAm+G,YACAn+G,EAAA6E,KAAA,UAGA,SAAAw5G,IACAr+G,EAAAm+G,YAAA,EAEAn+G,EAAAo+G,YACAp+G,EAAA6E,KAAA,UACAk5G,UAAA,SAIA,SAAAO,IACAt+G,EAAAo+G,YAAA,EAEAp+G,EAAAm+G,YACAn+G,EAAA6E,KAAA,UACAk5G,UAAA,SA1DAp+G,KAAAoF,KAAAy4G,GAAA1nG,EAAA9W,EAAA4+G,GACAj+G,KAAA2xC,KAAAksE,GAAAx+G,EAAA8W,EAAA+nG,GAEAl+G,KAAAw+G,YAAA,EACAx+G,KAAAy+G,YAAA,EA2DA,IAAAG,EAAA,GAEA,SAAAC,EAAAvgH,GACA,gBAAAipE,EAAAt9D,IACA,WAAAs9D,IACAt9D,IAAAk0G,GAAAl0G,IAAAo0G,IACA,WAAA92C,IACAt9D,IAAAs0G,GAAAt0G,IAAAq0G,IACA,WAAA/2C,IACAt9D,IAAAw0G,GAAAx0G,IAAAu0G,IACA,WAAAj3C,IACAt9D,IAAA00G,GAAA10G,IAAAy0G,MAGAn3C,KAAAq3C,IACAA,EAAAr3C,GAAA,IAEAq3C,EAAAr3C,GAAAjpE,IAAA,EACA,IAAA5B,OAAAwL,KAAA02G,EAAAr3C,IAAAnkE,QAEA/C,EAAA4H,mBAAAs/D,KAWA,SAAAu3C,EAAAx1B,EAAA/hB,EAAA3iE,IACA,GAAA0kF,EAAAniF,UAAAogE,GAAAtyD,QAAArQ,IACA0kF,EAAAjiF,GAAAkgE,EAAA3iE,GAPA66D,EAAAisB,OACA1rF,KAAAoF,KAAAiC,GAAA,WAAAhH,EAAAsxC,KAAAgD,OAAAn3C,KAAA6C,EAAAsxC,OACA3xC,KAAA2xC,KAAAtqC,GAAA,WAAAhH,EAAA+E,KAAAuvC,OAAAn3C,KAAA6C,EAAA+E,QASApF,KAAAqH,GAAA,uBAAAkgE,GACA,WAAAA,GACAu3C,EAAAz+G,EAAAsxC,KAAA,SAAAwsE,GACAW,EAAAz+G,EAAA+E,KAAA,SAAAi5G,IACK,WAAA92C,GACLu3C,EAAAz+G,EAAAsxC,KAAA,SAAA4sE,GACAO,EAAAz+G,EAAA+E,KAAA,SAAAk5G,IACK,WAAA/2C,GACLu3C,EAAAz+G,EAAAsxC,KAAA,SAAAgtE,GACAG,EAAAz+G,EAAA+E,KAAA,SAAAs5G,IACK,WAAAn3C,IACLu3C,EAAAz+G,EAAAsxC,KAAA,SAAA8sE,GACAK,EAAAz+G,EAAA+E,KAAA,SAAAo5G,MAIAx+G,KAAAqH,GAAA,0BAAAkgE,GACA,WAAAA,GACAlnE,EAAAsxC,KAAA5rC,eAAA,SAAAo4G,GACA99G,EAAA+E,KAAAW,eAAA,SAAAs4G,IACK,WAAA92C,GACLlnE,EAAAsxC,KAAA5rC,eAAA,SAAAw4G,GACAl+G,EAAA+E,KAAAW,eAAA,SAAAu4G,IACK,WAAA/2C,GACLlnE,EAAAsxC,KAAA5rC,eAAA,SAAA44G,GACAt+G,EAAA+E,KAAAW,eAAA,SAAA24G,IACK,WAAAn3C,IACLlnE,EAAAsxC,KAAA5rC,eAAA,SAAA04G,GACAp+G,EAAA+E,KAAAW,eAAA,SAAAy4G,MAIAx+G,KAAA2xC,KAAAtqC,GAAA,iBAAAw3G,EAAA,SACA7+G,KAAAoF,KAAAiC,GAAA,iBAAAw3G,EAAA,SAEA,IAAA/6C,EAAA3tC,QAAAq6C,IAAA,CACAxwE,KAAAoF,KACApF,KAAA2xC,OACAsd,KAAA,SAAA0sB,GACA,IAAAl9E,EAAA,CACA2G,KAAAu2E,EAAA,GACAhqC,KAAAgqC,EAAA,IAOA,OALAt7E,EAAA6E,KAAA,WAAAzG,GACAmsC,GACAA,EAAA,KAAAnsC,GAEA4B,EAAA4H,qBACAxJ,GACG,SAAAkE,GAaH,GAZAtC,EAAAs0C,SACA/J,EAGAA,EAAAjoC,GAKAtC,EAAA6E,KAAA,QAAAvC,GAEAtC,EAAA4H,qBACA2iC,EAEA,MAAAjoC,IAIA3C,KAAAivD,KAAA,SAAA8vD,EAAAp8G,GACA,OAAAmhE,EAAA7U,KAAA8vD,EAAAp8G,IAGA3C,KAAAqwE,MAAA,SAAA1tE,GACA,OAAAmhE,EAAAuM,MAAA1tE,IAxRA63E,IAAQkjC,GAAcjjC,EAAA,cAqBtBijC,GAAA9/G,UAAA+2C,OAAA,WACA30C,KAAAi/E,WAAA,EACAj/E,KAAA2F,MAAA,YACA3F,KAAAkF,KAAA,WAGAw4G,GAAA9/G,UAAA0tF,MAAA,SAAAn1E,EAAA9W,GACA,IAAAgB,EAAAL,KAMA,SAAAupF,IACAlpF,EAAAs0C,SANAt0C,EAAA2+G,eAGA3+G,EAAA2+G,cAAA,EAKA7oG,EAAA5O,KAAA,YAAAgiF,GACAlqF,EAAAkI,KAAA,YAAAgiF,GAKAlpF,EAAAkH,KAAA,WAJA,WACA4O,EAAApQ,eAAA,YAAAwjF,GACAlqF,EAAA0G,eAAA,YAAAwjF,OA0CA/O,IAAQujC,GAAOtjC,EAAA,cAyMfsjC,GAAAngH,UAAA+2C,OAAA,WACA30C,KAAAg+G,WACAh+G,KAAAg+G,UAAA,EACAh+G,KAAAoF,KAAAuvC,SACA30C,KAAA2xC,KAAAgD,WA8BAwiC,GAAAmb,OAjqHA,SAAAnb,GACAA,EAAAuT,QAAA,MAAA4b,IAAA,KAiqHAhU,OAvkFA,SAAAnb,GACAA,EAAAuT,QAAA,OAAA+f,IAAA,GACAtzB,EAAAuT,QAAA,QAAA+f,IAAA,KAskFAnY,OAAA0kB,IACA1kB,OA7BA,SAAAnb,GACAA,EAAAujC,UAAAmD,GACA1mC,EAAAjxB,QAEAxpD,OAAAC,eAAAw6E,EAAAv5E,UAAA,aACAf,IAAA,WACA,IAAAwD,EAAAL,KAWA,YAVA,IAAAA,KAAAi/G,mBACAj/G,KAAAi/G,iBAAA,CACA/mG,KAAA,SAAA2nB,EAAA4/B,EAAA70B,GACA,OAAAvqC,EAAA2K,YAAA0vG,UAAA76E,EAAAx/B,EAAAo/D,EAAA70B,IAEAkxB,GAAA,SAAAj8B,EAAA4/B,EAAA70B,GACA,OAAAvqC,EAAA2K,YAAA0vG,UAAAr6G,EAAAw/B,EAAA4/B,EAAA70B,MAIA5qC,KAAAi/G,oBAIA9nC,EAAAv5E,UAAAsoD,KAAA,SAAAy4B,EAAAlf,EAAA70B,GACA,OAAA5qC,KAAAgL,YAAAk7C,KAAAlmD,KAAA2+E,EAAAlf,EAAA70B,MAWehhC,EAAA,8SCvgUMs1G,aACnB,SAAAA,EAAa77D,gGAAQtjD,CAAAC,KAAAk/G,GACnBl/G,KAAKqjD,OAASA,wDAId,OAAOrjD,KAAKm/G,4BAGF1mD,GACVz4D,KAAKm/G,cAAgB1mD,+BAGX2mD,oBAKV,IAEE,OADYC,IAAUr/G,KAAKs/G,cACdC,QACb,MAAO58G,GACPhB,EAAQW,KAAK,mDAMf,OAAOtC,KAAKw/G,oBAGHC,GACTz/G,KAAKw/G,MAAQC,2CAIb,OAAOz/G,KAAK0/G,8BAGQC,GACpB3/G,KAAK0/G,gBAAkBC,8BAGdxzD,GACTnsD,KAAK4/G,YAAczzD,kBAInB,OAAOnsD,KAAK4/G,+CAGIC,GAChB7/G,KAAKmsD,MAAQ,GACbnsD,KAAK8/G,oBAAsBD,EACC,oBAAjB5hC,cAETA,aAAaC,QAAb,GAAAn6E,OAAwB/D,KAAKqjD,OAA7B,YAA+Cw8D,mBAKjD,GAAI7/G,KAAK8/G,oBACP,OAAO9/G,KAAK8/G,oBAEd,GAA4B,oBAAjB7hC,aAA8B,CAEvC,IAAM8hC,EAAK9hC,aAAa3H,QAAb,GAAAvyE,OAAwB/D,KAAKqjD,OAA7B,aACX,GAAI08D,EACF,OAAOA,EAGX,OAAO,yCAGUC,GACjBhgH,KAAKigH,qBAAuBD,EACA,oBAAjB/hC,cAETA,aAAaC,QAAb,GAAAn6E,OAAwB/D,KAAKqjD,OAA7B,mBAAsDiJ,KAAKiO,UAAUylD,oBAKvE,GAAIhgH,KAAKigH,qBACP,OAAOjgH,KAAKigH,qBAEd,GAA4B,oBAAjBhiC,aAET,IACE,OAAO3xB,KAAKC,MAAM0xB,aAAa3H,QAAb,GAAAvyE,OAAwB/D,KAAKqjD,OAA7B,qBAClB,MAAO1gD,GACPhB,EAAQW,KAAK,gCAAiCK,GAGlD,OAAO,yoBC7FUu9G,aACnB,SAAAA,EAAa5yD,gGAAIvtD,CAAAC,KAAAkgH,GACflgH,KAAK2nD,OAAS2F,EACdttD,KAAK8uD,OAASxB,EAAGwB,OACjB9uD,KAAKY,MAAQ0sD,EAAG1sD,MAChBZ,KAAKinD,SAAWqG,EAAGrG,gFAYnB,OAAOjnD,KAAKY,MAAMurD,6CAGJA,GACdnsD,KAAKY,MAAMurD,MAAQ,GACnBnsD,KAAKY,MAAMurD,MAAQA,4CAInB,OAAOnsD,KAAKY,MAAM0+G,qDAGHnzD,GACfnsD,KAAKY,MAAMurD,MAAQ,GACnBnsD,KAAKY,MAAM0+G,aAAenzD,mCAGlBg0D,GAAc,IAAAj5D,EAAAlnD,KACtB,OAAOA,KAAK8uD,OAAOC,QAAQ,OAAQ,YAAaoxD,GAAc,GAC3DlxD,KACC,SAACnvD,GAQC,OAPAonD,EAAKtmD,MAAMurD,MAAQrsD,EAAKsgH,aAAaj0D,MACrCjF,EAAKtmD,MAAM0+G,aAAex/G,EAAKugH,cAAcl0D,MAC7CjF,EAAKtmD,MAAM0/G,cAAgBxgH,EAAKygH,eAChCr5D,EAAKtmD,MAAM4/G,OAAS1gH,EAAKoxD,KAAKrxD,GAC9BqnD,EAAKD,SAASw5D,eAAe,CAC3BD,OAAQ1gH,EAAKoxD,KAAKrxD,KAEbC,IAETmvD,KAAK,SAAAnvD,GAAI,OAAI,IAAImxD,IAAKnxD,EAAKoxD,sCAY1B/E,EAAOu0D,EAAWxmD,GAAU,IAAAlR,EAAAhpD,KAC3BilD,EAAU,CACdkH,QACAw0D,WAAYD,EACZE,UAAW,CACT1mD,aAIJ,OAAOl6D,KAAK8uD,OAAOC,QAAQ,OAAQ,iBAAkB9J,GAAS,GAAOgK,KACnE,SAACnvD,GACC,GAAKo6D,EAaH,OARAlR,EAAKpoD,MAAMurD,MAAQrsD,EAAKsgH,aAAaj0D,MACrCnD,EAAKpoD,MAAM0+G,aAAex/G,EAAKugH,cAAcl0D,MAC7CnD,EAAKpoD,MAAM0/G,cAAgBxgH,EAAKygH,eAChCv3D,EAAKpoD,MAAM4/G,OAAS1gH,EAAKoxD,KAAKrxD,GAC9BmpD,EAAK/B,SAASw5D,eAAe,CAC3BD,OAAQ1gH,EAAKoxD,KAAKrxD,GAClBivD,OAAQ9F,EAAK8F,SAERhvD,EAZP,IAAMgD,EAAQ,IAAIL,MAAM,gCAExB,MADAK,EAAMkhG,KAAO,iBACPlhG,IAaVmsD,KAAK,SAAAnvD,GAAI,OAAI,IAAImxD,IAAKnxD,EAAKoxD,2CASnBe,GAAS,IAAA3I,EAAAtpD,KACbilD,EAAU,CACdkH,MAAO8F,EACP0uD,WAAY,YAEd,OAAO3gH,KAAK8uD,OAAOC,QAAQ,OAAQ,iBAAkB9J,GAAS,GAAOgK,KACnE,SAACnvD,GAOC,OANAwpD,EAAK1oD,MAAMurD,MAAQrsD,EAAKsgH,aAAaj0D,MACrC7C,EAAK1oD,MAAM0+G,aAAex/G,EAAKugH,cAAcl0D,MAC7C7C,EAAK1oD,MAAM0/G,cAAgBxgH,EAAKygH,eAChCj3D,EAAKrC,SAASw5D,eAAe,CAC3BD,OAAQ1gH,EAAKoxD,KAAKrxD,KAEbC,IAETmvD,KAAK,SAAAnvD,GAAI,OAAI,IAAImxD,IAAKnxD,EAAKoxD,6CAGjBnC,GAGZ,OAAO/uD,KAAK8uD,OAAOC,QAAQ,OAAQ,kBAAmBA,GAAS,0CASjD9J,GAEd,OAAOjlD,KAAK8uD,OAAOC,QAAQ,MAAO,WAAY9J,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAI,IAAImxD,IAAKnxD,wCASzE29C,GACV,OAAOz9C,KAAK8uD,OAAOC,QAAQ,QAAS,WAAYtR,GAAQ,2CASxD,OAAOz9C,KAAK8uD,OAAOC,QAAQ,MAAO,kBAAmB,IAAI,2CAU1C8xD,GACf,OAAO7gH,KAAK8uD,OAAOC,QAAQ,OAAQ,wBAAyB8xD,GAAc,yCAU7D10D,EAAOu0D,GACpB,IAAMz7D,EAAU,CACdkH,QACAw0D,WAAYD,GAEd,OAAO1gH,KAAK8uD,OAAOC,QAAQ,OAAQ,uBAAwB9J,GAAS,iDAW/CkH,EAAOu0D,GAC5B,IAAMz7D,EAAU,CACdkH,QACAw0D,WAAYD,GAEd,OAAO1gH,KAAK8uD,OAAOC,QAAQ,OAAQ,oCAAqC9J,GAAS,2CASjF,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAAQ,iBAAkB,IAAI,GAAOE,KAAK,SAAAnvD,GAAI,OAAIA,EAAKw6C,WAAW4X,4CASpE,IAAAvI,EAAA3pD,KAAnB8gH,EAAmBz+G,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,IAAAA,UAAA,GAIzB,GAHArC,KAAK2nD,OAAOziD,KAAK,UACjBlF,KAAK2nD,OAAOC,WAAWgD,QACvBjpD,EAAQQ,IAAI,qBACR2+G,EAKF,OAAO9gH,KAAK8uD,OAAOC,QAAQ,OAAQ,kBAAmB,IAAI,GAAME,KAAK,WACnEtF,EAAK/oD,MAAMurD,MAAQ,GACnBxC,EAAK/oD,MAAM0+G,aAAe,GAC1B31D,EAAK1C,SAASw5D,eAAe,QAHxB,MAIE,SAAC99G,GAKR,MAJAhB,EAAQW,KAAKK,GACbgnD,EAAK/oD,MAAMurD,MAAQ,GACnBxC,EAAK/oD,MAAM0+G,aAAe,GAC1B31D,EAAK1C,SAASw5D,eAAe,MACvB99G,IAbR3C,KAAKY,MAAMurD,MAAQ,GACnBnsD,KAAKY,MAAM0+G,aAAe,GAC1Bt/G,KAAKinD,SAASw5D,eAAe,kDAqBZ9mD,GAInB,IAHA,IAAMonD,EAAK/gH,KAAKY,MAAM0/G,cAChBU,EAAQD,EAAG39G,OACX2mF,EAAUk3B,IAAStnD,GAChB39D,EAAI,EAAGA,EAAIglH,EAAOhlH,GAAK,EAAG,CACjC,IAAMklH,EAAcD,IAASF,EAAG/kH,GAAG+lF,KACnC,GAAIgI,EAAQ/vB,WAAaknD,EAAYlnD,SAAU,CAE7C,IAAMmnD,EAAcjB,EAAQkB,UAAUL,EAAG/kH,GAAGsxE,YAC5C,SAAAvpE,OAAU41D,EAAV,KAAA51D,OAAiBo9G,IAGrB,OAAOxnD,uCAGK1U,GASZ,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAAQ,kBAAmB9J,GAAS,2CAGhDo8D,GACf,OAAOrhH,KAAK8uD,OAAOC,QAAQ,MAApB,mBAAAhrD,OAA8Cs9G,EAA9C,YAAiE,MAAM,2CAQ/DA,GACf,OAAOrhH,KAAK8uD,OAAOC,QAAQ,SAApB,mBAAAhrD,OAAiDs9G,GAAW,MAAM,wEAQtDp8D,+FACXu7D,EAAWxgH,KAAKY,MAAhB4/G,yBACDxgH,KAAK8uD,OAAOC,QAAQ,OAApB,aAAAhrD,OAAyCy8G,EAAzC,gBAA+Dv7D,GAAS,0KAGrDu7D,2GACnBxgH,KAAK8uD,OAAOC,QAAQ,MAApB,aAAAhrD,OAAwCy8G,GAAU,IAAI,wRAWxDxgH,KAAKY,MAAM0gH,4BAAa,IAAI7+G,MAAM,kEAGjC8+G,EAAUnhH,KAAK41B,SAASpnB,SAAS,IAAI8sD,OAAO,GAG5C8lD,EAAc,0CACdz/B,kEAA+D/hF,KAAKY,MAAM0gH,+BAAsB/lD,mBAAmBimD,+BAAgCD,GAGnJE,EAAYthH,OAAOuqD,KAAKq3B,EAAK,SAAU,mFAErC,IAAIt/E,MAAM,2DAGdi/G,GAAkB,EAClBC,EAAiB,KACjBC,EAAc,KACZ99C,EAAU,IAAI3tC,QAAQ,SAAC0Z,EAASoM,GACpC0lE,EAAiB9xE,EACjB+xE,EAAc3lE,IAIV4lE,EAAexjD,YAAY,WAE/B,IAAKojD,EAAUK,OAAQ,OAAO,EAG9BtjD,cAAcqjD,GAGTH,GAAiBC,GAAe,IACpC,KAGGI,6CAAkB,SAAAzpC,EAAO93E,GAAP,IAAAwhH,EAAAC,EAAAC,EAAAC,EAAAx/G,EAAA,OAAA40E,mBAAA35B,KAAA,SAAA26B,GAAA,cAAAA,EAAAtX,KAAAsX,EAAA7tE,MAAA,UAEL,4BAAblK,EAAE25D,OAFgB,CAAAoe,EAAA7tE,KAAA,eAAA6tE,EAAAR,OAAA,UAE6B,GAF7B,UAKlBv3E,EAAEV,KAAK6F,QAAU47G,EALC,CAAAhpC,EAAA7tE,KAAA,eAAA6tE,EAAAR,OAAA,UAKe,GALf,UAQA,mBAAlBv3E,EAAEV,KAAK8K,OARW,CAAA2tE,EAAA7tE,KAAA,eAAA6tE,EAAAR,OAAA,UAQyB,GARzB,UAStBp2E,EAAQQ,IAAI3B,EAAEV,OAEVU,EAAEV,KAAKkkG,KAXW,CAAAzrB,EAAA7tE,KAAA,gBAYhBs3G,EAAW,CACbI,WAAc,qBACdC,UAAax4D,EAAKlC,OAAO/mD,MAAM0gH,MAC/Btd,KAAQxjG,EAAEV,KAAKkkG,KACfse,aAAgBd,GAhBEjpC,EAAA7tE,KAAA,GAkBLm/C,EAAKlC,OAAOmH,OAAOC,QAAQ,OAAQ,kBAAmBizD,GAAU,GAlB3D,eAkBhBC,EAlBgB1pC,EAAAV,KAoBpBhuB,EAAK04D,gBAAgBN,EAAG5B,cAAcl0D,OACtCtC,EAAKjpD,MAAMurD,MAAQ81D,EAAG7B,aAAaj0D,MArBfosB,EAAA7tE,KAAA,GAwBEm/C,EAAK24D,iBAxBP,eAwBdN,EAxBc3pC,EAAAV,KAyBpBhuB,EAAKjpD,MAAM4/G,OAAS0B,EAAQriH,GAzBR04E,EAAA7tE,KAAA,GA4BSm/C,EAAKiF,OAAOC,QAAQ,MAAO,2BAA4B,MAAM,GA5BtE,QA4BdozD,EA5Bc5pC,EAAAV,KA6BpBhuB,EAAKjpD,MAAM0/G,cAAgB6B,EAAe5B,eAG1C12D,EAAK5C,SAASw5D,eAAe,CAC3BD,OAAQ0B,EAAQriH,KAIlB6hH,GAAkB,EAClBC,GAAe,GAtCKppC,EAAA7tE,KAAA,kBAyCd/H,EAAM,IAAIF,MAAMjC,EAAEV,KAAK2iH,YAAc,qBACvCze,KAAOxjG,EAAEV,KAAKgD,MAClB4+G,GAAkB,EAClBE,EAAYj/G,GA5CQ,eAgDtB8+G,EAAU72D,QACVzqD,OAAOioD,oBAAoB,UAAW25D,GACtCvjD,cAAcqjD,GAlDQtpC,EAAAR,OAAA,UAmDf,GAnDe,yBAAAQ,EAAAL,SAAAI,4DAuDxBn4E,OAAO2nD,iBAAiB,UAAWi6D,qBAG5Bj+C,mKAIa09C,EAAaxd,qGAC7Bge,EAAW,CACbI,WAAc,qBACdC,UAAariH,KAAKY,MAAM0gH,MACxBtd,KAAQA,EACRse,aAAgBd,YAEHxhH,KAAK2nD,OAAOmH,OAAOC,QAAQ,OAAQ,kBAAmBizD,GAAU,iBAA3EC,SAEJjiH,KAAKuiH,gBAAgBN,EAAG5B,cAAcl0D,OACtCnsD,KAAKY,MAAMurD,MAAQ81D,EAAG7B,aAAaj0D,eAGbnsD,KAAKwiH,+BAArBN,SACNliH,KAAKY,MAAM4/G,OAAS0B,EAAQriH,aAGCG,KAAK8uD,OAAOC,QAAQ,MAAO,2BAA4B,MAAM,WAApFozD,SACNniH,KAAKY,MAAM0/G,cAAgB6B,EAAe5B,eAG1CvgH,KAAKinD,SAASw5D,eAAe,CAC3BD,OAAQ0B,EAAQriH,wIA1LFpD,GAChB,OAAOC,OAAOwL,KAAKzL,GAAG4Y,IAAI,SAAA9X,GAAG,SAAAwG,OAAOxG,EAAP,KAAAwG,OAActH,EAAEc,MAAQuL,KAAK,q3BCrO9D,IAAM45G,EAAa,CACjBC,EAAG,eACHC,GAAI,iBACJC,IAAK,oBACLC,IAAK,kBACLC,IAAK,kBACLC,IAAK,oBACLC,IAAK,sBACLC,KAAM,0BACNC,KAAM,qBACNC,KAAM,mBACNC,KAAM,mDACNC,KAAM,wBACNC,KAAM,iCACNC,KAAM,gBACNC,KAAM,uBACNC,KAAM,0CACNC,KAAM,mDACNC,KAAM,2BACNC,KAAM,mBACNC,KAAM,8BACNC,KAAM,0BACNC,KAAM,4BACNC,KAAM,0BACNC,KAAM,4BACNC,KAAM,qBACNC,KAAM,gBACNC,KAAM,wBAGaC,aAEnB,SAAAA,EAAah3D,gGAAIvtD,CAAAC,KAAAskH,GACftkH,KAAK2nD,OAAS2F,EACdttD,KAAKY,MAAQ0sD,EAAG1sD,kGAYHwK,EAAQm5G,EAAUt/D,EAAS2I,EAAMi9C,sFAE1Cj9C,kCAAY5tD,KAAKwkH,2BAGhB3Z,IAASA,EAAU,IACxBA,EAAQ,UAAY7qG,KAAKY,MAAM0gH,MAC3B1zD,IAAMi9C,EAAO,cAAP,UAAA9mG,OAAqC/D,KAAKY,MAAMurD,0BAGnDnsD,KAAKykH,YAAYr5G,EAAQm5G,EAAUt/D,EAAS4lD,yKAIlCz/F,EAAQm5G,EAAUt/D,EAAS4lD,+GAGxC9M,EAAO,KACN94C,EAG0B,oBAAby/D,UAA4Bz/D,aAAmBy/D,SAE/D3mB,EAAO94C,EACkB,WAAhB0/D,EAAO5mB,IAEhBA,EAAOzxC,KAAKiO,UAAUtV,GACtB4lD,EAAQ,gBAAkB,qBAG1B9M,EAAO94C,EACF2/D,aAAa,kBAAiB/Z,EAAQ,gBAAkB,qBAX7D9M,OAAOx+F,WAecqyF,IAAM5xF,KAAKY,MAAMikH,OAASN,EAAU,CAAEn5G,SAAQ2yF,OAAM8M,0BAArEY,kBAGWA,EAASrO,sBAGL79F,KAHjB69F,UAGKn4C,SAAwC,OAAfm4C,EAAKt6F,6BAO/BgiH,EAAa,wCAAwCvkH,KAAKkrG,EAAS7oG,SACrEmiH,EAAc,IAAI1xF,KAAKyxF,IAGrBhiH,EAAQ,IAAIL,MAAJ,yCAAAsB,OAAmDghH,KAC3D/gB,KAAO5G,EAAKt6F,OAAS2oG,EAASjyB,QAAU,EAC9C12E,EAAMkiH,WAAavZ,EAASjyB,OAC5B12E,EAAMmiH,UAAY7nB,EAAK8nB,WACvBpiH,EAAMqiH,cAAgB/nB,EAAKx6F,QAC3BE,EAAMiiH,YAAcA,EACdjiH,cAEGs6F,QAAyB79F,IAAjB69F,EAAKn4C,SAA4C,KAAnBwmD,EAASjyB,wBAIxD4jB,EAAO,CACLn4C,QAASm4C,mCAGe79F,IAAjB69F,EAAKn4C,+BAGRniD,EAAQ,IAAIL,MAAMigH,EAAWjX,EAAS3oG,QAAUs6F,EAAKx6F,SAAW,yCAChEohG,KAAO5G,EAAKt6F,OAAS2oG,EAASjyB,QAAU,EAC9C12E,EAAMkiH,WAAavZ,EAASjyB,OAC5B12E,EAAMmiH,UAAY7nB,EAAK8nB,WACvBpiH,EAAMqiH,cAAgB/nB,EAAKx6F,QACrBE,eAKJs6F,EAAKn4C,SAAWm4C,EAAKn4C,QAAQmgE,MAAQhoB,EAAKn4C,QAAQmgE,KAAKtiH,8BAErDH,EAAMy6F,EAAKn4C,QAAQmgE,KAAKtiH,MAAMuiH,MAAQ5Z,EAASjyB,QAAU,GACvD12E,EAAQ,IAAIL,MAAMigH,EAAW//G,IAAQy6F,EAAKn4C,QAAQmgE,KAAKtiH,MAAMwiH,KAAO,sCACpEthB,KAAOrhG,EACbG,EAAMqiH,cAAgB/nB,EAAKn4C,QAAQmgE,KAAKtiH,MAAMwiH,KAAO,GACrDxiH,EAAMkiH,WAAavZ,EAASjyB,OAC5B12E,EAAMmiH,UAAY7nB,EAAK8nB,WACjBpiH,mCAIDs6F,EAAKn4C,iJAOE,IAAAiC,EAAAlnD,KAGd,OAAIA,KAAKulH,kBACAvlH,KAAKulH,mBAGdvlH,KAAKulH,kBAAoBvlH,KAAK+uD,QAAQ,OAAQ,mBAAoB,IAAI,EAAO,CAC3Ey2D,cAAa,UAAAzhH,OAAY/D,KAAKY,MAAM0+G,gBACnCrwD,KAAK,SAAAnvD,GAGNonD,EAAKtmD,MAAMurD,MAAQrsD,EAAKsgH,aAAaj0D,MACrCjF,EAAKq+D,kBAAoB,OANF,MAQhB,SAAA5iH,GAQP,MALAhB,EAAQW,KAAK,yDAA0DK,GACvEukD,EAAKq+D,kBAAoB,MACT,QAAZ5iH,EAAIqhG,MAAkBrhG,EAAIC,QAAQuS,SAAS,eAC7C+xC,EAAKS,OAAO89D,YAAYC,QAAO,GAE3B/iH,IAKD3C,KAAKulH,0LAiBVI,EAAetG,IAAUr/G,KAAKY,MAAMurD,OACpCy5D,EAAqC,IAAnBD,EAAajnH,MACrB20B,KAAKvxB,MAGA,IAAQ8jH,yBAAsB,IAAInjH,MAAM,kGAGhDzC,KAAKs/G,kDAIP,wNCzNX,IAAAuG,aAAmBjqH,oBAAQ,KAE3Bg2F,MAqBA,SAAAk0B,wBACA,0BAAA3lH,OAGA,SAAA4lH,mBACA,YAAAxmH,IAAAY,OAAAyxF,MAxBAk0B,yBACAD,aACAE,mBACA,CACA,2EACA,wCACA,gIACAj9G,KAAA,OAEA8oF,MAAAzxF,OAAAyxF,OAIAA,MAAAo0B,KAAA,UAAAA,CAAA,cAGAjqH,OAAAD,QAAA81F,MACA71F,OAAAD,QAAAgqH,gjCCVqBl+D,cACnB,SAAAA,EAAahnD,EAAOkuD,EAAQ2J,GAAS,IAAAvR,EAAA,mGAAAnnD,CAAAC,KAAA4nD,IACnCV,EAAAC,EAAAnnD,KAAAonD,EAAAQ,GAAAzrD,KAAA6D,QACKY,MAAQA,EACbsmD,EAAK4H,OAASA,EACd5H,EAAKuR,QAAUA,EAGfvR,EAAKQ,OAAS,KAGdR,EAAK++D,UAAY,IAGjB/+D,EAAKg/D,aAAc,EAbgBh/D,4PADC/iD,kKA6BpCnE,KAAKkmH,aAAc,GAGflmH,KAAK0nD,gDACA1nD,sCAKDA,KAAK8uD,OAAO01D,2EAElB7iH,EAAQW,KAAK,4DACbtC,KAAKmmH,oCACEnmH,kBAILA,KAAK0nD,iDACA1nD,qBAIH25D,YAAS35D,KAAKy4D,8BAAqB8C,mBAAmBv7D,KAAKY,MAAM0gH,yBAAgB/lD,mBAAmBv7D,KAAKY,MAAMurD,QACrHnsD,KAAK0nD,OAAS,IAAI0+D,UAAUzsD,GAC5B35D,KAAK0nD,OAAOI,iBAAiB,OAAQ9nD,KAAKqmH,gBAAgB7oH,KAAKwC,OAC/DA,KAAK0nD,OAAOI,iBAAiB,UAAW9nD,KAAKsmH,cAAc9oH,KAAKwC,OAChEA,KAAK0nD,OAAOI,iBAAiB,QAAS9nD,KAAKumH,YAAY/oH,KAAKwC,OAC5DA,KAAK0nD,OAAOI,iBAAiB,QAAS9nD,KAAKwmH,YAAYhpH,KAAKwC,yBAGrDA,yTAOIymH,GACPzmH,KAAK0nD,QAAqC,IAA3B1nD,KAAK0nD,OAAOg/D,WAC7B1mH,KAAK0nD,OAAOi/D,KAAKr6D,KAAKiO,UAAUksD,IAEhC9kH,EAAQW,KAAK,+GAWF9B,GACb,IAAMomH,EAAKt6D,KAAKC,MAAM/rD,EAAEV,MACxBE,KAAK6mH,QAAQ,gBAAiBD,GAGV,QAAhBA,EAAGj+D,UACL3oD,KAAK6mH,QAAQ,gBAAiBD,GAGZ,iBAAhBA,EAAGj+D,UACL3oD,KAAK6mH,QAAQ,cAAeD,GAIV,cAAhBA,EAAGj+D,UACL3oD,KAAK6mH,QAAQ,YAAaD,GAIR,cAAhBA,EAAGj+D,UACL3oD,KAAK6mH,QAAQ,WAAYD,GAIP,SAAhBA,EAAGj+D,UACL3oD,KAAK6mH,QAAQ,OAAQD,GAGnBA,GACF5mH,KAAK6mH,QAAQ,MAAOD,2CAUPpmH,GACfR,KAAKimH,UAAY,IACjBjmH,KAAK6mH,QAAQ,YAAarmH,6CAST,IAAAwoD,EAAAhpD,KAEbA,KAAK8mH,YACPhyF,aAAa90B,KAAK8mH,YAIpB9mH,KAAK8mH,WAAa58G,WAAW,WAE3B8+C,EAAK89D,WAAa,KAGb99D,EAAKk9D,cAKNl9D,EAAKi9D,UAAY,MACnBj9D,EAAKi9D,WAAa,GAIpBj9D,EAAKnB,YACJ7nD,KAAKimH,+CAQGtjH,GACX3C,KAAK0nD,OAAS,KACd/lD,EAAQW,KAAK,kCAAoCK,EAAIC,+CASrD5C,KAAK0nD,OAAS,KACd1nD,KAAKmmH,kDAULnmH,KAAKkmH,aAAc,EAGflmH,KAAK8mH,aACPhyF,aAAa90B,KAAK8mH,YAClB9mH,KAAK8mH,WAAa,MAIhB9mH,KAAK0nD,SACP1nD,KAAK0nD,OAAOkD,QACZ5qD,KAAK0nD,OAAS,qCAhLhB,OAAO1nD,KAAK0nD,QAAqC,IAA3B1nD,KAAK0nD,OAAOg/D,2IChCtC,SAAA/kH,GAEA/F,EAAQ,KAER,IAEAs0D,EAFA62D,GAEA72D,EAFqCt0D,EAAQ,OAEPs0D,EAAA9yD,WAAA8yD,EAAA,CAAuC82D,QAAA92D,GAE7E62D,EAAAC,QAAAC,qBAAA,IAAAtlH,KAAAW,MACAX,EAAAW,KAAA,+SAGAykH,EAAAC,QAAAC,gBAAA,oCCZAlrH,EAAAD,QAAA,SAAA2K,GACA,OAAAA,GAAA,iBAAAA,GACA,mBAAAA,EAAAF,MACA,mBAAAE,EAAAkO,MACA,mBAAAlO,EAAAygH,0BCJA,mBAAAxqH,OAAAY,OAEAvB,EAAAD,QAAA,SAAA+O,EAAAC,GACAD,EAAAE,OAAAD,EACAD,EAAAjN,UAAAlB,OAAAY,OAAAwN,EAAAlN,UAAA,CACAoN,YAAA,CACA/N,MAAA4N,EACAjO,YAAA,EACAqO,UAAA,EACAC,cAAA,MAMAnP,EAAAD,QAAA,SAAA+O,EAAAC,GACAD,EAAAE,OAAAD,EACA,IAAAK,EAAA,aACAA,EAAAvN,UAAAkN,EAAAlN,UACAiN,EAAAjN,UAAA,IAAAuN,EACAN,EAAAjN,UAAAoN,YAAAH,kCCpBA,SAAA7M,GAEA,IAAAmpH,EAAmBvrH,EAAQ;;;;;;GAW3B,SAAAmuF,EAAA5oF,EAAAkM,GACA,GAAAlM,IAAAkM,EACA,SAMA,IAHA,IAAAqtD,EAAAv5D,EAAAiC,OACAupE,EAAAt/D,EAAAjK,OAEApH,EAAA,EAAAkL,EAAA9G,KAAAY,IAAA05D,EAAAiS,GAAuC3wE,EAAAkL,IAASlL,EAChD,GAAAmF,EAAAnF,KAAAqR,EAAArR,GAAA,CACA0+D,EAAAv5D,EAAAnF,GACA2wE,EAAAt/D,EAAArR,GACA,MAIA,OAAA0+D,EAAAiS,GACA,EAEAA,EAAAjS,EACA,EAEA,EAEA,SAAArlC,EAAAhoB,GACA,OAAArP,EAAAk2B,QAAA,mBAAAl2B,EAAAk2B,OAAAmB,SACAr3B,EAAAk2B,OAAAmB,SAAAhoB,KAEA,MAAAA,MAAA+5G,WA+BA,IAAAxlH,EAAWhG,EAAQ,IACnByrH,EAAA3qH,OAAAkB,UAAAC,eACAypH,EAAAtlH,MAAApE,UAAAmE,MACAwlH,EAC0B,QAA1B,aAA0BhrH,KAE1B,SAAAirH,EAAAt3D,GACA,OAAAxzD,OAAAkB,UAAAgR,SAAAzS,KAAA+zD,GAEA,SAAAu3D,EAAAC,GACA,OAAAryF,EAAAqyF,KAGA,mBAAA1pH,EAAAwS,cAGA,mBAAAA,YAAAi3G,OACAj3G,YAAAi3G,OAAAC,KAEAA,IAGAA,aAAAh3G,aAGAg3G,EAAAx0G,QAAAw0G,EAAAx0G,kBAAA1C,gBASA,IAAA3O,EAAA9F,EAAAD,QAAAqH,EAOAwkH,EAAA,8BAEA,SAAAC,EAAA39G,GACA,GAAArI,EAAAiH,WAAAoB,GAAA,CAGA,GAAAs9G,EACA,OAAAt9G,EAAA1N,KAEA,IACAi2B,EADAvoB,EAAA2E,WACA4jB,MAAAm1F,GACA,OAAAn1F,KAAA,IAyCA,SAAAswB,EAAA/kD,EAAAN,GACA,uBAAAM,EACAA,EAAAqF,OAAA3F,EAAAM,IAAAgE,MAAA,EAAAtE,GAEAM,EAGA,SAAAiF,EAAA6kH,GACA,GAAAN,IAAA3lH,EAAAiH,WAAAg/G,GACA,OAAAjmH,EAAAoB,QAAA6kH,GAEA,IAAAC,EAAAF,EAAAC,GAEA,mBADAC,EAAA,KAAAA,EAAA,IACA,IAmBA,SAAA34C,EAAA44C,EAAAC,EAAAplH,EAAAuqC,EAAA86E,GACA,UAAApmH,EAAAqmH,eAAA,CACAtlH,UACAmlH,SACAC,WACA76E,WACA86E,uBAcA,SAAA9kH,EAAAlG,EAAA2F,GACA3F,GAAAkyE,EAAAlyE,GAAA,EAAA2F,EAAA,KAAAf,EAAAsB,IAoCA,SAAAglH,EAAAJ,EAAAC,EAAAI,EAAAC,GAEA,GAAAN,IAAAC,EACA,SACG,GAAA3yF,EAAA0yF,IAAA1yF,EAAA2yF,GACH,WAAAj+B,EAAAg+B,EAAAC,GAIG,GAAApmH,EAAAwgB,OAAA2lG,IAAAnmH,EAAAwgB,OAAA4lG,GACH,OAAAD,EAAAO,YAAAN,EAAAM,UAKG,GAAA1mH,EAAA4gB,SAAAulG,IAAAnmH,EAAA4gB,SAAAwlG,GACH,OAAAD,EAAAxpH,SAAAypH,EAAAzpH,QACAwpH,EAAA/pH,SAAAgqH,EAAAhqH,QACA+pH,EAAAzyD,YAAA0yD,EAAA1yD,WACAyyD,EAAA11F,YAAA21F,EAAA31F,WACA01F,EAAA1yD,aAAA2yD,EAAA3yD,WAIG,UAAA0yD,GAAA,iBAAAA,GACH,OAAAC,GAAA,iBAAAA,EASG,IAAAP,EAAAM,IAAAN,EAAAO,IACHR,EAAAO,KAAAP,EAAAQ,MACAD,aAAAQ,cACAR,aAAAS,cACA,OACA,IADAz+B,EAAA,IAAA15E,WAAA03G,EAAA70G,QACA,IAAA7C,WAAA23G,EAAA90G,SAQG,GAAAmiB,EAAA0yF,KAAA1yF,EAAA2yF,GACH,SAIA,IAAAS,GAFAJ,KAAA,CAAsBN,OAAA,GAAAC,SAAA,KAEtBD,OAAA9yG,QAAA8yG,GACA,WAAAU,GACAA,IAAAJ,EAAAL,SAAA/yG,QAAA+yG,KAKAK,EAAAN,OAAA3iH,KAAA2iH,GACAM,EAAAL,SAAA5iH,KAAA4iH,GAUA,SAAA7mH,EAAAkM,EAAA+6G,EAAAM,GACA,GAAAvnH,eAAAkM,EACA,SAEA,GAAAzL,EAAAghE,YAAAzhE,IAAAS,EAAAghE,YAAAv1D,GACA,OAAAlM,IAAAkM,EACA,GAAA+6G,GAAA1rH,OAAAiK,eAAAxF,KAAAzE,OAAAiK,eAAA0G,GACA,SACA,IAAAs7G,EAAAxvF,EAAAh4B,GACAynH,EAAAzvF,EAAA9rB,GACA,GAAAs7G,IAAAC,IAAAD,GAAAC,EACA,SACA,GAAAD,EAGA,OAFAxnH,EAAAmmH,EAAAnrH,KAAAgF,GACAkM,EAAAi6G,EAAAnrH,KAAAkR,GACA86G,EAAAhnH,EAAAkM,EAAA+6G,GAEA,IAEA7qH,EAAAvB,EAFA6sH,EAAAC,EAAA3nH,GACA4nH,EAAAD,EAAAz7G,GAIA,GAAAw7G,EAAAzlH,SAAA2lH,EAAA3lH,OACA,SAKA,IAHAylH,EAAA72G,OACA+2G,EAAA/2G,OAEAhW,EAAA6sH,EAAAzlH,OAAA,EAAyBpH,GAAA,EAAQA,IACjC,GAAA6sH,EAAA7sH,KAAA+sH,EAAA/sH,GACA,SAIA,IAAAA,EAAA6sH,EAAAzlH,OAAA,EAAyBpH,GAAA,EAAQA,IAEjC,GADAuB,EAAAsrH,EAAA7sH,IACAmsH,EAAAhnH,EAAA5D,GAAA8P,EAAA9P,GAAA6qH,EAAAM,GACA,SAEA,SA/CAM,CAAAjB,EAAAC,EAAAI,EAAAC,IApCA,OAAAD,EAAAL,IAAAC,EAAAD,GAAAC,EAwCA,SAAA7uF,EAAAz7B,GACA,4BAAAhB,OAAAkB,UAAAgR,SAAAzS,KAAAuB,GAgFA,SAAAurH,EAAAlB,EAAAC,GACA,IAAAD,IAAAC,EACA,SAGA,sBAAAtrH,OAAAkB,UAAAgR,SAAAzS,KAAA6rH,GACA,OAAAA,EAAAx+G,KAAAu+G,GAGA,IACA,GAAAA,aAAAC,EACA,SAEG,MAAAxnH,IAIH,OAAAiC,MAAAymH,cAAAlB,KAIyB,IAAzBA,EAAA7rH,KAAA,GAAyB4rH,GAazB,SAAAoB,EAAAC,EAAAC,EAAArB,EAAAplH,GACA,IAAAmlH,EAEA,sBAAAsB,EACA,UAAA1oH,UAAA,uCAGA,iBAAAqnH,IACAplH,EAAAolH,EACAA,EAAA,MAGAD,EAtBA,SAAAsB,GACA,IAAAvmH,EACA,IACAumH,IACG,MAAA7oH,GACHsC,EAAAtC,EAEA,OAAAsC,EAeAwmH,CAAAD,GAEAzmH,GAAAolH,KAAAzrH,KAAA,KAAAyrH,EAAAzrH,KAAA,WACAqG,EAAA,IAAAA,EAAA,KAEAwmH,IAAArB,GACA54C,EAAA44C,EAAAC,EAAA,6BAAAplH,GAGA,IAAA2mH,EAAA,iBAAA3mH,EAEA4mH,GAAAJ,GAAArB,IAAAC,EASA,KAVAoB,GAAAxnH,EAAA+zC,QAAAoyE,IAIAwB,GACAN,EAAAlB,EAAAC,IACAwB,IACAr6C,EAAA44C,EAAAC,EAAA,yBAAAplH,GAGAwmH,GAAArB,GAAAC,IACAiB,EAAAlB,EAAAC,KAAAoB,GAAArB,EACA,MAAAA,EAvVAlmH,EAAAqmH,eAAA,SAAA10E,GACAxzC,KAAAzD,KAAA,iBACAyD,KAAA+nH,OAAAv0E,EAAAu0E,OACA/nH,KAAAgoH,SAAAx0E,EAAAw0E,SACAhoH,KAAAmtC,SAAAqG,EAAArG,SACAqG,EAAA5wC,SACA5C,KAAA4C,QAAA4wC,EAAA5wC,QACA5C,KAAAypH,kBAAA,IAEAzpH,KAAA4C,QA6CA,SAAAvC,GACA,OAAAyiD,EAAA9/C,EAAA3C,EAAA0nH,QAAA,SACA1nH,EAAA8sC,SAAA,IACA2V,EAAA9/C,EAAA3C,EAAA2nH,UAAA,KAhDA0B,CAAA1pH,MACAA,KAAAypH,kBAAA,GAEA,IAAAxB,EAAAz0E,EAAAy0E,oBAAA94C,EACA,GAAA1sE,MAAA2rG,kBACA3rG,MAAA2rG,kBAAApuG,KAAAioH,OACG,CAEH,IAAAtlH,EAAA,IAAAF,MACA,GAAAE,EAAAI,MAAA,CACA,IAAAtE,EAAAkE,EAAAI,MAGA4mH,EAAA/B,EAAAK,GACAxnD,EAAAhiE,EAAAwW,QAAA,KAAA00G,GACA,GAAAlpD,GAAA,GAGA,IAAAmpD,EAAAnrH,EAAAwW,QAAA,KAAAwrD,EAAA,GACAhiE,IAAAwkD,UAAA2mE,EAAA,GAGA5pH,KAAA+C,MAAAtE,KAMAmD,EAAAwhE,SAAAvhE,EAAAqmH,eAAAzlH,OA6CAZ,EAAAstE,OAYAttE,EAAAsB,KAMAtB,EAAAgoH,MAAA,SAAA9B,EAAAC,EAAAplH,GACAmlH,GAAAC,GAAA74C,EAAA44C,EAAAC,EAAAplH,EAAA,KAAAf,EAAAgoH,QAMAhoH,EAAAioH,SAAA,SAAA/B,EAAAC,EAAAplH,GACAmlH,GAAAC,GACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,KAAAf,EAAAioH,WAOAjoH,EAAAkoH,UAAA,SAAAhC,EAAAC,EAAAplH,GACAulH,EAAAJ,EAAAC,GAAA,IACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,YAAAf,EAAAkoH,YAIAloH,EAAAmoH,gBAAA,SAAAjC,EAAAC,EAAAplH,GACAulH,EAAAJ,EAAAC,GAAA,IACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,kBAAAf,EAAAmoH,kBAuHAnoH,EAAAooH,aAAA,SAAAlC,EAAAC,EAAAplH,GACAulH,EAAAJ,EAAAC,GAAA,IACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,eAAAf,EAAAooH,eAIApoH,EAAAqoH,mBACA,SAAAA,EAAAnC,EAAAC,EAAAplH,GACAulH,EAAAJ,EAAAC,GAAA,IACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,qBAAAsnH,IAQAroH,EAAAsoH,YAAA,SAAApC,EAAAC,EAAAplH,GACAmlH,IAAAC,GACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,MAAAf,EAAAsoH,cAOAtoH,EAAAuoH,eAAA,SAAArC,EAAAC,EAAAplH,GACAmlH,IAAAC,GACA74C,EAAA44C,EAAAC,EAAAplH,EAAA,MAAAf,EAAAuoH,iBA+EAvoH,EAAAwoH,OAAA,SAAAhB,EAAAvmH,EAAAF,GACAumH,GAAA,EAAAE,EAAAvmH,EAAAF,IAIAf,EAAAyoH,aAAA,SAAAjB,EAAAvmH,EAAAF,GACAumH,GAAA,EAAAE,EAAAvmH,EAAAF,IAGAf,EAAA0oH,QAAA,SAAA5nH,GAAgC,GAAAA,EAAA,MAAAA,GAMhCd,EAAAumH,OAAAjB,EAHA,SAAAiB,EAAAnrH,EAAA2F,GACA3F,GAAAkyE,EAAAlyE,GAAA,EAAA2F,EAAA,KAAAwlH,IAEAvmH,EAAA,CACAgoH,MAAAhoH,EAAAsoH,YACAJ,UAAAloH,EAAAmoH,gBACAF,SAAAjoH,EAAAuoH,eACAH,aAAApoH,EAAAqoH,qBAEAroH,EAAAumH,cAAAvmH,EAAAumH,OAEA,IAAAU,EAAApsH,OAAAwL,MAAA,SAAAgoD,GACA,IAAAhoD,EAAA,GACA,QAAA3K,KAAA2yD,EACAm3D,EAAAlrH,KAAA+zD,EAAA3yD,IAAA2K,EAAA9C,KAAA7H,GAEA,OAAA2K;;;;;EChfA,IAAArE,EAAAnH,OAAAmH,sBACAhG,EAAAnB,OAAAkB,UAAAC,eACA2sH,EAAA9tH,OAAAkB,UAAA02B,qBAEA,SAAAzmB,EAAAlF,GACA,GAAAA,QACA,UAAAhI,UAAA,yDAGA,OAAAjE,OAAAiM,GA+CA5M,EAAAD,QA5CA,WACA,IACA,IAAAY,OAAA25C,OACA,SAMA,IAAAo0E,EAAA,IAAAllH,OAAA,OAEA,GADAklH,EAAA,QACA,MAAA/tH,OAAAoH,oBAAA2mH,GAAA,GACA,SAKA,IADA,IAAAC,EAAA,GACA1uH,EAAA,EAAiBA,EAAA,GAAQA,IACzB0uH,EAAA,IAAAnlH,OAAAo2D,aAAA3/D,MAKA,kBAHAU,OAAAoH,oBAAA4mH,GAAAr1G,IAAA,SAAA5X,GACA,OAAAitH,EAAAjtH,KAEAqL,KAAA,IACA,SAIA,IAAA6hH,EAAA,GAIA,MAHA,uBAAAliH,MAAA,IAAAuM,QAAA,SAAA41G,GACAD,EAAAC,OAGA,yBADAluH,OAAAwL,KAAAxL,OAAA25C,OAAA,GAAkCs0E,IAAA7hH,KAAA,IAMhC,MAAAnG,GAEF,UAIAkoH,GAAAnuH,OAAA25C,OAAA,SAAAh3C,EAAAd,GAKA,IAJA,IAAA2Z,EAEA4yG,EADAhvD,EAAAjuD,EAAAxO,GAGAtB,EAAA,EAAgBA,EAAAsE,UAAAe,OAAsBrF,IAAA,CAGtC,QAAAR,KAFA2a,EAAAxb,OAAA2F,UAAAtE,IAGAF,EAAA1B,KAAA+b,EAAA3a,KACAu+D,EAAAv+D,GAAA2a,EAAA3a,IAIA,GAAAsG,EAAA,CACAinH,EAAAjnH,EAAAqU,GACA,QAAAlc,EAAA,EAAkBA,EAAA8uH,EAAA1nH,OAAoBpH,IACtCwuH,EAAAruH,KAAA+b,EAAA4yG,EAAA9uH,MACA8/D,EAAAgvD,EAAA9uH,IAAAkc,EAAA4yG,EAAA9uH,MAMA,OAAA8/D,kBCxFA//D,EAAAD,QAEA,WACA,WAAAu3B,MAAAi1F,yCCDA1sH,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,KAERA,EAAQ,sBC5BRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,iCCxIzB,IAAAoC,EAAapC,EAAQ,GACrByM,EAAUzM,EAAQ,IAClBiwD,EAAkBjwD,EAAQ,GAC1ByC,EAAczC,EAAQ,GACtBuC,EAAevC,EAAQ,IACvByqD,EAAWzqD,EAAQ,IAASgS,IAC5Bm9G,EAAanvH,EAAQ,GACrB2oE,EAAa3oE,EAAQ,IACrBq7D,EAAqBr7D,EAAQ,IAC7BiF,EAAUjF,EAAQ,IAClB6T,EAAU7T,EAAQ,GAClBowE,EAAapwE,EAAQ,IACrBovH,EAAgBpvH,EAAQ,KACxBqvH,EAAervH,EAAQ,KACvBy7B,EAAcz7B,EAAQ,IACtBwF,EAAexF,EAAQ,GACvB6E,EAAe7E,EAAQ,GACvBiS,EAAejS,EAAQ,IACvB6R,EAAgB7R,EAAQ,IACxB0F,EAAkB1F,EAAQ,IAC1B8N,EAAiB9N,EAAQ,IACzBsvH,EAActvH,EAAQ,IACtBuvH,EAAcvvH,EAAQ,KACtBwU,EAAYxU,EAAQ,IACpBwvH,EAAYxvH,EAAQ,IACpBuU,EAAUvU,EAAQ,IAClBouD,EAAYpuD,EAAQ,IACpB8R,EAAA0C,EAAA5O,EACAD,EAAA4O,EAAA3O,EACA+N,EAAA47G,EAAA3pH,EACAyqE,EAAAjuE,EAAAjB,OACAsuH,EAAArtH,EAAAsuD,KACAg/D,EAAAD,KAAA9wD,UAEAgxD,EAAA97G,EAAA,WACA+7G,EAAA/7G,EAAA,eACAi9D,EAAA,GAAep4C,qBACfm3F,EAAAlnD,EAAA,mBACAmnD,EAAAnnD,EAAA,WACAonD,EAAApnD,EAAA,cACAxZ,EAAAruD,OAAA,UACA6xE,EAAA,mBAAAtC,KAAAm/C,EAAA5pH,EACAoqH,EAAA5tH,EAAA4tH,QAEAr0G,GAAAq0G,MAAA,YAAAA,EAAA,UAAAC,UAGAC,EAAAjgE,GAAAk/D,EAAA,WACA,OAEG,GAFHG,EAAA3pH,EAAA,GAAsB,KACtB1E,IAAA,WAAsB,OAAA0E,EAAAvB,KAAA,KAAuB/C,MAAA,IAAWkE,MACrDA,IACF,SAAAT,EAAAnD,EAAA6vD,GACD,IAAA2+D,EAAAr+G,EAAAq9C,EAAAxtD,GACAwuH,UAAAhhE,EAAAxtD,GACAgE,EAAAb,EAAAnD,EAAA6vD,GACA2+D,GAAArrH,IAAAqqD,GAAAxpD,EAAAwpD,EAAAxtD,EAAAwuH,IACCxqH,EAEDq8C,EAAA,SAAAz0C,GACA,IAAA6iH,EAAAN,EAAAviH,GAAA+hH,EAAAj/C,EAAA,WAEA,OADA+/C,EAAA3lD,GAAAl9D,EACA6iH,GAGA1tF,EAAAiwC,GAAA,iBAAAtC,EAAAxhE,SAAA,SAAA/J,GACA,uBAAAA,GACC,SAAAA,GACD,OAAAA,aAAAurE,GAGAlG,EAAA,SAAArlE,EAAAnD,EAAA6vD,GAKA,OAJA1sD,IAAAqqD,GAAAgb,EAAA4lD,EAAApuH,EAAA6vD,GACAhsD,EAAAV,GACAnD,EAAA+D,EAAA/D,GAAA,GACA6D,EAAAgsD,GACA/kD,EAAAqjH,EAAAnuH,IACA6vD,EAAAxwD,YAIAyL,EAAA3H,EAAA6qH,IAAA7qH,EAAA6qH,GAAAhuH,KAAAmD,EAAA6qH,GAAAhuH,IAAA,GACA6vD,EAAA89D,EAAA99D,EAAA,CAAsBxwD,WAAA8M,EAAA,UAJtBrB,EAAA3H,EAAA6qH,IAAAhqH,EAAAb,EAAA6qH,EAAA7hH,EAAA,OACAhJ,EAAA6qH,GAAAhuH,IAAA,GAIKuuH,EAAAprH,EAAAnD,EAAA6vD,IACF7rD,EAAAb,EAAAnD,EAAA6vD,IAEH6+D,EAAA,SAAAvrH,EAAAxB,GACAkC,EAAAV,GAKA,IAJA,IAGAnD,EAHA2K,EAAA+iH,EAAA/rH,EAAAuO,EAAAvO,IACAlD,EAAA,EACAC,EAAAiM,EAAA9E,OAEAnH,EAAAD,GAAA+pE,EAAArlE,EAAAnD,EAAA2K,EAAAlM,KAAAkD,EAAA3B,IACA,OAAAmD,GAKAwrH,EAAA,SAAA3uH,GACA,IAAA4uH,EAAAz/C,EAAAvwE,KAAA6D,KAAAzC,EAAA+D,EAAA/D,GAAA,IACA,QAAAyC,OAAA+qD,GAAA1iD,EAAAqjH,EAAAnuH,KAAA8K,EAAAsjH,EAAApuH,QACA4uH,IAAA9jH,EAAArI,KAAAzC,KAAA8K,EAAAqjH,EAAAnuH,IAAA8K,EAAArI,KAAAurH,IAAAvrH,KAAAurH,GAAAhuH,KAAA4uH,IAEAC,EAAA,SAAA1rH,EAAAnD,GAGA,GAFAmD,EAAA+M,EAAA/M,GACAnD,EAAA+D,EAAA/D,GAAA,GACAmD,IAAAqqD,IAAA1iD,EAAAqjH,EAAAnuH,IAAA8K,EAAAsjH,EAAApuH,GAAA,CACA,IAAA6vD,EAAA1/C,EAAAhN,EAAAnD,GAEA,OADA6vD,IAAA/kD,EAAAqjH,EAAAnuH,IAAA8K,EAAA3H,EAAA6qH,IAAA7qH,EAAA6qH,GAAAhuH,KAAA6vD,EAAAxwD,YAAA,GACAwwD,IAEAi/D,EAAA,SAAA3rH,GAKA,IAJA,IAGAnD,EAHA2uE,EAAA38D,EAAA9B,EAAA/M,IACAiO,EAAA,GACA3S,EAAA,EAEAkwE,EAAA9oE,OAAApH,GACAqM,EAAAqjH,EAAAnuH,EAAA2uE,EAAAlwE,OAAAuB,GAAAguH,GAAAhuH,GAAA8oD,GAAA13C,EAAAvJ,KAAA7H,GACG,OAAAoR,GAEH29G,GAAA,SAAA5rH,GAMA,IALA,IAIAnD,EAJAgvH,EAAA7rH,IAAAqqD,EACAmhB,EAAA38D,EAAAg9G,EAAAZ,EAAAl+G,EAAA/M,IACAiO,EAAA,GACA3S,EAAA,EAEAkwE,EAAA9oE,OAAApH,IACAqM,EAAAqjH,EAAAnuH,EAAA2uE,EAAAlwE,OAAAuwH,IAAAlkH,EAAA0iD,EAAAxtD,IAAAoR,EAAAvJ,KAAAsmH,EAAAnuH,IACG,OAAAoR,GAIH4/D,IAYApwE,GAXA8tE,EAAA,WACA,GAAAjsE,gBAAAisE,EAAA,MAAAtrE,UAAA,gCACA,IAAAwI,EAAAtI,EAAAwB,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,GACA0W,EAAA,SAAAhZ,GACA+C,OAAA+qD,GAAA90C,EAAA9Z,KAAAwvH,EAAA1uH,GACAoL,EAAArI,KAAAurH,IAAAljH,EAAArI,KAAAurH,GAAApiH,KAAAnJ,KAAAurH,GAAApiH,IAAA,GACA2iH,EAAA9rH,KAAAmJ,EAAAO,EAAA,EAAAzM,KAGA,OADA4uD,GAAAt0C,GAAAu0G,EAAA/gE,EAAA5hD,EAAA,CAAgE+B,cAAA,EAAA1E,IAAAyP,IAChE2nC,EAAAz0C,KAEA,gCACA,OAAAnJ,KAAAqmE,KAGAj2D,EAAA5O,EAAA4qH,EACAj8G,EAAA3O,EAAAukE,EACEnqE,EAAQ,IAAgB4F,EAAA2pH,EAAA3pH,EAAA6qH,EACxBzwH,EAAQ,IAAe4F,EAAA0qH,EACzBd,EAAA5pH,EAAA8qH,GAEAzgE,IAAsBjwD,EAAQ,KAC9BuC,EAAA4sD,EAAA,uBAAAmhE,GAAA,GAGAlgD,EAAAxqE,EAAA,SAAAjF,GACA,OAAAqhD,EAAAnuC,EAAAlT,MAIA8B,IAAAS,EAAAT,EAAAqB,EAAArB,EAAAO,GAAA2vE,EAAA,CAA0DxxE,OAAAkvE,IAE1D,QAAAugD,GAAA,iHAGA/jH,MAAA,KAAA2yD,GAAA,EAAoBoxD,GAAAppH,OAAAg4D,IAAuB3rD,EAAA+8G,GAAApxD,OAE3C,QAAAqxD,GAAAziE,EAAAv6C,EAAA7O,OAAA+5D,GAAA,EAAoD8xD,GAAArpH,OAAAu3D,IAA6BqwD,EAAAyB,GAAA9xD,OAEjFt8D,IAAAW,EAAAX,EAAAO,GAAA2vE,EAAA,UAEAm+C,IAAA,SAAAnvH,GACA,OAAA8K,EAAAojH,EAAAluH,GAAA,IACAkuH,EAAAluH,GACAkuH,EAAAluH,GAAA0uE,EAAA1uE,IAGAovH,OAAA,SAAAX,GACA,IAAA1tF,EAAA0tF,GAAA,MAAArrH,UAAAqrH,EAAA,qBACA,QAAAzuH,KAAAkuH,EAAA,GAAAA,EAAAluH,KAAAyuH,EAAA,OAAAzuH,GAEAqvH,UAAA,WAA0Br1G,GAAA,GAC1Bs1G,UAAA,WAA0Bt1G,GAAA,KAG1BlZ,IAAAW,EAAAX,EAAAO,GAAA2vE,EAAA,UAEAjxE,OA/FA,SAAAoD,EAAAxB,GACA,YAAAK,IAAAL,EAAAgsH,EAAAxqH,GAAAurH,EAAAf,EAAAxqH,GAAAxB,IAgGAvC,eAAAopE,EAEA/B,iBAAAioD,EAEAt+G,yBAAAy+G,EAEAtoH,oBAAAuoH,EAEAxoH,sBAAAyoH,KAKA,IAAAQ,GAAA/B,EAAA,WAA8CK,EAAA5pH,EAAA,KAE9CnD,IAAAW,EAAAX,EAAAO,EAAAkuH,GAAA,UACAjpH,sBAAA,SAAAnD,GACA,OAAA0qH,EAAA5pH,EAAAqM,EAAAnN,OAKA2qH,GAAAhtH,IAAAW,EAAAX,EAAAO,IAAA2vE,GAAAw8C,EAAA,WACA,IAAA/rH,EAAAitE,IAIA,gBAAAq/C,EAAA,CAAAtsH,KAA2D,MAA3DssH,EAAA,CAAoDnqH,EAAAnC,KAAe,MAAAssH,EAAA5uH,OAAAsC,OAClE,QACDu7D,UAAA,SAAA75D,GAIA,IAHA,IAEAqsH,EAAAC,EAFArpH,EAAA,CAAAjD,GACA1E,EAAA,EAEAqG,UAAAe,OAAApH,GAAA2H,EAAAyB,KAAA/C,UAAArG,MAEA,GADAgxH,EAAAD,EAAAppH,EAAA,IACAlD,EAAAssH,SAAAxtH,IAAAmB,KAAA49B,EAAA59B,GAMA,OALA22B,EAAA01F,OAAA,SAAAxvH,EAAAN,GAEA,GADA,mBAAA+vH,IAAA/vH,EAAA+vH,EAAA7wH,KAAA6D,KAAAzC,EAAAN,KACAqhC,EAAArhC,GAAA,OAAAA,IAEA0G,EAAA,GAAAopH,EACAzB,EAAAlpH,MAAAipH,EAAA1nH,MAKAsoE,EAAA,UAAAu/C,IAAoC5vH,EAAQ,GAARA,CAAiBqwE,EAAA,UAAAu/C,EAAAv/C,EAAA,UAAAh1C,SAErDggC,EAAAgV,EAAA,UAEAhV,EAAA72D,KAAA,WAEA62D,EAAAj5D,EAAAsuD,KAAA,4BCrPAvwD,EAAAD,QAAiBF,EAAQ,GAARA,CAAmB,4BAAA4D,SAAAoP,2BCCpC,IAAAu9D,EAAcvwE,EAAQ,IACtB0wE,EAAW1wE,EAAQ,IACnB4R,EAAU5R,EAAQ,IAClBG,EAAAD,QAAA,SAAA4E,GACA,IAAAiO,EAAAw9D,EAAAzrE,GACAq7B,EAAAuwC,EAAA9qE,EACA,GAAAu6B,EAKA,IAJA,IAGAx+B,EAHAutH,EAAA/uF,EAAAr7B,GACAgsE,EAAAl/D,EAAAhM,EACAxF,EAAA,EAEA8uH,EAAA1nH,OAAApH,GAAA0wE,EAAAvwE,KAAAuE,EAAAnD,EAAAutH,EAAA9uH,OAAA2S,EAAAvJ,KAAA7H,GACG,OAAAoR,oBCbH,IAAAtQ,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,UAA8B1B,OAAS1B,EAAQ,uBCF/C,IAAAyC,EAAczC,EAAQ,GAEtByC,IAAAW,EAAAX,EAAAO,GAAiChD,EAAQ,GAAgB,UAAce,eAAiBf,EAAQ,IAAc4F,qBCF9G,IAAAnD,EAAczC,EAAQ,GAEtByC,IAAAW,EAAAX,EAAAO,GAAiChD,EAAQ,GAAgB,UAAcooE,iBAAmBpoE,EAAQ,wBCDlG,IAAA6R,EAAgB7R,EAAQ,IACxBwwH,EAAgCxwH,EAAQ,IAAgB4F,EAExD5F,EAAQ,GAARA,CAAuB,sCACvB,gBAAA8E,EAAAnD,GACA,OAAA6uH,EAAA3+G,EAAA/M,GAAAnD,uBCLA,IAAAsQ,EAAejS,EAAQ,IACvBqxH,EAAsBrxH,EAAQ,IAE9BA,EAAQ,GAARA,CAAuB,4BACvB,gBAAA8E,GACA,OAAAusH,EAAAp/G,EAAAnN,wBCLA,IAAAmN,EAAejS,EAAQ,IACvBouD,EAAYpuD,EAAQ,IAEpBA,EAAQ,GAARA,CAAuB,kBACvB,gBAAA8E,GACA,OAAAspD,EAAAn8C,EAAAnN,wBCLA9E,EAAQ,GAARA,CAAuB,iCACvB,OAASA,EAAQ,KAAoB4F,qBCDrC,IAAAf,EAAe7E,EAAQ,GACvB+qD,EAAW/qD,EAAQ,IAASmrD,SAE5BnrD,EAAQ,GAARA,CAAuB,kBAAAsxH,GACvB,gBAAAxsH,GACA,OAAAwsH,GAAAzsH,EAAAC,GAAAwsH,EAAAvmE,EAAAjmD,0BCLA,IAAAD,EAAe7E,EAAQ,GACvB+qD,EAAW/qD,EAAQ,IAASmrD,SAE5BnrD,EAAQ,GAARA,CAAuB,gBAAAuxH,GACvB,gBAAAzsH,GACA,OAAAysH,GAAA1sH,EAAAC,GAAAysH,EAAAxmE,EAAAjmD,0BCLA,IAAAD,EAAe7E,EAAQ,GACvB+qD,EAAW/qD,EAAQ,IAASmrD,SAE5BnrD,EAAQ,GAARA,CAAuB,6BAAAwxH,GACvB,gBAAA1sH,GACA,OAAA0sH,GAAA3sH,EAAAC,GAAA0sH,EAAAzmE,EAAAjmD,0BCLA,IAAAD,EAAe7E,EAAQ,GAEvBA,EAAQ,GAARA,CAAuB,oBAAAyxH,GACvB,gBAAA3sH,GACA,OAAAD,EAAAC,MAAA2sH,KAAA3sH,uBCJA,IAAAD,EAAe7E,EAAQ,GAEvBA,EAAQ,GAARA,CAAuB,oBAAA0xH,GACvB,gBAAA5sH,GACA,OAAAD,EAAAC,MAAA4sH,KAAA5sH,uBCJA,IAAAD,EAAe7E,EAAQ,GAEvBA,EAAQ,GAARA,CAAuB,wBAAA2xH,GACvB,gBAAA7sH,GACA,QAAAD,EAAAC,MAAA6sH,KAAA7sH,wBCJA,IAAArC,EAAczC,EAAQ,GAEtByC,IAAAW,EAAAX,EAAAO,EAAA,UAA0Cy3C,OAASz6C,EAAQ,wBCF3D,IAAAyC,EAAczC,EAAQ,GACtByC,IAAAW,EAAA,UAA8BslE,GAAK1oE,EAAQ,wBCD3C,IAAAyC,EAAczC,EAAQ,GACtByC,IAAAW,EAAA,UAA8B+kE,eAAiBnoE,EAAQ,IAAc4K,oCCArE,IAAA6I,EAAczT,EAAQ,IACtB4N,EAAA,GACAA,EAAK5N,EAAQ,EAARA,CAAgB,oBACrB4N,EAAA,kBACE5N,EAAQ,GAARA,CAAqBc,OAAAkB,UAAA,sBACvB,iBAAAyR,EAAArP,MAAA,MACG,oBCPH,IAAA3B,EAAczC,EAAQ,GAEtByC,IAAAa,EAAA,YAAgC1B,KAAO5B,EAAQ,wBCH/C,IAAA2F,EAAS3F,EAAQ,IAAc4F,EAC/BgsH,EAAAhuH,SAAA5B,UACA6vH,EAAA,wBACA,SAGAD,GAAkB5xH,EAAQ,IAAgB2F,EAAAisH,EAH1C,OAG0C,CAC1CtiH,cAAA,EACArO,IAAA,WACA,IACA,UAAAmD,MAAAwyB,MAAAi7F,GAAA,GACK,MAAAjtH,GACL,2CCXA,IAAAC,EAAe7E,EAAQ,GACvB+K,EAAqB/K,EAAQ,IAC7B8xH,EAAmB9xH,EAAQ,EAARA,CAAgB,eACnC+xH,EAAAnuH,SAAA5B,UAEA8vH,KAAAC,GAAsC/xH,EAAQ,IAAc4F,EAAAmsH,EAAAD,EAAA,CAAkCzwH,MAAA,SAAAwE,GAC9F,sBAAAzB,OAAAS,EAAAgB,GAAA,SACA,IAAAhB,EAAAT,KAAApC,WAAA,OAAA6D,aAAAzB,KAEA,KAAAyB,EAAAkF,EAAAlF,IAAA,GAAAzB,KAAApC,YAAA6D,EAAA,SACA,6BCXA,IAAApD,EAAczC,EAAQ,GACtBqxE,EAAgBrxE,EAAQ,KAExByC,IAAAS,EAAAT,EAAAO,GAAAuiB,UAAA8rD,GAAA,CAA0D9rD,SAAA8rD,qBCH1D,IAAA5uE,EAAczC,EAAQ,GACtBwxE,EAAkBxxE,EAAQ,KAE1ByC,IAAAS,EAAAT,EAAAO,GAAAqiB,YAAAmsD,GAAA,CAA8DnsD,WAAAmsD,kCCF9D,IAAApvE,EAAapC,EAAQ,GACrByM,EAAUzM,EAAQ,IAClBmxD,EAAUnxD,EAAQ,IAClBs7D,EAAwBt7D,EAAQ,IAChC0F,EAAkB1F,EAAQ,IAC1BmN,EAAYnN,EAAQ,GACpB2T,EAAW3T,EAAQ,IAAgB4F,EACnCkM,EAAW9R,EAAQ,IAAgB4F,EACnCD,EAAS3F,EAAQ,IAAc4F,EAC/B0rE,EAAYtxE,EAAQ,IAAgB+mD,KAEpCirE,EAAA5vH,EAAA,OACA+Y,EAAA62G,EACAr5G,EAAAq5G,EAAAhwH,UAEAiwH,EALA,UAKA9gE,EAAqBnxD,EAAQ,GAARA,CAA0B2Y,IAC/Cu5G,EAAA,SAAAvoH,OAAA3H,UAGAkwC,EAAA,SAAAigF,GACA,IAAArtH,EAAAY,EAAAysH,GAAA,GACA,oBAAArtH,KAAA0C,OAAA,GAEA,IACA4qH,EAAAltE,EAAAmtE,EADAzqE,GADA9iD,EAAAotH,EAAAptH,EAAAiiD,OAAAuqB,EAAAxsE,EAAA,IACAowC,WAAA,GAEA,QAAA0S,GAAA,KAAAA,GAEA,SADAwqE,EAAAttH,EAAAowC,WAAA,KACA,MAAAk9E,EAAA,OAAAt1D,SACK,QAAAlV,EAAA,CACL,OAAA9iD,EAAAowC,WAAA,IACA,gBAAAgQ,EAAA,EAAoCmtE,EAAA,GAAc,MAClD,iBAAAntE,EAAA,EAAqCmtE,EAAA,GAAc,MACnD,eAAAvtH,EAEA,QAAAsjG,EAAAkqB,EAAAxtH,EAAAqB,MAAA,GAAA/F,EAAA,EAAAC,EAAAiyH,EAAA9qH,OAAoEpH,EAAAC,EAAOD,IAI3E,IAHAgoG,EAAAkqB,EAAAp9E,WAAA90C,IAGA,IAAAgoG,EAAAiqB,EAAA,OAAAv1D,IACO,OAAAv3C,SAAA+sG,EAAAptE,IAEJ,OAAApgD,GAGH,IAAAktH,EAAA,UAAAA,EAAA,QAAAA,EAAA,SACAA,EAAA,SAAA3wH,GACA,IAAAyD,EAAA2B,UAAAe,OAAA,IAAAnG,EACAyH,EAAA1E,KACA,OAAA0E,aAAAkpH,IAEAC,EAAA9kH,EAAA,WAA0CwL,EAAA0iB,QAAA96B,KAAAuI,KAxC1C,UAwCsEqoD,EAAAroD,IACtEwyD,EAAA,IAAAngD,EAAA+2B,EAAAptC,IAAAgE,EAAAkpH,GAAA9/E,EAAAptC,IAEA,QAMAnD,EANA2K,EAAkBtM,EAAQ,GAAgB2T,EAAAwH,GAAA,6KAM1CtO,MAAA,KAAA2yD,EAAA,EAA2BlzD,EAAA9E,OAAAg4D,EAAiBA,IAC5C/yD,EAAA0O,EAAAxZ,EAAA2K,EAAAkzD,MAAA/yD,EAAAulH,EAAArwH,IACAgE,EAAAqsH,EAAArwH,EAAAmQ,EAAAqJ,EAAAxZ,IAGAqwH,EAAAhwH,UAAA2W,EACAA,EAAAvJ,YAAA4iH,EACEhyH,EAAQ,GAARA,CAAqBoC,EAxDvB,SAwDuB4vH,kCClEvB,IAAAvvH,EAAczC,EAAQ,GACtBmF,EAAgBnF,EAAQ,IACxBuyH,EAAmBvyH,EAAQ,KAC3BqlD,EAAarlD,EAAQ,IACrBwyH,EAAA,GAAAp4B,QACAzoF,EAAAnN,KAAAmN,MACAzN,EAAA,cACAuuH,EAAA,wCAGA50E,EAAA,SAAAh8C,EAAApB,GAGA,IAFA,IAAAL,GAAA,EACAsyH,EAAAjyH,IACAL,EAAA,GACAsyH,GAAA7wH,EAAAqC,EAAA9D,GACA8D,EAAA9D,GAAAsyH,EAAA,IACAA,EAAA/gH,EAAA+gH,EAAA,MAGAh1E,EAAA,SAAA77C,GAGA,IAFA,IAAAzB,EAAA,EACAK,EAAA,IACAL,GAAA,GACAK,GAAAyD,EAAA9D,GACA8D,EAAA9D,GAAAuR,EAAAlR,EAAAoB,GACApB,IAAAoB,EAAA,KAGA8wH,EAAA,WAGA,IAFA,IAAAvyH,EAAA,EACA+B,EAAA,KACA/B,GAAA,GACA,QAAA+B,GAAA,IAAA/B,GAAA,IAAA8D,EAAA9D,GAAA,CACA,IAAAkB,EAAAqI,OAAAzF,EAAA9D,IACA+B,EAAA,KAAAA,EAAAb,EAAAa,EAAAkjD,EAAA9kD,KA1BA,IA0BA,EAAAe,EAAAkG,QAAAlG,EAEG,OAAAa,GAEH8pE,EAAA,SAAAnN,EAAAj9D,EAAAkpF,GACA,WAAAlpF,EAAAkpF,EAAAlpF,EAAA,KAAAoqE,EAAAnN,EAAAj9D,EAAA,EAAAkpF,EAAAjsB,GAAAmN,EAAAnN,IAAAj9D,EAAA,EAAAkpF,IAeAtoF,IAAAa,EAAAb,EAAAO,KAAAwvH,IACA,eAAAp4B,QAAA,IACA,SAAAA,QAAA,IACA,eAAAA,QAAA,IACA,4CAAAA,QAAA,MACMp6F,EAAQ,EAARA,CAAkB,WAExBwyH,EAAAjyH,KAAA,OACC,UACD65F,QAAA,SAAAw4B,GACA,IAIAhuH,EAAAiuH,EAAArzD,EAAAT,EAJAD,EAAAyzD,EAAAnuH,KAAAquH,GACA7sH,EAAAT,EAAAytH,GACAzwH,EAAA,GACA3B,EA3DA,IA6DA,GAAAoF,EAAA,GAAAA,EAAA,SAAAkF,WAAA2nH,GAEA,GAAA3zD,KAAA,YACA,GAAAA,IAAA,MAAAA,GAAA,YAAAn1D,OAAAm1D,GAKA,GAJAA,EAAA,IACA38D,EAAA,IACA28D,MAEAA,EAAA,MAKA,GAHA+zD,GADAjuH,EArCA,SAAAk6D,GAGA,IAFA,IAAAj9D,EAAA,EACAixH,EAAAh0D,EACAg0D,GAAA,MACAjxH,GAAA,GACAixH,GAAA,KAEA,KAAAA,GAAA,GACAjxH,GAAA,EACAixH,GAAA,EACG,OAAAjxH,EA2BH0E,CAAAu4D,EAAAmN,EAAA,aACA,EAAAnN,EAAAmN,EAAA,GAAArnE,EAAA,GAAAk6D,EAAAmN,EAAA,EAAArnE,EAAA,GACAiuH,GAAA,kBACAjuH,EAAA,GAAAA,GACA,GAGA,IAFAi5C,EAAA,EAAAg1E,GACArzD,EAAA55D,EACA45D,GAAA,GACA3hB,EAAA,OACA2hB,GAAA,EAIA,IAFA3hB,EAAAouB,EAAA,GAAAzM,EAAA,MACAA,EAAA56D,EAAA,EACA46D,GAAA,IACA9hB,EAAA,OACA8hB,GAAA,GAEA9hB,EAAA,GAAA8hB,GACA3hB,EAAA,KACAH,EAAA,GACAl9C,EAAAmyH,SAEA90E,EAAA,EAAAg1E,GACAh1E,EAAA,IAAAj5C,EAAA,GACApE,EAAAmyH,IAAAttE,EAAA9kD,KA9FA,IA8FAqF,GAQK,OAHLpF,EAFAoF,EAAA,EAEAzD,IADA48D,EAAAv+D,EAAAgH,SACA5B,EAAA,KAAAy/C,EAAA9kD,KAnGA,IAmGAqF,EAAAm5D,GAAAv+D,IAAA2F,MAAA,EAAA44D,EAAAn5D,GAAA,IAAApF,EAAA2F,MAAA44D,EAAAn5D,IAEAzD,EAAA3B,mCC7GA,IAAAiC,EAAczC,EAAQ,GACtBmvH,EAAanvH,EAAQ,GACrBuyH,EAAmBvyH,EAAQ,KAC3B+yH,EAAA,GAAAC,YAEAvwH,IAAAa,EAAAb,EAAAO,GAAAmsH,EAAA,WAEA,YAAA4D,EAAAxyH,KAAA,OAAAoD,OACCwrH,EAAA,WAED4D,EAAAxyH,KAAA,OACC,UACDyyH,YAAA,SAAAvgF,GACA,IAAA3pC,EAAAypH,EAAAnuH,KAAA,6CACA,YAAAT,IAAA8uC,EAAAsgF,EAAAxyH,KAAAuI,GAAAiqH,EAAAxyH,KAAAuI,EAAA2pC,uBCdA,IAAAhwC,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,UAA8B6vH,QAAAzuH,KAAAynE,IAAA,0BCF9B,IAAAxpE,EAAczC,EAAQ,GACtBkzH,EAAgBlzH,EAAQ,GAAW25B,SAEnCl3B,IAAAW,EAAA,UACAu2B,SAAA,SAAA70B,GACA,uBAAAA,GAAAouH,EAAApuH,uBCLA,IAAArC,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,UAA8B42C,UAAYh6C,EAAQ,wBCFlD,IAAAyC,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,UACAkF,MAAA,SAAA02B,GAEA,OAAAA,yBCLA,IAAAv8B,EAAczC,EAAQ,GACtBg6C,EAAgBh6C,EAAQ,KACxBgsE,EAAAxnE,KAAAwnE,IAEAvpE,IAAAW,EAAA,UACA4gD,cAAA,SAAAhlB,GACA,OAAAgb,EAAAhb,IAAAgtC,EAAAhtC,IAAA,qCCNA,IAAAv8B,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,UAA8Bgb,iBAAA,oCCF9B,IAAA3b,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,UAA8B+vH,kBAAA,oCCH9B,IAAA1wH,EAAczC,EAAQ,GACtBwxE,EAAkBxxE,EAAQ,KAE1ByC,IAAAW,EAAAX,EAAAO,GAAAqF,OAAAgd,YAAAmsD,GAAA,UAA+EnsD,WAAAmsD,qBCH/E,IAAA/uE,EAAczC,EAAQ,GACtBqxE,EAAgBrxE,EAAQ,KAExByC,IAAAW,EAAAX,EAAAO,GAAAqF,OAAAkd,UAAA8rD,GAAA,UAA2E9rD,SAAA8rD,qBCF3E,IAAA5uE,EAAczC,EAAQ,GACtByxE,EAAYzxE,EAAQ,KACpBozH,EAAA5uH,KAAA4uH,KACAC,EAAA7uH,KAAA8uH,MAEA7wH,IAAAW,EAAAX,EAAAO,IAAAqwH,GAEA,KAAA7uH,KAAAmN,MAAA0hH,EAAAhrH,OAAAkrH,aAEAF,EAAA3uF,WACA,QACA4uF,MAAA,SAAAx0D,GACA,OAAAA,MAAA,EAAAhC,IAAAgC,EAAA,kBACAt6D,KAAA+B,IAAAu4D,GAAAt6D,KAAA0nE,IACAuF,EAAA3S,EAAA,EAAAs0D,EAAAt0D,EAAA,GAAAs0D,EAAAt0D,EAAA,wBCdA,IAAAr8D,EAAczC,EAAQ,GACtBwzH,EAAAhvH,KAAAivH,MAOAhxH,IAAAW,EAAAX,EAAAO,IAAAwwH,GAAA,EAAAA,EAAA,cAAyEC,MALzE,SAAAA,EAAA30D,GACA,OAAAnlC,SAAAmlC,OAAA,GAAAA,IAAA,GAAA20D,GAAA30D,GAAAt6D,KAAA+B,IAAAu4D,EAAAt6D,KAAA4uH,KAAAt0D,IAAA,IAAAA,sBCJA,IAAAr8D,EAAczC,EAAQ,GACtB0zH,EAAAlvH,KAAAmvH,MAGAlxH,IAAAW,EAAAX,EAAAO,IAAA0wH,GAAA,EAAAA,GAAA,cACAC,MAAA,SAAA70D,GACA,WAAAA,QAAAt6D,KAAA+B,KAAA,EAAAu4D,IAAA,EAAAA,IAAA,sBCNA,IAAAr8D,EAAczC,EAAQ,GACtB+oE,EAAW/oE,EAAQ,IAEnByC,IAAAW,EAAA,QACAwwH,KAAA,SAAA90D,GACA,OAAAiK,EAAAjK,MAAAt6D,KAAAynE,IAAAznE,KAAAwnE,IAAAlN,GAAA,yBCLA,IAAAr8D,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QACAywH,MAAA,SAAA/0D,GACA,OAAAA,KAAA,MAAAt6D,KAAAmN,MAAAnN,KAAA+B,IAAAu4D,EAAA,IAAAt6D,KAAAsvH,OAAA,uBCJA,IAAArxH,EAAczC,EAAQ,GACtB8C,EAAA0B,KAAA1B,IAEAL,IAAAW,EAAA,QACA2wH,KAAA,SAAAj1D,GACA,OAAAh8D,EAAAg8D,MAAAh8D,GAAAg8D,IAAA,sBCLA,IAAAr8D,EAAczC,EAAQ,GACtBgpE,EAAahpE,EAAQ,IAErByC,IAAAW,EAAAX,EAAAO,GAAAgmE,GAAAxkE,KAAAykE,OAAA,QAAiEA,MAAAD,qBCHjE,IAAAvmE,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QAA4B4wH,OAASh0H,EAAQ,wBCF7C,IAAA+oE,EAAW/oE,EAAQ,IACnBisE,EAAAznE,KAAAynE,IACAgnD,EAAAhnD,EAAA,OACAgoD,EAAAhoD,EAAA,OACAioD,EAAAjoD,EAAA,UAAAgoD,GACAE,EAAAloD,EAAA,QAMA9rE,EAAAD,QAAAsE,KAAAwvH,QAAA,SAAAl1D,GACA,IAEAv5D,EAAAwN,EAFAqhH,EAAA5vH,KAAAwnE,IAAAlN,GACAu1D,EAAAtrD,EAAAjK,GAEA,OAAAs1D,EAAAD,EAAAE,GAAAD,EAAAD,EAAAF,EAPA,EAAAhB,EAAA,EAAAA,GAOAkB,EAAAF,GAEAlhH,GADAxN,GAAA,EAAA0uH,EAAAhB,GAAAmB,IACA7uH,EAAA6uH,IAEAF,GAAAnhH,KAAAshH,GAAA3vF,KACA2vF,EAAAthH,oBCpBA,IAAAtQ,EAAczC,EAAQ,GACtBgsE,EAAAxnE,KAAAwnE,IAEAvpE,IAAAW,EAAA,QACAkxH,MAAA,SAAAC,EAAAC,GAMA,IALA,IAIA3pH,EAAA4pH,EAJA3uE,EAAA,EACA1lD,EAAA,EACAgY,EAAA3R,UAAAe,OACAktH,EAAA,EAEAt0H,EAAAgY,GAEAs8G,GADA7pH,EAAAmhE,EAAAvlE,UAAArG,QAGA0lD,KADA2uE,EAAAC,EAAA7pH,GACA4pH,EAAA,EACAC,EAAA7pH,GAGAi7C,GAFOj7C,EAAA,GACP4pH,EAAA5pH,EAAA6pH,GACAD,EACO5pH,EAEP,OAAA6pH,IAAAhwF,QAAAgwF,EAAAlwH,KAAA4uH,KAAAttE,uBCrBA,IAAArjD,EAAczC,EAAQ,GACtB20H,EAAAnwH,KAAAowH,KAGAnyH,IAAAW,EAAAX,EAAAO,EAAgChD,EAAQ,EAARA,CAAkB,WAClD,UAAA20H,EAAA,kBAAAA,EAAAntH,SACC,QACDotH,KAAA,SAAA91D,EAAAiS,GACA,IACA8jD,GAAA/1D,EACAg2D,GAAA/jD,EACAgkD,EAHA,MAGAF,EACAG,EAJA,MAIAF,EACA,SAAAC,EAAAC,IALA,MAKAH,IAAA,IAAAG,EAAAD,GALA,MAKAD,IAAA,iCCbA,IAAAryH,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QACA6xH,MAAA,SAAAn2D,GACA,OAAAt6D,KAAA+B,IAAAu4D,GAAAt6D,KAAA0wH,2BCJA,IAAAzyH,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QAA4BquE,MAAQzxE,EAAQ,wBCF5C,IAAAyC,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QACA+xH,KAAA,SAAAr2D,GACA,OAAAt6D,KAAA+B,IAAAu4D,GAAAt6D,KAAA0nE,wBCJA,IAAAzpE,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QAA4B2lE,KAAO/oE,EAAQ,uBCF3C,IAAAyC,EAAczC,EAAQ,GACtBipE,EAAYjpE,EAAQ,IACpB8C,EAAA0B,KAAA1B,IAGAL,IAAAW,EAAAX,EAAAO,EAAgChD,EAAQ,EAARA,CAAkB,WAClD,eAAAwE,KAAA4wH,MAAA,SACC,QACDA,KAAA,SAAAt2D,GACA,OAAAt6D,KAAAwnE,IAAAlN,MAAA,GACAmK,EAAAnK,GAAAmK,GAAAnK,IAAA,GACAh8D,EAAAg8D,EAAA,GAAAh8D,GAAAg8D,EAAA,KAAAt6D,KAAA+rH,EAAA,uBCXA,IAAA9tH,EAAczC,EAAQ,GACtBipE,EAAYjpE,EAAQ,IACpB8C,EAAA0B,KAAA1B,IAEAL,IAAAW,EAAA,QACAiyH,KAAA,SAAAv2D,GACA,IAAAv5D,EAAA0jE,EAAAnK,MACArtD,EAAAw3D,GAAAnK,GACA,OAAAv5D,GAAAm/B,IAAA,EAAAjzB,GAAAizB,KAAA,GAAAn/B,EAAAkM,IAAA3O,EAAAg8D,GAAAh8D,GAAAg8D,wBCRA,IAAAr8D,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QACAkyH,MAAA,SAAAxwH,GACA,OAAAA,EAAA,EAAAN,KAAAmN,MAAAnN,KAAAkN,MAAA5M,uBCLA,IAAArC,EAAczC,EAAQ,GACtBwT,EAAsBxT,EAAQ,IAC9B+/D,EAAAp2D,OAAAo2D,aACAw1D,EAAA5rH,OAAA6rH,cAGA/yH,IAAAW,EAAAX,EAAAO,KAAAuyH,GAAA,GAAAA,EAAA/tH,QAAA,UAEAguH,cAAA,SAAA12D,GAKA,IAJA,IAGAspC,EAHAt1F,EAAA,GACAsF,EAAA3R,UAAAe,OACApH,EAAA,EAEAgY,EAAAhY,GAAA,CAEA,GADAgoG,GAAA3hG,UAAArG,KACAoT,EAAA40F,EAAA,WAAAA,EAAA,MAAAt9F,WAAAs9F,EAAA,8BACAt1F,EAAAtJ,KAAA4+F,EAAA,MACAroC,EAAAqoC,GACAroC,EAAA,QAAAqoC,GAAA,YAAAA,EAAA,aAEK,OAAAt1F,EAAA5F,KAAA,wBCpBL,IAAAzK,EAAczC,EAAQ,GACtB6R,EAAgB7R,EAAQ,IACxBkS,EAAelS,EAAQ,GAEvByC,IAAAW,EAAA,UAEAw9D,IAAA,SAAA60D,GAMA,IALA,IAAAC,EAAA7jH,EAAA4jH,EAAA70D,KACAt1D,EAAA4G,EAAAwjH,EAAAluH,QACA4Q,EAAA3R,UAAAe,OACAsL,EAAA,GACA1S,EAAA,EACAkL,EAAAlL,GACA0S,EAAAtJ,KAAAG,OAAA+rH,EAAAt1H,OACAA,EAAAgY,GAAAtF,EAAAtJ,KAAAG,OAAAlD,UAAArG,KACK,OAAA0S,EAAA5F,KAAA,qCCbLlN,EAAQ,GAARA,CAAwB,gBAAAsxE,GACxB,kBACA,OAAAA,EAAAltE,KAAA,oCCHA,IAAAuxH,EAAU31H,EAAQ,GAARA,EAAsB,GAGhCA,EAAQ,GAARA,CAAwB2J,OAAA,kBAAA4gE,GACxBnmE,KAAAirD,GAAA1lD,OAAA4gE,GACAnmE,KAAAomE,GAAA,GAEC,WACD,IAEAorD,EAFA/vH,EAAAzB,KAAAirD,GACApjD,EAAA7H,KAAAomE,GAEA,OAAAv+D,GAAApG,EAAA2B,OAAA,CAAiCnG,WAAAsC,EAAAoL,MAAA,IACjC6mH,EAAAD,EAAA9vH,EAAAoG,GACA7H,KAAAomE,IAAAorD,EAAApuH,OACA,CAAUnG,MAAAu0H,EAAA7mH,MAAA,oCCdV,IAAAtM,EAAczC,EAAQ,GACtB21H,EAAU31H,EAAQ,GAARA,EAAsB,GAChCyC,IAAAa,EAAA,UAEAuyH,YAAA,SAAArlE,GACA,OAAAmlE,EAAAvxH,KAAAosD,oCCJA,IAAA/tD,EAAczC,EAAQ,GACtBkS,EAAelS,EAAQ,GACvBoL,EAAcpL,EAAQ,IAEtB81H,EAAA,YAEArzH,IAAAa,EAAAb,EAAAO,EAAgChD,EAAQ,GAARA,CAHhC,YAG4D,UAC5D4iD,SAAA,SAAAqnB,GACA,IAAAnhE,EAAAsC,EAAAhH,KAAA6lE,EALA,YAMA8rD,EAAAtvH,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,EACA2H,EAAA4G,EAAApJ,EAAAtB,QACAwS,OAAArW,IAAAoyH,EAAAzqH,EAAA9G,KAAAY,IAAA8M,EAAA6jH,GAAAzqH,GACA87C,EAAAz9C,OAAAsgE,GACA,OAAA6rD,EACAA,EAAAv1H,KAAAuI,EAAAs+C,EAAAptC,GACAlR,EAAA3C,MAAA6T,EAAAotC,EAAA5/C,OAAAwS,KAAAotC,mCCfA,IAAA3kD,EAAczC,EAAQ,GACtBoL,EAAcpL,EAAQ,IAGtByC,IAAAa,EAAAb,EAAAO,EAAgChD,EAAQ,GAARA,CAFhC,YAE4D,UAC5DuZ,SAAA,SAAA0wD,GACA,SAAA7+D,EAAAhH,KAAA6lE,EAJA,YAKA5wD,QAAA4wD,EAAAxjE,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,uBCTA,IAAAlB,EAAczC,EAAQ,GAEtByC,IAAAa,EAAA,UAEA+hD,OAAUrlD,EAAQ,oCCFlB,IAAAyC,EAAczC,EAAQ,GACtBkS,EAAelS,EAAQ,GACvBoL,EAAcpL,EAAQ,IAEtBg2H,EAAA,cAEAvzH,IAAAa,EAAAb,EAAAO,EAAgChD,EAAQ,GAARA,CAHhC,cAG4D,UAC5D6lD,WAAA,SAAAokB,GACA,IAAAnhE,EAAAsC,EAAAhH,KAAA6lE,EALA,cAMAh+D,EAAAiG,EAAA1N,KAAAY,IAAAqB,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,EAAAmF,EAAAtB,SACA4/C,EAAAz9C,OAAAsgE,GACA,OAAA+rD,EACAA,EAAAz1H,KAAAuI,EAAAs+C,EAAAn7C,GACAnD,EAAA3C,MAAA8F,IAAAm7C,EAAA5/C,UAAA4/C,mCCbApnD,EAAQ,GAARA,CAAwB,kBAAAqN,GACxB,gBAAA1M,GACA,OAAA0M,EAAAjJ,KAAA,WAAAzD,oCCFAX,EAAQ,GAARA,CAAwB,eAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,8CCFApE,EAAQ,GAARA,CAAwB,iBAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,gDCFApE,EAAQ,GAARA,CAAwB,gBAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,4CCFApE,EAAQ,GAARA,CAAwB,iBAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,6CCFApE,EAAQ,GAARA,CAAwB,qBAAAqN,GACxB,gBAAA4oH,GACA,OAAA5oH,EAAAjJ,KAAA,eAAA6xH,oCCFAj2H,EAAQ,GAARA,CAAwB,oBAAAqN,GACxB,gBAAA4oB,GACA,OAAA5oB,EAAAjJ,KAAA,cAAA6xB,oCCFAj2B,EAAQ,GAARA,CAAwB,mBAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,4CCFApE,EAAQ,GAARA,CAAwB,gBAAAqN,GACxB,gBAAA0wD,GACA,OAAA1wD,EAAAjJ,KAAA,WAAA25D,oCCFA/9D,EAAQ,GAARA,CAAwB,iBAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,gDCFApE,EAAQ,GAARA,CAAwB,kBAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,iDCFApE,EAAQ,GAARA,CAAwB,eAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,8CCFApE,EAAQ,GAARA,CAAwB,eAAAqN,GACxB,kBACA,OAAAA,EAAAjJ,KAAA,iCCHA,IAAA3B,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,QAA4B8C,IAAA,WAAmB,WAAAuxB,MAAAi1F,2CCF/C,IAAAjqH,EAAczC,EAAQ,GACtBiS,EAAejS,EAAQ,IACvB0F,EAAkB1F,EAAQ,IAE1ByC,IAAAa,EAAAb,EAAAO,EAAgChD,EAAQ,EAARA,CAAkB,WAClD,kBAAAy3B,KAAAqlC,KAAA3T,UAC4E,IAA5E1xB,KAAAz1B,UAAAmnD,OAAA5oD,KAAA,CAAmCk/E,YAAA,WAA2B,cAC7D,QAEDt2B,OAAA,SAAAxnD,GACA,IAAAkE,EAAAoM,EAAA7N,MACA8xH,EAAAxwH,EAAAG,GACA,uBAAAqwH,GAAAv8F,SAAAu8F,GAAArwH,EAAA45E,cAAA,yBCZA,IAAAh9E,EAAczC,EAAQ,GACtBy/E,EAAkBz/E,EAAQ,KAG1ByC,IAAAa,EAAAb,EAAAO,GAAAy0B,KAAAz1B,UAAAy9E,iBAAA,QACAA,8CCJA,IAAAtyE,EAAYnN,EAAQ,GACpB0sH,EAAAj1F,KAAAz1B,UAAA0qH,QACAyJ,EAAA1+F,KAAAz1B,UAAAy9E,YAEA22C,EAAA,SAAAj2D,GACA,OAAAA,EAAA,EAAAA,EAAA,IAAAA,GAIAhgE,EAAAD,QAAAiN,EAAA,WACA,kCAAAgpH,EAAA51H,KAAA,IAAAk3B,MAAA,aACCtqB,EAAA,WACDgpH,EAAA51H,KAAA,IAAAk3B,KAAAqlC,QACC,WACD,IAAAnjC,SAAA+yF,EAAAnsH,KAAA6D,OAAA,MAAA0G,WAAA,sBACA,IAAApK,EAAA0D,KACA2sE,EAAArwE,EAAA21H,iBACA71H,EAAAE,EAAA41H,qBACAn0H,EAAA4uE,EAAA,MAAAA,EAAA,YACA,OAAA5uE,GAAA,QAAAqC,KAAAwnE,IAAA+E,IAAA5qE,MAAAhE,GAAA,MACA,IAAAi0H,EAAA11H,EAAA61H,cAAA,OAAAH,EAAA11H,EAAA81H,cACA,IAAAJ,EAAA11H,EAAA+1H,eAAA,IAAAL,EAAA11H,EAAAg2H,iBACA,IAAAN,EAAA11H,EAAAi2H,iBAAA,KAAAn2H,EAAA,GAAAA,EAAA,IAAA41H,EAAA51H,IAAA,KACC21H,mBCzBD,IAAAS,EAAAn/F,KAAAz1B,UAGA2K,EAAAiqH,EAAA,SACAlK,EAAAkK,EAAAlK,QACA,IAAAj1F,KAAAqlC,KAAA,IAJA,gBAKE98D,EAAQ,GAARA,CAAqB42H,EAJvB,WAIuB,WACvB,IAAAv1H,EAAAqrH,EAAAnsH,KAAA6D,MAEA,OAAA/C,KAAAsL,EAAApM,KAAA6D,MARA,kCCDA,IAAAwrH,EAAmB5vH,EAAQ,EAARA,CAAgB,eACnC2Y,EAAA8e,KAAAz1B,UAEA4tH,KAAAj3G,GAA8B3Y,EAAQ,GAARA,CAAiB2Y,EAAAi3G,EAAuB5vH,EAAQ,oCCF9E,IAAAwF,EAAexF,EAAQ,GACvB0F,EAAkB1F,EAAQ,IAG1BG,EAAAD,QAAA,SAAA22H,GACA,cAAAA,GAHA,WAGAA,GAAA,YAAAA,EAAA,MAAA9xH,UAAA,kBACA,OAAAW,EAAAF,EAAApB,MAJA,UAIAyyH,qBCNA,IAAAp0H,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,SAA6Bq4B,QAAUz7B,EAAQ,oCCF/C,IAAAwC,EAAUxC,EAAQ,IAClByC,EAAczC,EAAQ,GACtBiS,EAAejS,EAAQ,IACvBO,EAAWP,EAAQ,KACnB0T,EAAkB1T,EAAQ,IAC1BkS,EAAelS,EAAQ,GACvB82H,EAAqB92H,EAAQ,IAC7B4T,EAAgB5T,EAAQ,IAExByC,IAAAW,EAAAX,EAAAO,GAAiChD,EAAQ,GAARA,CAAwB,SAAAic,GAAmB7V,MAAAkW,KAAAL,KAAoB,SAEhGK,KAAA,SAAAhC,GACA,IAOA9S,EAAAuL,EAAAoF,EAAAtJ,EAPAhJ,EAAAoM,EAAAqI,GACA1C,EAAA,mBAAAxT,UAAAgC,MACAgS,EAAA3R,UAAAe,OACA6Q,EAAAD,EAAA,EAAA3R,UAAA,QAAA9C,EACA2U,OAAA3U,IAAA0U,EACApM,EAAA,EACAsM,EAAA3E,EAAA/N,GAIA,GAFAyS,IAAAD,EAAA7V,EAAA6V,EAAAD,EAAA,EAAA3R,UAAA,QAAA9C,EAAA,IAEAA,MAAA4U,GAAAX,GAAAxR,OAAAsN,EAAA6E,GAMA,IAAAxF,EAAA,IAAA6E,EADApQ,EAAA0K,EAAArM,EAAA2B,SACkCA,EAAAyE,EAAgBA,IAClD6qH,EAAA/jH,EAAA9G,EAAAqM,EAAAD,EAAAxS,EAAAoG,MAAApG,EAAAoG,SANA,IAAA4C,EAAA0J,EAAAhY,KAAAsF,GAAAkN,EAAA,IAAA6E,IAAuDO,EAAAtJ,EAAAC,QAAAC,KAAgC9C,IACvF6qH,EAAA/jH,EAAA9G,EAAAqM,EAAA/X,EAAAsO,EAAAwJ,EAAA,CAAAF,EAAA9W,MAAA4K,IAAA,GAAAkM,EAAA9W,OASA,OADA0R,EAAAvL,OAAAyE,EACA8G,mCCjCA,IAAAtQ,EAAczC,EAAQ,GACtB82H,EAAqB92H,EAAQ,IAG7ByC,IAAAW,EAAAX,EAAAO,EAAgChD,EAAQ,EAARA,CAAkB,WAClD,SAAAgD,KACA,QAAAoD,MAAAiW,GAAA9b,KAAAyC,kBACC,SAEDqZ,GAAA,WAIA,IAHA,IAAApQ,EAAA,EACAmM,EAAA3R,UAAAe,OACAuL,EAAA,uBAAA3O,UAAAgC,OAAAgS,GACAA,EAAAnM,GAAA6qH,EAAA/jH,EAAA9G,EAAAxF,UAAAwF,MAEA,OADA8G,EAAAvL,OAAA4Q,EACArF,mCCdA,IAAAtQ,EAAczC,EAAQ,GACtB6R,EAAgB7R,EAAQ,IACxBkW,EAAA,GAAAhJ,KAGAzK,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,KAAYc,SAAgBd,EAAQ,GAARA,CAA0BkW,IAAA,SAC/FhJ,KAAA,SAAAsM,GACA,OAAAtD,EAAA3V,KAAAsR,EAAAzN,WAAAT,IAAA6V,EAAA,IAAAA,oCCRA,IAAA/W,EAAczC,EAAQ,GACtBorE,EAAWprE,EAAQ,IACnBmxD,EAAUnxD,EAAQ,IAClBwT,EAAsBxT,EAAQ,IAC9BkS,EAAelS,EAAQ,GACvBqW,EAAA,GAAAlQ,MAGA1D,IAAAa,EAAAb,EAAAO,EAAgChD,EAAQ,EAARA,CAAkB,WAClDorE,GAAA/0D,EAAA9V,KAAA6qE,KACC,SACDjlE,MAAA,SAAA4T,EAAAC,GACA,IAAA1O,EAAA4G,EAAA9N,KAAAoD,QACAuU,EAAAo1C,EAAA/sD,MAEA,GADA4V,OAAArW,IAAAqW,EAAA1O,EAAA0O,EACA,SAAA+B,EAAA,OAAA1F,EAAA9V,KAAA6D,KAAA2V,EAAAC,GAMA,IALA,IAAAnB,EAAArF,EAAAuG,EAAAzO,GACAq2E,EAAAnuE,EAAAwG,EAAA1O,GACA2qB,EAAA/jB,EAAAyvE,EAAA9oE,GACAk+G,EAAA,IAAA3wH,MAAA6vB,GACA71B,EAAA,EACUA,EAAA61B,EAAU71B,IAAA22H,EAAA32H,GAAA,UAAA2b,EACpB3X,KAAAyqC,OAAAh2B,EAAAzY,GACAgE,KAAAyU,EAAAzY,GACA,OAAA22H,mCCxBA,IAAAt0H,EAAczC,EAAQ,GACtBuR,EAAgBvR,EAAQ,IACxBiS,EAAejS,EAAQ,IACvBmN,EAAYnN,EAAQ,GACpBg3H,EAAA,GAAA5gH,KACAxI,EAAA,QAEAnL,IAAAa,EAAAb,EAAAO,GAAAmK,EAAA,WAEAS,EAAAwI,UAAAzS,OACCwJ,EAAA,WAEDS,EAAAwI,KAAA,UAEOpW,EAAQ,GAARA,CAA0Bg3H,IAAA,SAEjC5gH,KAAA,SAAAyD,GACA,YAAAlW,IAAAkW,EACAm9G,EAAAz2H,KAAA0R,EAAA7N,OACA4yH,EAAAz2H,KAAA0R,EAAA7N,MAAAmN,EAAAsI,qCCnBA,IAAApX,EAAczC,EAAQ,GACtBi3H,EAAej3H,EAAQ,GAARA,CAA0B,GACzCk3H,EAAal3H,EAAQ,GAARA,CAA0B,GAAAoZ,SAAA,GAEvC3W,IAAAa,EAAAb,EAAAO,GAAAk0H,EAAA,SAEA99G,QAAA,SAAAvG,GACA,OAAAokH,EAAA7yH,KAAAyO,EAAApM,UAAA,wBCRA,IAAA5B,EAAe7E,EAAQ,GACvBy7B,EAAcz7B,EAAQ,IACtBkwD,EAAclwD,EAAQ,EAARA,CAAgB,WAE9BG,EAAAD,QAAA,SAAA6nE,GACA,IAAAnwD,EASG,OARH6jB,EAAAssC,KAGA,mBAFAnwD,EAAAmwD,EAAA34D,cAEAwI,IAAAxR,QAAAq1B,EAAA7jB,EAAA5V,aAAA4V,OAAAjU,GACAkB,EAAA+S,IAEA,QADAA,IAAAs4C,MACAt4C,OAAAjU,SAEGA,IAAAiU,EAAAxR,MAAAwR,iCCbH,IAAAnV,EAAczC,EAAQ,GACtBkX,EAAWlX,EAAQ,GAARA,CAA0B,GAErCyC,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,GAARA,CAA0B,GAAAyZ,KAAA,YAE3DA,IAAA,SAAA5G,GACA,OAAAqE,EAAA9S,KAAAyO,EAAApM,UAAA,qCCNA,IAAAhE,EAAczC,EAAQ,GACtBm3H,EAAcn3H,EAAQ,GAARA,CAA0B,GAExCyC,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,GAARA,CAA0B,GAAAgZ,QAAA,YAE3DA,OAAA,SAAAnG,GACA,OAAAskH,EAAA/yH,KAAAyO,EAAApM,UAAA,qCCNA,IAAAhE,EAAczC,EAAQ,GACtBo3H,EAAYp3H,EAAQ,GAARA,CAA0B,GAEtCyC,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,GAARA,CAA0B,GAAA4Z,MAAA,YAE3DA,KAAA,SAAA/G,GACA,OAAAukH,EAAAhzH,KAAAyO,EAAApM,UAAA,qCCNA,IAAAhE,EAAczC,EAAQ,GACtBq3H,EAAar3H,EAAQ,GAARA,CAA0B,GAEvCyC,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,GAARA,CAA0B,GAAA8Y,OAAA,YAE3DA,MAAA,SAAAjG,GACA,OAAAwkH,EAAAjzH,KAAAyO,EAAApM,UAAA,qCCNA,IAAAhE,EAAczC,EAAQ,GACtBs3H,EAAct3H,EAAQ,KAEtByC,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,GAARA,CAA0B,GAAA+V,QAAA,YAE3DA,OAAA,SAAAlD,GACA,OAAAykH,EAAAlzH,KAAAyO,EAAApM,UAAAe,OAAAf,UAAA,wCCNA,IAAAhE,EAAczC,EAAQ,GACtBs3H,EAAct3H,EAAQ,KAEtByC,IAAAa,EAAAb,EAAAO,GAAiChD,EAAQ,GAARA,CAA0B,GAAAiW,aAAA,YAE3DA,YAAA,SAAApD,GACA,OAAAykH,EAAAlzH,KAAAyO,EAAApM,UAAAe,OAAAf,UAAA,wCCNA,IAAAhE,EAAczC,EAAQ,GACtBu3H,EAAev3H,EAAQ,GAARA,EAA2B,GAC1C6pE,EAAA,GAAAxwD,QACAm+G,IAAA3tD,GAAA,MAAAxwD,QAAA,QAEA5W,IAAAa,EAAAb,EAAAO,GAAAw0H,IAAmDx3H,EAAQ,GAARA,CAA0B6pE,IAAA,SAE7ExwD,QAAA,SAAAC,GACA,OAAAk+G,EAEA3tD,EAAArjE,MAAApC,KAAAqC,YAAA,EACA8wH,EAAAnzH,KAAAkV,EAAA7S,UAAA,qCCXA,IAAAhE,EAAczC,EAAQ,GACtB6R,EAAgB7R,EAAQ,IACxBmF,EAAgBnF,EAAQ,IACxBkS,EAAelS,EAAQ,GACvB6pE,EAAA,GAAAh0D,YACA2hH,IAAA3tD,GAAA,MAAAh0D,YAAA,QAEApT,IAAAa,EAAAb,EAAAO,GAAAw0H,IAAmDx3H,EAAQ,GAARA,CAA0B6pE,IAAA,SAE7Eh0D,YAAA,SAAAyD,GAEA,GAAAk+G,EAAA,OAAA3tD,EAAArjE,MAAApC,KAAAqC,YAAA,EACA,IAAAZ,EAAAgM,EAAAzN,MACAoD,EAAA0K,EAAArM,EAAA2B,QACAyE,EAAAzE,EAAA,EAGA,IAFAf,UAAAe,OAAA,IAAAyE,EAAAzH,KAAAY,IAAA6G,EAAA9G,EAAAsB,UAAA,MACAwF,EAAA,IAAAA,EAAAzE,EAAAyE,GACUA,GAAA,EAAWA,IAAA,GAAAA,KAAApG,KAAAoG,KAAAqN,EAAA,OAAArN,GAAA,EACrB,6BClBA,IAAAxJ,EAAczC,EAAQ,GAEtByC,IAAAa,EAAA,SAA6BsV,WAAa5Y,EAAQ,OAElDA,EAAQ,GAARA,CAA+B,+BCJ/B,IAAAyC,EAAczC,EAAQ,GAEtByC,IAAAa,EAAA,SAA6ByV,KAAO/Y,EAAQ,MAE5CA,EAAQ,GAARA,CAA+B,sCCH/B,IAAAyC,EAAczC,EAAQ,GACtBy3H,EAAYz3H,EAAQ,GAARA,CAA0B,GAEtC6xE,GAAA,EADA,QAGA,IAAAzrE,MAAA,mBAA0CyrE,GAAA,IAC1CpvE,IAAAa,EAAAb,EAAAO,EAAA6uE,EAAA,SACA54D,KAAA,SAAApG,GACA,OAAA4kH,EAAArzH,KAAAyO,EAAApM,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,MAGA3D,EAAQ,GAARA,CATA,sCCFA,IAAAyC,EAAczC,EAAQ,GACtBy3H,EAAYz3H,EAAQ,GAARA,CAA0B,GACtCgS,EAAA,YACA6/D,GAAA,EAEA7/D,IAAA,IAAA5L,MAAA,GAAA4L,GAAA,WAA0C6/D,GAAA,IAC1CpvE,IAAAa,EAAAb,EAAAO,EAAA6uE,EAAA,SACA14D,UAAA,SAAAtG,GACA,OAAA4kH,EAAArzH,KAAAyO,EAAApM,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,MAGA3D,EAAQ,GAARA,CAA+BgS,oBCb/BhS,EAAQ,GAARA,CAAwB,0BCAxB,IAAAoC,EAAapC,EAAQ,GACrBs7D,EAAwBt7D,EAAQ,IAChC2F,EAAS3F,EAAQ,IAAc4F,EAC/B+N,EAAW3T,EAAQ,IAAgB4F,EACnCghB,EAAe5mB,EAAQ,IACvB03H,EAAa13H,EAAQ,IACrB23H,EAAAv1H,EAAA6e,OACA9F,EAAAw8G,EACAh/G,EAAAg/G,EAAA31H,UACA2oE,EAAA,KACAC,EAAA,KAEAgtD,EAAA,IAAAD,EAAAhtD,OAEA,GAAI3qE,EAAQ,MAAgB43H,GAAsB53H,EAAQ,EAARA,CAAkB,WAGpE,OAFA4qE,EAAM5qE,EAAQ,EAARA,CAAgB,aAEtB23H,EAAAhtD,OAAAgtD,EAAA/sD,OAAA,QAAA+sD,EAAAhtD,EAAA,QACC,CACDgtD,EAAA,SAAAz1H,EAAA0D,GACA,IAAAiyH,EAAAzzH,gBAAAuzH,EACAG,EAAAlxG,EAAA1kB,GACA61H,OAAAp0H,IAAAiC,EACA,OAAAiyH,GAAAC,GAAA51H,EAAAkN,cAAAuoH,GAAAI,EAAA71H,EACAo5D,EAAAs8D,EACA,IAAAz8G,EAAA28G,IAAAC,EAAA71H,EAAAS,OAAAT,EAAA0D,GACAuV,GAAA28G,EAAA51H,aAAAy1H,GAAAz1H,EAAAS,OAAAT,EAAA41H,GAAAC,EAAAL,EAAAn3H,KAAA2B,GAAA0D,GACAiyH,EAAAzzH,KAAAuU,EAAAg/G,IASA,IAPA,IAAAK,EAAA,SAAAr2H,GACAA,KAAAg2H,GAAAhyH,EAAAgyH,EAAAh2H,EAAA,CACA2N,cAAA,EACArO,IAAA,WAAwB,OAAAka,EAAAxZ,IACxBiJ,IAAA,SAAA9F,GAA0BqW,EAAAxZ,GAAAmD,MAG1BwH,EAAAqH,EAAAwH,GAAA/a,EAAA,EAAoCkM,EAAA9E,OAAApH,GAAiB43H,EAAA1rH,EAAAlM,MACrDuY,EAAAvJ,YAAAuoH,EACAA,EAAA31H,UAAA2W,EACE3Y,EAAQ,GAARA,CAAqBoC,EAAA,SAAAu1H,GAGvB33H,EAAQ,GAARA,CAAwB,wCCzCxBA,EAAQ,KACR,IAAAwF,EAAexF,EAAQ,GACvB03H,EAAa13H,EAAQ,IACrBiwD,EAAkBjwD,EAAQ,GAE1B2M,EAAA,aAEAsrH,EAAA,SAAAzmH,GACExR,EAAQ,GAARA,CAAqBihB,OAAAjf,UAJvB,WAIuBwP,GAAA,IAInBxR,EAAQ,EAARA,CAAkB,WAAe,MAAkD,QAAlD2M,EAAApM,KAAA,CAAwBoC,OAAA,IAAAmvE,MAAA,QAC7DmmD,EAAA,WACA,IAAAl0H,EAAAyB,EAAApB,MACA,UAAA+D,OAAApE,EAAApB,OAAA,IACA,UAAAoB,IAAA+tE,OAAA7hB,GAAAlsD,aAAAkd,OAAAy2G,EAAAn3H,KAAAwD,QAAAJ,KAZA,YAeCgJ,EAAAhM,MACDs3H,EAAA,WACA,OAAAtrH,EAAApM,KAAA6D,sCCpBA,IAAAoB,EAAexF,EAAQ,GACvBkS,EAAelS,EAAQ,GACvBk4H,EAAyBl4H,EAAQ,KACjCm4H,EAAiBn4H,EAAQ,IAGzBA,EAAQ,GAARA,CAAuB,mBAAA0H,EAAAwiE,EAAAkuD,EAAAC,GACvB,OAGA,SAAA13F,GACA,IAAA96B,EAAA6B,EAAAtD,MACAoN,EAAA7N,MAAAg9B,OAAAh9B,EAAAg9B,EAAAupC,GACA,YAAAvmE,IAAA6N,IAAAjR,KAAAogC,EAAA96B,GAAA,IAAAob,OAAA0f,GAAAupC,GAAAvgE,OAAA9D,KAIA,SAAA86B,GACA,IAAA7tB,EAAAulH,EAAAD,EAAAz3F,EAAAv8B,MACA,GAAA0O,EAAA/D,KAAA,OAAA+D,EAAAzR,MACA,IAAAi3H,EAAA9yH,EAAAm7B,GACAv9B,EAAAuG,OAAAvF,MACA,IAAAk0H,EAAAl2H,OAAA,OAAA+1H,EAAAG,EAAAl1H,GACA,IAAAm1H,EAAAD,EAAA3+D,QACA2+D,EAAA7hG,UAAA,EAIA,IAHA,IAEA1jB,EAFA69D,EAAA,GACA/uE,EAAA,EAEA,QAAAkR,EAAAolH,EAAAG,EAAAl1H,KAAA,CACA,IAAAo1H,EAAA7uH,OAAAoJ,EAAA,IACA69D,EAAA/uE,GAAA22H,EACA,KAAAA,IAAAF,EAAA7hG,UAAAyhG,EAAA90H,EAAA8O,EAAAomH,EAAA7hG,WAAA8hG,IACA12H,IAEA,WAAAA,EAAA,KAAA+uE,oCClCA,IAAAprE,EAAexF,EAAQ,GACvBiS,EAAejS,EAAQ,IACvBkS,EAAelS,EAAQ,GACvBmF,EAAgBnF,EAAQ,IACxBk4H,EAAyBl4H,EAAQ,KACjCm4H,EAAiBn4H,EAAQ,IACzB+5B,EAAAv1B,KAAAu1B,IACA30B,EAAAZ,KAAAY,IACAuM,EAAAnN,KAAAmN,MACA8mH,EAAA,4BACAC,EAAA,oBAOA14H,EAAQ,GAARA,CAAuB,qBAAA0H,EAAAixH,EAAAC,EAAAP,GACvB,OAGA,SAAAQ,EAAAC,GACA,IAAAjzH,EAAA6B,EAAAtD,MACAoN,EAAA7N,MAAAk1H,OAAAl1H,EAAAk1H,EAAAF,GACA,YAAAh1H,IAAA6N,EACAA,EAAAjR,KAAAs4H,EAAAhzH,EAAAizH,GACAF,EAAAr4H,KAAAoJ,OAAA9D,GAAAgzH,EAAAC,IAIA,SAAAn4F,EAAAm4F,GACA,IAAAhmH,EAAAulH,EAAAO,EAAAj4F,EAAAv8B,KAAA00H,GACA,GAAAhmH,EAAA/D,KAAA,OAAA+D,EAAAzR,MAEA,IAAAi3H,EAAA9yH,EAAAm7B,GACAv9B,EAAAuG,OAAAvF,MACA20H,EAAA,mBAAAD,EACAC,IAAAD,EAAAnvH,OAAAmvH,IACA,IAAA12H,EAAAk2H,EAAAl2H,OACA,GAAAA,EAAA,CACA,IAAAm2H,EAAAD,EAAA3+D,QACA2+D,EAAA7hG,UAAA,EAGA,IADA,IAAA68B,EAAA,KACA,CACA,IAAAvgD,EAAAolH,EAAAG,EAAAl1H,GACA,UAAA2P,EAAA,MAEA,GADAugD,EAAA9pD,KAAAuJ,IACA3Q,EAAA,MAEA,KADAuH,OAAAoJ,EAAA,MACAulH,EAAA7hG,UAAAyhG,EAAA90H,EAAA8O,EAAAomH,EAAA7hG,WAAA8hG,IAIA,IAFA,IAxCAzzH,EAwCAk0H,EAAA,GACAC,EAAA,EACA74H,EAAA,EAAqBA,EAAAkzD,EAAA9rD,OAAoBpH,IAAA,CACzC2S,EAAAugD,EAAAlzD,GASA,IARA,IAAA84H,EAAAvvH,OAAAoJ,EAAA,IACAjH,EAAAiuB,EAAA30B,EAAAD,EAAA4N,EAAA9G,OAAA7I,EAAAoE,QAAA,GACA2xH,EAAA,GAMA35D,EAAA,EAAuBA,EAAAzsD,EAAAvL,OAAmBg4D,IAAA25D,EAAA3vH,UAnD1C7F,KADAmB,EAoD0CiO,EAAAysD,IAnD1C16D,EAAA6E,OAAA7E,IAoDA,IAAAs0H,EAAArmH,EAAAknD,OACA,GAAA8+D,EAAA,CACA,IAAAM,EAAA,CAAAH,GAAA/wH,OAAAgxH,EAAArtH,EAAA1I,QACAO,IAAAy1H,GAAAC,EAAA7vH,KAAA4vH,GACA,IAAAE,EAAA3vH,OAAAmvH,EAAAtyH,WAAA7C,EAAA01H,SAEAC,EAAAC,EAAAL,EAAA91H,EAAA0I,EAAAqtH,EAAAC,EAAAN,GAEAhtH,GAAAmtH,IACAD,GAAA51H,EAAA+C,MAAA8yH,EAAAntH,GAAAwtH,EACAL,EAAAntH,EAAAotH,EAAA1xH,QAGA,OAAAwxH,EAAA51H,EAAA+C,MAAA8yH,KAKA,SAAAM,EAAAL,EAAAv+D,EAAA7uD,EAAAqtH,EAAAC,EAAAE,GACA,IAAAE,EAAA1tH,EAAAotH,EAAA1xH,OACAhH,EAAA24H,EAAA3xH,OACA0nH,EAAAwJ,EAKA,YAJA/0H,IAAAy1H,IACAA,EAAAnnH,EAAAmnH,GACAlK,EAAAuJ,GAEAG,EAAAr4H,KAAA+4H,EAAApK,EAAA,SAAAt4F,EAAAq5C,GACA,IAAAwpD,EACA,OAAAxpD,EAAAphC,OAAA,IACA,kBACA,eAAAqqF,EACA,eAAAv+D,EAAAx0D,MAAA,EAAA2F,GACA,eAAA6uD,EAAAx0D,MAAAqzH,GACA,QACAC,EAAAL,EAAAnpD,EAAA9pE,MAAA,OACA,MACA,QACA,IAAAtE,GAAAouE,EACA,OAAApuE,EAAA,OAAA+0B,EACA,GAAA/0B,EAAArB,EAAA,CACA,IAAAoF,EAAA+L,EAAA9P,EAAA,IACA,WAAA+D,EAAAgxB,EACAhxB,GAAApF,OAAAmD,IAAAw1H,EAAAvzH,EAAA,GAAAqqE,EAAAphC,OAAA,GAAAsqF,EAAAvzH,EAAA,GAAAqqE,EAAAphC,OAAA,GACAjY,EAEA6iG,EAAAN,EAAAt3H,EAAA,GAEA,YAAA8B,IAAA81H,EAAA,GAAAA,qCChHA,IAAAj0H,EAAexF,EAAQ,GACvB05H,EAAgB15H,EAAQ,KACxBm4H,EAAiBn4H,EAAQ,IAGzBA,EAAQ,GAARA,CAAuB,oBAAA0H,EAAAiyH,EAAAC,EAAAvB,GACvB,OAGA,SAAA13F,GACA,IAAA96B,EAAA6B,EAAAtD,MACAoN,EAAA7N,MAAAg9B,OAAAh9B,EAAAg9B,EAAAg5F,GACA,YAAAh2H,IAAA6N,IAAAjR,KAAAogC,EAAA96B,GAAA,IAAAob,OAAA0f,GAAAg5F,GAAAhwH,OAAA9D,KAIA,SAAA86B,GACA,IAAA7tB,EAAAulH,EAAAuB,EAAAj5F,EAAAv8B,MACA,GAAA0O,EAAA/D,KAAA,OAAA+D,EAAAzR,MACA,IAAAi3H,EAAA9yH,EAAAm7B,GACAv9B,EAAAuG,OAAAvF,MACAy1H,EAAAvB,EAAA7hG,UACAijG,EAAAG,EAAA,KAAAvB,EAAA7hG,UAAA,GACA,IAAA1jB,EAAAolH,EAAAG,EAAAl1H,GAEA,OADAs2H,EAAApB,EAAA7hG,UAAAojG,KAAAvB,EAAA7hG,UAAAojG,GACA,OAAA9mH,GAAA,EAAAA,EAAA9G,wCCzBA,IAAA2a,EAAe5mB,EAAQ,IACvBwF,EAAexF,EAAQ,GACvBgU,EAAyBhU,EAAQ,IACjCk4H,EAAyBl4H,EAAQ,KACjCkS,EAAelS,EAAQ,GACvB85H,EAAqB95H,EAAQ,IAC7B85D,EAAiB95D,EAAQ,KACzBmN,EAAYnN,EAAQ,GACpB+5H,EAAAv1H,KAAAY,IACA40H,EAAA,GAAAxwH,KAOAywH,GAAA9sH,EAAA,WAAqC8T,OAHrC,WAGqC,OAGrCjhB,EAAQ,GAARA,CAAuB,mBAAA0H,EAAAwyH,EAAAC,EAAA9B,GACvB,IAAA+B,EAkDA,OAxCAA,EARA,8BACA,mCACA,iCACA,iCACA,4BACA,sBAGA,SAAA5gH,EAAAqnC,GACA,IAAAvzC,EAAA3D,OAAAvF,MACA,QAAAT,IAAA6V,GAAA,IAAAqnC,EAAA,SAEA,IAAAj6B,EAAApN,GAAA,OAAA2gH,EAAA55H,KAAA+M,EAAAkM,EAAAqnC,GAWA,IAVA,IASAjqB,EAAAH,EAAA4jG,EATAr1D,EAAA,GACA8M,GAAAt4D,EAAAigD,WAAA,SACAjgD,EAAAkgD,UAAA,SACAlgD,EAAAmgD,QAAA,SACAngD,EAAAogD,OAAA,QACA0gE,EAAA,EACAC,OAAA52H,IAAAk9C,EA5BA,WA4BAA,IAAA,EAEA25E,EAAA,IAAAv5G,OAAAzH,EAAA7W,OAAAmvE,EAAA,MAEAl7C,EAAAkjC,EAAAv5D,KAAAi6H,EAAAltH,QACAmpB,EAAA+jG,EAAA,WACAF,IACAt1D,EAAAx7D,KAAA8D,EAAAnH,MAAAm0H,EAAA1jG,EAAA3qB,QACA2qB,EAAA,UAAAA,EAAA3qB,MAAAqB,EAAA,QAAA0sH,EAAAxzH,MAAAw+D,EAAApuC,EAAAzwB,MAAA,IACAk0H,EAAAzjG,EAAA,UACA0jG,EAAA7jG,EACAuuC,EAAA,QAAAu1D,KAEAC,EAAA,YAAA5jG,EAAA3qB,OAAAuuH,EAAA,YAKA,OAHAF,IAAAhtH,EAAA,QACA+sH,GAAAG,EAAA5sH,KAAA,KAAAo3D,EAAAx7D,KAAA,IACOw7D,EAAAx7D,KAAA8D,EAAAnH,MAAAm0H,IACPt1D,EAAA,OAAAu1D,EAAAv1D,EAAA7+D,MAAA,EAAAo0H,GAAAv1D,GAGG,eAAArhE,EAAA,UACH,SAAA6V,EAAAqnC,GACA,YAAAl9C,IAAA6V,GAAA,IAAAqnC,EAAA,GAAAs5E,EAAA55H,KAAA6D,KAAAoV,EAAAqnC,IAGAs5E,EAGA,CAGA,SAAA3gH,EAAAqnC,GACA,IAAAh7C,EAAA6B,EAAAtD,MACAq2H,EAAA92H,MAAA6V,OAAA7V,EAAA6V,EAAA0gH,GACA,YAAAv2H,IAAA82H,EACAA,EAAAl6H,KAAAiZ,EAAA3T,EAAAg7C,GACAu5E,EAAA75H,KAAAoJ,OAAA9D,GAAA2T,EAAAqnC,IAOA,SAAAlgB,EAAAkgB,GACA,IAAA/tC,EAAAulH,EAAA+B,EAAAz5F,EAAAv8B,KAAAy8C,EAAAu5E,IAAAD,GACA,GAAArnH,EAAA/D,KAAA,OAAA+D,EAAAzR,MAEA,IAAAi3H,EAAA9yH,EAAAm7B,GACAv9B,EAAAuG,OAAAvF,MACAwT,EAAA5D,EAAAskH,EAAAr3G,QAEAy5G,EAAApC,EAAA3+D,QACAmY,GAAAwmD,EAAA7+D,WAAA,SACA6+D,EAAA5+D,UAAA,SACA4+D,EAAA3+D,QAAA,SACAsgE,EAAA,SAIAQ,EAAA,IAAA7iH,EAAAqiH,EAAA3B,EAAA,OAAAA,EAAA31H,OAAA,IAAAmvE,GACA6oD,OAAAh3H,IAAAk9C,EAzFA,WAyFAA,IAAA,EACA,OAAA85E,EAAA,SACA,OAAAv3H,EAAAoE,OAAA,cAAAsyH,EAAAW,EAAAr3H,GAAA,CAAAA,GAAA,GAIA,IAHA,IAAAlB,EAAA,EACA04H,EAAA,EACAhqD,EAAA,GACAgqD,EAAAx3H,EAAAoE,QAAA,CACAizH,EAAAhkG,UAAAwjG,EAAAW,EAAA,EACA,IACAh2H,EADAiuH,EAAAiH,EAAAW,EAAAR,EAAA72H,IAAA+C,MAAAy0H,IAEA,GACA,OAAA/H,IACAjuH,EAAAm1H,EAAA7nH,EAAAuoH,EAAAhkG,WAAAwjG,EAAA,EAAAW,IAAAx3H,EAAAoE,WAAAtF,EAEA04H,EAAA1C,EAAA90H,EAAAw3H,EAAAF,OACS,CAET,GADA9pD,EAAApnE,KAAApG,EAAA+C,MAAAjE,EAAA04H,IACAhqD,EAAAppE,SAAAmzH,EAAA,OAAA/pD,EACA,QAAAxwE,EAAA,EAAyBA,GAAAyyH,EAAArrH,OAAA,EAAmBpH,IAE5C,GADAwwE,EAAApnE,KAAAqpH,EAAAzyH,IACAwwE,EAAAppE,SAAAmzH,EAAA,OAAA/pD,EAEAgqD,EAAA14H,EAAA0C,GAIA,OADAgsE,EAAApnE,KAAApG,EAAA+C,MAAAjE,IACA0uE,uBClIA,IAAAxuE,EAAapC,EAAQ,GACrB66H,EAAgB76H,EAAQ,KAAS4K,IACjCkwH,EAAA14H,EAAAwN,kBAAAxN,EAAAyN,uBACAmW,EAAA5jB,EAAA4jB,QACAuU,EAAAn4B,EAAAm4B,QACAi4C,EAA6B,WAAhBxyE,EAAQ,GAARA,CAAgBgmB,GAE7B7lB,EAAAD,QAAA,WACA,IAAAw1C,EAAA5Q,EAAAiuC,EAEA/5B,EAAA,WACA,IAAAnU,EAAArzB,EAEA,IADAghE,IAAA3tC,EAAA7e,EAAAwtD,SAAA3uC,EAAA+uC,OACAl+B,GAAA,CACAlkC,EAAAkkC,EAAAlkC,GACAkkC,IAAA5mC,KACA,IACA0C,IACO,MAAA5M,GAGP,MAFA8wC,EAAAq9B,IACAjuC,OAAAnhC,EACAiB,GAEKkgC,OAAAnhC,EACLkhC,KAAA8uC,SAIA,GAAAnB,EACAO,EAAA,WACA/sD,EAAAhW,SAAAgpC,SAGG,IAAA8hF,GAAA14H,EAAA84D,WAAA94D,EAAA84D,UAAA6/D,WAQA,GAAAxgG,KAAA0Z,QAAA,CAEH,IAAAi0B,EAAA3tC,EAAA0Z,aAAAtwC,GACAovE,EAAA,WACA7K,EAAA7U,KAAAra,SASA+5B,EAAA,WAEA8nD,EAAAt6H,KAAA6B,EAAA42C,QAvBG,CACH,IAAAgiF,GAAA,EACAviD,EAAAvoE,SAAAC,eAAA,IACA,IAAA2qH,EAAA9hF,GAAA5oC,QAAAqoE,EAAA,CAAuCpoE,eAAA,IACvC0iE,EAAA,WACA0F,EAAAv0E,KAAA82H,MAsBA,gBAAAxpH,GACA,IAAAF,EAAA,CAAgBE,KAAA1C,UAAAnL,GAChBmhC,MAAAh2B,KAAAwC,GACAokC,IACAA,EAAApkC,EACAyhE,KACKjuC,EAAAxzB,mBClELnR,EAAAD,QAAA,SAAAyE,GACA,IACA,OAAYC,GAAA,EAAA6W,EAAA9W,KACT,MAAAC,GACH,OAAYA,GAAA,EAAA6W,EAAA7W,mCCHZ,IAAAq2H,EAAaj7H,EAAQ,KACrB2X,EAAe3X,EAAQ,IAIvBG,EAAAD,QAAiBF,EAAQ,GAARA,CAHjB,MAGwC,SAAAiB,GACxC,kBAAyB,OAAAA,EAAAmD,KAAAqC,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,KACxB,CAED1C,IAAA,SAAAU,GACA,IAAAi7B,EAAAq+F,EAAA5lD,SAAA19D,EAAAvT,KARA,OAQAzC,GACA,OAAAi7B,KAAAnhB,GAGA7Q,IAAA,SAAAjJ,EAAAN,GACA,OAAA45H,EAAAzrE,IAAA73C,EAAAvT,KAbA,OAaA,IAAAzC,EAAA,EAAAA,EAAAN,KAEC45H,GAAA,iCCjBD,IAAAA,EAAaj7H,EAAQ,KACrB2X,EAAe3X,EAAQ,IAIvBG,EAAAD,QAAiBF,EAAQ,GAARA,CAHjB,MAGwC,SAAAiB,GACxC,kBAAyB,OAAAA,EAAAmD,KAAAqC,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,KACxB,CAEDs5B,IAAA,SAAA57B,GACA,OAAA45H,EAAAzrE,IAAA73C,EAAAvT,KARA,OAQA/C,EAAA,IAAAA,EAAA,EAAAA,OAEC45H,iCCZD,IAcAC,EAdA94H,EAAapC,EAAQ,GACrB0nD,EAAW1nD,EAAQ,GAARA,CAA0B,GACrCuC,EAAevC,EAAQ,IACvB+qD,EAAW/qD,EAAQ,IACnBy6C,EAAaz6C,EAAQ,KACrBm7H,EAAWn7H,EAAQ,KACnB6E,EAAe7E,EAAQ,GACvB2X,EAAe3X,EAAQ,IACvBo7H,EAAsBp7H,EAAQ,IAC9Bq7H,GAAAj5H,EAAAk5H,eAAA,kBAAAl5H,EAEA8oD,EAAAH,EAAAG,QACAP,EAAA7pD,OAAA6pD,aACA+qB,EAAAylD,EAAAtlD,QAGA/6D,EAAA,SAAA7Z,GACA,kBACA,OAAAA,EAAAmD,KAAAqC,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,KAIA43D,EAAA,CAEAt6D,IAAA,SAAAU,GACA,GAAAkD,EAAAlD,GAAA,CACA,IAAAuC,EAAAgnD,EAAAvpD,GACA,WAAAuC,EAAAwxE,EAAA/9D,EAAAvT,KAjBA,YAiBAnD,IAAAU,GACAuC,IAAAE,KAAAomE,SAAA7mE,IAIAiH,IAAA,SAAAjJ,EAAAN,GACA,OAAA85H,EAAA3rE,IAAA73C,EAAAvT,KAvBA,WAuBAzC,EAAAN,KAKAk6H,EAAAp7H,EAAAD,QAAgCF,EAAQ,GAARA,CA5BhC,UA4BuD8a,EAAAygD,EAAA4/D,GAAA,MAGvDC,GAAAC,IAEA5gF,GADAygF,EAAAC,EAAAj/D,eAAAphD,EAhCA,YAiCA9Y,UAAAu5D,GACAxQ,EAAAC,MAAA,EACAtD,EAAA,sCAAA/lD,GACA,IAAAgX,EAAA4iH,EAAAv5H,UACAwN,EAAAmJ,EAAAhX,GACAY,EAAAoW,EAAAhX,EAAA,SAAA4D,EAAAkM,GAEA,GAAA5M,EAAAU,KAAAolD,EAAAplD,GAAA,CACAnB,KAAAkxE,KAAAlxE,KAAAkxE,GAAA,IAAA4lD,GACA,IAAAnoH,EAAA3O,KAAAkxE,GAAA3zE,GAAA4D,EAAAkM,GACA,aAAA9P,EAAAyC,KAAA2O,EAEO,OAAAvD,EAAAjP,KAAA6D,KAAAmB,EAAAkM,sCCvDP,IAAA0pH,EAAWn7H,EAAQ,KACnB2X,EAAe3X,EAAQ,IAIvBA,EAAQ,GAARA,CAHA,UAGuB,SAAAiB,GACvB,kBAA6B,OAAAA,EAAAmD,KAAAqC,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,KAC5B,CAEDs5B,IAAA,SAAA57B,GACA,OAAA85H,EAAA3rE,IAAA73C,EAAAvT,KARA,WAQA/C,GAAA,KAEC85H,GAAA,oCCZD,IAAA14H,EAAczC,EAAQ,GACtBkT,EAAalT,EAAQ,IACrBsX,EAAatX,EAAQ,KACrBwF,EAAexF,EAAQ,GACvBwT,EAAsBxT,EAAQ,IAC9BkS,EAAelS,EAAQ,GACvB6E,EAAe7E,EAAQ,GACvB4U,EAAkB5U,EAAQ,GAAW4U,YACrCZ,EAAyBhU,EAAQ,IACjC2U,EAAA2C,EAAA1C,YACAC,EAAAyC,EAAAxC,SACA0mH,EAAAtoH,EAAAoI,KAAA1G,EAAAi3G,OACAzxG,EAAAzF,EAAA3S,UAAAmE,MACA8Q,EAAA/D,EAAA+D,KAGAxU,IAAAS,EAAAT,EAAAqB,EAAArB,EAAAO,GAAA4R,IAAAD,GAAA,CAA6EC,YAAAD,IAE7ElS,IAAAW,EAAAX,EAAAO,GAAAkQ,EAAA4D,OAJA,cAIA,CAEA+0G,OAAA,SAAA/mH,GACA,OAAA02H,KAAA12H,IAAAD,EAAAC,IAAAmS,KAAAnS,KAIArC,IAAAa,EAAAb,EAAAoB,EAAApB,EAAAO,EAA4ChD,EAAQ,EAARA,CAAkB,WAC9D,WAAA2U,EAAA,GAAAxO,MAAA,OAAAxC,GAAAmY,aAZA,cAaC,CAED3V,MAAA,SAAA0S,EAAAmB,GACA,QAAArW,IAAAyW,QAAAzW,IAAAqW,EAAA,OAAAI,EAAA7Z,KAAAiF,EAAApB,MAAAyU,GAQA,IAPA,IAAAvN,EAAA9F,EAAApB,MAAA0X,WACA8rC,EAAAp0C,EAAAqF,EAAAvN,GACAmwH,EAAAjoH,OAAA7P,IAAAqW,EAAA1O,EAAA0O,EAAA1O,GACAyH,EAAA,IAAAiB,EAAA5P,KAAAuQ,GAAA,CAAAzC,EAAAupH,EAAA7zE,IACA8zE,EAAA,IAAA7mH,EAAAzQ,MACAu3H,EAAA,IAAA9mH,EAAA9B,GACA9G,EAAA,EACA27C,EAAA6zE,GACAE,EAAA7tD,SAAA7hE,IAAAyvH,EAAA1tD,SAAApmB,MACK,OAAA70C,KAIL/S,EAAQ,GAARA,CA9BA,gCCfA,IAAAyC,EAAczC,EAAQ,GACtByC,IAAAS,EAAAT,EAAAqB,EAAArB,EAAAO,GAA6ChD,EAAQ,IAAUsb,IAAA,CAC/DxG,SAAY9U,EAAQ,KAAiB8U,4BCFrC9U,EAAQ,GAARA,CAAwB,kBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,mBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,mBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,MAEC,oBCJDxH,EAAQ,GAARA,CAAwB,mBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,oBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,mBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,oBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,qBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCFAxH,EAAQ,GAARA,CAAwB,qBAAAwI,GACxB,gBAAAtE,EAAAgW,EAAA1S,GACA,OAAAgB,EAAApE,KAAAF,EAAAgW,EAAA1S,uBCDA,IAAA/E,EAAczC,EAAQ,GACtBuR,EAAgBvR,EAAQ,IACxBwF,EAAexF,EAAQ,GACvB47H,GAAc57H,EAAQ,GAAW4H,SAAA,IAAepB,MAChDq1H,EAAAj4H,SAAA4C,MAEA/D,IAAAW,EAAAX,EAAAO,GAAiChD,EAAQ,EAARA,CAAkB,WACnD47H,EAAA,gBACC,WACDp1H,MAAA,SAAA/C,EAAAq4H,EAAAC,GACA,IAAA1qE,EAAA9/C,EAAA9N,GACAu4H,EAAAx2H,EAAAu2H,GACA,OAAAH,IAAAvqE,EAAAyqE,EAAAE,GAAAH,EAAAt7H,KAAA8wD,EAAAyqE,EAAAE,uBCZA,IAAAv5H,EAAczC,EAAQ,GACtB0B,EAAa1B,EAAQ,IACrBuR,EAAgBvR,EAAQ,IACxBwF,EAAexF,EAAQ,GACvB6E,EAAe7E,EAAQ,GACvBmN,EAAYnN,EAAQ,GACpB4B,EAAW5B,EAAQ,KACnBi8H,GAAkBj8H,EAAQ,GAAW4H,SAAA,IAAeqpE,UAIpDirD,EAAA/uH,EAAA,WACA,SAAAnK,KACA,QAAAi5H,EAAA,aAAiD,GAAAj5H,kBAEjDm5H,GAAAhvH,EAAA,WACA8uH,EAAA,gBAGAx5H,IAAAW,EAAAX,EAAAO,GAAAk5H,GAAAC,GAAA,WACAlrD,UAAA,SAAAmrD,EAAAr0H,GACAwJ,EAAA6qH,GACA52H,EAAAuC,GACA,IAAAs0H,EAAA51H,UAAAe,OAAA,EAAA40H,EAAA7qH,EAAA9K,UAAA,IACA,GAAA01H,IAAAD,EAAA,OAAAD,EAAAG,EAAAr0H,EAAAs0H,GACA,GAAAD,GAAAC,EAAA,CAEA,OAAAt0H,EAAAP,QACA,kBAAA40H,EACA,kBAAAA,EAAAr0H,EAAA,IACA,kBAAAq0H,EAAAr0H,EAAA,GAAAA,EAAA,IACA,kBAAAq0H,EAAAr0H,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA,kBAAAq0H,EAAAr0H,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAGA,IAAAu0H,EAAA,OAEA,OADAA,EAAA9yH,KAAAhD,MAAA81H,EAAAv0H,GACA,IAAAnG,EAAA4E,MAAA41H,EAAAE,IAGA,IAAA3jH,EAAA0jH,EAAAr6H,UACA45D,EAAAl6D,EAAAmD,EAAA8T,KAAA7X,OAAAkB,WACA+Q,EAAAnP,SAAA4C,MAAAjG,KAAA67H,EAAAxgE,EAAA7zD,GACA,OAAAlD,EAAAkO,KAAA6oD,sBC3CA,IAAAj2D,EAAS3F,EAAQ,IACjByC,EAAczC,EAAQ,GACtBwF,EAAexF,EAAQ,GACvB0F,EAAkB1F,EAAQ,IAG1ByC,IAAAW,EAAAX,EAAAO,EAAgChD,EAAQ,EAARA,CAAkB,WAElD4H,QAAA7G,eAAA4E,EAAAC,EAAA,GAAgC,GAAMvE,MAAA,IAAW,GAAOA,MAAA,MACvD,WACDN,eAAA,SAAA0C,EAAA84H,EAAAC,GACAh3H,EAAA/B,GACA84H,EAAA72H,EAAA62H,GAAA,GACA/2H,EAAAg3H,GACA,IAEA,OADA72H,EAAAC,EAAAnC,EAAA84H,EAAAC,IACA,EACK,MAAA53H,GACL,8BClBA,IAAAnC,EAAczC,EAAQ,GACtB8R,EAAW9R,EAAQ,IAAgB4F,EACnCJ,EAAexF,EAAQ,GAEvByC,IAAAW,EAAA,WACAq5H,eAAA,SAAAh5H,EAAA84H,GACA,IAAA3hH,EAAA9I,EAAAtM,EAAA/B,GAAA84H,GACA,QAAA3hH,MAAAtL,sBAAA7L,EAAA84H,oCCNA,IAAA95H,EAAczC,EAAQ,GACtBwF,EAAexF,EAAQ,GACvB08H,EAAA,SAAAnyD,GACAnmE,KAAAirD,GAAA7pD,EAAA+kE,GACAnmE,KAAAomE,GAAA,EACA,IACA7oE,EADA2K,EAAAlI,KAAAqmE,GAAA,GAEA,IAAA9oE,KAAA4oE,EAAAj+D,EAAA9C,KAAA7H,IAEA3B,EAAQ,IAARA,CAAwB08H,EAAA,oBACxB,IAEA/6H,EADA2K,EADAlI,KACAqmE,GAEA,GACA,GAJArmE,KAIAomE,IAAAl+D,EAAA9E,OAAA,OAAwCnG,WAAAsC,EAAAoL,MAAA,YACrCpN,EAAA2K,EALHlI,KAKGomE,SALHpmE,KAKGirD,KACH,OAAUhuD,MAAAM,EAAAoN,MAAA,KAGVtM,IAAAW,EAAA,WACAu5H,UAAA,SAAAl5H,GACA,WAAAi5H,EAAAj5H,uBCtBA,IAAAqO,EAAW9R,EAAQ,IACnB+K,EAAqB/K,EAAQ,IAC7ByM,EAAUzM,EAAQ,IAClByC,EAAczC,EAAQ,GACtB6E,EAAe7E,EAAQ,GACvBwF,EAAexF,EAAQ,GAcvByC,IAAAW,EAAA,WAA+BnC,IAZ/B,SAAAA,EAAAwC,EAAA84H,GACA,IACA3hH,EAAAjC,EADA7Q,EAAArB,UAAAe,OAAA,EAAA/D,EAAAgD,UAAA,GAEA,OAAAjB,EAAA/B,KAAAqE,EAAArE,EAAA84H,IACA3hH,EAAA9I,EAAAlM,EAAAnC,EAAA84H,IAAA9vH,EAAAmO,EAAA,SACAA,EAAAvZ,WACAsC,IAAAiX,EAAA3Z,IACA2Z,EAAA3Z,IAAAV,KAAAuH,QACAnE,EACAkB,EAAA8T,EAAA5N,EAAAtH,IAAAxC,EAAA0X,EAAA4jH,EAAAz0H,QAAA,sBChBA,IAAAgK,EAAW9R,EAAQ,IACnByC,EAAczC,EAAQ,GACtBwF,EAAexF,EAAQ,GAEvByC,IAAAW,EAAA,WACA2O,yBAAA,SAAAtO,EAAA84H,GACA,OAAAzqH,EAAAlM,EAAAJ,EAAA/B,GAAA84H,uBCNA,IAAA95H,EAAczC,EAAQ,GACtB48H,EAAe58H,EAAQ,IACvBwF,EAAexF,EAAQ,GAEvByC,IAAAW,EAAA,WACA2H,eAAA,SAAAtH,GACA,OAAAm5H,EAAAp3H,EAAA/B,wBCNA,IAAAhB,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,WACAqJ,IAAA,SAAAhJ,EAAA84H,GACA,OAAAA,KAAA94H,sBCJA,IAAAhB,EAAczC,EAAQ,GACtBwF,EAAexF,EAAQ,GACvB2xH,EAAA7wH,OAAA6pD,aAEAloD,IAAAW,EAAA,WACAunD,aAAA,SAAAlnD,GAEA,OADA+B,EAAA/B,IACAkuH,KAAAluH,uBCPA,IAAAhB,EAAczC,EAAQ,GAEtByC,IAAAW,EAAA,WAA+B4E,QAAUhI,EAAQ,wBCFjD,IAAAyC,EAAczC,EAAQ,GACtBwF,EAAexF,EAAQ,GACvBwxH,EAAA1wH,OAAA+pD,kBAEApoD,IAAAW,EAAA,WACAynD,kBAAA,SAAApnD,GACA+B,EAAA/B,GACA,IAEA,OADA+tH,KAAA/tH,IACA,EACK,MAAAmB,GACL,8BCXA,IAAAe,EAAS3F,EAAQ,IACjB8R,EAAW9R,EAAQ,IACnB+K,EAAqB/K,EAAQ,IAC7ByM,EAAUzM,EAAQ,IAClByC,EAAczC,EAAQ,GACtB8N,EAAiB9N,EAAQ,IACzBwF,EAAexF,EAAQ,GACvB6E,EAAe7E,EAAQ,GAwBvByC,IAAAW,EAAA,WAA+BwH,IAtB/B,SAAAA,EAAAnH,EAAA84H,EAAAM,GACA,IAEAC,EAAAnkH,EAFA7Q,EAAArB,UAAAe,OAAA,EAAA/D,EAAAgD,UAAA,GACAs2H,EAAAjrH,EAAAlM,EAAAJ,EAAA/B,GAAA84H,GAEA,IAAAQ,EAAA,CACA,GAAAl4H,EAAA8T,EAAA5N,EAAAtH,IACA,OAAAmH,EAAA+N,EAAA4jH,EAAAM,EAAA/0H,GAEAi1H,EAAAjvH,EAAA,GAEA,GAAArB,EAAAswH,EAAA,UACA,QAAAA,EAAA1tH,WAAAxK,EAAAiD,GAAA,SACA,GAAAg1H,EAAAhrH,EAAAlM,EAAAkC,EAAAy0H,GAAA,CACA,GAAAO,EAAA77H,KAAA67H,EAAAlyH,MAAA,IAAAkyH,EAAAztH,SAAA,SACAytH,EAAAz7H,MAAAw7H,EACAl3H,EAAAC,EAAAkC,EAAAy0H,EAAAO,QACKn3H,EAAAC,EAAAkC,EAAAy0H,EAAAzuH,EAAA,EAAA+uH,IACL,SAEA,YAAAl5H,IAAAo5H,EAAAnyH,MAAAmyH,EAAAnyH,IAAArK,KAAAuH,EAAA+0H,IAAA,uBC5BA,IAAAp6H,EAAczC,EAAQ,GACtBg9H,EAAeh9H,EAAQ,IAEvBg9H,GAAAv6H,IAAAW,EAAA,WACA+kE,eAAA,SAAA1kE,EAAAkV,GACAqkH,EAAAp0D,MAAAnlE,EAAAkV,GACA,IAEA,OADAqkH,EAAApyH,IAAAnH,EAAAkV,IACA,EACK,MAAA/T,GACL,8BCXA5E,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqBoG,MAAAmT,uCCC9C,IAAA9W,EAAczC,EAAQ,GACtBi9H,EAAgBj9H,EAAQ,GAARA,EAA2B,GAE3CyC,IAAAa,EAAA,SACAiW,SAAA,SAAA8/C,GACA,OAAA4jE,EAAA74H,KAAAi1D,EAAA5yD,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,MAIA3D,EAAQ,GAARA,CAA+B,6BCX/BA,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqBoG,MAAA84C,sCCC9C,IAAAz8C,EAAczC,EAAQ,GACtBk9H,EAAuBl9H,EAAQ,KAC/BiS,EAAejS,EAAQ,IACvBkS,EAAelS,EAAQ,GACvBuR,EAAgBvR,EAAQ,IACxBm9H,EAAyBn9H,EAAQ,KAEjCyC,IAAAa,EAAA,SACA47C,QAAA,SAAArsC,GACA,IACAuqH,EAAAxsD,EADA/qE,EAAAoM,EAAA7N,MAMA,OAJAmN,EAAAsB,GACAuqH,EAAAlrH,EAAArM,EAAA2B,QACAopE,EAAAusD,EAAAt3H,EAAA,GACAq3H,EAAAtsD,EAAA/qE,IAAAu3H,EAAA,IAAAvqH,EAAApM,UAAA,IACAmqE,KAIA5wE,EAAQ,GAARA,CAA+B,yCCnB/B,IAAAy7B,EAAcz7B,EAAQ,IACtB6E,EAAe7E,EAAQ,GACvBkS,EAAelS,EAAQ,GACvBwC,EAAUxC,EAAQ,IAClBq9H,EAA2Br9H,EAAQ,EAARA,CAAgB,sBAgC3CG,EAAAD,QA9BA,SAAAg9H,EAAAz5H,EAAAskE,EAAAplE,EAAAy6H,EAAAvkH,EAAAgqB,EAAAkyE,EAAA9tF,GAMA,IALA,IAGAhX,EAAAqtH,EAHAC,EAAA1kH,EACA2kH,EAAA,EACAC,IAAA1oB,GAAAvyG,EAAAuyG,EAAA9tF,EAAA,GAGAu2G,EAAAJ,GAAA,CACA,GAAAI,KAAA76H,EAAA,CASA,GARAsN,EAAAwtH,IAAA96H,EAAA66H,KAAAz1D,GAAAplE,EAAA66H,GAEAF,GAAA,EACAz4H,EAAAoL,KAEAqtH,OAAA35H,KADA25H,EAAArtH,EAAAotH,MACAC,EAAA7hG,EAAAxrB,IAGAqtH,GAAAz6F,EAAA,EACA06F,EAAAL,EAAAz5H,EAAAskE,EAAA93D,EAAAiC,EAAAjC,EAAAzI,QAAA+1H,EAAA16F,EAAA,SACO,CACP,GAAA06F,GAAA,uBAAAx4H,YACAtB,EAAA85H,GAAAttH,EAGAstH,IAEAC,IAEA,OAAAD,oBCnCAv9H,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqB2J,OAAAs7C,uCCC9C,IAAAxiD,EAAczC,EAAQ,GACtB09H,EAAW19H,EAAQ,KACnBm7D,EAAgBn7D,EAAQ,IAGxB29H,EAAA,mDAAA/vH,KAAAutD,GAEA14D,IAAAa,EAAAb,EAAAO,EAAA26H,EAAA,UACA14E,SAAA,SAAAxgB,GACA,OAAAi5F,EAAAt5H,KAAAqgC,EAAAh+B,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,GAAA,uBCXA3D,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqB2J,OAAAq7C,qCCC9C,IAAAviD,EAAczC,EAAQ,GACtB09H,EAAW19H,EAAQ,KACnBm7D,EAAgBn7D,EAAQ,IAGxB29H,EAAA,mDAAA/vH,KAAAutD,GAEA14D,IAAAa,EAAAb,EAAAO,EAAA26H,EAAA,UACA34E,OAAA,SAAAvgB,GACA,OAAAi5F,EAAAt5H,KAAAqgC,EAAAh+B,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,GAAA,uBCXA3D,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqB2J,OAAAgzD,uCCC9C38D,EAAQ,GAARA,CAAwB,oBAAAsxE,GACxB,kBACA,OAAAA,EAAAltE,KAAA,KAEC,8BCNDpE,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqB2J,OAAAi0H,wCCC9C59H,EAAQ,GAARA,CAAwB,qBAAAsxE,GACxB,kBACA,OAAAA,EAAAltE,KAAA,KAEC,4BCNDpE,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,IAAwB4F,EAAA,kCCDjD5F,EAAQ,IAARA,CAAuB,kCCAvBA,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqBc,OAAAqiE,2CCA9C,IAAA1gE,EAAczC,EAAQ,GACtBgI,EAAchI,EAAQ,KACtB6R,EAAgB7R,EAAQ,IACxB8R,EAAW9R,EAAQ,IACnB82H,EAAqB92H,EAAQ,IAE7ByC,IAAAW,EAAA,UACA+/D,0BAAA,SAAArhE,GAOA,IANA,IAKAH,EAAAiZ,EALA/U,EAAAgM,EAAA/P,GACA+7H,EAAA/rH,EAAAlM,EACA0G,EAAAtE,EAAAnC,GACAkN,EAAA,GACA3S,EAAA,EAEAkM,EAAA9E,OAAApH,QAEAuD,KADAiX,EAAAijH,EAAAh4H,EAAAlE,EAAA2K,EAAAlM,QACA02H,EAAA/jH,EAAApR,EAAAiZ,GAEA,OAAA7H,sBCnBA/S,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqBc,OAAA0U,wBCA9C,IAAA/S,EAAczC,EAAQ,GACtB89H,EAAc99H,EAAQ,IAARA,EAA4B,GAE1CyC,IAAAW,EAAA,UACAoS,OAAA,SAAA1Q,GACA,OAAAg5H,EAAAh5H,uBCNA9E,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqBc,OAAA6U,yBCA9C,IAAAlT,EAAczC,EAAQ,GACtB+pE,EAAe/pE,EAAQ,IAARA,EAA4B,GAE3CyC,IAAAW,EAAA,UACAuS,QAAA,SAAA7Q,GACA,OAAAilE,EAAAjlE,oCCLA9E,EAAQ,KACRA,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,GAAqBu6B,QAAA,sCCD9C,IAAA93B,EAAczC,EAAQ,GACtBqC,EAAWrC,EAAQ,GACnBoC,EAAapC,EAAQ,GACrBgU,EAAyBhU,EAAQ,IACjCgoE,EAAqBhoE,EAAQ,KAE7ByC,IAAAa,EAAAb,EAAAsB,EAAA,WAA2Cg6H,QAAA,SAAAC,GAC3C,IAAApmH,EAAA5D,EAAA5P,KAAA/B,EAAAk4B,SAAAn4B,EAAAm4B,SACAttB,EAAA,mBAAA+wH,EACA,OAAA55H,KAAAivD,KACApmD,EAAA,SAAA6xD,GACA,OAAAkJ,EAAApwD,EAAAomH,KAAA3qE,KAAA,WAA8D,OAAAyL,KACzDk/D,EACL/wH,EAAA,SAAArI,GACA,OAAAojE,EAAApwD,EAAAomH,KAAA3qE,KAAA,WAA8D,MAAAzuD,KACzDo5H,uBCjBLh+H,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,oBCFzB,IAAAoC,EAAapC,EAAQ,GACrByC,EAAczC,EAAQ,GACtBm7D,EAAgBn7D,EAAQ,IACxBmG,EAAA,GAAAA,MACA83H,EAAA,WAAArwH,KAAAutD,GACAnZ,EAAA,SAAAp3C,GACA,gBAAA4G,EAAA5K,GACA,IAAAs3H,EAAAz3H,UAAAe,OAAA,EACAO,IAAAm2H,GAAA/3H,EAAA5F,KAAAkG,UAAA,GACA,OAAAmE,EAAAszH,EAAA,YAEA,mBAAA1sH,IAAA5N,SAAA4N,IAAAhL,MAAApC,KAAA2D,IACKyJ,EAAA5K,KAGLnE,IAAAS,EAAAT,EAAAe,EAAAf,EAAAO,EAAAi7H,EAAA,CACA3vH,WAAA0zC,EAAA5/C,EAAAkM,YACAm0D,YAAAzgB,EAAA5/C,EAAAqgE,gCClBA,IAAAhgE,EAAczC,EAAQ,GACtBm+H,EAAYn+H,EAAQ,KACpByC,IAAAS,EAAAT,EAAAe,EAAA,CACA8M,aAAA6tH,EAAAvzH,IACA4gE,eAAA2yD,EAAAxhG,yBCyCA,IA7CA,IAAAniB,EAAiBxa,EAAQ,KACzBuwE,EAAcvwE,EAAQ,IACtBuC,EAAevC,EAAQ,IACvBoC,EAAapC,EAAQ,GACrBsC,EAAWtC,EAAQ,IACnBkU,EAAgBlU,EAAQ,IACxB6T,EAAU7T,EAAQ,GAClByW,EAAA5C,EAAA,YACAuqH,EAAAvqH,EAAA,eACAwqH,EAAAnqH,EAAA9N,MAEAk4H,EAAA,CACAC,aAAA,EACAC,qBAAA,EACAC,cAAA,EACAC,gBAAA,EACAC,aAAA,EACAC,eAAA,EACAC,cAAA,EACAC,sBAAA,EACAC,UAAA,EACAC,mBAAA,EACAC,gBAAA,EACAC,iBAAA,EACAC,mBAAA,EACAC,WAAA,EACAC,eAAA,EACAC,cAAA,EACAC,UAAA,EACAC,kBAAA,EACAC,QAAA,EACAC,aAAA,EACAC,eAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,cAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,kBAAA,EACAC,gBAAA,EACAC,kBAAA,EACAC,eAAA,EACAC,WAAA,GAGAC,EAAA/vD,EAAA+tD,GAAAl+H,EAAA,EAAoDA,EAAAkgI,EAAA94H,OAAwBpH,IAAA,CAC5E,IAIAuB,EAJAgM,EAAA2yH,EAAAlgI,GACAmgI,EAAAjC,EAAA3wH,GACA6yH,EAAAp+H,EAAAuL,GACAgL,EAAA6nH,KAAAx+H,UAEA,GAAA2W,IACAA,EAAAlC,IAAAnU,EAAAqW,EAAAlC,EAAA4nH,GACA1lH,EAAAylH,IAAA97H,EAAAqW,EAAAylH,EAAAzwH,GACAuG,EAAAvG,GAAA0wH,EACAkC,GAAA,IAAA5+H,KAAA6Y,EAAA7B,EAAAhX,IAAAY,EAAAoW,EAAAhX,EAAA6Y,EAAA7Y,IAAA,qBChDA,IAAA8+H,EAAA,SAAAvgI,GACA,aAEA,IAEAyD,EAFA+8H,EAAA5/H,OAAAkB,UACAypH,EAAAiV,EAAAz+H,eAEAouE,EAAA,mBAAAlvE,cAAA,GACAw/H,EAAAtwD,EAAAxhE,UAAA,aACA+xH,EAAAvwD,EAAAwwD,eAAA,kBACAC,EAAAzwD,EAAAjvE,aAAA,gBAEA,SAAA4gD,EAAA++E,EAAAC,EAAAv8H,EAAAw8H,GAEA,IAAAC,EAAAF,KAAAh/H,qBAAAm/H,EAAAH,EAAAG,EACAC,EAAAtgI,OAAAY,OAAAw/H,EAAAl/H,WACAoJ,EAAA,IAAAi2H,EAAAJ,GAAA,IAMA,OAFAG,EAAAE,QAkMA,SAAAP,EAAAt8H,EAAA2G,GACA,IAAArB,EAAAw3H,EAEA,gBAAA/xH,EAAA3E,GACA,GAAAd,IAAAy3H,EACA,UAAA36H,MAAA,gCAGA,GAAAkD,IAAA03H,EAAA,CACA,aAAAjyH,EACA,MAAA3E,EAKA,OAAA62H,IAMA,IAHAt2H,EAAAoE,SACApE,EAAAP,QAEA,CACA,IAAA82H,EAAAv2H,EAAAu2H,SACA,GAAAA,EAAA,CACA,IAAAC,EAAAC,EAAAF,EAAAv2H,GACA,GAAAw2H,EAAA,CACA,GAAAA,IAAAE,EAAA,SACA,OAAAF,GAIA,YAAAx2H,EAAAoE,OAGApE,EAAA6wE,KAAA7wE,EAAA22H,MAAA32H,EAAAP,SAES,aAAAO,EAAAoE,OAAA,CACT,GAAAzF,IAAAw3H,EAEA,MADAx3H,EAAA03H,EACAr2H,EAAAP,IAGAO,EAAA42H,kBAAA52H,EAAAP,SAES,WAAAO,EAAAoE,QACTpE,EAAA+wE,OAAA,SAAA/wE,EAAAP,KAGAd,EAAAy3H,EAEA,IAAAS,EAAAC,EAAAnB,EAAAt8H,EAAA2G,GACA,cAAA62H,EAAAv/H,KAAA,CAOA,GAJAqH,EAAAqB,EAAA2D,KACA0yH,EACAU,EAEAF,EAAAp3H,MAAAi3H,EACA,SAGA,OACAzgI,MAAA4gI,EAAAp3H,IACAkE,KAAA3D,EAAA2D,MAGS,UAAAkzH,EAAAv/H,OACTqH,EAAA03H,EAGAr2H,EAAAoE,OAAA,QACApE,EAAAP,IAAAo3H,EAAAp3H,OA1QAu3H,CAAArB,EAAAt8H,EAAA2G,GAEAg2H,EAcA,SAAAc,EAAA1wH,EAAA8iD,EAAAzpD,GACA,IACA,OAAcnI,KAAA,SAAAmI,IAAA2G,EAAAjR,KAAA+zD,EAAAzpD,IACT,MAAA9D,GACL,OAAcrE,KAAA,QAAAmI,IAAA9D,IAhBd7G,EAAA8hD,OAoBA,IAAAu/E,EAAA,iBACAY,EAAA,iBACAX,EAAA,YACAC,EAAA,YAIAK,EAAA,GAMA,SAAAX,KACA,SAAAkB,KACA,SAAAC,KAIA,IAAA94D,EAAA,GACAA,EAAAm3D,GAAA,WACA,OAAAv8H,MAGA,IAAAw4H,EAAA97H,OAAAiK,eACAw3H,EAAA3F,OAAApnH,EAAA,MACA+sH,GACAA,IAAA7B,GACAjV,EAAAlrH,KAAAgiI,EAAA5B,KAGAn3D,EAAA+4D,GAGA,IAAAC,EAAAF,EAAAtgI,UACAm/H,EAAAn/H,UAAAlB,OAAAY,OAAA8nE,GAQA,SAAAi5D,EAAAzgI,GACA,0BAAAoX,QAAA,SAAA5J,GACAxN,EAAAwN,GAAA,SAAA3E,GACA,OAAAzG,KAAAk9H,QAAA9xH,EAAA3E,MAoCA,SAAA63H,EAAAtB,GAgCA,IAAAuB,EAgCAv+H,KAAAk9H,QA9BA,SAAA9xH,EAAA3E,GACA,SAAA+3H,IACA,WAAAroG,QAAA,SAAA0Z,EAAAoM,IAnCA,SAAAjF,EAAA5rC,EAAA3E,EAAAopC,EAAAoM,GACA,IAAA4hF,EAAAC,EAAAd,EAAA5xH,GAAA4xH,EAAAv2H,GACA,aAAAo3H,EAAAv/H,KAEO,CACP,IAAAqQ,EAAAkvH,EAAAp3H,IACAxJ,EAAA0R,EAAA1R,MACA,OAAAA,GACA,iBAAAA,GACAoqH,EAAAlrH,KAAAc,EAAA,WACAk5B,QAAA0Z,QAAA5yC,EAAAwhI,SAAAxvE,KAAA,SAAAhyD,GACA+5C,EAAA,OAAA/5C,EAAA4yC,EAAAoM,IACW,SAAAt5C,GACXq0C,EAAA,QAAAr0C,EAAAktC,EAAAoM,KAIA9lB,QAAA0Z,QAAA5yC,GAAAgyD,KAAA,SAAAyvE,GAIA/vH,EAAA1R,MAAAyhI,EACA7uF,EAAAlhC,IACS,SAAA7L,GAGT,OAAAk0C,EAAA,QAAAl0C,EAAA+sC,EAAAoM,KAvBAA,EAAA4hF,EAAAp3H,KAiCAuwC,CAAA5rC,EAAA3E,EAAAopC,EAAAoM,KAIA,OAAAsiF,EAaAA,IAAAtvE,KACAuvE,EAGAA,GACAA,KA+GA,SAAAf,EAAAF,EAAAv2H,GACA,IAAAoE,EAAAmyH,EAAA9yH,SAAAzD,EAAAoE,QACA,GAAAA,IAAA7L,EAAA,CAKA,GAFAyH,EAAAu2H,SAAA,KAEA,UAAAv2H,EAAAoE,OAAA,CAEA,GAAAmyH,EAAA9yH,SAAA,SAGAzD,EAAAoE,OAAA,SACApE,EAAAP,IAAAlH,EACAk+H,EAAAF,EAAAv2H,GAEA,UAAAA,EAAAoE,QAGA,OAAAsyH,EAIA12H,EAAAoE,OAAA,QACApE,EAAAP,IAAA,IAAA9F,UACA,kDAGA,OAAA+8H,EAGA,IAAAG,EAAAC,EAAA1yH,EAAAmyH,EAAA9yH,SAAAzD,EAAAP,KAEA,aAAAo3H,EAAAv/H,KAIA,OAHA0I,EAAAoE,OAAA,QACApE,EAAAP,IAAAo3H,EAAAp3H,IACAO,EAAAu2H,SAAA,KACAG,EAGA,IAAAnoD,EAAAsoD,EAAAp3H,IAEA,OAAA8uE,EAOAA,EAAA5qE,MAGA3D,EAAAu2H,EAAAoB,YAAAppD,EAAAt4E,MAGA+J,EAAA0D,KAAA6yH,EAAAqB,QAQA,WAAA53H,EAAAoE,SACApE,EAAAoE,OAAA,OACApE,EAAAP,IAAAlH,GAUAyH,EAAAu2H,SAAA,KACAG,GANAnoD,GA3BAvuE,EAAAoE,OAAA,QACApE,EAAAP,IAAA,IAAA9F,UAAA,oCACAqG,EAAAu2H,SAAA,KACAG,GAoDA,SAAAmB,EAAAC,GACA,IAAAtmG,EAAA,CAAiBumG,OAAAD,EAAA,IAEjB,KAAAA,IACAtmG,EAAAwmG,SAAAF,EAAA,IAGA,KAAAA,IACAtmG,EAAAymG,WAAAH,EAAA,GACAtmG,EAAA0mG,SAAAJ,EAAA,IAGA9+H,KAAAm/H,WAAA/5H,KAAAozB,GAGA,SAAA4mG,EAAA5mG,GACA,IAAAqlG,EAAArlG,EAAA6mG,YAAA,GACAxB,EAAAv/H,KAAA,gBACAu/H,EAAAp3H,IACA+xB,EAAA6mG,WAAAxB,EAGA,SAAAZ,EAAAJ,GAIA78H,KAAAm/H,WAAA,EAAwBJ,OAAA,SACxBlC,EAAA7nH,QAAA6pH,EAAA7+H,MACAA,KAAA67D,OAAA,GA8BA,SAAAzqD,EAAAk5B,GACA,GAAAA,EAAA,CACA,IAAAg1F,EAAAh1F,EAAAiyF,GACA,GAAA+C,EACA,OAAAA,EAAAnjI,KAAAmuC,GAGA,sBAAAA,EAAA5/B,KACA,OAAA4/B,EAGA,IAAApmC,MAAAomC,EAAAlnC,QAAA,CACA,IAAApH,GAAA,EAAA0O,EAAA,SAAAA,IACA,OAAA1O,EAAAsuC,EAAAlnC,QACA,GAAAikH,EAAAlrH,KAAAmuC,EAAAtuC,GAGA,OAFA0O,EAAAzN,MAAAqtC,EAAAtuC,GACA0O,EAAAC,MAAA,EACAD,EAOA,OAHAA,EAAAzN,MAAAsC,EACAmL,EAAAC,MAAA,EAEAD,GAGA,OAAAA,UAKA,OAAYA,KAAA4yH,GAIZ,SAAAA,IACA,OAAYrgI,MAAAsC,EAAAoL,MAAA,GA+MZ,OAxmBAszH,EAAArgI,UAAAwgI,EAAApzH,YAAAkzH,EACAA,EAAAlzH,YAAAizH,EACAC,EAAAxB,GACAuB,EAAAsB,YAAA,oBAYAzjI,EAAA0jI,oBAAA,SAAAC,GACA,IAAA50H,EAAA,mBAAA40H,KAAAz0H,YACA,QAAAH,IACAA,IAAAozH,GAGA,uBAAApzH,EAAA00H,aAAA10H,EAAAtO,QAIAT,EAAA07E,KAAA,SAAAioD,GAUA,OATA/iI,OAAAqnE,eACArnE,OAAAqnE,eAAA07D,EAAAvB,IAEAuB,EAAA/6D,UAAAw5D,EACAxB,KAAA+C,IACAA,EAAA/C,GAAA,sBAGA+C,EAAA7hI,UAAAlB,OAAAY,OAAA8gI,GACAqB,GAOA3jI,EAAA4jI,MAAA,SAAAj5H,GACA,OAAYg4H,QAAAh4H,IAsEZ43H,EAAAC,EAAA1gI,WACA0gI,EAAA1gI,UAAA4+H,GAAA,WACA,OAAAx8H,MAEAlE,EAAAwiI,gBAKAxiI,EAAA6jI,MAAA,SAAAhD,EAAAC,EAAAv8H,EAAAw8H,GACA,IAAAhlH,EAAA,IAAAymH,EACA1gF,EAAA++E,EAAAC,EAAAv8H,EAAAw8H,IAGA,OAAA/gI,EAAA0jI,oBAAA5C,GACA/kH,EACAA,EAAAnN,OAAAukD,KAAA,SAAAtgD,GACA,OAAAA,EAAAhE,KAAAgE,EAAA1R,MAAA4a,EAAAnN,UAuKA2zH,EAAAD,GAEAA,EAAA1B,GAAA,YAOA0B,EAAA7B,GAAA,WACA,OAAAv8H,MAGAo+H,EAAAxvH,SAAA,WACA,4BAkCA9S,EAAAoM,KAAA,SAAAxK,GACA,IAAAwK,EAAA,GACA,QAAA3K,KAAAG,EACAwK,EAAA9C,KAAA7H,GAMA,OAJA2K,EAAAoN,UAIA,SAAA5K,IACA,KAAAxC,EAAA9E,QAAA,CACA,IAAA7F,EAAA2K,EAAAJ,MACA,GAAAvK,KAAAG,EAGA,OAFAgN,EAAAzN,MAAAM,EACAmN,EAAAC,MAAA,EACAD,EAQA,OADAA,EAAAC,MAAA,EACAD,IAsCA5O,EAAAsV,SAMA6rH,EAAAr/H,UAAA,CACAoN,YAAAiyH,EAEAphE,MAAA,SAAA+jE,GAcA,GAbA5/H,KAAAihE,KAAA,EACAjhE,KAAA0K,KAAA,EAGA1K,KAAA63E,KAAA73E,KAAA29H,MAAAp+H,EACAS,KAAA2K,MAAA,EACA3K,KAAAu9H,SAAA,KAEAv9H,KAAAoL,OAAA,OACApL,KAAAyG,IAAAlH,EAEAS,KAAAm/H,WAAAnqH,QAAAoqH,IAEAQ,EACA,QAAArjI,KAAAyD,KAEA,MAAAzD,EAAAkuC,OAAA,IACA48E,EAAAlrH,KAAA6D,KAAAzD,KACA2H,OAAA3H,EAAAwF,MAAA,MACA/B,KAAAzD,GAAAgD,IAMA24E,KAAA,WACAl4E,KAAA2K,MAAA,EAEA,IACAk1H,EADA7/H,KAAAm/H,WAAA,GACAE,WACA,aAAAQ,EAAAvhI,KACA,MAAAuhI,EAAAp5H,IAGA,OAAAzG,KAAA8/H,MAGAlC,kBAAA,SAAAmC,GACA,GAAA//H,KAAA2K,KACA,MAAAo1H,EAGA,IAAA/4H,EAAAhH,KACA,SAAAggI,EAAAlnE,EAAAmnE,GAYA,OAXApC,EAAAv/H,KAAA,QACAu/H,EAAAp3H,IAAAs5H,EACA/4H,EAAA0D,KAAAouD,EAEAmnE,IAGAj5H,EAAAoE,OAAA,OACApE,EAAAP,IAAAlH,KAGA0gI,EAGA,QAAAjkI,EAAAgE,KAAAm/H,WAAA/7H,OAAA,EAA8CpH,GAAA,IAAQA,EAAA,CACtD,IAAAw8B,EAAAx4B,KAAAm/H,WAAAnjI,GACA6hI,EAAArlG,EAAA6mG,WAEA,YAAA7mG,EAAAumG,OAIA,OAAAiB,EAAA,OAGA,GAAAxnG,EAAAumG,QAAA/+H,KAAAihE,KAAA,CACA,IAAAi/D,EAAA7Y,EAAAlrH,KAAAq8B,EAAA,YACA2nG,EAAA9Y,EAAAlrH,KAAAq8B,EAAA,cAEA,GAAA0nG,GAAAC,EAAA,CACA,GAAAngI,KAAAihE,KAAAzoC,EAAAwmG,SACA,OAAAgB,EAAAxnG,EAAAwmG,UAAA,GACa,GAAAh/H,KAAAihE,KAAAzoC,EAAAymG,WACb,OAAAe,EAAAxnG,EAAAymG,iBAGW,GAAAiB,GACX,GAAAlgI,KAAAihE,KAAAzoC,EAAAwmG,SACA,OAAAgB,EAAAxnG,EAAAwmG,UAAA,OAGW,KAAAmB,EAMX,UAAA19H,MAAA,0CALA,GAAAzC,KAAAihE,KAAAzoC,EAAAymG,WACA,OAAAe,EAAAxnG,EAAAymG,gBAUAlnD,OAAA,SAAAz5E,EAAAmI,GACA,QAAAzK,EAAAgE,KAAAm/H,WAAA/7H,OAAA,EAA8CpH,GAAA,IAAQA,EAAA,CACtD,IAAAw8B,EAAAx4B,KAAAm/H,WAAAnjI,GACA,GAAAw8B,EAAAumG,QAAA/+H,KAAAihE,MACAomD,EAAAlrH,KAAAq8B,EAAA,eACAx4B,KAAAihE,KAAAzoC,EAAAymG,WAAA,CACA,IAAAmB,EAAA5nG,EACA,OAIA4nG,IACA,UAAA9hI,GACA,aAAAA,IACA8hI,EAAArB,QAAAt4H,GACAA,GAAA25H,EAAAnB,aAGAmB,EAAA,MAGA,IAAAvC,EAAAuC,IAAAf,WAAA,GAIA,OAHAxB,EAAAv/H,OACAu/H,EAAAp3H,MAEA25H,GACApgI,KAAAoL,OAAA,OACApL,KAAA0K,KAAA01H,EAAAnB,WACAvB,GAGA19H,KAAAqpF,SAAAw0C,IAGAx0C,SAAA,SAAAw0C,EAAAqB,GACA,aAAArB,EAAAv/H,KACA,MAAAu/H,EAAAp3H,IAcA,MAXA,UAAAo3H,EAAAv/H,MACA,aAAAu/H,EAAAv/H,KACA0B,KAAA0K,KAAAmzH,EAAAp3H,IACO,WAAAo3H,EAAAv/H,MACP0B,KAAA8/H,KAAA9/H,KAAAyG,IAAAo3H,EAAAp3H,IACAzG,KAAAoL,OAAA,SACApL,KAAA0K,KAAA,OACO,WAAAmzH,EAAAv/H,MAAA4gI,IACPl/H,KAAA0K,KAAAw0H,GAGAxB,GAGAzlD,OAAA,SAAAgnD,GACA,QAAAjjI,EAAAgE,KAAAm/H,WAAA/7H,OAAA,EAA8CpH,GAAA,IAAQA,EAAA,CACtD,IAAAw8B,EAAAx4B,KAAAm/H,WAAAnjI,GACA,GAAAw8B,EAAAymG,eAGA,OAFAj/H,KAAAqpF,SAAA7wD,EAAA6mG,WAAA7mG,EAAA0mG,UACAE,EAAA5mG,GACAklG,IAKArtD,MAAA,SAAA0uD,GACA,QAAA/iI,EAAAgE,KAAAm/H,WAAA/7H,OAAA,EAA8CpH,GAAA,IAAQA,EAAA,CACtD,IAAAw8B,EAAAx4B,KAAAm/H,WAAAnjI,GACA,GAAAw8B,EAAAumG,WAAA,CACA,IAAAlB,EAAArlG,EAAA6mG,WACA,aAAAxB,EAAAv/H,KAAA,CACA,IAAA+hI,EAAAxC,EAAAp3H,IACA24H,EAAA5mG,GAEA,OAAA6nG,GAMA,UAAA59H,MAAA,0BAGA69H,cAAA,SAAAh2F,EAAAq0F,EAAAC,GAaA,OAZA5+H,KAAAu9H,SAAA,CACA9yH,SAAA2G,EAAAk5B,GACAq0F,aACAC,WAGA,SAAA5+H,KAAAoL,SAGApL,KAAAyG,IAAAlH,GAGAm+H,IAQA5hI,EAvrBA,CA8rB4BC,EAAAD,SAG5B,IACAy7E,mBAAA8kD,EACC,MAAAkE,GAUD/gI,SAAA,6BAAAA,CAAA68H,qBCptBAzgI,EAAQ,KACRG,EAAAD,QAAiBF,EAAQ,KAAkBoC,wBCA3C,IAAAK,EAAczC,EAAQ,KAEtByC,IAAAS,EAAA,CAAoBd,OAASpC,EAAQ,wBCHrC,IAAAoC,EAAapC,EAAQ,KACrBqC,EAAWrC,EAAQ,KACnBwC,EAAUxC,EAAQ,KAClBsC,EAAWtC,EAAQ,KACnByM,EAAUzM,EAAQ,KAGlByC,EAAA,SAAAC,EAAA/B,EAAAgC,GACA,IASAhB,EAAAiB,EAAAC,EATAE,EAAAL,EAAAD,EAAAO,EACAC,EAAAP,EAAAD,EAAAS,EACAC,EAAAT,EAAAD,EAAAW,EACAC,EAAAX,EAAAD,EAAAa,EACAC,EAAAb,EAAAD,EAAAe,EACAohI,EAAAliI,EAAAD,EAAAqB,EACA5D,EAAA+C,EAAAZ,IAAA1B,KAAA0B,EAAA1B,GAAA,IACA+C,EAAAxD,EAAA,UACAuD,EAAAR,EAAAb,EAAAe,EAAAf,EAAAzB,IAAAyB,EAAAzB,IAAA,IAAkF,UAGlF,IAAAgB,KADAsB,IAAAN,EAAAhC,GACAgC,GAEAC,GAAAG,GAAAU,QAAAE,IAAAF,EAAA9B,KACA8K,EAAAvM,EAAAyB,KAEAkB,EAAAD,EAAAa,EAAA9B,GAAAgB,EAAAhB,GAEAzB,EAAAyB,GAAAsB,GAAA,mBAAAQ,EAAA9B,GAAAgB,EAAAhB,GAEA4B,GAAAX,EAAAJ,EAAAK,EAAAT,GAEAwiI,GAAAnhI,EAAA9B,IAAAkB,EAAA,SAAA+U,GACA,IAAA5U,EAAA,SAAAuC,EAAAkM,EAAAhR,GACA,GAAA2D,gBAAAwT,EAAA,CACA,OAAAnR,UAAAe,QACA,kBAAAoQ,EACA,kBAAAA,EAAArS,GACA,kBAAAqS,EAAArS,EAAAkM,GACW,WAAAmG,EAAArS,EAAAkM,EAAAhR,GACF,OAAAmX,EAAApR,MAAApC,KAAAqC,YAGT,OADAzD,EAAA,UAAA4U,EAAA,UACA5U,EAXA,CAaKH,GAAAQ,GAAA,mBAAAR,EAAAL,EAAAoB,SAAArD,KAAAsC,KAELQ,KACAnD,EAAA2kI,UAAA3kI,EAAA2kI,QAAA,KAA+CljI,GAAAkB,EAE/CH,EAAAD,EAAAsB,GAAAL,MAAA/B,IAAAW,EAAAoB,EAAA/B,EAAAkB,MAKAJ,EAAAO,EAAA,EACAP,EAAAS,EAAA,EACAT,EAAAW,EAAA,EACAX,EAAAa,EAAA,EACAb,EAAAe,EAAA,GACAf,EAAAqB,EAAA,GACArB,EAAAoB,EAAA,GACApB,EAAAsB,EAAA,IACA5D,EAAAD,QAAAuC,mBC5DA,IAAA8O,EAAgBvR,EAAQ,KACxBG,EAAAD,QAAA,SAAAsR,EAAA1I,EAAAtB,GAEA,GADA+J,EAAAC,QACA7N,IAAAmF,EAAA,OAAA0I,EACA,OAAAhK,GACA,uBAAAjC,GACA,OAAAiM,EAAAjR,KAAAuI,EAAAvD,IAEA,uBAAAA,EAAAkM,GACA,OAAAD,EAAAjR,KAAAuI,EAAAvD,EAAAkM,IAEA,uBAAAlM,EAAAkM,EAAAhR,GACA,OAAA+Q,EAAAjR,KAAAuI,EAAAvD,EAAAkM,EAAAhR,IAGA,kBACA,OAAA+Q,EAAAhL,MAAAsC,EAAArC,4BCjBAtG,EAAAD,QAAA,SAAA4E,GACA,sBAAAA,EAAA,MAAAC,UAAAD,EAAA,uBACA,OAAAA,oBCFA,IAAAa,EAAS3F,EAAQ,KACjB8N,EAAiB9N,EAAQ,KACzBG,EAAAD,QAAiBF,EAAQ,KAAgB,SAAA8B,EAAAH,EAAAN,GACzC,OAAAsE,EAAAC,EAAA9D,EAAAH,EAAAmM,EAAA,EAAAzM,KACC,SAAAS,EAAAH,EAAAN,GAED,OADAS,EAAAH,GAAAN,EACAS,oBCNA,IAAA0D,EAAexF,EAAQ,KACvByF,EAAqBzF,EAAQ,KAC7B0F,EAAkB1F,EAAQ,KAC1B2F,EAAA7E,OAAAC,eAEAb,EAAA0F,EAAY5F,EAAQ,KAAgBc,OAAAC,eAAA,SAAA8E,EAAAvC,EAAAwC,GAIpC,GAHAN,EAAAK,GACAvC,EAAAoC,EAAApC,GAAA,GACAkC,EAAAM,GACAL,EAAA,IACA,OAAAE,EAAAE,EAAAvC,EAAAwC,GACG,MAAAlB,IACH,WAAAkB,GAAA,QAAAA,EAAA,MAAAf,UAAA,4BAEA,MADA,UAAAe,IAAAD,EAAAvC,GAAAwC,EAAAzE,OACAwE,oBCdA,IAAAhB,EAAe7E,EAAQ,KACvBG,EAAAD,QAAA,SAAA4E,GACA,IAAAD,EAAAC,GAAA,MAAAC,UAAAD,EAAA,sBACA,OAAAA,oBCHA3E,EAAAD,SAAkBF,EAAQ,OAAsBA,EAAQ,IAARA,CAAkB,WAClE,OAAuG,GAAvGc,OAAAC,eAA+Bf,EAAQ,IAARA,CAAuB,YAAgBiB,IAAA,WAAmB,YAAcsE,qBCDvG,IAAAV,EAAe7E,EAAQ,KACvBkQ,EAAelQ,EAAQ,KAAWkQ,SAElCw4D,EAAA7jE,EAAAqL,IAAArL,EAAAqL,EAAAM,eACArQ,EAAAD,QAAA,SAAA4E,GACA,OAAA4jE,EAAAx4D,EAAAM,cAAA1L,GAAA,qBCJA,IAAAD,EAAe7E,EAAQ,KAGvBG,EAAAD,QAAA,SAAA4E,EAAA1B,GACA,IAAAyB,EAAAC,GAAA,OAAAA,EACA,IAAA0M,EAAAzE,EACA,GAAA3J,GAAA,mBAAAoO,EAAA1M,EAAAkO,YAAAnO,EAAAkI,EAAAyE,EAAAjR,KAAAuE,IAAA,OAAAiI,EACA,sBAAAyE,EAAA1M,EAAAu2B,WAAAx2B,EAAAkI,EAAAyE,EAAAjR,KAAAuE,IAAA,OAAAiI,EACA,IAAA3J,GAAA,mBAAAoO,EAAA1M,EAAAkO,YAAAnO,EAAAkI,EAAAyE,EAAAjR,KAAAuE,IAAA,OAAAiI,EACA,MAAAhI,UAAA,2DCVA5E,EAAAD,QAAA,SAAAguD,EAAA7sD,GACA,OACAL,aAAA,EAAAktD,GACA5+C,eAAA,EAAA4+C,GACA7+C,WAAA,EAAA6+C,GACA7sD,yBCLA,IAAAY,EAAA,GAAuBA,eACvB9B,EAAAD,QAAA,SAAA4E,EAAAnD,GACA,OAAAM,EAAA1B,KAAAuE,EAAAnD,mjDCMqBmjI,cAKnB,SAAAA,EAAaz5E,GAAU,IAAAC,EAGrB,+FAHqBnnD,CAAAC,KAAA0gI,KACrBx5E,EAAAC,EAAAnnD,KAAAonD,EAAAs5E,GAAAvkI,KAAA6D,KAAMinD,KAEIA,SAAS05E,cAAgBz5E,EAAKD,SAAS05E,YAAYngB,OAC3D,MAAM,IAAI/9G,MAAM,kEAJG,OAOrBykD,EAAK05E,cAAgB15E,EAAKD,SAAS05E,YAAYngB,OAP1Bt5D,0PALoBF,2CAExB,MAAO,mDAmBjBnnD,EAAIytE,GACX,MAAc,cAAPztE,iDAKPG,KAAK4qD,kKAoBL5qD,KAAK6gI,gBAEDzrD,EAAM,uBAIIp1E,KAAK8gI,iBAAjB1rD,gEAKAzzE,EAAQW,KAAK,yGAAbmmD,EAAAC,cACY1oD,KAAK+gI,kBAAjB3rD,wBAKFp1E,KAAKghI,mCACE5rD,yUAOHp1E,KAAKinD,SAASg6E,oCACV,IAAIx+H,MAAM,qEAGbT,MAAMkW,KAAKlY,KAAK+oD,QAAQ33C,UAAUyD,KAAK,SAAAq7C,GAAG,MAAgB,SAAZA,EAAI5xD,6BAC/C,IAAImE,MAAJ,qIAGJy+H,EAAclhI,KAAK+oD,QAAQo4E,SAAS,iBACdnhI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,MAAO,gCAAiC,MAAM,cAAxGqyE,UACevjG,4BACX,IAAIp7B,MAAM,2EACdy+H,GAAeA,GAAeE,EAAcvjG,+CACvCl8B,EAAQQ,IAAI,wGAGjBk/H,EAAW,GACXC,EAAO,EACPC,EAAY,oBAIdD,GAAQ,EACR3/H,EAAQQ,IAAR,8CAAA4B,OAA0Du9H,EAA1D,mCACgBthI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,MAAO,6CAA+CwyE,EAAS,eAAAx9H,OAAkBw9H,GAAc,IAAK,MAAM,cAA1J7yH,SAGJ2yH,EAAWA,EAASt9H,OAAO2K,EAAI8yH,QAAU,IAGzCD,EAAY7yH,EAAI+yH,wFAclB,IAPI5sD,EAAe7yE,MAAMkW,KAAKlY,KAAK+oD,QAAQ33C,UAAUwD,OAAO,SAAAs7C,GAAG,MAAgB,SAAZA,EAAI5xD,OAAoB+iI,EAASxsH,KAAK,SAAAqxC,GAAI,OAAIA,EAAKrmD,IAAMqwD,EAAIrwD,OAAKwV,IAAI,SAAA66C,GAAG,OAAIA,EAAIrwD,KACpJG,KAAK80E,cAAcD,GACfA,EAAazxE,OAAS,GACxBzB,EAAQQ,IAAR,uCAAA4B,OAAmD8wE,EAAazxE,OAAhE,iDAGEs+H,EAAa,gCACjBl3H,EAAqB62H,EAArBtkI,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAASu3H,EAAsBp3H,EAAAtN,OAGzB2kI,EAAQ5hI,KAAKs2E,QAAQqrD,EAAS9hI,IAAI,KACxB+hI,EAAM17E,MAAQy7E,EAASz7E,MACnCw7E,EAAWt8H,KAAKu8H,EAAS9hI,8OAKzBgiI,EAAgB,IAChBC,EAAeJ,eACZI,EAAa1+H,OAAS,4BAGvBgyE,EAAM0sD,EAAa//H,MAAM,EAAG8/H,GAChCC,EAAeA,EAAa//H,MAAM8/H,GAClClgI,EAAQQ,IAAR,yCAAA4B,OAAqDqxE,EAAIhyE,OAAzD,cAAAW,OAA4E+9H,EAAa1+H,OAAzF,8BACqBpD,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,qBAAsB,CAAEqmB,QAAO,WAMhG,IANIq2B,SAGAs2B,EAAa,gCAGjBnyE,EAAc67C,EAAS+1B,OAAvBzkI,OAAA0N,cAAA+kD,GAAAG,EAAAC,EAAAllD,QAAAC,MAAA6kD,GAAA,EAASn4C,EAATs4C,EAAA1yD,MACE8kI,EAAW38H,KAAK,IAAIxF,IAAW,QAASyX,EAAExX,GAAIwX,8OAGhD,iCAAA84C,EAAcs7C,EAASvmD,MAAvBnoD,OAAA0N,cAAAolD,GAAAG,EAAAG,EAAAzlD,QAAAC,MAAAklD,GAAA,EAASruD,EAATwuD,EAAA/yD,MACE8kI,EAAW38H,KAAK,IAAIxF,IAAW,OAAQ4B,EAAE3B,GAAI2B,8OAG/C,kCAAAs9D,EAAc2sC,EAASthG,QAAvBpN,OAAA0N,cAAAi0D,GAAAG,EAAAC,EAAAp0D,QAAAC,MAAA+zD,GAAA,EAASv9D,EAAT09D,EAAA5hE,MACE8kI,EAAW38H,KAAK,IAAIxF,IAAW,SAAUuB,EAAE5E,KAAM4E,6PAGnDnB,KAAK02E,WAAWqrD,4BAKlB/hI,KAAK+oD,QAAQi5E,SAAS,OAAQZ,EAAcvjG,MAC5Cl8B,EAAQQ,IAAR,0DAAA4B,OAAsE29H,EAAWt+H,OAAjF,yBAAAW,OAA+G8wE,EAAazxE,OAA5H,yZAOI6+H,EAAY,EACZrtD,EAAY,iBAGdjzE,EAAQugI,MAAR,4DAAAn+H,OAA0Ek+H,EAA1E,iBACqBjiI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,2BAA4B,CAC3F9F,UAAW,IACXxM,MAAO,IACP6kF,KAAMW,IACL,UAMH,IAVIx2B,SAOAs2B,EAAa,gCAGjBnsD,EAAc61B,EAAS+1B,OAAvBzkI,OAAA0N,cAAA+qE,GAAAG,EAAAC,EAAAlrE,QAAAC,MAAA6qE,GAAA,EAASn+D,EAAsBs+D,EAAA14E,MAC7B23E,EAAUxvE,KAAKiS,EAAExX,IACjBkiI,EAAW38H,KAAK,IAAIxF,IAAW,QAASyX,EAAExX,GAAIwX,8OAIhD,iCAAA++D,EAAcq1B,EAASvmD,MAAvBnoD,OAAA0N,cAAAurE,GAAAG,EAAAC,EAAA1rE,QAAAC,MAAAqrE,GAAA,EAASx0E,EAAqB20E,EAAAl5E,MAC5B23E,EAAUxvE,KAAK5D,EAAE3B,IACjBkiI,EAAW38H,KAAK,IAAIxF,IAAW,OAAQ4B,EAAE3B,GAAI2B,8OAI/C,iCAAA2gI,EAAc12B,EAASthG,QAAvBpN,OAAA0N,cAAA23H,GAAAC,EAAAF,EAAAz3H,QAAAC,MAAAy3H,GAAA,EAASjhI,EAAuBkhI,EAAAplI,MAC9B23E,EAAUxvE,KAAKjE,EAAE5E,MACjBwlI,EAAW38H,KAAK,IAAIxF,IAAW,SAAUuB,EAAE5E,KAAM4E,iPAGnDnB,KAAK02E,WAAWqrD,GAGhBE,GAAa,EAGa,IAAtBF,EAAW3+H,4GAMVwxE,mPAIarsB,+FAEpBJ,EAAAf,EAAAs5E,EAAA9iI,WAAA,iBAAAoC,MAAA7D,KAAA6D,KAAqBuoD,GAEA,cAAjBA,EAAII,6DAKJ25E,EAAU/5E,EAAItD,SAAWsD,EAAItD,QAAQplD,4CAEhC8B,EAAQW,KAAR,gFAA8FimD,cAGnGA,EAAItD,QAAQs9E,YAAcviI,KAAK4gI,eAAiBr4E,EAAItD,QAAQu9E,YAAcxiI,KAAK4gI,+BAEjF5gI,KAAK80E,cAAc,CAACwtD,+BACX/5E,EAAItD,QAAQs9E,YAAcviI,KAAK4gI,eAAiBr4E,EAAItD,QAAQu9E,YAAcxiI,KAAK4gI,gDAGnE5gI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,qBAAsB,CAAEqmB,IAAK,CAACktD,KAAY,WAAvG72B,SAGA1iD,EAAU,GACd0iD,EAAS+1B,OAAOnsH,IAAI,SAAAgC,GAAC,OAAI,IAAIzX,IAAW,QAASyX,EAAExX,GAAIwX,KAAIrC,QAAQ,SAAAqC,GAAC,OAAI0xC,EAAQ3jD,KAAKiS,KAGrFo0F,EAASvmD,MAAM7vC,IAAI,SAAA7T,GAAC,OAAI,IAAI5B,IAAW,OAAQ4B,EAAE3B,GAAI2B,KAAIwT,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGnFiqG,EAASthG,QAAQkL,IAAI,SAAAlU,GAAC,OAAI,IAAIvB,IAAW,SAAUuB,EAAE5E,KAAM4E,KAAI6T,QAAQ,SAAA7T,GAAC,OAAI4nD,EAAQ3jD,KAAKjE,KAEzFnB,KAAK02E,WAAW3tB,2BAGhBpnD,EAAQW,KAAR,mHAAAyB,OAAgI0+H,SAAS5iI,8HAQjH,IAAAmpD,EAAAhpD,KAAxB81E,IAAwBzzE,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,KAAAA,UAAA,GAG1B,OAAIyzE,EACF3tB,EAAAf,EAAAs5E,EAAA9iI,WAAA,MAAAoC,MAAA7D,KAAA6D,MAAiB,GAGZmoD,EAAAf,EAAAs5E,EAAA9iI,WAAA,MAAAoC,MAAA7D,KAAA6D,MAAU,GAAO4U,OAAO,SAAAyC,GAAC,OAAIA,EAAEijC,WAAWooF,OAAS15E,EAAK43E,gDAOxDljI,GACPyqD,EAAAf,EAAAs5E,EAAA9iI,WAAA,UAAAoC,MAAA7D,KAAA6D,KAActC,GACdsC,KAAK2iI,4BAA4BjlI,4CAGjBA,EAAQuwC,GACxBka,EAAAf,EAAAs5E,EAAA9iI,WAAA,mBAAAoC,MAAA7D,KAAA6D,KAAuBtC,EAAQuwC,GAC/BjuC,KAAK2iI,4BAA4BjlI,2CAGlBA,EAAQ+rD,EAASC,EAAU1lB,GAC1CmkB,EAAAf,EAAAs5E,EAAA9iI,WAAA,kBAAAoC,MAAA7D,KAAA6D,KAAsBtC,EAAQ+rD,EAASC,EAAU1lB,GACjDhkC,KAAK2iI,4BAA4BjlI,sCAGvBksD,GACVzB,EAAAf,EAAAs5E,EAAA9iI,WAAA,aAAAoC,MAAA7D,KAAA6D,KAAiB4pD,GACjB5pD,KAAK+oD,QAAQi5E,SAAS,OAAQ,wDAGJtkI,GAG1BA,EAAOoC,KAAKomD,MAAQ,EAGpBlmD,KAAK+oD,QAAQi5E,SAAS,OAAQ,qCAvR9B,MAAO,aAAehiI,KAAK4gI,wDCzB/B7kI,EAAAD,QAAA,SAAAC,GAoBA,OAnBAA,EAAA6mI,kBACA7mI,EAAAmjE,UAAA,aACAnjE,EAAA2+B,MAAA,GAEA3+B,EAAA8mI,WAAA9mI,EAAA8mI,SAAA,IACAnmI,OAAAC,eAAAZ,EAAA,UACAa,YAAA,EACAC,IAAA,WACA,OAAAd,EAAAE,KAGAS,OAAAC,eAAAZ,EAAA,MACAa,YAAA,EACAC,IAAA,WACA,OAAAd,EAAAC,KAGAD,EAAA6mI,gBAAA,GAEA7mI,oBCpBA,IAAAoc,EASA2qH,EAAA,WAGA,IAAAthI,EAAA+D,OAAAo2D,aACAonE,EAAA,oEACAC,EAAA,oEACAC,EAAA,GAEA,SAAAC,EAAAC,EAAAC,GACA,IAAAH,EAAAE,GAAA,CACAF,EAAAE,GAAA,GACA,QAAAnnI,EAAA,EAAkBA,EAAAmnI,EAAA//H,OAAoBpH,IACtCinI,EAAAE,KAAA14F,OAAAzuC,MAGA,OAAAinI,EAAAE,GAAAC,GAGA,IAAAN,EAAA,CACAO,iBAAA,SAAAhoG,GACA,SAAAA,EAAA,SACA,IAAA3sB,EAAAo0H,EAAAQ,UAAAjoG,EAAA,WAAAl6B,GAAuD,OAAA4hI,EAAAt4F,OAAAtpC,KACvD,OAAAuN,EAAAtL,OAAA,GACA,QACA,cAAAsL,EACA,cAAAA,EAAA,MACA,cAAAA,EAAA,KACA,cAAAA,EAAA,MAIA60H,qBAAA,SAAAloG,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,KACAynG,EAAAU,YAAAnoG,EAAAj4B,OAAA,YAAAyE,GAAmE,OAAAq7H,EAAAH,EAAA1nG,EAAAoP,OAAA5iC,OAGnE47H,gBAAA,SAAApoG,GACA,aAAAA,EAAA,GACAynG,EAAAQ,UAAAjoG,EAAA,YAAAl6B,GAAqD,OAAAK,EAAAL,EAAA,MAAgB,KAGrEuiI,oBAAA,SAAAC,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,KACAb,EAAAU,YAAAG,EAAAvgI,OAAA,eAAAyE,GAA2E,OAAA87H,EAAA7yF,WAAAjpC,GAAA,MAI3E+7H,qBAAA,SAAAC,GAIA,IAHA,IAAAF,EAAAb,EAAAgB,SAAAD,GACAtxD,EAAA,IAAAliE,WAAA,EAAAszH,EAAAvgI,QAEApH,EAAA,EAAA+nI,EAAAJ,EAAAvgI,OAA6CpH,EAAA+nI,EAAY/nI,IAAA,CACzD,IAAAgoI,EAAAL,EAAA7yF,WAAA90C,GACAu2E,EAAA,EAAAv2E,GAAAgoI,IAAA,EACAzxD,EAAA,EAAAv2E,EAAA,GAAAgoI,EAAA,IAEA,OAAAzxD,GAIA0xD,yBAAA,SAAAN,GACA,GAAAA,QACA,OAAAb,EAAAoB,WAAAP,GAGA,IADA,IAAApxD,EAAA,IAAAvwE,MAAA2hI,EAAAvgI,OAAA,GACApH,EAAA,EAAA+nI,EAAAxxD,EAAAnvE,OAA0CpH,EAAA+nI,EAAY/nI,IACtDu2E,EAAAv2E,GAAA,IAAA2nI,EAAA,EAAA3nI,GAAA2nI,EAAA,EAAA3nI,EAAA,GAGA,IAAA2S,EAAA,GAIA,OAHA4jE,EAAAv9D,QAAA,SAAA3Y,GACAsS,EAAAvJ,KAAA5D,EAAAnF,MAEAymI,EAAAoB,WAAAv1H,EAAA7F,KAAA,MAQAq7H,8BAAA,SAAA9oG,GACA,aAAAA,EAAA,GACAynG,EAAAQ,UAAAjoG,EAAA,WAAAl6B,GAAoD,OAAA6hI,EAAAv4F,OAAAtpC,MAIpDijI,kCAAA,SAAA/oG,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,MACAA,IAAA/xB,QAAA,UACAw5H,EAAAU,YAAAnoG,EAAAj4B,OAAA,YAAAyE,GAAmE,OAAAq7H,EAAAF,EAAA3nG,EAAAoP,OAAA5iC,QAGnEi8H,SAAA,SAAAD,GACA,OAAAf,EAAAQ,UAAAO,EAAA,YAAA1iI,GAA4D,OAAAK,EAAAL,MAE5DmiI,UAAA,SAAAO,EAAAQ,EAAAC,GACA,SAAAT,EAAA,SACA,IAAA7nI,EAAAiB,EAYAsnI,EAXAC,EAAA,GACAC,EAAA,GACAC,EAAA,GACAC,EAAA,GACAC,EAAA,GACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GACAC,EAAA,EACAC,EAAA,EAGA,IAAAX,EAAA,EAAgBA,EAAAV,EAAAzgI,OAA0BmhI,GAAA,EAQ1C,GAPAG,EAAAb,EAAAp5F,OAAA85F,GACA7nI,OAAAkB,UAAAC,eAAA1B,KAAAqoI,EAAAE,KACAF,EAAAE,GAAAI,IACAL,EAAAC,IAAA,GAGAC,EAAAC,EAAAF,EACAhoI,OAAAkB,UAAAC,eAAA1B,KAAAqoI,EAAAG,GACAC,EAAAD,MACO,CACP,GAAAjoI,OAAAkB,UAAAC,eAAA1B,KAAAsoI,EAAAG,GAAA,CACA,GAAAA,EAAA9zF,WAAA,QACA,IAAA90C,EAAA,EAAsBA,EAAA+oI,EAAoB/oI,IAC1CipI,IAAA,EACAC,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAIA,IADAjoI,EAAA2nI,EAAA9zF,WAAA,GACA90C,EAAA,EAAsBA,EAAA,EAAMA,IAC5BipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,MAEW,CAEX,IADAA,EAAA,EACAjB,EAAA,EAAsBA,EAAA+oI,EAAoB/oI,IAC1CipI,KAAA,EAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,EAAA,EAGA,IADAA,EAAA2nI,EAAA9zF,WAAA,GACA90C,EAAA,EAAsBA,EAAA,GAAOA,IAC7BipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,EAIA,KADA4nI,IAEAA,EAAAzkI,KAAAynE,IAAA,EAAAk9D,GACAA,YAEAN,EAAAG,QAGA,IADA3nI,EAAAunI,EAAAI,GACA5oI,EAAA,EAAoBA,EAAA+oI,EAAoB/oI,IACxCipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,EAMA,KADA4nI,IAEAA,EAAAzkI,KAAAynE,IAAA,EAAAk9D,GACAA,KAGAP,EAAAG,GAAAG,IACAF,EAAAr/H,OAAAm/H,GAKA,QAAAE,EAAA,CACA,GAAAloI,OAAAkB,UAAAC,eAAA1B,KAAAsoI,EAAAG,GAAA,CACA,GAAAA,EAAA9zF,WAAA,QACA,IAAA90C,EAAA,EAAoBA,EAAA+oI,EAAoB/oI,IACxCipI,IAAA,EACAC,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAIA,IADAjoI,EAAA2nI,EAAA9zF,WAAA,GACA90C,EAAA,EAAoBA,EAAA,EAAMA,IAC1BipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,MAES,CAET,IADAA,EAAA,EACAjB,EAAA,EAAoBA,EAAA+oI,EAAoB/oI,IACxCipI,KAAA,EAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,EAAA,EAGA,IADAA,EAAA2nI,EAAA9zF,WAAA,GACA90C,EAAA,EAAoBA,EAAA,GAAOA,IAC3BipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,EAIA,KADA4nI,IAEAA,EAAAzkI,KAAAynE,IAAA,EAAAk9D,GACAA,YAEAN,EAAAG,QAGA,IADA3nI,EAAAunI,EAAAI,GACA5oI,EAAA,EAAkBA,EAAA+oI,EAAoB/oI,IACtCipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,EAMA,KADA4nI,IAEAA,EAAAzkI,KAAAynE,IAAA,EAAAk9D,GACAA,KAMA,IADA9nI,EAAA,EACAjB,EAAA,EAAcA,EAAA+oI,EAAoB/oI,IAClCipI,KAAA,IAAAhoI,EACAioI,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAA5/H,KAAAk/H,EAAAW,IACAA,EAAA,GAEAC,IAEAjoI,IAAA,EAIA,QAEA,GADAgoI,IAAA,EACAC,GAAAb,EAAA,GACAW,EAAA5/H,KAAAk/H,EAAAW,IACA,MAEAC,IAEA,OAAAF,EAAAl8H,KAAA,KAGAo7H,WAAA,SAAAP,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,KACAb,EAAAU,YAAAG,EAAAvgI,OAAA,eAAAyE,GAA2E,OAAA87H,EAAA7yF,WAAAjpC,MAG3E27H,YAAA,SAAApgI,EAAA+hI,EAAAC,GACA,IAOAppI,EACAsJ,EACA+/H,EAAAC,EAAAC,EAAAC,EACAnpI,EAVAopI,EAAA,GAEAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAptG,EAAA,GACA7pB,EAAA,GAKA7O,EAAA,CAAgB6I,IAAAy8H,EAAA,GAAA19H,SAAAy9H,EAAAt9H,MAAA,GAEhB,IAAA7L,EAAA,EAAeA,EAAA,EAAOA,GAAA,EACtBypI,EAAAzpI,KAMA,IAHAqpI,EAAA,EACAE,EAAAnlI,KAAAynE,IAAA,KACA29D,EAAA,EACAA,GAAAD,GACAD,EAAAxlI,EAAA6I,IAAA7I,EAAA4H,SACA5H,EAAA4H,WAAA,EACA,GAAA5H,EAAA4H,WACA5H,EAAA4H,SAAAy9H,EACArlI,EAAA6I,IAAAy8H,EAAAtlI,EAAA+H,UAEAw9H,IAAAC,EAAA,OAAAE,EACAA,IAAA,EAGA,OAAAH,GACA,OAIA,IAHAA,EAAA,EACAE,EAAAnlI,KAAAynE,IAAA,KACA29D,EAAA,EACAA,GAAAD,GACAD,EAAAxlI,EAAA6I,IAAA7I,EAAA4H,SACA5H,EAAA4H,WAAA,EACA,GAAA5H,EAAA4H,WACA5H,EAAA4H,SAAAy9H,EACArlI,EAAA6I,IAAAy8H,EAAAtlI,EAAA+H,UAEAw9H,IAAAC,EAAA,OAAAE,EACAA,IAAA,EAEAnpI,EAAAmF,EAAA6jI,GACA,MACA,OAIA,IAHAA,EAAA,EACAE,EAAAnlI,KAAAynE,IAAA,MACA29D,EAAA,EACAA,GAAAD,GACAD,EAAAxlI,EAAA6I,IAAA7I,EAAA4H,SACA5H,EAAA4H,WAAA,EACA,GAAA5H,EAAA4H,WACA5H,EAAA4H,SAAAy9H,EACArlI,EAAA6I,IAAAy8H,EAAAtlI,EAAA+H,UAEAw9H,IAAAC,EAAA,OAAAE,EACAA,IAAA,EAEAnpI,EAAAmF,EAAA6jI,GACA,MACA,OACA,SAKA,IAHAI,EAAA,GAAAppI,EACAiJ,EAAAjJ,EACAsS,EAAAvJ,KAAA/I,KACA,CACA,GAAAyD,EAAA+H,MAAAzE,EACA,SAMA,IAHAiiI,EAAA,EACAE,EAAAnlI,KAAAynE,IAAA,EAAA+9D,GACAJ,EAAA,EACAA,GAAAD,GACAD,EAAAxlI,EAAA6I,IAAA7I,EAAA4H,SACA5H,EAAA4H,WAAA,EACA,GAAA5H,EAAA4H,WACA5H,EAAA4H,SAAAy9H,EACArlI,EAAA6I,IAAAy8H,EAAAtlI,EAAA+H,UAEAw9H,IAAAC,EAAA,OAAAE,EACAA,IAAA,EAGA,OAAAnpI,EAAAgpI,GACA,OAIA,IAHAA,EAAA,EACAE,EAAAnlI,KAAAynE,IAAA,KACA29D,EAAA,EACAA,GAAAD,GACAD,EAAAxlI,EAAA6I,IAAA7I,EAAA4H,SACA5H,EAAA4H,WAAA,EACA,GAAA5H,EAAA4H,WACA5H,EAAA4H,SAAAy9H,EACArlI,EAAA6I,IAAAy8H,EAAAtlI,EAAA+H,UAEAw9H,IAAAC,EAAA,OAAAE,EACAA,IAAA,EAGAC,EAAAE,KAAAnkI,EAAA6jI,GACAhpI,EAAAspI,EAAA,EACAD,IACA,MACA,OAIA,IAHAL,EAAA,EACAE,EAAAnlI,KAAAynE,IAAA,MACA29D,EAAA,EACAA,GAAAD,GACAD,EAAAxlI,EAAA6I,IAAA7I,EAAA4H,SACA5H,EAAA4H,WAAA,EACA,GAAA5H,EAAA4H,WACA5H,EAAA4H,SAAAy9H,EACArlI,EAAA6I,IAAAy8H,EAAAtlI,EAAA+H,UAEAw9H,IAAAC,EAAA,OAAAE,EACAA,IAAA,EAEAC,EAAAE,KAAAnkI,EAAA6jI,GACAhpI,EAAAspI,EAAA,EACAD,IACA,MACA,OACA,OAAA/2H,EAAA7F,KAAA,IAQA,GALA,GAAA48H,IACAA,EAAAtlI,KAAAynE,IAAA,EAAA+9D,GACAA,KAGAH,EAAAppI,GACAm8B,EAAAitG,EAAAppI,OACO,CACP,GAAAA,IAAAspI,EAGA,YAFAntG,EAAAlzB,IAAAmlC,OAAA,GAKA97B,EAAAvJ,KAAAozB,GAGAitG,EAAAE,KAAArgI,EAAAkzB,EAAAiS,OAAA,GAGAnlC,EAAAkzB,EAEA,KAJAktG,IAKAA,EAAAtlI,KAAAynE,IAAA,EAAA+9D,GACAA,QAMA,OAAA9C,EApeA,QAweyCvjI,KAAvC4Y,EAAA,WAAoB,OAAA2qH,GAAmB3mI,KAAAL,EAAAF,EAAAE,EAAAC,QAAAD,QAAAqc,oBCjfzC,IAQA0tH,EACAC,EATAC,EAAUnqI,EAAQ,KAClBoqI,EAAkBpqI,EAAQ,KAW1BqqI,EAAA,EACAC,EAAA,EA+FAnqI,EAAAD,QA5FA,SAAA03C,EAAA++B,EAAAj/D,GACA,IAAAtX,EAAAu2E,GAAAj/D,GAAA,EACAjG,EAAAklE,GAAA,GAGA8B,GADA7gC,KAAA,IACA6gC,MAAAwxD,EACAM,OAAA5mI,IAAAi0C,EAAA2yF,SAAA3yF,EAAA2yF,SAAAL,EAKA,SAAAzxD,GAAA,MAAA8xD,EAAA,CACA,IAAAC,EAAAL,IACA,MAAA1xD,IAEAA,EAAAwxD,EAAA,CACA,EAAAO,EAAA,GACAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAGA,MAAAD,IAEAA,EAAAL,EAAA,OAAAM,EAAA,MAAAA,EAAA,KAQA,IAAAC,OAAA9mI,IAAAi0C,EAAA6yF,MAAA7yF,EAAA6yF,OAAA,IAAAhzG,MAAAi1F,UAIAge,OAAA/mI,IAAAi0C,EAAA8yF,MAAA9yF,EAAA8yF,MAAAJ,EAAA,EAGAK,EAAAF,EAAAJ,GAAAK,EAAAJ,GAAA,IAcA,GAXAK,EAAA,QAAAhnI,IAAAi0C,EAAA2yF,WACAA,IAAA,UAKAI,EAAA,GAAAF,EAAAJ,SAAA1mI,IAAAi0C,EAAA8yF,QACAA,EAAA,GAIAA,GAAA,IACA,UAAA7jI,MAAA,mDAGAwjI,EAAAI,EACAH,EAAAI,EACAR,EAAAK,EAMA,IAAAK,GAAA,gBAHAH,GAAA,cAGAC,GAAA,WACAj5H,EAAArR,KAAAwqI,IAAA,OACAn5H,EAAArR,KAAAwqI,IAAA,OACAn5H,EAAArR,KAAAwqI,IAAA,MACAn5H,EAAArR,KAAA,IAAAwqI,EAGA,IAAAC,EAAAJ,EAAA,yBACAh5H,EAAArR,KAAAyqI,IAAA,MACAp5H,EAAArR,KAAA,IAAAyqI,EAGAp5H,EAAArR,KAAAyqI,IAAA,SACAp5H,EAAArR,KAAAyqI,IAAA,OAGAp5H,EAAArR,KAAAmqI,IAAA,MAGA94H,EAAArR,KAAA,IAAAmqI,EAGA,QAAA1oI,EAAA,EAAiBA,EAAA,IAAOA,EACxB4P,EAAArR,EAAAyB,GAAA42E,EAAA52E,GAGA,OAAA80E,GAAAyzD,EAAA34H,qBCzGA,IAAA04H,EAAUnqI,EAAQ,KAClBoqI,EAAkBpqI,EAAQ,KA2B1BG,EAAAD,QAzBA,SAAA03C,EAAA++B,EAAAj/D,GACA,IAAAtX,EAAAu2E,GAAAj/D,GAAA,EAEA,qBACAi/D,EAAA,WAAA/+B,EAAA,IAAAxxC,MAAA,SACAwxC,EAAA,MAIA,IAAA6+B,GAFA7+B,KAAA,IAEAxd,SAAAwd,EAAAuyF,UAOA,GAJA1zD,EAAA,MAAAA,EAAA,MACAA,EAAA,MAAAA,EAAA,OAGAE,EACA,QAAAgyD,EAAA,EAAoBA,EAAA,KAASA,EAC7BhyD,EAAAv2E,EAAAuoI,GAAAlyD,EAAAkyD,GAIA,OAAAhyD,GAAAyzD,EAAA3zD,kCCdAt2E,EAAAD,QAAA,SAAAg+D,EAAAb,GAIA,GAHAA,IAAAxwD,MAAA,UACAqxD,MAEA,SAEA,OAAAb,GACA,WACA,SACA,YAAAa,EAEA,YACA,UACA,aAAAA,EAEA,UACA,YAAAA,EAEA,aACA,YAAAA,EAEA,WACA,SAGA,WAAAA,iCClCA,IACA4sE,EADAr+H,EAAA3L,OAAAkB,UAAAC,eAUA,SAAA8oI,EAAAtrG,GACA,IACA,OAAA4mD,mBAAA5mD,EAAA/xB,QAAA,YACG,MAAA9I,GACH,aAoGA1E,EAAAy+D,UA1CA,SAAArK,EAAA7M,GACAA,KAAA,GAEA,IACApmD,EACAM,EAFAwgC,EAAA,GASA,IAAAxgC,IAFA,iBAAA8lD,MAAA,KAEA6M,EACA,GAAA7nD,EAAAlM,KAAA+zD,EAAA3yD,GAAA,CAkBA,IAjBAN,EAAAizD,EAAA3yD,KAMA,OAAAN,OAAAypI,IAAAxiI,MAAAjH,KACAA,EAAA,IAGAM,EAAAg+D,mBAAAh+D,GACAN,EAAAs+D,mBAAAt+D,GAMA,OAAAM,GAAA,OAAAN,EAAA,SACA8gC,EAAA34B,KAAA7H,EAAA,IAAAN,GAIA,OAAA8gC,EAAA36B,OAAAigD,EAAAtlB,EAAAj1B,KAAA,SAOAhN,EAAAywD,MA3EA,SAAAqM,GAKA,IAJA,IAEAwB,EAFAd,EAAA,sBACA3qD,EAAA,GAGAyrD,EAAAd,EAAA/4D,KAAAq4D,IAAA,CACA,IAAAr7D,EAAAopI,EAAAvsE,EAAA,IACAn9D,EAAA0pI,EAAAvsE,EAAA,IAUA,OAAA78D,GAAA,OAAAN,GAAAM,KAAAoR,IACAA,EAAApR,GAAAN,GAGA,OAAA0R,8jCClDqBi4H,cAKnB,SAAAA,EAAa3/E,EAAUmuB,GAAK,IAAAluB,EAAA,mGAAAnnD,CAAAC,KAAA4mI,IAC1B1/E,EAAAC,EAAAnnD,KAAAonD,EAAAw/E,GAAAzqI,KAAA6D,KAAMinD,KAGDqtB,SAAU,EAGfptB,EAAKkuB,IAAMA,EAAIpjE,OAPWk1C,sPALaF,2CAEtB,MAAO,6CAmBjBnnD,EAAIytE,GAEX,GAAW,QAAPztE,EAAc,OAAO,EACzB,IAAKytE,GAAcA,EAAWlqE,SAAWpD,KAAKo1E,IAAIhyE,OAAQ,OAAO,EACjE,IAAK,IAAIpH,EAAI,EAAGA,EAAIgE,KAAKo1E,IAAIhyE,OAAQpH,IACnC,GAAIsxE,EAAWtxE,KAAOgE,KAAKo1E,IAAIp5E,GAC7B,OAAO,EAKX,OAAO,4JAMPgE,KAAK6gI,yBAGgB7gI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,qBAAsB,CAAEqmB,IAAKp1E,KAAKo1E,MAAO,iBAAtGq2B,SAGA1iD,EAAU,GACd0iD,EAAS+1B,OAAOnsH,IAAI,SAAAgC,GAAC,OAAI,IAAIzX,IAAW,QAASyX,EAAExX,GAAIwX,KAAIrC,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGrFiqG,EAASvmD,MAAM7vC,IAAI,SAAA7T,GAAC,OAAI,IAAI5B,IAAW,OAAQ4B,EAAE3B,GAAI2B,KAAIwT,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGnFiqG,EAASthG,QAAQkL,IAAI,SAAAlU,GAAC,OAAI,IAAIvB,IAAW,SAAUuB,EAAE5E,KAAM4E,KAAI6T,QAAQ,SAAA7T,GAAC,OAAI4nD,EAAQ3jD,KAAKjE,KAGzFnB,KAAK02E,WAAW3tB,GAGhB/oD,KAAKghI,mCAGEj4E,EAAQ1zC,IAAI,SAAA5Y,GAAC,OAAIA,EAAEoD,8SA3C1B,MAAO,OAASG,KAAKo1E,IAAItsE,KAAK,ilCClBb+9H,cAKnB,SAAAA,EAAa5/E,EAAU6/E,GAAU,IAAA5/E,EAAA,mGAAAnnD,CAAAC,KAAA6mI,IAC/B3/E,EAAAC,EAAAnnD,KAAAonD,EAAAy/E,GAAA1qI,KAAA6D,KAAMinD,KAGDqtB,SAAU,EAGfptB,EAAK4/E,SAAWA,EAPe5/E,sPALcF,2CAE5B,MAAO,kDAmBjBnnD,EAAIytE,GACX,MAAc,aAAPztE,GAAqBytE,IAAettE,KAAK8mI,qKAMhD9mI,KAAK6gI,gBAGD57E,GAAU,IAAIoI,KAAW05E,SAAS15E,IAAS2D,cAAehxD,KAAK8mI,UAAU93E,sBACxDhvD,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,kBAAmB9J,GAAS,iBAAzFwmD,SAGA1iD,EAAU,GACd0iD,EAASv8C,QAAQ75C,IAAI,SAAAgC,GAAC,OAAI,IAAIzX,IAAW,QAASyX,EAAExX,GAAIwX,KAAIrC,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGtFiqG,EAASvmD,MAAM7vC,IAAI,SAAA7T,GAAC,OAAI,IAAI5B,IAAW,OAAQ4B,EAAE3B,GAAI2B,KAAIwT,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGnFiqG,EAASthG,QAAQkL,IAAI,SAAAlU,GAAC,OAAI,IAAIvB,IAAW,SAAUuB,EAAE5E,KAAM4E,KAAI6T,QAAQ,SAAA7T,GAAC,OAAI4nD,EAAQ3jD,KAAKjE,KAGzFnB,KAAK02E,WAAW3tB,GAGhB/oD,KAAKghI,mCAGEj4E,EAAQ1zC,IAAI,SAAA5Y,GAAC,OAAIA,EAAEoD,8SAlC1B,MAAO,YAAcG,KAAK8mI,ogDCnBTE,cAKnB,SAAAA,EAAa//E,EAAU+W,GAAa,IAAA9W,EAMlC,+FANkCnnD,CAAAC,KAAAgnI,IAClC9/E,uEAAAC,CAAAnnD,KAAAonD,EAAA4/E,GAAA7qI,KAAA6D,KAAMinD,KAEDqtB,SAAU,IAGVtW,GAAgBA,EAAYipE,WAAcjpE,EAAYipE,UAAUC,KAAQlpE,EAAYipE,UAAUE,KAAQnpE,EAAYopE,aAAgBppE,EAAYopE,YAAYF,KAAQlpE,EAAYopE,YAAYD,KAC7L,MAAM,IAAI1kI,MAAM,sFAPgB,OAWlCykD,EAAK8W,YAAcA,EAGnB9W,EAAKmgF,oBAGLngF,EAAKogF,gBAAkBpgF,EAAKogF,gBAAgB9pI,KAArBiqD,EAAAP,IACvBA,EAAKQ,OAAOI,iBAAiB,YAAaZ,EAAKogF,iBAlBbpgF,sPALIF,2CAErB,MAAO,gDA0BxBmB,EAAAf,EAAA4/E,EAAAppI,WAAA,QAAAoC,MAAA7D,KAAA6D,MAGAA,KAAK0nD,OAAOU,oBAAoB,YAAapoD,KAAKsnI,2DAKlDtnI,KAAKqnI,gEAOL,GAAKrnI,KAAK0nD,OAAO6/E,OAAjB,CAIA,IAUI9gB,EAAM,CACR5mH,GAAI,IACJoB,QAAS,IACT3C,KAAM,UACNmoH,IAAK,UACLxhE,QAAS,CACPuiF,SAhBU,CACZN,IAAK9mI,KAAKu1B,IAAI31B,KAAKg+D,YAAYipE,UAAUC,IAAKlnI,KAAKg+D,YAAYopE,YAAYF,KAC3EC,IAAK/mI,KAAKY,IAAIhB,KAAKg+D,YAAYipE,UAAUE,IAAKnnI,KAAKg+D,YAAYopE,YAAYD,MAezEM,aAbc,CAChBP,IAAK9mI,KAAKY,IAAIhB,KAAKg+D,YAAYipE,UAAUC,IAAKlnI,KAAKg+D,YAAYopE,YAAYF,KAC3EC,IAAK/mI,KAAKu1B,IAAI31B,KAAKg+D,YAAYipE,UAAUE,IAAKnnI,KAAKg+D,YAAYopE,YAAYD,QAgB7ExlI,EAAQQ,IAAI,uBAAyBmqD,KAAKiO,UAAUksD,IACpDzmH,KAAKinD,SAASU,OAAOC,WAAW8/E,YAAYjhB,gCASvC5mH,GACH,IAAGsoD,EAAAf,EAAA4/E,EAAAppI,WAAA,MAAAoC,MAAA7D,KAAA6D,KAAWH,GACZ,OAAO,EAEX,IAAInC,EAASsC,KAAK+oD,QAAQlsD,IAAIgD,GAG9B,SAAInC,EAAOoC,MAAQpC,EAAOoC,KAAK,qBAAuBpC,EAAOoC,KAAK,oBAAoB6nI,eAAtF,kCAUO9nI,EAAIytE,GAEX,MAAW,WAAPztE,OACCytE,GAAeA,EAAW25D,WAAc35D,EAAW85D,eACpD95D,EAAW25D,UAAUC,MAAQlnI,KAAKg+D,YAAYipE,UAAUC,MACxD55D,EAAW25D,UAAUE,MAAQnnI,KAAKg+D,YAAYipE,UAAUE,MACxD75D,EAAW85D,YAAYF,MAAQlnI,KAAKg+D,YAAYopE,YAAYF,KAC5D55D,EAAW85D,YAAYD,MAAQnnI,KAAKg+D,YAAYopE,YAAYD,sKAShEnnI,KAAK6gI,gBAED57E,EAAU,CACZgiF,UAAWjnI,KAAKg+D,YAAYipE,UAC5BG,YAAapnI,KAAKg+D,YAAYopE,YAC9BxyH,OAAQ,MACR6nC,MAAO,KAGLz8C,KAAKg+D,YAAY4pE,iBACnB3iF,EAAO,eAAqBjlD,KAAKg+D,YAAY4pE,yBAE1B5nI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,wBAAyB9J,GAAS,iBAA/FwmD,SAGA1iD,EAAU,GACd0iD,EAAS+1B,OAAOnsH,IAAI,SAAAgC,GAAC,OAAI,IAAIzX,IAAW,QAASyX,EAAExX,GAAIwX,KAAIrC,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGrFiqG,EAASvmD,MAAM7vC,IAAI,SAAA7T,GAAC,OAAI,IAAI5B,IAAW,OAAQ4B,EAAE3B,GAAI2B,KAAIwT,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGnFiqG,EAASthG,QAAQkL,IAAI,SAAAlU,GAAC,OAAI,IAAIvB,IAAW,SAAUuB,EAAE5E,KAAM4E,KAAI6T,QAAQ,SAAA7T,GAAC,OAAI4nD,EAAQ3jD,KAAKjE,KAGzFnB,KAAK02E,WAAW3tB,GAGhB/oD,KAAKghI,mCAGEj4E,EAAQ1zC,IAAI,SAAA5Y,GAAC,OAAIA,EAAEoD,4JAOvBnC,GACH,OAAGsC,KAAKg+D,YAAY4pE,gBAAkBlqI,EAAOoC,MAAQpC,EAAOoC,KAAK,qBAAuBpC,EAAOoC,KAAK,oBAAoB8nI,iBAAmB5nI,KAAKg+D,YAAY4pE,eACnJ,KAGLlqI,EAAOoC,MAAQpC,EAAOoC,KAAK,qBAAuBpC,EAAOoC,KAAK,oBAAoB6nI,QACpFx/E,EAAAf,EAAA4/E,EAAAppI,WAAA,MAAAoC,MAAA7D,KAAA6D,KAAiBtC,GAGZ,2EAUY6qD,wGACnBJ,EAAAf,EAAA4/E,EAAAppI,WAAA,iBAAAoC,MAAA7D,KAAA6D,KAAqBuoD,GAGA,QAAjBA,EAAII,UAAyC,QAAnBJ,EAAItD,QAAQ4iF,2BAGpC9+E,EAAU,YACO/oD,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,qBAAsB,CAAEqmB,IAAK,CAAC7sB,EAAItD,QAAQ6iF,YAAa,iBAApHr8B,SACAm2B,EAAQ,IAAIhiI,IAAW,QAAS6rG,EAAS+1B,OAAO,GAAG3hI,GAAI4rG,EAAS+1B,OAAO,IAC3Ez4E,EAAQ3jD,KAAKw8H,GACbn2B,EAASvmD,MAAM7vC,IAAI,SAAA7T,GAAC,OAAI,IAAI5B,IAAW,OAAQ4B,EAAE3B,GAAI2B,KAAIwT,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KACnFiqG,EAASthG,QAAQkL,IAAI,SAAAlU,GAAC,OAAI,IAAIvB,IAAW,SAAUuB,EAAE5E,KAAM4E,KAAI6T,QAAQ,SAAA7T,GAAC,OAAI4nD,EAAQ3jD,KAAKjE,KACzFnB,KAAK02E,WAAW3tB,iCAGU,QAAjBR,EAAII,UAAyC,WAAnBJ,EAAItD,QAAQ4iF,2BAG/C7nI,KAAK+nI,iBAAiBx/E,EAAItD,QAAQ6iF,SAAU,4BAA4B,iCAG/C,gBAAhBv/E,EAAII,6BAGT25E,EAAU/5E,EAAItD,SAAWsD,EAAItD,QAAQplD,0BAEjC,IAAI4C,MAAJ,4DAIM8lD,EAAItD,QAAQ2D,YAAcL,EAAItD,QAAQ2D,WAAW,qBAAuBL,EAAItD,QAAQ2D,WAAW,oBAAoB++E,+DAM7H3nI,KAAK+oD,QAAQlsD,IAAIylI,sDAKrBtiI,KAAK6gI,gBAGL7gI,KAAKinD,SAASU,OAAOmH,OAAOC,QAAQ,OAAQ,qBAAsB,CAAEqmB,IAAK,CAACktD,KAAY,GAAMrzE,KAAK,SAAAw8C,GAE/F,IAAI1iD,EAAU,GACdA,EAAQ3jD,KAAK,IAAIxF,IAAW,QAAS6rG,EAAS+1B,OAAO,GAAG3hI,GAAI4rG,EAAS+1B,OAAO,KAG5E/1B,EAASvmD,MAAM7vC,IAAI,SAAA7T,GAAC,OAAI,IAAI5B,IAAW,OAAQ4B,EAAE3B,GAAI2B,KAAIwT,QAAQ,SAAAxT,GAAC,OAAIunD,EAAQ3jD,KAAK5D,KAGnFiqG,EAASthG,QAAQkL,IAAI,SAAAlU,GAAC,OAAI,IAAIvB,IAAW,SAAUuB,EAAE5E,KAAM4E,KAAI6T,QAAQ,SAAA7T,GAAC,OAAI4nD,EAAQ3jD,KAAKjE,KAGzF6nD,EAAK0tB,WAAW3tB,KAZlB,MAaS,SAAApmD,GAEPhB,EAAQW,KAAK,uFAAyFK,EAAIC,WACzGqsD,KAAK,SAAAzuD,GAENwoD,EAAKg4E,+IA5IT,MAAO,UAAYhhI,KAAKg+D,YAAYipE,UAAUC,IAAM,IAAMlnI,KAAKg+D,YAAYipE,UAAUE,IAAM,IAAMnnI,KAAKg+D,YAAYopE,YAAYF,IAAM,IAAMlnI,KAAKg+D,YAAYopE,YAAYD,gDCtG3K,IAAAtkD,EAAWjnF,EAAQ,KAYnBG,EAAAD,QAAA,SAAAy6D,GACA,IAAAqK,EAAArK,EAAAjtD,QAAA,UAAAA,QAAA,UACA,OAAAs3D,EAAAx9D,OAAA,GACA,OACA,MACA,OACAw9D,GAAA,KACA,MACA,OACAA,GAAA,IACA,MACA,QACA,iCAGA,IACA,OA1BA,SAAArK,GACA,OAAA0rB,mBAAAY,EAAAtsB,GAAAjtD,QAAA,gBAAAlN,EAAA0B,GACA,IAAAkmG,EAAAlmG,EAAAgzC,WAAA,GAAAliC,SAAA,IAAAspC,cAIA,OAHA8rD,EAAA5gG,OAAA,IACA4gG,EAAA,IAAAA,GAEA,IAAAA,KAoBAgkC,CAAApnE,GACG,MAAAj+D,GACH,OAAAkgF,EAAAjiB,oBCzBA,IAAApzB,EAAA,oEAEA,SAAAy6F,EAAArlI,GACA5C,KAAA4C,UAGAqlI,EAAArqI,UAAA,IAAA6E,MACAwlI,EAAArqI,UAAArB,KAAA,wBAyBAR,EAAAD,QAAA,oBAAAqE,eAAA0iF,MAAA1iF,OAAA0iF,KAAArlF,KAAA2C,SAvBA,SAAAk7B,GACA,IAAAk7B,EAAAhxD,OAAA81B,GAAA/xB,QAAA,UACA,GAAAitD,EAAAnzD,OAAA,KACA,UAAA6kI,EAAA,qEAEA,IAEA,IAAAC,EAAAh1H,EAAAi1H,EAAA,EAAA1nE,EAAA,EAAAG,EAAA,GAEA1tD,EAAAqjD,EAAA9rB,OAAAg2B,MAEAvtD,IAAAg1H,EAAAC,EAAA,KAAAD,EAAAh1H,IAGAi1H,IAAA,GAAAvnE,GAAAr7D,OAAAo2D,aAAA,IAAAusE,KAAA,EAAAC,EAAA,MAGAj1H,EAAAs6B,EAAAv4B,QAAA/B,GAEA,OAAA0tD,oBCjCA,IAAA/+D,EAAajG,EAAQ,KAErBG,EAAAD,QAAA,WACA,IAAA6H,EAAA,GAAA5B,MAAA5F,KAAAkG,WAKA,OAJAsB,EAAAyB,KAAA,CACAmuE,kBAAA,EACAT,UAAA,IAEAjxE,EAAAO,MAAApC,KAAA2D,sBCRA,SAAAhC,GAAA,IAAAgxE,EAAe/2E,EAAQ,KAEvBuG,EAAAswE,eAEA12E,EAAAD,QAAAqG,EAEA,IACAimI,EAAA,6BAEA,SAAAjmI,IACA,QAAAnG,KAAAqG,UAAA,CACA,IACAk0D,EAAAkc,EADApwE,UAAArG,IAEA2F,EAAAQ,IAAAo0D,IAIA,SAAAkc,EAAAp3C,GACA,IAAAk7B,EAWA,SAAAl7B,GACA,IAAAA,EACA,OAAAA,EAGA,GAAAA,EAAArwB,cAAAhJ,MACA,OAAAqmI,EAAAhtG,GAGA,IACAitG,EAAAC,EAAAltG,GACA,GAFA,aAEAitG,EAAAvmI,MAAA,EAFA,WAEAqB,QACA,OAAAilI,EAAAhtG,GAEA,OAAAitG,EAzBAE,CAAAntG,GAIA,OAAAk7B,KAAAnzD,OADA,IAEAmzD,EAAAx0D,MAAA,EAFA,KAEA,wBAGAw0D,EAoBA,SAAA8xE,EAAAn4E,GACA,IAAAu4E,EAYA,SAAAC,EAAAzzE,EAAA0zE,EAAA,IACA,KAAA1zE,aAAAv4D,QACA,OAAAu4D,EAGA,GAAAA,aAAAp4C,OAOA,OANAo4C,EAAAlQ,SACAkQ,EAAAlQ,OAAA,WACA,IAAAwR,EAAA,YAAAgyE,EAAAtzE,GAAA,IACA,OAAAsB,IAGAtB,EAEA,GAAAA,aAAAz1D,SAaA,OAZAy1D,EAAAlQ,SACAkQ,EAAAlQ,OAAA,WACA,IAAAwR,EACAtB,EAAA14D,KAGA,cAAA04D,EAAA14D,KAAA,IAHA,aAMA,OAAAg6D,IAGAtB,EAGA,GAAAA,EAAAjqD,cAAAtO,QAAAu4D,EAAAjqD,cAAAhJ,MACA,OAAAizD,EAGA,GAAA0zE,EAAAxzH,SAAA8/C,GACA,+BAEA0zE,EAAA,CAAA1zE,KAAA0zE,GAEA,IAAAC,EAAA,IAAA3zE,EAAA,YACA,QAAA13D,KAAA03D,EACA2zE,EAAArrI,GAAAmrI,EAAAzzE,EAAA13D,GAAAorI,GAEA,OAAAC,EAvDAF,CAAAx4E,GACA,IACA,OAAA5D,KAAAiO,UAAAkuE,EAAA,QACK,MAAAjoI,GACL,OAAAmyE,IACuB/2E,EAAQ,IAC/BoH,QAAAktD,GAEAq4E,EAAAE,GAAA,IAAAjoI,EAAA,WAAA4nI,GAkDA,SAAAG,EAAAM,GACA,uBAAAA,KAAAj6H,SAGA,GAAAi6H,EAFA,qFC3GA,SAAAjnH,SAEA,SAAAknH,YAAAhxD,GAAA8d,QAA4BA,EAAA,EAAAmzC,SAAA,MAAuB,IACnD,MAAAC,EAAA,GAEAlxD,EAAA9iE,QAAAi0H,IACAA,EAAAj0H,QAAA,CAAAk0H,EAAAC,KACAH,EAAAG,GACA/oI,KAAAu1B,IACAyzG,eAAAF,GACAF,EAAAG,IAAA,OAMA,MAAAv1D,EAAA,GAmBA,OAjBAkE,EAAA9iE,QAAAi0H,IACA,IAAA5nE,EAAA0nE,EACAE,EAAAj0H,QAAA,CAAAk0H,EAAAC,KACA,MAAAE,EAAAL,EAAAG,GAEAG,EADAH,IAAAF,EAAA7lI,OAAA,EAEA,GAGAmmI,OAAAF,EAAAzzC,EAAA,KAAA7zF,MAAAqnI,eAAAF,IAGA7nE,GAAA6nE,EAAAI,IAEA11D,EAAAxuE,KAAAi8D,KAGAuS,EAAA9qE,KAAA,MAGA,SAAA4pE,YAAAne,GAAAqhC,QAA6BA,EAAA,GAAU,IAEvC,MAAA4zC,EAA2B5tI,oBAAQ,KAInC6tI,EAAAL,eADA70E,EAAA,IAAAA,EAAA,KAEAm1E,EAAAtpI,KAAAu1B,IAHA,GAGA8zG,EAAA,EAAA7zC,GAEA+zC,GADwB/tI,oBAAQ,KAChCwE,KAAAmN,OAAAm8H,EAAAD,GAAA,IACAG,EAAAL,OAAAG,GACAG,EAAAN,OAAAI,GAAAp1E,EAAAg1E,OAAAG,EAAAC,EAAAF,GAEA,OADAD,EAAAJ,eAAAQ,KAAAR,eAAAS,IAEA,CACAD,EACAC,EACAD,GACA9gI,KAAA,MAGA,SAAAsgI,eAAA7yE,KACA,IAAAoc,WACA,OAAApc,IAAAnzD,OAEA,MAAA0mI,YAAA9jB,KAAA,UAAAA,CAAA,gBACA,OAAA8jB,YAAAvzE,KAEA,SAAAoc,WACA,gBAAA/wD,SAAA,oBAAAzhB,OAGA,SAAAopI,OAAAG,EAAAK,EAAA,KACA,WAAA/nI,MAAA0nI,GAAA/0H,KAAAo1H,GAAAjhI,KAAA,IAvEA/M,OAAAD,QAAA,CAAkBgtI,wBAAAp2D,+ECAlB,IAAA7wE,EAAajG,EAAQ,KAErBG,EAAAD,QAAA,WACA,IAAA6H,EAAA,GAAA5B,MAAA5F,KAAAkG,WAKA,OAJAsB,EAAAyB,KAAA,CACAmuE,kBAAA,EACAV,YAAA,IAEAhxE,EAAAO,MAAApC,KAAA2D,kCCPA,MAAAqmI,EAAkBpuI,EAAQ,KAC1BquI,EAA6BruI,EAAQ,KAErCG,EAAAD,QAAAy6D,IACA,oBAAAA,GAAA,IAAAA,EAAAnzD,OACA,SAGAmzD,EAAAyzE,EAAAzzE,GAEA,IAAA2zE,EAAA,EAEA,QAAAluI,EAAA,EAAgBA,EAAAu6D,EAAAnzD,OAAgBpH,IAAA,CAChC,MAAAgoG,EAAAztC,EAAAk7D,YAAAz1H,GAGAgoG,GAAA,IAAAA,GAAA,KAAAA,GAAA,MAKAA,GAAA,KAAAA,GAAA,MAKAA,EAAA,OACAhoG,IAGAkuI,GAAAD,EAAAjmC,GAAA,MAGA,OAAAkmC,iCCjCA,MAAAC,EAAkBvuI,EAAQ,KAE1BG,EAAAD,QAAAu/B,GAAA,iBAAAA,IAAA/xB,QAAA6gI,IAAA,IAAA9uG,gCCDAt/B,EAAAD,QAAA,KACA,MAAAq8C,EAAA,CACA,gFACA,0DACArvC,KAAA,KAEA,WAAA+T,OAAAs7B,EAAA,oCCNAp8C,EAAAD,QAAA4+D,IACAz2D,OAAAC,MAAAw2D,KAOAA,GAAA,OACAA,GAAA,MACA,OAAAA,GACA,OAAAA,GAEA,OAAAA,MAAA,eAAAA,GAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OAEA,OAAAA,MAAA,OACA,OAAAA,MAAA,OAEA,QAAAA,MAAA,QAEA,QAAAA,MAAA,QAEA,QAAAA,MAAA,uyEC9BqB0vE,aACnB,SAAAA,iGAAerqI,CAAAC,KAAAoqI,GAEbpqI,KAAKqqI,QAAU,CACbtoH,EAAQ,KAAR,QACAA,EAAQ,KAAR,QACAA,EAAQ,KAAR,QACAA,EAAQ,KAAR,SAIF/hB,KAAKs9D,QAAU,GAGft9D,KAAK2gI,YAAc,yDASb9gI,EAAIytE,GAEV,IAAInP,EAASn+D,KAAKs9D,QAAQzoD,KAAK,SAAA/X,GAAC,OAAIA,EAAE2+C,QAAQ57C,EAAIytE,KAClD,GAAInP,EACF,OAAOA,EAGT,IAAIjW,EAASloD,KAAKqqI,QAAQx1H,KAAK,SAAA/W,GAAC,OAAIA,EAAE+B,KAAOA,IAC7C,IAAKqoD,EACH,MAAM,IAAIzlD,MAAJ,mBAAAsB,OAA6BlE,EAA7B,iBAOR,OAJAs+D,EAAS,IAAIjW,EAAOloD,KAAMstE,GAC1BttE,KAAKs9D,QAAQl4D,KAAK+4D,GAGXA,uCAIKA,GACZ,IAAK,IAAIniE,EAAI,EAAGA,EAAIgE,KAAKs9D,QAAQl6D,OAAQpH,IACvC,GAAIgE,KAAKs9D,QAAQthE,KAAOmiE,EACtB,OAAOn+D,KAAKs9D,QAAQ/oC,OAAOv4B,EAAG,0CAQpBu5E,GAEdv1E,KAAK2gI,YAAcprD,EAFC,IAAAnrE,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAKpB,QAAAgL,EAAAC,EAAcxK,KAAKs9D,QAAnBvgE,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAA4B,CAAAG,EAAAtN,MACxBqtI,qBAAqB/0D,IANL,MAAA5yE,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,6OChDHm7G,aACnB,SAAAA,EAAavF,EAASt/G,gGAAO2pI,CAAAvqI,KAAAylH,GAC3BzlH,KAAKkgH,QAAUA,EACflgH,KAAKY,MAAQA,0DAQLu/G,GACR,OAAOngH,KAAKkgH,QAAQsqB,SAASrqB,iCAUxBh0D,EAAOu0D,EAAWxmD,GACvB,OAAOl6D,KAAKkgH,QAAQuqB,MAAMt+E,EAAOu0D,EAAWxmD,sCASlCjI,GACV,OAAOjyD,KAAKkgH,QAAQwqB,WAAWz4E,oCAON,IAAnB6uD,EAAmBz+G,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,IAAAA,UAAA,GACzB,OAAOrC,KAAKkgH,QAAQwF,OAAO5E,6CAU3B,OAAO9gH,KAAKkgH,QAAQyqB,2DAQpB,OAAO3qI,KAAKkgH,QAAQsC,gEAQpB,OAAOxiH,KAAKkgH,QAAQ0qB,qDAQRC,GACZ,OAAO7qI,KAAKkgH,QAAQ4qB,aAAaD,sCAQvB5lF,GACV,OAAOjlD,KAAKkgH,QAAQ6qB,WAAW9lF,4CAQ/B,OAAOjlD,KAAKkgH,QAAQ8qB,6DAODrxE,GACnB,OAAO35D,KAAKkgH,QAAQ+qB,oBAAoBtxE,iDASnBxN,EAAOu0D,GAC5B,OAAO1gH,KAAKkgH,QAAQgrB,sBAAsB/+E,EAAOu0D,6CAIjD,OAAO1gH,KAAKkgH,QAAQirB,0DAGLh/E,GACf,OAAOnsD,KAAKkgH,QAAQqC,gBAAgBp2D,2CASrBi/E,GACf,OAAOprI,KAAKkgH,QAAQmrB,gBAAgBD,wCAQxBnmF,GACZ,OAAOjlD,KAAKkgH,QAAQorB,aAAarmF,2CAOlBsmF,GACf,OAAOvrI,KAAKkgH,QAAQsrB,gBAAgBD,2CAQrBlqB,GACf,OAAOrhH,KAAKkgH,QAAQurB,gBAAgBpqB,2CAIpC,OAAOrhH,KAAKkgH,QAAQwrB,sDASPv/E,EAAOu0D,GACpB,OAAO1gH,KAAKkgH,QAAQyrB,cAAcx/E,EAAOu0D,gDAQrBF,GACpB,OAAOxgH,KAAKkgH,QAAQ0rB,qBAAqBprB,yCAG5Bv7D,GACb,OAAOjlD,KAAKkgH,QAAQ2rB,cAAc5mF,sCASlC,IAAKjlD,KAAKY,MAAM0/G,cACd,OAAO,EAET,IAEIsF,EACItG,EAAiBt/G,KAAKY,MAAtB0+G,aAER,IAAKA,EACH,OAAO,EAET,IAME,OAHAsG,EAAqC,IADtBvG,IAAUC,GACM5gH,IACrB20B,KAAKvxB,MAEG8jH,EAAiB,IACnC,MAAOplH,GAEP,OAAO,mOCrNQsrI,aACnB,SAAAA,EAAah9E,gGAAQi9E,CAAA/rI,KAAA8rI,GACnB9rI,KAAK8uD,OAASA,4DAGJk9E,GACV,OAAOhsI,KAAK8uD,OAAOC,QAAQ,MAApB,oBAAAhrD,OAA+CioI,GAAc,IAAI,GACrE/8E,KAAK,SAACnvD,GAGL,IAFA,IAAMoH,EAAMpH,EAAKsD,OACX+G,EAAU,GACPnO,EAAI,EAAGA,EAAIkL,GAAM,CACxB,IAAM0D,EAAS9K,EAAK9D,GAAGO,KAAKkM,MAAM,cAClC0B,EAAQ/E,KACN,CACE6mI,YAAarhI,EAAO,GACpBA,OAAQA,EAAO,KAGnB5O,GAAK,EAEP,OAAOmO,0CAIES,EAAQq6C,GACrB,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAApB,yBAAAhrD,OAAqD6G,GAAUq6C,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAIA,EAAKslH,KAAKxkD,kDAG5F3b,GAChB,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAAQ,2BAA4B9J,GAAS,GAAMgK,KAAK,SAACnvD,GAAS,IACnFqK,EAA2BrK,EAA3BqK,QAAS+6C,EAAkBplD,EAAlBolD,MAAOs8E,EAAW1hI,EAAX0hI,OAElBryE,EAAe,GACfC,EAAa,GACbC,EAAc,GALuEjlD,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAO3F,QAAAgL,EAAAC,EAAcL,EAAdpN,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,EAAuB,KAAdjJ,EAAcoJ,EAAAtN,MACfqyD,EAAQnuD,EAAE5E,KAAKkM,MAAM,cACrB8mD,EAAOD,EAAM,GACnBH,EAAa/pD,KAAK,CAChBw8C,SAAU2N,EACV3kD,OAAQ0kD,EAAM,GACd3I,KAAMxlD,EAAEwlD,KACRrM,WAAYn5C,EAAEm5C,cAdyE,MAAA33C,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAklD,GAAA,EAAAC,GAAA,EAAAC,OAAAnwD,EAAA,IAkB3F,QAAAowD,EAAAC,EAAc1K,EAAdnoD,OAAA0N,cAAA+kD,GAAAG,EAAAC,EAAAllD,QAAAC,MAAA6kD,GAAA,EAAqB,KAAZhuD,EAAYmuD,EAAA1yD,MACnBmyD,EAAWhqD,KAAK,CACdw8C,SAAUpgD,EAAEogD,SACZ/hD,GAAI2B,EAAE3B,GACN8mD,KAAMnlD,EAAEmlD,KACRrM,WAAY94C,EAAE84C,cAvByE,MAAA33C,GAAA8sD,GAAA,EAAAC,EAAA/sD,EAAA,YAAA6sD,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAG,GAAA,EAAAC,GAAA,EAAAC,OAAAxwD,EAAA,IA2B3F,IA3B2F,IA2B3FywD,EA3B2FC,EAAA,eA2BlF54C,EA3BkF24C,EAAA/yD,MA4BjF2kD,EAAavqC,EAAE,oBAAfuqC,SACR,GAAiB,+BAAbA,EAA2C,CAC7C,IAAMsO,EAAM,IAAIlL,IAAM3tC,EAAG+3C,EAAWx6C,OAAO,SAAApT,GAAC,OAAIA,EAAEogD,WAAaA,IAAWuN,EAAav6C,OAAO,SAAAzT,GAAC,OAAIA,EAAEygD,WAAaA,KAClHyN,EAAYjqD,KAAK8qD,KAJrBC,EAAcqxE,EAAdzkI,OAAA0N,cAAAolD,GAAAG,EAAAG,EAAAzlD,QAAAC,MAAAklD,GAAA,EAAsBI,IA3BqE,MAAAttD,GAAAmtD,GAAA,EAAAC,EAAAptD,EAAA,YAAAktD,GAAA,MAAAM,EAAA,QAAAA,EAAA,oBAAAL,EAAA,MAAAC,GAkC3F,OAAOV,0CAIIpK,GACb,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAAQ,qBAAsB9J,GAAS,GAAMgK,KAAK,SAACnvD,GAAS,IAC7EqK,EAA2BrK,EAA3BqK,QAAS+6C,EAAkBplD,EAAlBolD,MAAOs8E,EAAW1hI,EAAX0hI,OAElBryE,EAAe,GACfC,EAAa,GACbC,EAAc,GALiEqP,GAAA,EAAAC,GAAA,EAAAC,OAAAr/D,EAAA,IAOrF,QAAAs/D,EAAAC,EAAc30D,EAAdpN,OAAA0N,cAAAi0D,GAAAG,EAAAC,EAAAp0D,QAAAC,MAAA+zD,GAAA,EAAuB,KAAdv9D,EAAc09D,EAAA5hE,MACfqyD,EAAQnuD,EAAE5E,KAAKkM,MAAM,cACrB8mD,EAAOD,EAAM,GACnBH,EAAa/pD,KAAK,CAChBw8C,SAAU2N,EACV3kD,OAAQ0kD,EAAM,GACd3I,KAAMxlD,EAAEwlD,KACRrM,WAAYn5C,EAAEm5C,cAdmE,MAAA33C,GAAAg8D,GAAA,EAAAC,EAAAj8D,EAAA,YAAA+7D,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAA4W,GAAA,EAAAC,GAAA,EAAAC,OAAAn2E,EAAA,IAkBrF,QAAAo2E,EAAAC,EAAc1wB,EAAdnoD,OAAA0N,cAAA+qE,GAAAG,EAAAC,EAAAlrE,QAAAC,MAAA6qE,GAAA,EAAqB,KAAZh0E,EAAYm0E,EAAA14E,MACnBmyD,EAAWhqD,KAAK,CACdw8C,SAAUpgD,EAAEogD,SACZ/hD,GAAI2B,EAAE3B,GACN8mD,KAAMnlD,EAAEmlD,KACRrM,WAAY94C,EAAE84C,cAvBmE,MAAA33C,GAAA8yE,GAAA,EAAAC,EAAA/yE,EAAA,YAAA6yE,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAM,GAAA,EAAAC,GAAA,EAAAC,OAAA32E,EAAA,IA2BrF,IA3BqF,IA2BrF42E,EA3BqFhB,EAAA,eA2B5E99D,EA3B4E8+D,EAAAl5E,MA4B3E2kD,EAAavqC,EAAE,oBAAfuqC,SACFsO,EAAM,IAAIlL,IAAM3tC,EAAG+3C,EAAWx6C,OAAO,SAAApT,GAAC,OAAIA,EAAEogD,WAAaA,IAAWuN,EAAav6C,OAAO,SAAAzT,GAAC,OAAIA,EAAEygD,WAAaA,KAClHyN,EAAYjqD,KAAK8qD,IAHnBkmB,EAAcorD,EAAdzkI,OAAA0N,cAAAurE,GAAAG,EAAAC,EAAA1rE,QAAAC,MAAAqrE,GAAA,EAAsBb,IA3B+D,MAAAxyE,GAAAszE,GAAA,EAAAC,EAAAvzE,EAAA,YAAAqzE,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAgCrF,OAAO7mB,wCAIEpK,GACX,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAAQ,wBAAyB9J,GAAS,GAAMgK,KAAK,SAACnvD,GAAS,IAChFqK,EAA2BrK,EAA3BqK,QAAS+6C,EAAkBplD,EAAlBolD,MAAOs8E,EAAW1hI,EAAX0hI,OAElBryE,EAAe,GACfC,EAAa,GACbC,EAAc,GALoE+yE,GAAA,EAAA8J,GAAA,EAAAC,OAAA5sI,EAAA,IAOxF,QAAA8iI,EAAAF,EAAch4H,EAAdpN,OAAA0N,cAAA23H,GAAAC,EAAAF,EAAAz3H,QAAAC,MAAAy3H,GAAA,EAAuB,KAAdjhI,EAAckhI,EAAAplI,MACfqyD,EAAQnuD,EAAE5E,KAAKkM,MAAM,cACrB8mD,EAAOD,EAAM,GACnBH,EAAa/pD,KAAK,CAChBw8C,SAAU2N,EACV3kD,OAAQ0kD,EAAM,GACd3I,KAAMxlD,EAAEwlD,KACRrM,WAAYn5C,EAAEm5C,cAdsE,MAAA33C,GAAAupI,GAAA,EAAAC,EAAAxpI,EAAA,YAAAy/H,GAAA,MAAAD,EAAA,QAAAA,EAAA,oBAAA+J,EAAA,MAAAC,GAAA,IAAAC,GAAA,EAAAC,GAAA,EAAAC,OAAA/sI,EAAA,IAkBxF,QAAAgtI,EAAAC,EAActnF,EAAdnoD,OAAA0N,cAAA2hI,GAAAG,EAAAC,EAAA9hI,QAAAC,MAAAyhI,GAAA,EAAqB,KAAZ5qI,EAAY+qI,EAAAtvI,MACnBmyD,EAAWhqD,KAAK,CACdw8C,SAAUpgD,EAAEogD,SACZ/hD,GAAI2B,EAAE3B,GACN8mD,KAAMnlD,EAAEmlD,KACRrM,WAAY94C,EAAE84C,cAvBsE,MAAA33C,GAAA0pI,GAAA,EAAAC,EAAA3pI,EAAA,YAAAypI,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAG,GAAA,EAAAC,GAAA,EAAAC,OAAAptI,EAAA,IA2BxF,IA3BwF,IA2BxFqtI,EA3BwFv3D,EAAA,eA2B/Eh+D,EA3B+Eu1H,EAAA3vI,MA4B9E2kD,EAAavqC,EAAE,oBAAfuqC,SACFsO,EAAM,IAAIlL,IAAM3tC,EAAG+3C,EAAWx6C,OAAO,SAAApT,GAAC,OAAIA,EAAEogD,WAAaA,IAAWuN,EAAav6C,OAAO,SAAAzT,GAAC,OAAIA,EAAEygD,WAAaA,KAClHyN,EAAYjqD,KAAK8qD,IAHnB28E,EAAcrL,EAAdzkI,OAAA0N,cAAAgiI,GAAAG,EAAAC,EAAAniI,QAAAC,MAAA8hI,GAAA,EAAsBp3D,IA3BkE,MAAA1yE,GAAA+pI,GAAA,EAAAC,EAAAhqI,EAAA,YAAA8pI,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAgCxF,OAAOt9E,8CAIQpK,GACjB,OAAOjlD,KAAK8uD,OAAOC,QAAQ,OAAQ,8BAA+B9J,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAIA,6CAG9EgnI,GAChB,OAAO9mI,KAAK8uD,OAAOC,QAAQ,OAAQ,qBAAsB,CACvDpB,MAAO,CACLpwD,IAAK,6BACLN,MAAO6pI,GAETgG,OAAQ,CACNxuI,KAAM,IACNuwD,OAAQ,MAET,GAAMI,KAAK,SAAAnvD,GAAQ,IACZqK,EAA4BrK,EAA5BqK,QAAS+6C,EAAmBplD,EAAnBolD,MACXs8E,EAD8B1hI,EAAZovD,QAGlBC,EAAe,GACfC,EAAa,GACbC,EAAc,GANA09E,GAAA,EAAAC,GAAA,EAAAC,OAAA1tI,EAAA,IAQpB,QAAA2tI,EAAAC,EAAchjI,EAAdpN,OAAA0N,cAAAsiI,GAAAG,EAAAC,EAAAziI,QAAAC,MAAAoiI,GAAA,EAAuB,KAAd5rI,EAAc+rI,EAAAjwI,MACfqyD,EAAQnuD,EAAE5E,KAAKkM,MAAM,cACrB8mD,EAAOD,EAAM,GACnBH,EAAa/pD,KAAK,CAChBw8C,SAAU2N,EACV3kD,OAAQ0kD,EAAM,GACd3I,KAAMxlD,EAAEwlD,KACRrM,WAAYn5C,EAAEm5C,cAfE,MAAA33C,GAAAqqI,GAAA,EAAAC,EAAAtqI,EAAA,YAAAoqI,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAG,GAAA,EAAAC,GAAA,EAAAC,OAAA/tI,EAAA,IAmBpB,QAAAguI,EAAAC,EAActoF,EAAdnoD,OAAA0N,cAAA2iI,GAAAG,EAAAC,EAAA9iI,QAAAC,MAAAyiI,GAAA,EAAqB,KAAZ5rI,EAAY+rI,EAAAtwI,MACnBmyD,EAAWhqD,KAAK,CACdw8C,SAAUpgD,EAAEogD,SACZ/hD,GAAI2B,EAAE3B,GACN8mD,KAAMnlD,EAAEmlD,KACRrM,WAAY94C,EAAE84C,cAxBE,MAAA33C,GAAA0qI,GAAA,EAAAC,EAAA3qI,EAAA,YAAAyqI,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAG,GAAA,EAAAC,GAAA,EAAAC,OAAApuI,EAAA,IA4BpB,IA5BoB,IA4BpBquI,EA5BoBC,EAAA,eA4BXx2H,EA5BWu2H,EAAA3wI,MA6BV2kD,EAAavqC,EAAE,oBAAfuqC,SACFsO,EAAM,IAAIlL,IAAM3tC,EAAG+3C,EAAWx6C,OAAO,SAAApT,GAAC,OAAIA,EAAEogD,WAAaA,IAAWuN,EAAav6C,OAAO,SAAAzT,GAAC,OAAIA,EAAEygD,WAAaA,KAClHyN,EAAYjqD,KAAK8qD,IAHnB49E,EAActM,EAAdzkI,OAAA0N,cAAAgjI,GAAAG,EAAAE,EAAApjI,QAAAC,MAAA8iI,GAAA,EAAsBI,IA5BF,MAAAlrI,GAAA+qI,GAAA,EAAAC,EAAAhrI,EAAA,YAAA8qI,GAAA,MAAAK,EAAA,QAAAA,EAAA,oBAAAJ,EAAA,MAAAC,GAiCpB,OAAOt+E,sCAIApK,GACT,OAAOjlD,KAAK8uD,OAAOC,QAAQ,QAAS,aAAc9J,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAIA,uCAGpEwiI,GACV,IAAMr9E,EAAU,CACd8oF,UAAWzL,GAEb,OAAOtiI,KAAK8uD,OAAOC,QAAQ,OAAQ,uBAAwB9J,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAIA,4UCxMtEkuI,aACnB,SAAAA,EAAa3wE,gGAAQ4wE,CAAAjuI,KAAAguI,GACnBhuI,KAAK2nD,OAAS0V,EACdr9D,KAAKkuI,SAAW,IAAIpC,EAASzuE,EAAOvO,sEAS1Bk9E,GACV,OAAOhsI,KAAKkuI,SAASC,WAAWnC,sCAWtB96E,GAAwC,IAAlCk9E,EAAkC/rI,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAArB,WAAYgsI,EAAShsI,UAAAe,OAAA,EAAAf,UAAA,QAAA9C,EAE9C0lD,EAAU,GACd,GAAoB,iBAATiM,EAEL,sBAAsB1nD,KAAK0nD,IAExBk9E,EAAW3sF,WAAW,SACzB2sF,EAAa,MAAQA,GAIvBnpF,EAAQ,yBAA2BiM,IACH,IAAvBA,EAAKj8C,QAAQ,KACtBgwC,EAAQ,mBAAqBiM,EACE,IAAtBA,EAAKj8C,QAAQ,KACtBgwC,EAAQ,0BAA4BiM,EAEpCjM,EAAQ,gBAAkBiM,OAI5B,GAAIA,EAAKsvD,OACPv7D,EAAQ,gBAAkBiM,EAAKsvD,YAC1B,GAAItvD,EAAKo9E,YACdrpF,EAAQ,0BAA4BiM,EAAKo9E,gBACpC,KAAIp9E,EAAKq9E,MAGd,OAAOp4G,QAAQ8lB,OAAO,CAAE+nD,KAAM,oBAAqBphG,QAAO,2HAF1DqiD,EAAQ,mBAAqBiM,EAAKq9E,MAOtC,OAAOvuI,KAAKwuI,cAAcH,EAASD,EAAYnpF,yCAGlCopF,EAASzjI,EAAQq6C,GAC9B,IAAIwpF,EAAQ,GACZ,OAAQ7jI,GACN,IAAK,WACH6jI,EAAMrpI,KAAKpF,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBsG,EAAS,yBAA0B,MACxG,MAEF,IAAK,OACHI,EAAMrpI,KAAKpF,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBsG,EAAS,2BAA4BppF,IAC1GwpF,EAAMrpI,KAAKpF,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBsG,EAAS,4BAA4B,IAC1G,MAEF,IAAK,SACHI,EAAMrpI,KAAKpF,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBsG,EAAS,4BAA4B,IAC1G,MAEF,IAAK,SACHI,EAAMrpI,KAAKpF,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBsG,EAAS,yBAA0B,MAO5G,OAAOruI,KAAKkuI,SAASM,cAAc5jI,EAAQlO,OAAO25C,OAAO,CAAE03F,UAAWM,GAAWppF,IAA1E,MAA0F,SAAAtiD,GAE/F,MADA8rI,EAAMp5H,IAAI,SAAAg0C,GAAC,OAAIA,MACT1mD,wCAMGi/H,EAAOz8E,GAElB,IAAIupF,EAAO1uI,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiB5iF,EAAWtlD,GAAI,6BAA8B+hI,EAAM/hI,IAExH,OAAOG,KAAK2nD,OAAOmH,OAAOC,QAAQ,QAAS,aAAc,CAAEqmB,IAAK,CAACjwB,EAAWtlD,IAAKopD,UAAW24E,EAAM/hI,KAAM,GAAjG,MAA6G,SAAA8C,GAGlH,MADA+rI,IACM/rI,kCAKHi/H,GAAO,IAAA16E,EAAAlnD,KAER2uI,EAAc/M,EAAMtnF,WAAW2O,WAAa,IAEhD,OAAOjpD,KAAK4uI,iBAAiBhN,EAAM/hI,IAAIovD,KAAK,SAAA4zE,GAE1C,OAAO1sG,QAAQq6C,IAAIqyD,EAASxtH,IAAI,SAAAw5H,GAE9B,IAAIH,EAAOxnF,EAAKS,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiB8G,EAAMhvI,GAAI,6BAA8B8uI,GAE7G,OAAOznF,EAAKS,OAAOmH,OAAOC,QAAQ,QAAS,aAAc,CAAEqmB,IAAK,CAACy5D,EAAMhvI,IAAKopD,UAAW0lF,IAAe,GAA/F,MAA2G,SAAAhsI,GAGhH,MADA+rI,IACM/rI,oDAaZ,OAAO3C,KAAK2nD,OAAOV,SAASkX,OAAO,aAAathE,yEAS7BiyI,sGAEK,iBAAbA,IACTA,EAAW,CAACA,IAIVtN,EAAS,iCACEsN,2EAANjvI,oBACWG,KAAK2nD,OAAOV,SAASkX,OAAO,aAAamY,QAAQz2E,gBAA/D+hI,2BAEFJ,EAAOp8H,KAAKw8H,uUAMZJ,EAAOp+H,SAAW0rI,EAAS1rI,iDACtBo+H,oCAIFxhI,KAAK2nD,OAAOV,SAASkX,OAAO,MAAO2wE,GAAUjyI,8UAUzCkyI,EAAYC,GAA6B,IAAnBp6H,EAAmBvS,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAAV,SACpC4iD,EAAU,CACdmiF,YAAa,CACXF,IAAK6H,EAAW7H,IAChBC,IAAK4H,EAAW5H,KAElBF,UAAW,CACTC,IAAK8H,EAAS9H,IACdC,IAAK6H,EAAS7H,KAEhBvyH,UAGF,OAAO5U,KAAKkuI,SAASe,YAAYhqF,6CAahB8pF,EAAYC,GAAyC,IAA/B3gG,EAA+BhsC,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAAnB,EAAGuS,EAAgBvS,UAAAe,OAAA,QAAA7D,IAAA8C,UAAA,GAAAA,UAAA,GAAP,MACzD4iD,EAAU,CACdmiF,YAAa,CACXF,IAAK6H,EAAW7H,IAChBC,IAAK4H,EAAW5H,KAElBF,UAAW,CACTC,IAAK8H,EAAS9H,IACdC,IAAK6H,EAAS7H,KAEhB94F,YACAz5B,UAGF,OAAO5U,KAAKkuI,SAASgB,kBAAkBjqF,4CAQvB6hF,GAGhB,OAAI9mI,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa91D,IAAIy+H,GAGxC9mI,KAAK2nD,OAAOV,SAASkX,OAAO,aAAathE,MAAMoyD,KAAK,SAAA4zE,GACzD,OAAOA,EAASjuH,OAAO,SAAAyC,GAAC,OAAIA,EAAEijC,WAAW2O,YAAc69E,MAMpD9mI,KAAKkuI,SAASU,iBAAiB9H,uCAI5BqI,EAASR,GAGnB,IAAID,EAAO1uI,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBoH,EAAS,6BAA8BR,GAG5G,OAAO3uI,KAAK2nD,OAAOmH,OAAOC,QAAQ,QAAS,aAAc,CAAEqmB,IAAK,CAAC+5D,GAAUlmF,UAAW0lF,IAAe,GAA9F,MAA0G,SAAAhsI,GAI/G,MADA+rI,IACM/rI,sCAWCsiD,GACT,IAAImqF,EAAgB,CAClBh6D,IAAK,CAACnwB,EAAQplD,IACdopD,UAAWhE,EAAQgE,WAErB,OAAOjpD,KAAKkuI,SAASmB,UAAUD,sCAQrB9M,GACV,IAAImM,EAAQ,GAEZ,OADAA,EAAMrpI,KAAKpF,KAAK2nD,OAAOV,SAASkX,OAAO,aAAa4pE,iBAAiBzF,EAAS,yBAA0B,MACjGtiI,KAAKkuI,SAASoB,WAAWhN,GAAzB,MAAwC,SAAA3/H,GAE7C,MADA8rI,EAAMp5H,IAAI,SAAAg0C,GAAC,OAAIA,MACT1mD,mNCrRS4sI,aACnB,SAAAA,EAAaC,gGAAaC,CAAAzvI,KAAAuvI,GACxBvvI,KAAKwvI,YAAcA,6DAQnB,OAAOxvI,KAAKwvI,YAAYE,mDAQRnzI,GAChB,OAAOyD,KAAKwvI,YAAYG,eAAepzI,uCAS5BsD,EAAI+C,GACf,OAAO5C,KAAKwvI,YAAY9H,YAAY7nI,EAAI+C,kNC9BvBgtI,aACnB,SAAAA,EAAa9gF,gGAAQ+gF,CAAA7vI,KAAA4vI,GACnB5vI,KAAK8uD,OAASA,2DAId,OAAO9uD,KAAK8uD,OAAOC,QAAQ,OAAQ,yBAA0B,IAAI,GAAME,KAAK,SAAAnvD,GAAI,OAAIA,EAAK4vI,iDAG3EnzI,GACd,IAAM0oD,EAAU,CACd1oD,OACA4iG,OAAQ,GACR15F,MAAO,KAET,OAAOzF,KAAK8uD,OAAOC,QAAQ,OAAQ,gCAAiC9J,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAIA,wCAGrFD,EAAI+C,GACf,IAAMqiD,EAAU,CACdriD,UACA/C,MAEF,OAAOG,KAAK8uD,OAAOC,QAAQ,OAAQ,mBAAoB9J,GAAS,GAAMgK,KAAK,SAAAnvD,GAAI,OAAIA,u3BC1BlEgwI,cAEjB,SAAAA,EAAalvI,EAAOkuD,GAAQ,IAAA5H,EAAA,mGAAA6oF,CAAA/vI,KAAA8vI,IACxB5oF,EAAAC,EAAAnnD,KAAAonD,EAAA0oF,GAAA3zI,KAAA6D,QAEKY,MAAQA,EACbsmD,EAAK4H,OAASA,EACd5H,EAAK8oF,QAAU,GALS9oF,wPAFa/iD,6CAwB/B,IAAA6kD,EAAAhpD,KAGN,GAA2B,GAAvBA,KAAKgwI,QAAQ5sI,OAAa,CAG1B,IAAI6sI,EAAYjwI,KAAKY,MAAMsvI,iBACH,iBAAbD,IACPA,EAAY,CAACA,IALS,IAAA7lI,GAAA,EAAAC,GAAA,EAAAC,OAAA/K,EAAA,IAQ1B,QAAAgL,EAAAC,EAAoBylI,EAApBlzI,OAAA0N,cAAAL,GAAAG,EAAAC,EAAAE,QAAAC,MAAAP,GAAA,OAASquD,EAATluD,EAAAtN,MACI+C,KAAKgwI,QAAQ5qI,KAAK,IAAIwiD,IAAW5nD,KAAKY,MAAOZ,KAAK8uD,OAAQ2J,KATpC,MAAA91D,GAAA0H,GAAA,EAAAC,EAAA3H,EAAA,YAAAyH,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAAA,IAAAklD,GAAA,EAAAC,GAAA,EAAAC,OAAAnwD,EAAA,IAY1B,QAAAowD,EAAAC,EAAmB5vD,KAAKgwI,QAAxBjzI,OAAA0N,cAAA+kD,GAAAG,EAAAC,EAAAllD,QAAAC,MAAA6kD,GAAA,EAAiC,KAAxB9H,EAAwBiI,EAAA1yD,MAC7ByqD,EAAOm/D,QAAU7mH,KAAK6mH,QAAQrpH,KAAKwC,MACnC0nD,EAAOyoF,aAAenwI,KAAKmwI,aAAa3yI,KAAKwC,MAC7C0nD,EAAOxiD,KAAOlF,KAAKkF,KAAK1H,KAAKwC,OAfP,MAAA2C,GAAA8sD,GAAA,EAAAC,EAAA/sD,EAAA,YAAA6sD,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,IAqB9B,OAAOv5B,QAAQq6C,IAAIxwE,KAAKgwI,QAAQ36H,IAAI,SAAAtX,GAAC,OAAIA,EAAE8pD,aAAYoH,KAAK,SAAAzuD,GAAC,OAAIwoD,wCAQxDy9D,GAAK,IAAA52D,GAAA,EAAAC,GAAA,EAAAC,OAAAxwD,EAAA,IAGd,QAAAywD,EAAAG,EAAmBnwD,KAAKgwI,QAAxBjzI,OAAA0N,cAAAolD,GAAAG,EAAAG,EAAAzlD,QAAAC,MAAAklD,GAAA,GAAAG,EAAA/yD,MACWyqI,YAAYjhB,IAJT,MAAA9jH,GAAAmtD,GAAA,EAAAC,EAAAptD,EAAA,YAAAktD,GAAA,MAAAM,EAAA,QAAAA,EAAA,oBAAAL,EAAA,MAAAC,oCAaT,IAAA2O,GAAA,EAAAC,GAAA,EAAAC,OAAAr/D,EAAA,IAGL,QAAAs/D,EAAAC,EAAmB9+D,KAAKgwI,QAAxBjzI,OAAA0N,cAAAi0D,GAAAG,EAAAC,EAAAp0D,QAAAC,MAAA+zD,GAAA,GAAAG,EAAA5hE,MAAwC2tD,SAHnC,MAAAjoD,GAAAg8D,GAAA,EAAAC,EAAAj8D,EAAA,YAAA+7D,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAIL5+D,KAAKgwI,QAAU,kCA1Df,QAAShwI,KAAKgwI,QAAQn7H,KAAK,SAAA9W,GAAC,OAAIA,EAAEwpI,+mBCDrB5/E,cACnB,SAAAA,EAAa1C,GAAS,IAAAiC,+FAAAkpF,CAAApwI,KAAA2nD,GACpBT,uEAAAmpF,CAAArwI,KAAAswI,EAAA3oF,GAAAxrD,KAAA6D,OACA,IAAMqjD,EAAS4B,EAAQ5B,QAAU4B,EAAQq8D,MAEzCp6D,EAAKtmD,MAAQ,IAAIs+G,IAAM77D,GACvB6D,EAAKtmD,MAAM0gH,MAAQr8D,EAAQq8D,MAC3Bp6D,EAAKtmD,MAAMikH,OAAS5/D,EAAQ4/D,QAAU,wBACtC39D,EAAKtmD,MAAMsvI,iBAAmBjrF,EAAQirF,kBAAoB,wBAE1DhpF,EAAKD,SAAW,IAAImjF,EAAJmG,EAAArpF,IAChBA,EAAKD,SAASU,OAAd4oF,EAAArpF,GACAA,EAAKD,SAASg6E,cAAgBh8E,EAAQg8E,cACtC/5E,EAAK4H,OAAS,IAAIw1D,IAAJisB,EAAArpF,IAEd,IAAMspF,EAAU,IAAItwB,IAAJqwB,EAAArpF,IACVsoF,EAAc,IAAII,EAAY1oF,EAAK4H,QAfrB,OAiBpB5H,EAAKqoF,SAAW,IAAIA,EAASC,GAC7BtoF,EAAKU,WAAa,IAAIkoF,EAAgB5oF,EAAKtmD,MAAOsmD,EAAK4H,QACvD5H,EAAKu+D,YAAc,IAAIA,EAAY+qB,EAAStpF,EAAKtmD,OACjDsmD,EAAK8mF,OAAS,IAAIA,EAAJuC,EAAArpF,IAEVA,EAAKu+D,YAAYgrB,YACnBvpF,EAAKD,SAASw5D,eAAe,CAAED,OAAQt5D,EAAKtmD,MAAM4/G,OAAQ1xD,OAAQ5H,EAAK4H,SAvBrD5H,8OADY/iD,kBCrBpCvI,EAAAU,EAAAsN,EAAA,4BAAA8mI,IAAA90I,EAAAU,EAAAsN,EAAA,6BAAAyjD,EAAA,IAiBqB,oBAAVltD,SAAuBA,OAAOwwI,cAAgB,CACrD1vI,QAAS8gB,EAAQ,KAAmB9gB","file":"blockv-sdk.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 157);\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","\r\n/**\r\n * Represents a raw data object, potentially without any data, which is monitored by a region.\r\n */\r\nexport default class DataObject {\r\n\r\n constructor(type, id, data) {\r\n\r\n /** Object type */\r\n this.type = type\r\n\r\n /** Object identifier */\r\n this.id = id\r\n\r\n /** Object revision, if any */\r\n this.rev = null\r\n\r\n /** Object payload, if any */\r\n this.data = data\r\n\r\n /** \r\n * Cached object. Plugins map this raw data object to their own types, this is used to cache\r\n * those types if there have been no changes.\r\n */\r\n this.cached = null\r\n\r\n }\r\n\r\n}","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nvar now = require(\"date-now\")\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","\r\n/** \r\n * This class handles executing code on the next run loop. This is the same as `setImmediate()` or `setTimeout(..., 0)` except\r\n * it doesn't create so many timers.\r\n */\r\nexport default new class Delayer {\r\n\r\n constructor() {\r\n\r\n /** List of functions to execute on the next run loop */\r\n this.pending = []\r\n\r\n /** Timer to execute pending actions */\r\n this.timer = null\r\n\r\n // Bind function\r\n this.executePendingActions = this.executePendingActions.bind(this)\r\n\r\n }\r\n\r\n /** Schedule an action */\r\n run(func) {\r\n\r\n // Add to list\r\n this.pending.push(func)\r\n\r\n // Start timer if needed\r\n if (!this.timer)\r\n this.timer = setTimeout(this.executePendingActions, 0)\r\n\r\n }\r\n\r\n /** @private Called to execute pending actions */\r\n executePendingActions() {\r\n\r\n // Remove timer\r\n this.timer = null\r\n\r\n // Perform each action\r\n let actions = this.pending\r\n this.pending = []\r\n for (let action of actions) {\r\n\r\n // Catch errors\r\n try {\r\n action()\r\n } catch (err) {\r\n console.error('Delayed action failed: ', err)\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.14';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\nimport urlParse from 'url-parse'\r\nexport default class Vatom {\r\n constructor (payload, faces, actions) {\r\n this.payload = payload\r\n this.faces = faces\r\n this.actions = actions\r\n }\r\n\r\n get id () {\r\n return this.payload.id\r\n }\r\n\r\n get private () {\r\n return this.payload.private\r\n }\r\n\r\n get unpublished () {\r\n return this.payload.unpublished\r\n }\r\n\r\n get version () {\r\n return this.payload.version\r\n }\r\n\r\n get sync () {\r\n return this.payload.sync\r\n } \r\n\r\n get whenCreated () {\r\n return this.payload.when_created\r\n }\r\n\r\n get whenModified () {\r\n return this.payload.when_modified\r\n }\r\n\r\n get properties () {\r\n return this.payload['vAtom::vAtomType']\r\n }\r\n\r\n /** True if this is a folder vatom */\r\n get isFolder () {\r\n return this.properties['root_type'].indexOf('ContainerType') !== -1\r\n }\r\n\r\n /** True if this is a defined folder vatom, ie a folder that can only accept certain types of child vatoms. */\r\n get isDefinedFolder () {\r\n return this.properties['root_type'].indexOf('DefinedFolderContainerType') !== -1\r\n }\r\n\r\n /** True if this is a discover folder vatom, ie a folder whose contents are fetched by performing the `Discover` action on it. */\r\n get isDiscoverFolder () {\r\n return this.properties['root_type'].indexOf('DiscoverFolderContainerType') != -1\r\n }\r\n\r\n canPerformAction (action) {\r\n return this.actions.find(a => a.name.indexOf(action) !== -1)\r\n }\r\n\r\n canCombineWith (otherVatom) {\r\n // Stop if null or ourselves\r\n if (!otherVatom || this.id === otherVatom.id) {\r\n return false\r\n }\r\n\r\n // If it's not a folder, deny\r\n if (!this.isFolder) {\r\n return false\r\n }\r\n\r\n // If it's not a defined folder, allow\r\n if (!this.isDefinedFolder) {\r\n return true\r\n }\r\n\r\n // Get child policies\r\n let policies = this.properties['child_policy'] || []\r\n\r\n // Make child policies a little easier for us to understand\r\n policies = policies.map(p => ({\r\n templateVariation: p.template_variation,\r\n maxCount: (p.creation_policy && p.creation_policy.policy_count_max) || 9999,\r\n enforceMaxCount: (p.creation_policy && p.creation_policy.enforce_policy_count_max) || false\r\n }))\r\n\r\n // Make sure we have a match\r\n for (let policy of policies) {\r\n // Check if template variation matches\r\n if (policy.templateVariation === otherVatom.properties.template_variation) {\r\n return true\r\n }\r\n }\r\n\r\n // No match found, deny\r\n return false\r\n }\r\n\r\n /** Checks if this vatom has an icon face */\r\n containsIconFace () {\r\n return !!this.faces.find(f => (f.properties.constraints.platform === 'web' || f.properties.constraints.platform === 'generic') && f.properties.constraints.view_mode === 'icon')\r\n }\r\n\r\n /** Checks if this vatom has a card face */\r\n containsCardFace () {\r\n return !!this.faces.find(f => (f.properties.constraints.platform === 'web' || f.properties.constraints.platform === 'generic') && f.properties.constraints.view_mode === 'card')\r\n }\r\n\r\n /** Checks if this vatom has a fullscreen face */\r\n containsFullscreenFace () {\r\n return !!this.faces.find(f => (f.properties.constraints.platform === 'web' || f.properties.constraints.platform === 'generic') && f.properties.constraints.view_mode === 'fullscreen')\r\n }\r\n\r\n /** TO DO: Implement in next release\r\n\r\n static mapString (o) {\r\n return Object.keys(o).map(key => `${key}=${o[key]}`).join('&')\r\n }\r\n\r\n encodeResource (url) {\r\n const aP = this.store.assetProvider\r\n const aPlen = aP.length\r\n const compare = urlParse(url)\r\n for (let i = 0; i < aPlen; i += 1) {\r\n const comparethis = urlParse(aP[i].uri)\r\n if (compare.hostname === comparethis.hostname) {\r\n // same uri so get the policy signature and key and append\r\n const queryString = Vatom.mapString(aP[i].descriptor)\r\n return `${url}?${queryString}`\r\n }\r\n }\r\n return url\r\n }\r\n\r\n getResource (resourceName, customPath) {\r\n let payloadResource = (customPath || this.payload['vAtom::vAtomType'].resources).find(r => r.name === resourceName)\r\n return this.encodeResource(payloadResource.value.value)\r\n }\r\n */\r\n}\r\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","\r\nimport Region from '../Region'\r\nimport Vatom from '../../../model/Vatom'\r\nimport DataObjectAnimator from '../DataObjectAnimator'\r\nimport { merge } from 'lodash'\r\nimport Delayer from '../Delayer'\r\n\r\n/**\r\n * Intermediate class which handles updates via the BLOCKv websocket and returning Vatom objects. Regions can subclass this to automatically\r\n * get updates via WebSocket.\r\n */\r\nexport default class BLOCKvRegion extends Region {\r\n constructor (dataPool) {\r\n super(dataPool)\r\n\r\n // Queue of pending WebSocket messages\r\n this.queuedMessages = []\r\n this.socketPaused = false\r\n this.socketProcessing = false\r\n\r\n // Bind functions\r\n this.onWebSocketMessage = this.onWebSocketMessage.bind(this)\r\n\r\n // Add listeners for the WebSocket\r\n this.socket = this.dataPool.Blockv.WebSockets\r\n this.socket.connect()\r\n this.socket.addEventListener('websocket.raw', this.onWebSocketMessage)\r\n\r\n // Monitor for timed updates\r\n DataObjectAnimator.withBlockv(dataPool.Blockv).addRegion(this)\r\n }\r\n\r\n /** Called when this region is going to be shut down */\r\n close () {\r\n super.close()\r\n // Remove listeners\r\n this.socket.removeEventListener('websocket.raw', this.onWebSocketMessage)\r\n DataObjectAnimator.withBlockv(this.dataPool.Blockv).removeRegion(this)\r\n }\r\n\r\n /**\r\n * Called to pause processing of websocket messages\r\n * @private Called by subclasses.\r\n */\r\n pauseMessages () {\r\n this.socketPaused = true\r\n }\r\n\r\n /**\r\n * Called to resume processing of websocket messages\r\n *\r\n * @private Called by subclasses.\r\n */\r\n resumeMessages () {\r\n // Unpause\r\n this.socketPaused = false\r\n\r\n // Process next message if needed\r\n if (!this.socketProcessing) {\r\n this.processNextMessage()\r\n }\r\n }\r\n\r\n /**\r\n * Called when there's a new event message via the WebSocket.\r\n *\r\n * @private\r\n * @param {Object} msg The raw JSON from the websocket event message\r\n */\r\n onWebSocketMessage (msg) {\r\n // Add to queue\r\n this.queuedMessages.push(msg)\r\n\r\n // Process it if necessary\r\n if (!this.socketPaused && !this.socketProcessing) {\r\n this.processNextMessage()\r\n }\r\n }\r\n\r\n /**\r\n * Called to process the next WebSocket message.\r\n */\r\n async processNextMessage () {\r\n // Stop if socket is paused\r\n if (this.socketPaused) {\r\n return\r\n }\r\n\r\n // Stop if already processing\r\n if (this.socketProcessing) {\r\n return\r\n }\r\n this.socketProcessing = true\r\n\r\n // Get next msg to process\r\n let msg = this.queuedMessages.shift()\r\n if (!msg) {\r\n\r\n // No more messages!\r\n this.socketProcessing = false\r\n return\r\n\r\n }\r\n\r\n // Process message\r\n try {\r\n\r\n // Process message\r\n await this.processMessage(msg)\r\n\r\n } catch (err) {\r\n\r\n // Error!\r\n console.warn('[DataPool > BVWebSocketRegion] Error processing WebSocket message! ' + err.message, msg)\r\n\r\n }\r\n\r\n // Done, process next message\r\n this.socketProcessing = false\r\n this.processNextMessage()\r\n }\r\n\r\n /**\r\n * Processes a WebSocket message.\r\n *\r\n * @private Called by BVWebSocketRegion.\r\n * @abstract Subclasses can override to process other WebSocket messages. Always call super.processMessage(msg) though.\r\n * @param {Object} msg The raw JSON from the websocket event message\r\n */\r\n async processMessage (msg) {\r\n\r\n // We only handle state_update messages here\r\n if (msg.msg_type != 'state_update')\r\n return\r\n\r\n // Get vatom ID\r\n let vatomID = msg.payload && msg.payload.id\r\n if (!vatomID) {\r\n throw new Error(`Got websocket message with no vatom ID in it.`)\r\n }\r\n\r\n // Ensure it's formatted correctly\r\n if (!msg.payload.new_object) {\r\n throw new Error(`WebSocket message had no new object payload.`)\r\n }\r\n\r\n // Update existing objects\r\n this.updateObjects([{\r\n id: msg.payload.id,\r\n new_data: msg.payload.new_object\r\n }])\r\n }\r\n\r\n /** Map our data objects to Vatom objects */\r\n map (object) {\r\n // Only handle vatoms\r\n if (object.type !== 'vatom') {\r\n return null\r\n }\r\n\r\n // Fetch all faces linked to this vatom\r\n let faces = Array.from(this.objects.values()).filter(o => o.type === 'face' && o.data.template === object.data['vAtom::vAtomType'].template).map(o => o.data)\r\n\r\n // Fetch all actions linked to this vatom\r\n let actions = Array.from(this.objects.values()).filter(o => o.type === 'action' && o.data.name.startsWith(object.data['vAtom::vAtomType'].template + '::Action::')).map(o => o.data)\r\n\r\n // Create vatom object\r\n return new Vatom(object.data, faces, actions)\r\n }\r\n\r\n /**\r\n * Called when an object is about to be added.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject} object The object which will be added.\r\n */\r\n willAdd (object) {\r\n // Notify parent as well\r\n let parent = object.data && object.data['vAtom::vAtomType'] && object.data['vAtom::vAtomType'].parent_id\r\n if (parent) {\r\n Delayer.run(e => this.emit('object.updated', parent))\r\n }\r\n // If our DataObjectAnimator has a scheduled update for this object, include that change now. This is to work around map objects jumping around when a new region is created.\r\n let nextUpdate = DataObjectAnimator.withBlockv(this.dataPool.Blockv).changes.find(u => u.id === object.id)\r\n if (nextUpdate) {\r\n merge(object.data, nextUpdate.new_data)\r\n }\r\n }\r\n\r\n /**\r\n * Called when an object is about to be updated.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject} object The object which will be updated.\r\n * @param {Object} newData The sparse object containing the changed fields\r\n */\r\n willUpdateFields (object, newData) {\r\n // Notify parent as well\r\n let oldParent = object.data && object.data['vAtom::vAtomType'] && object.data['vAtom::vAtomType'].parent_id\r\n let newParent = newData && newData['vAtom::vAtomType'] && newData['vAtom::vAtomType'].parent_id\r\n if (newParent) { Delayer.run(e => this.emit('object.updated', oldParent)) }\r\n if (newParent) { Delayer.run(e => this.emit('object.updated', newParent)) }\r\n }\r\n\r\n /**\r\n * Called when an object is about to be updated.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject} object The object which will be updated.\r\n * @param {String} keyPath The field which will be changed.\r\n * @param {*} oldValue The current field value.\r\n * @param {*} newValue The new field value.\r\n */\r\n willUpdateField (object, keyPath, oldValue, newValue) {\r\n // Only do if modifying the parent ID field\r\n if (keyPath !== 'vAtom::vAtomType.parent_id') {\r\n return\r\n }\r\n // Notify parent\r\n Delayer.run(e => this.emit('object.updated', oldValue))\r\n Delayer.run(e => this.emit('object.updated', newValue))\r\n }\r\n\r\n /**\r\n * Called when an object is about to be removed.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject|String} objectOrID The object (or ID) which will be updated.\r\n */\r\n willRemove (objectOrID) {\r\n // Get object if needed\r\n let object = objectOrID\r\n if (typeof objectOrID === 'string') {\r\n object = this.objects.get(objectOrID)\r\n }\r\n // Notify parent as well\r\n let parent = object && object.data && object.data['vAtom::vAtomType'] && object.data['vAtom::vAtomType'].parent_id\r\n if (parent) {\r\n Delayer.run(e => this.emit('object.updated', parent))\r\n }\r\n }\r\n}\r\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 id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nmodule.exports = argsArray;\n\nfunction argsArray(fun) {\n return function () {\n var len = arguments.length;\n if (len) {\n var args = [];\n var i = -1;\n while (++i < len) {\n args[i] = arguments[i];\n }\n return fun.call(this, args);\n } else {\n return fun.call(this, []);\n }\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","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","'use strict';\n\nvar base64_url_decode = require('./base64_url_decode');\n\nfunction InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\nmodule.exports = function (token,options) {\n if (typeof token !== 'string') {\n throw new InvalidTokenError('Invalid token specified');\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split('.')[pos]));\n } catch (e) {\n throw new InvalidTokenError('Invalid token specified: ' + e.message);\n }\n};\n\nmodule.exports.InvalidTokenError = InvalidTokenError;\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\n//\r\n// EventEmitter class\r\n// This class provides simple event functionality for classes, with Promise support.\r\n// Usage for once-off event listeners:\r\n// myObj.when(\"closed\").then(function(data) {\r\n// alert(\"Closed! \" + data);\r\n// });\r\n//\r\n// Usage for permanent event listeners:\r\n// myObj.on(\"closed\", function(data) {\r\n// alert(\"Closed! \" + data);\r\n// });\r\n//\r\n// Usage when triggering an event from a subclass:\r\n// this.emit(\"closed\", \"customData\");\r\n\r\nclass EventEmitter {\r\n /**\r\n * Adds an event listener. If callback is null, a Promise will be returned.\r\n * Note that if using the Promise\r\n * it will only be triggered on the first event emitted. */\r\n\r\n when (eventName, callback = null) {\r\n // Make sure event listener object exists\r\n this.privateEventListeners = this.privateEventListeners || {}\r\n\r\n // Make sure event listener array exists\r\n this.privateEventListeners[eventName] = this.privateEventListeners[eventName] || []\r\n\r\n // Check if using promise form\r\n if (callback) {\r\n // Just add the callback\r\n this.privateEventListeners[eventName].push(callback)\r\n return null\r\n }\r\n // Return the promise\r\n return new Promise((resolve) => {\r\n // Promise callbacks can only be used once\r\n // eslint-disable-next-line no-param-reassign\r\n resolve.removeAfterCall = true\r\n\r\n // Add success handler to event listener array\r\n this.privateEventListeners[eventName].push(resolve)\r\n })\r\n }\r\n\r\n /** Synonyms */\r\n on () {\r\n return this.when.apply(this, arguments)\r\n }\r\n\r\n addEventListener () {\r\n return this.when.apply(this, arguments)\r\n }\r\n\r\n /** Remove event listener */\r\n removeEventListener (eventName, callback) {\r\n // Make sure event listener object exists\r\n this.privateEventListeners = this.privateEventListeners || {}\r\n\r\n // Make sure event listener array exists\r\n this.privateEventListeners[eventName] = this.privateEventListeners[eventName] || []\r\n\r\n // Find and remove it\r\n for (let i = 0; i < this.privateEventListeners[eventName].length; i += 1) {\r\n if (this.privateEventListeners[eventName][i] === callback) {\r\n this.privateEventListeners[eventName].splice(i, 1)\r\n i -= 1\r\n }\r\n }\r\n }\r\n\r\n off () {\r\n return this.removeEventListener.apply(this, arguments)\r\n }\r\n\r\n /** Triggers an event. Each argument after the first one will be passed to event listeners */\r\n emit (eventName) {\r\n // Setup the once-off promise if one of it's events were triggered\r\n // if (eventName == \"success\" || eventName == \"failed\")\r\n // this._setupPromise();\r\n\r\n // Get list of callbacks\r\n const callbacks = (this.privateEventListeners && this.privateEventListeners[eventName]) || []\r\n // Call events\r\n let passArguments = Array.from(arguments).slice(1)\r\n callbacks.forEach((callback) => {\r\n callback.apply(this, passArguments)\r\n })\r\n\r\n // Remove callbacks that can only be called once\r\n for (let i = 0; i < callbacks.length; i += 1) {\r\n if (callbacks[i].removeAfterCall) {\r\n callbacks.splice(i, 1)\r\n i -= 1\r\n }\r\n }\r\n }\r\n\r\n /** Synonyms */\r\n trigger () {\r\n return this.emit.apply(this, arguments)\r\n }\r\n\r\n triggerEvent () {\r\n return this.emit.apply(this, arguments)\r\n }\r\n}\r\n\r\n// Apply as a mixin to a class or object\r\nEventEmitter.mixin = function eventEmitterMixin (otherClass) {\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const prop in EventEmitter.prototype) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (EventEmitter.prototype.hasOwnProperty(prop)) {\r\n // eslint-disable-next-line no-param-reassign\r\n otherClass[prop] = EventEmitter.prototype[prop]\r\n }\r\n }\r\n}\r\nmodule.exports = EventEmitter\r\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\nimport Vatom from '../model/Vatom'\r\n\r\nexport default class Discover {\r\n constructor (bv, customPayload) {\r\n this.bv = bv\r\n // Setup default vars\r\n this.overridePayload = customPayload\r\n this.filters = []\r\n this.groupBy = [Discover.FieldTemplateVariation]\r\n this.scope = null\r\n this.auth = true\r\n\r\n // The default scope returns vatoms that the user owns only\r\n this.setScopeToOwnedVatomsOnly()\r\n\r\n /** The number of samples to return. This is based on the groupBy property.\r\n 0 will return all vatoms without sampling them. */\r\n this.samples = 0\r\n }\r\n\r\n /** Appends a filter to the filters list. */\r\n appendFilter (field, value, compareOperation, combineOperation) {\r\n // Append filter\r\n this.filters.push({\r\n field,\r\n value,\r\n filter_op: compareOperation || Discover.FilterOperation.Equal,\r\n bool_op: combineOperation || Discover.CombineOperation.And\r\n })\r\n }\r\n\r\n /** Set the scope to only return vatoms with the specified publisher FQDN */\r\n setScopeToPublisherFQDN (fqdn) {\r\n // Set scope\r\n this.scope = {\r\n key: Discover.FieldPublisherFqdn,\r\n value: fqdn\r\n }\r\n }\r\n\r\n /** Set the scope to only return owned vatoms */\r\n setScopeToOwnedVatomsOnly () {\r\n // Set scope\r\n this.scope = {\r\n key: Discover.FieldOwner,\r\n value: '$currentuser'\r\n }\r\n }\r\n\r\n /** Set the scope to specified key and value */\r\n setScope (key, value) {\r\n // Set scope\r\n this.scope = {\r\n key,\r\n value\r\n }\r\n }\r\n\r\n /** @private Get the request payload to send to the Discovery API call */\r\n getPayload () {\r\n // Check for override\r\n if (this.overridePayload) {\r\n return this.overridePayload\r\n }\r\n // Check scope\r\n if (!this.scope) {\r\n throw new Error('Vatomic SDK: No scope set for discover filter!')\r\n }\r\n // Create payload\r\n const payload = {}\r\n payload.scope = this.scope\r\n\r\n // Set sampling\r\n if (this.samples > 0 && this.groupBy.length > 0) {\r\n payload.sample = this.samples\r\n payload.group_by = this.groupBy\r\n }\r\n\r\n // Set filters\r\n if (this.filters.length > 0) {\r\n payload.filters = [{\r\n filter_elems: this.filters\r\n }]\r\n }\r\n\r\n // Set return info\r\n payload.return = {\r\n type: '*',\r\n fields: []\r\n }\r\n\r\n // Done\r\n return payload\r\n }\r\n\r\n /** Execute the discover query, returning an array of Vatoms. @returns Promise<[Vatom]> */\r\n execute () {\r\n // Send request\r\n return this.bv.client.request('POST', '/v1/vatom/discover', this.getPayload(), this.auth).then((data) => {\r\n const { actions, faces, results } = data\r\n\r\n const actionsArray = []\r\n const facesArray = []\r\n const vatomsArray = []\r\n // eslint-disable-next-line\r\n for (let a of actions) {\r\n const aName = a.name.split('::Action::')\r\n const aKey = aName[0]\r\n actionsArray.push({\r\n template: aKey,\r\n action: aName[1],\r\n meta: a.meta,\r\n properties: a.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let f of faces) {\r\n facesArray.push({\r\n template: f.template,\r\n id: f.id,\r\n meta: f.meta,\r\n properties: f.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let v of results) {\r\n const { template } = v['vAtom::vAtomType']\r\n const obj = new Vatom(v, facesArray.filter(f => f.template === template), actionsArray.filter(a => a.template === template))\r\n vatomsArray.push(obj)\r\n }\r\n return vatomsArray\r\n })\r\n }\r\n\r\n /** Execute the discover query, returning the count of vatoms. @returns Promise<Integer> */\r\n count () {\r\n // Inject \"count only\" into the payload\r\n const payload = this.getPayload()\r\n payload.return.type = 'count'\r\n\r\n // Send request\r\n return this.bv.client.request('POST', '/v1/vatom/discover', payload, this.auth)\r\n .then(data => data.count || 0)\r\n }\r\n}\r\n\r\n/** Filter operations */\r\nDiscover.FilterOperation = {\r\n Equal: 'Eq',\r\n GreaterThan: 'Gt',\r\n GreaterOrEqual: 'Ge',\r\n LessThan: 'Lt',\r\n LessOrEqual: 'Le',\r\n NotEqual: 'Ne',\r\n Match: 'Match'\r\n}\r\n\r\n/** Filter combine operations */\r\nDiscover.CombineOperation = {\r\n And: 'And',\r\n Or: 'Or'\r\n}\r\n\r\n/** Predefined fields */\r\nDiscover.FieldAcquireable = 'vAtom::vAtomType.acquireable'\r\nDiscover.FieldPrivateName = 'private.name'\r\nDiscover.FieldID = 'id'\r\nDiscover.FieldPublisherFqdn = 'vAtom::vAtomType.publisher_fqdn'\r\nDiscover.FieldTemplate = 'vAtom::vAtomType.template'\r\nDiscover.FieldTemplateVariation = 'vAtom::vAtomType.template_variation'\r\nDiscover.FieldVisibilityType = 'vAtom::vAtomType.visibility.type'\r\nDiscover.FieldOwner = 'vAtom::vAtomType.owner'\r\nDiscover.FieldParentID = 'vAtom::vAtomType.parent_id'\r\n\r\n\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\nexport default class User {\r\n constructor (user) {\r\n this.id = user.id\r\n this.firstName = user.properties.first_name\r\n this.lastName = user.properties.last_name\r\n this.namePublic = user.properties.name_public\r\n this.avatarUri = user.properties.avatar_uri\r\n this.avatarPublic = user.properties.avatar_public\r\n this.birthday = user.properties.birthday\r\n this.language = user.properties.language\r\n this.nonPushNotification = user.properties.nonpush_notification\r\n this.guestId = user.properties.guest_id\r\n this.isPasswordSet = user.properties.is_password_set\r\n this.activated = user.system_properties.activated\r\n this.isAdmin = user.system_properties.is_admin\r\n this.isMerchant = user.system_properties.is_merchant\r\n this.lastLogin = user.system_properties.last_login\r\n this.pubFqdn = user.system_properties.pub_fqdn\r\n this.rawPayload = user\r\n this.consents = user.properties.user_consents\r\n this.meta = {\r\n createdBy: user.meta.created_by,\r\n dataType: user.meta.data_type,\r\n modifiedBy: user.meta.modified_by,\r\n whenCreated: user.meta.when_created,\r\n whenModified: user.meta.when_modified\r\n }\r\n }\r\n}\r\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.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 new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('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, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\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) {\n var SYMBOL = wks(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 re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\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 }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(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 );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(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 rxfn.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 rxfn.call(string, this); }\n );\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i\n , whitespace = '[\\\\x09\\\\x0A\\\\x0B\\\\x0C\\\\x0D\\\\x20\\\\xA0\\\\u1680\\\\u180E\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF]'\n , left = new RegExp('^'+ whitespace +'+');\n\n/**\n * Trim a given string.\n *\n * @param {String} str String to trim.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(left, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address) { // Sanitize what is left of the address\n return address.replace('\\\\', '/');\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d+)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address) {\n address = trimLeft(address);\n var match = protocolre.exec(address);\n\n return {\n protocol: match[1] ? match[1].toLowerCase() : '',\n slashes: !!match[2],\n rest: match[3]\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '');\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n if (~(index = address.indexOf(parse))) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n if (url.auth) {\n instruction = url.auth.split(':');\n url.username = instruction[0] || '';\n url.password = instruction[1] || '';\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (/:\\d+$/.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n default:\n url[part] = value;\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result = protocol + (url.slashes ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n }\n\n result += url.host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} raw True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","\r\n\r\n/**\r\n * Singleton. Responsible for storing and exeucting changes to objects over time.\r\n */\r\nexport default class DataObjectAnimator {\r\n static withBlockv (bv) {\r\n if (!bv.animator)\r\n bv.animator = new DataObjectAnimator(bv)\r\n return bv.animator\r\n }\r\n /** Constructor */\r\n constructor(bv) {\r\n // blockv\r\n this.blockv = bv\r\n\r\n // Store regions\r\n this.regions = []\r\n\r\n // List of changes\r\n this.changes = []\r\n\r\n // Update timer\r\n this.updateTimer = null\r\n\r\n // Time skew, for syncing server time to client time. This time is added to the device's \"current time\".\r\n this.timeSkew = 0\r\n\r\n // Add listeners for the WebSocket\r\n this.onWebSocketMessage = this.onWebSocketMessage.bind(this)\r\n this.blockv.WebSockets.addEventListener('websocket.raw', this.onWebSocketMessage)\r\n\r\n\r\n }\r\n\r\n /** Called when a new message comes down the WebSocket */\r\n onWebSocketMessage(msg) {\r\n\r\n // We only handle state update messages here.\r\n if (msg.msg_type != 'state_update')\r\n return\r\n\r\n // Only handle brain updates\r\n if (msg.payload.action_name != 'brain-update')\r\n return\r\n\r\n // Check if the brain has given us a set of next positions\r\n let nextPositions = msg.payload.new_object.next_positions\r\n if (nextPositions) {\r\n\r\n // Map coordinates to sparse object updates\r\n let updates = nextPositions.map(p => { return {\r\n id: msg.payload.id,\r\n time: p.time,\r\n new_data: {\r\n 'vAtom::vAtomType': {\r\n 'geo_pos': {\r\n 'coordinates': p.geo_pos\r\n }\r\n }\r\n }\r\n }})\r\n\r\n // Fetch earliest time\r\n let earliestTime = updates[0].time\r\n for (let update of updates)\r\n if (earliestTime > update.time)\r\n earliestTime = update.time\r\n\r\n // Clear old data from animator\r\n this.clearUpdatesFor(msg.payload.id, earliestTime)\r\n\r\n // Hand off to the animator\r\n this.add(updates)\r\n\r\n }\r\n\r\n }\r\n\r\n /** Add a region */\r\n addRegion(region) {\r\n this.regions.push(region)\r\n }\r\n\r\n /** Remove a region */\r\n removeRegion(region) {\r\n this.regions = this.regions.filter(r => r != region)\r\n }\r\n\r\n /** Check if any of our regions has this data object */\r\n isMonitoringID(id) {\r\n\r\n for (let region of this.regions)\r\n if (region.objects.get(id))\r\n return true\r\n\r\n // No, we don't care about this object\r\n return false\r\n\r\n }\r\n\r\n /** Add updates to be executed */\r\n add(updates) {\r\n\r\n // Add updates to the array\r\n let now = Date.now() + this.timeSkew\r\n for (let u of updates) {\r\n\r\n // Ensure we care about this object\r\n if (!this.isMonitoringID(u.id))\r\n continue\r\n \r\n // Ensure this time entry has not passed already\r\n if (!u.time || u.time < now)\r\n continue\r\n\r\n // Add it\r\n this.changes.push(u)\r\n\r\n }\r\n\r\n // Sort changes oldest to newest\r\n this.changes.sort((a, b) => a.time - b.time)\r\n\r\n // Start update timer if needed\r\n if (!this.updateTimer)\r\n this.updateTimer = setInterval(this.doNextUpdate.bind(this), 50)\r\n\r\n }\r\n\r\n /** Remove pending updates for the specified object ID */\r\n clearUpdatesFor(id, afterTime = 0) {\r\n\r\n // Remove items\r\n for (let i = 0 ; i < this.changes.length ; i++)\r\n if (this.changes[i].id == id && this.changes[i].time > afterTime)\r\n this.changes.splice(i--, 1)\r\n\r\n }\r\n\r\n /** @private Run the next update */\r\n doNextUpdate() {\r\n\r\n // Stop if no more entries\r\n if (this.changes.length == 0) {\r\n clearInterval(this.updateTimer)\r\n this.updateTimer = null\r\n return\r\n }\r\n\r\n // Check if the first entry has passed yet\r\n let now = Date.now() + this.timeSkew\r\n if (this.changes[0].time > now)\r\n return\r\n\r\n // Get change to execute\r\n let change = this.changes.shift()\r\n\r\n // Do it on all regions\r\n for (let region of this.regions)\r\n region.updateObjects([change])\r\n\r\n // If next entry time has also passed already, don't wait, just execute\r\n if (this.changes.length > 0 && this.changes[0].time < now)\r\n this.doNextUpdate()\r\n\r\n }\r\n\r\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","exports.f = require('./_wks');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n\nvar regexpFlags = require('./_flags');\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 LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\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;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = 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 // eslint-disable-next-line no-loop-func\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","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\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};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = 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 invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(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 (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","//\r\n// EventEmitter class - This class provides simple event functionality for classes, with Promise support.\r\n//\r\n//\tUsage for once-off event listeners:\r\n//\r\n//\t\tmyObj.when(\"closed\").then(function(data) {\r\n//\t\t\talert(\"Closed! \" + data);\r\n//\t\t});\r\n//\r\n//\r\n//\tUsage for permanent event listeners:\r\n//\r\n//\t\tmyObj.on(\"closed\", function(data) {\r\n//\t\t\talert(\"Closed! \" + data);\r\n//\t\t});\r\n//\r\n//\r\n//\tUsage when triggering an event from a subclass:\r\n//\r\n//\t\tthis.emit(\"closed\", \"customData\");\r\n//\r\n\r\nexport default class EventEmitter {\r\n\r\n\r\n\t/** Adds an event listener. If callback is null, a Promise will be returned. Note that if using the Promise\r\n\t * it will only be triggered on the first event emitted. */\r\n\twhen(eventName, callback = null) {\r\n\r\n\t\t// Make sure event listener object exists\r\n\t\tthis._eventListeners = this._eventListeners || {};\r\n\r\n\t\t// Make sure event listener array exists\r\n\t\tthis._eventListeners[eventName] = this._eventListeners[eventName] || [];\r\n\r\n\t\t// Check if using promise form\r\n\t\tif (callback) {\r\n\r\n\t\t\t// Just add the callback\r\n\t\t\tthis._eventListeners[eventName].push(callback);\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Return the promise\r\n\t\t\treturn new Promise((onSuccess, onFail) => {\r\n\r\n\t\t\t\t// Promise callbacks can only be used once\r\n\t\t\t\tonSuccess._removeAfterCall = true;\r\n\r\n\t\t\t\t// Add success handler to event listener array\r\n\t\t\t\tthis._eventListeners[eventName].push(onSuccess);\r\n\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/** Synonyms */\r\n\ton() {\r\n\t\treturn this.when.apply(this, arguments);\r\n\t}\r\n\r\n\taddEventListener() {\r\n\t\treturn this.when.apply(this, arguments);\r\n\t}\r\n\r\n\r\n\r\n /** Remove event listener */\r\n removeEventListener(eventName, callback) {\r\n\r\n\t\t// Make sure event listener object exists\r\n\t\tthis._eventListeners = this._eventListeners || {};\r\n\r\n\t\t// Make sure event listener array exists\r\n\t\tthis._eventListeners[eventName] = this._eventListeners[eventName] || [];\r\n\r\n // Find and remove it\r\n for (var i = 0 ; i < this._eventListeners[eventName].length ; i++)\r\n if (this._eventListeners[eventName][i] == callback)\r\n this._eventListeners[eventName].splice(i--, 1)\r\n\r\n }\r\n\r\n off() {\r\n return this.removeEventListener.apply(this, arguments);\r\n }\r\n\r\n\r\n\r\n\r\n\t/** Triggers an event. Each argument after the first one will be passed to event listeners */\r\n\temit(eventName, ...args) {\r\n\r\n\t\t// Setup the once-off promise if one of it's events were triggered\r\n\t\t//if (eventName == \"success\" || eventName == \"failed\")\r\n\t\t//\tthis._setupPromise();\r\n\r\n\t\t// Get list of callbacks\r\n\t\tvar callbacks = this._eventListeners && this._eventListeners[eventName] || [];\r\n\r\n\t\t// Call events\r\n\t\tfor (var callback of callbacks) {\r\n\r\n\t\t\t// Call it\r\n\t\t\tcallback.apply(this, args);\r\n\r\n\t\t}\r\n\r\n\t\t// Remove callbacks that can only be called once\r\n\t\tfor (var i = 0 ; i < callbacks.length ; i++)\r\n\t\t\tif (callbacks[i]._removeAfterCall)\r\n\t\t\t\tcallbacks.splice(i--, 1);\r\n\r\n\t}\r\n\r\n\t/** Synonyms */\r\n\ttrigger() {\r\n\t\treturn this.emit.apply(this, arguments);\r\n\t}\r\n\r\n\ttriggerEvent() {\r\n\t\treturn this.emit.apply(this, arguments);\r\n\t}\r\n\r\n}\r\n\r\n// Apply as a mixin to a class or object\r\nEventEmitter.mixin = function(otherClass) {\r\n\r\n\tfor (var prop in EventEmitter.prototype)\r\n\t\tif (EventEmitter.prototype.hasOwnProperty(prop))\r\n\t\t\totherClass[prop] = EventEmitter.prototype[prop];\r\n\r\n}\r\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","'use strict';\n\n/**\n * Stringify/parse functions that don't operate\n * recursively, so they avoid call stack exceeded\n * errors.\n */\nexports.stringify = function stringify(input) {\n var queue = [];\n queue.push({obj: input});\n\n var res = '';\n var next, obj, prefix, val, i, arrayPrefix, keys, k, key, value, objPrefix;\n while ((next = queue.pop())) {\n obj = next.obj;\n prefix = next.prefix || '';\n val = next.val || '';\n res += prefix;\n if (val) {\n res += val;\n } else if (typeof obj !== 'object') {\n res += typeof obj === 'undefined' ? null : JSON.stringify(obj);\n } else if (obj === null) {\n res += 'null';\n } else if (Array.isArray(obj)) {\n queue.push({val: ']'});\n for (i = obj.length - 1; i >= 0; i--) {\n arrayPrefix = i === 0 ? '' : ',';\n queue.push({obj: obj[i], prefix: arrayPrefix});\n }\n queue.push({val: '['});\n } else { // object\n keys = [];\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n keys.push(k);\n }\n }\n queue.push({val: '}'});\n for (i = keys.length - 1; i >= 0; i--) {\n key = keys[i];\n value = obj[key];\n objPrefix = (i > 0 ? ',' : '');\n objPrefix += JSON.stringify(key) + ':';\n queue.push({obj: value, prefix: objPrefix});\n }\n queue.push({val: '{'});\n }\n }\n return res;\n};\n\n// Convenience function for the parse function.\n// This pop function is basically copied from\n// pouchCollate.parseIndexableString\nfunction pop(obj, stack, metaStack) {\n var lastMetaElement = metaStack[metaStack.length - 1];\n if (obj === lastMetaElement.element) {\n // popping a meta-element, e.g. an object whose value is another object\n metaStack.pop();\n lastMetaElement = metaStack[metaStack.length - 1];\n }\n var element = lastMetaElement.element;\n var lastElementIndex = lastMetaElement.index;\n if (Array.isArray(element)) {\n element.push(obj);\n } else if (lastElementIndex === stack.length - 2) { // obj with key+value\n var key = stack.pop();\n element[key] = obj;\n } else {\n stack.push(obj); // obj with key only\n }\n}\n\nexports.parse = function (str) {\n var stack = [];\n var metaStack = []; // stack for arrays and objects\n var i = 0;\n var collationIndex,parsedNum,numChar;\n var parsedString,lastCh,numConsecutiveSlashes,ch;\n var arrayElement, objElement;\n while (true) {\n collationIndex = str[i++];\n if (collationIndex === '}' ||\n collationIndex === ']' ||\n typeof collationIndex === 'undefined') {\n if (stack.length === 1) {\n return stack.pop();\n } else {\n pop(stack.pop(), stack, metaStack);\n continue;\n }\n }\n switch (collationIndex) {\n case ' ':\n case '\\t':\n case '\\n':\n case ':':\n case ',':\n break;\n case 'n':\n i += 3; // 'ull'\n pop(null, stack, metaStack);\n break;\n case 't':\n i += 3; // 'rue'\n pop(true, stack, metaStack);\n break;\n case 'f':\n i += 4; // 'alse'\n pop(false, stack, metaStack);\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '-':\n parsedNum = '';\n i--;\n while (true) {\n numChar = str[i++];\n if (/[\\d\\.\\-e\\+]/.test(numChar)) {\n parsedNum += numChar;\n } else {\n i--;\n break;\n }\n }\n pop(parseFloat(parsedNum), stack, metaStack);\n break;\n case '\"':\n parsedString = '';\n lastCh = void 0;\n numConsecutiveSlashes = 0;\n while (true) {\n ch = str[i++];\n if (ch !== '\"' || (lastCh === '\\\\' &&\n numConsecutiveSlashes % 2 === 1)) {\n parsedString += ch;\n lastCh = ch;\n if (lastCh === '\\\\') {\n numConsecutiveSlashes++;\n } else {\n numConsecutiveSlashes = 0;\n }\n } else {\n break;\n }\n }\n pop(JSON.parse('\"' + parsedString + '\"'), stack, metaStack);\n break;\n case '[':\n arrayElement = { element: [], index: stack.length };\n stack.push(arrayElement.element);\n metaStack.push(arrayElement);\n break;\n case '{':\n objElement = { element: {}, index: stack.length };\n stack.push(objElement.element);\n metaStack.push(objElement);\n break;\n default:\n throw new Error(\n 'unexpectedly reached end of input: ' + collationIndex);\n }\n }\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) 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 ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && msCrypto.getRandomValues.bind(msCrypto));\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\nmodule.exports = bytesToUuid;\n","var logify_input = require('./log').logify_input;\nvar titleFormat = require('@brillout/format-text').titleFormat;\nvar isNodejs = require('./utils/isNodejs');\n\nvar option_keys = {\n is_warning: 'is_warning',\n is_usage: 'is_usage',\n is_internal: 'is_internal',\n details: 'details',\n};\n\nmodule.exports = reassert;\n\nfunction reassert(condition) {\n // assert\n if( condition ) {\n return condition;\n }\n\n // parse arguments\n var parsed = parseArguments([].slice.call(arguments, 1));\n var msgs = parsed.msgs;\n var opts = parsed.opts;\n\n var callStack = getCallStack();\n\n // build error message\n var message = getErrorMessage(condition, msgs, opts, callStack);\n\n // throw logic\n throwError(message, opts, callStack);\n\n // convenience to write code like `if( ! require('reassert/soft')(condition) ) return;`\n return condition;\n}\n\nfunction parseArguments(args) {\n var msgs = [];\n var opts = {};\n for(var i in args) {\n var arg = args[i];\n var is_option_arg = arg && arg.IS_REASSERT_OPTS;\n if( is_option_arg ) {\n for(var j in arg) {\n if( !option_keys[j] && j!=='IS_REASSERT_OPTS' ) {\n var msg = 'Unkonwn option `'+j+'`';\n throw new Error('Reassert: [Internal Error]: '+msg);\n }\n opts[j] = arg[j];\n }\n } else {\n msgs.push(arg);\n }\n }\n\n return {msgs: msgs, opts: opts};\n}\n\nfunction getErrorMessage(condition, msgs, opts, callStack) {\n var message = [];\n\n message = message.concat(getErrorDetailsMessage(opts));\n\n if( ! is_browser() ) {\n message = message.concat(getStackMessage(opts, msgs, callStack));\n message.push('\\n');\n }\n\n message = message.concat(getErrorSummaryMessage(condition, msgs, opts));\n\n return message;\n}\nfunction getErrorSummaryMessage(condition, msgs, opts) {\n let message = [];\n\n var title = (\n opts[option_keys.is_warning] && 'Warning' ||\n opts[option_keys.is_usage] && 'Wrong Usage' ||\n opts[option_keys.is_internal] && 'Internal Error' ||\n 'Assertion Fail'\n );\n\n message.push(titleFormat(title));\n\n if( msgs.length===0 ) {\n message.push('Failed assertion condition: `'+condition+' != true`');\n }\n\n for(var i in msgs) {\n var msg = msgs[i];\n var str = logify_input(msg);\n\n message.push(str);\n }\n\n if( opts.details ) {\n message.push('');\n message.push('See \"Error Details\" above for more information.');\n }\n\n return message;\n}\nfunction getStackMessage(opts, msgs, callStack) {\n if( opts[option_keys.is_warning] && msgs.length>0 ) {\n return [];\n }\n\n /*\n // Without this Node.js adds a `[` and a `]` to the error string\n var niceFormattingPrefix = 'Error\\n at:';\n */\n\n return [\n // niceFormattingPrefix,\n titleFormat('Stack Trace'),\n callStack.join('\\n')\n ];\n}\nfunction getErrorDetailsMessage(opts) {\n if( ! opts.details ) {\n return [];\n }\n\n var message = [\n titleFormat('Error Details')\n ];\n\n for(var i in opts.details) {\n message.push(logify_input(opts.details[i]));\n }\n\n message.push('\\n');\n\n return message;\n}\n\nfunction throwError(message, opts, callStack) {\n var interupt_execution = !opts[option_keys.is_warning];\n\n if( isNodejs() ) {\n if( interupt_execution ) {\n var err = new Error();\n err.stack = message.join('\\n');\n throw err;\n } else {\n for(var i in message) console.error(message[i]);\n }\n }\n\n if( is_browser() ) {\n if( interupt_execution ) {\n throw__browser(message);\n } else {\n setTimeout(function() {\n throw__browser(message);\n }, 0);\n }\n }\n}\n\nfunction throw__browser(message) {\n for(var i in message) console.error(message[i]);\n Error.stackTraceLimit = Infinity;\n throw new Error();\n}\n\nfunction getCallStack() {\n var stackTraceLimit__original = Error.stackTraceLimit;\n Error.stackTraceLimit = Infinity;\n var callStackString = new Error().stack;\n Error.stackTraceLimit = stackTraceLimit__original;\n\n var lines = callStackString.split('\\n');\n\n var lines__filtered = [];\n for(var i in lines) {\n var line = lines[i];\n if( line === 'Error' ) {\n continue;\n }\n if( line.indexOf('/node_modules/reassert/') !== -1 ) {\n continue;\n }\n if( line.indexOf(' (internal/') !== -1 ) {\n continue;\n }\n // line = line.replace(/^ */, '');\n // line = line.replace(/^at */, ' ');\n lines__filtered.push(line);\n }\n\n var callStack = lines__filtered;\n return callStack;\n}\n\n/* TODO - reimplement soft errors\n\n // determine whether we are in production\n var prod = is_prod();\n\n var message = 'Assertion-Error'+(prod?'[prod]':'[dev]')+': '+condition+'!=true';\n var interupt_execution = (!prod || opts[option_keys.is_hard]) && !opts[option_keys.is_soft];\n\nfunction is_prod() {\n var prod_browser = is_browser() && window.location.hostname !== 'localhost';\n var prod_nodejs = isNodejs() && process.env['NODE_ENV'] === 'production';\n return prod_browser || prod_nodejs;\n}\n*/\n\nfunction is_browser() {\n return typeof window !== \"undefined\";\n}\n","module.exports = isNodejs;\n\nfunction isNodejs() {\n return typeof \"process\" !== \"undefined\" && process && process.versions && process.versions.node;\n}\n","/* global localStorage */\r\nimport EventEmitter from './EventEmitter'\r\nimport DataObject from './DataObject'\r\nimport Filter from './Filter'\r\nimport LZString from 'lz-string'\r\nimport { merge, get, set } from 'lodash'\r\nimport Delayer from './Delayer'\r\nimport DatabaseMap from './DatabaseMap'\r\n\r\n/**\r\n * Base class for a region.\r\n *\r\n * @event updated When any data in the region changes. This also indicates that there is no longer an error.\r\n * @event object.updated When a data object changes. Called with the ID of the changed object.\r\n * @event object.removed When a data object is removed. Called with the ID of the removed object.\r\n * @event error When an error occurs.\r\n * @event closed When the inventory is closed. eg. When the user is logged out\r\n */\r\nexport default class Region extends EventEmitter {\r\n /** @private Subclasses should use this to update and start monitoring the region */\r\n constructor (dataPool) {\r\n super()\r\n\r\n /** If true, this region will not be cached to disk. */\r\n this.noCache = false\r\n\r\n /** Store reference to the data pool */\r\n this.dataPool = dataPool\r\n\r\n /** True if data in this region is entirely in sync with the backend */\r\n this.synchronized = false\r\n\r\n /** If there's an error, this contains the current error. */\r\n this.error = null\r\n\r\n // Try to make region stable immediately\r\n this._syncPromise = null\r\n Delayer.run(e => this.synchronize())\r\n }\r\n\r\n /** Lazy load the objects database */\r\n get objects() {\r\n\r\n // Check if loaded already\r\n if (this._objects)\r\n return this._objects\r\n\r\n // Create DB\r\n this._objects = new DatabaseMap(this.stateKey, this.noCache)\r\n return this._objects\r\n\r\n }\r\n\r\n /**\r\n * Re-synchronizes the region by manually fetching everything from the server again.\r\n */\r\n forceSynchronize () {\r\n this.synchronized = false\r\n return this.synchronize()\r\n }\r\n\r\n /**\r\n * This will try to make the region stable by querying the backend for all data.\r\n *\r\n * @private Called by the Region superclass.\r\n * @returns {Promise} Resolves once the region is in sync with the backend.\r\n */\r\n synchronize () {\r\n // Stop if already running\r\n if (this._syncPromise) { return this._syncPromise }\r\n\r\n // Remove pending error\r\n this.error = null\r\n this.emit('updated')\r\n\r\n // Stop if already in sync\r\n if (this.synchronized) { return Promise.resolve() }\r\n\r\n // Do the sync\r\n this._syncPromise = this._synchronize().catch(err => {\r\n // Error handling, notify listeners of an error\r\n this._syncPromise = null\r\n this.error = err\r\n console.error(err)\r\n this.emit('error', err)\r\n })\r\n\r\n // Return promise\r\n return this._syncPromise\r\n\r\n }\r\n\r\n async _synchronize() {\r\n\r\n // Sync start\r\n console.log(`[DataPool > Region] Starting synchronization for region ${this.stateKey}`)\r\n\r\n // Create and load the database\r\n await this.objects.load()\r\n this.emit('updated')\r\n\r\n // Allow plugin to start loading content\r\n let loadedIDs = await this.load()\r\n\r\n // If the subclass load() returned an array of IDs, we can remove everything which is not in that list.\r\n if (loadedIDs && typeof loadedIDs.length === 'number') {\r\n let keysToRemove = []\r\n for (let id of this.objects.keys()) {\r\n // Check if it's in our list\r\n if (!loadedIDs.includes(id)) { keysToRemove.push(id) }\r\n }\r\n\r\n // Remove vatoms\r\n this.removeObjects(keysToRemove)\r\n }\r\n\r\n // All data is up to date!\r\n this.synchronized = true\r\n this._syncPromise = null\r\n this.emit('updated')\r\n console.log(`[DataPool > Region] Region '${this.stateKey}' is now in sync!`)\r\n \r\n }\r\n\r\n /**\r\n * A key which is unique for this exact region. This is used when saving/restoring state to disk.\r\n *\r\n * @abstract Subclasses should override this.\r\n * @returns {String} The state key.\r\n */\r\n get stateKey () {\r\n throw new Error(`Subclasses must override 'get stateKey()' in order to correctly handle saving/restoring state to disk.`)\r\n }\r\n\r\n /**\r\n * Start initial load. This should resolve once the region is up to date.\r\n *\r\n * @private Called by the Region superclass.\r\n * @abstract Subclasses should override this.\r\n * @returns {Promise<>} Once this promise resolves, the region should be stable.\r\n */\r\n async load () {\r\n throw new Error(`Subclasses must override Region.load()`)\r\n }\r\n\r\n /**\r\n * Stop and destroy this region.\r\n *\r\n * @abstract Subclasses should override this, but call super.close()\r\n */\r\n close () {\r\n // Notify data pool we have closed\r\n this.dataPool.removeRegion(this)\r\n this.emit('closed')\r\n }\r\n\r\n /**\r\n * Checks if the specified query matches our region. This is used to identify if a region request\r\n * can be satisfied by this region, or if a new region should be created.\r\n *\r\n * @private Called by DataPool.\r\n * @abstract Subclasses should override this.\r\n * @param {string} id The region plugin ID\r\n * @param {*} descriptor The region-specific filter data.\r\n */\r\n matches (id, descriptor) {\r\n throw new Error('Subclasses must override Region.matches()')\r\n }\r\n\r\n /**\r\n * Stores a collection of data objects which have been added to the pool.\r\n *\r\n * @private Called by subclasses.\r\n * @param {DataObject[]} objects List of new data objects added to the pool.\r\n */\r\n addObjects (objects) {\r\n\r\n // Go through each object\r\n for (let obj of objects) {\r\n\r\n // Check if object exists already\r\n let existingObject = this.objects.get(obj.id)\r\n if (existingObject) {\r\n\r\n // Notify\r\n this.willUpdateFields(existingObject, obj.data)\r\n\r\n // It exists already, update the object\r\n existingObject.data = obj.data\r\n existingObject.cached = null\r\n\r\n // Update database copy\r\n this.objects.set(obj.id, obj)\r\n\r\n } else {\r\n\r\n // Notify\r\n this.willAdd(obj)\r\n\r\n // It does not exist, add it\r\n this.objects.set(obj.id, obj)\r\n\r\n }\r\n\r\n // Emit event, on next run loop so all objects are added first\r\n Delayer.run(e => this.emit('object.updated', obj.id))\r\n\r\n }\r\n\r\n // Notify updated\r\n if (objects.length > 0) \r\n this.emit('updated')\r\n\r\n }\r\n\r\n /**\r\n * Updates data objects within our pool.\r\n *\r\n * @private Called by subclasses\r\n * @param {Object[]} objects An array of changes. Each object contains an `id` string and a `new_data` sparse object containing the changed fields.\r\n */\r\n updateObjects (objects) {\r\n // Go through each object\r\n let didUpdate = false\r\n for (let obj of objects) {\r\n // Fetch existing object\r\n let existingObject = this.objects.get(obj.id)\r\n if (!existingObject) { continue }\r\n\r\n // Stop if existing object doesn't have the full data\r\n if (!existingObject.data) { continue }\r\n\r\n // Notify\r\n this.willUpdateFields(existingObject, obj.new_data)\r\n\r\n // Update fields\r\n merge(existingObject.data, obj.new_data)\r\n\r\n // Clear cached values\r\n existingObject.cached = null\r\n\r\n // Emit event, on next run loop so all objects are updated first\r\n Delayer.run(e => this.emit('object.updated', obj.id))\r\n didUpdate = true\r\n }\r\n\r\n // Notify updated\r\n if (didUpdate) { this.emit('updated') }\r\n }\r\n\r\n /**\r\n * Removes the specified objects from our pool.\r\n *\r\n * @private Called by subclasses.\r\n * @param {String[]} ids An array of object IDs to remove.\r\n */\r\n removeObjects (ids) {\r\n // Remove all data objects with the specified IDs\r\n let didUpdate = false\r\n for (let id of ids) {\r\n // Notify\r\n this.willRemove(id)\r\n\r\n // Remove it\r\n if (this.objects.delete(id)) {\r\n // Emit event, on next run loop so all objects are updated first\r\n Delayer.run(e => this.emit('object.removed', id))\r\n didUpdate = true\r\n }\r\n }\r\n\r\n // Notify updated\r\n if (didUpdate) { this.emit('updated') }\r\n }\r\n\r\n /**\r\n * If a region plugin depends on the session data, it may override this method and `this.close()` itself if needed.\r\n *\r\n * @private Called by DataPool.\r\n * @abstract Subclasses can override this if they want.\r\n * @param {*} info The new session info.\r\n */\r\n onSessionInfoChanged (info) {}\r\n\r\n /**\r\n * If the plugin wants, it can map DataObjects to another type. This takes in a DataObject and returns a new type.\r\n * If you return null, the specified data object will not be returned.\r\n *\r\n * The default implementation simply returns the DataObject.\r\n *\r\n * @param {DataObject} object The input raw object\r\n * @returns {*} The output object.\r\n */\r\n map (object) {\r\n return object\r\n }\r\n\r\n /**\r\n * Iterate over each object in this region. Return `false` from the callback to stop. This does not wait\r\n * for the region to synchronize. This is a synchronous function.\r\n *\r\n * @param {Function(*)} callback Gets called once for each objbect in the region.\r\n */\r\n forEach (callback) {\r\n // Go through all data objects\r\n for (let object of this.objects.values()) {\r\n // Check for cached object\r\n let mapped = object.cached\r\n\r\n // Check if no cached object\r\n if (!mapped) {\r\n // Map to the plugin's intended type\r\n object.cached = mapped = this.map(object)\r\n }\r\n\r\n // Stop if no mapped object\r\n if (!mapped) { continue }\r\n\r\n // Call callback, stop if they returned false\r\n if (callback(mapped) === false) { break }\r\n }\r\n }\r\n\r\n /**\r\n * Returns all the objects within this region.\r\n *\r\n * @param {Boolean} waitUntilStable If true, will wait until all data objects have been retrieved. If false, will return immediately with current data.\r\n * @returns {Promise<Object[]>} An array of objects in this region. If `waitUntilStable` is false, returns the array immediately (without the promise).\r\n */\r\n get (waitUntilStable = true) {\r\n // Synchronize now\r\n if (waitUntilStable) {\r\n return this.synchronize().then(e => this.get(false))\r\n }\r\n\r\n // Create an array of all data objects\r\n let items = []\r\n for (let object of this.objects.values()) {\r\n // Check for cached object\r\n if (object.cached) {\r\n items.push(object.cached)\r\n continue\r\n }\r\n\r\n // Map to the plugin's intended type\r\n let mapped = this.map(object)\r\n if (!mapped) {\r\n continue\r\n }\r\n\r\n // Cache it\r\n object.cached = mapped\r\n\r\n // Add to list\r\n items.push(mapped)\r\n }\r\n\r\n // Done\r\n return items\r\n }\r\n\r\n /**\r\n * Returns an object within this region by it's ID.\r\n *\r\n * @param {Boolean} waitUntilStable If true, will wait until all data objects have been retrieved. If false, will return immediately with current data.\r\n * @returns {Promise<Object>} An object in this region. If `waitUntilStable` is false, returns immediately (without the promise).\r\n */\r\n getItem (id, waitUntilStable = true) {\r\n // Synchronize now\r\n if (waitUntilStable) {\r\n return this.synchronize().then(e => this.getItem(id, false))\r\n }\r\n\r\n // Get object\r\n let object = this.objects.get(id)\r\n if (!object) {\r\n return null\r\n }\r\n\r\n // Check for cached object\r\n if (object.cached) { return object.cached }\r\n\r\n // Map to the plugin's intended type\r\n let mapped = this.map(object)\r\n if (!mapped) { return null }\r\n\r\n // Cache it\r\n object.cached = mapped\r\n\r\n // Done\r\n return mapped\r\n }\r\n\r\n /**\r\n * Returns true if the object with the specified ID exists in the cache.\r\n *\r\n * @param {*} id The object's ID\r\n * @returns {boolean} True if the object exists.\r\n */\r\n has (id) {\r\n return this.objects.has(id)\r\n }\r\n\r\n /**\r\n * Change a field, and return a function which can be called to undo the change.\r\n *\r\n * @param {String} id Object ID\r\n * @param {String} keyPath The key to change\r\n * @param {*} value The new value\r\n * @returns {Function} An undo function\r\n */\r\n preemptiveChange (id, keyPath, value) {\r\n // Get object. If it doesn't exist, do nothing and return an undo function which does nothing.\r\n let object = this.objects.get(id)\r\n if (!object) { return function () {} }\r\n\r\n // Get current value\r\n let oldValue = get(object.data, keyPath)\r\n\r\n // Notify\r\n this.willUpdateField(object, keyPath, oldValue, value)\r\n\r\n // Update to new value\r\n set(object.data, keyPath, value)\r\n object.cached = null\r\n this.emit('object.updated', id)\r\n this.emit('updated')\r\n\r\n // Notify database of change\r\n this.objects.set(id, object)\r\n\r\n // Return undo function\r\n return e => {\r\n // Notify\r\n this.willUpdateField(object, keyPath, value, oldValue)\r\n\r\n // Revert\r\n set(object.data, keyPath, oldValue)\r\n object.cached = null\r\n this.emit('object.updated', id)\r\n this.emit('updated')\r\n\r\n // Notify database of change\r\n this.objects.set(id, object)\r\n }\r\n }\r\n\r\n /**\r\n * Remove an object, and return an undo function.\r\n *\r\n * @param {String} id The ID of the object to remove.\r\n * @returns {Function} An undo function\r\n */\r\n preemptiveRemove (id) {\r\n // Get object. If it doesn't exist, do nothing and return an undo function which does nothing.\r\n let object = this.objects.get(id)\r\n if (!object) { return function () {} }\r\n\r\n // Notify\r\n this.willRemove(object)\r\n\r\n // Remove object\r\n this.objects.delete(id)\r\n this.emit('updated')\r\n\r\n // Return undo function\r\n return e => {\r\n // Check that a new object wasn't added in the mean time\r\n if (this.objects.has(id)) { return }\r\n\r\n // Notify\r\n this.willAdd(object)\r\n\r\n // Revert\r\n this.addObjects([object])\r\n }\r\n }\r\n\r\n /**\r\n * Create a filter\r\n *\r\n * @param {String} keyPath The data path to check\r\n * @param {*} value The value to check for\r\n * @returns {Filter} The filtered region\r\n */\r\n filter (keyPath, value) {\r\n return new Filter(this, keyPath, value)\r\n }\r\n\r\n /**\r\n * Called when an object is about to be added.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject} object The object which will be added.\r\n */\r\n willAdd (object) {}\r\n\r\n /**\r\n * Called when an object is about to be updated.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject} object The object which will be updated.\r\n * @param {Object} newData The sparse object containing the changed fields\r\n */\r\n willUpdateFields (object, newData) {}\r\n\r\n /**\r\n * Called when an object is about to be updated.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject} object The object which will be updated.\r\n * @param {String} keyPath The field which will be changed.\r\n * @param {*} oldValue The current field value.\r\n * @param {*} newValue The new field value.\r\n */\r\n willUpdateField (object, keyPath, oldValue, newValue) {}\r\n\r\n /**\r\n * Called when an object is about to be removed.\r\n *\r\n * @private\r\n * @abstract Can be overridden by subclasses which need to get these events.\r\n * @param {DataObject|String} objectOrID The object (or ID) which will be updated.\r\n */\r\n willRemove (objectOrID) {}\r\n}\r\n","\r\nimport { get } from 'lodash'\r\n\r\n/**\r\n * A Filter exposes the same functions as a Region, except the returned data is filtered by the specified key.\r\n */\r\nexport default class Filter {\r\n\r\n /** Constructor */\r\n constructor(region, keyPath, value) {\r\n\r\n // Store values\r\n this.region = region\r\n this.keyPath = keyPath\r\n this.value = value\r\n\r\n }\r\n\r\n /** Passthrough */\r\n get objects() {\r\n return this.region.objects\r\n }\r\n\r\n /** Passthrough */\r\n synchronize() {\r\n return this.region.synchronize()\r\n }\r\n\r\n /** Passthrough */\r\n getItem(id, waitUntilStable = true) {\r\n return this.region.getItem(id, waitUntilStable)\r\n }\r\n\r\n /** Passthrough */\r\n map(object) {\r\n return this.region.map(object)\r\n }\r\n\r\n /**\r\n * Returns all the objects within this region, filtered by this filter.\r\n * \r\n * @param {Boolean} waitUntilStable If true, will wait until all data objects have been retrieved. If false, will return immediately with current data.\r\n * @returns {Promise<Object[]>} An array of objects in this region. If `waitUntilStable` is false, returns the array immediately (without the promise).\r\n */\r\n get(waitUntilStable = true) {\r\n\r\n // Synchronize now\r\n if (waitUntilStable)\r\n return this.synchronize().then(e => this.get(false))\r\n\r\n // Create an array of all data objects\r\n let items = []\r\n for (let object of this.objects.values()) {\r\n\r\n // Check filtered value\r\n let value = get(object.data, this.keyPath)\r\n if (value != this.value)\r\n continue\r\n\r\n // Check for cached object\r\n if (object.cached) {\r\n items.push(object.cached)\r\n continue\r\n }\r\n\r\n // Map to the plugin's intended type\r\n let mapped = this.map(object)\r\n if (!mapped)\r\n continue\r\n\r\n // Cache it\r\n object.cached = mapped\r\n\r\n // Add to list\r\n items.push(mapped)\r\n\r\n }\r\n\r\n // Done\r\n return items\r\n\r\n }\r\n\r\n /** \r\n * Create a filter.\r\n * \r\n * @param {String} keyPath The data path to check\r\n * @param {*} value The value to check for\r\n * @returns {Filter} The filtered region\r\n */\r\n // TODO: Implement subfiltering\r\n // filter(keyPath, value) {\r\n // return new Filter(this, keyPath, value)\r\n // }\r\n\r\n}","\r\nimport PouchDB from 'pouchdb'\r\nimport DataObject from './DataObject'\r\n\r\n/** \r\n * A version of the built-in Map class, but which synchronizes to a local database of offline access. Key must be a string,\r\n * and value must be a DataObject.\r\n */\r\nexport default class Database {\r\n\r\n constructor(id, noStore) {\r\n\r\n // Store ID\r\n this.id = id\r\n this.noStore = noStore\r\n\r\n // Create PouchDB instance\r\n this.pouch = this.setupPouchDB()\r\n\r\n // Local cache of objects\r\n this.cache = new Map()\r\n\r\n // Database queue\r\n this.queue = new Queue()\r\n\r\n }\r\n\r\n setupPouchDB() {\r\n\r\n // Catch errors, eg. if in private browsing mode\r\n try {\r\n\r\n // Stop if only in memory\r\n if (this.noStore)\r\n return null\r\n\r\n // Create database\r\n return new PouchDB({\r\n\r\n // Database name\r\n name: 'datapool_' + this.id\r\n\r\n })\r\n\r\n } catch (err) {\r\n\r\n // Failed to load\r\n console.warn(err)\r\n return null\r\n\r\n }\r\n\r\n }\r\n\r\n /** Load documents from storage. This must be called before the map can be used correctly. */\r\n async load() {\r\n\r\n // Only do once\r\n if (this.loaded) return\r\n this.loaded = true\r\n\r\n // Stop if no database\r\n if (!this.pouch)\r\n return\r\n\r\n // Queue this operation\r\n return this.queue.run(async e => {\r\n\r\n // Fetch all documents\r\n let results = await this.pouch.allDocs({ include_docs: true })\r\n\r\n // Store each item in the memory cache\r\n for (let row of results.rows) {\r\n\r\n // Ignore deleted and errors\r\n if (!row.id || !row.value.rev)\r\n continue\r\n\r\n // Create and cache the DataObject\r\n let obj = new DataObject(row.doc.type, row.id, row.doc.data)\r\n obj.rev = row.value.rev\r\n this.cache.set(row.id, obj)\r\n\r\n }\r\n\r\n // Compact database in background (ie don't wait for promise)\r\n // TODO: Why u take so long?\r\n // Promise.resolve().then(async e => {\r\n // let time = Date.now()\r\n // await this.pouch.viewCleanup()\r\n // await this.pouch.compact()\r\n // console.log(`[DataPool > DatabaseMap] Compacting database took ${Math.round(Date.now() - time)} ms`)\r\n // })\r\n\r\n // Done\r\n console.log(`[DataPool > DatabaseMap] Loaded ${this.cache.size} items from ${this.pouch.name}`)\r\n\r\n }).catch(err => {\r\n\r\n // Failed to load from PouchDB\r\n console.warn('Unable to load items from PouchDB.', err)\r\n\r\n })\r\n\r\n }\r\n\r\n /** Passthrough getter functions, these don't modify the database */\r\n get size() { return this.cache.size }\r\n entries() { return this.cache.entries() }\r\n forEach(callback, thisValue) { return this.cache.forEach(callback, thisValue) }\r\n get(key) { return this.cache.get(key) }\r\n has(key) { return this.cache.has(key) }\r\n keys() { return this.cache.keys() }\r\n values() { return this.cache.values() }\r\n [Symbol.iterator]() { return this.cache[Symbol.iterator]() }\r\n\r\n clear() {\r\n\r\n // Clear the array\r\n this.cache.clear()\r\n\r\n // Stop if no database\r\n if (!this.pouch)\r\n return\r\n\r\n // Execute on database queue\r\n this.queue.run(async e => {\r\n\r\n // Delete database\r\n await this.pouch.destroy()\r\n\r\n // Create database again\r\n this.pouch = this.setupPouchDB()\r\n\r\n })\r\n\r\n }\r\n\r\n delete(key) {\r\n\r\n // Stop if no database\r\n if (!this.pouch)\r\n return this.cache.delete(key)\r\n\r\n // Delete item\r\n let found = this.cache.delete(key)\r\n\r\n // Execute on database queue\r\n this.queue.run(async e => {\r\n\r\n // Fetch doc info, stop if already removed\r\n let revision = await this.getRevision(key)\r\n if (!revision)\r\n return\r\n\r\n // Remove document\r\n await this.pouch.remove(key, revision)\r\n\r\n })\r\n\r\n // Done\r\n return found\r\n\r\n }\r\n\r\n /** Set a value. `value` must be a DataObject. */\r\n set(key, value) {\r\n\r\n // Stop if no database\r\n if (!this.pouch)\r\n return this.cache.set(key, value)\r\n\r\n // Set it in the memory cache\r\n this.cache.set(key, value)\r\n\r\n // Execute on database queue\r\n this.queue.run(async e => {\r\n\r\n // Fetch doc info\r\n let revision = await this.getRevision(key)\r\n if (!revision) {\r\n\r\n // Create new document\r\n await this.pouch.put({\r\n _id: key,\r\n type: value.type,\r\n data: value.data\r\n })\r\n\r\n } else {\r\n\r\n // Updating existing document\r\n await this.pouch.put({\r\n _id: key,\r\n _rev: revision,\r\n type: value.type,\r\n data: value.data\r\n })\r\n\r\n }\r\n\r\n })\r\n\r\n }\r\n\r\n /** Get revision for ID */\r\n async getRevision(id) {\r\n\r\n try {\r\n\r\n // Stop if no database\r\n if (!this.pouch)\r\n return null\r\n\r\n // Load document\r\n let results = await this.pouch.get(id)\r\n return results && results._rev\r\n\r\n } catch (err) {\r\n\r\n // Check if not found\r\n if (err.status == 404)\r\n return null\r\n\r\n // Any other error, throw\r\n throw err\r\n\r\n }\r\n\r\n }\r\n\r\n /** Get a string extra value */\r\n getExtra(key) {\r\n\r\n // Get item\r\n let itm = this.get('extra:' + key)\r\n if (itm)\r\n return itm.data\r\n else\r\n return null\r\n\r\n }\r\n\r\n /** Set a string extra */\r\n setExtra(key, value) {\r\n\r\n // Set item\r\n this.set('extra:' + key, {\r\n type: '_extra',\r\n data: value\r\n })\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n//\r\n// This class simply executes async functions one after another. This is useful for ensuring the order of function calls remain the same\r\n// for async functions.\r\nclass Queue {\r\n\r\n constructor() {\r\n\r\n /** List of functions to execute on the next run loop */\r\n this.pending = []\r\n\r\n /** True if currently executing an action */\r\n this.isRunning = null\r\n\r\n // this.timer = setInterval(this.log.bind(this), 250)\r\n\r\n }\r\n\r\n /** Schedule an action */\r\n run(func) {\r\n\r\n // Create promise\r\n return new Promise((onSuccess, onFail) => {\r\n\r\n // Add to list\r\n this.pending.push({\r\n func,\r\n onSuccess,\r\n onFail\r\n })\r\n\r\n // Start timer if needed\r\n if (!this.isRunning)\r\n this.executePendingActions()\r\n\r\n })\r\n\r\n }\r\n\r\n /** @private Called to execute pending actions */\r\n executePendingActions() {\r\n\r\n // Stop if already running\r\n if (this.isRunning) return\r\n this.isRunning = true\r\n\r\n // Get next action\r\n let action = this.pending.shift()\r\n if (!action) {\r\n \r\n // Queue is complete\r\n this.isRunning = false\r\n return\r\n\r\n }\r\n\r\n // Run action\r\n action.func().then(e => {\r\n\r\n // Completed\r\n action.onSuccess(e)\r\n\r\n }).catch(err => {\r\n\r\n // Log errors\r\n console.error(err)\r\n action.onFail(err)\r\n\r\n }).then(e => {\r\n\r\n // Run next one\r\n this.isRunning = false\r\n this.executePendingActions()\r\n\r\n })\r\n\r\n }\r\n\r\n log() {\r\n console.log(`[DataPool > DatabaseMap] Database queue has ${this.pending.length} items pending`)\r\n }\r\n\r\n}","import immediate from 'immediate';\nimport uuidV4 from 'uuid';\nimport Md5 from 'spark-md5';\nimport vuvuzela from 'vuvuzela';\nimport getArguments from 'argsarray';\nimport inherits from 'inherits';\nimport { EventEmitter } from 'events';\n\nfunction mangle(key) {\n return '$' + key;\n}\nfunction unmangle(key) {\n return key.substring(1);\n}\nfunction Map$1() {\n this._store = {};\n}\nMap$1.prototype.get = function (key) {\n var mangled = mangle(key);\n return this._store[mangled];\n};\nMap$1.prototype.set = function (key, value) {\n var mangled = mangle(key);\n this._store[mangled] = value;\n return true;\n};\nMap$1.prototype.has = function (key) {\n var mangled = mangle(key);\n return mangled in this._store;\n};\nMap$1.prototype.delete = function (key) {\n var mangled = mangle(key);\n var res = mangled in this._store;\n delete this._store[mangled];\n return res;\n};\nMap$1.prototype.forEach = function (cb) {\n var keys = Object.keys(this._store);\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n var value = this._store[key];\n key = unmangle(key);\n cb(value, key);\n }\n};\nObject.defineProperty(Map$1.prototype, 'size', {\n get: function () {\n return Object.keys(this._store).length;\n }\n});\n\nfunction Set$1(array) {\n this._store = new Map$1();\n\n // init with an array\n if (array && Array.isArray(array)) {\n for (var i = 0, len = array.length; i < len; i++) {\n this.add(array[i]);\n }\n }\n}\nSet$1.prototype.add = function (key) {\n return this._store.set(key, true);\n};\nSet$1.prototype.has = function (key) {\n return this._store.has(key);\n};\nSet$1.prototype.forEach = function (cb) {\n this._store.forEach(function (value, key) {\n cb(key);\n });\n};\nObject.defineProperty(Set$1.prototype, 'size', {\n get: function () {\n return this._store.size;\n }\n});\n\n/* global Map,Set,Symbol */\n// Based on https://kangax.github.io/compat-table/es6/ we can sniff out\n// incomplete Map/Set implementations which would otherwise cause our tests to fail.\n// Notably they fail in IE11 and iOS 8.4, which this prevents.\nfunction supportsMapAndSet() {\n if (typeof Symbol === 'undefined' || typeof Map === 'undefined' || typeof Set === 'undefined') {\n return false;\n }\n var prop = Object.getOwnPropertyDescriptor(Map, Symbol.species);\n return prop && 'get' in prop && Map[Symbol.species] === Map;\n}\n\n// based on https://github.com/montagejs/collections\n\nvar ExportedSet;\nvar ExportedMap;\n\n{\n if (supportsMapAndSet()) { // prefer built-in Map/Set\n ExportedSet = Set;\n ExportedMap = Map;\n } else { // fall back to our polyfill\n ExportedSet = Set$1;\n ExportedMap = Map$1;\n }\n}\n\nfunction isBinaryObject(object) {\n return (typeof ArrayBuffer !== 'undefined' && object instanceof ArrayBuffer) ||\n (typeof Blob !== 'undefined' && object instanceof Blob);\n}\n\nfunction cloneArrayBuffer(buff) {\n if (typeof buff.slice === 'function') {\n return buff.slice(0);\n }\n // IE10-11 slice() polyfill\n var target = new ArrayBuffer(buff.byteLength);\n var targetArray = new Uint8Array(target);\n var sourceArray = new Uint8Array(buff);\n targetArray.set(sourceArray);\n return target;\n}\n\nfunction cloneBinaryObject(object) {\n if (object instanceof ArrayBuffer) {\n return cloneArrayBuffer(object);\n }\n var size = object.size;\n var type = object.type;\n // Blob\n if (typeof object.slice === 'function') {\n return object.slice(0, size, type);\n }\n // PhantomJS slice() replacement\n return object.webkitSlice(0, size, type);\n}\n\n// most of this is borrowed from lodash.isPlainObject:\n// https://github.com/fis-components/lodash.isplainobject/\n// blob/29c358140a74f252aeb08c9eb28bef86f2217d4a/index.js\n\nvar funcToString = Function.prototype.toString;\nvar objectCtorString = funcToString.call(Object);\n\nfunction isPlainObject(value) {\n var proto = Object.getPrototypeOf(value);\n /* istanbul ignore if */\n if (proto === null) { // not sure when this happens, but I guess it can\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nfunction clone(object) {\n var newObject;\n var i;\n var len;\n\n if (!object || typeof object !== 'object') {\n return object;\n }\n\n if (Array.isArray(object)) {\n newObject = [];\n for (i = 0, len = object.length; i < len; i++) {\n newObject[i] = clone(object[i]);\n }\n return newObject;\n }\n\n // special case: to avoid inconsistencies between IndexedDB\n // and other backends, we automatically stringify Dates\n if (object instanceof Date) {\n return object.toISOString();\n }\n\n if (isBinaryObject(object)) {\n return cloneBinaryObject(object);\n }\n\n if (!isPlainObject(object)) {\n return object; // don't clone objects like Workers\n }\n\n newObject = {};\n for (i in object) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(object, i)) {\n var value = clone(object[i]);\n if (typeof value !== 'undefined') {\n newObject[i] = value;\n }\n }\n }\n return newObject;\n}\n\nfunction once(fun) {\n var called = false;\n return getArguments(function (args) {\n /* istanbul ignore if */\n if (called) {\n // this is a smoke test and should never actually happen\n throw new Error('once called more than once');\n } else {\n called = true;\n fun.apply(this, args);\n }\n });\n}\n\nfunction toPromise(func) {\n //create the function we will be returning\n return getArguments(function (args) {\n // Clone arguments\n args = clone(args);\n var self = this;\n // if the last argument is a function, assume its a callback\n var usedCB = (typeof args[args.length - 1] === 'function') ? args.pop() : false;\n var promise = new Promise(function (fulfill, reject) {\n var resp;\n try {\n var callback = once(function (err, mesg) {\n if (err) {\n reject(err);\n } else {\n fulfill(mesg);\n }\n });\n // create a callback for this invocation\n // apply the function in the orig context\n args.push(callback);\n resp = func.apply(self, args);\n if (resp && typeof resp.then === 'function') {\n fulfill(resp);\n }\n } catch (e) {\n reject(e);\n }\n });\n // if there is a callback, call it back\n if (usedCB) {\n promise.then(function (result) {\n usedCB(null, result);\n }, usedCB);\n }\n return promise;\n });\n}\n\nfunction logApiCall(self, name, args) {\n /* istanbul ignore if */\n if (self.constructor.listeners('debug').length) {\n var logArgs = ['api', self.name, name];\n for (var i = 0; i < args.length - 1; i++) {\n logArgs.push(args[i]);\n }\n self.constructor.emit('debug', logArgs);\n\n // override the callback itself to log the response\n var origCallback = args[args.length - 1];\n args[args.length - 1] = function (err, res) {\n var responseArgs = ['api', self.name, name];\n responseArgs = responseArgs.concat(\n err ? ['error', err] : ['success', res]\n );\n self.constructor.emit('debug', responseArgs);\n origCallback(err, res);\n };\n }\n}\n\nfunction adapterFun(name, callback) {\n return toPromise(getArguments(function (args) {\n if (this._closed) {\n return Promise.reject(new Error('database is closed'));\n }\n if (this._destroyed) {\n return Promise.reject(new Error('database is destroyed'));\n }\n var self = this;\n logApiCall(self, name, args);\n if (!this.taskqueue.isReady) {\n return new Promise(function (fulfill, reject) {\n self.taskqueue.addTask(function (failed) {\n if (failed) {\n reject(failed);\n } else {\n fulfill(self[name].apply(self, args));\n }\n });\n });\n }\n return callback.apply(this, args);\n }));\n}\n\n// like underscore/lodash _.pick()\nfunction pick(obj, arr) {\n var res = {};\n for (var i = 0, len = arr.length; i < len; i++) {\n var prop = arr[i];\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n }\n return res;\n}\n\n// Most browsers throttle concurrent requests at 6, so it's silly\n// to shim _bulk_get by trying to launch potentially hundreds of requests\n// and then letting the majority time out. We can handle this ourselves.\nvar MAX_NUM_CONCURRENT_REQUESTS = 6;\n\nfunction identityFunction(x) {\n return x;\n}\n\nfunction formatResultForOpenRevsGet(result) {\n return [{\n ok: result\n }];\n}\n\n// shim for P/CouchDB adapters that don't directly implement _bulk_get\nfunction bulkGet(db, opts, callback) {\n var requests = opts.docs;\n\n // consolidate into one request per doc if possible\n var requestsById = new ExportedMap();\n requests.forEach(function (request) {\n if (requestsById.has(request.id)) {\n requestsById.get(request.id).push(request);\n } else {\n requestsById.set(request.id, [request]);\n }\n });\n\n var numDocs = requestsById.size;\n var numDone = 0;\n var perDocResults = new Array(numDocs);\n\n function collapseResultsAndFinish() {\n var results = [];\n perDocResults.forEach(function (res) {\n res.docs.forEach(function (info) {\n results.push({\n id: res.id,\n docs: [info]\n });\n });\n });\n callback(null, {results: results});\n }\n\n function checkDone() {\n if (++numDone === numDocs) {\n collapseResultsAndFinish();\n }\n }\n\n function gotResult(docIndex, id, docs) {\n perDocResults[docIndex] = {id: id, docs: docs};\n checkDone();\n }\n\n var allRequests = [];\n requestsById.forEach(function (value, key) {\n allRequests.push(key);\n });\n\n var i = 0;\n\n function nextBatch() {\n\n if (i >= allRequests.length) {\n return;\n }\n\n var upTo = Math.min(i + MAX_NUM_CONCURRENT_REQUESTS, allRequests.length);\n var batch = allRequests.slice(i, upTo);\n processBatch(batch, i);\n i += batch.length;\n }\n\n function processBatch(batch, offset) {\n batch.forEach(function (docId, j) {\n var docIdx = offset + j;\n var docRequests = requestsById.get(docId);\n\n // just use the first request as the \"template\"\n // TODO: The _bulk_get API allows for more subtle use cases than this,\n // but for now it is unlikely that there will be a mix of different\n // \"atts_since\" or \"attachments\" in the same request, since it's just\n // replicate.js that is using this for the moment.\n // Also, atts_since is aspirational, since we don't support it yet.\n var docOpts = pick(docRequests[0], ['atts_since', 'attachments']);\n docOpts.open_revs = docRequests.map(function (request) {\n // rev is optional, open_revs disallowed\n return request.rev;\n });\n\n // remove falsey / undefined revisions\n docOpts.open_revs = docOpts.open_revs.filter(identityFunction);\n\n var formatResult = identityFunction;\n\n if (docOpts.open_revs.length === 0) {\n delete docOpts.open_revs;\n\n // when fetching only the \"winning\" leaf,\n // transform the result so it looks like an open_revs\n // request\n formatResult = formatResultForOpenRevsGet;\n }\n\n // globally-supplied options\n ['revs', 'attachments', 'binary', 'ajax', 'latest'].forEach(function (param) {\n if (param in opts) {\n docOpts[param] = opts[param];\n }\n });\n db.get(docId, docOpts, function (err, res) {\n var result;\n /* istanbul ignore if */\n if (err) {\n result = [{error: err}];\n } else {\n result = formatResult(res);\n }\n gotResult(docIdx, docId, result);\n nextBatch();\n });\n });\n }\n\n nextBatch();\n\n}\n\nvar hasLocal;\n\ntry {\n localStorage.setItem('_pouch_check_localstorage', 1);\n hasLocal = !!localStorage.getItem('_pouch_check_localstorage');\n} catch (e) {\n hasLocal = false;\n}\n\nfunction hasLocalStorage() {\n return hasLocal;\n}\n\n// Custom nextTick() shim for browsers. In node, this will just be process.nextTick(). We\n\ninherits(Changes, EventEmitter);\n\n/* istanbul ignore next */\nfunction attachBrowserEvents(self) {\n if (hasLocalStorage()) {\n addEventListener(\"storage\", function (e) {\n self.emit(e.key);\n });\n }\n}\n\nfunction Changes() {\n EventEmitter.call(this);\n this._listeners = {};\n\n attachBrowserEvents(this);\n}\nChanges.prototype.addListener = function (dbName, id, db, opts) {\n /* istanbul ignore if */\n if (this._listeners[id]) {\n return;\n }\n var self = this;\n var inprogress = false;\n function eventFunction() {\n /* istanbul ignore if */\n if (!self._listeners[id]) {\n return;\n }\n if (inprogress) {\n inprogress = 'waiting';\n return;\n }\n inprogress = true;\n var changesOpts = pick(opts, [\n 'style', 'include_docs', 'attachments', 'conflicts', 'filter',\n 'doc_ids', 'view', 'since', 'query_params', 'binary', 'return_docs'\n ]);\n\n /* istanbul ignore next */\n function onError() {\n inprogress = false;\n }\n\n db.changes(changesOpts).on('change', function (c) {\n if (c.seq > opts.since && !opts.cancelled) {\n opts.since = c.seq;\n opts.onChange(c);\n }\n }).on('complete', function () {\n if (inprogress === 'waiting') {\n immediate(eventFunction);\n }\n inprogress = false;\n }).on('error', onError);\n }\n this._listeners[id] = eventFunction;\n this.on(dbName, eventFunction);\n};\n\nChanges.prototype.removeListener = function (dbName, id) {\n /* istanbul ignore if */\n if (!(id in this._listeners)) {\n return;\n }\n EventEmitter.prototype.removeListener.call(this, dbName,\n this._listeners[id]);\n delete this._listeners[id];\n};\n\n\n/* istanbul ignore next */\nChanges.prototype.notifyLocalWindows = function (dbName) {\n //do a useless change on a storage thing\n //in order to get other windows's listeners to activate\n if (hasLocalStorage()) {\n localStorage[dbName] = (localStorage[dbName] === \"a\") ? \"b\" : \"a\";\n }\n};\n\nChanges.prototype.notify = function (dbName) {\n this.emit(dbName);\n this.notifyLocalWindows(dbName);\n};\n\nfunction guardedConsole(method) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined' && typeof console[method] === 'function') {\n var args = Array.prototype.slice.call(arguments, 1);\n console[method].apply(console, args);\n }\n}\n\nfunction randomNumber(min, max) {\n var maxTimeout = 600000; // Hard-coded default of 10 minutes\n min = parseInt(min, 10) || 0;\n max = parseInt(max, 10);\n if (max !== max || max <= min) {\n max = (min || 1) << 1; //doubling\n } else {\n max = max + 1;\n }\n // In order to not exceed maxTimeout, pick a random value between half of maxTimeout and maxTimeout\n if (max > maxTimeout) {\n min = maxTimeout >> 1; // divide by two\n max = maxTimeout;\n }\n var ratio = Math.random();\n var range = max - min;\n\n return ~~(range * ratio + min); // ~~ coerces to an int, but fast.\n}\n\nfunction defaultBackOff(min) {\n var max = 0;\n if (!min) {\n max = 2000;\n }\n return randomNumber(min, max);\n}\n\n// designed to give info to browser users, who are disturbed\n// when they see http errors in the console\nfunction explainError(status, str) {\n guardedConsole('info', 'The above ' + status + ' is totally normal. ' + str);\n}\n\nvar assign;\n{\n if (typeof Object.assign === 'function') {\n assign = Object.assign;\n } else {\n // lite Object.assign polyfill based on\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n assign = function (target) {\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) { // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\n\nvar $inject_Object_assign = assign;\n\ninherits(PouchError, Error);\n\nfunction PouchError(status, error, reason) {\n Error.call(this, reason);\n this.status = status;\n this.name = error;\n this.message = reason;\n this.error = true;\n}\n\nPouchError.prototype.toString = function () {\n return JSON.stringify({\n status: this.status,\n name: this.name,\n message: this.message,\n reason: this.reason\n });\n};\n\nvar UNAUTHORIZED = new PouchError(401, 'unauthorized', \"Name or password is incorrect.\");\nvar MISSING_BULK_DOCS = new PouchError(400, 'bad_request', \"Missing JSON list of 'docs'\");\nvar MISSING_DOC = new PouchError(404, 'not_found', 'missing');\nvar REV_CONFLICT = new PouchError(409, 'conflict', 'Document update conflict');\nvar INVALID_ID = new PouchError(400, 'bad_request', '_id field must contain a string');\nvar MISSING_ID = new PouchError(412, 'missing_id', '_id is required for puts');\nvar RESERVED_ID = new PouchError(400, 'bad_request', 'Only reserved document ids may start with underscore.');\nvar NOT_OPEN = new PouchError(412, 'precondition_failed', 'Database not open');\nvar UNKNOWN_ERROR = new PouchError(500, 'unknown_error', 'Database encountered an unknown error');\nvar BAD_ARG = new PouchError(500, 'badarg', 'Some query argument is invalid');\nvar INVALID_REQUEST = new PouchError(400, 'invalid_request', 'Request was invalid');\nvar QUERY_PARSE_ERROR = new PouchError(400, 'query_parse_error', 'Some query parameter is invalid');\nvar DOC_VALIDATION = new PouchError(500, 'doc_validation', 'Bad special document member');\nvar BAD_REQUEST = new PouchError(400, 'bad_request', 'Something wrong with the request');\nvar NOT_AN_OBJECT = new PouchError(400, 'bad_request', 'Document must be a JSON object');\nvar DB_MISSING = new PouchError(404, 'not_found', 'Database not found');\nvar IDB_ERROR = new PouchError(500, 'indexed_db_went_bad', 'unknown');\nvar WSQ_ERROR = new PouchError(500, 'web_sql_went_bad', 'unknown');\nvar LDB_ERROR = new PouchError(500, 'levelDB_went_went_bad', 'unknown');\nvar FORBIDDEN = new PouchError(403, 'forbidden', 'Forbidden by design doc validate_doc_update function');\nvar INVALID_REV = new PouchError(400, 'bad_request', 'Invalid rev format');\nvar FILE_EXISTS = new PouchError(412, 'file_exists', 'The database could not be created, the file already exists.');\nvar MISSING_STUB = new PouchError(412, 'missing_stub', 'A pre-existing attachment stub wasn\\'t found');\nvar INVALID_URL = new PouchError(413, 'invalid_url', 'Provided URL is invalid');\n\nfunction createError(error, reason) {\n function CustomPouchError(reason) {\n // inherit error properties from our parent error manually\n // so as to allow proper JSON parsing.\n /* jshint ignore:start */\n for (var p in error) {\n if (typeof error[p] !== 'function') {\n this[p] = error[p];\n }\n }\n /* jshint ignore:end */\n if (reason !== undefined) {\n this.reason = reason;\n }\n }\n CustomPouchError.prototype = PouchError.prototype;\n return new CustomPouchError(reason);\n}\n\nfunction generateErrorFromResponse(err) {\n\n if (typeof err !== 'object') {\n var data = err;\n err = UNKNOWN_ERROR;\n err.data = data;\n }\n\n if ('error' in err && err.error === 'conflict') {\n err.name = 'conflict';\n err.status = 409;\n }\n\n if (!('name' in err)) {\n err.name = err.error || 'unknown';\n }\n\n if (!('status' in err)) {\n err.status = 500;\n }\n\n if (!('message' in err)) {\n err.message = err.message || err.reason;\n }\n\n return err;\n}\n\nfunction tryFilter(filter, doc, req) {\n try {\n return !filter(doc, req);\n } catch (err) {\n var msg = 'Filter function threw: ' + err.toString();\n return createError(BAD_REQUEST, msg);\n }\n}\n\nfunction filterChange(opts) {\n var req = {};\n var hasFilter = opts.filter && typeof opts.filter === 'function';\n req.query = opts.query_params;\n\n return function filter(change) {\n if (!change.doc) {\n // CSG sends events on the changes feed that don't have documents,\n // this hack makes a whole lot of existing code robust.\n change.doc = {};\n }\n\n var filterReturn = hasFilter && tryFilter(opts.filter, change.doc, req);\n\n if (typeof filterReturn === 'object') {\n return filterReturn;\n }\n\n if (filterReturn) {\n return false;\n }\n\n if (!opts.include_docs) {\n delete change.doc;\n } else if (!opts.attachments) {\n for (var att in change.doc._attachments) {\n /* istanbul ignore else */\n if (change.doc._attachments.hasOwnProperty(att)) {\n change.doc._attachments[att].stub = true;\n }\n }\n }\n return true;\n };\n}\n\nfunction flatten(arrs) {\n var res = [];\n for (var i = 0, len = arrs.length; i < len; i++) {\n res = res.concat(arrs[i]);\n }\n return res;\n}\n\n// shim for Function.prototype.name,\n\n// Determine id an ID is valid\n// - invalid IDs begin with an underescore that does not begin '_design' or\n// '_local'\n// - any other string value is a valid id\n// Returns the specific error object for each case\nfunction invalidIdError(id) {\n var err;\n if (!id) {\n err = createError(MISSING_ID);\n } else if (typeof id !== 'string') {\n err = createError(INVALID_ID);\n } else if (/^_/.test(id) && !(/^_(design|local)/).test(id)) {\n err = createError(RESERVED_ID);\n }\n if (err) {\n throw err;\n }\n}\n\n// Checks if a PouchDB object is \"remote\" or not. This is\n\nfunction isRemote(db) {\n if (typeof db._remote === 'boolean') {\n return db._remote;\n }\n /* istanbul ignore next */\n if (typeof db.type === 'function') {\n guardedConsole('warn',\n 'db.type() is deprecated and will be removed in ' +\n 'a future version of PouchDB');\n return db.type() === 'http';\n }\n /* istanbul ignore next */\n return false;\n}\n\nfunction listenerCount(ee, type) {\n return 'listenerCount' in ee ? ee.listenerCount(type) :\n EventEmitter.listenerCount(ee, type);\n}\n\nfunction parseDesignDocFunctionName(s) {\n if (!s) {\n return null;\n }\n var parts = s.split('/');\n if (parts.length === 2) {\n return parts;\n }\n if (parts.length === 1) {\n return [s, s];\n }\n return null;\n}\n\nfunction normalizeDesignDocFunctionName(s) {\n var normalized = parseDesignDocFunctionName(s);\n return normalized ? normalized.join('/') : null;\n}\n\n// originally parseUri 1.2.2, now patched by us\n// (c) Steven Levithan <stevenlevithan.com>\n// MIT License\nvar keys = [\"source\", \"protocol\", \"authority\", \"userInfo\", \"user\", \"password\",\n \"host\", \"port\", \"relative\", \"path\", \"directory\", \"file\", \"query\", \"anchor\"];\nvar qName =\"queryKey\";\nvar qParser = /(?:^|&)([^&=]*)=?([^&]*)/g;\n\n// use the \"loose\" parser\n/* eslint maxlen: 0, no-useless-escape: 0 */\nvar parser = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nfunction parseUri(str) {\n var m = parser.exec(str);\n var uri = {};\n var i = 14;\n\n while (i--) {\n var key = keys[i];\n var value = m[i] || \"\";\n var encoded = ['user', 'password'].indexOf(key) !== -1;\n uri[key] = encoded ? decodeURIComponent(value) : value;\n }\n\n uri[qName] = {};\n uri[keys[12]].replace(qParser, function ($0, $1, $2) {\n if ($1) {\n uri[qName][$1] = $2;\n }\n });\n\n return uri;\n}\n\n// Based on https://github.com/alexdavid/scope-eval v0.0.3\n// (source: https://unpkg.com/scope-eval@0.0.3/scope_eval.js)\n// This is basically just a wrapper around new Function()\n\nfunction scopeEval(source, scope) {\n var keys = [];\n var values = [];\n for (var key in scope) {\n if (scope.hasOwnProperty(key)) {\n keys.push(key);\n values.push(scope[key]);\n }\n }\n keys.push(source);\n return Function.apply(null, keys).apply(null, values);\n}\n\n// this is essentially the \"update sugar\" function from daleharvey/pouchdb#1388\n// the diffFun tells us what delta to apply to the doc. it either returns\n// the doc, or false if it doesn't need to do an update after all\nfunction upsert(db, docId, diffFun) {\n return new Promise(function (fulfill, reject) {\n db.get(docId, function (err, doc) {\n if (err) {\n /* istanbul ignore next */\n if (err.status !== 404) {\n return reject(err);\n }\n doc = {};\n }\n\n // the user might change the _rev, so save it for posterity\n var docRev = doc._rev;\n var newDoc = diffFun(doc);\n\n if (!newDoc) {\n // if the diffFun returns falsy, we short-circuit as\n // an optimization\n return fulfill({updated: false, rev: docRev});\n }\n\n // users aren't allowed to modify these values,\n // so reset them here\n newDoc._id = docId;\n newDoc._rev = docRev;\n fulfill(tryAndPut(db, newDoc, diffFun));\n });\n });\n}\n\nfunction tryAndPut(db, doc, diffFun) {\n return db.put(doc).then(function (res) {\n return {\n updated: true,\n rev: res.rev\n };\n }, function (err) {\n /* istanbul ignore next */\n if (err.status !== 409) {\n throw err;\n }\n return upsert(db, doc._id, diffFun);\n });\n}\n\nvar thisAtob = function (str) {\n return atob(str);\n};\n\nvar thisBtoa = function (str) {\n return btoa(str);\n};\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor (e.g.\n// old QtWebKit versions, Android < 4.4).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== \"TypeError\") {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder :\n WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction binaryStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\nfunction binStringToBluffer(binString, type) {\n return createBlob([binaryStringToArrayBuffer(binString)], {type: type});\n}\n\nfunction b64ToBluffer(b64, type) {\n return binStringToBluffer(thisAtob(b64), type);\n}\n\n//Can't find original post, but this is close\n//http://stackoverflow.com/questions/6965107/ (continues on next line)\n//converting-between-strings-and-arraybuffers\nfunction arrayBufferToBinaryString(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n for (var i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\n\n// shim for browsers that don't support it\nfunction readAsBinaryString(blob, callback) {\n var reader = new FileReader();\n var hasBinaryString = typeof reader.readAsBinaryString === 'function';\n reader.onloadend = function (e) {\n var result = e.target.result || '';\n if (hasBinaryString) {\n return callback(result);\n }\n callback(arrayBufferToBinaryString(result));\n };\n if (hasBinaryString) {\n reader.readAsBinaryString(blob);\n } else {\n reader.readAsArrayBuffer(blob);\n }\n}\n\nfunction blobToBinaryString(blobOrBuffer, callback) {\n readAsBinaryString(blobOrBuffer, function (bin) {\n callback(bin);\n });\n}\n\nfunction blobToBase64(blobOrBuffer, callback) {\n blobToBinaryString(blobOrBuffer, function (base64) {\n callback(thisBtoa(base64));\n });\n}\n\n// simplified API. universal browser support is assumed\nfunction readAsArrayBuffer(blob, callback) {\n var reader = new FileReader();\n reader.onloadend = function (e) {\n var result = e.target.result || new ArrayBuffer(0);\n callback(result);\n };\n reader.readAsArrayBuffer(blob);\n}\n\n// this is not used in the browser\n\nvar setImmediateShim = global.setImmediate || global.setTimeout;\nvar MD5_CHUNK_SIZE = 32768;\n\nfunction rawToBase64(raw) {\n return thisBtoa(raw);\n}\n\nfunction sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n return blob.slice(start, end);\n}\n\nfunction appendBlob(buffer, blob, start, end, callback) {\n if (start > 0 || end < blob.size) {\n // only slice blob if we really need to\n blob = sliceBlob(blob, start, end);\n }\n readAsArrayBuffer(blob, function (arrayBuffer) {\n buffer.append(arrayBuffer);\n callback();\n });\n}\n\nfunction appendString(buffer, string, start, end, callback) {\n if (start > 0 || end < string.length) {\n // only create a substring if we really need to\n string = string.substring(start, end);\n }\n buffer.appendBinary(string);\n callback();\n}\n\nfunction binaryMd5(data, callback) {\n var inputIsString = typeof data === 'string';\n var len = inputIsString ? data.length : data.size;\n var chunkSize = Math.min(MD5_CHUNK_SIZE, len);\n var chunks = Math.ceil(len / chunkSize);\n var currentChunk = 0;\n var buffer = inputIsString ? new Md5() : new Md5.ArrayBuffer();\n\n var append = inputIsString ? appendString : appendBlob;\n\n function next() {\n setImmediateShim(loadNextChunk);\n }\n\n function done() {\n var raw = buffer.end(true);\n var base64 = rawToBase64(raw);\n callback(base64);\n buffer.destroy();\n }\n\n function loadNextChunk() {\n var start = currentChunk * chunkSize;\n var end = start + chunkSize;\n currentChunk++;\n if (currentChunk < chunks) {\n append(buffer, data, start, end, next);\n } else {\n append(buffer, data, start, end, done);\n }\n }\n loadNextChunk();\n}\n\nfunction stringMd5(string) {\n return Md5.hash(string);\n}\n\nfunction rev(doc, deterministic_revs) {\n var clonedDoc = clone(doc);\n if (!deterministic_revs) {\n return uuidV4.v4().replace(/-/g, '').toLowerCase();\n }\n\n delete clonedDoc._rev_tree;\n return stringMd5(JSON.stringify(clonedDoc));\n}\n\nvar uuid = uuidV4.v4;\n\n// We fetch all leafs of the revision tree, and sort them based on tree length\n// and whether they were deleted, undeleted documents with the longest revision\n// tree (most edits) win\n// The final sort algorithm is slightly documented in a sidebar here:\n// http://guide.couchdb.org/draft/conflicts.html\nfunction winningRev(metadata) {\n var winningId;\n var winningPos;\n var winningDeleted;\n var toVisit = metadata.rev_tree.slice();\n var node;\n while ((node = toVisit.pop())) {\n var tree = node.ids;\n var branches = tree[2];\n var pos = node.pos;\n if (branches.length) { // non-leaf\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i]});\n }\n continue;\n }\n var deleted = !!tree[1].deleted;\n var id = tree[0];\n // sort by deleted, then pos, then id\n if (!winningId || (winningDeleted !== deleted ? winningDeleted :\n winningPos !== pos ? winningPos < pos : winningId < id)) {\n winningId = id;\n winningPos = pos;\n winningDeleted = deleted;\n }\n }\n\n return winningPos + '-' + winningId;\n}\n\n// Pretty much all below can be combined into a higher order function to\n// traverse revisions\n// The return value from the callback will be passed as context to all\n// children of that node\nfunction traverseRevTree(revs, callback) {\n var toVisit = revs.slice();\n\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var branches = tree[2];\n var newCtx =\n callback(branches.length === 0, pos, tree[0], node.ctx, tree[1]);\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i], ctx: newCtx});\n }\n }\n}\n\nfunction sortByPos(a, b) {\n return a.pos - b.pos;\n}\n\nfunction collectLeaves(revs) {\n var leaves = [];\n traverseRevTree(revs, function (isLeaf, pos, id, acc, opts) {\n if (isLeaf) {\n leaves.push({rev: pos + \"-\" + id, pos: pos, opts: opts});\n }\n });\n leaves.sort(sortByPos).reverse();\n for (var i = 0, len = leaves.length; i < len; i++) {\n delete leaves[i].pos;\n }\n return leaves;\n}\n\n// returns revs of all conflicts that is leaves such that\n// 1. are not deleted and\n// 2. are different than winning revision\nfunction collectConflicts(metadata) {\n var win = winningRev(metadata);\n var leaves = collectLeaves(metadata.rev_tree);\n var conflicts = [];\n for (var i = 0, len = leaves.length; i < len; i++) {\n var leaf = leaves[i];\n if (leaf.rev !== win && !leaf.opts.deleted) {\n conflicts.push(leaf.rev);\n }\n }\n return conflicts;\n}\n\n// compact a tree by marking its non-leafs as missing,\n// and return a list of revs to delete\nfunction compactTree(metadata) {\n var revs = [];\n traverseRevTree(metadata.rev_tree, function (isLeaf, pos,\n revHash, ctx, opts) {\n if (opts.status === 'available' && !isLeaf) {\n revs.push(pos + '-' + revHash);\n opts.status = 'missing';\n }\n });\n return revs;\n}\n\n// build up a list of all the paths to the leafs in this revision tree\nfunction rootToLeaf(revs) {\n var paths = [];\n var toVisit = revs.slice();\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var id = tree[0];\n var opts = tree[1];\n var branches = tree[2];\n var isLeaf = branches.length === 0;\n\n var history = node.history ? node.history.slice() : [];\n history.push({id: id, opts: opts});\n if (isLeaf) {\n paths.push({pos: (pos + 1 - history.length), ids: history});\n }\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i], history: history});\n }\n }\n return paths.reverse();\n}\n\n// for a better overview of what this is doing, read:\n\nfunction sortByPos$1(a, b) {\n return a.pos - b.pos;\n}\n\n// classic binary search\nfunction binarySearch(arr, item, comparator) {\n var low = 0;\n var high = arr.length;\n var mid;\n while (low < high) {\n mid = (low + high) >>> 1;\n if (comparator(arr[mid], item) < 0) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return low;\n}\n\n// assuming the arr is sorted, insert the item in the proper place\nfunction insertSorted(arr, item, comparator) {\n var idx = binarySearch(arr, item, comparator);\n arr.splice(idx, 0, item);\n}\n\n// Turn a path as a flat array into a tree with a single branch.\n// If any should be stemmed from the beginning of the array, that's passed\n// in as the second argument\nfunction pathToTree(path, numStemmed) {\n var root;\n var leaf;\n for (var i = numStemmed, len = path.length; i < len; i++) {\n var node = path[i];\n var currentLeaf = [node.id, node.opts, []];\n if (leaf) {\n leaf[2].push(currentLeaf);\n leaf = currentLeaf;\n } else {\n root = leaf = currentLeaf;\n }\n }\n return root;\n}\n\n// compare the IDs of two trees\nfunction compareTree(a, b) {\n return a[0] < b[0] ? -1 : 1;\n}\n\n// Merge two trees together\n// The roots of tree1 and tree2 must be the same revision\nfunction mergeTree(in_tree1, in_tree2) {\n var queue = [{tree1: in_tree1, tree2: in_tree2}];\n var conflicts = false;\n while (queue.length > 0) {\n var item = queue.pop();\n var tree1 = item.tree1;\n var tree2 = item.tree2;\n\n if (tree1[1].status || tree2[1].status) {\n tree1[1].status =\n (tree1[1].status === 'available' ||\n tree2[1].status === 'available') ? 'available' : 'missing';\n }\n\n for (var i = 0; i < tree2[2].length; i++) {\n if (!tree1[2][0]) {\n conflicts = 'new_leaf';\n tree1[2][0] = tree2[2][i];\n continue;\n }\n\n var merged = false;\n for (var j = 0; j < tree1[2].length; j++) {\n if (tree1[2][j][0] === tree2[2][i][0]) {\n queue.push({tree1: tree1[2][j], tree2: tree2[2][i]});\n merged = true;\n }\n }\n if (!merged) {\n conflicts = 'new_branch';\n insertSorted(tree1[2], tree2[2][i], compareTree);\n }\n }\n }\n return {conflicts: conflicts, tree: in_tree1};\n}\n\nfunction doMerge(tree, path, dontExpand) {\n var restree = [];\n var conflicts = false;\n var merged = false;\n var res;\n\n if (!tree.length) {\n return {tree: [path], conflicts: 'new_leaf'};\n }\n\n for (var i = 0, len = tree.length; i < len; i++) {\n var branch = tree[i];\n if (branch.pos === path.pos && branch.ids[0] === path.ids[0]) {\n // Paths start at the same position and have the same root, so they need\n // merged\n res = mergeTree(branch.ids, path.ids);\n restree.push({pos: branch.pos, ids: res.tree});\n conflicts = conflicts || res.conflicts;\n merged = true;\n } else if (dontExpand !== true) {\n // The paths start at a different position, take the earliest path and\n // traverse up until it as at the same point from root as the path we\n // want to merge. If the keys match we return the longer path with the\n // other merged After stemming we dont want to expand the trees\n\n var t1 = branch.pos < path.pos ? branch : path;\n var t2 = branch.pos < path.pos ? path : branch;\n var diff = t2.pos - t1.pos;\n\n var candidateParents = [];\n\n var trees = [];\n trees.push({ids: t1.ids, diff: diff, parent: null, parentIdx: null});\n while (trees.length > 0) {\n var item = trees.pop();\n if (item.diff === 0) {\n if (item.ids[0] === t2.ids[0]) {\n candidateParents.push(item);\n }\n continue;\n }\n var elements = item.ids[2];\n for (var j = 0, elementsLen = elements.length; j < elementsLen; j++) {\n trees.push({\n ids: elements[j],\n diff: item.diff - 1,\n parent: item.ids,\n parentIdx: j\n });\n }\n }\n\n var el = candidateParents[0];\n\n if (!el) {\n restree.push(branch);\n } else {\n res = mergeTree(el.ids, t2.ids);\n el.parent[2][el.parentIdx] = res.tree;\n restree.push({pos: t1.pos, ids: t1.ids});\n conflicts = conflicts || res.conflicts;\n merged = true;\n }\n } else {\n restree.push(branch);\n }\n }\n\n // We didnt find\n if (!merged) {\n restree.push(path);\n }\n\n restree.sort(sortByPos$1);\n\n return {\n tree: restree,\n conflicts: conflicts || 'internal_node'\n };\n}\n\n// To ensure we dont grow the revision tree infinitely, we stem old revisions\nfunction stem(tree, depth) {\n // First we break out the tree into a complete list of root to leaf paths\n var paths = rootToLeaf(tree);\n var stemmedRevs;\n\n var result;\n for (var i = 0, len = paths.length; i < len; i++) {\n // Then for each path, we cut off the start of the path based on the\n // `depth` to stem to, and generate a new set of flat trees\n var path = paths[i];\n var stemmed = path.ids;\n var node;\n if (stemmed.length > depth) {\n // only do the stemming work if we actually need to stem\n if (!stemmedRevs) {\n stemmedRevs = {}; // avoid allocating this object unnecessarily\n }\n var numStemmed = stemmed.length - depth;\n node = {\n pos: path.pos + numStemmed,\n ids: pathToTree(stemmed, numStemmed)\n };\n\n for (var s = 0; s < numStemmed; s++) {\n var rev = (path.pos + s) + '-' + stemmed[s].id;\n stemmedRevs[rev] = true;\n }\n } else { // no need to actually stem\n node = {\n pos: path.pos,\n ids: pathToTree(stemmed, 0)\n };\n }\n\n // Then we remerge all those flat trees together, ensuring that we dont\n // connect trees that would go beyond the depth limit\n if (result) {\n result = doMerge(result, node, true).tree;\n } else {\n result = [node];\n }\n }\n\n // this is memory-heavy per Chrome profiler, avoid unless we actually stemmed\n if (stemmedRevs) {\n traverseRevTree(result, function (isLeaf, pos, revHash) {\n // some revisions may have been removed in a branch but not in another\n delete stemmedRevs[pos + '-' + revHash];\n });\n }\n\n return {\n tree: result,\n revs: stemmedRevs ? Object.keys(stemmedRevs) : []\n };\n}\n\nfunction merge(tree, path, depth) {\n var newTree = doMerge(tree, path);\n var stemmed = stem(newTree.tree, depth);\n return {\n tree: stemmed.tree,\n stemmedRevs: stemmed.revs,\n conflicts: newTree.conflicts\n };\n}\n\n// return true if a rev exists in the rev tree, false otherwise\nfunction revExists(revs, rev) {\n var toVisit = revs.slice();\n var splitRev = rev.split('-');\n var targetPos = parseInt(splitRev[0], 10);\n var targetId = splitRev[1];\n\n var node;\n while ((node = toVisit.pop())) {\n if (node.pos === targetPos && node.ids[0] === targetId) {\n return true;\n }\n var branches = node.ids[2];\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: node.pos + 1, ids: branches[i]});\n }\n }\n return false;\n}\n\nfunction getTrees(node) {\n return node.ids;\n}\n\n// check if a specific revision of a doc has been deleted\n// - metadata: the metadata object from the doc store\n// - rev: (optional) the revision to check. defaults to winning revision\nfunction isDeleted(metadata, rev) {\n if (!rev) {\n rev = winningRev(metadata);\n }\n var id = rev.substring(rev.indexOf('-') + 1);\n var toVisit = metadata.rev_tree.map(getTrees);\n\n var tree;\n while ((tree = toVisit.pop())) {\n if (tree[0] === id) {\n return !!tree[1].deleted;\n }\n toVisit = toVisit.concat(tree[2]);\n }\n}\n\nfunction isLocalId(id) {\n return (/^_local/).test(id);\n}\n\n// returns the current leaf node for a given revision\nfunction latest(rev, metadata) {\n var toVisit = metadata.rev_tree.slice();\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var id = tree[0];\n var opts = tree[1];\n var branches = tree[2];\n var isLeaf = branches.length === 0;\n\n var history = node.history ? node.history.slice() : [];\n history.push({id: id, pos: pos, opts: opts});\n\n if (isLeaf) {\n for (var i = 0, len = history.length; i < len; i++) {\n var historyNode = history[i];\n var historyRev = historyNode.pos + '-' + historyNode.id;\n\n if (historyRev === rev) {\n // return the rev of this leaf\n return pos + '-' + id;\n }\n }\n }\n\n for (var j = 0, l = branches.length; j < l; j++) {\n toVisit.push({pos: pos + 1, ids: branches[j], history: history});\n }\n }\n\n /* istanbul ignore next */\n throw new Error('Unable to resolve latest revision for id ' + metadata.id + ', rev ' + rev);\n}\n\ninherits(Changes$1, EventEmitter);\n\nfunction tryCatchInChangeListener(self, change, pending, lastSeq) {\n // isolate try/catches to avoid V8 deoptimizations\n try {\n self.emit('change', change, pending, lastSeq);\n } catch (e) {\n guardedConsole('error', 'Error in .on(\"change\", function):', e);\n }\n}\n\nfunction Changes$1(db, opts, callback) {\n EventEmitter.call(this);\n var self = this;\n this.db = db;\n opts = opts ? clone(opts) : {};\n var complete = opts.complete = once(function (err, resp) {\n if (err) {\n if (listenerCount(self, 'error') > 0) {\n self.emit('error', err);\n }\n } else {\n self.emit('complete', resp);\n }\n self.removeAllListeners();\n db.removeListener('destroyed', onDestroy);\n });\n if (callback) {\n self.on('complete', function (resp) {\n callback(null, resp);\n });\n self.on('error', callback);\n }\n function onDestroy() {\n self.cancel();\n }\n db.once('destroyed', onDestroy);\n\n opts.onChange = function (change, pending, lastSeq) {\n /* istanbul ignore if */\n if (self.isCancelled) {\n return;\n }\n tryCatchInChangeListener(self, change, pending, lastSeq);\n };\n\n var promise = new Promise(function (fulfill, reject) {\n opts.complete = function (err, res) {\n if (err) {\n reject(err);\n } else {\n fulfill(res);\n }\n };\n });\n self.once('cancel', function () {\n db.removeListener('destroyed', onDestroy);\n opts.complete(null, {status: 'cancelled'});\n });\n this.then = promise.then.bind(promise);\n this['catch'] = promise['catch'].bind(promise);\n this.then(function (result) {\n complete(null, result);\n }, complete);\n\n\n\n if (!db.taskqueue.isReady) {\n db.taskqueue.addTask(function (failed) {\n if (failed) {\n opts.complete(failed);\n } else if (self.isCancelled) {\n self.emit('cancel');\n } else {\n self.validateChanges(opts);\n }\n });\n } else {\n self.validateChanges(opts);\n }\n}\nChanges$1.prototype.cancel = function () {\n this.isCancelled = true;\n if (this.db.taskqueue.isReady) {\n this.emit('cancel');\n }\n};\nfunction processChange(doc, metadata, opts) {\n var changeList = [{rev: doc._rev}];\n if (opts.style === 'all_docs') {\n changeList = collectLeaves(metadata.rev_tree)\n .map(function (x) { return {rev: x.rev}; });\n }\n var change = {\n id: metadata.id,\n changes: changeList,\n doc: doc\n };\n\n if (isDeleted(metadata, doc._rev)) {\n change.deleted = true;\n }\n if (opts.conflicts) {\n change.doc._conflicts = collectConflicts(metadata);\n if (!change.doc._conflicts.length) {\n delete change.doc._conflicts;\n }\n }\n return change;\n}\n\nChanges$1.prototype.validateChanges = function (opts) {\n var callback = opts.complete;\n var self = this;\n\n /* istanbul ignore else */\n if (PouchDB._changesFilterPlugin) {\n PouchDB._changesFilterPlugin.validate(opts, function (err) {\n if (err) {\n return callback(err);\n }\n self.doChanges(opts);\n });\n } else {\n self.doChanges(opts);\n }\n};\n\nChanges$1.prototype.doChanges = function (opts) {\n var self = this;\n var callback = opts.complete;\n\n opts = clone(opts);\n if ('live' in opts && !('continuous' in opts)) {\n opts.continuous = opts.live;\n }\n opts.processChange = processChange;\n\n if (opts.since === 'latest') {\n opts.since = 'now';\n }\n if (!opts.since) {\n opts.since = 0;\n }\n if (opts.since === 'now') {\n this.db.info().then(function (info) {\n /* istanbul ignore if */\n if (self.isCancelled) {\n callback(null, {status: 'cancelled'});\n return;\n }\n opts.since = info.update_seq;\n self.doChanges(opts);\n }, callback);\n return;\n }\n\n /* istanbul ignore else */\n if (PouchDB._changesFilterPlugin) {\n PouchDB._changesFilterPlugin.normalize(opts);\n if (PouchDB._changesFilterPlugin.shouldFilter(this, opts)) {\n return PouchDB._changesFilterPlugin.filter(this, opts);\n }\n } else {\n ['doc_ids', 'filter', 'selector', 'view'].forEach(function (key) {\n if (key in opts) {\n guardedConsole('warn',\n 'The \"' + key + '\" option was passed in to changes/replicate, ' +\n 'but pouchdb-changes-filter plugin is not installed, so it ' +\n 'was ignored. Please install the plugin to enable filtering.'\n );\n }\n });\n }\n\n if (!('descending' in opts)) {\n opts.descending = false;\n }\n\n // 0 and 1 should return 1 document\n opts.limit = opts.limit === 0 ? 1 : opts.limit;\n opts.complete = callback;\n var newPromise = this.db._changes(opts);\n /* istanbul ignore else */\n if (newPromise && typeof newPromise.cancel === 'function') {\n var cancel = self.cancel;\n self.cancel = getArguments(function (args) {\n newPromise.cancel();\n cancel.apply(this, args);\n });\n }\n};\n\n/*\n * A generic pouch adapter\n */\n\nfunction compare(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\n// Wrapper for functions that call the bulkdocs api with a single doc,\n// if the first result is an error, return an error\nfunction yankError(callback, docId) {\n return function (err, results) {\n if (err || (results[0] && results[0].error)) {\n err = err || results[0];\n err.docId = docId;\n callback(err);\n } else {\n callback(null, results.length ? results[0] : results);\n }\n };\n}\n\n// clean docs given to us by the user\nfunction cleanDocs(docs) {\n for (var i = 0; i < docs.length; i++) {\n var doc = docs[i];\n if (doc._deleted) {\n delete doc._attachments; // ignore atts for deleted docs\n } else if (doc._attachments) {\n // filter out extraneous keys from _attachments\n var atts = Object.keys(doc._attachments);\n for (var j = 0; j < atts.length; j++) {\n var att = atts[j];\n doc._attachments[att] = pick(doc._attachments[att],\n ['data', 'digest', 'content_type', 'length', 'revpos', 'stub']);\n }\n }\n }\n}\n\n// compare two docs, first by _id then by _rev\nfunction compareByIdThenRev(a, b) {\n var idCompare = compare(a._id, b._id);\n if (idCompare !== 0) {\n return idCompare;\n }\n var aStart = a._revisions ? a._revisions.start : 0;\n var bStart = b._revisions ? b._revisions.start : 0;\n return compare(aStart, bStart);\n}\n\n// for every node in a revision tree computes its distance from the closest\n// leaf\nfunction computeHeight(revs) {\n var height = {};\n var edges = [];\n traverseRevTree(revs, function (isLeaf, pos, id, prnt) {\n var rev$$1 = pos + \"-\" + id;\n if (isLeaf) {\n height[rev$$1] = 0;\n }\n if (prnt !== undefined) {\n edges.push({from: prnt, to: rev$$1});\n }\n return rev$$1;\n });\n\n edges.reverse();\n edges.forEach(function (edge) {\n if (height[edge.from] === undefined) {\n height[edge.from] = 1 + height[edge.to];\n } else {\n height[edge.from] = Math.min(height[edge.from], 1 + height[edge.to]);\n }\n });\n return height;\n}\n\nfunction allDocsKeysParse(opts) {\n var keys = ('limit' in opts) ?\n opts.keys.slice(opts.skip, opts.limit + opts.skip) :\n (opts.skip > 0) ? opts.keys.slice(opts.skip) : opts.keys;\n opts.keys = keys;\n opts.skip = 0;\n delete opts.limit;\n if (opts.descending) {\n keys.reverse();\n opts.descending = false;\n }\n}\n\n// all compaction is done in a queue, to avoid attaching\n// too many listeners at once\nfunction doNextCompaction(self) {\n var task = self._compactionQueue[0];\n var opts = task.opts;\n var callback = task.callback;\n self.get('_local/compaction').catch(function () {\n return false;\n }).then(function (doc) {\n if (doc && doc.last_seq) {\n opts.last_seq = doc.last_seq;\n }\n self._compact(opts, function (err, res) {\n /* istanbul ignore if */\n if (err) {\n callback(err);\n } else {\n callback(null, res);\n }\n immediate(function () {\n self._compactionQueue.shift();\n if (self._compactionQueue.length) {\n doNextCompaction(self);\n }\n });\n });\n });\n}\n\nfunction attachmentNameError(name) {\n if (name.charAt(0) === '_') {\n return name + ' is not a valid attachment name, attachment ' +\n 'names cannot start with \\'_\\'';\n }\n return false;\n}\n\ninherits(AbstractPouchDB, EventEmitter);\n\nfunction AbstractPouchDB() {\n EventEmitter.call(this);\n\n // re-bind prototyped methods\n for (var p in AbstractPouchDB.prototype) {\n if (typeof this[p] === 'function') {\n this[p] = this[p].bind(this);\n }\n }\n}\n\nAbstractPouchDB.prototype.post =\n adapterFun('post', function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof doc !== 'object' || Array.isArray(doc)) {\n return callback(createError(NOT_AN_OBJECT));\n }\n this.bulkDocs({docs: [doc]}, opts, yankError(callback, doc._id));\n});\n\nAbstractPouchDB.prototype.put = adapterFun('put', function (doc, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof doc !== 'object' || Array.isArray(doc)) {\n return cb(createError(NOT_AN_OBJECT));\n }\n invalidIdError(doc._id);\n if (isLocalId(doc._id) && typeof this._putLocal === 'function') {\n if (doc._deleted) {\n return this._removeLocal(doc, cb);\n } else {\n return this._putLocal(doc, cb);\n }\n }\n var self = this;\n if (opts.force && doc._rev) {\n transformForceOptionToNewEditsOption();\n putDoc(function (err) {\n var result = err ? null : {ok: true, id: doc._id, rev: doc._rev};\n cb(err, result);\n });\n } else {\n putDoc(cb);\n }\n\n function transformForceOptionToNewEditsOption() {\n var parts = doc._rev.split('-');\n var oldRevId = parts[1];\n var oldRevNum = parseInt(parts[0], 10);\n\n var newRevNum = oldRevNum + 1;\n var newRevId = rev();\n\n doc._revisions = {\n start: newRevNum,\n ids: [newRevId, oldRevId]\n };\n doc._rev = newRevNum + '-' + newRevId;\n opts.new_edits = false;\n }\n function putDoc(next) {\n if (typeof self._put === 'function' && opts.new_edits !== false) {\n self._put(doc, opts, next);\n } else {\n self.bulkDocs({docs: [doc]}, opts, yankError(next, doc._id));\n }\n }\n});\n\nAbstractPouchDB.prototype.putAttachment =\n adapterFun('putAttachment', function (docId, attachmentId, rev$$1,\n blob, type) {\n var api = this;\n if (typeof type === 'function') {\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n // Lets fix in https://github.com/pouchdb/pouchdb/issues/3267\n /* istanbul ignore if */\n if (typeof type === 'undefined') {\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n if (!type) {\n guardedConsole('warn', 'Attachment', attachmentId, 'on document', docId, 'is missing content_type');\n }\n\n function createAttachment(doc) {\n var prevrevpos = '_rev' in doc ? parseInt(doc._rev, 10) : 0;\n doc._attachments = doc._attachments || {};\n doc._attachments[attachmentId] = {\n content_type: type,\n data: blob,\n revpos: ++prevrevpos\n };\n return api.put(doc);\n }\n\n return api.get(docId).then(function (doc) {\n if (doc._rev !== rev$$1) {\n throw createError(REV_CONFLICT);\n }\n\n return createAttachment(doc);\n }, function (err) {\n // create new doc\n /* istanbul ignore else */\n if (err.reason === MISSING_DOC.message) {\n return createAttachment({_id: docId});\n } else {\n throw err;\n }\n });\n});\n\nAbstractPouchDB.prototype.removeAttachment =\n adapterFun('removeAttachment', function (docId, attachmentId, rev$$1,\n callback) {\n var self = this;\n self.get(docId, function (err, obj) {\n /* istanbul ignore if */\n if (err) {\n callback(err);\n return;\n }\n if (obj._rev !== rev$$1) {\n callback(createError(REV_CONFLICT));\n return;\n }\n /* istanbul ignore if */\n if (!obj._attachments) {\n return callback();\n }\n delete obj._attachments[attachmentId];\n if (Object.keys(obj._attachments).length === 0) {\n delete obj._attachments;\n }\n self.put(obj, callback);\n });\n});\n\nAbstractPouchDB.prototype.remove =\n adapterFun('remove', function (docOrId, optsOrRev, opts, callback) {\n var doc;\n if (typeof optsOrRev === 'string') {\n // id, rev, opts, callback style\n doc = {\n _id: docOrId,\n _rev: optsOrRev\n };\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n } else {\n // doc, opts, callback style\n doc = docOrId;\n if (typeof optsOrRev === 'function') {\n callback = optsOrRev;\n opts = {};\n } else {\n callback = opts;\n opts = optsOrRev;\n }\n }\n opts = opts || {};\n opts.was_delete = true;\n var newDoc = {_id: doc._id, _rev: (doc._rev || opts.rev)};\n newDoc._deleted = true;\n if (isLocalId(newDoc._id) && typeof this._removeLocal === 'function') {\n return this._removeLocal(doc, callback);\n }\n this.bulkDocs({docs: [newDoc]}, opts, yankError(callback, newDoc._id));\n});\n\nAbstractPouchDB.prototype.revsDiff =\n adapterFun('revsDiff', function (req, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var ids = Object.keys(req);\n\n if (!ids.length) {\n return callback(null, {});\n }\n\n var count = 0;\n var missing = new ExportedMap();\n\n function addToMissing(id, revId) {\n if (!missing.has(id)) {\n missing.set(id, {missing: []});\n }\n missing.get(id).missing.push(revId);\n }\n\n function processDoc(id, rev_tree) {\n // Is this fast enough? Maybe we should switch to a set simulated by a map\n var missingForId = req[id].slice(0);\n traverseRevTree(rev_tree, function (isLeaf, pos, revHash, ctx,\n opts) {\n var rev$$1 = pos + '-' + revHash;\n var idx = missingForId.indexOf(rev$$1);\n if (idx === -1) {\n return;\n }\n\n missingForId.splice(idx, 1);\n /* istanbul ignore if */\n if (opts.status !== 'available') {\n addToMissing(id, rev$$1);\n }\n });\n\n // Traversing the tree is synchronous, so now `missingForId` contains\n // revisions that were not found in the tree\n missingForId.forEach(function (rev$$1) {\n addToMissing(id, rev$$1);\n });\n }\n\n ids.map(function (id) {\n this._getRevisionTree(id, function (err, rev_tree) {\n if (err && err.status === 404 && err.message === 'missing') {\n missing.set(id, {missing: req[id]});\n } else if (err) {\n /* istanbul ignore next */\n return callback(err);\n } else {\n processDoc(id, rev_tree);\n }\n\n if (++count === ids.length) {\n // convert LazyMap to object\n var missingObj = {};\n missing.forEach(function (value, key) {\n missingObj[key] = value;\n });\n return callback(null, missingObj);\n }\n });\n }, this);\n});\n\n// _bulk_get API for faster replication, as described in\n// https://github.com/apache/couchdb-chttpd/pull/33\n// At the \"abstract\" level, it will just run multiple get()s in\n// parallel, because this isn't much of a performance cost\n// for local databases (except the cost of multiple transactions, which is\n// small). The http adapter overrides this in order\n// to do a more efficient single HTTP request.\nAbstractPouchDB.prototype.bulkGet =\n adapterFun('bulkGet', function (opts, callback) {\n bulkGet(this, opts, callback);\n});\n\n// compact one document and fire callback\n// by compacting we mean removing all revisions which\n// are further from the leaf in revision tree than max_height\nAbstractPouchDB.prototype.compactDocument =\n adapterFun('compactDocument', function (docId, maxHeight, callback) {\n var self = this;\n this._getRevisionTree(docId, function (err, revTree) {\n /* istanbul ignore if */\n if (err) {\n return callback(err);\n }\n var height = computeHeight(revTree);\n var candidates = [];\n var revs = [];\n Object.keys(height).forEach(function (rev$$1) {\n if (height[rev$$1] > maxHeight) {\n candidates.push(rev$$1);\n }\n });\n\n traverseRevTree(revTree, function (isLeaf, pos, revHash, ctx, opts) {\n var rev$$1 = pos + '-' + revHash;\n if (opts.status === 'available' && candidates.indexOf(rev$$1) !== -1) {\n revs.push(rev$$1);\n }\n });\n self._doCompaction(docId, revs, callback);\n });\n});\n\n// compact the whole database using single document\n// compaction\nAbstractPouchDB.prototype.compact =\n adapterFun('compact', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n var self = this;\n opts = opts || {};\n\n self._compactionQueue = self._compactionQueue || [];\n self._compactionQueue.push({opts: opts, callback: callback});\n if (self._compactionQueue.length === 1) {\n doNextCompaction(self);\n }\n});\nAbstractPouchDB.prototype._compact = function (opts, callback) {\n var self = this;\n var changesOpts = {\n return_docs: false,\n last_seq: opts.last_seq || 0\n };\n var promises = [];\n\n function onChange(row) {\n promises.push(self.compactDocument(row.id, 0));\n }\n function onComplete(resp) {\n var lastSeq = resp.last_seq;\n Promise.all(promises).then(function () {\n return upsert(self, '_local/compaction', function deltaFunc(doc) {\n if (!doc.last_seq || doc.last_seq < lastSeq) {\n doc.last_seq = lastSeq;\n return doc;\n }\n return false; // somebody else got here first, don't update\n });\n }).then(function () {\n callback(null, {ok: true});\n }).catch(callback);\n }\n self.changes(changesOpts)\n .on('change', onChange)\n .on('complete', onComplete)\n .on('error', callback);\n};\n\n/* Begin api wrappers. Specific functionality to storage belongs in the\n _[method] */\nAbstractPouchDB.prototype.get = adapterFun('get', function (id, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof id !== 'string') {\n return cb(createError(INVALID_ID));\n }\n if (isLocalId(id) && typeof this._getLocal === 'function') {\n return this._getLocal(id, cb);\n }\n var leaves = [], self = this;\n\n function finishOpenRevs() {\n var result = [];\n var count = leaves.length;\n /* istanbul ignore if */\n if (!count) {\n return cb(null, result);\n }\n\n // order with open_revs is unspecified\n leaves.forEach(function (leaf) {\n self.get(id, {\n rev: leaf,\n revs: opts.revs,\n latest: opts.latest,\n attachments: opts.attachments,\n binary: opts.binary\n }, function (err, doc) {\n if (!err) {\n // using latest=true can produce duplicates\n var existing;\n for (var i = 0, l = result.length; i < l; i++) {\n if (result[i].ok && result[i].ok._rev === doc._rev) {\n existing = true;\n break;\n }\n }\n if (!existing) {\n result.push({ok: doc});\n }\n } else {\n result.push({missing: leaf});\n }\n count--;\n if (!count) {\n cb(null, result);\n }\n });\n });\n }\n\n if (opts.open_revs) {\n if (opts.open_revs === \"all\") {\n this._getRevisionTree(id, function (err, rev_tree) {\n /* istanbul ignore if */\n if (err) {\n return cb(err);\n }\n leaves = collectLeaves(rev_tree).map(function (leaf) {\n return leaf.rev;\n });\n finishOpenRevs();\n });\n } else {\n if (Array.isArray(opts.open_revs)) {\n leaves = opts.open_revs;\n for (var i = 0; i < leaves.length; i++) {\n var l = leaves[i];\n // looks like it's the only thing couchdb checks\n if (!(typeof (l) === \"string\" && /^\\d+-/.test(l))) {\n return cb(createError(INVALID_REV));\n }\n }\n finishOpenRevs();\n } else {\n return cb(createError(UNKNOWN_ERROR, 'function_clause'));\n }\n }\n return; // open_revs does not like other options\n }\n\n return this._get(id, opts, function (err, result) {\n if (err) {\n err.docId = id;\n return cb(err);\n }\n\n var doc = result.doc;\n var metadata = result.metadata;\n var ctx = result.ctx;\n\n if (opts.conflicts) {\n var conflicts = collectConflicts(metadata);\n if (conflicts.length) {\n doc._conflicts = conflicts;\n }\n }\n\n if (isDeleted(metadata, doc._rev)) {\n doc._deleted = true;\n }\n\n if (opts.revs || opts.revs_info) {\n var splittedRev = doc._rev.split('-');\n var revNo = parseInt(splittedRev[0], 10);\n var revHash = splittedRev[1];\n\n var paths = rootToLeaf(metadata.rev_tree);\n var path = null;\n\n for (var i = 0; i < paths.length; i++) {\n var currentPath = paths[i];\n var hashIndex = currentPath.ids.map(function (x) { return x.id; })\n .indexOf(revHash);\n var hashFoundAtRevPos = hashIndex === (revNo - 1);\n\n if (hashFoundAtRevPos || (!path && hashIndex !== -1)) {\n path = currentPath;\n }\n }\n\n /* istanbul ignore if */\n if (!path) {\n err = new Error('invalid rev tree');\n err.docId = id;\n return cb(err);\n }\n\n var indexOfRev = path.ids.map(function (x) { return x.id; })\n .indexOf(doc._rev.split('-')[1]) + 1;\n var howMany = path.ids.length - indexOfRev;\n path.ids.splice(indexOfRev, howMany);\n path.ids.reverse();\n\n if (opts.revs) {\n doc._revisions = {\n start: (path.pos + path.ids.length) - 1,\n ids: path.ids.map(function (rev$$1) {\n return rev$$1.id;\n })\n };\n }\n if (opts.revs_info) {\n var pos = path.pos + path.ids.length;\n doc._revs_info = path.ids.map(function (rev$$1) {\n pos--;\n return {\n rev: pos + '-' + rev$$1.id,\n status: rev$$1.opts.status\n };\n });\n }\n }\n\n if (opts.attachments && doc._attachments) {\n var attachments = doc._attachments;\n var count = Object.keys(attachments).length;\n if (count === 0) {\n return cb(null, doc);\n }\n Object.keys(attachments).forEach(function (key) {\n this._getAttachment(doc._id, key, attachments[key], {\n // Previously the revision handling was done in adapter.js\n // getAttachment, however since idb-next doesnt we need to\n // pass the rev through\n rev: doc._rev,\n binary: opts.binary,\n ctx: ctx\n }, function (err, data) {\n var att = doc._attachments[key];\n att.data = data;\n delete att.stub;\n delete att.length;\n if (!--count) {\n cb(null, doc);\n }\n });\n }, self);\n } else {\n if (doc._attachments) {\n for (var key in doc._attachments) {\n /* istanbul ignore else */\n if (doc._attachments.hasOwnProperty(key)) {\n doc._attachments[key].stub = true;\n }\n }\n }\n cb(null, doc);\n }\n });\n});\n\n// TODO: I dont like this, it forces an extra read for every\n// attachment read and enforces a confusing api between\n// adapter.js and the adapter implementation\nAbstractPouchDB.prototype.getAttachment =\n adapterFun('getAttachment', function (docId, attachmentId, opts, callback) {\n var self = this;\n if (opts instanceof Function) {\n callback = opts;\n opts = {};\n }\n this._get(docId, opts, function (err, res) {\n if (err) {\n return callback(err);\n }\n if (res.doc._attachments && res.doc._attachments[attachmentId]) {\n opts.ctx = res.ctx;\n opts.binary = true;\n self._getAttachment(docId, attachmentId,\n res.doc._attachments[attachmentId], opts, callback);\n } else {\n return callback(createError(MISSING_DOC));\n }\n });\n});\n\nAbstractPouchDB.prototype.allDocs =\n adapterFun('allDocs', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts.skip = typeof opts.skip !== 'undefined' ? opts.skip : 0;\n if (opts.start_key) {\n opts.startkey = opts.start_key;\n }\n if (opts.end_key) {\n opts.endkey = opts.end_key;\n }\n if ('keys' in opts) {\n if (!Array.isArray(opts.keys)) {\n return callback(new TypeError('options.keys must be an array'));\n }\n var incompatibleOpt =\n ['startkey', 'endkey', 'key'].filter(function (incompatibleOpt) {\n return incompatibleOpt in opts;\n })[0];\n if (incompatibleOpt) {\n callback(createError(QUERY_PARSE_ERROR,\n 'Query parameter `' + incompatibleOpt +\n '` is not compatible with multi-get'\n ));\n return;\n }\n if (!isRemote(this)) {\n allDocsKeysParse(opts);\n if (opts.keys.length === 0) {\n return this._allDocs({limit: 0}, callback);\n }\n }\n }\n\n return this._allDocs(opts, callback);\n});\n\nAbstractPouchDB.prototype.changes = function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n // By default set return_docs to false if the caller has opts.live = true,\n // this will prevent us from collecting the set of changes indefinitely\n // resulting in growing memory\n opts.return_docs = ('return_docs' in opts) ? opts.return_docs : !opts.live;\n\n return new Changes$1(this, opts, callback);\n};\n\nAbstractPouchDB.prototype.close = adapterFun('close', function (callback) {\n this._closed = true;\n this.emit('closed');\n return this._close(callback);\n});\n\nAbstractPouchDB.prototype.info = adapterFun('info', function (callback) {\n var self = this;\n this._info(function (err, info) {\n if (err) {\n return callback(err);\n }\n // assume we know better than the adapter, unless it informs us\n info.db_name = info.db_name || self.name;\n info.auto_compaction = !!(self.auto_compaction && !isRemote(self));\n info.adapter = self.adapter;\n callback(null, info);\n });\n});\n\nAbstractPouchDB.prototype.id = adapterFun('id', function (callback) {\n return this._id(callback);\n});\n\n/* istanbul ignore next */\nAbstractPouchDB.prototype.type = function () {\n return (typeof this._type === 'function') ? this._type() : this.adapter;\n};\n\nAbstractPouchDB.prototype.bulkDocs =\n adapterFun('bulkDocs', function (req, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n if (Array.isArray(req)) {\n req = {\n docs: req\n };\n }\n\n if (!req || !req.docs || !Array.isArray(req.docs)) {\n return callback(createError(MISSING_BULK_DOCS));\n }\n\n for (var i = 0; i < req.docs.length; ++i) {\n if (typeof req.docs[i] !== 'object' || Array.isArray(req.docs[i])) {\n return callback(createError(NOT_AN_OBJECT));\n }\n }\n\n var attachmentError;\n req.docs.forEach(function (doc) {\n if (doc._attachments) {\n Object.keys(doc._attachments).forEach(function (name) {\n attachmentError = attachmentError || attachmentNameError(name);\n if (!doc._attachments[name].content_type) {\n guardedConsole('warn', 'Attachment', name, 'on document', doc._id, 'is missing content_type');\n }\n });\n }\n });\n\n if (attachmentError) {\n return callback(createError(BAD_REQUEST, attachmentError));\n }\n\n if (!('new_edits' in opts)) {\n if ('new_edits' in req) {\n opts.new_edits = req.new_edits;\n } else {\n opts.new_edits = true;\n }\n }\n\n var adapter = this;\n if (!opts.new_edits && !isRemote(adapter)) {\n // ensure revisions of the same doc are sorted, so that\n // the local adapter processes them correctly (#2935)\n req.docs.sort(compareByIdThenRev);\n }\n\n cleanDocs(req.docs);\n\n // in the case of conflicts, we want to return the _ids to the user\n // however, the underlying adapter may destroy the docs array, so\n // create a copy here\n var ids = req.docs.map(function (doc) {\n return doc._id;\n });\n\n return this._bulkDocs(req, opts, function (err, res) {\n if (err) {\n return callback(err);\n }\n if (!opts.new_edits) {\n // this is what couch does when new_edits is false\n res = res.filter(function (x) {\n return x.error;\n });\n }\n // add ids for error/conflict responses (not required for CouchDB)\n if (!isRemote(adapter)) {\n for (var i = 0, l = res.length; i < l; i++) {\n res[i].id = res[i].id || ids[i];\n }\n }\n\n callback(null, res);\n });\n});\n\nAbstractPouchDB.prototype.registerDependentDatabase =\n adapterFun('registerDependentDatabase', function (dependentDb,\n callback) {\n var depDB = new this.constructor(dependentDb, this.__opts);\n\n function diffFun(doc) {\n doc.dependentDbs = doc.dependentDbs || {};\n if (doc.dependentDbs[dependentDb]) {\n return false; // no update required\n }\n doc.dependentDbs[dependentDb] = true;\n return doc;\n }\n upsert(this, '_local/_pouch_dependentDbs', diffFun)\n .then(function () {\n callback(null, {db: depDB});\n }).catch(callback);\n});\n\nAbstractPouchDB.prototype.destroy =\n adapterFun('destroy', function (opts, callback) {\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n var self = this;\n var usePrefix = 'use_prefix' in self ? self.use_prefix : true;\n\n function destroyDb() {\n // call destroy method of the particular adaptor\n self._destroy(opts, function (err, resp) {\n if (err) {\n return callback(err);\n }\n self._destroyed = true;\n self.emit('destroyed');\n callback(null, resp || { 'ok': true });\n });\n }\n\n if (isRemote(self)) {\n // no need to check for dependent DBs if it's a remote DB\n return destroyDb();\n }\n\n self.get('_local/_pouch_dependentDbs', function (err, localDoc) {\n if (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n return callback(err);\n } else { // no dependencies\n return destroyDb();\n }\n }\n var dependentDbs = localDoc.dependentDbs;\n var PouchDB = self.constructor;\n var deletedMap = Object.keys(dependentDbs).map(function (name) {\n // use_prefix is only false in the browser\n /* istanbul ignore next */\n var trueName = usePrefix ?\n name.replace(new RegExp('^' + PouchDB.prefix), '') : name;\n return new PouchDB(trueName, self.__opts).destroy();\n });\n Promise.all(deletedMap).then(destroyDb, callback);\n });\n});\n\nfunction TaskQueue() {\n this.isReady = false;\n this.failed = false;\n this.queue = [];\n}\n\nTaskQueue.prototype.execute = function () {\n var fun;\n if (this.failed) {\n while ((fun = this.queue.shift())) {\n fun(this.failed);\n }\n } else {\n while ((fun = this.queue.shift())) {\n fun();\n }\n }\n};\n\nTaskQueue.prototype.fail = function (err) {\n this.failed = err;\n this.execute();\n};\n\nTaskQueue.prototype.ready = function (db) {\n this.isReady = true;\n this.db = db;\n this.execute();\n};\n\nTaskQueue.prototype.addTask = function (fun) {\n this.queue.push(fun);\n if (this.failed) {\n this.execute();\n }\n};\n\nfunction parseAdapter(name, opts) {\n var match = name.match(/([a-z-]*):\\/\\/(.*)/);\n if (match) {\n // the http adapter expects the fully qualified name\n return {\n name: /https?/.test(match[1]) ? match[1] + '://' + match[2] : match[2],\n adapter: match[1]\n };\n }\n\n var adapters = PouchDB.adapters;\n var preferredAdapters = PouchDB.preferredAdapters;\n var prefix = PouchDB.prefix;\n var adapterName = opts.adapter;\n\n if (!adapterName) { // automatically determine adapter\n for (var i = 0; i < preferredAdapters.length; ++i) {\n adapterName = preferredAdapters[i];\n // check for browsers that have been upgraded from websql-only to websql+idb\n /* istanbul ignore if */\n if (adapterName === 'idb' && 'websql' in adapters &&\n hasLocalStorage() && localStorage['_pouch__websqldb_' + prefix + name]) {\n // log it, because this can be confusing during development\n guardedConsole('log', 'PouchDB is downgrading \"' + name + '\" to WebSQL to' +\n ' avoid data loss, because it was already opened with WebSQL.');\n continue; // keep using websql to avoid user data loss\n }\n break;\n }\n }\n\n var adapter = adapters[adapterName];\n\n // if adapter is invalid, then an error will be thrown later\n var usePrefix = (adapter && 'use_prefix' in adapter) ?\n adapter.use_prefix : true;\n\n return {\n name: usePrefix ? (prefix + name) : name,\n adapter: adapterName\n };\n}\n\n// OK, so here's the deal. Consider this code:\n// var db1 = new PouchDB('foo');\n// var db2 = new PouchDB('foo');\n// db1.destroy();\n// ^ these two both need to emit 'destroyed' events,\n// as well as the PouchDB constructor itself.\n// So we have one db object (whichever one got destroy() called on it)\n// responsible for emitting the initial event, which then gets emitted\n// by the constructor, which then broadcasts it to any other dbs\n// that may have been created with the same name.\nfunction prepareForDestruction(self) {\n\n function onDestroyed(from_constructor) {\n self.removeListener('closed', onClosed);\n if (!from_constructor) {\n self.constructor.emit('destroyed', self.name);\n }\n }\n\n function onClosed() {\n self.removeListener('destroyed', onDestroyed);\n self.constructor.emit('unref', self);\n }\n\n self.once('destroyed', onDestroyed);\n self.once('closed', onClosed);\n self.constructor.emit('ref', self);\n}\n\ninherits(PouchDB, AbstractPouchDB);\nfunction PouchDB(name, opts) {\n // In Node our test suite only tests this for PouchAlt unfortunately\n /* istanbul ignore if */\n if (!(this instanceof PouchDB)) {\n return new PouchDB(name, opts);\n }\n\n var self = this;\n opts = opts || {};\n\n if (name && typeof name === 'object') {\n opts = name;\n name = opts.name;\n delete opts.name;\n }\n\n if (opts.deterministic_revs === undefined) {\n opts.deterministic_revs = true;\n }\n\n this.__opts = opts = clone(opts);\n\n self.auto_compaction = opts.auto_compaction;\n self.prefix = PouchDB.prefix;\n\n if (typeof name !== 'string') {\n throw new Error('Missing/invalid DB name');\n }\n\n var prefixedName = (opts.prefix || '') + name;\n var backend = parseAdapter(prefixedName, opts);\n\n opts.name = backend.name;\n opts.adapter = opts.adapter || backend.adapter;\n\n self.name = name;\n self._adapter = opts.adapter;\n PouchDB.emit('debug', ['adapter', 'Picked adapter: ', opts.adapter]);\n\n if (!PouchDB.adapters[opts.adapter] ||\n !PouchDB.adapters[opts.adapter].valid()) {\n throw new Error('Invalid Adapter: ' + opts.adapter);\n }\n\n AbstractPouchDB.call(self);\n self.taskqueue = new TaskQueue();\n\n self.adapter = opts.adapter;\n\n PouchDB.adapters[opts.adapter].call(self, opts, function (err) {\n if (err) {\n return self.taskqueue.fail(err);\n }\n prepareForDestruction(self);\n\n self.emit('created', self);\n PouchDB.emit('created', self.name);\n self.taskqueue.ready(self);\n });\n\n}\n\n// AbortController was introduced quite a while after fetch and\n// isnt required for PouchDB to function so polyfill if needed\nvar a = (typeof AbortController !== 'undefined')\n ? AbortController\n : function () { return {abort: function () {}}; };\n\nvar f$1 = fetch;\nvar h = Headers;\n\nPouchDB.adapters = {};\nPouchDB.preferredAdapters = [];\n\nPouchDB.prefix = '_pouch_';\n\nvar eventEmitter = new EventEmitter();\n\nfunction setUpEventEmitter(Pouch) {\n Object.keys(EventEmitter.prototype).forEach(function (key) {\n if (typeof EventEmitter.prototype[key] === 'function') {\n Pouch[key] = eventEmitter[key].bind(eventEmitter);\n }\n });\n\n // these are created in constructor.js, and allow us to notify each DB with\n // the same name that it was destroyed, via the constructor object\n var destructListeners = Pouch._destructionListeners = new ExportedMap();\n\n Pouch.on('ref', function onConstructorRef(db) {\n if (!destructListeners.has(db.name)) {\n destructListeners.set(db.name, []);\n }\n destructListeners.get(db.name).push(db);\n });\n\n Pouch.on('unref', function onConstructorUnref(db) {\n if (!destructListeners.has(db.name)) {\n return;\n }\n var dbList = destructListeners.get(db.name);\n var pos = dbList.indexOf(db);\n if (pos < 0) {\n /* istanbul ignore next */\n return;\n }\n dbList.splice(pos, 1);\n if (dbList.length > 1) {\n /* istanbul ignore next */\n destructListeners.set(db.name, dbList);\n } else {\n destructListeners.delete(db.name);\n }\n });\n\n Pouch.on('destroyed', function onConstructorDestroyed(name) {\n if (!destructListeners.has(name)) {\n return;\n }\n var dbList = destructListeners.get(name);\n destructListeners.delete(name);\n dbList.forEach(function (db) {\n db.emit('destroyed',true);\n });\n });\n}\n\nsetUpEventEmitter(PouchDB);\n\nPouchDB.adapter = function (id, obj, addToPreferredAdapters) {\n /* istanbul ignore else */\n if (obj.valid()) {\n PouchDB.adapters[id] = obj;\n if (addToPreferredAdapters) {\n PouchDB.preferredAdapters.push(id);\n }\n }\n};\n\nPouchDB.plugin = function (obj) {\n if (typeof obj === 'function') { // function style for plugins\n obj(PouchDB);\n } else if (typeof obj !== 'object' || Object.keys(obj).length === 0) {\n throw new Error('Invalid plugin: got \"' + obj + '\", expected an object or a function');\n } else {\n Object.keys(obj).forEach(function (id) { // object style for plugins\n PouchDB.prototype[id] = obj[id];\n });\n }\n if (this.__defaults) {\n PouchDB.__defaults = $inject_Object_assign({}, this.__defaults);\n }\n return PouchDB;\n};\n\nPouchDB.defaults = function (defaultOpts) {\n function PouchAlt(name, opts) {\n if (!(this instanceof PouchAlt)) {\n return new PouchAlt(name, opts);\n }\n\n opts = opts || {};\n\n if (name && typeof name === 'object') {\n opts = name;\n name = opts.name;\n delete opts.name;\n }\n\n opts = $inject_Object_assign({}, PouchAlt.__defaults, opts);\n PouchDB.call(this, name, opts);\n }\n\n inherits(PouchAlt, PouchDB);\n\n PouchAlt.preferredAdapters = PouchDB.preferredAdapters.slice();\n Object.keys(PouchDB).forEach(function (key) {\n if (!(key in PouchAlt)) {\n PouchAlt[key] = PouchDB[key];\n }\n });\n\n // make default options transitive\n // https://github.com/pouchdb/pouchdb/issues/5922\n PouchAlt.__defaults = $inject_Object_assign({}, this.__defaults, defaultOpts);\n\n return PouchAlt;\n};\n\nPouchDB.fetch = function (url, opts) {\n return f$1(url, opts);\n};\n\n// managed automatically by set-version.js\nvar version = \"7.1.1\";\n\n// this would just be \"return doc[field]\", but fields\n// can be \"deep\" due to dot notation\nfunction getFieldFromDoc(doc, parsedField) {\n var value = doc;\n for (var i = 0, len = parsedField.length; i < len; i++) {\n var key = parsedField[i];\n value = value[key];\n if (!value) {\n break;\n }\n }\n return value;\n}\n\nfunction compare$1(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\n// Converts a string in dot notation to an array of its components, with backslash escaping\nfunction parseField(fieldName) {\n // fields may be deep (e.g. \"foo.bar.baz\"), so parse\n var fields = [];\n var current = '';\n for (var i = 0, len = fieldName.length; i < len; i++) {\n var ch = fieldName[i];\n if (ch === '.') {\n if (i > 0 && fieldName[i - 1] === '\\\\') { // escaped delimiter\n current = current.substring(0, current.length - 1) + '.';\n } else { // not escaped, so delimiter\n fields.push(current);\n current = '';\n }\n } else { // normal character\n current += ch;\n }\n }\n fields.push(current);\n return fields;\n}\n\nvar combinationFields = ['$or', '$nor', '$not'];\nfunction isCombinationalField(field) {\n return combinationFields.indexOf(field) > -1;\n}\n\nfunction getKey(obj) {\n return Object.keys(obj)[0];\n}\n\nfunction getValue(obj) {\n return obj[getKey(obj)];\n}\n\n\n// flatten an array of selectors joined by an $and operator\nfunction mergeAndedSelectors(selectors) {\n\n // sort to ensure that e.g. if the user specified\n // $and: [{$gt: 'a'}, {$gt: 'b'}], then it's collapsed into\n // just {$gt: 'b'}\n var res = {};\n\n selectors.forEach(function (selector) {\n Object.keys(selector).forEach(function (field) {\n var matcher = selector[field];\n if (typeof matcher !== 'object') {\n matcher = {$eq: matcher};\n }\n\n if (isCombinationalField(field)) {\n if (matcher instanceof Array) {\n res[field] = matcher.map(function (m) {\n return mergeAndedSelectors([m]);\n });\n } else {\n res[field] = mergeAndedSelectors([matcher]);\n }\n } else {\n var fieldMatchers = res[field] = res[field] || {};\n Object.keys(matcher).forEach(function (operator) {\n var value = matcher[operator];\n\n if (operator === '$gt' || operator === '$gte') {\n return mergeGtGte(operator, value, fieldMatchers);\n } else if (operator === '$lt' || operator === '$lte') {\n return mergeLtLte(operator, value, fieldMatchers);\n } else if (operator === '$ne') {\n return mergeNe(value, fieldMatchers);\n } else if (operator === '$eq') {\n return mergeEq(value, fieldMatchers);\n }\n fieldMatchers[operator] = value;\n });\n }\n });\n });\n\n return res;\n}\n\n\n\n// collapse logically equivalent gt/gte values\nfunction mergeGtGte(operator, value, fieldMatchers) {\n if (typeof fieldMatchers.$eq !== 'undefined') {\n return; // do nothing\n }\n if (typeof fieldMatchers.$gte !== 'undefined') {\n if (operator === '$gte') {\n if (value > fieldMatchers.$gte) { // more specificity\n fieldMatchers.$gte = value;\n }\n } else { // operator === '$gt'\n if (value >= fieldMatchers.$gte) { // more specificity\n delete fieldMatchers.$gte;\n fieldMatchers.$gt = value;\n }\n }\n } else if (typeof fieldMatchers.$gt !== 'undefined') {\n if (operator === '$gte') {\n if (value > fieldMatchers.$gt) { // more specificity\n delete fieldMatchers.$gt;\n fieldMatchers.$gte = value;\n }\n } else { // operator === '$gt'\n if (value > fieldMatchers.$gt) { // more specificity\n fieldMatchers.$gt = value;\n }\n }\n } else {\n fieldMatchers[operator] = value;\n }\n}\n\n// collapse logically equivalent lt/lte values\nfunction mergeLtLte(operator, value, fieldMatchers) {\n if (typeof fieldMatchers.$eq !== 'undefined') {\n return; // do nothing\n }\n if (typeof fieldMatchers.$lte !== 'undefined') {\n if (operator === '$lte') {\n if (value < fieldMatchers.$lte) { // more specificity\n fieldMatchers.$lte = value;\n }\n } else { // operator === '$gt'\n if (value <= fieldMatchers.$lte) { // more specificity\n delete fieldMatchers.$lte;\n fieldMatchers.$lt = value;\n }\n }\n } else if (typeof fieldMatchers.$lt !== 'undefined') {\n if (operator === '$lte') {\n if (value < fieldMatchers.$lt) { // more specificity\n delete fieldMatchers.$lt;\n fieldMatchers.$lte = value;\n }\n } else { // operator === '$gt'\n if (value < fieldMatchers.$lt) { // more specificity\n fieldMatchers.$lt = value;\n }\n }\n } else {\n fieldMatchers[operator] = value;\n }\n}\n\n// combine $ne values into one array\nfunction mergeNe(value, fieldMatchers) {\n if ('$ne' in fieldMatchers) {\n // there are many things this could \"not\" be\n fieldMatchers.$ne.push(value);\n } else { // doesn't exist yet\n fieldMatchers.$ne = [value];\n }\n}\n\n// add $eq into the mix\nfunction mergeEq(value, fieldMatchers) {\n // these all have less specificity than the $eq\n // TODO: check for user errors here\n delete fieldMatchers.$gt;\n delete fieldMatchers.$gte;\n delete fieldMatchers.$lt;\n delete fieldMatchers.$lte;\n delete fieldMatchers.$ne;\n fieldMatchers.$eq = value;\n}\n\n//#7458: execute function mergeAndedSelectors on nested $and\nfunction mergeAndedSelectorsNested(obj) {\n for (var prop in obj) {\n if (Array.isArray(obj)) {\n for (var i in obj) {\n if (obj[i]['$and']) {\n obj[i] = mergeAndedSelectors(obj[i]['$and']);\n }\n }\n }\n var value = obj[prop];\n if (typeof value === 'object') {\n mergeAndedSelectorsNested(value); // <- recursive call\n }\n }\n return obj;\n}\n\n//#7458: determine id $and is present in selector (at any level)\nfunction isAndInSelector(obj, isAnd) {\n for (var prop in obj) {\n if (prop === '$and') {\n isAnd = true;\n }\n var value = obj[prop];\n if (typeof value === 'object') {\n isAnd = isAndInSelector(value, isAnd); // <- recursive call\n }\n }\n return isAnd;\n}\n\n//\n// normalize the selector\n//\nfunction massageSelector(input) {\n var result = clone(input);\n var wasAnded = false;\n //#7458: if $and is present in selector (at any level) merge nested $and\n if (isAndInSelector(result, false)) {\n result = mergeAndedSelectorsNested(result);\n if ('$and' in result) {\n result = mergeAndedSelectors(result['$and']);\n }\n wasAnded = true;\n }\n\n ['$or', '$nor'].forEach(function (orOrNor) {\n if (orOrNor in result) {\n // message each individual selector\n // e.g. {foo: 'bar'} becomes {foo: {$eq: 'bar'}}\n result[orOrNor].forEach(function (subSelector) {\n var fields = Object.keys(subSelector);\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n var matcher = subSelector[field];\n if (typeof matcher !== 'object' || matcher === null) {\n subSelector[field] = {$eq: matcher};\n }\n }\n });\n }\n });\n\n if ('$not' in result) {\n //This feels a little like forcing, but it will work for now,\n //I would like to come back to this and make the merging of selectors a little more generic\n result['$not'] = mergeAndedSelectors([result['$not']]);\n }\n\n var fields = Object.keys(result);\n\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n var matcher = result[field];\n\n if (typeof matcher !== 'object' || matcher === null) {\n matcher = {$eq: matcher};\n } else if ('$ne' in matcher && !wasAnded) {\n // I put these in an array, since there may be more than one\n // but in the \"mergeAnded\" operation, I already take care of that\n matcher.$ne = [matcher.$ne];\n }\n result[field] = matcher;\n }\n\n return result;\n}\n\nfunction pad(str, padWith, upToLength) {\n var padding = '';\n var targetLength = upToLength - str.length;\n /* istanbul ignore next */\n while (padding.length < targetLength) {\n padding += padWith;\n }\n return padding;\n}\n\nfunction padLeft(str, padWith, upToLength) {\n var padding = pad(str, padWith, upToLength);\n return padding + str;\n}\n\nvar MIN_MAGNITUDE = -324; // verified by -Number.MIN_VALUE\nvar MAGNITUDE_DIGITS = 3; // ditto\nvar SEP = ''; // set to '_' for easier debugging \n\nfunction collate(a, b) {\n\n if (a === b) {\n return 0;\n }\n\n a = normalizeKey(a);\n b = normalizeKey(b);\n\n var ai = collationIndex(a);\n var bi = collationIndex(b);\n if ((ai - bi) !== 0) {\n return ai - bi;\n }\n switch (typeof a) {\n case 'number':\n return a - b;\n case 'boolean':\n return a < b ? -1 : 1;\n case 'string':\n return stringCollate(a, b);\n }\n return Array.isArray(a) ? arrayCollate(a, b) : objectCollate(a, b);\n}\n\n// couch considers null/NaN/Infinity/-Infinity === undefined,\n// for the purposes of mapreduce indexes. also, dates get stringified.\nfunction normalizeKey(key) {\n switch (typeof key) {\n case 'undefined':\n return null;\n case 'number':\n if (key === Infinity || key === -Infinity || isNaN(key)) {\n return null;\n }\n return key;\n case 'object':\n var origKey = key;\n if (Array.isArray(key)) {\n var len = key.length;\n key = new Array(len);\n for (var i = 0; i < len; i++) {\n key[i] = normalizeKey(origKey[i]);\n }\n /* istanbul ignore next */\n } else if (key instanceof Date) {\n return key.toJSON();\n } else if (key !== null) { // generic object\n key = {};\n for (var k in origKey) {\n if (origKey.hasOwnProperty(k)) {\n var val = origKey[k];\n if (typeof val !== 'undefined') {\n key[k] = normalizeKey(val);\n }\n }\n }\n }\n }\n return key;\n}\n\nfunction indexify(key) {\n if (key !== null) {\n switch (typeof key) {\n case 'boolean':\n return key ? 1 : 0;\n case 'number':\n return numToIndexableString(key);\n case 'string':\n // We've to be sure that key does not contain \\u0000\n // Do order-preserving replacements:\n // 0 -> 1, 1\n // 1 -> 1, 2\n // 2 -> 2, 2\n /* eslint-disable no-control-regex */\n return key\n .replace(/\\u0002/g, '\\u0002\\u0002')\n .replace(/\\u0001/g, '\\u0001\\u0002')\n .replace(/\\u0000/g, '\\u0001\\u0001');\n /* eslint-enable no-control-regex */\n case 'object':\n var isArray = Array.isArray(key);\n var arr = isArray ? key : Object.keys(key);\n var i = -1;\n var len = arr.length;\n var result = '';\n if (isArray) {\n while (++i < len) {\n result += toIndexableString(arr[i]);\n }\n } else {\n while (++i < len) {\n var objKey = arr[i];\n result += toIndexableString(objKey) +\n toIndexableString(key[objKey]);\n }\n }\n return result;\n }\n }\n return '';\n}\n\n// convert the given key to a string that would be appropriate\n// for lexical sorting, e.g. within a database, where the\n// sorting is the same given by the collate() function.\nfunction toIndexableString(key) {\n var zero = '\\u0000';\n key = normalizeKey(key);\n return collationIndex(key) + SEP + indexify(key) + zero;\n}\n\nfunction parseNumber(str, i) {\n var originalIdx = i;\n var num;\n var zero = str[i] === '1';\n if (zero) {\n num = 0;\n i++;\n } else {\n var neg = str[i] === '0';\n i++;\n var numAsString = '';\n var magAsString = str.substring(i, i + MAGNITUDE_DIGITS);\n var magnitude = parseInt(magAsString, 10) + MIN_MAGNITUDE;\n /* istanbul ignore next */\n if (neg) {\n magnitude = -magnitude;\n }\n i += MAGNITUDE_DIGITS;\n while (true) {\n var ch = str[i];\n if (ch === '\\u0000') {\n break;\n } else {\n numAsString += ch;\n }\n i++;\n }\n numAsString = numAsString.split('.');\n if (numAsString.length === 1) {\n num = parseInt(numAsString, 10);\n } else {\n /* istanbul ignore next */\n num = parseFloat(numAsString[0] + '.' + numAsString[1]);\n }\n /* istanbul ignore next */\n if (neg) {\n num = num - 10;\n }\n /* istanbul ignore next */\n if (magnitude !== 0) {\n // parseFloat is more reliable than pow due to rounding errors\n // e.g. Number.MAX_VALUE would return Infinity if we did\n // num * Math.pow(10, magnitude);\n num = parseFloat(num + 'e' + magnitude);\n }\n }\n return {num: num, length : i - originalIdx};\n}\n\n// move up the stack while parsing\n// this function moved outside of parseIndexableString for performance\nfunction pop(stack, metaStack) {\n var obj = stack.pop();\n\n if (metaStack.length) {\n var lastMetaElement = metaStack[metaStack.length - 1];\n if (obj === lastMetaElement.element) {\n // popping a meta-element, e.g. an object whose value is another object\n metaStack.pop();\n lastMetaElement = metaStack[metaStack.length - 1];\n }\n var element = lastMetaElement.element;\n var lastElementIndex = lastMetaElement.index;\n if (Array.isArray(element)) {\n element.push(obj);\n } else if (lastElementIndex === stack.length - 2) { // obj with key+value\n var key = stack.pop();\n element[key] = obj;\n } else {\n stack.push(obj); // obj with key only\n }\n }\n}\n\nfunction parseIndexableString(str) {\n var stack = [];\n var metaStack = []; // stack for arrays and objects\n var i = 0;\n\n /*eslint no-constant-condition: [\"error\", { \"checkLoops\": false }]*/\n while (true) {\n var collationIndex = str[i++];\n if (collationIndex === '\\u0000') {\n if (stack.length === 1) {\n return stack.pop();\n } else {\n pop(stack, metaStack);\n continue;\n }\n }\n switch (collationIndex) {\n case '1':\n stack.push(null);\n break;\n case '2':\n stack.push(str[i] === '1');\n i++;\n break;\n case '3':\n var parsedNum = parseNumber(str, i);\n stack.push(parsedNum.num);\n i += parsedNum.length;\n break;\n case '4':\n var parsedStr = '';\n /*eslint no-constant-condition: [\"error\", { \"checkLoops\": false }]*/\n while (true) {\n var ch = str[i];\n if (ch === '\\u0000') {\n break;\n }\n parsedStr += ch;\n i++;\n }\n // perform the reverse of the order-preserving replacement\n // algorithm (see above)\n /* eslint-disable no-control-regex */\n parsedStr = parsedStr.replace(/\\u0001\\u0001/g, '\\u0000')\n .replace(/\\u0001\\u0002/g, '\\u0001')\n .replace(/\\u0002\\u0002/g, '\\u0002');\n /* eslint-enable no-control-regex */\n stack.push(parsedStr);\n break;\n case '5':\n var arrayElement = { element: [], index: stack.length };\n stack.push(arrayElement.element);\n metaStack.push(arrayElement);\n break;\n case '6':\n var objElement = { element: {}, index: stack.length };\n stack.push(objElement.element);\n metaStack.push(objElement);\n break;\n /* istanbul ignore next */\n default:\n throw new Error(\n 'bad collationIndex or unexpectedly reached end of input: ' +\n collationIndex);\n }\n }\n}\n\nfunction arrayCollate(a, b) {\n var len = Math.min(a.length, b.length);\n for (var i = 0; i < len; i++) {\n var sort = collate(a[i], b[i]);\n if (sort !== 0) {\n return sort;\n }\n }\n return (a.length === b.length) ? 0 :\n (a.length > b.length) ? 1 : -1;\n}\nfunction stringCollate(a, b) {\n // See: https://github.com/daleharvey/pouchdb/issues/40\n // This is incompatible with the CouchDB implementation, but its the\n // best we can do for now\n return (a === b) ? 0 : ((a > b) ? 1 : -1);\n}\nfunction objectCollate(a, b) {\n var ak = Object.keys(a), bk = Object.keys(b);\n var len = Math.min(ak.length, bk.length);\n for (var i = 0; i < len; i++) {\n // First sort the keys\n var sort = collate(ak[i], bk[i]);\n if (sort !== 0) {\n return sort;\n }\n // if the keys are equal sort the values\n sort = collate(a[ak[i]], b[bk[i]]);\n if (sort !== 0) {\n return sort;\n }\n\n }\n return (ak.length === bk.length) ? 0 :\n (ak.length > bk.length) ? 1 : -1;\n}\n// The collation is defined by erlangs ordered terms\n// the atoms null, true, false come first, then numbers, strings,\n// arrays, then objects\n// null/undefined/NaN/Infinity/-Infinity are all considered null\nfunction collationIndex(x) {\n var id = ['boolean', 'number', 'string', 'object'];\n var idx = id.indexOf(typeof x);\n //false if -1 otherwise true, but fast!!!!1\n if (~idx) {\n if (x === null) {\n return 1;\n }\n if (Array.isArray(x)) {\n return 5;\n }\n return idx < 3 ? (idx + 2) : (idx + 3);\n }\n /* istanbul ignore next */\n if (Array.isArray(x)) {\n return 5;\n }\n}\n\n// conversion:\n// x yyy zz...zz\n// x = 0 for negative, 1 for 0, 2 for positive\n// y = exponent (for negative numbers negated) moved so that it's >= 0\n// z = mantisse\nfunction numToIndexableString(num) {\n\n if (num === 0) {\n return '1';\n }\n\n // convert number to exponential format for easier and\n // more succinct string sorting\n var expFormat = num.toExponential().split(/e\\+?/);\n var magnitude = parseInt(expFormat[1], 10);\n\n var neg = num < 0;\n\n var result = neg ? '0' : '2';\n\n // first sort by magnitude\n // it's easier if all magnitudes are positive\n var magForComparison = ((neg ? -magnitude : magnitude) - MIN_MAGNITUDE);\n var magString = padLeft((magForComparison).toString(), '0', MAGNITUDE_DIGITS);\n\n result += SEP + magString;\n\n // then sort by the factor\n var factor = Math.abs(parseFloat(expFormat[0])); // [1..10)\n /* istanbul ignore next */\n if (neg) { // for negative reverse ordering\n factor = 10 - factor;\n }\n\n var factorStr = factor.toFixed(20);\n\n // strip zeros from the end\n factorStr = factorStr.replace(/\\.?0+$/, '');\n\n result += SEP + factorStr;\n\n return result;\n}\n\n// create a comparator based on the sort object\nfunction createFieldSorter(sort) {\n\n function getFieldValuesAsArray(doc) {\n return sort.map(function (sorting) {\n var fieldName = getKey(sorting);\n var parsedField = parseField(fieldName);\n var docFieldValue = getFieldFromDoc(doc, parsedField);\n return docFieldValue;\n });\n }\n\n return function (aRow, bRow) {\n var aFieldValues = getFieldValuesAsArray(aRow.doc);\n var bFieldValues = getFieldValuesAsArray(bRow.doc);\n var collation = collate(aFieldValues, bFieldValues);\n if (collation !== 0) {\n return collation;\n }\n // this is what mango seems to do\n return compare$1(aRow.doc._id, bRow.doc._id);\n };\n}\n\nfunction filterInMemoryFields(rows, requestDef, inMemoryFields) {\n rows = rows.filter(function (row) {\n return rowFilter(row.doc, requestDef.selector, inMemoryFields);\n });\n\n if (requestDef.sort) {\n // in-memory sort\n var fieldSorter = createFieldSorter(requestDef.sort);\n rows = rows.sort(fieldSorter);\n if (typeof requestDef.sort[0] !== 'string' &&\n getValue(requestDef.sort[0]) === 'desc') {\n rows = rows.reverse();\n }\n }\n\n if ('limit' in requestDef || 'skip' in requestDef) {\n // have to do the limit in-memory\n var skip = requestDef.skip || 0;\n var limit = ('limit' in requestDef ? requestDef.limit : rows.length) + skip;\n rows = rows.slice(skip, limit);\n }\n return rows;\n}\n\nfunction rowFilter(doc, selector, inMemoryFields) {\n return inMemoryFields.every(function (field) {\n var matcher = selector[field];\n var parsedField = parseField(field);\n var docFieldValue = getFieldFromDoc(doc, parsedField);\n if (isCombinationalField(field)) {\n return matchCominationalSelector(field, matcher, doc);\n }\n\n return matchSelector(matcher, doc, parsedField, docFieldValue);\n });\n}\n\nfunction matchSelector(matcher, doc, parsedField, docFieldValue) {\n if (!matcher) {\n // no filtering necessary; this field is just needed for sorting\n return true;\n }\n\n // is matcher an object, if so continue recursion\n if (typeof matcher === 'object') {\n return Object.keys(matcher).every(function (userOperator) {\n var userValue = matcher[userOperator];\n return match(userOperator, doc, userValue, parsedField, docFieldValue);\n });\n }\n\n // no more depth, No need to recurse further\n return matcher === docFieldValue;\n}\n\nfunction matchCominationalSelector(field, matcher, doc) {\n\n if (field === '$or') {\n return matcher.some(function (orMatchers) {\n return rowFilter(doc, orMatchers, Object.keys(orMatchers));\n });\n }\n\n if (field === '$not') {\n return !rowFilter(doc, matcher, Object.keys(matcher));\n }\n\n //`$nor`\n return !matcher.find(function (orMatchers) {\n return rowFilter(doc, orMatchers, Object.keys(orMatchers));\n });\n\n}\n\nfunction match(userOperator, doc, userValue, parsedField, docFieldValue) {\n if (!matchers[userOperator]) {\n throw new Error('unknown operator \"' + userOperator +\n '\" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, ' +\n '$nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all');\n }\n return matchers[userOperator](doc, userValue, parsedField, docFieldValue);\n}\n\nfunction fieldExists(docFieldValue) {\n return typeof docFieldValue !== 'undefined' && docFieldValue !== null;\n}\n\nfunction fieldIsNotUndefined(docFieldValue) {\n return typeof docFieldValue !== 'undefined';\n}\n\nfunction modField(docFieldValue, userValue) {\n var divisor = userValue[0];\n var mod = userValue[1];\n if (divisor === 0) {\n throw new Error('Bad divisor, cannot divide by zero');\n }\n\n if (parseInt(divisor, 10) !== divisor ) {\n throw new Error('Divisor is not an integer');\n }\n\n if (parseInt(mod, 10) !== mod ) {\n throw new Error('Modulus is not an integer');\n }\n\n if (parseInt(docFieldValue, 10) !== docFieldValue) {\n return false;\n }\n\n return docFieldValue % divisor === mod;\n}\n\nfunction arrayContainsValue(docFieldValue, userValue) {\n return userValue.some(function (val) {\n if (docFieldValue instanceof Array) {\n return docFieldValue.indexOf(val) > -1;\n }\n\n return docFieldValue === val;\n });\n}\n\nfunction arrayContainsAllValues(docFieldValue, userValue) {\n return userValue.every(function (val) {\n return docFieldValue.indexOf(val) > -1;\n });\n}\n\nfunction arraySize(docFieldValue, userValue) {\n return docFieldValue.length === userValue;\n}\n\nfunction regexMatch(docFieldValue, userValue) {\n var re = new RegExp(userValue);\n\n return re.test(docFieldValue);\n}\n\nfunction typeMatch(docFieldValue, userValue) {\n\n switch (userValue) {\n case 'null':\n return docFieldValue === null;\n case 'boolean':\n return typeof (docFieldValue) === 'boolean';\n case 'number':\n return typeof (docFieldValue) === 'number';\n case 'string':\n return typeof (docFieldValue) === 'string';\n case 'array':\n return docFieldValue instanceof Array;\n case 'object':\n return ({}).toString.call(docFieldValue) === '[object Object]';\n }\n\n throw new Error(userValue + ' not supported as a type.' +\n 'Please use one of object, string, array, number, boolean or null.');\n\n}\n\nvar matchers = {\n\n '$elemMatch': function (doc, userValue, parsedField, docFieldValue) {\n if (!Array.isArray(docFieldValue)) {\n return false;\n }\n\n if (docFieldValue.length === 0) {\n return false;\n }\n\n if (typeof docFieldValue[0] === 'object') {\n return docFieldValue.some(function (val) {\n return rowFilter(val, userValue, Object.keys(userValue));\n });\n }\n\n return docFieldValue.some(function (val) {\n return matchSelector(userValue, doc, parsedField, val);\n });\n },\n\n '$allMatch': function (doc, userValue, parsedField, docFieldValue) {\n if (!Array.isArray(docFieldValue)) {\n return false;\n }\n\n /* istanbul ignore next */\n if (docFieldValue.length === 0) {\n return false;\n }\n\n if (typeof docFieldValue[0] === 'object') {\n return docFieldValue.every(function (val) {\n return rowFilter(val, userValue, Object.keys(userValue));\n });\n }\n\n return docFieldValue.every(function (val) {\n return matchSelector(userValue, doc, parsedField, val);\n });\n },\n\n '$eq': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) === 0;\n },\n\n '$gte': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) >= 0;\n },\n\n '$gt': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) > 0;\n },\n\n '$lte': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) <= 0;\n },\n\n '$lt': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) < 0;\n },\n\n '$exists': function (doc, userValue, parsedField, docFieldValue) {\n //a field that is null is still considered to exist\n if (userValue) {\n return fieldIsNotUndefined(docFieldValue);\n }\n\n return !fieldIsNotUndefined(docFieldValue);\n },\n\n '$mod': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && modField(docFieldValue, userValue);\n },\n\n '$ne': function (doc, userValue, parsedField, docFieldValue) {\n return userValue.every(function (neValue) {\n return collate(docFieldValue, neValue) !== 0;\n });\n },\n '$in': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && arrayContainsValue(docFieldValue, userValue);\n },\n\n '$nin': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && !arrayContainsValue(docFieldValue, userValue);\n },\n\n '$size': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && arraySize(docFieldValue, userValue);\n },\n\n '$all': function (doc, userValue, parsedField, docFieldValue) {\n return Array.isArray(docFieldValue) && arrayContainsAllValues(docFieldValue, userValue);\n },\n\n '$regex': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && regexMatch(docFieldValue, userValue);\n },\n\n '$type': function (doc, userValue, parsedField, docFieldValue) {\n return typeMatch(docFieldValue, userValue);\n }\n};\n\n// return true if the given doc matches the supplied selector\nfunction matchesSelector(doc, selector) {\n /* istanbul ignore if */\n if (typeof selector !== 'object') {\n // match the CouchDB error message\n throw new Error('Selector error: expected a JSON object');\n }\n\n selector = massageSelector(selector);\n var row = {\n 'doc': doc\n };\n\n var rowsMatched = filterInMemoryFields([row], { 'selector': selector }, Object.keys(selector));\n return rowsMatched && rowsMatched.length === 1;\n}\n\nfunction evalFilter(input) {\n return scopeEval('\"use strict\";\\nreturn ' + input + ';', {});\n}\n\nfunction evalView(input) {\n var code = [\n 'return function(doc) {',\n ' \"use strict\";',\n ' var emitted = false;',\n ' var emit = function (a, b) {',\n ' emitted = true;',\n ' };',\n ' var view = ' + input + ';',\n ' view(doc);',\n ' if (emitted) {',\n ' return true;',\n ' }',\n '};'\n ].join('\\n');\n\n return scopeEval(code, {});\n}\n\nfunction validate(opts, callback) {\n if (opts.selector) {\n if (opts.filter && opts.filter !== '_selector') {\n var filterName = typeof opts.filter === 'string' ?\n opts.filter : 'function';\n return callback(new Error('selector invalid for filter \"' + filterName + '\"'));\n }\n }\n callback();\n}\n\nfunction normalize(opts) {\n if (opts.view && !opts.filter) {\n opts.filter = '_view';\n }\n\n if (opts.selector && !opts.filter) {\n opts.filter = '_selector';\n }\n\n if (opts.filter && typeof opts.filter === 'string') {\n if (opts.filter === '_view') {\n opts.view = normalizeDesignDocFunctionName(opts.view);\n } else {\n opts.filter = normalizeDesignDocFunctionName(opts.filter);\n }\n }\n}\n\nfunction shouldFilter(changesHandler, opts) {\n return opts.filter && typeof opts.filter === 'string' &&\n !opts.doc_ids && !isRemote(changesHandler.db);\n}\n\nfunction filter(changesHandler, opts) {\n var callback = opts.complete;\n if (opts.filter === '_view') {\n if (!opts.view || typeof opts.view !== 'string') {\n var err = createError(BAD_REQUEST,\n '`view` filter parameter not found or invalid.');\n return callback(err);\n }\n // fetch a view from a design doc, make it behave like a filter\n var viewName = parseDesignDocFunctionName(opts.view);\n changesHandler.db.get('_design/' + viewName[0], function (err, ddoc) {\n /* istanbul ignore if */\n if (changesHandler.isCancelled) {\n return callback(null, {status: 'cancelled'});\n }\n /* istanbul ignore next */\n if (err) {\n return callback(generateErrorFromResponse(err));\n }\n var mapFun = ddoc && ddoc.views && ddoc.views[viewName[1]] &&\n ddoc.views[viewName[1]].map;\n if (!mapFun) {\n return callback(createError(MISSING_DOC,\n (ddoc.views ? 'missing json key: ' + viewName[1] :\n 'missing json key: views')));\n }\n opts.filter = evalView(mapFun);\n changesHandler.doChanges(opts);\n });\n } else if (opts.selector) {\n opts.filter = function (doc) {\n return matchesSelector(doc, opts.selector);\n };\n changesHandler.doChanges(opts);\n } else {\n // fetch a filter from a design doc\n var filterName = parseDesignDocFunctionName(opts.filter);\n changesHandler.db.get('_design/' + filterName[0], function (err, ddoc) {\n /* istanbul ignore if */\n if (changesHandler.isCancelled) {\n return callback(null, {status: 'cancelled'});\n }\n /* istanbul ignore next */\n if (err) {\n return callback(generateErrorFromResponse(err));\n }\n var filterFun = ddoc && ddoc.filters && ddoc.filters[filterName[1]];\n if (!filterFun) {\n return callback(createError(MISSING_DOC,\n ((ddoc && ddoc.filters) ? 'missing json key: ' + filterName[1]\n : 'missing json key: filters')));\n }\n opts.filter = evalFilter(filterFun);\n changesHandler.doChanges(opts);\n });\n }\n}\n\nfunction applyChangesFilterPlugin(PouchDB) {\n PouchDB._changesFilterPlugin = {\n validate: validate,\n normalize: normalize,\n shouldFilter: shouldFilter,\n filter: filter\n };\n}\n\n// TODO: remove from pouchdb-core (breaking)\nPouchDB.plugin(applyChangesFilterPlugin);\n\nPouchDB.version = version;\n\nfunction toObject(array) {\n return array.reduce(function (obj, item) {\n obj[item] = true;\n return obj;\n }, {});\n}\n// List of top level reserved words for doc\nvar reservedWords = toObject([\n '_id',\n '_rev',\n '_attachments',\n '_deleted',\n '_revisions',\n '_revs_info',\n '_conflicts',\n '_deleted_conflicts',\n '_local_seq',\n '_rev_tree',\n //replication documents\n '_replication_id',\n '_replication_state',\n '_replication_state_time',\n '_replication_state_reason',\n '_replication_stats',\n // Specific to Couchbase Sync Gateway\n '_removed'\n]);\n\n// List of reserved words that should end up the document\nvar dataWords = toObject([\n '_attachments',\n //replication documents\n '_replication_id',\n '_replication_state',\n '_replication_state_time',\n '_replication_state_reason',\n '_replication_stats'\n]);\n\nfunction parseRevisionInfo(rev$$1) {\n if (!/^\\d+-./.test(rev$$1)) {\n return createError(INVALID_REV);\n }\n var idx = rev$$1.indexOf('-');\n var left = rev$$1.substring(0, idx);\n var right = rev$$1.substring(idx + 1);\n return {\n prefix: parseInt(left, 10),\n id: right\n };\n}\n\nfunction makeRevTreeFromRevisions(revisions, opts) {\n var pos = revisions.start - revisions.ids.length + 1;\n\n var revisionIds = revisions.ids;\n var ids = [revisionIds[0], opts, []];\n\n for (var i = 1, len = revisionIds.length; i < len; i++) {\n ids = [revisionIds[i], {status: 'missing'}, [ids]];\n }\n\n return [{\n pos: pos,\n ids: ids\n }];\n}\n\n// Preprocess documents, parse their revisions, assign an id and a\n// revision for new writes that are missing them, etc\nfunction parseDoc(doc, newEdits, dbOpts) {\n if (!dbOpts) {\n dbOpts = {\n deterministic_revs: true\n };\n }\n\n var nRevNum;\n var newRevId;\n var revInfo;\n var opts = {status: 'available'};\n if (doc._deleted) {\n opts.deleted = true;\n }\n\n if (newEdits) {\n if (!doc._id) {\n doc._id = uuid();\n }\n newRevId = rev(doc, dbOpts.deterministic_revs);\n if (doc._rev) {\n revInfo = parseRevisionInfo(doc._rev);\n if (revInfo.error) {\n return revInfo;\n }\n doc._rev_tree = [{\n pos: revInfo.prefix,\n ids: [revInfo.id, {status: 'missing'}, [[newRevId, opts, []]]]\n }];\n nRevNum = revInfo.prefix + 1;\n } else {\n doc._rev_tree = [{\n pos: 1,\n ids : [newRevId, opts, []]\n }];\n nRevNum = 1;\n }\n } else {\n if (doc._revisions) {\n doc._rev_tree = makeRevTreeFromRevisions(doc._revisions, opts);\n nRevNum = doc._revisions.start;\n newRevId = doc._revisions.ids[0];\n }\n if (!doc._rev_tree) {\n revInfo = parseRevisionInfo(doc._rev);\n if (revInfo.error) {\n return revInfo;\n }\n nRevNum = revInfo.prefix;\n newRevId = revInfo.id;\n doc._rev_tree = [{\n pos: nRevNum,\n ids: [newRevId, opts, []]\n }];\n }\n }\n\n invalidIdError(doc._id);\n\n doc._rev = nRevNum + '-' + newRevId;\n\n var result = {metadata : {}, data : {}};\n for (var key in doc) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(doc, key)) {\n var specialKey = key[0] === '_';\n if (specialKey && !reservedWords[key]) {\n var error = createError(DOC_VALIDATION, key);\n error.message = DOC_VALIDATION.message + ': ' + key;\n throw error;\n } else if (specialKey && !dataWords[key]) {\n result.metadata[key.slice(1)] = doc[key];\n } else {\n result.data[key] = doc[key];\n }\n }\n }\n return result;\n}\n\nfunction parseBase64(data) {\n try {\n return thisAtob(data);\n } catch (e) {\n var err = createError(BAD_ARG,\n 'Attachment is not a valid base64 string');\n return {error: err};\n }\n}\n\nfunction preprocessString(att, blobType, callback) {\n var asBinary = parseBase64(att.data);\n if (asBinary.error) {\n return callback(asBinary.error);\n }\n\n att.length = asBinary.length;\n if (blobType === 'blob') {\n att.data = binStringToBluffer(asBinary, att.content_type);\n } else if (blobType === 'base64') {\n att.data = thisBtoa(asBinary);\n } else { // binary\n att.data = asBinary;\n }\n binaryMd5(asBinary, function (result) {\n att.digest = 'md5-' + result;\n callback();\n });\n}\n\nfunction preprocessBlob(att, blobType, callback) {\n binaryMd5(att.data, function (md5) {\n att.digest = 'md5-' + md5;\n // size is for blobs (browser), length is for buffers (node)\n att.length = att.data.size || att.data.length || 0;\n if (blobType === 'binary') {\n blobToBinaryString(att.data, function (binString) {\n att.data = binString;\n callback();\n });\n } else if (blobType === 'base64') {\n blobToBase64(att.data, function (b64) {\n att.data = b64;\n callback();\n });\n } else {\n callback();\n }\n });\n}\n\nfunction preprocessAttachment(att, blobType, callback) {\n if (att.stub) {\n return callback();\n }\n if (typeof att.data === 'string') { // input is a base64 string\n preprocessString(att, blobType, callback);\n } else { // input is a blob\n preprocessBlob(att, blobType, callback);\n }\n}\n\nfunction preprocessAttachments(docInfos, blobType, callback) {\n\n if (!docInfos.length) {\n return callback();\n }\n\n var docv = 0;\n var overallErr;\n\n docInfos.forEach(function (docInfo) {\n var attachments = docInfo.data && docInfo.data._attachments ?\n Object.keys(docInfo.data._attachments) : [];\n var recv = 0;\n\n if (!attachments.length) {\n return done();\n }\n\n function processedAttachment(err) {\n overallErr = err;\n recv++;\n if (recv === attachments.length) {\n done();\n }\n }\n\n for (var key in docInfo.data._attachments) {\n if (docInfo.data._attachments.hasOwnProperty(key)) {\n preprocessAttachment(docInfo.data._attachments[key],\n blobType, processedAttachment);\n }\n }\n });\n\n function done() {\n docv++;\n if (docInfos.length === docv) {\n if (overallErr) {\n callback(overallErr);\n } else {\n callback();\n }\n }\n }\n}\n\nfunction updateDoc(revLimit, prev, docInfo, results,\n i, cb, writeDoc, newEdits) {\n\n if (revExists(prev.rev_tree, docInfo.metadata.rev) && !newEdits) {\n results[i] = docInfo;\n return cb();\n }\n\n // sometimes this is pre-calculated. historically not always\n var previousWinningRev = prev.winningRev || winningRev(prev);\n var previouslyDeleted = 'deleted' in prev ? prev.deleted :\n isDeleted(prev, previousWinningRev);\n var deleted = 'deleted' in docInfo.metadata ? docInfo.metadata.deleted :\n isDeleted(docInfo.metadata);\n var isRoot = /^1-/.test(docInfo.metadata.rev);\n\n if (previouslyDeleted && !deleted && newEdits && isRoot) {\n var newDoc = docInfo.data;\n newDoc._rev = previousWinningRev;\n newDoc._id = docInfo.metadata.id;\n docInfo = parseDoc(newDoc, newEdits);\n }\n\n var merged = merge(prev.rev_tree, docInfo.metadata.rev_tree[0], revLimit);\n\n var inConflict = newEdits && ((\n (previouslyDeleted && deleted && merged.conflicts !== 'new_leaf') ||\n (!previouslyDeleted && merged.conflicts !== 'new_leaf') ||\n (previouslyDeleted && !deleted && merged.conflicts === 'new_branch')));\n\n if (inConflict) {\n var err = createError(REV_CONFLICT);\n results[i] = err;\n return cb();\n }\n\n var newRev = docInfo.metadata.rev;\n docInfo.metadata.rev_tree = merged.tree;\n docInfo.stemmedRevs = merged.stemmedRevs || [];\n /* istanbul ignore else */\n if (prev.rev_map) {\n docInfo.metadata.rev_map = prev.rev_map; // used only by leveldb\n }\n\n // recalculate\n var winningRev$$1 = winningRev(docInfo.metadata);\n var winningRevIsDeleted = isDeleted(docInfo.metadata, winningRev$$1);\n\n // calculate the total number of documents that were added/removed,\n // from the perspective of total_rows/doc_count\n var delta = (previouslyDeleted === winningRevIsDeleted) ? 0 :\n previouslyDeleted < winningRevIsDeleted ? -1 : 1;\n\n var newRevIsDeleted;\n if (newRev === winningRev$$1) {\n // if the new rev is the same as the winning rev, we can reuse that value\n newRevIsDeleted = winningRevIsDeleted;\n } else {\n // if they're not the same, then we need to recalculate\n newRevIsDeleted = isDeleted(docInfo.metadata, newRev);\n }\n\n writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted,\n true, delta, i, cb);\n}\n\nfunction rootIsMissing(docInfo) {\n return docInfo.metadata.rev_tree[0].ids[1].status === 'missing';\n}\n\nfunction processDocs(revLimit, docInfos, api, fetchedDocs, tx, results,\n writeDoc, opts, overallCallback) {\n\n // Default to 1000 locally\n revLimit = revLimit || 1000;\n\n function insertDoc(docInfo, resultsIdx, callback) {\n // Cant insert new deleted documents\n var winningRev$$1 = winningRev(docInfo.metadata);\n var deleted = isDeleted(docInfo.metadata, winningRev$$1);\n if ('was_delete' in opts && deleted) {\n results[resultsIdx] = createError(MISSING_DOC, 'deleted');\n return callback();\n }\n\n // 4712 - detect whether a new document was inserted with a _rev\n var inConflict = newEdits && rootIsMissing(docInfo);\n\n if (inConflict) {\n var err = createError(REV_CONFLICT);\n results[resultsIdx] = err;\n return callback();\n }\n\n var delta = deleted ? 0 : 1;\n\n writeDoc(docInfo, winningRev$$1, deleted, deleted, false,\n delta, resultsIdx, callback);\n }\n\n var newEdits = opts.new_edits;\n var idsToDocs = new ExportedMap();\n\n var docsDone = 0;\n var docsToDo = docInfos.length;\n\n function checkAllDocsDone() {\n if (++docsDone === docsToDo && overallCallback) {\n overallCallback();\n }\n }\n\n docInfos.forEach(function (currentDoc, resultsIdx) {\n\n if (currentDoc._id && isLocalId(currentDoc._id)) {\n var fun = currentDoc._deleted ? '_removeLocal' : '_putLocal';\n api[fun](currentDoc, {ctx: tx}, function (err, res) {\n results[resultsIdx] = err || res;\n checkAllDocsDone();\n });\n return;\n }\n\n var id = currentDoc.metadata.id;\n if (idsToDocs.has(id)) {\n docsToDo--; // duplicate\n idsToDocs.get(id).push([currentDoc, resultsIdx]);\n } else {\n idsToDocs.set(id, [[currentDoc, resultsIdx]]);\n }\n });\n\n // in the case of new_edits, the user can provide multiple docs\n // with the same id. these need to be processed sequentially\n idsToDocs.forEach(function (docs, id) {\n var numDone = 0;\n\n function docWritten() {\n if (++numDone < docs.length) {\n nextDoc();\n } else {\n checkAllDocsDone();\n }\n }\n function nextDoc() {\n var value = docs[numDone];\n var currentDoc = value[0];\n var resultsIdx = value[1];\n\n if (fetchedDocs.has(id)) {\n updateDoc(revLimit, fetchedDocs.get(id), currentDoc, results,\n resultsIdx, docWritten, writeDoc, newEdits);\n } else {\n // Ensure stemming applies to new writes as well\n var merged = merge([], currentDoc.metadata.rev_tree[0], revLimit);\n currentDoc.metadata.rev_tree = merged.tree;\n currentDoc.stemmedRevs = merged.stemmedRevs || [];\n insertDoc(currentDoc, resultsIdx, docWritten);\n }\n }\n nextDoc();\n });\n}\n\n// IndexedDB requires a versioned database structure, so we use the\n// version here to manage migrations.\nvar ADAPTER_VERSION = 5;\n\n// The object stores created for each database\n// DOC_STORE stores the document meta data, its revision history and state\n// Keyed by document id\nvar DOC_STORE = 'document-store';\n// BY_SEQ_STORE stores a particular version of a document, keyed by its\n// sequence id\nvar BY_SEQ_STORE = 'by-sequence';\n// Where we store attachments\nvar ATTACH_STORE = 'attach-store';\n// Where we store many-to-many relations\n// between attachment digests and seqs\nvar ATTACH_AND_SEQ_STORE = 'attach-seq-store';\n\n// Where we store database-wide meta data in a single record\n// keyed by id: META_STORE\nvar META_STORE = 'meta-store';\n// Where we store local documents\nvar LOCAL_STORE = 'local-store';\n// Where we detect blob support\nvar DETECT_BLOB_SUPPORT_STORE = 'detect-blob-support';\n\nfunction safeJsonParse(str) {\n // This try/catch guards against stack overflow errors.\n // JSON.parse() is faster than vuvuzela.parse() but vuvuzela\n // cannot overflow.\n try {\n return JSON.parse(str);\n } catch (e) {\n /* istanbul ignore next */\n return vuvuzela.parse(str);\n }\n}\n\nfunction safeJsonStringify(json) {\n try {\n return JSON.stringify(json);\n } catch (e) {\n /* istanbul ignore next */\n return vuvuzela.stringify(json);\n }\n}\n\nfunction idbError(callback) {\n return function (evt) {\n var message = 'unknown_error';\n if (evt.target && evt.target.error) {\n message = evt.target.error.name || evt.target.error.message;\n }\n callback(createError(IDB_ERROR, message, evt.type));\n };\n}\n\n// Unfortunately, the metadata has to be stringified\n// when it is put into the database, because otherwise\n// IndexedDB can throw errors for deeply-nested objects.\n// Originally we just used JSON.parse/JSON.stringify; now\n// we use this custom vuvuzela library that avoids recursion.\n// If we could do it all over again, we'd probably use a\n// format for the revision trees other than JSON.\nfunction encodeMetadata(metadata, winningRev, deleted) {\n return {\n data: safeJsonStringify(metadata),\n winningRev: winningRev,\n deletedOrLocal: deleted ? '1' : '0',\n seq: metadata.seq, // highest seq for this doc\n id: metadata.id\n };\n}\n\nfunction decodeMetadata(storedObject) {\n if (!storedObject) {\n return null;\n }\n var metadata = safeJsonParse(storedObject.data);\n metadata.winningRev = storedObject.winningRev;\n metadata.deleted = storedObject.deletedOrLocal === '1';\n metadata.seq = storedObject.seq;\n return metadata;\n}\n\n// read the doc back out from the database. we don't store the\n// _id or _rev because we already have _doc_id_rev.\nfunction decodeDoc(doc) {\n if (!doc) {\n return doc;\n }\n var idx = doc._doc_id_rev.lastIndexOf(':');\n doc._id = doc._doc_id_rev.substring(0, idx - 1);\n doc._rev = doc._doc_id_rev.substring(idx + 1);\n delete doc._doc_id_rev;\n return doc;\n}\n\n// Read a blob from the database, encoding as necessary\n// and translating from base64 if the IDB doesn't support\n// native Blobs\nfunction readBlobData(body, type, asBlob, callback) {\n if (asBlob) {\n if (!body) {\n callback(createBlob([''], {type: type}));\n } else if (typeof body !== 'string') { // we have blob support\n callback(body);\n } else { // no blob support\n callback(b64ToBluffer(body, type));\n }\n } else { // as base64 string\n if (!body) {\n callback('');\n } else if (typeof body !== 'string') { // we have blob support\n readAsBinaryString(body, function (binary) {\n callback(thisBtoa(binary));\n });\n } else { // no blob support\n callback(body);\n }\n }\n}\n\nfunction fetchAttachmentsIfNecessary(doc, opts, txn, cb) {\n var attachments = Object.keys(doc._attachments || {});\n if (!attachments.length) {\n return cb && cb();\n }\n var numDone = 0;\n\n function checkDone() {\n if (++numDone === attachments.length && cb) {\n cb();\n }\n }\n\n function fetchAttachment(doc, att) {\n var attObj = doc._attachments[att];\n var digest = attObj.digest;\n var req = txn.objectStore(ATTACH_STORE).get(digest);\n req.onsuccess = function (e) {\n attObj.body = e.target.result.body;\n checkDone();\n };\n }\n\n attachments.forEach(function (att) {\n if (opts.attachments && opts.include_docs) {\n fetchAttachment(doc, att);\n } else {\n doc._attachments[att].stub = true;\n checkDone();\n }\n });\n}\n\n// IDB-specific postprocessing necessary because\n// we don't know whether we stored a true Blob or\n// a base64-encoded string, and if it's a Blob it\n// needs to be read outside of the transaction context\nfunction postProcessAttachments(results, asBlob) {\n return Promise.all(results.map(function (row) {\n if (row.doc && row.doc._attachments) {\n var attNames = Object.keys(row.doc._attachments);\n return Promise.all(attNames.map(function (att) {\n var attObj = row.doc._attachments[att];\n if (!('body' in attObj)) { // already processed\n return;\n }\n var body = attObj.body;\n var type = attObj.content_type;\n return new Promise(function (resolve) {\n readBlobData(body, type, asBlob, function (data) {\n row.doc._attachments[att] = $inject_Object_assign(\n pick(attObj, ['digest', 'content_type']),\n {data: data}\n );\n resolve();\n });\n });\n }));\n }\n }));\n}\n\nfunction compactRevs(revs, docId, txn) {\n\n var possiblyOrphanedDigests = [];\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var attStore = txn.objectStore(ATTACH_STORE);\n var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n var count = revs.length;\n\n function checkDone() {\n count--;\n if (!count) { // done processing all revs\n deleteOrphanedAttachments();\n }\n }\n\n function deleteOrphanedAttachments() {\n if (!possiblyOrphanedDigests.length) {\n return;\n }\n possiblyOrphanedDigests.forEach(function (digest) {\n var countReq = attAndSeqStore.index('digestSeq').count(\n IDBKeyRange.bound(\n digest + '::', digest + '::\\uffff', false, false));\n countReq.onsuccess = function (e) {\n var count = e.target.result;\n if (!count) {\n // orphaned\n attStore.delete(digest);\n }\n };\n });\n }\n\n revs.forEach(function (rev$$1) {\n var index = seqStore.index('_doc_id_rev');\n var key = docId + \"::\" + rev$$1;\n index.getKey(key).onsuccess = function (e) {\n var seq = e.target.result;\n if (typeof seq !== 'number') {\n return checkDone();\n }\n seqStore.delete(seq);\n\n var cursor = attAndSeqStore.index('seq')\n .openCursor(IDBKeyRange.only(seq));\n\n cursor.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var digest = cursor.value.digestSeq.split('::')[0];\n possiblyOrphanedDigests.push(digest);\n attAndSeqStore.delete(cursor.primaryKey);\n cursor.continue();\n } else { // done\n checkDone();\n }\n };\n };\n });\n}\n\nfunction openTransactionSafely(idb, stores, mode) {\n try {\n return {\n txn: idb.transaction(stores, mode)\n };\n } catch (err) {\n return {\n error: err\n };\n }\n}\n\nvar changesHandler = new Changes();\n\nfunction idbBulkDocs(dbOpts, req, opts, api, idb, callback) {\n var docInfos = req.docs;\n var txn;\n var docStore;\n var bySeqStore;\n var attachStore;\n var attachAndSeqStore;\n var metaStore;\n var docInfoError;\n var metaDoc;\n\n for (var i = 0, len = docInfos.length; i < len; i++) {\n var doc = docInfos[i];\n if (doc._id && isLocalId(doc._id)) {\n continue;\n }\n doc = docInfos[i] = parseDoc(doc, opts.new_edits, dbOpts);\n if (doc.error && !docInfoError) {\n docInfoError = doc;\n }\n }\n\n if (docInfoError) {\n return callback(docInfoError);\n }\n\n var allDocsProcessed = false;\n var docCountDelta = 0;\n var results = new Array(docInfos.length);\n var fetchedDocs = new ExportedMap();\n var preconditionErrored = false;\n var blobType = api._meta.blobSupport ? 'blob' : 'base64';\n\n preprocessAttachments(docInfos, blobType, function (err) {\n if (err) {\n return callback(err);\n }\n startTransaction();\n });\n\n function startTransaction() {\n\n var stores = [\n DOC_STORE, BY_SEQ_STORE,\n ATTACH_STORE,\n LOCAL_STORE, ATTACH_AND_SEQ_STORE,\n META_STORE\n ];\n var txnResult = openTransactionSafely(idb, stores, 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n txn.onabort = idbError(callback);\n txn.ontimeout = idbError(callback);\n txn.oncomplete = complete;\n docStore = txn.objectStore(DOC_STORE);\n bySeqStore = txn.objectStore(BY_SEQ_STORE);\n attachStore = txn.objectStore(ATTACH_STORE);\n attachAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n metaStore = txn.objectStore(META_STORE);\n\n metaStore.get(META_STORE).onsuccess = function (e) {\n metaDoc = e.target.result;\n updateDocCountIfReady();\n };\n\n verifyAttachments(function (err) {\n if (err) {\n preconditionErrored = true;\n return callback(err);\n }\n fetchExistingDocs();\n });\n }\n\n function onAllDocsProcessed() {\n allDocsProcessed = true;\n updateDocCountIfReady();\n }\n\n function idbProcessDocs() {\n processDocs(dbOpts.revs_limit, docInfos, api, fetchedDocs,\n txn, results, writeDoc, opts, onAllDocsProcessed);\n }\n\n function updateDocCountIfReady() {\n if (!metaDoc || !allDocsProcessed) {\n return;\n }\n // caching the docCount saves a lot of time in allDocs() and\n // info(), which is why we go to all the trouble of doing this\n metaDoc.docCount += docCountDelta;\n metaStore.put(metaDoc);\n }\n\n function fetchExistingDocs() {\n\n if (!docInfos.length) {\n return;\n }\n\n var numFetched = 0;\n\n function checkDone() {\n if (++numFetched === docInfos.length) {\n idbProcessDocs();\n }\n }\n\n function readMetadata(event) {\n var metadata = decodeMetadata(event.target.result);\n\n if (metadata) {\n fetchedDocs.set(metadata.id, metadata);\n }\n checkDone();\n }\n\n for (var i = 0, len = docInfos.length; i < len; i++) {\n var docInfo = docInfos[i];\n if (docInfo._id && isLocalId(docInfo._id)) {\n checkDone(); // skip local docs\n continue;\n }\n var req = docStore.get(docInfo.metadata.id);\n req.onsuccess = readMetadata;\n }\n }\n\n function complete() {\n if (preconditionErrored) {\n return;\n }\n\n changesHandler.notify(api._meta.name);\n callback(null, results);\n }\n\n function verifyAttachment(digest, callback) {\n\n var req = attachStore.get(digest);\n req.onsuccess = function (e) {\n if (!e.target.result) {\n var err = createError(MISSING_STUB,\n 'unknown stub attachment with digest ' +\n digest);\n err.status = 412;\n callback(err);\n } else {\n callback();\n }\n };\n }\n\n function verifyAttachments(finish) {\n\n\n var digests = [];\n docInfos.forEach(function (docInfo) {\n if (docInfo.data && docInfo.data._attachments) {\n Object.keys(docInfo.data._attachments).forEach(function (filename) {\n var att = docInfo.data._attachments[filename];\n if (att.stub) {\n digests.push(att.digest);\n }\n });\n }\n });\n if (!digests.length) {\n return finish();\n }\n var numDone = 0;\n var err;\n\n function checkDone() {\n if (++numDone === digests.length) {\n finish(err);\n }\n }\n digests.forEach(function (digest) {\n verifyAttachment(digest, function (attErr) {\n if (attErr && !err) {\n err = attErr;\n }\n checkDone();\n });\n });\n }\n\n function writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted,\n isUpdate, delta, resultsIdx, callback) {\n\n docInfo.metadata.winningRev = winningRev$$1;\n docInfo.metadata.deleted = winningRevIsDeleted;\n\n var doc = docInfo.data;\n doc._id = docInfo.metadata.id;\n doc._rev = docInfo.metadata.rev;\n\n if (newRevIsDeleted) {\n doc._deleted = true;\n }\n\n var hasAttachments = doc._attachments &&\n Object.keys(doc._attachments).length;\n if (hasAttachments) {\n return writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n\n docCountDelta += delta;\n updateDocCountIfReady();\n\n finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n\n function finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback) {\n\n var doc = docInfo.data;\n var metadata = docInfo.metadata;\n\n doc._doc_id_rev = metadata.id + '::' + metadata.rev;\n delete doc._id;\n delete doc._rev;\n\n function afterPutDoc(e) {\n var revsToDelete = docInfo.stemmedRevs || [];\n\n if (isUpdate && api.auto_compaction) {\n revsToDelete = revsToDelete.concat(compactTree(docInfo.metadata));\n }\n\n if (revsToDelete && revsToDelete.length) {\n compactRevs(revsToDelete, docInfo.metadata.id, txn);\n }\n\n metadata.seq = e.target.result;\n // Current _rev is calculated from _rev_tree on read\n // delete metadata.rev;\n var metadataToStore = encodeMetadata(metadata, winningRev$$1,\n winningRevIsDeleted);\n var metaDataReq = docStore.put(metadataToStore);\n metaDataReq.onsuccess = afterPutMetadata;\n }\n\n function afterPutDocError(e) {\n // ConstraintError, need to update, not put (see #1638 for details)\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n var index = bySeqStore.index('_doc_id_rev');\n var getKeyReq = index.getKey(doc._doc_id_rev);\n getKeyReq.onsuccess = function (e) {\n var putReq = bySeqStore.put(doc, e.target.result);\n putReq.onsuccess = afterPutDoc;\n };\n }\n\n function afterPutMetadata() {\n results[resultsIdx] = {\n ok: true,\n id: metadata.id,\n rev: metadata.rev\n };\n fetchedDocs.set(docInfo.metadata.id, docInfo.metadata);\n insertAttachmentMappings(docInfo, metadata.seq, callback);\n }\n\n var putReq = bySeqStore.put(doc);\n\n putReq.onsuccess = afterPutDoc;\n putReq.onerror = afterPutDocError;\n }\n\n function writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback) {\n\n\n var doc = docInfo.data;\n\n var numDone = 0;\n var attachments = Object.keys(doc._attachments);\n\n function collectResults() {\n if (numDone === attachments.length) {\n finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n }\n\n function attachmentSaved() {\n numDone++;\n collectResults();\n }\n\n attachments.forEach(function (key) {\n var att = docInfo.data._attachments[key];\n if (!att.stub) {\n var data = att.data;\n delete att.data;\n att.revpos = parseInt(winningRev$$1, 10);\n var digest = att.digest;\n saveAttachment(digest, data, attachmentSaved);\n } else {\n numDone++;\n collectResults();\n }\n });\n }\n\n // map seqs to attachment digests, which\n // we will need later during compaction\n function insertAttachmentMappings(docInfo, seq, callback) {\n\n var attsAdded = 0;\n var attsToAdd = Object.keys(docInfo.data._attachments || {});\n\n if (!attsToAdd.length) {\n return callback();\n }\n\n function checkDone() {\n if (++attsAdded === attsToAdd.length) {\n callback();\n }\n }\n\n function add(att) {\n var digest = docInfo.data._attachments[att].digest;\n var req = attachAndSeqStore.put({\n seq: seq,\n digestSeq: digest + '::' + seq\n });\n\n req.onsuccess = checkDone;\n req.onerror = function (e) {\n // this callback is for a constaint error, which we ignore\n // because this docid/rev has already been associated with\n // the digest (e.g. when new_edits == false)\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n checkDone();\n };\n }\n for (var i = 0; i < attsToAdd.length; i++) {\n add(attsToAdd[i]); // do in parallel\n }\n }\n\n function saveAttachment(digest, data, callback) {\n\n\n var getKeyReq = attachStore.count(digest);\n getKeyReq.onsuccess = function (e) {\n var count = e.target.result;\n if (count) {\n return callback(); // already exists\n }\n var newAtt = {\n digest: digest,\n body: data\n };\n var putReq = attachStore.put(newAtt);\n putReq.onsuccess = callback;\n };\n }\n}\n\n// Abstraction over IDBCursor and getAll()/getAllKeys() that allows us to batch our operations\n// while falling back to a normal IDBCursor operation on browsers that don't support getAll() or\n// getAllKeys(). This allows for a much faster implementation than just straight-up cursors, because\n// we're not processing each document one-at-a-time.\nfunction runBatchedCursor(objectStore, keyRange, descending, batchSize, onBatch) {\n\n if (batchSize === -1) {\n batchSize = 1000;\n }\n\n // Bail out of getAll()/getAllKeys() in the following cases:\n // 1) either method is unsupported - we need both\n // 2) batchSize is 1 (might as well use IDBCursor)\n // 3) descending – no real way to do this via getAll()/getAllKeys()\n\n var useGetAll = typeof objectStore.getAll === 'function' &&\n typeof objectStore.getAllKeys === 'function' &&\n batchSize > 1 && !descending;\n\n var keysBatch;\n var valuesBatch;\n var pseudoCursor;\n\n function onGetAll(e) {\n valuesBatch = e.target.result;\n if (keysBatch) {\n onBatch(keysBatch, valuesBatch, pseudoCursor);\n }\n }\n\n function onGetAllKeys(e) {\n keysBatch = e.target.result;\n if (valuesBatch) {\n onBatch(keysBatch, valuesBatch, pseudoCursor);\n }\n }\n\n function continuePseudoCursor() {\n if (!keysBatch.length) { // no more results\n return onBatch();\n }\n // fetch next batch, exclusive start\n var lastKey = keysBatch[keysBatch.length - 1];\n var newKeyRange;\n if (keyRange && keyRange.upper) {\n try {\n newKeyRange = IDBKeyRange.bound(lastKey, keyRange.upper,\n true, keyRange.upperOpen);\n } catch (e) {\n if (e.name === \"DataError\" && e.code === 0) {\n return onBatch(); // we're done, startkey and endkey are equal\n }\n }\n } else {\n newKeyRange = IDBKeyRange.lowerBound(lastKey, true);\n }\n keyRange = newKeyRange;\n keysBatch = null;\n valuesBatch = null;\n objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n }\n\n function onCursor(e) {\n var cursor = e.target.result;\n if (!cursor) { // done\n return onBatch();\n }\n // regular IDBCursor acts like a batch where batch size is always 1\n onBatch([cursor.key], [cursor.value], cursor);\n }\n\n if (useGetAll) {\n pseudoCursor = {\"continue\": continuePseudoCursor};\n objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n } else if (descending) {\n objectStore.openCursor(keyRange, 'prev').onsuccess = onCursor;\n } else {\n objectStore.openCursor(keyRange).onsuccess = onCursor;\n }\n}\n\n// simple shim for objectStore.getAll(), falling back to IDBCursor\nfunction getAll(objectStore, keyRange, onSuccess) {\n if (typeof objectStore.getAll === 'function') {\n // use native getAll\n objectStore.getAll(keyRange).onsuccess = onSuccess;\n return;\n }\n // fall back to cursors\n var values = [];\n\n function onCursor(e) {\n var cursor = e.target.result;\n if (cursor) {\n values.push(cursor.value);\n cursor.continue();\n } else {\n onSuccess({\n target: {\n result: values\n }\n });\n }\n }\n\n objectStore.openCursor(keyRange).onsuccess = onCursor;\n}\n\nfunction allDocsKeys(keys, docStore, onBatch) {\n // It's not guaranted to be returned in right order \n var valuesBatch = new Array(keys.length);\n var count = 0;\n keys.forEach(function (key, index) {\n docStore.get(key).onsuccess = function (event) {\n if (event.target.result) {\n valuesBatch[index] = event.target.result;\n } else {\n valuesBatch[index] = {key: key, error: 'not_found'};\n }\n count++;\n if (count === keys.length) {\n onBatch(keys, valuesBatch, {});\n }\n };\n });\n}\n\nfunction createKeyRange(start, end, inclusiveEnd, key, descending) {\n try {\n if (start && end) {\n if (descending) {\n return IDBKeyRange.bound(end, start, !inclusiveEnd, false);\n } else {\n return IDBKeyRange.bound(start, end, false, !inclusiveEnd);\n }\n } else if (start) {\n if (descending) {\n return IDBKeyRange.upperBound(start);\n } else {\n return IDBKeyRange.lowerBound(start);\n }\n } else if (end) {\n if (descending) {\n return IDBKeyRange.lowerBound(end, !inclusiveEnd);\n } else {\n return IDBKeyRange.upperBound(end, !inclusiveEnd);\n }\n } else if (key) {\n return IDBKeyRange.only(key);\n }\n } catch (e) {\n return {error: e};\n }\n return null;\n}\n\nfunction idbAllDocs(opts, idb, callback) {\n var start = 'startkey' in opts ? opts.startkey : false;\n var end = 'endkey' in opts ? opts.endkey : false;\n var key = 'key' in opts ? opts.key : false;\n var keys = 'keys' in opts ? opts.keys : false; \n var skip = opts.skip || 0;\n var limit = typeof opts.limit === 'number' ? opts.limit : -1;\n var inclusiveEnd = opts.inclusive_end !== false;\n\n var keyRange ; \n var keyRangeError;\n if (!keys) {\n keyRange = createKeyRange(start, end, inclusiveEnd, key, opts.descending);\n keyRangeError = keyRange && keyRange.error;\n if (keyRangeError && \n !(keyRangeError.name === \"DataError\" && keyRangeError.code === 0)) {\n // DataError with error code 0 indicates start is less than end, so\n // can just do an empty query. Else need to throw\n return callback(createError(IDB_ERROR,\n keyRangeError.name, keyRangeError.message));\n }\n }\n\n var stores = [DOC_STORE, BY_SEQ_STORE, META_STORE];\n\n if (opts.attachments) {\n stores.push(ATTACH_STORE);\n }\n var txnResult = openTransactionSafely(idb, stores, 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n txn.oncomplete = onTxnComplete;\n txn.onabort = idbError(callback);\n var docStore = txn.objectStore(DOC_STORE);\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var metaStore = txn.objectStore(META_STORE);\n var docIdRevIndex = seqStore.index('_doc_id_rev');\n var results = [];\n var docCount;\n var updateSeq;\n\n metaStore.get(META_STORE).onsuccess = function (e) {\n docCount = e.target.result.docCount;\n };\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n getMaxUpdateSeq(seqStore, function (e) { \n if (e.target.result && e.target.result.length > 0) {\n updateSeq = e.target.result[0];\n }\n });\n }\n\n function getMaxUpdateSeq(objectStore, onSuccess) {\n function onCursor(e) {\n var cursor = e.target.result;\n var maxKey = undefined;\n if (cursor && cursor.key) {\n maxKey = cursor.key;\n } \n return onSuccess({\n target: {\n result: [maxKey]\n }\n });\n }\n objectStore.openCursor(null, 'prev').onsuccess = onCursor;\n }\n\n // if the user specifies include_docs=true, then we don't\n // want to block the main cursor while we're fetching the doc\n function fetchDocAsynchronously(metadata, row, winningRev$$1) {\n var key = metadata.id + \"::\" + winningRev$$1;\n docIdRevIndex.get(key).onsuccess = function onGetDoc(e) {\n row.doc = decodeDoc(e.target.result) || {};\n if (opts.conflicts) {\n var conflicts = collectConflicts(metadata);\n if (conflicts.length) {\n row.doc._conflicts = conflicts;\n }\n }\n fetchAttachmentsIfNecessary(row.doc, opts, txn);\n };\n }\n\n function allDocsInner(winningRev$$1, metadata) {\n var row = {\n id: metadata.id,\n key: metadata.id,\n value: {\n rev: winningRev$$1\n }\n };\n var deleted = metadata.deleted;\n if (deleted) {\n if (keys) {\n results.push(row);\n // deleted docs are okay with \"keys\" requests\n row.value.deleted = true;\n row.doc = null;\n }\n } else if (skip-- <= 0) {\n results.push(row);\n if (opts.include_docs) {\n fetchDocAsynchronously(metadata, row, winningRev$$1);\n }\n }\n }\n\n function processBatch(batchValues) {\n for (var i = 0, len = batchValues.length; i < len; i++) {\n if (results.length === limit) {\n break;\n }\n var batchValue = batchValues[i];\n if (batchValue.error && keys) {\n // key was not found with \"keys\" requests\n results.push(batchValue);\n continue;\n }\n var metadata = decodeMetadata(batchValue);\n var winningRev$$1 = metadata.winningRev;\n allDocsInner(winningRev$$1, metadata);\n }\n }\n\n function onBatch(batchKeys, batchValues, cursor) {\n if (!cursor) {\n return;\n }\n processBatch(batchValues);\n if (results.length < limit) {\n cursor.continue();\n }\n }\n\n function onGetAll(e) {\n var values = e.target.result;\n if (opts.descending) {\n values = values.reverse();\n }\n processBatch(values);\n }\n\n function onResultsReady() {\n var returnVal = {\n total_rows: docCount,\n offset: opts.skip,\n rows: results\n };\n \n /* istanbul ignore if */\n if (opts.update_seq && updateSeq !== undefined) {\n returnVal.update_seq = updateSeq;\n }\n callback(null, returnVal);\n }\n\n function onTxnComplete() {\n if (opts.attachments) {\n postProcessAttachments(results, opts.binary).then(onResultsReady);\n } else {\n onResultsReady();\n }\n }\n\n // don't bother doing any requests if start > end or limit === 0\n if (keyRangeError || limit === 0) {\n return;\n }\n if (keys) {\n return allDocsKeys(opts.keys, docStore, onBatch);\n }\n if (limit === -1) { // just fetch everything\n return getAll(docStore, keyRange, onGetAll);\n }\n // else do a cursor\n // choose a batch size based on the skip, since we'll need to skip that many\n runBatchedCursor(docStore, keyRange, opts.descending, limit + skip, onBatch);\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\nfunction checkBlobSupport(txn) {\n return new Promise(function (resolve) {\n var blob$$1 = createBlob(['']);\n var req = txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob$$1, 'key');\n\n req.onsuccess = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome ||\n parseInt(matchedChrome[1], 10) >= 43);\n };\n\n req.onerror = txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n }).catch(function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction countDocs(txn, cb) {\n var index = txn.objectStore(DOC_STORE).index('deletedOrLocal');\n index.count(IDBKeyRange.only('0')).onsuccess = function (e) {\n cb(e.target.result);\n };\n}\n\n// This task queue ensures that IDB open calls are done in their own tick\n\nvar running = false;\nvar queue = [];\n\nfunction tryCode(fun, err, res, PouchDB) {\n try {\n fun(err, res);\n } catch (err) {\n // Shouldn't happen, but in some odd cases\n // IndexedDB implementations might throw a sync\n // error, in which case this will at least log it.\n PouchDB.emit('error', err);\n }\n}\n\nfunction applyNext() {\n if (running || !queue.length) {\n return;\n }\n running = true;\n queue.shift()();\n}\n\nfunction enqueueTask(action, callback, PouchDB) {\n queue.push(function runAction() {\n action(function runCallback(err, res) {\n tryCode(callback, err, res, PouchDB);\n running = false;\n immediate(function runNext() {\n applyNext(PouchDB);\n });\n });\n });\n applyNext();\n}\n\nfunction changes(opts, api, dbName, idb) {\n opts = clone(opts);\n\n if (opts.continuous) {\n var id = dbName + ':' + uuid();\n changesHandler.addListener(dbName, id, api, opts);\n changesHandler.notify(dbName);\n return {\n cancel: function () {\n changesHandler.removeListener(dbName, id);\n }\n };\n }\n\n var docIds = opts.doc_ids && new ExportedSet(opts.doc_ids);\n\n opts.since = opts.since || 0;\n var lastSeq = opts.since;\n\n var limit = 'limit' in opts ? opts.limit : -1;\n if (limit === 0) {\n limit = 1; // per CouchDB _changes spec\n }\n\n var results = [];\n var numResults = 0;\n var filter = filterChange(opts);\n var docIdsToMetadata = new ExportedMap();\n\n var txn;\n var bySeqStore;\n var docStore;\n var docIdRevIndex;\n\n function onBatch(batchKeys, batchValues, cursor) {\n if (!cursor || !batchKeys.length) { // done\n return;\n }\n\n var winningDocs = new Array(batchKeys.length);\n var metadatas = new Array(batchKeys.length);\n\n function processMetadataAndWinningDoc(metadata, winningDoc) {\n var change = opts.processChange(winningDoc, metadata, opts);\n lastSeq = change.seq = metadata.seq;\n\n var filtered = filter(change);\n if (typeof filtered === 'object') { // anything but true/false indicates error\n return Promise.reject(filtered);\n }\n\n if (!filtered) {\n return Promise.resolve();\n }\n numResults++;\n if (opts.return_docs) {\n results.push(change);\n }\n // process the attachment immediately\n // for the benefit of live listeners\n if (opts.attachments && opts.include_docs) {\n return new Promise(function (resolve) {\n fetchAttachmentsIfNecessary(winningDoc, opts, txn, function () {\n postProcessAttachments([change], opts.binary).then(function () {\n resolve(change);\n });\n });\n });\n } else {\n return Promise.resolve(change);\n }\n }\n\n function onBatchDone() {\n var promises = [];\n for (var i = 0, len = winningDocs.length; i < len; i++) {\n if (numResults === limit) {\n break;\n }\n var winningDoc = winningDocs[i];\n if (!winningDoc) {\n continue;\n }\n var metadata = metadatas[i];\n promises.push(processMetadataAndWinningDoc(metadata, winningDoc));\n }\n\n Promise.all(promises).then(function (changes) {\n for (var i = 0, len = changes.length; i < len; i++) {\n if (changes[i]) {\n opts.onChange(changes[i]);\n }\n }\n }).catch(opts.complete);\n\n if (numResults !== limit) {\n cursor.continue();\n }\n }\n\n // Fetch all metadatas/winningdocs from this batch in parallel, then process\n // them all only once all data has been collected. This is done in parallel\n // because it's faster than doing it one-at-a-time.\n var numDone = 0;\n batchValues.forEach(function (value, i) {\n var doc = decodeDoc(value);\n var seq = batchKeys[i];\n fetchWinningDocAndMetadata(doc, seq, function (metadata, winningDoc) {\n metadatas[i] = metadata;\n winningDocs[i] = winningDoc;\n if (++numDone === batchKeys.length) {\n onBatchDone();\n }\n });\n });\n }\n\n function onGetMetadata(doc, seq, metadata, cb) {\n if (metadata.seq !== seq) {\n // some other seq is later\n return cb();\n }\n\n if (metadata.winningRev === doc._rev) {\n // this is the winning doc\n return cb(metadata, doc);\n }\n\n // fetch winning doc in separate request\n var docIdRev = doc._id + '::' + metadata.winningRev;\n var req = docIdRevIndex.get(docIdRev);\n req.onsuccess = function (e) {\n cb(metadata, decodeDoc(e.target.result));\n };\n }\n\n function fetchWinningDocAndMetadata(doc, seq, cb) {\n if (docIds && !docIds.has(doc._id)) {\n return cb();\n }\n\n var metadata = docIdsToMetadata.get(doc._id);\n if (metadata) { // cached\n return onGetMetadata(doc, seq, metadata, cb);\n }\n // metadata not cached, have to go fetch it\n docStore.get(doc._id).onsuccess = function (e) {\n metadata = decodeMetadata(e.target.result);\n docIdsToMetadata.set(doc._id, metadata);\n onGetMetadata(doc, seq, metadata, cb);\n };\n }\n\n function finish() {\n opts.complete(null, {\n results: results,\n last_seq: lastSeq\n });\n }\n\n function onTxnComplete() {\n if (!opts.continuous && opts.attachments) {\n // cannot guarantee that postProcessing was already done,\n // so do it again\n postProcessAttachments(results).then(finish);\n } else {\n finish();\n }\n }\n\n var objectStores = [DOC_STORE, BY_SEQ_STORE];\n if (opts.attachments) {\n objectStores.push(ATTACH_STORE);\n }\n var txnResult = openTransactionSafely(idb, objectStores, 'readonly');\n if (txnResult.error) {\n return opts.complete(txnResult.error);\n }\n txn = txnResult.txn;\n txn.onabort = idbError(opts.complete);\n txn.oncomplete = onTxnComplete;\n\n bySeqStore = txn.objectStore(BY_SEQ_STORE);\n docStore = txn.objectStore(DOC_STORE);\n docIdRevIndex = bySeqStore.index('_doc_id_rev');\n\n var keyRange = (opts.since && !opts.descending) ?\n IDBKeyRange.lowerBound(opts.since, true) : null;\n\n runBatchedCursor(bySeqStore, keyRange, opts.descending, limit, onBatch);\n}\n\nvar cachedDBs = new ExportedMap();\nvar blobSupportPromise;\nvar openReqList = new ExportedMap();\n\nfunction IdbPouch(opts, callback) {\n var api = this;\n\n enqueueTask(function (thisCallback) {\n init(api, opts, thisCallback);\n }, callback, api.constructor);\n}\n\nfunction init(api, opts, callback) {\n\n var dbName = opts.name;\n\n var idb = null;\n api._meta = null;\n\n // called when creating a fresh new database\n function createSchema(db) {\n var docStore = db.createObjectStore(DOC_STORE, {keyPath : 'id'});\n db.createObjectStore(BY_SEQ_STORE, {autoIncrement: true})\n .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true});\n db.createObjectStore(ATTACH_STORE, {keyPath: 'digest'});\n db.createObjectStore(META_STORE, {keyPath: 'id', autoIncrement: false});\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n\n // added in v2\n docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false});\n\n // added in v3\n db.createObjectStore(LOCAL_STORE, {keyPath: '_id'});\n\n // added in v4\n var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE,\n {autoIncrement: true});\n attAndSeqStore.createIndex('seq', 'seq');\n attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true});\n }\n\n // migration to version 2\n // unfortunately \"deletedOrLocal\" is a misnomer now that we no longer\n // store local docs in the main doc-store, but whaddyagonnado\n function addDeletedOrLocalIndex(txn, callback) {\n var docStore = txn.objectStore(DOC_STORE);\n docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false});\n\n docStore.openCursor().onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var metadata = cursor.value;\n var deleted = isDeleted(metadata);\n metadata.deletedOrLocal = deleted ? \"1\" : \"0\";\n docStore.put(metadata);\n cursor.continue();\n } else {\n callback();\n }\n };\n }\n\n // migration to version 3 (part 1)\n function createLocalStoreSchema(db) {\n db.createObjectStore(LOCAL_STORE, {keyPath: '_id'})\n .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true});\n }\n\n // migration to version 3 (part 2)\n function migrateLocalStore(txn, cb) {\n var localStore = txn.objectStore(LOCAL_STORE);\n var docStore = txn.objectStore(DOC_STORE);\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n\n var cursor = docStore.openCursor();\n cursor.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var metadata = cursor.value;\n var docId = metadata.id;\n var local = isLocalId(docId);\n var rev$$1 = winningRev(metadata);\n if (local) {\n var docIdRev = docId + \"::\" + rev$$1;\n // remove all seq entries\n // associated with this docId\n var start = docId + \"::\";\n var end = docId + \"::~\";\n var index = seqStore.index('_doc_id_rev');\n var range = IDBKeyRange.bound(start, end, false, false);\n var seqCursor = index.openCursor(range);\n seqCursor.onsuccess = function (e) {\n seqCursor = e.target.result;\n if (!seqCursor) {\n // done\n docStore.delete(cursor.primaryKey);\n cursor.continue();\n } else {\n var data = seqCursor.value;\n if (data._doc_id_rev === docIdRev) {\n localStore.put(data);\n }\n seqStore.delete(seqCursor.primaryKey);\n seqCursor.continue();\n }\n };\n } else {\n cursor.continue();\n }\n } else if (cb) {\n cb();\n }\n };\n }\n\n // migration to version 4 (part 1)\n function addAttachAndSeqStore(db) {\n var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE,\n {autoIncrement: true});\n attAndSeqStore.createIndex('seq', 'seq');\n attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true});\n }\n\n // migration to version 4 (part 2)\n function migrateAttsAndSeqs(txn, callback) {\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var attStore = txn.objectStore(ATTACH_STORE);\n var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n\n // need to actually populate the table. this is the expensive part,\n // so as an optimization, check first that this database even\n // contains attachments\n var req = attStore.count();\n req.onsuccess = function (e) {\n var count = e.target.result;\n if (!count) {\n return callback(); // done\n }\n\n seqStore.openCursor().onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n return callback(); // done\n }\n var doc = cursor.value;\n var seq = cursor.primaryKey;\n var atts = Object.keys(doc._attachments || {});\n var digestMap = {};\n for (var j = 0; j < atts.length; j++) {\n var att = doc._attachments[atts[j]];\n digestMap[att.digest] = true; // uniq digests, just in case\n }\n var digests = Object.keys(digestMap);\n for (j = 0; j < digests.length; j++) {\n var digest = digests[j];\n attAndSeqStore.put({\n seq: seq,\n digestSeq: digest + '::' + seq\n });\n }\n cursor.continue();\n };\n };\n }\n\n // migration to version 5\n // Instead of relying on on-the-fly migration of metadata,\n // this brings the doc-store to its modern form:\n // - metadata.winningrev\n // - metadata.seq\n // - stringify the metadata when storing it\n function migrateMetadata(txn) {\n\n function decodeMetadataCompat(storedObject) {\n if (!storedObject.data) {\n // old format, when we didn't store it stringified\n storedObject.deleted = storedObject.deletedOrLocal === '1';\n return storedObject;\n }\n return decodeMetadata(storedObject);\n }\n\n // ensure that every metadata has a winningRev and seq,\n // which was previously created on-the-fly but better to migrate\n var bySeqStore = txn.objectStore(BY_SEQ_STORE);\n var docStore = txn.objectStore(DOC_STORE);\n var cursor = docStore.openCursor();\n cursor.onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n return; // done\n }\n var metadata = decodeMetadataCompat(cursor.value);\n\n metadata.winningRev = metadata.winningRev ||\n winningRev(metadata);\n\n function fetchMetadataSeq() {\n // metadata.seq was added post-3.2.0, so if it's missing,\n // we need to fetch it manually\n var start = metadata.id + '::';\n var end = metadata.id + '::\\uffff';\n var req = bySeqStore.index('_doc_id_rev').openCursor(\n IDBKeyRange.bound(start, end));\n\n var metadataSeq = 0;\n req.onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n metadata.seq = metadataSeq;\n return onGetMetadataSeq();\n }\n var seq = cursor.primaryKey;\n if (seq > metadataSeq) {\n metadataSeq = seq;\n }\n cursor.continue();\n };\n }\n\n function onGetMetadataSeq() {\n var metadataToStore = encodeMetadata(metadata,\n metadata.winningRev, metadata.deleted);\n\n var req = docStore.put(metadataToStore);\n req.onsuccess = function () {\n cursor.continue();\n };\n }\n\n if (metadata.seq) {\n return onGetMetadataSeq();\n }\n\n fetchMetadataSeq();\n };\n\n }\n\n api._remote = false;\n api.type = function () {\n return 'idb';\n };\n\n api._id = toPromise(function (callback) {\n callback(null, api._meta.instanceId);\n });\n\n api._bulkDocs = function idb_bulkDocs(req, reqOpts, callback) {\n idbBulkDocs(opts, req, reqOpts, api, idb, callback);\n };\n\n // First we look up the metadata in the ids database, then we fetch the\n // current revision(s) from the by sequence store\n api._get = function idb_get(id, opts, callback) {\n var doc;\n var metadata;\n var err;\n var txn = opts.ctx;\n if (!txn) {\n var txnResult = openTransactionSafely(idb,\n [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n }\n\n function finish() {\n callback(err, {doc: doc, metadata: metadata, ctx: txn});\n }\n\n txn.objectStore(DOC_STORE).get(id).onsuccess = function (e) {\n metadata = decodeMetadata(e.target.result);\n // we can determine the result here if:\n // 1. there is no such document\n // 2. the document is deleted and we don't ask about specific rev\n // When we ask with opts.rev we expect the answer to be either\n // doc (possibly with _deleted=true) or missing error\n if (!metadata) {\n err = createError(MISSING_DOC, 'missing');\n return finish();\n }\n\n var rev$$1;\n if (!opts.rev) {\n rev$$1 = metadata.winningRev;\n var deleted = isDeleted(metadata);\n if (deleted) {\n err = createError(MISSING_DOC, \"deleted\");\n return finish();\n }\n } else {\n rev$$1 = opts.latest ? latest(opts.rev, metadata) : opts.rev;\n }\n\n var objectStore = txn.objectStore(BY_SEQ_STORE);\n var key = metadata.id + '::' + rev$$1;\n\n objectStore.index('_doc_id_rev').get(key).onsuccess = function (e) {\n doc = e.target.result;\n if (doc) {\n doc = decodeDoc(doc);\n }\n if (!doc) {\n err = createError(MISSING_DOC, 'missing');\n return finish();\n }\n finish();\n };\n };\n };\n\n api._getAttachment = function (docId, attachId, attachment, opts, callback) {\n var txn;\n if (opts.ctx) {\n txn = opts.ctx;\n } else {\n var txnResult = openTransactionSafely(idb,\n [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n }\n var digest = attachment.digest;\n var type = attachment.content_type;\n\n txn.objectStore(ATTACH_STORE).get(digest).onsuccess = function (e) {\n var body = e.target.result.body;\n readBlobData(body, type, opts.binary, function (blobData) {\n callback(null, blobData);\n });\n };\n };\n\n api._info = function idb_info(callback) {\n var updateSeq;\n var docCount;\n\n var txnResult = openTransactionSafely(idb, [META_STORE, BY_SEQ_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) {\n docCount = e.target.result.docCount;\n };\n txn.objectStore(BY_SEQ_STORE).openCursor(null, 'prev').onsuccess = function (e) {\n var cursor = e.target.result;\n updateSeq = cursor ? cursor.key : 0;\n };\n\n txn.oncomplete = function () {\n callback(null, {\n doc_count: docCount,\n update_seq: updateSeq,\n // for debugging\n idb_attachment_format: (api._meta.blobSupport ? 'binary' : 'base64')\n });\n };\n };\n\n api._allDocs = function idb_allDocs(opts, callback) {\n idbAllDocs(opts, idb, callback);\n };\n\n api._changes = function idbChanges(opts) {\n return changes(opts, api, dbName, idb);\n };\n\n api._close = function (callback) {\n // https://developer.mozilla.org/en-US/docs/IndexedDB/IDBDatabase#close\n // \"Returns immediately and closes the connection in a separate thread...\"\n idb.close();\n cachedDBs.delete(dbName);\n callback();\n };\n\n api._getRevisionTree = function (docId, callback) {\n var txnResult = openTransactionSafely(idb, [DOC_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n var req = txn.objectStore(DOC_STORE).get(docId);\n req.onsuccess = function (event) {\n var doc = decodeMetadata(event.target.result);\n if (!doc) {\n callback(createError(MISSING_DOC));\n } else {\n callback(null, doc.rev_tree);\n }\n };\n };\n\n // This function removes revisions of document docId\n // which are listed in revs and sets this document\n // revision to to rev_tree\n api._doCompaction = function (docId, revs, callback) {\n var stores = [\n DOC_STORE,\n BY_SEQ_STORE,\n ATTACH_STORE,\n ATTACH_AND_SEQ_STORE\n ];\n var txnResult = openTransactionSafely(idb, stores, 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n\n var docStore = txn.objectStore(DOC_STORE);\n\n docStore.get(docId).onsuccess = function (event) {\n var metadata = decodeMetadata(event.target.result);\n traverseRevTree(metadata.rev_tree, function (isLeaf, pos,\n revHash, ctx, opts) {\n var rev$$1 = pos + '-' + revHash;\n if (revs.indexOf(rev$$1) !== -1) {\n opts.status = 'missing';\n }\n });\n compactRevs(revs, docId, txn);\n var winningRev$$1 = metadata.winningRev;\n var deleted = metadata.deleted;\n txn.objectStore(DOC_STORE).put(\n encodeMetadata(metadata, winningRev$$1, deleted));\n };\n txn.onabort = idbError(callback);\n txn.oncomplete = function () {\n callback();\n };\n };\n\n\n api._getLocal = function (id, callback) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var tx = txnResult.txn;\n var req = tx.objectStore(LOCAL_STORE).get(id);\n\n req.onerror = idbError(callback);\n req.onsuccess = function (e) {\n var doc = e.target.result;\n if (!doc) {\n callback(createError(MISSING_DOC));\n } else {\n delete doc['_doc_id_rev']; // for backwards compat\n callback(null, doc);\n }\n };\n };\n\n api._putLocal = function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n delete doc._revisions; // ignore this, trust the rev\n var oldRev = doc._rev;\n var id = doc._id;\n if (!oldRev) {\n doc._rev = '0-1';\n } else {\n doc._rev = '0-' + (parseInt(oldRev.split('-')[1], 10) + 1);\n }\n\n var tx = opts.ctx;\n var ret;\n if (!tx) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n tx = txnResult.txn;\n tx.onerror = idbError(callback);\n tx.oncomplete = function () {\n if (ret) {\n callback(null, ret);\n }\n };\n }\n\n var oStore = tx.objectStore(LOCAL_STORE);\n var req;\n if (oldRev) {\n req = oStore.get(id);\n req.onsuccess = function (e) {\n var oldDoc = e.target.result;\n if (!oldDoc || oldDoc._rev !== oldRev) {\n callback(createError(REV_CONFLICT));\n } else { // update\n var req = oStore.put(doc);\n req.onsuccess = function () {\n ret = {ok: true, id: doc._id, rev: doc._rev};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n };\n }\n };\n } else { // new doc\n req = oStore.add(doc);\n req.onerror = function (e) {\n // constraint error, already exists\n callback(createError(REV_CONFLICT));\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n };\n req.onsuccess = function () {\n ret = {ok: true, id: doc._id, rev: doc._rev};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n };\n }\n };\n\n api._removeLocal = function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var tx = opts.ctx;\n if (!tx) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n tx = txnResult.txn;\n tx.oncomplete = function () {\n if (ret) {\n callback(null, ret);\n }\n };\n }\n var ret;\n var id = doc._id;\n var oStore = tx.objectStore(LOCAL_STORE);\n var req = oStore.get(id);\n\n req.onerror = idbError(callback);\n req.onsuccess = function (e) {\n var oldDoc = e.target.result;\n if (!oldDoc || oldDoc._rev !== doc._rev) {\n callback(createError(MISSING_DOC));\n } else {\n oStore.delete(id);\n ret = {ok: true, id: id, rev: '0-0'};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n }\n };\n };\n\n api._destroy = function (opts, callback) {\n changesHandler.removeAllListeners(dbName);\n\n //Close open request for \"dbName\" database to fix ie delay.\n var openReq = openReqList.get(dbName);\n if (openReq && openReq.result) {\n openReq.result.close();\n cachedDBs.delete(dbName);\n }\n var req = indexedDB.deleteDatabase(dbName);\n\n req.onsuccess = function () {\n //Remove open request from the list.\n openReqList.delete(dbName);\n if (hasLocalStorage() && (dbName in localStorage)) {\n delete localStorage[dbName];\n }\n callback(null, { 'ok': true });\n };\n\n req.onerror = idbError(callback);\n };\n\n var cached = cachedDBs.get(dbName);\n\n if (cached) {\n idb = cached.idb;\n api._meta = cached.global;\n return immediate(function () {\n callback(null, api);\n });\n }\n\n var req = indexedDB.open(dbName, ADAPTER_VERSION);\n openReqList.set(dbName, req);\n\n req.onupgradeneeded = function (e) {\n var db = e.target.result;\n if (e.oldVersion < 1) {\n return createSchema(db); // new db, initial schema\n }\n // do migrations\n\n var txn = e.currentTarget.transaction;\n // these migrations have to be done in this function, before\n // control is returned to the event loop, because IndexedDB\n\n if (e.oldVersion < 3) {\n createLocalStoreSchema(db); // v2 -> v3\n }\n if (e.oldVersion < 4) {\n addAttachAndSeqStore(db); // v3 -> v4\n }\n\n var migrations = [\n addDeletedOrLocalIndex, // v1 -> v2\n migrateLocalStore, // v2 -> v3\n migrateAttsAndSeqs, // v3 -> v4\n migrateMetadata // v4 -> v5\n ];\n\n var i = e.oldVersion;\n\n function next() {\n var migration = migrations[i - 1];\n i++;\n if (migration) {\n migration(txn, next);\n }\n }\n\n next();\n };\n\n req.onsuccess = function (e) {\n\n idb = e.target.result;\n\n idb.onversionchange = function () {\n idb.close();\n cachedDBs.delete(dbName);\n };\n\n idb.onabort = function (e) {\n guardedConsole('error', 'Database has a global failure', e.target.error);\n idb.close();\n cachedDBs.delete(dbName);\n };\n\n // Do a few setup operations (in parallel as much as possible):\n // 1. Fetch meta doc\n // 2. Check blob support\n // 3. Calculate docCount\n // 4. Generate an instanceId if necessary\n // 5. Store docCount and instanceId on meta doc\n\n var txn = idb.transaction([\n META_STORE,\n DETECT_BLOB_SUPPORT_STORE,\n DOC_STORE\n ], 'readwrite');\n\n var storedMetaDoc = false;\n var metaDoc;\n var docCount;\n var blobSupport;\n var instanceId;\n\n function completeSetup() {\n if (typeof blobSupport === 'undefined' || !storedMetaDoc) {\n return;\n }\n api._meta = {\n name: dbName,\n instanceId: instanceId,\n blobSupport: blobSupport\n };\n\n cachedDBs.set(dbName, {\n idb: idb,\n global: api._meta\n });\n callback(null, api);\n }\n\n function storeMetaDocIfReady() {\n if (typeof docCount === 'undefined' || typeof metaDoc === 'undefined') {\n return;\n }\n var instanceKey = dbName + '_id';\n if (instanceKey in metaDoc) {\n instanceId = metaDoc[instanceKey];\n } else {\n metaDoc[instanceKey] = instanceId = uuid();\n }\n metaDoc.docCount = docCount;\n txn.objectStore(META_STORE).put(metaDoc);\n }\n\n //\n // fetch or generate the instanceId\n //\n txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) {\n metaDoc = e.target.result || { id: META_STORE };\n storeMetaDocIfReady();\n };\n\n //\n // countDocs\n //\n countDocs(txn, function (count) {\n docCount = count;\n storeMetaDocIfReady();\n });\n\n //\n // check blob support\n //\n if (!blobSupportPromise) {\n // make sure blob support is only checked once\n blobSupportPromise = checkBlobSupport(txn);\n }\n\n blobSupportPromise.then(function (val) {\n blobSupport = val;\n completeSetup();\n });\n\n // only when the metadata put transaction has completed,\n // consider the setup done\n txn.oncomplete = function () {\n storedMetaDoc = true;\n completeSetup();\n };\n txn.onabort = idbError(callback);\n };\n\n req.onerror = function () {\n var msg = 'Failed to open indexedDB, are you in private browsing mode?';\n guardedConsole('error', msg);\n callback(createError(IDB_ERROR, msg));\n };\n}\n\nIdbPouch.valid = function () {\n // Following #7085 buggy idb versions (typically Safari < 10.1) are\n // considered valid.\n\n // On Firefox SecurityError is thrown while referencing indexedDB if cookies\n // are not allowed. `typeof indexedDB` also triggers the error.\n try {\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n return typeof indexedDB !== 'undefined' && typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n};\n\nfunction IDBPouch (PouchDB) {\n PouchDB.adapter('idb', IdbPouch, true);\n}\n\n// dead simple promise pool, inspired by https://github.com/timdp/es6-promise-pool\n// but much smaller in code size. limits the number of concurrent promises that are executed\n\n\nfunction pool(promiseFactories, limit) {\n return new Promise(function (resolve, reject) {\n var running = 0;\n var current = 0;\n var done = 0;\n var len = promiseFactories.length;\n var err;\n\n function runNext() {\n running++;\n promiseFactories[current++]().then(onSuccess, onError);\n }\n\n function doNext() {\n if (++done === len) {\n /* istanbul ignore if */\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n } else {\n runNextBatch();\n }\n }\n\n function onSuccess() {\n running--;\n doNext();\n }\n\n /* istanbul ignore next */\n function onError(thisErr) {\n running--;\n err = err || thisErr;\n doNext();\n }\n\n function runNextBatch() {\n while (running < limit && current < len) {\n runNext();\n }\n }\n\n runNextBatch();\n });\n}\n\nvar CHANGES_BATCH_SIZE = 25;\nvar MAX_SIMULTANEOUS_REVS = 50;\nvar CHANGES_TIMEOUT_BUFFER = 5000;\nvar DEFAULT_HEARTBEAT = 10000;\n\nvar supportsBulkGetMap = {};\n\nfunction readAttachmentsAsBlobOrBuffer(row) {\n var doc = row.doc || row.ok;\n var atts = doc && doc._attachments;\n if (!atts) {\n return;\n }\n Object.keys(atts).forEach(function (filename) {\n var att = atts[filename];\n att.data = b64ToBluffer(att.data, att.content_type);\n });\n}\n\nfunction encodeDocId(id) {\n if (/^_design/.test(id)) {\n return '_design/' + encodeURIComponent(id.slice(8));\n }\n if (/^_local/.test(id)) {\n return '_local/' + encodeURIComponent(id.slice(7));\n }\n return encodeURIComponent(id);\n}\n\nfunction preprocessAttachments$1(doc) {\n if (!doc._attachments || !Object.keys(doc._attachments)) {\n return Promise.resolve();\n }\n\n return Promise.all(Object.keys(doc._attachments).map(function (key) {\n var attachment = doc._attachments[key];\n if (attachment.data && typeof attachment.data !== 'string') {\n return new Promise(function (resolve) {\n blobToBase64(attachment.data, resolve);\n }).then(function (b64) {\n attachment.data = b64;\n });\n }\n }));\n}\n\nfunction hasUrlPrefix(opts) {\n if (!opts.prefix) {\n return false;\n }\n var protocol = parseUri(opts.prefix).protocol;\n return protocol === 'http' || protocol === 'https';\n}\n\n// Get all the information you possibly can about the URI given by name and\n// return it as a suitable object.\nfunction getHost(name, opts) {\n // encode db name if opts.prefix is a url (#5574)\n if (hasUrlPrefix(opts)) {\n var dbName = opts.name.substr(opts.prefix.length);\n // Ensure prefix has a trailing slash\n var prefix = opts.prefix.replace(/\\/?$/, '/');\n name = prefix + encodeURIComponent(dbName);\n }\n\n var uri = parseUri(name);\n if (uri.user || uri.password) {\n uri.auth = {username: uri.user, password: uri.password};\n }\n\n // Split the path part of the URI into parts using '/' as the delimiter\n // after removing any leading '/' and any trailing '/'\n var parts = uri.path.replace(/(^\\/|\\/$)/g, '').split('/');\n\n uri.db = parts.pop();\n // Prevent double encoding of URI component\n if (uri.db.indexOf('%') === -1) {\n uri.db = encodeURIComponent(uri.db);\n }\n\n uri.path = parts.join('/');\n\n return uri;\n}\n\n// Generate a URL with the host data given by opts and the given path\nfunction genDBUrl(opts, path) {\n return genUrl(opts, opts.db + '/' + path);\n}\n\n// Generate a URL with the host data given by opts and the given path\nfunction genUrl(opts, path) {\n // If the host already has a path, then we need to have a path delimiter\n // Otherwise, the path delimiter is the empty string\n var pathDel = !opts.path ? '' : '/';\n\n // If the host already has a path, then we need to have a path delimiter\n // Otherwise, the path delimiter is the empty string\n return opts.protocol + '://' + opts.host +\n (opts.port ? (':' + opts.port) : '') +\n '/' + opts.path + pathDel + path;\n}\n\nfunction paramsToStr(params) {\n return '?' + Object.keys(params).map(function (k) {\n return k + '=' + encodeURIComponent(params[k]);\n }).join('&');\n}\n\nfunction shouldCacheBust(opts) {\n var ua = (typeof navigator !== 'undefined' && navigator.userAgent) ?\n navigator.userAgent.toLowerCase() : '';\n var isIE = ua.indexOf('msie') !== -1;\n var isTrident = ua.indexOf('trident') !== -1;\n var isEdge = ua.indexOf('edge') !== -1;\n var isGET = !('method' in opts) || opts.method === 'GET';\n return (isIE || isTrident || isEdge) && isGET;\n}\n\n// Implements the PouchDB API for dealing with CouchDB instances over HTTP\nfunction HttpPouch(opts, callback) {\n\n // The functions that will be publicly available for HttpPouch\n var api = this;\n\n var host = getHost(opts.name, opts);\n var dbUrl = genDBUrl(host, '');\n\n opts = clone(opts);\n\n var ourFetch = function (url, options) {\n\n options = options || {};\n options.headers = options.headers || new h();\n\n options.credentials = 'include';\n\n if (opts.auth || host.auth) {\n var nAuth = opts.auth || host.auth;\n var str = nAuth.username + ':' + nAuth.password;\n var token = thisBtoa(unescape(encodeURIComponent(str)));\n options.headers.set('Authorization', 'Basic ' + token);\n }\n\n var headers = opts.headers || {};\n Object.keys(headers).forEach(function (key) {\n options.headers.append(key, headers[key]);\n });\n\n /* istanbul ignore if */\n if (shouldCacheBust(options)) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + '_nonce=' + Date.now();\n }\n\n var fetchFun = opts.fetch || f$1;\n return fetchFun(url, options);\n };\n\n function adapterFun$$1(name, fun) {\n return adapterFun(name, getArguments(function (args) {\n setup().then(function () {\n return fun.apply(this, args);\n }).catch(function (e) {\n var callback = args.pop();\n callback(e);\n });\n })).bind(api);\n }\n\n function fetchJSON(url, options, callback) {\n\n var result = {};\n\n options = options || {};\n options.headers = options.headers || new h();\n\n if (!options.headers.get('Content-Type')) {\n options.headers.set('Content-Type', 'application/json');\n }\n if (!options.headers.get('Accept')) {\n options.headers.set('Accept', 'application/json');\n }\n\n return ourFetch(url, options).then(function (response) {\n result.ok = response.ok;\n result.status = response.status;\n return response.json();\n }).then(function (json) {\n result.data = json;\n if (!result.ok) {\n result.data.status = result.status;\n var err = generateErrorFromResponse(result.data);\n if (callback) {\n return callback(err);\n } else {\n throw err;\n }\n }\n\n if (Array.isArray(result.data)) {\n result.data = result.data.map(function (v) {\n if (v.error || v.missing) {\n return generateErrorFromResponse(v);\n } else {\n return v;\n }\n });\n }\n\n if (callback) {\n callback(null, result.data);\n } else {\n return result;\n }\n });\n }\n\n var setupPromise;\n\n function setup() {\n if (opts.skip_setup) {\n return Promise.resolve();\n }\n\n // If there is a setup in process or previous successful setup\n // done then we will use that\n // If previous setups have been rejected we will try again\n if (setupPromise) {\n return setupPromise;\n }\n\n setupPromise = fetchJSON(dbUrl).catch(function (err) {\n if (err && err.status && err.status === 404) {\n // Doesnt exist, create it\n explainError(404, 'PouchDB is just detecting if the remote exists.');\n return fetchJSON(dbUrl, {method: 'PUT'});\n } else {\n return Promise.reject(err);\n }\n }).catch(function (err) {\n // If we try to create a database that already exists, skipped in\n // istanbul since its catching a race condition.\n /* istanbul ignore if */\n if (err && err.status && err.status === 412) {\n return true;\n }\n return Promise.reject(err);\n });\n\n setupPromise.catch(function () {\n setupPromise = null;\n });\n\n return setupPromise;\n }\n\n immediate(function () {\n callback(null, api);\n });\n\n api._remote = true;\n\n /* istanbul ignore next */\n api.type = function () {\n return 'http';\n };\n\n api.id = adapterFun$$1('id', function (callback) {\n ourFetch(genUrl(host, '')).then(function (response) {\n return response.json();\n }).catch(function () {\n return {};\n }).then(function (result) {\n // Bad response or missing `uuid` should not prevent ID generation.\n var uuid$$1 = (result && result.uuid) ?\n (result.uuid + host.db) : genDBUrl(host, '');\n callback(null, uuid$$1);\n });\n });\n\n // Sends a POST request to the host calling the couchdb _compact function\n // version: The version of CouchDB it is running\n api.compact = adapterFun$$1('compact', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n fetchJSON(genDBUrl(host, '_compact'), {method: 'POST'}).then(function () {\n function ping() {\n api.info(function (err, res) {\n // CouchDB may send a \"compact_running:true\" if it's\n // already compacting. PouchDB Server doesn't.\n /* istanbul ignore else */\n if (res && !res.compact_running) {\n callback(null, {ok: true});\n } else {\n setTimeout(ping, opts.interval || 200);\n }\n });\n }\n // Ping the http if it's finished compaction\n ping();\n });\n });\n\n api.bulkGet = adapterFun('bulkGet', function (opts, callback) {\n var self = this;\n\n function doBulkGet(cb) {\n var params = {};\n if (opts.revs) {\n params.revs = true;\n }\n if (opts.attachments) {\n /* istanbul ignore next */\n params.attachments = true;\n }\n if (opts.latest) {\n params.latest = true;\n }\n fetchJSON(genDBUrl(host, '_bulk_get' + paramsToStr(params)), {\n method: 'POST',\n body: JSON.stringify({ docs: opts.docs})\n }).then(function (result) {\n if (opts.attachments && opts.binary) {\n result.data.results.forEach(function (res) {\n res.docs.forEach(readAttachmentsAsBlobOrBuffer);\n });\n }\n cb(null, result.data);\n }).catch(cb);\n }\n\n /* istanbul ignore next */\n function doBulkGetShim() {\n // avoid \"url too long error\" by splitting up into multiple requests\n var batchSize = MAX_SIMULTANEOUS_REVS;\n var numBatches = Math.ceil(opts.docs.length / batchSize);\n var numDone = 0;\n var results = new Array(numBatches);\n\n function onResult(batchNum) {\n return function (err, res) {\n // err is impossible because shim returns a list of errs in that case\n results[batchNum] = res.results;\n if (++numDone === numBatches) {\n callback(null, {results: flatten(results)});\n }\n };\n }\n\n for (var i = 0; i < numBatches; i++) {\n var subOpts = pick(opts, ['revs', 'attachments', 'binary', 'latest']);\n subOpts.docs = opts.docs.slice(i * batchSize,\n Math.min(opts.docs.length, (i + 1) * batchSize));\n bulkGet(self, subOpts, onResult(i));\n }\n }\n\n // mark the whole database as either supporting or not supporting _bulk_get\n var dbUrl = genUrl(host, '');\n var supportsBulkGet = supportsBulkGetMap[dbUrl];\n\n /* istanbul ignore next */\n if (typeof supportsBulkGet !== 'boolean') {\n // check if this database supports _bulk_get\n doBulkGet(function (err, res) {\n if (err) {\n supportsBulkGetMap[dbUrl] = false;\n explainError(\n err.status,\n 'PouchDB is just detecting if the remote ' +\n 'supports the _bulk_get API.'\n );\n doBulkGetShim();\n } else {\n supportsBulkGetMap[dbUrl] = true;\n callback(null, res);\n }\n });\n } else if (supportsBulkGet) {\n doBulkGet(callback);\n } else {\n doBulkGetShim();\n }\n });\n\n // Calls GET on the host, which gets back a JSON string containing\n // couchdb: A welcome string\n // version: The version of CouchDB it is running\n api._info = function (callback) {\n setup().then(function () {\n return ourFetch(genDBUrl(host, ''));\n }).then(function (response) {\n return response.json();\n }).then(function (info) {\n info.host = genDBUrl(host, '');\n callback(null, info);\n }).catch(callback);\n };\n\n api.fetch = function (path, options) {\n return setup().then(function () {\n var url = path.substring(0, 1) === '/' ?\n genUrl(host, path.substring(1)) :\n genDBUrl(host, path);\n return ourFetch(url, options);\n });\n };\n\n // Get the document with the given id from the database given by host.\n // The id could be solely the _id in the database, or it may be a\n // _design/ID or _local/ID path\n api.get = adapterFun$$1('get', function (id, opts, callback) {\n // If no options were given, set the callback to the second parameter\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n // List of parameters to add to the GET request\n var params = {};\n\n if (opts.revs) {\n params.revs = true;\n }\n\n if (opts.revs_info) {\n params.revs_info = true;\n }\n\n if (opts.latest) {\n params.latest = true;\n }\n\n if (opts.open_revs) {\n if (opts.open_revs !== \"all\") {\n opts.open_revs = JSON.stringify(opts.open_revs);\n }\n params.open_revs = opts.open_revs;\n }\n\n if (opts.rev) {\n params.rev = opts.rev;\n }\n\n if (opts.conflicts) {\n params.conflicts = opts.conflicts;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = opts.update_seq;\n }\n\n id = encodeDocId(id);\n\n function fetchAttachments(doc) {\n var atts = doc._attachments;\n var filenames = atts && Object.keys(atts);\n if (!atts || !filenames.length) {\n return;\n }\n // we fetch these manually in separate XHRs, because\n // Sync Gateway would normally send it back as multipart/mixed,\n // which we cannot parse. Also, this is more efficient than\n // receiving attachments as base64-encoded strings.\n function fetchData(filename) {\n var att = atts[filename];\n var path = encodeDocId(doc._id) + '/' + encodeAttachmentId(filename) +\n '?rev=' + doc._rev;\n return ourFetch(genDBUrl(host, path)).then(function (response) {\n if (typeof process !== 'undefined' && !process.browser) {\n return response.buffer();\n } else {\n /* istanbul ignore next */\n return response.blob();\n }\n }).then(function (blob) {\n if (opts.binary) {\n // TODO: Can we remove this?\n if (typeof process !== 'undefined' && !process.browser) {\n blob.type = att.content_type;\n }\n return blob;\n }\n return new Promise(function (resolve) {\n blobToBase64(blob, resolve);\n });\n }).then(function (data) {\n delete att.stub;\n delete att.length;\n att.data = data;\n });\n }\n\n var promiseFactories = filenames.map(function (filename) {\n return function () {\n return fetchData(filename);\n };\n });\n\n // This limits the number of parallel xhr requests to 5 any time\n // to avoid issues with maximum browser request limits\n return pool(promiseFactories, 5);\n }\n\n function fetchAllAttachments(docOrDocs) {\n if (Array.isArray(docOrDocs)) {\n return Promise.all(docOrDocs.map(function (doc) {\n if (doc.ok) {\n return fetchAttachments(doc.ok);\n }\n }));\n }\n return fetchAttachments(docOrDocs);\n }\n\n var url = genDBUrl(host, id + paramsToStr(params));\n fetchJSON(url).then(function (res) {\n return Promise.resolve().then(function () {\n if (opts.attachments) {\n return fetchAllAttachments(res.data);\n }\n }).then(function () {\n callback(null, res.data);\n });\n }).catch(function (e) {\n e.docId = id;\n callback(e);\n });\n });\n\n\n // Delete the document given by doc from the database given by host.\n api.remove = adapterFun$$1('remove', function (docOrId, optsOrRev, opts, cb) {\n var doc;\n if (typeof optsOrRev === 'string') {\n // id, rev, opts, callback style\n doc = {\n _id: docOrId,\n _rev: optsOrRev\n };\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n } else {\n // doc, opts, callback style\n doc = docOrId;\n if (typeof optsOrRev === 'function') {\n cb = optsOrRev;\n opts = {};\n } else {\n cb = opts;\n opts = optsOrRev;\n }\n }\n\n var rev$$1 = (doc._rev || opts.rev);\n var url = genDBUrl(host, encodeDocId(doc._id)) + '?rev=' + rev$$1;\n\n fetchJSON(url, {method: 'DELETE'}, cb).catch(cb);\n });\n\n function encodeAttachmentId(attachmentId) {\n return attachmentId.split(\"/\").map(encodeURIComponent).join(\"/\");\n }\n\n // Get the attachment\n api.getAttachment = adapterFun$$1('getAttachment', function (docId, attachmentId,\n opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var params = opts.rev ? ('?rev=' + opts.rev) : '';\n var url = genDBUrl(host, encodeDocId(docId)) + '/' +\n encodeAttachmentId(attachmentId) + params;\n var contentType;\n ourFetch(url, {method: 'GET'}).then(function (response) {\n contentType = response.headers.get('content-type');\n if (!response.ok) {\n throw response;\n } else {\n if (typeof process !== 'undefined' && !process.browser) {\n return response.buffer();\n } else {\n /* istanbul ignore next */\n return response.blob();\n }\n }\n }).then(function (blob) {\n // TODO: also remove\n if (typeof process !== 'undefined' && !process.browser) {\n blob.type = contentType;\n }\n callback(null, blob);\n }).catch(function (err) {\n callback(err);\n });\n });\n\n // Remove the attachment given by the id and rev\n api.removeAttachment = adapterFun$$1('removeAttachment', function (docId,\n attachmentId,\n rev$$1,\n callback) {\n var url = genDBUrl(host, encodeDocId(docId) + '/' +\n encodeAttachmentId(attachmentId)) + '?rev=' + rev$$1;\n fetchJSON(url, {method: 'DELETE'}, callback).catch(callback);\n });\n\n // Add the attachment given by blob and its contentType property\n // to the document with the given id, the revision given by rev, and\n // add it to the database given by host.\n api.putAttachment = adapterFun$$1('putAttachment', function (docId, attachmentId,\n rev$$1, blob,\n type, callback) {\n if (typeof type === 'function') {\n callback = type;\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n var id = encodeDocId(docId) + '/' + encodeAttachmentId(attachmentId);\n var url = genDBUrl(host, id);\n if (rev$$1) {\n url += '?rev=' + rev$$1;\n }\n\n if (typeof blob === 'string') {\n // input is assumed to be a base64 string\n var binary;\n try {\n binary = thisAtob(blob);\n } catch (err) {\n return callback(createError(BAD_ARG,\n 'Attachment is not a valid base64 string'));\n }\n blob = binary ? binStringToBluffer(binary, type) : '';\n }\n\n // Add the attachment\n fetchJSON(url, {\n headers: new h({'Content-Type': type}),\n method: 'PUT',\n body: blob\n }, callback).catch(callback);\n });\n\n // Update/create multiple documents given by req in the database\n // given by host.\n api._bulkDocs = function (req, opts, callback) {\n // If new_edits=false then it prevents the database from creating\n // new revision numbers for the documents. Instead it just uses\n // the old ones. This is used in database replication.\n req.new_edits = opts.new_edits;\n\n setup().then(function () {\n return Promise.all(req.docs.map(preprocessAttachments$1));\n }).then(function () {\n // Update/create the documents\n return fetchJSON(genDBUrl(host, '_bulk_docs'), {\n method: 'POST',\n body: JSON.stringify(req)\n }, callback);\n }).catch(callback);\n };\n\n\n // Update/create document\n api._put = function (doc, opts, callback) {\n setup().then(function () {\n return preprocessAttachments$1(doc);\n }).then(function () {\n return fetchJSON(genDBUrl(host, encodeDocId(doc._id)), {\n method: 'PUT',\n body: JSON.stringify(doc)\n });\n }).then(function (result) {\n callback(null, result.data);\n }).catch(function (err) {\n err.docId = doc && doc._id;\n callback(err);\n });\n };\n\n\n // Get a listing of the documents in the database given\n // by host and ordered by increasing id.\n api.allDocs = adapterFun$$1('allDocs', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n // List of parameters to add to the GET request\n var params = {};\n var body;\n var method = 'GET';\n\n if (opts.conflicts) {\n params.conflicts = true;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = true;\n }\n\n if (opts.descending) {\n params.descending = true;\n }\n\n if (opts.include_docs) {\n params.include_docs = true;\n }\n\n // added in CouchDB 1.6.0\n if (opts.attachments) {\n params.attachments = true;\n }\n\n if (opts.key) {\n params.key = JSON.stringify(opts.key);\n }\n\n if (opts.start_key) {\n opts.startkey = opts.start_key;\n }\n\n if (opts.startkey) {\n params.startkey = JSON.stringify(opts.startkey);\n }\n\n if (opts.end_key) {\n opts.endkey = opts.end_key;\n }\n\n if (opts.endkey) {\n params.endkey = JSON.stringify(opts.endkey);\n }\n\n if (typeof opts.inclusive_end !== 'undefined') {\n params.inclusive_end = !!opts.inclusive_end;\n }\n\n if (typeof opts.limit !== 'undefined') {\n params.limit = opts.limit;\n }\n\n if (typeof opts.skip !== 'undefined') {\n params.skip = opts.skip;\n }\n\n var paramStr = paramsToStr(params);\n\n if (typeof opts.keys !== 'undefined') {\n method = 'POST';\n body = {keys: opts.keys};\n }\n\n fetchJSON(genDBUrl(host, '_all_docs' + paramStr), {\n method: method,\n body: JSON.stringify(body)\n }).then(function (result) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n result.data.rows.forEach(readAttachmentsAsBlobOrBuffer);\n }\n callback(null, result.data);\n }).catch(callback);\n });\n\n // Get a list of changes made to documents in the database given by host.\n // TODO According to the README, there should be two other methods here,\n // api.changes.addListener and api.changes.removeListener.\n api._changes = function (opts) {\n\n // We internally page the results of a changes request, this means\n // if there is a large set of changes to be returned we can start\n // processing them quicker instead of waiting on the entire\n // set of changes to return and attempting to process them at once\n var batchSize = 'batch_size' in opts ? opts.batch_size : CHANGES_BATCH_SIZE;\n\n opts = clone(opts);\n\n if (opts.continuous && !('heartbeat' in opts)) {\n opts.heartbeat = DEFAULT_HEARTBEAT;\n }\n\n var requestTimeout = ('timeout' in opts) ? opts.timeout : 30 * 1000;\n\n // ensure CHANGES_TIMEOUT_BUFFER applies\n if ('timeout' in opts && opts.timeout &&\n (requestTimeout - opts.timeout) < CHANGES_TIMEOUT_BUFFER) {\n requestTimeout = opts.timeout + CHANGES_TIMEOUT_BUFFER;\n }\n\n /* istanbul ignore if */\n if ('heartbeat' in opts && opts.heartbeat &&\n (requestTimeout - opts.heartbeat) < CHANGES_TIMEOUT_BUFFER) {\n requestTimeout = opts.heartbeat + CHANGES_TIMEOUT_BUFFER;\n }\n\n var params = {};\n if ('timeout' in opts && opts.timeout) {\n params.timeout = opts.timeout;\n }\n\n var limit = (typeof opts.limit !== 'undefined') ? opts.limit : false;\n var leftToFetch = limit;\n\n if (opts.style) {\n params.style = opts.style;\n }\n\n if (opts.include_docs || opts.filter && typeof opts.filter === 'function') {\n params.include_docs = true;\n }\n\n if (opts.attachments) {\n params.attachments = true;\n }\n\n if (opts.continuous) {\n params.feed = 'longpoll';\n }\n\n if (opts.seq_interval) {\n params.seq_interval = opts.seq_interval;\n }\n\n if (opts.conflicts) {\n params.conflicts = true;\n }\n\n if (opts.descending) {\n params.descending = true;\n }\n \n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = true;\n }\n\n if ('heartbeat' in opts) {\n // If the heartbeat value is false, it disables the default heartbeat\n if (opts.heartbeat) {\n params.heartbeat = opts.heartbeat;\n }\n }\n\n if (opts.filter && typeof opts.filter === 'string') {\n params.filter = opts.filter;\n }\n\n if (opts.view && typeof opts.view === 'string') {\n params.filter = '_view';\n params.view = opts.view;\n }\n\n // If opts.query_params exists, pass it through to the changes request.\n // These parameters may be used by the filter on the source database.\n if (opts.query_params && typeof opts.query_params === 'object') {\n for (var param_name in opts.query_params) {\n /* istanbul ignore else */\n if (opts.query_params.hasOwnProperty(param_name)) {\n params[param_name] = opts.query_params[param_name];\n }\n }\n }\n\n var method = 'GET';\n var body;\n\n if (opts.doc_ids) {\n // set this automagically for the user; it's annoying that couchdb\n // requires both a \"filter\" and a \"doc_ids\" param.\n params.filter = '_doc_ids';\n method = 'POST';\n body = {doc_ids: opts.doc_ids };\n }\n /* istanbul ignore next */\n else if (opts.selector) {\n // set this automagically for the user, similar to above\n params.filter = '_selector';\n method = 'POST';\n body = {selector: opts.selector };\n }\n\n var controller = new a();\n var lastFetchedSeq;\n\n // Get all the changes starting wtih the one immediately after the\n // sequence number given by since.\n var fetchData = function (since, callback) {\n if (opts.aborted) {\n return;\n }\n params.since = since;\n // \"since\" can be any kind of json object in Cloudant/CouchDB 2.x\n /* istanbul ignore next */\n if (typeof params.since === \"object\") {\n params.since = JSON.stringify(params.since);\n }\n\n if (opts.descending) {\n if (limit) {\n params.limit = leftToFetch;\n }\n } else {\n params.limit = (!limit || leftToFetch > batchSize) ?\n batchSize : leftToFetch;\n }\n\n // Set the options for the ajax call\n var url = genDBUrl(host, '_changes' + paramsToStr(params));\n var fetchOpts = {\n signal: controller.signal,\n method: method,\n body: JSON.stringify(body)\n };\n lastFetchedSeq = since;\n\n /* istanbul ignore if */\n if (opts.aborted) {\n return;\n }\n\n // Get the changes\n setup().then(function () {\n return fetchJSON(url, fetchOpts, callback);\n }).catch(callback);\n };\n\n // If opts.since exists, get all the changes from the sequence\n // number given by opts.since. Otherwise, get all the changes\n // from the sequence number 0.\n var results = {results: []};\n\n var fetched = function (err, res) {\n if (opts.aborted) {\n return;\n }\n var raw_results_length = 0;\n // If the result of the ajax call (res) contains changes (res.results)\n if (res && res.results) {\n raw_results_length = res.results.length;\n results.last_seq = res.last_seq;\n var pending = null;\n var lastSeq = null;\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof res.pending === 'number') {\n pending = res.pending;\n }\n if (typeof results.last_seq === 'string' || typeof results.last_seq === 'number') {\n lastSeq = results.last_seq;\n }\n // For each change\n var req = {};\n req.query = opts.query_params;\n res.results = res.results.filter(function (c) {\n leftToFetch--;\n var ret = filterChange(opts)(c);\n if (ret) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n readAttachmentsAsBlobOrBuffer(c);\n }\n if (opts.return_docs) {\n results.results.push(c);\n }\n opts.onChange(c, pending, lastSeq);\n }\n return ret;\n });\n } else if (err) {\n // In case of an error, stop listening for changes and call\n // opts.complete\n opts.aborted = true;\n opts.complete(err);\n return;\n }\n\n // The changes feed may have timed out with no results\n // if so reuse last update sequence\n if (res && res.last_seq) {\n lastFetchedSeq = res.last_seq;\n }\n\n var finished = (limit && leftToFetch <= 0) ||\n (res && raw_results_length < batchSize) ||\n (opts.descending);\n\n if ((opts.continuous && !(limit && leftToFetch <= 0)) || !finished) {\n // Queue a call to fetch again with the newest sequence number\n immediate(function () { fetchData(lastFetchedSeq, fetched); });\n } else {\n // We're done, call the callback\n opts.complete(null, results);\n }\n };\n\n fetchData(opts.since || 0, fetched);\n\n // Return a method to cancel this method from processing any more\n return {\n cancel: function () {\n opts.aborted = true;\n controller.abort();\n }\n };\n };\n\n // Given a set of document/revision IDs (given by req), tets the subset of\n // those that do NOT correspond to revisions stored in the database.\n // See http://wiki.apache.org/couchdb/HttpPostRevsDiff\n api.revsDiff = adapterFun$$1('revsDiff', function (req, opts, callback) {\n // If no options were given, set the callback to be the second parameter\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n // Get the missing document/revision IDs\n fetchJSON(genDBUrl(host, '_revs_diff'), {\n method: 'POST',\n body: JSON.stringify(req)\n }, callback).catch(callback);\n });\n\n api._close = function (callback) {\n callback();\n };\n\n api._destroy = function (options, callback) {\n fetchJSON(genDBUrl(host, ''), {method: 'DELETE'}).then(function (json) {\n callback(null, json);\n }).catch(function (err) {\n /* istanbul ignore if */\n if (err.status === 404) {\n callback(null, {ok: true});\n } else {\n callback(err);\n }\n });\n };\n}\n\n// HttpPouch is a valid adapter.\nHttpPouch.valid = function () {\n return true;\n};\n\nfunction HttpPouch$1 (PouchDB) {\n PouchDB.adapter('http', HttpPouch, false);\n PouchDB.adapter('https', HttpPouch, false);\n}\n\nfunction QueryParseError(message) {\n this.status = 400;\n this.name = 'query_parse_error';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, QueryParseError);\n } catch (e) {}\n}\n\ninherits(QueryParseError, Error);\n\nfunction NotFoundError(message) {\n this.status = 404;\n this.name = 'not_found';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, NotFoundError);\n } catch (e) {}\n}\n\ninherits(NotFoundError, Error);\n\nfunction BuiltInError(message) {\n this.status = 500;\n this.name = 'invalid_value';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, BuiltInError);\n } catch (e) {}\n}\n\ninherits(BuiltInError, Error);\n\nfunction promisedCallback(promise, callback) {\n if (callback) {\n promise.then(function (res) {\n immediate(function () {\n callback(null, res);\n });\n }, function (reason) {\n immediate(function () {\n callback(reason);\n });\n });\n }\n return promise;\n}\n\nfunction callbackify(fun) {\n return getArguments(function (args) {\n var cb = args.pop();\n var promise = fun.apply(this, args);\n if (typeof cb === 'function') {\n promisedCallback(promise, cb);\n }\n return promise;\n });\n}\n\n// Promise finally util similar to Q.finally\nfunction fin(promise, finalPromiseFactory) {\n return promise.then(function (res) {\n return finalPromiseFactory().then(function () {\n return res;\n });\n }, function (reason) {\n return finalPromiseFactory().then(function () {\n throw reason;\n });\n });\n}\n\nfunction sequentialize(queue, promiseFactory) {\n return function () {\n var args = arguments;\n var that = this;\n return queue.add(function () {\n return promiseFactory.apply(that, args);\n });\n };\n}\n\n// uniq an array of strings, order not guaranteed\n// similar to underscore/lodash _.uniq\nfunction uniq(arr) {\n var theSet = new ExportedSet(arr);\n var result = new Array(theSet.size);\n var index = -1;\n theSet.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\nfunction mapToKeysArray(map) {\n var result = new Array(map.size);\n var index = -1;\n map.forEach(function (value, key) {\n result[++index] = key;\n });\n return result;\n}\n\nfunction createBuiltInError(name) {\n var message = 'builtin ' + name +\n ' function requires map values to be numbers' +\n ' or number arrays';\n return new BuiltInError(message);\n}\n\nfunction sum(values) {\n var result = 0;\n for (var i = 0, len = values.length; i < len; i++) {\n var num = values[i];\n if (typeof num !== 'number') {\n if (Array.isArray(num)) {\n // lists of numbers are also allowed, sum them separately\n result = typeof result === 'number' ? [result] : result;\n for (var j = 0, jLen = num.length; j < jLen; j++) {\n var jNum = num[j];\n if (typeof jNum !== 'number') {\n throw createBuiltInError('_sum');\n } else if (typeof result[j] === 'undefined') {\n result.push(jNum);\n } else {\n result[j] += jNum;\n }\n }\n } else { // not array/number\n throw createBuiltInError('_sum');\n }\n } else if (typeof result === 'number') {\n result += num;\n } else { // add number to array\n result[0] += num;\n }\n }\n return result;\n}\n\nvar log = guardedConsole.bind(null, 'log');\nvar isArray = Array.isArray;\nvar toJSON = JSON.parse;\n\nfunction evalFunctionWithEval(func, emit) {\n return scopeEval(\n \"return (\" + func.replace(/;\\s*$/, \"\") + \");\",\n {\n emit: emit,\n sum: sum,\n log: log,\n isArray: isArray,\n toJSON: toJSON\n }\n );\n}\n\n/*\n * Simple task queue to sequentialize actions. Assumes\n * callbacks will eventually fire (once).\n */\n\n\nfunction TaskQueue$1() {\n this.promise = new Promise(function (fulfill) {fulfill(); });\n}\nTaskQueue$1.prototype.add = function (promiseFactory) {\n this.promise = this.promise.catch(function () {\n // just recover\n }).then(function () {\n return promiseFactory();\n });\n return this.promise;\n};\nTaskQueue$1.prototype.finish = function () {\n return this.promise;\n};\n\nfunction stringify(input) {\n if (!input) {\n return 'undefined'; // backwards compat for empty reduce\n }\n // for backwards compat with mapreduce, functions/strings are stringified\n // as-is. everything else is JSON-stringified.\n switch (typeof input) {\n case 'function':\n // e.g. a mapreduce map\n return input.toString();\n case 'string':\n // e.g. a mapreduce built-in _reduce function\n return input.toString();\n default:\n // e.g. a JSON object in the case of mango queries\n return JSON.stringify(input);\n }\n}\n\n/* create a string signature for a view so we can cache it and uniq it */\nfunction createViewSignature(mapFun, reduceFun) {\n // the \"undefined\" part is for backwards compatibility\n return stringify(mapFun) + stringify(reduceFun) + 'undefined';\n}\n\nfunction createView(sourceDB, viewName, mapFun, reduceFun, temporary, localDocName) {\n var viewSignature = createViewSignature(mapFun, reduceFun);\n\n var cachedViews;\n if (!temporary) {\n // cache this to ensure we don't try to update the same view twice\n cachedViews = sourceDB._cachedViews = sourceDB._cachedViews || {};\n if (cachedViews[viewSignature]) {\n return cachedViews[viewSignature];\n }\n }\n\n var promiseForView = sourceDB.info().then(function (info) {\n\n var depDbName = info.db_name + '-mrview-' +\n (temporary ? 'temp' : stringMd5(viewSignature));\n\n // save the view name in the source db so it can be cleaned up if necessary\n // (e.g. when the _design doc is deleted, remove all associated view data)\n function diffFunction(doc) {\n doc.views = doc.views || {};\n var fullViewName = viewName;\n if (fullViewName.indexOf('/') === -1) {\n fullViewName = viewName + '/' + viewName;\n }\n var depDbs = doc.views[fullViewName] = doc.views[fullViewName] || {};\n /* istanbul ignore if */\n if (depDbs[depDbName]) {\n return; // no update necessary\n }\n depDbs[depDbName] = true;\n return doc;\n }\n return upsert(sourceDB, '_local/' + localDocName, diffFunction).then(function () {\n return sourceDB.registerDependentDatabase(depDbName).then(function (res) {\n var db = res.db;\n db.auto_compaction = true;\n var view = {\n name: depDbName,\n db: db,\n sourceDB: sourceDB,\n adapter: sourceDB.adapter,\n mapFun: mapFun,\n reduceFun: reduceFun\n };\n return view.db.get('_local/lastSeq').catch(function (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n throw err;\n }\n }).then(function (lastSeqDoc) {\n view.seq = lastSeqDoc ? lastSeqDoc.seq : 0;\n if (cachedViews) {\n view.db.once('destroyed', function () {\n delete cachedViews[viewSignature];\n });\n }\n return view;\n });\n });\n });\n });\n\n if (cachedViews) {\n cachedViews[viewSignature] = promiseForView;\n }\n return promiseForView;\n}\n\nvar persistentQueues = {};\nvar tempViewQueue = new TaskQueue$1();\nvar CHANGES_BATCH_SIZE$1 = 50;\n\nfunction parseViewName(name) {\n // can be either 'ddocname/viewname' or just 'viewname'\n // (where the ddoc name is the same)\n return name.indexOf('/') === -1 ? [name, name] : name.split('/');\n}\n\nfunction isGenOne(changes) {\n // only return true if the current change is 1-\n // and there are no other leafs\n return changes.length === 1 && /^1-/.test(changes[0].rev);\n}\n\nfunction emitError(db, e) {\n try {\n db.emit('error', e);\n } catch (err) {\n guardedConsole('error',\n 'The user\\'s map/reduce function threw an uncaught error.\\n' +\n 'You can debug this error by doing:\\n' +\n 'myDatabase.on(\\'error\\', function (err) { debugger; });\\n' +\n 'Please double-check your map/reduce function.');\n guardedConsole('error', e);\n }\n}\n\n/**\n * Returns an \"abstract\" mapreduce object of the form:\n *\n * {\n * query: queryFun,\n * viewCleanup: viewCleanupFun\n * }\n *\n * Arguments are:\n *\n * localDoc: string\n * This is for the local doc that gets saved in order to track the\n * \"dependent\" DBs and clean them up for viewCleanup. It should be\n * unique, so that indexer plugins don't collide with each other.\n * mapper: function (mapFunDef, emit)\n * Returns a map function based on the mapFunDef, which in the case of\n * normal map/reduce is just the de-stringified function, but may be\n * something else, such as an object in the case of pouchdb-find.\n * reducer: function (reduceFunDef)\n * Ditto, but for reducing. Modules don't have to support reducing\n * (e.g. pouchdb-find).\n * ddocValidator: function (ddoc, viewName)\n * Throws an error if the ddoc or viewName is not valid.\n * This could be a way to communicate to the user that the configuration for the\n * indexer is invalid.\n */\nfunction createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator) {\n\n function tryMap(db, fun, doc) {\n // emit an event if there was an error thrown by a map function.\n // putting try/catches in a single function also avoids deoptimizations.\n try {\n fun(doc);\n } catch (e) {\n emitError(db, e);\n }\n }\n\n function tryReduce(db, fun, keys, values, rereduce) {\n // same as above, but returning the result or an error. there are two separate\n // functions to avoid extra memory allocations since the tryCode() case is used\n // for custom map functions (common) vs this function, which is only used for\n // custom reduce functions (rare)\n try {\n return {output : fun(keys, values, rereduce)};\n } catch (e) {\n emitError(db, e);\n return {error: e};\n }\n }\n\n function sortByKeyThenValue(x, y) {\n var keyCompare = collate(x.key, y.key);\n return keyCompare !== 0 ? keyCompare : collate(x.value, y.value);\n }\n\n function sliceResults(results, limit, skip) {\n skip = skip || 0;\n if (typeof limit === 'number') {\n return results.slice(skip, limit + skip);\n } else if (skip > 0) {\n return results.slice(skip);\n }\n return results;\n }\n\n function rowToDocId(row) {\n var val = row.value;\n // Users can explicitly specify a joined doc _id, or it\n // defaults to the doc _id that emitted the key/value.\n var docId = (val && typeof val === 'object' && val._id) || row.id;\n return docId;\n }\n\n function readAttachmentsAsBlobOrBuffer(res) {\n res.rows.forEach(function (row) {\n var atts = row.doc && row.doc._attachments;\n if (!atts) {\n return;\n }\n Object.keys(atts).forEach(function (filename) {\n var att = atts[filename];\n atts[filename].data = b64ToBluffer(att.data, att.content_type);\n });\n });\n }\n\n function postprocessAttachments(opts) {\n return function (res) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n readAttachmentsAsBlobOrBuffer(res);\n }\n return res;\n };\n }\n\n function addHttpParam(paramName, opts, params, asJson) {\n // add an http param from opts to params, optionally json-encoded\n var val = opts[paramName];\n if (typeof val !== 'undefined') {\n if (asJson) {\n val = encodeURIComponent(JSON.stringify(val));\n }\n params.push(paramName + '=' + val);\n }\n }\n\n function coerceInteger(integerCandidate) {\n if (typeof integerCandidate !== 'undefined') {\n var asNumber = Number(integerCandidate);\n // prevents e.g. '1foo' or '1.1' being coerced to 1\n if (!isNaN(asNumber) && asNumber === parseInt(integerCandidate, 10)) {\n return asNumber;\n } else {\n return integerCandidate;\n }\n }\n }\n\n function coerceOptions(opts) {\n opts.group_level = coerceInteger(opts.group_level);\n opts.limit = coerceInteger(opts.limit);\n opts.skip = coerceInteger(opts.skip);\n return opts;\n }\n\n function checkPositiveInteger(number) {\n if (number) {\n if (typeof number !== 'number') {\n return new QueryParseError('Invalid value for integer: \"' +\n number + '\"');\n }\n if (number < 0) {\n return new QueryParseError('Invalid value for positive integer: ' +\n '\"' + number + '\"');\n }\n }\n }\n\n function checkQueryParseError(options, fun) {\n var startkeyName = options.descending ? 'endkey' : 'startkey';\n var endkeyName = options.descending ? 'startkey' : 'endkey';\n\n if (typeof options[startkeyName] !== 'undefined' &&\n typeof options[endkeyName] !== 'undefined' &&\n collate(options[startkeyName], options[endkeyName]) > 0) {\n throw new QueryParseError('No rows can match your key range, ' +\n 'reverse your start_key and end_key or set {descending : true}');\n } else if (fun.reduce && options.reduce !== false) {\n if (options.include_docs) {\n throw new QueryParseError('{include_docs:true} is invalid for reduce');\n } else if (options.keys && options.keys.length > 1 &&\n !options.group && !options.group_level) {\n throw new QueryParseError('Multi-key fetches for reduce views must use ' +\n '{group: true}');\n }\n }\n ['group_level', 'limit', 'skip'].forEach(function (optionName) {\n var error = checkPositiveInteger(options[optionName]);\n if (error) {\n throw error;\n }\n });\n }\n\n function httpQuery(db, fun, opts) {\n // List of parameters to add to the PUT request\n var params = [];\n var body;\n var method = 'GET';\n var ok, status;\n\n // If opts.reduce exists and is defined, then add it to the list\n // of parameters.\n // If reduce=false then the results are that of only the map function\n // not the final result of map and reduce.\n addHttpParam('reduce', opts, params);\n addHttpParam('include_docs', opts, params);\n addHttpParam('attachments', opts, params);\n addHttpParam('limit', opts, params);\n addHttpParam('descending', opts, params);\n addHttpParam('group', opts, params);\n addHttpParam('group_level', opts, params);\n addHttpParam('skip', opts, params);\n addHttpParam('stale', opts, params);\n addHttpParam('conflicts', opts, params);\n addHttpParam('startkey', opts, params, true);\n addHttpParam('start_key', opts, params, true);\n addHttpParam('endkey', opts, params, true);\n addHttpParam('end_key', opts, params, true);\n addHttpParam('inclusive_end', opts, params);\n addHttpParam('key', opts, params, true);\n addHttpParam('update_seq', opts, params);\n\n // Format the list of parameters into a valid URI query string\n params = params.join('&');\n params = params === '' ? '' : '?' + params;\n\n // If keys are supplied, issue a POST to circumvent GET query string limits\n // see http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options\n if (typeof opts.keys !== 'undefined') {\n var MAX_URL_LENGTH = 2000;\n // according to http://stackoverflow.com/a/417184/680742,\n // the de facto URL length limit is 2000 characters\n\n var keysAsString =\n 'keys=' + encodeURIComponent(JSON.stringify(opts.keys));\n if (keysAsString.length + params.length + 1 <= MAX_URL_LENGTH) {\n // If the keys are short enough, do a GET. we do this to work around\n // Safari not understanding 304s on POSTs (see pouchdb/pouchdb#1239)\n params += (params[0] === '?' ? '&' : '?') + keysAsString;\n } else {\n method = 'POST';\n if (typeof fun === 'string') {\n body = {keys: opts.keys};\n } else { // fun is {map : mapfun}, so append to this\n fun.keys = opts.keys;\n }\n }\n }\n\n // We are referencing a query defined in the design doc\n if (typeof fun === 'string') {\n var parts = parseViewName(fun);\n return db.fetch('_design/' + parts[0] + '/_view/' + parts[1] + params, {\n headers: new h({'Content-Type': 'application/json'}),\n method: method,\n body: JSON.stringify(body)\n }).then(function (response) {\n ok = response.ok;\n status = response.status;\n return response.json();\n }).then(function (result) {\n if (!ok) {\n result.status = status;\n throw generateErrorFromResponse(result);\n }\n // fail the entire request if the result contains an error\n result.rows.forEach(function (row) {\n /* istanbul ignore if */\n if (row.value && row.value.error && row.value.error === \"builtin_reduce_error\") {\n throw new Error(row.reason);\n }\n });\n return result;\n }).then(postprocessAttachments(opts));\n }\n\n // We are using a temporary view, terrible for performance, good for testing\n body = body || {};\n Object.keys(fun).forEach(function (key) {\n if (Array.isArray(fun[key])) {\n body[key] = fun[key];\n } else {\n body[key] = fun[key].toString();\n }\n });\n\n return db.fetch('_temp_view' + params, {\n headers: new h({'Content-Type': 'application/json'}),\n method: 'POST',\n body: JSON.stringify(body)\n }).then(function (response) {\n ok = response.ok;\n status = response.status;\n return response.json();\n }).then(function (result) {\n if (!ok) {\n result.status = status;\n throw generateErrorFromResponse(result);\n }\n return result;\n }).then(postprocessAttachments(opts));\n }\n\n // custom adapters can define their own api._query\n // and override the default behavior\n /* istanbul ignore next */\n function customQuery(db, fun, opts) {\n return new Promise(function (resolve, reject) {\n db._query(fun, opts, function (err, res) {\n if (err) {\n return reject(err);\n }\n resolve(res);\n });\n });\n }\n\n // custom adapters can define their own api._viewCleanup\n // and override the default behavior\n /* istanbul ignore next */\n function customViewCleanup(db) {\n return new Promise(function (resolve, reject) {\n db._viewCleanup(function (err, res) {\n if (err) {\n return reject(err);\n }\n resolve(res);\n });\n });\n }\n\n function defaultsTo(value) {\n return function (reason) {\n /* istanbul ignore else */\n if (reason.status === 404) {\n return value;\n } else {\n throw reason;\n }\n };\n }\n\n // returns a promise for a list of docs to update, based on the input docId.\n // the order doesn't matter, because post-3.2.0, bulkDocs\n // is an atomic operation in all three adapters.\n function getDocsToPersist(docId, view, docIdsToChangesAndEmits) {\n var metaDocId = '_local/doc_' + docId;\n var defaultMetaDoc = {_id: metaDocId, keys: []};\n var docData = docIdsToChangesAndEmits.get(docId);\n var indexableKeysToKeyValues = docData[0];\n var changes = docData[1];\n\n function getMetaDoc() {\n if (isGenOne(changes)) {\n // generation 1, so we can safely assume initial state\n // for performance reasons (avoids unnecessary GETs)\n return Promise.resolve(defaultMetaDoc);\n }\n return view.db.get(metaDocId).catch(defaultsTo(defaultMetaDoc));\n }\n\n function getKeyValueDocs(metaDoc) {\n if (!metaDoc.keys.length) {\n // no keys, no need for a lookup\n return Promise.resolve({rows: []});\n }\n return view.db.allDocs({\n keys: metaDoc.keys,\n include_docs: true\n });\n }\n\n function processKeyValueDocs(metaDoc, kvDocsRes) {\n var kvDocs = [];\n var oldKeys = new ExportedSet();\n\n for (var i = 0, len = kvDocsRes.rows.length; i < len; i++) {\n var row = kvDocsRes.rows[i];\n var doc = row.doc;\n if (!doc) { // deleted\n continue;\n }\n kvDocs.push(doc);\n oldKeys.add(doc._id);\n doc._deleted = !indexableKeysToKeyValues.has(doc._id);\n if (!doc._deleted) {\n var keyValue = indexableKeysToKeyValues.get(doc._id);\n if ('value' in keyValue) {\n doc.value = keyValue.value;\n }\n }\n }\n var newKeys = mapToKeysArray(indexableKeysToKeyValues);\n newKeys.forEach(function (key) {\n if (!oldKeys.has(key)) {\n // new doc\n var kvDoc = {\n _id: key\n };\n var keyValue = indexableKeysToKeyValues.get(key);\n if ('value' in keyValue) {\n kvDoc.value = keyValue.value;\n }\n kvDocs.push(kvDoc);\n }\n });\n metaDoc.keys = uniq(newKeys.concat(metaDoc.keys));\n kvDocs.push(metaDoc);\n\n return kvDocs;\n }\n\n return getMetaDoc().then(function (metaDoc) {\n return getKeyValueDocs(metaDoc).then(function (kvDocsRes) {\n return processKeyValueDocs(metaDoc, kvDocsRes);\n });\n });\n }\n\n // updates all emitted key/value docs and metaDocs in the mrview database\n // for the given batch of documents from the source database\n function saveKeyValues(view, docIdsToChangesAndEmits, seq) {\n var seqDocId = '_local/lastSeq';\n return view.db.get(seqDocId)\n .catch(defaultsTo({_id: seqDocId, seq: 0}))\n .then(function (lastSeqDoc) {\n var docIds = mapToKeysArray(docIdsToChangesAndEmits);\n return Promise.all(docIds.map(function (docId) {\n return getDocsToPersist(docId, view, docIdsToChangesAndEmits);\n })).then(function (listOfDocsToPersist) {\n var docsToPersist = flatten(listOfDocsToPersist);\n lastSeqDoc.seq = seq;\n docsToPersist.push(lastSeqDoc);\n // write all docs in a single operation, update the seq once\n return view.db.bulkDocs({docs : docsToPersist});\n });\n });\n }\n\n function getQueue(view) {\n var viewName = typeof view === 'string' ? view : view.name;\n var queue = persistentQueues[viewName];\n if (!queue) {\n queue = persistentQueues[viewName] = new TaskQueue$1();\n }\n return queue;\n }\n\n function updateView(view) {\n return sequentialize(getQueue(view), function () {\n return updateViewInQueue(view);\n })();\n }\n\n function updateViewInQueue(view) {\n // bind the emit function once\n var mapResults;\n var doc;\n\n function emit(key, value) {\n var output = {id: doc._id, key: normalizeKey(key)};\n // Don't explicitly store the value unless it's defined and non-null.\n // This saves on storage space, because often people don't use it.\n if (typeof value !== 'undefined' && value !== null) {\n output.value = normalizeKey(value);\n }\n mapResults.push(output);\n }\n\n var mapFun = mapper(view.mapFun, emit);\n\n var currentSeq = view.seq || 0;\n\n function processChange(docIdsToChangesAndEmits, seq) {\n return function () {\n return saveKeyValues(view, docIdsToChangesAndEmits, seq);\n };\n }\n\n var queue = new TaskQueue$1();\n\n function processNextBatch() {\n return view.sourceDB.changes({\n return_docs: true,\n conflicts: true,\n include_docs: true,\n style: 'all_docs',\n since: currentSeq,\n limit: CHANGES_BATCH_SIZE$1\n }).then(processBatch);\n }\n\n function processBatch(response) {\n var results = response.results;\n if (!results.length) {\n return;\n }\n var docIdsToChangesAndEmits = createDocIdsToChangesAndEmits(results);\n queue.add(processChange(docIdsToChangesAndEmits, currentSeq));\n if (results.length < CHANGES_BATCH_SIZE$1) {\n return;\n }\n return processNextBatch();\n }\n\n function createDocIdsToChangesAndEmits(results) {\n var docIdsToChangesAndEmits = new ExportedMap();\n for (var i = 0, len = results.length; i < len; i++) {\n var change = results[i];\n if (change.doc._id[0] !== '_') {\n mapResults = [];\n doc = change.doc;\n\n if (!doc._deleted) {\n tryMap(view.sourceDB, mapFun, doc);\n }\n mapResults.sort(sortByKeyThenValue);\n\n var indexableKeysToKeyValues = createIndexableKeysToKeyValues(mapResults);\n docIdsToChangesAndEmits.set(change.doc._id, [\n indexableKeysToKeyValues,\n change.changes\n ]);\n }\n currentSeq = change.seq;\n }\n return docIdsToChangesAndEmits;\n }\n\n function createIndexableKeysToKeyValues(mapResults) {\n var indexableKeysToKeyValues = new ExportedMap();\n var lastKey;\n for (var i = 0, len = mapResults.length; i < len; i++) {\n var emittedKeyValue = mapResults[i];\n var complexKey = [emittedKeyValue.key, emittedKeyValue.id];\n if (i > 0 && collate(emittedKeyValue.key, lastKey) === 0) {\n complexKey.push(i); // dup key+id, so make it unique\n }\n indexableKeysToKeyValues.set(toIndexableString(complexKey), emittedKeyValue);\n lastKey = emittedKeyValue.key;\n }\n return indexableKeysToKeyValues;\n }\n\n return processNextBatch().then(function () {\n return queue.finish();\n }).then(function () {\n view.seq = currentSeq;\n });\n }\n\n function reduceView(view, results, options) {\n if (options.group_level === 0) {\n delete options.group_level;\n }\n\n var shouldGroup = options.group || options.group_level;\n\n var reduceFun = reducer(view.reduceFun);\n\n var groups = [];\n var lvl = isNaN(options.group_level) ? Number.POSITIVE_INFINITY :\n options.group_level;\n results.forEach(function (e) {\n var last = groups[groups.length - 1];\n var groupKey = shouldGroup ? e.key : null;\n\n // only set group_level for array keys\n if (shouldGroup && Array.isArray(groupKey)) {\n groupKey = groupKey.slice(0, lvl);\n }\n\n if (last && collate(last.groupKey, groupKey) === 0) {\n last.keys.push([e.key, e.id]);\n last.values.push(e.value);\n return;\n }\n groups.push({\n keys: [[e.key, e.id]],\n values: [e.value],\n groupKey: groupKey\n });\n });\n results = [];\n for (var i = 0, len = groups.length; i < len; i++) {\n var e = groups[i];\n var reduceTry = tryReduce(view.sourceDB, reduceFun, e.keys, e.values, false);\n if (reduceTry.error && reduceTry.error instanceof BuiltInError) {\n // CouchDB returns an error if a built-in errors out\n throw reduceTry.error;\n }\n results.push({\n // CouchDB just sets the value to null if a non-built-in errors out\n value: reduceTry.error ? null : reduceTry.output,\n key: e.groupKey\n });\n }\n // no total_rows/offset when reducing\n return {rows: sliceResults(results, options.limit, options.skip)};\n }\n\n function queryView(view, opts) {\n return sequentialize(getQueue(view), function () {\n return queryViewInQueue(view, opts);\n })();\n }\n\n function queryViewInQueue(view, opts) {\n var totalRows;\n var shouldReduce = view.reduceFun && opts.reduce !== false;\n var skip = opts.skip || 0;\n if (typeof opts.keys !== 'undefined' && !opts.keys.length) {\n // equivalent query\n opts.limit = 0;\n delete opts.keys;\n }\n\n function fetchFromView(viewOpts) {\n viewOpts.include_docs = true;\n return view.db.allDocs(viewOpts).then(function (res) {\n totalRows = res.total_rows;\n return res.rows.map(function (result) {\n\n // implicit migration - in older versions of PouchDB,\n // we explicitly stored the doc as {id: ..., key: ..., value: ...}\n // this is tested in a migration test\n /* istanbul ignore next */\n if ('value' in result.doc && typeof result.doc.value === 'object' &&\n result.doc.value !== null) {\n var keys = Object.keys(result.doc.value).sort();\n // this detection method is not perfect, but it's unlikely the user\n // emitted a value which was an object with these 3 exact keys\n var expectedKeys = ['id', 'key', 'value'];\n if (!(keys < expectedKeys || keys > expectedKeys)) {\n return result.doc.value;\n }\n }\n\n var parsedKeyAndDocId = parseIndexableString(result.doc._id);\n return {\n key: parsedKeyAndDocId[0],\n id: parsedKeyAndDocId[1],\n value: ('value' in result.doc ? result.doc.value : null)\n };\n });\n });\n }\n\n function onMapResultsReady(rows) {\n var finalResults;\n if (shouldReduce) {\n finalResults = reduceView(view, rows, opts);\n } else {\n finalResults = {\n total_rows: totalRows,\n offset: skip,\n rows: rows\n };\n }\n /* istanbul ignore if */\n if (opts.update_seq) {\n finalResults.update_seq = view.seq;\n }\n if (opts.include_docs) {\n var docIds = uniq(rows.map(rowToDocId));\n\n return view.sourceDB.allDocs({\n keys: docIds,\n include_docs: true,\n conflicts: opts.conflicts,\n attachments: opts.attachments,\n binary: opts.binary\n }).then(function (allDocsRes) {\n var docIdsToDocs = new ExportedMap();\n allDocsRes.rows.forEach(function (row) {\n docIdsToDocs.set(row.id, row.doc);\n });\n rows.forEach(function (row) {\n var docId = rowToDocId(row);\n var doc = docIdsToDocs.get(docId);\n if (doc) {\n row.doc = doc;\n }\n });\n return finalResults;\n });\n } else {\n return finalResults;\n }\n }\n\n if (typeof opts.keys !== 'undefined') {\n var keys = opts.keys;\n var fetchPromises = keys.map(function (key) {\n var viewOpts = {\n startkey : toIndexableString([key]),\n endkey : toIndexableString([key, {}])\n };\n /* istanbul ignore if */\n if (opts.update_seq) {\n viewOpts.update_seq = true;\n }\n return fetchFromView(viewOpts);\n });\n return Promise.all(fetchPromises).then(flatten).then(onMapResultsReady);\n } else { // normal query, no 'keys'\n var viewOpts = {\n descending : opts.descending\n };\n /* istanbul ignore if */\n if (opts.update_seq) {\n viewOpts.update_seq = true;\n }\n var startkey;\n var endkey;\n if ('start_key' in opts) {\n startkey = opts.start_key;\n }\n if ('startkey' in opts) {\n startkey = opts.startkey;\n }\n if ('end_key' in opts) {\n endkey = opts.end_key;\n }\n if ('endkey' in opts) {\n endkey = opts.endkey;\n }\n if (typeof startkey !== 'undefined') {\n viewOpts.startkey = opts.descending ?\n toIndexableString([startkey, {}]) :\n toIndexableString([startkey]);\n }\n if (typeof endkey !== 'undefined') {\n var inclusiveEnd = opts.inclusive_end !== false;\n if (opts.descending) {\n inclusiveEnd = !inclusiveEnd;\n }\n\n viewOpts.endkey = toIndexableString(\n inclusiveEnd ? [endkey, {}] : [endkey]);\n }\n if (typeof opts.key !== 'undefined') {\n var keyStart = toIndexableString([opts.key]);\n var keyEnd = toIndexableString([opts.key, {}]);\n if (viewOpts.descending) {\n viewOpts.endkey = keyStart;\n viewOpts.startkey = keyEnd;\n } else {\n viewOpts.startkey = keyStart;\n viewOpts.endkey = keyEnd;\n }\n }\n if (!shouldReduce) {\n if (typeof opts.limit === 'number') {\n viewOpts.limit = opts.limit;\n }\n viewOpts.skip = skip;\n }\n return fetchFromView(viewOpts).then(onMapResultsReady);\n }\n }\n\n function httpViewCleanup(db) {\n return db.fetch('_view_cleanup', {\n headers: new h({'Content-Type': 'application/json'}),\n method: 'POST'\n }).then(function (response) {\n return response.json();\n });\n }\n\n function localViewCleanup(db) {\n return db.get('_local/' + localDocName).then(function (metaDoc) {\n var docsToViews = new ExportedMap();\n Object.keys(metaDoc.views).forEach(function (fullViewName) {\n var parts = parseViewName(fullViewName);\n var designDocName = '_design/' + parts[0];\n var viewName = parts[1];\n var views = docsToViews.get(designDocName);\n if (!views) {\n views = new ExportedSet();\n docsToViews.set(designDocName, views);\n }\n views.add(viewName);\n });\n var opts = {\n keys : mapToKeysArray(docsToViews),\n include_docs : true\n };\n return db.allDocs(opts).then(function (res) {\n var viewsToStatus = {};\n res.rows.forEach(function (row) {\n var ddocName = row.key.substring(8); // cuts off '_design/'\n docsToViews.get(row.key).forEach(function (viewName) {\n var fullViewName = ddocName + '/' + viewName;\n /* istanbul ignore if */\n if (!metaDoc.views[fullViewName]) {\n // new format, without slashes, to support PouchDB 2.2.0\n // migration test in pouchdb's browser.migration.js verifies this\n fullViewName = viewName;\n }\n var viewDBNames = Object.keys(metaDoc.views[fullViewName]);\n // design doc deleted, or view function nonexistent\n var statusIsGood = row.doc && row.doc.views &&\n row.doc.views[viewName];\n viewDBNames.forEach(function (viewDBName) {\n viewsToStatus[viewDBName] =\n viewsToStatus[viewDBName] || statusIsGood;\n });\n });\n });\n var dbsToDelete = Object.keys(viewsToStatus).filter(\n function (viewDBName) { return !viewsToStatus[viewDBName]; });\n var destroyPromises = dbsToDelete.map(function (viewDBName) {\n return sequentialize(getQueue(viewDBName), function () {\n return new db.constructor(viewDBName, db.__opts).destroy();\n })();\n });\n return Promise.all(destroyPromises).then(function () {\n return {ok: true};\n });\n });\n }, defaultsTo({ok: true}));\n }\n\n function queryPromised(db, fun, opts) {\n /* istanbul ignore next */\n if (typeof db._query === 'function') {\n return customQuery(db, fun, opts);\n }\n if (isRemote(db)) {\n return httpQuery(db, fun, opts);\n }\n\n if (typeof fun !== 'string') {\n // temp_view\n checkQueryParseError(opts, fun);\n\n tempViewQueue.add(function () {\n var createViewPromise = createView(\n /* sourceDB */ db,\n /* viewName */ 'temp_view/temp_view',\n /* mapFun */ fun.map,\n /* reduceFun */ fun.reduce,\n /* temporary */ true,\n /* localDocName */ localDocName);\n return createViewPromise.then(function (view) {\n return fin(updateView(view).then(function () {\n return queryView(view, opts);\n }), function () {\n return view.db.destroy();\n });\n });\n });\n return tempViewQueue.finish();\n } else {\n // persistent view\n var fullViewName = fun;\n var parts = parseViewName(fullViewName);\n var designDocName = parts[0];\n var viewName = parts[1];\n return db.get('_design/' + designDocName).then(function (doc) {\n var fun = doc.views && doc.views[viewName];\n\n if (!fun) {\n // basic validator; it's assumed that every subclass would want this\n throw new NotFoundError('ddoc ' + doc._id + ' has no view named ' +\n viewName);\n }\n\n ddocValidator(doc, viewName);\n checkQueryParseError(opts, fun);\n\n var createViewPromise = createView(\n /* sourceDB */ db,\n /* viewName */ fullViewName,\n /* mapFun */ fun.map,\n /* reduceFun */ fun.reduce,\n /* temporary */ false,\n /* localDocName */ localDocName);\n return createViewPromise.then(function (view) {\n if (opts.stale === 'ok' || opts.stale === 'update_after') {\n if (opts.stale === 'update_after') {\n immediate(function () {\n updateView(view);\n });\n }\n return queryView(view, opts);\n } else { // stale not ok\n return updateView(view).then(function () {\n return queryView(view, opts);\n });\n }\n });\n });\n }\n }\n\n function abstractQuery(fun, opts, callback) {\n var db = this;\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = opts ? coerceOptions(opts) : {};\n\n if (typeof fun === 'function') {\n fun = {map : fun};\n }\n\n var promise = Promise.resolve().then(function () {\n return queryPromised(db, fun, opts);\n });\n promisedCallback(promise, callback);\n return promise;\n }\n\n var abstractViewCleanup = callbackify(function () {\n var db = this;\n /* istanbul ignore next */\n if (typeof db._viewCleanup === 'function') {\n return customViewCleanup(db);\n }\n if (isRemote(db)) {\n return httpViewCleanup(db);\n }\n return localViewCleanup(db);\n });\n\n return {\n query: abstractQuery,\n viewCleanup: abstractViewCleanup\n };\n}\n\nvar builtInReduce = {\n _sum: function (keys, values) {\n return sum(values);\n },\n\n _count: function (keys, values) {\n return values.length;\n },\n\n _stats: function (keys, values) {\n // no need to implement rereduce=true, because Pouch\n // will never call it\n function sumsqr(values) {\n var _sumsqr = 0;\n for (var i = 0, len = values.length; i < len; i++) {\n var num = values[i];\n _sumsqr += (num * num);\n }\n return _sumsqr;\n }\n return {\n sum : sum(values),\n min : Math.min.apply(null, values),\n max : Math.max.apply(null, values),\n count : values.length,\n sumsqr : sumsqr(values)\n };\n }\n};\n\nfunction getBuiltIn(reduceFunString) {\n if (/^_sum/.test(reduceFunString)) {\n return builtInReduce._sum;\n } else if (/^_count/.test(reduceFunString)) {\n return builtInReduce._count;\n } else if (/^_stats/.test(reduceFunString)) {\n return builtInReduce._stats;\n } else if (/^_/.test(reduceFunString)) {\n throw new Error(reduceFunString + ' is not a supported reduce function.');\n }\n}\n\nfunction mapper(mapFun, emit) {\n // for temp_views one can use emit(doc, emit), see #38\n if (typeof mapFun === \"function\" && mapFun.length === 2) {\n var origMap = mapFun;\n return function (doc) {\n return origMap(doc, emit);\n };\n } else {\n return evalFunctionWithEval(mapFun.toString(), emit);\n }\n}\n\nfunction reducer(reduceFun) {\n var reduceFunString = reduceFun.toString();\n var builtIn = getBuiltIn(reduceFunString);\n if (builtIn) {\n return builtIn;\n } else {\n return evalFunctionWithEval(reduceFunString);\n }\n}\n\nfunction ddocValidator(ddoc, viewName) {\n var fun = ddoc.views && ddoc.views[viewName];\n if (typeof fun.map !== 'string') {\n throw new NotFoundError('ddoc ' + ddoc._id + ' has no string view named ' +\n viewName + ', instead found object of type: ' + typeof fun.map);\n }\n}\n\nvar localDocName = 'mrviews';\nvar abstract = createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator);\n\nfunction query(fun, opts, callback) {\n return abstract.query.call(this, fun, opts, callback);\n}\n\nfunction viewCleanup(callback) {\n return abstract.viewCleanup.call(this, callback);\n}\n\nvar mapreduce = {\n query: query,\n viewCleanup: viewCleanup\n};\n\nfunction isGenOne$1(rev$$1) {\n return /^1-/.test(rev$$1);\n}\n\nfunction fileHasChanged(localDoc, remoteDoc, filename) {\n return !localDoc._attachments ||\n !localDoc._attachments[filename] ||\n localDoc._attachments[filename].digest !== remoteDoc._attachments[filename].digest;\n}\n\nfunction getDocAttachments(db, doc) {\n var filenames = Object.keys(doc._attachments);\n return Promise.all(filenames.map(function (filename) {\n return db.getAttachment(doc._id, filename, {rev: doc._rev});\n }));\n}\n\nfunction getDocAttachmentsFromTargetOrSource(target, src, doc) {\n var doCheckForLocalAttachments = isRemote(src) && !isRemote(target);\n var filenames = Object.keys(doc._attachments);\n\n if (!doCheckForLocalAttachments) {\n return getDocAttachments(src, doc);\n }\n\n return target.get(doc._id).then(function (localDoc) {\n return Promise.all(filenames.map(function (filename) {\n if (fileHasChanged(localDoc, doc, filename)) {\n return src.getAttachment(doc._id, filename);\n }\n\n return target.getAttachment(localDoc._id, filename);\n }));\n }).catch(function (error) {\n /* istanbul ignore if */\n if (error.status !== 404) {\n throw error;\n }\n\n return getDocAttachments(src, doc);\n });\n}\n\nfunction createBulkGetOpts(diffs) {\n var requests = [];\n Object.keys(diffs).forEach(function (id) {\n var missingRevs = diffs[id].missing;\n missingRevs.forEach(function (missingRev) {\n requests.push({\n id: id,\n rev: missingRev\n });\n });\n });\n\n return {\n docs: requests,\n revs: true,\n latest: true\n };\n}\n\n//\n// Fetch all the documents from the src as described in the \"diffs\",\n// which is a mapping of docs IDs to revisions. If the state ever\n// changes to \"cancelled\", then the returned promise will be rejected.\n// Else it will be resolved with a list of fetched documents.\n//\nfunction getDocs(src, target, diffs, state) {\n diffs = clone(diffs); // we do not need to modify this\n\n var resultDocs = [],\n ok = true;\n\n function getAllDocs() {\n\n var bulkGetOpts = createBulkGetOpts(diffs);\n\n if (!bulkGetOpts.docs.length) { // optimization: skip empty requests\n return;\n }\n\n return src.bulkGet(bulkGetOpts).then(function (bulkGetResponse) {\n /* istanbul ignore if */\n if (state.cancelled) {\n throw new Error('cancelled');\n }\n return Promise.all(bulkGetResponse.results.map(function (bulkGetInfo) {\n return Promise.all(bulkGetInfo.docs.map(function (doc) {\n var remoteDoc = doc.ok;\n\n if (doc.error) {\n // when AUTO_COMPACTION is set, docs can be returned which look\n // like this: {\"missing\":\"1-7c3ac256b693c462af8442f992b83696\"}\n ok = false;\n }\n\n if (!remoteDoc || !remoteDoc._attachments) {\n return remoteDoc;\n }\n\n return getDocAttachmentsFromTargetOrSource(target, src, remoteDoc)\n .then(function (attachments) {\n var filenames = Object.keys(remoteDoc._attachments);\n attachments\n .forEach(function (attachment, i) {\n var att = remoteDoc._attachments[filenames[i]];\n delete att.stub;\n delete att.length;\n att.data = attachment;\n });\n\n return remoteDoc;\n });\n }));\n }))\n\n .then(function (results) {\n resultDocs = resultDocs.concat(flatten(results).filter(Boolean));\n });\n });\n }\n\n function hasAttachments(doc) {\n return doc._attachments && Object.keys(doc._attachments).length > 0;\n }\n\n function hasConflicts(doc) {\n return doc._conflicts && doc._conflicts.length > 0;\n }\n\n function fetchRevisionOneDocs(ids) {\n // Optimization: fetch gen-1 docs and attachments in\n // a single request using _all_docs\n return src.allDocs({\n keys: ids,\n include_docs: true,\n conflicts: true\n }).then(function (res) {\n if (state.cancelled) {\n throw new Error('cancelled');\n }\n res.rows.forEach(function (row) {\n if (row.deleted || !row.doc || !isGenOne$1(row.value.rev) ||\n hasAttachments(row.doc) || hasConflicts(row.doc)) {\n // if any of these conditions apply, we need to fetch using get()\n return;\n }\n\n // strip _conflicts array to appease CSG (#5793)\n /* istanbul ignore if */\n if (row.doc._conflicts) {\n delete row.doc._conflicts;\n }\n\n // the doc we got back from allDocs() is sufficient\n resultDocs.push(row.doc);\n delete diffs[row.id];\n });\n });\n }\n\n function getRevisionOneDocs() {\n // filter out the generation 1 docs and get them\n // leaving the non-generation one docs to be got otherwise\n var ids = Object.keys(diffs).filter(function (id) {\n var missing = diffs[id].missing;\n return missing.length === 1 && isGenOne$1(missing[0]);\n });\n if (ids.length > 0) {\n return fetchRevisionOneDocs(ids);\n }\n }\n\n function returnResult() {\n return { ok:ok, docs:resultDocs };\n }\n\n return Promise.resolve()\n .then(getRevisionOneDocs)\n .then(getAllDocs)\n .then(returnResult);\n}\n\nvar CHECKPOINT_VERSION = 1;\nvar REPLICATOR = \"pouchdb\";\n// This is an arbitrary number to limit the\n// amount of replication history we save in the checkpoint.\n// If we save too much, the checkpoing docs will become very big,\n// if we save fewer, we'll run a greater risk of having to\n// read all the changes from 0 when checkpoint PUTs fail\n// CouchDB 2.0 has a more involved history pruning,\n// but let's go for the simple version for now.\nvar CHECKPOINT_HISTORY_SIZE = 5;\nvar LOWEST_SEQ = 0;\n\nfunction updateCheckpoint(db, id, checkpoint, session, returnValue) {\n return db.get(id).catch(function (err) {\n if (err.status === 404) {\n if (db.adapter === 'http' || db.adapter === 'https') {\n explainError(\n 404, 'PouchDB is just checking if a remote checkpoint exists.'\n );\n }\n return {\n session_id: session,\n _id: id,\n history: [],\n replicator: REPLICATOR,\n version: CHECKPOINT_VERSION\n };\n }\n throw err;\n }).then(function (doc) {\n if (returnValue.cancelled) {\n return;\n }\n\n // if the checkpoint has not changed, do not update\n if (doc.last_seq === checkpoint) {\n return;\n }\n\n // Filter out current entry for this replication\n doc.history = (doc.history || []).filter(function (item) {\n return item.session_id !== session;\n });\n\n // Add the latest checkpoint to history\n doc.history.unshift({\n last_seq: checkpoint,\n session_id: session\n });\n\n // Just take the last pieces in history, to\n // avoid really big checkpoint docs.\n // see comment on history size above\n doc.history = doc.history.slice(0, CHECKPOINT_HISTORY_SIZE);\n\n doc.version = CHECKPOINT_VERSION;\n doc.replicator = REPLICATOR;\n\n doc.session_id = session;\n doc.last_seq = checkpoint;\n\n return db.put(doc).catch(function (err) {\n if (err.status === 409) {\n // retry; someone is trying to write a checkpoint simultaneously\n return updateCheckpoint(db, id, checkpoint, session, returnValue);\n }\n throw err;\n });\n });\n}\n\nfunction Checkpointer(src, target, id, returnValue, opts) {\n this.src = src;\n this.target = target;\n this.id = id;\n this.returnValue = returnValue;\n this.opts = opts || {};\n}\n\nCheckpointer.prototype.writeCheckpoint = function (checkpoint, session) {\n var self = this;\n return this.updateTarget(checkpoint, session).then(function () {\n return self.updateSource(checkpoint, session);\n });\n};\n\nCheckpointer.prototype.updateTarget = function (checkpoint, session) {\n if (this.opts.writeTargetCheckpoint) {\n return updateCheckpoint(this.target, this.id, checkpoint,\n session, this.returnValue);\n } else {\n return Promise.resolve(true);\n }\n};\n\nCheckpointer.prototype.updateSource = function (checkpoint, session) {\n if (this.opts.writeSourceCheckpoint) {\n var self = this;\n return updateCheckpoint(this.src, this.id, checkpoint,\n session, this.returnValue)\n .catch(function (err) {\n if (isForbiddenError(err)) {\n self.opts.writeSourceCheckpoint = false;\n return true;\n }\n throw err;\n });\n } else {\n return Promise.resolve(true);\n }\n};\n\nvar comparisons = {\n \"undefined\": function (targetDoc, sourceDoc) {\n // This is the previous comparison function\n if (collate(targetDoc.last_seq, sourceDoc.last_seq) === 0) {\n return sourceDoc.last_seq;\n }\n /* istanbul ignore next */\n return 0;\n },\n \"1\": function (targetDoc, sourceDoc) {\n // This is the comparison function ported from CouchDB\n return compareReplicationLogs(sourceDoc, targetDoc).last_seq;\n }\n};\n\nCheckpointer.prototype.getCheckpoint = function () {\n var self = this;\n\n if (self.opts && self.opts.writeSourceCheckpoint && !self.opts.writeTargetCheckpoint) {\n return self.src.get(self.id).then(function (sourceDoc) {\n return sourceDoc.last_seq || LOWEST_SEQ;\n }).catch(function (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n throw err;\n }\n return LOWEST_SEQ;\n });\n }\n\n return self.target.get(self.id).then(function (targetDoc) {\n if (self.opts && self.opts.writeTargetCheckpoint && !self.opts.writeSourceCheckpoint) {\n return targetDoc.last_seq || LOWEST_SEQ;\n }\n\n return self.src.get(self.id).then(function (sourceDoc) {\n // Since we can't migrate an old version doc to a new one\n // (no session id), we just go with the lowest seq in this case\n /* istanbul ignore if */\n if (targetDoc.version !== sourceDoc.version) {\n return LOWEST_SEQ;\n }\n\n var version;\n if (targetDoc.version) {\n version = targetDoc.version.toString();\n } else {\n version = \"undefined\";\n }\n\n if (version in comparisons) {\n return comparisons[version](targetDoc, sourceDoc);\n }\n /* istanbul ignore next */\n return LOWEST_SEQ;\n }, function (err) {\n if (err.status === 404 && targetDoc.last_seq) {\n return self.src.put({\n _id: self.id,\n last_seq: LOWEST_SEQ\n }).then(function () {\n return LOWEST_SEQ;\n }, function (err) {\n if (isForbiddenError(err)) {\n self.opts.writeSourceCheckpoint = false;\n return targetDoc.last_seq;\n }\n /* istanbul ignore next */\n return LOWEST_SEQ;\n });\n }\n throw err;\n });\n }).catch(function (err) {\n if (err.status !== 404) {\n throw err;\n }\n return LOWEST_SEQ;\n });\n};\n// This checkpoint comparison is ported from CouchDBs source\n// they come from here:\n// https://github.com/apache/couchdb-couch-replicator/blob/master/src/couch_replicator.erl#L863-L906\n\nfunction compareReplicationLogs(srcDoc, tgtDoc) {\n if (srcDoc.session_id === tgtDoc.session_id) {\n return {\n last_seq: srcDoc.last_seq,\n history: srcDoc.history\n };\n }\n\n return compareReplicationHistory(srcDoc.history, tgtDoc.history);\n}\n\nfunction compareReplicationHistory(sourceHistory, targetHistory) {\n // the erlang loop via function arguments is not so easy to repeat in JS\n // therefore, doing this as recursion\n var S = sourceHistory[0];\n var sourceRest = sourceHistory.slice(1);\n var T = targetHistory[0];\n var targetRest = targetHistory.slice(1);\n\n if (!S || targetHistory.length === 0) {\n return {\n last_seq: LOWEST_SEQ,\n history: []\n };\n }\n\n var sourceId = S.session_id;\n /* istanbul ignore if */\n if (hasSessionId(sourceId, targetHistory)) {\n return {\n last_seq: S.last_seq,\n history: sourceHistory\n };\n }\n\n var targetId = T.session_id;\n if (hasSessionId(targetId, sourceRest)) {\n return {\n last_seq: T.last_seq,\n history: targetRest\n };\n }\n\n return compareReplicationHistory(sourceRest, targetRest);\n}\n\nfunction hasSessionId(sessionId, history) {\n var props = history[0];\n var rest = history.slice(1);\n\n if (!sessionId || history.length === 0) {\n return false;\n }\n\n if (sessionId === props.session_id) {\n return true;\n }\n\n return hasSessionId(sessionId, rest);\n}\n\nfunction isForbiddenError(err) {\n return typeof err.status === 'number' && Math.floor(err.status / 100) === 4;\n}\n\nvar STARTING_BACK_OFF = 0;\n\nfunction backOff(opts, returnValue, error, callback) {\n if (opts.retry === false) {\n returnValue.emit('error', error);\n returnValue.removeAllListeners();\n return;\n }\n /* istanbul ignore if */\n if (typeof opts.back_off_function !== 'function') {\n opts.back_off_function = defaultBackOff;\n }\n returnValue.emit('requestError', error);\n if (returnValue.state === 'active' || returnValue.state === 'pending') {\n returnValue.emit('paused', error);\n returnValue.state = 'stopped';\n var backOffSet = function backoffTimeSet() {\n opts.current_back_off = STARTING_BACK_OFF;\n };\n var removeBackOffSetter = function removeBackOffTimeSet() {\n returnValue.removeListener('active', backOffSet);\n };\n returnValue.once('paused', removeBackOffSetter);\n returnValue.once('active', backOffSet);\n }\n\n opts.current_back_off = opts.current_back_off || STARTING_BACK_OFF;\n opts.current_back_off = opts.back_off_function(opts.current_back_off);\n setTimeout(callback, opts.current_back_off);\n}\n\nfunction sortObjectPropertiesByKey(queryParams) {\n return Object.keys(queryParams).sort(collate).reduce(function (result, key) {\n result[key] = queryParams[key];\n return result;\n }, {});\n}\n\n// Generate a unique id particular to this replication.\n// Not guaranteed to align perfectly with CouchDB's rep ids.\nfunction generateReplicationId(src, target, opts) {\n var docIds = opts.doc_ids ? opts.doc_ids.sort(collate) : '';\n var filterFun = opts.filter ? opts.filter.toString() : '';\n var queryParams = '';\n var filterViewName = '';\n var selector = '';\n\n // possibility for checkpoints to be lost here as behaviour of\n // JSON.stringify is not stable (see #6226)\n /* istanbul ignore if */\n if (opts.selector) {\n selector = JSON.stringify(opts.selector);\n }\n\n if (opts.filter && opts.query_params) {\n queryParams = JSON.stringify(sortObjectPropertiesByKey(opts.query_params));\n }\n\n if (opts.filter && opts.filter === '_view') {\n filterViewName = opts.view.toString();\n }\n\n return Promise.all([src.id(), target.id()]).then(function (res) {\n var queryData = res[0] + res[1] + filterFun + filterViewName +\n queryParams + docIds + selector;\n return new Promise(function (resolve) {\n binaryMd5(queryData, resolve);\n });\n }).then(function (md5sum) {\n // can't use straight-up md5 alphabet, because\n // the char '/' is interpreted as being for attachments,\n // and + is also not url-safe\n md5sum = md5sum.replace(/\\//g, '.').replace(/\\+/g, '_');\n return '_local/' + md5sum;\n });\n}\n\nfunction replicate(src, target, opts, returnValue, result) {\n var batches = []; // list of batches to be processed\n var currentBatch; // the batch currently being processed\n var pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n }; // next batch, not yet ready to be processed\n var writingCheckpoint = false; // true while checkpoint is being written\n var changesCompleted = false; // true when all changes received\n var replicationCompleted = false; // true when replication has completed\n var last_seq = 0;\n var continuous = opts.continuous || opts.live || false;\n var batch_size = opts.batch_size || 100;\n var batches_limit = opts.batches_limit || 10;\n var changesPending = false; // true while src.changes is running\n var doc_ids = opts.doc_ids;\n var selector = opts.selector;\n var repId;\n var checkpointer;\n var changedDocs = [];\n // Like couchdb, every replication gets a unique session id\n var session = uuid();\n\n result = result || {\n ok: true,\n start_time: new Date().toISOString(),\n docs_read: 0,\n docs_written: 0,\n doc_write_failures: 0,\n errors: []\n };\n\n var changesOpts = {};\n returnValue.ready(src, target);\n\n function initCheckpointer() {\n if (checkpointer) {\n return Promise.resolve();\n }\n return generateReplicationId(src, target, opts).then(function (res) {\n repId = res;\n\n var checkpointOpts = {};\n if (opts.checkpoint === false) {\n checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: false };\n } else if (opts.checkpoint === 'source') {\n checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: false };\n } else if (opts.checkpoint === 'target') {\n checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: true };\n } else {\n checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: true };\n }\n\n checkpointer = new Checkpointer(src, target, repId, returnValue, checkpointOpts);\n });\n }\n\n function writeDocs() {\n changedDocs = [];\n\n if (currentBatch.docs.length === 0) {\n return;\n }\n var docs = currentBatch.docs;\n var bulkOpts = {timeout: opts.timeout};\n return target.bulkDocs({docs: docs, new_edits: false}, bulkOpts).then(function (res) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n\n // `res` doesn't include full documents (which live in `docs`), so we create a map of \n // (id -> error), and check for errors while iterating over `docs`\n var errorsById = Object.create(null);\n res.forEach(function (res) {\n if (res.error) {\n errorsById[res.id] = res;\n }\n });\n\n var errorsNo = Object.keys(errorsById).length;\n result.doc_write_failures += errorsNo;\n result.docs_written += docs.length - errorsNo;\n\n docs.forEach(function (doc) {\n var error = errorsById[doc._id];\n if (error) {\n result.errors.push(error);\n // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway)\n var errorName = (error.name || '').toLowerCase();\n if (errorName === 'unauthorized' || errorName === 'forbidden') {\n returnValue.emit('denied', clone(error));\n } else {\n throw error;\n }\n } else {\n changedDocs.push(doc);\n }\n });\n\n }, function (err) {\n result.doc_write_failures += docs.length;\n throw err;\n });\n }\n\n function finishBatch() {\n if (currentBatch.error) {\n throw new Error('There was a problem getting docs.');\n }\n result.last_seq = last_seq = currentBatch.seq;\n var outResult = clone(result);\n if (changedDocs.length) {\n outResult.docs = changedDocs;\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof currentBatch.pending === 'number') {\n outResult.pending = currentBatch.pending;\n delete currentBatch.pending;\n }\n returnValue.emit('change', outResult);\n }\n writingCheckpoint = true;\n return checkpointer.writeCheckpoint(currentBatch.seq,\n session).then(function () {\n writingCheckpoint = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n currentBatch = undefined;\n getChanges();\n }).catch(function (err) {\n onCheckpointError(err);\n throw err;\n });\n }\n\n function getDiffs() {\n var diff = {};\n currentBatch.changes.forEach(function (change) {\n // Couchbase Sync Gateway emits these, but we can ignore them\n /* istanbul ignore if */\n if (change.id === \"_user/\") {\n return;\n }\n diff[change.id] = change.changes.map(function (x) {\n return x.rev;\n });\n });\n return target.revsDiff(diff).then(function (diffs) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n // currentBatch.diffs elements are deleted as the documents are written\n currentBatch.diffs = diffs;\n });\n }\n\n function getBatchDocs() {\n return getDocs(src, target, currentBatch.diffs, returnValue).then(function (got) {\n currentBatch.error = !got.ok;\n got.docs.forEach(function (doc) {\n delete currentBatch.diffs[doc._id];\n result.docs_read++;\n currentBatch.docs.push(doc);\n });\n });\n }\n\n function startNextBatch() {\n if (returnValue.cancelled || currentBatch) {\n return;\n }\n if (batches.length === 0) {\n processPendingBatch(true);\n return;\n }\n currentBatch = batches.shift();\n getDiffs()\n .then(getBatchDocs)\n .then(writeDocs)\n .then(finishBatch)\n .then(startNextBatch)\n .catch(function (err) {\n abortReplication('batch processing terminated with error', err);\n });\n }\n\n\n function processPendingBatch(immediate$$1) {\n if (pendingBatch.changes.length === 0) {\n if (batches.length === 0 && !currentBatch) {\n if ((continuous && changesOpts.live) || changesCompleted) {\n returnValue.state = 'pending';\n returnValue.emit('paused');\n }\n if (changesCompleted) {\n completeReplication();\n }\n }\n return;\n }\n if (\n immediate$$1 ||\n changesCompleted ||\n pendingBatch.changes.length >= batch_size\n ) {\n batches.push(pendingBatch);\n pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n };\n if (returnValue.state === 'pending' || returnValue.state === 'stopped') {\n returnValue.state = 'active';\n returnValue.emit('active');\n }\n startNextBatch();\n }\n }\n\n\n function abortReplication(reason, err) {\n if (replicationCompleted) {\n return;\n }\n if (!err.message) {\n err.message = reason;\n }\n result.ok = false;\n result.status = 'aborting';\n batches = [];\n pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n };\n completeReplication(err);\n }\n\n\n function completeReplication(fatalError) {\n if (replicationCompleted) {\n return;\n }\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n result.status = 'cancelled';\n if (writingCheckpoint) {\n return;\n }\n }\n result.status = result.status || 'complete';\n result.end_time = new Date().toISOString();\n result.last_seq = last_seq;\n replicationCompleted = true;\n\n if (fatalError) {\n // need to extend the error because Firefox considers \".result\" read-only\n fatalError = createError(fatalError);\n fatalError.result = result;\n\n // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway)\n var errorName = (fatalError.name || '').toLowerCase();\n if (errorName === 'unauthorized' || errorName === 'forbidden') {\n returnValue.emit('error', fatalError);\n returnValue.removeAllListeners();\n } else {\n backOff(opts, returnValue, fatalError, function () {\n replicate(src, target, opts, returnValue);\n });\n }\n } else {\n returnValue.emit('complete', result);\n returnValue.removeAllListeners();\n }\n }\n\n\n function onChange(change, pending, lastSeq) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof pending === 'number') {\n pendingBatch.pending = pending;\n }\n\n var filter = filterChange(opts)(change);\n if (!filter) {\n return;\n }\n pendingBatch.seq = change.seq || lastSeq;\n pendingBatch.changes.push(change);\n immediate(function () {\n processPendingBatch(batches.length === 0 && changesOpts.live);\n });\n }\n\n\n function onChangesComplete(changes) {\n changesPending = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n\n // if no results were returned then we're done,\n // else fetch more\n if (changes.results.length > 0) {\n changesOpts.since = changes.results[changes.results.length - 1].seq;\n getChanges();\n processPendingBatch(true);\n } else {\n\n var complete = function () {\n if (continuous) {\n changesOpts.live = true;\n getChanges();\n } else {\n changesCompleted = true;\n }\n processPendingBatch(true);\n };\n\n // update the checkpoint so we start from the right seq next time\n if (!currentBatch && changes.results.length === 0) {\n writingCheckpoint = true;\n checkpointer.writeCheckpoint(changes.last_seq,\n session).then(function () {\n writingCheckpoint = false;\n result.last_seq = last_seq = changes.last_seq;\n complete();\n })\n .catch(onCheckpointError);\n } else {\n complete();\n }\n }\n }\n\n\n function onChangesError(err) {\n changesPending = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n abortReplication('changes rejected', err);\n }\n\n\n function getChanges() {\n if (!(\n !changesPending &&\n !changesCompleted &&\n batches.length < batches_limit\n )) {\n return;\n }\n changesPending = true;\n function abortChanges() {\n changes.cancel();\n }\n function removeListener() {\n returnValue.removeListener('cancel', abortChanges);\n }\n\n if (returnValue._changes) { // remove old changes() and listeners\n returnValue.removeListener('cancel', returnValue._abortChanges);\n returnValue._changes.cancel();\n }\n returnValue.once('cancel', abortChanges);\n\n var changes = src.changes(changesOpts)\n .on('change', onChange);\n changes.then(removeListener, removeListener);\n changes.then(onChangesComplete)\n .catch(onChangesError);\n\n if (opts.retry) {\n // save for later so we can cancel if necessary\n returnValue._changes = changes;\n returnValue._abortChanges = abortChanges;\n }\n }\n\n\n function startChanges() {\n initCheckpointer().then(function () {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n return;\n }\n return checkpointer.getCheckpoint().then(function (checkpoint) {\n last_seq = checkpoint;\n changesOpts = {\n since: last_seq,\n limit: batch_size,\n batch_size: batch_size,\n style: 'all_docs',\n doc_ids: doc_ids,\n selector: selector,\n return_docs: true // required so we know when we're done\n };\n if (opts.filter) {\n if (typeof opts.filter !== 'string') {\n // required for the client-side filter in onChange\n changesOpts.include_docs = true;\n } else { // ddoc filter\n changesOpts.filter = opts.filter;\n }\n }\n if ('heartbeat' in opts) {\n changesOpts.heartbeat = opts.heartbeat;\n }\n if ('timeout' in opts) {\n changesOpts.timeout = opts.timeout;\n }\n if (opts.query_params) {\n changesOpts.query_params = opts.query_params;\n }\n if (opts.view) {\n changesOpts.view = opts.view;\n }\n getChanges();\n });\n }).catch(function (err) {\n abortReplication('getCheckpoint rejected with ', err);\n });\n }\n\n /* istanbul ignore next */\n function onCheckpointError(err) {\n writingCheckpoint = false;\n abortReplication('writeCheckpoint completed with error', err);\n }\n\n /* istanbul ignore if */\n if (returnValue.cancelled) { // cancelled immediately\n completeReplication();\n return;\n }\n\n if (!returnValue._addedListeners) {\n returnValue.once('cancel', completeReplication);\n\n if (typeof opts.complete === 'function') {\n returnValue.once('error', opts.complete);\n returnValue.once('complete', function (result) {\n opts.complete(null, result);\n });\n }\n returnValue._addedListeners = true;\n }\n\n if (typeof opts.since === 'undefined') {\n startChanges();\n } else {\n initCheckpointer().then(function () {\n writingCheckpoint = true;\n return checkpointer.writeCheckpoint(opts.since, session);\n }).then(function () {\n writingCheckpoint = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n return;\n }\n last_seq = opts.since;\n startChanges();\n }).catch(onCheckpointError);\n }\n}\n\n// We create a basic promise so the caller can cancel the replication possibly\n// before we have actually started listening to changes etc\ninherits(Replication, EventEmitter);\nfunction Replication() {\n EventEmitter.call(this);\n this.cancelled = false;\n this.state = 'pending';\n var self = this;\n var promise = new Promise(function (fulfill, reject) {\n self.once('complete', fulfill);\n self.once('error', reject);\n });\n self.then = function (resolve, reject) {\n return promise.then(resolve, reject);\n };\n self.catch = function (reject) {\n return promise.catch(reject);\n };\n // As we allow error handling via \"error\" event as well,\n // put a stub in here so that rejecting never throws UnhandledError.\n self.catch(function () {});\n}\n\nReplication.prototype.cancel = function () {\n this.cancelled = true;\n this.state = 'cancelled';\n this.emit('cancel');\n};\n\nReplication.prototype.ready = function (src, target) {\n var self = this;\n if (self._readyCalled) {\n return;\n }\n self._readyCalled = true;\n\n function onDestroy() {\n self.cancel();\n }\n src.once('destroyed', onDestroy);\n target.once('destroyed', onDestroy);\n function cleanup() {\n src.removeListener('destroyed', onDestroy);\n target.removeListener('destroyed', onDestroy);\n }\n self.once('complete', cleanup);\n};\n\nfunction toPouch(db, opts) {\n var PouchConstructor = opts.PouchConstructor;\n if (typeof db === 'string') {\n return new PouchConstructor(db, opts);\n } else {\n return db;\n }\n}\n\nfunction replicateWrapper(src, target, opts, callback) {\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof opts === 'undefined') {\n opts = {};\n }\n\n if (opts.doc_ids && !Array.isArray(opts.doc_ids)) {\n throw createError(BAD_REQUEST,\n \"`doc_ids` filter parameter is not a list.\");\n }\n\n opts.complete = callback;\n opts = clone(opts);\n opts.continuous = opts.continuous || opts.live;\n opts.retry = ('retry' in opts) ? opts.retry : false;\n /*jshint validthis:true */\n opts.PouchConstructor = opts.PouchConstructor || this;\n var replicateRet = new Replication(opts);\n var srcPouch = toPouch(src, opts);\n var targetPouch = toPouch(target, opts);\n replicate(srcPouch, targetPouch, opts, replicateRet);\n return replicateRet;\n}\n\ninherits(Sync, EventEmitter);\nfunction sync(src, target, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof opts === 'undefined') {\n opts = {};\n }\n opts = clone(opts);\n /*jshint validthis:true */\n opts.PouchConstructor = opts.PouchConstructor || this;\n src = toPouch(src, opts);\n target = toPouch(target, opts);\n return new Sync(src, target, opts, callback);\n}\n\nfunction Sync(src, target, opts, callback) {\n var self = this;\n this.canceled = false;\n\n var optsPush = opts.push ? $inject_Object_assign({}, opts, opts.push) : opts;\n var optsPull = opts.pull ? $inject_Object_assign({}, opts, opts.pull) : opts;\n\n this.push = replicateWrapper(src, target, optsPush);\n this.pull = replicateWrapper(target, src, optsPull);\n\n this.pushPaused = true;\n this.pullPaused = true;\n\n function pullChange(change) {\n self.emit('change', {\n direction: 'pull',\n change: change\n });\n }\n function pushChange(change) {\n self.emit('change', {\n direction: 'push',\n change: change\n });\n }\n function pushDenied(doc) {\n self.emit('denied', {\n direction: 'push',\n doc: doc\n });\n }\n function pullDenied(doc) {\n self.emit('denied', {\n direction: 'pull',\n doc: doc\n });\n }\n function pushPaused() {\n self.pushPaused = true;\n /* istanbul ignore if */\n if (self.pullPaused) {\n self.emit('paused');\n }\n }\n function pullPaused() {\n self.pullPaused = true;\n /* istanbul ignore if */\n if (self.pushPaused) {\n self.emit('paused');\n }\n }\n function pushActive() {\n self.pushPaused = false;\n /* istanbul ignore if */\n if (self.pullPaused) {\n self.emit('active', {\n direction: 'push'\n });\n }\n }\n function pullActive() {\n self.pullPaused = false;\n /* istanbul ignore if */\n if (self.pushPaused) {\n self.emit('active', {\n direction: 'pull'\n });\n }\n }\n\n var removed = {};\n\n function removeAll(type) { // type is 'push' or 'pull'\n return function (event, func) {\n var isChange = event === 'change' &&\n (func === pullChange || func === pushChange);\n var isDenied = event === 'denied' &&\n (func === pullDenied || func === pushDenied);\n var isPaused = event === 'paused' &&\n (func === pullPaused || func === pushPaused);\n var isActive = event === 'active' &&\n (func === pullActive || func === pushActive);\n\n if (isChange || isDenied || isPaused || isActive) {\n if (!(event in removed)) {\n removed[event] = {};\n }\n removed[event][type] = true;\n if (Object.keys(removed[event]).length === 2) {\n // both push and pull have asked to be removed\n self.removeAllListeners(event);\n }\n }\n };\n }\n\n if (opts.live) {\n this.push.on('complete', self.pull.cancel.bind(self.pull));\n this.pull.on('complete', self.push.cancel.bind(self.push));\n }\n\n function addOneListener(ee, event, listener) {\n if (ee.listeners(event).indexOf(listener) == -1) {\n ee.on(event, listener);\n }\n }\n\n this.on('newListener', function (event) {\n if (event === 'change') {\n addOneListener(self.pull, 'change', pullChange);\n addOneListener(self.push, 'change', pushChange);\n } else if (event === 'denied') {\n addOneListener(self.pull, 'denied', pullDenied);\n addOneListener(self.push, 'denied', pushDenied);\n } else if (event === 'active') {\n addOneListener(self.pull, 'active', pullActive);\n addOneListener(self.push, 'active', pushActive);\n } else if (event === 'paused') {\n addOneListener(self.pull, 'paused', pullPaused);\n addOneListener(self.push, 'paused', pushPaused);\n }\n });\n\n this.on('removeListener', function (event) {\n if (event === 'change') {\n self.pull.removeListener('change', pullChange);\n self.push.removeListener('change', pushChange);\n } else if (event === 'denied') {\n self.pull.removeListener('denied', pullDenied);\n self.push.removeListener('denied', pushDenied);\n } else if (event === 'active') {\n self.pull.removeListener('active', pullActive);\n self.push.removeListener('active', pushActive);\n } else if (event === 'paused') {\n self.pull.removeListener('paused', pullPaused);\n self.push.removeListener('paused', pushPaused);\n }\n });\n\n this.pull.on('removeListener', removeAll('pull'));\n this.push.on('removeListener', removeAll('push'));\n\n var promise = Promise.all([\n this.push,\n this.pull\n ]).then(function (resp) {\n var out = {\n push: resp[0],\n pull: resp[1]\n };\n self.emit('complete', out);\n if (callback) {\n callback(null, out);\n }\n self.removeAllListeners();\n return out;\n }, function (err) {\n self.cancel();\n if (callback) {\n // if there's a callback, then the callback can receive\n // the error event\n callback(err);\n } else {\n // if there's no callback, then we're safe to emit an error\n // event, which would otherwise throw an unhandled error\n // due to 'error' being a special event in EventEmitters\n self.emit('error', err);\n }\n self.removeAllListeners();\n if (callback) {\n // no sense throwing if we're already emitting an 'error' event\n throw err;\n }\n });\n\n this.then = function (success, err) {\n return promise.then(success, err);\n };\n\n this.catch = function (err) {\n return promise.catch(err);\n };\n}\n\nSync.prototype.cancel = function () {\n if (!this.canceled) {\n this.canceled = true;\n this.push.cancel();\n this.pull.cancel();\n }\n};\n\nfunction replication(PouchDB) {\n PouchDB.replicate = replicateWrapper;\n PouchDB.sync = sync;\n\n Object.defineProperty(PouchDB.prototype, 'replicate', {\n get: function () {\n var self = this;\n if (typeof this.replicateMethods === 'undefined') {\n this.replicateMethods = {\n from: function (other, opts, callback) {\n return self.constructor.replicate(other, self, opts, callback);\n },\n to: function (other, opts, callback) {\n return self.constructor.replicate(self, other, opts, callback);\n }\n };\n }\n return this.replicateMethods;\n }\n });\n\n PouchDB.prototype.sync = function (dbName, opts, callback) {\n return this.constructor.sync(this, dbName, opts, callback);\n };\n}\n\nPouchDB.plugin(IDBPouch)\n .plugin(HttpPouch$1)\n .plugin(mapreduce)\n .plugin(replication);\n\n// Pull from src because pouchdb-node/pouchdb-browser themselves\n\nexport default PouchDB;\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\nimport jwtDecode from 'jwt-decode'\r\n\r\nexport default class Store {\r\n constructor (prefix) {\r\n this.prefix = prefix\r\n }\r\n\r\n get server () {\r\n return this.serverAddress\r\n }\r\n\r\n set server (address) {\r\n this.serverAddress = address\r\n }\r\n\r\n set userID (userid) {\r\n // this.USERID = userid\r\n }\r\n\r\n get userID () {\r\n try {\r\n let dCode = jwtDecode(this.refreshToken)\r\n return dCode.user_id\r\n } catch (err) {\r\n console.warn(\"Decoding failed!\")\r\n }\r\n\r\n }\r\n\r\n get appID () {\r\n return this.APPID\r\n }\r\n\r\n set appID (appid) {\r\n this.APPID = appid\r\n }\r\n\r\n get websocketAddress () {\r\n return this.wssocketAddress\r\n }\r\n\r\n set websocketAddress (websocAddress) {\r\n this.wssocketAddress = websocAddress\r\n }\r\n\r\n set token (token) {\r\n this.accessToken = token\r\n }\r\n\r\n get token () {\r\n return this.accessToken\r\n }\r\n\r\n set refreshToken (refresh) {\r\n this.token = ''\r\n this.privateRefreshToken = refresh\r\n if (typeof localStorage !== 'undefined') {\r\n // eslint-disable-next-line no-undef\r\n localStorage.setItem(`${this.prefix}_refresh`, refresh)\r\n }\r\n }\r\n\r\n get refreshToken () {\r\n if (this.privateRefreshToken) {\r\n return this.privateRefreshToken\r\n }\r\n if (typeof localStorage !== 'undefined') {\r\n // eslint-disable-next-line no-undef\r\n const rT = localStorage.getItem(`${this.prefix}_refresh`)\r\n if (rT) {\r\n return rT\r\n }\r\n }\r\n return null\r\n }\r\n\r\n set assetProvider (provider) {\r\n this.privateAssetProvider = provider\r\n if (typeof localStorage !== 'undefined') {\r\n // eslint-disable-next-line no-undef\r\n localStorage.setItem(`${this.prefix}_asset_provider`, JSON.stringify(provider))\r\n }\r\n }\r\n\r\n get assetProvider () {\r\n if (this.privateAssetProvider) {\r\n return this.privateAssetProvider\r\n }\r\n if (typeof localStorage !== 'undefined') {\r\n // eslint-disable-next-line no-undef\r\n try {\r\n return JSON.parse(localStorage.getItem(`${this.prefix}_asset_provider`))\r\n } catch (err) {\r\n console.warn('Unable to parse JSON payload ', err)\r\n }\r\n }\r\n return null\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\nimport urlParse from 'url-parse'\r\nimport User from '../../../../model/User'\r\n\r\nexport default class UserApi {\r\n constructor (bv) {\r\n this.Blockv = bv\r\n this.client = bv.client\r\n this.store = bv.store\r\n this.dataPool = bv.dataPool\r\n }\r\n\r\n /**\r\n * Registers a user on the Blockv platform.\r\n *\r\n * @param registration contains properties of the user.\r\n * Only the properties to be registered should be set.\r\n * @return new Observable<User> instance\r\n */\r\n\r\n getAccessToken () {\r\n return this.store.token\r\n }\r\n\r\n setAccessToken (token) {\r\n this.store.token = ''\r\n this.store.token = token\r\n }\r\n\r\n getRefreshToken () {\r\n return this.store.refreshToken\r\n }\r\n\r\n setRefreshToken (token) {\r\n this.store.token = ''\r\n this.store.refreshToken = token\r\n }\r\n\r\n register (registration) {\r\n return this.client.request('POST', '/v1/users', registration, false)\r\n .then(\r\n (data) => {\r\n this.store.token = data.access_token.token\r\n this.store.refreshToken = data.refresh_token.token\r\n this.store.assetProvider = data.asset_provider\r\n this.store.userID = data.user.id\r\n this.dataPool.setSessionInfo({\r\n userID: data.user.id\r\n })\r\n return data\r\n }\r\n ).then(data => new User(data.user))\r\n }\r\n\r\n /**\r\n * Logs a user into the Blockv platform. Accepts a user token (phone or email).\r\n *\r\n * @param token the user's phone(E.164) or email\r\n * @param tokenType the type of the token (phone or email)\r\n * @param password the user's password.\r\n * @return JSON Object\r\n */\r\n\r\n login (token, tokenType, password) {\r\n const payload = {\r\n token,\r\n token_type: tokenType,\r\n auth_data: {\r\n password\r\n }\r\n }\r\n\r\n return this.client.request('POST', '/v1/user/login', payload, false).then(\r\n (data) => {\r\n if (!password) {\r\n const error = new Error('Login Failed, Password Reset')\r\n error.code = 'PASSWORD_RESET'\r\n throw error\r\n } else {\r\n this.store.token = data.access_token.token\r\n this.store.refreshToken = data.refresh_token.token\r\n this.store.assetProvider = data.asset_provider\r\n this.store.userID = data.user.id\r\n this.dataPool.setSessionInfo({\r\n userID: data.user.id,\r\n client: this.client\r\n })\r\n return data\r\n }\r\n }\r\n ).then(data => new User(data.user))\r\n }\r\n\r\n /**\r\n * Logs a user into the Blockv platform. Accepts a guest id\r\n *\r\n * @param guestId the user's guest id.\r\n * @return JSON Object\r\n */\r\n loginGuest (guestId) {\r\n const payload = {\r\n token: guestId,\r\n token_type: 'guest_id'\r\n }\r\n return this.client.request('POST', '/v1/user/login', payload, false).then(\r\n (data) => {\r\n this.store.token = data.access_token.token\r\n this.store.refreshToken = data.refresh_token.token\r\n this.store.assetProvider = data.asset_provider\r\n this.dataPool.setSessionInfo({\r\n userID: data.user.id\r\n })\r\n return data\r\n }\r\n ).then(data => new User(data.user))\r\n }\r\n\r\n uploadAvatar (request) {\r\n // get file\r\n // change to formData\r\n return this.client.request('POST', '/v1/user/avatar', request, true)\r\n }\r\n\r\n /**\r\n * Fetches the current user's profile information from the Blockv platform.\r\n *\r\n * @return JSON Object\r\n */\r\n\r\n getCurrentUser (payload) {\r\n // get the current authenticated in user\r\n return this.client.request('GET', '/v1/user', payload, true).then(data => new User(data))\r\n }\r\n\r\n /**\r\n * Updates the current user's profile on the Blockv platform.\r\n * @param update holds the properties of the user, e.g. their first name.\r\n * Only the properties to be updated should be set.\r\n * @return JSON Object\r\n */\r\n updateUser (update) {\r\n return this.client.request('PATCH', '/v1/user', update, true)\r\n }\r\n\r\n /**\r\n * Gets a list of the current users tokens\r\n * @return JSON Object\r\n */\r\n\r\n getUserTokens () {\r\n return this.client.request('GET', '/v1/user/tokens', '', true)\r\n }\r\n\r\n /**\r\n * Verifies ownership of a token by submitting the verification code to the Blockv platform.\r\n * @param token the user's phone(E.164) or email\r\n * @param tokenType the type of the token (phone or email)\r\n * @param code the verification code send to the user's token (phone or email).\r\n * @return JSON Object\r\n */\r\n verifyUserToken (verification) {\r\n return this.client.request('POST', '/v1/user/verify_token', verification, true)\r\n }\r\n\r\n /**\r\n * Sends a One-Time-Pin (OTP) to the user's token (phone or email).\r\n * This OTP may be used in place of a password to login.\r\n * @param token the user's phone(E.164) or email\r\n * @param tokenType the type of the token (phone or email)\r\n * @return JSON Object\r\n */\r\n resetPassword (token, tokenType) {\r\n const payload = {\r\n token,\r\n token_type: tokenType\r\n }\r\n return this.client.request('POST', '/v1/user/reset_token', payload, false)\r\n }\r\n\r\n /**\r\n * Sends a verification code to the user's token (phone or email).\r\n * This verification code should be used to verifiy the user's ownership\r\n * of the token (phone or email).\r\n * @param token the user's phone(E.164) or email\r\n * @param tokenType the type of the token (phone or email)\r\n * @return JSON Object\r\n */\r\n sendTokenVerification (token, tokenType) {\r\n const payload = {\r\n token,\r\n token_type: tokenType\r\n }\r\n return this.client.request('POST', '/v1/user/reset_token_verification', payload, false)\r\n }\r\n\r\n /**\r\n * Returns a server generated guest id\r\n * @return Object payload containing a guest user generated by the server\r\n */\r\n\r\n getGuestToken () {\r\n return this.client.request('POST', '/v1/user/guest', '', false).then(data => data.properties.guest_id)\r\n }\r\n\r\n /**\r\n * Log out the current user.\r\n * The current user will not longer be authorized to perform user\r\n * scoped requests on the Blockv platfrom.\r\n * @return new JSON\r\n */\r\n logout (noRequest = false) {\r\n this.Blockv.emit('logout')\r\n this.Blockv.WebSockets.close()\r\n console.log('trying to logout')\r\n if (noRequest) {\r\n this.store.token = ''\r\n this.store.refreshToken = ''\r\n this.dataPool.setSessionInfo(null)\r\n } else {\r\n return this.client.request('POST', '/v1/user/logout', {}, true).then(() => {\r\n this.store.token = ''\r\n this.store.refreshToken = ''\r\n this.dataPool.setSessionInfo(null)\r\n }).catch((err) => {\r\n console.warn(err)\r\n this.store.token = ''\r\n this.store.refreshToken = ''\r\n this.dataPool.setSessionInfo(null)\r\n throw err\r\n })\r\n }\r\n \r\n }\r\n\r\n static mapString (o) {\r\n return Object.keys(o).map(key => `${key}=${o[key]}`).join('&')\r\n }\r\n\r\n encodeAssetProvider (url) {\r\n const aP = this.store.assetProvider\r\n const aPlen = aP.length\r\n const compare = urlParse(url)\r\n for (let i = 0; i < aPlen; i += 1) {\r\n const comparethis = urlParse(aP[i].uri)\r\n if (compare.hostname === comparethis.hostname) {\r\n // same uri so get the policy signature and key and append\r\n const queryString = UserApi.mapString(aP[i].descriptor)\r\n return `${url}?${queryString}`\r\n }\r\n }\r\n return url\r\n }\r\n\r\n addUserToken (payload) {\r\n /**\r\n * payload is\r\n * {\r\n * \"token\": \"another.email@domain.com\",\r\n * \"token_type\": \"email\",\r\n * \"is_primary\": false\r\n * }\r\n */\r\n return this.client.request('POST', '/v1/user/tokens', payload, true)\r\n }\r\n\r\n setDefaultToken (tokenId) {\r\n return this.client.request('PUT', `/v1/user/tokens/${tokenId}/default`, null, true)\r\n }\r\n\r\n /**\r\n * Deletes a Users Token\r\n * @param {String} tokenId\r\n * @return {Promise<Object>} returns a success\r\n */\r\n deleteUserToken (tokenId) {\r\n return this.client.request('DELETE', `/v1/user/tokens/${tokenId}`, null, true)\r\n }\r\n\r\n /**\r\n * Adds a redeemable the users account\r\n * @param {Object} payload Object containing the redeemable information\r\n * @return {Promise<Object>} returns a Object containing the new redeemable\r\n */\r\n async addRedeemable (payload) {\r\n const { userID } = this.store\r\n return this.client.request('POST', `/v1/users/${userID}/redeemables`, payload, true)\r\n }\r\n\r\n async getPublicUserProfile (userID) {\r\n return this.client.request('GET', `/v1/users/${userID}`, '', true)\r\n }\r\n\r\n /**\r\n * Logs the user in via OAuth in a browser popup window.\r\n * NOTE: This is a private method, subject to change once more OAuth flows have been fully implemented on the backend.\r\n * @private\r\n * @returns {Promise<boolean>} `true` if login completed, or `false` if login was cancelled by the user.\r\n */\r\n async loginOAuthPopup () {\r\n // Ensure SDK has been initialized\r\n if (!this.store.appID) throw new Error('Please initialize the SDK and set your App ID first.')\r\n\r\n // Generate random state ID\r\n const stateID = Math.random().toString(36).substr(2)\r\n\r\n // Generate the oauth URL\r\n const redirectURI = 'https://login.blockv.io/send-event.html'\r\n const uri = `https://login.blockv.io/?response_type=code&client_id=${this.store.appID}&redirect_uri=${encodeURIComponent(redirectURI)}&scope=all&state=${stateID}`\r\n\r\n // Create popup window\r\n const newWindow = window.open(uri, '_blank', 'left=200,top=200,width=360,height=480,chrome,centerscreen')\r\n if (!newWindow) {\r\n throw new Error('Unable to login, popups have been blocked')\r\n }\r\n // Create pending promise\r\n let promiseResolved = false\r\n let promiseSuccess = null\r\n let promiseFail = null\r\n const promise = new Promise((resolve, reject) => {\r\n promiseSuccess = resolve\r\n promiseFail = reject\r\n })\r\n\r\n // Create window close checker\r\n const closeChecker = setInterval(() => {\r\n // Check if window was closed\r\n if (!newWindow.closed) return false\r\n\r\n // It was, cancel timer\r\n clearInterval(closeChecker)\r\n\r\n // If promise was never resolved, the user must have closed the popup before logging in. Resolve the promise.\r\n if (!promiseResolved) promiseSuccess(false)\r\n }, 250)\r\n\r\n // Create message listener\r\n const messageListener = async (e) => {\r\n // Ensure it's from the correct origin\r\n if (e.origin !== 'https://login.blockv.io') return false\r\n\r\n // Ensure the state matches\r\n if (e.data.state !== stateID) return false\r\n\r\n // Ensure the action matches\r\n if (e.data.action !== 'oauth-response') return false\r\n console.log(e.data)\r\n // Check response type\r\n if (e.data.code) {\r\n let oauthObj = {\r\n 'grant_type': 'authorization_code',\r\n 'client_id': this.Blockv.store.appID,\r\n 'code': e.data.code,\r\n 'redirect_uri': redirectURI\r\n }\r\n let oa = await this.Blockv.client.request('POST', '/v1/oauth/token', oauthObj, false)\r\n // We have our user data, store it\r\n this.setRefreshToken(oa.refresh_token.token)\r\n this.store.token = oa.access_token.token\r\n\r\n // Get user info and set the store properties\r\n const profile = await this.getCurrentUser()\r\n this.store.userID = profile.id\r\n\r\n // Get asset provider info and store it\r\n const assetProviders = await this.client.request('GET', '/v1/user/asset_providers', null, true)\r\n this.store.assetProvider = assetProviders.asset_provider\r\n\r\n // Inform data pool that the current user changed\r\n this.dataPool.setSessionInfo({\r\n userID: profile.id\r\n })\r\n\r\n // Done\r\n promiseResolved = true\r\n promiseSuccess(true)\r\n } else {\r\n // Login failed, return error\r\n const err = new Error(e.data.error_text || 'Unable to login.')\r\n err.code = e.data.error\r\n promiseResolved = true\r\n promiseFail(err)\r\n }\r\n\r\n // Cleanup, remove event listener\r\n newWindow.close()\r\n window.removeEventListener('message', messageListener)\r\n clearInterval(closeChecker)\r\n return true\r\n }\r\n\r\n // Attach message listener\r\n window.addEventListener('message', messageListener)\r\n\r\n // Done, return promise\r\n return promise\r\n }\r\n\r\n // Used for manual OAuth Login flow\r\n async loginOauthCode (redirectURI, code) {\r\n let oauthObj = {\r\n 'grant_type': 'authorization_code',\r\n 'client_id': this.store.appID,\r\n 'code': code,\r\n 'redirect_uri': redirectURI\r\n }\r\n let oa = await this.Blockv.client.request('POST', '/v1/oauth/token', oauthObj, false)\r\n // We have our user data, store it\r\n this.setRefreshToken(oa.refresh_token.token)\r\n this.store.token = oa.access_token.token\r\n\r\n // Get user info and set the store properties\r\n const profile = await this.getCurrentUser()\r\n this.store.userID = profile.id\r\n\r\n // Get asset provider info and store it\r\n const assetProviders = await this.client.request('GET', '/v1/user/asset_providers', null, true)\r\n this.store.assetProvider = assetProviders.asset_provider\r\n\r\n // Inform data pool that the current user changed\r\n this.dataPool.setSessionInfo({\r\n userID: profile.id\r\n })\r\n }\r\n}\r\n","//\n// BlockV AG. Copyright (c) 2018, all rights reserved.\n//\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\n// the BlockV SDK except in compliance with the License accompanying it. Unless\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n// ANY KIND, either express or implied. See the License for the specific language\n// governing permissions and limitations under the License.\n//\nimport fetch from '@brillout/fetch'\nimport jwtDecode from 'jwt-decode'\n\n/* global FormData */\n\n/** List of known error messages to replace the server-supplied ones */\nconst ErrorCodes = {\n 2: 'Blank App ID',\n 17: 'Invalid App ID',\n 401: 'Token has Expired',\n 516: 'Invalid Payload',\n 517: 'Invalid Payload',\n 521: 'Token Unavailable',\n 527: 'Invalid Date Format',\n 1004: 'Invalid Request Payload',\n 1701: 'vAtom Unrecognized',\n 1708: 'vAtom Unvailable',\n 2030: 'No user found, Please register an account first.',\n 2031: 'Authentication Failed',\n 2032: 'Login Failed, Please try again',\n 2034: 'Invalid Token',\n 2037: 'Upload Avatar Failed',\n 2049: 'Refresh Token Expired / Not Whitelisted',\n 2051: 'Too many login attempts, Please try again later.',\n 2552: 'Unable To Retrieve Token',\n 2553: 'Token ID Invalid',\n 2562: 'Cannot Delete Primary Token',\n 2563: 'Token Already Confirmed',\n 2564: 'Invalid Verification Code',\n 2566: 'Token Already Confirmed',\n 2567: 'Invalid Verification Code',\n 2569: 'Invalid Token Type',\n 2571: 'Invalid Email',\n 2572: 'Invalid Phone Number'\n}\n\nexport default class Client {\n /** @private */\n constructor (bv) {\n this.Blockv = bv\n this.store = bv.store\n }\n\n /**\n * Sends a request to the backend.\n * @param {string} method The HTTP method, ie. \"GET\", \"POST\"\n * @param {string} endpoint The backend API endpoint, ie. \"/v1/user\"\n * @param {string|object|FormData} payload The request body. Can be null.\n * @param {boolean} auth `true` if this request should contain the current user's access token.\n * @param {object} headers Optional extra HTTP headers to add to the request.\n * @returns {Promise<object>} The server's response payload.\n */\n async request (method, endpoint, payload, auth, headers) {\n // Ensure our access token is up to date, if this is an authenticated request\n if (auth) await this.checkToken()\n\n // Attach headers\n if (!headers) headers = {}\n headers['App-Id'] = this.store.appID\n if (auth) headers['Authorization'] = `Bearer ${this.store.token}`\n\n // Send request\n return this.authRequest(method, endpoint, payload, headers)\n }\n\n /** @private */\n async authRequest (method, endpoint, payload, headers) {\n\n // Check payload type\n let body = null\n if (!payload) {\n // If no body, make it undefined so that fetch() doesn't complain about having a payload on GET requests\n body = undefined\n } else if (typeof FormData !== 'undefined' && payload instanceof FormData) {\n // Don't add Content-Type header, fetch() adds it's own, which is required because it specifies the form data boundary\n body = payload\n } else if (typeof body === 'object') {\n // Convert to JSON\n body = JSON.stringify(payload)\n headers['Content-Type'] = 'application/json'\n } else {\n // Unknown payload type, assume application/json content type, unless specified in extra headers\n body = payload\n if (!extraHeaders['Content-Type']) headers['Content-Type'] = 'application/json'\n }\n\n // Send request\n const response = await fetch(this.store.server + endpoint, { method, body, headers })\n\n // Decode JSON\n let json = await response.json()\n\n // Check for server error\n if (json.payload === undefined && json.error === 2051) {\n\n // Check for the special login locked error\n // We need to pull the timestamp that is in the reponse.message to show when they\n // can login agin\n\n // HACK: Pull time from original server error string\n const dateString = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z/g.exec(response.message)\n let lockedUntil = new Date(dateString)\n\n // Throw error\n const error = new Error(`Too many login attempts, try again at ${lockedUntil}`)\n error.code = json.error || response.status || 0\n error.httpStatus = response.status\n error.requestID = json.request_id\n error.serverMessage = json.message\n error.lockedUntil = lockedUntil\n throw error\n\n } else if (json && json.payload === undefined && response.status == 200) {\n\n // Sometimes, just sometimes, the backend will send a response outside of the usual `payload` param.\n // In this case, just wrap it.\n json = {\n payload: json\n }\n \n } else if (json.payload === undefined) {\n\n // Throw the error returned by the server\n const error = new Error(ErrorCodes[response.error] || json.message || 'An unknown server error has occurred')\n error.code = json.error || response.status || 0\n error.httpStatus = response.status\n error.requestID = json.request_id\n error.serverMessage = json.message\n throw error\n \n }\n\n // Check for main reactor error payload\n if (json.payload && json.payload.main && json.payload.main.error) {\n // Reactor error\n var err = json.payload.main.error.Code || response.status || 0\n const error = new Error(ErrorCodes[err] || json.payload.main.error.Msg || 'An unknown server error occurred.')\n error.code = err\n error.serverMessage = json.payload.main.error.Msg || ''\n error.httpStatus = response.status\n error.requestID = json.request_id\n throw error\n }\n\n // No error, continue\n return json.payload\n }\n\n /**\n * Uses the refresh token to fetch and store a new access token from the backend.\n * @private\n */\n refreshToken () {\n\n // Check if currently fetching an access token\n if (this.tokenFetchPromise)\n return this.tokenFetchPromise\n\n // Start fetching\n this.tokenFetchPromise = this.request('POST', '/v1/access_token', '', false, {\n Authorization: `Bearer ${this.store.refreshToken}`\n }).then(data => {\n\n // Store it\n this.store.token = data.access_token.token\n this.tokenFetchPromise = null\n\n }).catch(err => {\n\n // Failed to fetch the token! Keep throwing the error up the chain\n console.warn('Failed to fetch a fresh access token from the backend.', err)\n this.tokenFetchPromise = null\n if (err.code == '2049' || err.message.includes('Bad token')) {\n this.Blockv.UserManager.logout(true)\n }\n throw err\n\n })\n\n // Return promise\n return this.tokenFetchPromise\n\n }\n\n /**\n * Checks if the current access token is still valid and has not expired yet. If it is, it will fetch a new one.\n * @private\n * @returns {Promise} Resolves when the access token is valid.\n */\n async checkToken () {\n // define our vars\n let decodedToken\n let nowDate\n let expirationTime\n\n // Catch errors with decoding the current access token\n try {\n decodedToken = jwtDecode(this.store.token)\n expirationTime = (decodedToken.exp * 1000)\n nowDate = Date.now()\n\n // quick calc to determine if the token has expired\n if ((nowDate + 5000) > expirationTime) throw new Error('Token expired.')\n } catch (e) {\n // There was an error with the access token. Fetch a new one.\n return this.refreshToken()\n }\n\n // Done\n return true\n }\n}\n","\"use strict\";\n\nvar assert_usage = require('reassert/usage');\n\nvar fetch;\n\nif( isUsingBrowserBuiltIn() ) {\n assert_usage(\n envSupportsFetch(),\n [\n \"This browser doesn't seem to support `fetch` (window.fetch===undefined).\",\n \"Is this running in Internet Explorer?\",\n \"Note that this fetch library doesn't support IE and if you want to support IE then use another fetch implementation instead.\"\n ].join('\\n')\n );\n fetch = window.fetch;\n} else {\n // we use `eval('require')` instead of `require` to\n // make sure that webpack doesn't bundle `node-fetch`\n fetch = eval('require')('node-fetch');\n}\n\nmodule.exports = fetch;\nmodule.exports.isUsingBrowserBuiltIn = isUsingBrowserBuiltIn;\n\nfunction isUsingBrowserBuiltIn() {\n return typeof window !== \"undefined\";\n}\n\nfunction envSupportsFetch() {\n return window.fetch!==undefined;\n}\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\nimport EventEmitter from '../../internal/EventEmitter'\r\n\r\nexport default class WebSockets extends EventEmitter {\r\n constructor (store, client, address) {\r\n super()\r\n this.store = store\r\n this.client = client\r\n this.address = address\r\n\r\n /** The WebSocket connection */\r\n this.socket = null\r\n\r\n /** Time until the next retry */\r\n this.delayTime = 1000\r\n\r\n /** If true, the websocket will continue to retry the connection if it fails */\r\n this.shouldRetry = false\r\n }\r\n\r\n /** This will be true if the connection is ready to send and receive messages */\r\n get isOpen () {\r\n return this.socket && this.socket.readyState === 1\r\n }\r\n\r\n /**\r\n * The connect function establishes a connection to the WebSocket.\r\n * @public\r\n * @return {Promise<WebSockets>}\r\n */\r\n async connect () {\r\n // Stay connected after this point\r\n this.shouldRetry = true\r\n\r\n // if the websocket is connected or connecting already, then stop\r\n if (this.socket) {\r\n return this\r\n }\r\n\r\n // before we connect, make sure the token is valid, or else retry again soon\r\n try {\r\n await this.client.checkToken()\r\n } catch (err) {\r\n console.warn('WebSocket unable to get client token! Will retry soon...')\r\n this.retryConnection()\r\n return this\r\n }\r\n\r\n // if the websocket is connected or connecting already, then stop\r\n if (this.socket) {\r\n return this\r\n }\r\n\r\n // Create the websocket\r\n const url = `${this.address}/ws?app_id=${encodeURIComponent(this.store.appID)}&token=${encodeURIComponent(this.store.token)}`\r\n this.socket = new WebSocket(url)\r\n this.socket.addEventListener('open', this.handleConnected.bind(this))\r\n this.socket.addEventListener('message', this.handleMessage.bind(this))\r\n this.socket.addEventListener('error', this.handleError.bind(this))\r\n this.socket.addEventListener('close', this.handleClose.bind(this))\r\n\r\n // Done\r\n return this\r\n }\r\n\r\n /**\r\n * This sends a message through the web socket\r\n * @param {*} cmd\r\n */\r\n sendMessage (cmd) {\r\n if (this.socket && this.socket.readyState === 1) {\r\n this.socket.send(JSON.stringify(cmd))\r\n } else {\r\n console.warn('WebSocket: Attempted to send message up, but the socket is not ready.')\r\n }\r\n }\r\n\r\n /**\r\n * The handleMessage function allows the different types of messages to be returned:\r\n * stateUpdate, inventory, activity, and, info.\r\n * @private\r\n * @param {JSON<Object>} e A JSON Object that is passed into the function from connect()\r\n * @return {JSON<Object>} A JSON Object is returned containing the list of chosen message types\r\n */\r\n handleMessage (e) {\r\n const ed = JSON.parse(e.data)\r\n this.trigger('websocket.raw', ed)\r\n\r\n // if the message is a RPC message\r\n if (ed.msg_type === 'rpc') {\r\n this.trigger('websocket.rpc', ed)\r\n }\r\n // if the user only wants state updates\r\n if (ed.msg_type === 'state_update') {\r\n this.trigger('stateUpdate', ed)\r\n }\r\n\r\n // if the user only wants inventory updates\r\n if (ed.msg_type === 'inventory') {\r\n this.trigger('inventory', ed)\r\n }\r\n\r\n // if the user only wants activity updates\r\n if (ed.msg_type === 'my_events') {\r\n this.trigger('activity', ed)\r\n }\r\n\r\n // if the user only wants info updates\r\n if (ed.msg_type === 'info') {\r\n this.trigger('info', ed)\r\n }\r\n\r\n if (ed) {\r\n this.trigger('all', ed)\r\n }\r\n }\r\n\r\n /**\r\n * Lets the User know that the connection is connected\r\n * @private\r\n * @param {Event<SocketStatus>} e no need for inputting the parameter\r\n * @return {Function<connected>} triggers the connected function\r\n */\r\n handleConnected (e) {\r\n this.delayTime = 1000\r\n this.trigger('connected', e)\r\n }\r\n\r\n /**\r\n * When the connection drops or the Websocket is closed.\r\n * This function will auto-retry connection until successfully connected\r\n * @private\r\n * @return {Promise<WebSockets>} returns the connection function\r\n */\r\n retryConnection () {\r\n // Clear previous retry timer\r\n if (this.retryTimer) {\r\n clearTimeout(this.retryTimer)\r\n }\r\n\r\n // Create a new retry timer\r\n this.retryTimer = setTimeout(() => {\r\n // Clear timer\r\n this.retryTimer = null\r\n\r\n // Check if we want to be connected\r\n if (!this.shouldRetry) {\r\n return\r\n }\r\n\r\n // Increase retry delay for next time\r\n if (this.delayTime < 8000) {\r\n this.delayTime *= 2\r\n }\r\n\r\n // connect again\r\n this.connect()\r\n }, this.delayTime)\r\n }\r\n\r\n /**\r\n * Handles the Web socket error event. We don't need to retry, because handleClose is also called on errors.\r\n * @private\r\n * @param {Error} err The error that happened\r\n */\r\n handleError (err) {\r\n this.socket = null\r\n console.warn('[WebSocket] Connection failed: ' + err.message)\r\n }\r\n\r\n /**\r\n * Handles the Web socket close event\r\n * @private\r\n * @param {Event} e no need for inputting, It is a Websocket Event\r\n */\r\n handleClose () {\r\n this.socket = null\r\n this.retryConnection()\r\n }\r\n\r\n /**\r\n * @public\r\n * Forcefully closes the Web socket.\r\n Note: Socket will be set to null. Auto connect will be disabled.\r\n */\r\n close () {\r\n // Prevent retrying\r\n this.shouldRetry = false\r\n\r\n // Cancel retry timer if there is one\r\n if (this.retryTimer) {\r\n clearTimeout(this.retryTimer)\r\n this.retryTimer = null\r\n }\r\n\r\n // Close socket if it's open\r\n if (this.socket) {\r\n this.socket.close()\r\n this.socket = null\r\n }\r\n }\r\n}\r\n","\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (_global.default._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global.default._babelPolyfill = true;","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = now\n\nfunction now() {\n return new Date().getTime()\n}\n","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.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","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","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 hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","\r\nimport BLOCKvRegion from './BLOCKvRegion'\r\nimport DataObject from '../DataObject'\r\n/**\r\n * This region plugin provides access to the current user's inventory.\r\n *\r\n * To get an instance, call `DataPool.region('inventory')`\r\n */\r\nexport default class InventoryRegion extends BLOCKvRegion {\r\n /** Plugin ID */\r\n static get id () { return 'inventory' }\r\n\r\n /** Constructor */\r\n constructor (dataPool) {\r\n super(dataPool)\r\n // Make sure we have a valid current user\r\n if (!this.dataPool.sessionInfo || !this.dataPool.sessionInfo.userID) {\r\n throw new Error('You cannot query the inventory region without being logged in.')\r\n }\r\n // Store current user ID\r\n this.currentUserID = this.dataPool.sessionInfo.userID\r\n }\r\n\r\n /** Our state key is the current user's ID */\r\n get stateKey () {\r\n return 'inventory:' + this.currentUserID\r\n }\r\n\r\n /** There should only be one inventory region */\r\n matches (id, descriptor) {\r\n return id === 'inventory'\r\n }\r\n\r\n /** Shut down this region if the current user changes */\r\n onSessionInfoChanged () {\r\n this.close()\r\n }\r\n\r\n /** \r\n * Load current state from the server. The process is as follows:\r\n * \r\n * 1. Call /hash API to get the current inventory hash, if it matches our local copy then stop.\r\n * 2. Call /sync API to fetch all vatom sync numbers\r\n * 3. For all vatoms in our db which is not returned by /sync, remove\r\n * 4. For all vatoms which are not in our dbb, or whose sync number is different, fetch via individual GET (batched)\r\n * \r\n * If at any point the above process throws an error, fall back to the old approach:\r\n * \r\n * 1. Fetch all vatoms from the /inventory API\r\n * 2. For any vatoms in our db not returned by /inventory, remove\r\n * \r\n */\r\n async load () {\r\n\r\n // Pause websocket events\r\n this.pauseMessages()\r\n\r\n let ids = null\r\n try {\r\n\r\n // Load via new method\r\n ids = await this.loadNew()\r\n\r\n } catch (err) {\r\n\r\n // Failed! Try via the old method\r\n console.warn('[DataPool > InventoryRegion] Unable to sync via the new method! Attempting the old method now. Reason:', err)\r\n ids = await this.loadOld()\r\n\r\n }\r\n\r\n // Resume websocket events\r\n this.resumeMessages()\r\n return ids\r\n\r\n }\r\n\r\n async loadNew() {\r\n\r\n // Check SDK config to see if the new sync method is disabled\r\n if (this.dataPool.disableSyncV2)\r\n throw new Error('V2 synchronization algorithm is disabled in the config.')\r\n\r\n // Stop if no vatoms\r\n if (!Array.from(this.objects.values()).find(obj => obj.type == 'vatom'))\r\n throw new Error(`V2 synchronization is disabled if the inventory is empty, since it's faster to use the old method for initial sync.`)\r\n\r\n // Get current inventory hash and compare with server's\r\n let currentHash = this.objects.getExtra('hash')\r\n let serverHashReq = await this.dataPool.Blockv.client.request('GET', '/v1/user/vatom/inventory/hash', null, true)\r\n if (!serverHashReq.hash)\r\n throw new Error('The server did not return a hash for our current inventory.')\r\n if (currentHash && currentHash == serverHashReq.hash)\r\n return console.log('[DataPool > InventoryRegion] Sync complete, our hash matches the server, no changes needed.')\r\n\r\n // We are not in sync with the server. Fetch all vatom IDs and their sync numbers\r\n var allSyncs = []\r\n var page = 0\r\n var nextToken = null\r\n while (true) {\r\n\r\n // Fetch next page of IDs\r\n page += 1\r\n console.log(`[DataPool > InventoryRegion] Fetching page ${page} of sync statuses...`)\r\n let res = await this.dataPool.Blockv.client.request('GET', '/v1/user/vatom/inventory/index?limit=1000' + (nextToken ? `&next_token=${nextToken}` : ''), null, true)\r\n\r\n // Add to array\r\n allSyncs = allSyncs.concat(res.vatoms || [])\r\n\r\n // Get next token\r\n nextToken = res.next_token\r\n if (!nextToken)\r\n break\r\n\r\n }\r\n\r\n // Remove vatoms which are no longer here\r\n let keysToRemove = Array.from(this.objects.values()).filter(obj => obj.type == 'vatom' && !allSyncs.find(sync => sync.id == obj.id)).map(obj => obj.id)\r\n this.removeObjects(keysToRemove)\r\n if (keysToRemove.length > 0)\r\n console.log(`DataPool > InventoryRegion] Removed ${keysToRemove.length} vatoms which are no longer in the inventory`)\r\n\r\n // Check which vatoms are out of sync\r\n var idsToFetch = []\r\n for (let syncInfo of allSyncs) {\r\n\r\n // Get local vatom\r\n let vatom = this.getItem(syncInfo.id, false)\r\n if (!vatom || vatom.sync != syncInfo.sync)\r\n idsToFetch.push(syncInfo.id)\r\n\r\n }\r\n\r\n // Fetch vatoms in bulk\r\n let VatomsPerPage = 100\r\n let remainingIds = idsToFetch\r\n while (remainingIds.length > 0) {\r\n\r\n // Fetch next 100 vatoms\r\n let ids = remainingIds.slice(0, VatomsPerPage)\r\n remainingIds = remainingIds.slice(VatomsPerPage)\r\n console.log(`[DataPool > InventoryRegion] Fetching ${ids.length} updates, ${remainingIds.length} vatoms left...`)\r\n let response = await this.dataPool.Blockv.client.request('POST', '/v1/user/vatom/get', { ids }, true)\r\n\r\n // Create list of new objects\r\n let newObjects = []\r\n\r\n // Add vatoms to the list\r\n for (let v of response.vatoms)\r\n newObjects.push(new DataObject('vatom', v.id, v))\r\n\r\n // Add faces to the list\r\n for (let f of response.faces)\r\n newObjects.push(new DataObject('face', f.id, f))\r\n\r\n // Add actions to the list\r\n for (let a of response.actions)\r\n newObjects.push(new DataObject('action', a.name, a))\r\n\r\n // Update the pool\r\n this.addObjects(newObjects)\r\n\r\n }\r\n\r\n // Done! Store the inventory hash for next sync\r\n this.objects.setExtra('hash', serverHashReq.hash)\r\n console.log(`[DataPool > InventoryRegion] Sync complete! We fetched ${idsToFetch.length} vatoms, and removed ${keysToRemove.length} vatoms.`)\r\n\r\n }\r\n\r\n async loadOld() {\r\n\r\n // Go through all pages on the server, we want _everything_\r\n let pageCount = 1\r\n let loadedIDs = []\r\n while (true) {\r\n // Fetch all vatoms the user owns, via a Discover call\r\n console.debug(`[DataPool > InventoryRegion] Fetching owned vatoms, page ${pageCount}...`)\r\n let response = await this.dataPool.Blockv.client.request('POST', '/v1/user/vatom/inventory', { \r\n parent_id: \"*\",\r\n limit: 1000,\r\n page: pageCount\r\n }, true)\r\n\r\n // Create list of new objects\r\n let newObjects = []\r\n\r\n // Add vatoms to the list\r\n for (let v of response.vatoms) {\r\n loadedIDs.push(v.id)\r\n newObjects.push(new DataObject('vatom', v.id, v))\r\n }\r\n\r\n // Add faces to the list\r\n for (let f of response.faces) {\r\n loadedIDs.push(f.id)\r\n newObjects.push(new DataObject('face', f.id, f))\r\n }\r\n\r\n // Add actions to the list\r\n for (let a of response.actions) {\r\n loadedIDs.push(a.name)\r\n newObjects.push(new DataObject('action', a.name, a))\r\n }\r\n // Update the pool\r\n this.addObjects(newObjects)\r\n\r\n // Increase page index for next iteration\r\n pageCount += 1\r\n\r\n // Stop if no items were returned\r\n if (newObjects.length === 0) {\r\n break\r\n }\r\n }\r\n\r\n // Return array of all items\r\n return loadedIDs\r\n }\r\n\r\n /** @override Called on WebSocket message. */\r\n async processMessage (msg) {\r\n // Call super\r\n super.processMessage(msg)\r\n // We only handle inventory update messages after this.\r\n if (msg.msg_type !== 'inventory') {\r\n return\r\n }\r\n\r\n // Get vatom ID\r\n let vatomID = msg.payload && msg.payload.id\r\n if (!vatomID) {\r\n return console.warn(`[DataPool > BVWebSocketRegion] Got websocket message with no vatom ID in it: `, msg)\r\n }\r\n // Check if this is an incoming or outgoing vatom\r\n if (msg.payload.old_owner === this.currentUserID && msg.payload.new_owner !== this.currentUserID) {\r\n // Vatom is no longer owned by us\r\n this.removeObjects([vatomID])\r\n } else if (msg.payload.old_owner !== this.currentUserID && msg.payload.new_owner === this.currentUserID) {\r\n\r\n // Vatom is now our inventory! Fetch vatom payload\r\n let response = await this.dataPool.Blockv.client.request('POST', '/v1/user/vatom/get', { ids: [vatomID] }, true)\r\n \r\n // Add vatom to new objects list\r\n let objects = []\r\n response.vatoms.map(v => new DataObject('vatom', v.id, v)).forEach(v => objects.push(v))\r\n\r\n // Add faces to new objects list\r\n response.faces.map(f => new DataObject('face', f.id, f)).forEach(f => objects.push(f))\r\n\r\n // Add actions to new objects list\r\n response.actions.map(a => new DataObject('action', a.name, a)).forEach(a => objects.push(a))\r\n // Add new objects\r\n this.addObjects(objects)\r\n } else {\r\n // Logic error, old owner and new owner cannot be the same\r\n console.warn(`[DataPool > BVWebSocketRegion] Logic error in WebSocket message, old_owner and new_owner shouldn't be the same: ${vatomRef.id}`)\r\n }\r\n }\r\n\r\n /** \r\n * Override the get() function to not return vatoms with a different owner. This can happen during a preemptive transfer,\r\n * where the vatom is given a new owner ID but not removed entirely from this region. The host app should still see it as removed though.\r\n */\r\n get(waitUntilStable = true) {\r\n\r\n // Pass on if we should wait\r\n if (waitUntilStable)\r\n return super.get(true)\r\n\r\n // Filter array of vatoms\r\n return super.get(false).filter(v => v.properties.owner == this.currentUserID)\r\n\r\n }\r\n\r\n // When a preemptive change occurs, clear our stored hash so that the next inventory refresh will query with the server.\r\n // Normally this should not be needed since the hash on the server should change as well, but sometimes if an action fails\r\n // and we fail to rollback the DB we'll be stuck with an outdated vatom.\r\n willAdd (object) {\r\n super.willAdd(object)\r\n this.onObjectPreemptivelyChanged(object) \r\n }\r\n \r\n willUpdateFields (object, newData) {\r\n super.willUpdateFields(object, newData)\r\n this.onObjectPreemptivelyChanged(object) \r\n }\r\n\r\n willUpdateField (object, keyPath, oldValue, newValue) {\r\n super.willUpdateField(object, keyPath, oldValue, newValue)\r\n this.onObjectPreemptivelyChanged(object)\r\n }\r\n \r\n willRemove (objectOrID) {\r\n super.willRemove(objectOrID)\r\n this.objects.setExtra('hash', '')\r\n }\r\n \r\n onObjectPreemptivelyChanged(object) {\r\n\r\n // Update object's sync # so that on the next refresh we fetch it's state from the server.\r\n object.data.sync = -1\r\n\r\n // Clear our hash\r\n this.objects.setExtra('hash', '')\r\n\r\n }\r\n\r\n}\r\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i<alphabet.length ; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64 : function (input) {\n if (input == null) return \"\";\n var res = LZString._compress(input, 6, function(a){return keyStrBase64.charAt(a);});\n switch (res.length % 4) { // To produce valid Base64\n default: // When could this happen ?\n case 0 : return res;\n case 1 : return res+\"===\";\n case 2 : return res+\"==\";\n case 3 : return res+\"=\";\n }\n },\n\n decompressFromBase64 : function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n },\n\n compressToUTF16 : function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 15, function(a){return f(a+32);}) + \" \";\n },\n\n decompressFromUTF16: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 16384, function(index) { return compressed.charCodeAt(index) - 32; });\n },\n\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function (uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf=new Uint8Array(compressed.length*2); // 2 bytes per character\n\n for (var i=0, TotalLen=compressed.length; i<TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i*2] = current_value >>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i<TotalLen; i++) {\n buf[i]=compressed[i*2]*256+compressed[i*2+1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n\n }\n\n },\n\n\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 6, function(a){return keyStrUriSafe.charAt(a);});\n },\n\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent:function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n input = input.replace(/ /g, \"+\");\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n },\n\n compress: function (uncompressed) {\n return LZString._compress(uncompressed, 16, function(a){return f(a);});\n },\n _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return \"\";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c=\"\",\n context_wc=\"\",\n context_w=\"\",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data=[],\n context_data_val=0,\n context_data_position=0,\n ii;\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position ==bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","\r\nimport BLOCKvRegion from './BLOCKvRegion'\r\nimport DataObject from '../DataObject'\r\n\r\n/**\r\n * This region plugin provides access to a collection of vatoms identified by their IDs.\r\n * The 'inventory' region is much mor reliable, so if you know that your vatoms are owned bby the current user,\r\n * use the inventory region with a filter rather.\r\n *\r\n * TODO: Retry a few times\r\n *\r\n * To get an instance, call `DataPool.region('ids', [\"id1\", \"id2\"])`\r\n */\r\nexport default class VatomIDRegion extends BLOCKvRegion {\r\n /** Plugin ID */\r\n static get id () { return 'ids' }\r\n\r\n /** Constructor */\r\n constructor (dataPool, ids) {\r\n super(dataPool)\r\n \r\n // Don't cache this content\r\n this.noCache = true\r\n\r\n // Store IDs. Sort them to keep our stateKey in check.\r\n this.ids = ids.sort()\r\n }\r\n\r\n /** Our state key is the list of IDs */\r\n get stateKey () {\r\n return 'ids:' + this.ids.join(',')\r\n }\r\n\r\n /** Check if a region request matches our region */\r\n matches (id, descriptor) {\r\n // Check all filters match\r\n if (id !== 'ids') return false\r\n if (!descriptor || descriptor.length !== this.ids.length) return false\r\n for (let i = 0; i < this.ids.length; i++) {\r\n if (descriptor[i] !== this.ids[i]) {\r\n return false\r\n }\r\n }\r\n\r\n // Yes they do\r\n return true\r\n }\r\n\r\n /** Load current state from the server */\r\n async load () {\r\n // Pause websocket events\r\n this.pauseMessages()\r\n\r\n // Fetch data\r\n let response = await this.dataPool.Blockv.client.request('POST', '/v1/user/vatom/get', { ids: this.ids }, true)\r\n\r\n // Add vatom to new objects list\r\n let objects = []\r\n response.vatoms.map(v => new DataObject('vatom', v.id, v)).forEach(f => objects.push(f))\r\n\r\n // Add faces to new objects list\r\n response.faces.map(f => new DataObject('face', f.id, f)).forEach(f => objects.push(f))\r\n\r\n // Add actions to new objects list\r\n response.actions.map(a => new DataObject('action', a.name, a)).forEach(a => objects.push(a))\r\n\r\n // Add new objects\r\n this.addObjects(objects)\r\n\r\n // Resume websocket messages\r\n this.resumeMessages()\r\n\r\n // Return array of IDs\r\n return objects.map(o => o.id)\r\n }\r\n}\r\n","\r\nimport BLOCKvRegion from './BLOCKvRegion'\r\nimport Discover from '../../../client/Discover'\r\nimport DataObject from '../DataObject'\r\n\r\n/**\r\n * This region plugin provides access to a collection of vatoms that are children of another vatom.\r\n * The 'inventory' region is much mor reliable, so if you know that your vatoms are owned by the current user,\r\n * use the inventory region with a filter rather.\r\n *\r\n * To get an instance, call `DataPool.region('children', \"parent-id\")`\r\n */\r\nexport default class VatomChildrenRegion extends BLOCKvRegion {\r\n /** Plugin ID */\r\n static get id () { return 'children' }\r\n\r\n /** Constructor */\r\n constructor (dataPool, parentID) {\r\n super(dataPool)\r\n \r\n // Don't cache this content\r\n this.noCache = true\r\n\r\n // Store ID\r\n this.parentID = parentID\r\n }\r\n\r\n /** Our state key is the list of IDs */\r\n get stateKey () {\r\n return 'children:' + this.parentID\r\n }\r\n\r\n /** Check if a region request matches our region */\r\n matches (id, descriptor) {\r\n return id === 'children' && descriptor === this.parentID\r\n }\r\n\r\n /** Load current state from the server */\r\n async load () {\r\n // Pause websocket events\r\n this.pauseMessages()\r\n\r\n // Fetch data\r\n let payload = new Discover().setScope(Discover.FieldParentID, this.parentID).getPayload()\r\n let response = await this.dataPool.Blockv.client.request('POST', '/vatom/discover', payload, true)\r\n\r\n // Add vatom to new objects list\r\n let objects = []\r\n response.results.map(v => new DataObject('vatom', v.id, v)).forEach(f => objects.push(f))\r\n\r\n // Add faces to new objects list\r\n response.faces.map(f => new DataObject('face', f.id, f)).forEach(f => objects.push(f))\r\n\r\n // Add actions to new objects list\r\n response.actions.map(a => new DataObject('action', a.name, a)).forEach(a => objects.push(a))\r\n\r\n // Add new objects\r\n this.addObjects(objects)\r\n\r\n // Resume websocket messages\r\n this.resumeMessages()\r\n\r\n // Return array of IDs\r\n return objects.map(o => o.id)\r\n }\r\n}\r\n","/* gloabl Events */\nimport BLOCKvRegion from './BLOCKvRegion'\nimport DataObject from '../DataObject'\nimport Events from '../EventEmitter'\n\n/**\n * This region plugin provides access to a collection of vatoms that has been dropped within the specified region on the map.\n *\n * To get an instance, call `DataPool.region('geopos', { top_right: { lat: ..., lon: ... }, bottom_left: { lat: ..., lon: ... } })`\n */\nexport default class GeoPosRegion extends BLOCKvRegion {\n /** Plugin ID */\n static get id () { return 'geopos' }\n\n /** Constructor */\n constructor (dataPool, coordinates) {\n super(dataPool)\n // Don't cache this content\n this.noCache = true\n\n // Fail if coordinates are invalid\n if (!coordinates || !coordinates.top_right || !coordinates.top_right.lat || !coordinates.top_right.lon || !coordinates.bottom_left || !coordinates.bottom_left.lat || !coordinates.bottom_left.lon) {\n throw new Error('Please specify the top_right and bottom_left coordinates in the region descriptor.')\n }\n\n // Store coordinates\n this.coordinates = coordinates\n\n // Send region command to the WebSocket\n this.sendRegionCommand()\n\n // Listen for events\n this.onWebSocketOpen = this.onWebSocketOpen.bind(this)\n this.socket.addEventListener('connected', this.onWebSocketOpen)\n }\n\n /** Called when this region is going to be shut down */\n close () {\n super.close()\n\n // Remove listeners\n this.socket.removeEventListener('connected', this.onWebSocketOpen)\n }\n\n /** Called when the WebSocket connection re-opens */\n onWebSocketOpen () {\n this.sendRegionCommand()\n }\n\n /** Sends the region command up the websocket to enable region monitoring */\n sendRegionCommand () {\n\n // Stop if WebSocket is not connected\n if (!this.socket.isOpen)\n return\n\n // Convert our coordinates into the ones needed by the command\n let topLeft = {\n lat: Math.max(this.coordinates.top_right.lat, this.coordinates.bottom_left.lat),\n lon: Math.min(this.coordinates.top_right.lon, this.coordinates.bottom_left.lon)\n }\n let bottomRight = {\n lat: Math.min(this.coordinates.top_right.lat, this.coordinates.bottom_left.lat),\n lon: Math.max(this.coordinates.top_right.lon, this.coordinates.bottom_left.lon)\n }\n\n // Create command payload\n let cmd = {\n id: '1',\n version: '1',\n type: 'command',\n cmd: 'monitor',\n payload: {\n top_left: topLeft,\n bottom_right: bottomRight\n }\n }\n\n // Send it up\n console.log('Sending WS command: ' + JSON.stringify(cmd))\n this.dataPool.Blockv.WebSockets.sendMessage(cmd)\n }\n\n /**\n * Returns true if the object with the specified ID exists in the cache.\n *\n * @param {*} id The object's ID\n * @returns {boolean} True if the object exists.\n */\n has (id) {\n if(!super.has(id))\n return false\n \n let object = this.objects.get(id)\n\n // Check if dropped\n if (object.data && object.data['vAtom::vAtomType'] && object.data['vAtom::vAtomType'].dropped) {\n return true\n }\n }\n /** Our state key is the region */\n get stateKey () {\n return 'geopos:' + this.coordinates.top_right.lat + ',' + this.coordinates.top_right.lon + ' ' + this.coordinates.bottom_left.lat + ',' + this.coordinates.bottom_left.lon\n }\n\n /** Check if a region request matches our region */\n matches (id, descriptor) {\n // Check all filters match\n if (id !== 'geopos') return false\n if (!descriptor || !descriptor.top_right || !descriptor.bottom_left) return false\n if (descriptor.top_right.lat !== this.coordinates.top_right.lat) return false\n if (descriptor.top_right.lon !== this.coordinates.top_right.lon) return false\n if (descriptor.bottom_left.lat !== this.coordinates.bottom_left.lat) return false\n if (descriptor.bottom_left.lon !== this.coordinates.bottom_left.lon) return false\n\n // Yes they do\n return true\n }\n\n /** Load current state from the server */\n async load () {\n // Pause websocket events\n this.pauseMessages()\n\n let payload = {\n top_right: this.coordinates.top_right,\n bottom_left: this.coordinates.bottom_left,\n filter: 'all',\n limit: 10000\n }\n\n if (this.coordinates.publisher_fqdn)\n payload['publisher_fqdn'] = this.coordinates.publisher_fqdn\n // Fetch data\n let response = await this.dataPool.Blockv.client.request('POST', '/v1/vatom/geodiscover', payload, true)\n\n // Add vatom to new objects list\n let objects = []\n response.vatoms.map(v => new DataObject('vatom', v.id, v)).forEach(f => objects.push(f))\n\n // Add faces to new objects list\n response.faces.map(f => new DataObject('face', f.id, f)).forEach(f => objects.push(f))\n\n // Add actions to new objects list\n response.actions.map(a => new DataObject('action', a.name, a)).forEach(a => objects.push(a))\n\n // Add new objects\n this.addObjects(objects)\n\n // Resume websocket messages\n this.resumeMessages()\n\n // Return array of IDs\n return objects.map(o => o.id)\n }\n\n /** This region type should not be cached */\n save () {}\n\n /** Don't return vatoms which are not dropped */\n map (object) {\n if(this.coordinates.publisher_fqdn && object.data && object.data['vAtom::vAtomType'] && object.data['vAtom::vAtomType'].publisher_fqdn !== this.coordinates.publisher_fqdn)\n return null\n \n // Check if dropped\n if (object.data && object.data['vAtom::vAtomType'] && object.data['vAtom::vAtomType'].dropped) {\n return super.map(object)\n }\n // Vatom is not dropped!\n return null\n }\n\n /**\n * Processes a WebSocket message.\n *\n * @private Called by BVWebSocketRegion.\n * @abstract Subclasses can override to process other WebSocket messages. Always call super.processMessage(msg) though.\n * @param {Object} msg The raw JSON from the websocket event message\n */\n async processMessage(msg) {\n super.processMessage(msg)\n\n // Check for map add event\n if (msg.msg_type === 'map' && msg.payload.op === 'add') {\n\n // A vatom was added to the map. Fetch vatom, add components to data pool\n let objects = []\n let response = await this.dataPool.Blockv.client.request('POST', '/v1/user/vatom/get', { ids: [msg.payload.vatom_id] }, true)\n let vatom = new DataObject('vatom', response.vatoms[0].id, response.vatoms[0])\n objects.push(vatom)\n response.faces.map(f => new DataObject('face', f.id, f)).forEach(f => objects.push(f))\n response.actions.map(a => new DataObject('action', a.name, a)).forEach(a => objects.push(a))\n this.addObjects(objects)\n return\n\n } else if (msg.msg_type === 'map' && msg.payload.op === 'remove') {\n\n // A vatom was removed from the map. Undrop it\n this.preemptiveChange(msg.payload.vatom_id, 'vAtom::vAtomType.dropped', false)\n return\n\n } else if (msg.msg_type == 'state_update') {\n\n // Get vatom ID\n let vatomID = msg.payload && msg.payload.id\n if (!vatomID) {\n throw new Error(`Got websocket message with no vatom ID in it.`)\n }\n\n // Check if this is a newly dropped vatom\n let dropped = msg.payload.new_object && msg.payload.new_object['vAtom::vAtomType'] && msg.payload.new_object['vAtom::vAtomType'].dropped\n if (!dropped) {\n return\n }\n\n // Check if we already have this vatom\n if (this.objects.get(vatomID)) {\n return\n }\n\n // A new vatom was dropped! Pause WebSocket message processing\n this.pauseMessages()\n\n // Fetch vatom payload\n this.dataPool.Blockv.client.request('POST', '/v1/user/vatom/get', { ids: [vatomID] }, true).then(response => {\n // Add vatom to new objects list\n let objects = []\n objects.push(new DataObject('vatom', response.vatoms[0].id, response.vatoms[0]))\n\n // Add faces to new objects list\n response.faces.map(f => new DataObject('face', f.id, f)).forEach(f => objects.push(f))\n\n // Add actions to new objects list\n response.actions.map(a => new DataObject('action', a.name, a)).forEach(a => objects.push(a))\n\n // Add new objects\n this.addObjects(objects)\n }).catch(err => {\n // Log it\n console.warn(`[DataPool > GeoPosRegion] A vatom was dropped, but we could not fetch it's payload! ` + err.message)\n }).then(e => {\n // Resume message processing\n this.resumeMessages()\n })\n\n }\n }\n}\n","var atob = require('./atob');\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = '0' + code;\n }\n return '%' + code;\n }));\n}\n\nmodule.exports = function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try{\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n};\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n","var assert = require('./assert');\n\nmodule.exports = function() {\n var args = [].slice.call(arguments);\n args.push({\n IS_REASSERT_OPTS: true,\n is_usage: true,\n });\n return assert.apply(this, args);\n};\n","var isNodejs = require('./utils/isNodejs');\n\nlog.logify_input = logify_input;\n\nmodule.exports = log;\n\nvar project_name = 'Reassert';\nvar stringification_name = '(Reassert-stringification)';\n\nfunction log() {\n for(var i in arguments) {\n var input = arguments[i];\n var str = logify_input(input);\n console.log(str);\n }\n}\n\nfunction logify_input(input) {\n var str = get_str(input);\n\n // We cap huge strings to make scrolling not impossible\n var LIMIT = 10000;\n if( str && str.length > LIMIT ) {\n return str.slice(0, LIMIT)+'[CROPPED-BY-REASSERT]';\n }\n\n return str;\n}\n\nfunction get_str(input) {\n if( ! input ) {\n return input;\n }\n\n if( input.constructor === Array ) {\n return stringify_object(input);\n }\n\n var PREFIX_UGLY = '[object ';\n var input_str = toStr(input);\n if( input_str.slice(0, PREFIX_UGLY.length) === PREFIX_UGLY ) {\n return stringify_object(input);\n }\n return input_str;\n}\n\nfunction stringify_object(obj) {\n var obj_copy = get_prettier_copy(obj);\n try {\n return JSON.stringify(obj_copy, null, 2);\n } catch(e) {\n if( isNodejs() ) {\n var util = require('util');\n return util.inspect(obj);\n }\n return toStr(obj_copy)+'['+e+'][Error]'+stringification_name;\n }\n}\n\nfunction get_prettier_copy(el, parent_objects=[]) {\n if( ! (el instanceof Object) ) {\n return el;\n }\n\n if( el instanceof RegExp ) {\n if( ! el.toJSON ) {\n el.toJSON = function() {\n var str = '[RegExp: '+toStr(el)+']';\n return str;\n };\n }\n return el;\n }\n if( el instanceof Function ) {\n if( ! el.toJSON ) {\n el.toJSON = function() {\n var str = (\n ! el.name ? (\n '[Function]'\n ) : (\n '[Function: '+el.name+']'\n )\n );\n return str;\n };\n }\n return el;\n }\n\n if( el.constructor !== Object && el.constructor !== Array ) {\n return el;\n }\n\n if( parent_objects.includes(el) ) {\n return '[ALREADY_PRINTED_COPY]';\n }\n parent_objects = [el, ...parent_objects];\n\n var el_copy = new (el.constructor);\n for(var key in el) {\n el_copy[key] = get_prettier_copy(el[key], parent_objects);\n }\n return el_copy;\n}\n\nfunction toStr(thing) {\n if( typeof thing === \"object\" && !thing.toString ) {\n return '[object Object]';\n }\n return (''+thing);\n}\n","module.exports = {tableFormat, titleFormat};\n\nfunction tableFormat(rows, {padding=2, indent=' '}={}) {\n const columnWidths = [];\n\n rows.forEach(cells => {\n cells.forEach((cell, columnNumber) => {\n columnWidths[columnNumber] = (\n Math.max(\n getStringWidth(cell),\n columnWidths[columnNumber]||0\n )\n );\n });\n });\n\n const lines = [];\n\n rows.forEach(cells => {\n let line = indent;\n cells.forEach((cell, columnNumber) => {\n const colWidth = columnWidths[columnNumber];\n const isLastColumn = columnNumber===cells.length-1;\n const paddingRight = (\n isLastColumn ? (\n ''\n ) : (\n getBar(colWidth+padding, ' ').slice(getStringWidth(cell))\n )\n );\n line += cell + paddingRight;\n });\n lines.push(line);\n });\n\n return lines.join('\\n');\n}\n\nfunction titleFormat(title, {padding=3}={}) {\n // resolve cyclic dependency reassert => @brillout/format-text => reassert\n const assert_warning = require('reassert/warning');\n\n const min_bar_length = 40;\n title = ' '+title+' ';\n const titleWidth = getStringWidth(title);\n const barWidth = Math.max(min_bar_length, titleWidth+padding*2);\n const stringWidth = require('string-width');\n const leftWidth = Math.floor((barWidth - titleWidth) / 2);\n const bar = getBar(barWidth);\n const title_bar = getBar(leftWidth) + title + getBar(barWidth - leftWidth - titleWidth);\n assert_warning(getStringWidth(bar)===getStringWidth(title_bar));\n return (\n [\n bar,\n title_bar,\n bar,\n ].join('\\n')\n );\n}\nfunction getStringWidth(str) {\n if( ! isNodejs() ) {\n return str.length;\n }\n const stringWidth = eval('require')('string-width');\n return stringWidth(str);\n}\nfunction isNodejs() {\n return typeof process !== \"undefined\" && typeof window === \"undefined\";\n}\n\nfunction getBar(barWidth, filler='*') {\n return new Array(barWidth).fill(filler).join('');\n}\n","var assert = require('./assert');\n\nmodule.exports = function() {\n var args = [].slice.call(arguments);\n args.push({\n IS_REASSERT_OPTS: true,\n is_warning: true,\n });\n return assert.apply(this, args);\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\n\nmodule.exports = str => {\n\tif (typeof str !== 'string' || str.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstr = stripAnsi(str);\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst code = str.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = input => typeof input === 'string' ? input.replace(ansiRegex(), '') : input;\n","'use strict';\n\nmodule.exports = () => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[a-zA-Z\\\\d]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PRZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, 'g');\n};\n","'use strict';\n/* eslint-disable yoda */\nmodule.exports = x => {\n\tif (Number.isNaN(x)) {\n\t\treturn false;\n\t}\n\n\t// code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tx >= 0x1100 && (\n\t\t\tx <= 0x115f || // Hangul Jamo\n\t\t\tx === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tx === 0x232a || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= x && x <= 0x4dbf) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4e00 <= x && x <= 0xa4c6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xa960 <= x && x <= 0xa97c) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xac00 <= x && x <= 0xd7a3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xf900 <= x && x <= 0xfaff) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xfe10 <= x && x <= 0xfe19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xfe30 <= x && x <= 0xfe6b) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xff01 <= x && x <= 0xff60) ||\n\t\t\t(0xffe0 <= x && x <= 0xffe6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1b000 <= x && x <= 0x1b001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1f200 <= x && x <= 0x1f251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= x && x <= 0x3fffd)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n","\r\n/**\r\n * This is Version 2 of the Mempool. This version supports region monitoring, as well as timed updates.\r\n * Once this class is generic enough and the Data Pool Protocol is implemented, we can split this out into it's own npm module.\r\n *\r\n * This aims to follow what is described in https://github.com/BLOCKvIO/Data-Pool-Protocol/blob/master/Data%20Pool%20Protocol.md\r\n *\r\n */\r\nexport default class DataPool {\r\n constructor () {\r\n // Region plugins\r\n this.plugins = [\r\n require('./plugins/InventoryRegion').default,\r\n require('./plugins/VatomIDRegion').default,\r\n require('./plugins/VatomChildrenRegion').default,\r\n require('./plugins/GeoPosRegion').default\r\n ]\r\n\r\n // Currently active regions\r\n this.regions = []\r\n\r\n // Session information\r\n this.sessionInfo = {}\r\n }\r\n\r\n /**\r\n * Fetches or creates a vatom region.\r\n *\r\n * @param {string} id The plugin ID.\r\n * @param {*} descriptor Region-specific filtering information. See plugins for more info.\r\n */\r\n region (id, descriptor) {\r\n // Find existing region\r\n let region = this.regions.find(r => r.matches(id, descriptor))\r\n if (region) {\r\n return region\r\n }\r\n // We need to create a new region. Find region plugin\r\n let Region = this.plugins.find(p => p.id === id)\r\n if (!Region) {\r\n throw new Error(`Region with ID '${id}' not found.`)\r\n }\r\n // Create and store region\r\n region = new Region(this, descriptor)\r\n this.regions.push(region)\r\n\r\n // Return new region\r\n return region\r\n }\r\n\r\n /** Removes the specified region */\r\n removeRegion (region) {\r\n for (let i = 0; i < this.regions.length; i++) {\r\n if (this.regions[i] === region) {\r\n return this.regions.splice(i, 1)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update session-specific information used by plugins.\r\n */\r\n setSessionInfo (info) {\r\n // Store it\r\n this.sessionInfo = info\r\n\r\n // Notify regions\r\n for (let r of this.regions) {\r\n r.onSessionInfoChanged(info)\r\n }\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\nimport jwtDecode from 'jwt-decode'\r\n\r\n/* global window */\r\n\r\nexport default class UserManager {\r\n constructor (UserApi, store) {\r\n this.UserApi = UserApi\r\n this.store = store\r\n }\r\n\r\n /**\r\n * An Alternate version of the register function\r\n * @param {Object} registration An Object containing all the information to register a user.\r\n * @return {Promise<Object>} returns a success Object containing user specific information\r\n */\r\n register (registration) {\r\n return this.UserApi.register(registration)\r\n }\r\n\r\n /**\r\n * Allows the user to login to the platform\r\n * @param {String} token Email / Phone Number of the user\r\n * @param {String} tokenType Description of the token : ie. \"phone_number\" or \"email\"\r\n * @param {String} password The password that the user has set\r\n * @return {Promise<Object>} returns a object containing the user that has logged in.\r\n */\r\n login (token, tokenType, password) {\r\n return this.UserApi.login(token, tokenType, password)\r\n }\r\n\r\n /**\r\n * Login with an Account without registering. A unique login string is generated by the server.\r\n * @param {String} guestId A String generated by the server used to login.\r\n * A Guest account can be made into a registered account by patching\r\n * @return {Promise<Object>} A Object that contains the guest user that was logged in.\r\n */\r\n loginGuest (guestId) {\r\n return this.UserApi.loginGuest(guestId)\r\n }\r\n\r\n /**\r\n * Logs out the currently logged in user.\r\n * @return {Promise<Object>} Logout success message\r\n */\r\n logout (noRequest = false) {\r\n return this.UserApi.logout(noRequest)\r\n }\r\n\r\n /**\r\n * Logs the user in via OAuth in a browser popup window.\r\n * NOTE: This is a private method, subject to change once more OAuth flows have been fully implemented on the backend.\r\n * @private\r\n * @returns {Promise<boolean>} `true` if login completed, or `false` if login was cancelled by the user.\r\n */\r\n loginOAuthPopup() {\r\n return this.UserApi.loginOAuthPopup()\r\n }\r\n\r\n /**\r\n * Gets information about the currently logged in user.\r\n * @return {Promise<Object>} Contains the users information such as ID, Avatar, Name etc.\r\n */\r\n getCurrentUser () {\r\n return this.UserApi.getCurrentUser()\r\n }\r\n\r\n /**\r\n * Returns a list of user tokens\r\n * @return {Promise<Object>} An Object containing a list of Email Address's and Phone Number's.\r\n */\r\n getCurrentUserTokens () {\r\n return this.UserApi.getUserTokens()\r\n }\r\n\r\n /**\r\n * Allows the uploading of a new avatar for the user.\r\n * @param {FormData} formData Uploads the FormData containing the new avatar for the user\r\n * @return {Promise<Object>} An Object containing a upload success message\r\n */\r\n uploadAvatar (formData) {\r\n return this.UserApi.uploadAvatar(formData)\r\n }\r\n\r\n /**\r\n * Allows the user to be edited\r\n * @param {Object} payload A payload containg the fields to be changed for the user.\r\n * @return {Promise<Object>} returns a user Object containing the updated users info.\r\n */\r\n updateUser (payload) {\r\n return this.UserApi.updateUser(payload)\r\n }\r\n\r\n /**\r\n * Returns the Access Token\r\n * @return {Promise<Object>} Returns a Object containing the Access Token String.\r\n */\r\n getAccessToken () {\r\n return this.UserApi.getAccessToken()\r\n }\r\n\r\n /**\r\n * Automatically Encodes the Asset Provides URI's\r\n * @param {String} url The URL that needs to be encoded\r\n */\r\n encodeAssetProvider (url) {\r\n return this.UserApi.encodeAssetProvider(url)\r\n }\r\n\r\n /**\r\n * Sends a Verification Token to verify the token is valid\r\n * @param {String} token Phone Number / Email Address\r\n * @param {String} token_type Description of the Token above ie. \"phone_number\" / \"email\"\r\n * @return {} An Email / SMS will be sent to the token with a verification code.\r\n */\r\n sendTokenVerification (token, tokenType) {\r\n return this.UserApi.sendTokenVerification(token, tokenType)\r\n }\r\n\r\n getRefreshToken () {\r\n return this.UserApi.getRefreshToken()\r\n }\r\n\r\n setRefreshToken (token) {\r\n return this.UserApi.setRefreshToken(token)\r\n }\r\n\r\n /**\r\n * Verify a users Token\r\n * @param {Object} verify An Object containing the token, token_type and the verification code.\r\n * {\"token\" : \"someone@blockv.org\", \"token_type\" : \"email\", \"verify_code\" : \"00000\" }\r\n * @return {Promise<Object>} An Object containing the outcome of the verification of the token.\r\n */\r\n verifyUserToken (verify) {\r\n return this.UserApi.verifyUserToken(verify)\r\n }\r\n\r\n /**\r\n * Allows additional tokens to be added to the user\r\n * @param {Object} payload An Object containing the tokens that need to be added to the user.\r\n * @return {Promise<Object>} An Object with the updated user profile.\r\n */\r\n addUserToken (payload) {\r\n return this.UserApi.addUserToken(payload)\r\n }\r\n\r\n /**\r\n * Sets the token to be the primary option\r\n * @param {[type]} tokenID id of the token that needs to be set as the defualt\r\n */\r\n setDefaultToken (tokenID) {\r\n return this.UserApi.setDefaultToken(tokenID)\r\n }\r\n\r\n /**\r\n * Removes a Token from the user's profile.\r\n * @param {String} tokenId ID of the token that needs to be deleted\r\n * @return {Promise<Object>} A Success / Faile object with the outcome of the deletion.\r\n */\r\n deleteUserToken (tokenId) {\r\n return this.UserApi.deleteUserToken(tokenId)\r\n }\r\n\r\n getGuestToken () {\r\n return this.UserApi.getGuestToken()\r\n }\r\n\r\n /**\r\n * Sends a verification token to the token that was supplied.\r\n * NB! this will reset the current password.\r\n * @param {String} token The Token that needs to be reset (Phone Number / Email Address)\r\n * @param {String} token_type Description of the Token to be reset\r\n */\r\n resetPassword (token, tokenType) {\r\n return this.UserApi.resetPassword(token, tokenType)\r\n }\r\n\r\n /**\r\n * Returns a Public User Profile\r\n * @param {String} userID Public User ID\r\n * @return {Promise<Object>} Returns a Public User Object\r\n */\r\n getPublicUserProfile (userID) {\r\n return this.UserApi.getPublicUserProfile(userID)\r\n }\r\n\r\n addRedeemable (payload) {\r\n return this.UserApi.addRedeemable(payload)\r\n }\r\n\r\n /**\r\n * Checked to see if the refresh token is valid\r\n * @return {Boolean} returns True / False if the refresh token is valid\r\n */\r\n get isLoggedIn () {\r\n // stop if no access provider credentials exist\r\n if (!this.store.assetProvider)\r\n return false\r\n // define our vars\r\n let decodedToken\r\n let nowDate\r\n let expirationTime\r\n const { refreshToken } = this.store\r\n // if no refreshToken\r\n if (!refreshToken) {\r\n return false\r\n }\r\n try {\r\n // decode token\r\n decodedToken = jwtDecode(refreshToken)\r\n expirationTime = (decodedToken.exp * 1000)\r\n nowDate = Date.now()\r\n // quick calc to determine if the token has expired\r\n return nowDate < (expirationTime - 30000)\r\n } catch (e) {\r\n // decoding fails\r\n return false\r\n }\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n\r\nimport Vatom from '../../../../model/Vatom'\r\n\r\nexport default class VatomApi {\r\n constructor (client) {\r\n this.client = client\r\n }\r\n\r\n getActions (templateID) {\r\n return this.client.request('GET', `/v1/user/actions/${templateID}`, {}, true)\r\n .then((data) => {\r\n const len = data.length\r\n const actions = []\r\n for (let i = 0; i < len;) {\r\n const action = data[i].name.split('::Action::')\r\n actions.push(\r\n {\r\n template_id: action[0],\r\n action: action[1]\r\n }\r\n )\r\n i += 1\r\n }\r\n return actions\r\n })\r\n }\r\n\r\n performAction (action, payload) {\r\n return this.client.request('POST', `/v1/user/vatom/action/${action}`, payload, true).then(data => data.main.output)\r\n }\r\n\r\n getUserInventory (payload) {\r\n return this.client.request('POST', '/v1/user/vatom/inventory', payload, true).then((data) => {\r\n const { actions, faces, vatoms } = data\r\n\r\n const actionsArray = []\r\n const facesArray = []\r\n const vatomsArray = []\r\n // eslint-disable-next-line\r\n for (let a of actions) {\r\n const aName = a.name.split('::Action::')\r\n const aKey = aName[0]\r\n actionsArray.push({\r\n template: aKey,\r\n action: aName[1],\r\n meta: a.meta,\r\n properties: a.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let f of faces) {\r\n facesArray.push({\r\n template: f.template,\r\n id: f.id,\r\n meta: f.meta,\r\n properties: f.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let v of vatoms) {\r\n const { template } = v['vAtom::vAtomType']\r\n if (template !== 'vatomic::v1::vAtom::Avatar') {\r\n const obj = new Vatom(v, facesArray.filter(f => f.template === template), actionsArray.filter(a => a.template === template))\r\n vatomsArray.push(obj)\r\n }\r\n }\r\n return vatomsArray\r\n })\r\n }\r\n\r\n getUserVatoms (payload) {\r\n return this.client.request('POST', '/v1/user/vatom/get', payload, true).then((data) => {\r\n const { actions, faces, vatoms } = data\r\n\r\n const actionsArray = []\r\n const facesArray = []\r\n const vatomsArray = []\r\n // eslint-disable-next-line\r\n for (let a of actions) {\r\n const aName = a.name.split('::Action::')\r\n const aKey = aName[0]\r\n actionsArray.push({\r\n template: aKey,\r\n action: aName[1],\r\n meta: a.meta,\r\n properties: a.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let f of faces) {\r\n facesArray.push({\r\n template: f.template,\r\n id: f.id,\r\n meta: f.meta,\r\n properties: f.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let v of vatoms) {\r\n const { template } = v['vAtom::vAtomType']\r\n const obj = new Vatom(v, facesArray.filter(f => f.template === template), actionsArray.filter(a => a.template === template))\r\n vatomsArray.push(obj)\r\n }\r\n return vatomsArray\r\n })\r\n }\r\n\r\n geoDiscover (payload) {\r\n return this.client.request('POST', '/v1/vatom/geodiscover', payload, true).then((data) => {\r\n const { actions, faces, vatoms } = data\r\n\r\n const actionsArray = []\r\n const facesArray = []\r\n const vatomsArray = []\r\n // eslint-disable-next-line\r\n for (let a of actions) {\r\n const aName = a.name.split('::Action::')\r\n const aKey = aName[0]\r\n actionsArray.push({\r\n template: aKey,\r\n action: aName[1],\r\n meta: a.meta,\r\n properties: a.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let f of faces) {\r\n facesArray.push({\r\n template: f.template,\r\n id: f.id,\r\n meta: f.meta,\r\n properties: f.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let v of vatoms) {\r\n const { template } = v['vAtom::vAtomType']\r\n const obj = new Vatom(v, facesArray.filter(f => f.template === template), actionsArray.filter(a => a.template === template))\r\n vatomsArray.push(obj)\r\n }\r\n return vatomsArray\r\n })\r\n }\r\n\r\n geoDiscoverGroups (payload) {\r\n return this.client.request('POST', '/v1/vatom/geodiscovergroups', payload, true).then(data => data)\r\n }\r\n\r\n getVatomChildren (parentID) {\r\n return this.client.request('POST', '/v1/vatom/discover', { \r\n scope: {\r\n key: \"vAtom::vAtomType.parent_id\" ,\r\n value: parentID\r\n },\r\n return: {\r\n type: \"*\",\r\n fields: []\r\n }\r\n }, true).then(data => {\r\n const { actions, faces, results } = data\r\n const vatoms = results\r\n\r\n const actionsArray = []\r\n const facesArray = []\r\n const vatomsArray = []\r\n // eslint-disable-next-line\r\n for (let a of actions) {\r\n const aName = a.name.split('::Action::')\r\n const aKey = aName[0]\r\n actionsArray.push({\r\n template: aKey,\r\n action: aName[1],\r\n meta: a.meta,\r\n properties: a.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let f of faces) {\r\n facesArray.push({\r\n template: f.template,\r\n id: f.id,\r\n meta: f.meta,\r\n properties: f.properties\r\n })\r\n }\r\n // eslint-disable-next-line\r\n for (let v of vatoms) {\r\n const { template } = v['vAtom::vAtomType']\r\n const obj = new Vatom(v, facesArray.filter(f => f.template === template), actionsArray.filter(a => a.template === template))\r\n vatomsArray.push(obj)\r\n }\r\n return vatomsArray\r\n })\r\n }\r\n\r\n setParent (payload) {\r\n return this.client.request('PATCH', '/v1/vatoms', payload, true).then(data => data)\r\n }\r\n\r\n trashVatom (vatomID) {\r\n const payload = {\r\n 'this.id': vatomID\r\n }\r\n return this.client.request('POST', '/v1/user/vatom/trash', payload, true).then(data => data)\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\nimport VatomApi from '../../internal/net/rest/api/VatomApi'\r\nexport default class Vatoms {\r\n constructor (blockv) {\r\n this.Blockv = blockv\r\n this.vatomApi = new VatomApi(blockv.client)\r\n }\r\n\r\n /**\r\n * Returns a list of actions that can be performed on a template\r\n * @param {[String]} templateID Template ID is the vAtom template iD\r\n * @return {[Promise<Object>]} returns a object containing a list of available actions\r\n */\r\n\r\n getActions (templateID) {\r\n return this.vatomApi.getActions(templateID)\r\n }\r\n\r\n /**\r\n * [performAction description]\r\n * @param {String} vatomId id of the vatom to perform action\r\n * @param {String} action can be either of the following : Drop, Pickup , Transfer , Require\r\n * @param {Object} payload contains geo-coordianates or anything else sent along with vatomid\r\n * @return {Promise<Object>} json payload nested\r\n */\r\n\r\n transferTo (user, actionName = 'Transfer', vatomId) {\r\n // Check if user is a VatomUser\r\n var payload = {}\r\n if (typeof user === 'string') {\r\n // Check if string is email or phone number\r\n if (/^0x[a-fA-F0-9]{40}$/.test(user)) {\r\n // HACK: Sending to an Ethereum address, append \"Eth\" to the action name\r\n if (!actionName.startsWith('Eth')) {\r\n actionName = 'Eth' + actionName\r\n }\r\n\r\n // Use this address\r\n payload['new.owner.eth_address'] = user\r\n } else if (user.indexOf('@') !== -1) {\r\n payload['new.owner.email'] = user\r\n } else if (user.indexOf('+') === 0) {\r\n payload['new.owner.phone_number'] = user\r\n } else {\r\n payload['new.owner.id'] = user\r\n }\r\n } else {\r\n // This must be a VatomUser, fetch the identifying property\r\n if (user.userID) {\r\n payload['new.owner.id'] = user.userID\r\n } else if (user.phoneNumber) {\r\n payload['new.owner.phone_number'] = user.phoneNumber\r\n } else if (user.email) {\r\n payload['new.owner.email'] = user.email\r\n } else {\r\n return Promise.reject({ code: 'INVALID_PARAMETER', message: `The user object supplied didn't have any identifying fields. It must have either a userID, an email, or a phoneNumber.` })\r\n }\r\n }\r\n\r\n // Send request\r\n return this.performAction(vatomId, actionName, payload)\r\n }\r\n\r\n performAction (vatomId, action, payload) {\r\n let undos = []\r\n switch (action) {\r\n case 'Transfer':\r\n undos.push(this.Blockv.dataPool.region('inventory').preemptiveChange(vatomId, 'vAtom::vAtomType.owner', '.'))\r\n break\r\n\r\n case 'Drop':\r\n undos.push(this.Blockv.dataPool.region('inventory').preemptiveChange(vatomId, 'vAtom::vAtomType.geo_pos', payload))\r\n undos.push(this.Blockv.dataPool.region('inventory').preemptiveChange(vatomId, 'vAtom::vAtomType.dropped', true))\r\n break\r\n\r\n case 'Pickup':\r\n undos.push(this.Blockv.dataPool.region('inventory').preemptiveChange(vatomId, 'vAtom::vAtomType.dropped', false))\r\n break\r\n\r\n case 'Redeem':\r\n undos.push(this.Blockv.dataPool.region('inventory').preemptiveChange(vatomId, 'vAtom::vAtomType.owner', '.'))\r\n break\r\n\r\n default:\r\n break\r\n }\r\n\r\n return this.vatomApi.performAction(action, Object.assign({ 'this.id': vatomId }, payload)).catch(err => {\r\n undos.map(u => u())\r\n throw err\r\n })\r\n }\r\n\r\n /** Called to combine the specified vatom into this one. Note that some faces override the Combine action,\r\n * so in order to get those actions as well you should use `combineWith()` on `VatomView` instead. */\r\n combineWith (vatom, otherVatom) {\r\n // Pre-emptively set the parent ID\r\n let undo = this.Blockv.dataPool.region('inventory').preemptiveChange(otherVatom.id, 'vAtom::vAtomType.parent_id', vatom.id)\r\n // Set parent\r\n return this.Blockv.client.request('PATCH', '/v1/vatoms', { ids: [otherVatom.id], parent_id: vatom.id }, true).catch(err => {\r\n // Failed, reset vatom reference\r\n undo()\r\n throw err\r\n })\r\n }\r\n\r\n /** Called to remove all child vatoms from this vatom */\r\n split (vatom) {\r\n // Get vatom's parent ID\r\n let newParentID = vatom.properties.parent_id || '.'\r\n // Get all children\r\n return this.getVatomChildren(vatom.id).then(children => {\r\n // Remove parent IDs\r\n return Promise.all(children.map(child => {\r\n // Pre-emptively update parent ID\r\n let undo = this.Blockv.dataPool.region('inventory').preemptiveChange(child.id, 'vAtom::vAtomType.parent_id', newParentID)\r\n // Do patch\r\n return this.Blockv.client.request('PATCH', '/v1/vatoms', { ids: [child.id], parent_id: newParentID }, true).catch(err => {\r\n // Failed, reset vatom reference\r\n undo()\r\n throw err\r\n })\r\n }))\r\n })\r\n }\r\n\r\n /**\r\n * Gets the current users vAtom inventory\r\n * @return {Promise<Array<Object>>} return a list of JSON Objects that contain the users inventory\r\n * No parameters are required for this call\r\n */\r\n\r\n getUserInventory () {\r\n return this.Blockv.dataPool.region('inventory').get()\r\n }\r\n\r\n /**\r\n * Gets a vAtom based on the vAtom ID\r\n * @param {[String]} vatomId ID of the vAtom that is being searched for\r\n * @return {[Promise<Object>} returns a JSON Object containing the vAtom.\r\n */\r\n\r\n async getUserVatoms (vatomIds) {\r\n // Make sure it's an array\r\n if (typeof vatomIds === 'string') {\r\n vatomIds = [vatomIds]\r\n }\r\n\r\n // Load all from inventory\r\n let vatoms = []\r\n for (let id of vatomIds) {\r\n let vatom = await this.Blockv.dataPool.region('inventory').getItem(id)\r\n if (vatom) {\r\n vatoms.push(vatom)\r\n } else {\r\n break\r\n }\r\n }\r\n // If all found, stop\r\n if (vatoms.length === vatomIds.length) {\r\n return vatoms\r\n }\r\n\r\n // Not all the vatoms were in the inventory, create a new region\r\n return this.Blockv.dataPool.region('ids', vatomIds).get()\r\n }\r\n\r\n /**\r\n * Gets a list of vAtoms based on the coordinates.\r\n * @param {[Object]} bottomLeft containing a \"lat\" and \"lon\" coordinate\r\n * @param {[Object]} topRight containing a \"lat\" and \"lon\" coordinate\r\n * @param {[String]} filter defaults to \"all\"\r\n * @return {[Promise<Object>} returns a list of vAtoms, faces and actions\r\n */\r\n geoDiscover (bottomLeft, topRight, filter = 'vatoms') {\r\n const payload = {\r\n bottom_left: {\r\n lat: bottomLeft.lat,\r\n lon: bottomLeft.lon\r\n },\r\n top_right: {\r\n lat: topRight.lat,\r\n lon: topRight.lon\r\n },\r\n filter\r\n }\r\n\r\n return this.vatomApi.geoDiscover(payload)\r\n }\r\n\r\n /**\r\n * Discover groups of vAtoms with Keys\r\n * @param {Object} bottomLeft contains a lat and lon coordinate.\r\n * Coordinate must be integers and not string\r\n * @param {Object} topRight contains a lat and lon coordinate.\r\n * Coordinate must be integers and not strings\r\n * @param {Integer} precision 1 - 12 defines the accuracy of the combination.\r\n * @param {String} filter defaults to all\r\n * @return {Promise<Object>} Returns a list of groups\r\n */\r\n geoDiscoverGroups (bottomLeft, topRight, precision = 2, filter = 'all') {\r\n const payload = {\r\n bottom_left: {\r\n lat: bottomLeft.lat,\r\n lon: bottomLeft.lon\r\n },\r\n top_right: {\r\n lat: topRight.lat,\r\n lon: topRight.lon\r\n },\r\n precision,\r\n filter\r\n }\r\n\r\n return this.vatomApi.geoDiscoverGroups(payload)\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} parentID ID of the vatom that you would like to list the children\r\n * @returns {Promise<Vatom[]>} Array of vatoms\r\n */\r\n getVatomChildren (parentID) {\r\n\r\n // Check if vatom is in the inventory\r\n if (this.Blockv.dataPool.region('inventory').has(parentID)) {\r\n\r\n // It is, read children from inventory region\r\n return this.Blockv.dataPool.region('inventory').get().then(children => {\r\n return children.filter(v => v.properties.parent_id === parentID)\r\n })\r\n\r\n }\r\n\r\n // Not in inventory region, read from API\r\n return this.vatomApi.getVatomChildren(parentID)\r\n \r\n }\r\n\r\n setParentID(childID, newParentID) {\r\n\r\n // Pre-emptively update parent ID\r\n let undo = this.Blockv.dataPool.region('inventory').preemptiveChange(childID, 'vAtom::vAtomType.parent_id', newParentID)\r\n\r\n // Do patch\r\n return this.Blockv.client.request('PATCH', '/v1/vatoms', { ids: [childID], parent_id: newParentID }, true).catch(err => {\r\n\r\n // Failed, reset vatom reference\r\n undo()\r\n throw err\r\n\r\n })\r\n\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} vatomIds Array of vatoms that will be changed \r\n * @param {*} parentId ID or . to set the children to\r\n */\r\n setParent (payload) {\r\n let parentPayload = {\r\n ids: [payload.id],\r\n parent_id: payload.parent_id\r\n }\r\n return this.vatomApi.setParent(parentPayload)\r\n }\r\n\r\n /**\r\n * Removes the specified vAtom from the current user's inventory\r\n * @param {String} vatomID Id of the vAtom you want to remove\r\n * @return {Promise<Object>} An object containing a success message\r\n */\r\n trashVatom (vatomID) {\r\n let undos = []\r\n undos.push(this.Blockv.dataPool.region('inventory').preemptiveChange(vatomID, 'vAtom::vAtomType.owner', '.'))\r\n return this.vatomApi.trashVatom(vatomID).catch(err => {\r\n undos.map(u => u())\r\n throw err\r\n })\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\nexport default class Activity {\r\n constructor (activityApi) {\r\n this.activityApi = activityApi\r\n }\r\n\r\n /**\r\n * Returns a list of messages of activity\r\n * @return {Promise<Object>} JSON array containing all the activity from the user.\r\n */\r\n myThreads () {\r\n return this.activityApi.threads()\r\n }\r\n\r\n /**\r\n * Returns a single activity message thread\r\n * @param {String} name Unique identifier from the myThreads response\r\n * @return {Promise<Object>} returns a detailed object containing the thread\r\n */\r\n myThreadMessages (name) {\r\n return this.activityApi.threadMessages(name)\r\n }\r\n\r\n /**\r\n * Send a message to a user that appears in the \"activity\" tab\r\n * @param {String} id id of the user that is going to receive the message\r\n * @param {String} message Message that will get sent to the user\r\n * @return {Promise<Object>} Success Object\r\n */\r\n sendMessage (id, message) {\r\n return this.activityApi.sendMessage(id, message)\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n\r\nexport default class ActivityApi {\r\n constructor (client) {\r\n this.client = client\r\n }\r\n\r\n threads () {\r\n return this.client.request('POST', '/v1/activity/mythreads', {}, true).then(data => data.threads)\r\n }\r\n\r\n threadMessages (name) {\r\n const payload = {\r\n name,\r\n cursor: '',\r\n count: 100\r\n }\r\n return this.client.request('POST', '/v1/activity/mythreadmessages', payload, true).then(data => data)\r\n }\r\n\r\n sendMessage (id, message) {\r\n const payload = {\r\n message,\r\n id\r\n }\r\n return this.client.request('POST', '/v1/user/message', payload, true).then(data => data)\r\n }\r\n}\r\n","//\r\n\r\nimport EventEmitter from '../../internal/EventEmitter'\r\nimport WebSockets from './WebSockets'\r\n\r\n// This is a wrapper around the WebSockets class, which allows for multiple sockets to be active at once.\r\n// It matches the API of that class exactly.\r\nexport default class MultiWebSockets extends EventEmitter {\r\n\r\n constructor (store, client) {\r\n super()\r\n\r\n this.store = store\r\n this.client = client\r\n this.sockets = []\r\n\r\n }\r\n\r\n /** This will be true if the connection is ready to send and receive messages */\r\n get isOpen () {\r\n\r\n // Return true if any of the websockets are open\r\n return !!this.sockets.find(s => s.isOpen)\r\n\r\n }\r\n\r\n /**\r\n * The connect function establishes a connection to the WebSocket.\r\n * @public\r\n * @return {Promise<MultiWebSockets>}\r\n */\r\n connect() {\r\n\r\n // Create sockets if needed\r\n if (this.sockets.length == 0) {\r\n\r\n // Get array of socket addresses\r\n let addresses = this.store.websocketAddress\r\n if (typeof addresses == 'string')\r\n addresses = [addresses]\r\n\r\n // Create sockets\r\n for (let address of addresses)\r\n this.sockets.push(new WebSockets(this.store, this.client, address))\r\n\r\n // Override the newly created socket's trigger() and emit() to instead trigger and emit on us\r\n for (let socket of this.sockets) {\r\n socket.trigger = this.trigger.bind(this)\r\n socket.triggerEvent = this.triggerEvent.bind(this)\r\n socket.emit = this.emit.bind(this)\r\n }\r\n\r\n }\r\n\r\n // Connect them all\r\n return Promise.all(this.sockets.map(s => s.connect())).then(e => this)\r\n\r\n }\r\n\r\n /**\r\n * This sends a message through the web socket\r\n * @param {*} cmd\r\n */\r\n sendMessage (cmd) {\r\n \r\n // Send message to all sockets\r\n for (let socket of this.sockets)\r\n socket.sendMessage(cmd)\r\n\r\n }\r\n\r\n /**\r\n * @public\r\n * Forcefully closes the Web socket.\r\n * Note: Socket will be set to null. Auto connect will be disabled.\r\n */\r\n close () {\r\n \r\n // Close all sockets\r\n for (let socket of this.sockets) socket.close()\r\n this.sockets = []\r\n \r\n }\r\n\r\n}","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\nimport DataPool from '../internal/DataPool'\r\nimport Store from '../internal/repo/Store'\r\nimport UserManager from './manager/UserManager'\r\nimport UserApi from '../internal/net/rest/api/UserApi'\r\nimport Vatoms from './manager/Vatoms'\r\nimport Activity from './manager/Activity'\r\nimport ActivityApi from '../internal/net/rest/api/ActivityApi'\r\nimport Client from '../internal/net/Client'\r\nimport MultiWebSockets from './manager/MultiWebSockets'\r\nimport EventEmitter from '../internal/EventEmitter';\r\n\r\nexport default class Blockv extends EventEmitter {\r\n constructor (payload) {\r\n super()\r\n const prefix = payload.prefix || payload.appID\r\n\r\n this.store = new Store(prefix)\r\n this.store.appID = payload.appID\r\n this.store.server = payload.server || 'https://api.blockv.io'\r\n this.store.websocketAddress = payload.websocketAddress || 'wss://newws.blockv.io'\r\n\r\n this.dataPool = new DataPool(this)\r\n this.dataPool.Blockv = this\r\n this.dataPool.disableSyncV2 = payload.disableSyncV2\r\n this.client = new Client(this)\r\n\r\n const userApi = new UserApi(this)\r\n const activityApi = new ActivityApi(this.client)\r\n\r\n this.Activity = new Activity(activityApi)\r\n this.WebSockets = new MultiWebSockets(this.store, this.client)\r\n this.UserManager = new UserManager(userApi, this.store)\r\n this.Vatoms = new Vatoms(this)\r\n\r\n if (this.UserManager.isLoggedIn) {\r\n this.dataPool.setSessionInfo({ userID: this.store.userID, client: this.client })\r\n }\r\n }\r\n}\r\n","//\r\n// BlockV AG. Copyright (c) 2018, all rights reserved.\r\n//\r\n// Licensed under the BlockV SDK License (the \"License\"); you may not use this file or\r\n// the BlockV SDK except in compliance with the License accompanying it. Unless\r\n// required by applicable law or agreed to in writing, the BlockV SDK distributed under\r\n// the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n// ANY KIND, either express or implied. See the License for the specific language\r\n// governing permissions and limitations under the License.\r\n//\r\n\r\n// This is the entry point when importing this library into a web app.\r\n\r\nexport { default } from './client/Blockv'\r\nexport { default as Discover } from './client/Discover'\r\n\r\n// Attach SDK version information to the window\r\nif (typeof window != 'undefined') window.BlockvSDKInfo = {\r\n version: require('../package.json').version\r\n}"],"sourceRoot":""}
\No newline at end of file