(function(n){function b(n){f(this,n),this.assertions=[],this.testNumber=++b.count}function ct(){t.autorun=!0,t.currentModule&&s("moduleDone",i,{name:t.currentModule,failed:t.moduleStats.bad,passed:t.moduleStats.all-t.moduleStats.bad,total:t.moduleStats.all}),delete t.previousModule;var r,f,o=u("qunit-banner"),a=u("qunit-tests"),c=+new e-t.started,l=t.stats.all-t.stats.bad,v=["Tests completed in ",c," milliseconds.
","",l,"<\/span> assertions of ",t.stats.all,"<\/span> passed, ",t.stats.bad,"<\/span> failed."].join("");if(o&&(o.className=t.stats.bad?"qunit-fail":"qunit-pass"),a&&(u("qunit-testresult").innerHTML=v),t.altertitle&&typeof document!="undefined"&&document.title&&(document.title=[t.stats.bad?"✖":"✔",document.title.replace(/^[\u2714\u2716] /i,"")].join(" ")),t.reorder&&h.sessionStorage&&t.stats.bad===0)for(r=0;r&]/g,function(n){switch(n){case"'":return"'";case'"':return""";case"<":return"<";case">":return">";case"&":return"&"}})):""}function v(n,i){t.queue.push(n),t.autorun&&!t.blocking&&d(i)}function d(n){function i(){d(n)}var r=(new e).getTime();for(t.depth=t.depth?t.depth+1:1;t.queue.length&&!t.blocking;)if(!h.setTimeout||t.updateRate<=0||(new e).getTime()-r0&&i.pushFailure("Introduced global variable(s): "+n.join(", ")),r=et(u,t.pollution),r.length>0&&i.pushFailure("Deleted global variable(s): "+r.join(", "))}function et(n,t){for(var r,u=n.slice(),i=0;i-1}function rt(n,t){it(n,t)||(n.className+=(n.className?" ":"")+t)}function ot(n,t){for(var i=" "+n.className+" ";i.indexOf(" "+t+" ")>-1;)i=i.replace(" "+t+" "," ");n.className=typeof i.trim=="function"?i.trim():i.replace(/^\s+|\s+$/g,"")}function u(n){return!!(typeof document!="undefined"&&document&&document.getElementById)&&document.getElementById(n)}function a(n){return function(i){t[n].push(i)}}function s(n,r,u){var f,e;if(i.hasOwnProperty(n))i[n].call(r,u);else for(e=t[n],f=0;f"+this.nameHtml),this.async&&i.stop(),this.callbackStarted=+new e,t.notrycatch){this.callback.call(this.testEnvironment,i.assert),this.callbackRuntime=+new e-this.callbackStarted;return}try{this.callback.call(this.testEnvironment,i.assert),this.callbackRuntime=+new e-this.callbackStarted}catch(n){this.callbackRuntime=+new e-this.callbackStarted,i.pushFailure("Died on test #"+(this.assertions.length+1)+" "+this.stack+": "+(n.message||n),k(n,0)),tt(),t.blocking&&i.start()}},teardown:function(){if(t.current=this,t.notrycatch){typeof this.callbackRuntime=="undefined"&&(this.callbackRuntime=+new e-this.callbackStarted),this.testEnvironment.teardown.call(this.testEnvironment,i.assert);return}try{this.testEnvironment.teardown.call(this.testEnvironment,i.assert)}catch(n){i.pushFailure("Teardown failed on "+this.testName+": "+(n.message||n),k(n,1))}lt()},finish:function(){t.current=this,t.requireExpects&&this.expected===null?i.pushFailure("Expected number of assertions to be defined, but expect() was not called.",this.stack):this.expected!==null&&this.expected!==this.assertions.length?i.pushFailure("Expected "+this.expected+" assertions, but "+this.assertions.length+" were run",this.stack):this.expected!==null||this.assertions.length||i.pushFailure("Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.",this.stack);var o,a,p,c,y,r,v,b=this,w=0,f=0,k=u("qunit-tests");if(this.runtime=+new e-this.started,t.stats.all+=this.assertions.length,t.moduleStats.all+=this.assertions.length,k){for(v=document.createElement("ol"),v.className="qunit-assert-list",o=0;o("+f+"<\/b>, "+w+"<\/b>, "+this.assertions.length+")<\/b>",l(c,"click",function(){var n=c.parentNode.lastChild,t=it(n,"qunit-collapsed");(t?ot:rt)(n,"qunit-collapsed")}),l(c,"dblclick",function(t){var r=t&&t.target?t.target:n.event.srcElement;(r.nodeName.toLowerCase()==="span"||r.nodeName.toLowerCase()==="b")&&(r=r.parentNode),n.location&&r.nodeName.toLowerCase()==="strong"&&(n.location=i.url({testNumber:b.testNumber}))}),y=document.createElement("span"),y.className="runtime",y.innerHTML=this.runtime+" ms",r=u(this.id),r.className=f?"fail":"pass",r.removeChild(r.firstChild),p=r.firstChild,r.appendChild(c),r.appendChild(p),r.appendChild(y),r.appendChild(v)}else for(o=0;o";(arguments.length===2&&(u=i,i=null),t.currentModule&&(o=""+r(t.currentModule)+"<\/span>: "+o),e=new b({nameHtml:o,testName:n,expected:i,async:f,callback:u,module:t.currentModule,moduleTestEnvironment:t.currentModuleTestEnvironment,stack:c(2)}),nt(e))&&e.queue()},expect:function(n){if(arguments.length===1)t.current.expected=n;else return t.current.expected},start:function(n){if(t.semaphore===undefined){i.begin(function(){w(function(){i.start(n)})});return}if(t.semaphore-=n||1,!(t.semaphore>0)){if(t.semaphore<0){t.semaphore=0,i.pushFailure("Called start() while already started (QUnit.config.semaphore was 0 already)",null,c(2));return}h.setTimeout?w(function(){t.semaphore>0||(t.timeout&&clearTimeout(t.timeout),t.blocking=!1,d(!0))},13):(t.blocking=!1,d(!0))}},stop:function(n){t.semaphore+=n||1,t.blocking=!0,t.testTimeout&&h.setTimeout&&(clearTimeout(t.timeout),t.timeout=w(function(){i.ok(!1,"Test timed out"),t.semaphore=1,i.start()},t.testTimeout))}},p={ok:function(n,u){if(!t.current)throw new Error("ok() assertion outside test context, was "+c(2));n=!!n,u=u||(n?"okay":"failed");var f,e={module:t.current.module,name:t.current.testName,result:n,message:u};u=""+r(u)+"<\/span>",n||(f=c(2),f&&(e.source=f,u+="
Source: <\/th>
"+r(f)+"<\/pre><\/td><\/tr><\/table>")),s("log",i,e),t.current.assertions.push({result:n,message:u})},equal:function(n,t,r){i.push(t==n,n,t,r)},notEqual:function(n,t,r){i.push(t!=n,n,t,r)},propEqual:function(n,t,r){n=y(n),t=y(t),i.push(i.equiv(n,t),n,t,r)},notPropEqual:function(n,t,r){n=y(n),t=y(t),i.push(!i.equiv(n,t),n,t,r)},deepEqual:function(n,t,r){i.push(i.equiv(n,t),n,t,r)},notDeepEqual:function(n,t,r){i.push(!i.equiv(n,t),n,t,r)},strictEqual:function(n,t,r){i.push(t===n,n,t,r)},notStrictEqual:function(n,t,r){i.push(t!==n,n,t,r)},throws:function(n,r,u){var f,o=r,e=!1;typeof r=="string"&&(u=r,r=null),t.current.ignoreGlobalErrors=!0;try{n.call(t.current.testEnvironment)}catch(s){f=s}t.current.ignoreGlobalErrors=!1,f?(r?i.objectType(r)==="regexp"?e=r.test(ht(f)):f instanceof r?e=!0:r.call({},f)===!0&&(o=null,e=!0):(e=!0,o=null),i.push(e,f,o,u)):i.pushFailure(u,null,"No exception was thrown.")}},f(i,p),i.raises=p.throws,i.equals=function(){i.push(!1,!1,!1,"QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead")},i.same=function(){i.push(!1,!1,!1,"QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead")},function(){function n(){}n.prototype=i,i=new n,i.constructor=n}(),t={queue:[],blocking:!0,hidepassed:!1,reorder:!0,altertitle:!0,requireExpects:!1,urlConfig:[{id:"noglobals",label:"Check for Globals",tooltip:"Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."},{id:"notrycatch",label:"No try-catch",tooltip:"Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."}],modules:{},begin:[],done:[],log:[],testStart:[],testDone:[],moduleStart:[],moduleDone:[]},typeof exports=="undefined"&&(f(n,i.constructor.prototype),n.QUnit=i),function(){var f,o=n.location||{search:"",protocol:"file:"},e=o.search.slice(1).split("&"),s=e.length,u={},r;if(e[0])for(f=0;f"+r(document.title)+"<\/h1>

<\/h2>
<\/div>

<\/h2>
    <\/ol>"),i=u("qunit-tests"),o=u("qunit-banner"),n=u("qunit-testresult"),i&&(i.innerHTML=""),o&&(o.className=""),n&&n.parentNode.removeChild(n),i&&(n=document.createElement("p"),n.id="qunit-testresult",n.className="result",i.parentNode.insertBefore(n,i),n.innerHTML="Running...
     ")},reset:function(){var n=u("qunit-fixture");n&&(n.innerHTML=t.fixture)},triggerEvent:function(n,t,i){document.createEvent?(i=document.createEvent("MouseEvents"),i.initMouseEvent(t,!0,!0,n.ownerDocument.defaultView,0,0,0,0,0,!1,!1,!1,!1,0,null),n.dispatchEvent(i)):n.fireEvent&&n.fireEvent("on"+t)},is:function(n,t){return i.objectType(t)===n},objectType:function(n){if(typeof n=="undefined")return"undefined";if(n===null)return"null";var t=ft.call(n).match(/^\[object\s(.*)\]$/),i=t&&t[1]||"";switch(i){case"Number":return isNaN(n)?"nan":"number";case"String":case"Boolean":case"Array":case"Date":case"RegExp":case"Function":return i.toLowerCase()}return typeof n=="object"?"object":undefined},push:function(n,u,f,e){if(!t.current)throw new Error("assertion outside test context, was "+c());var o,h,l={module:t.current.module,name:t.current.testName,result:n,message:e,actual:u,expected:f};e=r(e)||(n?"okay":"failed"),e=""+e+"<\/span>",o=e,n||(f=r(i.jsDump.parse(f)),u=r(i.jsDump.parse(u)),o+="
    Expected: <\/th>
    "+f+"<\/pre><\/td><\/tr>",u!==f&&(o+="
    Result: <\/th>
    "+u+"<\/pre><\/td><\/tr>",o+="
    Diff: <\/th>
    "+i.diff(f,u)+"<\/pre><\/td><\/tr>"),h=c(),h&&(l.source=h,o+="
    Source: <\/th>
    "+r(h)+"<\/pre><\/td><\/tr>"),o+="<\/table>"),s("log",i,l),t.current.assertions.push({result:!!n,message:o})},pushFailure:function(n,u,f){if(!t.current)throw new Error("pushFailure() assertion outside test context, was "+c(2));var e,o={module:t.current.module,name:t.current.testName,result:!1,message:n};n=r(n)||"error",n=""+n+"<\/span>",e=n,e+="",f&&(e+="
    Result: <\/th>
    "+r(f)+"<\/pre><\/td><\/tr>"),u&&(o.source=u,e+="
    Source: <\/th>
    "+r(u)+"<\/pre><\/td><\/tr>"),e+="<\/table>",s("log",i,o),t.current.assertions.push({result:!1,message:e})},url:function(t){t=f(f({},i.urlParams),t);var r,u="?";for(r in t)o.call(t,r)&&(u+=encodeURIComponent(r)+"="+encodeURIComponent(t[r])+"&");return n.location.protocol+"//"+n.location.host+n.location.pathname+u.slice(0,-1)},extend:f,id:u,addEvent:l,addClass:rt,hasClass:it,removeClass:ot}),f(i.constructor.prototype,{begin:a("begin"),done:a("done"),log:a("log"),testStart:a("testStart"),testDone:a("testDone"),moduleStart:a("moduleStart"),moduleDone:a("moduleDone")}),(typeof document=="undefined"||document.readyState==="complete")&&(t.autorun=!0),i.load=function(){s("begin",i,{});var w,c,o,p,it,d,g,a,nt,e,b,rt,v,tt=0,y=[],k="",ut="",ft=f({},t);for(i.init(),f(t,ft),t.blocking=!1,it=t.urlConfig.length,o=0;o