Drop unused Knockout functionality

Especially dropped memoization for improved speed.
This commit is contained in:
djmaze 2020-10-13 14:56:23 +02:00
parent e7975d4f82
commit 1e735bf4a9
30 changed files with 206 additions and 814 deletions

View file

@ -7,7 +7,7 @@ knockoutDebugCallback([
'src/utils.domData.js',
'src/utils.domNodeDisposal.js',
'src/utils.domManipulation.js',
'src/memoization.js',
// 'src/memoization.js',
'src/tasks.js',
'src/subscribables/extenders.js',
'src/subscribables/subscribable.js',
@ -16,7 +16,7 @@ knockoutDebugCallback([
'src/subscribables/observableArray.js',
'src/subscribables/observableArray.changeTracking.js',
'src/subscribables/dependentObservable.js',
'src/subscribables/observableUtils.js',
// 'src/subscribables/observableUtils.js',
'src/binding/selectExtensions.js',
'src/binding/expressionRewriting.js',
'src/virtualElements.js',
@ -49,7 +49,7 @@ knockoutDebugCallback([
// click depends on event - The order matters for specs, which includes each file individually
'src/binding/defaultBindings/click.js',
'src/templating/templateEngine.js',
'src/templating/templateRewriting.js',
// 'src/templating/templateRewriting.js',
'src/templating/templateSources.js',
'src/templating/templating.js',
'src/binding/editDetection/compareArrays.js',

View file

@ -34,27 +34,27 @@ ko.version = "3.5.1-sm";
ko.exportSymbol('version', ko.version);
ko.utils = (() => {
const
arrayCall = (name, arr, p1, p2) => Array.prototype[name].call(arr, p1, p2),
objectForEach = (obj, action) => obj && Object.entries(obj).forEach(prop => action(prop[0], prop[1])),
extend = (target, source) => {
source && Object.entries(source).forEach(prop => target[prop[0]] = prop[1]);
return target;
},
setPrototypeOf = (obj, proto) => {
obj.__proto__ = proto;
return obj;
},
// For details on the pattern for changing node classes
// see: https://github.com/knockout/knockout/issues/1597
toggleDomNodeCssClass = (node, classNames, shouldHaveClass) => {
if (classNames) {
var addOrRemoveFn = shouldHaveClass ? 'add' : 'remove';
classNames.split(/\s+/).forEach(className =>
node.classList[addOrRemoveFn](className)
);
}
};
const
arrayCall = (name, arr, p1, p2) => Array.prototype[name].call(arr, p1, p2),
objectForEach = (obj, action) => obj && Object.entries(obj).forEach(prop => action(prop[0], prop[1])),
extend = (target, source) => {
source && Object.entries(source).forEach(prop => target[prop[0]] = prop[1]);
return target;
},
setPrototypeOf = (obj, proto) => {
obj.__proto__ = proto;
return obj;
},
// For details on the pattern for changing node classes
// see: https://github.com/knockout/knockout/issues/1597
toggleDomNodeCssClass = (node, classNames, shouldHaveClass) => {
if (classNames) {
var addOrRemoveFn = shouldHaveClass ? 'add' : 'remove';
classNames.split(/\s+/).forEach(className =>
node.classList[addOrRemoveFn](className)
);
}
};
var canSetPrototype = ({ __proto__: [] } instanceof Array);
@ -65,13 +65,8 @@ ko.utils = (() => {
arrayIndexOf: (array, item) =>
arrayCall('indexOf', array, item),
arrayFirst: (array, predicate, predicateOwner) => {
for (var i = 0, j = array.length; i < j; i++) {
if (predicate.call(predicateOwner, array[i], i, array))
return array[i];
}
return undefined;
},
arrayFirst: (array, predicate, predicateOwner) =>
arrayCall('find', array, (e, i, a) => predicate.call(predicateOwner, e, i, a)),
arrayRemoveItem: (array, itemToRemove) => {
var index = ko.utils.arrayIndexOf(array, itemToRemove);
@ -140,21 +135,6 @@ ko.utils = (() => {
childNodes && domNode.append.apply(domNode, childNodes);
},
replaceDomNodes: (nodeToReplaceOrNodeArray, newNodesArray) => {
var nodesToReplaceArray = nodeToReplaceOrNodeArray.nodeType
? [nodeToReplaceOrNodeArray] : nodeToReplaceOrNodeArray;
if (nodesToReplaceArray.length > 0) {
var insertionPoint = nodesToReplaceArray[0],
parent = insertionPoint.parentNode,
i, j;
for (i = 0, j = newNodesArray.length; i < j; i++)
parent.insertBefore(newNodesArray[i], insertionPoint);
for (i = 0, j = nodesToReplaceArray.length; i < j; i++) {
ko.removeNode(nodesToReplaceArray[i]);
}
}
},
fixUpContinuousNodeArray: (continuousNodeArray, parentNode) => {
// Before acting on a set of nodes that were previously outputted by a template function, we have to reconcile
// them against what is in the DOM right now. It may be that some of the nodes have already been removed, or that
@ -200,7 +180,7 @@ ko.utils = (() => {
return continuousNodeArray;
},
stringTrim: string => string === null || string === undefined ? '' :
stringTrim: string => string == null ? '' :
string.trim ?
string.trim() :
string.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ''),
@ -217,8 +197,6 @@ ko.utils = (() => {
domNodeIsAttachedToDocument: node => ko.utils.domNodeIsContainedBy(node, node.ownerDocument.documentElement),
anyDomNodeIsAttachedToDocument: nodes => !!ko.utils.arrayFirst(nodes, ko.utils.domNodeIsAttachedToDocument),
// For HTML elements, tagName will always be upper case; for XHTML elements, it'll be lower case.
// Possible future optimization: If we know it's an element from an XHTML document (not HTML),
// we don't need to do the .toLowerCase() as it will always be lower case anyway.
@ -261,43 +239,14 @@ ko.utils = (() => {
toggleDomNodeCssClass: toggleDomNodeCssClass,
setTextContent: (element, textContent) => {
var value = ko.utils.unwrapObservable(textContent);
if ((value === null) || (value === undefined))
value = "";
// We need there to be exactly one child: a text node.
// If there are no children, more than one, or if it's not a text node,
// we'll clear everything and create a single text node.
var innerTextNode = ko.virtualElements.firstChild(element);
if (!innerTextNode || innerTextNode.nodeType != 3 || ko.virtualElements.nextSibling(innerTextNode)) {
ko.virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);
} else {
innerTextNode.data = value;
}
},
setTextContent: (element, textContent) =>
element.textContent = ko.utils.unwrapObservable(textContent) || "",
makeArray: arrayLikeObject => Array['from'](arrayLikeObject)
}
})();
ko.exportSymbol('utils', ko.utils);
ko.exportSymbol('utils.arrayForEach', ko.utils.arrayForEach);
ko.exportSymbol('utils.arrayFirst', ko.utils.arrayFirst);
ko.exportSymbol('utils.arrayIndexOf', ko.utils.arrayIndexOf);
ko.exportSymbol('utils.arrayPushAll', ko.utils.arrayPushAll);
ko.exportSymbol('utils.arrayRemoveItem', ko.utils.arrayRemoveItem);
ko.exportSymbol('utils.cloneNodes', ko.utils.cloneNodes);
ko.exportSymbol('utils.extend', ko.utils.extend);
ko.exportSymbol('utils.objectMap', ko.utils.objectMap);
ko.exportSymbol('utils.peekObservable', ko.utils.peekObservable);
ko.exportSymbol('utils.registerEventHandler', ko.utils.registerEventHandler);
ko.exportSymbol('utils.stringifyJson', ko.utils.stringifyJson);
ko.exportSymbol('utils.toggleDomNodeCssClass', ko.utils.toggleDomNodeCssClass);
ko.exportSymbol('utils.triggerEvent', ko.utils.triggerEvent);
ko.exportSymbol('utils.unwrapObservable', ko.utils.unwrapObservable);
ko.exportSymbol('utils.objectForEach', ko.utils.objectForEach);
ko.exportSymbol('utils.setTextContent', ko.utils.setTextContent);
ko.exportSymbol('unwrap', ko.utils.unwrapObservable); // Convenient shorthand, because this is used so commonly
ko.utils.domData = new (function () {
@ -343,9 +292,6 @@ ko.utils.domData = new (function () {
};
})();
ko.exportSymbol('utils.domData', ko.utils.domData);
ko.exportSymbol('utils.domData.clear', ko.utils.domData.clear); // Exporting only so specs can clear up after themselves fully
ko.utils.domNodeDisposal = new (function () {
var domDataKey = ko.utils.domData.nextKey();
var cleanableNodeTypes = { 1: true, 8: true, 9: true }; // Element, Comment, Document
@ -435,11 +381,8 @@ ko.utils.domNodeDisposal = new (function () {
})();
ko.cleanNode = ko.utils.domNodeDisposal.cleanNode; // Shorthand name for convenience
ko.removeNode = ko.utils.domNodeDisposal.removeNode; // Shorthand name for convenience
ko.exportSymbol('cleanNode', ko.cleanNode);
ko.exportSymbol('removeNode', ko.removeNode);
ko.exportSymbol('utils.domNodeDisposal', ko.utils.domNodeDisposal);
ko.exportSymbol('utils.domNodeDisposal.addDisposeCallback', ko.utils.domNodeDisposal.addDisposeCallback);
ko.exportSymbol('utils.domNodeDisposal.removeDisposeCallback', ko.utils.domNodeDisposal.removeDisposeCallback);
(() => {
var none = [0, "", ""],
table = [1, "<table>", "</table>"],
@ -520,79 +463,6 @@ ko.exportSymbol('utils.domNodeDisposal.removeDisposeCallback', ko.utils.domNodeD
}
};
})();
ko.exportSymbol('utils.parseHtmlFragment', ko.utils.parseHtmlFragment);
ko.exportSymbol('utils.setHtml', ko.utils.setHtml);
ko.memoization = (function () {
var memos = {};
function randomMax8HexChars() {
return (((1 + Math.random()) * 0x100000000) | 0).toString(16).substring(1);
}
function generateRandomId() {
return randomMax8HexChars() + randomMax8HexChars();
}
function findMemoNodes(rootNode, appendToArray) {
if (!rootNode)
return;
if (rootNode.nodeType == 8) {
var memoId = ko.memoization.parseMemoText(rootNode.nodeValue);
if (memoId != null)
appendToArray.push({ domNode: rootNode, memoId: memoId });
} else if (rootNode.nodeType == 1) {
for (var i = 0, childNodes = rootNode.childNodes, j = childNodes.length; i < j; i++)
findMemoNodes(childNodes[i], appendToArray);
}
}
return {
memoize: callback => {
if (typeof callback != "function")
throw new Error("You can only pass a function to ko.memoization.memoize()");
var memoId = generateRandomId();
memos[memoId] = callback;
return "<!--[ko_memo:" + memoId + "]-->";
},
unmemoize: (memoId, callbackParams) => {
var callback = memos[memoId];
if (callback === undefined)
throw new Error("Couldn't find any memo with ID " + memoId + ". Perhaps it's already been unmemoized.");
try {
callback.apply(null, callbackParams || []);
return true;
}
finally { delete memos[memoId]; }
},
unmemoizeDomNodeAndDescendants: (domNode, extraCallbackParamsArray) => {
var memos = [];
findMemoNodes(domNode, memos);
for (var i = 0, j = memos.length; i < j; i++) {
var node = memos[i].domNode;
var combinedParams = [node];
if (extraCallbackParamsArray)
ko.utils.arrayPushAll(combinedParams, extraCallbackParamsArray);
ko.memoization.unmemoize(memos[i].memoId, combinedParams);
node.nodeValue = ""; // Neuter this node so we don't try to unmemoize it again
if (node.parentNode)
node.parentNode.removeChild(node); // If possible, erase it totally (not always possible - someone else might just hold a reference to it then call unmemoizeDomNodeAndDescendants again)
}
},
parseMemoText: memoText => {
var match = memoText.match(/^\[ko_memo:(.*?)\]$/);
return match ? match[1] : null;
}
};
})();
ko.exportSymbol('memoization', ko.memoization);
ko.exportSymbol('memoization.memoize', ko.memoization.memoize);
ko.exportSymbol('memoization.unmemoize', ko.memoization.unmemoize);
ko.exportSymbol('memoization.parseMemoText', ko.memoization.parseMemoText);
ko.exportSymbol('memoization.unmemoizeDomNodeAndDescendants', ko.memoization.unmemoizeDomNodeAndDescendants);
ko.tasks = (() => {
var taskQueue = [],
taskQueueLength = 0,
@ -663,8 +533,6 @@ ko.tasks = (() => {
})();
ko.exportSymbol('tasks', ko.tasks);
ko.exportSymbol('tasks.schedule', ko.tasks.schedule);
//ko.exportSymbol('tasks.cancel', ko.tasks.cancel); "cancel" isn't minified
ko.extenders = {
'throttle': (target, timeout) => {
// Throttling means two things:
@ -849,16 +717,16 @@ var ko_subscribable_fn = {
if (!self._origNotifySubscribers) {
self._origNotifySubscribers = self["notifySubscribers"];
// Moved out of "limit" to avoid the extra closure
// Moved out of "limit" to avoid the extra closure
self["notifySubscribers"] = function(value, event) {
if (!event || event === defaultEvent) {
this._limitChange(value);
} else if (event === 'beforeChange') {
this._limitBeforeChange(value);
} else {
this._origNotifySubscribers(value, event);
}
}
if (!event || event === defaultEvent) {
this._limitChange(value);
} else if (event === 'beforeChange') {
this._limitBeforeChange(value);
} else {
this._origNotifySubscribers(value, event);
}
}
}
var finish = limitFunction(() => {
@ -945,9 +813,6 @@ ko.subscribable['fn'] = ko_subscribable_fn;
ko.isSubscribable = instance =>
instance != null && typeof instance.subscribe == "function" && typeof instance["notifySubscribers"] == "function";
ko.exportSymbol('subscribable', ko.subscribable);
ko.exportSymbol('isSubscribable', ko.isSubscribable);
ko.computedContext = ko.dependencyDetection = (() => {
var outerFrames = [],
currentFrame,
@ -1005,14 +870,6 @@ ko.computedContext = ko.dependencyDetection = (() => {
}
};
})();
ko.exportSymbol('computedContext', ko.computedContext);
ko.exportSymbol('computedContext.getDependenciesCount', ko.computedContext.getDependenciesCount);
ko.exportSymbol('computedContext.getDependencies', ko.computedContext.getDependencies);
ko.exportSymbol('computedContext.isInitial', ko.computedContext.isInitial);
ko.exportSymbol('computedContext.registerDependency', ko.computedContext.registerDependency);
ko.exportSymbol('ignoreDependencies', ko.ignoreDependencies = ko.dependencyDetection.ignore);
var observableLatestValue = Symbol('_latestValue');
ko.observable = initialValue => {
@ -1086,11 +943,8 @@ ko.isWriteableObservable = instance => {
ko.exportSymbol('observable', ko.observable);
ko.exportSymbol('isObservable', ko.isObservable);
ko.exportSymbol('isWriteableObservable', ko.isWriteableObservable);
ko.exportSymbol('observable.fn', observableFn);
ko.exportProperty(observableFn, 'peek', observableFn.peek);
ko.exportProperty(observableFn, 'valueHasMutated', observableFn.valueHasMutated);
ko.exportProperty(observableFn, 'valueWillMutate', observableFn.valueWillMutate);
ko.observableArray = initialValues => {
initialValues = initialValues || [];
@ -1188,7 +1042,6 @@ ko.isObservableArray = instance => {
};
ko.exportSymbol('observableArray', ko.observableArray);
ko.exportSymbol('isObservableArray', ko.isObservableArray);
var arrayChangeEventName = 'arrayChange';
ko.extenders['trackArrayChanges'] = (target, options) => {
// Use the provided options--each call to trackArrayChanges overwrites the previously set options
@ -1840,19 +1693,9 @@ if (ko.utils.canSetPrototype) {
var protoProp = ko.observable.protoProperty; // == "__ko_proto__"
computedFn[protoProp] = ko.computed;
ko.isComputed = instance => (typeof instance == 'function' && instance[protoProp] === computedFn[protoProp]);
ko.isPureComputed = instance => ko.isComputed(instance) && instance[computedState] && instance[computedState].pure;
ko.exportSymbol('computed', ko.computed);
ko.exportSymbol('isComputed', ko.isComputed);
ko.exportSymbol('isPureComputed', ko.isPureComputed);
ko.exportSymbol('computed.fn', computedFn);
ko.exportProperty(computedFn, 'peek', computedFn.peek);
ko.exportProperty(computedFn, 'dispose', computedFn.dispose);
ko.exportProperty(computedFn, 'isActive', computedFn.isActive);
ko.exportProperty(computedFn, 'getDependenciesCount', computedFn.getDependenciesCount);
ko.exportProperty(computedFn, 'getDependencies', computedFn.getDependencies);
ko.pureComputed = (evaluatorFunctionOrOptions, evaluatorFunctionTarget) => {
if (typeof evaluatorFunctionOrOptions === 'function') {
@ -1862,25 +1705,6 @@ ko.pureComputed = (evaluatorFunctionOrOptions, evaluatorFunctionTarget) => {
evaluatorFunctionOrOptions['pure'] = true;
return ko.computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget);
};
ko.exportSymbol('pureComputed', ko.pureComputed);
ko.when = (predicate, callback, context) => {
function kowhen (resolve) {
var observable = ko.pureComputed(predicate, context).extend({notify:'always'});
var subscription = observable.subscribe(value => {
if (value) {
subscription.dispose();
resolve(value);
}
});
// In case the initial value is true, process it right away
observable['notifySubscribers'](observable.peek());
return subscription;
}
return callback ? kowhen(callback.bind(context)) : new Promise(kowhen);
};
ko.exportSymbol('when', ko.when);
(() => {
var hasDomDataExpandoProperty = '__ko__hasDomDataOptionValue__';
@ -1943,10 +1767,6 @@ ko.exportSymbol('when', ko.when);
}
};
})();
ko.exportSymbol('selectExtensions', ko.selectExtensions);
ko.exportSymbol('selectExtensions.readValue', ko.selectExtensions.readValue);
ko.exportSymbol('selectExtensions.writeValue', ko.selectExtensions.writeValue);
ko.expressionRewriting = (() => {
var javaScriptReservedWords = ["true", "false", "null", "undefined"];
@ -2138,11 +1958,6 @@ ko.expressionRewriting = (() => {
}
};
})();
ko.exportSymbol('expressionRewriting', ko.expressionRewriting);
ko.exportSymbol('expressionRewriting.bindingRewriteValidators', ko.expressionRewriting.bindingRewriteValidators);
ko.exportSymbol('expressionRewriting.parseObjectLiteral', ko.expressionRewriting.parseObjectLiteral);
ko.exportSymbol('expressionRewriting.preProcessBindings', ko.expressionRewriting.preProcessBindings);
(() => {
// "Virtual elements" is an abstraction on top of the usual DOM API which understands the notion that comment nodes
// may be used to represent hierarchy (in addition to the DOM's natural hierarchy).
@ -2288,14 +2103,6 @@ ko.exportSymbol('expressionRewriting.preProcessBindings', ko.expressionRewriting
}
};
})();
ko.exportSymbol('virtualElements', ko.virtualElements);
ko.exportSymbol('virtualElements.allowedBindings', ko.virtualElements.allowedBindings);
ko.exportSymbol('virtualElements.emptyNode', ko.virtualElements.emptyNode);
//ko.exportSymbol('virtualElements.firstChild', ko.virtualElements.firstChild); // firstChild is not minified
ko.exportSymbol('virtualElements.insertAfter', ko.virtualElements.insertAfter);
//ko.exportSymbol('virtualElements.nextSibling', ko.virtualElements.nextSibling); // nextSibling is not minified
ko.exportSymbol('virtualElements.prepend', ko.virtualElements.prepend);
ko.exportSymbol('virtualElements.setDomNodeChildren', ko.virtualElements.setDomNodeChildren);
(function() {
var defaultBindingAttributeName = "data-bind";
@ -2367,8 +2174,6 @@ ko.exportSymbol('virtualElements.setDomNodeChildren', ko.virtualElements.setDomN
return new Function("$context", "$element", functionBody);
}
})();
ko.exportSymbol('bindingProvider', ko.bindingProvider);
(() => {
// Hide or don't minify context properties, see https://github.com/knockout/knockout/issues/2294
var contextSubscribable = Symbol('_subscribable');
@ -2921,13 +2726,8 @@ ko.exportSymbol('bindingProvider', ko.bindingProvider);
};
ko.exportSymbol('bindingHandlers', ko.bindingHandlers);
ko.exportSymbol('bindingEvent', ko.bindingEvent);
ko.exportSymbol('bindingEvent.subscribe', ko.bindingEvent.subscribe);
ko.exportSymbol('bindingEvent.startPossiblyAsyncContentBinding', ko.bindingEvent.startPossiblyAsyncContentBinding);
ko.exportSymbol('applyBindings', ko.applyBindings);
ko.exportSymbol('applyBindingsToDescendants', ko.applyBindingsToDescendants);
ko.exportSymbol('applyBindingAccessorsToNode', ko.applyBindingAccessorsToNode);
ko.exportSymbol('applyBindingsToNode', ko.applyBindingsToNode);
ko.exportSymbol('dataFor', ko.dataFor);
})();
(() => {
@ -3067,8 +2867,6 @@ ko.exportSymbol('bindingProvider', ko.bindingProvider);
ko.components['loaders'] = [];
ko.exportSymbol('components', ko.components);
ko.exportSymbol('components.get', ko.components.get);
ko.exportSymbol('components.clearCachedDefinition', ko.components.clearCachedDefinition);
})();
(() => {
@ -3234,12 +3032,6 @@ ko.exportSymbol('bindingProvider', ko.bindingProvider);
}
ko.exportSymbol('components.register', ko.components.register);
ko.exportSymbol('components.isRegistered', ko.components.isRegistered);
ko.exportSymbol('components.unregister', ko.components.unregister);
// Expose the default loader so that developers can directly ask it for configuration
// or to resolve configuration
ko.exportSymbol('components.defaultLoader', ko.components.defaultLoader);
// By default, the default loader is the only registered component loader
ko.components['loaders'].push(ko.components.defaultLoader);
@ -3468,15 +3260,6 @@ ko.bindingHandlers['attr'] = {
};
var classesWrittenByBindingKey = '__ko__cssValue';
ko.bindingHandlers['class'] = {
'update': (element, valueAccessor) => {
var value = ko.utils.stringTrim(ko.utils.unwrapObservable(valueAccessor()));
ko.utils.toggleDomNodeCssClass(element, element[classesWrittenByBindingKey], false);
element[classesWrittenByBindingKey] = value;
ko.utils.toggleDomNodeCssClass(element, value, true);
}
};
ko.bindingHandlers['css'] = {
'update': (element, valueAccessor) => {
var value = ko.utils.unwrapObservable(valueAccessor());
@ -3486,7 +3269,10 @@ ko.bindingHandlers['css'] = {
ko.utils.toggleDomNodeCssClass(element, className, shouldHaveClass);
});
} else {
ko.bindingHandlers['class']['update'](element, valueAccessor);
value = ko.utils.stringTrim(value);
ko.utils.toggleDomNodeCssClass(element, element[classesWrittenByBindingKey], false);
element[classesWrittenByBindingKey] = value;
ko.utils.toggleDomNodeCssClass(element, value, true);
}
}
};
@ -4225,74 +4011,6 @@ ko.templateEngine.prototype['rewriteTemplate'] = function (template, rewriterCal
templateSource['text'](rewritten);
templateSource['data']("isRewritten", true);
};
ko.exportSymbol('templateEngine', ko.templateEngine);
ko.templateRewriting = (() => {
var memoizeDataBindingAttributeSyntaxRegex = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi;
var memoizeVirtualContainerBindingSyntaxRegex = /<!--\s*ko\b\s*([\s\S]*?)\s*-->/g;
function validateDataBindValuesForRewriting(keyValueArray) {
var allValidators = ko.expressionRewriting.bindingRewriteValidators;
for (var i = 0; i < keyValueArray.length; i++) {
var key = keyValueArray[i]['key'];
if (Object.prototype.hasOwnProperty.call(allValidators, key)) {
var validator = allValidators[key];
if (typeof validator === "function") {
var possibleErrorMessage = validator(keyValueArray[i]['value']);
if (possibleErrorMessage)
throw new Error(possibleErrorMessage);
} else if (!validator) {
throw new Error("This template engine does not support the '" + key + "' binding within its templates");
}
}
}
}
function constructMemoizedTagReplacement(dataBindAttributeValue, tagToRetain, nodeName, templateEngine) {
var dataBindKeyValueArray = ko.expressionRewriting.parseObjectLiteral(dataBindAttributeValue);
validateDataBindValuesForRewriting(dataBindKeyValueArray);
var rewrittenDataBindAttributeValue = ko.expressionRewriting.preProcessBindings(dataBindKeyValueArray, {'valueAccessors':true});
// For no obvious reason, Opera fails to evaluate rewrittenDataBindAttributeValue unless it's wrapped in an additional
// anonymous function, even though Opera's built-in debugger can evaluate it anyway. No other browser requires this
// extra indirection.
var applyBindingsToNextSiblingScript =
"ko.__tr_ambtns(function($context,$element){return(function(){return{ " + rewrittenDataBindAttributeValue + " } })()},'" + nodeName.toLowerCase() + "')";
return templateEngine['createJavaScriptEvaluatorBlock'](applyBindingsToNextSiblingScript) + tagToRetain;
}
return {
ensureTemplateIsRewritten: (template, templateEngine, templateDocument) => {
if (!templateEngine['isTemplateRewritten'](template, templateDocument))
templateEngine['rewriteTemplate'](template, htmlString =>
ko.templateRewriting.memoizeBindingAttributeSyntax(htmlString, templateEngine)
, templateDocument);
},
memoizeBindingAttributeSyntax: (htmlString, templateEngine) => {
return htmlString.replace(memoizeDataBindingAttributeSyntaxRegex, (...args) =>
constructMemoizedTagReplacement(/* dataBindAttributeValue: */ args[4], /* tagToRetain: */ args[1], /* nodeName: */ args[2], templateEngine)
).replace(memoizeVirtualContainerBindingSyntaxRegex, (...args) =>
constructMemoizedTagReplacement(/* dataBindAttributeValue: */ args[1], /* tagToRetain: */ "<!-- ko -->", /* nodeName: */ "#comment", templateEngine)
);
},
applyMemoizedBindingsToNextSibling: (bindings, nodeName) => {
return ko.memoization.memoize((domNode, bindingContext) => {
var nodeToBind = domNode.nextSibling;
if (nodeToBind && nodeToBind.nodeName.toLowerCase() === nodeName) {
ko.applyBindingAccessorsToNode(nodeToBind, bindings, bindingContext);
}
});
}
}
})();
// Exported only because it has to be referenced by string lookup from within rewritten template
ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextSibling);
(() => {
// A template source represents a read/write way of accessing a template. This is to eliminate the need for template loading/saving
// logic to be duplicated in every template engine (and means they can all work with anonymous templates, etc.)
@ -4420,10 +4138,6 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
var valueToWrite = arguments[0];
setTemplateDomData(this.domElement, {textData: valueToWrite});
};
ko.exportSymbol('templateSources', ko.templateSources);
ko.exportSymbol('templateSources.domElement', ko.templateSources.domElement);
ko.exportSymbol('templateSources.anonymousTemplate', ko.templateSources.anonymousTemplate);
})();
(function () {
var _templateEngine;
@ -4488,10 +4202,6 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
if (node.nodeType === 1 || node.nodeType === 8)
ko.applyBindings(bindingContext, node);
});
invokeForEachNodeInContinuousRange(firstNode, lastNode, node => {
if (node.nodeType === 1 || node.nodeType === 8)
ko.memoization.unmemoizeDomNodeAndDescendants(node, [bindingContext]);
});
// Make sure any changes done by applyBindings or unmemoize are reflected in the array
ko.utils.fixUpContinuousNodeArray(continuousNodeArray, parentNode);
@ -4509,7 +4219,10 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
var firstTargetNode = targetNodeOrNodeArray && getFirstNodeFromPossibleArray(targetNodeOrNodeArray);
var templateDocument = (firstTargetNode || template || {}).ownerDocument;
var templateEngineToUse = (options['templateEngine'] || _templateEngine);
ko.templateRewriting.ensureTemplateIsRewritten(template, templateEngineToUse, templateDocument);
if (!templateEngineToUse['isTemplateRewritten'](template, templateDocument)) {
templateEngineToUse['rewriteTemplate'](template, htmlString => htmlString, templateDocument);
}
var renderedNodesArray = templateEngineToUse['renderTemplate'](template, bindingContext, options, templateDocument);
// Loosely check result is an array of DOM nodes
@ -4522,10 +4235,6 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
ko.virtualElements.setDomNodeChildren(targetNodeOrNodeArray, renderedNodesArray);
haveAddedNodesToParent = true;
break;
case "replaceNode":
ko.utils.replaceDomNodes(targetNodeOrNodeArray, renderedNodesArray);
haveAddedNodesToParent = true;
break;
case "ignoreTargetNode": break;
default:
throw new Error("Unknown renderMode: " + renderMode);
@ -4564,7 +4273,6 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
var firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);
var whenToDispose = () => (!firstTargetNode) || !ko.utils.domNodeIsAttachedToDocument(firstTargetNode); // Passive disposal (on next evaluation)
var activelyDisposeWhenNodeIsRemoved = (firstTargetNode && renderMode == "replaceNode") ? firstTargetNode.parentNode : firstTargetNode;
return ko.computed( // So the DOM is automatically updated when any dependency changes
() => {
@ -4575,20 +4283,12 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
var templateName = resolveTemplateName(template, bindingContext['$data'], bindingContext),
renderedNodesArray = executeTemplate(targetNodeOrNodeArray, renderMode, templateName, bindingContext, options);
if (renderMode == "replaceNode") {
targetNodeOrNodeArray = renderedNodesArray;
firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);
}
},
null,
{ disposeWhen: whenToDispose, disposeWhenNodeIsRemoved: activelyDisposeWhenNodeIsRemoved }
{ disposeWhen: whenToDispose, disposeWhenNodeIsRemoved: firstTargetNode }
);
} else {
// We don't yet have a DOM node to evaluate, so use a memo and render the template later when there is a DOM node
return ko.memoization.memoize(domNode =>
ko.renderTemplate(template, dataOrBindingContext, options, domNode, "replaceNode")
);
console.log('no targetNodeOrNodeArray');
}
};
@ -4770,9 +4470,6 @@ ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextS
ko.virtualElements.allowedBindings['template'] = true;
})();
ko.exportSymbol('setTemplateEngine', ko.setTemplateEngine);
ko.exportSymbol('renderTemplate', ko.renderTemplate);
// Go through the items that have been added and deleted and try to find matches between them.
ko.utils.findMovesInArrayComparison = (left, right, limitFailedCompares) => {
if (left.length && right.length) {
@ -4873,8 +4570,6 @@ ko.utils.compareArrays = (() => {
return compareArrays;
})();
ko.exportSymbol('utils.compareArrays', ko.utils.compareArrays);
(() => {
// Objective:
// * Given an input array, a container DOM node, and a function from array elements to arrays of DOM nodes,
@ -4894,7 +4589,17 @@ ko.exportSymbol('utils.compareArrays', ko.utils.compareArrays);
// On subsequent evaluations, just replace the previously-inserted DOM nodes
if (mappedNodes.length > 0) {
ko.utils.replaceDomNodes(mappedNodes, newMappedNodes);
var nodesToReplaceArray = mappedNodes.nodeType ? [mappedNodes] : mappedNodes;
if (nodesToReplaceArray.length > 0) {
var insertionPoint = nodesToReplaceArray[0],
parent = insertionPoint.parentNode,
i, j;
for (i = 0, j = newMappedNodes.length; i < j; i++)
parent.insertBefore(newMappedNodes[i], insertionPoint);
for (i = 0, j = nodesToReplaceArray.length; i < j; i++) {
ko.removeNode(nodesToReplaceArray[i]);
}
}
if (callbackAfterAddingNodes)
ko.dependencyDetection.ignore(callbackAfterAddingNodes, null, [valueToMap, newMappedNodes, index]);
}
@ -4903,7 +4608,7 @@ ko.exportSymbol('utils.compareArrays', ko.utils.compareArrays);
// of which nodes would be deleted if valueToMap was itself later removed
mappedNodes.length = 0;
ko.utils.arrayPushAll(mappedNodes, newMappedNodes);
}, null, { disposeWhenNodeIsRemoved: containerNode, disposeWhen: function() { return !ko.utils.anyDomNodeIsAttachedToDocument(mappedNodes); } });
}, null, { disposeWhenNodeIsRemoved: containerNode, disposeWhen: ()=>!!ko.utils.arrayFirst(mappedNodes, ko.utils.domNodeIsAttachedToDocument) });
return { mappedNodes : mappedNodes, dependentObservable : (dependentObservable.isActive() ? dependentObservable : undefined) };
}
@ -5106,8 +4811,6 @@ ko.exportSymbol('utils.compareArrays', ko.utils.compareArrays);
callCallback(options['afterAdd'], itemsForAfterAddCallbacks);
}
})();
ko.exportSymbol('utils.setDomNodeChildrenFromArrayMapping', ko.utils.setDomNodeChildrenFromArrayMapping);
ko.nativeTemplateEngine = function () {
this['allowTemplateRewriting'] = false;
}
@ -5126,8 +4829,6 @@ ko.nativeTemplateEngine.prototype['renderTemplateSource'] = (templateSource, bin
ko.nativeTemplateEngine.instance = new ko.nativeTemplateEngine();
ko.setTemplateEngine(ko.nativeTemplateEngine.instance);
ko.exportSymbol('nativeTemplateEngine', ko.nativeTemplateEngine);
window['ko'] = koExports;
})(this);
})();

View file

@ -4,102 +4,92 @@
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
*/
(F=>{function I(b,c){return null===b||typeof b in ia?b===c:!1}function G(b,c){var e;return()=>{e||(e=a.a.setTimeout(()=>{e=void 0;b()},c))}}function J(b,c){var e;return()=>{clearTimeout(e);e=a.a.setTimeout(b,c)}}function V(b,c){null!==c&&c.s&&c.s()}function Y(b,c){var e=this.Zc,g=e[E];g.ma||(this.zb&&this.Ya[c]?(e.kc(c,b,this.Ya[c]),this.Ya[c]=null,--this.zb):g.D[c]||e.kc(c,b,g.F?{ea:b}:e.Kc(b)),b.za&&b.Pc())}var W=F.document,Z={},a="undefined"!==typeof Z?Z:{};a.b=(b,c)=>{b=b.split(".");for(var e=
a,g=0;g<b.length-1;g++)e=e[b[g]];e[b[b.length-1]]=c};a.H=(b,c,e)=>{b[c]=e};a.version="3.5.1-sm";a.b("version",a.version);a.a=(()=>{const b=(f,h,d,l)=>Array.prototype[f].call(h,d,l),c=(f,h)=>{h&&Object.entries(h).forEach(d=>f[d[0]]=d[1]);return f},e=(f,h)=>{f.__proto__=h;return f};var g={__proto__:[]}instanceof Array;return{Y:(f,h,d)=>Array.prototype.forEach.call(f,h,d),Z:(f,h)=>Array.prototype.indexOf.call(f,h,void 0),ub:(f,h,d)=>{for(var l=0,k=f.length;l<k;l++)if(h.call(d,f[l],l,f))return f[l]},
Da:(f,h)=>{h=a.a.Z(f,h);0<h?f.splice(h,1):0===h&&f.shift()},vb:(f,h)=>{if(h instanceof Array)f.push.apply(f,h);else for(var d=0,l=h.length;d<l;d++)f.push(h[d]);return f},ra:g,extend:c,setPrototypeOf:e,jb:g?e:c,K:(f,h)=>f&&Object.entries(f).forEach(d=>h(d[0],d[1])),wa:(f,h,d)=>{if(!f)return f;var l={};Object.entries(f).forEach(k=>l[k[0]]=h.call(d,k[1],k[0],f));return l},Cb:f=>{for(;f.firstChild;)a.removeNode(f.firstChild)},Kb:f=>{var h=a.a.va(f),d=(h[0]&&h[0].ownerDocument||W).createElement("div");
f.forEach(l=>d.append(a.ka(l)));return d},Ga:(f,h)=>b("map",f,h?d=>a.ka(d.cloneNode(!0)):d=>d.cloneNode(!0)),pa:(f,h)=>{a.a.Cb(f);h&&f.append.apply(f,h)},Ic:(f,h)=>{f=f.nodeType?[f]:f;if(0<f.length){var d=f[0],l=d.parentNode,k;var m=0;for(k=h.length;m<k;m++)l.insertBefore(h[m],d);m=0;for(k=f.length;m<k;m++)a.removeNode(f[m])}},Ia:(f,h)=>{if(f.length){for(h=8===h.nodeType&&h.parentNode||h;f.length&&f[0].parentNode!==h;)f.splice(0,1);for(;1<f.length&&f[f.length-1].parentNode!==h;)f.length--;if(1<f.length){h=
f[0];var d=f[f.length-1];for(f.length=0;h!==d;)f.push(h),h=h.nextSibling;f.push(d)}}return f},Vb:f=>null===f||void 0===f?"":f.trim?f.trim():f.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,""),ud:(f,h)=>{f=f||"";return h.length>f.length?!1:f.substring(0,h.length)===h},bd:(f,h)=>h.contains(1!==f.nodeType?f.parentNode:f),Bb:f=>a.a.bd(f,f.ownerDocument.documentElement),Tc:f=>!!a.a.ub(f,a.a.Bb),ia:f=>f&&f.tagName&&f.tagName.toLowerCase(),pc:f=>a.onError?function(){try{return f.apply(this,arguments)}catch(h){throw a.onError&&
a.onError(h),h;}}:f,setTimeout:(f,h)=>setTimeout(a.a.pc(f),h),uc:f=>setTimeout(()=>{a.onError&&a.onError(f);throw f;},0),L:(f,h,d)=>{f.addEventListener(h,a.a.pc(d),!1)},Zb:(f,h)=>{if(!f||!f.nodeType)throw Error("element must be a DOM node when calling triggerEvent");f.dispatchEvent(new Event(h))},i:f=>a.S(f)?f():f,Gc:f=>a.S(f)?f.A():f,nb:(f,h,d)=>{if(h){var l=d?"add":"remove";h.split(/\s+/).forEach(k=>f.classList[l](k))}},kb:(f,h)=>{h=a.a.i(h);if(null===h||void 0===h)h="";var d=a.c.firstChild(f);
!d||3!=d.nodeType||a.c.nextSibling(d)?a.c.pa(f,[f.ownerDocument.createTextNode(h)]):d.data=h},va:f=>Array.from(f)}})();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.Y);a.b("utils.arrayFirst",a.a.ub);a.b("utils.arrayIndexOf",a.a.Z);a.b("utils.arrayPushAll",a.a.vb);a.b("utils.arrayRemoveItem",a.a.Da);a.b("utils.cloneNodes",a.a.Ga);a.b("utils.extend",a.a.extend);a.b("utils.objectMap",a.a.wa);a.b("utils.peekObservable",a.a.Gc);a.b("utils.registerEventHandler",a.a.L);a.b("utils.stringifyJson",a.a.Ad);
a.b("utils.toggleDomNodeCssClass",a.a.nb);a.b("utils.triggerEvent",a.a.Zb);a.b("utils.unwrapObservable",a.a.i);a.b("utils.objectForEach",a.a.K);a.b("utils.setTextContent",a.a.kb);a.b("unwrap",a.a.i);a.a.f=new function(){var b=0,c="__ko__"+Date.now(),e=(g,f)=>{var h=g[c];!h&&f&&(h=g[c]={});return h};return{get:(g,f)=>(g=e(g,!1))&&g[f],set:(g,f,h)=>{(g=e(g,void 0!==h))&&(g[f]=h)},Eb:(g,f,h)=>{g=e(g,!0);return g[f]||(g[f]=h)},clear:g=>g[c]?(delete g[c],!0):!1,ca:()=>b++ +c}};a.b("utils.domData",a.a.f);
a.b("utils.domData.clear",a.a.f.clear);a.a.M=new function(){function b(d,l){var k=a.a.f.get(d,g);void 0===k&&l&&(k=[],a.a.f.set(d,g,k));return k}function c(d){var l=b(d,!1);if(l){l=l.slice(0);for(var k=0;k<l.length;k++)l[k](d)}a.a.f.clear(d);h[d.nodeType]&&e(d.childNodes,!0)}function e(d,l){for(var k=[],m,n=0;n<d.length;n++)if(!l||8===d[n].nodeType)if(c(k[k.length]=m=d[n]),d[n]!==m)for(;n--&&-1==a.a.Z(k,d[n]););}var g=a.a.f.ca(),f={1:!0,8:!0,9:!0},h={1:!0,9:!0};return{Ca:(d,l)=>{if("function"!=typeof l)throw Error("Callback must be a function");
b(d,!0).push(l)},ib:(d,l)=>{var k=b(d,!1);k&&(a.a.Da(k,l),0==k.length&&a.a.f.set(d,g,void 0))},ka:d=>{a.o.I(()=>{f[d.nodeType]&&(c(d),h[d.nodeType]&&e(d.getElementsByTagName("*")))});return d},removeNode:d=>{a.ka(d);d.parentNode&&d.parentNode.removeChild(d)}}};a.ka=a.a.M.ka;a.removeNode=a.a.M.removeNode;a.b("cleanNode",a.ka);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.M);a.b("utils.domNodeDisposal.addDisposeCallback",a.a.M.Ca);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.M.ib);
(()=>{var b=[0,"",""],c=[1,"<table>","</table>"],e=[3,"<table><tbody><tr>","</tr></tbody></table>"],g=[1,"<select multiple='multiple'>","</select>"],f={thead:c,tbody:c,tfoot:c,tr:[2,"<table><tbody>","</tbody></table>"],td:e,th:e,option:g,optgroup:g};a.a.Ma=(h,d)=>{var l=d;l||(l=W);d=l.parentWindow||l.defaultView||F;var k=a.a.Vb(h).toLowerCase();l=l.createElement("div");var m=(k=k.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&f[k[1]]||b;k=m[0];h="ignored<div>"+m[1]+h+m[2]+"</div>";for("function"==
typeof d.innerShiv?l.append(d.innerShiv(h)):l.innerHTML=h;k--;)l=l.lastChild;return a.a.va(l.lastChild.childNodes)};a.a.qd=(h,d)=>{h=a.a.Ma(h,d);return h.length&&h[0].parentElement||a.a.Kb(h)};a.a.Ub=(h,d)=>{a.a.Cb(h);d=a.a.i(d);if(null!==d&&void 0!==d){"string"!=typeof d&&(d=d.toString());d=a.a.Ma(d,h.ownerDocument);for(var l=0;l<d.length;l++)h.appendChild(d[l])}}})();a.b("utils.parseHtmlFragment",a.a.Ma);a.b("utils.setHtml",a.a.Ub);a.W=function(){function b(e,g){if(e)if(8==e.nodeType){var f=a.W.Fc(e.nodeValue);
null!=f&&g.push({ad:e,nd:f})}else if(1==e.nodeType){f=0;e=e.childNodes;for(var h=e.length;f<h;f++)b(e[f],g)}}var c={};return{Jb:e=>{if("function"!=typeof e)throw Error("You can only pass a function to ko.memoization.memoize()");var g=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[g]=e;return"\x3c!--[ko_memo:"+g+"]--\x3e"},Lc:(e,g)=>{var f=c[e];if(void 0===f)throw Error("Couldn't find any memo with ID "+e+". Perhaps it's already been unmemoized.");
try{return f.apply(null,g||[]),!0}finally{delete c[e]}},Mc:(e,g)=>{var f=[];b(e,f);e=0;for(var h=f.length;e<h;e++){var d=f[e].ad,l=[d];g&&a.a.vb(l,g);a.W.Lc(f[e].nd,l);d.nodeValue="";d.parentNode&&d.parentNode.removeChild(d)}},Fc:e=>(e=e.match(/^\[ko_memo:(.*?)\]$/))?e[1]:null}}();a.b("memoization",a.W);a.b("memoization.memoize",a.W.Jb);a.b("memoization.unmemoize",a.W.Lc);a.b("memoization.parseMemoText",a.W.Fc);a.b("memoization.unmemoizeDomNodeAndDescendants",a.W.Mc);a.mb=(()=>{function b(){if(e)for(var d=
e,l=0,k;f<e;)if(k=c[f++]){if(f>d){if(5E3<=++l){f=e;a.a.uc(Error("'Too much recursion' after processing "+l+" task groups."));break}d=e}try{k()}catch(m){a.a.uc(m)}}f=e=c.length=0}var c=[],e=0,g=1,f=0,h=(d=>{var l=W.createElement("div");(new MutationObserver(d)).observe(l,{attributes:!0});return()=>l.classList.toggle("foo")})(b);return{Sb:d=>{e||h(b);c[e++]=d;return g++},cancel:d=>{d-=g-e;d>=f&&d<e&&(c[d]=null)}}})();a.b("tasks",a.mb);a.b("tasks.schedule",a.mb.Sb);a.Db={throttle:(b,c)=>{b.throttleEvaluation=
c;var e=null;return a.l({read:b,write:g=>{clearTimeout(e);e=a.a.setTimeout(()=>b(g),c)}})},rateLimit:(b,c)=>{if("number"==typeof c)var e=c;else{e=c.timeout;var g=c.method}var f="function"==typeof g?g:"notifyWhenChangesStop"==g?J:G;b.Ib(h=>f(h,e,c))},notify:(b,c)=>{b.equalityComparer="always"==c?null:I}};var ia={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.Db);a.Wb=function(b,c,e){this.ea=b;this.ac=c;this.bc=e;this.qb=!1;this.Sa=this.rb=null;a.H(this,"dispose",this.s);a.H(this,"disposeWhenNodeIsRemoved",
this.m)};a.Wb.prototype.s=function(){this.qb||(this.Sa&&a.a.M.ib(this.rb,this.Sa),this.qb=!0,this.bc(),this.ea=this.ac=this.bc=this.rb=this.Sa=null)};a.Wb.prototype.m=function(b){this.rb=b;a.a.M.Ca(b,this.Sa=this.s.bind(this))};a.O=function(){a.a.jb(this,P);P.bb(this)};var P={bb:b=>{b.P={change:[]};b.ic=1},subscribe:function(b,c,e){var g=this;e=e||"change";var f=new a.Wb(g,c?b.bind(c):b,()=>{a.a.Da(g.P[e],f);g.Ua&&g.Ua(e)});g.Ea&&g.Ea(e);g.P[e]||(g.P[e]=[]);g.P[e].push(f);return f},notifySubscribers:function(b,
c){c=c||"change";"change"===c&&this.pb();if(this.Ka(c)){c="change"===c&&this.Nc||this.P[c].slice(0);try{a.o.mc();for(var e=0,g;g=c[e];++e)g.qb||g.ac(b)}finally{a.o.end()}}},$a:function(){return this.ic},hd:function(b){return this.$a()!==b},pb:function(){++this.ic},Ib:function(b){var c=this,e=a.S(c),g,f,h,d,l;c.Ta||(c.Ta=c.notifySubscribers,c.notifySubscribers=function(m,n){n&&"change"!==n?"beforeChange"===n?this.ec(m):this.Ta(m,n):this.fc(m)});var k=b(()=>{c.za=!1;e&&d===c&&(d=c.cc?c.cc():c());var m=
f||l&&c.eb(h,d);l=f=g=!1;m&&c.Ta(h=d)});c.fc=(m,n)=>{n&&c.za||(l=!n);c.Nc=c.P.change.slice(0);c.za=g=!0;d=m;k()};c.ec=m=>{g||(h=m,c.Ta(m,"beforeChange"))};c.hc=()=>{l=!0};c.Pc=()=>{c.eb(h,c.A(!0))&&(f=!0)}},Ka:function(b){return this.P[b]&&this.P[b].length},fd:function(b){if(b)return this.P[b]&&this.P[b].length||0;var c=0;a.a.K(this.P,(e,g)=>c+=g.length);return c},eb:function(b,c){return!this.equalityComparer||!this.equalityComparer(b,c)},toString:()=>"[object Object]",extend:function(b){var c=this;
b&&a.a.K(b,(e,g)=>{e=a.Db[e];"function"==typeof e&&(c=e(c,g)||c)});return c}};a.H(P,"init",P.bb);a.H(P,"subscribe",P.subscribe);a.H(P,"extend",P.extend);a.H(P,"getSubscriptionsCount",P.fd);a.a.ra&&a.a.setPrototypeOf(P,Function.prototype);a.O.fn=P;a.Cc=b=>null!=b&&"function"==typeof b.subscribe&&"function"==typeof b.notifySubscribers;a.b("subscribable",a.O);a.b("isSubscribable",a.Cc);a.V=a.o=(()=>{function b(h){e.push(g);g=h}function c(){g=e.pop()}var e=[],g,f=0;return{mc:b,end:c,Qb:h=>{if(g){if(!a.Cc(h))throw Error("Only subscribable things can act as dependencies");
g.Xc.call(g.Yc,h,h.Oc||(h.Oc=++f))}},I:(h,d,l)=>{try{return b(),h.apply(d,l||[])}finally{c()}},ua:()=>{if(g)return g.l.ua()},Ja:()=>{if(g)return g.l.Ja()},fb:()=>{if(g)return g.fb},l:()=>{if(g)return g.l}}})();a.b("computedContext",a.V);a.b("computedContext.getDependenciesCount",a.V.ua);a.b("computedContext.getDependencies",a.V.Ja);a.b("computedContext.isInitial",a.V.fb);a.b("computedContext.registerDependency",a.V.Qb);a.b("ignoreDependencies",a.xd=a.o.I);var R=Symbol("_latestValue");a.oa=b=>{function c(){if(0<
arguments.length)return c.eb(c[R],arguments[0])&&(c.Qa(),c[R]=arguments[0],c.Pa()),this;a.o.Qb(c);return c[R]}c[R]=b;a.a.ra||a.a.extend(c,a.O.fn);a.O.fn.bb(c);a.a.jb(c,Q);return c};var Q={equalityComparer:I,A:function(){return this[R]},Pa:function(){this.notifySubscribers(this[R],"spectate");this.notifySubscribers(this[R])},Qa:function(){this.notifySubscribers(this[R],"beforeChange")}};a.a.ra&&a.a.setPrototypeOf(Q,a.O.fn);var S=a.oa.Qc="__ko_proto__";Q[S]=a.oa;a.S=b=>{if((b="function"==typeof b&&
b[S])&&b!==Q[S]&&b!==a.l.fn[S])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!b};a.Hb=b=>"function"==typeof b&&(b[S]===Q[S]||b[S]===a.l.fn[S]&&b.zc);a.b("observable",a.oa);a.b("isObservable",a.S);a.b("isWriteableObservable",a.Hb);a.b("observable.fn",Q);a.H(Q,"peek",Q.A);a.H(Q,"valueHasMutated",Q.Pa);a.H(Q,"valueWillMutate",Q.Qa);a.xa=b=>{b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
b=a.oa(b);a.a.jb(b,a.xa.fn);return b.extend({trackArrayChanges:!0})};a.xa.fn={remove:function(b){for(var c=this.A(),e=[],g="function"!=typeof b||a.S(b)?function(d){return d===b}:b,f=0;f<c.length;f++){var h=c[f];if(g(h)){0===e.length&&this.Qa();if(c[f]!==h)throw Error("Array modified during remove; cannot remove item");e.push(h);c.splice(f,1);f--}}e.length&&this.Pa();return e},removeAll:function(b){if(void 0===b){var c=this.A(),e=c.slice(0);this.Qa();c.splice(0,c.length);this.Pa();return e}return b?
this.remove(function(g){return 0<=a.a.Z(b,g)}):[]},indexOf:function(b){return a.a.Z(this(),b)}};a.a.ra&&a.a.setPrototypeOf(a.xa.fn,a.oa.fn);"pop push reverse shift sort splice unshift".split(" ").forEach(b=>{a.xa.fn[b]=function(){var c=this.A();this.Qa();this.oc(c,b,arguments);var e=c[b].apply(c,arguments);this.Pa();return e===c?this:e}});["slice"].forEach(b=>{a.xa.fn[b]=function(){var c=this();return c[b].apply(c,arguments)}});a.Bc=b=>a.S(b)&&"function"==typeof b.remove&&"function"==typeof b.push;
a.b("observableArray",a.xa);a.b("isObservableArray",a.Bc);a.Db.trackArrayChanges=(b,c)=>{function e(){function q(){if(l){var t=[].concat(b.A()||[]);if(b.Ka("arrayChange")){if(!f||1<l)f=a.a.xb(k,t,b.wb);var x=f}k=t;f=null;l=0;x&&x.length&&b.notifySubscribers(x,"arrayChange")}}g?q():(g=!0,d=b.subscribe(()=>++l,null,"spectate"),k=[].concat(b.A()||[]),f=null,h=b.subscribe(q))}b.wb={};c&&"object"==typeof c&&a.a.extend(b.wb,c);b.wb.sparse=!0;if(!b.oc){var g=!1,f=null,h,d,l=0,k,m=b.Ea,n=b.Ua;b.Ea=q=>{m&&
m.call(b,q);"arrayChange"===q&&e()};b.Ua=q=>{n&&n.call(b,q);"arrayChange"!==q||b.Ka("arrayChange")||(h&&h.s(),d&&d.s(),d=h=null,g=!1,k=void 0)};b.oc=(q,t,x)=>{function u(C,A,H){return w[w.length]={status:C,value:A,index:H}}if(g&&!l){var w=[],p=q.length,r=x.length,v=0;switch(t){case "push":v=p;case "unshift":for(t=0;t<r;t++)u("added",x[t],v+t);break;case "pop":v=p-1;case "shift":p&&u("deleted",q[v],v);break;case "splice":t=Math.min(Math.max(0,0>x[0]?p+x[0]:x[0]),p);p=1===r?p:Math.min(t+(x[1]||0),p);
r=t+r-2;v=Math.max(p,r);for(var y=[],B=[],z=2;t<v;++t,++z)t<p&&B.push(u("deleted",q[t],t)),t<r&&y.push(u("added",x[z],t));a.a.xc(B,y);break;default:return}f=w}}}};var E=Symbol("_state");a.l=function(b,c,e){function g(){if(0<arguments.length){if("function"===typeof f)f.apply(h.Za,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}h.ma||a.o.Qb(g);(h.ha||h.F&&g.La())&&
g.ba();return h.T}"object"===typeof b?e=b:(e=e||{},b&&(e.read=b));if("function"!=typeof e.read)throw Error("Pass a function that returns the value of the ko.computed");var f=e.write,h={T:void 0,na:!0,ha:!0,cb:!1,Xb:!1,ma:!1,hb:!1,F:!1,Hc:e.read,Za:c||e.owner,m:e.disposeWhenNodeIsRemoved||e.m||null,Ha:e.disposeWhen||e.Ha,Ab:null,D:{},R:0,wc:null};g[E]=h;g.zc="function"===typeof f;a.a.ra||a.a.extend(g,a.O.fn);a.O.fn.bb(g);a.a.jb(g,N);e.pure?(h.hb=!0,h.F=!0,a.a.extend(g,ja)):e.deferEvaluation&&a.a.extend(g,
ka);h.m&&(h.Xb=!0,h.m.nodeType||(h.m=null));h.F||e.deferEvaluation||g.ba();h.m&&g.ga()&&a.a.M.Ca(h.m,h.Ab=function(){g.s()});return g};var N={equalityComparer:I,ua:function(){return this[E].R},Ja:function(){var b=[];a.a.K(this[E].D,(c,e)=>b[e.Aa]=e.ea);return b},Fb:function(b){if(!this[E].R)return!1;var c=this.Ja();return-1!==a.a.Z(c,b)?!0:!!a.a.ub(c,e=>e.Fb&&e.Fb(b))},kc:function(b,c,e){if(this[E].hb&&c===this)throw Error("A 'pure' computed must not be called recursively");this[E].D[b]=e;e.Aa=this[E].R++;
e.Ba=c.$a()},La:function(){var b,c=this[E].D;for(b in c)if(Object.prototype.hasOwnProperty.call(c,b)){var e=c[b];if(this.ya&&e.ea.za||e.ea.hd(e.Ba))return!0}},yd:function(){this.ya&&!this[E].cb&&this.ya(!1)},ga:function(){var b=this[E];return b.ha||0<b.R},zd:function(){this.za?this[E].ha&&(this[E].na=!0):this.vc()},Kc:function(b){return b.subscribe(this.vc,this)},vc:function(){var b=this,c=b.throttleEvaluation;c&&0<=c?(clearTimeout(this[E].wc),this[E].wc=a.a.setTimeout(()=>b.ba(!0),c)):b.ya?b.ya(!0):
b.ba(!0)},ba:function(b){var c=this[E],e=c.Ha,g=!1;if(!c.cb&&!c.ma){if(c.m&&!a.a.Bb(c.m)||e&&e()){if(!c.Xb){this.s();return}}else c.Xb=!1;c.cb=!0;try{g=this.ed(b)}finally{c.cb=!1}return g}},ed:function(b){var c=this[E],e=c.hb?void 0:!c.R;var g={Zc:this,Ya:c.D,zb:c.R};a.o.mc({Yc:g,Xc:Y,l:this,fb:e});c.D={};c.R=0;var f=this.dd(c,g);c.R?g=this.eb(c.T,f):(this.s(),g=!0);g&&(c.F?this.pb():this.notifySubscribers(c.T,"beforeChange"),c.T=f,this.notifySubscribers(c.T,"spectate"),!c.F&&b&&this.notifySubscribers(c.T),
this.hc&&this.hc());e&&this.notifySubscribers(c.T,"awake");return g},dd:(b,c)=>{try{var e=b.Hc;return b.Za?e.call(b.Za):e()}finally{a.o.end(),c.zb&&!b.F&&a.a.K(c.Ya,V),b.na=b.ha=!1}},A:function(b){var c=this[E];(c.ha&&(b||!c.R)||c.F&&this.La())&&this.ba();return c.T},Ib:function(b){a.O.fn.Ib.call(this,b);this.cc=function(){this[E].F||(this[E].na?this.ba():this[E].ha=!1);return this[E].T};this.ya=function(c){this.ec(this[E].T);this[E].ha=!0;c&&(this[E].na=!0);this.fc(this,!c)}},s:function(){var b=
this[E];!b.F&&b.D&&a.a.K(b.D,(c,e)=>e.s&&e.s());b.m&&b.Ab&&a.a.M.ib(b.m,b.Ab);b.D=void 0;b.R=0;b.ma=!0;b.na=!1;b.ha=!1;b.F=!1;b.m=void 0;b.Ha=void 0;b.Hc=void 0;this.zc||(b.Za=void 0)}},ja={Ea:function(b){var c=this,e=c[E];if(!e.ma&&e.F&&"change"==b){e.F=!1;if(e.na||c.La())e.D=null,e.R=0,c.ba()&&c.pb();else{var g=[];a.a.K(e.D,(f,h)=>g[h.Aa]=f);a.a.Y(g,(f,h)=>{var d=e.D[f],l=c.Kc(d.ea);l.Aa=h;l.Ba=d.Ba;e.D[f]=l});c.La()&&c.ba()&&c.pb()}e.ma||c.notifySubscribers(e.T,"awake")}},Ua:function(b){var c=
this[E];c.ma||"change"!=b||this.Ka("change")||(a.a.K(c.D,(e,g)=>{g.s&&(c.D[e]={ea:g.ea,Aa:g.Aa,Ba:g.Ba},g.s())}),c.F=!0,this.notifySubscribers(void 0,"asleep"))},$a:function(){var b=this[E];b.F&&(b.na||this.La())&&this.ba();return a.O.fn.$a.call(this)}},ka={Ea:function(b){"change"!=b&&"beforeChange"!=b||this.A()}};a.a.ra&&a.a.setPrototypeOf(N,a.O.fn);var aa=a.oa.Qc;N[aa]=a.l;a.Ac=b=>"function"==typeof b&&b[aa]===N[aa];a.kd=b=>a.Ac(b)&&b[E]&&b[E].hb;a.b("computed",a.l);a.b("isComputed",a.Ac);a.b("isPureComputed",
a.kd);a.b("computed.fn",N);a.H(N,"peek",N.A);a.H(N,"dispose",N.s);a.H(N,"isActive",N.ga);a.H(N,"getDependenciesCount",N.ua);a.H(N,"getDependencies",N.Ja);a.Pb=(b,c)=>{if("function"===typeof b)return a.l(b,c,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.l(b,c)};a.b("pureComputed",a.Pb);a.wd=(b,c,e)=>{function g(f){var h=a.Pb(b,e).extend({notify:"always"}),d=h.subscribe(l=>{l&&(d.s(),f(l))});h.notifySubscribers(h.A());return d}return c?g(c.bind(e)):new Promise(g)};a.b("when",a.wd);(()=>{a.v={N:b=>
{switch(a.a.ia(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.g.options.Mb):b.value;case "select":return 0<=b.selectedIndex?a.v.N(b.options[b.selectedIndex]):void 0;default:return b.value}},Ra:(b,c,e)=>{switch(a.a.ia(b)){case "option":"string"===typeof c?(a.a.f.set(b,a.g.options.Mb,void 0),delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.f.set(b,a.g.options.Mb,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c?c:"");break;case "select":if(""===c||null===
c)c=void 0;for(var g=-1,f=0,h=b.options.length,d;f<h;++f)if(d=a.v.N(b.options[f]),d==c||""===d&&void 0===c){g=f;break}if(e||0<=g||void 0===c&&1<b.size)b.selectedIndex=g;break;default:if(null===c||void 0===c)c="";b.value=c}}}})();a.b("selectExtensions",a.v);a.b("selectExtensions.readValue",a.v.N);a.b("selectExtensions.writeValue",a.v.Ra);a.u=(()=>{function b(l){l=a.a.Vb(l);123===l.charCodeAt(0)&&(l=l.slice(1,-1));l+="\n,";var k=[],m=l.match(g),n=[],q=0;if(1<m.length){for(var t=0,x;x=m[t];++t){var u=
x.charCodeAt(0);if(44===u){if(0>=q){k.push(w&&n.length?{key:w,value:n.join("")}:{unknown:w||n.join("")});var w=q=0;n=[];continue}}else if(58===u){if(!q&&!w&&1===n.length){w=n.pop();continue}}else if(47===u&&1<x.length&&(47===x.charCodeAt(1)||42===x.charCodeAt(1)))continue;else 47===u&&t&&1<x.length?(u=m[t-1].match(f))&&!h[u[0]]&&(l=l.substr(l.indexOf(x)+1),m=l.match(g),t=-1,x="/"):40===u||123===u||91===u?++q:41===u||125===u||93===u?--q:w||n.length||34!==u&&39!==u||(x=x.slice(1,-1));n.push(x)}if(0<
q)throw Error("Unbalanced parentheses, braces, or brackets");}return k}var c=["true","false","null","undefined"],e=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,g=/"(?:\\.|[^"])*"|'(?:\\.|[^'])*'|`(?:\\.|[^`])*`|\/\*(?:[^*]|\*+[^*/])*\*+\/|\/\/.*\n|\/(?:\\.|[^/])+\/w*|[^\s:,/][^,"'`{}()/:[\]]*[^\s,"'`{}()/:[\]]|[^\s]/g,f=/[\])"'A-Za-z0-9_$]+$/,h={"in":1,"return":1,"typeof":1},d={};return{Fa:[],ob:d,Nb:b,Ob:function(l,k){function m(u,w){if(!x){var p=a.getBindingHandler(u);if(p&&p.preprocess&&
!(w=p.preprocess(w,u,m)))return;if(p=d[u]){var r=w;0<=a.a.Z(c,r)?r=!1:(p=r.match(e),r=null===p?!1:p[1]?"Object("+p[1]+")"+p[2]:r);p=r}p&&q.push("'"+("string"==typeof d[u]?d[u]:u)+"':function(_z){"+r+"=_z}")}t&&(w="function(){return "+w+" }");n.push("'"+u+"':"+w)}k=k||{};var n=[],q=[],t=k.valueAccessors,x=k.bindingParams;l="string"===typeof l?b(l):l;a.a.Y(l,u=>m(u.key||u.unknown,u.value));q.length&&m("_ko_property_writers","{"+q.join(",")+" }");return n.join(",")},md:(l,k)=>{for(var m=0;m<l.length;m++)if(l[m].key==
k)return!0;return!1},$b:(l,k,m,n,q)=>{if(l&&a.S(l))!a.Hb(l)||q&&l.A()===n||l(n);else if((l=k.get("_ko_property_writers"))&&l[m])l[m](n)}}})();a.b("expressionRewriting",a.u);a.b("expressionRewriting.bindingRewriteValidators",a.u.Fa);a.b("expressionRewriting.parseObjectLiteral",a.u.Nb);a.b("expressionRewriting.preProcessBindings",a.u.Ob);(()=>{function b(d){return 8==d.nodeType&&g.test(d.nodeValue)}function c(d){return 8==d.nodeType&&f.test(d.nodeValue)}function e(d,l){for(var k=d,m=1,n=[];k=k.nextSibling;){if(c(k)&&
(a.a.f.set(k,h,!0),m--,0===m))return n;n.push(k);b(k)&&m++}if(!l)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}var g=/^\s*ko(?:\s+([\s\S]+))?\s*$/,f=/^\s*\/ko\s*$/,h="__ko_matchedEndComment__";a.c={ja:{},childNodes:d=>b(d)?e(d):d.childNodes,sa:d=>{if(b(d)){d=a.c.childNodes(d);for(var l=0,k=d.length;l<k;l++)a.removeNode(d[l])}else a.a.Cb(d)},pa:(d,l)=>{if(b(d)){a.c.sa(d);d=d.nextSibling;for(var k=0,m=l.length;k<m;k++)d.parentNode.insertBefore(l[k],d)}else a.a.pa(d,
l)},prepend:(d,l)=>{if(b(d)){var k=d.nextSibling;d=d.parentNode}else k=d.firstChild;d.insertBefore(l,k)},Gb:(d,l,k)=>{k?(k=k.nextSibling,b(d)&&(d=d.parentNode),d.insertBefore(l,k)):a.c.prepend(d,l)},firstChild:d=>{if(!b(d)){if(d.firstChild&&c(d.firstChild))throw Error("Found invalid end comment, as the first child of "+d);return d.firstChild}return!d.nextSibling||c(d.nextSibling)?null:d.nextSibling},nextSibling:d=>{if(b(d)){var l=e(d,void 0);d=l?0<l.length?l[l.length-1].nextSibling:d.nextSibling:
null}if(d.nextSibling&&c(d.nextSibling)){l=d.nextSibling;if(c(l)&&!a.a.f.get(l,h))throw Error("Found end comment without a matching opening comment, as child of "+d);return null}return d.nextSibling},gd:b,vd:d=>(d=d.nodeValue.match(g))?d[1]:null}})();a.b("virtualElements",a.c);a.b("virtualElements.allowedBindings",a.c.ja);a.b("virtualElements.emptyNode",a.c.sa);a.b("virtualElements.insertAfter",a.c.Gb);a.b("virtualElements.prepend",a.c.prepend);a.b("virtualElements.setDomNodeChildren",a.c.pa);(function(){a.aa=
function(){this.Wc={}};a.a.extend(a.aa.prototype,{nodeHasBindings:b=>{switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind")||a.j.getComponentNameForNode(b);case 8:return a.c.gd(b);default:return!1}},getBindings:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b):null;return a.j.jc(e,b,c,!1)},getBindingAccessors:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b,{valueAccessors:!0}):null;return a.j.jc(e,b,c,!0)},getBindingsString:b=>
{switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.c.vd(b)}return null},parseBindingsString:function(b,c,e,g){try{var f=this.Wc,h=b+(g&&g.valueAccessors||""),d;if(!(d=f[h])){var l="with($context){with($data||{}){return{"+a.u.Ob(b,g)+"}}}";var k=new Function("$context","$element",l);d=f[h]=k}return d(c,e)}catch(m){throw m.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+m.message,m;}}});a.aa.instance=new a.aa})();a.b("bindingProvider",a.aa);(()=>{function b(p){var r=
(p=a.a.f.get(p,w))&&p.J;r&&(p.J=null,r.Ec())}function c(p,r,v){this.node=p;this.nc=r;this.Wa=[];this.G=!1;r.J||a.a.M.Ca(p,b);v&&v.J&&(v.J.Wa.push(p),this.sb=v)}function e(p){return a.a.wa(a.o.I(p),(r,v)=>()=>p()[v])}function g(p,r,v){return"function"===typeof p?e(p.bind(null,r,v)):a.a.wa(p,y=>()=>y)}function f(p,r){return e(this.getBindings.bind(this,p,r))}function h(p,r){var v=a.c.firstChild(r);if(v){var y,B=a.aa.instance,z=B.preprocessNode;if(z){for(;y=v;)v=a.c.nextSibling(y),z.call(B,y);v=a.c.firstChild(r)}for(;y=
v;)v=a.c.nextSibling(y),d(p,y)}a.h.notify(r,a.h.G)}function d(p,r){var v=p;if(1===r.nodeType||a.aa.instance.nodeHasBindings(r))v=k(r,null,p).bindingContextForDescendants;v&&!x[a.a.ia(r)]&&h(v,r)}function l(p){var r=[],v={},y=[];a.a.K(p,function C(z){if(!v[z]){var A=a.getBindingHandler(z);A&&(A.after&&(y.push(z),a.a.Y(A.after,H=>{if(p[H]){if(-1!==a.a.Z(y,H))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+y.join(", "));C(H)}}),y.length--),r.push({key:z,yc:A}));
v[z]=!0}});return r}function k(p,r,v){var y=a.a.f.Eb(p,w,{}),B=y.Rc;if(!r){if(B)throw Error("You cannot apply bindings multiple times to the same element.");y.Rc=!0}B||(y.context=v);y.Lb||(y.Lb={});if(r&&"function"!==typeof r)var z=r;else{var C=a.aa.instance,A=C.getBindingAccessors||f,H=a.l(()=>{if(z=r?r(v,p):A.call(C,p,v)){if(v[n])v[n]();if(v[t])v[t]()}return z},null,{m:p});z&&H.ga()||(H=null)}var O=v,K;if(z){var L=H?D=>()=>H()[D]():D=>z[D];function M(){return a.a.wa(H?H():z,D=>D())}M.get=D=>z[D]&&
L(D)();M.has=D=>D in z;a.h.G in z&&a.h.subscribe(p,a.h.G,()=>{var D=z[a.h.G]();if(D){var T=a.c.childNodes(p);T.length&&D(T,a.sc(T[0]))}});a.h.la in z&&(O=a.h.lb(p,v),a.h.subscribe(p,a.h.la,()=>{var D=z[a.h.la]();D&&a.c.firstChild(p)&&D(p)}));y=l(z);a.a.Y(y,D=>{var T=D.yc.init,da=D.yc.update,U=D.key;if(8===p.nodeType&&!a.c.ja[U])throw Error("The binding '"+U+"' cannot be used with virtual elements");try{"function"==typeof T&&a.o.I(()=>{var X=T(p,L(U),M,O.$data,O);if(X&&X.controlsDescendantBindings){if(void 0!==
K)throw Error("Multiple bindings ("+K+" and "+U+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");K=U}}),"function"==typeof da&&a.l(()=>da(p,L(U),M,O.$data,O),null,{m:p})}catch(X){throw X.message='Unable to process binding "'+U+": "+z[U]+'"\nMessage: '+X.message,X;}})}y=void 0===K;return{shouldBindDescendants:y,bindingContextForDescendants:y&&O}}function m(p,r){return p&&p instanceof a.$?p:new a.$(p,void 0,void 0,r)}var n=
Symbol("_subscribable"),q=Symbol("_ancestorBindingInfo"),t=Symbol("_dataDependency");a.g={};var x={script:!0,textarea:!0,template:!0};a.getBindingHandler=p=>a.g[p];var u={};a.$=function(p,r,v,y,B){function z(){var M=O?H():H,D=a.a.i(M);r?(a.a.extend(C,r),q in r&&(C[q]=r[q])):(C.$parents=[],C.$root=D,C.ko=a);C[n]=L;A?D=C.$data:(C.$rawData=M,C.$data=D);v&&(C[v]=D);y&&y(C,r,D);if(r&&r[n]&&!a.V.l().Fb(r[n]))r[n]();K&&(C[t]=K);return C.$data}var C=this,A=p===u,H=A?void 0:p,O="function"==typeof H&&!a.S(H),
K=B&&B.dataDependency;if(B&&B.exportDependencies)z();else{var L=a.Pb(z);L.A();L.ga()?L.equalityComparer=null:C[n]=void 0}};a.$.prototype.createChildContext=function(p,r,v,y){!y&&r&&"object"==typeof r&&(y=r,r=y.as,v=y.extend);if(r&&y&&y.noChildContext){var B="function"==typeof p&&!a.S(p);return new a.$(u,this,null,z=>{v&&v(z);z[r]=B?p():p},y)}return new a.$(p,this,r,(z,C)=>{z.$parentContext=C;z.$parent=C.$data;z.$parents=(C.$parents||[]).slice(0);z.$parents.unshift(z.$parent);v&&v(z)},y)};a.$.prototype.extend=
function(p,r){return new a.$(u,this,null,v=>a.a.extend(v,"function"==typeof p?p(v):p),r)};var w=a.a.f.ca();c.prototype.Ec=function(){this.sb&&this.sb.J&&this.sb.J.$c(this.node)};c.prototype.$c=function(p){a.a.Da(this.Wa,p);!this.Wa.length&&this.G&&this.rc()};c.prototype.rc=function(){this.G=!0;this.nc.J&&!this.Wa.length&&(this.nc.J=null,a.a.M.ib(this.node,b),a.h.notify(this.node,a.h.la),this.Ec())};a.h={G:"childrenComplete",la:"descendantsComplete",subscribe:(p,r,v,y,B)=>{var z=a.a.f.Eb(p,w,{});z.ta||
(z.ta=new a.O);B&&B.notifyImmediately&&z.Lb[r]&&a.o.I(v,y,[p]);return z.ta.subscribe(v,y,r)},notify:(p,r)=>{var v=a.a.f.get(p,w);if(v&&(v.Lb[r]=!0,v.ta&&v.ta.notifySubscribers(p,r),r==a.h.G))if(v.J)v.J.rc();else if(void 0===v.J&&v.ta&&v.ta.Ka(a.h.la))throw Error("descendantsComplete event not supported for bindings on this node");},lb:(p,r)=>{var v=a.a.f.Eb(p,w,{});v.J||(v.J=new c(p,v,r[q]));return r[q]==v?r:r.extend(y=>{y[q]=v})}};a.sd=p=>(p=a.a.f.get(p,w))&&p.context;a.Va=(p,r,v)=>k(p,r,m(v));a.Uc=
(p,r,v)=>{v=m(v);return a.Va(p,g(r,v,p),v)};a.tb=(p,r)=>{1!==r.nodeType&&8!==r.nodeType||h(m(p),r)};a.lc=function(p,r,v){if(2>arguments.length){if(r=W.body,!r)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!r||1!==r.nodeType&&8!==r.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");d(m(p,v),r)};a.sc=p=>(p=p&&[1,8].includes(p.nodeType)&&a.sd(p))?p.$data:void 0;a.b("bindingHandlers",
a.g);a.b("bindingEvent",a.h);a.b("bindingEvent.subscribe",a.h.subscribe);a.b("bindingEvent.startPossiblyAsyncContentBinding",a.h.lb);a.b("applyBindings",a.lc);a.b("applyBindingsToDescendants",a.tb);a.b("applyBindingAccessorsToNode",a.Va);a.b("applyBindingsToNode",a.Uc);a.b("dataFor",a.sc)})();(()=>{function b(d,l){return Object.prototype.hasOwnProperty.call(d,l)?d[l]:void 0}function c(d,l){var k=b(f,d);if(k)k.subscribe(l);else{k=f[d]=new a.O;k.subscribe(l);e(d,(n,q)=>{q=!(!q||!q.synchronous);h[d]=
{definition:n,ld:q};delete f[d];m||q?k.notifySubscribers(n):a.mb.Sb(()=>k.notifySubscribers(n))});var m=!0}}function e(d,l){g("getConfig",[d],k=>{k?g("loadComponent",[d,k],m=>l(m,k)):l(null,null)})}function g(d,l,k,m){m||(m=a.j.loaders.slice(0));var n=m.shift();if(n){var q=n[d];if(q){var t=!1;if(void 0!==q.apply(n,l.concat(function(x){t?k(null):null!==x?k(x):g(d,l,k,m)}))&&(t=!0,!n.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");
}else g(d,l,k,m)}else k(null)}var f={},h={};a.j={get:(d,l)=>{var k=b(h,d);k?k.ld?a.o.I(()=>l(k.definition)):a.mb.Sb(()=>l(k.definition)):c(d,l)},qc:d=>delete h[d],dc:g};a.j.loaders=[];a.b("components",a.j);a.b("components.get",a.j.get);a.b("components.clearCachedDefinition",a.j.qc)})();(()=>{function b(d,l,k,m){var n={},q=2;l=k.template;k=k.viewModel;l?a.j.dc("loadTemplate",[d,l],t=>{n.template=t;0===--q&&m(n)}):0===--q&&m(n);k?a.j.dc("loadViewModel",[d,k],t=>{n[h]=t;0===--q&&m(n)}):0===--q&&m(n)}
function c(d,l,k){if("function"===typeof l)k(n=>new l(n));else if("function"===typeof l[h])k(l[h]);else if("instance"in l){var m=l.instance;k(()=>m)}else"viewModel"in l?c(d,l.viewModel,k):d("Unknown viewModel value: "+l)}function e(d){if("template"==a.a.ia(d)&&d.content instanceof DocumentFragment)return a.a.Ga(d.content.childNodes);throw"Template Source Element not a <template>";}function g(d){return l=>{throw Error("Component '"+d+"': "+l);}}var f={};a.j.register=(d,l)=>{if(!l)throw Error("Invalid configuration for "+
d);if(a.j.gb(d))throw Error("Component "+d+" is already registered");f[d]=l};a.j.gb=d=>Object.prototype.hasOwnProperty.call(f,d);a.j.unregister=d=>{delete f[d];a.j.qc(d)};a.j.tc={getConfig:(d,l)=>{d=a.j.gb(d)?f[d]:null;l(d)},loadComponent:(d,l,k)=>{var m=g(d);b(d,m,l,k)},loadTemplate:(d,l,k)=>{d=g(d);if("string"===typeof l)k(a.a.Ma(l));else if(l instanceof Array)k(l);else if(l instanceof DocumentFragment)k(a.a.va(l.childNodes));else if(l.element)if(l=l.element,l instanceof HTMLElement)k(e(l));else if("string"===
typeof l){var m=W.getElementById(l);m?k(e(m)):d("Cannot find element with ID "+l)}else d("Unknown element type: "+l);else d("Unknown template value: "+l)},loadViewModel:(d,l,k)=>c(g(d),l,k)};var h="createViewModel";a.b("components.register",a.j.register);a.b("components.isRegistered",a.j.gb);a.b("components.unregister",a.j.unregister);a.b("components.defaultLoader",a.j.tc);a.j.loaders.push(a.j.tc)})();(()=>{function b(e,g){var f=e.getAttribute("params");return f?(g=c.parseBindingsString(f,g,e,{valueAccessors:!0,
bindingParams:!0}),g=a.a.wa(g,h=>a.l(h,null,{m:e})),f=a.a.wa(g,h=>{var d=h.A();return h.ga()?a.l({read:()=>a.a.i(h()),write:a.Hb(d)&&(l=>h()(l)),m:e}):d}),Object.prototype.hasOwnProperty.call(f,"$raw")||(f.$raw=g),f):{$raw:{}}}a.j.getComponentNameForNode=e=>{var g=a.a.ia(e);if(a.j.gb(g)&&(-1!=g.indexOf("-")||"[object HTMLUnknownElement]"==""+e))return g};a.j.jc=(e,g,f,h)=>{if(1===g.nodeType){var d=a.j.getComponentNameForNode(g);if(d){e=e||{};if(e.component)throw Error('Cannot use the "component" binding on a custom element matching a component');
var l={name:d,params:b(g,f)};e.component=h?()=>l:l}}return e};var c=new a.aa})();(()=>{function b(g,f,h){f=f.template;if(!f)throw Error("Component '"+g+"' has no template");g=a.a.Ga(f);a.c.pa(h,g)}function c(g,f,h){var d=g.createViewModel;return d?d.call(g,f,h):f}var e=0;a.g.component={init:(g,f,h,d,l)=>{var k,m,n,q=()=>{var x=k&&k.dispose;"function"===typeof x&&x.call(k);n&&n.s();m=k=n=null},t=a.a.va(a.c.childNodes(g));a.c.sa(g);a.a.M.Ca(g,q);a.l(()=>{var x=a.a.i(f());if("string"===typeof x)var u=
x;else{u=a.a.i(x.name);var w=a.a.i(x.params)}if(!u)throw Error("No component name specified");var p=a.h.lb(g,l),r=m=++e;a.j.get(u,v=>{if(m===r){q();if(!v)throw Error("Unknown component '"+u+"'");b(u,v,g);var y=c(v,w,{element:g,templateNodes:t});v=p.createChildContext(y,{extend:B=>{B.$component=y;B.$componentTemplateNodes=t}});y&&y.koDescendantsComplete&&(n=a.h.subscribe(g,a.h.la,y.koDescendantsComplete,y));k=y;a.tb(v,g)}})},null,{m:g});return{controlsDescendantBindings:!0}}};a.c.ja.component=!0})();
a.g.attr={update:(b,c)=>{c=a.a.i(c())||{};a.a.K(c,function(e,g){g=a.a.i(g);var f=e.indexOf(":");f="lookupNamespaceURI"in b&&0<f&&b.lookupNamespaceURI(e.substr(0,f));var h=!1===g||null===g||void 0===g;h?f?b.removeAttributeNS(f,e):b.removeAttribute(e):g=g.toString();h||(f?b.setAttributeNS(f,e,g):b.setAttribute(e,g));"name"===e&&(b.name=h?"":g)})}};a.g["class"]={update:(b,c)=>{c=a.a.Vb(a.a.i(c()));a.a.nb(b,b.__ko__cssValue,!1);b.__ko__cssValue=c;a.a.nb(b,c,!0)}};a.g.css={update:(b,c)=>{var e=a.a.i(c());
null!==e&&"object"==typeof e?a.a.K(e,(g,f)=>{f=a.a.i(f);a.a.nb(b,g,f)}):a.g["class"].update(b,c)}};a.g.enable={update:(b,c)=>{(c=a.a.i(c()))&&b.disabled?b.removeAttribute("disabled"):c||b.disabled||(b.disabled=!0)}};a.g.disable={update:(b,c)=>a.g.enable.update(b,()=>!a.a.i(c()))};a.g.event={init:(b,c,e,g,f)=>{var h=c()||{};a.a.K(h,d=>{"string"==typeof d&&a.a.L(b,d,function(l){var k=c()[d];if(k){try{var m=a.a.va(arguments);g=f.$data;m.unshift(g);var n=k.apply(g,m)}finally{!0!==n&&(l.preventDefault?
l.preventDefault():l.returnValue=!1)}!1===e.get(d+"Bubble")&&(l.cancelBubble=!0,l.stopPropagation&&l.stopPropagation())}})})}};a.g.foreach={Dc:b=>()=>{var c=b(),e=a.a.Gc(c);if(!e||"number"==typeof e.length)return{foreach:c,templateEngine:a.X.instance};a.a.i(c);return{foreach:e.data,as:e.as,noChildContext:e.noChildContext,includeDestroyed:e.includeDestroyed,afterAdd:e.afterAdd,beforeRemove:e.beforeRemove,afterRender:e.afterRender,beforeMove:e.beforeMove,afterMove:e.afterMove,templateEngine:a.X.instance}},
init:(b,c)=>a.g.template.init(b,a.g.foreach.Dc(c)),update:(b,c,e,g,f)=>a.g.template.update(b,a.g.foreach.Dc(c),e,g,f)};a.u.Fa.foreach=!1;a.c.ja.foreach=!0;a.g.hasfocus={init:(b,c,e)=>{var g=h=>{b.__ko_hasfocusUpdating=!0;h=b.ownerDocument.activeElement===b;var d=c();a.u.$b(d,e,"hasfocus",h,!0);b.__ko_hasfocusLastValue=h;b.__ko_hasfocusUpdating=!1},f=g.bind(null,!0);g=g.bind(null,!1);a.a.L(b,"focus",f);a.a.L(b,"focusin",f);a.a.L(b,"blur",g);a.a.L(b,"focusout",g);b.__ko_hasfocusLastValue=!1},update:(b,
c)=>{c=!!a.a.i(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===c||(c?b.focus():b.blur())}};a.u.ob.hasfocus=!0;a.g.hasFocus=a.g.hasfocus;a.u.ob.hasFocus="hasfocus";a.g.html={init:()=>({controlsDescendantBindings:!0}),update:(b,c)=>a.a.Ub(b,c())};(function(){function b(c,e,g){a.g[c]={init:(f,h,d,l,k)=>{var m,n,q={},t;if(e){l=d.get("as");var x=d.get("noChildContext");var u=!(l&&x);q={as:l,noChildContext:x,exportDependencies:u}}var w=(t="render"==d.get("completeOn"))||d.has(a.h.la);a.l(()=>{var p=
a.a.i(h()),r=!g!==!p,v=!n;if(u||r!==m){w&&(k=a.h.lb(f,k));if(r){if(!e||u)q.dataDependency=a.V.l();var y=e?k.createChildContext("function"==typeof p?p:h,q):a.V.ua()?k.extend(null,q):k}v&&a.V.ua()&&(n=a.a.Ga(a.c.childNodes(f),!0));r?(v||a.c.pa(f,a.a.Ga(n)),a.tb(y,f)):(a.c.sa(f),t||a.h.notify(f,a.h.G));m=r}},null,{m:f});return{controlsDescendantBindings:!0}}};a.u.Fa[c]=!1;a.c.ja[c]=!0}b("if");b("ifnot",!1,!0);b("with",!0)})();var ba={};a.g.options={init:b=>{if("select"!==a.a.ia(b))throw Error("options binding applies only to SELECT elements");
for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:(b,c,e)=>{function g(){return Array.from(b.options).filter(u=>u.selected)}function f(u,w,p){var r=typeof w;return"function"==r?w(u):"string"==r?u[w]:p}function h(u,w){t&&m?a.h.notify(b,a.h.G):n.length&&(u=0<=a.a.Z(n,a.v.N(w[0])),w[0].selected=u,t&&!u&&a.o.I(a.a.Zb,null,[b,"change"]))}var d=b.multiple,l=0!=b.length&&d?b.scrollTop:null,k=a.a.i(c()),m=e.get("valueAllowUnset")&&e.has("value");c={};var n=[];m||(d?n=g().map(a.v.N):
0<=b.selectedIndex&&n.push(a.v.N(b.options[b.selectedIndex])));if(k){"undefined"==typeof k.length&&(k=[k]);var q=k.filter(u=>u||null==u);e.has("optionsCaption")&&(k=a.a.i(e.get("optionsCaption")),null!==k&&void 0!==k&&q.unshift(ba))}var t=!1;c.beforeRemove=u=>b.removeChild(u);k=h;e.has("optionsAfterRender")&&"function"==typeof e.get("optionsAfterRender")&&(k=(u,w)=>{h(u,w);a.o.I(e.get("optionsAfterRender"),null,[w[0],u!==ba?u:void 0])});a.a.Tb(b,q,function(u,w,p){p.length&&(n=!m&&p[0].selected?[a.v.N(p[0])]:
[],t=!0);w=b.ownerDocument.createElement("option");u===ba?(a.a.kb(w,e.get("optionsCaption")),a.v.Ra(w,void 0)):(p=f(u,e.get("optionsValue"),u),a.v.Ra(w,a.a.i(p)),u=f(u,e.get("optionsText"),p),a.a.kb(w,u));return[w]},c,k);if(!m){var x;d?x=n.length&&g().length<n.length:x=n.length&&0<=b.selectedIndex?a.v.N(b.options[b.selectedIndex])!==n[0]:n.length||0<=b.selectedIndex;x&&a.o.I(a.a.Zb,null,[b,"change"])}(m||a.V.fb())&&a.h.notify(b,a.h.G);l&&20<Math.abs(l-b.scrollTop)&&(b.scrollTop=l)}};a.g.options.Mb=
a.a.f.ca();a.g.style={update:(b,c)=>{c=a.a.i(c()||{});a.a.K(c,(e,g)=>{g=a.a.i(g);if(null===g||void 0===g||!1===g)g="";if(/^--/.test(e))b.style.setProperty(e,g);else{e=e.replace(/-(\w)/g,(h,d)=>d.toUpperCase());var f=b.style[e];b.style[e]=g;g===f||b.style[e]!=f||isNaN(g)||(b.style[e]=g+"px")}})}};a.g.submit={init:(b,c,e,g,f)=>{if("function"!=typeof c())throw Error("The value for a submit binding must be a function");a.a.L(b,"submit",h=>{var d=c();try{var l=d.call(f.$data,b)}finally{!0!==l&&(h.preventDefault?
h.preventDefault():h.returnValue=!1)}})}};a.g.text={init:()=>({controlsDescendantBindings:!0}),update:(b,c)=>a.a.kb(b,c())};a.c.ja.text=!0;a.g.textInput={init:(b,c,e)=>{var g=b.value,f,h,d=()=>{clearTimeout(f);h=f=void 0;var k=b.value;g!==k&&(g=k,a.u.$b(c(),e,"textInput",k))},l=()=>{var k=a.a.i(c());if(null===k||void 0===k)k="";void 0!==h&&k===h?a.a.setTimeout(l,4):b.value!==k&&(b.value=k,g=b.value)};a.a.L(b,"input",d);a.a.L(b,"change",d);a.a.L(b,"blur",d);a.l(l,null,{m:b})}};a.u.ob.textInput=!0;
a.g.textinput={preprocess:(b,c,e)=>e("textInput",b)};a.g.value={init:(b,c,e)=>{var g=a.a.ia(b),f="input"==g;if(!f||"checkbox"!=b.type&&"radio"!=b.type){var h=[],d=e.get("valueUpdate"),l=null;d&&("string"==typeof d?h=[d]:h=d?d.filter((q,t)=>d.indexOf(q)===t):[],a.a.Da(h,"change"));var k=()=>{l=null;var q=c(),t=a.v.N(b);a.u.$b(q,e,"value",t)};a.a.Y(h,q=>{var t=k;a.a.ud(q,"after")&&(t=()=>{l=a.v.N(b);a.a.setTimeout(k,0)},q=q.substring(5));a.a.L(b,q,t)});var m=f&&"file"==b.type?()=>{var q=a.a.i(c());
null===q||void 0===q||""===q?b.value="":a.o.I(k)}:()=>{var q=a.a.i(c()),t=a.v.N(b);if(null!==l&&q===l)a.a.setTimeout(m,0);else if(q!==t||void 0===t)"select"===g?(t=e.get("valueAllowUnset"),a.v.Ra(b,q,t),t||q===a.v.N(b)||a.o.I(k)):a.v.Ra(b,q)};if("select"===g){var n;a.h.subscribe(b,a.h.G,()=>{n?e.get("valueAllowUnset")?m():k():(a.a.L(b,"change",k),n=a.l(m,null,{m:b}))},null,{notifyImmediately:!0})}else a.a.L(b,"change",k),a.l(m,null,{m:b})}else a.Va(b,{checkedValue:c})},update:()=>{}};a.u.ob.value=
!0;a.g.visible={update:(b,c)=>{c=a.a.i(c());var e="none"!=b.style.display;c&&!e?b.style.display="":e&&!c&&(b.style.display="none")}};a.g.hidden={update:(b,c)=>b.hidden=!!a.a.i(c())};(function(b){a.g[b]={init:function(c,e,g,f,h){return a.g.event.init.call(this,c,()=>{var d={};d[b]=e();return d},g,f,h)}}})("click");a.da=function(){};a.da.prototype.renderTemplateSource=()=>{throw Error("Override renderTemplateSource");};a.da.prototype.createJavaScriptEvaluatorBlock=()=>{throw Error("Override createJavaScriptEvaluatorBlock");
};a.da.prototype.makeTemplateSource=(b,c)=>{if("string"==typeof b){c=c||W;c=c.getElementById(b);if(!c)throw Error("Cannot find template with ID "+b);return new a.B.C(c)}if(1==b.nodeType||8==b.nodeType)return new a.B.fa(b);throw Error("Unknown template type: "+b);};a.da.prototype.renderTemplate=function(b,c,e,g){b=this.makeTemplateSource(b,g);return this.renderTemplateSource(b,c,e,g)};a.da.prototype.isTemplateRewritten=function(b,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(b,
c).data("isRewritten")};a.da.prototype.rewriteTemplate=function(b,c,e){b=this.makeTemplateSource(b,e);c=c(b.text());b.text(c);b.data("isRewritten",!0)};a.b("templateEngine",a.da);a.Yb=(()=>{function b(g,f,h,d){g=a.u.Nb(g);for(var l=a.u.Fa,k=0;k<g.length;k++){var m=g[k].key;if(Object.prototype.hasOwnProperty.call(l,m)){var n=l[m];if("function"===typeof n){if(m=n(g[k].value))throw Error(m);}else if(!n)throw Error("This template engine does not support the '"+m+"' binding within its templates");}}h=
"ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.u.Ob(g,{valueAccessors:!0})+" } })()},'"+h.toLowerCase()+"')";return d.createJavaScriptEvaluatorBlock(h)+f}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:"[^"]*"|'[^']*'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,e=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{cd:(g,f,h)=>{f.isTemplateRewritten(g,h)||f.rewriteTemplate(g,d=>a.Yb.od(d,f),h)},od:(g,f)=>g.replace(c,(...h)=>b(h[4],h[1],h[2],f)).replace(e,
(...h)=>b(h[1],"\x3c!-- ko --\x3e","#comment",f)),Vc:(g,f)=>a.W.Jb((h,d)=>{(h=h.nextSibling)&&h.nodeName.toLowerCase()===f&&a.Va(h,g,d)})}})();a.b("__tr_ambtns",a.Yb.Vc);(()=>{a.B={};a.B.C=function(e){if(this.C=e){var g=a.a.ia(e);this.Na="script"===g?1:"textarea"===g?2:"template"==g&&e.content&&11===e.content.nodeType?3:4}};a.B.C.prototype.text=function(){var e=1===this.Na?"text":2===this.Na?"value":"innerHTML";if(0==arguments.length)return this.C[e];var g=arguments[0];"innerHTML"===e?a.a.Ub(this.C,
g):this.C[e]=g};var b=a.a.f.ca()+"_";a.B.C.prototype.data=function(e){if(1===arguments.length)return a.a.f.get(this.C,b+e);a.a.f.set(this.C,b+e,arguments[1])};var c=a.a.f.ca();a.B.C.prototype.nodes=function(){var e=this.C;if(0==arguments.length){var g=a.a.f.get(e,c)||{},f=g.Xa||(3===this.Na?e.content:4===this.Na?e:void 0);if(!f||g.Sc){var h=this.text();h&&h!==g.Oa&&(f=a.a.qd(h,e.ownerDocument),a.a.f.set(e,c,{Xa:f,Oa:h,Sc:!0}))}return f}g=arguments[0];void 0!==this.Na&&this.text("");a.a.f.set(e,c,
{Xa:g})};a.B.fa=function(e){this.C=e};a.B.fa.prototype=new a.B.C;a.B.fa.prototype.constructor=a.B.fa;a.B.fa.prototype.text=function(){if(0==arguments.length){var e=a.a.f.get(this.C,c)||{};void 0===e.Oa&&e.Xa&&(e.Oa=e.Xa.innerHTML);return e.Oa}a.a.f.set(this.C,c,{Oa:arguments[0]})};a.b("templateSources",a.B);a.b("templateSources.domElement",a.B.C);a.b("templateSources.anonymousTemplate",a.B.fa)})();(function(){function b(k,m,n){var q;for(m=a.c.nextSibling(m);k&&(q=k)!==m;)k=a.c.nextSibling(q),n(q,
k)}function c(k,m){if(k.length){var n=k[0],q=k[k.length-1],t=n.parentNode,x=a.aa.instance,u=x.preprocessNode;if(u){b(n,q,(w,p)=>{var r=w.previousSibling,v=u.call(x,w);v&&(w===n&&(n=v[0]||p),w===q&&(q=v[v.length-1]||r))});k.length=0;if(!n)return;n===q?k.push(n):(k.push(n,q),a.a.Ia(k,t))}b(n,q,w=>{1!==w.nodeType&&8!==w.nodeType||a.lc(m,w)});b(n,q,w=>{1!==w.nodeType&&8!==w.nodeType||a.W.Mc(w,[m])});a.a.Ia(k,t)}}function e(k){return k.nodeType?k:0<k.length?k[0]:null}function g(k,m,n,q,t){t=t||{};var x=
(k&&e(k)||n||{}).ownerDocument,u=t.templateEngine||h;a.Yb.cd(n,u,x);n=u.renderTemplate(n,q,t,x);if("number"!=typeof n.length||0<n.length&&"number"!=typeof n[0].nodeType)throw Error("Template engine must return an array of DOM nodes");x=!1;switch(m){case "replaceChildren":a.c.pa(k,n);x=!0;break;case "replaceNode":a.a.Ic(k,n);x=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+m);}x&&(c(n,q),t.afterRender&&a.o.I(t.afterRender,null,[n,q[t.as||"$data"]]),"replaceChildren"==
m&&a.h.notify(k,a.h.G));return n}function f(k,m,n){return a.S(k)?k():"function"===typeof k?k(m,n):k}var h;a.Jc=k=>{if(void 0!=k&&!(k instanceof a.da))throw Error("templateEngine must inherit from ko.templateEngine");h=k};a.Rb=function(k,m,n,q,t){n=n||{};if(void 0==(n.templateEngine||h))throw Error("Set a template engine before calling renderTemplate");t=t||"replaceChildren";if(q){var x=e(q);return a.l(()=>{var u=m&&m instanceof a.$?m:new a.$(m,null,null,null,{exportDependencies:!0}),w=f(k,u.$data,
u);u=g(q,t,w,u,n);"replaceNode"==t&&(q=u,x=e(q))},null,{Ha:()=>!x||!a.a.Bb(x),m:x&&"replaceNode"==t?x.parentNode:x})}return a.W.Jb(u=>a.Rb(k,m,n,u,"replaceNode"))};a.rd=(k,m,n,q,t)=>{function x(B,z){a.o.I(a.a.Tb,null,[q,B,p,n,r,z]);a.h.notify(q,a.h.G)}var u,w=n.as,p=(B,z)=>{u=t.createChildContext(B,{as:w,noChildContext:n.noChildContext,extend:C=>{C.$index=z;w&&(C[w+"Index"]=z)}});B=f(k,B,u);return g(q,"ignoreTargetNode",B,u,n)},r=(B,z)=>{c(z,u);n.afterRender&&n.afterRender(z,B);u=null},v=!1===n.includeDestroyed;
if(v||n.beforeRemove||!a.Bc(m))return a.l(()=>{var B=a.a.i(m)||[];"undefined"==typeof B.length&&(B=[B]);v&&(B=B.filter(z=>z||null==z));x(B)},null,{m:q});x(m.A());var y=m.subscribe(B=>{x(m(),B)},null,"arrayChange");y.m(q);return y};var d=a.a.f.ca(),l=a.a.f.ca();a.g.template={init:(k,m)=>{m=a.a.i(m());if("string"==typeof m||"name"in m)a.c.sa(k);else if("nodes"in m){m=m.nodes||[];if(a.S(m))throw Error('The "nodes" option must be a plain, non-observable array.');let n=m[0]&&m[0].parentNode;n&&a.a.f.get(n,
l)||(n=a.a.Kb(m),a.a.f.set(n,l,!0));(new a.B.fa(k)).nodes(n)}else if(m=a.c.childNodes(k),0<m.length)m=a.a.Kb(m),(new a.B.fa(k)).nodes(m);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:(k,m,n,q,t)=>{var x=m();m=a.a.i(x);n=!0;q=null;"string"==typeof m?m={}:(x="name"in m?m.name:k,"if"in m&&(n=a.a.i(m["if"])),n&&"ifnot"in m&&(n=!a.a.i(m.ifnot)),n&&!x&&(n=!1));"foreach"in m?q=a.rd(x,n&&m.foreach||[],m,k,t):n?(n=t,"data"in
m&&(n=t.createChildContext(m.data,{as:m.as,noChildContext:m.noChildContext,exportDependencies:!0})),q=a.Rb(x,n,m,k)):a.c.sa(k);t=q;(m=a.a.f.get(k,d))&&"function"==typeof m.s&&m.s();a.a.f.set(k,d,!t||t.ga&&!t.ga()?void 0:t)}};a.u.Fa.template=k=>{k=a.u.Nb(k);return 1==k.length&&k[0].unknown||a.u.md(k,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.c.ja.template=!0})();a.b("setTemplateEngine",a.Jc);a.b("renderTemplate",a.Rb);a.a.xc=(b,c,e)=>{if(b.length&&
c.length){var g,f,h,d,l;for(g=f=0;(!e||g<e)&&(d=b[f]);++f){for(h=0;l=c[h];++h)if(d.value===l.value){d.moved=l.index;l.moved=d.index;c.splice(h,1);g=h=0;break}g+=h}}};a.a.xb=(()=>{function b(c,e,g,f,h){var d=Math.min,l=Math.max,k=[],m,n=c.length,q,t=e.length,x=t-n||1,u=n+t+1,w;for(m=0;m<=n;m++){var p=w;k.push(w=[]);var r=d(t,m+x);for(q=l(0,m-1);q<=r;q++)w[q]=q?m?c[m-1]===e[q-1]?p[q-1]:d(p[q]||u,w[q-1]||u)+1:q+1:m+1}d=[];l=[];x=[];m=n;for(q=t;m||q;)t=k[m][q]-1,q&&t===k[m][q-1]?l.push(d[d.length]={status:g,
value:e[--q],index:q}):m&&t===k[m-1][q]?x.push(d[d.length]={status:f,value:c[--m],index:m}):(--q,--m,h.sparse||d.push({status:"retained",value:e[q]}));a.a.xc(x,l,!h.dontLimitMoves&&10*n);return d.reverse()}return function(c,e,g){g="boolean"===typeof g?{dontLimitMoves:g}:g||{};c=c||[];e=e||[];return c.length<e.length?b(c,e,"added","deleted",g):b(e,c,"deleted","added",g)}})();a.b("utils.compareArrays",a.a.xb);(()=>{function b(g,f,h,d,l){var k=[],m=a.l(()=>{var n=f(h,l,a.a.Ia(k,g))||[];0<k.length&&(a.a.Ic(k,
n),d&&a.o.I(d,null,[h,n,l]));k.length=0;a.a.vb(k,n)},null,{m:g,Ha:function(){return!a.a.Tc(k)}});return{U:k,yb:m.ga()?m:void 0}}var c=a.a.f.ca(),e=a.a.f.ca();a.a.Tb=(g,f,h,d,l,k)=>{function m(K){A={qa:K,ab:a.oa(p++)};u.push(A);x||z.push(A)}function n(K){A=t[K];p!==A.ab.A()&&B.push(A);A.ab(p++);a.a.Ia(A.U,g);u.push(A)}function q(K,L){if(K)for(var M=0,D=L.length;M<D;M++)a.a.Y(L[M].U,function(T){K(T,M,L[M].qa)})}f=f||[];"undefined"==typeof f.length&&(f=[f]);d=d||{};var t=a.a.f.get(g,c),x=!t,u=[],w=0,
p=0,r=[],v=[],y=[],B=[],z=[],C=0;if(x)a.a.Y(f,m);else{if(!k||t&&t._countWaitingForRemove)k=Array.prototype.map.call(t,K=>K.qa),k=a.a.xb(k,f,{dontLimitMoves:d.dontLimitMoves,sparse:!0});for(let K=0,L,M,D;L=k[K];K++)switch(M=L.moved,D=L.index,L.status){case "deleted":for(;w<D;)n(w++);if(void 0===M){var A=t[w];A.yb&&(A.yb.s(),A.yb=void 0);a.a.Ia(A.U,g).length&&(d.beforeRemove&&(u.push(A),C++,A.qa===e?A=null:y.push(A)),A&&r.push.apply(r,A.U))}w++;break;case "added":for(;p<D;)n(w++);void 0!==M?(v.push(u.length),
n(M)):m(L.value)}for(;p<f.length;)n(w++);u._countWaitingForRemove=C}a.a.f.set(g,c,u);q(d.beforeMove,B);a.a.Y(r,d.beforeRemove?a.ka:a.removeNode);var H,O;C=g.ownerDocument.activeElement;if(v.length)for(;void 0!=(f=v.shift());){A=u[f];for(H=void 0;f;)if((O=u[--f].U)&&O.length){H=O[O.length-1];break}for(w=0;r=A.U[w];H=r,w++)a.c.Gb(g,r,H)}for(f=0;A=u[f];f++){A.U||a.a.extend(A,b(g,h,A.qa,l,A.ab));for(w=0;r=A.U[w];H=r,w++)a.c.Gb(g,r,H);!A.jd&&l&&(l(A.qa,A.U,A.ab),A.jd=!0,H=A.U[A.U.length-1])}C&&g.ownerDocument.activeElement!=
C&&C.focus();q(d.beforeRemove,y);for(f=0;f<y.length;++f)y[f].qa=e;q(d.afterMove,B);q(d.afterAdd,z)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Tb);a.X=function(){this.allowTemplateRewriting=!1};a.X.prototype=new a.da;a.X.prototype.constructor=a.X;a.X.prototype.renderTemplateSource=(b,c,e,g)=>{if(c=b.pd?b.pd():null)return a.a.va(c.cloneNode(!0).childNodes);b=b.text();return a.a.Ma(b,g)};a.X.instance=new a.X;a.Jc(a.X.instance);a.b("nativeTemplateEngine",a.X);F.ko=Z})(this);
(E=>{function I(b,c){return null===b||typeof b in ha?b===c:!1}function G(b,c){var e;return()=>{e||(e=a.a.setTimeout(()=>{e=void 0;b()},c))}}function J(b,c){var e;return()=>{clearTimeout(e);e=a.a.setTimeout(b,c)}}function U(b,c){null!==c&&c.o&&c.o()}function Y(b,c){var e=this.Fc,f=e[F];f.ia||(this.lb&&this.Qa[c]?(e.Sb(c,b,this.Qa[c]),this.Qa[c]=null,--this.lb):f.u[c]||e.Sb(c,b,f.A?{Y:b}:e.sc(b)),b.ta&&b.wc())}var V=E.document,Z={},a="undefined"!==typeof Z?Z:{};a.s=(b,c)=>{b=b.split(".");for(var e=
a,f=0;f<b.length-1;f++)e=e[b[f]];e[b[b.length-1]]=c};a.ba=(b,c,e)=>{b[c]=e};a.version="3.5.1-sm";a.s("version",a.version);a.a=(()=>{const b=(h,l,d,g)=>Array.prototype[h].call(l,d,g),c=(h,l)=>{l&&Object.entries(l).forEach(d=>h[d[0]]=d[1]);return h},e=(h,l)=>{h.__proto__=l;return h};var f={__proto__:[]}instanceof Array;return{Z:(h,l,d)=>Array.prototype.forEach.call(h,l,d),$:(h,l)=>Array.prototype.indexOf.call(h,l,void 0),Vb:(h,l,d)=>b("find",h,(g,k,m)=>l.call(d,g,k,m)),Ma:(h,l)=>{l=a.a.$(h,l);0<l?h.splice(l,
1):0===l&&h.shift()},Ac:(h,l)=>{if(l instanceof Array)h.push.apply(h,l);else for(var d=0,g=l.length;d<g;d++)h.push(l[d]);return h},na:f,extend:c,setPrototypeOf:e,Za:f?e:c,J:(h,l)=>h&&Object.entries(h).forEach(d=>l(d[0],d[1])),Ea:(h,l,d)=>{if(!h)return h;var g={};Object.entries(h).forEach(k=>g[k[0]]=l.call(d,k[1],k[0],h));return g},ob:h=>{for(;h.firstChild;)a.removeNode(h.firstChild)},wb:h=>{var l=a.a.qa(h),d=(l[0]&&l[0].ownerDocument||V).createElement("div");h.forEach(g=>d.append(a.oa(g)));return d},
Oa:(h,l)=>b("map",h,l?d=>a.oa(d.cloneNode(!0)):d=>d.cloneNode(!0)),Fa:(h,l)=>{a.a.ob(h);l&&h.append.apply(h,l)},Ba:(h,l)=>{if(h.length){for(l=8===l.nodeType&&l.parentNode||l;h.length&&h[0].parentNode!==l;)h.splice(0,1);for(;1<h.length&&h[h.length-1].parentNode!==l;)h.length--;if(1<h.length){l=h[0];var d=h[h.length-1];for(h.length=0;l!==d;)h.push(l),l=l.nextSibling;h.push(d)}}return h},Db:h=>null==h?"":h.trim?h.trim():h.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,""),cd:(h,l)=>{h=h||"";return l.length>
h.length?!1:h.substring(0,l.length)===l},Ic:(h,l)=>l.contains(1!==h.nodeType?h.parentNode:h),nb:h=>a.a.Ic(h,h.ownerDocument.documentElement),da:h=>h&&h.tagName&&h.tagName.toLowerCase(),Zb:h=>a.onError?function(){try{return h.apply(this,arguments)}catch(l){throw a.onError&&a.onError(l),l;}}:h,setTimeout:(h,l)=>setTimeout(a.a.Zb(h),l),cc:h=>setTimeout(()=>{a.onError&&a.onError(h);throw h;},0),K:(h,l,d)=>{h.addEventListener(l,a.a.Zb(d),!1)},tc:(h,l)=>{if(!h||!h.nodeType)throw Error("element must be a DOM node when calling triggerEvent");
h.dispatchEvent(new Event(l))},g:h=>a.O(h)?h():h,Wc:h=>a.O(h)?h.D():h,Hb:(h,l,d)=>{if(l){var g=d?"add":"remove";l.split(/\s+/).forEach(k=>h.classList[g](k))}},Bb:(h,l)=>h.textContent=a.a.g(l)||"",qa:h=>Array.from(h)}})();a.s("utils",a.a);a.s("unwrap",a.a.g);a.a.b=new function(){var b=0,c="__ko__"+Date.now(),e=(f,h)=>{var l=f[c];!l&&h&&(l=f[c]={});return l};return{get:(f,h)=>(f=e(f,!1))&&f[h],set:(f,h,l)=>{(f=e(f,void 0!==l))&&(f[h]=l)},rb:(f,h,l)=>{f=e(f,!0);return f[h]||(f[h]=l)},clear:f=>f[c]?(delete f[c],
!0):!1,X:()=>b++ +c}};a.a.N=new function(){function b(d,g){var k=a.a.b.get(d,f);void 0===k&&g&&(k=[],a.a.b.set(d,f,k));return k}function c(d){var g=b(d,!1);if(g){g=g.slice(0);for(var k=0;k<g.length;k++)g[k](d)}a.a.b.clear(d);l[d.nodeType]&&e(d.childNodes,!0)}function e(d,g){for(var k=[],m,p=0;p<d.length;p++)if(!g||8===d[p].nodeType)if(c(k[k.length]=m=d[p]),d[p]!==m)for(;p--&&-1==a.a.$(k,d[p]););}var f=a.a.b.X(),h={1:!0,8:!0,9:!0},l={1:!0,9:!0};return{wa:(d,g)=>{if("function"!=typeof g)throw Error("Callback must be a function");
b(d,!0).push(g)},Ab:(d,g)=>{var k=b(d,!1);k&&(a.a.Ma(k,g),0==k.length&&a.a.b.set(d,f,void 0))},oa:d=>{a.m.I(()=>{h[d.nodeType]&&(c(d),l[d.nodeType]&&e(d.getElementsByTagName("*")))});return d},removeNode:d=>{a.oa(d);d.parentNode&&d.parentNode.removeChild(d)}}};a.oa=a.a.N.oa;a.removeNode=a.a.N.removeNode;a.s("utils.domNodeDisposal",a.a.N);a.s("utils.domNodeDisposal.addDisposeCallback",a.a.N.wa);(()=>{var b=[0,"",""],c=[1,"<table>","</table>"],e=[3,"<table><tbody><tr>","</tr></tbody></table>"],f=[1,
"<select multiple='multiple'>","</select>"],h={thead:c,tbody:c,tfoot:c,tr:[2,"<table><tbody>","</tbody></table>"],td:e,th:e,option:f,optgroup:f};a.a.Ya=(l,d)=>{var g=d;g||(g=V);d=g.parentWindow||g.defaultView||E;var k=a.a.Db(l).toLowerCase();g=g.createElement("div");var m=(k=k.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&h[k[1]]||b;k=m[0];l="ignored<div>"+m[1]+l+m[2]+"</div>";for("function"==typeof d.innerShiv?g.append(d.innerShiv(l)):g.innerHTML=l;k--;)g=g.lastChild;return a.a.qa(g.lastChild.childNodes)};
a.a.Uc=(l,d)=>{l=a.a.Ya(l,d);return l.length&&l[0].parentElement||a.a.wb(l)};a.a.rc=(l,d)=>{a.a.ob(l);d=a.a.g(d);if(null!==d&&void 0!==d){"string"!=typeof d&&(d=d.toString());d=a.a.Ya(d,l.ownerDocument);for(var g=0;g<d.length;g++)l.appendChild(d[g])}}})();a.Gb=(()=>{function b(){if(e)for(var d=e,g=0,k;h<e;)if(k=c[h++]){if(h>d){if(5E3<=++g){h=e;a.a.cc(Error("'Too much recursion' after processing "+g+" task groups."));break}d=e}try{k()}catch(m){a.a.cc(m)}}h=e=c.length=0}var c=[],e=0,f=1,h=0,l=(d=>{var g=
V.createElement("div");(new MutationObserver(d)).observe(g,{attributes:!0});return()=>g.classList.toggle("foo")})(b);return{pc:d=>{e||l(b);c[e++]=d;return f++},cancel:d=>{d-=f-e;d>=h&&d<e&&(c[d]=null)}}})();a.s("tasks",a.Gb);a.pb={throttle:(b,c)=>{b.throttleEvaluation=c;var e=null;return a.i({read:b,write:f=>{clearTimeout(e);e=a.a.setTimeout(()=>b(f),c)}})},rateLimit:(b,c)=>{if("number"==typeof c)var e=c;else{e=c.timeout;var f=c.method}var h="function"==typeof f?f:"notifyWhenChangesStop"==f?J:G;b.vb(l=>
h(l,e,c))},notify:(b,c)=>{b.equalityComparer="always"==c?null:I}};var ha={undefined:1,"boolean":1,number:1,string:1};a.s("extenders",a.pb);a.Eb=function(b,c,e){this.Y=b;this.Jb=c;this.Kb=e;this.eb=!1;this.Ja=this.fb=null;a.ba(this,"dispose",this.o);a.ba(this,"disposeWhenNodeIsRemoved",this.j)};a.Eb.prototype.o=function(){this.eb||(this.Ja&&a.a.N.Ab(this.fb,this.Ja),this.eb=!0,this.Kb(),this.Y=this.Jb=this.Kb=this.fb=this.Ja=null)};a.Eb.prototype.j=function(b){this.fb=b;a.a.N.wa(b,this.Ja=this.o.bind(this))};
a.T=function(){a.a.Za(this,O);O.Va(this)};var O={Va:b=>{b.L={change:[]};b.Qb=1},subscribe:function(b,c,e){var f=this;e=e||"change";var h=new a.Eb(f,c?b.bind(c):b,()=>{a.a.Ma(f.L[e],h);f.La&&f.La(e)});f.xa&&f.xa(e);f.L[e]||(f.L[e]=[]);f.L[e].push(h);return h},notifySubscribers:function(b,c){c=c||"change";"change"===c&&this.ab();if(this.Ca(c)){c="change"===c&&this.uc||this.L[c].slice(0);try{a.m.Wb();for(var e=0,f;f=c[e];++e)f.eb||f.Jb(b)}finally{a.m.end()}}},Ta:function(){return this.Qb},Nc:function(b){return this.Ta()!==
b},ab:function(){++this.Qb},vb:function(b){var c=this,e=a.O(c),f,h,l,d,g;c.Ka||(c.Ka=c.notifySubscribers,c.notifySubscribers=function(m,p){p&&"change"!==p?"beforeChange"===p?this.Nb(m):this.Ka(m,p):this.Ob(m)});var k=b(()=>{c.ta=!1;e&&d===c&&(d=c.Lb?c.Lb():c());var m=h||g&&c.Xa(l,d);g=h=f=!1;m&&c.Ka(l=d)});c.Ob=(m,p)=>{p&&c.ta||(g=!p);c.uc=c.L.change.slice(0);c.ta=f=!0;d=m;k()};c.Nb=m=>{f||(l=m,c.Ka(m,"beforeChange"))};c.Pb=()=>{g=!0};c.wc=()=>{c.Xa(l,c.D(!0))&&(h=!0)}},Ca:function(b){return this.L[b]&&
this.L[b].length},Lc:function(b){if(b)return this.L[b]&&this.L[b].length||0;var c=0;a.a.J(this.L,(e,f)=>c+=f.length);return c},Xa:function(b,c){return!this.equalityComparer||!this.equalityComparer(b,c)},toString:()=>"[object Object]",extend:function(b){var c=this;b&&a.a.J(b,(e,f)=>{e=a.pb[e];"function"==typeof e&&(c=e(c,f)||c)});return c}};a.ba(O,"init",O.Va);a.ba(O,"subscribe",O.subscribe);a.ba(O,"extend",O.extend);a.ba(O,"getSubscriptionsCount",O.Lc);a.a.na&&a.a.setPrototypeOf(O,Function.prototype);
a.T.fn=O;a.Qc=b=>null!=b&&"function"==typeof b.subscribe&&"function"==typeof b.notifySubscribers;a.ya=a.m=(()=>{function b(l){e.push(f);f=l}function c(){f=e.pop()}var e=[],f,h=0;return{Wb:b,end:c,oc:l=>{if(f){if(!a.Qc(l))throw Error("Only subscribable things can act as dependencies");f.Cc.call(f.Dc,l,l.vc||(l.vc=++h))}},I:(l,d,g)=>{try{return b(),l.apply(d,g||[])}finally{c()}},Sa:()=>{if(f)return f.i.Sa()},qb:()=>{if(f)return f.i.qb()},tb:()=>{if(f)return f.tb},i:()=>{if(f)return f.i}}})();var P=
Symbol("_latestValue");a.ka=b=>{function c(){if(0<arguments.length)return c.Xa(c[P],arguments[0])&&(c.bb(),c[P]=arguments[0],c.Ia()),this;a.m.oc(c);return c[P]}c[P]=b;a.a.na||a.a.extend(c,a.T.fn);a.T.fn.Va(c);a.a.Za(c,Q);return c};var Q={equalityComparer:I,D:function(){return this[P]},Ia:function(){this.notifySubscribers(this[P],"spectate");this.notifySubscribers(this[P])},bb:function(){this.notifySubscribers(this[P],"beforeChange")}};a.a.na&&a.a.setPrototypeOf(Q,a.T.fn);var R=a.ka.xc="__ko_proto__";
Q[R]=a.ka;a.O=b=>{if((b="function"==typeof b&&b[R])&&b!==Q[R]&&b!==a.i.fn[R])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!b};a.kc=b=>"function"==typeof b&&(b[R]===Q[R]||b[R]===a.i.fn[R]&&b.ic);a.s("observable",a.ka);a.s("isObservable",a.O);a.s("observable.fn",Q);a.ba(Q,"valueHasMutated",Q.Ia);a.ra=b=>{b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
b=a.ka(b);a.a.Za(b,a.ra.fn);return b.extend({trackArrayChanges:!0})};a.ra.fn={remove:function(b){for(var c=this.D(),e=[],f="function"!=typeof b||a.O(b)?function(d){return d===b}:b,h=0;h<c.length;h++){var l=c[h];if(f(l)){0===e.length&&this.bb();if(c[h]!==l)throw Error("Array modified during remove; cannot remove item");e.push(l);c.splice(h,1);h--}}e.length&&this.Ia();return e},removeAll:function(b){if(void 0===b){var c=this.D(),e=c.slice(0);this.bb();c.splice(0,c.length);this.Ia();return e}return b?
this.remove(function(f){return 0<=a.a.$(b,f)}):[]},indexOf:function(b){return a.a.$(this(),b)}};a.a.na&&a.a.setPrototypeOf(a.ra.fn,a.ka.fn);"pop push reverse shift sort splice unshift".split(" ").forEach(b=>{a.ra.fn[b]=function(){var c=this.D();this.bb();this.Yb(c,b,arguments);var e=c[b].apply(c,arguments);this.Ia();return e===c?this:e}});["slice"].forEach(b=>{a.ra.fn[b]=function(){var c=this();return c[b].apply(c,arguments)}});a.Pc=b=>a.O(b)&&"function"==typeof b.remove&&"function"==typeof b.push;
a.s("observableArray",a.ra);a.pb.trackArrayChanges=(b,c)=>{function e(){function q(){if(g){var u=[].concat(b.D()||[]);if(b.Ca("arrayChange")){if(!h||1<g)h=a.a.$b(k,u,b.jb);var y=h}k=u;h=null;g=0;y&&y.length&&b.notifySubscribers(y,"arrayChange")}}f?q():(f=!0,d=b.subscribe(()=>++g,null,"spectate"),k=[].concat(b.D()||[]),h=null,l=b.subscribe(q))}b.jb={};c&&"object"==typeof c&&a.a.extend(b.jb,c);b.jb.sparse=!0;if(!b.Yb){var f=!1,h=null,l,d,g=0,k,m=b.xa,p=b.La;b.xa=q=>{m&&m.call(b,q);"arrayChange"===q&&
e()};b.La=q=>{p&&p.call(b,q);"arrayChange"!==q||b.Ca("arrayChange")||(l&&l.o(),d&&d.o(),d=l=null,f=!1,k=void 0)};b.Yb=(q,u,y)=>{function t(C,A,H){return x[x.length]={status:C,value:A,index:H}}if(f&&!g){var x=[],n=q.length,r=y.length,v=0;switch(u){case "push":v=n;case "unshift":for(u=0;u<r;u++)t("added",y[u],v+u);break;case "pop":v=n-1;case "shift":n&&t("deleted",q[v],v);break;case "splice":u=Math.min(Math.max(0,0>y[0]?n+y[0]:y[0]),n);n=1===r?n:Math.min(u+(y[1]||0),n);r=u+r-2;v=Math.max(n,r);for(var w=
[],B=[],z=2;u<v;++u,++z)u<n&&B.push(t("deleted",q[u],u)),u<r&&w.push(t("added",y[z],u));a.a.fc(B,w);break;default:return}h=x}}}};var F=Symbol("_state");a.i=function(b,c,e){function f(){if(0<arguments.length){if("function"===typeof h)h.apply(l.Ra,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}l.ia||a.m.oc(f);(l.ca||l.A&&f.Da())&&f.V();return l.P}"object"===typeof b?
e=b:(e=e||{},b&&(e.read=b));if("function"!=typeof e.read)throw Error("Pass a function that returns the value of the ko.computed");var h=e.write,l={P:void 0,ja:!0,ca:!0,Wa:!1,Fb:!1,ia:!1,zb:!1,A:!1,nc:e.read,Ra:c||e.owner,j:e.disposeWhenNodeIsRemoved||e.j||null,za:e.disposeWhen||e.za,mb:null,u:{},M:0,ec:null};f[F]=l;f.ic="function"===typeof h;a.a.na||a.a.extend(f,a.T.fn);a.T.fn.Va(f);a.a.Za(f,W);e.pure?(l.zb=!0,l.A=!0,a.a.extend(f,ia)):e.deferEvaluation&&a.a.extend(f,ja);l.j&&(l.Fb=!0,l.j.nodeType||
(l.j=null));l.A||e.deferEvaluation||f.V();l.j&&f.ha()&&a.a.N.wa(l.j,l.mb=function(){f.o()});return f};var W={equalityComparer:I,Sa:function(){return this[F].M},qb:function(){var b=[];a.a.J(this[F].u,(c,e)=>b[e.ua]=e.Y);return b},sb:function(b){if(!this[F].M)return!1;var c=this.qb();return-1!==a.a.$(c,b)?!0:!!a.a.Vb(c,e=>e.sb&&e.sb(b))},Sb:function(b,c,e){if(this[F].zb&&c===this)throw Error("A 'pure' computed must not be called recursively");this[F].u[b]=e;e.ua=this[F].M++;e.va=c.Ta()},Da:function(){var b,
c=this[F].u;for(b in c)if(Object.prototype.hasOwnProperty.call(c,b)){var e=c[b];if(this.sa&&e.Y.ta||e.Y.Nc(e.va))return!0}},fd:function(){this.sa&&!this[F].Wa&&this.sa(!1)},ha:function(){var b=this[F];return b.ca||0<b.M},gd:function(){this.ta?this[F].ca&&(this[F].ja=!0):this.dc()},sc:function(b){return b.subscribe(this.dc,this)},dc:function(){var b=this,c=b.throttleEvaluation;c&&0<=c?(clearTimeout(this[F].ec),this[F].ec=a.a.setTimeout(()=>b.V(!0),c)):b.sa?b.sa(!0):b.V(!0)},V:function(b){var c=this[F],
e=c.za,f=!1;if(!c.Wa&&!c.ia){if(c.j&&!a.a.nb(c.j)||e&&e()){if(!c.Fb){this.o();return}}else c.Fb=!1;c.Wa=!0;try{f=this.Kc(b)}finally{c.Wa=!1}return f}},Kc:function(b){var c=this[F],e=c.zb?void 0:!c.M;var f={Fc:this,Qa:c.u,lb:c.M};a.m.Wb({Dc:f,Cc:Y,i:this,tb:e});c.u={};c.M=0;var h=this.Jc(c,f);c.M?f=this.Xa(c.P,h):(this.o(),f=!0);f&&(c.A?this.ab():this.notifySubscribers(c.P,"beforeChange"),c.P=h,this.notifySubscribers(c.P,"spectate"),!c.A&&b&&this.notifySubscribers(c.P),this.Pb&&this.Pb());e&&this.notifySubscribers(c.P,
"awake");return f},Jc:(b,c)=>{try{var e=b.nc;return b.Ra?e.call(b.Ra):e()}finally{a.m.end(),c.lb&&!b.A&&a.a.J(c.Qa,U),b.ja=b.ca=!1}},D:function(b){var c=this[F];(c.ca&&(b||!c.M)||c.A&&this.Da())&&this.V();return c.P},vb:function(b){a.T.fn.vb.call(this,b);this.Lb=function(){this[F].A||(this[F].ja?this.V():this[F].ca=!1);return this[F].P};this.sa=function(c){this.Nb(this[F].P);this[F].ca=!0;c&&(this[F].ja=!0);this.Ob(this,!c)}},o:function(){var b=this[F];!b.A&&b.u&&a.a.J(b.u,(c,e)=>e.o&&e.o());b.j&&
b.mb&&a.a.N.Ab(b.j,b.mb);b.u=void 0;b.M=0;b.ia=!0;b.ja=!1;b.ca=!1;b.A=!1;b.j=void 0;b.za=void 0;b.nc=void 0;this.ic||(b.Ra=void 0)}},ia={xa:function(b){var c=this,e=c[F];if(!e.ia&&e.A&&"change"==b){e.A=!1;if(e.ja||c.Da())e.u=null,e.M=0,c.V()&&c.ab();else{var f=[];a.a.J(e.u,(h,l)=>f[l.ua]=h);a.a.Z(f,(h,l)=>{var d=e.u[h],g=c.sc(d.Y);g.ua=l;g.va=d.va;e.u[h]=g});c.Da()&&c.V()&&c.ab()}e.ia||c.notifySubscribers(e.P,"awake")}},La:function(b){var c=this[F];c.ia||"change"!=b||this.Ca("change")||(a.a.J(c.u,
(e,f)=>{f.o&&(c.u[e]={Y:f.Y,ua:f.ua,va:f.va},f.o())}),c.A=!0,this.notifySubscribers(void 0,"asleep"))},Ta:function(){var b=this[F];b.A&&(b.ja||this.Da())&&this.V();return a.T.fn.Ta.call(this)}},ja={xa:function(b){"change"!=b&&"beforeChange"!=b||this.D()}};a.a.na&&a.a.setPrototypeOf(W,a.T.fn);W[a.ka.xc]=a.i;a.s("computed",a.i);a.s("computed.fn",W);a.ba(W,"dispose",W.o);a.Yc=b=>{if("function"===typeof b)return a.i(b,void 0,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.i(b,void 0)};(()=>{a.B={S:b=>
{switch(a.a.da(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.b.get(b,a.c.options.yb):b.value;case "select":return 0<=b.selectedIndex?a.B.S(b.options[b.selectedIndex]):void 0;default:return b.value}},cb:(b,c,e)=>{switch(a.a.da(b)){case "option":"string"===typeof c?(a.a.b.set(b,a.c.options.yb,void 0),delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.b.set(b,a.c.options.yb,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c?c:"");break;case "select":if(""===c||null===
c)c=void 0;for(var f=-1,h=0,l=b.options.length,d;h<l;++h)if(d=a.B.S(b.options[h]),d==c||""===d&&void 0===c){f=h;break}if(e||0<=f||void 0===c&&1<b.size)b.selectedIndex=f;break;default:if(null===c||void 0===c)c="";b.value=c}}}})();a.H=(()=>{function b(g){g=a.a.Db(g);123===g.charCodeAt(0)&&(g=g.slice(1,-1));g+="\n,";var k=[],m=g.match(f),p=[],q=0;if(1<m.length){for(var u=0,y;y=m[u];++u){var t=y.charCodeAt(0);if(44===t){if(0>=q){k.push(x&&p.length?{key:x,value:p.join("")}:{unknown:x||p.join("")});var x=
q=0;p=[];continue}}else if(58===t){if(!q&&!x&&1===p.length){x=p.pop();continue}}else if(47===t&&1<y.length&&(47===y.charCodeAt(1)||42===y.charCodeAt(1)))continue;else 47===t&&u&&1<y.length?(t=m[u-1].match(h))&&!l[t[0]]&&(g=g.substr(g.indexOf(y)+1),m=g.match(f),u=-1,y="/"):40===t||123===t||91===t?++q:41===t||125===t||93===t?--q:x||p.length||34!==t&&39!==t||(y=y.slice(1,-1));p.push(y)}if(0<q)throw Error("Unbalanced parentheses, braces, or brackets");}return k}var c=["true","false","null","undefined"],
e=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,f=/"(?:\\.|[^"])*"|'(?:\\.|[^'])*'|`(?:\\.|[^`])*`|\/\*(?:[^*]|\*+[^*/])*\*+\/|\/\/.*\n|\/(?:\\.|[^/])+\/w*|[^\s:,/][^,"'`{}()/:[\]]*[^\s,"'`{}()/:[\]]|[^\s]/g,h=/[\])"'A-Za-z0-9_$]+$/,l={"in":1,"return":1,"typeof":1},d={};return{ib:[],$a:d,Vc:b,Xc:function(g,k){function m(t,x){if(!y){var n=a.getBindingHandler(t);if(n&&n.preprocess&&!(x=n.preprocess(x,t,m)))return;if(n=d[t]){var r=x;0<=a.a.$(c,r)?r=!1:(n=r.match(e),r=null===n?!1:n[1]?"Object("+
n[1]+")"+n[2]:r);n=r}n&&q.push("'"+("string"==typeof d[t]?d[t]:t)+"':function(_z){"+r+"=_z}")}u&&(x="function(){return "+x+" }");p.push("'"+t+"':"+x)}k=k||{};var p=[],q=[],u=k.valueAccessors,y=k.bindingParams;g="string"===typeof g?b(g):g;a.a.Z(g,t=>m(t.key||t.unknown,t.value));q.length&&m("_ko_property_writers","{"+q.join(",")+" }");return p.join(",")},Sc:(g,k)=>{for(var m=0;m<g.length;m++)if(g[m].key==k)return!0;return!1},Ib:(g,k,m,p,q)=>{if(g&&a.O(g))!a.kc(g)||q&&g.D()===p||g(p);else if((g=k.get("_ko_property_writers"))&&
g[m])g[m](p)}}})();(()=>{function b(d){return 8==d.nodeType&&f.test(d.nodeValue)}function c(d){return 8==d.nodeType&&h.test(d.nodeValue)}function e(d,g){for(var k=d,m=1,p=[];k=k.nextSibling;){if(c(k)&&(a.a.b.set(k,l,!0),m--,0===m))return p;p.push(k);b(k)&&m++}if(!g)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}var f=/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=/^\s*\/ko\s*$/,l="__ko_matchedEndComment__";a.h={la:{},childNodes:d=>b(d)?e(d):d.childNodes,Aa:d=>{if(b(d)){d=a.h.childNodes(d);
for(var g=0,k=d.length;g<k;g++)a.removeNode(d[g])}else a.a.ob(d)},Fa:(d,g)=>{if(b(d)){a.h.Aa(d);d=d.nextSibling;for(var k=0,m=g.length;k<m;k++)d.parentNode.insertBefore(g[k],d)}else a.a.Fa(d,g)},prepend:(d,g)=>{if(b(d)){var k=d.nextSibling;d=d.parentNode}else k=d.firstChild;d.insertBefore(g,k)},jc:(d,g,k)=>{k?(k=k.nextSibling,b(d)&&(d=d.parentNode),d.insertBefore(g,k)):a.h.prepend(d,g)},firstChild:d=>{if(!b(d)){if(d.firstChild&&c(d.firstChild))throw Error("Found invalid end comment, as the first child of "+
d);return d.firstChild}return!d.nextSibling||c(d.nextSibling)?null:d.nextSibling},nextSibling:d=>{if(b(d)){var g=e(d,void 0);d=g?0<g.length?g[g.length-1].nextSibling:d.nextSibling:null}if(d.nextSibling&&c(d.nextSibling)){g=d.nextSibling;if(c(g)&&!a.a.b.get(g,l))throw Error("Found end comment without a matching opening comment, as child of "+d);return null}return d.nextSibling},Mc:b,dd:d=>(d=d.nodeValue.match(f))?d[1]:null}})();(function(){a.aa=function(){this.Bc={}};a.a.extend(a.aa.prototype,{nodeHasBindings:b=>
{switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind")||a.l.getComponentNameForNode(b);case 8:return a.h.Mc(b);default:return!1}},getBindings:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b):null;return a.l.Rb(e,b,c,!1)},getBindingAccessors:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b,{valueAccessors:!0}):null;return a.l.Rb(e,b,c,!0)},getBindingsString:b=>{switch(b.nodeType){case 1:return b.getAttribute("data-bind");
case 8:return a.h.dd(b)}return null},parseBindingsString:function(b,c,e,f){try{var h=this.Bc,l=b+(f&&f.valueAccessors||""),d;if(!(d=h[l])){var g="with($context){with($data||{}){return{"+a.H.Xc(b,f)+"}}}";var k=new Function("$context","$element",g);d=h[l]=k}return d(c,e)}catch(m){throw m.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+m.message,m;}}});a.aa.instance=new a.aa})();(()=>{function b(n){var r=(n=a.a.b.get(n,x))&&n.G;r&&(n.G=null,r.mc())}function c(n,r,v){this.node=
n;this.Xb=r;this.Na=[];this.C=!1;r.G||a.a.N.wa(n,b);v&&v.G&&(v.G.Na.push(n),this.gb=v)}function e(n){return a.a.Ea(a.m.I(n),(r,v)=>()=>n()[v])}function f(n,r,v){return"function"===typeof n?e(n.bind(null,r,v)):a.a.Ea(n,w=>()=>w)}function h(n,r){return e(this.getBindings.bind(this,n,r))}function l(n,r){var v=a.h.firstChild(r);if(v){var w,B=a.aa.instance,z=B.preprocessNode;if(z){for(;w=v;)v=a.h.nextSibling(w),z.call(B,w);v=a.h.firstChild(r)}for(;w=v;)v=a.h.nextSibling(w),d(n,w)}a.f.notify(r,a.f.C)}function d(n,
r){var v=n;if(1===r.nodeType||a.aa.instance.nodeHasBindings(r))v=k(r,null,n).bindingContextForDescendants;v&&!y[a.a.da(r)]&&l(v,r)}function g(n){var r=[],v={},w=[];a.a.J(n,function C(z){if(!v[z]){var A=a.getBindingHandler(z);A&&(A.after&&(w.push(z),a.a.Z(A.after,H=>{if(n[H]){if(-1!==a.a.$(w,H))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+w.join(", "));C(H)}}),w.length--),r.push({key:z,hc:A}));v[z]=!0}});return r}function k(n,r,v){var w=a.a.b.rb(n,x,
{}),B=w.yc;if(!r){if(B)throw Error("You cannot apply bindings multiple times to the same element.");w.yc=!0}B||(w.context=v);w.xb||(w.xb={});if(r&&"function"!==typeof r)var z=r;else{var C=a.aa.instance,A=C.getBindingAccessors||h,H=a.i(()=>{if(z=r?r(v,n):A.call(C,n,v)){if(v[p])v[p]();if(v[u])v[u]()}return z},null,{j:n});z&&H.ha()||(H=null)}var N=v,K;if(z){var L=H?D=>()=>H()[D]():D=>z[D];function M(){return a.a.Ea(H?H():z,D=>D())}M.get=D=>z[D]&&L(D)();M.has=D=>D in z;a.f.C in z&&a.f.subscribe(n,a.f.C,
()=>{var D=z[a.f.C]();if(D){var S=a.h.childNodes(n);S.length&&D(S,a.bc(S[0]))}});a.f.ga in z&&(N=a.f.Cb(n,v),a.f.subscribe(n,a.f.ga,()=>{var D=z[a.f.ga]();D&&a.h.firstChild(n)&&D(n)}));w=g(z);a.a.Z(w,D=>{var S=D.hc.init,ca=D.hc.update,T=D.key;if(8===n.nodeType&&!a.h.la[T])throw Error("The binding '"+T+"' cannot be used with virtual elements");try{"function"==typeof S&&a.m.I(()=>{var X=S(n,L(T),M,N.$data,N);if(X&&X.controlsDescendantBindings){if(void 0!==K)throw Error("Multiple bindings ("+K+" and "+
T+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");K=T}}),"function"==typeof ca&&a.i(()=>ca(n,L(T),M,N.$data,N),null,{j:n})}catch(X){throw X.message='Unable to process binding "'+T+": "+z[T]+'"\nMessage: '+X.message,X;}})}w=void 0===K;return{shouldBindDescendants:w,bindingContextForDescendants:w&&N}}function m(n,r){return n&&n instanceof a.U?n:new a.U(n,void 0,void 0,r)}var p=Symbol("_subscribable"),q=Symbol("_ancestorBindingInfo"),
u=Symbol("_dataDependency");a.c={};var y={script:!0,textarea:!0,template:!0};a.getBindingHandler=n=>a.c[n];var t={};a.U=function(n,r,v,w,B){function z(){var M=N?H():H,D=a.a.g(M);r?(a.a.extend(C,r),q in r&&(C[q]=r[q])):(C.$parents=[],C.$root=D,C.ko=a);C[p]=L;A?D=C.$data:(C.$rawData=M,C.$data=D);v&&(C[v]=D);w&&w(C,r,D);if(r&&r[p]&&!a.ya.i().sb(r[p]))r[p]();K&&(C[u]=K);return C.$data}var C=this,A=n===t,H=A?void 0:n,N="function"==typeof H&&!a.O(H),K=B&&B.dataDependency;if(B&&B.exportDependencies)z();
else{var L=a.Yc(z);L.D();L.ha()?L.equalityComparer=null:C[p]=void 0}};a.U.prototype.createChildContext=function(n,r,v,w){!w&&r&&"object"==typeof r&&(w=r,r=w.as,v=w.extend);if(r&&w&&w.noChildContext){var B="function"==typeof n&&!a.O(n);return new a.U(t,this,null,z=>{v&&v(z);z[r]=B?n():n},w)}return new a.U(n,this,r,(z,C)=>{z.$parentContext=C;z.$parent=C.$data;z.$parents=(C.$parents||[]).slice(0);z.$parents.unshift(z.$parent);v&&v(z)},w)};a.U.prototype.extend=function(n,r){return new a.U(t,this,null,
v=>a.a.extend(v,"function"==typeof n?n(v):n),r)};var x=a.a.b.X();c.prototype.mc=function(){this.gb&&this.gb.G&&this.gb.G.Hc(this.node)};c.prototype.Hc=function(n){a.a.Ma(this.Na,n);!this.Na.length&&this.C&&this.ac()};c.prototype.ac=function(){this.C=!0;this.Xb.G&&!this.Na.length&&(this.Xb.G=null,a.a.N.Ab(this.node,b),a.f.notify(this.node,a.f.ga),this.mc())};a.f={C:"childrenComplete",ga:"descendantsComplete",subscribe:(n,r,v,w,B)=>{var z=a.a.b.rb(n,x,{});z.pa||(z.pa=new a.T);B&&B.notifyImmediately&&
z.xb[r]&&a.m.I(v,w,[n]);return z.pa.subscribe(v,w,r)},notify:(n,r)=>{var v=a.a.b.get(n,x);if(v&&(v.xb[r]=!0,v.pa&&v.pa.notifySubscribers(n,r),r==a.f.C))if(v.G)v.G.ac();else if(void 0===v.G&&v.pa&&v.pa.Ca(a.f.ga))throw Error("descendantsComplete event not supported for bindings on this node");},Cb:(n,r)=>{var v=a.a.b.rb(n,x,{});v.G||(v.G=new c(n,v,r[q]));return r[q]==v?r:r.extend(w=>{w[q]=v})}};a.bd=n=>(n=a.a.b.get(n,x))&&n.context;a.hb=(n,r,v)=>k(n,r,m(v));a.ed=(n,r,v)=>{v=m(v);return a.hb(n,f(r,
v,n),v)};a.Ub=(n,r)=>{1!==r.nodeType&&8!==r.nodeType||l(m(n),r)};a.Tb=function(n,r,v){if(2>arguments.length){if(r=V.body,!r)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!r||1!==r.nodeType&&8!==r.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");d(m(n,v),r)};a.bc=n=>(n=n&&[1,8].includes(n.nodeType)&&a.bd(n))?n.$data:void 0;a.s("bindingHandlers",a.c);a.s("applyBindings",
a.Tb);a.s("applyBindingAccessorsToNode",a.hb);a.s("dataFor",a.bc)})();(()=>{function b(d,g){return Object.prototype.hasOwnProperty.call(d,g)?d[g]:void 0}function c(d,g){var k=b(h,d);if(k)k.subscribe(g);else{k=h[d]=new a.T;k.subscribe(g);e(d,(p,q)=>{q=!(!q||!q.synchronous);l[d]={definition:p,Rc:q};delete h[d];m||q?k.notifySubscribers(p):a.Gb.pc(()=>k.notifySubscribers(p))});var m=!0}}function e(d,g){f("getConfig",[d],k=>{k?f("loadComponent",[d,k],m=>g(m,k)):g(null,null)})}function f(d,g,k,m){m||(m=
a.l.loaders.slice(0));var p=m.shift();if(p){var q=p[d];if(q){var u=!1;if(void 0!==q.apply(p,g.concat(function(y){u?k(null):null!==y?k(y):f(d,g,k,m)}))&&(u=!0,!p.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else f(d,g,k,m)}else k(null)}var h={},l={};a.l={get:(d,g)=>{var k=b(l,d);k?k.Rc?a.m.I(()=>g(k.definition)):a.Gb.pc(()=>g(k.definition)):c(d,g)},Ec:d=>delete l[d],Mb:f};a.l.loaders=[];a.s("components",
a.l)})();(()=>{function b(d,g,k,m){var p={},q=2;g=k.template;k=k.viewModel;g?a.l.Mb("loadTemplate",[d,g],u=>{p.template=u;0===--q&&m(p)}):0===--q&&m(p);k?a.l.Mb("loadViewModel",[d,k],u=>{p[l]=u;0===--q&&m(p)}):0===--q&&m(p)}function c(d,g,k){if("function"===typeof g)k(p=>new g(p));else if("function"===typeof g[l])k(g[l]);else if("instance"in g){var m=g.instance;k(()=>m)}else"viewModel"in g?c(d,g.viewModel,k):d("Unknown viewModel value: "+g)}function e(d){if("template"==a.a.da(d)&&d.content instanceof
DocumentFragment)return a.a.Oa(d.content.childNodes);throw"Template Source Element not a <template>";}function f(d){return g=>{throw Error("Component '"+d+"': "+g);}}var h={};a.l.register=(d,g)=>{if(!g)throw Error("Invalid configuration for "+d);if(a.l.ub(d))throw Error("Component "+d+" is already registered");h[d]=g};a.l.ub=d=>Object.prototype.hasOwnProperty.call(h,d);a.l.unregister=d=>{delete h[d];a.l.Ec(d)};a.l.Gc={getConfig:(d,g)=>{d=a.l.ub(d)?h[d]:null;g(d)},loadComponent:(d,g,k)=>{var m=f(d);
b(d,m,g,k)},loadTemplate:(d,g,k)=>{d=f(d);if("string"===typeof g)k(a.a.Ya(g));else if(g instanceof Array)k(g);else if(g instanceof DocumentFragment)k(a.a.qa(g.childNodes));else if(g.element)if(g=g.element,g instanceof HTMLElement)k(e(g));else if("string"===typeof g){var m=V.getElementById(g);m?k(e(m)):d("Cannot find element with ID "+g)}else d("Unknown element type: "+g);else d("Unknown template value: "+g)},loadViewModel:(d,g,k)=>c(f(d),g,k)};var l="createViewModel";a.s("components.register",a.l.register);
a.l.loaders.push(a.l.Gc)})();(()=>{function b(e,f){var h=e.getAttribute("params");return h?(f=c.parseBindingsString(h,f,e,{valueAccessors:!0,bindingParams:!0}),f=a.a.Ea(f,l=>a.i(l,null,{j:e})),h=a.a.Ea(f,l=>{var d=l.D();return l.ha()?a.i({read:()=>a.a.g(l()),write:a.kc(d)&&(g=>l()(g)),j:e}):d}),Object.prototype.hasOwnProperty.call(h,"$raw")||(h.$raw=f),h):{$raw:{}}}a.l.getComponentNameForNode=e=>{var f=a.a.da(e);if(a.l.ub(f)&&(-1!=f.indexOf("-")||"[object HTMLUnknownElement]"==""+e))return f};a.l.Rb=
(e,f,h,l)=>{if(1===f.nodeType){var d=a.l.getComponentNameForNode(f);if(d){e=e||{};if(e.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var g={name:d,params:b(f,h)};e.component=l?()=>g:g}}return e};var c=new a.aa})();(()=>{function b(f,h,l){h=h.template;if(!h)throw Error("Component '"+f+"' has no template");f=a.a.Oa(h);a.h.Fa(l,f)}function c(f,h,l){var d=f.createViewModel;return d?d.call(f,h,l):h}var e=0;a.c.component={init:(f,h,l,d,g)=>{var k,m,
p,q=()=>{var y=k&&k.dispose;"function"===typeof y&&y.call(k);p&&p.o();m=k=p=null},u=a.a.qa(a.h.childNodes(f));a.h.Aa(f);a.a.N.wa(f,q);a.i(()=>{var y=a.a.g(h());if("string"===typeof y)var t=y;else{t=a.a.g(y.name);var x=a.a.g(y.params)}if(!t)throw Error("No component name specified");var n=a.f.Cb(f,g),r=m=++e;a.l.get(t,v=>{if(m===r){q();if(!v)throw Error("Unknown component '"+t+"'");b(t,v,f);var w=c(v,x,{element:f,templateNodes:u});v=n.createChildContext(w,{extend:B=>{B.$component=w;B.$componentTemplateNodes=
u}});w&&w.koDescendantsComplete&&(p=a.f.subscribe(f,a.f.ga,w.koDescendantsComplete,w));k=w;a.Ub(v,f)}})},null,{j:f});return{controlsDescendantBindings:!0}}};a.h.la.component=!0})();a.c.attr={update:(b,c)=>{c=a.a.g(c())||{};a.a.J(c,function(e,f){f=a.a.g(f);var h=e.indexOf(":");h="lookupNamespaceURI"in b&&0<h&&b.lookupNamespaceURI(e.substr(0,h));var l=!1===f||null===f||void 0===f;l?h?b.removeAttributeNS(h,e):b.removeAttribute(e):f=f.toString();l||(h?b.setAttributeNS(h,e,f):b.setAttribute(e,f));"name"===
e&&(b.name=l?"":f)})}};a.c.css={update:(b,c)=>{c=a.a.g(c());null!==c&&"object"==typeof c?a.a.J(c,(e,f)=>{f=a.a.g(f);a.a.Hb(b,e,f)}):(c=a.a.Db(c),a.a.Hb(b,b.__ko__cssValue,!1),b.__ko__cssValue=c,a.a.Hb(b,c,!0))}};a.c.enable={update:(b,c)=>{(c=a.a.g(c()))&&b.disabled?b.removeAttribute("disabled"):c||b.disabled||(b.disabled=!0)}};a.c.disable={update:(b,c)=>a.c.enable.update(b,()=>!a.a.g(c()))};a.c.event={init:(b,c,e,f,h)=>{var l=c()||{};a.a.J(l,d=>{"string"==typeof d&&a.a.K(b,d,function(g){var k=c()[d];
if(k){try{var m=a.a.qa(arguments);f=h.$data;m.unshift(f);var p=k.apply(f,m)}finally{!0!==p&&(g.preventDefault?g.preventDefault():g.returnValue=!1)}!1===e.get(d+"Bubble")&&(g.cancelBubble=!0,g.stopPropagation&&g.stopPropagation())}})})}};a.c.foreach={lc:b=>()=>{var c=b(),e=a.a.Wc(c);if(!e||"number"==typeof e.length)return{foreach:c,templateEngine:a.W.instance};a.a.g(c);return{foreach:e.data,as:e.as,noChildContext:e.noChildContext,includeDestroyed:e.includeDestroyed,afterAdd:e.afterAdd,beforeRemove:e.beforeRemove,
afterRender:e.afterRender,beforeMove:e.beforeMove,afterMove:e.afterMove,templateEngine:a.W.instance}},init:(b,c)=>a.c.template.init(b,a.c.foreach.lc(c)),update:(b,c,e,f,h)=>a.c.template.update(b,a.c.foreach.lc(c),e,f,h)};a.H.ib.foreach=!1;a.h.la.foreach=!0;a.c.hasfocus={init:(b,c,e)=>{var f=l=>{b.__ko_hasfocusUpdating=!0;l=b.ownerDocument.activeElement===b;var d=c();a.H.Ib(d,e,"hasfocus",l,!0);b.__ko_hasfocusLastValue=l;b.__ko_hasfocusUpdating=!1},h=f.bind(null,!0);f=f.bind(null,!1);a.a.K(b,"focus",
h);a.a.K(b,"focusin",h);a.a.K(b,"blur",f);a.a.K(b,"focusout",f);b.__ko_hasfocusLastValue=!1},update:(b,c)=>{c=!!a.a.g(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===c||(c?b.focus():b.blur())}};a.H.$a.hasfocus=!0;a.c.hasFocus=a.c.hasfocus;a.H.$a.hasFocus="hasfocus";a.c.html={init:()=>({controlsDescendantBindings:!0}),update:(b,c)=>a.a.rc(b,c())};(function(){function b(c,e,f){a.c[c]={init:(h,l,d,g,k)=>{var m,p,q={},u;if(e){g=d.get("as");var y=d.get("noChildContext");var t=!(g&&y);q={as:g,
noChildContext:y,exportDependencies:t}}var x=(u="render"==d.get("completeOn"))||d.has(a.f.ga);a.i(()=>{var n=a.a.g(l()),r=!f!==!n,v=!p;if(t||r!==m){x&&(k=a.f.Cb(h,k));if(r){if(!e||t)q.dataDependency=a.ya.i();var w=e?k.createChildContext("function"==typeof n?n:l,q):a.ya.Sa()?k.extend(null,q):k}v&&a.ya.Sa()&&(p=a.a.Oa(a.h.childNodes(h),!0));r?(v||a.h.Fa(h,a.a.Oa(p)),a.Ub(w,h)):(a.h.Aa(h),u||a.f.notify(h,a.f.C));m=r}},null,{j:h});return{controlsDescendantBindings:!0}}};a.H.ib[c]=!1;a.h.la[c]=!0}b("if");
b("ifnot",!1,!0);b("with",!0)})();var aa={};a.c.options={init:b=>{if("select"!==a.a.da(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:(b,c,e)=>{function f(){return Array.from(b.options).filter(t=>t.selected)}function h(t,x,n){var r=typeof x;return"function"==r?x(t):"string"==r?t[x]:n}function l(t,x){u&&m?a.f.notify(b,a.f.C):p.length&&(t=0<=a.a.$(p,a.B.S(x[0])),x[0].selected=t,u&&!t&&a.m.I(a.a.tc,null,[b,
"change"]))}var d=b.multiple,g=0!=b.length&&d?b.scrollTop:null,k=a.a.g(c()),m=e.get("valueAllowUnset")&&e.has("value");c={};var p=[];m||(d?p=f().map(a.B.S):0<=b.selectedIndex&&p.push(a.B.S(b.options[b.selectedIndex])));if(k){"undefined"==typeof k.length&&(k=[k]);var q=k.filter(t=>t||null==t);e.has("optionsCaption")&&(k=a.a.g(e.get("optionsCaption")),null!==k&&void 0!==k&&q.unshift(aa))}var u=!1;c.beforeRemove=t=>b.removeChild(t);k=l;e.has("optionsAfterRender")&&"function"==typeof e.get("optionsAfterRender")&&
(k=(t,x)=>{l(t,x);a.m.I(e.get("optionsAfterRender"),null,[x[0],t!==aa?t:void 0])});a.a.qc(b,q,function(t,x,n){n.length&&(p=!m&&n[0].selected?[a.B.S(n[0])]:[],u=!0);x=b.ownerDocument.createElement("option");t===aa?(a.a.Bb(x,e.get("optionsCaption")),a.B.cb(x,void 0)):(n=h(t,e.get("optionsValue"),t),a.B.cb(x,a.a.g(n)),t=h(t,e.get("optionsText"),n),a.a.Bb(x,t));return[x]},c,k);if(!m){var y;d?y=p.length&&f().length<p.length:y=p.length&&0<=b.selectedIndex?a.B.S(b.options[b.selectedIndex])!==p[0]:p.length||
0<=b.selectedIndex;y&&a.m.I(a.a.tc,null,[b,"change"])}(m||a.ya.tb())&&a.f.notify(b,a.f.C);g&&20<Math.abs(g-b.scrollTop)&&(b.scrollTop=g)}};a.c.options.yb=a.a.b.X();a.c.style={update:(b,c)=>{c=a.a.g(c()||{});a.a.J(c,(e,f)=>{f=a.a.g(f);if(null===f||void 0===f||!1===f)f="";if(/^--/.test(e))b.style.setProperty(e,f);else{e=e.replace(/-(\w)/g,(l,d)=>d.toUpperCase());var h=b.style[e];b.style[e]=f;f===h||b.style[e]!=h||isNaN(f)||(b.style[e]=f+"px")}})}};a.c.submit={init:(b,c,e,f,h)=>{if("function"!=typeof c())throw Error("The value for a submit binding must be a function");
a.a.K(b,"submit",l=>{var d=c();try{var g=d.call(h.$data,b)}finally{!0!==g&&(l.preventDefault?l.preventDefault():l.returnValue=!1)}})}};a.c.text={init:()=>({controlsDescendantBindings:!0}),update:(b,c)=>a.a.Bb(b,c())};a.h.la.text=!0;a.c.textInput={init:(b,c,e)=>{var f=b.value,h,l,d=()=>{clearTimeout(h);l=h=void 0;var k=b.value;f!==k&&(f=k,a.H.Ib(c(),e,"textInput",k))},g=()=>{var k=a.a.g(c());if(null===k||void 0===k)k="";void 0!==l&&k===l?a.a.setTimeout(g,4):b.value!==k&&(b.value=k,f=b.value)};a.a.K(b,
"input",d);a.a.K(b,"change",d);a.a.K(b,"blur",d);a.i(g,null,{j:b})}};a.H.$a.textInput=!0;a.c.textinput={preprocess:(b,c,e)=>e("textInput",b)};a.c.value={init:(b,c,e)=>{var f=a.a.da(b),h="input"==f;if(!h||"checkbox"!=b.type&&"radio"!=b.type){var l=[],d=e.get("valueUpdate"),g=null;d&&("string"==typeof d?l=[d]:l=d?d.filter((q,u)=>d.indexOf(q)===u):[],a.a.Ma(l,"change"));var k=()=>{g=null;var q=c(),u=a.B.S(b);a.H.Ib(q,e,"value",u)};a.a.Z(l,q=>{var u=k;a.a.cd(q,"after")&&(u=()=>{g=a.B.S(b);a.a.setTimeout(k,
0)},q=q.substring(5));a.a.K(b,q,u)});var m=h&&"file"==b.type?()=>{var q=a.a.g(c());null===q||void 0===q||""===q?b.value="":a.m.I(k)}:()=>{var q=a.a.g(c()),u=a.B.S(b);if(null!==g&&q===g)a.a.setTimeout(m,0);else if(q!==u||void 0===u)"select"===f?(u=e.get("valueAllowUnset"),a.B.cb(b,q,u),u||q===a.B.S(b)||a.m.I(k)):a.B.cb(b,q)};if("select"===f){var p;a.f.subscribe(b,a.f.C,()=>{p?e.get("valueAllowUnset")?m():k():(a.a.K(b,"change",k),p=a.i(m,null,{j:b}))},null,{notifyImmediately:!0})}else a.a.K(b,"change",
k),a.i(m,null,{j:b})}else a.hb(b,{checkedValue:c})},update:()=>{}};a.H.$a.value=!0;a.c.visible={update:(b,c)=>{c=a.a.g(c());var e="none"!=b.style.display;c&&!e?b.style.display="":e&&!c&&(b.style.display="none")}};a.c.hidden={update:(b,c)=>b.hidden=!!a.a.g(c())};(function(b){a.c[b]={init:function(c,e,f,h,l){return a.c.event.init.call(this,c,()=>{var d={};d[b]=e();return d},f,h,l)}}})("click");a.ea=function(){};a.ea.prototype.renderTemplateSource=()=>{throw Error("Override renderTemplateSource");};
a.ea.prototype.createJavaScriptEvaluatorBlock=()=>{throw Error("Override createJavaScriptEvaluatorBlock");};a.ea.prototype.makeTemplateSource=(b,c)=>{if("string"==typeof b){c=c||V;c=c.getElementById(b);if(!c)throw Error("Cannot find template with ID "+b);return new a.F.v(c)}if(1==b.nodeType||8==b.nodeType)return new a.F.fa(b);throw Error("Unknown template type: "+b);};a.ea.prototype.renderTemplate=function(b,c,e,f){b=this.makeTemplateSource(b,f);return this.renderTemplateSource(b,c,e,f)};a.ea.prototype.isTemplateRewritten=
function(b,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(b,c).data("isRewritten")};a.ea.prototype.rewriteTemplate=function(b,c,e){b=this.makeTemplateSource(b,e);c=c(b.text());b.text(c);b.data("isRewritten",!0)};(()=>{a.F={};a.F.v=function(e){if(this.v=e){var f=a.a.da(e);this.Ga="script"===f?1:"textarea"===f?2:"template"==f&&e.content&&11===e.content.nodeType?3:4}};a.F.v.prototype.text=function(){var e=1===this.Ga?"text":2===this.Ga?"value":"innerHTML";if(0==arguments.length)return this.v[e];
var f=arguments[0];"innerHTML"===e?a.a.rc(this.v,f):this.v[e]=f};var b=a.a.b.X()+"_";a.F.v.prototype.data=function(e){if(1===arguments.length)return a.a.b.get(this.v,b+e);a.a.b.set(this.v,b+e,arguments[1])};var c=a.a.b.X();a.F.v.prototype.nodes=function(){var e=this.v;if(0==arguments.length){var f=a.a.b.get(e,c)||{},h=f.Pa||(3===this.Ga?e.content:4===this.Ga?e:void 0);if(!h||f.zc){var l=this.text();l&&l!==f.Ha&&(h=a.a.Uc(l,e.ownerDocument),a.a.b.set(e,c,{Pa:h,Ha:l,zc:!0}))}return h}f=arguments[0];
void 0!==this.Ga&&this.text("");a.a.b.set(e,c,{Pa:f})};a.F.fa=function(e){this.v=e};a.F.fa.prototype=new a.F.v;a.F.fa.prototype.constructor=a.F.fa;a.F.fa.prototype.text=function(){if(0==arguments.length){var e=a.a.b.get(this.v,c)||{};void 0===e.Ha&&e.Pa&&(e.Ha=e.Pa.innerHTML);return e.Ha}a.a.b.set(this.v,c,{Ha:arguments[0]})}})();(function(){function b(g,k,m){var p;for(k=a.h.nextSibling(k);g&&(p=g)!==k;)g=a.h.nextSibling(p),m(p,g)}function c(g,k){if(g.length){var m=g[0],p=g[g.length-1],q=m.parentNode,
u=a.aa.instance,y=u.preprocessNode;if(y){b(m,p,(t,x)=>{var n=t.previousSibling,r=y.call(u,t);r&&(t===m&&(m=r[0]||x),t===p&&(p=r[r.length-1]||n))});g.length=0;if(!m)return;m===p?g.push(m):(g.push(m,p),a.a.Ba(g,q))}b(m,p,t=>{1!==t.nodeType&&8!==t.nodeType||a.Tb(k,t)});a.a.Ba(g,q)}}function e(g,k,m,p,q){q=q||{};var u=(g&&(g.nodeType?g:0<g.length?g[0]:null)||m||{}).ownerDocument,y=q.templateEngine||h;y.isTemplateRewritten(m,u)||y.rewriteTemplate(m,t=>t,u);m=y.renderTemplate(m,p,q,u);if("number"!=typeof m.length||
0<m.length&&"number"!=typeof m[0].nodeType)throw Error("Template engine must return an array of DOM nodes");u=!1;switch(k){case "replaceChildren":a.h.Fa(g,m);u=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+k);}u&&(c(m,p),q.afterRender&&a.m.I(q.afterRender,null,[m,p[q.as||"$data"]]),"replaceChildren"==k&&a.f.notify(g,a.f.C));return m}function f(g,k,m){return a.O(g)?g():"function"===typeof g?g(k,m):g}var h;a.ad=g=>{if(void 0!=g&&!(g instanceof a.ea))throw Error("templateEngine must inherit from ko.templateEngine");
h=g};a.Zc=function(g,k,m,p){m=m||{};if(void 0==(m.templateEngine||h))throw Error("Set a template engine before calling renderTemplate");var q=q||"replaceChildren";if(p){var u=p.nodeType?p:0<p.length?p[0]:null;return a.i(()=>{var y=k&&k instanceof a.U?k:new a.U(k,null,null,null,{exportDependencies:!0}),t=f(g,y.$data,y);e(p,q,t,y,m)},null,{za:()=>!u||!a.a.nb(u),j:u})}console.log("no targetNodeOrNodeArray")};a.$c=(g,k,m,p,q)=>{function u(w,B){a.m.I(a.a.qc,null,[p,w,x,m,n,B]);a.f.notify(p,a.f.C)}var y,
t=m.as,x=(w,B)=>{y=q.createChildContext(w,{as:t,noChildContext:m.noChildContext,extend:z=>{z.$index=B;t&&(z[t+"Index"]=B)}});w=f(g,w,y);return e(p,"ignoreTargetNode",w,y,m)},n=(w,B)=>{c(B,y);m.afterRender&&m.afterRender(B,w);y=null},r=!1===m.includeDestroyed;if(r||m.beforeRemove||!a.Pc(k))return a.i(()=>{var w=a.a.g(k)||[];"undefined"==typeof w.length&&(w=[w]);r&&(w=w.filter(B=>B||null==B));u(w)},null,{j:p});u(k.D());var v=k.subscribe(w=>{u(k(),w)},null,"arrayChange");v.j(p);return v};var l=a.a.b.X(),
d=a.a.b.X();a.c.template={init:(g,k)=>{k=a.a.g(k());if("string"==typeof k||"name"in k)a.h.Aa(g);else if("nodes"in k){k=k.nodes||[];if(a.O(k))throw Error('The "nodes" option must be a plain, non-observable array.');let m=k[0]&&k[0].parentNode;m&&a.a.b.get(m,d)||(m=a.a.wb(k),a.a.b.set(m,d,!0));(new a.F.fa(g)).nodes(m)}else if(k=a.h.childNodes(g),0<k.length)k=a.a.wb(k),(new a.F.fa(g)).nodes(k);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},
update:(g,k,m,p,q)=>{var u=k();k=a.a.g(u);m=!0;p=null;"string"==typeof k?k={}:(u="name"in k?k.name:g,"if"in k&&(m=a.a.g(k["if"])),m&&"ifnot"in k&&(m=!a.a.g(k.ifnot)),m&&!u&&(m=!1));"foreach"in k?p=a.$c(u,m&&k.foreach||[],k,g,q):m?(m=q,"data"in k&&(m=q.createChildContext(k.data,{as:k.as,noChildContext:k.noChildContext,exportDependencies:!0})),p=a.Zc(u,m,k,g)):a.h.Aa(g);q=p;(k=a.a.b.get(g,l))&&"function"==typeof k.o&&k.o();a.a.b.set(g,l,!q||q.ha&&!q.ha()?void 0:q)}};a.H.ib.template=g=>{g=a.H.Vc(g);
return 1==g.length&&g[0].unknown||a.H.Sc(g,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.h.la.template=!0})();a.a.fc=(b,c,e)=>{if(b.length&&c.length){var f,h,l,d,g;for(f=h=0;(!e||f<e)&&(d=b[h]);++h){for(l=0;g=c[l];++l)if(d.value===g.value){d.moved=g.index;g.moved=d.index;c.splice(l,1);f=l=0;break}f+=l}}};a.a.$b=(()=>{function b(c,e,f,h,l){var d=Math.min,g=Math.max,k=[],m,p=c.length,q,u=e.length,y=u-p||1,t=p+u+1,x;for(m=0;m<=p;m++){var n=x;
k.push(x=[]);var r=d(u,m+y);for(q=g(0,m-1);q<=r;q++)x[q]=q?m?c[m-1]===e[q-1]?n[q-1]:d(n[q]||t,x[q-1]||t)+1:q+1:m+1}d=[];g=[];y=[];m=p;for(q=u;m||q;)u=k[m][q]-1,q&&u===k[m][q-1]?g.push(d[d.length]={status:f,value:e[--q],index:q}):m&&u===k[m-1][q]?y.push(d[d.length]={status:h,value:c[--m],index:m}):(--q,--m,l.sparse||d.push({status:"retained",value:e[q]}));a.a.fc(y,g,!l.dontLimitMoves&&10*p);return d.reverse()}return function(c,e,f){f="boolean"===typeof f?{dontLimitMoves:f}:f||{};c=c||[];e=e||[];return c.length<
e.length?b(c,e,"added","deleted",f):b(e,c,"deleted","added",f)}})();(()=>{function b(f,h,l,d,g){var k=[],m=a.i(()=>{var p=h(l,g,a.a.Ba(k,f))||[];if(0<k.length){var q=k.nodeType?[k]:k;if(0<q.length){var u=q[0],y=u.parentNode,t;var x=0;for(t=p.length;x<t;x++)y.insertBefore(p[x],u);x=0;for(t=q.length;x<t;x++)a.removeNode(q[x])}d&&a.m.I(d,null,[l,p,g])}k.length=0;a.a.Ac(k,p)},null,{j:f,za:()=>!!a.a.Vb(k,a.a.nb)});return{R:k,kb:m.ha()?m:void 0}}var c=a.a.b.X(),e=a.a.b.X();a.a.qc=(f,h,l,d,g,k)=>{function m(K){A=
{ma:K,Ua:a.ka(n++)};t.push(A);y||z.push(A)}function p(K){A=u[K];n!==A.Ua.D()&&B.push(A);A.Ua(n++);a.a.Ba(A.R,f);t.push(A)}function q(K,L){if(K)for(var M=0,D=L.length;M<D;M++)a.a.Z(L[M].R,function(S){K(S,M,L[M].ma)})}h=h||[];"undefined"==typeof h.length&&(h=[h]);d=d||{};var u=a.a.b.get(f,c),y=!u,t=[],x=0,n=0,r=[],v=[],w=[],B=[],z=[],C=0;if(y)a.a.Z(h,m);else{if(!k||u&&u._countWaitingForRemove)k=Array.prototype.map.call(u,K=>K.ma),k=a.a.$b(k,h,{dontLimitMoves:d.dontLimitMoves,sparse:!0});for(let K=0,
L,M,D;L=k[K];K++)switch(M=L.moved,D=L.index,L.status){case "deleted":for(;x<D;)p(x++);if(void 0===M){var A=u[x];A.kb&&(A.kb.o(),A.kb=void 0);a.a.Ba(A.R,f).length&&(d.beforeRemove&&(t.push(A),C++,A.ma===e?A=null:w.push(A)),A&&r.push.apply(r,A.R))}x++;break;case "added":for(;n<D;)p(x++);void 0!==M?(v.push(t.length),p(M)):m(L.value)}for(;n<h.length;)p(x++);t._countWaitingForRemove=C}a.a.b.set(f,c,t);q(d.beforeMove,B);a.a.Z(r,d.beforeRemove?a.oa:a.removeNode);var H,N;C=f.ownerDocument.activeElement;if(v.length)for(;void 0!=
(h=v.shift());){A=t[h];for(H=void 0;h;)if((N=t[--h].R)&&N.length){H=N[N.length-1];break}for(x=0;r=A.R[x];H=r,x++)a.h.jc(f,r,H)}for(h=0;A=t[h];h++){A.R||a.a.extend(A,b(f,l,A.ma,g,A.Ua));for(x=0;r=A.R[x];H=r,x++)a.h.jc(f,r,H);!A.Oc&&g&&(g(A.ma,A.R,A.Ua),A.Oc=!0,H=A.R[A.R.length-1])}C&&f.ownerDocument.activeElement!=C&&C.focus();q(d.beforeRemove,w);for(h=0;h<w.length;++h)w[h].ma=e;q(d.afterMove,B);q(d.afterAdd,z)}})();a.W=function(){this.allowTemplateRewriting=!1};a.W.prototype=new a.ea;a.W.prototype.constructor=
a.W;a.W.prototype.renderTemplateSource=(b,c,e,f)=>{if(c=b.Tc?b.Tc():null)return a.a.qa(c.cloneNode(!0).childNodes);b=b.text();return a.a.Ya(b,f)};a.W.instance=new a.W;a.ad(a.W.instance);E.ko=Z})(this);

View file

@ -550,12 +550,7 @@
};
ko.exportSymbol('bindingHandlers', ko.bindingHandlers);
ko.exportSymbol('bindingEvent', ko.bindingEvent);
ko.exportSymbol('bindingEvent.subscribe', ko.bindingEvent.subscribe);
ko.exportSymbol('bindingEvent.startPossiblyAsyncContentBinding', ko.bindingEvent.startPossiblyAsyncContentBinding);
ko.exportSymbol('applyBindings', ko.applyBindings);
ko.exportSymbol('applyBindingsToDescendants', ko.applyBindingsToDescendants);
ko.exportSymbol('applyBindingAccessorsToNode', ko.applyBindingAccessorsToNode);
ko.exportSymbol('applyBindingsToNode', ko.applyBindingsToNode);
ko.exportSymbol('dataFor', ko.dataFor);
})();

View file

@ -69,5 +69,3 @@
return new Function("$context", "$element", functionBody);
}
})();
ko.exportSymbol('bindingProvider', ko.bindingProvider);

View file

@ -1,14 +1,5 @@
var classesWrittenByBindingKey = '__ko__cssValue';
ko.bindingHandlers['class'] = {
'update': (element, valueAccessor) => {
var value = ko.utils.stringTrim(ko.utils.unwrapObservable(valueAccessor()));
ko.utils.toggleDomNodeCssClass(element, element[classesWrittenByBindingKey], false);
element[classesWrittenByBindingKey] = value;
ko.utils.toggleDomNodeCssClass(element, value, true);
}
};
ko.bindingHandlers['css'] = {
'update': (element, valueAccessor) => {
var value = ko.utils.unwrapObservable(valueAccessor());
@ -18,7 +9,10 @@ ko.bindingHandlers['css'] = {
ko.utils.toggleDomNodeCssClass(element, className, shouldHaveClass);
});
} else {
ko.bindingHandlers['class']['update'](element, valueAccessor);
value = ko.utils.stringTrim(value);
ko.utils.toggleDomNodeCssClass(element, element[classesWrittenByBindingKey], false);
element[classesWrittenByBindingKey] = value;
ko.utils.toggleDomNodeCssClass(element, value, true);
}
}
};

View file

@ -17,7 +17,17 @@
// On subsequent evaluations, just replace the previously-inserted DOM nodes
if (mappedNodes.length > 0) {
ko.utils.replaceDomNodes(mappedNodes, newMappedNodes);
var nodesToReplaceArray = mappedNodes.nodeType ? [mappedNodes] : mappedNodes;
if (nodesToReplaceArray.length > 0) {
var insertionPoint = nodesToReplaceArray[0],
parent = insertionPoint.parentNode,
i, j;
for (i = 0, j = newMappedNodes.length; i < j; i++)
parent.insertBefore(newMappedNodes[i], insertionPoint);
for (i = 0, j = nodesToReplaceArray.length; i < j; i++) {
ko.removeNode(nodesToReplaceArray[i]);
}
}
if (callbackAfterAddingNodes)
ko.dependencyDetection.ignore(callbackAfterAddingNodes, null, [valueToMap, newMappedNodes, index]);
}
@ -26,7 +36,7 @@
// of which nodes would be deleted if valueToMap was itself later removed
mappedNodes.length = 0;
ko.utils.arrayPushAll(mappedNodes, newMappedNodes);
}, null, { disposeWhenNodeIsRemoved: containerNode, disposeWhen: function() { return !ko.utils.anyDomNodeIsAttachedToDocument(mappedNodes); } });
}, null, { disposeWhenNodeIsRemoved: containerNode, disposeWhen: ()=>!!ko.utils.arrayFirst(mappedNodes, ko.utils.domNodeIsAttachedToDocument) });
return { mappedNodes : mappedNodes, dependentObservable : (dependentObservable.isActive() ? dependentObservable : undefined) };
}
@ -229,5 +239,3 @@
callCallback(options['afterAdd'], itemsForAfterAddCallbacks);
}
})();
ko.exportSymbol('utils.setDomNodeChildrenFromArrayMapping', ko.utils.setDomNodeChildrenFromArrayMapping);

View file

@ -98,5 +98,3 @@ ko.utils.compareArrays = (() => {
return compareArrays;
})();
ko.exportSymbol('utils.compareArrays', ko.utils.compareArrays);

View file

@ -189,8 +189,3 @@ ko.expressionRewriting = (() => {
}
};
})();
ko.exportSymbol('expressionRewriting', ko.expressionRewriting);
ko.exportSymbol('expressionRewriting.bindingRewriteValidators', ko.expressionRewriting.bindingRewriteValidators);
ko.exportSymbol('expressionRewriting.parseObjectLiteral', ko.expressionRewriting.parseObjectLiteral);
ko.exportSymbol('expressionRewriting.preProcessBindings', ko.expressionRewriting.preProcessBindings);

View file

@ -60,7 +60,3 @@
}
};
})();
ko.exportSymbol('selectExtensions', ko.selectExtensions);
ko.exportSymbol('selectExtensions.readValue', ko.selectExtensions.readValue);
ko.exportSymbol('selectExtensions.writeValue', ko.selectExtensions.writeValue);

View file

@ -162,12 +162,6 @@
}
ko.exportSymbol('components.register', ko.components.register);
ko.exportSymbol('components.isRegistered', ko.components.isRegistered);
ko.exportSymbol('components.unregister', ko.components.unregister);
// Expose the default loader so that developers can directly ask it for configuration
// or to resolve configuration
ko.exportSymbol('components.defaultLoader', ko.components.defaultLoader);
// By default, the default loader is the only registered component loader
ko.components['loaders'].push(ko.components.defaultLoader);

View file

@ -135,6 +135,4 @@
ko.components['loaders'] = [];
ko.exportSymbol('components', ko.components);
ko.exportSymbol('components.get', ko.components.get);
ko.exportSymbol('components.clearCachedDefinition', ko.components.clearCachedDefinition);
})();

