var jsPsychSurvey = (function (jspsych) { "use strict"; var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; var surveyKnockoutUi = { exports: {} }; var knockoutLatest = { exports: {} }; /*! * Knockout JavaScript library v3.5.1 * (c) The Knockout.js team - http://knockoutjs.com/ * License: MIT (http://www.opensource.org/licenses/mit-license.php) */ var hasRequiredKnockoutLatest; function requireKnockoutLatest() { if (hasRequiredKnockoutLatest) return knockoutLatest.exports; hasRequiredKnockoutLatest = 1; (function (module, exports) { (function () { (function (n) { var A = this || (0, eval)("this"), w = A.document, R = A.navigator, v = A.jQuery, H = A.JSON; v || "undefined" === typeof jQuery || (v = jQuery); (function (n) { n(module.exports || exports); })(function (S, T) { function K(a, c) { return null === a || typeof a in W ? a === c : !1; } function X(b, c) { var d; return function () { d || (d = a.a.setTimeout(function () { d = n; b(); }, c)); }; } function Y(b, c) { var d; return function () { clearTimeout(d); d = a.a.setTimeout(b, c); }; } function Z(a, c) { c && "change" !== c ? "beforeChange" === c ? this.pc(a) : this.gb(a, c) : this.qc(a); } function aa(a, c) { null !== c && c.s && c.s(); } function ba(a, c) { var d = this.qd, e = d[r]; e.ra || (this.Qb && this.mb[c] ? (d.uc(c, a, this.mb[c]), (this.mb[c] = null), --this.Qb) : e.I[c] || d.uc(c, a, e.J ? { da: a } : d.$c(a)), a.Ja && a.gd()); } var a = "undefined" !== typeof S ? S : {}; a.b = function (b, c) { for (var d = b.split("."), e = a, f = 0; f < d.length - 1; f++) e = e[d[f]]; e[d[d.length - 1]] = c; }; a.L = function (a, c, d) { a[c] = d; }; a.version = "3.5.1"; a.b("version", a.version); a.options = { deferUpdates: !1, useOnlyNativeEvents: !1, foreachHidesDestroyed: !1 }; a.a = (function () { function b(a, b) { for (var c in a) f.call(a, c) && b(c, a[c]); } function c(a, b) { if (b) for (var c in b) f.call(b, c) && (a[c] = b[c]); return a; } function d(a, b) { a.__proto__ = b; return a; } function e(b, c, d, e) { var l = b[c].match(q) || []; a.a.D(d.match(q), function (b) { a.a.Na(l, b, e); }); b[c] = l.join(" "); } var f = Object.prototype.hasOwnProperty, g = { __proto__: [] } instanceof Array, h = "function" === typeof Symbol, m = {}, k = {}; m[R && /Firefox\/2/i.test(R.userAgent) ? "KeyboardEvent" : "UIEvents"] = [ "keyup", "keydown", "keypress", ]; m.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split( " " ); b(m, function (a, b) { if (b.length) for (var c = 0, d = b.length; c < d; c++) k[b[c]] = a; }); var l = { propertychange: !0 }, p = w && (function () { for ( var a = 3, b = w.createElement("div"), c = b.getElementsByTagName("i"); (b.innerHTML = "\x3c!--[if gt IE " + ++a + "]> a.a.A(c, b) && c.push(b); }); return c; }, Mb: function (a, b, c) { var d = []; if (a) for (var e = 0, l = a.length; e < l; e++) d.push(b.call(c, a[e], e)); return d; }, jb: function (a, b, c) { var d = []; if (a) for (var e = 0, l = a.length; e < l; e++) b.call(c, a[e], e) && d.push(a[e]); return d; }, Nb: function (a, b) { if (b instanceof Array) a.push.apply(a, b); else for (var c = 0, d = b.length; c < d; c++) a.push(b[c]); return a; }, Na: function (b, c, d) { var e = a.a.A(a.a.bc(b), c); 0 > e ? d && b.push(c) : d || b.splice(e, 1); }, Ba: g, extend: c, setPrototypeOf: d, Ab: g ? d : c, P: b, Ga: function (a, b, c) { if (!a) return a; var d = {}, e; for (e in a) f.call(a, e) && (d[e] = b.call(c, a[e], e, a)); return d; }, Tb: function (b) { for (; b.firstChild; ) a.removeNode(b.firstChild); }, Yb: function (b) { b = a.a.la(b); for ( var c = ((b[0] && b[0].ownerDocument) || w).createElement("div"), d = 0, e = b.length; d < e; d++ ) c.appendChild(a.oa(b[d])); return c; }, Ca: function (b, c) { for (var d = 0, e = b.length, l = []; d < e; d++) { var k = b[d].cloneNode(!0); l.push(c ? a.oa(k) : k); } return l; }, va: function (b, c) { a.a.Tb(b); if (c) for (var d = 0, e = c.length; d < e; d++) b.appendChild(c[d]); }, Xc: function (b, c) { var d = b.nodeType ? [b] : b; if (0 < d.length) { for (var e = d[0], l = e.parentNode, k = 0, f = c.length; k < f; k++) l.insertBefore(c[k], e); k = 0; for (f = d.length; k < f; k++) a.removeNode(d[k]); } }, Ua: function (a, b) { if (a.length) { for ( b = (8 === b.nodeType && b.parentNode) || b; a.length && a[0].parentNode !== b; ) a.splice(0, 1); for (; 1 < a.length && a[a.length - 1].parentNode !== b; ) a.length--; if (1 < a.length) { var c = a[0], d = a[a.length - 1]; for (a.length = 0; c !== d; ) a.push(c), (c = c.nextSibling); a.push(d); } } return a; }, Zc: function (a, b) { 7 > p ? a.setAttribute("selected", b) : (a.selected = b); }, Db: function (a) { return null === a || a === n ? "" : a.trim ? a.trim() : a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ""); }, Ud: function (a, b) { a = a || ""; return b.length > a.length ? !1 : a.substring(0, b.length) === b; }, vd: function (a, b) { if (a === b) return !0; if (11 === a.nodeType) return !1; if (b.contains) return b.contains(1 !== a.nodeType ? a.parentNode : a); if (b.compareDocumentPosition) return 16 == (b.compareDocumentPosition(a) & 16); for (; a && a != b; ) a = a.parentNode; return !!a; }, Sb: function (b) { return a.a.vd(b, b.ownerDocument.documentElement); }, kd: function (b) { return !!a.a.Lb(b, a.a.Sb); }, R: function (a) { return a && a.tagName && a.tagName.toLowerCase(); }, Ac: function (b) { return a.onError ? function () { try { return b.apply(this, arguments); } catch (c) { throw (a.onError && a.onError(c), c); } } : b; }, setTimeout: function (b, c) { return setTimeout(a.a.Ac(b), c); }, Gc: function (b) { setTimeout(function () { a.onError && a.onError(b); throw b; }, 0); }, B: function (b, c, d) { var e = a.a.Ac(d); d = l[c]; if (a.options.useOnlyNativeEvents || d || !v) if (d || "function" != typeof b.addEventListener) if ("undefined" != typeof b.attachEvent) { var k = function (a) { e.call(b, a); }, f = "on" + c; b.attachEvent(f, k); a.a.K.za(b, function () { b.detachEvent(f, k); }); } else throw Error("Browser doesn't support addEventListener or attachEvent"); else b.addEventListener(c, e, !1); else t || (t = "function" == typeof v(b).on ? "on" : "bind"), v(b)[t](c, e); }, Fb: function (b, c) { if (!b || !b.nodeType) throw Error("element must be a DOM node when calling triggerEvent"); var d; "input" === a.a.R(b) && b.type && "click" == c.toLowerCase() ? ((d = b.type), (d = "checkbox" == d || "radio" == d)) : (d = !1); if (a.options.useOnlyNativeEvents || !v || d) if ("function" == typeof w.createEvent) if ("function" == typeof b.dispatchEvent) (d = w.createEvent(k[c] || "HTMLEvents")), d.initEvent(c, !0, !0, A, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, b), b.dispatchEvent(d); else throw Error("The supplied element doesn't support dispatchEvent"); else if (d && b.click) b.click(); else if ("undefined" != typeof b.fireEvent) b.fireEvent("on" + c); else throw Error("Browser doesn't support triggering events"); else v(b).trigger(c); }, f: function (b) { return a.O(b) ? b() : b; }, bc: function (b) { return a.O(b) ? b.v() : b; }, Eb: function (b, c, d) { var l; c && ("object" === typeof b.classList ? ((l = b.classList[d ? "add" : "remove"]), a.a.D(c.match(q), function (a) { l.call(b.classList, a); })) : "string" === typeof b.className.baseVal ? e(b.className, "baseVal", c, d) : e(b, "className", c, d)); }, Bb: function (b, c) { var d = a.a.f(c); if (null === d || d === n) d = ""; var e = a.h.firstChild(b); !e || 3 != e.nodeType || a.h.nextSibling(e) ? a.h.va(b, [b.ownerDocument.createTextNode(d)]) : (e.data = d); a.a.Ad(b); }, Yc: function (a, b) { a.name = b; if (7 >= p) try { var c = a.name.replace(/[&<>'"]/g, function (a) { return "&#" + a.charCodeAt(0) + ";"; }); a.mergeAttributes(w.createElement(""), !1); } catch (d) {} }, Ad: function (a) { 9 <= p && ((a = 1 == a.nodeType ? a : a.parentNode), a.style && (a.style.zoom = a.style.zoom)); }, wd: function (a) { if (p) { var b = a.style.width; a.style.width = 0; a.style.width = b; } }, Pd: function (b, c) { b = a.a.f(b); c = a.a.f(c); for (var d = [], e = b; e <= c; e++) d.push(e); return d; }, la: function (a) { for (var b = [], c = 0, d = a.length; c < d; c++) b.push(a[c]); return b; }, Da: function (a) { return h ? Symbol(a) : a; }, Zd: 6 === p, $d: 7 === p, W: p, Lc: function (b, c) { for ( var d = a.a .la(b.getElementsByTagName("input")) .concat(a.a.la(b.getElementsByTagName("textarea"))), e = "string" == typeof c ? function (a) { return a.name === c; } : function (a) { return c.test(a.name); }, l = [], k = d.length - 1; 0 <= k; k-- ) e(d[k]) && l.push(d[k]); return l; }, Nd: function (b) { return "string" == typeof b && (b = a.a.Db(b)) ? H && H.parse ? H.parse(b) : new Function("return " + b)() : null; }, hc: function (b, c, d) { if (!H || !H.stringify) throw 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 H.stringify(a.a.f(b), c, d); }, Od: function (c, d, e) { e = e || {}; var l = e.params || {}, k = e.includeFields || this.Jc, f = c; if ("object" == typeof c && "form" === a.a.R(c)) for (var f = c.action, h = k.length - 1; 0 <= h; h--) for (var g = a.a.Lc(c, k[h]), m = g.length - 1; 0 <= m; m--) l[g[m].name] = g[m].value; d = a.a.f(d); var p = w.createElement("form"); p.style.display = "none"; p.action = f; p.method = "post"; for (var q in d) (c = w.createElement("input")), (c.type = "hidden"), (c.name = q), (c.value = a.a.hc(a.a.f(d[q]))), p.appendChild(c); b(l, function (a, b) { var c = w.createElement("input"); c.type = "hidden"; c.name = a; c.value = b; p.appendChild(c); }); w.body.appendChild(p); e.submitter ? e.submitter(p) : p.submit(); setTimeout(function () { p.parentNode.removeChild(p); }, 0); }, }; })(); a.b("utils", a.a); a.b("utils.arrayForEach", a.a.D); a.b("utils.arrayFirst", a.a.Lb); a.b("utils.arrayFilter", a.a.jb); a.b("utils.arrayGetDistinctValues", a.a.wc); a.b("utils.arrayIndexOf", a.a.A); a.b("utils.arrayMap", a.a.Mb); a.b("utils.arrayPushAll", a.a.Nb); a.b("utils.arrayRemoveItem", a.a.Pa); a.b("utils.cloneNodes", a.a.Ca); a.b("utils.createSymbolOrString", a.a.Da); a.b("utils.extend", a.a.extend); a.b("utils.fieldsIncludedWithJsonPost", a.a.Jc); a.b("utils.getFormFields", a.a.Lc); a.b("utils.objectMap", a.a.Ga); a.b("utils.peekObservable", a.a.bc); a.b("utils.postJson", a.a.Od); a.b("utils.parseJson", a.a.Nd); a.b("utils.registerEventHandler", a.a.B); a.b("utils.stringifyJson", a.a.hc); a.b("utils.range", a.a.Pd); a.b("utils.toggleDomNodeCssClass", a.a.Eb); a.b("utils.triggerEvent", a.a.Fb); a.b("utils.unwrapObservable", a.a.f); a.b("utils.objectForEach", a.a.P); a.b("utils.addOrRemoveItem", a.a.Na); a.b("utils.setTextContent", a.a.Bb); a.b("unwrap", a.a.f); Function.prototype.bind || (Function.prototype.bind = function (a) { var c = this; if (1 === arguments.length) return function () { return c.apply(a, arguments); }; var d = Array.prototype.slice.call(arguments, 1); return function () { var e = d.slice(0); e.push.apply(e, arguments); return c.apply(a, e); }; }); a.a.g = new (function () { var b = 0, c = "__ko__" + new Date().getTime(), d = {}, e, f; a.a.W ? ((e = function (a, e) { var f = a[c]; if (!f || "null" === f || !d[f]) { if (!e) return n; f = a[c] = "ko" + b++; d[f] = {}; } return d[f]; }), (f = function (a) { var b = a[c]; return b ? (delete d[b], (a[c] = null), !0) : !1; })) : ((e = function (a, b) { var d = a[c]; !d && b && (d = a[c] = {}); return d; }), (f = function (a) { return a[c] ? (delete a[c], !0) : !1; })); return { get: function (a, b) { var c = e(a, !1); return c && c[b]; }, set: function (a, b, c) { (a = e(a, c !== n)) && (a[b] = c); }, Ub: function (a, b, c) { a = e(a, !0); return a[b] || (a[b] = c); }, clear: f, Z: function () { return b++ + c; }, }; })(); a.b("utils.domData", a.a.g); a.b("utils.domData.clear", a.a.g.clear); a.a.K = new (function () { function b(b, c) { var d = a.a.g.get(b, e); d === n && c && ((d = []), a.a.g.set(b, e, d)); return d; } function c(c) { var e = b(c, !1); if (e) for (var e = e.slice(0), k = 0; k < e.length; k++) e[k](c); a.a.g.clear(c); a.a.K.cleanExternalData(c); g[c.nodeType] && d(c.childNodes, !0); } function d(b, d) { for (var e = [], l, f = 0; f < b.length; f++) if (!d || 8 === b[f].nodeType) if ((c((e[e.length] = l = b[f])), b[f] !== l)) for (; f-- && -1 == a.a.A(e, b[f]); ); } var e = a.a.g.Z(), f = { 1: !0, 8: !0, 9: !0 }, g = { 1: !0, 9: !0 }; return { za: function (a, c) { if ("function" != typeof c) throw Error("Callback must be a function"); b(a, !0).push(c); }, yb: function (c, d) { var f = b(c, !1); f && (a.a.Pa(f, d), 0 == f.length && a.a.g.set(c, e, n)); }, oa: function (b) { a.u.G(function () { f[b.nodeType] && (c(b), g[b.nodeType] && d(b.getElementsByTagName("*"))); }); return b; }, removeNode: function (b) { a.oa(b); b.parentNode && b.parentNode.removeChild(b); }, cleanExternalData: function (a) { v && "function" == typeof v.cleanData && v.cleanData([a]); }, }; })(); a.oa = a.a.K.oa; a.removeNode = a.a.K.removeNode; a.b("cleanNode", a.oa); a.b("removeNode", a.removeNode); a.b("utils.domNodeDisposal", a.a.K); a.b("utils.domNodeDisposal.addDisposeCallback", a.a.K.za); a.b("utils.domNodeDisposal.removeDisposeCallback", a.a.K.yb); (function () { var b = [0, "", ""], c = [1, "", "
"], d = [3, "", "
"], e = [1, ""], f = { thead: c, tbody: c, tfoot: c, tr: [2, "", "
"], td: d, th: d, option: e, optgroup: e, }, g = 8 >= a.a.W; a.a.ua = function (c, d) { var e; if (v) if (v.parseHTML) e = v.parseHTML(c, d) || []; else { if ((e = v.clean([c], d)) && e[0]) { for (var l = e[0]; l.parentNode && 11 !== l.parentNode.nodeType; ) l = l.parentNode; l.parentNode && l.parentNode.removeChild(l); } } else { (e = d) || (e = w); var l = e.parentWindow || e.defaultView || A, p = a.a.Db(c).toLowerCase(), q = e.createElement("div"), t; t = ((p = p.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/)) && f[p[1]]) || b; p = t[0]; t = "ignored
" + t[1] + c + t[2] + "
"; "function" == typeof l.innerShiv ? q.appendChild(l.innerShiv(t)) : (g && e.body.appendChild(q), (q.innerHTML = t), g && q.parentNode.removeChild(q)); for (; p--; ) q = q.lastChild; e = a.a.la(q.lastChild.childNodes); } return e; }; a.a.Md = function (b, c) { var d = a.a.ua(b, c); return (d.length && d[0].parentElement) || a.a.Yb(d); }; a.a.fc = function (b, c) { a.a.Tb(b); c = a.a.f(c); if (null !== c && c !== n) if (("string" != typeof c && (c = c.toString()), v)) v(b).html(c); else for (var d = a.a.ua(c, b.ownerDocument), e = 0; e < d.length; e++) b.appendChild(d[e]); }; })(); a.b("utils.parseHtmlFragment", a.a.ua); a.b("utils.setHtml", a.a.fc); a.aa = (function () { function b(c, e) { if (c) if (8 == c.nodeType) { var f = a.aa.Uc(c.nodeValue); null != f && e.push({ ud: c, Kd: f }); } else if (1 == c.nodeType) for (var f = 0, g = c.childNodes, h = g.length; f < h; f++) b(g[f], e); } var c = {}; return { Xb: function (a) { if ("function" != typeof a) throw Error("You can only pass a function to ko.memoization.memoize()"); var b = ((4294967296 * (1 + Math.random())) | 0).toString(16).substring(1) + ((4294967296 * (1 + Math.random())) | 0).toString(16).substring(1); c[b] = a; return "\x3c!--[ko_memo:" + b + "]--\x3e"; }, bd: function (a, b) { var f = c[a]; if (f === n) throw Error( "Couldn't find any memo with ID " + a + ". Perhaps it's already been unmemoized." ); try { return f.apply(null, b || []), !0; } finally { delete c[a]; } }, cd: function (c, e) { var f = []; b(c, f); for (var g = 0, h = f.length; g < h; g++) { var m = f[g].ud, k = [m]; e && a.a.Nb(k, e); a.aa.bd(f[g].Kd, k); m.nodeValue = ""; m.parentNode && m.parentNode.removeChild(m); } }, Uc: function (a) { return (a = a.match(/^\[ko_memo\:(.*?)\]$/)) ? a[1] : null; }, }; })(); a.b("memoization", a.aa); a.b("memoization.memoize", a.aa.Xb); a.b("memoization.unmemoize", a.aa.bd); a.b("memoization.parseMemoText", a.aa.Uc); a.b("memoization.unmemoizeDomNodeAndDescendants", a.aa.cd); a.na = (function () { function b() { if (f) for (var b = f, c = 0, d; h < f; ) if ((d = e[h++])) { if (h > b) { if (5e3 <= ++c) { h = f; a.a.Gc( Error("'Too much recursion' after processing " + c + " task groups.") ); break; } b = f; } try { d(); } catch (p) { a.a.Gc(p); } } } function c() { b(); h = f = e.length = 0; } var d, e = [], f = 0, g = 1, h = 0; A.MutationObserver ? (d = (function (a) { var b = w.createElement("div"); new MutationObserver(a).observe(b, { attributes: !0 }); return function () { b.classList.toggle("foo"); }; })(c)) : (d = w && "onreadystatechange" in w.createElement("script") ? function (a) { var b = w.createElement("script"); b.onreadystatechange = function () { b.onreadystatechange = null; w.documentElement.removeChild(b); b = null; a(); }; w.documentElement.appendChild(b); } : function (a) { setTimeout(a, 0); }); return { scheduler: d, zb: function (b) { f || a.na.scheduler(c); e[f++] = b; return g++; }, cancel: function (a) { a = a - (g - f); a >= h && a < f && (e[a] = null); }, resetForTesting: function () { var a = f - h; h = f = e.length = 0; return a; }, Sd: b, }; })(); a.b("tasks", a.na); a.b("tasks.schedule", a.na.zb); a.b("tasks.runEarly", a.na.Sd); a.Ta = { throttle: function (b, c) { b.throttleEvaluation = c; var d = null; return a.$({ read: b, write: function (e) { clearTimeout(d); d = a.a.setTimeout(function () { b(e); }, c); }, }); }, rateLimit: function (a, c) { var d, e, f; "number" == typeof c ? (d = c) : ((d = c.timeout), (e = c.method)); a.Hb = !1; f = "function" == typeof e ? e : "notifyWhenChangesStop" == e ? Y : X; a.ub(function (a) { return f(a, d, c); }); }, deferred: function (b, c) { if (!0 !== c) throw Error( "The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled." ); b.Hb || ((b.Hb = !0), b.ub(function (c) { var e, f = !1; return function () { if (!f) { a.na.cancel(e); e = a.na.zb(c); try { (f = !0), b.notifySubscribers(n, "dirty"); } finally { f = !1; } } }; })); }, notify: function (a, c) { a.equalityComparer = "always" == c ? null : K; }, }; var W = { undefined: 1, boolean: 1, number: 1, string: 1 }; a.b("extenders", a.Ta); a.ic = function (b, c, d) { this.da = b; this.lc = c; this.mc = d; this.Ib = !1; this.fb = this.Jb = null; a.L(this, "dispose", this.s); a.L(this, "disposeWhenNodeIsRemoved", this.l); }; a.ic.prototype.s = function () { this.Ib || (this.fb && a.a.K.yb(this.Jb, this.fb), (this.Ib = !0), this.mc(), (this.da = this.lc = this.mc = this.Jb = this.fb = null)); }; a.ic.prototype.l = function (b) { this.Jb = b; a.a.K.za(b, (this.fb = this.s.bind(this))); }; a.T = function () { a.a.Ab(this, D); D.qb(this); }; var D = { qb: function (a) { a.U = { change: [] }; a.sc = 1; }, subscribe: function (b, c, d) { var e = this; d = d || "change"; var f = new a.ic(e, c ? b.bind(c) : b, function () { a.a.Pa(e.U[d], f); e.hb && e.hb(d); }); e.Qa && e.Qa(d); e.U[d] || (e.U[d] = []); e.U[d].push(f); return f; }, notifySubscribers: function (b, c) { c = c || "change"; "change" === c && this.Gb(); if (this.Wa(c)) { var d = ("change" === c && this.ed) || this.U[c].slice(0); try { a.u.xc(); for (var e = 0, f; (f = d[e]); ++e) f.Ib || f.lc(b); } finally { a.u.end(); } } }, ob: function () { return this.sc; }, Dd: function (a) { return this.ob() !== a; }, Gb: function () { ++this.sc; }, ub: function (b) { var c = this, d = a.O(c), e, f, g, h, m; c.gb || ((c.gb = c.notifySubscribers), (c.notifySubscribers = Z)); var k = b(function () { c.Ja = !1; d && h === c && (h = c.nc ? c.nc() : c()); var a = f || (m && c.sb(g, h)); m = f = e = !1; a && c.gb((g = h)); }); c.qc = function (a, b) { (b && c.Ja) || (m = !b); c.ed = c.U.change.slice(0); c.Ja = e = !0; h = a; k(); }; c.pc = function (a) { e || ((g = a), c.gb(a, "beforeChange")); }; c.rc = function () { m = !0; }; c.gd = function () { c.sb(g, c.v(!0)) && (f = !0); }; }, Wa: function (a) { return this.U[a] && this.U[a].length; }, Bd: function (b) { if (b) return (this.U[b] && this.U[b].length) || 0; var c = 0; a.a.P(this.U, function (a, b) { "dirty" !== a && (c += b.length); }); return c; }, sb: function (a, c) { return !this.equalityComparer || !this.equalityComparer(a, c); }, toString: function () { return "[object Object]"; }, extend: function (b) { var c = this; b && a.a.P(b, function (b, e) { var f = a.Ta[b]; "function" == typeof f && (c = f(c, e) || c); }); return c; }, }; a.L(D, "init", D.qb); a.L(D, "subscribe", D.subscribe); a.L(D, "extend", D.extend); a.L(D, "getSubscriptionsCount", D.Bd); a.a.Ba && a.a.setPrototypeOf(D, Function.prototype); a.T.fn = D; a.Qc = function (a) { return ( null != a && "function" == typeof a.subscribe && "function" == typeof a.notifySubscribers ); }; a.b("subscribable", a.T); a.b("isSubscribable", a.Qc); a.S = a.u = (function () { function b(a) { d.push(e); e = a; } function c() { e = d.pop(); } var d = [], e, f = 0; return { xc: b, end: c, cc: function (b) { if (e) { if (!a.Qc(b)) throw Error("Only subscribable things can act as dependencies"); e.od.call(e.pd, b, b.fd || (b.fd = ++f)); } }, G: function (a, d, e) { try { return b(), a.apply(d, e || []); } finally { c(); } }, qa: function () { if (e) return e.o.qa(); }, Va: function () { if (e) return e.o.Va(); }, Ya: function () { if (e) return e.Ya; }, o: function () { if (e) return e.o; }, }; })(); a.b("computedContext", a.S); a.b("computedContext.getDependenciesCount", a.S.qa); a.b("computedContext.getDependencies", a.S.Va); a.b("computedContext.isInitial", a.S.Ya); a.b("computedContext.registerDependency", a.S.cc); a.b("ignoreDependencies", (a.Yd = a.u.G)); var I = a.a.Da("_latestValue"); a.ta = function (b) { function c() { if (0 < arguments.length) return c.sb(c[I], arguments[0]) && (c.ya(), (c[I] = arguments[0]), c.xa()), this; a.u.cc(c); return c[I]; } c[I] = b; a.a.Ba || a.a.extend(c, a.T.fn); a.T.fn.qb(c); a.a.Ab(c, F); a.options.deferUpdates && a.Ta.deferred(c, !0); return c; }; var F = { equalityComparer: K, v: function () { return this[I]; }, xa: function () { this.notifySubscribers(this[I], "spectate"); this.notifySubscribers(this[I]); }, ya: function () { this.notifySubscribers(this[I], "beforeChange"); }, }; a.a.Ba && a.a.setPrototypeOf(F, a.T.fn); var G = (a.ta.Ma = "__ko_proto__"); F[G] = a.ta; a.O = function (b) { if ((b = "function" == typeof b && b[G]) && b !== F[G] && b !== a.o.fn[G]) throw Error( "Invalid object that looks like an observable; possibly from another Knockout instance" ); return !!b; }; a.Za = function (b) { return "function" == typeof b && (b[G] === F[G] || (b[G] === a.o.fn[G] && b.Nc)); }; a.b("observable", a.ta); a.b("isObservable", a.O); a.b("isWriteableObservable", a.Za); a.b("isWritableObservable", a.Za); a.b("observable.fn", F); a.L(F, "peek", F.v); a.L(F, "valueHasMutated", F.xa); a.L(F, "valueWillMutate", F.ya); a.Ha = function (b) { b = b || []; if ("object" != typeof b || !("length" in b)) throw Error( "The argument passed when initializing an observable array must be an array, or null, or undefined." ); b = a.ta(b); a.a.Ab(b, a.Ha.fn); return b.extend({ trackArrayChanges: !0 }); }; a.Ha.fn = { remove: function (b) { for ( var c = this.v(), d = [], e = "function" != typeof b || a.O(b) ? function (a) { return a === b; } : b, f = 0; f < c.length; f++ ) { var g = c[f]; if (e(g)) { 0 === d.length && this.ya(); if (c[f] !== g) throw Error("Array modified during remove; cannot remove item"); d.push(g); c.splice(f, 1); f--; } } d.length && this.xa(); return d; }, removeAll: function (b) { if (b === n) { var c = this.v(), d = c.slice(0); this.ya(); c.splice(0, c.length); this.xa(); return d; } return b ? this.remove(function (c) { return 0 <= a.a.A(b, c); }) : []; }, destroy: function (b) { var c = this.v(), d = "function" != typeof b || a.O(b) ? function (a) { return a === b; } : b; this.ya(); for (var e = c.length - 1; 0 <= e; e--) { var f = c[e]; d(f) && (f._destroy = !0); } this.xa(); }, destroyAll: function (b) { return b === n ? this.destroy(function () { return !0; }) : b ? this.destroy(function (c) { return 0 <= a.a.A(b, c); }) : []; }, indexOf: function (b) { var c = this(); return a.a.A(c, b); }, replace: function (a, c) { var d = this.indexOf(a); 0 <= d && (this.ya(), (this.v()[d] = c), this.xa()); }, sorted: function (a) { var c = this().slice(0); return a ? c.sort(a) : c.sort(); }, reversed: function () { return this().slice(0).reverse(); }, }; a.a.Ba && a.a.setPrototypeOf(a.Ha.fn, a.ta.fn); a.a.D("pop push reverse shift sort splice unshift".split(" "), function (b) { a.Ha.fn[b] = function () { var a = this.v(); this.ya(); this.zc(a, b, arguments); var d = a[b].apply(a, arguments); this.xa(); return d === a ? this : d; }; }); a.a.D(["slice"], function (b) { a.Ha.fn[b] = function () { var a = this(); return a[b].apply(a, arguments); }; }); a.Pc = function (b) { return a.O(b) && "function" == typeof b.remove && "function" == typeof b.push; }; a.b("observableArray", a.Ha); a.b("isObservableArray", a.Pc); a.Ta.trackArrayChanges = function (b, c) { function d() { function c() { if (m) { var d = [].concat(b.v() || []), e; if (b.Wa("arrayChange")) { if (!f || 1 < m) f = a.a.Pb(k, d, b.Ob); e = f; } k = d; f = null; m = 0; e && e.length && b.notifySubscribers(e, "arrayChange"); } } e ? c() : ((e = !0), (h = b.subscribe( function () { ++m; }, null, "spectate" )), (k = [].concat(b.v() || [])), (f = null), (g = b.subscribe(c))); } b.Ob = {}; c && "object" == typeof c && a.a.extend(b.Ob, c); b.Ob.sparse = !0; if (!b.zc) { var e = !1, f = null, g, h, m = 0, k, l = b.Qa, p = b.hb; b.Qa = function (a) { l && l.call(b, a); "arrayChange" === a && d(); }; b.hb = function (a) { p && p.call(b, a); "arrayChange" !== a || b.Wa("arrayChange") || (g && g.s(), h && h.s(), (h = g = null), (e = !1), (k = n)); }; b.zc = function (b, c, d) { function l(a, b, c) { return (k[k.length] = { status: a, value: b, index: c }); } if (e && !m) { var k = [], p = b.length, g = d.length, h = 0; switch (c) { case "push": h = p; case "unshift": for (c = 0; c < g; c++) l("added", d[c], h + c); break; case "pop": h = p - 1; case "shift": p && l("deleted", b[h], h); break; case "splice": c = Math.min(Math.max(0, 0 > d[0] ? p + d[0] : d[0]), p); for ( var p = 1 === g ? p : Math.min(c + (d[1] || 0), p), g = c + g - 2, h = Math.max(p, g), U = [], L = [], n = 2; c < h; ++c, ++n ) c < p && L.push(l("deleted", b[c], c)), c < g && U.push(l("added", d[n], c)); a.a.Kc(L, U); break; default: return; } f = k; } }; } }; var r = a.a.Da("_state"); a.o = a.$ = function (b, c, d) { function e() { if (0 < arguments.length) { if ("function" === typeof f) f.apply(g.nb, arguments); else throw Error( "Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters." ); return this; } g.ra || a.u.cc(e); (g.ka || (g.J && e.Xa())) && e.ha(); return g.X; } "object" === typeof b ? (d = b) : ((d = d || {}), b && (d.read = b)); if ("function" != typeof d.read) throw Error("Pass a function that returns the value of the ko.computed"); var f = d.write, g = { X: n, sa: !0, ka: !0, rb: !1, jc: !1, ra: !1, wb: !1, J: !1, Wc: d.read, nb: c || d.owner, l: d.disposeWhenNodeIsRemoved || d.l || null, Sa: d.disposeWhen || d.Sa, Rb: null, I: {}, V: 0, Ic: null, }; e[r] = g; e.Nc = "function" === typeof f; a.a.Ba || a.a.extend(e, a.T.fn); a.T.fn.qb(e); a.a.Ab(e, C); d.pure ? ((g.wb = !0), (g.J = !0), a.a.extend(e, da)) : d.deferEvaluation && a.a.extend(e, ea); a.options.deferUpdates && a.Ta.deferred(e, !0); g.l && ((g.jc = !0), g.l.nodeType || (g.l = null)); g.J || d.deferEvaluation || e.ha(); g.l && e.ja() && a.a.K.za( g.l, (g.Rb = function () { e.s(); }) ); return e; }; var C = { equalityComparer: K, qa: function () { return this[r].V; }, Va: function () { var b = []; a.a.P(this[r].I, function (a, d) { b[d.Ka] = d.da; }); return b; }, Vb: function (b) { if (!this[r].V) return !1; var c = this.Va(); return -1 !== a.a.A(c, b) ? !0 : !!a.a.Lb(c, function (a) { return a.Vb && a.Vb(b); }); }, uc: function (a, c, d) { if (this[r].wb && c === this) throw Error("A 'pure' computed must not be called recursively"); this[r].I[a] = d; d.Ka = this[r].V++; d.La = c.ob(); }, Xa: function () { var a, c, d = this[r].I; for (a in d) if ( Object.prototype.hasOwnProperty.call(d, a) && ((c = d[a]), (this.Ia && c.da.Ja) || c.da.Dd(c.La)) ) return !0; }, Jd: function () { this.Ia && !this[r].rb && this.Ia(!1); }, ja: function () { var a = this[r]; return a.ka || 0 < a.V; }, Rd: function () { this.Ja ? this[r].ka && (this[r].sa = !0) : this.Hc(); }, $c: function (a) { if (a.Hb) { var c = a.subscribe(this.Jd, this, "dirty"), d = a.subscribe(this.Rd, this); return { da: a, s: function () { c.s(); d.s(); }, }; } return a.subscribe(this.Hc, this); }, Hc: function () { var b = this, c = b.throttleEvaluation; c && 0 <= c ? (clearTimeout(this[r].Ic), (this[r].Ic = a.a.setTimeout(function () { b.ha(!0); }, c))) : b.Ia ? b.Ia(!0) : b.ha(!0); }, ha: function (b) { var c = this[r], d = c.Sa, e = !1; if (!c.rb && !c.ra) { if ((c.l && !a.a.Sb(c.l)) || (d && d())) { if (!c.jc) { this.s(); return; } } else c.jc = !1; c.rb = !0; try { e = this.zd(b); } finally { c.rb = !1; } return e; } }, zd: function (b) { var c = this[r], d = !1, e = c.wb ? n : !c.V, d = { qd: this, mb: c.I, Qb: c.V }; a.u.xc({ pd: d, od: ba, o: this, Ya: e }); c.I = {}; c.V = 0; var f = this.yd(c, d); c.V ? (d = this.sb(c.X, f)) : (this.s(), (d = !0)); d && (c.J ? this.Gb() : this.notifySubscribers(c.X, "beforeChange"), (c.X = f), this.notifySubscribers(c.X, "spectate"), !c.J && b && this.notifySubscribers(c.X), this.rc && this.rc()); e && this.notifySubscribers(c.X, "awake"); return d; }, yd: function (b, c) { try { var d = b.Wc; return b.nb ? d.call(b.nb) : d(); } finally { a.u.end(), c.Qb && !b.J && a.a.P(c.mb, aa), (b.sa = b.ka = !1); } }, v: function (a) { var c = this[r]; ((c.ka && (a || !c.V)) || (c.J && this.Xa())) && this.ha(); return c.X; }, ub: function (b) { a.T.fn.ub.call(this, b); this.nc = function () { this[r].J || (this[r].sa ? this.ha() : (this[r].ka = !1)); return this[r].X; }; this.Ia = function (a) { this.pc(this[r].X); this[r].ka = !0; a && (this[r].sa = !0); this.qc(this, !a); }; }, s: function () { var b = this[r]; !b.J && b.I && a.a.P(b.I, function (a, b) { b.s && b.s(); }); b.l && b.Rb && a.a.K.yb(b.l, b.Rb); b.I = n; b.V = 0; b.ra = !0; b.sa = !1; b.ka = !1; b.J = !1; b.l = n; b.Sa = n; b.Wc = n; this.Nc || (b.nb = n); }, }, da = { Qa: function (b) { var c = this, d = c[r]; if (!d.ra && d.J && "change" == b) { d.J = !1; if (d.sa || c.Xa()) (d.I = null), (d.V = 0), c.ha() && c.Gb(); else { var e = []; a.a.P(d.I, function (a, b) { e[b.Ka] = a; }); a.a.D(e, function (a, b) { var e = d.I[a], m = c.$c(e.da); m.Ka = b; m.La = e.La; d.I[a] = m; }); c.Xa() && c.ha() && c.Gb(); } d.ra || c.notifySubscribers(d.X, "awake"); } }, hb: function (b) { var c = this[r]; c.ra || "change" != b || this.Wa("change") || (a.a.P(c.I, function (a, b) { b.s && ((c.I[a] = { da: b.da, Ka: b.Ka, La: b.La }), b.s()); }), (c.J = !0), this.notifySubscribers(n, "asleep")); }, ob: function () { var b = this[r]; b.J && (b.sa || this.Xa()) && this.ha(); return a.T.fn.ob.call(this); }, }, ea = { Qa: function (a) { ("change" != a && "beforeChange" != a) || this.v(); }, }; a.a.Ba && a.a.setPrototypeOf(C, a.T.fn); var N = a.ta.Ma; C[N] = a.o; a.Oc = function (a) { return "function" == typeof a && a[N] === C[N]; }; a.Fd = function (b) { return a.Oc(b) && b[r] && b[r].wb; }; a.b("computed", a.o); a.b("dependentObservable", a.o); a.b("isComputed", a.Oc); a.b("isPureComputed", a.Fd); a.b("computed.fn", C); a.L(C, "peek", C.v); a.L(C, "dispose", C.s); a.L(C, "isActive", C.ja); a.L(C, "getDependenciesCount", C.qa); a.L(C, "getDependencies", C.Va); a.xb = function (b, c) { if ("function" === typeof b) return a.o(b, c, { pure: !0 }); b = a.a.extend({}, b); b.pure = !0; return a.o(b, c); }; a.b("pureComputed", a.xb); (function () { function b(a, f, g) { g = g || new d(); a = f(a); if ( "object" != typeof a || null === a || a === n || a instanceof RegExp || a instanceof Date || a instanceof String || a instanceof Number || a instanceof Boolean ) return a; var h = a instanceof Array ? [] : {}; g.save(a, h); c(a, function (c) { var d = f(a[c]); switch (typeof d) { case "boolean": case "number": case "string": case "function": h[c] = d; break; case "object": case "undefined": var l = g.get(d); h[c] = l !== n ? l : b(d, f, g); } }); return h; } function c(a, b) { if (a instanceof Array) { for (var c = 0; c < a.length; c++) b(c); "function" == typeof a.toJSON && b("toJSON"); } else for (c in a) b(c); } function d() { this.keys = []; this.values = []; } a.ad = function (c) { if (0 == arguments.length) throw Error("When calling ko.toJS, pass the object you want to convert."); return b(c, function (b) { for (var c = 0; a.O(b) && 10 > c; c++) b = b(); return b; }); }; a.toJSON = function (b, c, d) { b = a.ad(b); return a.a.hc(b, c, d); }; d.prototype = { constructor: d, save: function (b, c) { var d = a.a.A(this.keys, b); 0 <= d ? (this.values[d] = c) : (this.keys.push(b), this.values.push(c)); }, get: function (b) { b = a.a.A(this.keys, b); return 0 <= b ? this.values[b] : n; }, }; })(); a.b("toJS", a.ad); a.b("toJSON", a.toJSON); a.Wd = function (b, c, d) { function e(c) { var e = a.xb(b, d).extend({ ma: "always" }), h = e.subscribe(function (a) { a && (h.s(), c(a)); }); e.notifySubscribers(e.v()); return h; } return "function" !== typeof Promise || c ? e(c.bind(d)) : new Promise(e); }; a.b("when", a.Wd); (function () { a.w = { M: function (b) { switch (a.a.R(b)) { case "option": return !0 === b.__ko__hasDomDataOptionValue__ ? a.a.g.get(b, a.c.options.$b) : 7 >= a.a.W ? b.getAttributeNode("value") && b.getAttributeNode("value").specified ? b.value : b.text : b.value; case "select": return 0 <= b.selectedIndex ? a.w.M(b.options[b.selectedIndex]) : n; default: return b.value; } }, cb: function (b, c, d) { switch (a.a.R(b)) { case "option": "string" === typeof c ? (a.a.g.set(b, a.c.options.$b, n), "__ko__hasDomDataOptionValue__" in b && delete b.__ko__hasDomDataOptionValue__, (b.value = c)) : (a.a.g.set(b, a.c.options.$b, c), (b.__ko__hasDomDataOptionValue__ = !0), (b.value = "number" === typeof c ? c : "")); break; case "select": if ("" === c || null === c) c = n; for (var e = -1, f = 0, g = b.options.length, h; f < g; ++f) if (((h = a.w.M(b.options[f])), h == c || ("" === h && c === n))) { e = f; break; } if (d || 0 <= e || (c === n && 1 < b.size)) (b.selectedIndex = e), 6 === a.a.W && a.a.setTimeout(function () { b.selectedIndex = e; }, 0); break; default: if (null === c || c === n) c = ""; b.value = c; } }, }; })(); a.b("selectExtensions", a.w); a.b("selectExtensions.readValue", a.w.M); a.b("selectExtensions.writeValue", a.w.cb); a.m = (function () { function b(b) { b = a.a.Db(b); 123 === b.charCodeAt(0) && (b = b.slice(1, -1)); b += "\n,"; var c = [], d = b.match(e), p, q = [], h = 0; if (1 < d.length) { for (var x = 0, B; (B = d[x]); ++x) { var u = B.charCodeAt(0); if (44 === u) { if (0 >= h) { c.push( p && q.length ? { key: p, value: q.join("") } : { unknown: p || q.join("") } ); p = h = 0; q = []; continue; } } else if (58 === u) { if (!h && !p && 1 === q.length) { p = q.pop(); continue; } } else if ( 47 === u && 1 < B.length && (47 === B.charCodeAt(1) || 42 === B.charCodeAt(1)) ) continue; else 47 === u && x && 1 < B.length ? (u = d[x - 1].match(f)) && !g[u[0]] && ((b = b.substr(b.indexOf(B) + 1)), (d = b.match(e)), (x = -1), (B = "/")) : 40 === u || 123 === u || 91 === u ? ++h : 41 === u || 125 === u || 93 === u ? --h : p || q.length || (34 !== u && 39 !== u) || (B = B.slice(1, -1)); q.push(B); } if (0 < h) throw Error("Unbalanced parentheses, braces, or brackets"); } return c; } var c = ["true", "false", "null", "undefined"], d = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i, e = RegExp( "\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]", "g" ), f = /[\])"'A-Za-z0-9_$]+$/, g = { in: 1, return: 1, typeof: 1 }, h = {}; return { Ra: [], wa: h, ac: b, vb: function (e, f) { function l(b, e) { var f; if (!x) { var k = a.getBindingHandler(b); if (k && k.preprocess && !(e = k.preprocess(e, b, l))) return; if ((k = h[b])) (f = e), 0 <= a.a.A(c, f) ? (f = !1) : ((k = f.match(d)), (f = null === k ? !1 : k[1] ? "Object(" + k[1] + ")" + k[2] : f)), (k = f); k && q.push( "'" + ("string" == typeof h[b] ? h[b] : b) + "':function(_z){" + f + "=_z}" ); } g && (e = "function(){return " + e + " }"); p.push("'" + b + "':" + e); } f = f || {}; var p = [], q = [], g = f.valueAccessors, x = f.bindingParams, B = "string" === typeof e ? b(e) : e; a.a.D(B, function (a) { l(a.key || a.unknown, a.value); }); q.length && l("_ko_property_writers", "{" + q.join(",") + " }"); return p.join(","); }, Id: function (a, b) { for (var c = 0; c < a.length; c++) if (a[c].key == b) return !0; return !1; }, eb: function (b, c, d, e, f) { if (b && a.O(b)) !a.Za(b) || (f && b.v() === e) || b(e); else if ((b = c.get("_ko_property_writers")) && b[d]) b[d](e); }, }; })(); a.b("expressionRewriting", a.m); a.b("expressionRewriting.bindingRewriteValidators", a.m.Ra); a.b("expressionRewriting.parseObjectLiteral", a.m.ac); a.b("expressionRewriting.preProcessBindings", a.m.vb); a.b("expressionRewriting._twoWayBindings", a.m.wa); a.b("jsonExpressionRewriting", a.m); a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", a.m.vb); (function () { function b(a) { return 8 == a.nodeType && g.test(f ? a.text : a.nodeValue); } function c(a) { return 8 == a.nodeType && h.test(f ? a.text : a.nodeValue); } function d(d, e) { for (var f = d, h = 1, g = []; (f = f.nextSibling); ) { if (c(f) && (a.a.g.set(f, k, !0), h--, 0 === h)) return g; g.push(f); b(f) && h++; } if (!e) throw Error("Cannot find closing comment tag to match: " + d.nodeValue); return null; } function e(a, b) { var c = d(a, b); return c ? (0 < c.length ? c[c.length - 1].nextSibling : a.nextSibling) : null; } var f = w && "\x3c!--test--\x3e" === w.createComment("test").text, g = f ? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/ : /^\s*ko(?:\s+([\s\S]+))?\s*$/, h = f ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/, m = { ul: !0, ol: !0 }, k = "__ko_matchedEndComment__"; a.h = { ea: {}, childNodes: function (a) { return b(a) ? d(a) : a.childNodes; }, Ea: function (c) { if (b(c)) { c = a.h.childNodes(c); for (var d = 0, e = c.length; d < e; d++) a.removeNode(c[d]); } else a.a.Tb(c); }, va: function (c, d) { if (b(c)) { a.h.Ea(c); for (var e = c.nextSibling, f = 0, k = d.length; f < k; f++) e.parentNode.insertBefore(d[f], e); } else a.a.va(c, d); }, Vc: function (a, c) { var d; b(a) ? ((d = a.nextSibling), (a = a.parentNode)) : (d = a.firstChild); d ? c !== d && a.insertBefore(c, d) : a.appendChild(c); }, Wb: function (c, d, e) { e ? ((e = e.nextSibling), b(c) && (c = c.parentNode), e ? d !== e && c.insertBefore(d, e) : c.appendChild(d)) : a.h.Vc(c, d); }, firstChild: function (a) { if (b(a)) return !a.nextSibling || c(a.nextSibling) ? null : a.nextSibling; if (a.firstChild && c(a.firstChild)) throw Error("Found invalid end comment, as the first child of " + a); return a.firstChild; }, nextSibling: function (d) { b(d) && (d = e(d)); if (d.nextSibling && c(d.nextSibling)) { var f = d.nextSibling; if (c(f) && !a.a.g.get(f, k)) throw Error( "Found end comment without a matching opening comment, as child of " + d ); return null; } return d.nextSibling; }, Cd: b, Vd: function (a) { return (a = (f ? a.text : a.nodeValue).match(g)) ? a[1] : null; }, Sc: function (d) { if (m[a.a.R(d)]) { var f = d.firstChild; if (f) { do if (1 === f.nodeType) { var k; k = f.firstChild; var h = null; if (k) { do if (h) h.push(k); else if (b(k)) { var g = e(k, !0); g ? (k = g) : (h = [k]); } else c(k) && (h = [k]); while ((k = k.nextSibling)); } if ((k = h)) for (h = f.nextSibling, g = 0; g < k.length; g++) h ? d.insertBefore(k[g], h) : d.appendChild(k[g]); } while ((f = f.nextSibling)); } } }, }; })(); a.b("virtualElements", a.h); a.b("virtualElements.allowedBindings", a.h.ea); a.b("virtualElements.emptyNode", a.h.Ea); a.b("virtualElements.insertAfter", a.h.Wb); a.b("virtualElements.prepend", a.h.Vc); a.b("virtualElements.setDomNodeChildren", a.h.va); (function () { a.ga = function () { this.nd = {}; }; a.a.extend(a.ga.prototype, { nodeHasBindings: function (b) { switch (b.nodeType) { case 1: return null != b.getAttribute("data-bind") || a.j.getComponentNameForNode(b); case 8: return a.h.Cd(b); default: return !1; } }, getBindings: function (b, c) { var d = this.getBindingsString(b, c), d = d ? this.parseBindingsString(d, c, b) : null; return a.j.tc(d, b, c, !1); }, getBindingAccessors: function (b, c) { var d = this.getBindingsString(b, c), d = d ? this.parseBindingsString(d, c, b, { valueAccessors: !0 }) : null; return a.j.tc(d, b, c, !0); }, getBindingsString: function (b) { switch (b.nodeType) { case 1: return b.getAttribute("data-bind"); case 8: return a.h.Vd(b); default: return null; } }, parseBindingsString: function (b, c, d, e) { try { var f = this.nd, g = b + ((e && e.valueAccessors) || ""), h; if (!(h = f[g])) { var m, k = "with($context){with($data||{}){return{" + a.m.vb(b, e) + "}}}"; m = new Function("$context", "$element", k); h = f[g] = m; } return h(c, d); } catch (l) { throw ( ((l.message = "Unable to parse bindings.\nBindings value: " + b + "\nMessage: " + l.message), l) ); } }, }); a.ga.instance = new a.ga(); })(); a.b("bindingProvider", a.ga); (function () { function b(b) { var c = (b = a.a.g.get(b, z)) && b.N; c && ((b.N = null), c.Tc()); } function c(c, d, e) { this.node = c; this.yc = d; this.kb = []; this.H = !1; d.N || a.a.K.za(c, b); e && e.N && (e.N.kb.push(c), (this.Kb = e)); } function d(a) { return function () { return a; }; } function e(a) { return a(); } function f(b) { return a.a.Ga(a.u.G(b), function (a, c) { return function () { return b()[c]; }; }); } function g(b, c, e) { return "function" === typeof b ? f(b.bind(null, c, e)) : a.a.Ga(b, d); } function h(a, b) { return f(this.getBindings.bind(this, a, b)); } function m(b, c) { var d = a.h.firstChild(c); if (d) { var e, f = a.ga.instance, l = f.preprocessNode; if (l) { for (; (e = d); ) (d = a.h.nextSibling(e)), l.call(f, e); d = a.h.firstChild(c); } for (; (e = d); ) (d = a.h.nextSibling(e)), k(b, e); } a.i.ma(c, a.i.H); } function k(b, c) { var d = b, e = 1 === c.nodeType; e && a.h.Sc(c); if (e || a.ga.instance.nodeHasBindings(c)) d = p(c, null, b).bindingContextForDescendants; d && !u[a.a.R(c)] && m(d, c); } function l(b) { var c = [], d = {}, e = []; a.a.P(b, function ca(f) { if (!d[f]) { var k = a.getBindingHandler(f); k && (k.after && (e.push(f), a.a.D(k.after, function (c) { if (b[c]) { if (-1 !== a.a.A(e, c)) throw Error( "Cannot combine the following bindings, because they have a cyclic dependency: " + e.join(", ") ); ca(c); } }), e.length--), c.push({ key: f, Mc: k })); d[f] = !0; } }); return c; } function p(b, c, d) { var f = a.a.g.Ub(b, z, {}), k = f.hd; if (!c) { if (k) throw Error("You cannot apply bindings multiple times to the same element."); f.hd = !0; } k || (f.context = d); f.Zb || (f.Zb = {}); var g; if (c && "function" !== typeof c) g = c; else { var p = a.ga.instance, q = p.getBindingAccessors || h, m = a.$( function () { if ((g = c ? c(d, b) : q.call(p, b, d))) { if (d[t]) d[t](); if (d[B]) d[B](); } return g; }, null, { l: b } ); (g && m.ja()) || (m = null); } var x = d, u; if (g) { var J = function () { return a.a.Ga(m ? m() : g, e); }, r = m ? function (a) { return function () { return e(m()[a]); }; } : function (a) { return g[a]; }; J.get = function (a) { return g[a] && e(r(a)); }; J.has = function (a) { return a in g; }; a.i.H in g && a.i.subscribe(b, a.i.H, function () { var c = (0, g[a.i.H])(); if (c) { var d = a.h.childNodes(b); d.length && c(d, a.Ec(d[0])); } }); a.i.pa in g && ((x = a.i.Cb(b, d)), a.i.subscribe(b, a.i.pa, function () { var c = (0, g[a.i.pa])(); c && a.h.firstChild(b) && c(b); })); f = l(g); a.a.D(f, function (c) { var d = c.Mc.init, e = c.Mc.update, f = c.key; if (8 === b.nodeType && !a.h.ea[f]) throw Error("The binding '" + f + "' cannot be used with virtual elements"); try { "function" == typeof d && a.u.G(function () { var a = d(b, r(f), J, x.$data, x); if (a && a.controlsDescendantBindings) { if (u !== n) throw Error( "Multiple bindings (" + u + " and " + f + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element." ); u = f; } }), "function" == typeof e && a.$( function () { e(b, r(f), J, x.$data, x); }, null, { l: b } ); } catch (k) { throw ( ((k.message = 'Unable to process binding "' + f + ": " + g[f] + '"\nMessage: ' + k.message), k) ); } }); } f = u === n; return { shouldBindDescendants: f, bindingContextForDescendants: f && x }; } function q(b, c) { return b && b instanceof a.fa ? b : new a.fa(b, n, n, c); } var t = a.a.Da("_subscribable"), x = a.a.Da("_ancestorBindingInfo"), B = a.a.Da("_dataDependency"); a.c = {}; var u = { script: !0, textarea: !0, template: !0 }; a.getBindingHandler = function (b) { return a.c[b]; }; var J = {}; a.fa = function (b, c, d, e, f) { function k() { var b = p ? h() : h, f = a.a.f(b); c ? (a.a.extend(l, c), x in c && (l[x] = c[x])) : ((l.$parents = []), (l.$root = f), (l.ko = a)); l[t] = q; g ? (f = l.$data) : ((l.$rawData = b), (l.$data = f)); d && (l[d] = f); e && e(l, c, f); if (c && c[t] && !a.S.o().Vb(c[t])) c[t](); m && (l[B] = m); return l.$data; } var l = this, g = b === J, h = g ? n : b, p = "function" == typeof h && !a.O(h), q, m = f && f.dataDependency; f && f.exportDependencies ? k() : ((q = a.xb(k)), q.v(), q.ja() ? (q.equalityComparer = null) : (l[t] = n)); }; a.fa.prototype.createChildContext = function (b, c, d, e) { !e && c && "object" == typeof c && ((e = c), (c = e.as), (d = e.extend)); if (c && e && e.noChildContext) { var f = "function" == typeof b && !a.O(b); return new a.fa( J, this, null, function (a) { d && d(a); a[c] = f ? b() : b; }, e ); } return new a.fa( b, this, c, function (a, b) { a.$parentContext = b; a.$parent = b.$data; a.$parents = (b.$parents || []).slice(0); a.$parents.unshift(a.$parent); d && d(a); }, e ); }; a.fa.prototype.extend = function (b, c) { return new a.fa( J, this, null, function (c) { a.a.extend(c, "function" == typeof b ? b(c) : b); }, c ); }; var z = a.a.g.Z(); c.prototype.Tc = function () { this.Kb && this.Kb.N && this.Kb.N.sd(this.node); }; c.prototype.sd = function (b) { a.a.Pa(this.kb, b); !this.kb.length && this.H && this.Cc(); }; c.prototype.Cc = function () { this.H = !0; this.yc.N && !this.kb.length && ((this.yc.N = null), a.a.K.yb(this.node, b), a.i.ma(this.node, a.i.pa), this.Tc()); }; a.i = { H: "childrenComplete", pa: "descendantsComplete", subscribe: function (b, c, d, e, f) { var k = a.a.g.Ub(b, z, {}); k.Fa || (k.Fa = new a.T()); f && f.notifyImmediately && k.Zb[c] && a.u.G(d, e, [b]); return k.Fa.subscribe(d, e, c); }, ma: function (b, c) { var d = a.a.g.get(b, z); if (d && ((d.Zb[c] = !0), d.Fa && d.Fa.notifySubscribers(b, c), c == a.i.H)) if (d.N) d.N.Cc(); else if (d.N === n && d.Fa && d.Fa.Wa(a.i.pa)) throw Error( "descendantsComplete event not supported for bindings on this node" ); }, Cb: function (b, d) { var e = a.a.g.Ub(b, z, {}); e.N || (e.N = new c(b, e, d[x])); return d[x] == e ? d : d.extend(function (a) { a[x] = e; }); }, }; a.Td = function (b) { return (b = a.a.g.get(b, z)) && b.context; }; a.ib = function (b, c, d) { 1 === b.nodeType && a.h.Sc(b); return p(b, c, q(d)); }; a.ld = function (b, c, d) { d = q(d); return a.ib(b, g(c, d, b), d); }; a.Oa = function (a, b) { (1 !== b.nodeType && 8 !== b.nodeType) || m(q(a), b); }; a.vc = function (a, b, c) { !v && A.jQuery && (v = A.jQuery); if (2 > arguments.length) { if (((b = w.body), !b)) throw Error( "ko.applyBindings: could not find document.body; has the document been loaded?" ); } else if (!b || (1 !== b.nodeType && 8 !== b.nodeType)) throw Error( "ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node" ); k(q(a, c), b); }; a.Dc = function (b) { return !b || (1 !== b.nodeType && 8 !== b.nodeType) ? n : a.Td(b); }; a.Ec = function (b) { return (b = a.Dc(b)) ? b.$data : n; }; a.b("bindingHandlers", a.c); a.b("bindingEvent", a.i); a.b("bindingEvent.subscribe", a.i.subscribe); a.b("bindingEvent.startPossiblyAsyncContentBinding", a.i.Cb); a.b("applyBindings", a.vc); a.b("applyBindingsToDescendants", a.Oa); a.b("applyBindingAccessorsToNode", a.ib); a.b("applyBindingsToNode", a.ld); a.b("contextFor", a.Dc); a.b("dataFor", a.Ec); })(); (function (b) { function c(c, e) { var k = Object.prototype.hasOwnProperty.call(f, c) ? f[c] : b, l; k ? k.subscribe(e) : ((k = f[c] = new a.T()), k.subscribe(e), d(c, function (b, d) { var e = !(!d || !d.synchronous); g[c] = { definition: b, Gd: e }; delete f[c]; l || e ? k.notifySubscribers(b) : a.na.zb(function () { k.notifySubscribers(b); }); }), (l = !0)); } function d(a, b) { e("getConfig", [a], function (c) { c ? e("loadComponent", [a, c], function (a) { b(a, c); }) : b(null, null); }); } function e(c, d, f, l) { l || (l = a.j.loaders.slice(0)); var g = l.shift(); if (g) { var q = g[c]; if (q) { var t = !1; if ( q.apply( g, d.concat(function (a) { t ? f(null) : null !== a ? f(a) : e(c, d, f, l); }) ) !== b && ((t = !0), !g.suppressLoaderExceptions) ) throw Error( "Component loaders must supply values by invoking the callback, not by returning values synchronously." ); } else e(c, d, f, l); } else f(null); } var f = {}, g = {}; a.j = { get: function (d, e) { var f = Object.prototype.hasOwnProperty.call(g, d) ? g[d] : b; f ? f.Gd ? a.u.G(function () { e(f.definition); }) : a.na.zb(function () { e(f.definition); }) : c(d, e); }, Bc: function (a) { delete g[a]; }, oc: e, }; a.j.loaders = []; a.b("components", a.j); a.b("components.get", a.j.get); a.b("components.clearCachedDefinition", a.j.Bc); })(); (function () { function b(b, c, d, e) { function g() { 0 === --B && e(h); } var h = {}, B = 2, u = d.template; d = d.viewModel; u ? f(c, u, function (c) { a.j.oc("loadTemplate", [b, c], function (a) { h.template = a; g(); }); }) : g(); d ? f(c, d, function (c) { a.j.oc("loadViewModel", [b, c], function (a) { h[m] = a; g(); }); }) : g(); } function c(a, b, d) { if ("function" === typeof b) d(function (a) { return new b(a); }); else if ("function" === typeof b[m]) d(b[m]); else if ("instance" in b) { var e = b.instance; d(function () { return e; }); } else "viewModel" in b ? c(a, b.viewModel, d) : a("Unknown viewModel value: " + b); } function d(b) { switch (a.a.R(b)) { case "script": return a.a.ua(b.text); case "textarea": return a.a.ua(b.value); case "template": if (e(b.content)) return a.a.Ca(b.content.childNodes); } return a.a.Ca(b.childNodes); } function e(a) { return A.DocumentFragment ? a instanceof DocumentFragment : a && 11 === a.nodeType; } function f(a, b, c) { "string" === typeof b.require ? T || A.require ? (T || A.require)([b.require], function (a) { a && "object" === typeof a && a.Xd && a["default"] && (a = a["default"]); c(a); }) : a("Uses require, but no AMD loader is present") : c(b); } function g(a) { return function (b) { throw Error("Component '" + a + "': " + b); }; } var h = {}; a.j.register = function (b, c) { if (!c) throw Error("Invalid configuration for " + b); if (a.j.tb(b)) throw Error("Component " + b + " is already registered"); h[b] = c; }; a.j.tb = function (a) { return Object.prototype.hasOwnProperty.call(h, a); }; a.j.unregister = function (b) { delete h[b]; a.j.Bc(b); }; a.j.Fc = { getConfig: function (b, c) { c(a.j.tb(b) ? h[b] : null); }, loadComponent: function (a, c, d) { var e = g(a); f(e, c, function (c) { b(a, e, c, d); }); }, loadTemplate: function (b, c, f) { b = g(b); if ("string" === typeof c) f(a.a.ua(c)); else if (c instanceof Array) f(c); else if (e(c)) f(a.a.la(c.childNodes)); else if (c.element) if ( ((c = c.element), A.HTMLElement ? c instanceof HTMLElement : c && c.tagName && 1 === c.nodeType) ) f(d(c)); else if ("string" === typeof c) { var h = w.getElementById(c); h ? f(d(h)) : b("Cannot find element with ID " + c); } else b("Unknown element type: " + c); else b("Unknown template value: " + c); }, loadViewModel: function (a, b, d) { c(g(a), b, d); }, }; var m = "createViewModel"; a.b("components.register", a.j.register); a.b("components.isRegistered", a.j.tb); a.b("components.unregister", a.j.unregister); a.b("components.defaultLoader", a.j.Fc); a.j.loaders.push(a.j.Fc); a.j.dd = h; })(); (function () { function b(b, e) { var f = b.getAttribute("params"); if (f) { var f = c.parseBindingsString(f, e, b, { valueAccessors: !0, bindingParams: !0 }), f = a.a.Ga(f, function (c) { return a.o(c, null, { l: b }); }), g = a.a.Ga(f, function (c) { var e = c.v(); return c.ja() ? a.o({ read: function () { return a.a.f(c()); }, write: a.Za(e) && function (a) { c()(a); }, l: b, }) : e; }); Object.prototype.hasOwnProperty.call(g, "$raw") || (g.$raw = f); return g; } return { $raw: {} }; } a.j.getComponentNameForNode = function (b) { var c = a.a.R(b); if ( a.j.tb(c) && (-1 != c.indexOf("-") || "[object HTMLUnknownElement]" == "" + b || (8 >= a.a.W && b.tagName === c)) ) return c; }; a.j.tc = function (c, e, f, g) { if (1 === e.nodeType) { var h = a.j.getComponentNameForNode(e); if (h) { c = c || {}; if (c.component) throw Error( 'Cannot use the "component" binding on a custom element matching a component' ); var m = { name: h, params: b(e, f) }; c.component = g ? function () { return m; } : m; } } return c; }; var c = new a.ga(); 9 > a.a.W && ((a.j.register = (function (a) { return function (b) { return a.apply(this, arguments); }; })(a.j.register)), (w.createDocumentFragment = (function (b) { return function () { var c = b(); a.j.dd; return c; }; })(w.createDocumentFragment))); })(); (function () { function b(b, c, d) { c = c.template; if (!c) throw Error("Component '" + b + "' has no template"); b = a.a.Ca(c); a.h.va(d, b); } function c(a, b, c) { var d = a.createViewModel; return d ? d.call(a, b, c) : b; } var d = 0; a.c.component = { init: function (e, f, g, h, m) { function k() { var a = l && l.dispose; "function" === typeof a && a.call(l); q && q.s(); p = l = q = null; } var l, p, q, t = a.a.la(a.h.childNodes(e)); a.h.Ea(e); a.a.K.za(e, k); a.o( function () { var g = a.a.f(f()), h, u; "string" === typeof g ? (h = g) : ((h = a.a.f(g.name)), (u = a.a.f(g.params))); if (!h) throw Error("No component name specified"); var n = a.i.Cb(e, m), z = (p = ++d); a.j.get(h, function (d) { if (p === z) { k(); if (!d) throw Error("Unknown component '" + h + "'"); b(h, d, e); var f = c(d, u, { element: e, templateNodes: t }); d = n.createChildContext(f, { extend: function (a) { a.$component = f; a.$componentTemplateNodes = t; }, }); f && f.koDescendantsComplete && (q = a.i.subscribe(e, a.i.pa, f.koDescendantsComplete, f)); l = f; a.Oa(d, e); } }); }, null, { l: e } ); return { controlsDescendantBindings: !0 }; }, }; a.h.ea.component = !0; })(); var V = { class: "className", for: "htmlFor" }; a.c.attr = { update: function (b, c) { var d = a.a.f(c()) || {}; a.a.P(d, function (c, d) { d = a.a.f(d); var g = c.indexOf(":"), g = "lookupNamespaceURI" in b && 0 < g && b.lookupNamespaceURI(c.substr(0, g)), h = !1 === d || null === d || d === n; h ? (g ? b.removeAttributeNS(g, c) : b.removeAttribute(c)) : (d = d.toString()); 8 >= a.a.W && c in V ? ((c = V[c]), h ? b.removeAttribute(c) : (b[c] = d)) : h || (g ? b.setAttributeNS(g, c, d) : b.setAttribute(c, d)); "name" === c && a.a.Yc(b, h ? "" : d); }); }, }; (function () { a.c.checked = { after: ["value", "attr"], init: function (b, c, d) { function e() { var e = b.checked, f = g(); if (!a.S.Ya() && (e || (!m && !a.S.qa()))) { var k = a.u.G(c); if (l) { var q = p ? k.v() : k, z = t; t = f; z !== f ? e && (a.a.Na(q, f, !0), a.a.Na(q, z, !1)) : a.a.Na(q, f, e); p && a.Za(k) && k(q); } else h && (f === n ? (f = e) : e || (f = n)), a.m.eb(k, d, "checked", f, !0); } } function f() { var d = a.a.f(c()), e = g(); l ? ((b.checked = 0 <= a.a.A(d, e)), (t = e)) : (b.checked = h && e === n ? !!d : g() === d); } var g = a.xb(function () { if (d.has("checkedValue")) return a.a.f(d.get("checkedValue")); if (q) return d.has("value") ? a.a.f(d.get("value")) : b.value; }), h = "checkbox" == b.type, m = "radio" == b.type; if (h || m) { var k = c(), l = h && a.a.f(k) instanceof Array, p = !(l && k.push && k.splice), q = m || l, t = l ? g() : n; m && !b.name && a.c.uniqueName.init(b, function () { return !0; }); a.o(e, null, { l: b }); a.a.B(b, "click", e); a.o(f, null, { l: b }); k = n; } }, }; a.m.wa.checked = !0; a.c.checkedValue = { update: function (b, c) { b.value = a.a.f(c()); }, }; })(); a.c["class"] = { update: function (b, c) { var d = a.a.Db(a.a.f(c())); a.a.Eb(b, b.__ko__cssValue, !1); b.__ko__cssValue = d; a.a.Eb(b, d, !0); }, }; a.c.css = { update: function (b, c) { var d = a.a.f(c()); null !== d && "object" == typeof d ? a.a.P(d, function (c, d) { d = a.a.f(d); a.a.Eb(b, c, d); }) : a.c["class"].update(b, c); }, }; a.c.enable = { update: function (b, c) { var d = a.a.f(c()); d && b.disabled ? b.removeAttribute("disabled") : d || b.disabled || (b.disabled = !0); }, }; a.c.disable = { update: function (b, c) { a.c.enable.update(b, function () { return !a.a.f(c()); }); }, }; a.c.event = { init: function (b, c, d, e, f) { var g = c() || {}; a.a.P(g, function (g) { "string" == typeof g && a.a.B(b, g, function (b) { var k, l = c()[g]; if (l) { try { var p = a.a.la(arguments); e = f.$data; p.unshift(e); k = l.apply(e, p); } finally { !0 !== k && (b.preventDefault ? b.preventDefault() : (b.returnValue = !1)); } !1 === d.get(g + "Bubble") && ((b.cancelBubble = !0), b.stopPropagation && b.stopPropagation()); } }); }); }, }; a.c.foreach = { Rc: function (b) { return function () { var c = b(), d = a.a.bc(c); if (!d || "number" == typeof d.length) return { foreach: c, templateEngine: a.ba.Ma }; a.a.f(c); return { foreach: d.data, as: d.as, noChildContext: d.noChildContext, includeDestroyed: d.includeDestroyed, afterAdd: d.afterAdd, beforeRemove: d.beforeRemove, afterRender: d.afterRender, beforeMove: d.beforeMove, afterMove: d.afterMove, templateEngine: a.ba.Ma, }; }; }, init: function (b, c) { return a.c.template.init(b, a.c.foreach.Rc(c)); }, update: function (b, c, d, e, f) { return a.c.template.update(b, a.c.foreach.Rc(c), d, e, f); }, }; a.m.Ra.foreach = !1; a.h.ea.foreach = !0; a.c.hasfocus = { init: function (b, c, d) { function e(e) { b.__ko_hasfocusUpdating = !0; var f = b.ownerDocument; if ("activeElement" in f) { var g; try { g = f.activeElement; } catch (l) { g = f.body; } e = g === b; } f = c(); a.m.eb(f, d, "hasfocus", e, !0); b.__ko_hasfocusLastValue = e; b.__ko_hasfocusUpdating = !1; } var f = e.bind(null, !0), g = e.bind(null, !1); a.a.B(b, "focus", f); a.a.B(b, "focusin", f); a.a.B(b, "blur", g); a.a.B(b, "focusout", g); b.__ko_hasfocusLastValue = !1; }, update: function (b, c) { var d = !!a.a.f(c()); b.__ko_hasfocusUpdating || b.__ko_hasfocusLastValue === d || (d ? b.focus() : b.blur(), !d && b.__ko_hasfocusLastValue && b.ownerDocument.body.focus(), a.u.G(a.a.Fb, null, [b, d ? "focusin" : "focusout"])); }, }; a.m.wa.hasfocus = !0; a.c.hasFocus = a.c.hasfocus; a.m.wa.hasFocus = "hasfocus"; a.c.html = { init: function () { return { controlsDescendantBindings: !0 }; }, update: function (b, c) { a.a.fc(b, c()); }, }; (function () { function b(b, d, e) { a.c[b] = { init: function (b, c, h, m, k) { var l, p, q = {}, t, x, n; if (d) { m = h.get("as"); var u = h.get("noChildContext"); n = !(m && u); q = { as: m, noChildContext: u, exportDependencies: n }; } x = (t = "render" == h.get("completeOn")) || h.has(a.i.pa); a.o( function () { var h = a.a.f(c()), m = !e !== !h, u = !p, r; if (n || m !== l) { x && (k = a.i.Cb(b, k)); if (m) { if (!d || n) q.dataDependency = a.S.o(); r = d ? k.createChildContext("function" == typeof h ? h : c, q) : a.S.qa() ? k.extend(null, q) : k; } u && a.S.qa() && (p = a.a.Ca(a.h.childNodes(b), !0)); m ? (u || a.h.va(b, a.a.Ca(p)), a.Oa(r, b)) : (a.h.Ea(b), t || a.i.ma(b, a.i.H)); l = m; } }, null, { l: b } ); return { controlsDescendantBindings: !0 }; }, }; a.m.Ra[b] = !1; a.h.ea[b] = !0; } b("if"); b("ifnot", !1, !0); b("with", !0); })(); a.c.let = { init: function (b, c, d, e, f) { c = f.extend(c); a.Oa(c, b); return { controlsDescendantBindings: !0 }; }, }; a.h.ea.let = !0; var Q = {}; a.c.options = { init: function (b) { if ("select" !== a.a.R(b)) throw Error("options binding applies only to SELECT elements"); for (; 0 < b.length; ) b.remove(0); return { controlsDescendantBindings: !0 }; }, update: function (b, c, d) { function e() { return a.a.jb(b.options, function (a) { return a.selected; }); } function f(a, b, c) { var d = typeof b; return "function" == d ? b(a) : "string" == d ? a[b] : c; } function g(c, d) { if (x && l) a.i.ma(b, a.i.H); else if (t.length) { var e = 0 <= a.a.A(t, a.w.M(d[0])); a.a.Zc(d[0], e); x && !e && a.u.G(a.a.Fb, null, [b, "change"]); } } var h = b.multiple, m = 0 != b.length && h ? b.scrollTop : null, k = a.a.f(c()), l = d.get("valueAllowUnset") && d.has("value"), p = d.get("optionsIncludeDestroyed"); c = {}; var q, t = []; l || (h ? (t = a.a.Mb(e(), a.w.M)) : 0 <= b.selectedIndex && t.push(a.w.M(b.options[b.selectedIndex]))); k && ("undefined" == typeof k.length && (k = [k]), (q = a.a.jb(k, function (b) { return p || b === n || null === b || !a.a.f(b._destroy); })), d.has("optionsCaption") && ((k = a.a.f(d.get("optionsCaption"))), null !== k && k !== n && q.unshift(Q))); var x = !1; c.beforeRemove = function (a) { b.removeChild(a); }; k = g; d.has("optionsAfterRender") && "function" == typeof d.get("optionsAfterRender") && (k = function (b, c) { g(0, c); a.u.G(d.get("optionsAfterRender"), null, [c[0], b !== Q ? b : n]); }); a.a.ec( b, q, function (c, e, g) { g.length && ((t = !l && g[0].selected ? [a.w.M(g[0])] : []), (x = !0)); e = b.ownerDocument.createElement("option"); c === Q ? (a.a.Bb(e, d.get("optionsCaption")), a.w.cb(e, n)) : ((g = f(c, d.get("optionsValue"), c)), a.w.cb(e, a.a.f(g)), (c = f(c, d.get("optionsText"), g)), a.a.Bb(e, c)); return [e]; }, c, k ); if (!l) { var B; h ? (B = t.length && e().length < t.length) : (B = t.length && 0 <= b.selectedIndex ? a.w.M(b.options[b.selectedIndex]) !== t[0] : t.length || 0 <= b.selectedIndex); B && a.u.G(a.a.Fb, null, [b, "change"]); } (l || a.S.Ya()) && a.i.ma(b, a.i.H); a.a.wd(b); m && 20 < Math.abs(m - b.scrollTop) && (b.scrollTop = m); }, }; a.c.options.$b = a.a.g.Z(); a.c.selectedOptions = { init: function (b, c, d) { function e() { var e = c(), f = []; a.a.D(b.getElementsByTagName("option"), function (b) { b.selected && f.push(a.w.M(b)); }); a.m.eb(e, d, "selectedOptions", f); } function f() { var d = a.a.f(c()), e = b.scrollTop; d && "number" == typeof d.length && a.a.D(b.getElementsByTagName("option"), function (b) { var c = 0 <= a.a.A(d, a.w.M(b)); b.selected != c && a.a.Zc(b, c); }); b.scrollTop = e; } if ("select" != a.a.R(b)) throw Error("selectedOptions binding applies only to SELECT elements"); var g; a.i.subscribe( b, a.i.H, function () { g ? e() : (a.a.B(b, "change", e), (g = a.o(f, null, { l: b }))); }, null, { notifyImmediately: !0 } ); }, update: function () {}, }; a.m.wa.selectedOptions = !0; a.c.style = { update: function (b, c) { var d = a.a.f(c() || {}); a.a.P(d, function (c, d) { d = a.a.f(d); if (null === d || d === n || !1 === d) d = ""; if (v) v(b).css(c, d); else if (/^--/.test(c)) b.style.setProperty(c, d); else { c = c.replace(/-(\w)/g, function (a, b) { return b.toUpperCase(); }); var g = b.style[c]; b.style[c] = d; d === g || b.style[c] != g || isNaN(d) || (b.style[c] = d + "px"); } }); }, }; a.c.submit = { init: function (b, c, d, e, f) { if ("function" != typeof c()) throw Error("The value for a submit binding must be a function"); a.a.B(b, "submit", function (a) { var d, e = c(); try { d = e.call(f.$data, b); } finally { !0 !== d && (a.preventDefault ? a.preventDefault() : (a.returnValue = !1)); } }); }, }; a.c.text = { init: function () { return { controlsDescendantBindings: !0 }; }, update: function (b, c) { a.a.Bb(b, c()); }, }; a.h.ea.text = !0; (function () { if (A && A.navigator) { var b = function (a) { if (a) return parseFloat(a[1]); }, c = A.navigator.userAgent, d, e, f, g, h; (d = A.opera && A.opera.version && parseInt(A.opera.version())) || (h = b(c.match(/Edge\/([^ ]+)$/))) || b(c.match(/Chrome\/([^ ]+)/)) || (e = b(c.match(/Version\/([^ ]+) Safari/))) || (f = b(c.match(/Firefox\/([^ ]+)/))) || (g = a.a.W || b(c.match(/MSIE ([^ ]+)/))) || (g = b(c.match(/rv:([^ )]+)/))); } if (8 <= g && 10 > g) var m = a.a.g.Z(), k = a.a.g.Z(), l = function (b) { var c = this.activeElement; (c = c && a.a.g.get(c, k)) && c(b); }, p = function (b, c) { var d = b.ownerDocument; a.a.g.get(d, m) || (a.a.g.set(d, m, !0), a.a.B(d, "selectionchange", l)); a.a.g.set(b, k, c); }; a.c.textInput = { init: function (b, c, k) { function l(c, d) { a.a.B(b, c, d); } function m() { var d = a.a.f(c()); if (null === d || d === n) d = ""; L !== n && d === L ? a.a.setTimeout(m, 4) : b.value !== d && ((y = !0), (b.value = d), (y = !1), (v = b.value)); } function r() { w || ((L = b.value), (w = a.a.setTimeout(z, 4))); } function z() { clearTimeout(w); L = w = n; var d = b.value; v !== d && ((v = d), a.m.eb(c(), k, "textInput", d)); } var v = b.value, w, L, A = 9 == a.a.W ? r : z, y = !1; g && l("keypress", z); 11 > g && l("propertychange", function (a) { y || "value" !== a.propertyName || A(); }); 8 == g && (l("keyup", z), l("keydown", z)); p && (p(b, A), l("dragend", r)); (!g || 9 <= g) && l("input", A); 5 > e && "textarea" === a.a.R(b) ? (l("keydown", r), l("paste", r), l("cut", r)) : 11 > d ? l("keydown", r) : 4 > f ? (l("DOMAutoComplete", z), l("dragdrop", z), l("drop", z)) : h && "number" === b.type && l("keydown", r); l("change", z); l("blur", z); a.o(m, null, { l: b }); }, }; a.m.wa.textInput = !0; a.c.textinput = { preprocess: function (a, b, c) { c("textInput", a); }, }; })(); a.c.uniqueName = { init: function (b, c) { if (c()) { var d = "ko_unique_" + ++a.c.uniqueName.rd; a.a.Yc(b, d); } }, }; a.c.uniqueName.rd = 0; a.c.using = { init: function (b, c, d, e, f) { var g; d.has("as") && (g = { as: d.get("as"), noChildContext: d.get("noChildContext") }); c = f.createChildContext(c, g); a.Oa(c, b); return { controlsDescendantBindings: !0 }; }, }; a.h.ea.using = !0; a.c.value = { init: function (b, c, d) { var e = a.a.R(b), f = "input" == e; if (!f || ("checkbox" != b.type && "radio" != b.type)) { var g = [], h = d.get("valueUpdate"), m = !1, k = null; h && ("string" == typeof h ? (g = [h]) : (g = a.a.wc(h)), a.a.Pa(g, "change")); var l = function () { k = null; m = !1; var e = c(), f = a.w.M(b); a.m.eb(e, d, "value", f); }; !a.a.W || !f || "text" != b.type || "off" == b.autocomplete || (b.form && "off" == b.form.autocomplete) || -1 != a.a.A(g, "propertychange") || (a.a.B(b, "propertychange", function () { m = !0; }), a.a.B(b, "focus", function () { m = !1; }), a.a.B(b, "blur", function () { m && l(); })); a.a.D(g, function (c) { var d = l; a.a.Ud(c, "after") && ((d = function () { k = a.w.M(b); a.a.setTimeout(l, 0); }), (c = c.substring(5))); a.a.B(b, c, d); }); var p; p = f && "file" == b.type ? function () { var d = a.a.f(c()); null === d || d === n || "" === d ? (b.value = "") : a.u.G(l); } : function () { var f = a.a.f(c()), g = a.w.M(b); if (null !== k && f === k) a.a.setTimeout(p, 0); else if (f !== g || g === n) "select" === e ? ((g = d.get("valueAllowUnset")), a.w.cb(b, f, g), g || f === a.w.M(b) || a.u.G(l)) : a.w.cb(b, f); }; if ("select" === e) { var q; a.i.subscribe( b, a.i.H, function () { q ? d.get("valueAllowUnset") ? p() : l() : (a.a.B(b, "change", l), (q = a.o(p, null, { l: b }))); }, null, { notifyImmediately: !0 } ); } else a.a.B(b, "change", l), a.o(p, null, { l: b }); } else a.ib(b, { checkedValue: c }); }, update: function () {}, }; a.m.wa.value = !0; a.c.visible = { update: function (b, c) { var d = a.a.f(c()), e = "none" != b.style.display; d && !e ? (b.style.display = "") : !d && e && (b.style.display = "none"); }, }; a.c.hidden = { update: function (b, c) { a.c.visible.update(b, function () { return !a.a.f(c()); }); }, }; (function (b) { a.c[b] = { init: function (c, d, e, f, g) { return a.c.event.init.call( this, c, function () { var a = {}; a[b] = d(); return a; }, e, f, g ); }, }; })("click"); a.ca = function () {}; a.ca.prototype.renderTemplateSource = function () { throw Error("Override renderTemplateSource"); }; a.ca.prototype.createJavaScriptEvaluatorBlock = function () { throw Error("Override createJavaScriptEvaluatorBlock"); }; a.ca.prototype.makeTemplateSource = function (b, c) { if ("string" == typeof b) { c = c || w; var d = c.getElementById(b); if (!d) throw Error("Cannot find template with ID " + b); return new a.C.F(d); } if (1 == b.nodeType || 8 == b.nodeType) return new a.C.ia(b); throw Error("Unknown template type: " + b); }; a.ca.prototype.renderTemplate = function (a, c, d, e) { a = this.makeTemplateSource(a, e); return this.renderTemplateSource(a, c, d, e); }; a.ca.prototype.isTemplateRewritten = function (a, c) { return !1 === this.allowTemplateRewriting ? !0 : this.makeTemplateSource(a, c).data("isRewritten"); }; a.ca.prototype.rewriteTemplate = function (a, c, d) { a = this.makeTemplateSource(a, d); c = c(a.text()); a.text(c); a.data("isRewritten", !0); }; a.b("templateEngine", a.ca); a.kc = (function () { function b(b, c, d, h) { b = a.m.ac(b); for (var m = a.m.Ra, k = 0; k < b.length; k++) { var l = b[k].key; if (Object.prototype.hasOwnProperty.call(m, l)) { var p = m[l]; if ("function" === typeof p) { if ((l = p(b[k].value))) throw Error(l); } else if (!p) throw Error( "This template engine does not support the '" + l + "' binding within its templates" ); } } d = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + a.m.vb(b, { valueAccessors: !0 }) + " } })()},'" + d.toLowerCase() + "')"; return h.createJavaScriptEvaluatorBlock(d) + c; } var c = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi, d = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g; return { xd: function (b, c, d) { c.isTemplateRewritten(b, d) || c.rewriteTemplate( b, function (b) { return a.kc.Ld(b, c); }, d ); }, Ld: function (a, f) { return a .replace(c, function (a, c, d, e, l) { return b(l, c, d, f); }) .replace(d, function (a, c) { return b(c, "\x3c!-- ko --\x3e", "#comment", f); }); }, md: function (b, c) { return a.aa.Xb(function (d, h) { var m = d.nextSibling; m && m.nodeName.toLowerCase() === c && a.ib(m, b, h); }); }, }; })(); a.b("__tr_ambtns", a.kc.md); (function () { a.C = {}; a.C.F = function (b) { if ((this.F = b)) { var c = a.a.R(b); this.ab = "script" === c ? 1 : "textarea" === c ? 2 : "template" == c && b.content && 11 === b.content.nodeType ? 3 : 4; } }; a.C.F.prototype.text = function () { var b = 1 === this.ab ? "text" : 2 === this.ab ? "value" : "innerHTML"; if (0 == arguments.length) return this.F[b]; var c = arguments[0]; "innerHTML" === b ? a.a.fc(this.F, c) : (this.F[b] = c); }; var b = a.a.g.Z() + "_"; a.C.F.prototype.data = function (c) { if (1 === arguments.length) return a.a.g.get(this.F, b + c); a.a.g.set(this.F, b + c, arguments[1]); }; var c = a.a.g.Z(); a.C.F.prototype.nodes = function () { var b = this.F; if (0 == arguments.length) { var e = a.a.g.get(b, c) || {}, f = e.lb || (3 === this.ab ? b.content : 4 === this.ab ? b : n); if (!f || e.jd) { var g = this.text(); g && g !== e.bb && ((f = a.a.Md(g, b.ownerDocument)), a.a.g.set(b, c, { lb: f, bb: g, jd: !0 })); } return f; } e = arguments[0]; this.ab !== n && this.text(""); a.a.g.set(b, c, { lb: e }); }; a.C.ia = function (a) { this.F = a; }; a.C.ia.prototype = new a.C.F(); a.C.ia.prototype.constructor = a.C.ia; a.C.ia.prototype.text = function () { if (0 == arguments.length) { var b = a.a.g.get(this.F, c) || {}; b.bb === n && b.lb && (b.bb = b.lb.innerHTML); return b.bb; } a.a.g.set(this.F, c, { bb: arguments[0] }); }; a.b("templateSources", a.C); a.b("templateSources.domElement", a.C.F); a.b("templateSources.anonymousTemplate", a.C.ia); })(); (function () { function b(b, c, d) { var e; for (c = a.h.nextSibling(c); b && (e = b) !== c; ) (b = a.h.nextSibling(e)), d(e, b); } function c(c, d) { if (c.length) { var e = c[0], f = c[c.length - 1], g = e.parentNode, h = a.ga.instance, m = h.preprocessNode; if (m) { b(e, f, function (a, b) { var c = a.previousSibling, d = m.call(h, a); d && (a === e && (e = d[0] || b), a === f && (f = d[d.length - 1] || c)); }); c.length = 0; if (!e) return; e === f ? c.push(e) : (c.push(e, f), a.a.Ua(c, g)); } b(e, f, function (b) { (1 !== b.nodeType && 8 !== b.nodeType) || a.vc(d, b); }); b(e, f, function (b) { (1 !== b.nodeType && 8 !== b.nodeType) || a.aa.cd(b, [d]); }); a.a.Ua(c, g); } } function d(a) { return a.nodeType ? a : 0 < a.length ? a[0] : null; } function e(b, e, f, h, m) { m = m || {}; var n = ((b && d(b)) || f || {}).ownerDocument, B = m.templateEngine || g; a.kc.xd(f, B, n); f = B.renderTemplate(f, h, m, n); if ( "number" != typeof f.length || (0 < f.length && "number" != typeof f[0].nodeType) ) throw Error("Template engine must return an array of DOM nodes"); n = !1; switch (e) { case "replaceChildren": a.h.va(b, f); n = !0; break; case "replaceNode": a.a.Xc(b, f); n = !0; break; case "ignoreTargetNode": break; default: throw Error("Unknown renderMode: " + e); } n && (c(f, h), m.afterRender && a.u.G(m.afterRender, null, [f, h[m.as || "$data"]]), "replaceChildren" == e && a.i.ma(b, a.i.H)); return f; } function f(b, c, d) { return a.O(b) ? b() : "function" === typeof b ? b(c, d) : b; } var g; a.gc = function (b) { if (b != n && !(b instanceof a.ca)) throw Error("templateEngine must inherit from ko.templateEngine"); g = b; }; a.dc = function (b, c, h, m, t) { h = h || {}; if ((h.templateEngine || g) == n) throw Error("Set a template engine before calling renderTemplate"); t = t || "replaceChildren"; if (m) { var x = d(m); return a.$( function () { var g = c && c instanceof a.fa ? c : new a.fa(c, null, null, null, { exportDependencies: !0 }), n = f(b, g.$data, g), g = e(m, t, n, g, h); "replaceNode" == t && ((m = g), (x = d(m))); }, null, { Sa: function () { return !x || !a.a.Sb(x); }, l: x && "replaceNode" == t ? x.parentNode : x, } ); } return a.aa.Xb(function (d) { a.dc(b, c, h, d, "replaceNode"); }); }; a.Qd = function (b, d, g, h, m) { function x(b, c) { a.u.G(a.a.ec, null, [h, b, u, g, r, c]); a.i.ma(h, a.i.H); } function r(a, b) { c(b, v); g.afterRender && g.afterRender(b, a); v = null; } function u(a, c) { v = m.createChildContext(a, { as: z, noChildContext: g.noChildContext, extend: function (a) { a.$index = c; z && (a[z + "Index"] = c); }, }); var d = f(b, a, v); return e(h, "ignoreTargetNode", d, v, g); } var v, z = g.as, w = !1 === g.includeDestroyed || (a.options.foreachHidesDestroyed && !g.includeDestroyed); if (w || g.beforeRemove || !a.Pc(d)) return a.$( function () { var b = a.a.f(d) || []; "undefined" == typeof b.length && (b = [b]); w && (b = a.a.jb(b, function (b) { return b === n || null === b || !a.a.f(b._destroy); })); x(b); }, null, { l: h } ); x(d.v()); var A = d.subscribe( function (a) { x(d(), a); }, null, "arrayChange" ); A.l(h); return A; }; var h = a.a.g.Z(), m = a.a.g.Z(); a.c.template = { init: function (b, c) { var d = a.a.f(c()); if ("string" == typeof d || "name" in d) a.h.Ea(b); else if ("nodes" in d) { d = d.nodes || []; if (a.O(d)) throw Error('The "nodes" option must be a plain, non-observable array.'); var e = d[0] && d[0].parentNode; (e && a.a.g.get(e, m)) || ((e = a.a.Yb(d)), a.a.g.set(e, m, !0)); new a.C.ia(b).nodes(e); } else if (((d = a.h.childNodes(b)), 0 < d.length)) (e = a.a.Yb(d)), new a.C.ia(b).nodes(e); else throw Error("Anonymous template defined, but no template content was provided"); return { controlsDescendantBindings: !0 }; }, update: function (b, c, d, e, f) { var g = c(); c = a.a.f(g); d = !0; e = null; "string" == typeof c ? (c = {}) : ((g = "name" in c ? c.name : b), "if" in c && (d = a.a.f(c["if"])), d && "ifnot" in c && (d = !a.a.f(c.ifnot)), d && !g && (d = !1)); "foreach" in c ? (e = a.Qd(g, (d && c.foreach) || [], c, b, f)) : d ? ((d = f), "data" in c && (d = f.createChildContext(c.data, { as: c.as, noChildContext: c.noChildContext, exportDependencies: !0, })), (e = a.dc(g, d, c, b))) : a.h.Ea(b); f = e; (c = a.a.g.get(b, h)) && "function" == typeof c.s && c.s(); a.a.g.set(b, h, !f || (f.ja && !f.ja()) ? n : f); }, }; a.m.Ra.template = function (b) { b = a.m.ac(b); return (1 == b.length && b[0].unknown) || a.m.Id(b, "name") ? null : "This template engine does not support anonymous templates nested within its templates"; }; a.h.ea.template = !0; })(); a.b("setTemplateEngine", a.gc); a.b("renderTemplate", a.dc); a.a.Kc = function (a, c, d) { if (a.length && c.length) { var e, f, g, h, m; for (e = f = 0; (!d || e < d) && (h = a[f]); ++f) { for (g = 0; (m = c[g]); ++g) if (h.value === m.value) { h.moved = m.index; m.moved = h.index; c.splice(g, 1); e = g = 0; break; } e += g; } } }; a.a.Pb = (function () { function b(b, d, e, f, g) { var h = Math.min, m = Math.max, k = [], l, p = b.length, q, n = d.length, r = n - p || 1, v = p + n + 1, u, w, z; for (l = 0; l <= p; l++) for (w = u, k.push((u = [])), z = h(n, l + r), q = m(0, l - 1); q <= z; q++) u[q] = q ? l ? b[l - 1] === d[q - 1] ? w[q - 1] : h(w[q] || v, u[q - 1] || v) + 1 : q + 1 : l + 1; h = []; m = []; r = []; l = p; for (q = n; l || q; ) (n = k[l][q] - 1), q && n === k[l][q - 1] ? m.push((h[h.length] = { status: e, value: d[--q], index: q })) : l && n === k[l - 1][q] ? r.push((h[h.length] = { status: f, value: b[--l], index: l })) : (--q, --l, g.sparse || h.push({ status: "retained", value: d[q] })); a.a.Kc(r, m, !g.dontLimitMoves && 10 * p); return h.reverse(); } return function (a, d, e) { e = "boolean" === typeof e ? { dontLimitMoves: e } : e || {}; a = a || []; d = d || []; return a.length < d.length ? b(a, d, "added", "deleted", e) : b(d, a, "deleted", "added", e); }; })(); a.b("utils.compareArrays", a.a.Pb); (function () { function b(b, c, d, h, m) { var k = [], l = a.$( function () { var l = c(d, m, a.a.Ua(k, b)) || []; 0 < k.length && (a.a.Xc(k, l), h && a.u.G(h, null, [d, l, m])); k.length = 0; a.a.Nb(k, l); }, null, { l: b, Sa: function () { return !a.a.kd(k); }, } ); return { Y: k, $: l.ja() ? l : n }; } var c = a.a.g.Z(), d = a.a.g.Z(); a.a.ec = function (e, f, g, h, m, k) { function l(b) { y = { Aa: b, pb: a.ta(w++) }; v.push(y); r || F.push(y); } function p(b) { y = t[b]; w !== y.pb.v() && D.push(y); y.pb(w++); a.a.Ua(y.Y, e); v.push(y); } function q(b, c) { if (b) for (var d = 0, e = c.length; d < e; d++) a.a.D(c[d].Y, function (a) { b(a, d, c[d].Aa); }); } f = f || []; "undefined" == typeof f.length && (f = [f]); h = h || {}; var t = a.a.g.get(e, c), r = !t, v = [], u = 0, w = 0, z = [], A = [], C = [], D = [], F = [], y, I = 0; if (r) a.a.D(f, l); else { if (!k || (t && t._countWaitingForRemove)) { var E = a.a.Mb(t, function (a) { return a.Aa; }); k = a.a.Pb(E, f, { dontLimitMoves: h.dontLimitMoves, sparse: !0 }); } for (var E = 0, G, H, K; (G = k[E]); E++) switch (((H = G.moved), (K = G.index), G.status)) { case "deleted": for (; u < K; ) p(u++); H === n && ((y = t[u]), y.$ && (y.$.s(), (y.$ = n)), a.a.Ua(y.Y, e).length && (h.beforeRemove && (v.push(y), I++, y.Aa === d ? (y = null) : C.push(y)), y && z.push.apply(z, y.Y))); u++; break; case "added": for (; w < K; ) p(u++); H !== n ? (A.push(v.length), p(H)) : l(G.value); } for (; w < f.length; ) p(u++); v._countWaitingForRemove = I; } a.a.g.set(e, c, v); q(h.beforeMove, D); a.a.D(z, h.beforeRemove ? a.oa : a.removeNode); var M, O, P; try { P = e.ownerDocument.activeElement; } catch (N) {} if (A.length) for (; (E = A.shift()) != n; ) { y = v[E]; for (M = n; E; ) if ((O = v[--E].Y) && O.length) { M = O[O.length - 1]; break; } for (f = 0; (u = y.Y[f]); M = u, f++) a.h.Wb(e, u, M); } for (E = 0; (y = v[E]); E++) { y.Y || a.a.extend(y, b(e, g, y.Aa, m, y.pb)); for (f = 0; (u = y.Y[f]); M = u, f++) a.h.Wb(e, u, M); !y.Ed && m && (m(y.Aa, y.Y, y.pb), (y.Ed = !0), (M = y.Y[y.Y.length - 1])); } P && e.ownerDocument.activeElement != P && P.focus(); q(h.beforeRemove, C); for (E = 0; E < C.length; ++E) C[E].Aa = d; q(h.afterMove, D); q(h.afterAdd, F); }; })(); a.b("utils.setDomNodeChildrenFromArrayMapping", a.a.ec); a.ba = function () { this.allowTemplateRewriting = !1; }; a.ba.prototype = new a.ca(); a.ba.prototype.constructor = a.ba; a.ba.prototype.renderTemplateSource = function (b, c, d, e) { if ((c = (9 > a.a.W ? 0 : b.nodes) ? b.nodes() : null)) return a.a.la(c.cloneNode(!0).childNodes); b = b.text(); return a.a.ua(b, e); }; a.ba.Ma = new a.ba(); a.gc(a.ba.Ma); a.b("nativeTemplateEngine", a.ba); (function () { a.$a = function () { var a = (this.Hd = (function () { if (!v || !v.tmpl) return 0; try { if (0 <= v.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2; } catch (a) {} return 1; })()); this.renderTemplateSource = function (b, e, f, g) { g = g || w; f = f || {}; if (2 > a) throw Error( "Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later." ); var h = b.data("precompiled"); h || ((h = b.text() || ""), (h = v.template( null, "{{ko_with $item.koBindingContext}}" + h + "{{/ko_with}}" )), b.data("precompiled", h)); b = [e.$data]; e = v.extend({ koBindingContext: e }, f.templateOptions); e = v.tmpl(h, b, e); e.appendTo(g.createElement("div")); v.fragments = {}; return e; }; this.createJavaScriptEvaluatorBlock = function (a) { return "{{ko_code ((function() { return " + a + " })()) }}"; }; this.addTemplate = function (a, b) { w.write(""; }; SurveyTemplateText.prototype.replaceText = function ( replaceText, id, questionType ) { if (questionType === void 0) { questionType = null; } var posId = this.getId(id, questionType); var pos = this.text.indexOf(posId); if (pos < 0) { this.addText(replaceText, id, questionType); return; } pos = this.text.indexOf(">", pos); if (pos < 0) return; var startPos = pos + 1; var endString = ""; pos = this.text.indexOf(endString, startPos); if (pos < 0) return; this.text = this.text.substring(0, startPos) + replaceText + this.text.substring(pos); }; SurveyTemplateText.prototype.getId = function (id, questionType) { var result = 'id="survey-' + id; if (questionType) { result += "-" + questionType; } return result + '"'; }; Object.defineProperty(SurveyTemplateText.prototype, "text", { get: function () { return koTemplate; }, set: function (value) { koTemplate = value; }, enumerable: false, configurable: true, }); return SurveyTemplateText; })(); /***/ }, /***/ "./src/knockout/templates/comment.html": /*!*********************************************!*\ !*** ./src/knockout/templates/comment.html ***! \*********************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/flowpanel.html": /*!***********************************************!*\ !*** ./src/knockout/templates/flowpanel.html ***! \***********************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n'; /***/ }, /***/ "./src/knockout/templates/header.html": /*!********************************************!*\ !*** ./src/knockout/templates/header.html ***! \********************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/index.html": /*!*******************************************!*\ !*** ./src/knockout/templates/index.html ***! \*******************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n'; /***/ }, /***/ "./src/knockout/templates/page.html": /*!******************************************!*\ !*** ./src/knockout/templates/page.html ***! \******************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = "\n"; /***/ }, /***/ "./src/knockout/templates/panel.html": /*!*******************************************!*\ !*** ./src/knockout/templates/panel.html ***! \*******************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = "\n"; /***/ }, /***/ "./src/knockout/templates/popup-pointer.html": /*!***************************************************!*\ !*** ./src/knockout/templates/popup-pointer.html ***! \***************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ''; /***/ }, /***/ "./src/knockout/templates/question-boolean.html": /*!******************************************************!*\ !*** ./src/knockout/templates/question-boolean.html ***! \******************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ''; /***/ }, /***/ "./src/knockout/templates/question-buttongroup.html": /*!**********************************************************!*\ !*** ./src/knockout/templates/question-buttongroup.html ***! \**********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-checkbox.html": /*!*******************************************************!*\ !*** ./src/knockout/templates/question-checkbox.html ***! \*******************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n'; /***/ }, /***/ "./src/knockout/templates/question-comment.html": /*!******************************************************!*\ !*** ./src/knockout/templates/question-comment.html ***! \******************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/question-composite.html": /*!********************************************************!*\ !*** ./src/knockout/templates/question-composite.html ***! \********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = "\n"; /***/ }, /***/ "./src/knockout/templates/question-custom.html": /*!*****************************************************!*\ !*** ./src/knockout/templates/question-custom.html ***! \*****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-dropdown.html": /*!*******************************************************!*\ !*** ./src/knockout/templates/question-dropdown.html ***! \*******************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = "\n"; /***/ }, /***/ "./src/knockout/templates/question-empty.html": /*!****************************************************!*\ !*** ./src/knockout/templates/question-empty.html ***! \****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-errors.html": /*!*****************************************************!*\ !*** ./src/knockout/templates/question-errors.html ***! \*****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ''; /***/ }, /***/ "./src/knockout/templates/question-expression.html": /*!*********************************************************!*\ !*** ./src/knockout/templates/question-expression.html ***! \*********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-file.html": /*!***************************************************!*\ !*** ./src/knockout/templates/question-file.html ***! \***************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n\n'; /***/ }, /***/ "./src/knockout/templates/question-html.html": /*!***************************************************!*\ !*** ./src/knockout/templates/question-html.html ***! \***************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-image.html": /*!****************************************************!*\ !*** ./src/knockout/templates/question-image.html ***! \****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-imagepicker.html": /*!**********************************************************!*\ !*** ./src/knockout/templates/question-imagepicker.html ***! \**********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-matrix.html": /*!*****************************************************!*\ !*** ./src/knockout/templates/question-matrix.html ***! \*****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n\n'; /***/ }, /***/ "./src/knockout/templates/question-matrixdropdown.html": /*!*************************************************************!*\ !*** ./src/knockout/templates/question-matrixdropdown.html ***! \*************************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ''; /***/ }, /***/ "./src/knockout/templates/question-matrixdynamic.html": /*!************************************************************!*\ !*** ./src/knockout/templates/question-matrixdynamic.html ***! \************************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n'; /***/ }, /***/ "./src/knockout/templates/question-multipletext.html": /*!***********************************************************!*\ !*** ./src/knockout/templates/question-multipletext.html ***! \***********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-paneldynamic-navigator.html": /*!*********************************************************************!*\ !*** ./src/knockout/templates/question-paneldynamic-navigator.html ***! \*********************************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-paneldynamic.html": /*!***********************************************************!*\ !*** ./src/knockout/templates/question-paneldynamic.html ***! \***********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/question-radiogroup.html": /*!*********************************************************!*\ !*** ./src/knockout/templates/question-radiogroup.html ***! \*********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n'; /***/ }, /***/ "./src/knockout/templates/question-ranking.html": /*!******************************************************!*\ !*** ./src/knockout/templates/question-ranking.html ***! \******************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n\n\n'; /***/ }, /***/ "./src/knockout/templates/question-rating.html": /*!*****************************************************!*\ !*** ./src/knockout/templates/question-rating.html ***! \*****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/question-signaturepad.html": /*!***********************************************************!*\ !*** ./src/knockout/templates/question-signaturepad.html ***! \***********************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ''; /***/ }, /***/ "./src/knockout/templates/question-tagbox.html": /*!*****************************************************!*\ !*** ./src/knockout/templates/question-tagbox.html ***! \*****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/question-text.html": /*!***************************************************!*\ !*** ./src/knockout/templates/question-text.html ***! \***************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = "\n"; /***/ }, /***/ "./src/knockout/templates/question.html": /*!**********************************************!*\ !*** ./src/knockout/templates/question.html ***! \**********************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = "\n"; /***/ }, /***/ "./src/knockout/templates/questioncontent.html": /*!*****************************************************!*\ !*** ./src/knockout/templates/questioncontent.html ***! \*****************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/questiontitle.html": /*!***************************************************!*\ !*** ./src/knockout/templates/questiontitle.html ***! \***************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/row.html": /*!*****************************************!*\ !*** ./src/knockout/templates/row.html ***! \*****************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/rows.html": /*!******************************************!*\ !*** ./src/knockout/templates/rows.html ***! \******************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = ""; /***/ }, /***/ "./src/knockout/templates/string.html": /*!********************************************!*\ !*** ./src/knockout/templates/string.html ***! \********************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ "./src/knockout/templates/timerpanel.html": /*!************************************************!*\ !*** ./src/knockout/templates/timerpanel.html ***! \************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = '\n'; /***/ }, /***/ knockout: /*!********************************************************************************************!*\ !*** external {"root":"ko","commonjs2":"knockout","commonjs":"knockout","amd":"knockout"} ***! \********************************************************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_knockout__; /***/ }, /***/ "survey-core": /*!*********************************************************************************************************!*\ !*** external {"root":"Survey","commonjs2":"survey-core","commonjs":"survey-core","amd":"survey-core"} ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ function (module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_survey_core__; /***/ }, /******/ } ); } ); })(surveyKnockoutUi); var surveyKnockoutUiExports = surveyKnockoutUi.exports; // import SurveyJS dependencies: survey-core and survey-knockout-ui (UI theme): https://surveyjs.io/documentation/surveyjs-architecture#surveyjs-packages const info = { name: "survey", parameters: { /** * A SurveyJS survey model defined as a JavaScript object. * See: https://surveyjs.io/form-library/documentation/design-survey/create-a-simple-survey#define-a-static-survey-model-in-json */ survey_json: { type: jspsych.ParameterType.OBJECT, default: {}, pretty_name: "Survey JSON object", }, /** * A SurveyJS survey model defined as a function. The function receives an empty SurveyJS survey object as an argument. * See: https://surveyjs.io/form-library/documentation/design-survey/create-a-simple-survey#create-or-change-a-survey-model-dynamically */ survey_function: { type: jspsych.ParameterType.FUNCTION, default: null, pretty_name: "Survey function", }, /** * A function that can be used to validate responses. This function is called whenever the SurveyJS onValidateQuestion event occurs. * See: https://surveyjs.io/form-library/documentation/data-validation#implement-custom-client-side-validation */ validation_function: { type: jspsych.ParameterType.FUNCTION, default: null, pretty_name: "Validation function", }, }, }; // Define the mapping between custom jsPsych class names (jspsych-*) and class names provided by SurveyJS. // See here for full list: https://github.com/surveyjs/survey-library/blob/master/src/defaultCss/defaultV2Css.ts. // To modify the survey plugin CSS: // (1) search for the CSS selector that you want to modify, // (2) look it up and get the associated ID (note that some of these are nested) // (3) if the ID isn't already listed as a key here, add it and use a new jspsych class name as the value // (4) in survey.scss, use the jspsych class name as the selector and add/modify the rule const jsPsychSurveyCssClassMap = { body: "jspsych-body", bodyContainer: "jspsych-body-container", question: { content: "jspsych-question-content", mainRoot: "jspsych-question-root", }, page: { root: "jspsych-page", }, footer: "jspsych-footer", navigation: { complete: "jspsych-nav-complete", }, rowMultiple: "jspsych-row-multiple", }; /** * **survey** * * jsPsych plugin for presenting complex questionnaires using the SurveyJS library * * @author Becky Gilbert * @see {@link https://www.jspsych.org/plugins/survey/ survey plugin documentation on jspsych.org} */ class SurveyPlugin { constructor(jsPsych) { this.jsPsych = jsPsych; this.jsPsych = jsPsych; } applyStyles(survey) { // TO DO: this method of applying custom styles is deprecated, but I'm // saving this here for reference while we make decisions about default style // import { StylesManager } from "survey-core"; // const colors = StylesManager.ThemeColors["default"]; // colors["$background-dim"] = "#f3f3f3"; // colors["$body-background-color"] = "white"; // colors["$body-container-background-color"] = "white"; // colors["$border-color"] = "#e7e7e7"; // colors["$disable-color"] = "#dbdbdb"; // colors["$disabled-label-color"] = "rgba(64, 64, 64, 0.5)"; // colors["$disabled-slider-color"] = "#cfcfcf"; // colors["$disabled-switch-color"] = "#9f9f9f"; // colors["$error-background-color"] = "#fd6575"; // colors["$error-color"] = "#ed5565"; // colors["$foreground-disabled"] = "#161616"; // //colors['$foreground-light'] = "orange" // colors["$header-background-color"] = "white"; // colors["$header-color"] = "#6d7072"; // colors["$inputs-background-color"] = "white"; // colors["$main-color"] = "#919191"; // colors["$main-hover-color"] = "#6b6b6b"; // colors["$progress-buttons-color"] = "#8dd9ca"; // colors["$progress-buttons-line-color"] = "#d4d4d4"; // colors["$progress-text-color"] = "#9d9d9d"; // colors["$slider-color"] = "white"; // colors["$text-color"] = "#6d7072"; // colors["$text-input-color"] = "#6d7072"; // StylesManager.applyTheme(); // Updated method for creating custom themes // https://surveyjs.io/form-library/documentation/manage-default-themes-and-styles#create-a-custom-theme //colors["$border-color"] = "#e7e7e7"; survey.applyTheme({ cssVariables: { "--sjs-general-backcolor": "rgba(255, 255, 255, 1)", "--sjs-general-backcolor-dim": "rgba(255, 255, 255, 1)", "--sjs-general-backcolor-dim-light": "rgba(249, 249, 249, 1)", "--sjs-general-forecolor": "rgba(0, 0, 0, 0.91)", "--sjs-general-forecolor-light": "rgba(0, 0, 0, 0.45)", "--sjs-general-dim-forecolor": "rgba(0, 0, 0, 0.91)", "--sjs-general-dim-forecolor-light": "rgba(0, 0, 0, 0.45)", "--sjs-primary-backcolor": "#474747", "--sjs-primary-backcolor-light": "rgba(0, 0, 0, 0.1)", "--sjs-primary-backcolor-dark": "#000000", "--sjs-primary-forecolor": "rgba(255, 255, 255, 1)", "--sjs-primary-forecolor-light": "rgba(255, 255, 255, 0.25)", // all shadow and border variables below affect the question/panel borders "--sjs-shadow-small": "0px 0px 0px 1px rgba(0, 0, 0, 0.15)", "--sjs-shadow-small-reset": "0px 0px 0px 0px rgba(0, 0, 0, 0.15)", "--sjs-shadow-medium": "0px 0px 0px 1px rgba(0, 0, 0, 0.1)", "--sjs-shadow-large": "0px 8px 16px 0px rgba(0, 0, 0, 0.05)", "--sjs-shadow-inner": "0px 0px 0px 1px rgba(0, 0, 0, 0.15)", "--sjs-shadow-inner-reset": "0px 0px 0px 0px rgba(0, 0, 0, 0.15)", "--sjs-border-light": "rgba(0, 0, 0, 0.15)", "--sjs-border-default": "rgba(0, 0, 0, 0.15)", "--sjs-border-inside": " rgba(0, 0, 0, 0.16)", }, themeName: "plain", colorPalette: "light", isPanelless: false, }); } trial(display_element, trial) { // check for empty JSON and no survey function if (JSON.stringify(trial.survey_json) === "{}" && trial.survey_function === null) { console.error( "Survey plugin warning: you must define the survey using a non-empty JSON object and/or a survey function." ); } this.survey = new surveyKnockoutUiExports.Survey(trial.survey_json); if (trial.survey_function !== null) { trial.survey_function(this.survey); } this.applyStyles(this.survey); // customize colors // apply our custom CSS class names this.survey.css = jsPsychSurveyCssClassMap; if (trial.validation_function) { this.survey.onValidateQuestion.add(trial.validation_function); } this.survey.onComplete.add((sender, options) => { var _a; // add default values to any questions without responses const all_questions = sender.getAllQuestions(); const data_names = Object.keys(sender.data); for (const question of all_questions) { if (!data_names.includes(question.name)) { sender.mergeData({ [question.name]: (_a = question.defaultValue) !== null && _a !== void 0 ? _a : null, }); } } // clear display and reset flex on jspsych-content-wrapper display_element.innerHTML = ""; document.querySelector(".jspsych-content-wrapper").style.display = "flex"; // finish trial and save data this.jsPsych.finishTrial({ rt: Math.round(performance.now() - this.start_time), response: sender.data, }); }); // remove flex display from jspsych-content-wrapper to get formatting to work document.querySelector(".jspsych-content-wrapper").style.display = "block"; this.survey.render(display_element); this.start_time = performance.now(); } } SurveyPlugin.info = info; return SurveyPlugin; })(jsPsychModule); //# sourceMappingURL=index.browser.js.map