(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.length-1;r++)u=u[i[r]];u[i[i.length-1]]=t},s.exportProperty=function(n,t,i){n[t]=i},s.version="3.0.0",s.exportSymbol("version",s.version),s.utils=function(){function c(n,t){if(s.utils.tagNameLower(n)!=="input"||!n.type||t.toLowerCase()!="click")return!1;var i=n.type;return i=="checkbox"||i=="radio"}var o=function(n,t){for(var i in n)n.hasOwnProperty(i)&&t(i,n[i])},h={},l={},a=e&&/Firefox\/2/i.test(e.userAgent)?"KeyboardEvent":"UIEvents";h[a]=["keyup","keydown","keypress"],h.MouseEvents=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave"],o(h,function(n,t){if(t.length)for(var i=0,r=t.length;i<r;i++)l[t[i]]=n});var v={propertychange:!0},n=r&&function(){for(var n=3,i=r.createElement("div"),u=i.getElementsByTagName("i");i.innerHTML="<!--[if gt IE "+ ++n+"]><i><\/i><![endif]-->",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<r;i++)t(n[i])},arrayIndexOf:function(n,t){if(typeof Array.prototype.indexOf=="function")return Array.prototype.indexOf.call(n,t);for(var i=0,r=n.length;i<r;i++)if(n[i]===t)return i;return-1},arrayFirst:function(n,t,i){for(var r=0,u=n.length;r<u;r++)if(t.call(i,n[r]))return n[r];return null},arrayRemoveItem:function(n,t){var i=s.utils.arrayIndexOf(n,t);i>=0&&n.splice(i,1)},arrayGetDistinctValues:function(n){var i,t,r;for(n=n||[],i=[],t=0,r=n.length;t<r;t++)s.utils.arrayIndexOf(i,n[t])<0&&i.push(n[t]);return i},arrayMap:function(n,t){var r,i,u;for(n=n||[],r=[],i=0,u=n.length;i<u;i++)r.push(t(n[i]));return r},arrayFilter:function(n,t){var r,i,u;for(n=n||[],r=[],i=0,u=n.length;i<u;i++)t(n[i])&&r.push(n[i]);return r},arrayPushAll:function(n,t){if(t instanceof Array)n.push.apply(n,t);else for(var i=0,r=t.length;i<r;i++)n.push(t[i]);return n},addOrRemoveItem:function(n,t,i){var r=s.utils.arrayIndexOf(s.utils.peekObservable(n),t);r<0?i&&n.push(t):i||n.splice(r,1)},extend:function(n,t){if(t)for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);return n},objectForEach:o,objectMap:function(n,t){var r,i;if(!n)return n;r={};for(i in n)n.hasOwnProperty(i)&&(r[i]=t(n[i],i,n));return r},emptyDomNode:function(n){while(n.firstChild)s.removeNode(n.firstChild)},moveCleanedNodesToContainerElement:function(n){for(var i=s.utils.makeArray(n),u=r.createElement("div"),t=0,f=i.length;t<f;t++)u.appendChild(s.cleanNode(i[t]));return u},cloneNodes:function(n,t){for(var r,i=0,f=n.length,u=[];i<f;i++)r=n[i].cloneNode(!0),u.push(t?s.cleanNode(r):r);return u},setDomNodeChildren:function(n,t){if(s.utils.emptyDomNode(n),t)for(var i=0,r=t.length;i<r;i++)n.appendChild(t[i])},replaceDomNodes:function(n,t){var u=n.nodeType?[n]:n,f,e,i,r;if(u.length>0){for(f=u[0],e=f.parentNode,i=0,r=t.length;i<r;i++)e.insertBefore(t[i],f);for(i=0,r=u.length;i<r;i++)s.removeNode(u[i])}},fixUpContinuousNodeArray:function(n,t){if(n.length){for(t=t.nodeType===8&&t.parentNode||t;n.length&&n[0].parentNode!==t;)n.splice(0,1);if(n.length>1){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;i<e;i++)r=s.utils.stringTrim(f[i]),r!==""&&u.push(r);return u},stringStartsWith:function(n,t){return(n=n||"",t.length>n.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("<input name='"+t.name+"'/>"),!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<r;t++)i.push(n[t]);return i},isIe6:y,isIe7:p,ieVersion:n,getFormFields:function(n,t){for(var r=s.utils.makeArray(n.getElementsByTagName("input")).concat(s.utils.makeArray(n.getElementsByTagName("textarea"))),f=typeof t=="string"?function(n){return n.name===t}:function(n){return t.test(n.name)},u=[],i=r.length-1;i>=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<t.length;u++)t[u](n);s.utils.domData.clear(n),typeof i=="function"&&typeof i.cleanData=="function"&&i.cleanData([n]),f[n.nodeType]&&h(n)}function h(n){for(var t,i=n.firstChild;t=i;)i=t.nextSibling,t.nodeType===8&&u(t)}var n=s.utils.domData.nextKey(),e={1:!0,8:!0,9:!0},f={1:!0,9:!0};return{addDisposeCallback:function(n,t){if(typeof t!="function")throw new Error("Callback must be a function");r(n,!0).push(t)},removeDisposeCallback:function(n,t){var i=r(n,!1);i&&(s.utils.arrayRemoveItem(i,t),i.length==0&&o(n))},cleanNode:function(n){var t,i,r;if(e[n.nodeType]&&(u(n),f[n.nodeType]))for(t=[],s.utils.arrayPushAll(t,n.getElementsByTagName("*")),i=0,r=t.length;i<r;i++)u(t[i]);return n},removeNode:function(n){s.cleanNode(n),n.parentNode&&n.parentNode.removeChild(n)}}},s.cleanNode=s.utils.domNodeDisposal.cleanNode,s.removeNode=s.utils.domNodeDisposal.removeNode,s.exportSymbol("cleanNode",s.cleanNode),s.exportSymbol("removeNode",s.removeNode),s.exportSymbol("utils.domNodeDisposal",s.utils.domNodeDisposal),s.exportSymbol("utils.domNodeDisposal.addDisposeCallback",s.utils.domNodeDisposal.addDisposeCallback),s.exportSymbol("utils.domNodeDisposal.removeDisposeCallback",s.utils.domNodeDisposal.removeDisposeCallback),function(){function n(n){var i=s.utils.stringTrim(n).toLowerCase(),t=r.createElement("div"),f=i.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","<\/table>"]||!i.indexOf("<tr")&&[2,"<table><tbody>","<\/tbody><\/table>"]||(!i.indexOf("<td")||!i.indexOf("<th"))&&[3,"<table><tbody><tr>","<\/tr><\/tbody><\/table>"]||[0,"",""],e="ignored<div>"+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<f.length;u++)n.appendChild(f[u])}}(),s.exportSymbol("utils.parseHtmlFragment",s.utils.parseHtmlFragment),s.exportSymbol("utils.setHtml",s.utils.setHtml),s.memoization=function(){function i(){return((1+Math.random())*4294967296|0).toString(16).substring(1)}function u(){return i()+i()}function r(n,t){var i;if(n)if(n.nodeType==8)i=s.memoization.parseMemoText(n.nodeValue),i!=null&&t.push({domNode:n,memoId:i});else if(n.nodeType==1)for(var u=0,f=n.childNodes,e=f.length;u<e;u++)r(f[u],t)}var n={};return{memoize:function(t){if(typeof t!="function")throw new Error("You can only pass a function to ko.memoization.memoize()");var i=u();return n[i]=t,"<!--[ko_memo:"+i+"]-->"},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;u<o;u++)i=f[u].domNode,e=[i],t&&s.utils.arrayPushAll(e,t),s.memoization.unmemoize(f[u].memoId,e),i.nodeValue="",i.parentNode&&i.parentNode.removeChild(i)},parseMemoText:function(n){var t=n.match(/^\[ko_memo\:(.*?)\]$/);return t?t[1]:null}}}(),s.exportSymbol("memoization",s.memoization),s.exportSymbol("memoization.memoize",s.memoization.memoize),s.exportSymbol("memoization.unmemoize",s.memoization.unmemoize),s.exportSymbol("memoization.parseMemoText",s.memoization.parseMemoText),s.exportSymbol("memoization.unmemoizeDomNodeAndDescendants",s.memoization.unmemoizeDomNodeAndDescendants),s.extenders={throttle:function(n,t){n.throttleEvaluation=t;var i=null;return s.dependentObservable({read:n,write:function(r){clearTimeout(i),i=setTimeout(function(){n(r)},t)}})},notify:function(n,t){n.equalityComparer=t=="always"?null:v}},g={undefined:1,boolean:1,number:1,string:1},s.exportSymbol("extenders",s.extenders),s.subscription=function(n,t,i){this.target=n,this.callback=t,this.disposeCallback=i,s.exportProperty(this,"dispose",this.dispose)},s.subscription.prototype.dispose=function(){this.isDisposed=!0,this.disposeCallback()},s.subscribable=function(){this._subscriptions={},s.utils.extend(this,s.subscribable.fn),s.exportProperty(this,"subscribe",this.subscribe),s.exportProperty(this,"extend",this.extend),s.exportProperty(this,"getSubscriptionsCount",this.getSubscriptionsCount)},c="change",s.subscribable.fn={subscribe:function(n,t,i){i=i||c;var u=t?n.bind(t):n,r=new s.subscription(this,u,function(){s.utils.arrayRemoveItem(this._subscriptions[i],r)}.bind(this));return this._subscriptions[i]||(this._subscriptions[i]=[]),this._subscriptions[i].push(r),r},notifySubscribers:function(n,t){if(t=t||c,this.hasSubscriptionsForEvent(t))try{s.dependencyDetection.begin();for(var u=this._subscriptions[t].slice(0),r=0,i;i=u[r];++r)i&&i.isDisposed!==!0&&i.callback(n)}finally{s.dependencyDetection.end()}},hasSubscriptionsForEvent:function(n){return this._subscriptions[n]&&this._subscriptions[n].length},getSubscriptionsCount:function(){var n=0;return s.utils.objectForEach(this._subscriptions,function(t,i){n+=i.length}),n},extend:nt},s.isSubscribable=function(n){return n!=null&&typeof n.subscribe=="function"&&typeof n.notifySubscribers=="function"},s.exportSymbol("subscribable",s.subscribable),s.exportSymbol("isSubscribable",s.isSubscribable),s.dependencyDetection=function(){var n=[];return{begin:function(t){n.push(t&&{callback:t,distinctDependencies:[]})},end:function(){n.pop()},registerDependency:function(t){if(!s.isSubscribable(t))throw new Error("Only subscribable things can act as dependencies");if(n.length>0){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<r.length;t++)u=r[t],f(u)&&(i.length===0&&this.valueWillMutate(),i.push(u),r.splice(t,1),t--);return i.length&&this.valueHasMutated(),i},removeAll:function(n){if(n===t){var i=this.peek(),r=i.slice(0);return this.valueWillMutate(),i.splice(0,i.length),this.valueHasMutated(),r}return n?this.remove(function(t){return s.utils.arrayIndexOf(n,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<c;e++)h("added",f[e],s+e);break;case"pop":s=o-1;case"shift":o&&h("deleted",n[s],s);break;case"splice":var l=Math.min(Math.max(0,f[0]<0?o+f[0]:f[0]),o),y=c===1?o:Math.min(l+(f[1]||0),o),p=l+c-2,w=Math.max(y,p);for(e=l,a=2;e<w;++e,++a)e<y&&h("deleted",n[e],e),e<p&&h("added",f[a],e);break;default:return}t=v}}}},s.dependentObservable=function(i,r,u){function tt(n){o.push(n.subscribe(it))}function k(){s.utils.arrayForEach(o,function(n){n.dispose()}),o=[]}function it(){var n=f.throttleEvaluation;n&&n>=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<n.length;i++)t(i);typeof n.toJSON=="function"&&t("toJSON")}else for(r in n)t(r)}function n(){this.keys=[],this.values=[]}var r=10;s.toJS=function(n){if(arguments.length==0)throw new Error("When calling ko.toJS, pass the object you want to convert.");return i(n,function(n){for(var t=0;s.isObservable(n)&&t<r;t++)n=n();return n})},s.toJSON=function(n,t,i){var r=s.toJS(n);return s.utils.stringifyJson(r,t,i)},n.prototype={constructor:n,save:function(n,t){var i=s.utils.arrayIndexOf(this.keys,n);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;i<n.length;i++)if(n[i].key==t)return!0;return!1},writeValueToProperty:function(n,t,i,r,u){if(n&&s.isObservable(n))s.isWriteableObservable(n)&&(!u||n.peek()!==r)&&n(r);else{var f=t.get("_ko_property_writers");f&&f[i]&&f[i](r)}}}}(),s.exportSymbol("expressionRewriting",s.expressionRewriting),s.exportSymbol("expressionRewriting.bindingRewriteValidators",s.expressionRewriting.bindingRewriteValidators),s.exportSymbol("expressionRewriting.parseObjectLiteral",s.expressionRewriting.parseObjectLiteral),s.exportSymbol("expressionRewriting.preProcessBindings",s.expressionRewriting.preProcessBindings),s.exportSymbol("expressionRewriting._twoWayBindings",s.expressionRewriting.twoWayBindings),s.exportSymbol("jsonExpressionRewriting",s.expressionRewriting),s.exportSymbol("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",s.expressionRewriting.preProcessBindings),function(){function n(n){return n.nodeType==8&&u.test(t?n.text:n.nodeValue)}function i(n){return n.nodeType==8&&o.test(t?n.text:n.nodeValue)}function f(t,r){for(var u=t,f=1,e=[];u=u.nextSibling;){if(i(u)&&(f--,f===0))return e;e.push(u),n(u)&&f++}if(!r)throw new Error("Cannot find closing comment tag to match: "+t.nodeValue);return null}function e(n,t){var i=f(n,t);return i?i.length>0?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==="<!--test-->",u=t?/^<!--\s*ko(?:\s+([\s\S]+))?\s*-->$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,o=t?/^<!--\s*\/ko\s*-->$/:/^\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<u;i++)s.removeNode(r[i]);else s.utils.emptyDomNode(t)},setDomNodeChildren:function(t,i){var u,r,f;if(n(t))for(s.virtualElements.emptyNode(t),u=t.nextSibling,r=0,f=i.length;r<f;r++)u.parentNode.insertBefore(i[r],u);else s.utils.setDomNodeChildren(t,i)},prepend:function(t,i){n(t)?t.parentNode.insertBefore(i,t.nextSibling):t.firstChild?t.insertBefore(i,t.firstChild):t.appendChild(i)},insertAfter:function(t,i,r){r?n(t)?t.parentNode.insertBefore(i,r.nextSibling):r.nextSibling?t.insertBefore(i,r.nextSibling):t.appendChild(i):s.virtualElements.prepend(t,i)},firstChild:function(t){return n(t)?!t.nextSibling||i(t.nextSibling)?null:t.nextSibling:t.firstChild},nextSibling:function(t){return(n(t)&&(t=e(t)),t.nextSibling&&i(t.nextSibling))?null:t.nextSibling},hasBindingValue:n,virtualNodeBindingValue:function(n){var i=(t?n.text:n.nodeValue).match(u);return i?i[1]:null},normaliseVirtualElementDomStructure:function(n){var t,i,u,r;if(h[s.utils.tagNameLower(n)]&&(t=n.firstChild,t))do if(t.nodeType===1&&(i=c(t),i))for(u=t.nextSibling,r=0;r<i.length;r++)u?n.insertBefore(i[r],u):n.appendChild(i[r]);while(t=t.nextSibling)}}}(),s.exportSymbol("virtualElements",s.virtualElements),s.exportSymbol("virtualElements.allowedBindings",s.virtualElements.allowedBindings),s.exportSymbol("virtualElements.emptyNode",s.virtualElements.emptyNode),s.exportSymbol("virtualElements.insertAfter",s.virtualElements.insertAfter),s.exportSymbol("virtualElements.prepend",s.virtualElements.prepend),s.exportSymbol("virtualElements.setDomNodeChildren",s.virtualElements.setDomNodeChildren),function(){function t(n,t,r){var u=n+(r&&r.valueAccessors||"");return t[u]||(t[u]=i(n,r))}function i(n,t){var i=s.expressionRewriting.preProcessBindings(n,t),r="with($context){with($data||{}){return{"+i+"}}}";return new Function("$context","$element",r)}var n="data-bind";s.bindingProvider=function(){this.bindingCache={}},s.utils.extend(s.bindingProvider.prototype,{nodeHasBindings:function(t){switch(t.nodeType){case 1:return t.getAttribute(n)!=null;case 8:return s.virtualElements.hasBindingValue(t);default:return!1}},getBindings:function(n,t){var i=this.getBindingsString(n,t);return i?this.parseBindingsString(i,t,n):null},getBindingAccessors:function(n,t){var i=this.getBindingsString(n,t);return i?this.parseBindingsString(i,t,n,{valueAccessors:!0}):null},getBindingsString:function(t){switch(t.nodeType){case 1:return t.getAttribute(n);case 8:return s.virtualElements.virtualNodeBindingValue(t);default:return null}},parseBindingsString:function(n,i,r,u){try{var e=t(n,this.bindingCache,u);return e(i,r)}catch(f){f.message="Unable to parse bindings.\nBindings value: "+n+"\nMessage: "+f.message;throw f;}}}),s.bindingProvider.instance=new s.bindingProvider}(),s.exportSymbol("bindingProvider",s.bindingProvider),function(){function a(n){return function(){return n}}function i(n){return n()}function o(n){return s.utils.objectMap(s.dependencyDetection.ignore(n),function(t,i){return function(){return n()[i]}})}function v(n,t,i){return typeof n=="function"?o(n.bind(null,t,i)):s.utils.objectMap(n,a)}function y(n,t){return o(this.getBindings.bind(this,n,t))}function p(n){var t=s.virtualElements.allowedBindings[n];if(!t)throw new Error("The binding '"+n+"' cannot be used with virtual elements");}function h(n,t,i){var r,u=s.virtualElements.firstChild(t),f=s.bindingProvider.instance,e=f.preprocessNode;if(e){while(r=u)u=s.virtualElements.nextSibling(r),e.call(f,r);u=s.virtualElements.firstChild(t)}while(r=u)u=s.virtualElements.nextSibling(r),c(n,r,i)}function c(n,t,i){var u=!0,r=t.nodeType===1,f;r&&s.virtualElements.normaliseVirtualElementDomStructure(t),f=r&&i||s.bindingProvider.instance.nodeHasBindings(t),f&&(u=l(t,null,n,i).shouldBindDescendants),u&&!e[s.utils.tagNameLower(t)]&&h(n,t,!r)}function w(n){var i=[],r={},t=[];return s.utils.objectForEach(n,function u(f){if(!r[f]){var e=s.getBindingHandler(f);e&&(e.after&&(t.push(f),s.utils.arrayForEach(e.after,function(i){if(n[i])if(s.utils.arrayIndexOf(t,i)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+t.join(", "));else u(i)}),t.pop()),i.push({key:f,handler:e})),r[f]=!0}}),i}function l(n,u,f,e){var k=s.utils.domData.get(n,r),o,c,b,h,l,a,d;if(!u){if(k)throw Error("You cannot apply bindings multiple times to the same element.");s.utils.domData.set(n,r,!0)}if(!k&&e&&s.storedBindingContextForNode(n,f),u&&typeof u!="function"?o=u:(c=s.bindingProvider.instance,b=c.getBindingAccessors||y,u||f._subscribable?(h=s.dependentObservable(function(){return o=u?u(f,n):b.call(c,n,f),o&&f._subscribable&&f._subscribable(),o},null,{disposeWhenNodeIsRemoved:n}),o&&h.isActive()||(h=null)):o=s.dependencyDetection.ignore(b,c,[n,f])),o){a=h?function(n){return function(){return i(h()[n])}}:function(n){return o[n]};function v(){return s.utils.objectMap(h?h():o,i)}v.get=function(n){return o[n]&&i(a(n))},v.has=function(n){return n in o},d=w(o),s.utils.arrayForEach(d,function(i){var e=i.handler.init,h=i.handler.update,r=i.key;n.nodeType===8&&p(r);try{typeof e=="function"&&s.dependencyDetection.ignore(function(){var i=e(n,a(r),v,f.$data,f);if(i&&i.controlsDescendantBindings){if(l!==t)throw new Error("Multiple bindings ("+l+" and "+r+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");l=r}}),typeof h=="function"&&s.dependentObservable(function(){h(n,a(r),v,f.$data,f)},null,{disposeWhenNodeIsRemoved:n})}catch(u){u.message='Unable to process binding "'+r+": "+o[r]+'"\nMessage: '+u.message;throw u;}})}return{shouldBindDescendants:l===t}}function n(n){return n&&n instanceof s.bindingContext?n:new s.bindingContext(n)}var e,r,f;s.bindingHandlers={},e={script:!0},s.getBindingHandler=function(n){return s.bindingHandlers[n]},s.bindingContext=function(n,i,r,u){function h(){var t=l?n():n;return i?(i._subscribable&&i._subscribable(),s.utils.extend(f,i),e&&(f._subscribable=e)):(f.$parents=[],f.$root=t,f.ko=s),f.$rawData=n,f.$data=t,r&&(f[r]=t),u&&u(f,i,t),f.$data}function c(){return o&&!s.utils.anyDomNodeIsAttachedToDocument(o)}var f=this,l=typeof n=="function",o,e=s.dependentObservable(h,null,{disposeWhen:c,disposeWhenNodeIsRemoved:!0});e.isActive()&&(f._subscribable=e,e.equalityComparer=null,o=[],e._addNode=function(n){o.push(n),s.utils.domNodeDisposal.addDisposeCallback(n,function(n){s.utils.arrayRemoveItem(o,n),o.length||(e.dispose(),f._subscribable=e=t)})})},s.bindingContext.prototype.createChildContext=function(n,t,i){return new s.bindingContext(n,this,t,function(n,t){n.$parentContext=t,n.$parent=t.$data,n.$parents=(t.$parents||[]).slice(0),n.$parents.unshift(n.$parent),i&&i(n)})},s.bindingContext.prototype.extend=function(n){return new s.bindingContext(this.$rawData,this,null,function(t){s.utils.extend(t,typeof n=="function"?n():n)})},r=s.utils.domData.nextKey(),f=s.utils.domData.nextKey(),s.storedBindingContextForNode=function(n,t){if(arguments.length==2)s.utils.domData.set(n,f,t),t._subscribable&&t._subscribable._addNode(n);else return s.utils.domData.get(n,f)},s.applyBindingAccessorsToNode=function(t,i,r){return t.nodeType===1&&s.virtualElements.normaliseVirtualElementDomStructure(t),l(t,i,n(r),!0)},s.applyBindingsToNode=function(t,i,r){var u=n(r);return s.applyBindingAccessorsToNode(t,v(i,u,t),u)},s.applyBindingsToDescendants=function(t,i){(i.nodeType===1||i.nodeType===8)&&h(n(t),i,!0)},s.applyBindings=function(t,i){if(i&&i.nodeType!==1&&i.nodeType!==8)throw new Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");i=i||u.document.body,c(n(t),i,!0)},s.contextFor=function(n){switch(n.nodeType){case 1:case 8:var i=s.storedBindingContextForNode(n);if(i)return i;if(n.parentNode)return s.contextFor(n.parentNode)}return t},s.dataFor=function(n){var i=s.contextFor(n);return i?i.$data:t},s.exportSymbol("bindingHandlers",s.bindingHandlers),s.exportSymbol("applyBindings",s.applyBindings),s.exportSymbol("applyBindingsToDescendants",s.applyBindingsToDescendants),s.exportSymbol("applyBindingAccessorsToNode",s.applyBindingAccessorsToNode),s.exportSymbol("applyBindingsToNode",s.applyBindingsToNode),s.exportSymbol("contextFor",s.contextFor),s.exportSymbol("dataFor",s.dataFor)}(),p={"class":"className","for":"htmlFor"},s.bindingHandlers.attr={update:function(n,i){var r=s.utils.unwrapObservable(i())||{};s.utils.objectForEach(r,function(i,r){r=s.utils.unwrapObservable(r);var u=r===!1||r===null||r===t;u&&n.removeAttribute(i),s.utils.ieVersion<=8&&i in p?(i=p[i],u?n.removeAttribute(i):n[i]=r):u||n.setAttribute(i,r.toString()),i==="name"&&s.utils.setElementName(n,u?"":r.toString())})}},function(){s.bindingHandlers.checked={after:["value","attr"],init:function(n,i,r){function u(){return r.has("checkedValue")?s.utils.unwrapObservable(r.get("checkedValue")):n.value}function c(){var c=n.checked,t=v?u():c,o;l&&(!f||c)&&(o=s.dependencyDetection.ignore(i),e?h!==t?(c&&(s.utils.addOrRemoveItem(o,t,!0),s.utils.addOrRemoveItem(o,h,!1)),h=t):s.utils.addOrRemoveItem(o,t,c):s.expressionRewriting.writeValueToProperty(o,r,"checked",t,!0))}function a(){var t=s.utils.unwrapObservable(i());n.checked=e?s.utils.arrayIndexOf(t,u())>=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<f.length:f.length&&n.selectedIndex>=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("after".length)),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<n.length;t++)if(i=n[t].key,f.hasOwnProperty(i))if(r=f[i],typeof r=="function"){if(u=r(n[t].value),u)throw new Error(u);}else if(!r)throw new Error("This template engine does not support the '"+i+"' binding within its templates");}function n(n,t,i,u){var f=s.expressionRewriting.parseObjectLiteral(n),e,o;return r(f),e=s.expressionRewriting.preProcessBindings(f,{valueAccessors:!0}),o="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+e+" } })()},'"+i.toLowerCase()+"')",u.createJavaScriptEvaluatorBlock(o)+t}var t=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,i=/<!--\s*ko\b\s*([\s\S]*?)\s*-->/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],"<!-- ko -->","#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||y<et)&&(p=d[g]);g++){for(h=0;w=v[h];h++)if(p.value===w.value){p.moved=w.index,w.moved=p.index,v.splice(h,1),y=h=0;break}y+=h}return s.reverse()}var n="added",t="deleted";return r}(),s.exportSymbol("utils.compareArrays",s.utils.compareArrays),function(){function i(n,i,r,u,f){var e=[],o=s.dependentObservable(function(){var t=i(r,f,s.utils.fixUpContinuousNodeArray(e,n))||[];e.length>0&&(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<r;i++)t[i]&&s.utils.arrayForEach(t[i].mappedNodes,function(r){n(r,i,t[i].arrayEntry)})}var y,p,c,tt,et,l,it;u=u||[],e=e||{};var ot=s.utils.domData.get(r,n)===t,w=s.utils.domData.get(r,n)||[],st=s.utils.arrayMap(w,function(n){return n.arrayEntry}),ht=s.utils.compareArrays(st,u,e.dontLimitMoves),b=[],k=0,d=0,g=[],a=[],rt=[],nt=[],ut=[],h;for(c=0;y=ht[c];c++){p=y.moved;switch(y.status){case"deleted":p===t&&(h=w[k],h.dependentObservable&&h.dependentObservable.dispose(),g.push.apply(g,s.utils.fixUpContinuousNodeArray(h.mappedNodes,r)),e.beforeRemove&&(rt[c]=h,a.push(h))),k++;break;case"retained":ft(c,k++);break;case"added":p!==t?ft(c,p):(h={arrayEntry:y.value,indexObservable:s.observable(d++)},b.push(h),a.push(h),ot||(ut[c]=h))}}for(v(e.beforeMove,nt),s.utils.arrayForEach(g,e.beforeRemove?s.cleanNode:s.removeNode),c=0,tt=s.virtualElements.firstChild(r);h=a[c];c++){for(h.mappedNodes||s.utils.extend(h,i(r,f,h.arrayEntry,o,h.indexObservable)),it=0;l=h.mappedNodes[it];tt=l.nextSibling,et=l,it++)l!==tt&&s.virtualElements.insertAfter(r,l,et);!h.initialized&&o&&(o(h.arrayEntry,h.mappedNodes,h.indexObservable),h.initialized=!0)}v(e.beforeRemove,rt),v(e.afterMove,nt),v(e.afterAdd,ut),s.utils.domData.set(r,n,b)}}(),s.exportSymbol("utils.setDomNodeChildrenFromArrayMapping",s.utils.setDomNodeChildrenFromArrayMapping),s.nativeTemplateEngine=function(){this.allowTemplateRewriting=!1},s.nativeTemplateEngine.prototype=new s.templateEngine,s.nativeTemplateEngine.prototype.constructor=s.nativeTemplateEngine,s.nativeTemplateEngine.prototype.renderTemplateSource=function(n){var r=!(s.utils.ieVersion<9),u=r?n.nodes:null,t=u?n.nodes():null,i;return t?s.utils.makeArray(t.cloneNode(!0).childNodes):(i=n.text(),s.utils.parseHtmlFragment(i))},s.nativeTemplateEngine.instance=new s.nativeTemplateEngine,s.setTemplateEngine(s.nativeTemplateEngine.instance),s.exportSymbol("nativeTemplateEngine",s.nativeTemplateEngine),function(){s.jqueryTmplTemplateEngine=function(){function t(){if(n<2)throw new Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");}function u(n,t,r){return i.tmpl(n,t,r)}var n=this.jQueryTmplVersion=function(){if(typeof i=="undefined"||!i.tmpl)return 0;try{if(i.tmpl.tag.tmpl.open.toString().indexOf("__")>=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("<script type='text/html' id='"+n+"'>"+t+"<\/script>")},n>0&&(i.tmpl.tag.ko_code={open:"__.push($1 || '');"},i.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},s.jqueryTmplTemplateEngine.prototype=new s.templateEngine,s.jqueryTmplTemplateEngine.prototype.constructor=s.jqueryTmplTemplateEngine;var n=new s.jqueryTmplTemplateEngine;n.jQueryTmplVersion>0&&s.setTemplateEngine(n),s.exportSymbol("jqueryTmplTemplateEngine",s.jqueryTmplTemplateEngine)}()})})()})(),function(n){typeof require=="function"&&typeof exports=="object"&&typeof module=="object"?n(require("knockout"),exports):typeof define=="function"&&define.amd?define(["knockout","exports"],n):n(ko,ko.mapping={})}(function(n,t){function rt(n,t){for(var r={},u,f,i=n.length-1;i>=0;--i)r[n[i]]=n[i];for(i=t.length-1;i>=0;--i)r[t[i]]=t[i];u=[];for(f in r)u.push(r[f]);return u}function y(n,i){var u,r,f;for(r in i)i.hasOwnProperty(r)&&i[r]&&(u=t.getType(n[r]),r&&n[r]&&u!=="array"&&u!=="string"?y(n[r],i[r]):(f=t.getType(n[r])==="array"&&t.getType(i[r])==="array",n[r]=f?rt(n[r],i[r]):i[r]))}function c(n,t){var i={};return y(i,n),y(i,t),i}function p(n,t){for(var i=c({},n),f,e=w.length-1;e>=0;e--)(f=w[e],i[f])&&(i[""]instanceof Object||(i[""]={}),i[""][f]=i[f],delete i[f]);return t&&(i.ignore=u(t.ignore,i.ignore),i.include=u(t.include,i.include),i.copy=u(t.copy,i.copy),i.observe=u(t.observe,i.observe)),i.ignore=u(i.ignore,r.ignore),i.include=u(i.include,r.include),i.copy=u(i.copy,r.copy),i.observe=u(i.observe,r.observe),i.mappedProperties=i.mappedProperties||{},i.copiedProperties=i.copiedProperties||{},i}function u(i,r){return t.getType(i)!=="array"&&(i=t.getType(i)==="undefined"?[]:[i]),t.getType(r)!=="array"&&(r=t.getType(r)==="undefined"?[]:[r]),n.utils.arrayGetDistinctValues(i.concat(r))}function ut(t,i){var u=n.dependentObservable,r;return n.dependentObservable=function(i,r,u){var f;u=u||{},i&&typeof i=="object"&&(u=i);var s=u.deferEvaluation,o=!1,h=function(i){var f=n.dependentObservable,u,r;return n.dependentObservable=e,u=n.isWriteableObservable(i),n.dependentObservable=f,r=e({read:function(){return o||(n.utils.arrayRemoveItem(t,i),o=!0),i.apply(i,arguments)},write:u&&function(n){return i(n)},deferEvaluation:!0}),it&&(r._wrapper=!0),r};return u.deferEvaluation=!0,f=new e(i,r,u),s||(f=h(f),t.push(f)),f},n.dependentObservable.fn=e.fn,n.computed=n.dependentObservable,r=i(),n.dependentObservable=u,n.computed=n.dependentObservable,r}function l(r,u,e,h,v,y,p){var si=t.getType(n.utils.unwrapObservable(u))==="array",ti,et,ri,lt,ei,wt,yt,gt,d,it,ni,ot,st;y=y||"",t.isMapped(r)&&(ti=n.utils.unwrapObservable(r)[i],e=c(ti,e));var ht={data:u,parent:p||v},ct=function(){return e[h]&&e[h].create instanceof Function},pt=function(t){return ut(o,function(){return n.utils.unwrapObservable(v)instanceof Array?e[h].create({data:t||ht.data,parent:ht.parent,skip:b}):e[h].create({data:t||ht.data,parent:ht.parent})})},rt=function(){return e[h]&&e[h].update instanceof Function},ft=function(t,i){var r={data:i||ht.data,parent:ht.parent,target:n.utils.unwrapObservable(t)};return n.isWriteableObservable(t)&&(r.observable=t),e[h].update(r)},ii=s.get(u);if(ii)return ii;if(h=h||"",si){var ui=[],fi=!1,w=function(n){return n};e[h]&&e[h].key&&(w=e[h].key,fi=!0),n.isObservable(r)||(r=n.observableArray([]),r.mappedRemove=function(n){var t=typeof n=="function"?n:function(t){return t===w(n)};return r.remove(function(n){return t(w(n))})},r.mappedRemoveAll=function(t){var i=f(t,w);return r.remove(function(t){return n.utils.arrayIndexOf(i,w(t))!=-1})},r.mappedDestroy=function(n){var t=typeof n=="function"?n:function(t){return t===w(n)};return r.destroy(function(n){return t(w(n))})},r.mappedDestroyAll=function(t){var i=f(t,w);return r.destroy(function(t){return n.utils.arrayIndexOf(i,w(t))!=-1})},r.mappedIndexOf=function(t){var i=f(r(),w),u=w(t);return n.utils.arrayIndexOf(i,u)},r.mappedCreate=function(t){var i,u;if(r.mappedIndexOf(t)!==-1)throw new Error("There already is an object with the key that you specified.");return i=ct()?pt(t):t,rt()&&(u=ft(i,t),n.isWriteableObservable(i)?i(u):i=u),r.push(i),i}),ei=f(n.utils.unwrapObservable(r),w).sort(),wt=f(u,w),fi&&wt.sort();for(var oi=n.utils.compareArrays(ei,wt),at={},bt=n.utils.unwrapObservable(u),kt={},dt=!0,tt=0,vt=bt.length;tt<vt;tt++){if(d=w(bt[tt]),d===undefined||d instanceof Object){dt=!1;break}kt[d]=bt[tt]}for(yt=[],gt=0,tt=0,vt=oi.length;tt<vt;tt++){d=oi[tt],ni=y+"["+tt+"]";switch(d.status){case"added":ot=dt?kt[d.value]:a(n.utils.unwrapObservable(u),d.value,w),it=l(undefined,ot,e,h,r,ni,v),ct()||(it=n.utils.unwrapObservable(it)),st=k(n.utils.unwrapObservable(u),ot,at),it===b?gt++:yt[st-gt]=it,at[st]=!0;break;case"retained":ot=dt?kt[d.value]:a(n.utils.unwrapObservable(u),d.value,w),it=a(r,d.value,w),l(it,ot,e,h,r,ni,v),st=k(n.utils.unwrapObservable(u),ot,at),yt[st]=it,at[st]=!0;break;case"deleted":it=a(r,d.value,w)}ui.push({event:d.status,item:it})}r(yt),e[h]&&e[h].arrayChanged&&n.utils.arrayForEach(ui,function(n){e[h].arrayChanged(n.event,n.item)})}else if(nt(u)){if(r=n.utils.unwrapObservable(r),!r){if(ct())return lt=pt(),rt()&&(lt=ft(lt)),lt;if(rt())return ft(lt);r={}}if(rt()&&(r=ft(r)),s.save(u,r),rt())return r;g(u,function(t){var i=y.length?y+"."+t:t;if(n.utils.arrayIndexOf(e.ignore,i)==-1){if(n.utils.arrayIndexOf(e.copy,i)!=-1){r[t]=u[t];return}if(typeof u[t]!="object"&&typeof u[t]!="array"&&e.observe.length>0&&n.utils.arrayIndexOf(e.observe,i)==-1){r[t]=u[t],e.copiedProperties[i]=!0;return}var o=s.get(u[t]),h=l(r[t],u[t],e,t,r,i,r),f=o||h;if(e.observe.length>0&&n.utils.arrayIndexOf(e.observe,i)==-1){r[t]=f(),e.copiedProperties[i]=!0;return}n.isWriteableObservable(r[t])?r[t](n.utils.unwrapObservable(f)):(f=r[t]===undefined?f:n.utils.unwrapObservable(f),r[t]=f),e.mappedProperties[i]=!0}})}else switch(t.getType(u)){case"function":rt()?n.isWriteableObservable(u)?(u(ft(u)),r=u):r=ft(u):r=u;break;default:if(n.isWriteableObservable(r))return rt()?(et=ft(r),r(et),et):(et=n.utils.unwrapObservable(u),r(et),et);if(ri=ct()||rt(),r=ct()?pt():n.observable(n.utils.unwrapObservable(u)),rt()&&r(ft(r)),ri)return r}return r}function k(n,t,i){for(var r=0,u=n.length;r<u;r++)if(i[r]!==!0&&n[r]===t)return r;return null}function d(i,r){var u;return r&&(u=r(i)),t.getType(u)==="undefined"&&(u=i),n.utils.unwrapObservable(u)}function a(t,i,r){var u,e,f;for(t=n.utils.unwrapObservable(t),u=0,e=t.length;u<e;u++)if(f=t[u],d(f,r)===i)return f;throw new Error("When calling ko.update*, the key '"+i+"' was not found!");}function f(t,i){return n.utils.arrayMap(n.utils.unwrapObservable(t),function(n){return i?d(n,i):n})}function g(n,i){var r,u;if(t.getType(n)==="array")for(r=0;r<n.length;r++)i(r);else for(u in n)i(u)}function nt(n){var i=t.getType(n);return(i==="object"||i==="array")&&n!==null}function ft(n,i,r){var u=n||"";return t.getType(i)==="array"?n&&(u+="["+r+"]"):(n&&(u+="."),u+=r),u}function et(){var t=[],i=[];this.save=function(r,u){var f=n.utils.arrayIndexOf(t,r);f>=0?i[f]=u:(t.push(r),i.push(u))},this.get=function(r){var u=n.utils.arrayIndexOf(t,r);return u>=0?i[u]:undefined}}function tt(){var n={},t=function(t){var r,i;try{r=t}catch(u){r="$$$"}return i=n[r],i===undefined&&(i=new et,n[r]=i),i};this.save=function(n,i){t(n).save(n,i)},this.get=function(n){return t(n).get(n)}}var it=!0,i="__ko_mapping__",e=n.dependentObservable,v=0,o,s,w=["create","update","key","arrayChanged"],b={},h={include:["_destroy"],ignore:[],copy:[],observe:[]},r=h;t.isMapped=function(t){var r=n.utils.unwrapObservable(t);return r&&r[i]},t.fromJS=function(n){var t,r,u,f;if(arguments.length==0)throw new Error("When calling ko.fromJS, pass the object you want to convert.");try{if(v++||(o=[],s=new tt),arguments.length==2&&(arguments[1][i]?r=arguments[1]:t=arguments[1]),arguments.length==3&&(t=arguments[1],r=arguments[2]),r&&(t=c(t,r[i])),t=p(t),u=l(r,n,t),r&&(u=r),!--v)while(o.length)f=o.pop(),f&&f();return u[i]=c(u[i],t),u}catch(e){v=0;throw e;}},t.fromJSON=function(i){var r=n.utils.parseJson(i);return arguments[0]=r,t.fromJS.apply(this,arguments)},t.updateFromJS=function(){throw new Error("ko.mapping.updateFromJS, use ko.mapping.fromJS instead. Please note that the order of parameters is different!");},t.updateFromJSON=function(){throw new Error("ko.mapping.updateFromJSON, use ko.mapping.fromJSON instead. Please note that the order of parameters is different!");},t.toJS=function(u,f){if(r||t.resetDefaultOptions(),arguments.length==0)throw new Error("When calling ko.mapping.toJS, pass the object you want to convert.");if(t.getType(r.ignore)!=="array")throw new Error("ko.mapping.defaultOptions().ignore should be an array.");if(t.getType(r.include)!=="array")throw new Error("ko.mapping.defaultOptions().include should be an array.");if(t.getType(r.copy)!=="array")throw new Error("ko.mapping.defaultOptions().copy should be an array.");return f=p(f,u[i]),t.visitModel(u,function(t){return n.utils.unwrapObservable(t)},f)},t.toJSON=function(i,r){var u=t.toJS(i,r);return n.utils.stringifyJson(u)},t.defaultOptions=function(){if(arguments.length>0)r=arguments[0];else return r},t.resetDefaultOptions=function(){r={include:h.include.slice(0),ignore:h.ignore.slice(0),copy:h.copy.slice(0)}},t.getType=function(n){if(n&&typeof n=="object"){if(n.constructor===Date)return"date";if(n.constructor===Array)return"array"}return typeof n},t.visitModel=function(r,u,f){var o,e,s;if(f=f||{},f.visitedObjects=f.visitedObjects||new tt,e=n.utils.unwrapObservable(r),nt(e))f=p(f,e[i]),u(r,f.parentName),o=t.getType(e)==="array"?[]:{};else return u(r,f.parentName);return f.visitedObjects.save(r,o),s=f.parentName,g(e,function(r){var h,c;if((!f.ignore||n.utils.arrayIndexOf(f.ignore,r)==-1)&&(h=e[r],f.parentName=ft(s,e,r),n.utils.arrayIndexOf(f.copy,r)!==-1||n.utils.arrayIndexOf(f.include,r)!==-1||!e[i]||!e[i].mappedProperties||e[i].mappedProperties[r]||!e[i].copiedProperties||e[i].copiedProperties[r]||t.getType(e)==="array"))switch(t.getType(n.utils.unwrapObservable(h))){case"object":case"array":case"undefined":c=f.visitedObjects.get(h),o[r]=t.getType(c)!=="undefined"?c:t.visitModel(h,u,f);break;default:o[r]=u(h,f.parentName)}}),o}}),function(){function e(n,t,i){return t.validator(n(),i.params===undefined?!0:i.params)?!0:(n.error=ko.validation.formatMessage(i.message||t.message,i.params),n.__valid__(!1),!1)}function o(n,t,i){n.isValidating(!0);var r=function(r){var u=!1,f="";if(!n.__valid__()){n.isValidating(!1);return}r.message?(u=r.isValid,f=r.message):u=r,u||(n.error=ko.validation.formatMessage(f||i.message||t.message,i.params),n.__valid__(u)),n.isValidating(!1)};t.validator(n(),i.params||!0,r)}var u;if(typeof ko===undefined)throw"Knockout is required, please ensure it is loaded before loading this validation plug-in";var i={registerExtenders:!0,messagesOnModified:!0,messageTemplate:null,insertMessages:!0,parseInputAttributes:!1,writeInputAttributes:!1,decorateElement:!1,errorClass:null,errorElementClass:"validationElement",errorMessageClass:"validationMessage",grouping:{deep:!1,observable:!0}},t=ko.utils.extend({},i),r=["required","pattern","min","max","step"],f=function(n){window.setImmediate?window.setImmediate(n):window.setTimeout(n,0)},n=function(){var u=(new Date).getTime(),r={},i="__ko_validation__";return{isArray:function(n){return n.isArray||Object.prototype.toString.call(n)==="[object Array]"},isObject:function(n){return n!==null&&typeof n=="object"},values:function(n){var i=[],t;for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);return i},getValue:function(n){return typeof n=="function"?n():n},hasAttribute:function(n,t){return n.getAttribute(t)!==null},isValidatable:function(n){return n.rules&&n.isValid&&n.isModified},insertAfter:function(n,t){n.parentNode.insertBefore(t,n.nextSibling)},newId:function(){return u+=1},getConfigOptions:function(i){var r=n.contextFor(i);return r||t},setDomData:function(t,u){var f=t[i];f||(t[i]=f=n.newId()),r[f]=u},getDomData:function(n){var t=n[i];return t?r[t]:undefined},contextFor:function(t){switch(t.nodeType){case 1:case 8:var i=n.getDomData(t);if(i)return i;if(t.parentNode)return n.contextFor(t.parentNode)}return undefined},isEmptyVal:function(n){return n===undefined?!0:n===null?!0:n===""?!0:void 0}}}();ko.validation=function(){var u=0;return{utils:n,init:function(n,i){u>0&&!i||(n=n||{},n.errorElementClass=n.errorElementClass||n.errorClass||t.errorElementClass,n.errorMessageClass=n.errorMessageClass||n.errorClass||t.errorMessageClass,ko.utils.extend(t,n),t.registerExtenders&&ko.validation.registerExtenders(),u=1)},configure:function(n){ko.validation.init(n)},reset:function(){t=$.extend(t,i)},group:function(i,r){var r=ko.utils.extend(t.grouping,r),f=ko.observableArray([]),u=null,e=function e(t,i){var o=[],u=ko.utils.unwrapObservable(t);i=i!==undefined?i:r.deep?1:-1,ko.isObservable(t)&&(t.isValid||t.extend({validatable:!0}),f.push(t)),u&&(n.isArray(u)?o=u:n.isObject(u)&&(o=n.values(u))),i!==0&&ko.utils.arrayForEach(o,function(n){n&&!n.nodeType&&e(n,i+1)})};return r.observable?(e(i),u=ko.computed(function(){var n=[];return ko.utils.arrayForEach(f(),function(t){t.isValid()||n.push(t.error)}),n})):u=function(){var n=[];return f([]),e(i),ko.utils.arrayForEach(f(),function(t){t.isValid()||n.push(t.error)}),n},u.showAllMessages=function(n){n==undefined&&(n=!0),u(),ko.utils.arrayForEach(f(),function(t){t.isModified(n)})},i.errors=u,i.isValid=function(){return i.errors().length===0},i.isAnyMessageShown=function(){var n=!1;return u(),ko.utils.arrayForEach(f(),function(t){!t.isValid()&&t.isModified()&&(n=!0)}),n},u},formatMessage:function(n,t){return n.replace(/\{0\}/gi,t)},addRule:function(n,t){return n.extend({validatable:!0}),n.rules.push(t),n},addAnonymousRule:function(t,i){var r=n.newId();i.message===undefined&&(rulesObj.message="Error"),ko.validation.rules[r]=i,ko.validation.addRule(t,{rule:r,params:i.params})},addExtender:function(t){ko.extenders[t]=function(i,r){return r.message||r.onlyIf?ko.validation.addRule(i,{rule:t,message:r.message,params:n.isEmptyVal(r.params)?!0:r.params,condition:r.onlyIf}):ko.validation.addRule(i,{rule:t,params:r})}},registerExtenders:function(){if(t.registerExtenders)for(var n in ko.validation.rules)ko.validation.rules.hasOwnProperty(n)&&(ko.extenders[n]||ko.validation.addExtender(n))},insertValidationMessage:function(t){var i=document.createElement("SPAN");return i.className=n.getConfigOptions(t).errorMessageClass,n.insertAfter(t,i),i},parseInputValidationAttributes:function(t,i){ko.utils.arrayForEach(r,function(r){n.hasAttribute(t,r)&&ko.validation.addRule(i(),{rule:r,params:t.getAttribute(r)||!0})})},writeInputValidationAttributes:function(n,t){var i=t(),u;i&&i.rules&&(u=i.rules(),ko.utils.arrayForEach(r,function(t){var r,i=ko.utils.arrayFirst(u,function(n){return n.rule.toLowerCase()===t.toLowerCase()});i&&(r=i.params,i.rule=="pattern"&&i.params instanceof RegExp&&(r=i.params.source),n.setAttribute(t,r))}),u=null)}}}(),ko.validation.rules={},ko.validation.rules.required={validator:function(n,t){var r=/^\s+|\s+$/g,i;return n===undefined||n===null?!t:(i=n,typeof n=="string"&&(i=n.replace(r,"")),t&&(i+"").length>0)},message:"This field is required."},ko.validation.rules.min={validator:function(t,i){return n.isEmptyVal(t)||t>=i},message:"Please enter a value greater than or equal to {0}."},ko.validation.rules.max={validator:function(t,i){return n.isEmptyVal(t)||t<=i},message:"Please enter a value less than or equal to {0}."},ko.validation.rules.minLength={validator:function(t,i){return n.isEmptyVal(t)||t.length>=i},message:"Please enter at least {0} characters."},ko.validation.rules.maxLength={validator:function(t,i){return n.isEmptyVal(t)||t.length<=i},message:"Please enter no more than {0} characters."},ko.validation.rules.pattern={validator:function(t,i){return n.isEmptyVal(t)||t.match(i)!=null},message:"Please check this value."},ko.validation.rules.step={validator:function(t,i){return n.isEmptyVal(t)||t*100%(i*100)==0},message:"The value must increment by {0}"},ko.validation.rules.email={validator:function(t,i){return n.isEmptyVal(t)||i&&/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)},message:"Please enter a proper email address"},ko.validation.rules.date={validator:function(t,i){return n.isEmptyVal(t)||i&&!/Invalid|NaN/.test(new Date(t))},message:"Please enter a proper date"},ko.validation.rules.dateISO={validator:function(t,i){return n.isEmptyVal(t)||i&&/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(t)},message:"Please enter a proper date"},ko.validation.rules.number={validator:function(t,i){return n.isEmptyVal(t)||i&&/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(t)},message:"Please enter a number"},ko.validation.rules.digit={validator:function(t,i){return n.isEmptyVal(t)||i&&/^\d+$/.test(t)},message:"Please enter a digit"},ko.validation.rules.phoneUS={validator:function(t,i){return typeof t!="string"?!1:n.isEmptyVal(t)?!0:(t=t.replace(/\s+/g,""),i&&t.length>9&&t.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/))},message:"Please specify a valid phone number"},ko.validation.rules.equal={validator:function(t,i){var r=i;return t===n.getValue(r)},message:"Values must equal"},ko.validation.rules.notEqual={validator:function(t,i){var r=i;return t!==n.getValue(r)},message:"Please choose another value."},ko.validation.rules.unique={validator:function(t,i){var r=n.getValue(i.collection),u=n.getValue(i.externalValue),f=0;return!t||!r?!0:(ko.utils.arrayFilter(ko.utils.unwrapObservable(r),function(n){t===(i.valueAccessor?i.valueAccessor(n):n)&&f++}),f<(u!==undefined&&t!==u?1:2))},message:"Please make sure the value is unique."},function(){ko.validation.registerExtenders()}(),ko.bindingHandlers.validationCore=function(){return{init:function(t,i){var r=n.getConfigOptions(t),u;r.parseInputAttributes&&f(function(){ko.validation.parseInputValidationAttributes(t,i)}),r.insertMessages&&n.isValidatable(i())&&(u=ko.validation.insertValidationMessage(t),r.messageTemplate?ko.renderTemplate(r.messageTemplate,{field:i()},null,u,"replaceNode"):ko.applyBindingsToNode(u,{validationMessage:i()})),r.writeInputAttributes&&n.isValidatable(i())&&ko.validation.writeInputValidationAttributes(t,i),r.decorateElement&&n.isValidatable(i())&&ko.applyBindingsToNode(t,{validationElement:i()})},update:function(){}}}(),function(){var n=ko.bindingHandlers.value.init;ko.bindingHandlers.value.init=function(t,i,r,u,f){return n(t,i,r),ko.bindingHandlers.validationCore.init(t,i,r,u,f)}}(),ko.bindingHandlers.validationMessage={update:function(t,i){var r=i(),s=n.getConfigOptions(t),h=ko.utils.unwrapObservable(r),u=!1,f=!1,e,o;r.extend({validatable:!0}),u=r.isModified(),f=r.isValid(),e=function(){return!s.messagesOnModified||u?f?null:r.error:null},o=function(){return u?!f:!1},ko.bindingHandlers.text.update(t,e),ko.bindingHandlers.visible.update(t,o)}},ko.bindingHandlers.validationElement={update:function(t,i){var r=i(),u=n.getConfigOptions(t),s=ko.utils.unwrapObservable(r),f=!1,e=!1,o;r.extend({validatable:!0}),f=r.isModified(),e=r.isValid(),o=function(){var n={},t=f?!e:!1;return u.decorateElement||(t=!1),n[u.errorElementClass]=t,n},ko.bindingHandlers.css.update(t,o)}},ko.bindingHandlers.validationOptions=function(){return{init:function(i,r){var f=ko.utils.unwrapObservable(r()),u;f&&(u=ko.utils.extend({},t),ko.utils.extend(u,f),n.setDomData(i,u))}}}(),ko.extenders.validation=function(t,i){return ko.utils.arrayForEach(n.isArray(i)?i:[i],function(n){ko.validation.addAnonymousRule(t,n)}),t},ko.extenders.validatable=function(t,i){var r,u;return i&&!n.isValidatable(t)?(t.error=null,t.rules=ko.observableArray(),t.isValidating=ko.observable(!1),t.__valid__=ko.observable(!0),t.isModified=ko.observable(!1),r=ko.computed(function(){var n=t(),i=t.rules();return ko.validation.validateObservable(t),!0}),t.isValid=ko.computed(function(){return t.__valid__()}),u=t.subscribe(function(){t.isModified(!0)}),t._disposeValidation=function(){t.isValid.dispose(),t.rules.removeAll(),t.isModified._subscriptions.change=[],t.isValidating._subscriptions.change=[],t.__valid__._subscriptions.change=[],u.dispose(),r.dispose(),delete t.rules,delete t.error,delete t.isValid,delete t.isValidating,delete t.__valid__,delete t.isModified}):i===!1&&n.isValidatable(t)&&t._disposeValidation&&t._disposeValidation(),t},ko.validation.validateObservable=function(n){for(var r=0,i,t,u=n.rules(),f=u.length;r<f;r++)if(t=u[r],!t.condition||t.condition())if(i=ko.validation.rules[t.rule],i.async||t.async)o(n,i,t);else if(!e(n,i,t))return!1;return n.error=null,n.__valid__(!0),!0},ko.validatedObservable=function(n){if(!ko.validation.utils.isObject(n))return ko.observable(n).extend({validatable:!0});var t=ko.observable(n);return t.errors=ko.validation.group(n),t.isValid=ko.computed(function(){return t.errors().length===0}),t},ko.validation.localize=function(n){var t;for(t in n)ko.validation.rules.hasOwnProperty(t)&&(ko.validation.rules[t].message=n[t])},ko.applyBindingsWithValidation=function(n,t,i){var f=arguments.length,r,u;f>2?(r=t,u=i):f<2?r=document.body:arguments[1].nodeType?r=t:u=arguments[1],ko.validation.init(),u&&ko.validation.utils.setDomData(r,u),ko.applyBindings(n,t)},u=ko.applyBindings,ko.applyBindings=function(n,t){ko.validation.init(),u(n,t)}}(),ko.validation.localize({required:"Необходимо заполнить это поле.",min:"Значение должно быть больше или равно {0}.",max:"Значение должно быть меньше или равно {0}.",minLength:"Длина поля должна быть не меньше {0} символов.",maxLength:"Длина поля должна быть не больше {0} символов.",pattern:"Пожалуйста проверьте это поле.",step:"Значение поле должно изменяться с шагом {0}",email:"Введите в поле правильный адрес email",date:"Пожалуйста введите правильную дату",dateISO:"Пожалуйста введите правильную дату в формате ISO",number:"Поле должно содержать число",digit:"Поле должно содержать цифры",phoneUS:"Поле должно содержать правильный номер телефона",equal:"Значения должны быть равны",notEqual:"Пожалуйста выберите другое значение.",unique:"Значение должно быть уникальным."})