View file

@ -1,70 +0,0 @@
ko.memoization = (function () {
var memos = {};
function randomMax8HexChars() {
return (((1 + Math.random()) * 0x100000000) | 0).toString(16).substring(1);
}
function generateRandomId() {
return randomMax8HexChars() + randomMax8HexChars();
}
function findMemoNodes(rootNode, appendToArray) {
if (!rootNode)
return;
if (rootNode.nodeType == 8) {
var memoId = ko.memoization.parseMemoText(rootNode.nodeValue);
if (memoId != null)
appendToArray.push({ domNode: rootNode, memoId: memoId });
} else if (rootNode.nodeType == 1) {
for (var i = 0, childNodes = rootNode.childNodes, j = childNodes.length; i < j; i++)
findMemoNodes(childNodes[i], appendToArray);
}
}
return {
memoize: callback => {
if (typeof callback != "function")
throw new Error("You can only pass a function to ko.memoization.memoize()");
var memoId = generateRandomId();
memos[memoId] = callback;
return "<!--[ko_memo:" + memoId + "]-->";
},
unmemoize: (memoId, callbackParams) => {
var callback = memos[memoId];
if (callback === undefined)
throw new Error("Couldn't find any memo with ID " + memoId + ". Perhaps it's already been unmemoized.");
try {
callback.apply(null, callbackParams || []);
return true;
}
finally { delete memos[memoId]; }
},
unmemoizeDomNodeAndDescendants: (domNode, extraCallbackParamsArray) => {
var memos = [];
findMemoNodes(domNode, memos);
for (var i = 0, j = memos.length; i < j; i++) {
var node = memos[i].domNode;
var combinedParams = [node];
if (extraCallbackParamsArray)
ko.utils.arrayPushAll(combinedParams, extraCallbackParamsArray);
ko.memoization.unmemoize(memos[i].memoId, combinedParams);
node.nodeValue = ""; // Neuter this node so we don't try to unmemoize it again
if (node.parentNode)
node.parentNode.removeChild(node); // If possible, erase it totally (not always possible - someone else might just hold a reference to it then call unmemoizeDomNodeAndDescendants again)
}
},
parseMemoText: memoText => {
var match = memoText.match(/^\[ko_memo:(.*?)\]$/);
return match ? match[1] : null;
}
};
})();
ko.exportSymbol('memoization', ko.memoization);
ko.exportSymbol('memoization.memoize', ko.memoization.memoize);
ko.exportSymbol('memoization.unmemoize', ko.memoization.unmemoize);
ko.exportSymbol('memoization.parseMemoText', ko.memoization.parseMemoText);
ko.exportSymbol('memoization.unmemoizeDomNodeAndDescendants', ko.memoization.unmemoizeDomNodeAndDescendants);

