@tko/computed 4.0.0-beta1.0 → 4.0.0-beta1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/computed.js CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 ESM
1
+ // @tko/computed 🥊 4.0.0-beta1.3 ESM
2
2
  import {
3
3
  addDisposeCallback,
4
4
  arrayForEach,
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 CommonJS
1
+ // @tko/computed 🥊 4.0.0-beta1.3 CommonJS
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../index.ts", "../../utils/dist/array.js", "../../utils/dist/options.js", "../../utils/dist/error.js", "../../utils/dist/async.js", "../../utils/dist/ie.js", "../../utils/dist/object.js", "../../utils/dist/function.js", "../../utils/dist/symbol.js", "../../utils/dist/jquery.js", "../../utils/dist/dom/info.js", "../../utils/dist/dom/data.js", "../../utils/dist/dom/disposal.js", "../../utils/dist/dom/event.js", "../../utils/dist/dom/virtualElements.js", "../../utils/dist/dom/html.js", "../../utils/dist/dom/selectExtensions.js", "../../utils/dist/tasks.js", "../../observable/dist/dependencyDetection.js", "../../observable/dist/subscribableSymbol.js", "../../observable/dist/defer.js", "../../observable/dist/Subscription.js", "../../observable/dist/extenders.js", "../../observable/dist/subscribable.js", "../../observable/dist/observable.js", "../../observable/dist/observableArray.changeTracking.js", "../../observable/dist/observableArray.js", "../src/computed.ts", "../src/throttleExtender.ts", "../src/proxy.ts", "../src/when.ts"],
4
- "sourcesContent": ["export * from './src'\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nconst { isArray } = Array;\nexport function arrayForEach(array, action, thisArg) {\n if (arguments.length > 2) {\n action = action.bind(thisArg);\n }\n for (let i = 0, j = array.length; i < j; ++i) {\n action(array[i], i, array);\n }\n}\nexport function arrayIndexOf(array, item) {\n return (isArray(array) ? array : [...array]).indexOf(item);\n}\nexport function arrayFirst(array, predicate, predicateOwner) {\n return (isArray(array) ? array : [...array]).find(predicate, predicateOwner);\n}\nexport function arrayMap(array = [], mapping, thisArg) {\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n return array === null ? [] : Array.from(array, mapping);\n}\nexport function arrayRemoveItem(array, itemToRemove) {\n var index = arrayIndexOf(array, itemToRemove);\n if (index > 0) {\n array.splice(index, 1);\n } else if (index === 0) {\n array.shift();\n }\n}\nexport function arrayGetDistinctValues(array = []) {\n const seen = /* @__PURE__ */ new Set();\n if (array === null) {\n return [];\n }\n return (isArray(array) ? array : [...array]).filter((item) => seen.has(item) ? false : seen.add(item));\n}\nexport function arrayFilter(array, predicate, thisArg) {\n if (arguments.length > 2) {\n predicate = predicate.bind(thisArg);\n }\n return array === null ? [] : (isArray(array) ? array : [...array]).filter(predicate);\n}\nexport function arrayPushAll(array, valuesToPush) {\n if (isArray(valuesToPush)) {\n array.push.apply(array, valuesToPush);\n } else {\n for (var i = 0, j = valuesToPush.length; i < j; i++) {\n array.push(valuesToPush[i]);\n }\n }\n return array;\n}\nexport function addOrRemoveItem(array, value, included) {\n var existingEntryIndex = arrayIndexOf(typeof array.peek === \"function\" ? array.peek() : array, value);\n if (existingEntryIndex < 0) {\n if (included) {\n array.push(value);\n }\n } else {\n if (!included) {\n array.splice(existingEntryIndex, 1);\n }\n }\n}\nexport function makeArray(arrayLikeObject) {\n return Array.from(arrayLikeObject);\n}\nexport function range(min, max) {\n min = typeof min === \"function\" ? min() : min;\n max = typeof max === \"function\" ? max() : max;\n var result = [];\n for (var i = min; i <= max; i++) {\n result.push(i);\n }\n return result;\n}\nexport function findMovesInArrayComparison(left, right, limitFailedCompares) {\n if (left.length && right.length) {\n var failedCompares, l, r, leftItem, rightItem;\n for (failedCompares = l = 0; (!limitFailedCompares || failedCompares < limitFailedCompares) && (leftItem = left[l]); ++l) {\n for (r = 0; rightItem = right[r]; ++r) {\n if (leftItem.value === rightItem.value) {\n leftItem.moved = rightItem.index;\n rightItem.moved = leftItem.index;\n right.splice(r, 1);\n failedCompares = r = 0;\n break;\n }\n }\n failedCompares += r;\n }\n }\n}\nconst statusNotInOld = \"added\";\nconst statusNotInNew = \"deleted\";\nexport function compareArrays(oldArray, newArray, options) {\n options = typeof options === \"boolean\" ? { dontLimitMoves: options } : options || {};\n oldArray = oldArray || [];\n newArray = newArray || [];\n if (oldArray.length < newArray.length) {\n return compareSmallArrayToBigArray(oldArray, newArray, statusNotInOld, statusNotInNew, options);\n } else {\n return compareSmallArrayToBigArray(newArray, oldArray, statusNotInNew, statusNotInOld, options);\n }\n}\nfunction compareSmallArrayToBigArray(smlArray, bigArray, statusNotInSml, statusNotInBig, options) {\n var myMin = Math.min, myMax = Math.max, editDistanceMatrix = [], smlIndex, smlIndexMax = smlArray.length, bigIndex, bigIndexMax = bigArray.length, compareRange = bigIndexMax - smlIndexMax || 1, maxDistance = smlIndexMax + bigIndexMax + 1, thisRow, lastRow, bigIndexMaxForRow, bigIndexMinForRow;\n for (smlIndex = 0; smlIndex <= smlIndexMax; smlIndex++) {\n lastRow = thisRow;\n editDistanceMatrix.push(thisRow = []);\n bigIndexMaxForRow = myMin(bigIndexMax, smlIndex + compareRange);\n bigIndexMinForRow = myMax(0, smlIndex - 1);\n for (bigIndex = bigIndexMinForRow; bigIndex <= bigIndexMaxForRow; bigIndex++) {\n if (!bigIndex) {\n thisRow[bigIndex] = smlIndex + 1;\n } else if (!smlIndex) {\n thisRow[bigIndex] = bigIndex + 1;\n } else if (smlArray[smlIndex - 1] === bigArray[bigIndex - 1]) {\n thisRow[bigIndex] = lastRow[bigIndex - 1];\n } else {\n var northDistance = lastRow[bigIndex] || maxDistance;\n var westDistance = thisRow[bigIndex - 1] || maxDistance;\n thisRow[bigIndex] = myMin(northDistance, westDistance) + 1;\n }\n }\n }\n var editScript = [], meMinusOne, notInSml = [], notInBig = [];\n for (smlIndex = smlIndexMax, bigIndex = bigIndexMax; smlIndex || bigIndex; ) {\n meMinusOne = editDistanceMatrix[smlIndex][bigIndex] - 1;\n if (bigIndex && meMinusOne === editDistanceMatrix[smlIndex][bigIndex - 1]) {\n notInSml.push(editScript[editScript.length] = {\n \"status\": statusNotInSml,\n \"value\": bigArray[--bigIndex],\n \"index\": bigIndex\n });\n } else if (smlIndex && meMinusOne === editDistanceMatrix[smlIndex - 1][bigIndex]) {\n notInBig.push(editScript[editScript.length] = {\n \"status\": statusNotInBig,\n \"value\": smlArray[--smlIndex],\n \"index\": smlIndex\n });\n } else {\n --bigIndex;\n --smlIndex;\n if (!options.sparse) {\n editScript.push({\n \"status\": \"retained\",\n \"value\": bigArray[bigIndex]\n });\n }\n }\n }\n findMovesInArrayComparison(notInBig, notInSml, !options.dontLimitMoves && smlIndexMax * 10);\n return editScript.reverse();\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nconst options = {\n deferUpdates: false,\n useOnlyNativeEvents: false,\n protoProperty: \"__ko_proto__\",\n defaultBindingAttribute: \"data-bind\",\n allowVirtualElements: true,\n bindingGlobals: /* @__PURE__ */ Object.create(null),\n bindingProviderInstance: null,\n createChildContextWithAs: false,\n jQuery: globalThis.jQuery,\n Promise: globalThis.Promise,\n taskScheduler: null,\n debug: false,\n global: globalThis,\n document: globalThis.document,\n filters: {},\n includeDestroyed: false,\n foreachHidesDestroyed: false,\n onError: function(e) {\n throw e;\n },\n set: function(name, value) {\n options[name] = value;\n },\n getBindingHandler() {\n },\n cleanExternalData() {\n }\n};\nObject.defineProperty(options, \"$\", {\n get: function() {\n return options.jQuery;\n }\n});\nexport default options;\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport options from \"./options\";\nexport function catchFunctionErrors(delegate) {\n if (!options.onError) {\n return delegate;\n }\n return (...args) => {\n try {\n return delegate(...args);\n } catch (err) {\n options.onError(err);\n }\n };\n}\nexport function deferError(error) {\n safeSetTimeout(function() {\n throw error;\n }, 0);\n}\nexport function safeSetTimeout(handler, timeout) {\n return setTimeout(catchFunctionErrors(handler), timeout);\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { safeSetTimeout } from \"./error\";\nexport function throttle(callback, timeout) {\n var timeoutInstance;\n return function(...args) {\n if (!timeoutInstance) {\n timeoutInstance = safeSetTimeout(function() {\n timeoutInstance = void 0;\n callback(...args);\n }, timeout);\n }\n };\n}\nexport function debounce(callback, timeout) {\n var timeoutInstance;\n return function(...args) {\n clearTimeout(timeoutInstance);\n timeoutInstance = safeSetTimeout(() => callback(...args), timeout);\n };\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport options from \"./options\";\nconst ieVersion = options.document && function() {\n var version = 3, div = options.document.createElement(\"div\"), iElems = div.getElementsByTagName(\"i\");\n while (div.innerHTML = \"<!--[if gt IE \" + ++version + \"]><i></i><![endif]-->\", iElems[0]) {\n }\n if (!version) {\n const userAgent = window.navigator.userAgent;\n return ua.match(/MSIE ([^ ]+)/) || ua.match(/rv:([^ )]+)/);\n }\n return version > 4 ? version : void 0;\n}();\nconst isIe6 = ieVersion === 6;\nconst isIe7 = ieVersion === 7;\nexport { ieVersion, isIe6, isIe7 };\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nexport function hasOwnProperty(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName);\n}\nexport function isObjectLike(obj) {\n if (obj === null) {\n return false;\n }\n return typeof obj === \"object\" || typeof obj === \"function\";\n}\nexport function extend(target, source) {\n if (source) {\n for (var prop in source) {\n if (hasOwnProperty(source, prop)) {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nexport function objectForEach(obj, action) {\n for (var prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n action(prop, obj[prop]);\n }\n }\n}\nexport function objectMap(source, mapping, thisArg) {\n if (!source) {\n return source;\n }\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n var target = {};\n for (var prop in source) {\n if (hasOwnProperty(source, prop)) {\n target[prop] = mapping(source[prop], prop, source);\n }\n }\n return target;\n}\nexport function getObjectOwnProperty(obj, propName) {\n return hasOwnProperty(obj, propName) ? obj[propName] : void 0;\n}\nexport function clonePlainObjectDeep(obj, seen) {\n if (!seen) {\n seen = [];\n }\n if (!obj || typeof obj !== \"object\" || obj.constructor !== Object || seen.indexOf(obj) !== -1) {\n return obj;\n }\n seen.push(obj);\n var result = {};\n for (var prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n result[prop] = clonePlainObjectDeep(obj[prop], seen);\n }\n }\n return result;\n}\nexport function safeStringify(value) {\n const seen = /* @__PURE__ */ new Set();\n return JSON.stringify(value, (k, v) => {\n if (seen.has(v)) {\n return \"...\";\n }\n if (typeof v === \"object\") {\n seen.add(v);\n }\n return v;\n });\n}\nexport function isThenable(object) {\n return isObjectLike(object) && typeof object.then === \"function\";\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nfunction testOverwrite() {\n try {\n Object.defineProperty(function x() {\n }, \"length\", {});\n return true;\n } catch (e) {\n return false;\n }\n}\nexport const functionSupportsLengthOverwrite = testOverwrite();\nexport function overwriteLengthPropertyIfSupported(fn, descriptor) {\n if (functionSupportsLengthOverwrite) {\n Object.defineProperty(fn, \"length\", descriptor);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nexport var useSymbols = typeof Symbol === \"function\";\nexport function createSymbolOrString(identifier) {\n return useSymbols ? Symbol(identifier) : identifier;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport options from \"./options\";\nexport var jQueryInstance = options.global && options.global.jQuery;\nexport function jQuerySetInstance(jquery) {\n options.jQuery = jQueryInstance = jquery;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { arrayFirst } from \"../array\";\nexport function domNodeIsContainedBy(node, containedByNode) {\n if (node === containedByNode) {\n return true;\n }\n if (node.nodeType === 11) {\n return false;\n }\n if (containedByNode.contains) {\n return containedByNode.contains(node.nodeType !== 1 ? node.parentNode : node);\n }\n if (containedByNode.compareDocumentPosition) {\n return (containedByNode.compareDocumentPosition(node) & 16) == 16;\n }\n while (node && node != containedByNode) {\n node = node.parentNode;\n }\n return !!node;\n}\nexport function domNodeIsAttachedToDocument(node) {\n return domNodeIsContainedBy(node, node.ownerDocument.documentElement);\n}\nexport function anyDomNodeIsAttachedToDocument(nodes) {\n return !!arrayFirst(nodes, domNodeIsAttachedToDocument);\n}\nexport function tagNameLower(element) {\n return element && element.tagName && element.tagName.toLowerCase();\n}\nexport function isDomElement(obj) {\n if (window.HTMLElement) {\n return obj instanceof HTMLElement;\n } else {\n return obj && obj.tagName && obj.nodeType === 1;\n }\n}\nexport function isDocumentFragment(obj) {\n if (window.DocumentFragment) {\n return obj instanceof DocumentFragment;\n } else {\n return obj && obj.nodeType === 11;\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { ieVersion } from \"../ie\";\nconst datastoreTime = new Date().getTime();\nconst dataStoreKeyExpandoPropertyName = `__ko__${datastoreTime}`;\nconst dataStoreSymbol = Symbol(\"Knockout data\");\nvar dataStore;\nlet uniqueId = 0;\nconst modern = {\n getDataForNode(node, createIfNotFound) {\n let dataForNode = node[dataStoreSymbol];\n if (!dataForNode && createIfNotFound) {\n dataForNode = node[dataStoreSymbol] = {};\n }\n return dataForNode;\n },\n clear(node) {\n if (node[dataStoreSymbol]) {\n delete node[dataStoreSymbol];\n return true;\n }\n return false;\n }\n};\nconst IE = {\n getDataforNode(node, createIfNotFound) {\n let dataStoreKey = node[dataStoreKeyExpandoPropertyName];\n const hasExistingDataStore = dataStoreKey && dataStoreKey !== \"null\" && dataStore[dataStoreKey];\n if (!hasExistingDataStore) {\n if (!createIfNotFound) {\n return void 0;\n }\n dataStoreKey = node[dataStoreKeyExpandoPropertyName] = \"ko\" + uniqueId++;\n dataStore[dataStoreKey] = {};\n }\n return dataStore[dataStoreKey];\n },\n clear(node) {\n const dataStoreKey = node[dataStoreKeyExpandoPropertyName];\n if (dataStoreKey) {\n delete dataStore[dataStoreKey];\n node[dataStoreKeyExpandoPropertyName] = null;\n return true;\n }\n return false;\n }\n};\nconst { getDataForNode, clear } = ieVersion ? IE : modern;\nexport function nextKey() {\n return uniqueId++ + dataStoreKeyExpandoPropertyName;\n}\nfunction get(node, key) {\n const dataForNode = getDataForNode(node, false);\n return dataForNode && dataForNode[key];\n}\nfunction set(node, key, value) {\n var dataForNode = getDataForNode(node, value !== void 0);\n dataForNode && (dataForNode[key] = value);\n}\nfunction getOrSet(node, key, value) {\n const dataForNode = getDataForNode(node, true);\n return dataForNode[key] || (dataForNode[key] = value);\n}\nexport { get, set, getOrSet, clear };\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport * as domData from \"./data\";\nimport { default as options } from \"../options\";\nimport { arrayRemoveItem, arrayIndexOf } from \"../array\";\nimport { jQueryInstance } from \"../jquery\";\nvar domDataKey = domData.nextKey();\nvar cleanableNodeTypes = { 1: true, 8: true, 9: true };\nvar cleanableNodeTypesWithDescendants = { 1: true, 9: true };\nfunction getDisposeCallbacksCollection(node, createIfNotFound) {\n var allDisposeCallbacks = domData.get(node, domDataKey);\n if (allDisposeCallbacks === void 0 && createIfNotFound) {\n allDisposeCallbacks = [];\n domData.set(node, domDataKey, allDisposeCallbacks);\n }\n return allDisposeCallbacks;\n}\nfunction destroyCallbacksCollection(node) {\n domData.set(node, domDataKey, void 0);\n}\nfunction cleanSingleNode(node) {\n var callbacks = getDisposeCallbacksCollection(node, false);\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](node);\n }\n }\n domData.clear(node);\n for (let i = 0, j = otherNodeCleanerFunctions.length; i < j; ++i) {\n otherNodeCleanerFunctions[i](node);\n }\n if (options.cleanExternalData) {\n options.cleanExternalData(node);\n }\n if (cleanableNodeTypesWithDescendants[node.nodeType]) {\n cleanNodesInList(node.childNodes, true);\n }\n}\nfunction cleanNodesInList(nodeList, onlyComments) {\n const cleanedNodes = [];\n let lastCleanedNode;\n for (var i = 0; i < nodeList.length; i++) {\n if (!onlyComments || nodeList[i].nodeType === 8) {\n cleanSingleNode(cleanedNodes[cleanedNodes.length] = lastCleanedNode = nodeList[i]);\n if (nodeList[i] !== lastCleanedNode) {\n while (i-- && arrayIndexOf(cleanedNodes, nodeList[i]) === -1) {\n }\n }\n }\n }\n}\nexport function addDisposeCallback(node, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n getDisposeCallbacksCollection(node, true).push(callback);\n}\nexport function removeDisposeCallback(node, callback) {\n var callbacksCollection = getDisposeCallbacksCollection(node, false);\n if (callbacksCollection) {\n arrayRemoveItem(callbacksCollection, callback);\n if (callbacksCollection.length === 0) {\n destroyCallbacksCollection(node);\n }\n }\n}\nexport function cleanNode(node) {\n if (cleanableNodeTypes[node.nodeType]) {\n cleanSingleNode(node);\n if (cleanableNodeTypesWithDescendants[node.nodeType]) {\n cleanNodesInList(node.getElementsByTagName(\"*\"));\n }\n }\n return node;\n}\nexport function removeNode(node) {\n cleanNode(node);\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nexport const otherNodeCleanerFunctions = [];\nexport function addCleaner(fn) {\n otherNodeCleanerFunctions.push(fn);\n}\nexport function removeCleaner(fn) {\n const fnIndex = otherNodeCleanerFunctions.indexOf(fn);\n if (fnIndex >= 0) {\n otherNodeCleanerFunctions.splice(fnIndex, 1);\n }\n}\nexport function cleanjQueryData(node) {\n var jQueryCleanNodeFn = jQueryInstance ? jQueryInstance.cleanData : null;\n if (jQueryCleanNodeFn) {\n jQueryCleanNodeFn([node]);\n }\n}\notherNodeCleanerFunctions.push(cleanjQueryData);\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { objectForEach } from \"../object\";\nimport { jQueryInstance } from \"../jquery\";\nimport { ieVersion } from \"../ie\";\nimport { catchFunctionErrors } from \"../error\";\nimport { tagNameLower } from \"./info\";\nimport { addDisposeCallback } from \"./disposal\";\nimport options from \"../options\";\nvar knownEvents = {}, knownEventTypesByEventName = {};\nvar keyEventTypeName = options.global.navigator && /Firefox\\/2/i.test(options.global.navigator.userAgent) ? \"KeyboardEvent\" : \"UIEvents\";\nknownEvents[keyEventTypeName] = [\"keyup\", \"keydown\", \"keypress\"];\nknownEvents[\"MouseEvents\"] = [\n \"click\",\n \"dblclick\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"mouseenter\",\n \"mouseleave\"\n];\nobjectForEach(knownEvents, function(eventType, knownEventsForType) {\n if (knownEventsForType.length) {\n for (var i = 0, j = knownEventsForType.length; i < j; i++) {\n knownEventTypesByEventName[knownEventsForType[i]] = eventType;\n }\n }\n});\nfunction isClickOnCheckableElement(element, eventType) {\n if (tagNameLower(element) !== \"input\" || !element.type)\n return false;\n if (eventType.toLowerCase() != \"click\")\n return false;\n var inputType = element.type;\n return inputType == \"checkbox\" || inputType == \"radio\";\n}\nvar eventsThatMustBeRegisteredUsingAttachEvent = { \"propertychange\": true };\nlet jQueryEventAttachName;\nexport function registerEventHandler(element, eventType, handler, eventOptions = false) {\n const wrappedHandler = catchFunctionErrors(handler);\n const mustUseAttachEvent = ieVersion && eventsThatMustBeRegisteredUsingAttachEvent[eventType];\n const mustUseNative = Boolean(eventOptions);\n if (!options.useOnlyNativeEvents && !mustUseAttachEvent && !mustUseNative && jQueryInstance) {\n if (!jQueryEventAttachName) {\n jQueryEventAttachName = typeof jQueryInstance(element).on === \"function\" ? \"on\" : \"bind\";\n }\n jQueryInstance(element)[jQueryEventAttachName](eventType, wrappedHandler);\n } else if (!mustUseAttachEvent && typeof element.addEventListener === \"function\") {\n element.addEventListener(eventType, wrappedHandler, eventOptions);\n } else if (typeof element.attachEvent !== \"undefined\") {\n const attachEventHandler = function(event) {\n wrappedHandler.call(element, event);\n };\n const attachEventName = \"on\" + eventType;\n element.attachEvent(attachEventName, attachEventHandler);\n addDisposeCallback(element, function() {\n element.detachEvent(attachEventName, attachEventHandler);\n });\n } else {\n throw new Error(\"Browser doesn't support addEventListener or attachEvent\");\n }\n}\nexport function triggerEvent(element, eventType) {\n if (!(element && element.nodeType)) {\n throw new Error(\"element must be a DOM node when calling triggerEvent\");\n }\n var useClickWorkaround = isClickOnCheckableElement(element, eventType);\n if (!options.useOnlyNativeEvents && jQueryInstance && !useClickWorkaround) {\n jQueryInstance(element).trigger(eventType);\n } else if (typeof document.createEvent === \"function\") {\n if (typeof element.dispatchEvent === \"function\") {\n var eventCategory = knownEventTypesByEventName[eventType] || \"HTMLEvents\";\n var event = document.createEvent(eventCategory);\n event.initEvent(eventType, true, true, options.global, 0, 0, 0, 0, 0, false, false, false, false, 0, element);\n element.dispatchEvent(event);\n } else {\n throw new Error(\"The supplied element doesn't support dispatchEvent\");\n }\n } else if (useClickWorkaround && element.click) {\n element.click();\n } else if (typeof element.fireEvent !== \"undefined\") {\n element.fireEvent(\"on\" + eventType);\n } else {\n throw new Error(\"Browser doesn't support triggering events\");\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { emptyDomNode, setDomNodeChildren as setRegularDomNodeChildren } from \"./manipulation\";\nimport { removeNode } from \"./disposal\";\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nimport options from \"../options\";\nvar commentNodesHaveTextProperty = options.document && options.document.createComment(\"test\").text === \"<!--test-->\";\nexport var startCommentRegex = commentNodesHaveTextProperty ? /^<!--\\s*ko(?:\\s+([\\s\\S]+))?\\s*-->$/ : /^\\s*ko(?:\\s+([\\s\\S]+))?\\s*$/;\nexport var endCommentRegex = commentNodesHaveTextProperty ? /^<!--\\s*\\/ko\\s*-->$/ : /^\\s*\\/ko\\s*$/;\nvar htmlTagsWithOptionallyClosingChildren = { \"ul\": true, \"ol\": true };\nexport function isStartComment(node) {\n return node.nodeType == 8 && startCommentRegex.test(commentNodesHaveTextProperty ? node.text : node.nodeValue);\n}\nexport function isEndComment(node) {\n return node.nodeType == 8 && endCommentRegex.test(commentNodesHaveTextProperty ? node.text : node.nodeValue);\n}\nfunction isUnmatchedEndComment(node) {\n return isEndComment(node) && !domData.get(node, matchedEndCommentDataKey);\n}\nconst matchedEndCommentDataKey = \"__ko_matchedEndComment__\";\nexport function getVirtualChildren(startComment, allowUnbalanced) {\n var currentNode = startComment;\n var depth = 1;\n var children = [];\n while (currentNode = currentNode.nextSibling) {\n if (isEndComment(currentNode)) {\n domData.set(currentNode, matchedEndCommentDataKey, true);\n depth--;\n if (depth === 0) {\n return children;\n }\n }\n children.push(currentNode);\n if (isStartComment(currentNode)) {\n depth++;\n }\n }\n if (!allowUnbalanced) {\n throw new Error(\"Cannot find closing comment tag to match: \" + startComment.nodeValue);\n }\n return null;\n}\nfunction getMatchingEndComment(startComment, allowUnbalanced) {\n var allVirtualChildren = getVirtualChildren(startComment, allowUnbalanced);\n if (allVirtualChildren) {\n if (allVirtualChildren.length > 0) {\n return allVirtualChildren[allVirtualChildren.length - 1].nextSibling;\n }\n return startComment.nextSibling;\n } else {\n return null;\n }\n}\nfunction getUnbalancedChildTags(node) {\n var childNode = node.firstChild, captureRemaining = null;\n if (childNode) {\n do {\n if (captureRemaining) {\n captureRemaining.push(childNode);\n } else if (isStartComment(childNode)) {\n var matchingEndComment = getMatchingEndComment(childNode, true);\n if (matchingEndComment) {\n childNode = matchingEndComment;\n } else {\n captureRemaining = [childNode];\n }\n } else if (isEndComment(childNode)) {\n captureRemaining = [childNode];\n }\n } while (childNode = childNode.nextSibling);\n }\n return captureRemaining;\n}\nexport var allowedBindings = {};\nexport var hasBindingValue = isStartComment;\nexport function childNodes(node) {\n return isStartComment(node) ? getVirtualChildren(node) : node.childNodes;\n}\nexport function emptyNode(node) {\n if (!isStartComment(node)) {\n emptyDomNode(node);\n } else {\n var virtualChildren = childNodes(node);\n for (var i = 0, j = virtualChildren.length; i < j; i++) {\n removeNode(virtualChildren[i]);\n }\n }\n}\nexport function setDomNodeChildren(node, childNodes2) {\n if (!isStartComment(node)) {\n setRegularDomNodeChildren(node, childNodes2);\n } else {\n emptyNode(node);\n const endCommentNode = node.nextSibling;\n const parentNode = endCommentNode.parentNode;\n for (var i = 0, j = childNodes2.length; i < j; ++i) {\n parentNode.insertBefore(childNodes2[i], endCommentNode);\n }\n }\n}\nexport function prepend(containerNode, nodeToPrepend) {\n if (!isStartComment(containerNode)) {\n if (containerNode.firstChild) {\n containerNode.insertBefore(nodeToPrepend, containerNode.firstChild);\n } else {\n containerNode.appendChild(nodeToPrepend);\n }\n } else {\n containerNode.parentNode.insertBefore(nodeToPrepend, containerNode.nextSibling);\n }\n}\nexport function insertAfter(containerNode, nodeToInsert, insertAfterNode) {\n if (!insertAfterNode) {\n prepend(containerNode, nodeToInsert);\n } else if (!isStartComment(containerNode)) {\n if (insertAfterNode.nextSibling) {\n containerNode.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n } else {\n containerNode.appendChild(nodeToInsert);\n }\n } else {\n containerNode.parentNode.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n }\n}\nexport function firstChild(node) {\n if (!isStartComment(node)) {\n if (node.firstChild && isEndComment(node.firstChild)) {\n throw new Error(\"Found invalid end comment, as the first child of \" + node.outerHTML);\n }\n return node.firstChild;\n }\n if (!node.nextSibling || isEndComment(node.nextSibling)) {\n return null;\n }\n return node.nextSibling;\n}\nexport function lastChild(node) {\n let nextChild = firstChild(node);\n let lastChildNode;\n do {\n lastChildNode = nextChild;\n } while (nextChild = nextSibling(nextChild));\n return lastChildNode;\n}\nexport function nextSibling(node) {\n if (isStartComment(node)) {\n node = getMatchingEndComment(node);\n }\n if (node.nextSibling && isEndComment(node.nextSibling)) {\n if (isUnmatchedEndComment(node.nextSibling)) {\n throw Error(\"Found end comment without a matching opening comment, as next sibling of \" + node.outerHTML);\n }\n return null;\n } else {\n return node.nextSibling;\n }\n}\nexport function previousSibling(node) {\n var depth = 0;\n do {\n if (node.nodeType === 8) {\n if (isStartComment(node)) {\n if (--depth === 0) {\n return node;\n }\n } else if (isEndComment(node)) {\n depth++;\n }\n } else {\n if (depth === 0) {\n return node;\n }\n }\n } while (node = node.previousSibling);\n}\nexport function virtualNodeBindingValue(node) {\n var regexMatch = (commentNodesHaveTextProperty ? node.text : node.nodeValue).match(startCommentRegex);\n return regexMatch ? regexMatch[1] : null;\n}\nexport function normaliseVirtualElementDomStructure(elementVerified) {\n if (!htmlTagsWithOptionallyClosingChildren[tagNameLower(elementVerified)]) {\n return;\n }\n var childNode = elementVerified.firstChild;\n if (childNode) {\n do {\n if (childNode.nodeType === 1) {\n var unbalancedTags = getUnbalancedChildTags(childNode);\n if (unbalancedTags) {\n var nodeToInsertBefore = childNode.nextSibling;\n for (var i = 0; i < unbalancedTags.length; i++) {\n if (nodeToInsertBefore) {\n elementVerified.insertBefore(unbalancedTags[i], nodeToInsertBefore);\n } else {\n elementVerified.appendChild(unbalancedTags[i]);\n }\n }\n }\n }\n } while (childNode = childNode.nextSibling);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { stringTrim } from \"../string\";\nimport { makeArray } from \"../array\";\nimport { emptyDomNode, moveCleanedNodesToContainerElement } from \"./manipulation\";\nimport { jQueryInstance } from \"../jquery\";\nimport { forceRefresh } from \"./fixes\";\nimport * as virtualElements from \"./virtualElements\";\nimport options from \"../options\";\nvar none = [0, \"\", \"\"], table = [1, \"<table>\", \"</table>\"], tbody = [2, \"<table><tbody>\", \"</tbody></table>\"], colgroup = [2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\"], tr = [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"], select = [1, \"<select multiple='multiple'>\", \"</select>\"], fieldset = [1, \"<fieldset>\", \"</fieldset>\"], map = [1, \"<map>\", \"</map>\"], object = [1, \"<object>\", \"</object>\"], lookup = {\n \"area\": map,\n \"col\": colgroup,\n \"colgroup\": table,\n \"caption\": table,\n \"legend\": fieldset,\n \"thead\": table,\n \"tbody\": table,\n \"tfoot\": table,\n \"tr\": tbody,\n \"td\": tr,\n \"th\": tr,\n \"option\": select,\n \"optgroup\": select,\n \"param\": object\n}, supportsTemplateTag = options.document && \"content\" in options.document.createElement(\"template\");\nfunction getWrap(tags) {\n const m = tags.match(/^(?:<!--.*?-->\\s*?)*?<([a-z]+)[\\s>]/);\n return m && lookup[m[1]] || none;\n}\nfunction simpleHtmlParse(html, documentContext) {\n documentContext || (documentContext = document);\n var windowContext = documentContext[\"parentWindow\"] || documentContext[\"defaultView\"] || window;\n var tags = stringTrim(html).toLowerCase(), div = documentContext.createElement(\"div\"), wrap = getWrap(tags), depth = wrap[0];\n var markup = \"ignored<div>\" + wrap[1] + html + wrap[2] + \"</div>\";\n if (typeof windowContext[\"innerShiv\"] === \"function\") {\n div.appendChild(windowContext[\"innerShiv\"](markup));\n } else {\n div.innerHTML = markup;\n }\n while (depth--) {\n div = div.lastChild;\n }\n return makeArray(div.lastChild.childNodes);\n}\nfunction templateHtmlParse(html, documentContext) {\n if (!documentContext) {\n documentContext = document;\n }\n var template = documentContext.createElement(\"template\");\n template.innerHTML = html;\n return makeArray(template.content.childNodes);\n}\nfunction jQueryHtmlParse(html, documentContext) {\n if (jQueryInstance.parseHTML) {\n return jQueryInstance.parseHTML(html, documentContext) || [];\n } else {\n var elems = jQueryInstance.clean([html], documentContext);\n if (elems && elems[0]) {\n var elem = elems[0];\n while (elem.parentNode && elem.parentNode.nodeType !== 11) {\n elem = elem.parentNode;\n }\n if (elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n }\n return elems;\n }\n}\nexport function parseHtmlFragment(html, documentContext) {\n return supportsTemplateTag ? templateHtmlParse(html, documentContext) : jQueryInstance ? jQueryHtmlParse(html, documentContext) : simpleHtmlParse(html, documentContext);\n}\nexport function parseHtmlForTemplateNodes(html, documentContext) {\n const nodes = parseHtmlFragment(html, documentContext);\n return nodes.length && nodes[0].parentElement || moveCleanedNodesToContainerElement(nodes);\n}\nexport function setHtml(node, html) {\n emptyDomNode(node);\n if (typeof html === \"function\") {\n html = html();\n }\n if (html !== null && html !== void 0) {\n if (typeof html !== \"string\") {\n html = html.toString();\n }\n if (jQueryInstance && !supportsTemplateTag) {\n jQueryInstance(node).html(html);\n } else {\n var parsedNodes = parseHtmlFragment(html, node.ownerDocument);\n if (node.nodeType === 8) {\n if (html === null) {\n virtualElements.emptyNode(node);\n } else {\n virtualElements.setDomNodeChildren(node, parsedNodes);\n }\n } else {\n for (var i = 0; i < parsedNodes.length; i++) {\n node.appendChild(parsedNodes[i]);\n }\n }\n }\n }\n}\nexport function setTextContent(element, textContent) {\n var value = typeof textContent === \"function\" ? textContent() : textContent;\n if (value === null || value === void 0) {\n value = \"\";\n }\n var innerTextNode = virtualElements.firstChild(element);\n if (!innerTextNode || innerTextNode.nodeType != 3 || virtualElements.nextSibling(innerTextNode)) {\n virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);\n } else {\n innerTextNode.data = value;\n }\n forceRefresh(element);\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nvar hasDomDataExpandoProperty = Symbol(\"Knockout selectExtensions hasDomDataProperty\");\nexport var selectExtensions = {\n optionValueDomDataKey: domData.nextKey(),\n readValue: function(element) {\n switch (tagNameLower(element)) {\n case \"option\":\n if (element[hasDomDataExpandoProperty] === true) {\n return domData.get(element, selectExtensions.optionValueDomDataKey);\n }\n return element.value;\n case \"select\":\n return element.selectedIndex >= 0 ? selectExtensions.readValue(element.options[element.selectedIndex]) : void 0;\n default:\n return element.value;\n }\n },\n writeValue: function(element, value, allowUnset) {\n switch (tagNameLower(element)) {\n case \"option\":\n if (typeof value === \"string\") {\n domData.set(element, selectExtensions.optionValueDomDataKey, void 0);\n if (hasDomDataExpandoProperty in element) {\n delete element[hasDomDataExpandoProperty];\n }\n element.value = value;\n } else {\n domData.set(element, selectExtensions.optionValueDomDataKey, value);\n element[hasDomDataExpandoProperty] = true;\n element.value = typeof value === \"number\" ? value : \"\";\n }\n break;\n case \"select\":\n if (value === \"\" || value === null) {\n value = void 0;\n }\n var selection = -1;\n for (let i = 0, n = element.options.length, optionValue; i < n; ++i) {\n optionValue = selectExtensions.readValue(element.options[i]);\n const strictEqual = optionValue === value;\n const blankEqual = optionValue === \"\" && value === void 0;\n const numericEqual = typeof value === \"number\" && Number(optionValue) === value;\n if (strictEqual || blankEqual || numericEqual) {\n selection = i;\n break;\n }\n }\n if (allowUnset || selection >= 0 || value === void 0 && element.size > 1) {\n element.selectedIndex = selection;\n }\n break;\n default:\n if (value === null || value === void 0) {\n value = \"\";\n }\n element.value = value;\n break;\n }\n }\n};\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport options from \"./options\";\nimport { deferError } from \"./error\";\nvar taskQueue = [], taskQueueLength = 0, nextHandle = 1, nextIndexToProcess = 0, w = options.global;\nif (w && w.MutationObserver && !(w.navigator && w.navigator.standalone)) {\n options.taskScheduler = function(callback) {\n var div = w.document.createElement(\"div\");\n new w.MutationObserver(callback).observe(div, { attributes: true });\n return function() {\n div.classList.toggle(\"foo\");\n };\n }(scheduledProcess);\n} else if (w && w.document && \"onreadystatechange\" in w.document.createElement(\"script\")) {\n options.taskScheduler = function(callback) {\n var script = document.createElement(\"script\");\n script.onreadystatechange = function() {\n script.onreadystatechange = null;\n document.documentElement.removeChild(script);\n script = null;\n callback();\n };\n document.documentElement.appendChild(script);\n };\n} else {\n options.taskScheduler = function(callback) {\n setTimeout(callback, 0);\n };\n}\nfunction processTasks() {\n if (taskQueueLength) {\n var mark = taskQueueLength, countMarks = 0;\n for (var task; nextIndexToProcess < taskQueueLength; ) {\n if (task = taskQueue[nextIndexToProcess++]) {\n if (nextIndexToProcess > mark) {\n if (++countMarks >= 5e3) {\n nextIndexToProcess = taskQueueLength;\n deferError(Error(\"'Too much recursion' after processing \" + countMarks + \" task groups.\"));\n break;\n }\n mark = taskQueueLength;\n }\n try {\n task();\n } catch (ex) {\n deferError(ex);\n }\n }\n }\n }\n}\nfunction scheduledProcess() {\n processTasks();\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n}\nfunction scheduleTaskProcessing() {\n options.taskScheduler(scheduledProcess);\n}\nexport function schedule(func) {\n if (!taskQueueLength) {\n scheduleTaskProcessing();\n }\n taskQueue[taskQueueLength++] = func;\n return nextHandle++;\n}\nexport function cancel(handle) {\n var index = handle - (nextHandle - taskQueueLength);\n if (index >= nextIndexToProcess && index < taskQueueLength) {\n taskQueue[index] = null;\n }\n}\nexport function resetForTesting() {\n var length = taskQueueLength - nextIndexToProcess;\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n return length;\n}\nexport { processTasks as runEarly };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { isSubscribable } from \"./subscribableSymbol\";\nconst outerFrames = [];\nlet currentFrame;\nlet lastId = 0;\nfunction getId() {\n return ++lastId;\n}\nexport function begin(options) {\n outerFrames.push(currentFrame);\n currentFrame = options;\n}\nexport function end() {\n currentFrame = outerFrames.pop();\n}\nexport function registerDependency(subscribable) {\n if (currentFrame) {\n if (!isSubscribable(subscribable)) {\n throw new Error(\"Only subscribable things can act as dependencies\");\n }\n currentFrame.callback.call(currentFrame.callbackTarget, subscribable, subscribable._id || (subscribable._id = getId()));\n }\n}\nexport function ignore(callback, callbackTarget, callbackArgs) {\n try {\n begin();\n return callback.apply(callbackTarget, callbackArgs || []);\n } finally {\n end();\n }\n}\nexport function getDependenciesCount() {\n if (currentFrame) {\n return currentFrame.computed.getDependenciesCount();\n }\n}\nexport function getDependencies() {\n if (currentFrame) {\n return currentFrame.computed.getDependencies();\n }\n}\nexport function isInitial() {\n if (currentFrame) {\n return currentFrame.isInitial;\n }\n}\nexport { ignore as ignoreDependencies };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nexport const SUBSCRIBABLE_SYM = Symbol(\"Knockout Subscribable\");\nexport function isSubscribable(instance) {\n return instance && instance[SUBSCRIBABLE_SYM] || false;\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport { tasks } from \"@tko/utils\";\nexport function deferUpdates(target) {\n if (target._deferUpdates) {\n return;\n }\n target._deferUpdates = true;\n target.limit(function(callback) {\n let handle;\n let ignoreUpdates = false;\n return function() {\n if (!ignoreUpdates) {\n tasks.cancel(handle);\n handle = tasks.schedule(callback);\n try {\n ignoreUpdates = true;\n target.notifySubscribers(void 0, \"dirty\");\n } finally {\n ignoreUpdates = false;\n }\n }\n };\n });\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport {\n removeDisposeCallback,\n addDisposeCallback\n} from \"@tko/utils\";\nexport default class Subscription {\n constructor(target, observer, disposeCallback) {\n this._target = target;\n this._callback = observer.next;\n this._disposeCallback = disposeCallback;\n this._isDisposed = false;\n this._domNodeDisposalCallback = null;\n }\n dispose() {\n if (this._domNodeDisposalCallback) {\n removeDisposeCallback(this._node, this._domNodeDisposalCallback);\n }\n this._isDisposed = true;\n this._disposeCallback();\n }\n disposeWhenNodeIsRemoved(node) {\n this._node = node;\n addDisposeCallback(node, this._domNodeDisposalCallback = this.dispose.bind(this));\n }\n unsubscribe() {\n this.dispose();\n }\n get closed() {\n return this._isDisposed;\n }\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport {\n options,\n objectForEach,\n throttle as throttleFn,\n debounce as debounceFn\n} from \"@tko/utils\";\nimport { deferUpdates } from \"./defer\";\nvar primitiveTypes = {\n \"undefined\": 1,\n \"boolean\": 1,\n \"number\": 1,\n \"string\": 1\n};\nexport function valuesArePrimitiveAndEqual(a, b) {\n var oldValueIsPrimitive = a === null || typeof a in primitiveTypes;\n return oldValueIsPrimitive ? a === b : false;\n}\nexport function applyExtenders(requestedExtenders) {\n var target = this;\n if (requestedExtenders) {\n objectForEach(requestedExtenders, function(key, value) {\n var extenderHandler = extenders[key];\n if (typeof extenderHandler === \"function\") {\n target = extenderHandler(target, value) || target;\n } else {\n options.onError(new Error(\"Extender not found: \" + key));\n }\n });\n }\n return target;\n}\nexport function notify(target, notifyWhen) {\n target.equalityComparer = notifyWhen == \"always\" ? null : valuesArePrimitiveAndEqual;\n}\nexport function deferred(target, option) {\n if (option !== true) {\n throw new Error(\"The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.\");\n }\n deferUpdates(target);\n}\nexport function rateLimit(target, options2) {\n var timeout, method, limitFunction;\n if (typeof options2 === \"number\") {\n timeout = options2;\n } else {\n timeout = options2.timeout;\n method = options2.method;\n }\n target._deferUpdates = false;\n limitFunction = method === \"notifyWhenChangesStop\" ? debounceFn : throttleFn;\n target.limit(function(callback) {\n return limitFunction(callback, timeout);\n });\n}\nexport var extenders = {\n notify,\n deferred,\n rateLimit\n};\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport {\n arrayRemoveItem,\n objectForEach,\n options\n} from \"@tko/utils\";\nimport Subscription from \"./Subscription\";\nimport { SUBSCRIBABLE_SYM } from \"./subscribableSymbol\";\nimport { applyExtenders } from \"./extenders\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nexport { isSubscribable } from \"./subscribableSymbol\";\nexport const LATEST_VALUE = Symbol(\"Knockout latest value\");\nif (!Symbol.observable) {\n Symbol.observable = Symbol.for(\"@tko/Symbol.observable\");\n}\nexport function subscribable() {\n Object.setPrototypeOf(this, ko_subscribable_fn);\n ko_subscribable_fn.init(this);\n}\nexport var defaultEvent = \"change\";\nvar ko_subscribable_fn = {\n [SUBSCRIBABLE_SYM]: true,\n [Symbol.observable]() {\n return this;\n },\n init(instance) {\n instance._subscriptions = { change: [] };\n instance._versionNumber = 1;\n },\n subscribe(callback, callbackTarget, event) {\n const isTC39Callback = typeof callback === \"object\" && callback.next;\n event = event || defaultEvent;\n const observer = isTC39Callback ? callback : {\n next: callbackTarget ? callback.bind(callbackTarget) : callback\n };\n const subscriptionInstance = new Subscription(this, observer, () => {\n arrayRemoveItem(this._subscriptions[event], subscriptionInstance);\n if (this.afterSubscriptionRemove) {\n this.afterSubscriptionRemove(event);\n }\n });\n if (this.beforeSubscriptionAdd) {\n this.beforeSubscriptionAdd(event);\n }\n if (!this._subscriptions[event]) {\n this._subscriptions[event] = [];\n }\n this._subscriptions[event].push(subscriptionInstance);\n if (isTC39Callback && LATEST_VALUE in this) {\n observer.next(this[LATEST_VALUE]);\n }\n return subscriptionInstance;\n },\n notifySubscribers(valueToNotify, event) {\n event = event || defaultEvent;\n if (event === defaultEvent) {\n this.updateVersion();\n }\n if (this.hasSubscriptionsForEvent(event)) {\n const subs = event === defaultEvent && this._changeSubscriptions || [...this._subscriptions[event]];\n try {\n dependencyDetection.begin();\n for (let i = 0, subscriptionInstance; subscriptionInstance = subs[i]; ++i) {\n if (!subscriptionInstance._isDisposed) {\n subscriptionInstance._callback(valueToNotify);\n }\n }\n } finally {\n dependencyDetection.end();\n }\n }\n },\n getVersion() {\n return this._versionNumber;\n },\n hasChanged(versionToCheck) {\n return this.getVersion() !== versionToCheck;\n },\n updateVersion() {\n ++this._versionNumber;\n },\n hasSubscriptionsForEvent(event) {\n return this._subscriptions[event] && this._subscriptions[event].length;\n },\n getSubscriptionsCount(event) {\n if (event) {\n return this._subscriptions[event] && this._subscriptions[event].length || 0;\n } else {\n var total = 0;\n objectForEach(this._subscriptions, function(eventName, subscriptions) {\n if (eventName !== \"dirty\") {\n total += subscriptions.length;\n }\n });\n return total;\n }\n },\n isDifferent(oldValue, newValue) {\n return !this.equalityComparer || !this.equalityComparer(oldValue, newValue);\n },\n once(cb) {\n const subs = this.subscribe((nv) => {\n subs.dispose();\n cb(nv);\n });\n },\n when(test, returnValue) {\n const current = this.peek();\n const givenRv = arguments.length > 1;\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n if (testFn(current)) {\n return options.Promise.resolve(givenRv ? returnValue : current);\n }\n return new options.Promise((resolve, reject) => {\n const subs = this.subscribe((newValue) => {\n if (testFn(newValue)) {\n subs.dispose();\n resolve(givenRv ? returnValue : newValue);\n }\n });\n });\n },\n yet(test, ...args) {\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n const negated = (v) => !testFn(v);\n return this.when(negated, ...args);\n },\n next() {\n return new Promise((resolve) => this.once(resolve));\n },\n toString() {\n return \"[object Object]\";\n },\n extend: applyExtenders\n};\nObject.setPrototypeOf(ko_subscribable_fn, Function.prototype);\nsubscribable.fn = ko_subscribable_fn;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport {\n options,\n overwriteLengthPropertyIfSupported\n} from \"@tko/utils\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nimport { deferUpdates } from \"./defer\";\nimport { subscribable, defaultEvent, LATEST_VALUE } from \"./subscribable\";\nimport { valuesArePrimitiveAndEqual } from \"./extenders\";\nexport function observable(initialValue) {\n function Observable() {\n if (arguments.length > 0) {\n if (Observable.isDifferent(Observable[LATEST_VALUE], arguments[0])) {\n Observable.valueWillMutate();\n Observable[LATEST_VALUE] = arguments[0];\n Observable.valueHasMutated();\n }\n return this;\n } else {\n dependencyDetection.registerDependency(Observable);\n return Observable[LATEST_VALUE];\n }\n }\n overwriteLengthPropertyIfSupported(Observable, { value: void 0 });\n Observable[LATEST_VALUE] = initialValue;\n subscribable.fn.init(Observable);\n Object.setPrototypeOf(Observable, observable.fn);\n if (options.deferUpdates) {\n deferUpdates(Observable);\n }\n return Observable;\n}\nobservable.fn = {\n equalityComparer: valuesArePrimitiveAndEqual,\n peek() {\n return this[LATEST_VALUE];\n },\n valueHasMutated() {\n this.notifySubscribers(this[LATEST_VALUE], \"spectate\");\n this.notifySubscribers(this[LATEST_VALUE]);\n },\n valueWillMutate() {\n this.notifySubscribers(this[LATEST_VALUE], \"beforeChange\");\n },\n modify(fn, peek2 = true) {\n return this(fn(peek2 ? this.peek() : this()));\n },\n isWriteable: true\n};\nfunction limitNotifySubscribers(value, event) {\n if (!event || event === defaultEvent) {\n this._limitChange(value);\n } else if (event === \"beforeChange\") {\n this._limitBeforeChange(value);\n } else {\n this._origNotifySubscribers(value, event);\n }\n}\nsubscribable.fn.limit = function limit(limitFunction) {\n var self = this;\n var selfIsObservable = isObservable(self);\n var beforeChange = \"beforeChange\";\n var ignoreBeforeChange, notifyNextChange, previousValue, pendingValue, didUpdate;\n if (!self._origNotifySubscribers) {\n self._origNotifySubscribers = self.notifySubscribers;\n self.notifySubscribers = limitNotifySubscribers;\n }\n var finish = limitFunction(function() {\n self._notificationIsPending = false;\n if (selfIsObservable && pendingValue === self) {\n pendingValue = self._evalIfChanged ? self._evalIfChanged() : self();\n }\n const shouldNotify = notifyNextChange || didUpdate && self.isDifferent(previousValue, pendingValue);\n self._notifyNextChange = didUpdate = ignoreBeforeChange = false;\n if (shouldNotify) {\n self._origNotifySubscribers(previousValue = pendingValue);\n }\n });\n Object.assign(self, {\n _limitChange(value, isDirty) {\n if (!isDirty || !self._notificationIsPending) {\n didUpdate = !isDirty;\n }\n self._changeSubscriptions = [...self._subscriptions[defaultEvent]];\n self._notificationIsPending = ignoreBeforeChange = true;\n pendingValue = value;\n finish();\n },\n _limitBeforeChange(value) {\n if (!ignoreBeforeChange) {\n previousValue = value;\n self._origNotifySubscribers(value, beforeChange);\n }\n },\n _notifyNextChangeIfValueIsDifferent() {\n if (self.isDifferent(previousValue, self.peek(true))) {\n notifyNextChange = true;\n }\n },\n _recordUpdate() {\n didUpdate = true;\n }\n });\n};\nObject.setPrototypeOf(observable.fn, subscribable.fn);\nvar protoProperty = observable.protoProperty = options.protoProperty;\nobservable.fn[protoProperty] = observable;\nobservable.observablePrototypes = /* @__PURE__ */ new Set([observable]);\nexport function isObservable(instance) {\n const proto = typeof instance === \"function\" && instance[protoProperty];\n if (proto && !observable.observablePrototypes.has(proto)) {\n throw Error(\"Invalid object that looks like an observable; possibly from another Knockout instance\");\n }\n return !!proto;\n}\nexport function unwrap(value) {\n return isObservable(value) ? value() : value;\n}\nexport function peek(value) {\n return isObservable(value) ? value.peek() : value;\n}\nexport function isWriteableObservable(instance) {\n return isObservable(instance) && instance.isWriteable;\n}\nexport { isWriteableObservable as isWritableObservable };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport {\n extend,\n compareArrays,\n findMovesInArrayComparison\n} from \"@tko/utils\";\nimport { defaultEvent } from \"./subscribable\";\nimport { extenders } from \"./extenders\";\nexport var arrayChangeEventName = \"arrayChange\";\nexport function trackArrayChanges(target, options) {\n target.compareArrayOptions = {};\n if (options && typeof options === \"object\") {\n extend(target.compareArrayOptions, options);\n }\n target.compareArrayOptions.sparse = true;\n if (target.cacheDiffForKnownOperation) {\n return;\n }\n let trackingChanges = false;\n let cachedDiff = null;\n let arrayChangeSubscription;\n let pendingNotifications = 0;\n let underlyingNotifySubscribersFunction;\n let underlyingBeforeSubscriptionAddFunction = target.beforeSubscriptionAdd;\n let underlyingAfterSubscriptionRemoveFunction = target.afterSubscriptionRemove;\n target.beforeSubscriptionAdd = function(event) {\n if (underlyingBeforeSubscriptionAddFunction) {\n underlyingBeforeSubscriptionAddFunction.call(target, event);\n }\n if (event === arrayChangeEventName) {\n trackChanges();\n }\n };\n target.afterSubscriptionRemove = function(event) {\n if (underlyingAfterSubscriptionRemoveFunction) {\n underlyingAfterSubscriptionRemoveFunction.call(target, event);\n }\n if (event === arrayChangeEventName && !target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n if (underlyingNotifySubscribersFunction) {\n target.notifySubscribers = underlyingNotifySubscribersFunction;\n underlyingNotifySubscribersFunction = void 0;\n }\n if (arrayChangeSubscription) {\n arrayChangeSubscription.dispose();\n }\n arrayChangeSubscription = null;\n trackingChanges = false;\n }\n };\n function trackChanges() {\n if (trackingChanges) {\n return;\n }\n trackingChanges = true;\n underlyingNotifySubscribersFunction = target[\"notifySubscribers\"];\n target.notifySubscribers = function(valueToNotify, event) {\n if (!event || event === defaultEvent) {\n ++pendingNotifications;\n }\n return underlyingNotifySubscribersFunction.apply(this, arguments);\n };\n var previousContents = [].concat(target.peek() === void 0 ? [] : target.peek());\n cachedDiff = null;\n arrayChangeSubscription = target.subscribe(function(currentContents) {\n let changes;\n currentContents = [].concat(currentContents || []);\n if (target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n changes = getChanges(previousContents, currentContents);\n }\n previousContents = currentContents;\n cachedDiff = null;\n pendingNotifications = 0;\n if (changes && changes.length) {\n target.notifySubscribers(changes, arrayChangeEventName);\n }\n });\n }\n function getChanges(previousContents, currentContents) {\n if (!cachedDiff || pendingNotifications > 1) {\n cachedDiff = trackArrayChanges.compareArrays(previousContents, currentContents, target.compareArrayOptions);\n }\n return cachedDiff;\n }\n target.cacheDiffForKnownOperation = function(rawArray, operationName, args) {\n if (!trackingChanges || pendingNotifications) {\n return;\n }\n var diff = [], arrayLength = rawArray.length, argsLength = args.length, offset = 0;\n function pushDiff(status, value, index) {\n return diff[diff.length] = { \"status\": status, \"value\": value, \"index\": index };\n }\n switch (operationName) {\n case \"push\":\n offset = arrayLength;\n case \"unshift\":\n for (let index = 0; index < argsLength; index++) {\n pushDiff(\"added\", args[index], offset + index);\n }\n break;\n case \"pop\":\n offset = arrayLength - 1;\n case \"shift\":\n if (arrayLength) {\n pushDiff(\"deleted\", rawArray[offset], offset);\n }\n break;\n case \"splice\":\n var startIndex = Math.min(Math.max(0, args[0] < 0 ? arrayLength + args[0] : args[0]), arrayLength), endDeleteIndex = argsLength === 1 ? arrayLength : Math.min(startIndex + (args[1] || 0), arrayLength), endAddIndex = startIndex + argsLength - 2, endIndex = Math.max(endDeleteIndex, endAddIndex), additions = [], deletions = [];\n for (let index = startIndex, argsIndex = 2; index < endIndex; ++index, ++argsIndex) {\n if (index < endDeleteIndex) {\n deletions.push(pushDiff(\"deleted\", rawArray[index], index));\n }\n if (index < endAddIndex) {\n additions.push(pushDiff(\"added\", args[argsIndex], index));\n }\n }\n findMovesInArrayComparison(deletions, additions);\n break;\n default:\n return;\n }\n cachedDiff = diff;\n };\n}\ntrackArrayChanges.compareArrays = compareArrays;\nextenders.trackArrayChanges = trackArrayChanges;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.0 ESM\nimport {\n arrayIndexOf,\n arrayForEach,\n overwriteLengthPropertyIfSupported\n} from \"@tko/utils\";\nimport { observable, isObservable } from \"./observable\";\nimport { trackArrayChanges } from \"./observableArray.changeTracking\";\nexport function observableArray(initialValues) {\n initialValues = initialValues || [];\n if (typeof initialValues !== \"object\" || !(\"length\" in initialValues)) {\n throw new Error(\"The argument passed when initializing an observable array must be an array, or null, or undefined.\");\n }\n var result = observable(initialValues);\n Object.setPrototypeOf(result, observableArray.fn);\n trackArrayChanges(result);\n overwriteLengthPropertyIfSupported(result, { get: () => result().length });\n return result;\n}\nexport function isObservableArray(instance) {\n return isObservable(instance) && typeof instance.remove === \"function\" && typeof instance.push === \"function\";\n}\nobservableArray.fn = {\n remove(valueOrPredicate) {\n var underlyingArray = this.peek();\n var removedValues = [];\n var predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value2) {\n return value2 === valueOrPredicate;\n };\n for (var i = 0; i < underlyingArray.length; i++) {\n var value = underlyingArray[i];\n if (predicate(value)) {\n if (removedValues.length === 0) {\n this.valueWillMutate();\n }\n if (underlyingArray[i] !== value) {\n throw Error(\"Array modified during remove; cannot remove item\");\n }\n removedValues.push(value);\n underlyingArray.splice(i, 1);\n i--;\n }\n }\n if (removedValues.length) {\n this.valueHasMutated();\n }\n return removedValues;\n },\n removeAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n var underlyingArray = this.peek();\n var allValues = underlyingArray.slice(0);\n this.valueWillMutate();\n underlyingArray.splice(0, underlyingArray.length);\n this.valueHasMutated();\n return allValues;\n }\n if (!arrayOfValues) {\n return [];\n }\n return this[\"remove\"](function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n destroy(valueOrPredicate) {\n var underlyingArray = this.peek();\n var predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value2) {\n return value2 === valueOrPredicate;\n };\n this.valueWillMutate();\n for (var i = underlyingArray.length - 1; i >= 0; i--) {\n var value = underlyingArray[i];\n if (predicate(value)) {\n value[\"_destroy\"] = true;\n }\n }\n this.valueHasMutated();\n },\n destroyAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n return this.destroy(function() {\n return true;\n });\n }\n if (!arrayOfValues) {\n return [];\n }\n return this.destroy(function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n indexOf(item) {\n return arrayIndexOf(this(), item);\n },\n replace(oldItem, newItem) {\n var index = this.indexOf(oldItem);\n if (index >= 0) {\n this.valueWillMutate();\n this.peek()[index] = newItem;\n this.valueHasMutated();\n }\n },\n sorted(compareFn) {\n return [...this()].sort(compareFn);\n },\n reversed() {\n return [...this()].reverse();\n },\n [Symbol.iterator]: function* () {\n yield* this();\n }\n};\nObject.setPrototypeOf(observableArray.fn, observable.fn);\narrayForEach([\"pop\", \"push\", \"reverse\", \"shift\", \"sort\", \"splice\", \"unshift\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n var underlyingArray = this.peek();\n this.valueWillMutate();\n this.cacheDiffForKnownOperation(underlyingArray, methodName, arguments);\n var methodCallResult = underlyingArray[methodName].apply(underlyingArray, arguments);\n this.valueHasMutated();\n return methodCallResult === underlyingArray ? this : methodCallResult;\n };\n});\narrayForEach([\"slice\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n var underlyingArray = this();\n return underlyingArray[methodName].apply(underlyingArray, arguments);\n };\n});\nobservableArray.trackArrayChanges = trackArrayChanges;\n", "//\n// Computed Observable Values\n//\n// (before tko, `computed` was also known as `dependentObservable`)\n//\nimport {\n addDisposeCallback,\n arrayForEach,\n createSymbolOrString,\n domNodeIsAttachedToDocument,\n extend,\n options,\n hasOwnProperty,\n objectForEach,\n options as koOptions,\n removeDisposeCallback,\n safeSetTimeout,\n} from '@tko/utils'\n\nimport {\n dependencyDetection,\n extenders,\n valuesArePrimitiveAndEqual,\n observable,\n subscribable,\n LATEST_VALUE\n} from '@tko/observable'\n\nconst computedState = createSymbolOrString('_state')\nconst DISPOSED_STATE = {\n dependencyTracking: null,\n dependenciesCount: 0,\n isDisposed: true,\n isStale: false,\n isDirty: false,\n isSleeping: false,\n disposeWhenNodeIsRemoved: null,\n readFunction: null,\n _options: null\n}\n\nexport function computed (evaluatorFunctionOrOptions, evaluatorFunctionTarget, options) {\n if (typeof evaluatorFunctionOrOptions === 'object') {\n // Single-parameter syntax - everything is on this \"options\" param\n options = evaluatorFunctionOrOptions\n } else {\n // Multi-parameter syntax - construct the options according to the params passed\n options = options || {}\n if (evaluatorFunctionOrOptions) {\n options.read = evaluatorFunctionOrOptions\n }\n }\n if (typeof options.read !== 'function') {\n throw Error('Pass a function that returns the value of the computed')\n }\n\n var writeFunction = options.write\n var state = {\n latestValue: undefined,\n isStale: true,\n isDirty: true,\n isBeingEvaluated: false,\n suppressDisposalUntilDisposeWhenReturnsFalse: false,\n isDisposed: false,\n pure: false,\n isSleeping: false,\n readFunction: options.read,\n evaluatorFunctionTarget: evaluatorFunctionTarget || options.owner,\n disposeWhenNodeIsRemoved: options.disposeWhenNodeIsRemoved || options.disposeWhenNodeIsRemoved || null,\n disposeWhen: options.disposeWhen || options.disposeWhen,\n domNodeDisposalCallback: null,\n dependencyTracking: {},\n dependenciesCount: 0,\n evaluationTimeoutInstance: null\n }\n\n function computedObservable () {\n if (arguments.length > 0) {\n if (typeof writeFunction === 'function') {\n // Writing a value\n writeFunction.apply(state.evaluatorFunctionTarget, arguments)\n } else {\n throw new Error(\"Cannot write a value to a computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.\")\n }\n return this // Permits chained assignments\n } else {\n // Reading the value\n if (!state.isDisposed) {\n dependencyDetection.registerDependency(computedObservable)\n }\n if (state.isDirty || (state.isSleeping && computedObservable.haveDependenciesChanged())) {\n computedObservable.evaluateImmediate()\n }\n return state.latestValue\n }\n }\n\n computedObservable[computedState] = state\n computedObservable.isWriteable = typeof writeFunction === 'function'\n\n subscribable.fn.init(computedObservable)\n\n // Inherit from 'computed'\n Object.setPrototypeOf(computedObservable, computed.fn)\n\n if (options.pure) {\n state.pure = true\n state.isSleeping = true // Starts off sleeping; will awake on the first subscription\n extend(computedObservable, pureComputedOverrides)\n } else if (options.deferEvaluation) {\n extend(computedObservable, deferEvaluationOverrides)\n }\n\n if (koOptions.deferUpdates) {\n extenders.deferred(computedObservable, true)\n }\n\n if (koOptions.debug) {\n // #1731 - Aid debugging by exposing the computed's options\n computedObservable._options = options\n }\n\n if (state.disposeWhenNodeIsRemoved) {\n // Since this computed is associated with a DOM node, and we don't want to dispose the computed\n // until the DOM node is *removed* from the document (as opposed to never having been in the document),\n // we'll prevent disposal until \"disposeWhen\" first returns false.\n state.suppressDisposalUntilDisposeWhenReturnsFalse = true\n\n // disposeWhenNodeIsRemoved: true can be used to opt into the \"only dispose after first false result\"\n // behavior even if there's no specific node to watch. In that case, clear the option so we don't try\n // to watch for a non-node's disposal. This technique is intended for KO's internal use only and shouldn't\n // be documented or used by application code, as it's likely to change in a future version of KO.\n if (!state.disposeWhenNodeIsRemoved.nodeType) {\n state.disposeWhenNodeIsRemoved = null\n }\n }\n\n // Evaluate, unless sleeping or deferEvaluation is true\n if (!state.isSleeping && !options.deferEvaluation) {\n computedObservable.evaluateImmediate()\n }\n\n // Attach a DOM node disposal callback so that the computed will be proactively disposed as soon as the node is\n // removed using ko.removeNode. But skip if isActive is false (there will never be any dependencies to dispose).\n if (state.disposeWhenNodeIsRemoved && computedObservable.isActive()) {\n addDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback = function () {\n computedObservable.dispose()\n })\n }\n\n return computedObservable\n}\n\n// Utility function that disposes a given dependencyTracking entry\nfunction computedDisposeDependencyCallback (id, entryToDispose) {\n if (entryToDispose !== null && entryToDispose.dispose) {\n entryToDispose.dispose()\n }\n}\n\n// This function gets called each time a dependency is detected while evaluating a computed.\n// It's factored out as a shared function to avoid creating unnecessary function instances during evaluation.\nfunction computedBeginDependencyDetectionCallback (subscribable, id) {\n var computedObservable = this.computedObservable,\n state = computedObservable[computedState]\n if (!state.isDisposed) {\n if (this.disposalCount && this.disposalCandidates[id]) {\n // Don't want to dispose this subscription, as it's still being used\n computedObservable.addDependencyTracking(id, subscribable, this.disposalCandidates[id])\n this.disposalCandidates[id] = null // No need to actually delete the property - disposalCandidates is a transient object anyway\n --this.disposalCount\n } else if (!state.dependencyTracking[id]) {\n // Brand new subscription - add it\n computedObservable.addDependencyTracking(id, subscribable, state.isSleeping ? { _target: subscribable } : computedObservable.subscribeToDependency(subscribable))\n }\n // If the observable we've accessed has a pending notification, ensure\n // we get notified of the actual final value (bypass equality checks)\n if (subscribable._notificationIsPending) {\n subscribable._notifyNextChangeIfValueIsDifferent()\n }\n }\n}\n\ncomputed.fn = {\n equalityComparer: valuesArePrimitiveAndEqual,\n getDependenciesCount () {\n return this[computedState].dependenciesCount\n },\n\n getDependencies () {\n const dependencyTracking = this[computedState].dependencyTracking\n const dependentObservables = []\n\n objectForEach(dependencyTracking, function (id, dependency) {\n dependentObservables[dependency._order] = dependency._target\n })\n\n return dependentObservables\n },\n\n addDependencyTracking (id, target, trackingObj) {\n if (this[computedState].pure && target === this) {\n throw Error(\"A 'pure' computed must not be called recursively\")\n }\n\n this[computedState].dependencyTracking[id] = trackingObj\n trackingObj._order = this[computedState].dependenciesCount++\n trackingObj._version = target.getVersion()\n },\n haveDependenciesChanged () {\n var id, dependency, dependencyTracking = this[computedState].dependencyTracking\n for (id in dependencyTracking) {\n if (hasOwnProperty(dependencyTracking, id)) {\n dependency = dependencyTracking[id]\n if ((this._evalDelayed && dependency._target._notificationIsPending) || dependency._target.hasChanged(dependency._version)) {\n return true\n }\n }\n }\n },\n markDirty () {\n // Process \"dirty\" events if we can handle delayed notifications\n if (this._evalDelayed && !this[computedState].isBeingEvaluated) {\n this._evalDelayed(false /* notifyChange */)\n }\n },\n isActive () {\n const state = this[computedState]\n return state.isDirty || state.dependenciesCount > 0\n },\n respondToChange () {\n // Ignore \"change\" events if we've already scheduled a delayed notification\n if (!this._notificationIsPending) {\n this.evaluatePossiblyAsync()\n } else if (this[computedState].isDirty) {\n this[computedState].isStale = true\n }\n },\n subscribeToDependency (target) {\n if (target._deferUpdates) {\n var dirtySub = target.subscribe(this.markDirty, this, 'dirty'),\n changeSub = target.subscribe(this.respondToChange, this)\n return {\n _target: target,\n dispose () {\n dirtySub.dispose()\n changeSub.dispose()\n }\n }\n } else {\n return target.subscribe(this.evaluatePossiblyAsync, this)\n }\n },\n evaluatePossiblyAsync () {\n var computedObservable = this,\n throttleEvaluationTimeout = computedObservable.throttleEvaluation\n if (throttleEvaluationTimeout && throttleEvaluationTimeout >= 0) {\n clearTimeout(this[computedState].evaluationTimeoutInstance)\n this[computedState].evaluationTimeoutInstance = safeSetTimeout(function () {\n computedObservable.evaluateImmediate(true /* notifyChange */)\n }, throttleEvaluationTimeout)\n } else if (computedObservable._evalDelayed) {\n computedObservable._evalDelayed(true /* notifyChange */)\n } else {\n computedObservable.evaluateImmediate(true /* notifyChange */)\n }\n },\n evaluateImmediate (notifyChange) {\n var computedObservable = this,\n state = computedObservable[computedState],\n disposeWhen = state.disposeWhen,\n changed = false\n\n if (state.isBeingEvaluated) {\n // If the evaluation of a ko.computed causes side effects, it's possible that it will trigger its own re-evaluation.\n // This is not desirable (it's hard for a developer to realise a chain of dependencies might cause this, and they almost\n // certainly didn't intend infinite re-evaluations). So, for predictability, we simply prevent ko.computeds from causing\n // their own re-evaluation. Further discussion at https://github.com/SteveSanderson/knockout/pull/387\n return\n }\n\n // Do not evaluate (and possibly capture new dependencies) if disposed\n if (state.isDisposed) {\n return\n }\n\n if (state.disposeWhenNodeIsRemoved && !domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved) || disposeWhen && disposeWhen()) {\n // See comment above about suppressDisposalUntilDisposeWhenReturnsFalse\n if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {\n computedObservable.dispose()\n return\n }\n } else {\n // It just did return false, so we can stop suppressing now\n state.suppressDisposalUntilDisposeWhenReturnsFalse = false\n }\n\n state.isBeingEvaluated = true\n try {\n changed = this.evaluateImmediate_CallReadWithDependencyDetection(notifyChange)\n } finally {\n state.isBeingEvaluated = false\n }\n\n return changed\n },\n evaluateImmediate_CallReadWithDependencyDetection (notifyChange) {\n // This function is really just part of the evaluateImmediate logic. You would never call it from anywhere else.\n // Factoring it out into a separate function means it can be independent of the try/catch block in evaluateImmediate,\n // which contributes to saving about 40% off the CPU overhead of computed evaluation (on V8 at least).\n\n var computedObservable = this,\n state = computedObservable[computedState],\n changed = false\n\n // Initially, we assume that none of the subscriptions are still being used (i.e., all are candidates for disposal).\n // Then, during evaluation, we cross off any that are in fact still being used.\n var isInitial = state.pure ? undefined : !state.dependenciesCount, // If we're evaluating when there are no previous dependencies, it must be the first time\n dependencyDetectionContext = {\n computedObservable: computedObservable,\n disposalCandidates: state.dependencyTracking,\n disposalCount: state.dependenciesCount\n }\n\n dependencyDetection.begin({\n callbackTarget: dependencyDetectionContext,\n callback: computedBeginDependencyDetectionCallback,\n computed: computedObservable,\n isInitial: isInitial\n })\n\n state.dependencyTracking = {}\n state.dependenciesCount = 0\n\n var newValue = this.evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext)\n\n if (!state.dependenciesCount) {\n computedObservable.dispose()\n changed = true // When evaluation causes a disposal, make sure all dependent computeds get notified so they'll see the new state\n } else {\n changed = computedObservable.isDifferent(state.latestValue, newValue)\n }\n\n if (changed) {\n if (!state.isSleeping) {\n computedObservable.notifySubscribers(state.latestValue, 'beforeChange')\n } else {\n computedObservable.updateVersion()\n }\n\n state.latestValue = newValue\n if (options.debug) { computedObservable._latestValue = newValue }\n\n computedObservable.notifySubscribers(state.latestValue, 'spectate')\n\n if (!state.isSleeping && notifyChange) {\n computedObservable.notifySubscribers(state.latestValue)\n }\n\n if (computedObservable._recordUpdate) {\n computedObservable._recordUpdate()\n }\n }\n\n if (isInitial) {\n computedObservable.notifySubscribers(state.latestValue, 'awake')\n }\n\n return changed\n },\n evaluateImmediate_CallReadThenEndDependencyDetection (state, dependencyDetectionContext) {\n // This function is really part of the evaluateImmediate_CallReadWithDependencyDetection logic.\n // You'd never call it from anywhere else. Factoring it out means that evaluateImmediate_CallReadWithDependencyDetection\n // can be independent of try/finally blocks, which contributes to saving about 40% off the CPU\n // overhead of computed evaluation (on V8 at least).\n\n try {\n var readFunction = state.readFunction\n return state.evaluatorFunctionTarget ? readFunction.call(state.evaluatorFunctionTarget) : readFunction()\n } finally {\n dependencyDetection.end()\n\n // For each subscription no longer being used, remove it from the active subscriptions list and dispose it\n if (dependencyDetectionContext.disposalCount && !state.isSleeping) {\n objectForEach(dependencyDetectionContext.disposalCandidates, computedDisposeDependencyCallback)\n }\n\n state.isStale = state.isDirty = false\n }\n },\n peek (forceEvaluate) {\n // Peek won't ordinarily re-evaluate, except while the computed is sleeping\n // or to get the initial value when \"deferEvaluation\" is set.\n const state = this[computedState]\n if ((state.isDirty && (forceEvaluate || !state.dependenciesCount)) || (state.isSleeping && this.haveDependenciesChanged())) {\n this.evaluateImmediate()\n }\n return state.latestValue\n },\n\n get [LATEST_VALUE] () {\n return this.peek()\n },\n\n limit (limitFunction) {\n const state = this[computedState]\n // Override the limit function with one that delays evaluation as well\n subscribable.fn.limit.call(this, limitFunction)\n Object.assign(this, {\n _evalIfChanged () {\n if (!this[computedState].isSleeping) {\n if (this[computedState].isStale) {\n this.evaluateImmediate()\n } else {\n this[computedState].isDirty = false\n }\n }\n return state.latestValue\n },\n _evalDelayed (isChange) {\n this._limitBeforeChange(state.latestValue)\n\n // Mark as dirty\n state.isDirty = true\n if (isChange) {\n state.isStale = true\n }\n\n // Pass the observable to the \"limit\" code, which will evaluate it when\n // it's time to do the notification.\n this._limitChange(this, !isChange /* isDirty */)\n }\n })\n },\n dispose () {\n var state = this[computedState]\n if (!state.isSleeping && state.dependencyTracking) {\n objectForEach(state.dependencyTracking, function (id, dependency) {\n if (dependency.dispose) {\n dependency.dispose()\n }\n })\n }\n if (state.disposeWhenNodeIsRemoved && state.domNodeDisposalCallback) {\n removeDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback)\n }\n Object.assign(state, DISPOSED_STATE)\n }\n}\n\nvar pureComputedOverrides = {\n beforeSubscriptionAdd (event) {\n // If asleep, wake up the computed by subscribing to any dependencies.\n var computedObservable = this,\n state = computedObservable[computedState]\n if (!state.isDisposed && state.isSleeping && event === 'change') {\n state.isSleeping = false\n if (state.isStale || computedObservable.haveDependenciesChanged()) {\n state.dependencyTracking = null\n state.dependenciesCount = 0\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion()\n }\n } else {\n // First put the dependencies in order\n var dependenciesOrder = []\n objectForEach(state.dependencyTracking, function (id, dependency) {\n dependenciesOrder[dependency._order] = id\n })\n // Next, subscribe to each one\n arrayForEach(dependenciesOrder, function (id, order) {\n var dependency = state.dependencyTracking[id],\n subscription = computedObservable.subscribeToDependency(dependency._target)\n subscription._order = order\n subscription._version = dependency._version\n state.dependencyTracking[id] = subscription\n })\n\n // Waking dependencies may have triggered effects\n if (computedObservable.haveDependenciesChanged()) {\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion()\n }\n }\n }\n\n if (!state.isDisposed) { // test since evaluating could trigger disposal\n computedObservable.notifySubscribers(state.latestValue, 'awake')\n }\n }\n },\n afterSubscriptionRemove (event) {\n var state = this[computedState]\n if (!state.isDisposed && event === 'change' && !this.hasSubscriptionsForEvent('change')) {\n objectForEach(state.dependencyTracking, function (id, dependency) {\n if (dependency.dispose) {\n state.dependencyTracking[id] = {\n _target: dependency._target,\n _order: dependency._order,\n _version: dependency._version\n }\n dependency.dispose()\n }\n })\n state.isSleeping = true\n this.notifySubscribers(undefined, 'asleep')\n }\n },\n getVersion () {\n // Because a pure computed is not automatically updated while it is sleeping, we can't\n // simply return the version number. Instead, we check if any of the dependencies have\n // changed and conditionally re-evaluate the computed observable.\n var state = this[computedState]\n if (state.isSleeping && (state.isStale || this.haveDependenciesChanged())) {\n this.evaluateImmediate()\n }\n return subscribable.fn.getVersion.call(this)\n }\n}\n\nvar deferEvaluationOverrides = {\n beforeSubscriptionAdd (event) {\n // This will force a computed with deferEvaluation to evaluate when the first subscription is registered.\n if (event === 'change' || event === 'beforeChange') {\n this.peek()\n }\n }\n}\n\nObject.setPrototypeOf(computed.fn, subscribable.fn)\n\n// Set the proto values for ko.computed\nvar protoProp = observable.protoProperty // == \"__ko_proto__\"\ncomputed.fn[protoProp] = computed\n\n/* This is used by ko.isObservable */\nobservable.observablePrototypes.add(computed)\n\nexport function isComputed (instance) {\n return (typeof instance === 'function' && instance[protoProp] === computed)\n}\n\nexport function isPureComputed (instance) {\n return isComputed(instance) && instance[computedState] && instance[computedState].pure\n}\n\nexport function pureComputed (evaluatorFunctionOrOptions, evaluatorFunctionTarget) {\n if (typeof evaluatorFunctionOrOptions === 'function') {\n return computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget, {'pure': true})\n } else {\n evaluatorFunctionOrOptions = extend({}, evaluatorFunctionOrOptions) // make a copy of the parameter object\n evaluatorFunctionOrOptions.pure = true\n return computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget)\n }\n}\n", "import {\n extenders\n} from '@tko/observable'\n\nimport {\n computed\n} from './computed'\n\nexport function throttleExtender (target, timeout) {\n // Throttling means two things:\n\n // (1) For dependent observables, we throttle *evaluations* so that, no matter how fast its dependencies\n // notify updates, the target doesn't re-evaluate (and hence doesn't notify) faster than a certain rate\n target.throttleEvaluation = timeout\n\n // (2) For writable targets (observables, or writable dependent observables), we throttle *writes*\n // so the target cannot change value synchronously or faster than a certain rate\n var writeTimeoutInstance = null\n return computed({\n read: target,\n write: function (value) {\n clearTimeout(writeTimeoutInstance)\n writeTimeoutInstance = setTimeout(function () {\n target(value)\n }, timeout)\n }\n })\n}\n\nextenders.throttle = throttleExtender\n", "/**\n * Create an ES\n */\n\nimport {\n observable, observableArray, unwrap\n} from '@tko/observable'\n\nimport {\n computed\n} from './computed'\n\nconst PROXY_SYM = Symbol('Knockout Proxied Object')\nconst MIRROR_SYM = Symbol('Knockout Proxied Observables')\n\nfunction makeComputed (proxy, fn) {\n return computed({\n owner: proxy,\n read: fn,\n write: fn,\n pure: 'pure' in fn ? fn.pure : true,\n deferEvaluation: 'deferEvaluation' in fn ? fn.deferEvaluation : true\n }).extend({ deferred: true })\n}\n\nfunction setOrCreate (mirror, prop, value, proxy) {\n if (!mirror[prop]) {\n const ctr = Array.isArray(value) ? observableArray\n : typeof value === 'function' ? makeComputed.bind(null, proxy)\n : observable\n mirror[prop] = ctr(value)\n } else {\n mirror[prop](value)\n }\n}\n\nfunction assignOrUpdate(mirror, object, proxy) {\n for (const key of Object.keys(object)) {\n setOrCreate(mirror, key, object[key], proxy)\n }\n return object\n}\n\nexport function proxy (object) {\n const mirror = { [PROXY_SYM]: object }\n mirror[MIRROR_SYM] = mirror\n const proxy = new Proxy(function () {}, {\n has (target, prop) { return prop in mirror },\n get (target, prop) { return unwrap(mirror[prop]) },\n set (target, prop, value, receiver) {\n setOrCreate(mirror, prop, value, proxy)\n object[prop] = value\n return true\n },\n deleteProperty (property) {\n delete mirror[property]\n return delete object[property]\n },\n apply (target, thisArg, [props]) {\n if (props) {\n assignOrUpdate(mirror, props, proxy)\n return Object.assign(object, props)\n }\n return object\n },\n getPrototypeOf () { return Object.getPrototypeOf(object) },\n setPrototypeOf (target, proto) { return Object.setPrototypeOf(object, proto) },\n defineProperty (target, prop, desc) { return Object.defineProperty(object, prop, desc) },\n preventExtensions () { return Object.preventExtensions(object) },\n isExtensible () { return Object.isExtensible(object) },\n ownKeys () {\n return [...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)]\n }\n })\n assignOrUpdate(mirror, object, proxy)\n return proxy\n}\n\nexport function getObservable (proxied, prop) { return proxied[MIRROR_SYM][prop] }\nexport function peek (proxied, prop) { return getObservable(proxied, prop).peek() }\nexport function isProxied (proxied) { return PROXY_SYM in proxied }\n\nObject.assign(proxy, { getObservable, peek, isProxied })\n", "\nimport {\n pureComputed\n} from './computed'\n\nfunction kowhen (predicate, context, resolve) {\n const observable = pureComputed(predicate, context).extend({notify: 'always'});\n const subscription = observable.subscribe(value => {\n if (value) {\n subscription.dispose()\n resolve(value)\n }\n })\n // In case the initial value is true, process it right away\n observable.notifySubscribers(observable.peek())\n return subscription\n}\n\nexport function when (predicate, callback, context) {\n const whenFn = kowhen.bind(null, predicate, context)\n return callback ? whenFn(callback.bind(context)) : new Promise(whenFn)\n}\n"],
4
+ "sourcesContent": ["export * from './src'\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nconst { isArray } = Array;\nexport function arrayForEach(array, action, thisArg) {\n if (arguments.length > 2) {\n action = action.bind(thisArg);\n }\n for (let i = 0, j = array.length; i < j; ++i) {\n action(array[i], i, array);\n }\n}\nexport function arrayIndexOf(array, item) {\n return (isArray(array) ? array : [...array]).indexOf(item);\n}\nexport function arrayFirst(array, predicate, predicateOwner) {\n return (isArray(array) ? array : [...array]).find(predicate, predicateOwner);\n}\nexport function arrayMap(array = [], mapping, thisArg) {\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n return array === null ? [] : Array.from(array, mapping);\n}\nexport function arrayRemoveItem(array, itemToRemove) {\n var index = arrayIndexOf(array, itemToRemove);\n if (index > 0) {\n array.splice(index, 1);\n } else if (index === 0) {\n array.shift();\n }\n}\nexport function arrayGetDistinctValues(array = []) {\n const seen = /* @__PURE__ */ new Set();\n if (array === null) {\n return [];\n }\n return (isArray(array) ? array : [...array]).filter((item) => seen.has(item) ? false : seen.add(item));\n}\nexport function arrayFilter(array, predicate, thisArg) {\n if (arguments.length > 2) {\n predicate = predicate.bind(thisArg);\n }\n return array === null ? [] : (isArray(array) ? array : [...array]).filter(predicate);\n}\nexport function arrayPushAll(array, valuesToPush) {\n if (isArray(valuesToPush)) {\n array.push.apply(array, valuesToPush);\n } else {\n for (var i = 0, j = valuesToPush.length; i < j; i++) {\n array.push(valuesToPush[i]);\n }\n }\n return array;\n}\nexport function addOrRemoveItem(array, value, included) {\n var existingEntryIndex = arrayIndexOf(typeof array.peek === \"function\" ? array.peek() : array, value);\n if (existingEntryIndex < 0) {\n if (included) {\n array.push(value);\n }\n } else {\n if (!included) {\n array.splice(existingEntryIndex, 1);\n }\n }\n}\nexport function makeArray(arrayLikeObject) {\n return Array.from(arrayLikeObject);\n}\nexport function range(min, max) {\n min = typeof min === \"function\" ? min() : min;\n max = typeof max === \"function\" ? max() : max;\n var result = [];\n for (var i = min; i <= max; i++) {\n result.push(i);\n }\n return result;\n}\nexport function findMovesInArrayComparison(left, right, limitFailedCompares) {\n if (left.length && right.length) {\n var failedCompares, l, r, leftItem, rightItem;\n for (failedCompares = l = 0; (!limitFailedCompares || failedCompares < limitFailedCompares) && (leftItem = left[l]); ++l) {\n for (r = 0; rightItem = right[r]; ++r) {\n if (leftItem.value === rightItem.value) {\n leftItem.moved = rightItem.index;\n rightItem.moved = leftItem.index;\n right.splice(r, 1);\n failedCompares = r = 0;\n break;\n }\n }\n failedCompares += r;\n }\n }\n}\nconst statusNotInOld = \"added\";\nconst statusNotInNew = \"deleted\";\nexport function compareArrays(oldArray, newArray, options) {\n options = typeof options === \"boolean\" ? { dontLimitMoves: options } : options || {};\n oldArray = oldArray || [];\n newArray = newArray || [];\n if (oldArray.length < newArray.length) {\n return compareSmallArrayToBigArray(oldArray, newArray, statusNotInOld, statusNotInNew, options);\n } else {\n return compareSmallArrayToBigArray(newArray, oldArray, statusNotInNew, statusNotInOld, options);\n }\n}\nfunction compareSmallArrayToBigArray(smlArray, bigArray, statusNotInSml, statusNotInBig, options) {\n var myMin = Math.min, myMax = Math.max, editDistanceMatrix = [], smlIndex, smlIndexMax = smlArray.length, bigIndex, bigIndexMax = bigArray.length, compareRange = bigIndexMax - smlIndexMax || 1, maxDistance = smlIndexMax + bigIndexMax + 1, thisRow, lastRow, bigIndexMaxForRow, bigIndexMinForRow;\n for (smlIndex = 0; smlIndex <= smlIndexMax; smlIndex++) {\n lastRow = thisRow;\n editDistanceMatrix.push(thisRow = []);\n bigIndexMaxForRow = myMin(bigIndexMax, smlIndex + compareRange);\n bigIndexMinForRow = myMax(0, smlIndex - 1);\n for (bigIndex = bigIndexMinForRow; bigIndex <= bigIndexMaxForRow; bigIndex++) {\n if (!bigIndex) {\n thisRow[bigIndex] = smlIndex + 1;\n } else if (!smlIndex) {\n thisRow[bigIndex] = bigIndex + 1;\n } else if (smlArray[smlIndex - 1] === bigArray[bigIndex - 1]) {\n thisRow[bigIndex] = lastRow[bigIndex - 1];\n } else {\n var northDistance = lastRow[bigIndex] || maxDistance;\n var westDistance = thisRow[bigIndex - 1] || maxDistance;\n thisRow[bigIndex] = myMin(northDistance, westDistance) + 1;\n }\n }\n }\n var editScript = [], meMinusOne, notInSml = [], notInBig = [];\n for (smlIndex = smlIndexMax, bigIndex = bigIndexMax; smlIndex || bigIndex; ) {\n meMinusOne = editDistanceMatrix[smlIndex][bigIndex] - 1;\n if (bigIndex && meMinusOne === editDistanceMatrix[smlIndex][bigIndex - 1]) {\n notInSml.push(editScript[editScript.length] = {\n \"status\": statusNotInSml,\n \"value\": bigArray[--bigIndex],\n \"index\": bigIndex\n });\n } else if (smlIndex && meMinusOne === editDistanceMatrix[smlIndex - 1][bigIndex]) {\n notInBig.push(editScript[editScript.length] = {\n \"status\": statusNotInBig,\n \"value\": smlArray[--smlIndex],\n \"index\": smlIndex\n });\n } else {\n --bigIndex;\n --smlIndex;\n if (!options.sparse) {\n editScript.push({\n \"status\": \"retained\",\n \"value\": bigArray[bigIndex]\n });\n }\n }\n }\n findMovesInArrayComparison(notInBig, notInSml, !options.dontLimitMoves && smlIndexMax * 10);\n return editScript.reverse();\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nconst options = {\n deferUpdates: false,\n useOnlyNativeEvents: false,\n protoProperty: \"__ko_proto__\",\n defaultBindingAttribute: \"data-bind\",\n allowVirtualElements: true,\n bindingGlobals: /* @__PURE__ */ Object.create(null),\n bindingProviderInstance: null,\n createChildContextWithAs: false,\n jQuery: globalThis.jQuery,\n Promise: globalThis.Promise,\n taskScheduler: null,\n debug: false,\n global: globalThis,\n document: globalThis.document,\n filters: {},\n includeDestroyed: false,\n foreachHidesDestroyed: false,\n onError: function(e) {\n throw e;\n },\n set: function(name, value) {\n options[name] = value;\n },\n getBindingHandler() {\n },\n cleanExternalData() {\n }\n};\nObject.defineProperty(options, \"$\", {\n get: function() {\n return options.jQuery;\n }\n});\nexport default options;\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport options from \"./options\";\nexport function catchFunctionErrors(delegate) {\n if (!options.onError) {\n return delegate;\n }\n return (...args) => {\n try {\n return delegate(...args);\n } catch (err) {\n options.onError(err);\n }\n };\n}\nexport function deferError(error) {\n safeSetTimeout(function() {\n throw error;\n }, 0);\n}\nexport function safeSetTimeout(handler, timeout) {\n return setTimeout(catchFunctionErrors(handler), timeout);\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { safeSetTimeout } from \"./error\";\nexport function throttle(callback, timeout) {\n var timeoutInstance;\n return function(...args) {\n if (!timeoutInstance) {\n timeoutInstance = safeSetTimeout(function() {\n timeoutInstance = void 0;\n callback(...args);\n }, timeout);\n }\n };\n}\nexport function debounce(callback, timeout) {\n var timeoutInstance;\n return function(...args) {\n clearTimeout(timeoutInstance);\n timeoutInstance = safeSetTimeout(() => callback(...args), timeout);\n };\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport options from \"./options\";\nconst ieVersion = options.document && function() {\n var version = 3, div = options.document.createElement(\"div\"), iElems = div.getElementsByTagName(\"i\");\n while (div.innerHTML = \"<!--[if gt IE \" + ++version + \"]><i></i><![endif]-->\", iElems[0]) {\n }\n if (!version) {\n const userAgent = window.navigator.userAgent;\n return ua.match(/MSIE ([^ ]+)/) || ua.match(/rv:([^ )]+)/);\n }\n return version > 4 ? version : void 0;\n}();\nconst isIe6 = ieVersion === 6;\nconst isIe7 = ieVersion === 7;\nexport { ieVersion, isIe6, isIe7 };\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nexport function hasOwnProperty(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName);\n}\nexport function isObjectLike(obj) {\n if (obj === null) {\n return false;\n }\n return typeof obj === \"object\" || typeof obj === \"function\";\n}\nexport function extend(target, source) {\n if (source) {\n for (var prop in source) {\n if (hasOwnProperty(source, prop)) {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nexport function objectForEach(obj, action) {\n for (var prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n action(prop, obj[prop]);\n }\n }\n}\nexport function objectMap(source, mapping, thisArg) {\n if (!source) {\n return source;\n }\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n var target = {};\n for (var prop in source) {\n if (hasOwnProperty(source, prop)) {\n target[prop] = mapping(source[prop], prop, source);\n }\n }\n return target;\n}\nexport function getObjectOwnProperty(obj, propName) {\n return hasOwnProperty(obj, propName) ? obj[propName] : void 0;\n}\nexport function clonePlainObjectDeep(obj, seen) {\n if (!seen) {\n seen = [];\n }\n if (!obj || typeof obj !== \"object\" || obj.constructor !== Object || seen.indexOf(obj) !== -1) {\n return obj;\n }\n seen.push(obj);\n var result = {};\n for (var prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n result[prop] = clonePlainObjectDeep(obj[prop], seen);\n }\n }\n return result;\n}\nexport function safeStringify(value) {\n const seen = /* @__PURE__ */ new Set();\n return JSON.stringify(value, (k, v) => {\n if (seen.has(v)) {\n return \"...\";\n }\n if (typeof v === \"object\") {\n seen.add(v);\n }\n return v;\n });\n}\nexport function isThenable(object) {\n return isObjectLike(object) && typeof object.then === \"function\";\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nfunction testOverwrite() {\n try {\n Object.defineProperty(function x() {\n }, \"length\", {});\n return true;\n } catch (e) {\n return false;\n }\n}\nexport const functionSupportsLengthOverwrite = testOverwrite();\nexport function overwriteLengthPropertyIfSupported(fn, descriptor) {\n if (functionSupportsLengthOverwrite) {\n Object.defineProperty(fn, \"length\", descriptor);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nexport var useSymbols = typeof Symbol === \"function\";\nexport function createSymbolOrString(identifier) {\n return useSymbols ? Symbol(identifier) : identifier;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport options from \"./options\";\nexport var jQueryInstance = options.global && options.global.jQuery;\nexport function jQuerySetInstance(jquery) {\n options.jQuery = jQueryInstance = jquery;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { arrayFirst } from \"../array\";\nexport function domNodeIsContainedBy(node, containedByNode) {\n if (node === containedByNode) {\n return true;\n }\n if (node.nodeType === 11) {\n return false;\n }\n if (containedByNode.contains) {\n return containedByNode.contains(node.nodeType !== 1 ? node.parentNode : node);\n }\n if (containedByNode.compareDocumentPosition) {\n return (containedByNode.compareDocumentPosition(node) & 16) == 16;\n }\n while (node && node != containedByNode) {\n node = node.parentNode;\n }\n return !!node;\n}\nexport function domNodeIsAttachedToDocument(node) {\n return domNodeIsContainedBy(node, node.ownerDocument.documentElement);\n}\nexport function anyDomNodeIsAttachedToDocument(nodes) {\n return !!arrayFirst(nodes, domNodeIsAttachedToDocument);\n}\nexport function tagNameLower(element) {\n return element && element.tagName && element.tagName.toLowerCase();\n}\nexport function isDomElement(obj) {\n if (window.HTMLElement) {\n return obj instanceof HTMLElement;\n } else {\n return obj && obj.tagName && obj.nodeType === 1;\n }\n}\nexport function isDocumentFragment(obj) {\n if (window.DocumentFragment) {\n return obj instanceof DocumentFragment;\n } else {\n return obj && obj.nodeType === 11;\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { ieVersion } from \"../ie\";\nconst datastoreTime = new Date().getTime();\nconst dataStoreKeyExpandoPropertyName = `__ko__${datastoreTime}`;\nconst dataStoreSymbol = Symbol(\"Knockout data\");\nvar dataStore;\nlet uniqueId = 0;\nconst modern = {\n getDataForNode(node, createIfNotFound) {\n let dataForNode = node[dataStoreSymbol];\n if (!dataForNode && createIfNotFound) {\n dataForNode = node[dataStoreSymbol] = {};\n }\n return dataForNode;\n },\n clear(node) {\n if (node[dataStoreSymbol]) {\n delete node[dataStoreSymbol];\n return true;\n }\n return false;\n }\n};\nconst IE = {\n getDataforNode(node, createIfNotFound) {\n let dataStoreKey = node[dataStoreKeyExpandoPropertyName];\n const hasExistingDataStore = dataStoreKey && dataStoreKey !== \"null\" && dataStore[dataStoreKey];\n if (!hasExistingDataStore) {\n if (!createIfNotFound) {\n return void 0;\n }\n dataStoreKey = node[dataStoreKeyExpandoPropertyName] = \"ko\" + uniqueId++;\n dataStore[dataStoreKey] = {};\n }\n return dataStore[dataStoreKey];\n },\n clear(node) {\n const dataStoreKey = node[dataStoreKeyExpandoPropertyName];\n if (dataStoreKey) {\n delete dataStore[dataStoreKey];\n node[dataStoreKeyExpandoPropertyName] = null;\n return true;\n }\n return false;\n }\n};\nconst { getDataForNode, clear } = ieVersion ? IE : modern;\nexport function nextKey() {\n return uniqueId++ + dataStoreKeyExpandoPropertyName;\n}\nfunction get(node, key) {\n const dataForNode = getDataForNode(node, false);\n return dataForNode && dataForNode[key];\n}\nfunction set(node, key, value) {\n var dataForNode = getDataForNode(node, value !== void 0);\n dataForNode && (dataForNode[key] = value);\n}\nfunction getOrSet(node, key, value) {\n const dataForNode = getDataForNode(node, true);\n return dataForNode[key] || (dataForNode[key] = value);\n}\nexport { get, set, getOrSet, clear };\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport * as domData from \"./data\";\nimport { default as options } from \"../options\";\nimport { arrayRemoveItem, arrayIndexOf } from \"../array\";\nimport { jQueryInstance } from \"../jquery\";\nvar domDataKey = domData.nextKey();\nvar cleanableNodeTypes = { 1: true, 8: true, 9: true };\nvar cleanableNodeTypesWithDescendants = { 1: true, 9: true };\nfunction getDisposeCallbacksCollection(node, createIfNotFound) {\n var allDisposeCallbacks = domData.get(node, domDataKey);\n if (allDisposeCallbacks === void 0 && createIfNotFound) {\n allDisposeCallbacks = [];\n domData.set(node, domDataKey, allDisposeCallbacks);\n }\n return allDisposeCallbacks;\n}\nfunction destroyCallbacksCollection(node) {\n domData.set(node, domDataKey, void 0);\n}\nfunction cleanSingleNode(node) {\n var callbacks = getDisposeCallbacksCollection(node, false);\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](node);\n }\n }\n domData.clear(node);\n for (let i = 0, j = otherNodeCleanerFunctions.length; i < j; ++i) {\n otherNodeCleanerFunctions[i](node);\n }\n if (options.cleanExternalData) {\n options.cleanExternalData(node);\n }\n if (cleanableNodeTypesWithDescendants[node.nodeType]) {\n cleanNodesInList(node.childNodes, true);\n }\n}\nfunction cleanNodesInList(nodeList, onlyComments) {\n const cleanedNodes = [];\n let lastCleanedNode;\n for (var i = 0; i < nodeList.length; i++) {\n if (!onlyComments || nodeList[i].nodeType === 8) {\n cleanSingleNode(cleanedNodes[cleanedNodes.length] = lastCleanedNode = nodeList[i]);\n if (nodeList[i] !== lastCleanedNode) {\n while (i-- && arrayIndexOf(cleanedNodes, nodeList[i]) === -1) {\n }\n }\n }\n }\n}\nexport function addDisposeCallback(node, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n getDisposeCallbacksCollection(node, true).push(callback);\n}\nexport function removeDisposeCallback(node, callback) {\n var callbacksCollection = getDisposeCallbacksCollection(node, false);\n if (callbacksCollection) {\n arrayRemoveItem(callbacksCollection, callback);\n if (callbacksCollection.length === 0) {\n destroyCallbacksCollection(node);\n }\n }\n}\nexport function cleanNode(node) {\n if (cleanableNodeTypes[node.nodeType]) {\n cleanSingleNode(node);\n if (cleanableNodeTypesWithDescendants[node.nodeType]) {\n cleanNodesInList(node.getElementsByTagName(\"*\"));\n }\n }\n return node;\n}\nexport function removeNode(node) {\n cleanNode(node);\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nexport const otherNodeCleanerFunctions = [];\nexport function addCleaner(fn) {\n otherNodeCleanerFunctions.push(fn);\n}\nexport function removeCleaner(fn) {\n const fnIndex = otherNodeCleanerFunctions.indexOf(fn);\n if (fnIndex >= 0) {\n otherNodeCleanerFunctions.splice(fnIndex, 1);\n }\n}\nexport function cleanjQueryData(node) {\n var jQueryCleanNodeFn = jQueryInstance ? jQueryInstance.cleanData : null;\n if (jQueryCleanNodeFn) {\n jQueryCleanNodeFn([node]);\n }\n}\notherNodeCleanerFunctions.push(cleanjQueryData);\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { objectForEach } from \"../object\";\nimport { jQueryInstance } from \"../jquery\";\nimport { ieVersion } from \"../ie\";\nimport { catchFunctionErrors } from \"../error\";\nimport { tagNameLower } from \"./info\";\nimport { addDisposeCallback } from \"./disposal\";\nimport options from \"../options\";\nvar knownEvents = {}, knownEventTypesByEventName = {};\nvar keyEventTypeName = options.global.navigator && /Firefox\\/2/i.test(options.global.navigator.userAgent) ? \"KeyboardEvent\" : \"UIEvents\";\nknownEvents[keyEventTypeName] = [\"keyup\", \"keydown\", \"keypress\"];\nknownEvents[\"MouseEvents\"] = [\n \"click\",\n \"dblclick\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"mouseenter\",\n \"mouseleave\"\n];\nobjectForEach(knownEvents, function(eventType, knownEventsForType) {\n if (knownEventsForType.length) {\n for (var i = 0, j = knownEventsForType.length; i < j; i++) {\n knownEventTypesByEventName[knownEventsForType[i]] = eventType;\n }\n }\n});\nfunction isClickOnCheckableElement(element, eventType) {\n if (tagNameLower(element) !== \"input\" || !element.type)\n return false;\n if (eventType.toLowerCase() != \"click\")\n return false;\n var inputType = element.type;\n return inputType == \"checkbox\" || inputType == \"radio\";\n}\nvar eventsThatMustBeRegisteredUsingAttachEvent = { \"propertychange\": true };\nlet jQueryEventAttachName;\nexport function registerEventHandler(element, eventType, handler, eventOptions = false) {\n const wrappedHandler = catchFunctionErrors(handler);\n const mustUseAttachEvent = ieVersion && eventsThatMustBeRegisteredUsingAttachEvent[eventType];\n const mustUseNative = Boolean(eventOptions);\n if (!options.useOnlyNativeEvents && !mustUseAttachEvent && !mustUseNative && jQueryInstance) {\n if (!jQueryEventAttachName) {\n jQueryEventAttachName = typeof jQueryInstance(element).on === \"function\" ? \"on\" : \"bind\";\n }\n jQueryInstance(element)[jQueryEventAttachName](eventType, wrappedHandler);\n } else if (!mustUseAttachEvent && typeof element.addEventListener === \"function\") {\n element.addEventListener(eventType, wrappedHandler, eventOptions);\n } else if (typeof element.attachEvent !== \"undefined\") {\n const attachEventHandler = function(event) {\n wrappedHandler.call(element, event);\n };\n const attachEventName = \"on\" + eventType;\n element.attachEvent(attachEventName, attachEventHandler);\n addDisposeCallback(element, function() {\n element.detachEvent(attachEventName, attachEventHandler);\n });\n } else {\n throw new Error(\"Browser doesn't support addEventListener or attachEvent\");\n }\n}\nexport function triggerEvent(element, eventType) {\n if (!(element && element.nodeType)) {\n throw new Error(\"element must be a DOM node when calling triggerEvent\");\n }\n var useClickWorkaround = isClickOnCheckableElement(element, eventType);\n if (!options.useOnlyNativeEvents && jQueryInstance && !useClickWorkaround) {\n jQueryInstance(element).trigger(eventType);\n } else if (typeof document.createEvent === \"function\") {\n if (typeof element.dispatchEvent === \"function\") {\n var eventCategory = knownEventTypesByEventName[eventType] || \"HTMLEvents\";\n var event = document.createEvent(eventCategory);\n event.initEvent(eventType, true, true, options.global, 0, 0, 0, 0, 0, false, false, false, false, 0, element);\n element.dispatchEvent(event);\n } else {\n throw new Error(\"The supplied element doesn't support dispatchEvent\");\n }\n } else if (useClickWorkaround && element.click) {\n element.click();\n } else if (typeof element.fireEvent !== \"undefined\") {\n element.fireEvent(\"on\" + eventType);\n } else {\n throw new Error(\"Browser doesn't support triggering events\");\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { emptyDomNode, setDomNodeChildren as setRegularDomNodeChildren } from \"./manipulation\";\nimport { removeNode } from \"./disposal\";\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nimport options from \"../options\";\nvar commentNodesHaveTextProperty = options.document && options.document.createComment(\"test\").text === \"<!--test-->\";\nexport var startCommentRegex = commentNodesHaveTextProperty ? /^<!--\\s*ko(?:\\s+([\\s\\S]+))?\\s*-->$/ : /^\\s*ko(?:\\s+([\\s\\S]+))?\\s*$/;\nexport var endCommentRegex = commentNodesHaveTextProperty ? /^<!--\\s*\\/ko\\s*-->$/ : /^\\s*\\/ko\\s*$/;\nvar htmlTagsWithOptionallyClosingChildren = { \"ul\": true, \"ol\": true };\nexport function isStartComment(node) {\n return node.nodeType == 8 && startCommentRegex.test(commentNodesHaveTextProperty ? node.text : node.nodeValue);\n}\nexport function isEndComment(node) {\n return node.nodeType == 8 && endCommentRegex.test(commentNodesHaveTextProperty ? node.text : node.nodeValue);\n}\nfunction isUnmatchedEndComment(node) {\n return isEndComment(node) && !domData.get(node, matchedEndCommentDataKey);\n}\nconst matchedEndCommentDataKey = \"__ko_matchedEndComment__\";\nexport function getVirtualChildren(startComment, allowUnbalanced) {\n var currentNode = startComment;\n var depth = 1;\n var children = [];\n while (currentNode = currentNode.nextSibling) {\n if (isEndComment(currentNode)) {\n domData.set(currentNode, matchedEndCommentDataKey, true);\n depth--;\n if (depth === 0) {\n return children;\n }\n }\n children.push(currentNode);\n if (isStartComment(currentNode)) {\n depth++;\n }\n }\n if (!allowUnbalanced) {\n throw new Error(\"Cannot find closing comment tag to match: \" + startComment.nodeValue);\n }\n return null;\n}\nfunction getMatchingEndComment(startComment, allowUnbalanced) {\n var allVirtualChildren = getVirtualChildren(startComment, allowUnbalanced);\n if (allVirtualChildren) {\n if (allVirtualChildren.length > 0) {\n return allVirtualChildren[allVirtualChildren.length - 1].nextSibling;\n }\n return startComment.nextSibling;\n } else {\n return null;\n }\n}\nfunction getUnbalancedChildTags(node) {\n var childNode = node.firstChild, captureRemaining = null;\n if (childNode) {\n do {\n if (captureRemaining) {\n captureRemaining.push(childNode);\n } else if (isStartComment(childNode)) {\n var matchingEndComment = getMatchingEndComment(childNode, true);\n if (matchingEndComment) {\n childNode = matchingEndComment;\n } else {\n captureRemaining = [childNode];\n }\n } else if (isEndComment(childNode)) {\n captureRemaining = [childNode];\n }\n } while (childNode = childNode.nextSibling);\n }\n return captureRemaining;\n}\nexport var allowedBindings = {};\nexport var hasBindingValue = isStartComment;\nexport function childNodes(node) {\n return isStartComment(node) ? getVirtualChildren(node) : node.childNodes;\n}\nexport function emptyNode(node) {\n if (!isStartComment(node)) {\n emptyDomNode(node);\n } else {\n var virtualChildren = childNodes(node);\n for (var i = 0, j = virtualChildren.length; i < j; i++) {\n removeNode(virtualChildren[i]);\n }\n }\n}\nexport function setDomNodeChildren(node, childNodes2) {\n if (!isStartComment(node)) {\n setRegularDomNodeChildren(node, childNodes2);\n } else {\n emptyNode(node);\n const endCommentNode = node.nextSibling;\n const parentNode = endCommentNode.parentNode;\n for (var i = 0, j = childNodes2.length; i < j; ++i) {\n parentNode.insertBefore(childNodes2[i], endCommentNode);\n }\n }\n}\nexport function prepend(containerNode, nodeToPrepend) {\n if (!isStartComment(containerNode)) {\n if (containerNode.firstChild) {\n containerNode.insertBefore(nodeToPrepend, containerNode.firstChild);\n } else {\n containerNode.appendChild(nodeToPrepend);\n }\n } else {\n containerNode.parentNode.insertBefore(nodeToPrepend, containerNode.nextSibling);\n }\n}\nexport function insertAfter(containerNode, nodeToInsert, insertAfterNode) {\n if (!insertAfterNode) {\n prepend(containerNode, nodeToInsert);\n } else if (!isStartComment(containerNode)) {\n if (insertAfterNode.nextSibling) {\n containerNode.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n } else {\n containerNode.appendChild(nodeToInsert);\n }\n } else {\n containerNode.parentNode.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n }\n}\nexport function firstChild(node) {\n if (!isStartComment(node)) {\n if (node.firstChild && isEndComment(node.firstChild)) {\n throw new Error(\"Found invalid end comment, as the first child of \" + node.outerHTML);\n }\n return node.firstChild;\n }\n if (!node.nextSibling || isEndComment(node.nextSibling)) {\n return null;\n }\n return node.nextSibling;\n}\nexport function lastChild(node) {\n let nextChild = firstChild(node);\n let lastChildNode;\n do {\n lastChildNode = nextChild;\n } while (nextChild = nextSibling(nextChild));\n return lastChildNode;\n}\nexport function nextSibling(node) {\n if (isStartComment(node)) {\n node = getMatchingEndComment(node);\n }\n if (node.nextSibling && isEndComment(node.nextSibling)) {\n if (isUnmatchedEndComment(node.nextSibling)) {\n throw Error(\"Found end comment without a matching opening comment, as next sibling of \" + node.outerHTML);\n }\n return null;\n } else {\n return node.nextSibling;\n }\n}\nexport function previousSibling(node) {\n var depth = 0;\n do {\n if (node.nodeType === 8) {\n if (isStartComment(node)) {\n if (--depth === 0) {\n return node;\n }\n } else if (isEndComment(node)) {\n depth++;\n }\n } else {\n if (depth === 0) {\n return node;\n }\n }\n } while (node = node.previousSibling);\n}\nexport function virtualNodeBindingValue(node) {\n var regexMatch = (commentNodesHaveTextProperty ? node.text : node.nodeValue).match(startCommentRegex);\n return regexMatch ? regexMatch[1] : null;\n}\nexport function normaliseVirtualElementDomStructure(elementVerified) {\n if (!htmlTagsWithOptionallyClosingChildren[tagNameLower(elementVerified)]) {\n return;\n }\n var childNode = elementVerified.firstChild;\n if (childNode) {\n do {\n if (childNode.nodeType === 1) {\n var unbalancedTags = getUnbalancedChildTags(childNode);\n if (unbalancedTags) {\n var nodeToInsertBefore = childNode.nextSibling;\n for (var i = 0; i < unbalancedTags.length; i++) {\n if (nodeToInsertBefore) {\n elementVerified.insertBefore(unbalancedTags[i], nodeToInsertBefore);\n } else {\n elementVerified.appendChild(unbalancedTags[i]);\n }\n }\n }\n }\n } while (childNode = childNode.nextSibling);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { stringTrim } from \"../string\";\nimport { makeArray } from \"../array\";\nimport { emptyDomNode, moveCleanedNodesToContainerElement } from \"./manipulation\";\nimport { jQueryInstance } from \"../jquery\";\nimport { forceRefresh } from \"./fixes\";\nimport * as virtualElements from \"./virtualElements\";\nimport options from \"../options\";\nvar none = [0, \"\", \"\"], table = [1, \"<table>\", \"</table>\"], tbody = [2, \"<table><tbody>\", \"</tbody></table>\"], colgroup = [2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\"], tr = [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"], select = [1, \"<select multiple='multiple'>\", \"</select>\"], fieldset = [1, \"<fieldset>\", \"</fieldset>\"], map = [1, \"<map>\", \"</map>\"], object = [1, \"<object>\", \"</object>\"], lookup = {\n \"area\": map,\n \"col\": colgroup,\n \"colgroup\": table,\n \"caption\": table,\n \"legend\": fieldset,\n \"thead\": table,\n \"tbody\": table,\n \"tfoot\": table,\n \"tr\": tbody,\n \"td\": tr,\n \"th\": tr,\n \"option\": select,\n \"optgroup\": select,\n \"param\": object\n}, supportsTemplateTag = options.document && \"content\" in options.document.createElement(\"template\");\nfunction getWrap(tags) {\n const m = tags.match(/^(?:<!--.*?-->\\s*?)*?<([a-z]+)[\\s>]/);\n return m && lookup[m[1]] || none;\n}\nfunction simpleHtmlParse(html, documentContext) {\n documentContext || (documentContext = document);\n var windowContext = documentContext[\"parentWindow\"] || documentContext[\"defaultView\"] || window;\n var tags = stringTrim(html).toLowerCase(), div = documentContext.createElement(\"div\"), wrap = getWrap(tags), depth = wrap[0];\n var markup = \"ignored<div>\" + wrap[1] + html + wrap[2] + \"</div>\";\n if (typeof windowContext[\"innerShiv\"] === \"function\") {\n div.appendChild(windowContext[\"innerShiv\"](markup));\n } else {\n div.innerHTML = markup;\n }\n while (depth--) {\n div = div.lastChild;\n }\n return makeArray(div.lastChild.childNodes);\n}\nfunction templateHtmlParse(html, documentContext) {\n if (!documentContext) {\n documentContext = document;\n }\n var template = documentContext.createElement(\"template\");\n template.innerHTML = html;\n return makeArray(template.content.childNodes);\n}\nfunction jQueryHtmlParse(html, documentContext) {\n if (jQueryInstance.parseHTML) {\n return jQueryInstance.parseHTML(html, documentContext) || [];\n } else {\n var elems = jQueryInstance.clean([html], documentContext);\n if (elems && elems[0]) {\n var elem = elems[0];\n while (elem.parentNode && elem.parentNode.nodeType !== 11) {\n elem = elem.parentNode;\n }\n if (elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n }\n return elems;\n }\n}\nexport function parseHtmlFragment(html, documentContext) {\n return supportsTemplateTag ? templateHtmlParse(html, documentContext) : jQueryInstance ? jQueryHtmlParse(html, documentContext) : simpleHtmlParse(html, documentContext);\n}\nexport function parseHtmlForTemplateNodes(html, documentContext) {\n const nodes = parseHtmlFragment(html, documentContext);\n return nodes.length && nodes[0].parentElement || moveCleanedNodesToContainerElement(nodes);\n}\nexport function setHtml(node, html) {\n emptyDomNode(node);\n if (typeof html === \"function\") {\n html = html();\n }\n if (html !== null && html !== void 0) {\n if (typeof html !== \"string\") {\n html = html.toString();\n }\n if (jQueryInstance && !supportsTemplateTag) {\n jQueryInstance(node).html(html);\n } else {\n var parsedNodes = parseHtmlFragment(html, node.ownerDocument);\n if (node.nodeType === 8) {\n if (html === null) {\n virtualElements.emptyNode(node);\n } else {\n virtualElements.setDomNodeChildren(node, parsedNodes);\n }\n } else {\n for (var i = 0; i < parsedNodes.length; i++) {\n node.appendChild(parsedNodes[i]);\n }\n }\n }\n }\n}\nexport function setTextContent(element, textContent) {\n var value = typeof textContent === \"function\" ? textContent() : textContent;\n if (value === null || value === void 0) {\n value = \"\";\n }\n var innerTextNode = virtualElements.firstChild(element);\n if (!innerTextNode || innerTextNode.nodeType != 3 || virtualElements.nextSibling(innerTextNode)) {\n virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);\n } else {\n innerTextNode.data = value;\n }\n forceRefresh(element);\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nvar hasDomDataExpandoProperty = Symbol(\"Knockout selectExtensions hasDomDataProperty\");\nexport var selectExtensions = {\n optionValueDomDataKey: domData.nextKey(),\n readValue: function(element) {\n switch (tagNameLower(element)) {\n case \"option\":\n if (element[hasDomDataExpandoProperty] === true) {\n return domData.get(element, selectExtensions.optionValueDomDataKey);\n }\n return element.value;\n case \"select\":\n return element.selectedIndex >= 0 ? selectExtensions.readValue(element.options[element.selectedIndex]) : void 0;\n default:\n return element.value;\n }\n },\n writeValue: function(element, value, allowUnset) {\n switch (tagNameLower(element)) {\n case \"option\":\n if (typeof value === \"string\") {\n domData.set(element, selectExtensions.optionValueDomDataKey, void 0);\n if (hasDomDataExpandoProperty in element) {\n delete element[hasDomDataExpandoProperty];\n }\n element.value = value;\n } else {\n domData.set(element, selectExtensions.optionValueDomDataKey, value);\n element[hasDomDataExpandoProperty] = true;\n element.value = typeof value === \"number\" ? value : \"\";\n }\n break;\n case \"select\":\n if (value === \"\" || value === null) {\n value = void 0;\n }\n var selection = -1;\n for (let i = 0, n = element.options.length, optionValue; i < n; ++i) {\n optionValue = selectExtensions.readValue(element.options[i]);\n const strictEqual = optionValue === value;\n const blankEqual = optionValue === \"\" && value === void 0;\n const numericEqual = typeof value === \"number\" && Number(optionValue) === value;\n if (strictEqual || blankEqual || numericEqual) {\n selection = i;\n break;\n }\n }\n if (allowUnset || selection >= 0 || value === void 0 && element.size > 1) {\n element.selectedIndex = selection;\n }\n break;\n default:\n if (value === null || value === void 0) {\n value = \"\";\n }\n element.value = value;\n break;\n }\n }\n};\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport options from \"./options\";\nimport { deferError } from \"./error\";\nvar taskQueue = [], taskQueueLength = 0, nextHandle = 1, nextIndexToProcess = 0, w = options.global;\nif (w && w.MutationObserver && !(w.navigator && w.navigator.standalone)) {\n options.taskScheduler = function(callback) {\n var div = w.document.createElement(\"div\");\n new w.MutationObserver(callback).observe(div, { attributes: true });\n return function() {\n div.classList.toggle(\"foo\");\n };\n }(scheduledProcess);\n} else if (w && w.document && \"onreadystatechange\" in w.document.createElement(\"script\")) {\n options.taskScheduler = function(callback) {\n var script = document.createElement(\"script\");\n script.onreadystatechange = function() {\n script.onreadystatechange = null;\n document.documentElement.removeChild(script);\n script = null;\n callback();\n };\n document.documentElement.appendChild(script);\n };\n} else {\n options.taskScheduler = function(callback) {\n setTimeout(callback, 0);\n };\n}\nfunction processTasks() {\n if (taskQueueLength) {\n var mark = taskQueueLength, countMarks = 0;\n for (var task; nextIndexToProcess < taskQueueLength; ) {\n if (task = taskQueue[nextIndexToProcess++]) {\n if (nextIndexToProcess > mark) {\n if (++countMarks >= 5e3) {\n nextIndexToProcess = taskQueueLength;\n deferError(Error(\"'Too much recursion' after processing \" + countMarks + \" task groups.\"));\n break;\n }\n mark = taskQueueLength;\n }\n try {\n task();\n } catch (ex) {\n deferError(ex);\n }\n }\n }\n }\n}\nfunction scheduledProcess() {\n processTasks();\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n}\nfunction scheduleTaskProcessing() {\n options.taskScheduler(scheduledProcess);\n}\nexport function schedule(func) {\n if (!taskQueueLength) {\n scheduleTaskProcessing();\n }\n taskQueue[taskQueueLength++] = func;\n return nextHandle++;\n}\nexport function cancel(handle) {\n var index = handle - (nextHandle - taskQueueLength);\n if (index >= nextIndexToProcess && index < taskQueueLength) {\n taskQueue[index] = null;\n }\n}\nexport function resetForTesting() {\n var length = taskQueueLength - nextIndexToProcess;\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n return length;\n}\nexport { processTasks as runEarly };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { isSubscribable } from \"./subscribableSymbol\";\nconst outerFrames = [];\nlet currentFrame;\nlet lastId = 0;\nfunction getId() {\n return ++lastId;\n}\nexport function begin(options) {\n outerFrames.push(currentFrame);\n currentFrame = options;\n}\nexport function end() {\n currentFrame = outerFrames.pop();\n}\nexport function registerDependency(subscribable) {\n if (currentFrame) {\n if (!isSubscribable(subscribable)) {\n throw new Error(\"Only subscribable things can act as dependencies\");\n }\n currentFrame.callback.call(currentFrame.callbackTarget, subscribable, subscribable._id || (subscribable._id = getId()));\n }\n}\nexport function ignore(callback, callbackTarget, callbackArgs) {\n try {\n begin();\n return callback.apply(callbackTarget, callbackArgs || []);\n } finally {\n end();\n }\n}\nexport function getDependenciesCount() {\n if (currentFrame) {\n return currentFrame.computed.getDependenciesCount();\n }\n}\nexport function getDependencies() {\n if (currentFrame) {\n return currentFrame.computed.getDependencies();\n }\n}\nexport function isInitial() {\n if (currentFrame) {\n return currentFrame.isInitial;\n }\n}\nexport { ignore as ignoreDependencies };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nexport const SUBSCRIBABLE_SYM = Symbol(\"Knockout Subscribable\");\nexport function isSubscribable(instance) {\n return instance && instance[SUBSCRIBABLE_SYM] || false;\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport { tasks } from \"@tko/utils\";\nexport function deferUpdates(target) {\n if (target._deferUpdates) {\n return;\n }\n target._deferUpdates = true;\n target.limit(function(callback) {\n let handle;\n let ignoreUpdates = false;\n return function() {\n if (!ignoreUpdates) {\n tasks.cancel(handle);\n handle = tasks.schedule(callback);\n try {\n ignoreUpdates = true;\n target.notifySubscribers(void 0, \"dirty\");\n } finally {\n ignoreUpdates = false;\n }\n }\n };\n });\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport {\n removeDisposeCallback,\n addDisposeCallback\n} from \"@tko/utils\";\nexport default class Subscription {\n constructor(target, observer, disposeCallback) {\n this._target = target;\n this._callback = observer.next;\n this._disposeCallback = disposeCallback;\n this._isDisposed = false;\n this._domNodeDisposalCallback = null;\n }\n dispose() {\n if (this._domNodeDisposalCallback) {\n removeDisposeCallback(this._node, this._domNodeDisposalCallback);\n }\n this._isDisposed = true;\n this._disposeCallback();\n }\n disposeWhenNodeIsRemoved(node) {\n this._node = node;\n addDisposeCallback(node, this._domNodeDisposalCallback = this.dispose.bind(this));\n }\n unsubscribe() {\n this.dispose();\n }\n get closed() {\n return this._isDisposed;\n }\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport {\n options,\n objectForEach,\n throttle as throttleFn,\n debounce as debounceFn\n} from \"@tko/utils\";\nimport { deferUpdates } from \"./defer\";\nvar primitiveTypes = {\n \"undefined\": 1,\n \"boolean\": 1,\n \"number\": 1,\n \"string\": 1\n};\nexport function valuesArePrimitiveAndEqual(a, b) {\n var oldValueIsPrimitive = a === null || typeof a in primitiveTypes;\n return oldValueIsPrimitive ? a === b : false;\n}\nexport function applyExtenders(requestedExtenders) {\n var target = this;\n if (requestedExtenders) {\n objectForEach(requestedExtenders, function(key, value) {\n var extenderHandler = extenders[key];\n if (typeof extenderHandler === \"function\") {\n target = extenderHandler(target, value) || target;\n } else {\n options.onError(new Error(\"Extender not found: \" + key));\n }\n });\n }\n return target;\n}\nexport function notify(target, notifyWhen) {\n target.equalityComparer = notifyWhen == \"always\" ? null : valuesArePrimitiveAndEqual;\n}\nexport function deferred(target, option) {\n if (option !== true) {\n throw new Error(\"The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.\");\n }\n deferUpdates(target);\n}\nexport function rateLimit(target, options2) {\n var timeout, method, limitFunction;\n if (typeof options2 === \"number\") {\n timeout = options2;\n } else {\n timeout = options2.timeout;\n method = options2.method;\n }\n target._deferUpdates = false;\n limitFunction = method === \"notifyWhenChangesStop\" ? debounceFn : throttleFn;\n target.limit(function(callback) {\n return limitFunction(callback, timeout);\n });\n}\nexport var extenders = {\n notify,\n deferred,\n rateLimit\n};\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport {\n arrayRemoveItem,\n objectForEach,\n options\n} from \"@tko/utils\";\nimport Subscription from \"./Subscription\";\nimport { SUBSCRIBABLE_SYM } from \"./subscribableSymbol\";\nimport { applyExtenders } from \"./extenders\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nexport { isSubscribable } from \"./subscribableSymbol\";\nexport const LATEST_VALUE = Symbol(\"Knockout latest value\");\nif (!Symbol.observable) {\n Symbol.observable = Symbol.for(\"@tko/Symbol.observable\");\n}\nexport function subscribable() {\n Object.setPrototypeOf(this, ko_subscribable_fn);\n ko_subscribable_fn.init(this);\n}\nexport var defaultEvent = \"change\";\nvar ko_subscribable_fn = {\n [SUBSCRIBABLE_SYM]: true,\n [Symbol.observable]() {\n return this;\n },\n init(instance) {\n instance._subscriptions = { change: [] };\n instance._versionNumber = 1;\n },\n subscribe(callback, callbackTarget, event) {\n const isTC39Callback = typeof callback === \"object\" && callback.next;\n event = event || defaultEvent;\n const observer = isTC39Callback ? callback : {\n next: callbackTarget ? callback.bind(callbackTarget) : callback\n };\n const subscriptionInstance = new Subscription(this, observer, () => {\n arrayRemoveItem(this._subscriptions[event], subscriptionInstance);\n if (this.afterSubscriptionRemove) {\n this.afterSubscriptionRemove(event);\n }\n });\n if (this.beforeSubscriptionAdd) {\n this.beforeSubscriptionAdd(event);\n }\n if (!this._subscriptions[event]) {\n this._subscriptions[event] = [];\n }\n this._subscriptions[event].push(subscriptionInstance);\n if (isTC39Callback && LATEST_VALUE in this) {\n observer.next(this[LATEST_VALUE]);\n }\n return subscriptionInstance;\n },\n notifySubscribers(valueToNotify, event) {\n event = event || defaultEvent;\n if (event === defaultEvent) {\n this.updateVersion();\n }\n if (this.hasSubscriptionsForEvent(event)) {\n const subs = event === defaultEvent && this._changeSubscriptions || [...this._subscriptions[event]];\n try {\n dependencyDetection.begin();\n for (let i = 0, subscriptionInstance; subscriptionInstance = subs[i]; ++i) {\n if (!subscriptionInstance._isDisposed) {\n subscriptionInstance._callback(valueToNotify);\n }\n }\n } finally {\n dependencyDetection.end();\n }\n }\n },\n getVersion() {\n return this._versionNumber;\n },\n hasChanged(versionToCheck) {\n return this.getVersion() !== versionToCheck;\n },\n updateVersion() {\n ++this._versionNumber;\n },\n hasSubscriptionsForEvent(event) {\n return this._subscriptions[event] && this._subscriptions[event].length;\n },\n getSubscriptionsCount(event) {\n if (event) {\n return this._subscriptions[event] && this._subscriptions[event].length || 0;\n } else {\n var total = 0;\n objectForEach(this._subscriptions, function(eventName, subscriptions) {\n if (eventName !== \"dirty\") {\n total += subscriptions.length;\n }\n });\n return total;\n }\n },\n isDifferent(oldValue, newValue) {\n return !this.equalityComparer || !this.equalityComparer(oldValue, newValue);\n },\n once(cb) {\n const subs = this.subscribe((nv) => {\n subs.dispose();\n cb(nv);\n });\n },\n when(test, returnValue) {\n const current = this.peek();\n const givenRv = arguments.length > 1;\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n if (testFn(current)) {\n return options.Promise.resolve(givenRv ? returnValue : current);\n }\n return new options.Promise((resolve, reject) => {\n const subs = this.subscribe((newValue) => {\n if (testFn(newValue)) {\n subs.dispose();\n resolve(givenRv ? returnValue : newValue);\n }\n });\n });\n },\n yet(test, ...args) {\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n const negated = (v) => !testFn(v);\n return this.when(negated, ...args);\n },\n next() {\n return new Promise((resolve) => this.once(resolve));\n },\n toString() {\n return \"[object Object]\";\n },\n extend: applyExtenders\n};\nObject.setPrototypeOf(ko_subscribable_fn, Function.prototype);\nsubscribable.fn = ko_subscribable_fn;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport {\n options,\n overwriteLengthPropertyIfSupported\n} from \"@tko/utils\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nimport { deferUpdates } from \"./defer\";\nimport { subscribable, defaultEvent, LATEST_VALUE } from \"./subscribable\";\nimport { valuesArePrimitiveAndEqual } from \"./extenders\";\nexport function observable(initialValue) {\n function Observable() {\n if (arguments.length > 0) {\n if (Observable.isDifferent(Observable[LATEST_VALUE], arguments[0])) {\n Observable.valueWillMutate();\n Observable[LATEST_VALUE] = arguments[0];\n Observable.valueHasMutated();\n }\n return this;\n } else {\n dependencyDetection.registerDependency(Observable);\n return Observable[LATEST_VALUE];\n }\n }\n overwriteLengthPropertyIfSupported(Observable, { value: void 0 });\n Observable[LATEST_VALUE] = initialValue;\n subscribable.fn.init(Observable);\n Object.setPrototypeOf(Observable, observable.fn);\n if (options.deferUpdates) {\n deferUpdates(Observable);\n }\n return Observable;\n}\nobservable.fn = {\n equalityComparer: valuesArePrimitiveAndEqual,\n peek() {\n return this[LATEST_VALUE];\n },\n valueHasMutated() {\n this.notifySubscribers(this[LATEST_VALUE], \"spectate\");\n this.notifySubscribers(this[LATEST_VALUE]);\n },\n valueWillMutate() {\n this.notifySubscribers(this[LATEST_VALUE], \"beforeChange\");\n },\n modify(fn, peek2 = true) {\n return this(fn(peek2 ? this.peek() : this()));\n },\n isWriteable: true\n};\nfunction limitNotifySubscribers(value, event) {\n if (!event || event === defaultEvent) {\n this._limitChange(value);\n } else if (event === \"beforeChange\") {\n this._limitBeforeChange(value);\n } else {\n this._origNotifySubscribers(value, event);\n }\n}\nsubscribable.fn.limit = function limit(limitFunction) {\n var self = this;\n var selfIsObservable = isObservable(self);\n var beforeChange = \"beforeChange\";\n var ignoreBeforeChange, notifyNextChange, previousValue, pendingValue, didUpdate;\n if (!self._origNotifySubscribers) {\n self._origNotifySubscribers = self.notifySubscribers;\n self.notifySubscribers = limitNotifySubscribers;\n }\n var finish = limitFunction(function() {\n self._notificationIsPending = false;\n if (selfIsObservable && pendingValue === self) {\n pendingValue = self._evalIfChanged ? self._evalIfChanged() : self();\n }\n const shouldNotify = notifyNextChange || didUpdate && self.isDifferent(previousValue, pendingValue);\n self._notifyNextChange = didUpdate = ignoreBeforeChange = false;\n if (shouldNotify) {\n self._origNotifySubscribers(previousValue = pendingValue);\n }\n });\n Object.assign(self, {\n _limitChange(value, isDirty) {\n if (!isDirty || !self._notificationIsPending) {\n didUpdate = !isDirty;\n }\n self._changeSubscriptions = [...self._subscriptions[defaultEvent]];\n self._notificationIsPending = ignoreBeforeChange = true;\n pendingValue = value;\n finish();\n },\n _limitBeforeChange(value) {\n if (!ignoreBeforeChange) {\n previousValue = value;\n self._origNotifySubscribers(value, beforeChange);\n }\n },\n _notifyNextChangeIfValueIsDifferent() {\n if (self.isDifferent(previousValue, self.peek(true))) {\n notifyNextChange = true;\n }\n },\n _recordUpdate() {\n didUpdate = true;\n }\n });\n};\nObject.setPrototypeOf(observable.fn, subscribable.fn);\nvar protoProperty = observable.protoProperty = options.protoProperty;\nobservable.fn[protoProperty] = observable;\nobservable.observablePrototypes = /* @__PURE__ */ new Set([observable]);\nexport function isObservable(instance) {\n const proto = typeof instance === \"function\" && instance[protoProperty];\n if (proto && !observable.observablePrototypes.has(proto)) {\n throw Error(\"Invalid object that looks like an observable; possibly from another Knockout instance\");\n }\n return !!proto;\n}\nexport function unwrap(value) {\n return isObservable(value) ? value() : value;\n}\nexport function peek(value) {\n return isObservable(value) ? value.peek() : value;\n}\nexport function isWriteableObservable(instance) {\n return isObservable(instance) && instance.isWriteable;\n}\nexport { isWriteableObservable as isWritableObservable };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport {\n extend,\n compareArrays,\n findMovesInArrayComparison\n} from \"@tko/utils\";\nimport { defaultEvent } from \"./subscribable\";\nimport { extenders } from \"./extenders\";\nexport var arrayChangeEventName = \"arrayChange\";\nexport function trackArrayChanges(target, options) {\n target.compareArrayOptions = {};\n if (options && typeof options === \"object\") {\n extend(target.compareArrayOptions, options);\n }\n target.compareArrayOptions.sparse = true;\n if (target.cacheDiffForKnownOperation) {\n return;\n }\n let trackingChanges = false;\n let cachedDiff = null;\n let arrayChangeSubscription;\n let pendingNotifications = 0;\n let underlyingNotifySubscribersFunction;\n let underlyingBeforeSubscriptionAddFunction = target.beforeSubscriptionAdd;\n let underlyingAfterSubscriptionRemoveFunction = target.afterSubscriptionRemove;\n target.beforeSubscriptionAdd = function(event) {\n if (underlyingBeforeSubscriptionAddFunction) {\n underlyingBeforeSubscriptionAddFunction.call(target, event);\n }\n if (event === arrayChangeEventName) {\n trackChanges();\n }\n };\n target.afterSubscriptionRemove = function(event) {\n if (underlyingAfterSubscriptionRemoveFunction) {\n underlyingAfterSubscriptionRemoveFunction.call(target, event);\n }\n if (event === arrayChangeEventName && !target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n if (underlyingNotifySubscribersFunction) {\n target.notifySubscribers = underlyingNotifySubscribersFunction;\n underlyingNotifySubscribersFunction = void 0;\n }\n if (arrayChangeSubscription) {\n arrayChangeSubscription.dispose();\n }\n arrayChangeSubscription = null;\n trackingChanges = false;\n }\n };\n function trackChanges() {\n if (trackingChanges) {\n return;\n }\n trackingChanges = true;\n underlyingNotifySubscribersFunction = target[\"notifySubscribers\"];\n target.notifySubscribers = function(valueToNotify, event) {\n if (!event || event === defaultEvent) {\n ++pendingNotifications;\n }\n return underlyingNotifySubscribersFunction.apply(this, arguments);\n };\n var previousContents = [].concat(target.peek() === void 0 ? [] : target.peek());\n cachedDiff = null;\n arrayChangeSubscription = target.subscribe(function(currentContents) {\n let changes;\n currentContents = [].concat(currentContents || []);\n if (target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n changes = getChanges(previousContents, currentContents);\n }\n previousContents = currentContents;\n cachedDiff = null;\n pendingNotifications = 0;\n if (changes && changes.length) {\n target.notifySubscribers(changes, arrayChangeEventName);\n }\n });\n }\n function getChanges(previousContents, currentContents) {\n if (!cachedDiff || pendingNotifications > 1) {\n cachedDiff = trackArrayChanges.compareArrays(previousContents, currentContents, target.compareArrayOptions);\n }\n return cachedDiff;\n }\n target.cacheDiffForKnownOperation = function(rawArray, operationName, args) {\n if (!trackingChanges || pendingNotifications) {\n return;\n }\n var diff = [], arrayLength = rawArray.length, argsLength = args.length, offset = 0;\n function pushDiff(status, value, index) {\n return diff[diff.length] = { \"status\": status, \"value\": value, \"index\": index };\n }\n switch (operationName) {\n case \"push\":\n offset = arrayLength;\n case \"unshift\":\n for (let index = 0; index < argsLength; index++) {\n pushDiff(\"added\", args[index], offset + index);\n }\n break;\n case \"pop\":\n offset = arrayLength - 1;\n case \"shift\":\n if (arrayLength) {\n pushDiff(\"deleted\", rawArray[offset], offset);\n }\n break;\n case \"splice\":\n var startIndex = Math.min(Math.max(0, args[0] < 0 ? arrayLength + args[0] : args[0]), arrayLength), endDeleteIndex = argsLength === 1 ? arrayLength : Math.min(startIndex + (args[1] || 0), arrayLength), endAddIndex = startIndex + argsLength - 2, endIndex = Math.max(endDeleteIndex, endAddIndex), additions = [], deletions = [];\n for (let index = startIndex, argsIndex = 2; index < endIndex; ++index, ++argsIndex) {\n if (index < endDeleteIndex) {\n deletions.push(pushDiff(\"deleted\", rawArray[index], index));\n }\n if (index < endAddIndex) {\n additions.push(pushDiff(\"added\", args[argsIndex], index));\n }\n }\n findMovesInArrayComparison(deletions, additions);\n break;\n default:\n return;\n }\n cachedDiff = diff;\n };\n}\ntrackArrayChanges.compareArrays = compareArrays;\nextenders.trackArrayChanges = trackArrayChanges;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\nimport {\n arrayIndexOf,\n arrayForEach,\n overwriteLengthPropertyIfSupported\n} from \"@tko/utils\";\nimport { observable, isObservable } from \"./observable\";\nimport { trackArrayChanges } from \"./observableArray.changeTracking\";\nexport function observableArray(initialValues) {\n initialValues = initialValues || [];\n if (typeof initialValues !== \"object\" || !(\"length\" in initialValues)) {\n throw new Error(\"The argument passed when initializing an observable array must be an array, or null, or undefined.\");\n }\n var result = observable(initialValues);\n Object.setPrototypeOf(result, observableArray.fn);\n trackArrayChanges(result);\n overwriteLengthPropertyIfSupported(result, { get: () => result().length });\n return result;\n}\nexport function isObservableArray(instance) {\n return isObservable(instance) && typeof instance.remove === \"function\" && typeof instance.push === \"function\";\n}\nobservableArray.fn = {\n remove(valueOrPredicate) {\n var underlyingArray = this.peek();\n var removedValues = [];\n var predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value2) {\n return value2 === valueOrPredicate;\n };\n for (var i = 0; i < underlyingArray.length; i++) {\n var value = underlyingArray[i];\n if (predicate(value)) {\n if (removedValues.length === 0) {\n this.valueWillMutate();\n }\n if (underlyingArray[i] !== value) {\n throw Error(\"Array modified during remove; cannot remove item\");\n }\n removedValues.push(value);\n underlyingArray.splice(i, 1);\n i--;\n }\n }\n if (removedValues.length) {\n this.valueHasMutated();\n }\n return removedValues;\n },\n removeAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n var underlyingArray = this.peek();\n var allValues = underlyingArray.slice(0);\n this.valueWillMutate();\n underlyingArray.splice(0, underlyingArray.length);\n this.valueHasMutated();\n return allValues;\n }\n if (!arrayOfValues) {\n return [];\n }\n return this[\"remove\"](function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n destroy(valueOrPredicate) {\n var underlyingArray = this.peek();\n var predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value2) {\n return value2 === valueOrPredicate;\n };\n this.valueWillMutate();\n for (var i = underlyingArray.length - 1; i >= 0; i--) {\n var value = underlyingArray[i];\n if (predicate(value)) {\n value[\"_destroy\"] = true;\n }\n }\n this.valueHasMutated();\n },\n destroyAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n return this.destroy(function() {\n return true;\n });\n }\n if (!arrayOfValues) {\n return [];\n }\n return this.destroy(function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n indexOf(item) {\n return arrayIndexOf(this(), item);\n },\n replace(oldItem, newItem) {\n var index = this.indexOf(oldItem);\n if (index >= 0) {\n this.valueWillMutate();\n this.peek()[index] = newItem;\n this.valueHasMutated();\n }\n },\n sorted(compareFn) {\n return [...this()].sort(compareFn);\n },\n reversed() {\n return [...this()].reverse();\n },\n [Symbol.iterator]: function* () {\n yield* this();\n }\n};\nObject.setPrototypeOf(observableArray.fn, observable.fn);\narrayForEach([\"pop\", \"push\", \"reverse\", \"shift\", \"sort\", \"splice\", \"unshift\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n var underlyingArray = this.peek();\n this.valueWillMutate();\n this.cacheDiffForKnownOperation(underlyingArray, methodName, arguments);\n var methodCallResult = underlyingArray[methodName].apply(underlyingArray, arguments);\n this.valueHasMutated();\n return methodCallResult === underlyingArray ? this : methodCallResult;\n };\n});\narrayForEach([\"slice\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n var underlyingArray = this();\n return underlyingArray[methodName].apply(underlyingArray, arguments);\n };\n});\nobservableArray.trackArrayChanges = trackArrayChanges;\n", "//\n// Computed Observable Values\n//\n// (before tko, `computed` was also known as `dependentObservable`)\n//\nimport {\n addDisposeCallback,\n arrayForEach,\n createSymbolOrString,\n domNodeIsAttachedToDocument,\n extend,\n options,\n hasOwnProperty,\n objectForEach,\n options as koOptions,\n removeDisposeCallback,\n safeSetTimeout,\n} from '@tko/utils'\n\nimport {\n dependencyDetection,\n extenders,\n valuesArePrimitiveAndEqual,\n observable,\n subscribable,\n LATEST_VALUE\n} from '@tko/observable'\n\nconst computedState = createSymbolOrString('_state')\nconst DISPOSED_STATE = {\n dependencyTracking: null,\n dependenciesCount: 0,\n isDisposed: true,\n isStale: false,\n isDirty: false,\n isSleeping: false,\n disposeWhenNodeIsRemoved: null,\n readFunction: null,\n _options: null\n}\n\nexport function computed (evaluatorFunctionOrOptions, evaluatorFunctionTarget, options) {\n if (typeof evaluatorFunctionOrOptions === 'object') {\n // Single-parameter syntax - everything is on this \"options\" param\n options = evaluatorFunctionOrOptions\n } else {\n // Multi-parameter syntax - construct the options according to the params passed\n options = options || {}\n if (evaluatorFunctionOrOptions) {\n options.read = evaluatorFunctionOrOptions\n }\n }\n if (typeof options.read !== 'function') {\n throw Error('Pass a function that returns the value of the computed')\n }\n\n var writeFunction = options.write\n var state = {\n latestValue: undefined,\n isStale: true,\n isDirty: true,\n isBeingEvaluated: false,\n suppressDisposalUntilDisposeWhenReturnsFalse: false,\n isDisposed: false,\n pure: false,\n isSleeping: false,\n readFunction: options.read,\n evaluatorFunctionTarget: evaluatorFunctionTarget || options.owner,\n disposeWhenNodeIsRemoved: options.disposeWhenNodeIsRemoved || options.disposeWhenNodeIsRemoved || null,\n disposeWhen: options.disposeWhen || options.disposeWhen,\n domNodeDisposalCallback: null,\n dependencyTracking: {},\n dependenciesCount: 0,\n evaluationTimeoutInstance: null\n }\n\n function computedObservable () {\n if (arguments.length > 0) {\n if (typeof writeFunction === 'function') {\n // Writing a value\n writeFunction.apply(state.evaluatorFunctionTarget, arguments)\n } else {\n throw new Error(\"Cannot write a value to a computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.\")\n }\n return this // Permits chained assignments\n } else {\n // Reading the value\n if (!state.isDisposed) {\n dependencyDetection.registerDependency(computedObservable)\n }\n if (state.isDirty || (state.isSleeping && computedObservable.haveDependenciesChanged())) {\n computedObservable.evaluateImmediate()\n }\n return state.latestValue\n }\n }\n\n computedObservable[computedState] = state\n computedObservable.isWriteable = typeof writeFunction === 'function'\n\n subscribable.fn.init(computedObservable)\n\n // Inherit from 'computed'\n Object.setPrototypeOf(computedObservable, computed.fn)\n\n if (options.pure) {\n state.pure = true\n state.isSleeping = true // Starts off sleeping; will awake on the first subscription\n extend(computedObservable, pureComputedOverrides)\n } else if (options.deferEvaluation) {\n extend(computedObservable, deferEvaluationOverrides)\n }\n\n if (koOptions.deferUpdates) {\n extenders.deferred(computedObservable, true)\n }\n\n if (koOptions.debug) {\n // #1731 - Aid debugging by exposing the computed's options\n computedObservable._options = options\n }\n\n if (state.disposeWhenNodeIsRemoved) {\n // Since this computed is associated with a DOM node, and we don't want to dispose the computed\n // until the DOM node is *removed* from the document (as opposed to never having been in the document),\n // we'll prevent disposal until \"disposeWhen\" first returns false.\n state.suppressDisposalUntilDisposeWhenReturnsFalse = true\n\n // disposeWhenNodeIsRemoved: true can be used to opt into the \"only dispose after first false result\"\n // behavior even if there's no specific node to watch. In that case, clear the option so we don't try\n // to watch for a non-node's disposal. This technique is intended for KO's internal use only and shouldn't\n // be documented or used by application code, as it's likely to change in a future version of KO.\n if (!state.disposeWhenNodeIsRemoved.nodeType) {\n state.disposeWhenNodeIsRemoved = null\n }\n }\n\n // Evaluate, unless sleeping or deferEvaluation is true\n if (!state.isSleeping && !options.deferEvaluation) {\n computedObservable.evaluateImmediate()\n }\n\n // Attach a DOM node disposal callback so that the computed will be proactively disposed as soon as the node is\n // removed using ko.removeNode. But skip if isActive is false (there will never be any dependencies to dispose).\n if (state.disposeWhenNodeIsRemoved && computedObservable.isActive()) {\n addDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback = function () {\n computedObservable.dispose()\n })\n }\n\n return computedObservable\n}\n\n// Utility function that disposes a given dependencyTracking entry\nfunction computedDisposeDependencyCallback (id, entryToDispose) {\n if (entryToDispose !== null && entryToDispose.dispose) {\n entryToDispose.dispose()\n }\n}\n\n// This function gets called each time a dependency is detected while evaluating a computed.\n// It's factored out as a shared function to avoid creating unnecessary function instances during evaluation.\nfunction computedBeginDependencyDetectionCallback (subscribable, id) {\n var computedObservable = this.computedObservable,\n state = computedObservable[computedState]\n if (!state.isDisposed) {\n if (this.disposalCount && this.disposalCandidates[id]) {\n // Don't want to dispose this subscription, as it's still being used\n computedObservable.addDependencyTracking(id, subscribable, this.disposalCandidates[id])\n this.disposalCandidates[id] = null // No need to actually delete the property - disposalCandidates is a transient object anyway\n --this.disposalCount\n } else if (!state.dependencyTracking[id]) {\n // Brand new subscription - add it\n computedObservable.addDependencyTracking(id, subscribable, state.isSleeping ? { _target: subscribable } : computedObservable.subscribeToDependency(subscribable))\n }\n // If the observable we've accessed has a pending notification, ensure\n // we get notified of the actual final value (bypass equality checks)\n if (subscribable._notificationIsPending) {\n subscribable._notifyNextChangeIfValueIsDifferent()\n }\n }\n}\n\ncomputed.fn = {\n equalityComparer: valuesArePrimitiveAndEqual,\n getDependenciesCount () {\n return this[computedState].dependenciesCount\n },\n\n getDependencies () {\n const dependencyTracking = this[computedState].dependencyTracking\n const dependentObservables = []\n\n objectForEach(dependencyTracking, function (id, dependency) {\n dependentObservables[dependency._order] = dependency._target\n })\n\n return dependentObservables\n },\n\n addDependencyTracking (id, target, trackingObj) {\n if (this[computedState].pure && target === this) {\n throw Error(\"A 'pure' computed must not be called recursively\")\n }\n\n this[computedState].dependencyTracking[id] = trackingObj\n trackingObj._order = this[computedState].dependenciesCount++\n trackingObj._version = target.getVersion()\n },\n haveDependenciesChanged () {\n var id, dependency, dependencyTracking = this[computedState].dependencyTracking\n for (id in dependencyTracking) {\n if (hasOwnProperty(dependencyTracking, id)) {\n dependency = dependencyTracking[id]\n if ((this._evalDelayed && dependency._target._notificationIsPending) || dependency._target.hasChanged(dependency._version)) {\n return true\n }\n }\n }\n },\n markDirty () {\n // Process \"dirty\" events if we can handle delayed notifications\n if (this._evalDelayed && !this[computedState].isBeingEvaluated) {\n this._evalDelayed(false /* notifyChange */)\n }\n },\n isActive () {\n const state = this[computedState]\n return state.isDirty || state.dependenciesCount > 0\n },\n respondToChange () {\n // Ignore \"change\" events if we've already scheduled a delayed notification\n if (!this._notificationIsPending) {\n this.evaluatePossiblyAsync()\n } else if (this[computedState].isDirty) {\n this[computedState].isStale = true\n }\n },\n subscribeToDependency (target) {\n if (target._deferUpdates) {\n var dirtySub = target.subscribe(this.markDirty, this, 'dirty'),\n changeSub = target.subscribe(this.respondToChange, this)\n return {\n _target: target,\n dispose () {\n dirtySub.dispose()\n changeSub.dispose()\n }\n }\n } else {\n return target.subscribe(this.evaluatePossiblyAsync, this)\n }\n },\n evaluatePossiblyAsync () {\n var computedObservable = this,\n throttleEvaluationTimeout = computedObservable.throttleEvaluation\n if (throttleEvaluationTimeout && throttleEvaluationTimeout >= 0) {\n clearTimeout(this[computedState].evaluationTimeoutInstance)\n this[computedState].evaluationTimeoutInstance = safeSetTimeout(function () {\n computedObservable.evaluateImmediate(true /* notifyChange */)\n }, throttleEvaluationTimeout)\n } else if (computedObservable._evalDelayed) {\n computedObservable._evalDelayed(true /* notifyChange */)\n } else {\n computedObservable.evaluateImmediate(true /* notifyChange */)\n }\n },\n evaluateImmediate (notifyChange) {\n var computedObservable = this,\n state = computedObservable[computedState],\n disposeWhen = state.disposeWhen,\n changed = false\n\n if (state.isBeingEvaluated) {\n // If the evaluation of a ko.computed causes side effects, it's possible that it will trigger its own re-evaluation.\n // This is not desirable (it's hard for a developer to realise a chain of dependencies might cause this, and they almost\n // certainly didn't intend infinite re-evaluations). So, for predictability, we simply prevent ko.computeds from causing\n // their own re-evaluation. Further discussion at https://github.com/SteveSanderson/knockout/pull/387\n return\n }\n\n // Do not evaluate (and possibly capture new dependencies) if disposed\n if (state.isDisposed) {\n return\n }\n\n if (state.disposeWhenNodeIsRemoved && !domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved) || disposeWhen && disposeWhen()) {\n // See comment above about suppressDisposalUntilDisposeWhenReturnsFalse\n if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {\n computedObservable.dispose()\n return\n }\n } else {\n // It just did return false, so we can stop suppressing now\n state.suppressDisposalUntilDisposeWhenReturnsFalse = false\n }\n\n state.isBeingEvaluated = true\n try {\n changed = this.evaluateImmediate_CallReadWithDependencyDetection(notifyChange)\n } finally {\n state.isBeingEvaluated = false\n }\n\n return changed\n },\n evaluateImmediate_CallReadWithDependencyDetection (notifyChange) {\n // This function is really just part of the evaluateImmediate logic. You would never call it from anywhere else.\n // Factoring it out into a separate function means it can be independent of the try/catch block in evaluateImmediate,\n // which contributes to saving about 40% off the CPU overhead of computed evaluation (on V8 at least).\n\n var computedObservable = this,\n state = computedObservable[computedState],\n changed = false\n\n // Initially, we assume that none of the subscriptions are still being used (i.e., all are candidates for disposal).\n // Then, during evaluation, we cross off any that are in fact still being used.\n var isInitial = state.pure ? undefined : !state.dependenciesCount, // If we're evaluating when there are no previous dependencies, it must be the first time\n dependencyDetectionContext = {\n computedObservable: computedObservable,\n disposalCandidates: state.dependencyTracking,\n disposalCount: state.dependenciesCount\n }\n\n dependencyDetection.begin({\n callbackTarget: dependencyDetectionContext,\n callback: computedBeginDependencyDetectionCallback,\n computed: computedObservable,\n isInitial: isInitial\n })\n\n state.dependencyTracking = {}\n state.dependenciesCount = 0\n\n var newValue = this.evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext)\n\n if (!state.dependenciesCount) {\n computedObservable.dispose()\n changed = true // When evaluation causes a disposal, make sure all dependent computeds get notified so they'll see the new state\n } else {\n changed = computedObservable.isDifferent(state.latestValue, newValue)\n }\n\n if (changed) {\n if (!state.isSleeping) {\n computedObservable.notifySubscribers(state.latestValue, 'beforeChange')\n } else {\n computedObservable.updateVersion()\n }\n\n state.latestValue = newValue\n if (options.debug) { computedObservable._latestValue = newValue }\n\n computedObservable.notifySubscribers(state.latestValue, 'spectate')\n\n if (!state.isSleeping && notifyChange) {\n computedObservable.notifySubscribers(state.latestValue)\n }\n\n if (computedObservable._recordUpdate) {\n computedObservable._recordUpdate()\n }\n }\n\n if (isInitial) {\n computedObservable.notifySubscribers(state.latestValue, 'awake')\n }\n\n return changed\n },\n evaluateImmediate_CallReadThenEndDependencyDetection (state, dependencyDetectionContext) {\n // This function is really part of the evaluateImmediate_CallReadWithDependencyDetection logic.\n // You'd never call it from anywhere else. Factoring it out means that evaluateImmediate_CallReadWithDependencyDetection\n // can be independent of try/finally blocks, which contributes to saving about 40% off the CPU\n // overhead of computed evaluation (on V8 at least).\n\n try {\n var readFunction = state.readFunction\n return state.evaluatorFunctionTarget ? readFunction.call(state.evaluatorFunctionTarget) : readFunction()\n } finally {\n dependencyDetection.end()\n\n // For each subscription no longer being used, remove it from the active subscriptions list and dispose it\n if (dependencyDetectionContext.disposalCount && !state.isSleeping) {\n objectForEach(dependencyDetectionContext.disposalCandidates, computedDisposeDependencyCallback)\n }\n\n state.isStale = state.isDirty = false\n }\n },\n peek (forceEvaluate) {\n // Peek won't ordinarily re-evaluate, except while the computed is sleeping\n // or to get the initial value when \"deferEvaluation\" is set.\n const state = this[computedState]\n if ((state.isDirty && (forceEvaluate || !state.dependenciesCount)) || (state.isSleeping && this.haveDependenciesChanged())) {\n this.evaluateImmediate()\n }\n return state.latestValue\n },\n\n get [LATEST_VALUE] () {\n return this.peek()\n },\n\n limit (limitFunction) {\n const state = this[computedState]\n // Override the limit function with one that delays evaluation as well\n subscribable.fn.limit.call(this, limitFunction)\n Object.assign(this, {\n _evalIfChanged () {\n if (!this[computedState].isSleeping) {\n if (this[computedState].isStale) {\n this.evaluateImmediate()\n } else {\n this[computedState].isDirty = false\n }\n }\n return state.latestValue\n },\n _evalDelayed (isChange) {\n this._limitBeforeChange(state.latestValue)\n\n // Mark as dirty\n state.isDirty = true\n if (isChange) {\n state.isStale = true\n }\n\n // Pass the observable to the \"limit\" code, which will evaluate it when\n // it's time to do the notification.\n this._limitChange(this, !isChange /* isDirty */)\n }\n })\n },\n dispose () {\n var state = this[computedState]\n if (!state.isSleeping && state.dependencyTracking) {\n objectForEach(state.dependencyTracking, function (id, dependency) {\n if (dependency.dispose) {\n dependency.dispose()\n }\n })\n }\n if (state.disposeWhenNodeIsRemoved && state.domNodeDisposalCallback) {\n removeDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback)\n }\n Object.assign(state, DISPOSED_STATE)\n }\n}\n\nvar pureComputedOverrides = {\n beforeSubscriptionAdd (event) {\n // If asleep, wake up the computed by subscribing to any dependencies.\n var computedObservable = this,\n state = computedObservable[computedState]\n if (!state.isDisposed && state.isSleeping && event === 'change') {\n state.isSleeping = false\n if (state.isStale || computedObservable.haveDependenciesChanged()) {\n state.dependencyTracking = null\n state.dependenciesCount = 0\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion()\n }\n } else {\n // First put the dependencies in order\n var dependenciesOrder = []\n objectForEach(state.dependencyTracking, function (id, dependency) {\n dependenciesOrder[dependency._order] = id\n })\n // Next, subscribe to each one\n arrayForEach(dependenciesOrder, function (id, order) {\n var dependency = state.dependencyTracking[id],\n subscription = computedObservable.subscribeToDependency(dependency._target)\n subscription._order = order\n subscription._version = dependency._version\n state.dependencyTracking[id] = subscription\n })\n\n // Waking dependencies may have triggered effects\n if (computedObservable.haveDependenciesChanged()) {\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion()\n }\n }\n }\n\n if (!state.isDisposed) { // test since evaluating could trigger disposal\n computedObservable.notifySubscribers(state.latestValue, 'awake')\n }\n }\n },\n afterSubscriptionRemove (event) {\n var state = this[computedState]\n if (!state.isDisposed && event === 'change' && !this.hasSubscriptionsForEvent('change')) {\n objectForEach(state.dependencyTracking, function (id, dependency) {\n if (dependency.dispose) {\n state.dependencyTracking[id] = {\n _target: dependency._target,\n _order: dependency._order,\n _version: dependency._version\n }\n dependency.dispose()\n }\n })\n state.isSleeping = true\n this.notifySubscribers(undefined, 'asleep')\n }\n },\n getVersion () {\n // Because a pure computed is not automatically updated while it is sleeping, we can't\n // simply return the version number. Instead, we check if any of the dependencies have\n // changed and conditionally re-evaluate the computed observable.\n var state = this[computedState]\n if (state.isSleeping && (state.isStale || this.haveDependenciesChanged())) {\n this.evaluateImmediate()\n }\n return subscribable.fn.getVersion.call(this)\n }\n}\n\nvar deferEvaluationOverrides = {\n beforeSubscriptionAdd (event) {\n // This will force a computed with deferEvaluation to evaluate when the first subscription is registered.\n if (event === 'change' || event === 'beforeChange') {\n this.peek()\n }\n }\n}\n\nObject.setPrototypeOf(computed.fn, subscribable.fn)\n\n// Set the proto values for ko.computed\nvar protoProp = observable.protoProperty // == \"__ko_proto__\"\ncomputed.fn[protoProp] = computed\n\n/* This is used by ko.isObservable */\nobservable.observablePrototypes.add(computed)\n\nexport function isComputed (instance) {\n return (typeof instance === 'function' && instance[protoProp] === computed)\n}\n\nexport function isPureComputed (instance) {\n return isComputed(instance) && instance[computedState] && instance[computedState].pure\n}\n\nexport function pureComputed (evaluatorFunctionOrOptions, evaluatorFunctionTarget) {\n if (typeof evaluatorFunctionOrOptions === 'function') {\n return computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget, {'pure': true})\n } else {\n evaluatorFunctionOrOptions = extend({}, evaluatorFunctionOrOptions) // make a copy of the parameter object\n evaluatorFunctionOrOptions.pure = true\n return computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget)\n }\n}\n", "import {\n extenders\n} from '@tko/observable'\n\nimport {\n computed\n} from './computed'\n\nexport function throttleExtender (target, timeout) {\n // Throttling means two things:\n\n // (1) For dependent observables, we throttle *evaluations* so that, no matter how fast its dependencies\n // notify updates, the target doesn't re-evaluate (and hence doesn't notify) faster than a certain rate\n target.throttleEvaluation = timeout\n\n // (2) For writable targets (observables, or writable dependent observables), we throttle *writes*\n // so the target cannot change value synchronously or faster than a certain rate\n var writeTimeoutInstance = null\n return computed({\n read: target,\n write: function (value) {\n clearTimeout(writeTimeoutInstance)\n writeTimeoutInstance = setTimeout(function () {\n target(value)\n }, timeout)\n }\n })\n}\n\nextenders.throttle = throttleExtender\n", "/**\n * Create an ES\n */\n\nimport {\n observable, observableArray, unwrap\n} from '@tko/observable'\n\nimport {\n computed\n} from './computed'\n\nconst PROXY_SYM = Symbol('Knockout Proxied Object')\nconst MIRROR_SYM = Symbol('Knockout Proxied Observables')\n\nfunction makeComputed (proxy, fn) {\n return computed({\n owner: proxy,\n read: fn,\n write: fn,\n pure: 'pure' in fn ? fn.pure : true,\n deferEvaluation: 'deferEvaluation' in fn ? fn.deferEvaluation : true\n }).extend({ deferred: true })\n}\n\nfunction setOrCreate (mirror, prop, value, proxy) {\n if (!mirror[prop]) {\n const ctr = Array.isArray(value) ? observableArray\n : typeof value === 'function' ? makeComputed.bind(null, proxy)\n : observable\n mirror[prop] = ctr(value)\n } else {\n mirror[prop](value)\n }\n}\n\nfunction assignOrUpdate(mirror, object, proxy) {\n for (const key of Object.keys(object)) {\n setOrCreate(mirror, key, object[key], proxy)\n }\n return object\n}\n\nexport function proxy (object) {\n const mirror = { [PROXY_SYM]: object }\n mirror[MIRROR_SYM] = mirror\n const proxy = new Proxy(function () {}, {\n has (target, prop) { return prop in mirror },\n get (target, prop) { return unwrap(mirror[prop]) },\n set (target, prop, value, receiver) {\n setOrCreate(mirror, prop, value, proxy)\n object[prop] = value\n return true\n },\n deleteProperty (property) {\n delete mirror[property]\n return delete object[property]\n },\n apply (target, thisArg, [props]) {\n if (props) {\n assignOrUpdate(mirror, props, proxy)\n return Object.assign(object, props)\n }\n return object\n },\n getPrototypeOf () { return Object.getPrototypeOf(object) },\n setPrototypeOf (target, proto) { return Object.setPrototypeOf(object, proto) },\n defineProperty (target, prop, desc) { return Object.defineProperty(object, prop, desc) },\n preventExtensions () { return Object.preventExtensions(object) },\n isExtensible () { return Object.isExtensible(object) },\n ownKeys () {\n return [...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)]\n }\n })\n assignOrUpdate(mirror, object, proxy)\n return proxy\n}\n\nexport function getObservable (proxied, prop) { return proxied[MIRROR_SYM][prop] }\nexport function peek (proxied, prop) { return getObservable(proxied, prop).peek() }\nexport function isProxied (proxied) { return PROXY_SYM in proxied }\n\nObject.assign(proxy, { getObservable, peek, isProxied })\n", "\nimport {\n pureComputed\n} from './computed'\n\nfunction kowhen (predicate, context, resolve) {\n const observable = pureComputed(predicate, context).extend({notify: 'always'});\n const subscription = observable.subscribe(value => {\n if (value) {\n subscription.dispose()\n resolve(value)\n }\n })\n // In case the initial value is true, process it right away\n observable.notifySubscribers(observable.peek())\n return subscription\n}\n\nexport function when (predicate, callback, context) {\n const whenFn = kowhen.bind(null, predicate, context)\n return callback ? whenFn(callback.bind(context)) : new Promise(whenFn)\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAM,EAAE,YAAY;AACb,sBAAsB,OAAO,QAAQ,SAAS;AACnD,MAAI,UAAU,SAAS,GAAG;AACxB,aAAS,OAAO,KAAK,OAAO;AAAA,EAC9B;AACA,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC5C,WAAO,MAAM,IAAI,GAAG,KAAK;AAAA,EAC3B;AACF;AACO,sBAAsB,OAAO,MAAM;AACxC,SAAQ,SAAQ,KAAK,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,QAAQ,IAAI;AAC3D;AAUO,yBAAyB,OAAO,cAAc;AACnD,MAAI,QAAQ,aAAa,OAAO,YAAY;AAC5C,MAAI,QAAQ,GAAG;AACb,UAAM,OAAO,OAAO,CAAC;AAAA,EACvB,WAAW,UAAU,GAAG;AACtB,UAAM,MAAM;AAAA,EACd;AACF;AAgDO,oCAAoC,MAAM,OAAO,qBAAqB;AAC3E,MAAI,KAAK,UAAU,MAAM,QAAQ;AAC/B,QAAI,gBAAgB,GAAG,GAAG,UAAU;AACpC,SAAK,iBAAiB,IAAI,GAAI,EAAC,uBAAuB,iBAAiB,wBAAyB,YAAW,KAAK,KAAK,EAAE,GAAG;AACxH,WAAK,IAAI,GAAG,YAAY,MAAM,IAAI,EAAE,GAAG;AACrC,YAAI,SAAS,UAAU,UAAU,OAAO;AACtC,mBAAS,QAAQ,UAAU;AAC3B,oBAAU,QAAQ,SAAS;AAC3B,gBAAM,OAAO,GAAG,CAAC;AACjB,2BAAiB,IAAI;AACrB;AAAA,QACF;AAAA,MACF;AACA,wBAAkB;AAAA,IACpB;AAAA,EACF;AACF;AACA,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AAChB,uBAAuB,UAAU,UAAU,UAAS;AACzD,aAAU,OAAO,aAAY,YAAY,EAAE,gBAAgB,SAAQ,IAAI,YAAW,CAAC;AACnF,aAAW,YAAY,CAAC;AACxB,aAAW,YAAY,CAAC;AACxB,MAAI,SAAS,SAAS,SAAS,QAAQ;AACrC,WAAO,4BAA4B,UAAU,UAAU,gBAAgB,gBAAgB,QAAO;AAAA,EAChG,OAAO;AACL,WAAO,4BAA4B,UAAU,UAAU,gBAAgB,gBAAgB,QAAO;AAAA,EAChG;AACF;AACA,qCAAqC,UAAU,UAAU,gBAAgB,gBAAgB,UAAS;AAChG,MAAI,QAAQ,KAAK,KAAK,QAAQ,KAAK,KAAK,qBAAqB,CAAC,GAAG,UAAU,cAAc,SAAS,QAAQ,UAAU,cAAc,SAAS,QAAQ,eAAe,cAAc,eAAe,GAAG,cAAc,cAAc,cAAc,GAAG,SAAS,SAAS,mBAAmB;AACpR,OAAK,WAAW,GAAG,YAAY,aAAa,YAAY;AACtD,cAAU;AACV,uBAAmB,KAAK,UAAU,CAAC,CAAC;AACpC,wBAAoB,MAAM,aAAa,WAAW,YAAY;AAC9D,wBAAoB,MAAM,GAAG,WAAW,CAAC;AACzC,SAAK,WAAW,mBAAmB,YAAY,mBAAmB,YAAY;AAC5E,UAAI,CAAC,UAAU;AACb,gBAAQ,YAAY,WAAW;AAAA,MACjC,WAAW,CAAC,UAAU;AACpB,gBAAQ,YAAY,WAAW;AAAA,MACjC,WAAW,SAAS,WAAW,OAAO,SAAS,WAAW,IAAI;AAC5D,gBAAQ,YAAY,QAAQ,WAAW;AAAA,MACzC,OAAO;AACL,YAAI,gBAAgB,QAAQ,aAAa;AACzC,YAAI,eAAe,QAAQ,WAAW,MAAM;AAC5C,gBAAQ,YAAY,MAAM,eAAe,YAAY,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,CAAC,GAAG,YAAY,WAAW,CAAC,GAAG,WAAW,CAAC;AAC5D,OAAK,WAAW,aAAa,WAAW,aAAa,YAAY,YAAY;AAC3E,iBAAa,mBAAmB,UAAU,YAAY;AACtD,QAAI,YAAY,eAAe,mBAAmB,UAAU,WAAW,IAAI;AACzE,eAAS,KAAK,WAAW,WAAW,UAAU;AAAA,QAC5C,UAAU;AAAA,QACV,SAAS,SAAS,EAAE;AAAA,QACpB,SAAS;AAAA,MACX,CAAC;AAAA,IACH,WAAW,YAAY,eAAe,mBAAmB,WAAW,GAAG,WAAW;AAChF,eAAS,KAAK,WAAW,WAAW,UAAU;AAAA,QAC5C,UAAU;AAAA,QACV,SAAS,SAAS,EAAE;AAAA,QACpB,SAAS;AAAA,MACX,CAAC;AAAA,IACH,OAAO;AACL,QAAE;AACF,QAAE;AACF,UAAI,CAAC,SAAQ,QAAQ;AACnB,mBAAW,KAAK;AAAA,UACd,UAAU;AAAA,UACV,SAAS,SAAS;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACA,6BAA2B,UAAU,UAAU,CAAC,SAAQ,kBAAkB,cAAc,EAAE;AAC1F,SAAO,WAAW,QAAQ;AAC5B;;;AC1JA,IAAM,UAAU;AAAA,EACd,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,gBAAgC,uBAAO,OAAO,IAAI;AAAA,EAClD,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,QAAQ,WAAW;AAAA,EACnB,SAAS,WAAW;AAAA,EACpB,eAAe;AAAA,EACf,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU,WAAW;AAAA,EACrB,SAAS,CAAC;AAAA,EACV,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,SAAS,SAAS,GAAG;AACnB,UAAM;AAAA,EACR;AAAA,EACA,KAAK,SAAS,MAAM,OAAO;AACzB,YAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA,oBAAoB;AAAA,EACpB;AACF;AACA,OAAO,eAAe,SAAS,KAAK;AAAA,EAClC,KAAK,WAAW;AACd,WAAO,QAAQ;AAAA,EACjB;AACF,CAAC;AACD,IAAO,kBAAQ;;;ACjCR,6BAA6B,UAAU;AAC5C,MAAI,CAAC,gBAAQ,SAAS;AACpB,WAAO;AAAA,EACT;AACA,SAAO,IAAI,SAAS;AAClB,QAAI;AACF,aAAO,SAAS,GAAG,IAAI;AAAA,IACzB,SAAS,KAAP;AACA,sBAAQ,QAAQ,GAAG;AAAA,IACrB;AAAA,EACF;AACF;AACO,oBAAoB,OAAO;AAChC,iBAAe,WAAW;AACxB,UAAM;AAAA,EACR,GAAG,CAAC;AACN;AACO,wBAAwB,SAAS,SAAS;AAC/C,SAAO,WAAW,oBAAoB,OAAO,GAAG,OAAO;AACzD;;;ACnBO,kBAAkB,UAAU,SAAS;AAC1C,MAAI;AACJ,SAAO,YAAY,MAAM;AACvB,QAAI,CAAC,iBAAiB;AACpB,wBAAkB,eAAe,WAAW;AAC1C,0BAAkB;AAClB,iBAAS,GAAG,IAAI;AAAA,MAClB,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AACF;AACO,kBAAkB,UAAU,SAAS;AAC1C,MAAI;AACJ,SAAO,YAAY,MAAM;AACvB,iBAAa,eAAe;AAC5B,sBAAkB,eAAe,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO;AAAA,EACnE;AACF;;;ACjBA,IAAM,YAAY,gBAAQ,YAAY,WAAW;AAC/C,MAAI,UAAU,GAAG,MAAM,gBAAQ,SAAS,cAAc,KAAK,GAAG,SAAS,IAAI,qBAAqB,GAAG;AACnG,SAAO,IAAI,YAAY,mBAAmB,EAAE,UAAU,yBAAyB,OAAO,IAAI;AAAA,EAC1F;AACA,MAAI,CAAC,SAAS;AACZ,UAAM,YAAY,OAAO,UAAU;AACnC,WAAO,GAAG,MAAM,cAAc,KAAK,GAAG,MAAM,aAAa;AAAA,EAC3D;AACA,SAAO,UAAU,IAAI,UAAU;AACjC,EAAE;;;ACVK,wBAAwB,KAAK,UAAU;AAC5C,SAAO,OAAO,UAAU,eAAe,KAAK,KAAK,QAAQ;AAC3D;AAOO,gBAAgB,QAAQ,QAAQ;AACrC,MAAI,QAAQ;AACV,aAAS,QAAQ,QAAQ;AACvB,UAAI,eAAe,QAAQ,IAAI,GAAG;AAChC,eAAO,QAAQ,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACO,uBAAuB,KAAK,QAAQ;AACzC,WAAS,QAAQ,KAAK;AACpB,QAAI,eAAe,KAAK,IAAI,GAAG;AAC7B,aAAO,MAAM,IAAI,KAAK;AAAA,IACxB;AAAA,EACF;AACF;;;ACzBA,yBAAyB;AACvB,MAAI;AACF,WAAO,eAAe,aAAa;AAAA,IACnC,GAAG,UAAU,CAAC,CAAC;AACf,WAAO;AAAA,EACT,SAAS,GAAP;AACA,WAAO;AAAA,EACT;AACF;AACO,IAAM,kCAAkC,cAAc;AACtD,4CAA4C,IAAI,YAAY;AACjE,MAAI,iCAAiC;AACnC,WAAO,eAAe,IAAI,UAAU,UAAU;AAAA,EAChD;AACF;;;ACdO,IAAI,aAAa,OAAO,WAAW;AACnC,8BAA8B,YAAY;AAC/C,SAAO,aAAa,OAAO,UAAU,IAAI;AAC3C;;;ACFO,IAAI,iBAAiB,gBAAQ,UAAU,gBAAQ,OAAO;;;ACAtD,8BAA8B,MAAM,iBAAiB;AAC1D,MAAI,SAAS,iBAAiB;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,KAAK,aAAa,IAAI;AACxB,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,UAAU;AAC5B,WAAO,gBAAgB,SAAS,KAAK,aAAa,IAAI,KAAK,aAAa,IAAI;AAAA,EAC9E;AACA,MAAI,gBAAgB,yBAAyB;AAC3C,WAAQ,iBAAgB,wBAAwB,IAAI,IAAI,OAAO;AAAA,EACjE;AACA,SAAO,QAAQ,QAAQ,iBAAiB;AACtC,WAAO,KAAK;AAAA,EACd;AACA,SAAO,CAAC,CAAC;AACX;AACO,qCAAqC,MAAM;AAChD,SAAO,qBAAqB,MAAM,KAAK,cAAc,eAAe;AACtE;AAIO,sBAAsB,SAAS;AACpC,SAAO,WAAW,QAAQ,WAAW,QAAQ,QAAQ,YAAY;AACnE;;;AC1BA,IAAM,gBAAgB,IAAI,KAAK,EAAE,QAAQ;AACzC,IAAM,kCAAkC,SAAS;AACjD,IAAM,kBAAkB,OAAO,eAAe;AAC9C,IAAI;AACJ,IAAI,WAAW;AACf,IAAM,SAAS;AAAA,EACb,eAAe,MAAM,kBAAkB;AACrC,QAAI,cAAc,KAAK;AACvB,QAAI,CAAC,eAAe,kBAAkB;AACpC,oBAAc,KAAK,mBAAmB,CAAC;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM;AACV,QAAI,KAAK,kBAAkB;AACzB,aAAO,KAAK;AACZ,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AACA,IAAM,KAAK;AAAA,EACT,eAAe,MAAM,kBAAkB;AACrC,QAAI,eAAe,KAAK;AACxB,UAAM,uBAAuB,gBAAgB,iBAAiB,UAAU,UAAU;AAClF,QAAI,CAAC,sBAAsB;AACzB,UAAI,CAAC,kBAAkB;AACrB,eAAO;AAAA,MACT;AACA,qBAAe,KAAK,mCAAmC,OAAO;AAC9D,gBAAU,gBAAgB,CAAC;AAAA,IAC7B;AACA,WAAO,UAAU;AAAA,EACnB;AAAA,EACA,MAAM,MAAM;AACV,UAAM,eAAe,KAAK;AAC1B,QAAI,cAAc;AAChB,aAAO,UAAU;AACjB,WAAK,mCAAmC;AACxC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AACA,IAAM,EAAE,gBAAgB,UAAU,YAAY,KAAK;AAC5C,mBAAmB;AACxB,SAAO,aAAa;AACtB;AACA,aAAa,MAAM,KAAK;AACtB,QAAM,cAAc,eAAe,MAAM,KAAK;AAC9C,SAAO,eAAe,YAAY;AACpC;AACA,aAAa,MAAM,KAAK,OAAO;AAC7B,MAAI,cAAc,eAAe,MAAM,UAAU,MAAM;AACvD,iBAAgB,aAAY,OAAO;AACrC;;;ACpDA,IAAI,aAAa,AAAQ,QAAQ;AAGjC,uCAAuC,MAAM,kBAAkB;AAC7D,MAAI,sBAAsB,AAAQ,IAAI,MAAM,UAAU;AACtD,MAAI,wBAAwB,UAAU,kBAAkB;AACtD,0BAAsB,CAAC;AACvB,IAAQ,IAAI,MAAM,YAAY,mBAAmB;AAAA,EACnD;AACA,SAAO;AACT;AACA,oCAAoC,MAAM;AACxC,EAAQ,IAAI,MAAM,YAAY,MAAM;AACtC;AAiCO,4BAA4B,MAAM,UAAU;AACjD,MAAI,OAAO,aAAa,YAAY;AAClC,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACA,gCAA8B,MAAM,IAAI,EAAE,KAAK,QAAQ;AACzD;AACO,+BAA+B,MAAM,UAAU;AACpD,MAAI,sBAAsB,8BAA8B,MAAM,KAAK;AACnE,MAAI,qBAAqB;AACvB,oBAAgB,qBAAqB,QAAQ;AAC7C,QAAI,oBAAoB,WAAW,GAAG;AACpC,iCAA2B,IAAI;AAAA,IACjC;AAAA,EACF;AACF;AAgBO,IAAM,4BAA4B,CAAC;AAUnC,yBAAyB,MAAM;AACpC,MAAI,oBAAoB,iBAAiB,eAAe,YAAY;AACpE,MAAI,mBAAmB;AACrB,sBAAkB,CAAC,IAAI,CAAC;AAAA,EAC1B;AACF;AACA,0BAA0B,KAAK,eAAe;;;ACzF9C,IAAI,cAAc,CAAC;AAAnB,IAAsB,6BAA6B,CAAC;AACpD,IAAI,mBAAmB,gBAAQ,OAAO,aAAa,cAAc,KAAK,gBAAQ,OAAO,UAAU,SAAS,IAAI,kBAAkB;AAC9H,YAAY,oBAAoB,CAAC,SAAS,WAAW,UAAU;AAC/D,YAAY,iBAAiB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,cAAc,aAAa,SAAS,WAAW,oBAAoB;AACjE,MAAI,mBAAmB,QAAQ;AAC7B,aAAS,IAAI,GAAG,IAAI,mBAAmB,QAAQ,IAAI,GAAG,KAAK;AACzD,iCAA2B,mBAAmB,MAAM;AAAA,IACtD;AAAA,EACF;AACF,CAAC;;;ACtBD,IAAI,+BAA+B,gBAAQ,YAAY,gBAAQ,SAAS,cAAc,MAAM,EAAE,SAAS;;;ACEvG,IAeG,sBAAsB,gBAAQ,YAAY,aAAa,gBAAQ,SAAS,cAAc,UAAU;;;ACpBnG,IAAI,4BAA4B,OAAO,8CAA8C;AAC9E,IAAI,mBAAmB;AAAA,EAC5B,uBAAuB,AAAQ,QAAQ;AAAA,EACvC,WAAW,SAAS,SAAS;AAC3B,YAAQ,aAAa,OAAO;AAAA,WACrB;AACH,YAAI,QAAQ,+BAA+B,MAAM;AAC/C,iBAAO,AAAQ,IAAI,SAAS,iBAAiB,qBAAqB;AAAA,QACpE;AACA,eAAO,QAAQ;AAAA,WACZ;AACH,eAAO,QAAQ,iBAAiB,IAAI,iBAAiB,UAAU,QAAQ,QAAQ,QAAQ,cAAc,IAAI;AAAA;AAEzG,eAAO,QAAQ;AAAA;AAAA,EAErB;AAAA,EACA,YAAY,SAAS,SAAS,OAAO,YAAY;AAC/C,YAAQ,aAAa,OAAO;AAAA,WACrB;AACH,YAAI,OAAO,UAAU,UAAU;AAC7B,UAAQ,IAAI,SAAS,iBAAiB,uBAAuB,MAAM;AACnE,cAAI,6BAA6B,SAAS;AACxC,mBAAO,QAAQ;AAAA,UACjB;AACA,kBAAQ,QAAQ;AAAA,QAClB,OAAO;AACL,UAAQ,IAAI,SAAS,iBAAiB,uBAAuB,KAAK;AAClE,kBAAQ,6BAA6B;AACrC,kBAAQ,QAAQ,OAAO,UAAU,WAAW,QAAQ;AAAA,QACtD;AACA;AAAA,WACG;AACH,YAAI,UAAU,MAAM,UAAU,MAAM;AAClC,kBAAQ;AAAA,QACV;AACA,YAAI,YAAY;AAChB,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,QAAQ,aAAa,IAAI,GAAG,EAAE,GAAG;AACnE,wBAAc,iBAAiB,UAAU,QAAQ,QAAQ,EAAE;AAC3D,gBAAM,cAAc,gBAAgB;AACpC,gBAAM,aAAa,gBAAgB,MAAM,UAAU;AACnD,gBAAM,eAAe,OAAO,UAAU,YAAY,OAAO,WAAW,MAAM;AAC1E,cAAI,eAAe,cAAc,cAAc;AAC7C,wBAAY;AACZ;AAAA,UACF;AAAA,QACF;AACA,YAAI,cAAc,aAAa,KAAK,UAAU,UAAU,QAAQ,OAAO,GAAG;AACxE,kBAAQ,gBAAgB;AAAA,QAC1B;AACA;AAAA;AAEA,YAAI,UAAU,QAAQ,UAAU,QAAQ;AACtC,kBAAQ;AAAA,QACV;AACA,gBAAQ,QAAQ;AAChB;AAAA;AAAA,EAEN;AACF;;;AC7DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,IAAI,YAAY,CAAC;AAAjB,IAAoB,kBAAkB;AAAtC,IAAyC,aAAa;AAAtD,IAAyD,qBAAqB;AAA9E,IAAiF,IAAI,gBAAQ;AAC7F,IAAI,KAAK,EAAE,oBAAoB,CAAE,GAAE,aAAa,EAAE,UAAU,aAAa;AACvE,kBAAQ,gBAAgB,SAAS,UAAU;AACzC,QAAI,MAAM,EAAE,SAAS,cAAc,KAAK;AACxC,QAAI,EAAE,iBAAiB,QAAQ,EAAE,QAAQ,KAAK,EAAE,YAAY,KAAK,CAAC;AAClE,WAAO,WAAW;AAChB,UAAI,UAAU,OAAO,KAAK;AAAA,IAC5B;AAAA,EACF,EAAE,gBAAgB;AACpB,WAAW,KAAK,EAAE,YAAY,wBAAwB,EAAE,SAAS,cAAc,QAAQ,GAAG;AACxF,kBAAQ,gBAAgB,SAAS,UAAU;AACzC,QAAI,SAAS,SAAS,cAAc,QAAQ;AAC5C,WAAO,qBAAqB,WAAW;AACrC,aAAO,qBAAqB;AAC5B,eAAS,gBAAgB,YAAY,MAAM;AAC3C,eAAS;AACT,eAAS;AAAA,IACX;AACA,aAAS,gBAAgB,YAAY,MAAM;AAAA,EAC7C;AACF,OAAO;AACL,kBAAQ,gBAAgB,SAAS,UAAU;AACzC,eAAW,UAAU,CAAC;AAAA,EACxB;AACF;AACA,wBAAwB;AACtB,MAAI,iBAAiB;AACnB,QAAI,OAAO,iBAAiB,aAAa;AACzC,aAAS,MAAM,qBAAqB,mBAAmB;AACrD,UAAI,OAAO,UAAU,uBAAuB;AAC1C,YAAI,qBAAqB,MAAM;AAC7B,cAAI,EAAE,cAAc,KAAK;AACvB,iCAAqB;AACrB,uBAAW,MAAM,2CAA2C,aAAa,eAAe,CAAC;AACzF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI;AACF,eAAK;AAAA,QACP,SAAS,IAAP;AACA,qBAAW,EAAE;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AACA,4BAA4B;AAC1B,eAAa;AACb,uBAAqB,kBAAkB,UAAU,SAAS;AAC5D;AACA,kCAAkC;AAChC,kBAAQ,cAAc,gBAAgB;AACxC;AACO,kBAAkB,MAAM;AAC7B,MAAI,CAAC,iBAAiB;AACpB,2BAAuB;AAAA,EACzB;AACA,YAAU,qBAAqB;AAC/B,SAAO;AACT;AACO,gBAAgB,QAAQ;AAC7B,MAAI,QAAQ,SAAU,cAAa;AACnC,MAAI,SAAS,sBAAsB,QAAQ,iBAAiB;AAC1D,cAAU,SAAS;AAAA,EACrB;AACF;AACO,2BAA2B;AAChC,MAAI,SAAS,kBAAkB;AAC/B,uBAAqB,kBAAkB,UAAU,SAAS;AAC1D,SAAO;AACT;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCO,IAAM,mBAAmB,OAAO,uBAAuB;AACvD,wBAAwB,UAAU;AACvC,SAAO,YAAY,SAAS,qBAAqB;AACnD;;;ADFA,IAAM,cAAc,CAAC;AACrB,IAAI;AACJ,IAAI,SAAS;AACb,iBAAiB;AACf,SAAO,EAAE;AACX;AACO,eAAe,UAAS;AAC7B,cAAY,KAAK,YAAY;AAC7B,iBAAe;AACjB;AACO,eAAe;AACpB,iBAAe,YAAY,IAAI;AACjC;AACO,4BAA4B,eAAc;AAC/C,MAAI,cAAc;AAChB,QAAI,CAAC,eAAe,aAAY,GAAG;AACjC,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AACA,iBAAa,SAAS,KAAK,aAAa,gBAAgB,eAAc,cAAa,OAAQ,eAAa,MAAM,MAAM,EAAE;AAAA,EACxH;AACF;AACO,gBAAgB,UAAU,gBAAgB,cAAc;AAC7D,MAAI;AACF,UAAM;AACN,WAAO,SAAS,MAAM,gBAAgB,gBAAgB,CAAC,CAAC;AAAA,EAC1D,UAAE;AACA,QAAI;AAAA,EACN;AACF;AACO,gCAAgC;AACrC,MAAI,cAAc;AAChB,WAAO,aAAa,SAAS,qBAAqB;AAAA,EACpD;AACF;AACO,2BAA2B;AAChC,MAAI,cAAc;AAChB,WAAO,aAAa,SAAS,gBAAgB;AAAA,EAC/C;AACF;AACO,qBAAqB;AAC1B,MAAI,cAAc;AAChB,WAAO,aAAa;AAAA,EACtB;AACF;;;AE3CO,sBAAsB,QAAQ;AACnC,MAAI,OAAO,eAAe;AACxB;AAAA,EACF;AACA,SAAO,gBAAgB;AACvB,SAAO,MAAM,SAAS,UAAU;AAC9B,QAAI;AACJ,QAAI,gBAAgB;AACpB,WAAO,WAAW;AAChB,UAAI,CAAC,eAAe;AAClB,sBAAM,OAAO,MAAM;AACnB,iBAAS,cAAM,SAAS,QAAQ;AAChC,YAAI;AACF,0BAAgB;AAChB,iBAAO,kBAAkB,QAAQ,OAAO;AAAA,QAC1C,UAAE;AACA,0BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AClBA,yBAAkC;AAAA,EAChC,YAAY,QAAQ,UAAU,iBAAiB;AAC7C,SAAK,UAAU;AACf,SAAK,YAAY,SAAS;AAC1B,SAAK,mBAAmB;AACxB,SAAK,cAAc;AACnB,SAAK,2BAA2B;AAAA,EAClC;AAAA,EACA,UAAU;AACR,QAAI,KAAK,0BAA0B;AACjC,4BAAsB,KAAK,OAAO,KAAK,wBAAwB;AAAA,IACjE;AACA,SAAK,cAAc;AACnB,SAAK,iBAAiB;AAAA,EACxB;AAAA,EACA,yBAAyB,MAAM;AAC7B,SAAK,QAAQ;AACb,uBAAmB,MAAM,KAAK,2BAA2B,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,EAClF;AAAA,EACA,cAAc;AACZ,SAAK,QAAQ;AAAA,EACf;AAAA,MACI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AACF;;;ACtBA,IAAI,iBAAiB;AAAA,EACnB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AACZ;AACO,oCAAoC,GAAG,GAAG;AAC/C,MAAI,sBAAsB,MAAM,QAAQ,OAAO,KAAK;AACpD,SAAO,sBAAsB,MAAM,IAAI;AACzC;AACO,wBAAwB,oBAAoB;AACjD,MAAI,SAAS;AACb,MAAI,oBAAoB;AACtB,kBAAc,oBAAoB,SAAS,KAAK,OAAO;AACrD,UAAI,kBAAkB,UAAU;AAChC,UAAI,OAAO,oBAAoB,YAAY;AACzC,iBAAS,gBAAgB,QAAQ,KAAK,KAAK;AAAA,MAC7C,OAAO;AACL,wBAAQ,QAAQ,IAAI,MAAM,yBAAyB,GAAG,CAAC;AAAA,MACzD;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;AACO,gBAAgB,QAAQ,YAAY;AACzC,SAAO,mBAAmB,cAAc,WAAW,OAAO;AAC5D;AACO,kBAAkB,QAAQ,QAAQ;AACvC,MAAI,WAAW,MAAM;AACnB,UAAM,IAAI,MAAM,uHAAuH;AAAA,EACzI;AACA,eAAa,MAAM;AACrB;AACO,mBAAmB,QAAQ,UAAU;AAC1C,MAAI,SAAS,QAAQ;AACrB,MAAI,OAAO,aAAa,UAAU;AAChC,cAAU;AAAA,EACZ,OAAO;AACL,cAAU,SAAS;AACnB,aAAS,SAAS;AAAA,EACpB;AACA,SAAO,gBAAgB;AACvB,kBAAgB,WAAW,0BAA0B,WAAa;AAClE,SAAO,MAAM,SAAS,UAAU;AAC9B,WAAO,cAAc,UAAU,OAAO;AAAA,EACxC,CAAC;AACH;AACO,IAAI,YAAY;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACF;;;AChDO,IAAM,eAAe,OAAO,uBAAuB;AAC1D,IAAI,CAAC,OAAO,YAAY;AACtB,SAAO,aAAa,OAAO,IAAI,wBAAwB;AACzD;AACO,wBAAwB;AAC7B,SAAO,eAAe,MAAM,kBAAkB;AAC9C,qBAAmB,KAAK,IAAI;AAC9B;AACO,IAAI,eAAe;AAC1B,IAAI,qBAAqB;AAAA,GACtB,mBAAmB;AAAA,GACnB,OAAO,cAAc;AACpB,WAAO;AAAA,EACT;AAAA,EACA,KAAK,UAAU;AACb,aAAS,iBAAiB,EAAE,QAAQ,CAAC,EAAE;AACvC,aAAS,iBAAiB;AAAA,EAC5B;AAAA,EACA,UAAU,UAAU,gBAAgB,OAAO;AACzC,UAAM,iBAAiB,OAAO,aAAa,YAAY,SAAS;AAChE,YAAQ,SAAS;AACjB,UAAM,WAAW,iBAAiB,WAAW;AAAA,MAC3C,MAAM,iBAAiB,SAAS,KAAK,cAAc,IAAI;AAAA,IACzD;AACA,UAAM,uBAAuB,IAAI,aAAa,MAAM,UAAU,MAAM;AAClE,sBAAgB,KAAK,eAAe,QAAQ,oBAAoB;AAChE,UAAI,KAAK,yBAAyB;AAChC,aAAK,wBAAwB,KAAK;AAAA,MACpC;AAAA,IACF,CAAC;AACD,QAAI,KAAK,uBAAuB;AAC9B,WAAK,sBAAsB,KAAK;AAAA,IAClC;AACA,QAAI,CAAC,KAAK,eAAe,QAAQ;AAC/B,WAAK,eAAe,SAAS,CAAC;AAAA,IAChC;AACA,SAAK,eAAe,OAAO,KAAK,oBAAoB;AACpD,QAAI,kBAAkB,gBAAgB,MAAM;AAC1C,eAAS,KAAK,KAAK,aAAa;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB,eAAe,OAAO;AACtC,YAAQ,SAAS;AACjB,QAAI,UAAU,cAAc;AAC1B,WAAK,cAAc;AAAA,IACrB;AACA,QAAI,KAAK,yBAAyB,KAAK,GAAG;AACxC,YAAM,OAAO,UAAU,gBAAgB,KAAK,wBAAwB,CAAC,GAAG,KAAK,eAAe,MAAM;AAClG,UAAI;AACF,QAAoB,MAAM;AAC1B,iBAAS,IAAI,GAAG,sBAAsB,uBAAuB,KAAK,IAAI,EAAE,GAAG;AACzE,cAAI,CAAC,qBAAqB,aAAa;AACrC,iCAAqB,UAAU,aAAa;AAAA,UAC9C;AAAA,QACF;AAAA,MACF,UAAE;AACA,QAAoB,IAAI;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EACA,aAAa;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACA,WAAW,gBAAgB;AACzB,WAAO,KAAK,WAAW,MAAM;AAAA,EAC/B;AAAA,EACA,gBAAgB;AACd,MAAE,KAAK;AAAA,EACT;AAAA,EACA,yBAAyB,OAAO;AAC9B,WAAO,KAAK,eAAe,UAAU,KAAK,eAAe,OAAO;AAAA,EAClE;AAAA,EACA,sBAAsB,OAAO;AAC3B,QAAI,OAAO;AACT,aAAO,KAAK,eAAe,UAAU,KAAK,eAAe,OAAO,UAAU;AAAA,IAC5E,OAAO;AACL,UAAI,QAAQ;AACZ,oBAAc,KAAK,gBAAgB,SAAS,WAAW,eAAe;AACpE,YAAI,cAAc,SAAS;AACzB,mBAAS,cAAc;AAAA,QACzB;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,YAAY,UAAU,UAAU;AAC9B,WAAO,CAAC,KAAK,oBAAoB,CAAC,KAAK,iBAAiB,UAAU,QAAQ;AAAA,EAC5E;AAAA,EACA,KAAK,IAAI;AACP,UAAM,OAAO,KAAK,UAAU,CAAC,OAAO;AAClC,WAAK,QAAQ;AACb,SAAG,EAAE;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EACA,KAAK,MAAM,aAAa;AACtB,UAAM,UAAU,KAAK,KAAK;AAC1B,UAAM,UAAU,UAAU,SAAS;AACnC,UAAM,SAAS,OAAO,SAAS,aAAa,OAAO,CAAC,MAAM,MAAM;AAChE,QAAI,OAAO,OAAO,GAAG;AACnB,aAAO,gBAAQ,QAAQ,QAAQ,UAAU,cAAc,OAAO;AAAA,IAChE;AACA,WAAO,IAAI,gBAAQ,QAAQ,CAAC,SAAS,WAAW;AAC9C,YAAM,OAAO,KAAK,UAAU,CAAC,aAAa;AACxC,YAAI,OAAO,QAAQ,GAAG;AACpB,eAAK,QAAQ;AACb,kBAAQ,UAAU,cAAc,QAAQ;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EACA,IAAI,SAAS,MAAM;AACjB,UAAM,SAAS,OAAO,SAAS,aAAa,OAAO,CAAC,MAAM,MAAM;AAChE,UAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,WAAO,KAAK,KAAK,SAAS,GAAG,IAAI;AAAA,EACnC;AAAA,EACA,OAAO;AACL,WAAO,IAAI,QAAQ,CAAC,YAAY,KAAK,KAAK,OAAO,CAAC;AAAA,EACpD;AAAA,EACA,WAAW;AACT,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACV;AACA,OAAO,eAAe,oBAAoB,SAAS,SAAS;AAC5D,aAAa,KAAK;;;AC/HX,oBAAoB,cAAc;AACvC,wBAAsB;AACpB,QAAI,UAAU,SAAS,GAAG;AACxB,UAAI,WAAW,YAAY,WAAW,eAAe,UAAU,EAAE,GAAG;AAClE,mBAAW,gBAAgB;AAC3B,mBAAW,gBAAgB,UAAU;AACrC,mBAAW,gBAAgB;AAAA,MAC7B;AACA,aAAO;AAAA,IACT,OAAO;AACL,MAAoB,mBAAmB,UAAU;AACjD,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AACA,qCAAmC,YAAY,EAAE,OAAO,OAAO,CAAC;AAChE,aAAW,gBAAgB;AAC3B,eAAa,GAAG,KAAK,UAAU;AAC/B,SAAO,eAAe,YAAY,WAAW,EAAE;AAC/C,MAAI,gBAAQ,cAAc;AACxB,iBAAa,UAAU;AAAA,EACzB;AACA,SAAO;AACT;AACA,WAAW,KAAK;AAAA,EACd,kBAAkB;AAAA,EAClB,OAAO;AACL,WAAO,KAAK;AAAA,EACd;AAAA,EACA,kBAAkB;AAChB,SAAK,kBAAkB,KAAK,eAAe,UAAU;AACrD,SAAK,kBAAkB,KAAK,aAAa;AAAA,EAC3C;AAAA,EACA,kBAAkB;AAChB,SAAK,kBAAkB,KAAK,eAAe,cAAc;AAAA,EAC3D;AAAA,EACA,OAAO,IAAI,SAAQ,MAAM;AACvB,WAAO,KAAK,GAAG,SAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC;AAAA,EAC9C;AAAA,EACA,aAAa;AACf;AACA,gCAAgC,OAAO,OAAO;AAC5C,MAAI,CAAC,SAAS,UAAU,cAAc;AACpC,SAAK,aAAa,KAAK;AAAA,EACzB,WAAW,UAAU,gBAAgB;AACnC,SAAK,mBAAmB,KAAK;AAAA,EAC/B,OAAO;AACL,SAAK,uBAAuB,OAAO,KAAK;AAAA,EAC1C;AACF;AACA,aAAa,GAAG,QAAQ,eAAe,eAAe;AACpD,MAAI,OAAO;AACX,MAAI,mBAAmB,aAAa,IAAI;AACxC,MAAI,eAAe;AACnB,MAAI,oBAAoB,kBAAkB,eAAe,cAAc;AACvE,MAAI,CAAC,KAAK,wBAAwB;AAChC,SAAK,yBAAyB,KAAK;AACnC,SAAK,oBAAoB;AAAA,EAC3B;AACA,MAAI,SAAS,cAAc,WAAW;AACpC,SAAK,yBAAyB;AAC9B,QAAI,oBAAoB,iBAAiB,MAAM;AAC7C,qBAAe,KAAK,iBAAiB,KAAK,eAAe,IAAI,KAAK;AAAA,IACpE;AACA,UAAM,eAAe,oBAAoB,aAAa,KAAK,YAAY,eAAe,YAAY;AAClG,SAAK,oBAAoB,YAAY,qBAAqB;AAC1D,QAAI,cAAc;AAChB,WAAK,uBAAuB,gBAAgB,YAAY;AAAA,IAC1D;AAAA,EACF,CAAC;AACD,SAAO,OAAO,MAAM;AAAA,IAClB,aAAa,OAAO,SAAS;AAC3B,UAAI,CAAC,WAAW,CAAC,KAAK,wBAAwB;AAC5C,oBAAY,CAAC;AAAA,MACf;AACA,WAAK,uBAAuB,CAAC,GAAG,KAAK,eAAe,aAAa;AACjE,WAAK,yBAAyB,qBAAqB;AACnD,qBAAe;AACf,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB,OAAO;AACxB,UAAI,CAAC,oBAAoB;AACvB,wBAAgB;AAChB,aAAK,uBAAuB,OAAO,YAAY;AAAA,MACjD;AAAA,IACF;AAAA,IACA,sCAAsC;AACpC,UAAI,KAAK,YAAY,eAAe,KAAK,KAAK,IAAI,CAAC,GAAG;AACpD,2BAAmB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,gBAAgB;AACd,kBAAY;AAAA,IACd;AAAA,EACF,CAAC;AACH;AACA,OAAO,eAAe,WAAW,IAAI,aAAa,EAAE;AACpD,IAAI,gBAAgB,WAAW,gBAAgB,gBAAQ;AACvD,WAAW,GAAG,iBAAiB;AAC/B,WAAW,uBAAuC,oBAAI,IAAI,CAAC,UAAU,CAAC;AAC/D,sBAAsB,UAAU;AACrC,QAAM,QAAQ,OAAO,aAAa,cAAc,SAAS;AACzD,MAAI,SAAS,CAAC,WAAW,qBAAqB,IAAI,KAAK,GAAG;AACxD,UAAM,MAAM,uFAAuF;AAAA,EACrG;AACA,SAAO,CAAC,CAAC;AACX;AACO,gBAAgB,OAAO;AAC5B,SAAO,aAAa,KAAK,IAAI,MAAM,IAAI;AACzC;;;AC7GO,IAAI,uBAAuB;AAC3B,2BAA2B,QAAQ,UAAS;AACjD,SAAO,sBAAsB,CAAC;AAC9B,MAAI,YAAW,OAAO,aAAY,UAAU;AAC1C,WAAO,OAAO,qBAAqB,QAAO;AAAA,EAC5C;AACA,SAAO,oBAAoB,SAAS;AACpC,MAAI,OAAO,4BAA4B;AACrC;AAAA,EACF;AACA,MAAI,kBAAkB;AACtB,MAAI,aAAa;AACjB,MAAI;AACJ,MAAI,uBAAuB;AAC3B,MAAI;AACJ,MAAI,0CAA0C,OAAO;AACrD,MAAI,4CAA4C,OAAO;AACvD,SAAO,wBAAwB,SAAS,OAAO;AAC7C,QAAI,yCAAyC;AAC3C,8CAAwC,KAAK,QAAQ,KAAK;AAAA,IAC5D;AACA,QAAI,UAAU,sBAAsB;AAClC,mBAAa;AAAA,IACf;AAAA,EACF;AACA,SAAO,0BAA0B,SAAS,OAAO;AAC/C,QAAI,2CAA2C;AAC7C,gDAA0C,KAAK,QAAQ,KAAK;AAAA,IAC9D;AACA,QAAI,UAAU,wBAAwB,CAAC,OAAO,yBAAyB,oBAAoB,GAAG;AAC5F,UAAI,qCAAqC;AACvC,eAAO,oBAAoB;AAC3B,8CAAsC;AAAA,MACxC;AACA,UAAI,yBAAyB;AAC3B,gCAAwB,QAAQ;AAAA,MAClC;AACA,gCAA0B;AAC1B,wBAAkB;AAAA,IACpB;AAAA,EACF;AACA,0BAAwB;AACtB,QAAI,iBAAiB;AACnB;AAAA,IACF;AACA,sBAAkB;AAClB,0CAAsC,OAAO;AAC7C,WAAO,oBAAoB,SAAS,eAAe,OAAO;AACxD,UAAI,CAAC,SAAS,UAAU,cAAc;AACpC,UAAE;AAAA,MACJ;AACA,aAAO,oCAAoC,MAAM,MAAM,SAAS;AAAA,IAClE;AACA,QAAI,mBAAmB,CAAC,EAAE,OAAO,OAAO,KAAK,MAAM,SAAS,CAAC,IAAI,OAAO,KAAK,CAAC;AAC9E,iBAAa;AACb,8BAA0B,OAAO,UAAU,SAAS,iBAAiB;AACnE,UAAI;AACJ,wBAAkB,CAAC,EAAE,OAAO,mBAAmB,CAAC,CAAC;AACjD,UAAI,OAAO,yBAAyB,oBAAoB,GAAG;AACzD,kBAAU,WAAW,kBAAkB,eAAe;AAAA,MACxD;AACA,yBAAmB;AACnB,mBAAa;AACb,6BAAuB;AACvB,UAAI,WAAW,QAAQ,QAAQ;AAC7B,eAAO,kBAAkB,SAAS,oBAAoB;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,sBAAoB,kBAAkB,iBAAiB;AACrD,QAAI,CAAC,cAAc,uBAAuB,GAAG;AAC3C,mBAAa,kBAAkB,cAAc,kBAAkB,iBAAiB,OAAO,mBAAmB;AAAA,IAC5G;AACA,WAAO;AAAA,EACT;AACA,SAAO,6BAA6B,SAAS,UAAU,eAAe,MAAM;AAC1E,QAAI,CAAC,mBAAmB,sBAAsB;AAC5C;AAAA,IACF;AACA,QAAI,OAAO,CAAC,GAAG,cAAc,SAAS,QAAQ,aAAa,KAAK,QAAQ,SAAS;AACjF,sBAAkB,QAAQ,OAAO,OAAO;AACtC,aAAO,KAAK,KAAK,UAAU,EAAE,UAAU,QAAQ,SAAS,OAAO,SAAS,MAAM;AAAA,IAChF;AACA,YAAQ;AAAA,WACD;AACH,iBAAS;AAAA,WACN;AACH,iBAAS,QAAQ,GAAG,QAAQ,YAAY,SAAS;AAC/C,mBAAS,SAAS,KAAK,QAAQ,SAAS,KAAK;AAAA,QAC/C;AACA;AAAA,WACG;AACH,iBAAS,cAAc;AAAA,WACpB;AACH,YAAI,aAAa;AACf,mBAAS,WAAW,SAAS,SAAS,MAAM;AAAA,QAC9C;AACA;AAAA,WACG;AACH,YAAI,aAAa,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,cAAc,KAAK,KAAK,KAAK,EAAE,GAAG,WAAW,GAAG,iBAAiB,eAAe,IAAI,cAAc,KAAK,IAAI,aAAc,MAAK,MAAM,IAAI,WAAW,GAAG,cAAc,aAAa,aAAa,GAAG,WAAW,KAAK,IAAI,gBAAgB,WAAW,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC;AACpU,iBAAS,QAAQ,YAAY,YAAY,GAAG,QAAQ,UAAU,EAAE,OAAO,EAAE,WAAW;AAClF,cAAI,QAAQ,gBAAgB;AAC1B,sBAAU,KAAK,SAAS,WAAW,SAAS,QAAQ,KAAK,CAAC;AAAA,UAC5D;AACA,cAAI,QAAQ,aAAa;AACvB,sBAAU,KAAK,SAAS,SAAS,KAAK,YAAY,KAAK,CAAC;AAAA,UAC1D;AAAA,QACF;AACA,mCAA2B,WAAW,SAAS;AAC/C;AAAA;AAEA;AAAA;AAEJ,iBAAa;AAAA,EACf;AACF;AACA,kBAAkB,gBAAgB;AAClC,UAAU,oBAAoB;;;ACrHvB,yBAAyB,eAAe;AAC7C,kBAAgB,iBAAiB,CAAC;AAClC,MAAI,OAAO,kBAAkB,YAAY,CAAE,aAAY,gBAAgB;AACrE,UAAM,IAAI,MAAM,oGAAoG;AAAA,EACtH;AACA,MAAI,SAAS,WAAW,aAAa;AACrC,SAAO,eAAe,QAAQ,gBAAgB,EAAE;AAChD,oBAAkB,MAAM;AACxB,qCAAmC,QAAQ,EAAE,KAAK,MAAM,OAAO,EAAE,OAAO,CAAC;AACzE,SAAO;AACT;AAIA,gBAAgB,KAAK;AAAA,EACnB,OAAO,kBAAkB;AACvB,QAAI,kBAAkB,KAAK,KAAK;AAChC,QAAI,gBAAgB,CAAC;AACrB,QAAI,YAAY,OAAO,qBAAqB,cAAc,CAAC,aAAa,gBAAgB,IAAI,mBAAmB,SAAS,QAAQ;AAC9H,aAAO,WAAW;AAAA,IACpB;AACA,aAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,UAAI,QAAQ,gBAAgB;AAC5B,UAAI,UAAU,KAAK,GAAG;AACpB,YAAI,cAAc,WAAW,GAAG;AAC9B,eAAK,gBAAgB;AAAA,QACvB;AACA,YAAI,gBAAgB,OAAO,OAAO;AAChC,gBAAM,MAAM,kDAAkD;AAAA,QAChE;AACA,sBAAc,KAAK,KAAK;AACxB,wBAAgB,OAAO,GAAG,CAAC;AAC3B;AAAA,MACF;AAAA,IACF;AACA,QAAI,cAAc,QAAQ;AACxB,WAAK,gBAAgB;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAAA,EACA,UAAU,eAAe;AACvB,QAAI,kBAAkB,QAAQ;AAC5B,UAAI,kBAAkB,KAAK,KAAK;AAChC,UAAI,YAAY,gBAAgB,MAAM,CAAC;AACvC,WAAK,gBAAgB;AACrB,sBAAgB,OAAO,GAAG,gBAAgB,MAAM;AAChD,WAAK,gBAAgB;AACrB,aAAO;AAAA,IACT;AACA,QAAI,CAAC,eAAe;AAClB,aAAO,CAAC;AAAA,IACV;AACA,WAAO,KAAK,UAAU,SAAS,OAAO;AACpC,aAAO,aAAa,eAAe,KAAK,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,kBAAkB;AACxB,QAAI,kBAAkB,KAAK,KAAK;AAChC,QAAI,YAAY,OAAO,qBAAqB,cAAc,CAAC,aAAa,gBAAgB,IAAI,mBAAmB,SAAS,QAAQ;AAC9H,aAAO,WAAW;AAAA,IACpB;AACA,SAAK,gBAAgB;AACrB,aAAS,IAAI,gBAAgB,SAAS,GAAG,KAAK,GAAG,KAAK;AACpD,UAAI,QAAQ,gBAAgB;AAC5B,UAAI,UAAU,KAAK,GAAG;AACpB,cAAM,cAAc;AAAA,MACtB;AAAA,IACF;AACA,SAAK,gBAAgB;AAAA,EACvB;AAAA,EACA,WAAW,eAAe;AACxB,QAAI,kBAAkB,QAAQ;AAC5B,aAAO,KAAK,QAAQ,WAAW;AAC7B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,QAAI,CAAC,eAAe;AAClB,aAAO,CAAC;AAAA,IACV;AACA,WAAO,KAAK,QAAQ,SAAS,OAAO;AAClC,aAAO,aAAa,eAAe,KAAK,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,MAAM;AACZ,WAAO,aAAa,KAAK,GAAG,IAAI;AAAA,EAClC;AAAA,EACA,QAAQ,SAAS,SAAS;AACxB,QAAI,QAAQ,KAAK,QAAQ,OAAO;AAChC,QAAI,SAAS,GAAG;AACd,WAAK,gBAAgB;AACrB,WAAK,KAAK,EAAE,SAAS;AACrB,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EACA,OAAO,WAAW;AAChB,WAAO,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,SAAS;AAAA,EACnC;AAAA,EACA,WAAW;AACT,WAAO,CAAC,GAAG,KAAK,CAAC,EAAE,QAAQ;AAAA,EAC7B;AAAA,GACC,OAAO,WAAW,aAAa;AAC9B,WAAO,KAAK;AAAA,EACd;AACF;AACA,OAAO,eAAe,gBAAgB,IAAI,WAAW,EAAE;AACvD,aAAa,CAAC,OAAO,QAAQ,WAAW,SAAS,QAAQ,UAAU,SAAS,GAAG,SAAS,YAAY;AAClG,kBAAgB,GAAG,cAAc,WAAW;AAC1C,QAAI,kBAAkB,KAAK,KAAK;AAChC,SAAK,gBAAgB;AACrB,SAAK,2BAA2B,iBAAiB,YAAY,SAAS;AACtE,QAAI,mBAAmB,gBAAgB,YAAY,MAAM,iBAAiB,SAAS;AACnF,SAAK,gBAAgB;AACrB,WAAO,qBAAqB,kBAAkB,OAAO;AAAA,EACvD;AACF,CAAC;AACD,aAAa,CAAC,OAAO,GAAG,SAAS,YAAY;AAC3C,kBAAgB,GAAG,cAAc,WAAW;AAC1C,QAAI,kBAAkB,KAAK;AAC3B,WAAO,gBAAgB,YAAY,MAAM,iBAAiB,SAAS;AAAA,EACrE;AACF,CAAC;AACD,gBAAgB,oBAAoB;;;ACrGpC,IAAM,gBAAgB,qBAAqB,QAAQ;AACnD,IAAM,iBAAiB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,UAAU;AACZ;AAEO,kBAAmB,4BAA4B,yBAAyB,UAAS;AACtF,MAAI,OAAO,+BAA+B,UAAU;AAElD,eAAU;AAAA,EACZ,OAAO;AAEL,eAAU,YAAW,CAAC;AACtB,QAAI,4BAA4B;AAC9B,eAAQ,OAAO;AAAA,IACjB;AAAA,EACF;AACA,MAAI,OAAO,SAAQ,SAAS,YAAY;AACtC,UAAM,MAAM,wDAAwD;AAAA,EACtE;AAEA,MAAI,gBAAgB,SAAQ;AAC5B,MAAI,QAAQ;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,IACT,SAAS;AAAA,IACT,kBAAkB;AAAA,IAClB,8CAA8C;AAAA,IAC9C,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,cAAc,SAAQ;AAAA,IACtB,yBAAyB,2BAA2B,SAAQ;AAAA,IAC5D,0BAA0B,SAAQ,4BAA4B,SAAQ,4BAA4B;AAAA,IAClG,aAAa,SAAQ,eAAe,SAAQ;AAAA,IAC5C,yBAAyB;AAAA,IACzB,oBAAoB,CAAC;AAAA,IACrB,mBAAmB;AAAA,IACnB,2BAA2B;AAAA,EAC7B;AAEA,gCAA+B;AAC7B,QAAI,UAAU,SAAS,GAAG;AACxB,UAAI,OAAO,kBAAkB,YAAY;AAEvC,sBAAc,MAAM,MAAM,yBAAyB,SAAS;AAAA,MAC9D,OAAO;AACL,cAAM,IAAI,MAAM,2IAA2I;AAAA,MAC7J;AACA,aAAO;AAAA,IACT,OAAO;AAEL,UAAI,CAAC,MAAM,YAAY;AACrB,oCAAoB,mBAAmB,kBAAkB;AAAA,MAC3D;AACA,UAAI,MAAM,WAAY,MAAM,cAAc,mBAAmB,wBAAwB,GAAI;AACvF,2BAAmB,kBAAkB;AAAA,MACvC;AACA,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,qBAAmB,iBAAiB;AACpC,qBAAmB,cAAc,OAAO,kBAAkB;AAE1D,eAAa,GAAG,KAAK,kBAAkB;AAGvC,SAAO,eAAe,oBAAoB,SAAS,EAAE;AAErD,MAAI,SAAQ,MAAM;AAChB,UAAM,OAAO;AACb,UAAM,aAAa;AACnB,WAAO,oBAAoB,qBAAqB;AAAA,EAClD,WAAW,SAAQ,iBAAiB;AAClC,WAAO,oBAAoB,wBAAwB;AAAA,EACrD;AAEA,MAAI,gBAAU,cAAc;AAC1B,cAAU,SAAS,oBAAoB,IAAI;AAAA,EAC7C;AAEA,MAAI,gBAAU,OAAO;AAEnB,uBAAmB,WAAW;AAAA,EAChC;AAEA,MAAI,MAAM,0BAA0B;AAIlC,UAAM,+CAA+C;AAMrD,QAAI,CAAC,MAAM,yBAAyB,UAAU;AAC5C,YAAM,2BAA2B;AAAA,IACnC;AAAA,EACF;AAGA,MAAI,CAAC,MAAM,cAAc,CAAC,SAAQ,iBAAiB;AACjD,uBAAmB,kBAAkB;AAAA,EACvC;AAIA,MAAI,MAAM,4BAA4B,mBAAmB,SAAS,GAAG;AACnE,uBAAmB,MAAM,0BAA0B,MAAM,0BAA0B,WAAY;AAC7F,yBAAmB,QAAQ;AAAA,IAC7B,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAGA,2CAA4C,IAAI,gBAAgB;AAC9D,MAAI,mBAAmB,QAAQ,eAAe,SAAS;AACrD,mBAAe,QAAQ;AAAA,EACzB;AACF;AAIA,kDAAmD,eAAc,IAAI;AACnE,MAAI,qBAAqB,KAAK,oBAC5B,QAAQ,mBAAmB;AAC7B,MAAI,CAAC,MAAM,YAAY;AACrB,QAAI,KAAK,iBAAiB,KAAK,mBAAmB,KAAK;AAErD,yBAAmB,sBAAsB,IAAI,eAAc,KAAK,mBAAmB,GAAG;AACtF,WAAK,mBAAmB,MAAM;AAC9B,QAAE,KAAK;AAAA,IACT,WAAW,CAAC,MAAM,mBAAmB,KAAK;AAExC,yBAAmB,sBAAsB,IAAI,eAAc,MAAM,aAAa,EAAE,SAAS,cAAa,IAAI,mBAAmB,sBAAsB,aAAY,CAAC;AAAA,IAClK;AAGA,QAAI,cAAa,wBAAwB;AACvC,oBAAa,oCAAoC;AAAA,IACnD;AAAA,EACF;AACF;AAEA,SAAS,KAAK;AAAA,EACZ,kBAAkB;AAAA,EAClB,uBAAwB;AACtB,WAAO,KAAK,eAAe;AAAA,EAC7B;AAAA,EAEA,kBAAmB;AACjB,UAAM,qBAAqB,KAAK,eAAe;AAC/C,UAAM,uBAAuB,CAAC;AAE9B,kBAAc,oBAAoB,SAAU,IAAI,YAAY;AAC1D,2BAAqB,WAAW,UAAU,WAAW;AAAA,IACvD,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,sBAAuB,IAAI,QAAQ,aAAa;AAC9C,QAAI,KAAK,eAAe,QAAQ,WAAW,MAAM;AAC/C,YAAM,MAAM,kDAAkD;AAAA,IAChE;AAEA,SAAK,eAAe,mBAAmB,MAAM;AAC7C,gBAAY,SAAS,KAAK,eAAe;AACzC,gBAAY,WAAW,OAAO,WAAW;AAAA,EAC3C;AAAA,EACA,0BAA2B;AACzB,QAAI,IAAI,YAAY,qBAAqB,KAAK,eAAe;AAC7D,SAAK,MAAM,oBAAoB;AAC7B,UAAI,eAAe,oBAAoB,EAAE,GAAG;AAC1C,qBAAa,mBAAmB;AAChC,YAAK,KAAK,gBAAgB,WAAW,QAAQ,0BAA2B,WAAW,QAAQ,WAAW,WAAW,QAAQ,GAAG;AAC1H,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,YAAa;AAEX,QAAI,KAAK,gBAAgB,CAAC,KAAK,eAAe,kBAAkB;AAC9D,WAAK,aAAa,KAAwB;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,WAAY;AACV,UAAM,QAAQ,KAAK;AACnB,WAAO,MAAM,WAAW,MAAM,oBAAoB;AAAA,EACpD;AAAA,EACA,kBAAmB;AAEjB,QAAI,CAAC,KAAK,wBAAwB;AAChC,WAAK,sBAAsB;AAAA,IAC7B,WAAW,KAAK,eAAe,SAAS;AACtC,WAAK,eAAe,UAAU;AAAA,IAChC;AAAA,EACF;AAAA,EACA,sBAAuB,QAAQ;AAC7B,QAAI,OAAO,eAAe;AACxB,UAAI,WAAW,OAAO,UAAU,KAAK,WAAW,MAAM,OAAO,GAC3D,YAAY,OAAO,UAAU,KAAK,iBAAiB,IAAI;AACzD,aAAO;AAAA,QACL,SAAS;AAAA,QACT,UAAW;AACT,mBAAS,QAAQ;AACjB,oBAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,IACF,OAAO;AACL,aAAO,OAAO,UAAU,KAAK,uBAAuB,IAAI;AAAA,IAC1D;AAAA,EACF;AAAA,EACA,wBAAyB;AACvB,QAAI,qBAAqB,MACvB,4BAA4B,mBAAmB;AACjD,QAAI,6BAA6B,6BAA6B,GAAG;AAC/D,mBAAa,KAAK,eAAe,yBAAyB;AAC1D,WAAK,eAAe,4BAA4B,eAAe,WAAY;AACzE,2BAAmB,kBAAkB,IAAuB;AAAA,MAC9D,GAAG,yBAAyB;AAAA,IAC9B,WAAW,mBAAmB,cAAc;AAC1C,yBAAmB,aAAa,IAAuB;AAAA,IACzD,OAAO;AACL,yBAAmB,kBAAkB,IAAuB;AAAA,IAC9D;AAAA,EACF;AAAA,EACA,kBAAmB,cAAc;AAC/B,QAAI,qBAAqB,MACvB,QAAQ,mBAAmB,gBAC3B,cAAc,MAAM,aACpB,UAAU;AAEZ,QAAI,MAAM,kBAAkB;AAK1B;AAAA,IACF;AAGA,QAAI,MAAM,YAAY;AACpB;AAAA,IACF;AAEA,QAAI,MAAM,4BAA4B,CAAC,4BAA4B,MAAM,wBAAwB,KAAK,eAAe,YAAY,GAAG;AAElI,UAAI,CAAC,MAAM,8CAA8C;AACvD,2BAAmB,QAAQ;AAC3B;AAAA,MACF;AAAA,IACF,OAAO;AAEL,YAAM,+CAA+C;AAAA,IACvD;AAEA,UAAM,mBAAmB;AACzB,QAAI;AACF,gBAAU,KAAK,kDAAkD,YAAY;AAAA,IAC/E,UAAE;AACA,YAAM,mBAAmB;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT;AAAA,EACA,kDAAmD,cAAc;AAK/D,QAAI,qBAAqB,MACvB,QAAQ,mBAAmB,gBAC3B,UAAU;AAIZ,QAAI,aAAY,MAAM,OAAO,SAAY,CAAC,MAAM,mBAC9C,6BAA6B;AAAA,MAC3B;AAAA,MACA,oBAAoB,MAAM;AAAA,MAC1B,eAAe,MAAM;AAAA,IACvB;AAEF,gCAAoB,MAAM;AAAA,MACxB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,IACb,CAAC;AAED,UAAM,qBAAqB,CAAC;AAC5B,UAAM,oBAAoB;AAE1B,QAAI,WAAW,KAAK,qDAAqD,OAAO,0BAA0B;AAE1G,QAAI,CAAC,MAAM,mBAAmB;AAC5B,yBAAmB,QAAQ;AAC3B,gBAAU;AAAA,IACZ,OAAO;AACL,gBAAU,mBAAmB,YAAY,MAAM,aAAa,QAAQ;AAAA,IACtE;AAEA,QAAI,SAAS;AACX,UAAI,CAAC,MAAM,YAAY;AACrB,2BAAmB,kBAAkB,MAAM,aAAa,cAAc;AAAA,MACxE,OAAO;AACL,2BAAmB,cAAc;AAAA,MACnC;AAEA,YAAM,cAAc;AACpB,UAAI,gBAAQ,OAAO;AAAE,2BAAmB,eAAe;AAAA,MAAS;AAEhE,yBAAmB,kBAAkB,MAAM,aAAa,UAAU;AAElE,UAAI,CAAC,MAAM,cAAc,cAAc;AACrC,2BAAmB,kBAAkB,MAAM,WAAW;AAAA,MACxD;AAEA,UAAI,mBAAmB,eAAe;AACpC,2BAAmB,cAAc;AAAA,MACnC;AAAA,IACF;AAEA,QAAI,YAAW;AACb,yBAAmB,kBAAkB,MAAM,aAAa,OAAO;AAAA,IACjE;AAEA,WAAO;AAAA,EACT;AAAA,EACA,qDAAsD,OAAO,4BAA4B;AAMvF,QAAI;AACF,UAAI,eAAe,MAAM;AACzB,aAAO,MAAM,0BAA0B,aAAa,KAAK,MAAM,uBAAuB,IAAI,aAAa;AAAA,IACzG,UAAE;AACA,kCAAoB,IAAI;AAGxB,UAAI,2BAA2B,iBAAiB,CAAC,MAAM,YAAY;AACjE,sBAAc,2BAA2B,oBAAoB,iCAAiC;AAAA,MAChG;AAEA,YAAM,UAAU,MAAM,UAAU;AAAA,IAClC;AAAA,EACF;AAAA,EACA,KAAM,eAAe;AAGnB,UAAM,QAAQ,KAAK;AACnB,QAAK,MAAM,WAAY,kBAAiB,CAAC,MAAM,sBAAwB,MAAM,cAAc,KAAK,wBAAwB,GAAI;AAC1H,WAAK,kBAAkB;AAAA,IACzB;AACA,WAAO,MAAM;AAAA,EACf;AAAA,OAEK,gBAAiB;AACpB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,MAAO,eAAe;AACpB,UAAM,QAAQ,KAAK;AAEnB,iBAAa,GAAG,MAAM,KAAK,MAAM,aAAa;AAC9C,WAAO,OAAO,MAAM;AAAA,MAClB,iBAAkB;AAChB,YAAI,CAAC,KAAK,eAAe,YAAY;AACnC,cAAI,KAAK,eAAe,SAAS;AAC/B,iBAAK,kBAAkB;AAAA,UACzB,OAAO;AACL,iBAAK,eAAe,UAAU;AAAA,UAChC;AAAA,QACF;AACA,eAAO,MAAM;AAAA,MACf;AAAA,MACA,aAAc,UAAU;AACtB,aAAK,mBAAmB,MAAM,WAAW;AAGzC,cAAM,UAAU;AAChB,YAAI,UAAU;AACZ,gBAAM,UAAU;AAAA,QAClB;AAIA,aAAK,aAAa,MAAM,CAAC,QAAsB;AAAA,MACjD;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,UAAW;AACT,QAAI,QAAQ,KAAK;AACjB,QAAI,CAAC,MAAM,cAAc,MAAM,oBAAoB;AACjD,oBAAc,MAAM,oBAAoB,SAAU,IAAI,YAAY;AAChE,YAAI,WAAW,SAAS;AACtB,qBAAW,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,MAAM,4BAA4B,MAAM,yBAAyB;AACnE,4BAAsB,MAAM,0BAA0B,MAAM,uBAAuB;AAAA,IACrF;AACA,WAAO,OAAO,OAAO,cAAc;AAAA,EACrC;AACF;AAEA,IAAI,wBAAwB;AAAA,EAC1B,sBAAuB,OAAO;AAE5B,QAAI,qBAAqB,MACvB,QAAQ,mBAAmB;AAC7B,QAAI,CAAC,MAAM,cAAc,MAAM,cAAc,UAAU,UAAU;AAC/D,YAAM,aAAa;AACnB,UAAI,MAAM,WAAW,mBAAmB,wBAAwB,GAAG;AACjE,cAAM,qBAAqB;AAC3B,cAAM,oBAAoB;AAC1B,YAAI,mBAAmB,kBAAkB,GAAG;AAC1C,6BAAmB,cAAc;AAAA,QACnC;AAAA,MACF,OAAO;AAEL,YAAI,oBAAoB,CAAC;AACzB,sBAAc,MAAM,oBAAoB,SAAU,IAAI,YAAY;AAChE,4BAAkB,WAAW,UAAU;AAAA,QACzC,CAAC;AAED,qBAAa,mBAAmB,SAAU,IAAI,OAAO;AACnD,cAAI,aAAa,MAAM,mBAAmB,KACxC,eAAe,mBAAmB,sBAAsB,WAAW,OAAO;AAC5E,uBAAa,SAAS;AACtB,uBAAa,WAAW,WAAW;AACnC,gBAAM,mBAAmB,MAAM;AAAA,QACjC,CAAC;AAGD,YAAI,mBAAmB,wBAAwB,GAAG;AAChD,cAAI,mBAAmB,kBAAkB,GAAG;AAC1C,+BAAmB,cAAc;AAAA,UACnC;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,MAAM,YAAY;AACrB,2BAAmB,kBAAkB,MAAM,aAAa,OAAO;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA,EACA,wBAAyB,OAAO;AAC9B,QAAI,QAAQ,KAAK;AACjB,QAAI,CAAC,MAAM,cAAc,UAAU,YAAY,CAAC,KAAK,yBAAyB,QAAQ,GAAG;AACvF,oBAAc,MAAM,oBAAoB,SAAU,IAAI,YAAY;AAChE,YAAI,WAAW,SAAS;AACtB,gBAAM,mBAAmB,MAAM;AAAA,YAC7B,SAAS,WAAW;AAAA,YACpB,QAAQ,WAAW;AAAA,YACnB,UAAU,WAAW;AAAA,UACvB;AACA,qBAAW,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AACD,YAAM,aAAa;AACnB,WAAK,kBAAkB,QAAW,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,aAAc;AAIZ,QAAI,QAAQ,KAAK;AACjB,QAAI,MAAM,cAAe,OAAM,WAAW,KAAK,wBAAwB,IAAI;AACzE,WAAK,kBAAkB;AAAA,IACzB;AACA,WAAO,aAAa,GAAG,WAAW,KAAK,IAAI;AAAA,EAC7C;AACF;AAEA,IAAI,2BAA2B;AAAA,EAC7B,sBAAuB,OAAO;AAE5B,QAAI,UAAU,YAAY,UAAU,gBAAgB;AAClD,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;AAEA,OAAO,eAAe,SAAS,IAAI,aAAa,EAAE;AAGlD,IAAI,YAAY,WAAW;AAC3B,SAAS,GAAG,aAAa;AAGzB,WAAW,qBAAqB,IAAI,QAAQ;AAErC,oBAAqB,UAAU;AACpC,SAAQ,OAAO,aAAa,cAAc,SAAS,eAAe;AACpE;AAEO,wBAAyB,UAAU;AACxC,SAAO,WAAW,QAAQ,KAAK,SAAS,kBAAkB,SAAS,eAAe;AACpF;AAEO,sBAAuB,4BAA4B,yBAAyB;AACjF,MAAI,OAAO,+BAA+B,YAAY;AACpD,WAAO,SAAS,4BAA4B,yBAAyB,EAAC,QAAQ,KAAI,CAAC;AAAA,EACrF,OAAO;AACL,iCAA6B,OAAO,CAAC,GAAG,0BAA0B;AAClE,+BAA2B,OAAO;AAClC,WAAO,SAAS,4BAA4B,uBAAuB;AAAA,EACrE;AACF;;;ACliBO,0BAA2B,QAAQ,SAAS;AAKjD,SAAO,qBAAqB;AAI5B,MAAI,uBAAuB;AAC3B,SAAO,SAAS;AAAA,IACd,MAAM;AAAA,IACN,OAAO,SAAU,OAAO;AACtB,mBAAa,oBAAoB;AACjC,6BAAuB,WAAW,WAAY;AAC5C,eAAO,KAAK;AAAA,MACd,GAAG,OAAO;AAAA,IACZ;AAAA,EACF,CAAC;AACH;AAEA,UAAU,WAAW;;;ACjBrB,IAAM,YAAY,OAAO,yBAAyB;AAClD,IAAM,aAAa,OAAO,8BAA8B;AAExD,sBAAuB,QAAO,IAAI;AAChC,SAAO,SAAS;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM,UAAU,KAAK,GAAG,OAAO;AAAA,IAC/B,iBAAiB,qBAAqB,KAAK,GAAG,kBAAkB;AAAA,EAClE,CAAC,EAAE,OAAO,EAAE,UAAU,KAAK,CAAC;AAC9B;AAEA,qBAAsB,QAAQ,MAAM,OAAO,QAAO;AAChD,MAAI,CAAC,OAAO,OAAO;AACjB,UAAM,MAAM,MAAM,QAAQ,KAAK,IAAI,kBAC/B,OAAO,UAAU,aAAa,aAAa,KAAK,MAAM,MAAK,IAC3D;AACJ,WAAO,QAAQ,IAAI,KAAK;AAAA,EAC1B,OAAO;AACL,WAAO,MAAM,KAAK;AAAA,EACpB;AACF;AAEA,wBAAwB,QAAQ,QAAQ,QAAO;AAC7C,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,gBAAY,QAAQ,KAAK,OAAO,MAAM,MAAK;AAAA,EAC7C;AACA,SAAO;AACT;AAEO,eAAgB,QAAQ;AAC7B,QAAM,SAAS,GAAG,YAAY,OAAO;AACrC,SAAO,cAAc;AACrB,QAAM,SAAQ,IAAI,MAAM,WAAY;AAAA,EAAC,GAAG;AAAA,IACtC,IAAK,QAAQ,MAAM;AAAE,aAAO,QAAQ;AAAA,IAAO;AAAA,IAC3C,IAAK,QAAQ,MAAM;AAAE,aAAO,OAAO,OAAO,KAAK;AAAA,IAAE;AAAA,IACjD,IAAK,QAAQ,MAAM,OAAO,UAAU;AAClC,kBAAY,QAAQ,MAAM,OAAO,MAAK;AACtC,aAAO,QAAQ;AACf,aAAO;AAAA,IACT;AAAA,IACA,eAAgB,UAAU;AACxB,aAAO,OAAO;AACd,aAAO,OAAO,OAAO;AAAA,IACvB;AAAA,IACA,MAAO,QAAQ,SAAS,CAAC,QAAQ;AAC/B,UAAI,OAAO;AACT,uBAAe,QAAQ,OAAO,MAAK;AACnC,eAAO,OAAO,OAAO,QAAQ,KAAK;AAAA,MACpC;AACA,aAAO;AAAA,IACT;AAAA,IACA,iBAAkB;AAAE,aAAO,OAAO,eAAe,MAAM;AAAA,IAAE;AAAA,IACzD,eAAgB,QAAQ,OAAO;AAAE,aAAO,OAAO,eAAe,QAAQ,KAAK;AAAA,IAAE;AAAA,IAC7E,eAAgB,QAAQ,MAAM,MAAM;AAAE,aAAO,OAAO,eAAe,QAAQ,MAAM,IAAI;AAAA,IAAE;AAAA,IACvF,oBAAqB;AAAE,aAAO,OAAO,kBAAkB,MAAM;AAAA,IAAE;AAAA,IAC/D,eAAgB;AAAE,aAAO,OAAO,aAAa,MAAM;AAAA,IAAE;AAAA,IACrD,UAAW;AACT,aAAO;AAAA,QAAC,GAAG,OAAO,oBAAoB,MAAM;AAAA,QACpC,GAAG,OAAO,sBAAsB,MAAM;AAAA,MAAC;AAAA,IACjD;AAAA,EACF,CAAC;AACD,iBAAe,QAAQ,QAAQ,MAAK;AACpC,SAAO;AACT;AAEO,uBAAwB,SAAS,MAAM;AAAE,SAAO,QAAQ,YAAY;AAAM;AAC1E,eAAe,SAAS,MAAM;AAAE,SAAO,cAAc,SAAS,IAAI,EAAE,KAAK;AAAE;AAC3E,mBAAoB,SAAS;AAAE,SAAO,aAAa;AAAQ;AAElE,OAAO,OAAO,OAAO,EAAE,eAAe,aAAM,UAAU,CAAC;;;AC9EvD,gBAAiB,WAAW,SAAS,SAAS;AAC5C,QAAM,cAAa,aAAa,WAAW,OAAO,EAAE,OAAO,EAAC,QAAQ,SAAQ,CAAC;AAC7E,QAAM,eAAe,YAAW,UAAU,WAAS;AACjD,QAAI,OAAO;AACT,mBAAa,QAAQ;AACrB,cAAQ,KAAK;AAAA,IACf;AAAA,EACF,CAAC;AAED,cAAW,kBAAkB,YAAW,KAAK,CAAC;AAC9C,SAAO;AACT;AAEO,cAAe,WAAW,UAAU,SAAS;AAClD,QAAM,SAAS,OAAO,KAAK,MAAM,WAAW,OAAO;AACnD,SAAO,WAAW,OAAO,SAAS,KAAK,OAAO,CAAC,IAAI,IAAI,QAAQ,MAAM;AACvE;",
6
6
  "names": []
7
7
  }
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 ESM
1
+ // @tko/computed 🥊 4.0.0-beta1.3 ESM
2
2
  export {
3
3
  computed,
4
4
  isComputed,
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 MJS
1
+ // @tko/computed 🥊 4.0.0-beta1.3 MJS
2
2
  export {
3
3
  computed,
4
4
  isComputed,
package/dist/proxy.js CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 ESM
1
+ // @tko/computed 🥊 4.0.0-beta1.3 ESM
2
2
  import {
3
3
  observable,
4
4
  observableArray,
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 ESM
1
+ // @tko/computed 🥊 4.0.0-beta1.3 ESM
2
2
  import {
3
3
  extenders
4
4
  } from "@tko/observable";
package/dist/when.js CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/computed 🥊 4.0.0-beta1.0 ESM
1
+ // @tko/computed 🥊 4.0.0-beta1.3 ESM
2
2
  import {
3
3
  pureComputed
4
4
  } from "./computed";
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.0.0-beta1.0",
2
+ "version": "4.0.0-beta1.3",
3
3
  "name": "@tko/computed",
4
4
  "description": "TKO Computed Observables",
5
5
  "module": "dist/computed.js",
@@ -8,8 +8,8 @@
8
8
  "helpers/"
9
9
  ],
10
10
  "dependencies": {
11
- "@tko/observable": "^4.0.0-beta1.0",
12
- "@tko/utils": "^4.0.0-beta1.0",
11
+ "@tko/observable": "^4.0.0-beta1.3",
12
+ "@tko/utils": "^4.0.0-beta1.3",
13
13
  "tslib": "^2.2.0"
14
14
  },
15
15
  "repository": {
@@ -44,5 +44,5 @@
44
44
  },
45
45
  "./helpers/*": "./helpers/*"
46
46
  },
47
- "gitHead": "99114c4deded3fc5dbddd5c7c9c63c845a18263b"
47
+ "gitHead": "a8843acb8ae085915115e53a4e057b30731c635e"
48
48
  }