(function(){var n=!0;(function(t){var u=this||eval("this"),r=u.document,e=u.navigator,i=u.jQuery,f=u.JSON;(function(n){if(typeof require=="function"&&typeof exports=="object"&&typeof module=="object"){var t=module.exports||exports;n(t)}else typeof define=="function"&&define.amd?define(["exports"],n):n(u.ko={})})(function(o){function v(n,t){var i=n===null||typeof n in g;return i?n===t:!1}function nt(n){var t=this;return n&&s.utils.objectForEach(n,function(n,i){var r=s.extenders[n];typeof r=="function"&&(t=r(t,i)||t)}),t}function tt(n){s.bindingHandlers[n]={init:function(t,i,r,u,f){var e=function(){var t={};return t[n]=i(),t};return s.bindingHandlers.event.init.call(this,t,e,r,u,f)}}}function d(n,t,i,r){s.bindingHandlers[n]={init:function(n){return s.utils.domData.set(n,k,{}),{controlsDescendantBindings:!0}},update:function(n,u,f,e,o){var h=s.utils.domData.get(n,k),a=s.utils.unwrapObservable(u()),c=!i!=!a,l=!h.savedNodes,v=l||t||c!==h.didDisplayOnLastUpdate;v&&(l&&(h.savedNodes=s.utils.cloneNodes(s.virtualElements.childNodes(n),!0)),c?(l||s.virtualElements.setDomNodeChildren(n,s.utils.cloneNodes(h.savedNodes)),s.applyBindingsToDescendants(r?r(o,a):o,n)):s.virtualElements.emptyNode(n),h.didDisplayOnLastUpdate=c)}};s.expressionRewriting.bindingRewriteValidators[n]=!1;s.virtualElements.allowedBindings[n]=!0}var s=typeof o!="undefined"?o:{},g,c,h,l,y,p,w,a,b,k;s.exportSymbol=function(n,t){for(var i=n.split("."),u=s,r=0;r<\/i>",u[0];);return n>4?n:t}(),y=n===6,p=n===7;return{fieldsIncludedWithJsonPost:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],arrayForEach:function(n,t){for(var i=0,r=n.length;i=0&&n.splice(i,1)},arrayGetDistinctValues:function(n){var i,t,r;for(n=n||[],i=[],t=0,r=n.length;t0){for(f=u[0],e=f.parentNode,i=0,r=t.length;i1){var i=n[0],r=n[n.length-1];for(n.length=0;i!==r;)if(n.push(i),i=i.nextSibling,!i)return;n.push(r)}}return n},setOptionNodeSelectionState:function(t,i){n<7?t.setAttribute("selected",i):t.selected=i},stringTrim:function(n){return n===null||n===t?"":n.trim?n.trim():n.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},stringTokenize:function(n,t){for(var u=[],f=(n||"").split(t),r,i=0,e=f.length;in.length)?!1:n.substring(0,t.length)===t},domNodeIsContainedBy:function(n,t){if(n===t)return!0;if(n.nodeType===11)return!1;if(t.contains)return t.contains(n.nodeType===3?n.parentNode:n);if(t.compareDocumentPosition)return(t.compareDocumentPosition(n)&16)==16;while(n&&n!=t)n=n.parentNode;return!!n},domNodeIsAttachedToDocument:function(n){return s.utils.domNodeIsContainedBy(n,n.ownerDocument.documentElement)},anyDomNodeIsAttachedToDocument:function(n){return!!s.utils.arrayFirst(n,s.utils.domNodeIsAttachedToDocument)},tagNameLower:function(n){return n&&n.tagName&&n.tagName.toLowerCase()},registerEventHandler:function(t,r,u){var o=n&&v[r],h,f,e;if(o||typeof i=="undefined")if(o||typeof t.addEventListener!="function")if(typeof t.attachEvent!="undefined")f=function(n){u.call(t,n)},e="on"+r,t.attachEvent(e,f),s.utils.domNodeDisposal.addDisposeCallback(t,function(){t.detachEvent(e,f)});else throw new Error("Browser doesn't support addEventListener or attachEvent");else t.addEventListener(r,u,!1);else c(t,r)&&(h=u,u=function(n,t){var i=this.checked;t&&(this.checked=t.checkedStateBeforeEvent!==!0);h.call(this,n);this.checked=i}),i(t).bind(r,u)},triggerEvent:function(n,t){var f,o,e;if(!(n&&n.nodeType))throw new Error("element must be a DOM node when calling triggerEvent");if(typeof i!="undefined")f=[],c(n,t)&&f.push({checkedStateBeforeEvent:n.checked}),i(n).trigger(t,f);else if(typeof r.createEvent=="function")if(typeof n.dispatchEvent=="function")o=l[t]||"HTMLEvents",e=r.createEvent(o),e.initEvent(t,!0,!0,u,0,0,0,0,0,!1,!1,!1,!1,0,n),n.dispatchEvent(e);else throw new Error("The supplied element doesn't support dispatchEvent");else if(typeof n.fireEvent!="undefined")c(n,t)&&(n.checked=n.checked!==!0),n.fireEvent("on"+t);else throw new Error("Browser doesn't support triggering events");},unwrapObservable:function(n){return s.isObservable(n)?n():n},peekObservable:function(n){return s.isObservable(n)?n.peek():n},toggleDomNodeCssClass:function(n,t,i){if(t){var r=/\S+/g,u=n.className.match(r)||[];s.utils.arrayForEach(t.match(r),function(n){s.utils.addOrRemoveItem(u,n,i)});n.className=u.join(" ")}},setTextContent:function(n,i){var u=s.utils.unwrapObservable(i),f;(u===null||u===t)&&(u="");f=s.virtualElements.firstChild(n);!f||f.nodeType!=3||s.virtualElements.nextSibling(f)?s.virtualElements.setDomNodeChildren(n,[r.createTextNode(u)]):f.data=u;s.utils.forceRefresh(n)},setElementName:function(t,i){if(t.name=i,n<=7)try{t.mergeAttributes(r.createElement(""),!1)}catch(u){}},forceRefresh:function(t){if(n>=9){var i=t.nodeType==1?t:t.parentNode;i.style&&(i.style.zoom=i.style.zoom)}},ensureSelectElementIsRenderedCorrectly:function(t){if(n){var i=t.style.width;t.style.width=0;t.style.width=i}},range:function(n,t){var r,i;for(n=s.utils.unwrapObservable(n),t=s.utils.unwrapObservable(t),r=[],i=n;i<=t;i++)r.push(i);return r},makeArray:function(n){for(var i=[],t=0,r=n.length;t=0;i--)f(r[i])&&u.push(r[i]);return u},parseJson:function(n){return typeof n=="string"&&(n=s.utils.stringTrim(n),n)?f&&f.parse?f.parse(n):new Function("return "+n)():null},stringifyJson:function(n,t,i){if(!f||!f.stringify)throw new Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return f.stringify(s.utils.unwrapObservable(n),t,i)},postJson:function(n,t,i){var l,e,h,f,u,a,c;i=i||{};var v=i.params||{},y=i.includeFields||this.fieldsIncludedWithJsonPost,p=n;if(typeof n=="object"&&s.utils.tagNameLower(n)==="form")for(l=n,p=l.action,e=y.length-1;e>=0;e--)for(h=s.utils.getFormFields(l,y[e]),f=h.length-1;f>=0;f--)v[h[f].name]=h[f].value;t=s.utils.unwrapObservable(t);u=r.createElement("form");u.style.display="none";u.action=p;u.method="post";for(a in t)c=r.createElement("input"),c.name=a,c.value=s.utils.stringifyJson(s.utils.unwrapObservable(t[a])),u.appendChild(c);o(v,function(n,t){var i=r.createElement("input");i.name=n;i.value=t;u.appendChild(i)});r.body.appendChild(u);i.submitter?i.submitter(u):u.submit();setTimeout(function(){u.parentNode.removeChild(u)},0)}}}();s.exportSymbol("utils",s.utils);s.exportSymbol("utils.arrayForEach",s.utils.arrayForEach);s.exportSymbol("utils.arrayFirst",s.utils.arrayFirst);s.exportSymbol("utils.arrayFilter",s.utils.arrayFilter);s.exportSymbol("utils.arrayGetDistinctValues",s.utils.arrayGetDistinctValues);s.exportSymbol("utils.arrayIndexOf",s.utils.arrayIndexOf);s.exportSymbol("utils.arrayMap",s.utils.arrayMap);s.exportSymbol("utils.arrayPushAll",s.utils.arrayPushAll);s.exportSymbol("utils.arrayRemoveItem",s.utils.arrayRemoveItem);s.exportSymbol("utils.extend",s.utils.extend);s.exportSymbol("utils.fieldsIncludedWithJsonPost",s.utils.fieldsIncludedWithJsonPost);s.exportSymbol("utils.getFormFields",s.utils.getFormFields);s.exportSymbol("utils.peekObservable",s.utils.peekObservable);s.exportSymbol("utils.postJson",s.utils.postJson);s.exportSymbol("utils.parseJson",s.utils.parseJson);s.exportSymbol("utils.registerEventHandler",s.utils.registerEventHandler);s.exportSymbol("utils.stringifyJson",s.utils.stringifyJson);s.exportSymbol("utils.range",s.utils.range);s.exportSymbol("utils.toggleDomNodeCssClass",s.utils.toggleDomNodeCssClass);s.exportSymbol("utils.triggerEvent",s.utils.triggerEvent);s.exportSymbol("utils.unwrapObservable",s.utils.unwrapObservable);s.exportSymbol("utils.objectForEach",s.utils.objectForEach);s.exportSymbol("utils.addOrRemoveItem",s.utils.addOrRemoveItem);s.exportSymbol("unwrap",s.utils.unwrapObservable);Function.prototype.bind||(Function.prototype.bind=function(n){var i=this,t=Array.prototype.slice.call(arguments),n=t.shift();return function(){return i.apply(n,t.concat(Array.prototype.slice.call(arguments)))}});s.utils.domData=new function(){function r(r,f){var e=r[n],o=e&&e!=="null"&&i[e];if(!o){if(!f)return t;e=r[n]="ko"+u++;i[e]={}}return i[e]}var u=0,n="__ko__"+(new Date).getTime(),i={};return{get:function(n,i){var u=r(n,!1);return u===t?t:u[i]},set:function(n,i,u){if(u!==t||r(n,!1)!==t){var f=r(n,!0);f[i]=u}},clear:function(t){var r=t[n];return r?(delete i[r],t[n]=null,!0):!1},nextKey:function(){return u+++n}}};s.exportSymbol("utils.domData",s.utils.domData);s.exportSymbol("utils.domData.clear",s.utils.domData.clear);s.utils.domNodeDisposal=new function(){function r(i,r){var u=s.utils.domData.get(i,n);return u===t&&r&&(u=[],s.utils.domData.set(i,n,u)),u}function o(i){s.utils.domData.set(i,n,t)}function u(n){var t=r(n,!1),u;if(t)for(t=t.slice(0),u=0;u","<\/table>"]||!i.indexOf("","<\/tbody><\/table>"]||(!i.indexOf("","<\/tr><\/tbody><\/table>"]||[0,"",""],e="ignored
"+f[1]+n+f[2]+"<\/div>";for(typeof u.innerShiv=="function"?t.appendChild(u.innerShiv(e)):t.innerHTML=e;f[0]--;)t=t.lastChild;return s.utils.makeArray(t.lastChild.childNodes)}function f(n){var r,t;if(i.parseHTML)return i.parseHTML(n)||[];if(r=i.clean([n]),r&&r[0]){for(t=r[0];t.parentNode&&t.parentNode.nodeType!==11;)t=t.parentNode;t.parentNode&&t.parentNode.removeChild(t)}return r}s.utils.parseHtmlFragment=function(t){return typeof i!="undefined"?f(t):n(t)};s.utils.setHtml=function(n,r){var f,u;if(s.utils.emptyDomNode(n),r=s.utils.unwrapObservable(r),r!==null&&r!==t)if(typeof r!="string"&&(r=r.toString()),typeof i!="undefined")i(n).html(r);else for(f=s.utils.parseHtmlFragment(r),u=0;u"},unmemoize:function(i,r){var u=n[i];if(u===t)throw new Error("Couldn't find any memo with ID "+i+". Perhaps it's already been unmemoized.");try{return u.apply(null,r||[]),!0}finally{delete n[i]}},unmemoizeDomNodeAndDescendants:function(n,t){var f=[],u,o,i,e;for(r(n,f),u=0,o=f.length;u0){var i=n[n.length-1];if(!i||s.utils.arrayIndexOf(i.distinctDependencies,t)>=0)return;i.distinctDependencies.push(t);i.callback(t)}},ignore:function(t,i,r){try{return n.push(null),t.apply(i,r||[])}finally{n.pop()}}}}();s.observable=function(t){function i(){return arguments.length>0?(i.equalityComparer&&i.equalityComparer(r,arguments[0])||(i.valueWillMutate(),r=arguments[0],n&&(i._latestValue=r),i.valueHasMutated()),this):(s.dependencyDetection.registerDependency(i),r)}var r=t;return n&&(i._latestValue=r),s.subscribable.call(i),i.peek=function(){return r},i.valueHasMutated=function(){i.notifySubscribers(r)},i.valueWillMutate=function(){i.notifySubscribers(r,"beforeChange")},s.utils.extend(i,s.observable.fn),s.exportProperty(i,"peek",i.peek),s.exportProperty(i,"valueHasMutated",i.valueHasMutated),s.exportProperty(i,"valueWillMutate",i.valueWillMutate),i};s.observable.fn={equalityComparer:v};h=s.observable.protoProperty="__ko_proto__";s.observable.fn[h]=s.observable;s.hasPrototype=function(n,i){return n===null||n===t||n[h]===t?!1:n[h]===i?!0:s.hasPrototype(n[h],i)};s.isObservable=function(n){return s.hasPrototype(n,s.observable)};s.isWriteableObservable=function(n){return typeof n=="function"&&n[h]===s.observable?!0:typeof n=="function"&&n[h]===s.dependentObservable&&n.hasWriteFunction?!0:!1};s.exportSymbol("observable",s.observable);s.exportSymbol("isObservable",s.isObservable);s.exportSymbol("isWriteableObservable",s.isWriteableObservable);s.observableArray=function(n){if(n=n||[],typeof n!="object"||!("length"in n))throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");var t=s.observable(n);return s.utils.extend(t,s.observableArray.fn),t.extend({trackArrayChanges:!0})};s.observableArray.fn={remove:function(n){for(var r=this.peek(),i=[],f=typeof n=="function"&&!s.isObservable(n)?n:function(t){return t===n},u,t=0;t=0}):[]},destroy:function(n){var i=this.peek(),u=typeof n=="function"&&!s.isObservable(n)?n:function(t){return t===n},t,r;for(this.valueWillMutate(),t=i.length-1;t>=0;t--)r=i[t],u(r)&&(i[t]._destroy=!0);this.valueHasMutated()},destroyAll:function(n){return n===t?this.destroy(function(){return!0}):n?this.destroy(function(t){return s.utils.arrayIndexOf(n,t)>=0}):[]},indexOf:function(n){var t=this();return s.utils.arrayIndexOf(t,n)},replace:function(n,t){var i=this.indexOf(n);i>=0&&(this.valueWillMutate(),this.peek()[i]=t,this.valueHasMutated())}};s.utils.arrayForEach(["pop","push","reverse","shift","sort","splice","unshift"],function(n){s.observableArray.fn[n]=function(){var t=this.peek(),i;return this.valueWillMutate(),this.cacheDiffForKnownOperation(t,n,arguments),i=t[n].apply(t,arguments),this.valueHasMutated(),i}});s.utils.arrayForEach(["slice"],function(n){s.observableArray.fn[n]=function(){var t=this();return t[n].apply(t,arguments)}});s.exportSymbol("observableArray",s.observableArray);l="arrayChange";s.extenders.trackArrayChanges=function(n){function f(){var f,u;r||(r=!0,f=n.notifySubscribers,n.notifySubscribers=function(n,t){return t&&t!==c||++i,f.apply(this,arguments)},u=[].concat(n.peek()||[]),t=null,n.subscribe(function(r){if(r=[].concat(r||[]),n.hasSubscriptionsForEvent(l)){var f=e(u,r);f.length&&n.notifySubscribers(f,l)}u=r;t=null;i=0}))}function e(n,r){return(!t||i>1)&&(t=s.utils.compareArrays(n,r,{sparse:!0})),t}if(!n.cacheDiffForKnownOperation){var r=!1,t=null,i=0,u=n.subscribe;n.subscribe=n.subscribe=function(n,t,i){return i===l&&f(),u.apply(this,arguments)};n.cacheDiffForKnownOperation=function(n,u,f){function h(n,t,i){v.push({status:n,value:t,index:i})}var e,a;if(r&&!i){var v=[],o=n.length,c=f.length,s=0;switch(u){case"push":s=o;case"unshift":for(e=0;e=0?(clearTimeout(nt),nt=setTimeout(v,n)):v()}function v(){var i,c,u;if(!y){if(b&&b()){if(!p){l();a=!0;return}}else p=!1;y=!0;try{for(i=s.utils.arrayMap(o,function(n){return n.target}),s.dependencyDetection.begin(function(n){var r;(r=s.utils.arrayIndexOf(i,n))>=0?i[r]=t:tt(n)}),c=r?e.call(r):e(),u=i.length-1;u>=0;u--)i[u]&&o.splice(u,1)[0].dispose();a=!0;f.equalityComparer&&f.equalityComparer(h,c)||(f.notifySubscribers(h,"beforeChange"),h=c,n&&(f._latestValue=h),f.notifySubscribers(h))}finally{s.dependencyDetection.end();y=!1}o.length||l()}}function f(){if(arguments.length>0){if(typeof g=="function")g.apply(r,arguments);else throw new 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}return a||v(),s.dependencyDetection.registerDependency(f),h}function rt(){return a||v(),h}function d(){return!a||o.length>0}var h,a=!1,y=!1,p=!1,e=i;if(e&&typeof e=="object"?(u=e,e=u.read):(u=u||{},e||(e=u.read)),typeof e!="function")throw new Error("Pass a function that returns the value of the ko.computed");var g=u.write,c=u.disposeWhenNodeIsRemoved||u.disposeWhenNodeIsRemoved||null,w=u.disposeWhen||u.disposeWhen,b=w,l=k,o=[],nt=null;return r||(r=u.owner),f.peek=rt,f.getDependenciesCount=function(){return o.length},f.hasWriteFunction=typeof u.write=="function",f.dispose=function(){l()},f.isActive=d,s.subscribable.call(f),s.utils.extend(f,s.dependentObservable.fn),s.exportProperty(f,"peek",f.peek),s.exportProperty(f,"dispose",f.dispose),s.exportProperty(f,"isActive",f.isActive),s.exportProperty(f,"getDependenciesCount",f.getDependenciesCount),c&&(p=!0,c.nodeType&&(b=function(){return!s.utils.domNodeIsAttachedToDocument(c)||w&&w()})),u.deferEvaluation!==!0&&v(),c&&d()&&(l=function(){s.utils.domNodeDisposal.removeDisposeCallback(c,l);k()},s.utils.domNodeDisposal.addDisposeCallback(c,l)),f};s.isComputed=function(n){return s.hasPrototype(n,s.dependentObservable)};y=s.observable.protoProperty;s.dependentObservable[y]=s.observable;s.dependentObservable.fn={equalityComparer:v};s.dependentObservable.fn[y]=s.dependentObservable;s.exportSymbol("dependentObservable",s.dependentObservable);s.exportSymbol("computed",s.dependentObservable);s.exportSymbol("isComputed",s.isComputed),function(){function i(r,f,e){var s,o;return(e=e||new n,r=f(r),s=typeof r=="object"&&r!==null&&r!==t&&!(r instanceof Date)&&!(r instanceof String)&&!(r instanceof Number)&&!(r instanceof Boolean),!s)?r:(o=r instanceof Array?[]:{},e.save(r,o),u(r,function(n){var u=f(r[n]),s;switch(typeof u){case"boolean":case"number":case"string":case"function":o[n]=u;break;case"object":case"undefined":s=e.get(u);o[n]=s!==t?s:i(u,f,e)}}),o)}function u(n,t){var i,r;if(n instanceof Array){for(i=0;i=0?this.values[i]=t:(this.keys.push(n),this.values.push(t))},get:function(n){var i=s.utils.arrayIndexOf(this.keys,n);return i>=0?this.values[i]:t}}}();s.exportSymbol("toJS",s.toJS);s.exportSymbol("toJSON",s.toJSON),function(){var n="__ko__hasDomDataOptionValue__";s.selectExtensions={readValue:function(i){switch(s.utils.tagNameLower(i)){case"option":return i[n]===!0?s.utils.domData.get(i,s.bindingHandlers.options.optionValueDomDataKey):s.utils.ieVersion<=7?i.getAttributeNode("value")&&i.getAttributeNode("value").specified?i.value:i.text:i.value;case"select":return i.selectedIndex>=0?s.selectExtensions.readValue(i.options[i.selectedIndex]):t;default:return i.value}},writeValue:function(i,r){switch(s.utils.tagNameLower(i)){case"option":switch(typeof r){case"string":s.utils.domData.set(i,s.bindingHandlers.options.optionValueDomDataKey,t);n in i&&delete i[n];i.value=r;break;default:s.utils.domData.set(i,s.bindingHandlers.options.optionValueDomDataKey,r);i[n]=!0;i.value=typeof r=="number"?r:""}break;case"select":r===""&&(r=t);(r===null||r===t)&&(i.selectedIndex=-1);for(var u=i.options.length-1;u>=0;u--)if(s.selectExtensions.readValue(i.options[u])==r){i.selectedIndex=u;break}i.size>1||i.selectedIndex!==-1||(i.selectedIndex=0);break;default:(r===null||r===t)&&(r="");i.value=r}}}}();s.exportSymbol("selectExtensions",s.selectExtensions);s.exportSymbol("selectExtensions.readValue",s.selectExtensions.readValue);s.exportSymbol("selectExtensions.writeValue",s.selectExtensions.writeValue);s.expressionRewriting=function(){function e(n){if(s.utils.arrayIndexOf(u,n)>=0)return!1;var t=n.match(f);return t===null?!1:t[1]?"Object("+t[1]+")"+t[2]:n}function i(n){var u=s.utils.stringTrim(n),l,r,i,v;u.charCodeAt(0)===123&&(u=u.slice(1,-1));var y=[],e=u.match(t),o,f,a=0;if(e)for(e.push(","),l=0;r=e[l];++l){if(i=r.charCodeAt(0),i===44){if(a<=0){o&&y.push(f?{key:o,value:f.join("")}:{unknown:o});o=f=a=0;continue}}else if(i===58){if(!f)continue}else if(i===47&&l&&r.length>1)v=e[l-1].match(h),v&&!c[v[0]]&&(u=u.substr(u.indexOf(r)+1),e=u.match(t),e.push(","),l=-1,r="/");else if(i===40||i===123||i===91)++a;else if(i===41||i===125||i===93)--a;else if(!o&&!f){o=i===34||i===39?r.slice(1,-1):r;continue}f?f.push(r):f=[r]}return y}function l(n,t){function u(n,t){function c(i){return i&&i.preprocess?t=i.preprocess(t,n,u):!0}var i;c(s.getBindingHandler(n))&&(r[n]&&(i=e(t))&&f.push("'"+n+"':function(_z){"+i+"=_z}"),h&&(t="function(){return "+t+" }"),o.push("'"+n+"':"+t))}t=t||{};var o=[],f=[],h=t.valueAccessors,c=typeof n=="string"?i(n):n;return s.utils.arrayForEach(c,function(n){u(n.key||n.unknown,n.value)}),f.length&&u("_ko_property_writers","{"+f.join(",")+"}"),o.join(",")}var u=["true","false","null","undefined"],f=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,n=",\"'{}()/:[\\]",o="[^\\s:,/][^"+n+"]*[^\\s"+n+"]",t=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|"+o+"|[^\\s]","g"),h=/[\])"'A-Za-z0-9_$]+$/,c={"in":1,"return":1,"typeof":1},r={};return{bindingRewriteValidators:[],twoWayBindings:r,parseObjectLiteral:i,preProcessBindings:l,keyValueArrayContainsKey:function(n,t){for(var i=0;i0?i[i.length-1].nextSibling:n.nextSibling:null}function c(t){var r=t.firstChild,u=null,f;if(r)do u?u.push(r):n(r)?(f=e(r,!0),f?r=f:u=[r]):i(r)&&(u=[r]);while(r=r.nextSibling);return u}var t=r&&r.createComment("test").text==="",u=t?/^$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,o=t?/^$/:/^\s*\/ko\s*$/,h={ul:!0,ol:!0};s.virtualElements={allowedBindings:{},childNodes:function(t){return n(t)?f(t):t.childNodes},emptyNode:function(t){var r,i,u;if(n(t))for(r=s.virtualElements.childNodes(t),i=0,u=r.length;i=0:o?t:u()===t}var o=n.type=="checkbox",f=n.type=="radio";if(o||f){var e=o&&s.utils.unwrapObservable(i())instanceof Array,h=e?u():t,v=f||e,l=!1;f&&!n.name&&s.bindingHandlers.uniqueName.init(n,function(){return!0});s.dependentObservable(c,null,{disposeWhenNodeIsRemoved:n});s.utils.registerEventHandler(n,"click",c);s.dependentObservable(a,null,{disposeWhenNodeIsRemoved:n});l=!0}}};s.expressionRewriting.twoWayBindings.checked=!0;s.bindingHandlers.checkedValue={update:function(n,t){n.value=s.utils.unwrapObservable(t())}}}();w="__ko__cssValue";s.bindingHandlers.css={update:function(n,t){var i=s.utils.unwrapObservable(t());typeof i=="object"?s.utils.objectForEach(i,function(t,i){i=s.utils.unwrapObservable(i);s.utils.toggleDomNodeCssClass(n,t,i)}):(i=String(i||""),s.utils.toggleDomNodeCssClass(n,n[w],!1),n[w]=i,s.utils.toggleDomNodeCssClass(n,i,!0))}};s.bindingHandlers.enable={update:function(n,t){var i=s.utils.unwrapObservable(t());i&&n.disabled?n.removeAttribute("disabled"):i||n.disabled||(n.disabled=!0)}};s.bindingHandlers.disable={update:function(n,t){s.bindingHandlers.enable.update(n,function(){return!s.utils.unwrapObservable(t())})}};s.bindingHandlers.event={init:function(n,t,i,r,u){var f=t()||{};s.utils.objectForEach(f,function(f){typeof f=="string"&&s.utils.registerEventHandler(n,f,function(n){var o,h=t()[f],e,c;if(h){try{e=s.utils.makeArray(arguments);r=u.$data;e.unshift(r);o=h.apply(r,e)}finally{o!==!0&&(n.preventDefault?n.preventDefault():n.returnValue=!1)}c=i.get(f+"Bubble")!==!1;c||(n.cancelBubble=!0,n.stopPropagation&&n.stopPropagation())}})})}};s.bindingHandlers.foreach={makeTemplateValueAccessor:function(n){return function(){var i=n(),t=s.utils.peekObservable(i);return!t||typeof t.length=="number"?{foreach:i,templateEngine:s.nativeTemplateEngine.instance}:(s.utils.unwrapObservable(i),{foreach:t.data,as:t.as,includeDestroyed:t.includeDestroyed,afterAdd:t.afterAdd,beforeRemove:t.beforeRemove,afterRender:t.afterRender,beforeMove:t.beforeMove,afterMove:t.afterMove,templateEngine:s.nativeTemplateEngine.instance})}},init:function(n,t){return s.bindingHandlers.template.init(n,s.bindingHandlers.foreach.makeTemplateValueAccessor(t))},update:function(n,t,i,r,u){return s.bindingHandlers.template.update(n,s.bindingHandlers.foreach.makeTemplateValueAccessor(t),i,r,u)}};s.expressionRewriting.bindingRewriteValidators.foreach=!1;s.virtualElements.allowedBindings.foreach=!0;a="__ko_hasfocusUpdating";b="__ko_hasfocusLastValue";s.bindingHandlers.hasfocus={init:function(n,t,i){var r=function(r){var u,f,e;if(n[a]=!0,u=n.ownerDocument,"activeElement"in u){try{f=u.activeElement}catch(o){f=u.body}r=f===n}e=t();s.expressionRewriting.writeValueToProperty(e,i,"hasfocus",r,!0);n[b]=r;n[a]=!1},u=r.bind(null,!0),f=r.bind(null,!1);s.utils.registerEventHandler(n,"focus",u);s.utils.registerEventHandler(n,"focusin",u);s.utils.registerEventHandler(n,"blur",f);s.utils.registerEventHandler(n,"focusout",f)},update:function(n,t){var i=!!s.utils.unwrapObservable(t());n[a]||n[b]===i||(i?n.focus():n.blur(),s.dependencyDetection.ignore(s.utils.triggerEvent,null,[n,i?"focusin":"focusout"]))}};s.expressionRewriting.twoWayBindings.hasfocus=!0;s.bindingHandlers.hasFocus=s.bindingHandlers.hasfocus;s.expressionRewriting.twoWayBindings.hasFocus=!0;s.bindingHandlers.html={init:function(){return{controlsDescendantBindings:!0}},update:function(n,t){s.utils.setHtml(n,t())}};k=s.utils.domData.nextKey();d("if");d("ifnot",!1,!0);d("with",!0,!1,function(n,t){return n.createChildContext(t)});s.bindingHandlers.options={init:function(n){if(s.utils.tagNameLower(n)!=="select")throw new Error("options binding applies only to SELECT elements");while(n.length>0)n.remove(0);return{controlsDescendantBindings:!0}},update:function(n,i,u){function y(){return s.utils.arrayFilter(n.options,function(n){return n.selected})}function p(n,t,i){var r=typeof t;return r=="function"?t(n):r=="string"?n[t]:i}function g(n,i,e){var o,c,l;return e.length&&(f=e[0].selected?[s.selectExtensions.readValue(e[0])]:[],a=!0),o=r.createElement("option"),n===h?(s.utils.setTextContent(o,u.get("optionsCaption")),s.selectExtensions.writeValue(o,t)):(c=p(n,u.get("optionsValue"),n),s.selectExtensions.writeValue(o,s.utils.unwrapObservable(c)),l=p(n,u.get("optionsText"),c),s.utils.setTextContent(o,l)),[o]}function w(t,i){if(f.length){var r=s.utils.arrayIndexOf(f,s.selectExtensions.readValue(i[0]))>=0;s.utils.setOptionNodeSelectionState(i[0],r);a&&!r&&s.dependencyDetection.ignore(s.utils.triggerEvent,null,[n,"change"])}}var k=n.length==0,o=!k&&n.multiple?n.scrollTop:null,e=s.utils.unwrapObservable(i()),d=u.get("optionsIncludeDestroyed"),h={},c,f,l,a,v,b;f=n.multiple?s.utils.arrayMap(y(),s.selectExtensions.readValue):n.selectedIndex>=0?[s.selectExtensions.readValue(n.options[n.selectedIndex])]:[];e?(typeof e.length=="undefined"&&(e=[e]),l=s.utils.arrayFilter(e,function(n){return d||n===t||n===null||!s.utils.unwrapObservable(n._destroy)}),u.has("optionsCaption")&&(c=s.utils.unwrapObservable(u.get("optionsCaption")),c!==null&&c!==t&&l.unshift(h))):e=[];a=!1;v=w;u.has("optionsAfterRender")&&(v=function(n,i){w(n,i);s.dependencyDetection.ignore(u.get("optionsAfterRender"),null,[i[0],n!==h?n:t])});s.utils.setDomNodeChildrenFromArrayMapping(n,l,g,null,v);b=n.multiple?f.length&&y().length=0?s.selectExtensions.readValue(n.options[n.selectedIndex])!==f[0]:f.length||n.selectedIndex>=0;b&&s.dependencyDetection.ignore(s.utils.triggerEvent,null,[n,"change"]);s.utils.ensureSelectElementIsRenderedCorrectly(n);o&&Math.abs(o-n.scrollTop)>20&&(n.scrollTop=o)}};s.bindingHandlers.options.optionValueDomDataKey=s.utils.domData.nextKey();s.bindingHandlers.selectedOptions={after:["options","foreach"],init:function(n,t,i){s.utils.registerEventHandler(n,"change",function(){var u=t(),r=[];s.utils.arrayForEach(n.getElementsByTagName("option"),function(n){n.selected&&r.push(s.selectExtensions.readValue(n))});s.expressionRewriting.writeValueToProperty(u,i,"selectedOptions",r)})},update:function(n,t){if(s.utils.tagNameLower(n)!="select")throw new Error("values binding applies only to SELECT elements");var i=s.utils.unwrapObservable(t());i&&typeof i.length=="number"&&s.utils.arrayForEach(n.getElementsByTagName("option"),function(n){var t=s.utils.arrayIndexOf(i,s.selectExtensions.readValue(n))>=0;s.utils.setOptionNodeSelectionState(n,t)})}};s.expressionRewriting.twoWayBindings.selectedOptions=!0;s.bindingHandlers.style={update:function(n,t){var i=s.utils.unwrapObservable(t()||{});s.utils.objectForEach(i,function(t,i){i=s.utils.unwrapObservable(i);n.style[t]=i||""})}};s.bindingHandlers.submit={init:function(n,t,i,r,u){if(typeof t()!="function")throw new Error("The value for a submit binding must be a function");s.utils.registerEventHandler(n,"submit",function(i){var r,f=t();try{r=f.call(u.$data,n)}finally{r!==!0&&(i.preventDefault?i.preventDefault():i.returnValue=!1)}})}};s.bindingHandlers.text={init:function(){return{controlsDescendantBindings:!0}},update:function(n,t){s.utils.setTextContent(n,t())}};s.virtualElements.allowedBindings.text=!0;s.bindingHandlers.uniqueName={init:function(n,t){if(t()){var i="ko_unique_"+ ++s.bindingHandlers.uniqueName.currentIndex;s.utils.setElementName(n,i)}}};s.bindingHandlers.uniqueName.currentIndex=0;s.bindingHandlers.value={after:["options","foreach"],init:function(n,t,i){var r=["change"],u=i.get("valueUpdate"),e=!1,f,o;u&&(typeof u=="string"&&(u=[u]),s.utils.arrayPushAll(r,u),r=s.utils.arrayGetDistinctValues(r));f=function(){e=!1;var r=t(),u=s.selectExtensions.readValue(n);s.expressionRewriting.writeValueToProperty(r,i,"value",u)};o=s.utils.ieVersion&&n.tagName.toLowerCase()=="input"&&n.type=="text"&&n.autocomplete!="off"&&(!n.form||n.form.autocomplete!="off");o&&s.utils.arrayIndexOf(r,"propertychange")==-1&&(s.utils.registerEventHandler(n,"propertychange",function(){e=!0}),s.utils.registerEventHandler(n,"blur",function(){e&&f()}));s.utils.arrayForEach(r,function(t){var i=f;s.utils.stringStartsWith(t,"after")&&(i=function(){setTimeout(f,0)},t=t.substring(5));s.utils.registerEventHandler(n,t,i)})},update:function(n,t){var u=s.utils.tagNameLower(n)==="select",i=s.utils.unwrapObservable(t()),f=s.selectExtensions.readValue(n),e=i!==f,r;e&&(r=function(){s.selectExtensions.writeValue(n,i)},r(),u&&(i!==s.selectExtensions.readValue(n)?s.dependencyDetection.ignore(s.utils.triggerEvent,null,[n,"change"]):setTimeout(r,0)))}};s.expressionRewriting.twoWayBindings.value=!0;s.bindingHandlers.visible={update:function(n,t){var i=s.utils.unwrapObservable(t()),r=!(n.style.display=="none");i&&!r?n.style.display="":!i&&r&&(n.style.display="none")}};tt("click");s.templateEngine=function(){};s.templateEngine.prototype.renderTemplateSource=function(){throw new Error("Override renderTemplateSource");};s.templateEngine.prototype.createJavaScriptEvaluatorBlock=function(){throw new Error("Override createJavaScriptEvaluatorBlock");};s.templateEngine.prototype.makeTemplateSource=function(n,t){if(typeof n=="string"){t=t||r;var i=t.getElementById(n);if(!i)throw new Error("Cannot find template with ID "+n);return new s.templateSources.domElement(i)}if(n.nodeType==1||n.nodeType==8)return new s.templateSources.anonymousTemplate(n);throw new Error("Unknown template type: "+n);};s.templateEngine.prototype.renderTemplate=function(n,t,i,r){var u=this.makeTemplateSource(n,r);return this.renderTemplateSource(u,t,i)};s.templateEngine.prototype.isTemplateRewritten=function(n,t){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(n,t).data("isRewritten")};s.templateEngine.prototype.rewriteTemplate=function(n,t,i){var r=this.makeTemplateSource(n,i),u=t(r.text());r.text(u);r.data("isRewritten",!0)};s.exportSymbol("templateEngine",s.templateEngine);s.templateRewriting=function(){function r(n){for(var f=s.expressionRewriting.bindingRewriteValidators,i,r,u,t=0;t/g;return{ensureTemplateIsRewritten:function(n,t,i){t.isTemplateRewritten(n,i)||t.rewriteTemplate(n,function(n){return s.templateRewriting.memoizeBindingAttributeSyntax(n,t)},i)},memoizeBindingAttributeSyntax:function(r,u){return r.replace(t,function(){return n(arguments[4],arguments[1],arguments[2],u)}).replace(i,function(){return n(arguments[1],"","#comment",u)})},applyMemoizedBindingsToNextSibling:function(n,t){return s.memoization.memoize(function(i,r){var u=i.nextSibling;u&&u.nodeName.toLowerCase()===t&&s.applyBindingAccessorsToNode(u,n,r)})}}}();s.exportSymbol("__tr_ambtns",s.templateRewriting.applyMemoizedBindingsToNextSibling),function(){var i,n;s.templateSources={};s.templateSources.domElement=function(n){this.domElement=n};s.templateSources.domElement.prototype.text=function(){var i=s.utils.tagNameLower(this.domElement),n=i==="script"?"text":i==="textarea"?"value":"innerHTML",t;if(arguments.length==0)return this.domElement[n];t=arguments[0];n==="innerHTML"?s.utils.setHtml(this.domElement,t):this.domElement[n]=t};i=s.utils.domData.nextKey()+"_";s.templateSources.domElement.prototype.data=function(n){if(arguments.length===1)return s.utils.domData.get(this.domElement,i+n);s.utils.domData.set(this.domElement,i+n,arguments[1])};n=s.utils.domData.nextKey();s.templateSources.anonymousTemplate=function(n){this.domElement=n};s.templateSources.anonymousTemplate.prototype=new s.templateSources.domElement;s.templateSources.anonymousTemplate.prototype.constructor=s.templateSources.anonymousTemplate;s.templateSources.anonymousTemplate.prototype.text=function(){var i,r;if(arguments.length==0)return i=s.utils.domData.get(this.domElement,n)||{},i.textData===t&&i.containerData&&(i.textData=i.containerData.innerHTML),i.textData;r=arguments[0];s.utils.domData.set(this.domElement,n,{textData:r})};s.templateSources.domElement.prototype.nodes=function(){var t,i;if(arguments.length==0)return t=s.utils.domData.get(this.domElement,n)||{},t.containerData;i=arguments[0];s.utils.domData.set(this.domElement,n,{containerData:i})};s.exportSymbol("templateSources",s.templateSources);s.exportSymbol("templateSources.domElement",s.templateSources.domElement);s.exportSymbol("templateSources.anonymousTemplate",s.templateSources.anonymousTemplate)}(),function(){function i(n,t,i){for(var u,r=n,f=s.virtualElements.nextSibling(t);r&&(u=r)!==f;)r=s.virtualElements.nextSibling(u),i(u,r)}function f(n,t){if(n.length){var r=n[0],u=n[n.length-1],f=r.parentNode,e=s.bindingProvider.instance,o=e.preprocessNode;if(o){if(i(r,u,function(n,t){var f=n.previousSibling,i=o.call(e,n);i&&(n===r&&(r=i[0]||t),n===u&&(u=i[i.length-1]||f))}),n.length=0,!r)return;r===u?n.push(r):(n.push(r,u),s.utils.fixUpContinuousNodeArray(n,f))}i(r,u,function(n){(n.nodeType===1||n.nodeType===8)&&s.applyBindings(t,n)});i(r,u,function(n){(n.nodeType===1||n.nodeType===8)&&s.memoization.unmemoizeDomNodeAndDescendants(n,[t])});s.utils.fixUpContinuousNodeArray(n,f)}}function r(n){return n.nodeType?n:n.length>0?n[0]:null}function e(t,i,u,e,o){var h,c;o=o||{};var l=t&&r(t),a=l&&l.ownerDocument,v=o.templateEngine||n;if(s.templateRewriting.ensureTemplateIsRewritten(u,v,a),h=v.renderTemplate(u,e,o,a),typeof h.length!="number"||h.length>0&&typeof h[0].nodeType!="number")throw new Error("Template engine must return an array of DOM nodes");c=!1;switch(i){case"replaceChildren":s.virtualElements.setDomNodeChildren(t,h);c=!0;break;case"replaceNode":s.utils.replaceDomNodes(t,h);c=!0;break;case"ignoreTargetNode":break;default:throw new Error("Unknown renderMode: "+i);}return c&&(f(h,e),o.afterRender&&s.dependencyDetection.ignore(o.afterRender,null,[h,e.$data])),h}function o(n,i){var r=s.utils.domData.get(n,u);r&&typeof r.dispose=="function"&&r.dispose();s.utils.domData.set(n,u,i&&i.isActive()?i:t)}var n,u;s.setTemplateEngine=function(i){if(i!=t&&!(i instanceof s.templateEngine))throw new Error("templateEngine must inherit from ko.templateEngine");n=i};s.renderTemplate=function(i,u,f,o,h){if(f=f||{},(f.templateEngine||n)==t)throw new Error("Set a template engine before calling renderTemplate");if(h=h||"replaceChildren",o){var c=r(o),l=function(){return!c||!s.utils.domNodeIsAttachedToDocument(c)},a=c&&h=="replaceNode"?c.parentNode:c;return s.dependentObservable(function(){var n=u&&u instanceof s.bindingContext?u:new s.bindingContext(s.utils.unwrapObservable(u)),t=typeof i=="function"?i(n.$data,n):i,l=e(o,h,t,n,f);h=="replaceNode"&&(o=l,c=r(o))},null,{disposeWhen:l,disposeWhenNodeIsRemoved:a})}return s.memoization.memoize(function(n){s.renderTemplate(i,u,f,n,"replaceNode")})};s.renderTemplateForEach=function(n,i,r,u,o){var h,c=function(t,i){h=o.createChildContext(t,r.as,function(n){n.$index=i});var u=typeof n=="function"?n(t,h):n;return e(null,"ignoreTargetNode",u,h,r)},l=function(n,t){f(t,h);r.afterRender&&r.afterRender(t,n)};return s.dependentObservable(function(){var n=s.utils.unwrapObservable(i)||[],f;typeof n.length=="undefined"&&(n=[n]);f=s.utils.arrayFilter(n,function(n){return r.includeDestroyed||n===t||n===null||!s.utils.unwrapObservable(n._destroy)});s.dependencyDetection.ignore(s.utils.setDomNodeChildrenFromArrayMapping,null,[u,f,c,r,l])},null,{disposeWhenNodeIsRemoved:u})};u=s.utils.domData.nextKey();s.bindingHandlers.template={init:function(n,t){var i=s.utils.unwrapObservable(t()),r,u;return typeof i=="string"||i.name?s.virtualElements.emptyNode(n):(r=s.virtualElements.childNodes(n),u=s.utils.moveCleanedNodesToContainerElement(r),new s.templateSources.anonymousTemplate(n).nodes(u)),{controlsDescendantBindings:!0}},update:function(n,t,i,r,u){var e=s.utils.unwrapObservable(t()),f={},h=!0,l,c=null,a,v;typeof e!="string"&&(f=e,e=s.utils.unwrapObservable(f.name),"if"in f&&(h=s.utils.unwrapObservable(f["if"])),h&&"ifnot"in f&&(h=!s.utils.unwrapObservable(f.ifnot)),l=s.utils.unwrapObservable(f.data));"foreach"in f?(a=h&&f.foreach||[],c=s.renderTemplateForEach(e||n,a,f,n,u)):h?(v="data"in f?u.createChildContext(l,f.as):u,c=s.renderTemplate(e||n,v,f,n)):s.virtualElements.emptyNode(n);o(n,c)}};s.expressionRewriting.bindingRewriteValidators.template=function(n){var t=s.expressionRewriting.parseObjectLiteral(n);return t.length==1&&t[0].unknown?null:s.expressionRewriting.keyValueArrayContainsKey(t,"name")?null:"This template engine does not support anonymous templates nested within its templates"};s.virtualElements.allowedBindings.template=!0}();s.exportSymbol("setTemplateEngine",s.setTemplateEngine);s.exportSymbol("renderTemplate",s.renderTemplate);s.utils.compareArrays=function(){function r(r,u,f){return f=typeof f=="boolean"?{dontLimitMoves:f}:f||{},r=r||[],u=u||[],r.length<=u.length?i(r,u,n,t,f):i(u,r,t,n,f)}function i(n,t,i,r,u){for(var nt=Math.min,ot=Math.max,l=[],c=n.length,f,a=t.length,st=a-c||1,tt=c+a+1,o,b,it,rt,ut,ft,et,y,g,h,p,w,e=0;e<=c;e++)for(b=o,l.push(o=[]),it=nt(a,e+st),rt=ot(0,e-1),f=rt;f<=it;f++)f?e?n[e-1]===t[f-1]?o[f]=b[f-1]:(ut=b[f]||tt,ft=o[f-1]||tt,o[f]=nt(ut,ft)+1):o[f]=f+1:o[f]=e+1;var s=[],k,d=[],v=[];for(e=c,f=a;e||f;)k=l[e][f]-1,f&&k===l[e][f-1]?d.push(s[s.length]={status:i,value:t[--f],index:f}):e&&k===l[e-1][f]?v.push(s[s.length]={status:r,value:n[--e],index:e}):(--f,--e,u.sparse||s.push({status:"retained",value:t[f]}));if(d.length&&v.length)for(et=c*10,y=g=0;(u.dontLimitMoves||y0&&(s.utils.replaceDomNodes(e,t),u&&s.dependencyDetection.ignore(u,null,[r,t,f]));e.splice(0,e.length);s.utils.arrayPushAll(e,t)},null,{disposeWhenNodeIsRemoved:n,disposeWhen:function(){return!s.utils.anyDomNodeIsAttachedToDocument(e)}});return{mappedNodes:e,dependentObservable:o.isActive()?o:t}}var n=s.utils.domData.nextKey();s.utils.setDomNodeChildrenFromArrayMapping=function(r,u,f,e,o){function ft(n,t){h=w[t];d!==t&&(nt[n]=h);h.indexObservable(d++);s.utils.fixUpContinuousNodeArray(h.mappedNodes,r);b.push(h);a.push(h)}function v(n,t){if(n)for(var i=0,r=t.length;i=0)return 2}catch(n){}return 1}();this.renderTemplateSource=function(n,f,e){var o,s;e=e||{};t();o=n.data("precompiled");o||(s=n.text()||"",s="{{ko_with $item.koBindingContext}}"+s+"{{/ko_with}}",o=i.template(null,s),n.data("precompiled",o));var c=[f.$data],l=i.extend({koBindingContext:f},e.templateOptions),h=u(o,c,l);return h.appendTo(r.createElement("div")),i.fragments={},h};this.createJavaScriptEvaluatorBlock=function(n){return"{{ko_code ((function() { return "+n+" })()) }}"};this.addTemplate=function(n,t){r.write("