View file

@ -56,11 +56,3 @@ ko.computedContext = ko.dependencyDetection = (() => {
}
};
})();
ko.exportSymbol('computedContext', ko.computedContext);
ko.exportSymbol('computedContext.getDependenciesCount', ko.computedContext.getDependenciesCount);
ko.exportSymbol('computedContext.getDependencies', ko.computedContext.getDependencies);
ko.exportSymbol('computedContext.isInitial', ko.computedContext.isInitial);
ko.exportSymbol('computedContext.registerDependency', ko.computedContext.registerDependency);
ko.exportSymbol('ignoreDependencies', ko.ignoreDependencies = ko.dependencyDetection.ignore);

View file

@ -493,19 +493,9 @@ if (ko.utils.canSetPrototype) {
var protoProp = ko.observable.protoProperty; // == "__ko_proto__"
computedFn[protoProp] = ko.computed;
ko.isComputed = instance => (typeof instance == 'function' && instance[protoProp] === computedFn[protoProp]);
ko.isPureComputed = instance => ko.isComputed(instance) && instance[computedState] && instance[computedState].pure;
ko.exportSymbol('computed', ko.computed);
ko.exportSymbol('isComputed', ko.isComputed);
ko.exportSymbol('isPureComputed', ko.isPureComputed);
ko.exportSymbol('computed.fn', computedFn);
ko.exportProperty(computedFn, 'peek', computedFn.peek);
ko.exportProperty(computedFn, 'dispose', computedFn.dispose);
ko.exportProperty(computedFn, 'isActive', computedFn.isActive);
ko.exportProperty(computedFn, 'getDependenciesCount', computedFn.getDependenciesCount);
ko.exportProperty(computedFn, 'getDependencies', computedFn.getDependencies);
ko.pureComputed = (evaluatorFunctionOrOptions, evaluatorFunctionTarget) => {
if (typeof evaluatorFunctionOrOptions === 'function') {
@ -515,4 +505,3 @@ ko.pureComputed = (evaluatorFunctionOrOptions, evaluatorFunctionTarget) => {
evaluatorFunctionOrOptions['pure'] = true;
return ko.computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget);
};
ko.exportSymbol('pureComputed', ko.pureComputed);

View file

@ -71,8 +71,5 @@ ko.isWriteableObservable = instance => {
ko.exportSymbol('observable', ko.observable);
ko.exportSymbol('isObservable', ko.isObservable);
ko.exportSymbol('isWriteableObservable', ko.isWriteableObservable);
ko.exportSymbol('observable.fn', observableFn);
ko.exportProperty(observableFn, 'peek', observableFn.peek);
ko.exportProperty(observableFn, 'valueHasMutated', observableFn.valueHasMutated);
ko.exportProperty(observableFn, 'valueWillMutate', observableFn.valueWillMutate);

View file

@ -95,4 +95,3 @@ ko.isObservableArray = instance => {
};
ko.exportSymbol('observableArray', ko.observableArray);
ko.exportSymbol('isObservableArray', ko.isObservableArray);

View file

@ -1,18 +0,0 @@
ko.when = (predicate, callback, context) => {
function kowhen (resolve) {
var observable = ko.pureComputed(predicate, context).extend({notify:'always'});
var subscription = observable.subscribe(value => {
if (value) {
subscription.dispose();
resolve(value);
}
});
// In case the initial value is true, process it right away
observable['notifySubscribers'](observable.peek());
return subscription;
}
return callback ? kowhen(callback.bind(context)) : new Promise(kowhen);
};
ko.exportSymbol('when', ko.when);

View file

@ -101,16 +101,16 @@ var ko_subscribable_fn = {
if (!self._origNotifySubscribers) {
self._origNotifySubscribers = self["notifySubscribers"];
// Moved out of "limit" to avoid the extra closure
// Moved out of "limit" to avoid the extra closure
self["notifySubscribers"] = function(value, event) {
if (!event || event === defaultEvent) {
this._limitChange(value);
} else if (event === 'beforeChange') {
this._limitBeforeChange(value);
} else {
this._origNotifySubscribers(value, event);
}
}
if (!event || event === defaultEvent) {
this._limitChange(value);
} else if (event === 'beforeChange') {
this._limitBeforeChange(value);
} else {
this._origNotifySubscribers(value, event);
}
}
}
var finish = limitFunction(() => {
@ -196,6 +196,3 @@ ko.subscribable['fn'] = ko_subscribable_fn;
ko.isSubscribable = instance =>
instance != null && typeof instance.subscribe == "function" && typeof instance["notifySubscribers"] == "function";
ko.exportSymbol('subscribable', ko.subscribable);
ko.exportSymbol('isSubscribable', ko.isSubscribable);

View file

@ -68,5 +68,3 @@ ko.tasks = (() => {
})();
ko.exportSymbol('tasks', ko.tasks);
ko.exportSymbol('tasks.schedule', ko.tasks.schedule);
//ko.exportSymbol('tasks.cancel', ko.tasks.cancel); "cancel" isn't minified

View file

@ -16,5 +16,3 @@ ko.nativeTemplateEngine.prototype['renderTemplateSource'] = (templateSource, bin
ko.nativeTemplateEngine.instance = new ko.nativeTemplateEngine();
ko.setTemplateEngine(ko.nativeTemplateEngine.instance);
ko.exportSymbol('nativeTemplateEngine', ko.nativeTemplateEngine);

View file

@ -68,5 +68,3 @@ ko.templateEngine.prototype['rewriteTemplate'] = function (template, rewriterCal
templateSource['text'](rewritten);
templateSource['data']("isRewritten", true);
};
ko.exportSymbol('templateEngine', ko.templateEngine);

View file

@ -1,66 +0,0 @@
ko.templateRewriting = (() => {
var memoizeDataBindingAttributeSyntaxRegex = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi;
var memoizeVirtualContainerBindingSyntaxRegex = /<!--\s*ko\b\s*([\s\S]*?)\s*-->/g;
function validateDataBindValuesForRewriting(keyValueArray) {
var allValidators = ko.expressionRewriting.bindingRewriteValidators;
for (var i = 0; i < keyValueArray.length; i++) {
var key = keyValueArray[i]['key'];
if (Object.prototype.hasOwnProperty.call(allValidators, key)) {
var validator = allValidators[key];
if (typeof validator === "function") {
var possibleErrorMessage = validator(keyValueArray[i]['value']);
if (possibleErrorMessage)
throw new Error(possibleErrorMessage);
} else if (!validator) {
throw new Error("This template engine does not support the '" + key + "' binding within its templates");
}
}
}
}
function constructMemoizedTagReplacement(dataBindAttributeValue, tagToRetain, nodeName, templateEngine) {
var dataBindKeyValueArray = ko.expressionRewriting.parseObjectLiteral(dataBindAttributeValue);
validateDataBindValuesForRewriting(dataBindKeyValueArray);
var rewrittenDataBindAttributeValue = ko.expressionRewriting.preProcessBindings(dataBindKeyValueArray, {'valueAccessors':true});
// For no obvious reason, Opera fails to evaluate rewrittenDataBindAttributeValue unless it's wrapped in an additional
// anonymous function, even though Opera's built-in debugger can evaluate it anyway. No other browser requires this
// extra indirection.
var applyBindingsToNextSiblingScript =
"ko.__tr_ambtns(function($context,$element){return(function(){return{ " + rewrittenDataBindAttributeValue + " } })()},'" + nodeName.toLowerCase() + "')";
return templateEngine['createJavaScriptEvaluatorBlock'](applyBindingsToNextSiblingScript) + tagToRetain;
}
return {
ensureTemplateIsRewritten: (template, templateEngine, templateDocument) => {
if (!templateEngine['isTemplateRewritten'](template, templateDocument))
templateEngine['rewriteTemplate'](template, htmlString =>
ko.templateRewriting.memoizeBindingAttributeSyntax(htmlString, templateEngine)
, templateDocument);
},
memoizeBindingAttributeSyntax: (htmlString, templateEngine) => {
return htmlString.replace(memoizeDataBindingAttributeSyntaxRegex, (...args) =>
constructMemoizedTagReplacement(/* dataBindAttributeValue: */ args[4], /* tagToRetain: */ args[1], /* nodeName: */ args[2], templateEngine)
).replace(memoizeVirtualContainerBindingSyntaxRegex, (...args) =>
constructMemoizedTagReplacement(/* dataBindAttributeValue: */ args[1], /* tagToRetain: */ "<!-- ko -->", /* nodeName: */ "#comment", templateEngine)
);
},
applyMemoizedBindingsToNextSibling: (bindings, nodeName) => {
return ko.memoization.memoize((domNode, bindingContext) => {
var nodeToBind = domNode.nextSibling;
if (nodeToBind && nodeToBind.nodeName.toLowerCase() === nodeName) {
ko.applyBindingAccessorsToNode(nodeToBind, bindings, bindingContext);
}
});
}
}
})();
// Exported only because it has to be referenced by string lookup from within rewritten template
ko.exportSymbol('__tr_ambtns', ko.templateRewriting.applyMemoizedBindingsToNextSibling);

View file

@ -125,8 +125,4 @@
var valueToWrite = arguments[0];
setTemplateDomData(this.domElement, {textData: valueToWrite});
};
ko.exportSymbol('templateSources', ko.templateSources);
ko.exportSymbol('templateSources.domElement', ko.templateSources.domElement);
ko.exportSymbol('templateSources.anonymousTemplate', ko.templateSources.anonymousTemplate);
})();

View file

@ -61,10 +61,6 @@
if (node.nodeType === 1 || node.nodeType === 8)
ko.applyBindings(bindingContext, node);
});
invokeForEachNodeInContinuousRange(firstNode, lastNode, node => {
if (node.nodeType === 1 || node.nodeType === 8)
ko.memoization.unmemoizeDomNodeAndDescendants(node, [bindingContext]);
});
// Make sure any changes done by applyBindings or unmemoize are reflected in the array
ko.utils.fixUpContinuousNodeArray(continuousNodeArray, parentNode);
@ -82,7 +78,10 @@
var firstTargetNode = targetNodeOrNodeArray && getFirstNodeFromPossibleArray(targetNodeOrNodeArray);
var templateDocument = (firstTargetNode || template || {}).ownerDocument;
var templateEngineToUse = (options['templateEngine'] || _templateEngine);
ko.templateRewriting.ensureTemplateIsRewritten(template, templateEngineToUse, templateDocument);
if (!templateEngineToUse['isTemplateRewritten'](template, templateDocument)) {
templateEngineToUse['rewriteTemplate'](template, htmlString => htmlString, templateDocument);
}
var renderedNodesArray = templateEngineToUse['renderTemplate'](template, bindingContext, options, templateDocument);
// Loosely check result is an array of DOM nodes
@ -95,10 +94,6 @@
ko.virtualElements.setDomNodeChildren(targetNodeOrNodeArray, renderedNodesArray);
haveAddedNodesToParent = true;
break;
case "replaceNode":
ko.utils.replaceDomNodes(targetNodeOrNodeArray, renderedNodesArray);
haveAddedNodesToParent = true;
break;
case "ignoreTargetNode": break;
default:
throw new Error("Unknown renderMode: " + renderMode);
@ -137,7 +132,6 @@
var firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);
var whenToDispose = () => (!firstTargetNode) || !ko.utils.domNodeIsAttachedToDocument(firstTargetNode); // Passive disposal (on next evaluation)
var activelyDisposeWhenNodeIsRemoved = (firstTargetNode && renderMode == "replaceNode") ? firstTargetNode.parentNode : firstTargetNode;
return ko.computed( // So the DOM is automatically updated when any dependency changes
() => {
@ -148,20 +142,12 @@
var templateName = resolveTemplateName(template, bindingContext['$data'], bindingContext),
renderedNodesArray = executeTemplate(targetNodeOrNodeArray, renderMode, templateName, bindingContext, options);
if (renderMode == "replaceNode") {
targetNodeOrNodeArray = renderedNodesArray;
firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);
}
},
null,
{ disposeWhen: whenToDispose, disposeWhenNodeIsRemoved: activelyDisposeWhenNodeIsRemoved }
{ disposeWhen: whenToDispose, disposeWhenNodeIsRemoved: firstTargetNode }
);
} else {
// We don't yet have a DOM node to evaluate, so use a memo and render the template later when there is a DOM node
return ko.memoization.memoize(domNode =>
ko.renderTemplate(template, dataOrBindingContext, options, domNode, "replaceNode")
);
console.log('no targetNodeOrNodeArray');
}
};
@ -343,6 +329,3 @@
ko.virtualElements.allowedBindings['template'] = true;
})();
ko.exportSymbol('setTemplateEngine', ko.setTemplateEngine);
ko.exportSymbol('renderTemplate', ko.renderTemplate);

