МАОН первой серии
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2252 lines
152KB

  1. var модуль = gitjs.мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  2. // // // //
  3. // MARK: https://bitbucket.org/gitjs/jquery/raw/3.5.1/0000
  4. // // // //
  5. /*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
  6. !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
  7. // // // //
  8. // MARK: https://bitbucket.org/gitjs/uikit/raw/3.2.0/0000
  9. // // // //
  10. // MARK: /🎬.js
  11. УстановитьUIkit = function(мир)
  12. {
  13. var css = модуль.содержимое["/uikit_3.2.0_uikit.min.css"];
  14. var js = модуль.содержимое["/uikit_3.2.0_uikit.min.js"];
  15. var iconsJS = модуль.содержимое["/uikit_3.2.0_uikit-icons.min.js"];
  16. // Применить стиль.
  17. var style = document.createElement("style");
  18. document.head.appendChild(style);
  19. style.innerHTML = css;
  20. function загрузитьСкрипт(код)
  21. {
  22. var скрипт = document.createElement("script");
  23. скрипт.innerHTML = код;
  24. document.body.appendChild(скрипт);
  25. }
  26. загрузитьСкрипт(js);
  27. загрузитьСкрипт(iconsJS);
  28. };
  29. // MARK: /🎬.череда
  30. gitjs.мир.разобрать(`
  31. ручной пуск
  32. установить UIkit
  33. `);
  34. // // // //
  35. // MARK: https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout/raw/branch/master/0000
  36. // // // //
  37. // MARK: /🎬.js
  38. разобратьРаскладкуKMahjongg = function(содержимое)
  39. {
  40. this.__преобразоватьСодержимоеВСтроки = () =>
  41. {
  42. var строки = содержимое.split(/\n/);
  43. this.строки = [];
  44. for (var номер in строки)
  45. {
  46. var строка = строки[номер].trim();
  47. // Пропускаем комментарии и пустые строки.
  48. if (строка.startsWith("#") || !строка.length)
  49. {
  50. continue;
  51. }
  52. this.строки.push(строка);
  53. }
  54. };
  55. this.__разобратьПараметры = () =>
  56. {
  57. var параметры = {
  58. "ширина": 32,
  59. "высота": 16,
  60. "глубина": 0,
  61. "версия": "1.0",
  62. };
  63. var префиксы = {
  64. "версия": "kmahjongg-layout-v",
  65. "глубина": "d",
  66. "ширина": "w",
  67. "высота": "h",
  68. };
  69. var удалитьЭлементов = 0;
  70. var строки = this.строки;
  71. for (var номер in строки)
  72. {
  73. var строка = строки[номер];
  74. // Версия.
  75. if (строка.startsWith(префиксы.версия))
  76. {
  77. параметры.версия = строка.substring(префиксы.версия.length);
  78. }
  79. // Глубина.
  80. else if (строка.startsWith(префиксы.глубина))
  81. {
  82. параметры.глубина = строка.substring(префиксы.глубина.length);
  83. }
  84. // Ширина.
  85. else if (строка.startsWith(префиксы.ширина))
  86. {
  87. параметры.ширина = строка.substring(префиксы.ширина.length);
  88. }
  89. // Высота.
  90. else if (строка.startsWith(префиксы.высота))
  91. {
  92. параметры.высота = строка.substring(префиксы.высота.length);
  93. }
  94. else
  95. {
  96. удалитьЭлементов = номер;
  97. break;
  98. }
  99. }
  100. this.строки.splice(0, удалитьЭлементов);
  101. if (параметры.глубина == 0)
  102. {
  103. параметры.глубина = this.строки.length / параметры.высота;
  104. }
  105. this.параметры = параметры;
  106. };
  107. this.__разобратьПозиции = () =>
  108. {
  109. const параметры = this.параметры;
  110. const строки = this.строки;
  111. var позиции = [];
  112. for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя)
  113. {
  114. for (var ряд = 0; ряд < параметры.высота - 1; ++ряд)
  115. {
  116. for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец)
  117. {
  118. const рядСлоя = ряд + (номерСлоя * параметры.высота);
  119. if (
  120. (строки[рядСлоя][столбец] == '1') &&
  121. (строки[рядСлоя][столбец + 1] == '2') &&
  122. (строки[рядСлоя + 1][столбец] == '4') &&
  123. (строки[рядСлоя + 1][столбец + 1] == '3')
  124. ) {
  125. позиции.push([номерСлоя, ряд, столбец]);
  126. }
  127. }
  128. }
  129. }
  130. this.позиции = позиции;
  131. };
  132. // Исполняем.
  133. this.__преобразоватьСодержимоеВСтроки();
  134. this.__разобратьПараметры();
  135. this.__разобратьПозиции();
  136. return this.позиции;
  137. };
  138. // // // //
  139. // MARK: https://git.opengamestudio.org/mahjong/povtorniy-repeating-ui/raw/branch/master/0000
  140. // // // //
  141. // MARK: /плавно-отобразить-скрыть|smoothly-show-hide.js
  142. ПлавноОтобразитьСкрыть = function(элемент, настройки = null)
  143. {
  144. this.отобразить = () =>
  145. {
  146. this.показываем = true;
  147. элемент.style.display = "block";
  148. this.преобразования.innerHTML = `
  149. #${элемент.id}
  150. {
  151. opacity: 0;
  152. animation: ${элемент.id}ПлавноОтобразить 0.4s ease;
  153. animation-fill-mode: forwards;
  154. animation-delay: ${this.настройки.задержка}s;
  155. }
  156. `;
  157. };
  158. this.скрыть = () =>
  159. {
  160. this.показываем = false;
  161. this.преобразования.innerHTML = `
  162. #${элемент.id}
  163. {
  164. opacity: ${this.настройки.прозрачность};
  165. animation: ${элемент.id}ПлавноСкрыть 0.4s ease;
  166. animation-fill-mode: forwards;
  167. animation-delay: ${this.настройки.задержка}s;
  168. }
  169. `;
  170. };
  171. this.__задатьНастройкиПоУмолчанию = () =>
  172. {
  173. var умолчание = {
  174. "задержка": 0,
  175. "прозрачность": 1,
  176. "отклик": {},
  177. };
  178. if (!настройки)
  179. {
  180. this.настройки = умолчание;
  181. }
  182. else
  183. {
  184. this.настройки = настройки;
  185. }
  186. for (var ключ in умолчание)
  187. {
  188. if (!(ключ in this.настройки))
  189. {
  190. this.настройки[ключ] = умолчание[ключ];
  191. }
  192. }
  193. };
  194. this.__создатьКадры = () =>
  195. {
  196. this.кадры = document.createElement("style");
  197. document.head.appendChild(this.кадры);
  198. this.кадры.innerHTML = `
  199. @keyframes ${элемент.id}ПлавноОтобразить
  200. {
  201. 0%
  202. {
  203. opacity: 0;
  204. }
  205. 100%
  206. {
  207. opacity: ${this.настройки.прозрачность};
  208. }
  209. }
  210. @keyframes ${элемент.id}ПлавноСкрыть
  211. {
  212. 0%
  213. {
  214. opacity: ${this.настройки.прозрачность};
  215. }
  216. 100%
  217. {
  218. opacity: 0;
  219. }
  220. }
  221. `;
  222. };
  223. this.__создатьПреобразования = () =>
  224. {
  225. this.преобразования = document.createElement("style");
  226. document.head.appendChild(this.преобразования);
  227. };
  228. this.__отслеживатьЗавершениеАнимации = () =>
  229. {
  230. this.показываем = true;
  231. var тут = this;
  232. элемент.addEventListener(
  233. "animationend",
  234. function()
  235. {
  236. if (тут.показываем && тут.настройки.отклик.отображение)
  237. {
  238. тут.настройки.отклик.отображение();
  239. }
  240. else if (!тут.показываем)
  241. {
  242. элемент.style.display = "none";
  243. if (тут.настройки.отклик.скрытие)
  244. {
  245. тут.настройки.отклик.скрытие();
  246. }
  247. }
  248. }
  249. );
  250. };
  251. // Конструктор.
  252. this.__задатьНастройкиПоУмолчанию();
  253. this.__создатьКадры();
  254. this.__создатьПреобразования();
  255. this.__отслеживатьЗавершениеАнимации();
  256. };
  257. // Часто используемые варианты в одну строку.
  258. // 常用的单线变型
  259. // Frequently used single line variants.
  260. плавноСкрытьИУдалить = (id, настройки = null) =>
  261. {
  262. var элемент = $(`#${id}`);
  263. var плавно = new ПлавноОтобразитьСкрыть(элемент.get(0), настройки);
  264. плавно.настройки.отклик.скрытие = function() {
  265. элемент.remove();
  266. };
  267. плавно.скрыть();
  268. };
  269. // // // //
  270. плавноСкрыть = (id, настройки = null) =>
  271. {
  272. var элемент = $(`#${id}`);
  273. var плавно = new ПлавноОтобразитьСкрыть(элемент.get(0), настройки);
  274. плавно.скрыть();
  275. };
  276. // MARK: /таблица|table.js
  277. Таблица = function(id)
  278. {
  279. this.задатьЗаголовки = (заголовки) =>
  280. {
  281. this.заголовки = заголовки;
  282. this.__пересобрать();
  283. };
  284. this.задатьСтроки = (строки) =>
  285. {
  286. this.строки = строки;
  287. this.__пересобрать();
  288. };
  289. this.элемент = (номер) =>
  290. {
  291. return $(`#${id}-${номер}`);
  292. };
  293. this.__пересобрать = () =>
  294. {
  295. this.__задатьСодержимое();
  296. this.__отслеживатьВыбор();
  297. };
  298. this.__задатьСодержимое = () =>
  299. {
  300. var содержимое = "";
  301. if (this.заголовки && this.заголовки.length)
  302. {
  303. var заголовок = "";
  304. for (var номер in this.заголовки)
  305. {
  306. var значение = this.заголовки[номер];
  307. заголовок += `<th>${значение}</th>`
  308. }
  309. содержимое += `
  310. <thead>
  311. <tr>
  312. ${заголовок}
  313. </tr>
  314. </thead>
  315. `;
  316. }
  317. if (this.строки && this.строки.length)
  318. {
  319. var тело = "";
  320. for (var номер in this.строки)
  321. {
  322. var столбцы = this.строки[номер];
  323. var строка = "";
  324. for (var н in столбцы)
  325. {
  326. var значение = столбцы[н];
  327. строка += `<td>${значение}</td>`;
  328. }
  329. тело += `<tr id="${id}-${номер}">${строка}</tr>`;
  330. }
  331. содержимое += `<tbody>${тело}</tbody>`;
  332. }
  333. $(`#${id}`).html(содержимое);
  334. };
  335. this.__отслеживатьВыбор = () =>
  336. {
  337. if (!(this.строки && this.строки.length))
  338. {
  339. return;
  340. }
  341. var тут = this;
  342. for (var номер in this.строки)
  343. {
  344. const номерСтроки = номер;
  345. $(`#${id}-${номер}`).click(function() {
  346. if (тут.выбор)
  347. {
  348. тут.выбор(номерСтроки);
  349. }
  350. });
  351. }
  352. };
  353. };
  354. // // // //
  355. // MARK: https://git.opengamestudio.org/PuCOBATEJlb/PuCOBATEJlb/raw/branch/master/0000
  356. // // // //
  357. // MARK: /base64js.min.js
  358. //https://github.com/beatgammit/base64-js
  359. (function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,n;return function(){function d(a,f,i){function u(n,r){if(!f[n]){if(!a[n]){var e="function"==typeof require&&require;if(!r&&e)return e(n,!0);if(v)return v(n,!0);var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}var o=f[n]={exports:{}};a[n][0].call(o.exports,function(r){var e=a[n][1][r];return u(e||r)},o,o.exports,d,a,f,i)}return f[n].exports}for(var v="function"==typeof require&&require,r=0;r<i.length;r++)u(i[r]);return u}return d}()({"/":[function(r,e,n){"use strict";n.byteLength=f;n.toByteArray=i;n.fromByteArray=p;var u=[];var v=[];var d=typeof Uint8Array!=="undefined"?Uint8Array:Array;var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var o=0,a=t.length;o<a;++o){u[o]=t[o];v[t.charCodeAt(o)]=o}v["-".charCodeAt(0)]=62;v["_".charCodeAt(0)]=63;function c(r){var e=r.length;if(e%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}var n=r.indexOf("=");if(n===-1)n=e;var t=n===e?0:4-n%4;return[n,t]}function f(r){var e=c(r);var n=e[0];var t=e[1];return(n+t)*3/4-t}function h(r,e,n){return(e+n)*3/4-n}function i(r){var e;var n=c(r);var t=n[0];var o=n[1];var a=new d(h(r,t,o));var f=0;var i=o>0?t-4:t;var u;for(u=0;u<i;u+=4){e=v[r.charCodeAt(u)]<<18|v[r.charCodeAt(u+1)]<<12|v[r.charCodeAt(u+2)]<<6|v[r.charCodeAt(u+3)];a[f++]=e>>16&255;a[f++]=e>>8&255;a[f++]=e&255}if(o===2){e=v[r.charCodeAt(u)]<<2|v[r.charCodeAt(u+1)]>>4;a[f++]=e&255}if(o===1){e=v[r.charCodeAt(u)]<<10|v[r.charCodeAt(u+1)]<<4|v[r.charCodeAt(u+2)]>>2;a[f++]=e>>8&255;a[f++]=e&255}return a}function s(r){return u[r>>18&63]+u[r>>12&63]+u[r>>6&63]+u[r&63]}function l(r,e,n){var t;var o=[];for(var a=e;a<n;a+=3){t=(r[a]<<16&16711680)+(r[a+1]<<8&65280)+(r[a+2]&255);o.push(s(t))}return o.join("")}function p(r){var e;var n=r.length;var t=n%3;var o=[];var a=16383;for(var f=0,i=n-t;f<i;f+=a){o.push(l(r,f,f+a>i?i:f+a))}if(t===1){e=r[n-1];o.push(u[e>>2]+u[e<<4&63]+"==")}else if(t===2){e=(r[n-2]<<8)+r[n-1];o.push(u[e>>10]+u[e>>4&63]+u[e<<2&63]+"=")}return o.join("")}},{}]},{},[])("/")});
  360. // MARK: /⨐.js
  361. рисовательПоддерживаетИзображениеСИменемФайла = (файл) =>
  362. {
  363. var форматы = поддерживаемыеРисователемФорматыИзображений();
  364. for (var окончание in форматы)
  365. {
  366. if (файл.endsWith(окончание))
  367. {
  368. return true;
  369. }
  370. }
  371. return false;
  372. };
  373. // // // //
  374. поддерживаемыеРисователемФорматыИзображений = () =>
  375. {
  376. return {
  377. ".png": "png",
  378. ".jpg": "jpeg",
  379. ".jpeg": "jpeg",
  380. ".gif": "gif",
  381. };
  382. };
  383. // // // //
  384. загрузитьРесурсыПоследовательно = (мир, функция, словарь, событие) =>
  385. {
  386. var список = словарьРесурсовВСписок(словарь);
  387. function загрузить(мир, список, номер, успех, провал)
  388. {
  389. const э = список[номер];
  390. функция(
  391. мир,
  392. э.указатель,
  393. э.файл,
  394. function(ресурс) {
  395. словарь[э.указатель][э.файл] = ресурс;
  396. успех();
  397. },
  398. function() {
  399. успех();
  400. }
  401. );
  402. }
  403. сделатьПоследовательно(
  404. мир,
  405. список,
  406. загрузить,
  407. function() {
  408. мир.уведомить(событие);
  409. }
  410. );
  411. };
  412. // // // //
  413. словарьРесурсовВСписок = словарь =>
  414. {
  415. var список = [];
  416. for (var указатель in словарь)
  417. {
  418. for (var файл in словарь[указатель])
  419. {
  420. список.push({
  421. "указатель": указатель,
  422. "файл": файл,
  423. });
  424. }
  425. }
  426. return список;
  427. };
  428. // // // //
  429. форматИзображенияДляБазы64 = файл =>
  430. {
  431. var форматы = поддерживаемыеРисователемФорматыИзображений();
  432. for (var окончание in форматы)
  433. {
  434. if (файл.toLowerCase().endsWith(окончание))
  435. {
  436. return форматы[окончание];
  437. }
  438. }
  439. return null;
  440. };
  441. // // // //
  442. загрузитьТекстуру = (мир, указатель, файл, откликУспех, откликПровал = null) =>
  443. {
  444. var модуль = мир.модули.модульПоУказателю(указатель);
  445. var содержимое = модуль.содержимое[файл];
  446. var представление = мир.база64ИзДвоичногоМассива(new Uint8Array(содержимое));
  447. var формат = форматИзображенияДляБазы64(файл);
  448. var адрес = `data:image/${формат};base64,${представление}`;
  449. мир.текстурщик.load(
  450. адрес,
  451. function(текстура) {
  452. текстура.flipY = false;
  453. откликУспех(текстура);
  454. },
  455. null,
  456. function(error) {
  457. var ошибка = "ОШИБКА ⚬ 错误 ⚬ ERROR: Не удалось загрузить текстуру ⚬ 无法加载纹理 ⚬ Could not load texture";
  458. console.error(ошибка, указатель, файл);
  459. if (откликПровал)
  460. {
  461. откликПровал();
  462. }
  463. }
  464. );
  465. };
  466. // // // //
  467. загрузитьПолигональнуюСетку = (мир, указатель, файл, откликУспех, откликПровал = null) =>
  468. {
  469. var м = мир.модули.модульПоУказателю(указатель);
  470. var адрес = `${window.location.origin}${файл}`;
  471. THREE.Cache.enabled = true;
  472. THREE.Cache.add(адрес, м.содержимое[файл]);
  473. мир.модельер.load(
  474. адрес,
  475. function(gltf) {
  476. THREE.Cache.remove(адрес);
  477. // Вычленяем полигональную сетку.
  478. // Take polygon mesh.
  479. var успех = false;
  480. gltf.scene.traverse(function(ребёнок) {
  481. if (!успех && ребёнок.isMesh)
  482. {
  483. откликУспех(ребёнок);
  484. успех = true;
  485. }
  486. });
  487. if (успех)
  488. {
  489. return;
  490. }
  491. var ошибка = "ОШИБКА ⚬ 错误 ⚬ ERROR: Отсутствует полигональная сетка ⚬ 不存在多边形网格 ⚬ Polygon mesh is absent";
  492. console.error(ошибка, указатель, файл);
  493. if (откликПровал)
  494. {
  495. откликПровал();
  496. }
  497. },
  498. null,
  499. function(error) {
  500. var ошибка = "ОШИБКА ⚬ 错误 ⚬ ERROR: Не удалось загрузить полигональную сетку ⚬ 无法加载多边形网格 ⚬ Could not load polygon mesh";
  501. console.error(ошибка, указатель, файл);
  502. if (откликПровал)
  503. {
  504. откликПровал();
  505. }
  506. }
  507. );
  508. };
  509. // MARK: /🎬.js
  510. // // // //
  511. ОтслеживатьНажатияВРисователе = мир =>
  512. {
  513. мир.отслеживатьНажатияВРисователе = true;
  514. уведомитьОНажатии = (событие) =>
  515. {
  516. if (!мир.отслеживатьНажатияВРисователе)
  517. {
  518. return;
  519. }
  520. var позиция = new THREE.Vector2();
  521. var ширина = мир.ширинаОкна;
  522. var высота = мир.высотаОкна;
  523. позиция.x = ((событие.clientX + window.pageXOffset) / ширина ) * 2 - 1;
  524. позиция.y = - ((событие.clientY + window.pageYOffset) / высота) * 2 + 1;
  525. мир.позицияНажатияВРисователе = позиция;
  526. мир.уведомить("нажатие в рисователе");
  527. };
  528. // Палец.
  529. window.addEventListener(
  530. "touchstart",
  531. function(событие) {
  532. уведомитьОНажатии(событие.touches[0]);
  533. }
  534. );
  535. // Мышь.
  536. window.addEventListener(
  537. "click",
  538. function(событие) {
  539. уведомитьОНажатии(событие);
  540. }
  541. );
  542. // iOS.
  543. // https://stackoverflow.com/a/31459240/3404710
  544. мир.рисователь.domElement.style.cursor = "pointer";
  545. };
  546. // // // //
  547. ЗапуститьРисователя = мир =>
  548. {
  549. function отрисовать(время)
  550. {
  551. requestAnimationFrame(отрисовать);
  552. мир.рисователь.render(мир.сцена, мир.камера);
  553. мир.времяРисования = время;
  554. мир.уведомить("отрисовали кадр");
  555. }
  556. отрисовать();
  557. };
  558. // // // //
  559. ПрименитьРазмерРисователя = мир =>
  560. {
  561. мир.камера.aspect = мир.ширинаОкна / мир.высотаОкна;
  562. мир.камера.updateProjectionMatrix();
  563. var чёткостьApple = 2;
  564. мир.рисователь.setSize(мир.ширинаОкна * чёткостьApple, мир.высотаОкна * чёткостьApple);
  565. мир.канва.style = `
  566. position: absolute;
  567. left: 0;
  568. top: 0;
  569. width: ${мир.ширинаОкнаПроц}%;
  570. max-width: ${мир.ширинаОкнаПроц}%;
  571. height: ${мир.высотаОкнаПроц}%;
  572. max-height: ${мир.высотаОкнаПроц}%;
  573. `;
  574. };
  575. // // // //
  576. ИзменитьРазмерРисователя = мир =>
  577. {
  578. мир.ширинаОкна = window.innerWidth * мир.масштаб;
  579. мир.высотаОкна = window.innerHeight * мир.масштаб;
  580. мир.ширинаОкнаПроц = мир.масштаб * 100;
  581. мир.высотаОкнаПроц = мир.масштаб * 100;
  582. };
  583. // // // //
  584. ОтслеживатьИзменениеРазмераОкнаБраузера = мир =>
  585. {
  586. window.addEventListener(
  587. "resize",
  588. function() {
  589. мир.уведомить("изменили размер окна браузера");
  590. }
  591. );
  592. };
  593. // // // //
  594. НастроитьРисователя = мир =>
  595. {
  596. мир.сцена = new THREE.Scene();
  597. мир.камера = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);
  598. мир.ловец = new THREE.Raycaster();
  599. мир.модельер = new THREE.GLTFLoader();
  600. мир.текстурщик = new THREE.TextureLoader();
  601. мир.масштаб = 1;
  602. мир.канва = document.createElement("canvas");
  603. document.body.prepend(мир.канва);
  604. мир.рисователь = new THREE.WebGLRenderer({canvas: мир.канва, antialias: true});
  605. };
  606. // // // //
  607. УстановитьBase64JS = мир =>
  608. {
  609. /*
  610. var модуль = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  611. var содержимое = модуль.содержимое["/base64js.min.js"];
  612. eval(содержимое);
  613. */
  614. мир.база64ИзДвоичногоМассива = base64js.fromByteArray;
  615. мир.база64ВДвоичныйМассив = base64js.toByteArray;
  616. };
  617. // // // //
  618. УстановитьThreeJS = мир =>
  619. {
  620. var модуль = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  621. var код = модуль.содержимое["/three.js"];
  622. var скрипт = document.createElement("script");
  623. скрипт.innerHTML = код;
  624. document.body.appendChild(скрипт);
  625. };
  626. // MARK: /🎬.череда
  627. gitjs.мир.разобрать(`
  628. ручной пуск
  629. установить ThreeJS
  630. установить Base64JS
  631. настроить рисователя
  632. отслеживать изменение размера окна браузера
  633. изменить размер рисователя
  634. применить размер рисователя
  635. отслеживать нажатия в рисователе
  636. запустить рисователя
  637. изменили размер окна браузера
  638. изменить размер рисователя
  639. применить размер рисователя
  640. изменили масштаб
  641. изменить размер рисователя
  642. применить размер рисователя
  643. `);
  644. // MARK: /📖.js
  645. // // // //
  646. ВыбратьУзелСцены = мир =>
  647. {
  648. мир.выбранныйУзел = null;
  649. мир.ловец.setFromCamera(мир.позицияНажатияВРисователе, мир.камера);
  650. var пересечения = мир.ловец.intersectObjects(мир.выборныеУзлы);
  651. if (пересечения.length)
  652. {
  653. мир.выбранныйУзел = пересечения[0].object;
  654. мир.уведомить("выбрали узел сцены");
  655. }
  656. };
  657. // // // //
  658. ЗагрузитьТекстуры = мир =>
  659. {
  660. загрузитьРесурсыПоследовательно(
  661. мир,
  662. загрузитьТекстуру,
  663. мир.текстуры,
  664. "загрузили текстуры"
  665. );
  666. };
  667. // // // //
  668. ЗагрузитьПолигональныеСетки = мир =>
  669. {
  670. загрузитьРесурсыПоследовательно(
  671. мир,
  672. загрузитьПолигональнуюСетку,
  673. мир.полигональныеСетки,
  674. "загрузили полигональные сетки"
  675. );
  676. };
  677. // // // //
  678. // MARK: https://git.opengamestudio.org/MAOH/MEXMA/raw/branch/master/0000
  679. // // // //
  680. // MARK: /⨐.js
  681. фишкуМаджонгаМожноВыбрать = (индексы, индекс) =>
  682. {
  683. var позиция = позицияИндексаФишкиМаджонга(индекс);
  684. // Проверяем заблокированность фишки одновременно с обеих сторон.
  685. var слева = уФишкиМаджонгаЕстьСоседи(индексы, позиция, 0, -2);
  686. var справа = уФишкиМаджонгаЕстьСоседи(индексы, позиция, 0, 2);
  687. if (слева && справа)
  688. {
  689. return false;
  690. }
  691. // Проверяем заблокированность сверху.
  692. for (var смещениеСтолбца = -1; смещениеСтолбца < 2; ++смещениеСтолбца)
  693. {
  694. if (уФишкиМаджонгаЕстьСоседи(индексы, позиция, 1, смещениеСтолбца))
  695. {
  696. return false;
  697. }
  698. }
  699. return true;
  700. };
  701. // // // //
  702. уФишкиМаджонгаЕстьСоседи = (индексы, позиция, смещениеСлоя, смещениеСтолбца) =>
  703. {
  704. for (var смещениеРяда = -1; смещениеРяда < 2; ++смещениеРяда)
  705. {
  706. var позицияСоседа = [
  707. позиция[0] + смещениеСлоя,
  708. позиция[1] + смещениеРяда,
  709. позиция[2] + смещениеСтолбца,
  710. ];
  711. var индексСоседа = индексПозицииФишкиМаджонга(позицияСоседа);
  712. if (индексСоседа in индексы)
  713. {
  714. return true;
  715. }
  716. }
  717. return false;
  718. };
  719. // // // //
  720. позицияИндексаФишкиМаджонга = (индекс) =>
  721. {
  722. const x = Math.round(индекс / 1000000);
  723. const y = Math.round((индекс - x * 1000000) / 1000);
  724. const z = индекс - x * 1000000 - y * 1000;
  725. return [x, y, z];
  726. };
  727. // // // //
  728. индексПозицииФишкиМаджонга = (позиция) =>
  729. {
  730. return позиция[0] * 1000000 + позиция[1] * 1000 + позиция[2];
  731. };
  732. // MARK: /🎬.js
  733. const ЗАДЕРЖКА = 100;
  734. // // // //
  735. УведомитьОРезультатеЕслиКонец = мир =>
  736. {
  737. if (мир.количествоХодовВМаджонге != 0)
  738. {
  739. return;
  740. }
  741. var фишкиОстались = Object.keys(мир.индексыФишекМаджонга).length > 0;
  742. if (фишкиОстались)
  743. {
  744. мир.уведомить("поражение в маджонге");
  745. }
  746. else
  747. {
  748. мир.уведомить("победа в маджонге");
  749. }
  750. };
  751. // // // //
  752. ПодсчитатьКоличествоХодовВМаджонге = мир =>
  753. {
  754. var номера = мир.доступныеДляВыбораНомераФишекМаджонга;
  755. var фишки = мир.фишкиМаджонга;
  756. var ходов = 0;
  757. for (var н0 in номера)
  758. {
  759. н0 = Number(н0);
  760. // Исключаем уже просмотренные номера.
  761. for (var н1 = н0 + 1; н1 < номера.length; ++н1)
  762. {
  763. var номер0 = номера[н0];
  764. var номер1 = номера[н1];
  765. var группа0 = фишки[номер0]["🚩"];
  766. var группа1 = фишки[номер1]["🚩"];
  767. if (группа0 == группа1)
  768. {
  769. ++ходов;
  770. }
  771. }
  772. }
  773. мир.количествоХодовВМаджонге = ходов;
  774. мир.уведомить("изменили количество ходов в маджонге");
  775. };
  776. // // // //
  777. СобратьДоступныеДляВыбораНомераФишекМаджонга = мир =>
  778. {
  779. var индексы = мир.индексыФишекМаджонга;
  780. var номера = [];
  781. for (индекс in индексы)
  782. {
  783. if (фишкуМаджонгаМожноВыбрать(индексы, индекс))
  784. {
  785. var номер = индексы[индекс];
  786. номера.push(номер);
  787. }
  788. }
  789. мир.доступныеДляВыбораНомераФишекМаджонга = номера;
  790. };
  791. // // // //
  792. ОчиститьИндексыФишекМаджонгаОтУбранных = мир =>
  793. {
  794. for (var номер in мир.убранныеФишкиМаджонга)
  795. {
  796. var н = мир.убранныеФишкиМаджонга[номер];
  797. var позиция = мир.фишкиМаджонга[н]["📍"];
  798. var индекс = индексПозицииФишкиМаджонга(позиция);
  799. delete мир.индексыФишекМаджонга[индекс];
  800. }
  801. };
  802. // // // //
  803. УбратьВыбраннуюПаруФишекМаджонгаСЗадержкой = мир =>
  804. {
  805. setTimeout(
  806. function() {
  807. мир.убранныеФишкиМаджонга = мир.выбранныеФишкиМаджонга.slice();
  808. мир.выбранныеФишкиМаджонга = [];
  809. мир.уведомить("изменили выбранные фишки маджонга");
  810. мир.уведомить("убрали фишки маджонга");
  811. },
  812. мир.задержкаУбиранияФишекМаджонга
  813. );
  814. };
  815. // // // //
  816. ИсключитьИзВыбранныхФишекМаджонгаПервую = мир =>
  817. {
  818. мир.выбранныеФишкиМаджонга.shift();
  819. мир.уведомить("изменили выбранные фишки маджонга");
  820. };
  821. // // // //
  822. СравнитьПаруВыбранныхФишекМаджонга = мир =>
  823. {
  824. // Удостоверяемся в наличии двух фишек.
  825. if (мир.выбранныеФишкиМаджонга.length != 2)
  826. {
  827. return;
  828. }
  829. var н1 = мир.выбранныеФишкиМаджонга[0];
  830. var н2 = мир.выбранныеФишкиМаджонга[1];
  831. var г1 = мир.фишкиМаджонга[н1]["🚩"];
  832. var г2 = мир.фишкиМаджонга[н2]["🚩"];
  833. if (г1 == г2)
  834. {
  835. мир.уведомить("выбрали пару фишек маджонга одной группы");
  836. }
  837. else
  838. {
  839. мир.уведомить("выбрали пару фишек маджонга разных групп");
  840. }
  841. };
  842. // // // //
  843. ПодготовитьМеханикуМаджонга = мир =>
  844. {
  845. мир.выбранныеФишкиМаджонга = [];
  846. мир.задержкаУбиранияФишекМаджонга = ЗАДЕРЖКА;
  847. };
  848. // MARK: /🎬.череда
  849. gitjs.мир.разобрать(`
  850. ручной пуск
  851. подготовить механику маджонга
  852. изменили выбранные фишки маджонга
  853. сравнить пару выбранных фишек маджонга
  854. выбрали пару фишек маджонга разных групп
  855. исключить из выбранных фишек маджонга первую
  856. выбрали пару фишек маджонга одной группы
  857. убрать выбранную пару фишек маджонга с задержкой
  858. убрали фишки маджонга
  859. очистить индексы фишек маджонга от убранных
  860. собрать доступные для выбора номера фишек маджонга
  861. подсчитать количество ходов в маджонге
  862. изменили количество ходов в маджонге
  863. уведомить о результате если конец
  864. `);
  865. // MARK: /📖.js
  866. СоздатьИндексыФишекМаджонга = мир =>
  867. {
  868. мир.индексыФишекМаджонга = {};
  869. for (var н in мир.фишкиМаджонга)
  870. {
  871. var позиция = мир.фишкиМаджонга[н]["📍"];
  872. var индекс = индексПозицииФишкиМаджонга(позиция);
  873. мир.индексыФишекМаджонга[индекс] = н;
  874. };
  875. };
  876. // // // //
  877. ВыбратьФишкуМаджонга = мир =>
  878. {
  879. var номер = мир.фишкаМаджонгаДляВыбора;
  880. // Отсекаем выбор одной и той же фишки.
  881. if (
  882. мир.выбраннаяФишкаМаджонга &&
  883. мир.выбраннаяФишкаМаджонга == номер
  884. ) {
  885. return;
  886. }
  887. // Проверяем доступность с точки зрения правил Маджонга.
  888. var позиция = мир.фишкиМаджонга[номер]["📍"];
  889. var индекс = индексПозицииФишкиМаджонга(позиция);
  890. if (!фишкуМаджонгаМожноВыбрать(мир.индексыФишекМаджонга, индекс))
  891. {
  892. return;
  893. }
  894. мир.выбраннаяФишкаМаджонга = номер;
  895. мир.выбранныеФишкиМаджонга.push(номер);
  896. мир.уведомить("изменили выбранные фишки маджонга");
  897. };
  898. // // // //
  899. // MARK: https://git.opengamestudio.org/MAOH/CEHMA/raw/branch/master/0000
  900. // // // //
  901. // MARK: /🎬.js
  902. const ОТСТУП_МЕЖДУ_ФИШКАМИ = 0.02;
  903. const КОЭФФИЦИЕНТ_ВЫСОТЫ = 1.5;
  904. // // // //
  905. РасположитьКамеруСцены = мир =>
  906. {
  907. var р = мир.размерПоляФишек;
  908. var расстояние = р.макс.z - р.мин.z;
  909. мир.камера.position.y = расстояние * КОЭФФИЦИЕНТ_ВЫСОТЫ;
  910. мир.камера.position.z = расстояние;
  911. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  912. };
  913. // // // //
  914. ЦентрироватьФишкиСцены = мир =>
  915. {
  916. // Возвращаем в центр.
  917. мир.сценаМаджонга.position.x = 0;
  918. мир.сценаМаджонга.position.z = 0;
  919. var р = мир.размерПоляФишек;
  920. // Убираем пустоту слева.
  921. мир.сценаМаджонга.position.x -= р.мин.x;
  922. мир.сценаМаджонга.position.z -= р.мин.z;
  923. // Центрируем остаток.
  924. мир.сценаМаджонга.position.x -= (р.макс.x - р.мин.x) / 2;
  925. мир.сценаМаджонга.position.z -= (р.макс.z - р.мин.z) / 2;
  926. };
  927. // // // //
  928. ПосчитатьРазмерПоляФишек = мир =>
  929. {
  930. var мин = {
  931. "x": 1000000,
  932. "z": 1000000,
  933. };
  934. var макс = {
  935. "x": 0,
  936. "z": 0,
  937. };
  938. for (var номер in мир.фишкиМаджонга)
  939. {
  940. const ф = мир.фишкиСцены[номер];
  941. if (ф.position.x < мин.x)
  942. {
  943. мин.x = ф.position.x;
  944. }
  945. if (ф.position.x > макс.x)
  946. {
  947. макс.x = ф.position.x;
  948. }
  949. if (ф.position.z < мин.z)
  950. {
  951. мин.z = ф.position.z;
  952. }
  953. if (ф.position.z > макс.z)
  954. {
  955. макс.z = ф.position.z;
  956. }
  957. }
  958. мир.размерПоляФишек = {
  959. "мин": мин,
  960. "макс": макс,
  961. };
  962. };
  963. // // // //
  964. ЗадатьМатериалыФишкамСцены = мир =>
  965. {
  966. for (var н in мир.фишкиМаджонга)
  967. {
  968. var ф = мир.фишкиСцены[н];
  969. var г = мир.фишкиМаджонга[н]["🚩"];
  970. var м = мир.материалыФишекСцены[г];
  971. ф.material = м;
  972. }
  973. };
  974. // // // //
  975. ПерезадатьФишкиСцены = мир =>
  976. {
  977. var фишка = мир.модельФишкиСцены;
  978. var границы = фишка.geometry.boundingBox;
  979. var размеры = [
  980. (границы.max.x - границы.min.x) / 2,
  981. (границы.max.z - границы.min.z) / 2,
  982. (границы.max.y - границы.min.y),
  983. ];
  984. var отступ = мир.отступМеждуФишкамиСцены;
  985. for (var номер in мир.фишкиМаджонга)
  986. {
  987. // Узел сцены.
  988. var ф = мир.фишкиСцены[номер];
  989. ф.layers.set(0);
  990. ф.userData = номер;
  991. // Расположение.
  992. var фм = мир.фишкиМаджонга[номер];
  993. var п = фм["📍"];
  994. var слой = п[0];
  995. var ряд = п[1];
  996. var столбец = п[2];
  997. ф.position.x = столбец * (размеры[0] + отступ);
  998. ф.position.z = ряд * (размеры[1] + отступ);
  999. ф.position.y = слой * (размеры[2] + отступ);
  1000. }
  1001. };
  1002. // // // //
  1003. СкрытьФишкиСцены = мир =>
  1004. {
  1005. var фишки = мир.фишкиСцены;
  1006. for (var н in фишки)
  1007. {
  1008. var ф = фишки[н];
  1009. ф.layers.set(1);
  1010. }
  1011. };
  1012. // // // //
  1013. ДосоздатьФишкиСцены = мир =>
  1014. {
  1015. // Если фишек в сцене уже достаточно, то ничего не делаем.
  1016. if (мир.фишкиСцены.length >= мир.фишкиМаджонга.length)
  1017. {
  1018. return;
  1019. }
  1020. var фишка = мир.модельФишкиСцены;
  1021. var колво = мир.фишкиМаджонга.length - мир.фишкиСцены.length;
  1022. for (var н = 0; н < колво; ++н)
  1023. {
  1024. var ф = фишка.clone();
  1025. мир.фишкиСцены.push(ф);
  1026. мир.кореньСценыМаджонга.add(ф);
  1027. }
  1028. }
  1029. // // // //
  1030. ПодготовитьСценуМаджонга = мир =>
  1031. {
  1032. мир.отступМеждуФишкамиСцены = ОТСТУП_МЕЖДУ_ФИШКАМИ;
  1033. мир.сценаМаджонга = new THREE.Group();
  1034. мир.фишкиСцены = [];
  1035. };
  1036. // MARK: /🎬.череда
  1037. gitjs.мир.разобрать(`
  1038. ручной пуск
  1039. подготовить сцену маджонга
  1040. надо создать фишки в сцене
  1041. # засечь время Б
  1042. досоздать фишки сцены
  1043. скрыть фишки сцены
  1044. # засечь время Б
  1045. перезадать фишки сцены
  1046. # засечь время Б
  1047. посчитать размер поля фишек
  1048. # засечь время Б
  1049. центрировать фишки сцены
  1050. # засечь время Б
  1051. расположить камеру сцены
  1052. # засечь время Б
  1053. задать материалы фишкам сцены
  1054. # засечь время Б
  1055. # создать отладочную сферу в центре корня
  1056. `);
  1057. // MARK: /📖.js
  1058. УдалитьФишкиСцены = мир =>
  1059. {
  1060. if (мир.сценаМаджонга.children.length)
  1061. {
  1062. мир.сценаМаджонга.remove(мир.кореньСценыМаджонга);
  1063. }
  1064. мир.кореньСценыМаджонга = new THREE.Group();
  1065. мир.сценаМаджонга.add(мир.кореньСценыМаджонга);
  1066. мир.фишкиСцены = [];
  1067. };
  1068. // // // //
  1069. СкрытьУбранныеФишкиВСцене = мир =>
  1070. {
  1071. for (var номер in мир.убранныеФишкиМаджонга)
  1072. {
  1073. var н = мир.убранныеФишкиМаджонга[номер];
  1074. // Перемещаем фишку на другой слой для исключения из отрисовки и выбора.
  1075. var ф = мир.фишкиСцены[н];
  1076. ф.layers.set(1);
  1077. }
  1078. }
  1079. // // // //
  1080. ВыделитьВыбранныеФишкиВСцене = мир =>
  1081. {
  1082. for (var номер in мир.выбранныеФишкиМаджонга)
  1083. {
  1084. var н = мир.выбранныеФишкиМаджонга[номер];
  1085. var ф = мир.фишкиСцены[н];
  1086. var г = мир.фишкиМаджонга[н]["🚩"];
  1087. var м = мир.выбранныеМатериалыФишекСцены[г];
  1088. ф.material = м;
  1089. }
  1090. };
  1091. // // // //
  1092. СоздатьФишкиВСцене = мир =>
  1093. {
  1094. мир.уведомить("надо создать фишки в сцене");
  1095. };
  1096. // // // //
  1097. // MARK: https://git.opengamestudio.org/MAOH/MOPMA/raw/branch/master/0000
  1098. // // // //
  1099. // MARK: /ƒ.js
  1100. создатьОкно = (мир, id, файлHTML = null, файлCSS = null) =>
  1101. {
  1102. // Структура.
  1103. var окно = document.createElement("div");
  1104. окно.id = id;
  1105. окно.style.display = "none";
  1106. document.body.appendChild(окно);
  1107. // Вид.
  1108. if (файлHTML || файлCSS)
  1109. {
  1110. var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  1111. if (файлHTML)
  1112. {
  1113. окно.innerHTML = м.содержимое[файлHTML];
  1114. }
  1115. if (файлCSS)
  1116. {
  1117. добавитьCSS(м.содержимое[файлCSS]);
  1118. }
  1119. }
  1120. // Функциональность.
  1121. окно.плавно = new ПлавноОтобразитьСкрыть(окно);
  1122. return окно;
  1123. };
  1124. // // // //
  1125. добавитьCSS = содержимое =>
  1126. {
  1127. var вид = document.createElement("style");
  1128. document.head.appendChild(вид);
  1129. вид.innerHTML = содержимое;
  1130. return вид;
  1131. };
  1132. // MARK: /🎛️.css
  1133. модуль.содержимое["/🎛️.css"] = `
  1134. #окно-управления
  1135. {
  1136. position: absolute;
  1137. left: 0;
  1138. top: 0;
  1139. right: 0;
  1140. bottom: 0;
  1141. }
  1142. #кнопка-темы-отобразить
  1143. {
  1144. position: fixed;
  1145. left: 0;
  1146. bottom: 1.25em;
  1147. font-size: 2em;
  1148. padding: 0.25em 0.25em;
  1149. margin-left: 0.33em;
  1150. }
  1151. #кнопка-раскладки-отобразить
  1152. {
  1153. position: fixed;
  1154. right: 0;
  1155. bottom: 1.25em;
  1156. font-size: 2em;
  1157. padding: 0.25em 0.25em;
  1158. margin-right: 0.33em;
  1159. }
  1160. #кнопки-масштаба
  1161. {
  1162. position: fixed;
  1163. right: 1em;
  1164. top: 3em;
  1165. }
  1166. #счёт
  1167. {
  1168. position: fixed;
  1169. top: 0;
  1170. margin-top: 0;
  1171. left: 50%;
  1172. transform: translateX(-50%);
  1173. }
  1174. `;
  1175. // MARK: /🎛️.html
  1176. модуль.содержимое["/🎛️.html"] = `
  1177. <a id="кнопка-темы-отобразить" class="uk-button uk-button-default">🀄</a>
  1178. <a id="кнопка-раскладки-отобразить" class="uk-button uk-button-default">📍</a>
  1179. <!--
  1180. <ul id="кнопки-масштаба" class="uk-iconnav uk-iconnav-vertical">
  1181. <li><a id="увеличить-масштаб" uk-icon="icon: plus; ratio: 2"></a></li>
  1182. <li><a id="уменьшить-масштаб" uk-icon="icon: minus; ratio: 2"></a></li>
  1183. </ul>
  1184. -->
  1185. <div id="счёт" class="uk-text-normal">
  1186. 🎳 <span id="счёт-ходов">?</span>
  1187. 🥅 <span id="счёт-фишек">?/?</span>
  1188. </div>
  1189. `;
  1190. // MARK: /🎞️.css
  1191. модуль.содержимое["/🎞️.css"] = `
  1192. #окно-подложка
  1193. {
  1194. position: fixed;
  1195. left: 0;
  1196. top: 0;
  1197. right: 0;
  1198. bottom: 0;
  1199. background-color: white;
  1200. pointer-events: none;
  1201. }
  1202. `;
  1203. // MARK: /🎬.js
  1204. СкрытьОкноУправления = мир =>
  1205. {
  1206. мир.окноУправления.плавно.скрыть();
  1207. };
  1208. // // // //
  1209. ОтобразитьОкноУправления = мир =>
  1210. {
  1211. мир.окноУправления.плавно.отобразить();
  1212. };
  1213. // // // //
  1214. СкрытьОкноПодложку = мир =>
  1215. {
  1216. мир.окноПодложка.плавно.скрыть();
  1217. };
  1218. // // // //
  1219. ОтобразитьОкноПодложку = мир =>
  1220. {
  1221. мир.окноПодложка.плавно.отобразить();
  1222. };
  1223. // // // //
  1224. СкрытьОкноТем = мир =>
  1225. {
  1226. мир.окноТем.плавно.скрыть();
  1227. };
  1228. // // // //
  1229. ОтобразитьОкноТем = мир =>
  1230. {
  1231. мир.окноТем.плавно.отобразить();
  1232. };
  1233. // // // //
  1234. СкрытьОкноРаскладок = мир =>
  1235. {
  1236. мир.окноРаскладок.плавно.скрыть();
  1237. };
  1238. // // // //
  1239. ОтобразитьОкноРаскладок = мир =>
  1240. {
  1241. мир.окноРаскладок.плавно.отобразить();
  1242. };
  1243. // // // //
  1244. СоздатьОкноТем = мир =>
  1245. {
  1246. мир.окноТем = создатьОкно(мир, "окно-темы", "/🖼️.html", "/🖼️.css");
  1247. мир.таблицаОкнаТем = new Таблица("окно-темы-список");
  1248. $("#кнопка-темы-скрыть").click(function() {
  1249. мир.уведомить("кнопка темы скрыть");
  1250. });
  1251. мир.таблицаОкнаТем.выбор = (номер) =>
  1252. {
  1253. // Игнорируем повторный выбор.
  1254. if (
  1255. мир.номерВыбраннойТемыМаджонга &&
  1256. мир.номерВыбраннойТемыМаджонга == номер
  1257. ) {
  1258. return;
  1259. }
  1260. мир.номерВыбраннойТемыМаджонга = номер;
  1261. мир.уведомить("изменили номер выбранной темы маджонга");
  1262. };
  1263. };
  1264. // // // //
  1265. СоздатьОкноРаскладок = мир =>
  1266. {
  1267. мир.окноРаскладок = создатьОкно(мир, "окно-раскладки", "/📍.html", "/📍.css");
  1268. мир.таблицаОкнаРаскладок = new Таблица("окно-раскладки-список");
  1269. $("#кнопка-раскладки-скрыть").click(function() {
  1270. мир.уведомить("кнопка раскладки скрыть");
  1271. });
  1272. мир.таблицаОкнаРаскладок.выбор = (номер) =>
  1273. {
  1274. // Игнорируем повторный выбор.
  1275. if (
  1276. мир.номерВыбраннойРаскладкиМаджонга &&
  1277. мир.номерВыбраннойРаскладкиМаджонга == номер
  1278. ) {
  1279. return;
  1280. }
  1281. мир.номерВыбраннойРаскладкиМаджонга = номер;
  1282. мир.уведомить("изменили номер выбранной раскладки маджонга");
  1283. };
  1284. };
  1285. // // // //
  1286. СоздатьОкноПодложку = мир =>
  1287. {
  1288. мир.окноПодложка = создатьОкно(мир, "окно-подложка", null, "/🎞️.css")
  1289. мир.окноПодложка.плавно = new ПлавноОтобразитьСкрыть(
  1290. мир.окноПодложка,
  1291. {
  1292. "прозрачность": 0.5,
  1293. }
  1294. );
  1295. };
  1296. // // // //
  1297. СоздатьОкноУправления = мир =>
  1298. {
  1299. мир.окноУправления = создатьОкно(мир, "окно-управления", "/🎛️.html", "/🎛️.css")
  1300. $("#кнопка-раскладки-отобразить").click(function() {
  1301. мир.уведомить("кнопка раскладки отобразить");
  1302. });
  1303. $("#кнопка-темы-отобразить").click(function() {
  1304. мир.уведомить("кнопка темы отобразить");
  1305. });
  1306. $(`#увеличить-масштаб`).click(function() {
  1307. мир.уведомить("кнопка увеличения масштаба");
  1308. });
  1309. $(`#уменьшить-масштаб`).click(function() {
  1310. мир.уведомить("кнопка уменьшения масштаба");
  1311. });
  1312. };
  1313. // // // //
  1314. ЗадатьСтилиМордыМаджонга = мир =>
  1315. {
  1316. var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  1317. добавитьCSS(м.содержимое["/🙈.css"]);
  1318. };
  1319. // MARK: /🎬.череда
  1320. gitjs.мир.разобрать(`
  1321. ручной пуск
  1322. задать стили морды маджонга
  1323. создать окно управления
  1324. создать окно подложку
  1325. создать окно раскладок
  1326. создать окно тем
  1327. кнопка раскладки отобразить
  1328. отобразить окно подложку
  1329. отобразить окно раскладок
  1330. скрыть окно управления
  1331. кнопка раскладки скрыть
  1332. скрыть окно подложку
  1333. скрыть окно раскладок
  1334. отобразить окно управления
  1335. кнопка темы отобразить
  1336. отобразить окно подложку
  1337. отобразить окно тем
  1338. скрыть окно управления
  1339. кнопка темы скрыть
  1340. скрыть окно подложку
  1341. скрыть окно тем
  1342. отобразить окно управления
  1343. `);
  1344. // MARK: /📍.css
  1345. модуль.содержимое["/📍.css"] = `
  1346. #окно-раскладки
  1347. {
  1348. position: fixed;
  1349. left: 1em;
  1350. top: 3em;
  1351. bottom: 3em;
  1352. right: 1em;
  1353. }
  1354. #окно-раскладки-заголовок
  1355. {
  1356. float: right;
  1357. }
  1358. #кнопка-раскладки-скрыть
  1359. {
  1360. position: fixed;
  1361. right: 0;
  1362. bottom: 2em;
  1363. margin: 1em;
  1364. }
  1365. `;
  1366. // MARK: /📍.html
  1367. модуль.содержимое["/📍.html"] = `
  1368. <div id="окно-раскладки-заголовок">
  1369. <span class="uk-text-large">Раскладки</span>
  1370. ⚬ <span class="uk-text-large uk-text-bold">键盘布局</span> ⚬
  1371. <span class="uk-text-large">Layouts</span>
  1372. </div>
  1373. <div id="окно-раскладки-список-родитель" class="прокрутка ширина-по-содержимому">
  1374. <table id="окно-раскладки-список" class="uk-table uk-table-divider"></table>
  1375. </div>
  1376. <a id="кнопка-раскладки-скрыть" uk-icon="icon: close; ratio: 2"></a>
  1377. `;
  1378. // MARK: /📖.js
  1379. ОтобразитьПоражение = мир =>
  1380. {
  1381. var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  1382. var сообщение = м.содержимое["/😭.html"];
  1383. UIkit.modal.alert(сообщение);
  1384. };
  1385. // // // //
  1386. ОтобразитьПобеду = мир =>
  1387. {
  1388. var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  1389. var сообщение = м.содержимое["/😀.html"];
  1390. UIkit.modal.alert(сообщение);
  1391. };
  1392. // // // //
  1393. ОтобразитьТекущееЗначениеМасштаба = мир =>
  1394. {
  1395. var масштаб = мир.масштаб * 100;
  1396. var сообщение = `🔍 ${масштаб}%`;
  1397. UIkit.notification({
  1398. message: сообщение,
  1399. timeout: 500
  1400. });
  1401. };
  1402. // // // //
  1403. ОтобразитьКоличествоФишекМаджонга = мир =>
  1404. {
  1405. $("#счёт-фишек").html(мир.количествоФишекМаджонга);
  1406. };
  1407. // // // //
  1408. ОтобразитьКоличествоХодовВМаджонге = мир =>
  1409. {
  1410. $("#счёт-ходов").html(мир.количествоХодовВМаджонге);
  1411. };
  1412. // // // //
  1413. ОтобразитьВыборТемыМаджонга = мир =>
  1414. {
  1415. var таблица = мир.таблицаОкнаТем;
  1416. // Очистить выбор.
  1417. for (var номер in таблица.строки)
  1418. {
  1419. var элемент = таблица.элемент(номер);
  1420. элемент.removeClass("выбранный-элемент-таблицы");
  1421. }
  1422. // Задать выбор.
  1423. var элемент = таблица.элемент(мир.номерВыбраннойТемыМаджонга);
  1424. элемент.addClass("выбранный-элемент-таблицы");
  1425. };
  1426. // // // //
  1427. ЗадатьСписокТемМаджонга = мир =>
  1428. {
  1429. var список = мир.списокТемМаджонга;
  1430. var номераНазвания = [];
  1431. for (var н in список)
  1432. {
  1433. var название = список[н];
  1434. var номер = Number(н) + 1;
  1435. номераНазвания.push([номер, название]);
  1436. }
  1437. мир.таблицаОкнаТем.задатьСтроки(номераНазвания);
  1438. };
  1439. // // // //
  1440. ОтобразитьВыборРаскладкиМаджонга = мир =>
  1441. {
  1442. var таблица = мир.таблицаОкнаРаскладок;
  1443. // Очистить выбор.
  1444. for (var номер in таблица.строки)
  1445. {
  1446. var элемент = таблица.элемент(номер);
  1447. элемент.removeClass("выбранный-элемент-таблицы");
  1448. }
  1449. // Задать выбор.
  1450. var элемент = таблица.элемент(мир.номерВыбраннойРаскладкиМаджонга);
  1451. элемент.addClass("выбранный-элемент-таблицы");
  1452. };
  1453. // // // //
  1454. ЗадатьСписокРаскладокМаджонга = мир =>
  1455. {
  1456. var список = мир.списокРаскладокМаджонга;
  1457. var номераНазвания = [];
  1458. for (var н in список)
  1459. {
  1460. var название = список[н];
  1461. var номер = Number(н) + 1;
  1462. номераНазвания.push([номер, название]);
  1463. }
  1464. мир.таблицаОкнаРаскладок.задатьСтроки(номераНазвания);
  1465. };
  1466. // // // //
  1467. ОтобразитьОкноУправления = мир =>
  1468. {
  1469. мир.окноУправления.плавно.отобразить();
  1470. }
  1471. // MARK: /🖼️.css
  1472. модуль.содержимое["/🖼️.css"] = `
  1473. #окно-темы
  1474. {
  1475. position: fixed;
  1476. left: 1em;
  1477. top: 3em;
  1478. bottom: 3em;
  1479. right: 1em;
  1480. }
  1481. #окно-темы-заголовок
  1482. {
  1483. float: left;
  1484. }
  1485. #кнопка-темы-скрыть
  1486. {
  1487. position: fixed;
  1488. left: 0;
  1489. bottom: 2em;
  1490. margin: 1em;
  1491. }
  1492. #окно-темы-список-родитель
  1493. {
  1494. float: right;
  1495. };
  1496. `;
  1497. // MARK: /🖼️.html
  1498. модуль.содержимое["/🖼️.html"] = `
  1499. <div id="окно-темы-заголовок">
  1500. <span class="uk-text-large">Темы</span>
  1501. ⚬ <span class="uk-text-large uk-text-bold">主题</span> ⚬
  1502. <span class="uk-text-large">Themes</span>
  1503. </div>
  1504. <div id="окно-темы-список-родитель" class="прокрутка ширина-по-содержимому">
  1505. <table id="окно-темы-список" class="uk-table uk-table-divider"></table>
  1506. </div>
  1507. <a id="кнопка-темы-скрыть" uk-icon="icon: close; ratio: 2"></a>
  1508. `;
  1509. // MARK: /😀.html
  1510. модуль.содержимое["/😀.html"] = `
  1511. <center>
  1512. <span class="uk-text-large">Победа</span>
  1513. <span class="uk-text-large">胜利</span>
  1514. <span class="uk-text-large">Victory</span>
  1515. </center>
  1516. `;
  1517. // MARK: /😭.html
  1518. модуль.содержимое["/😭.html"] = `
  1519. <center>
  1520. <span class="uk-text-large">Поражение</span>
  1521. <span class="uk-text-large">失败</span>
  1522. <span class="uk-text-large">Defeat</span>
  1523. </center>
  1524. `;
  1525. // MARK: /🙈.css
  1526. модуль.содержимое["/🙈.css"] = `
  1527. .окно-с-отступами
  1528. {
  1529. position: fixed;
  1530. left: 1em;
  1531. top: 1em;
  1532. bottom: 1em;
  1533. right: 1em;
  1534. }
  1535. .прокрутка
  1536. {
  1537. overflow: auto;
  1538. height: 100%;
  1539. }
  1540. .ширина-по-содержимому
  1541. {
  1542. display: inline-block;
  1543. }
  1544. .выбранный-элемент-таблицы
  1545. {
  1546. background: #eeeeee;
  1547. }
  1548. `;
  1549. // // // //
  1550. // MARK: https://git.opengamestudio.org/MAOH/MAOH/raw/branch/master/0000
  1551. // // // //
  1552. // MARK: /📦
  1553. модуль.содержимое["/📦"] = `
  1554. # Список указателей на модули для загрузки во время пуска
  1555. # 启动时要加载的模块指针列表
  1556. # List of module pointers to load at startup
  1557. https://git.opengamestudio.org/MAOH/PEEMA/raw/branch/master/0000
  1558. https://git.opengamestudio.org/MAOH/OTMA/raw/branch/master/0000
  1559. https://git.opengamestudio.org/MAOH/CYMA/raw/branch/master/0000
  1560. https://git.opengamestudio.org/MAOH/TEMA_M1K/raw/branch/master/0000
  1561. https://git.opengamestudio.org/MAOH/PACK_M1/raw/branch/master/0000
  1562. # Убрать после отладки
  1563. https://git.opengamestudio.org/MAOH/TEMA_OT/raw/branch/master/0000
  1564. https://git.opengamestudio.org/MAOH/PACK_OT/raw/branch/master/0000
  1565. `;
  1566. // MARK: /🙈.html
  1567. модуль.содержимое["/🙈.html"] = `
  1568. <center>
  1569. <p>Маджонг ⚬ 麻将 ⚬ Mahjong</p>
  1570. <h1>🀄 МАОН</h1>
  1571. <p>${версия}</p>
  1572. </center>
  1573. `;
  1574. // MARK: /🙈.css
  1575. модуль.содержимое["/🙈.css"] = `
  1576. .фон-экрана
  1577. {
  1578. background-color: white;
  1579. position: fixed;
  1580. left: 0;
  1581. top: 0;
  1582. right: 0;
  1583. bottom: 0;
  1584. width: 100%;
  1585. height: 100%;
  1586. }
  1587. `;
  1588. // MARK: /🎬.js
  1589. ЗадатьЗаголовок = мир =>
  1590. {
  1591. document.title = "🀄 МАОН";
  1592. };
  1593. // // // //
  1594. ОтобразитьСтраницуЗагрузки = мир =>
  1595. {
  1596. var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  1597. var вид = document.createElement("style");
  1598. document.head.appendChild(вид);
  1599. вид.innerHTML = м.содержимое["/🙈.css"];
  1600. var структура = м.содержимое["/🙈.html"]
  1601. .replace(/\${версия}/g, м.версия);
  1602. // Вставляем содержимое в рамку, чтобы применяемые стили UIkit не
  1603. // дёргали надписи.
  1604. // https://stackoverflow.com/a/8322025
  1605. var рамка = "<iframe id='экран-загрузки' class='фон-экрана' frameBorder='0'></iframe>";
  1606. document.body.insertAdjacentHTML("afterbegin", рамка);
  1607. document.getElementById("экран-загрузки").src = "data:text/html;charset=utf-8," + структура;
  1608. };
  1609. // MARK: /🎬.череда
  1610. gitjs.мир.разобрать(`
  1611. пуск
  1612. задать заголовок
  1613. отобразить страницу загрузки
  1614. `);
  1615. // MARK: /📦.js
  1616. ОкончитьЗагрузкуПриложения = мир =>
  1617. {
  1618. мир.уведомить("надо окончить загрузку приложения");
  1619. };
  1620. // // // //
  1621. ЗагрузитьБиблиотекиПриложения = мир =>
  1622. {
  1623. var указатели = [];
  1624. var м = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
  1625. var содержимое = м.содержимое["/📦"];
  1626. var строки = содержимое.split(/\n/);
  1627. for (var номер in строки)
  1628. {
  1629. var строка = строки[номер];
  1630. if (!строка.startsWith("#") && строка.length)
  1631. {
  1632. указатели.push(строка);
  1633. }
  1634. }
  1635. if (указатели.length)
  1636. {
  1637. var сообщение = "Загрузка библиотек ⚬ 加载库 ⚬ Loading libraries";
  1638. console.debug(сообщение, указатели);
  1639. мир.модули.использовали.подписатьРаз(function() {
  1640. мир.уведомить("ручной пуск");
  1641. мир.уведомить("загрузили библиотеки приложения");
  1642. });
  1643. мир.модули.использовать(указатели);
  1644. }
  1645. else
  1646. {
  1647. мир.уведомить("загрузили библиотеки приложения");
  1648. }
  1649. };
  1650. // // // //
  1651. ПроверитьНаличиеОбновленийПриложения = мир =>
  1652. {
  1653. // Эта функция находится вне "/🔄.js", т.к. "/🔄.js" отключаем,
  1654. // отчего этой функции просто не будет в пространстве имён.
  1655. var событие = "надо обновить приложение при наличии обновлений";
  1656. if (событие in мир.события)
  1657. {
  1658. мир.уведомить(событие);
  1659. }
  1660. else
  1661. {
  1662. мир.уведомить("обновления приложения отсутствуют");
  1663. }
  1664. };
  1665. // // // //
  1666. ПроверитьНаличиеПриложения = мир =>
  1667. {
  1668. // Эта функция находится вне "/🗜️.js", т.к. /🗜.js" отключаем,
  1669. // отчего этой функции просто не будет в пространстве имён.
  1670. var событие = "надо скачать архив приложения в случае его отсутствия";
  1671. if (событие in мир.события)
  1672. {
  1673. мир.уведомить(событие);
  1674. }
  1675. else
  1676. {
  1677. мир.уведомить("приложение присутствует");
  1678. }
  1679. };
  1680. // MARK: /📦.череда
  1681. gitjs.мир.разобрать(`
  1682. пуск
  1683. проверить наличие приложения
  1684. приложение присутствует
  1685. проверить наличие обновлений приложения
  1686. обновления приложения отсутствуют
  1687. загрузить библиотеки приложения
  1688. загрузили библиотеки приложения
  1689. окончить загрузку приложения
  1690. `);