View file

@ -41,6 +41,3 @@ ko.utils.domData = new (function () {
nextKey: () => (uniqueId++) + dataStoreKeyExpandoPropertyName
};
})();
ko.exportSymbol('utils.domData', ko.utils.domData);
ko.exportSymbol('utils.domData.clear', ko.utils.domData.clear); // Exporting only so specs can clear up after themselves fully

View file

@ -78,6 +78,3 @@
}
};
})();
ko.exportSymbol('utils.parseHtmlFragment', ko.utils.parseHtmlFragment);
ko.exportSymbol('utils.setHtml', ko.utils.setHtml);

View file

@ -88,8 +88,5 @@ ko.utils.domNodeDisposal = new (function () {
})();
ko.cleanNode = ko.utils.domNodeDisposal.cleanNode; // Shorthand name for convenience
ko.removeNode = ko.utils.domNodeDisposal.removeNode; // Shorthand name for convenience
ko.exportSymbol('cleanNode', ko.cleanNode);
ko.exportSymbol('removeNode', ko.removeNode);
ko.exportSymbol('utils.domNodeDisposal', ko.utils.domNodeDisposal);
ko.exportSymbol('utils.domNodeDisposal.addDisposeCallback', ko.utils.domNodeDisposal.addDisposeCallback);
ko.exportSymbol('utils.domNodeDisposal.removeDisposeCallback', ko.utils.domNodeDisposal.removeDisposeCallback);

View file

@ -1,26 +1,26 @@
ko.utils = (() => {
const
arrayCall = (name, arr, p1, p2) => Array.prototype[name].call(arr, p1, p2),
objectForEach = (obj, action) => obj && Object.entries(obj).forEach(prop => action(prop[0], prop[1])),
extend = (target, source) => {
source && Object.entries(source).forEach(prop => target[prop[0]] = prop[1]);
return target;
},
setPrototypeOf = (obj, proto) => {
obj.__proto__ = proto;
return obj;
},
// For details on the pattern for changing node classes
// see: https://github.com/knockout/knockout/issues/1597
toggleDomNodeCssClass = (node, classNames, shouldHaveClass) => {
if (classNames) {
var addOrRemoveFn = shouldHaveClass ? 'add' : 'remove';
classNames.split(/\s+/).forEach(className =>
node.classList[addOrRemoveFn](className)
);
}
};
const
arrayCall = (name, arr, p1, p2) => Array.prototype[name].call(arr, p1, p2),
objectForEach = (obj, action) => obj && Object.entries(obj).forEach(prop => action(prop[0], prop[1])),
extend = (target, source) => {
source && Object.entries(source).forEach(prop => target[prop[0]] = prop[1]);
return target;
},
setPrototypeOf = (obj, proto) => {
obj.__proto__ = proto;
return obj;
},
// For details on the pattern for changing node classes
// see: https://github.com/knockout/knockout/issues/1597
toggleDomNodeCssClass = (node, classNames, shouldHaveClass) => {
if (classNames) {
var addOrRemoveFn = shouldHaveClass ? 'add' : 'remove';
classNames.split(/\s+/).forEach(className =>
node.classList[addOrRemoveFn](className)
);
}
};
var canSetPrototype = ({ __proto__: [] } instanceof Array);
@ -31,13 +31,8 @@ ko.utils = (() => {
arrayIndexOf: (array, item) =>
arrayCall('indexOf', array, item),
arrayFirst: (array, predicate, predicateOwner) => {
for (var i = 0, j = array.length; i < j; i++) {
if (predicate.call(predicateOwner, array[i], i, array))
return array[i];
}
return undefined;
},
arrayFirst: (array, predicate, predicateOwner) =>
arrayCall('find', array, (e, i, a) => predicate.call(predicateOwner, e, i, a)),
arrayRemoveItem: (array, itemToRemove) => {
var index = ko.utils.arrayIndexOf(array, itemToRemove);
@ -106,21 +101,6 @@ ko.utils = (() => {
childNodes && domNode.append.apply(domNode, childNodes);
},
replaceDomNodes: (nodeToReplaceOrNodeArray, newNodesArray) => {
var nodesToReplaceArray = nodeToReplaceOrNodeArray.nodeType
? [nodeToReplaceOrNodeArray] : nodeToReplaceOrNodeArray;
if (nodesToReplaceArray.length > 0) {
var insertionPoint = nodesToReplaceArray[0],
parent = insertionPoint.parentNode,
i, j;
for (i = 0, j = newNodesArray.length; i < j; i++)
parent.insertBefore(newNodesArray[i], insertionPoint);
for (i = 0, j = nodesToReplaceArray.length; i < j; i++) {
ko.removeNode(nodesToReplaceArray[i]);
}
}
},
fixUpContinuousNodeArray: (continuousNodeArray, parentNode) => {
// Before acting on a set of nodes that were previously outputted by a template function, we have to reconcile
// them against what is in the DOM right now. It may be that some of the nodes have already been removed, or that
@ -166,7 +146,7 @@ ko.utils = (() => {
return continuousNodeArray;
},
stringTrim: string => string === null || string === undefined ? '' :
stringTrim: string => string == null ? '' :
string.trim ?
string.trim() :
string.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ''),
@ -183,8 +163,6 @@ ko.utils = (() => {
domNodeIsAttachedToDocument: node => ko.utils.domNodeIsContainedBy(node, node.ownerDocument.documentElement),
anyDomNodeIsAttachedToDocument: nodes => !!ko.utils.arrayFirst(nodes, ko.utils.domNodeIsAttachedToDocument),
// For HTML elements, tagName will always be upper case; for XHTML elements, it'll be lower case.
// Possible future optimization: If we know it's an element from an XHTML document (not HTML),
// we don't need to do the .toLowerCase() as it will always be lower case anyway.
@ -227,41 +205,12 @@ ko.utils = (() => {
toggleDomNodeCssClass: toggleDomNodeCssClass,
setTextContent: (element, textContent) => {
var value = ko.utils.unwrapObservable(textContent);
if ((value === null) || (value === undefined))
value = "";
// We need there to be exactly one child: a text node.
// If there are no children, more than one, or if it's not a text node,
// we'll clear everything and create a single text node.
var innerTextNode = ko.virtualElements.firstChild(element);
if (!innerTextNode || innerTextNode.nodeType != 3 || ko.virtualElements.nextSibling(innerTextNode)) {
ko.virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);
} else {
innerTextNode.data = value;
}
},
setTextContent: (element, textContent) =>
element.textContent = ko.utils.unwrapObservable(textContent) || "",
makeArray: arrayLikeObject => Array['from'](arrayLikeObject)
}
})();
ko.exportSymbol('utils', ko.utils);
ko.exportSymbol('utils.arrayForEach', ko.utils.arrayForEach);
ko.exportSymbol('utils.arrayFirst', ko.utils.arrayFirst);
ko.exportSymbol('utils.arrayIndexOf', ko.utils.arrayIndexOf);
ko.exportSymbol('utils.arrayPushAll', ko.utils.arrayPushAll);
ko.exportSymbol('utils.arrayRemoveItem', ko.utils.arrayRemoveItem);
ko.exportSymbol('utils.cloneNodes', ko.utils.cloneNodes);
ko.exportSymbol('utils.extend', ko.utils.extend);
ko.exportSymbol('utils.objectMap', ko.utils.objectMap);
ko.exportSymbol('utils.peekObservable', ko.utils.peekObservable);
ko.exportSymbol('utils.registerEventHandler', ko.utils.registerEventHandler);
ko.exportSymbol('utils.stringifyJson', ko.utils.stringifyJson);
ko.exportSymbol('utils.toggleDomNodeCssClass', ko.utils.toggleDomNodeCssClass);
ko.exportSymbol('utils.triggerEvent', ko.utils.triggerEvent);
ko.exportSymbol('utils.unwrapObservable', ko.utils.unwrapObservable);
ko.exportSymbol('utils.objectForEach', ko.utils.objectForEach);
ko.exportSymbol('utils.setTextContent', ko.utils.setTextContent);
ko.exportSymbol('unwrap', ko.utils.unwrapObservable); // Convenient shorthand, because this is used so commonly

View file

@ -143,11 +143,3 @@
}
};
})();
ko.exportSymbol('virtualElements', ko.virtualElements);
ko.exportSymbol('virtualElements.allowedBindings', ko.virtualElements.allowedBindings);
ko.exportSymbol('virtualElements.emptyNode', ko.virtualElements.emptyNode);
//ko.exportSymbol('virtualElements.firstChild', ko.virtualElements.firstChild); // firstChild is not minified
ko.exportSymbol('virtualElements.insertAfter', ko.virtualElements.insertAfter);
//ko.exportSymbol('virtualElements.nextSibling', ko.virtualElements.nextSibling); // nextSibling is not minified
ko.exportSymbol('virtualElements.prepend', ko.virtualElements.prepend);
ko.exportSymbol('virtualElements.setDomNodeChildren', ko.virtualElements.setDomNodeChildren);