差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
pc:goodsoftware:chrome:fb_switch_accounts [2014/07/23 18:27]
tony [補充]
pc:goodsoftware:chrome:fb_switch_accounts [2023/06/25 09:48] (目前版本)
行 1: 行 1:
-{{tag>​Software Computer Chrome}}+{{tag>​Software Computer Chrome ​facebook}}
 ====== Facebook Switch Accounts ====== ====== Facebook Switch Accounts ======
 ===== 安裝 ===== ===== 安裝 =====
行 15: 行 15:
   * 帳戶資料在網址列http與https所儲存的位置是不同的,因此兩種都需要匯入,如果沒問題就不需特別去處理。   * 帳戶資料在網址列http與https所儲存的位置是不同的,因此兩種都需要匯入,如果沒問題就不需特別去處理。
   * Facebook會自動清除帳號資料,必須重新匯入,主要原因是Chrome使用LocalStorage。遊戲頁面不會清除,可於遊戲頁面匯入。   * Facebook會自動清除帳號資料,必須重新匯入,主要原因是Chrome使用LocalStorage。遊戲頁面不會清除,可於遊戲頁面匯入。
- +  * 20140723改版後,無法正常使用。這是我修改後的版本: {{:pc:goodsoftware:chrome:fb_autologin_script.txt|}} 
-<code javascript>​ +  20150115臉書偷偷改登出按鈕,無法正常使用。這是我修改後的版本:{{:pc:goodsoftware:chrome:fb_autologin_script_20150115.txt|}} 
-// ==UserScript== +  20150208改進穩定度: {{:pc:goodsoftware:chrome:fb_autologin_script_20150208.txt|}} 
-// @name Facebook Switch Accounts +  * 20151227臉書又改了登出按鈕無法正常使用。這我修改後的版本:{{:pc:goodsoftware:chrome:fb_autologin_script_20151227.txt|}} 
-// @namespace FSA +  ​* 20160221臉書將按鈕插入點給改掉,無法正常使用。這是我修改後的版本{{:pc:goodsoftware:chrome:fb_autologin_script_20160221.txt|}}
-// @auther http://​mesak.wablog.info +
-// @description Fast login your facebook account! +
-// @include http://​*.facebook.com/​* +
-// @include https://​*.facebook.com/​* +
-// @match http://​*.facebook.com/​* +
-// @match https://​*.facebook.com/​* +
-// @exclude http://​*.facebook.com/​plugins/​* +
-// @exclude https://​*.facebook.com/​plugins/​* +
-// @exclude http://​*.facebook.com/​dialog/​* +
-// @exclude https://​*.facebook.com/​dialog/​* +
-// @version 2.84 +
-// ==/​UserScript== +
-var SUC_script_num = 63761; // Change this to the number given to the script by userscripts.org (check the address bar) +
-var version = '​2.84';​ +
-//var $=jQuery=(function(window){ +
-/*! jQuery v1.7.2 jquery.com | jquery.org/​license */ +
-(function(a,​b){function cy(a){return f.isWindow(a)?​a:​a.nodeType===9?​a.defaultView||a.parentWindow:​!1}function cu(a){if(!cj[a]){var b=c.body,​d=f("<"​+a+">"​).appendTo(b),​e=d.css("​display"​);​d.remove();​if(e==="​none"​||e===""​){ck||(ck=c.createElement("​iframe"​),​ck.frameBorder=ck.width=ck.height=0),​b.appendChild(ck);​if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,​cl.write((f.support.boxModel?"<​!doctype html>":""​)+"<​html><​body>"​),​cl.close();​d=cl.createElement(a),​cl.body.appendChild(d),​e=f.css(d,"​display"​),​b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};​f.each(cp.concat.apply([],​cp.slice(0,​b)),​function(){c[this]=a});​return c}function cs(){cq=b}function cr(){setTimeout(cs,​0);​return cq=f.now()}function ci(){try{return new a.ActiveXObject("​Microsoft.XMLHTTP"​)}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,​c){a.dataFilter&&​(c=a.dataFilter(c,​a.dataType));​var d=a.dataTypes,​e={},​g,​h,​i=d.length,​j,​k=d[0],​l,​m,​n,​o,​p;​for(g=1;​g<​i;​g++){if(g===1)for(h in a.converters)typeof h=="​string"&&​(e[h.toLowerCase()]=a.converters[h]);​l=k,​k=d[g];​if(k==="​*"​)k=l;​else if(l!=="​*"&&​l!==k){m=l+"​ "​+k,​n=e[m]||e["​* "​+k];​if(!n){p=b;​for(o in e){j=o.split("​ "​);​if(j[0]===l||j[0]==="​*"​){p=e[j[1]+"​ "​+k];​if(p){o=e[o],​o===!0?​n=p:​p===!0&&​(n=o);​break}}}}!n&&​!p&&​f.error("​No conversion from "​+m.replace("​ ","​ to "​)),​n!==!0&&​(c=n?​n(c):​p(o(c)))}}return c}function ca(a,​c,​d){var e=a.contents,​f=a.dataTypes,​g=a.responseFields,​h,​i,​j,​k;​for(i in g)i in d&&​(c[g[i]]=d[i]);​while(f[0]==="​*"​)f.shift(),​h===b&&​(h=a.mimeType||c.getResponseHeader("​content-type"​));​if(h)for(i in e)if(e[i]&&​e[i].test(h)){f.unshift(i);​break}if(f[0]in d)j=f[0];​else{for(i in d){if(!f[0]||a.converters[i+"​ "​+f[0]]){j=i;​break}k||(k=i)}j=j||k}if(j){j!==f[0]&&​f.unshift(j);​return d[j]}}function b_(a,​b,​c,​d){if(f.isArray(b))f.each(b,​function(b,​e){c||bD.test(a)?​d(a,​e):​b_(a+"​["​+(typeof e=="​object"?​b:""​)+"​]",​e,​c,​d)});​else if(!c&&​f.type(b)==="​object"​)for(var e in b)b_(a+"​["​+e+"​]",​b[e],​c,​d);​else d(a,​b)}function b$(a,c){var d,​e,​g=f.ajaxSettings.flatOptions||{};​for(d in c)c[d]!==b&&​((g[d]?​a:​e||(e={}))[d]=c[d]);​e&&​f.extend(!0,​a,​e)}function bZ(a,​c,​d,​e,​f,​g){f=f||c.dataTypes[0],​g=g||{},​g[f]=!0;​var h=a[f],​i=0,​j=h?​h.length:​0,​k=a===bS,​l;​for(;​i<​j&&​(k||!l);​i++)l=h[i](c,​d,​e),​typeof l=="​string"&&​(!k||g[l]?​l=b:​(c.dataTypes.unshift(l),​l=bZ(a,​c,​d,​e,​l,​g)));​(k||!l)&&​!g["​*"​]&&​(l=bZ(a,​c,​d,​e,"​*",​g));​return l}function bY(a){return function(b,​c){typeof b!="​string"&&​(c=b,​b="​*"​);​if(f.isFunction(c)){var d=b.toLowerCase().split(bO),​e=0,​g=d.length,​h,​i,​j;​for(;​e<​g;​e++)h=d[e],​j=/​^\+/​.test(h),​j&&​(h=h.substr(1)||"​*"​),​i=a[h]=a[h]||[],​i[j?"​unshift":"​push"​](c)}}}function bB(a,​b,​c){var d=b==="​width"?​a.offsetWidth:​a.offsetHeight,​e=b==="​width"?​1:​0,​g=4;​if(d>​0){if(c!=="​border"​)for(;​e<​g;​e+=2)c||(d-=parseFloat(f.css(a,"​padding"​+bx[e]))||0),​c==="​margin"?​d+=parseFloat(f.css(a,​c+bx[e]))||0:​d-=parseFloat(f.css(a,"​border"​+bx[e]+"​Width"​))||0;​return d+"​px"​}d=by(a,​b);​if(d<​0||d==null)d=a.style[b];​if(bt.test(d))return d;​d=parseFloat(d)||0;​if(c)for(;​e<​g;​e+=2)d+=parseFloat(f.css(a,"​padding"​+bx[e]))||0,​c!=="​padding"&&​(d+=parseFloat(f.css(a,"​border"​+bx[e]+"​Width"​))||0),​c==="​margin"&&​(d+=parseFloat(f.css(a,​c+bx[e]))||0);​return d+"​px"​}function bo(a){var b=c.createElement("​div"​);​bh.appendChild(b),​b.innerHTML=a.outerHTML;​return b.firstChild}function bn(a){var b=(a.nodeName||""​).toLowerCase();​b==="​input"?​bm(a):​b!=="​script"&&​typeof a.getElementsByTagName!="​undefined"&&​f.grep(a.getElementsByTagName("​input"​),​bm)}function bm(a){if(a.type==="​checkbox"​||a.type==="​radio"​)a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="​undefined"?​a.getElementsByTagName("​*"​):​typeof a.querySelectorAll!="​undefined"?​a.querySelectorAll("​*"​):​[]}function bk(a,b){var c;​b.nodeType===1&&​(b.clearAttributes&&​b.clearAttributes(),​b.mergeAttributes&&​b.mergeAttributes(a),​c=b.nodeName.toLowerCase(),​c==="​object"?​b.outerHTML=a.outerHTML:​c!=="​input"​||a.type!=="​checkbox"&&​a.type!=="​radio"?​c==="​option"?​b.selected=a.defaultSelected:​c==="​input"​||c==="​textarea"?​b.defaultValue=a.defaultValue:​c==="​script"&&​b.text!==a.text&&​(b.text=a.text):​(a.checked&&​(b.defaultChecked=b.checked=a.checked),​b.value!==a.value&&​(b.value=a.value)),​b.removeAttribute(f.expando),​b.removeAttribute("​_submit_attached"​),​b.removeAttribute("​_change_attached"​))}function bj(a,​b){if(b.nodeType===1&&​!!f.hasData(a)){var c,​d,​e,​g=f._data(a),​h=f._data(b,​g),​i=g.events;​if(i){delete h.handle,​h.events={};​for(c in i)for(d=0,​e=i[c].length;​d<​e;​d++)f.event.add(b,​c,​i[c][d])}h.data&&​(h.data=f.extend({},​h.data))}}function bi(a,​b){return f.nodeName(a,"​table"​)?​a.getElementsByTagName("​tbody"​)[0]||a.appendChild(a.ownerDocument.createElement("​tbody"​)):​a}function U(a){var b=V.split("​|"​),​c=a.createDocumentFragment();​if(c.createElement)while(b.length)c.createElement(b.pop());​return c}function T(a,​b,​c){b=b||0;​if(f.isFunction(b))return f.grep(a,​function(a,​d){var e=!!b.call(a,​d,​a);​return e===c});​if(b.nodeType)return f.grep(a,​function(a,​d){return a===b===c});​if(typeof b=="​string"​){var d=f.grep(a,​function(a){return a.nodeType===1});​if(O.test(b))return f.filter(b,​d,​!c);​b=f.filter(b,​d)}return f.grep(a,​function(a,​d){return f.inArray(a,​b)>​=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,​b,​c){var d=b+"​defer",​e=b+"​queue",​g=b+"​mark",​h=f._data(a,​d);​h&&​(c==="​queue"​||!f._data(a,​e))&&​(c==="​mark"​||!f._data(a,​g))&&​setTimeout(function(){!f._data(a,​e)&&​!f._data(a,​g)&&​(f.removeData(a,​d,​!0),​h.fire())},​0)}function m(a){for(var b in a){if(b==="​data"&&​f.isEmptyObject(a[b]))continue;​if(b!=="​toJSON"​)return!1}return!0}function l(a,​c,​d){if(d===b&&​a.nodeType===1){var e="​data-"​+c.replace(k,"​-$1"​).toLowerCase();​d=a.getAttribute(e);​if(typeof d=="​string"​){try{d=d==="​true"?​!0:​d==="​false"?​!1:​d==="​null"?​null:​f.isNumeric(d)?​+d:​j.test(d)?​f.parseJSON(d):​d}catch(g){}f.data(a,​c,​d)}else d=b}return d}function h(a){var b=g[a]={},​c,​d;​a=a.split(/​\s+/​);​for(c=0,​d=a.length;​c<​d;​c++)b[a[c]]=!0;​return b}var c=a.document,​d=a.navigator,​e=a.location,​f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("​left"​)}catch(a){setTimeout(J,​1);​return}e.ready()}}var e=function(a,​b){return new e.fn.init(a,​b,​h)},​f=a.jQuery,​g=a.$,​h,​i=/​^(?:​[^#<​]*(<​[\w\W]+>​)[^>​]*$|#​([\w\-]*)$)/,​j=/​\S/,​k=/​^\s+/,​l=/​\s+$/,​m=/​^<​(\w+)\s*\/?>​(?:<​\/​\1>​)?​$/,​n=/​^[\],:​{}\s]*$/,​o=/​\\(?:​["​\\\/​bfnrt]|u[0-9a-fA-F]{4})/​g,​p=/"​[^"​\\\n\r]*"​|true|false|null|-?​\d+(?:​\.\d*)?​(?:​[eE][+\-]?​\d+)?/​g,​q=/​(?:​^|:​|,​)(?:​\s*\[)+/​g,​r=/​(webkit)[ \/​]([\w.]+)/,​s=/​(opera)(?:​.*version)?​[ \/​]([\w.]+)/,​t=/​(msie) ([\w.]+)/,​u=/​(mozilla)(?:​.*?​ rv:​([\w.]+))?/,​v=/​-([a-z]|[0-9])/​ig,​w=/​^-ms-/,​x=function(a,​b){return(b+""​).toUpperCase()},​y=d.userAgent,​z,​A,​B,​C=Object.prototype.toString,​D=Object.prototype.hasOwnProperty,​E=Array.prototype.push,​F=Array.prototype.slice,​G=String.prototype.trim,​H=Array.prototype.indexOf,​I={};​e.fn=e.prototype={constructor:​e,​init:​function(a,​d,​f){var g,​h,​j,​k;​if(!a)return this;​if(a.nodeType){this.context=this[0]=a,​this.length=1;​return this}if(a==="​body"&&​!d&&​c.body){this.context=c,​this[0]=c.body,​this.selector=a,​this.length=1;​return this}if(typeof a=="​string"​){a.charAt(0)!=="<"​||a.charAt(a.length-1)!==">"​||a.length<​3?​g=i.exec(a):​g=[null,​a,​null];​if(g&&​(g[1]||!d)){if(g[1]){d=d instanceof e?​d[0]:​d,​k=d?​d.ownerDocument||d:​c,​j=m.exec(a),​j?​e.isPlainObject(d)?​(a=[c.createElement(j[1])],​e.fn.attr.call(a,​d,​!0)):​a=[k.createElement(j[1])]:​(j=e.buildFragment([g[1]],​[k]),​a=(j.cacheable?​e.clone(j.fragment):​j.fragment).childNodes);​return e.merge(this,​a)}h=c.getElementById(g[2]);​if(h&&​h.parentNode){if(h.id!==g[2])return f.find(a);​this.length=1,​this[0]=h}this.context=c,​this.selector=a;​return this}return!d||d.jquery?​(d||f).find(a):​this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);​a.selector!==b&&​(this.selector=a.selector,​this.context=a.context);​return e.makeArray(a,​this)},​selector:"",​jquery:"​1.7.2",​length:​0,​size:​function(){return this.length},​toArray:​function(){return F.call(this,​0)},​get:​function(a){return a==null?​this.toArray():​a<​0?​this[this.length+a]:​this[a]},​pushStack:​function(a,​b,​c){var d=this.constructor();​e.isArray(a)?​E.apply(d,​a):​e.merge(d,​a),​d.prevObject=this,​d.context=this.context,​b==="​find"?​d.selector=this.selector+(this.selector?"​ ":""​)+c:​b&&​(d.selector=this.selector+"​."​+b+"​("​+c+"​)"​);​return d},​each:​function(a,​b){return e.each(this,​a,​b)},​ready:​function(a){e.bindReady(),​A.add(a);​return this},​eq:​function(a){a=+a;​return a===-1?​this.slice(a):​this.slice(a,​a+1)},​first:​function(){return this.eq(0)},​last:​function(){return this.eq(-1)},​slice:​function(){return this.pushStack(F.apply(this,​arguments),"​slice",​F.call(arguments).join(","​))},​map:​function(a){return this.pushStack(e.map(this,​function(b,​c){return a.call(b,​c,​b)}))},​end:​function(){return this.prevObject||this.constructor(null)},​push:​E,​sort:​[].sort,​splice:​[].splice},​e.fn.init.prototype=e.fn,​e.extend=e.fn.extend=function(){var a,​c,​d,​f,​g,​h,​i=arguments[0]||{},​j=1,​k=arguments.length,​l=!1;​typeof i=="​boolean"&&​(l=i,​i=arguments[1]||{},​j=2),​typeof i!="​object"&&​!e.isFunction(i)&&​(i={}),​k===j&&​(i=this,​--j);​for(;​j<​k;​j++)if((a=arguments[j])!=null)for(c in a){d=i[c],​f=a[c];​if(i===f)continue;​l&&​f&&​(e.isPlainObject(f)||(g=e.isArray(f)))?​(g?​(g=!1,​h=d&&​e.isArray(d)?​d:​[]):​h=d&&​e.isPlainObject(d)?​d:​{},​i[c]=e.extend(l,​h,​f)):​f!==b&&​(i[c]=f)}return i},​e.extend({noConflict:​function(b){a.$===e&&​(a.$=g),​b&&​a.jQuery===e&&​(a.jQuery=f);​return e},​isReady:​!1,​readyWait:​1,​holdReady:​function(a){a?​e.readyWait++:​e.ready(!0)},​ready:​function(a){if(a===!0&&​!--e.readyWait||a!==!0&&​!e.isReady){if(!c.body)return setTimeout(e.ready,​1);​e.isReady=!0;​if(a!==!0&&​--e.readyWait>​0)return;​A.fireWith(c,​[e]),​e.fn.trigger&&​e(c).trigger("​ready"​).off("​ready"​)}},​bindReady:​function(){if(!A){A=e.Callbacks("​once memory"​);​if(c.readyState==="​complete"​)return setTimeout(e.ready,​1);​if(c.addEventListener)c.addEventListener("​DOMContentLoaded",​B,​!1),​a.addEventListener("​load",​e.ready,​!1);​else if(c.attachEvent){c.attachEvent("​onreadystatechange",​B),​a.attachEvent("​onload",​e.ready);​var b=!1;​try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&​b&&​J()}}},​isFunction:​function(a){return e.type(a)==="​function"​},​isArray:​Array.isArray||function(a){return e.type(a)==="​array"​},​isWindow:​function(a){return a!=null&&​a==a.window},​isNumeric:​function(a){return!isNaN(parseFloat(a))&&​isFinite(a)},​type:​function(a){return a==null?​String(a):​I[C.call(a)]||"​object"​},​isPlainObject:​function(a){if(!a||e.type(a)!=="​object"​||a.nodeType||e.isWindow(a))return!1;​try{if(a.constructor&&​!D.call(a,"​constructor"​)&&​!D.call(a.constructor.prototype,"​isPrototypeOf"​))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,​d)},​isEmptyObject:​function(a){for(var b in a)return!1;​return!0},​error:​function(a){throw new Error(a)},​parseJSON:​function(b){if(typeof b!="​string"​||!b)return null;​b=e.trim(b);​if(a.JSON&&​a.JSON.parse)return a.JSON.parse(b);​if(n.test(b.replace(o,"​@"​).replace(p,"​]"​).replace(q,""​)))return(new Function("​return "​+b))();​e.error("​Invalid JSON: "​+b)},​parseXML:​function(c){if(typeof c!="​string"​||!c)return null;var d,​f;​try{a.DOMParser?​(f=new DOMParser,​d=f.parseFromString(c,"​text/​xml"​)):​(d=new ActiveXObject("​Microsoft.XMLDOM"​),​d.async="​false",​d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("​parsererror"​).length)&&​e.error("​Invalid XML: "​+c);​return d},​noop:​function(){},​globalEval:​function(b){b&&​j.test(b)&&​(a.execScript||function(b){a.eval.call(a,​b)})(b)},​camelCase:​function(a){return a.replace(w,"​ms-"​).replace(v,​x)},​nodeName:​function(a,​b){return a.nodeName&&​a.nodeName.toUpperCase()===b.toUpperCase()},​each:​function(a,​c,​d){var f,​g=0,​h=a.length,​i=h===b||e.isFunction(a);​if(d){if(i){for(f in a)if(c.apply(a[f],​d)===!1)break}else for(;​g<​h;​)if(c.apply(a[g++],​d)===!1)break}else if(i){for(f in a)if(c.call(a[f],​f,​a[f])===!1)break}else for(;​g<​h;​)if(c.call(a[g],​g,​a[g++])===!1)break;​return a},​trim:​G?​function(a){return a==null?"":​G.call(a)}:​function(a){return a==null?"":​(a+""​).replace(k,""​).replace(l,""​)},​makeArray:​function(a,​b){var c=b||[];​if(a!=null){var d=e.type(a);​a.length==null||d==="​string"​||d==="​function"​||d==="​regexp"​||e.isWindow(a)?​E.call(c,​a):​e.merge(c,​a)}return c},​inArray:​function(a,​b,​c){var d;​if(b){if(H)return H.call(b,​a,​c);​d=b.length,​c=c?​c<​0?​Math.max(0,​d+c):​c:​0;​for(;​c<​d;​c++)if(c in b&&​b[c]===a)return c}return-1},​merge:​function(a,​c){var d=a.length,​e=0;​if(typeof c.length=="​number"​)for(var f=c.length;​e<​f;​e++)a[d++]=c[e];​else while(c[e]!==b)a[d++]=c[e++];​a.length=d;​return a},​grep:​function(a,​b,​c){var d=[],​e;​c=!!c;​for(var f=0,​g=a.length;​f<​g;​f++)e=!!b(a[f],​f),​c!==e&&​d.push(a[f]);​return d},​map:​function(a,​c,​d){var f,​g,​h=[],​i=0,​j=a.length,​k=a instanceof e||j!==b&&​typeof j=="​number"&&​(j>​0&&​a[0]&&​a[j-1]||j===0||e.isArray(a));​if(k)for(;​i<​j;​i++)f=c(a[i],​i,​d),​f!=null&&​(h[h.length]=f);​else for(g in a)f=c(a[g],​g,​d),​f!=null&&​(h[h.length]=f);​return h.concat.apply([],​h)},​guid:​1,​proxy:​function(a,​c){if(typeof c=="​string"​){var d=a[c];​c=a,​a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,​2),​g=function(){return a.apply(c,​f.concat(F.call(arguments)))};​g.guid=a.guid=a.guid||g.guid||e.guid++;​return g},​access:​function(a,​c,​d,​f,​g,​h,​i){var j,​k=d==null,​l=0,​m=a.length;​if(d&&​typeof d=="​object"​){for(l in d)e.access(a,​c,​l,​d[l],​1,​h,​f);​g=1}else if(f!==b){j=i===b&&​e.isFunction(f),​k&&​(j?​(j=c,​c=function(a,​b,​c){return j.call(e(a),​c)}):​(c.call(a,​f),​c=null));​if(c)for(;​l<​m;​l++)c(a[l],​d,​j?​f.call(a[l],​l,​c(a[l],​d)):​f,​i);​g=1}return g?​a:​k?​c.call(a):​m?​c(a[0],​d):​h},​now:​function(){return(new Date).getTime()},​uaMatch:​function(a){a=a.toLowerCase();​var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("​compatible"​)<​0&&​u.exec(a)||[];​return{browser:​b[1]||"",​version:​b[2]||"​0"​}},​sub:​function(){function a(b,​c){return new a.fn.init(b,​c)}e.extend(!0,​a,​this),​a.superclass=this,​a.fn=a.prototype=this(),​a.fn.constructor=a,​a.sub=this.sub,​a.fn.init=function(d,​f){f&&​f instanceof e&&​!(f instanceof a)&&​(f=a(f));​return e.fn.init.call(this,​d,​f,​b)},​a.fn.init.prototype=a.fn;​var b=a(c);​return a},​browser:​{}}),​e.each("​Boolean Number String Function Array Date RegExp Object"​.split("​ "​),​function(a,​b){I["​[object "​+b+"​]"​]=b.toLowerCase()}),​z=e.uaMatch(y),​z.browser&&​(e.browser[z.browser]=!0,​e.browser.version=z.version),​e.browser.webkit&&​(e.browser.safari=!0),​j.test("​ "​)&&​(k=/​^[\s\xA0]+/,​l=/​[\s\xA0]+$/​),​h=e(c),​c.addEventListener?​B=function(){c.removeEventListener("​DOMContentLoaded",​B,​!1),​e.ready()}:​c.attachEvent&&​(B=function(){c.readyState==="​complete"&&​(c.detachEvent("​onreadystatechange",​B),​e.ready())});​return e}(),​g={};​f.Callbacks=function(a){a=a?​g[a]||h(a):​{};​var c=[],​d=[],​e,​i,​j,​k,​l,​m,​n=function(b){var d,​e,​g,​h,​i;​for(d=0,​e=b.length;​d<​e;​d++)g=b[d],​h=f.type(g),​h==="​array"?​n(g):​h==="​function"&&​(!a.unique||!p.has(g))&&​c.push(g)},​o=function(b,​f){f=f||[],​e=!a.memory||[b,​f],​i=!0,​j=!0,​m=k||0,​k=0,​l=c.length;​for(;​c&&​m<​l;​m++)if(c[m].apply(b,​f)===!1&&​a.stopOnFalse){e=!0;​break}j=!1,​c&&​(a.once?​e===!0?​p.disable():​c=[]:​d&&​d.length&&​(e=d.shift(),​p.fireWith(e[0],​e[1])))},​p={add:​function(){if(c){var a=c.length;​n(arguments),​j?​l=c.length:​e&&​e!==!0&&​(k=a,​o(e[0],​e[1]))}return this},​remove:​function(){if(c){var b=arguments,​d=0,​e=b.length;​for(;​d<​e;​d++)for(var f=0;​f<​c.length;​f++)if(b[d]===c[f]){j&&​f<​=l&&​(l--,​f<​=m&&​m--),​c.splice(f--,​1);​if(a.unique)break}}return this},​has:​function(a){if(c){var b=0,​d=c.length;​for(;​b<​d;​b++)if(a===c[b])return!0}return!1},​empty:​function(){c=[];​return this},​disable:​function(){c=d=e=b;​return this},​disabled:​function(){return!c},​lock:​function(){d=b,​(!e||e===!0)&&​p.disable();​return this},​locked:​function(){return!d},​fireWith:​function(b,​c){d&&​(j?​a.once||d.push([b,​c]):​(!a.once||!e)&&​o(b,​c));​return this},​fire:​function(){p.fireWith(this,​arguments);​return this},​fired:​function(){return!!i}};​return p};var i=[].slice;​f.extend({Deferred:​function(a){var b=f.Callbacks("​once memory"​),​c=f.Callbacks("​once memory"​),​d=f.Callbacks("​memory"​),​e="​pending",​g={resolve:​b,​reject:​c,​notify:​d},​h={done:​b.add,​fail:​c.add,​progress:​d.add,​state:​function(){return e},​isResolved:​b.fired,​isRejected:​c.fired,​then:​function(a,​b,​c){i.done(a).fail(b).progress(c);​return this},​always:​function(){i.done.apply(i,​arguments).fail.apply(i,​arguments);​return this},​pipe:​function(a,​b,​c){return f.Deferred(function(d){f.each({done:​[a,"​resolve"​],​fail:​[b,"​reject"​],​progress:​[c,"​notify"​]},​function(a,​b){var c=b[0],​e=b[1],​g;​f.isFunction(c)?​i[a](function(){g=c.apply(this,​arguments),​g&&​f.isFunction(g.promise)?​g.promise().then(d.resolve,​d.reject,​d.notify):​d[e+"​With"​](this===i?​d:​this,​[g])}):​i[a](d[e])})}).promise()},​promise:​function(a){if(a==null)a=h;​else for(var b in h)a[b]=h[b];​return a}},​i=h.promise({}),​j;​for(j in g)i[j]=g[j].fire,​i[j+"​With"​]=g[j].fireWith;​i.done(function(){e="​resolved"​},​c.disable,​d.lock).fail(function(){e="​rejected"​},​b.disable,​d.lock),​a&&​a.call(i,​i);​return i},​when:​function(a){function m(a){return function(b){e[a]=arguments.length>​1?​i.call(arguments,​0):​b,​j.notifyWith(k,​e)}}function l(a){return function(c){b[a]=arguments.length>​1?​i.call(arguments,​0):​c,​--g||j.resolveWith(j,​b)}}var b=i.call(arguments,​0),​c=0,​d=b.length,​e=Array(d),​g=d,​h=d,​j=d<​=1&&​a&&​f.isFunction(a.promise)?​a:​f.Deferred(),​k=j.promise();​if(d>​1){for(;​c<​d;​c++)b[c]&&​b[c].promise&&​f.isFunction(b[c].promise)?​b[c].promise().then(l(c),​j.reject,​m(c)):​--g;​g||j.resolveWith(j,​b)}else j!==a&&​j.resolveWith(j,​d?​[a]:​[]);​return k}}),​f.support=function(){var b,​d,​e,​g,​h,​i,​j,​k,​l,​m,​n,​o,​p=c.createElement("​div"​),​q=c.documentElement;​p.setAttribute("​className","​t"​),​p.innerHTML=" ​  ​<​link/><​table></​table><​a href='/​a'​ style='​top:​1px;​float:​left;​opacity:​.55;'>​a</​a><​input type='​checkbox'/>",​d=p.getElementsByTagName("​*"​),​e=p.getElementsByTagName("​a"​)[0];​if(!d||!d.length||!e)return{};​g=c.createElement("​select"​),​h=g.appendChild(c.createElement("​option"​)),​i=p.getElementsByTagName("​input"​)[0],​b={leadingWhitespace:p.firstChild.nodeType===3,​tbody:​!p.getElementsByTagName("​tbody"​).length,​htmlSerialize:​!!p.getElementsByTagName("​link"​).length,​style:/​top/​.test(e.getAttribute("​style"​)),​hrefNormalized:​e.getAttribute("​href"​)==="/​a",​opacity:/​^0.55/​.test(e.style.opacity),​cssFloat:​!!e.style.cssFloat,​checkOn:​i.value==="​on",​optSelected:​h.selected,​getSetAttribute:​p.className!=="​t",​enctype:​!!c.createElement("​form"​).enctype,​html5Clone:​c.createElement("​nav"​).cloneNode(!0).outerHTML!=="<:​nav></:​nav>",​submitBubbles:​!0,​changeBubbles:​!0,​focusinBubbles:​!1,​deleteExpando:​!0,​noCloneEvent:​!0,​inlineBlockNeedsLayout:​!1,​shrinkWrapBlocks:​!1,​reliableMarginRight:​!0,​pixelMargin:​!0},​f.boxModel=b.boxModel=c.compatMode==="​CSS1Compat",​i.checked=!0,​b.noCloneChecked=i.cloneNode(!0).checked,​g.disabled=!0,​b.optDisabled=!h.disabled;​try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&​p.attachEvent&&​p.fireEvent&&​(p.attachEvent("​onclick",​function(){b.noCloneEvent=!1}),​p.cloneNode(!0).fireEvent("​onclick"​)),​i=c.createElement("​input"​),​i.value="​t",​i.setAttribute("​type","​radio"​),​b.radioValue=i.value==="​t",​i.setAttribute("​checked","​checked"​),​i.setAttribute("​name","​t"​),​p.appendChild(i),​j=c.createDocumentFragment(),​j.appendChild(p.lastChild),​b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,​b.appendChecked=i.checked,​j.removeChild(i),​j.appendChild(p);​if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="​on"​+n,​o=m in p,​o||(p.setAttribute(m,"​return;"​),​o=typeof p[m]=="​function"​),​b[n+"​Bubbles"​]=o;​j.removeChild(p),​j=g=h=p=i=null,​f(function(){var d,​e,​g,​h,​i,​j,​l,​m,​n,​q,​r,​s,​t,​u=c.getElementsByTagName("​body"​)[0];​!u||(m=1,​t="​padding:0;​margin:​0;​border:",​r="​position:​absolute;​top:​0;​left:​0;​width:​1px;​height:​1px;",​s=t+"​0;​visibility:​hidden;",​n="​style='"​+r+t+"​5px solid #​000;",​q="<​div "​+n+"​display:​block;'><​div style='"​+t+"​0;​display:​block;​overflow:​hidden;'></​div></​div>"​+"<​table "​+n+"'​ cellpadding='​0'​ cellspacing='​0'>"​+"<​tr><​td></​td></​tr></​table>",​d=c.createElement("​div"​),​d.style.cssText=s+"​width:​0;​height:​0;​position:​static;​top:​0;​margin-top:"​+m+"​px",​u.insertBefore(d,​u.firstChild),​p=c.createElement("​div"​),​d.appendChild(p),​p.innerHTML="<​table><​tr><​td style='"​+t+"​0;​display:​none'></​td><​td>​t</​td></​tr></​table>",​k=p.getElementsByTagName("​td"​),​o=k[0].offsetHeight===0,​k[0].style.display="",​k[1].style.display="​none",​b.reliableHiddenOffsets=o&&​k[0].offsetHeight===0,​a.getComputedStyle&&​(p.innerHTML="",​l=c.createElement("​div"​),​l.style.width="​0",​l.style.marginRight="​0",​p.style.width="​2px",​p.appendChild(l),​b.reliableMarginRight=(parseInt((a.getComputedStyle(l,​null)||{marginRight:​0}).marginRight,​10)||0)===0),​typeof p.style.zoom!="​undefined"&&​(p.innerHTML="",​p.style.width=p.style.padding="​1px",​p.style.border=0,​p.style.overflow="​hidden",​p.style.display="​inline",​p.style.zoom=1,​b.inlineBlockNeedsLayout=p.offsetWidth===3,​p.style.display="​block",​p.style.overflow="​visible",​p.innerHTML="<​div style='​width:​5px;'></​div>",​b.shrinkWrapBlocks=p.offsetWidth!==3),​p.style.cssText=r+s,​p.innerHTML=q,​e=p.firstChild,​g=e.firstChild,​i=e.nextSibling.firstChild.firstChild,​j={doesNotAddBorder:​g.offsetTop!==5,​doesAddBorderForTableAndCells:​i.offsetTop===5},​g.style.position="​fixed",​g.style.top="​20px",​j.fixedPosition=g.offsetTop===20||g.offsetTop===15,​g.style.position=g.style.top="",​e.style.overflow="​hidden",​e.style.position="​relative",​j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,​j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,​a.getComputedStyle&&​(p.style.marginTop="​1%",​b.pixelMargin=(a.getComputedStyle(p,​null)||{marginTop:​0}).marginTop!=="​1%"​),​typeof d.style.zoom!="​undefined"&&​(d.style.zoom=1),​u.removeChild(d),​l=p=d=null,​f.extend(b,​j))});​return b}();var j=/​^(?:​\{.*\}|\[.*\])$/,​k=/​([A-Z])/​g;​f.extend({cache:​{},​uuid:​0,​expando:"​jQuery"​+(f.fn.jquery+Math.random()).replace(/​\D/​g,""​),​noData:​{embed:​!0,​object:"​clsid:​D27CDB6E-AE6D-11cf-96B8-444553540000",​applet:​!0},​hasData:​function(a){a=a.nodeType?​f.cache[a[f.expando]]:​a[f.expando];​return!!a&&​!m(a)},​data:​function(a,​c,​d,​e){if(!!f.acceptData(a)){var g,​h,​i,​j=f.expando,​k=typeof c=="​string",​l=a.nodeType,​m=l?​f.cache:​a,​n=l?​a[j]:​a[j]&&​j,​o=c==="​events";​if((!n||!m[n]||!o&&​!e&&​!m[n].data)&&​k&&​d===b)return;​n||(l?​a[j]=n=++f.uuid:​n=j),​m[n]||(m[n]={},​l||(m[n].toJSON=f.noop));​if(typeof c=="​object"​||typeof c=="​function"​)e?​m[n]=f.extend(m[n],​c):​m[n].data=f.extend(m[n].data,​c);​g=h=m[n],​e||(h.data||(h.data={}),​h=h.data),​d!==b&&​(h[f.camelCase(c)]=d);​if(o&&​!h[c])return g.events;​k?​(i=h[c],​i==null&&​(i=h[f.camelCase(c)])):​i=h;​return i}},​removeData:​function(a,​b,​c){if(!!f.acceptData(a)){var d,​e,​g,​h=f.expando,​i=a.nodeType,​j=i?​f.cache:​a,​k=i?​a[h]:​h;​if(!j[k])return;​if(b){d=c?​j[k]:​j[k].data;​if(d){f.isArray(b)||(b in d?​b=[b]:​(b=f.camelCase(b),​b in d?​b=[b]:​b=b.split("​ "​)));​for(e=0,​g=b.length;​e<​g;​e++)delete d[b[e]];​if(!(c?​m:​f.isEmptyObject)(d))return}}if(!c){delete j[k].data;​if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?​delete j[k]:​j[k]=null,​i&&​(f.support.deleteExpando?​delete a[h]:​a.removeAttribute?​a.removeAttribute(h):​a[h]=null)}},​_data:​function(a,​b,​c){return f.data(a,​b,​c,​!0)},​acceptData:​function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];​if(b)return b!==!0&&​a.getAttribute("​classid"​)===b}return!0}}),​f.fn.extend({data:​function(a,​c){var d,​e,​g,​h,​i,​j=this[0],​k=0,​m=null;​if(a===b){if(this.length){m=f.data(j);​if(j.nodeType===1&&​!f._data(j,"​parsedAttrs"​)){g=j.attributes;​for(i=g.length;​k<​i;​k++)h=g[k].name,​h.indexOf("​data-"​)===0&&​(h=f.camelCase(h.substring(5)),​l(j,​h,​m[h]));​f._data(j,"​parsedAttrs",​!0)}}return m}if(typeof a=="​object"​)return this.each(function(){f.data(this,​a)});​d=a.split("​.",​2),​d[1]=d[1]?"​."​+d[1]:"",​e=d[1]+"​!";​return f.access(this,​function(c){if(c===b){m=this.triggerHandler("​getData"​+e,​[d[0]]),​m===b&&​j&&​(m=f.data(j,​a),​m=l(j,​a,​m));​return m===b&&​d[1]?​this.data(d[0]):​m}d[1]=c,​this.each(function(){var b=f(this);​b.triggerHandler("​setData"​+e,​d),​f.data(this,​a,​c),​b.triggerHandler("​changeData"​+e,​d)})},​null,​c,​arguments.length>​1,​null,​!1)},​removeData:​function(a){return this.each(function(){f.removeData(this,​a)})}}),​f.extend({_mark:​function(a,​b){a&&​(b=(b||"​fx"​)+"​mark",​f._data(a,​b,​(f._data(a,​b)||0)+1))},​_unmark:​function(a,​b,​c){a!==!0&&​(c=b,​b=a,​a=!1);​if(b){c=c||"​fx";​var d=c+"​mark",​e=a?​0:​(f._data(b,​d)||1)-1;​e?​f._data(b,​d,​e):​(f.removeData(b,​d,​!0),​n(b,​c,"​mark"​))}},​queue:​function(a,​b,​c){var d;​if(a){b=(b||"​fx"​)+"​queue",​d=f._data(a,​b),​c&&​(!d||f.isArray(c)?​d=f._data(a,​b,​f.makeArray(c)):​d.push(c));​return d||[]}},​dequeue:​function(a,​b){b=b||"​fx";​var c=f.queue(a,​b),​d=c.shift(),​e={};​d==="​inprogress"&&​(d=c.shift()),​d&&​(b==="​fx"&&​c.unshift("​inprogress"​),​f._data(a,​b+"​.run",​e),​d.call(a,​function(){f.dequeue(a,​b)},​e)),​c.length||(f.removeData(a,​b+"​queue "​+b+"​.run",​!0),​n(a,​b,"​queue"​))}}),​f.fn.extend({queue:​function(a,​c){var d=2;typeof a!="​string"&&​(c=a,​a="​fx",​d--);​if(arguments.length<​d)return f.queue(this[0],​a);​return c===b?​this:​this.each(function(){var b=f.queue(this,​a,​c);​a==="​fx"&&​b[0]!=="​inprogress"&&​f.dequeue(this,​a)})},​dequeue:​function(a){return this.each(function(){f.dequeue(this,​a)})},​delay:​function(a,​b){a=f.fx?​f.fx.speeds[a]||a:​a,​b=b||"​fx";​return this.queue(b,​function(b,​c){var d=setTimeout(b,​a);​c.stop=function(){clearTimeout(d)}})},​clearQueue:​function(a){return this.queue(a||"​fx",​[])},​promise:​function(a,​c){function m(){--h||d.resolveWith(e,​[e])}typeof a!="​string"&&​(c=a,​a=b),​a=a||"​fx";​var d=f.Deferred(),​e=this,​g=e.length,​h=1,​i=a+"​defer",​j=a+"​queue",​k=a+"​mark",​l;​while(g--)if(l=f.data(e[g],​i,​b,​!0)||(f.data(e[g],​j,​b,​!0)||f.data(e[g],​k,​b,​!0))&&​f.data(e[g],​i,​f.Callbacks("​once memory"​),​!0))h++,​l.add(m);​m();​return d.promise(c)}});​var o=/​[\n\t\r]/​g,​p=/​\s+/,​q=/​\r/​g,​r=/​^(?:​button|input)$/​i,​s=/​^(?:​button|input|object|select|textarea)$/​i,​t=/​^a(?:​rea)?​$/​i,​u=/​^(?:​autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/​i,​v=f.support.getSetAttribute,​w,​x,​y;​f.fn.extend({attr:​function(a,​b){return f.access(this,​f.attr,​a,​b,​arguments.length>​1)},​removeAttr:​function(a){return this.each(function(){f.removeAttr(this,​a)})},​prop:​function(a,​b){return f.access(this,​f.prop,​a,​b,​arguments.length>​1)},​removeProp:​function(a){a=f.propFix[a]||a;​return this.each(function(){try{this[a]=b,​delete this[a]}catch(c){}})},​addClass:​function(a){var b,​c,​d,​e,​g,​h,​i;​if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,​b,​this.className))});​if(a&&​typeof a=="​string"​){b=a.split(p);​for(c=0,​d=this.length;​c<​d;​c++){e=this[c];​if(e.nodeType===1)if(!e.className&&​b.length===1)e.className=a;​else{g="​ "​+e.className+"​ ";​for(h=0,​i=b.length;​h<​i;​h++)~g.indexOf("​ "​+b[h]+"​ "​)||(g+=b[h]+"​ "​);​e.className=f.trim(g)}}}return this},​removeClass:​function(a){var c,​d,​e,​g,​h,​i,​j;​if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,​b,​this.className))});​if(a&&​typeof a=="​string"​||a===b){c=(a||""​).split(p);​for(d=0,​e=this.length;​d<​e;​d++){g=this[d];​if(g.nodeType===1&&​g.className)if(a){h=("​ "​+g.className+"​ "​).replace(o,"​ "​);​for(i=0,​j=c.length;​i<​j;​i++)h=h.replace("​ "​+c[i]+"​ ","​ "​);​g.className=f.trim(h)}else g.className=""​}}return this},​toggleClass:​function(a,​b){var c=typeof a,d=typeof b=="​boolean";​if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,​c,​this.className,​b),​b)});​return this.each(function(){if(c==="​string"​){var e,​g=0,​h=f(this),​i=b,​j=a.split(p);​while(e=j[g++])i=d?​i:​!h.hasClass(e),​h[i?"​addClass":"​removeClass"​](e)}else if(c==="​undefined"​||c==="​boolean"​)this.className&&​f._data(this,"​__className__",​this.className),​this.className=this.className||a===!1?"":​f._data(this,"​__className__"​)||""​})},​hasClass:​function(a){var b=" "​+a+"​ ",​c=0,​d=this.length;​for(;​c<​d;​c++)if(this[c].nodeType===1&&​("​ "​+this[c].className+"​ "​).replace(o,"​ "​).indexOf(b)>​-1)return!0;​return!1},​val:​function(a){var c,​d,​e,​g=this[0];​{if(!!arguments.length){e=f.isFunction(a);​return this.each(function(d){var g=f(this),​h;​if(this.nodeType===1){e?​h=a.call(this,​d,​g.val()):​h=a,​h==null?​h="":​typeof h=="​number"?​h+="":​f.isArray(h)&&​(h=f.map(h,​function(a){return a==null?"":​a+""​})),​c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];​if(!c||!("​set"​in c)||c.set(this,​h,"​value"​)===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];​if(c&&"​get"​in c&&​(d=c.get(g,"​value"​))!==b)return d;​d=g.value;​return typeof d=="​string"?​d.replace(q,""​):​d==null?"":​d}}}}),​f.extend({valHooks:​{option:​{get:​function(a){var b=a.attributes.value;​return!b||b.specified?​a.value:​a.text}},​select:​{get:​function(a){var b,​c,​d,​e,​g=a.selectedIndex,​h=[],​i=a.options,​j=a.type==="​select-one";​if(g<​0)return null;​c=j?​g:​0,​d=j?​g+1:​i.length;​for(;​c<​d;​c++){e=i[c];​if(e.selected&&​(f.support.optDisabled?​!e.disabled:​e.getAttribute("​disabled"​)===null)&&​(!e.parentNode.disabled||!f.nodeName(e.parentNode,"​optgroup"​))){b=f(e).val();​if(j)return b;​h.push(b)}}if(j&&​!h.length&&​i.length)return f(i[g]).val();​return h},​set:​function(a,​b){var c=f.makeArray(b);​f(a).find("​option"​).each(function(){this.selected=f.inArray(f(this).val(),​c)>​=0}),​c.length||(a.selectedIndex=-1);​return c}}},​attrFn:​{val:​!0,​css:​!0,​html:​!0,​text:​!0,​data:​!0,​width:​!0,​height:​!0,​offset:​!0},​attr:​function(a,​c,​d,​e){var g,​h,​i,​j=a.nodeType;​if(!!a&&​j!==3&&​j!==8&&​j!==2){if(e&&​c in f.attrFn)return f(a)[c](d);​if(typeof a.getAttribute=="​undefined"​)return f.prop(a,​c,​d);​i=j!==1||!f.isXMLDoc(a),​i&&​(c=c.toLowerCase(),​h=f.attrHooks[c]||(u.test(c)?​x:​w));​if(d!==b){if(d===null){f.removeAttr(a,​c);​return}if(h&&"​set"​in h&&​i&&​(g=h.set(a,​d,​c))!==b)return g;​a.setAttribute(c,""​+d);​return d}if(h&&"​get"​in h&&​i&&​(g=h.get(a,​c))!==null)return g;​g=a.getAttribute(c);​return g===null?​b:​g}},​removeAttr:​function(a,​b){var c,​d,​e,​g,​h,​i=0;​if(b&&​a.nodeType===1){d=b.toLowerCase().split(p),​g=d.length;​for(;​i<​g;​i++)e=d[i],​e&&​(c=f.propFix[e]||e,​h=u.test(e),​h||f.attr(a,​e,""​),​a.removeAttribute(v?​e:​c),​h&&​c in a&&​(a[c]=!1))}},​attrHooks:​{type:​{set:​function(a,​b){if(r.test(a.nodeName)&&​a.parentNode)f.error("​type property can't be changed"​);​else if(!f.support.radioValue&&​b==="​radio"&&​f.nodeName(a,"​input"​)){var c=a.value;​a.setAttribute("​type",​b),​c&&​(a.value=c);​return b}}},​value:​{get:​function(a,​b){if(w&&​f.nodeName(a,"​button"​))return w.get(a,​b);​return b in a?​a.value:​null},​set:​function(a,​b,​c){if(w&&​f.nodeName(a,"​button"​))return w.set(a,​b,​c);​a.value=b}}},​propFix:​{tabindex:"​tabIndex",​readonly:"​readOnly","​for":"​htmlFor","​class":"​className",​maxlength:"​maxLength",​cellspacing:"​cellSpacing",​cellpadding:"​cellPadding",​rowspan:"​rowSpan",​colspan:"​colSpan",​usemap:"​useMap",​frameborder:"​frameBorder",​contenteditable:"​contentEditable"​},​prop:​function(a,​c,​d){var e,​g,​h,​i=a.nodeType;​if(!!a&&​i!==3&&​i!==8&&​i!==2){h=i!==1||!f.isXMLDoc(a),​h&&​(c=f.propFix[c]||c,​g=f.propHooks[c]);​return d!==b?​g&&"​set"​in g&&​(e=g.set(a,​d,​c))!==b?​e:​a[c]=d:​g&&"​get"​in g&&​(e=g.get(a,​c))!==null?​e:​a[c]}},​propHooks:​{tabIndex:​{get:​function(a){var c=a.getAttributeNode("​tabindex"​);​return c&&​c.specified?​parseInt(c.value,​10):​s.test(a.nodeName)||t.test(a.nodeName)&&​a.href?​0:​b}}}}),​f.attrHooks.tabindex=f.propHooks.tabIndex,​x={get:​function(a,​c){var d,​e=f.prop(a,​c);​return e===!0||typeof e!="​boolean"&&​(d=a.getAttributeNode(c))&&​d.nodeValue!==!1?​c.toLowerCase():​b},​set:​function(a,​b,​c){var d;​b===!1?​f.removeAttr(a,​c):​(d=f.propFix[c]||c,​d in a&&​(a[d]=!0),​a.setAttribute(c,​c.toLowerCase()));​return c}},​v||(y={name:​!0,​id:​!0,​coords:​!0},​w=f.valHooks.button={get:​function(a,​c){var d;​d=a.getAttributeNode(c);​return d&&​(y[c]?​d.nodeValue!=="":​d.specified)?​d.nodeValue:​b},​set:​function(a,​b,​d){var e=a.getAttributeNode(d);​e||(e=c.createAttribute(d),​a.setAttributeNode(e));​return e.nodeValue=b+""​}},​f.attrHooks.tabindex.set=w.set,​f.each(["​width","​height"​],​function(a,​b){f.attrHooks[b]=f.extend(f.attrHooks[b],​{set:​function(a,​c){if(c===""​){a.setAttribute(b,"​auto"​);​return c}}})}),​f.attrHooks.contenteditable={get:​w.get,​set:​function(a,​b,​c){b===""&&​(b="​false"​),​w.set(a,​b,​c)}}),​f.support.hrefNormalized||f.each(["​href","​src","​width","​height"​],​function(a,​c){f.attrHooks[c]=f.extend(f.attrHooks[c],​{get:​function(a){var d=a.getAttribute(c,​2);​return d===null?​b:​d}})}),​f.support.style||(f.attrHooks.style={get:​function(a){return a.style.cssText.toLowerCase()||b},​set:​function(a,​b){return a.style.cssText=""​+b}}),​f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,​{get:​function(a){var b=a.parentNode;​b&&​(b.selectedIndex,​b.parentNode&&​b.parentNode.selectedIndex);​return null}})),​f.support.enctype||(f.propFix.enctype="​encoding"​),​f.support.checkOn||f.each(["​radio","​checkbox"​],​function(){f.valHooks[this]={get:​function(a){return a.getAttribute("​value"​)===null?"​on":​a.value}}}),​f.each(["​radio","​checkbox"​],​function(){f.valHooks[this]=f.extend(f.valHooks[this],​{set:​function(a,​b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),​b)>​=0}})});​var z=/​^(?:​textarea|input|select)$/​i,​A=/​^([^\.]*)?​(?:​\.(.+))?​$/,​B=/​(?:​^|\s)hover(\.\S+)?​\b/,​C=/​^key/,​D=/​^(?:​mouse|contextmenu)|click/,​E=/​^(?:​focusinfocus|focusoutblur)$/,​F=/​^(\w*)(?:#​([\w\-]+))?​(?:​\.([\w\-]+))?​$/,​G=function( +
-a){var b=F.exec(a);​b&&​(b[1]=(b[1]||""​).toLowerCase(),​b[3]=b[3]&&​new RegExp("​(?:​^|\\s)"​+b[3]+"​(?:​\\s|$)"​));​return b},​H=function(a,​b){var c=a.attributes||{};​return(!b[1]||a.nodeName.toLowerCase()===b[1])&&​(!b[2]||(c.id||{}).value===b[2])&&​(!b[3]||b[3].test((c["​class"​]||{}).value))},​I=function(a){return f.event.special.hover?​a:​a.replace(B,"​mouseenter$1 mouseleave$1"​)};​f.event={add:​function(a,​c,​d,​e,​g){var h,​i,​j,​k,​l,​m,​n,​o,​p,​q,​r,​s;​if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&​(p=d,​d=p.handler,​g=p.selector),​d.guid||(d.guid=f.guid++),​j=h.events,​j||(h.events=j={}),​i=h.handle,​i||(h.handle=i=function(a){return typeof f!="​undefined"&&​(!a||f.event.triggered!==a.type)?​f.event.dispatch.apply(i.elem,​arguments):​b},​i.elem=a),​c=f.trim(I(c)).split("​ "​);​for(k=0;​k<​c.length;​k++){l=A.exec(c[k])||[],​m=l[1],​n=(l[2]||""​).split("​."​).sort(),​s=f.event.special[m]||{},​m=(g?​s.delegateType:​s.bindType)||m,​s=f.event.special[m]||{},​o=f.extend({type:​m,​origType:​l[1],​data:​e,​handler:​d,​guid:​d.guid,​selector:​g,​quick:​g&&​G(g),​namespace:​n.join("​."​)},​p),​r=j[m];​if(!r){r=j[m]=[],​r.delegateCount=0;​if(!s.setup||s.setup.call(a,​e,​n,​i)===!1)a.addEventListener?​a.addEventListener(m,​i,​!1):​a.attachEvent&&​a.attachEvent("​on"​+m,​i)}s.add&&​(s.add.call(a,​o),​o.handler.guid||(o.handler.guid=d.guid)),​g?​r.splice(r.delegateCount++,​0,​o):​r.push(o),​f.event.global[m]=!0}a=null}},​global:​{},​remove:​function(a,​b,​c,​d,​e){var g=f.hasData(a)&&​f._data(a),​h,​i,​j,​k,​l,​m,​n,​o,​p,​q,​r,​s;​if(!!g&&​!!(o=g.events)){b=f.trim(I(b||""​)).split("​ "​);​for(h=0;​h<​b.length;​h++){i=A.exec(b[h])||[],​j=k=i[1],​l=i[2];​if(!j){for(j in o)f.event.remove(a,​j+b[h],​c,​d,​!0);​continue}p=f.event.special[j]||{},​j=(d?​p.delegateType:​p.bindType)||j,​r=o[j]||[],​m=r.length,​l=l?​new RegExp("​(^|\\.)"​+l.split("​."​).sort().join("​\\.(?:​.*\\.)?"​)+"​(\\.|$)"​):​null;​for(n=0;​n<​r.length;​n++)s=r[n],​(e||k===s.origType)&&​(!c||c.guid===s.guid)&&​(!l||l.test(s.namespace))&&​(!d||d===s.selector||d==="​**"&&​s.selector)&&​(r.splice(n--,​1),​s.selector&&​r.delegateCount--,​p.remove&&​p.remove.call(a,​s));​r.length===0&&​m!==r.length&&​((!p.teardown||p.teardown.call(a,​l)===!1)&&​f.removeEvent(a,​j,​g.handle),​delete o[j])}f.isEmptyObject(o)&&​(q=g.handle,​q&&​(q.elem=null),​f.removeData(a,​["​events","​handle"​],​!0))}},​customEvent:{getData:​!0,​setData:​!0,​changeData:​!0},​trigger:​function(c,​d,​e,​g){if(!e||e.nodeType!==3&&​e.nodeType!==8){var h=c.type||c,​i=[],​j,​k,​l,​m,​n,​o,​p,​q,​r,​s;​if(E.test(h+f.event.triggered))return;​h.indexOf("​!"​)>​=0&&​(h=h.slice(0,​-1),​k=!0),​h.indexOf("​."​)>​=0&&​(i=h.split("​."​),​h=i.shift(),​i.sort());​if((!e||f.event.customEvent[h])&&​!f.event.global[h])return;​c=typeof c=="​object"?​c[f.expando]?​c:new f.Event(h,​c):new f.Event(h),​c.type=h,​c.isTrigger=!0,​c.exclusive=k,​c.namespace=i.join("​."​),​c.namespace_re=c.namespace?​new RegExp("​(^|\\.)"​+i.join("​\\.(?​:.*\\.)?"​)+"​(\\.|$)"​):null,o=h.indexOf(":"​)<​0?"​on"​+h:"";​if(!e){j=f.cache;​for(l in j)j[l].events&&​j[l].events[h]&&​f.event.trigger(c,​d,​j[l].handle.elem,​!0);​return}c.result=b,​c.target||(c.target=e),​d=d!=null?​f.makeArray(d):​[],​d.unshift(c),​p=f.event.special[h]||{};​if(p.trigger&&​p.trigger.apply(e,​d)===!1)return;​r=[[e,​p.bindType||h]];​if(!g&&​!p.noBubble&&​!f.isWindow(e)){s=p.delegateType||h,​m=E.test(s+h)?​e:​e.parentNode,​n=null;​for(;​m;​m=m.parentNode)r.push([m,​s]),​n=m;​n&&​n===e.ownerDocument&&​r.push([n.defaultView||n.parentWindow||a,​s])}for(l=0;​l<​r.length&&​!c.isPropagationStopped();​l++)m=r[l][0],​c.type=r[l][1],​q=(f._data(m,"​events"​)||{})[c.type]&&​f._data(m,"​handle"​),​q&&​q.apply(m,​d),​q=o&&​m[o],​q&&​f.acceptData(m)&&​q.apply(m,​d)===!1&&​c.preventDefault();​c.type=h,​!g&&​!c.isDefaultPrevented()&&​(!p._default||p._default.apply(e.ownerDocument,​d)===!1)&&​(h!=="​click"​||!f.nodeName(e,"​a"​))&&​f.acceptData(e)&&​o&&​e[h]&&​(h!=="​focus"&&​h!=="​blur"​||c.target.offsetWidth!==0)&&​!f.isWindow(e)&&​(n=e[o],​n&&​(e[o]=null),​f.event.triggered=h,​e[h](),​f.event.triggered=b,​n&&​(e[o]=n));​return c.result}},​dispatch:​function(c){c=f.event.fix(c||a.event);​var d=(f._data(this,"​events"​)||{})[c.type]||[],​e=d.delegateCount,​g=[].slice.call(arguments,​0),​h=!c.exclusive&&​!c.namespace,​i=f.event.special[c.type]||{},​j=[],​k,​l,​m,​n,​o,​p,​q,​r,​s,​t,​u;​g[0]=c,​c.delegateTarget=this;​if(!i.preDispatch||i.preDispatch.call(this,​c)!==!1){if(e&&​(!c.button||c.type!=="​click"​)){n=f(this),​n.context=this.ownerDocument||this;​for(m=c.target;​m!=this;​m=m.parentNode||this)if(m.disabled!==!0){p={},​r=[],​n[0]=m;​for(k=0;​k<​e;​k++)s=d[k],​t=s.selector,​p[t]===b&&​(p[t]=s.quick?​H(m,​s.quick):​n.is(t)),​p[t]&&​r.push(s);​r.length&&​j.push({elem:​m,​matches:​r})}}d.length>​e&&​j.push({elem:​this,​matches:​d.slice(e)});​for(k=0;​k<​j.length&&​!c.isPropagationStopped();​k++){q=j[k],​c.currentTarget=q.elem;​for(l=0;​l<​q.matches.length&&​!c.isImmediatePropagationStopped();​l++){s=q.matches[l];​if(h||!c.namespace&&​!s.namespace||c.namespace_re&&​c.namespace_re.test(s.namespace))c.data=s.data,​c.handleObj=s,​o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,​g),​o!==b&&​(c.result=o,​o===!1&&​(c.preventDefault(),​c.stopPropagation()))}}i.postDispatch&&​i.postDispatch.call(this,​c);​return c.result}},​props:"​attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which"​.split("​ "​),​fixHooks:​{},​keyHooks:​{props:"​char charCode key keyCode"​.split("​ "​),​filter:​function(a,​b){a.which==null&&​(a.which=b.charCode!=null?​b.charCode:​b.keyCode);​return a}},​mouseHooks:​{props:"​button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement"​.split("​ "​),​filter:​function(a,​d){var e,​f,​g,​h=d.button,​i=d.fromElement;​a.pageX==null&&​d.clientX!=null&&​(e=a.target.ownerDocument||c,​f=e.documentElement,​g=e.body,​a.pageX=d.clientX+(f&&​f.scrollLeft||g&&​g.scrollLeft||0)-(f&&​f.clientLeft||g&&​g.clientLeft||0),​a.pageY=d.clientY+(f&&​f.scrollTop||g&&​g.scrollTop||0)-(f&&​f.clientTop||g&&​g.clientTop||0)),​!a.relatedTarget&&​i&&​(a.relatedTarget=i===a.target?​d.toElement:​i),​!a.which&&​h!==b&&​(a.which=h&​1?​1:​h&​2?​3:​h&​4?​2:​0);​return a}},​fix:​function(a){if(a[f.expando])return a;var d,​e,​g=a,​h=f.event.fixHooks[a.type]||{},​i=h.props?​this.props.concat(h.props):​this.props;​a=f.Event(g);​for(d=i.length;​d;​)e=i[--d],​a[e]=g[e];​a.target||(a.target=g.srcElement||c),​a.target.nodeType===3&&​(a.target=a.target.parentNode),​a.metaKey===b&&​(a.metaKey=a.ctrlKey);​return h.filter?​h.filter(a,​g):​a},​special:​{ready:​{setup:​f.bindReady},​load:​{noBubble:​!0},​focus:​{delegateType:"​focusin"​},​blur:​{delegateType:"​focusout"​},​beforeunload:​{setup:​function(a,​b,​c){f.isWindow(this)&&​(this.onbeforeunload=c)},​teardown:​function(a,​b){this.onbeforeunload===b&&​(this.onbeforeunload=null)}}},​simulate:​function(a,​b,​c,​d){var e=f.extend(new f.Event,​c,​{type:​a,​isSimulated:​!0,​originalEvent:​{}});​d?​f.event.trigger(e,​null,​b):​f.event.dispatch.call(b,​e),​e.isDefaultPrevented()&&​c.preventDefault()}},​f.event.handle=f.event.dispatch,​f.removeEvent=c.removeEventListener?​function(a,​b,​c){a.removeEventListener&&​a.removeEventListener(b,​c,​!1)}:​function(a,​b,​c){a.detachEvent&&​a.detachEvent("​on"​+b,​c)},​f.Event=function(a,​b){if(!(this instanceof f.Event))return new f.Event(a,​b);​a&&​a.type?​(this.originalEvent=a,​this.type=a.type,​this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&​a.getPreventDefault()?​K:​J):​this.type=a,​b&&​f.extend(this,​b),​this.timeStamp=a&&​a.timeStamp||f.now(),​this[f.expando]=!0},​f.Event.prototype={preventDefault:​function(){this.isDefaultPrevented=K;​var a=this.originalEvent;​!a||(a.preventDefault?​a.preventDefault():​a.returnValue=!1)},​stopPropagation:​function(){this.isPropagationStopped=K;​var a=this.originalEvent;​!a||(a.stopPropagation&&​a.stopPropagation(),​a.cancelBubble=!0)},​stopImmediatePropagation:​function(){this.isImmediatePropagationStopped=K,​this.stopPropagation()},​isDefaultPrevented:​J,​isPropagationStopped:​J,​isImmediatePropagationStopped:​J},​f.each({mouseenter:"​mouseover",​mouseleave:"​mouseout"​},​function(a,​b){f.event.special[a]={delegateType:​b,​bindType:​b,​handle:​function(a){var c=this,​d=a.relatedTarget,​e=a.handleObj,​g=e.selector,​h;​if(!d||d!==c&&​!f.contains(c,​d))a.type=e.origType,​h=e.handler.apply(this,​arguments),​a.type=b;​return h}}}),​f.support.submitBubbles||(f.event.special.submit={setup:​function(){if(f.nodeName(this,"​form"​))return!1;​f.event.add(this,"​click._submit keypress._submit",​function(a){var c=a.target,​d=f.nodeName(c,"​input"​)||f.nodeName(c,"​button"​)?​c.form:​b;​d&&​!d._submit_attached&&​(f.event.add(d,"​submit._submit",​function(a){a._submit_bubble=!0}),​d._submit_attached=!0)})},​postDispatch:​function(a){a._submit_bubble&&​(delete a._submit_bubble,​this.parentNode&&​!a.isTrigger&&​f.event.simulate("​submit",​this.parentNode,​a,​!0))},​teardown:​function(){if(f.nodeName(this,"​form"​))return!1;​f.event.remove(this,"​._submit"​)}}),​f.support.changeBubbles||(f.event.special.change={setup:​function(){if(z.test(this.nodeName)){if(this.type==="​checkbox"​||this.type==="​radio"​)f.event.add(this,"​propertychange._change",​function(a){a.originalEvent.propertyName==="​checked"&&​(this._just_changed=!0)}),​f.event.add(this,"​click._change",​function(a){this._just_changed&&​!a.isTrigger&&​(this._just_changed=!1,​f.event.simulate("​change",​this,​a,​!0))});​return!1}f.event.add(this,"​beforeactivate._change",​function(a){var b=a.target;​z.test(b.nodeName)&&​!b._change_attached&&​(f.event.add(b,"​change._change",​function(a){this.parentNode&&​!a.isSimulated&&​!a.isTrigger&&​f.event.simulate("​change",​this.parentNode,​a,​!0)}),​b._change_attached=!0)})},​handle:​function(a){var b=a.target;​if(this!==b||a.isSimulated||a.isTrigger||b.type!=="​radio"&&​b.type!=="​checkbox"​)return a.handleObj.handler.apply(this,​arguments)},​teardown:​function(){f.event.remove(this,"​._change"​);​return z.test(this.nodeName)}}),​f.support.focusinBubbles||f.each({focus:"​focusin",​blur:"​focusout"​},​function(a,​b){var d=0,​e=function(a){f.event.simulate(b,​a.target,​f.event.fix(a),​!0)};​f.event.special[b]={setup:​function(){d++===0&&​c.addEventListener(a,​e,​!0)},​teardown:​function(){--d===0&&​c.removeEventListener(a,​e,​!0)}}}),​f.fn.extend({on:​function(a,​c,​d,​e,​g){var h,​i;​if(typeof a=="​object"​){typeof c!="​string"&&​(d=d||c,​c=b);​for(i in a)this.on(i,​c,​d,​a[i],​g);​return this}d==null&&​e==null?​(e=c,​d=c=b):​e==null&&​(typeof c=="​string"?​(e=d,​d=b):​(e=d,​d=c,​c=b));​if(e===!1)e=J;​else if(!e)return this;​g===1&&​(h=e,​e=function(a){f().off(a);​return h.apply(this,​arguments)},​e.guid=h.guid||(h.guid=f.guid++));​return this.each(function(){f.event.add(this,​a,​e,​d,​c)})},​one:​function(a,​b,​c,​d){return this.on(a,​b,​c,​d,​1)},​off:​function(a,​c,​d){if(a&&​a.preventDefault&&​a.handleObj){var e=a.handleObj;​f(a.delegateTarget).off(e.namespace?​e.origType+"​."​+e.namespace:​e.origType,​e.selector,​e.handler);​return this}if(typeof a=="​object"​){for(var g in a)this.off(g,​c,​a[g]);​return this}if(c===!1||typeof c=="​function"​)d=c,​c=b;​d===!1&&​(d=J);​return this.each(function(){f.event.remove(this,​a,​d,​c)})},​bind:​function(a,​b,​c){return this.on(a,​null,​b,​c)},​unbind:​function(a,​b){return this.off(a,​null,​b)},​live:​function(a,​b,​c){f(this.context).on(a,​this.selector,​b,​c);​return this},​die:​function(a,​b){f(this.context).off(a,​this.selector||"​**",​b);​return this},​delegate:​function(a,​b,​c,​d){return this.on(b,​a,​c,​d)},​undelegate:​function(a,​b,​c){return arguments.length==1?​this.off(a,"​**"​):​this.off(b,​a,​c)},​trigger:​function(a,​b){return this.each(function(){f.event.trigger(a,​b,​this)})},​triggerHandler:​function(a,​b){if(this[0])return f.event.trigger(a,​b,​this[0],​!0)},​toggle:​function(a){var b=arguments,​c=a.guid||f.guid++,​d=0,​e=function(c){var e=(f._data(this,"​lastToggle"​+a.guid)||0)%d;​f._data(this,"​lastToggle"​+a.guid,​e+1),​c.preventDefault();​return b[e].apply(this,​arguments)||!1};​e.guid=c;​while(d<​b.length)b[d++].guid=c;​return this.click(e)},​hover:​function(a,​b){return this.mouseenter(a).mouseleave(b||a)}}),​f.each("​blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu"​.split("​ "​),​function(a,​b){f.fn[b]=function(a,​c){c==null&&​(c=a,​a=null);​return arguments.length>​0?​this.on(b,​null,​a,​c):​this.trigger(b)},​f.attrFn&&​(f.attrFn[b]=!0),​C.test(b)&&​(f.event.fixHooks[b]=f.event.keyHooks),​D.test(b)&&​(f.event.fixHooks[b]=f.event.mouseHooks)}),​function(){function x(a,​b,​c,​e,​f,​g){for(var h=0,​i=e.length;​h<​i;​h++){var j=e[h];​if(j){var k=!1;​j=j[a];​while(j){if(j[d]===c){k=e[j.sizset];​break}if(j.nodeType===1){g||(j[d]=c,​j.sizset=h);​if(typeof b!="​string"​){if(j===b){k=!0;​break}}else if(m.filter(b,​[j]).length>​0){k=j;​break}}j=j[a]}e[h]=k}}}function w(a,​b,​c,​e,​f,​g){for(var h=0,​i=e.length;​h<​i;​h++){var j=e[h];​if(j){var k=!1;​j=j[a];​while(j){if(j[d]===c){k=e[j.sizset];​break}j.nodeType===1&&​!g&&​(j[d]=c,​j.sizset=h);​if(j.nodeName.toLowerCase()===b){k=j;​break}j=j[a]}e[h]=k}}}var a=/​((?:​\((?:​\([^()]+\)|[^()]+)+\)|\[(?:​\[[^\[\]]*\]|['"​][^'"​]*['"​]|[^\[\]'"​]+)+\]|\\.|[^ >​+~,​(\[\\]+)+|[>​+~])(\s*,​\s*)?​((?:​.|\r|\n)*)/​g,​d="​sizcache"​+(Math.random()+""​).replace("​.",""​),​e=0,​g=Object.prototype.toString,​h=!1,​i=!0,​j=/​\\/​g,​k=/​\r\n/​g,​l=/​\W/;​[0,​0].sort(function(){i=!1;​return 0});var m=function(b,​d,​e,​f){e=e||[],​d=d||c;​var h=d;​if(d.nodeType!==1&&​d.nodeType!==9)return[];​if(!b||typeof b!="​string"​)return e;var i,​j,​k,​l,​n,​q,​r,​t,​u=!0,​v=m.isXML(d),​w=[],​x=b;​do{a.exec(""​),​i=a.exec(x);​if(i){x=i[3],​w.push(i[1]);​if(i[2]){l=i[3];​break}}}while(i);​if(w.length>​1&&​p.exec(b))if(w.length===2&&​o.relative[w[0]])j=y(w[0]+w[1],​d,​f);​else{j=o.relative[w[0]]?​[d]:​m(w.shift(),​d);​while(w.length)b=w.shift(),​o.relative[b]&&​(b+=w.shift()),​j=y(b,​j,​f)}else{!f&&​w.length>​1&&​d.nodeType===9&&​!v&&​o.match.ID.test(w[0])&&​!o.match.ID.test(w[w.length-1])&&​(n=m.find(w.shift(),​d,​v),​d=n.expr?​m.filter(n.expr,​n.set)[0]:​n.set[0]);​if(d){n=f?​{expr:​w.pop(),​set:​s(f)}:​m.find(w.pop(),​w.length===1&&​(w[0]==="​~"​||w[0]==="​+"​)&&​d.parentNode?​d.parentNode:​d,​v),​j=n.expr?​m.filter(n.expr,​n.set):​n.set,​w.length>​0?​k=s(j):​u=!1;​while(w.length)q=w.pop(),​r=q,​o.relative[q]?​r=w.pop():​q="",​r==null&&​(r=d),​o.relative[q](k,​r,​v)}else k=w=[]}k||(k=j),​k||m.error(q||b);​if(g.call(k)==="​[object Array]"​)if(!u)e.push.apply(e,​k);​else if(d&&​d.nodeType===1)for(t=0;​k[t]!=null;​t++)k[t]&&​(k[t]===!0||k[t].nodeType===1&&​m.contains(d,​k[t]))&&​e.push(j[t]);​else for(t=0;​k[t]!=null;​t++)k[t]&&​k[t].nodeType===1&&​e.push(j[t]);​else s(k,​e);​l&&​(m(l,​h,​e,​f),​m.uniqueSort(e));​return e};​m.uniqueSort=function(a){if(u){h=i,​a.sort(u);​if(h)for(var b=1;​b<​a.length;​b++)a[b]===a[b-1]&&​a.splice(b--,​1)}return a},​m.matches=function(a,​b){return m(a,​null,​null,​b)},​m.matchesSelector=function(a,​b){return m(b,​null,​null,​[a]).length>​0},​m.find=function(a,​b,​c){var d,​e,​f,​g,​h,​i;​if(!a)return[];​for(e=0,​f=o.order.length;​e<​f;​e++){h=o.order[e];​if(g=o.leftMatch[h].exec(a)){i=g[1],​g.splice(1,​1);​if(i.substr(i.length-1)!=="​\\"​){g[1]=(g[1]||""​).replace(j,""​),​d=o.find[h](g,​b,​c);​if(d!=null){a=a.replace(o.match[h],""​);​break}}}}d||(d=typeof b.getElementsByTagName!="​undefined"?​b.getElementsByTagName("​*"​):​[]);​return{set:​d,​expr:​a}},​m.filter=function(a,​c,​d,​e){var f,​g,​h,​i,​j,​k,​l,​n,​p,​q=a,​r=[],​s=c,​t=c&&​c[0]&&​m.isXML(c[0]);​while(a&&​c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&​f[2]){k=o.filter[h],​l=f[1],​g=!1,​f.splice(1,​1);​if(l.substr(l.length-1)==="​\\"​)continue;​s===r&&​(r=[]);​if(o.preFilter[h]){f=o.preFilter[h](f,​s,​d,​r,​e,​t);​if(!f)g=i=!0;​else if(f===!0)continue}if(f)for(n=0;​(j=s[n])!=null;​n++)j&&​(i=k(j,​f,​n,​s),​p=e^i,​d&&​i!=null?​p?​g=!0:​s[n]=!1:​p&&​(r.push(j),​g=!0));​if(i!==b){d||(s=r),​a=a.replace(o.match[h],""​);​if(!g)return[];​break}}if(a===q)if(g==null)m.error(a);​else break;​q=a}return s},​m.error=function(a){throw new Error("​Syntax error, unrecognized expression: "​+a)};​var n=m.getText=function(a){var b,​c,​d=a.nodeType,​e="";​if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="​string"​)return a.textContent;​if(typeof a.innerText=="​string"​)return a.innerText.replace(k,""​);​for(a=a.firstChild;​a;​a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;​c=a[b];​b++)c.nodeType!==8&&​(e+=n(c));​return e},​o=m.selectors={order:​["​ID","​NAME","​TAG"​],​match:​{ID:/#​((?:​[\w\u00c0-\uFFFF\-]|\\.)+)/,​CLASS:/​\.((?:​[\w\u00c0-\uFFFF\-]|\\.)+)/,​NAME:/​\[name=['"​]*((?:​[\w\u00c0-\uFFFF\-]|\\.)+)['"​]*\]/,​ATTR:/​\[\s*((?:​[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:​(\S?​=)\s*(?:​(['"​])(.*?​)\3|(#?​(?:​[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,​TAG:/​^((?:​[\w\u00c0-\uFFFF\*\-]|\\.)+)/,​CHILD:/:​(only|nth|last|first)-child(?:​\(\s*(even|odd|(?:​[+\-]?​\d+|(?:​[+\-]?​\d*)?​n\s*(?:​[+\-]\s*\d+)?​))\s*\))?/,​POS:/:​(nth|eq|gt|lt|first|last|even|odd)(?:​\((\d*)\))?​(?​=[^\-]|$)/,​PSEUDO:/:​((?:​[\w\u00c0-\uFFFF\-]|\\.)+)(?:​\((['"​]?​)((?:​\([^\)]+\)|[^\(\)]*)+)\2\))?/​},​leftMatch:​{},​attrMap:​{"​class":"​className","​for":"​htmlFor"​},​attrHandle:​{href:​function(a){return a.getAttribute("​href"​)},​type:​function(a){return a.getAttribute("​type"​)}},​relative:​{"​+":​function(a,​b){var c=typeof b=="​string",​d=c&&​!l.test(b),​e=c&&​!d;​d&&​(b=b.toLowerCase());​for(var f=0,​g=a.length,​h;​f<​g;​f++)if(h=a[f]){while((h=h.previousSibling)&&​h.nodeType!==1);​a[f]=e||h&&​h.nodeName.toLowerCase()===b?​h||!1:​h===b}e&&​m.filter(b,​a,​!0)},">":​function(a,​b){var c,d=typeof b=="​string",​e=0,​f=a.length;​if(d&&​!l.test(b)){b=b.toLowerCase();​for(;​e<​f;​e++){c=a[e];​if(c){var g=c.parentNode;​a[e]=g.nodeName.toLowerCase()===b?​g:​!1}}}else{for(;​e<​f;​e++)c=a[e],​c&&​(a[e]=d?​c.parentNode:​c.parentNode===b);​d&&​m.filter(b,​a,​!0)}},"":​function(a,​b,​c){var d,​f=e++,​g=x;​typeof b=="​string"&&​!l.test(b)&&​(b=b.toLowerCase(),​d=b,​g=w),​g("​parentNode",​b,​f,​a,​d,​c)},"​~":​function(a,​b,​c){var d,​f=e++,​g=x;​typeof b=="​string"&&​!l.test(b)&&​(b=b.toLowerCase(),​d=b,​g=w),​g("​previousSibling",​b,​f,​a,​d,​c)}},​find:​{ID:​function(a,​b,​c){if(typeof b.getElementById!="​undefined"&&​!c){var d=b.getElementById(a[1]);​return d&&​d.parentNode?​[d]:​[]}},​NAME:​function(a,​b){if(typeof b.getElementsByName!="​undefined"​){var c=[],​d=b.getElementsByName(a[1]);​for(var e=0,​f=d.length;​e<​f;​e++)d[e].getAttribute("​name"​)===a[1]&&​c.push(d[e]);​return c.length===0?​null:​c}},​TAG:​function(a,​b){if(typeof b.getElementsByTagName!="​undefined"​)return b.getElementsByTagName(a[1])}},​preFilter:​{CLASS:​function(a,​b,​c,​d,​e,​f){a="​ "​+a[1].replace(j,""​)+"​ ";​if(f)return a;for(var g=0,​h;​(h=b[g])!=null;​g++)h&&​(e^(h.className&&​("​ "​+h.className+"​ "​).replace(/​[\t\n\r]/​g,"​ "​).indexOf(a)>​=0)?​c||d.push(h):​c&&​(b[g]=!1));​return!1},​ID:​function(a){return a[1].replace(j,""​)},​TAG:​function(a,​b){return a[1].replace(j,""​).toLowerCase()},​CHILD:​function(a){if(a[1]==="​nth"​){a[2]||m.error(a[0]),​a[2]=a[2].replace(/​^\+|\s*/​g,""​);​var b=/​(-?​)(\d*)(?:​n([+\-]?​\d*))?/​.exec(a[2]==="​even"&&"​2n"​||a[2]==="​odd"&&"​2n+1"​||!/​\D/​.test(a[2])&&"​0n+"​+a[2]||a[2]);​a[2]=b[1]+(b[2]||1)-0,​a[3]=b[3]-0}else a[2]&&​m.error(a[0]);​a[0]=e++;​return a},​ATTR:​function(a,​b,​c,​d,​e,​f){var g=a[1]=a[1].replace(j,""​);​!f&&​o.attrMap[g]&&​(a[1]=o.attrMap[g]),​a[4]=(a[4]||a[5]||""​).replace(j,""​),​a[2]==="​~="&&​(a[4]="​ "​+a[4]+"​ "​);​return a},​PSEUDO:​function(b,​c,​d,​e,​f){if(b[1]==="​not"​)if((a.exec(b[3])||""​).length>​1||/​^\w/​.test(b[3]))b[3]=m(b[3],​null,​null,​c);​else{var g=m.filter(b[3],​c,​d,​!0^f);​d||e.push.apply(e,​g);​return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;​return b},​POS:​function(a){a.unshift(!0);​return a}},​filters:​{enabled:​function(a){return a.disabled===!1&&​a.type!=="​hidden"​},​disabled:​function(a){return a.disabled===!0},​checked:​function(a){return a.checked===!0},​selected:​function(a){a.parentNode&&​a.parentNode.selectedIndex;​return a.selected===!0},​parent:​function(a){return!!a.firstChild},​empty:​function(a){return!a.firstChild},​has:​function(a,​b,​c){return!!m(c[3],​a).length},​header:​function(a){return/​h\d/​i.test(a.nodeName)},​text:​function(a){var b=a.getAttribute("​type"​),​c=a.type;​return a.nodeName.toLowerCase()==="​input"&&"​text"​===c&&​(b===c||b===null)},​radio:​function(a){return a.nodeName.toLowerCase()==="​input"&&"​radio"​===a.type},​checkbox:​function(a){return a.nodeName.toLowerCase()==="​input"&&"​checkbox"​===a.type},​file:​function(a){return a.nodeName.toLowerCase()==="​input"&&"​file"​===a.type},​password:​function(a){return a.nodeName.toLowerCase()==="​input"&&"​password"​===a.type},​submit:​function(a){var b=a.nodeName.toLowerCase();​return(b==="​input"​||b==="​button"​)&&"​submit"​===a.type},​image:​function(a){return a.nodeName.toLowerCase()==="​input"&&"​image"​===a.type},​reset:​function(a){var b=a.nodeName.toLowerCase();​return(b==="​input"​||b==="​button"​)&&"​reset"​===a.type},​button:​function(a){var b=a.nodeName.toLowerCase();​return b==="​input"&&"​button"​===a.type||b==="​button"​},​input:​function(a){return/​input|select|textarea|button/​i.test(a.nodeName)},​focus:​function(a){return a===a.ownerDocument.activeElement}},​setFilters:​{first:​function(a,​b){return b===0},​last:​function(a,​b,​c,​d){return b===d.length-1},​even:​function(a,​b){return b%2===0},​odd:​function(a,​b){return b%2===1},​lt:​function(a,​b,​c){return b<​c[3]-0},​gt:​function(a,​b,​c){return b>​c[3]-0},​nth:​function(a,​b,​c){return c[3]-0===b},​eq:​function(a,​b,​c){return c[3]-0===b}},​filter:​{PSEUDO:​function(a,​b,​c,​d){var e=b[1],​f=o.filters[e];​if(f)return f(a,​c,​b,​d);​if(e==="​contains"​)return(a.textContent||a.innerText||n([a])||""​).indexOf(b[3])>​=0;​if(e==="​not"​){var g=b[3];​for(var h=0,​i=g.length;​h<​i;​h++)if(g[h]===a)return!1;​return!0}m.error(e)},​CHILD:​function(a,​b){var c,​e,​f,​g,​h,​i,​j,​k=b[1],​l=a;​switch(k){case"​only":​case"​first":​while(l=l.previousSibling)if(l.nodeType===1)return!1;​if(k==="​first"​)return!0;​l=a;​case"​last":​while(l=l.nextSibling)if(l.nodeType===1)return!1;​return!0;​case"​nth":​c=b[2],​e=b[3];​if(c===1&&​e===0)return!0;​f=b[0],​g=a.parentNode;​if(g&&​(g[d]!==f||!a.nodeIndex)){i=0;​for(l=g.firstChild;​l;​l=l.nextSibling)l.nodeType===1&&​(l.nodeIndex=++i);​g[d]=f}j=a.nodeIndex-e;​return c===0?​j===0:​j%c===0&&​j/​c>​=0}},​ID:​function(a,​b){return a.nodeType===1&&​a.getAttribute("​id"​)===b},​TAG:​function(a,​b){return b==="​*"&&​a.nodeType===1||!!a.nodeName&&​a.nodeName.toLowerCase()===b},​CLASS:​function(a,​b){return("​ "​+(a.className||a.getAttribute("​class"​))+"​ "​).indexOf(b)>​-1},​ATTR:​function(a,​b){var c=b[1],​d=m.attr?​m.attr(a,​c):​o.attrHandle[c]?​o.attrHandle[c](a):​a[c]!=null?​a[c]:​a.getAttribute(c),​e=d+"",​f=b[2],​g=b[4];​return d==null?​f==="​!=":​!f&&​m.attr?​d!=null:​f==="​="?​e===g:​f==="​*="?​e.indexOf(g)>​=0:​f==="​~="?​("​ "​+e+"​ "​).indexOf(g)>​=0:​g?​f==="​!="?​e!==g:​f==="​^="?​e.indexOf(g)===0:​f==="​$="?​e.substr(e.length-g.length)===g:​f==="​|="?​e===g||e.substr(0,​g.length+1)===g+"​-":​!1:​e&&​d!==!1},​POS:​function(a,​b,​c,​d){var e=b[2],​f=o.setFilters[e];​if(f)return f(a,​c,​b,​d)}}},​p=o.match.POS,​q=function(a,​b){return"​\\"​+(b-0+1)};​for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/​(?​![^\[]*\])(?​![^\(]*\))/​.source),​o.leftMatch[r]=new RegExp(/​(^(?:​.|\r|\n)*?​)/​.source+o.match[r].source.replace(/​\\(\d+)/​g,​q));​o.match.globalPOS=p;​var s=function(a,​b){a=Array.prototype.slice.call(a,​0);​if(b){b.push.apply(b,​a);​return b}return a};​try{Array.prototype.slice.call(c.documentElement.childNodes,​0)[0].nodeType}catch(t){s=function(a,​b){var c=0,​d=b||[];​if(g.call(a)==="​[object Array]"​)Array.prototype.push.apply(d,​a);​else if(typeof a.length=="​number"​)for(var e=a.length;​c<​e;​c++)d.push(a[c]);​else for(;​a[c];​c++)d.push(a[c]);​return d}}var u,​v;​c.documentElement.compareDocumentPosition?​u=function(a,​b){if(a===b){h=!0;​return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?​-1:​1;​return a.compareDocumentPosition(b)&​4?​-1:​1}:​(u=function(a,​b){if(a===b){h=!0;​return 0}if(a.sourceIndex&&​b.sourceIndex)return a.sourceIndex-b.sourceIndex;​var c,​d,​e=[],​f=[],​g=a.parentNode,​i=b.parentNode,​j=g;​if(g===i)return v(a,​b);​if(!g)return-1;​if(!i)return 1;​while(j)e.unshift(j),​j=j.parentNode;​j=i;​while(j)f.unshift(j),​j=j.parentNode;​c=e.length,​d=f.length;​for(var k=0;​k<​c&&​k<​d;​k++)if(e[k]!==f[k])return v(e[k],​f[k]);​return k===c?​v(a,​f[k],​-1):​v(e[k],​b,​1)},​v=function(a,​b,​c){if(a===b)return c;var d=a.nextSibling;​while(d){if(d===b)return-1;​d=d.nextSibling}return 1}),​function(){var a=c.createElement("​div"​),​d="​script"​+(new Date).getTime(),​e=c.documentElement;​a.innerHTML="<​a name='"​+d+"'/>",​e.insertBefore(a,​e.firstChild),​c.getElementById(d)&&​(o.find.ID=function(a,​c,​d){if(typeof c.getElementById!="​undefined"&&​!d){var e=c.getElementById(a[1]);​return e?​e.id===a[1]||typeof e.getAttributeNode!="​undefined"&&​e.getAttributeNode("​id"​).nodeValue===a[1]?​[e]:​b:​[]}},​o.filter.ID=function(a,​b){var c=typeof a.getAttributeNode!="​undefined"&&​a.getAttributeNode("​id"​);​return a.nodeType===1&&​c&&​c.nodeValue===b}),​e.removeChild(a),​e=a=null}(),​function(){var a=c.createElement("​div"​);​a.appendChild(c.createComment(""​)),​a.getElementsByTagName("​*"​).length>​0&&​(o.find.TAG=function(a,​b){var c=b.getElementsByTagName(a[1]);​if(a[1]==="​*"​){var d=[];​for(var e=0;​c[e];​e++)c[e].nodeType===1&&​d.push(c[e]);​c=d}return c}),​a.innerHTML="<​a href='#'></​a>",​a.firstChild&&​typeof a.firstChild.getAttribute!="​undefined"&&​a.firstChild.getAttribute("​href"​)!=="#"&&​(o.attrHandle.href=function(a){return a.getAttribute("​href",​2)}),​a=null}(),​c.querySelectorAll&&​function(){var a=m,​b=c.createElement("​div"​),​d="​__sizzle__";​b.innerHTML="<​p class='​TEST'></​p>";​if(!b.querySelectorAll||b.querySelectorAll("​.TEST"​).length!==0){m=function(b,​e,​f,​g){e=e||c;​if(!g&&​!m.isXML(e)){var h=/​^(\w+$)|^\.([\w\-]+$)|^#​([\w\-]+$)/​.exec(b);​if(h&&​(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),​f);​if(h[2]&&​o.find.CLASS&&​e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),​f)}if(e.nodeType===9){if(b==="​body"&&​e.body)return s([e.body],​f);​if(h&&​h[3]){var i=e.getElementById(h[3]);​if(!i||!i.parentNode)return s([],​f);​if(i.id===h[3])return s([i],​f)}try{return s(e.querySelectorAll(b),​f)}catch(j){}}else if(e.nodeType===1&&​e.nodeName.toLowerCase()!=="​object"​){var k=e,​l=e.getAttribute("​id"​),​n=l||d,​p=e.parentNode,​q=/​^\s*[+~]/​.test(b);​l?​n=n.replace(/'/​g,"​\\$&"​):​e.setAttribute("​id",​n),​q&&​p&&​(e=e.parentNode);​try{if(!q||p)return s(e.querySelectorAll("​[id='"​+n+"'​] "​+b),​f)}catch(r){}finally{l||k.removeAttribute("​id"​)}}}return a(b,​e,​f,​g)};​for(var e in a)m[e]=a[e];​b=null}}(),​function(){var a=c.documentElement,​b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;​if(b){var d=!b.call(c.createElement("​div"​),"​div"​),​e=!1;​try{b.call(c.documentElement,"​[test!=''​]:​sizzle"​)}catch(f){e=!0}m.matchesSelector=function(a,​c){c=c.replace(/​\=\s*([^'"​\]]*)\s*\]/​g,"​='​$1'​]"​);​if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&​!/​!=/​.test(c)){var f=b.call(a,​c);​if(f||!d||a.document&&​a.document.nodeType!==11)return f}}catch(g){}return m(c,​null,​null,​[a]).length>​0}}}(),​function(){var a=c.createElement("​div"​);​a.innerHTML="<​div class='​test e'></​div><​div class='​test'></​div>";​if(!!a.getElementsByClassName&&​a.getElementsByClassName("​e"​).length!==0){a.lastChild.className="​e";​if(a.getElementsByClassName("​e"​).length===1)return;​o.order.splice(1,​0,"​CLASS"​),​o.find.CLASS=function(a,​b,​c){if(typeof b.getElementsByClassName!="​undefined"&&​!c)return b.getElementsByClassName(a[1])},​a=null}}(),​c.documentElement.contains?​m.contains=function(a,​b){return a!==b&&​(a.contains?​a.contains(b):​!0)}:​c.documentElement.compareDocumentPosition?​m.contains=function(a,​b){return!!(a.compareDocumentPosition(b)&​16)}:​m.contains=function(){return!1},​m.isXML=function(a){var b=(a?​a.ownerDocument||a:​0).documentElement;​return b?​b.nodeName!=="​HTML":​!1};​var y=function(a,​b,​c){var d,​e=[],​f="",​g=b.nodeType?​[b]:​b;​while(d=o.match.PSEUDO.exec(a))f+=d[0],​a=a.replace(o.match.PSEUDO,""​);​a=o.relative[a]?​a+"​*":​a;​for(var h=0,​i=g.length;​h<​i;​h++)m(a,​g[h],​e,​c);​return m.filter(f,​e)};​m.attr=f.attr,​m.selectors.attrMap={},​f.find=m,​f.expr=m.selectors,​f.expr[":"​]=f.expr.filters,​f.unique=m.uniqueSort,​f.text=m.getText,​f.isXMLDoc=m.isXML,​f.contains=m.contains}();​var L=/​Until$/,​M=/​^(?:​parents|prevUntil|prevAll)/,​N=/,/,​O=/​^.[^:#​\[\.,​]*$/,​P=Array.prototype.slice,​Q=f.expr.match.globalPOS,​R={children:​!0,​contents:​!0,​next:​!0,​prev:​!0};​f.fn.extend({find:​function(a){var b=this,​c,​d;​if(typeof a!="​string"​)return f(a).filter(function(){for(c=0,​d=b.length;​c<​d;​c++)if(f.contains(b[c],​this))return!0});​var e=this.pushStack("","​find",​a),​g,​h,​i;​for(c=0,​d=this.length;​c<​d;​c++){g=e.length,​f.find(a,​this[c],​e);​if(c>​0)for(h=g;​h<​e.length;​h++)for(i=0;​i<​g;​i++)if(e[i]===e[h]){e.splice(h--,​1);​break}}return e},​has:​function(a){var b=f(a);​return this.filter(function(){for(var a=0,​c=b.length;​a<​c;​a++)if(f.contains(this,​b[a]))return!0})},​not:​function(a){return this.pushStack(T(this,​a,​!1),"​not",​a)},​filter:​function(a){return this.pushStack(T(this,​a,​!0),"​filter",​a)},​is:​function(a){return!!a&&​(typeof a=="​string"?​Q.test(a)?​f(a,​this.context).index(this[0])>​=0:​f.filter(a,​this).length>​0:​this.filter(a).length>​0)},​closest:​function(a,​b){var c=[],​d,​e,​g=this[0];​if(f.isArray(a)){var h=1;​while(g&&​g.ownerDocument&&​g!==b){for(d=0;​d<​a.length;​d++)f(g).is(a[d])&&​c.push({selector:​a[d],​elem:​g,​level:​h});​g=g.parentNode,​h++}return c}var i=Q.test(a)||typeof a!="​string"?​f(a,​b||this.context):​0;​for(d=0,​e=this.length;​d<​e;​d++){g=this[d];​while(g){if(i?​i.index(g)>​-1:​f.find.matchesSelector(g,​a)){c.push(g);​break}g=g.parentNode;​if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>​1?​f.unique(c):​c;​return this.pushStack(c,"​closest",​a)},​index:​function(a){if(!a)return this[0]&&​this[0].parentNode?​this.prevAll().length:​-1;​if(typeof a=="​string"​)return f.inArray(this[0],​f(a));​return f.inArray(a.jquery?​a[0]:​a,​this)},​add:​function(a,​b){var c=typeof a=="​string"?​f(a,​b):​f.makeArray(a&&​a.nodeType?​[a]:​a),​d=f.merge(this.get(),​c);​return this.pushStack(S(c[0])||S(d[0])?​d:​f.unique(d))},​andSelf:​function(){return this.add(this.prevObject)}}),​f.each({parent:​function(a){var b=a.parentNode;​return b&&​b.nodeType!==11?​b:​null},​parents:​function(a){return f.dir(a,"​parentNode"​)},​parentsUntil:​function(a,​b,​c){return f.dir(a,"​parentNode",​c)},​next:​function(a){return f.nth(a,​2,"​nextSibling"​)},​prev:​function(a){return f.nth(a,​2,"​previousSibling"​)},​nextAll:​function(a){return f.dir(a,"​nextSibling"​)},​prevAll:​function(a){return f.dir(a,"​previousSibling"​)},​nextUntil:​function(a,​b,​c){return f.dir(a,"​nextSibling",​c)},​prevUntil:​function(a,​b,​c){return f.dir(a,"​previousSibling",​c)},​siblings:​function(a){return f.sibling((a.parentNode||{}).firstChild,​a)},​children:​function(a){return f.sibling(a.firstChild)},​contents:​function(a){return f.nodeName(a,"​iframe"​)?​a.contentDocument||a.contentWindow.document:​f.makeArray(a.childNodes)}},​function(a,​b){f.fn[a]=function(c,​d){var e=f.map(this,​b,​c);​L.test(a)||(d=c),​d&&​typeof d=="​string"&&​(e=f.filter(d,​e)),​e=this.length>​1&&​!R[a]?​f.unique(e):​e,​(this.length>​1||N.test(d))&&​M.test(a)&&​(e=e.reverse());​return this.pushStack(e,​a,​P.call(arguments).join(","​))}}),​f.extend({filter:​function(a,​b,​c){c&&​(a=":​not("​+a+"​)"​);​return b.length===1?​f.find.matchesSelector(b[0],​a)?​[b[0]]:​[]:​f.find.matches(a,​b)},​dir:​function(a,​c,​d){var e=[],​g=a[c];​while(g&&​g.nodeType!==9&&​(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&​e.push(g),​g=g[c];​return e},​nth:​function(a,​b,​c,​d){b=b||1;​var e=0;​for(;​a;​a=a[c])if(a.nodeType===1&&​++e===b)break;​return a},​sibling:​function(a,​b){var c=[];​for(;​a;​a=a.nextSibling)a.nodeType===1&&​a!==b&&​c.push(a);​return c}});var V="​abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",​W=/​ jQuery\d+="​(?:​\d+|null)"/​g,​X=/​^\s+/,​Y=/<​(?​!area|br|col|embed|hr|img|input|link|meta|param)(([\w:​]+)[^>​]*)\/>/​ig,​Z=/<​([\w:​]+)/,​$=/<​tbody/​i,​_=/<​|&#?​\w+;/,​ba=/<​(?:​script|style)/​i,​bb=/<​(?:​script|object|embed|option|style)/​i,​bc=new RegExp("<​(?:"​+V+"​)[\\s/>​]","​i"​),​bd=/​checked\s*(?:​[^=]|=\s*.checked.)/​i,​be=/​\/​(java|ecma)script/​i,​bf=/​^\s*<​!(?:​\[CDATA\[|\-\-)/,​bg={option:​[1,"<​select multiple='​multiple'>","</​select>"​],​legend:​[1,"<​fieldset>","</​fieldset>"​],​thead:​[1,"<​table>","</​table>"​],​tr:​[2,"<​table><​tbody>","</​tbody></​table>"​],​td:​[3,"<​table><​tbody><​tr>","</​tr></​tbody></​table>"​],​col:​[2,"<​table><​tbody></​tbody><​colgroup>","</​colgroup></​table>"​],​area:​[1,"<​map>","</​map>"​],​_default:​[0,"",""​]},​bh=U(c);​bg.optgroup=bg.option,​bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,​bg.th=bg.td,​f.support.htmlSerialize||(bg._default=[1,"​div<​div>","</​div>"​]),​f.fn.extend({text:​function(a){return f.access(this,​function(a){return a===b?​f.text(this):​this.empty().append((this[0]&&​this[0].ownerDocument||c).createTextNode(a))},​null,​a,​arguments.length)},​wrapAll:​function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,​b))});​if(this[0]){var b=f(a,​this[0].ownerDocument).eq(0).clone(!0);​this[0].parentNode&&​b.insertBefore(this[0]),​b.map(function(){var a=this;​while(a.firstChild&&​a.firstChild.nodeType===1)a=a.firstChild;​return a}).append(this)}return this},​wrapInner:​function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,​b))});​return this.each(function(){var b=f(this),​c=b.contents();​c.length?​c.wrapAll(a):​b.append(a)})},​wrap:​function(a){var b=f.isFunction(a);​return this.each(function(c){f(this).wrapAll(b?​a.call(this,​c):​a)})},​unwrap:​function(){return this.parent().each(function(){f.nodeName(this,"​body"​)||f(this).replaceWith(this.childNodes)}).end()},​append:​function(){return this.domManip(arguments,​!0,​function(a){this.nodeType===1&&​this.appendChild(a)})},​prepend:​function(){return this.domManip(arguments,​!0,​function(a){this.nodeType===1&&​this.insertBefore(a,​this.firstChild)})},​before:​function(){if(this[0]&&​this[0].parentNode)return this.domManip(arguments,​!1,​function(a){this.parentNode.insertBefore(a,​this)});​if(arguments.length){var a=f +
-.clean(arguments);​a.push.apply(a,​this.toArray());​return this.pushStack(a,"​before",​arguments)}},​after:​function(){if(this[0]&&​this[0].parentNode)return this.domManip(arguments,​!1,​function(a){this.parentNode.insertBefore(a,​this.nextSibling)});​if(arguments.length){var a=this.pushStack(this,"​after",​arguments);​a.push.apply(a,​f.clean(arguments));​return a}},​remove:​function(a,​b){for(var c=0,​d;​(d=this[c])!=null;​c++)if(!a||f.filter(a,​[d]).length)!b&&​d.nodeType===1&&​(f.cleanData(d.getElementsByTagName("​*"​)),​f.cleanData([d])),​d.parentNode&&​d.parentNode.removeChild(d);​return this},empty:function(){for(var a=0,​b;​(b=this[a])!=null;​a++){b.nodeType===1&&​f.cleanData(b.getElementsByTagName("​*"​));​while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,​b){a=a==null?​!1:a,​b=b==null?​a:b;return this.map(function(){return f.clone(this,​a,​b)})},​html:function(a){return f.access(this,​function(a){var c=this[0]||{},​d=0,​e=this.length;​if(a===b)return c.nodeType===1?​c.innerHTML.replace(W,""​):​null;​if(typeof a=="​string"&&​!ba.test(a)&&​(f.support.leadingWhitespace||!X.test(a))&&​!bg[(Z.exec(a)||["",""​])[1].toLowerCase()]){a=a.replace(Y,"<​$1></​$2>"​);​try{for(;​d<​e;​d++)c=this[d]||{},​c.nodeType===1&&​(f.cleanData(c.getElementsByTagName("​*"​)),​c.innerHTML=a);​c=0}catch(g){}}c&&​this.empty().append(a)},​null,​a,​arguments.length)},​replaceWith:​function(a){if(this[0]&&​this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),​d=c.html();​c.replaceWith(a.call(this,​b,​d))});​typeof a!="​string"&&​(a=f(a).detach());​return this.each(function(){var b=this.nextSibling,​c=this.parentNode;​f(this).remove(),​b?​f(b).before(a):​f(c).append(a)})}return this.length?​this.pushStack(f(f.isFunction(a)?​a():​a),"​replaceWith",​a):​this},​detach:​function(a){return this.remove(a,​!0)},​domManip:​function(a,​c,​d){var e,​g,​h,​i,​j=a[0],​k=[];​if(!f.support.checkClone&&​arguments.length===3&&​typeof j=="​string"&&​bd.test(j))return this.each(function(){f(this).domManip(a,​c,​d,​!0)});​if(f.isFunction(j))return this.each(function(e){var g=f(this);​a[0]=j.call(this,​e,​c?​g.html():​b),​g.domManip(a,​c,​d)});​if(this[0]){i=j&&​j.parentNode,​f.support.parentNode&&​i&&​i.nodeType===11&&​i.childNodes.length===this.length?​e={fragment:​i}:​e=f.buildFragment(a,​this,​k),​h=e.fragment,​h.childNodes.length===1?​g=h=h.firstChild:​g=h.firstChild;​if(g){c=c&&​f.nodeName(g,"​tr"​);​for(var l=0,​m=this.length,​n=m-1;​l<​m;​l++)d.call(c?​bi(this[l],​g):​this[l],​e.cacheable||m>​1&&​l<​n?​f.clone(h,​!0,​!0):​h)}k.length&&​f.each(k,​function(a,​b){b.src?​f.ajax({type:"​GET",​global:​!1,​url:​b.src,​async:​!1,​dataType:"​script"​}):​f.globalEval((b.text||b.textContent||b.innerHTML||""​).replace(bf,"/​*$0*/"​)),​b.parentNode&&​b.parentNode.removeChild(b)})}return this}}),​f.buildFragment=function(a,​b,​d){var e,​g,​h,​i,​j=a[0];​b&&​b[0]&&​(i=b[0].ownerDocument||b[0]),​i.createDocumentFragment||(i=c),​a.length===1&&​typeof j=="​string"&&​j.length<​512&&​i===c&&​j.charAt(0)==="<"&&​!bb.test(j)&&​(f.support.checkClone||!bd.test(j))&&​(f.support.html5Clone||!bc.test(j))&&​(g=!0,​h=f.fragments[j],​h&&​h!==1&&​(e=h)),​e||(e=i.createDocumentFragment(),​f.clean(a,​i,​e,​d)),​g&&​(f.fragments[j]=h?​e:​1);​return{fragment:​e,​cacheable:​g}},​f.fragments={},​f.each({appendTo:"​append",​prependTo:"​prepend",​insertBefore:"​before",​insertAfter:"​after",​replaceAll:"​replaceWith"​},​function(a,​b){f.fn[a]=function(c){var d=[],​e=f(c),​g=this.length===1&&​this[0].parentNode;​if(g&&​g.nodeType===11&&​g.childNodes.length===1&&​e.length===1){e[b](this[0]);​return this}for(var h=0,​i=e.length;​h<​i;​h++){var j=(h>​0?​this.clone(!0):​this).get();​f(e[h])[b](j),​d=d.concat(j)}return this.pushStack(d,​a,​e.selector)}}),​f.extend({clone:​function(a,​b,​c){var d,​e,​g,​h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"​+a.nodeName+">"​)?​a.cloneNode(!0):​bo(a);​if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&​(a.nodeType===1||a.nodeType===11)&&​!f.isXMLDoc(a)){bk(a,​h),​d=bl(a),​e=bl(h);​for(g=0;​d[g];​++g)e[g]&&​bk(d[g],​e[g])}if(b){bj(a,​h);​if(c){d=bl(a),​e=bl(h);​for(g=0;​d[g];​++g)bj(d[g],​e[g])}}d=e=null;​return h},​clean:​function(a,​b,​d,​e){var g,​h,​i,​j=[];​b=b||c,​typeof b.createElement=="​undefined"&&​(b=b.ownerDocument||b[0]&&​b[0].ownerDocument||c);​for(var k=0,​l;​(l=a[k])!=null;​k++){typeof l=="​number"&&​(l+=""​);​if(!l)continue;​if(typeof l=="​string"​)if(!_.test(l))l=b.createTextNode(l);​else{l=l.replace(Y,"<​$1></​$2>"​);​var m=(Z.exec(l)||["",""​])[1].toLowerCase(),​n=bg[m]||bg._default,​o=n[0],​p=b.createElement("​div"​),​q=bh.childNodes,​r;​b===c?​bh.appendChild(p):​U(b).appendChild(p),​p.innerHTML=n[1]+l+n[2];​while(o--)p=p.lastChild;​if(!f.support.tbody){var s=$.test(l),​t=m==="​table"&&​!s?​p.firstChild&&​p.firstChild.childNodes:​n[1]==="<​table>"&&​!s?​p.childNodes:​[];​for(i=t.length-1;​i>​=0;​--i)f.nodeName(t[i],"​tbody"​)&&​!t[i].childNodes.length&&​t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&​X.test(l)&&​p.insertBefore(b.createTextNode(X.exec(l)[0]),​p.firstChild),​l=p.childNodes,​p&&​(p.parentNode.removeChild(p),​q.length>​0&&​(r=q[q.length-1],​r&&​r.parentNode&&​r.parentNode.removeChild(r)))}var u;​if(!f.support.appendChecked)if(l[0]&&​typeof (u=l.length)=="​number"​)for(i=0;​i<​u;​i++)bn(l[i]);​else bn(l);​l.nodeType?​j.push(l):​j=f.merge(j,​l)}if(d){g=function(a){return!a.type||be.test(a.type)};​for(k=0;​j[k];​k++){h=j[k];​if(e&&​f.nodeName(h,"​script"​)&&​(!h.type||be.test(h.type)))e.push(h.parentNode?​h.parentNode.removeChild(h):​h);​else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("​script"​),​g);​j.splice.apply(j,​[k+1,​0].concat(v))}d.appendChild(h)}}}return j},​cleanData:​function(a){var b,​c,​d=f.cache,​e=f.event.special,​g=f.support.deleteExpando;​for(var h=0,​i;​(i=a[h])!=null;​h++){if(i.nodeName&&​f.noData[i.nodeName.toLowerCase()])continue;​c=i[f.expando];​if(c){b=d[c];​if(b&&​b.events){for(var j in b.events)e[j]?​f.event.remove(i,​j):​f.removeEvent(i,​j,​b.handle);​b.handle&&​(b.handle.elem=null)}g?​delete i[f.expando]:​i.removeAttribute&&​i.removeAttribute(f.expando),​delete d[c]}}}});​var bp=/​alpha\([^)]*\)/​i,​bq=/​opacity=([^)]*)/,​br=/​([A-Z]|^ms)/​g,​bs=/​^[\-+]?​(?:​\d*\.)?​\d+$/​i,​bt=/​^-?​(?:​\d*\.)?​\d+(?​!px)[^\d\s]+$/​i,​bu=/​^([\-+])=([\-+.\de]+)/,​bv=/​^margin/,​bw={position:"​absolute",​visibility:"​hidden",​display:"​block"​},​bx=["​Top","​Right","​Bottom","​Left"​],​by,​bz,​bA;​f.fn.css=function(a,​c){return f.access(this,​function(a,​c,​d){return d!==b?​f.style(a,​c,​d):​f.css(a,​c)},​a,​c,​arguments.length>​1)},​f.extend({cssHooks:​{opacity:​{get:​function(a,​b){if(b){var c=by(a,"​opacity"​);​return c===""?"​1":​c}return a.style.opacity}}},​cssNumber:​{fillOpacity:​!0,​fontWeight:​!0,​lineHeight:​!0,​opacity:​!0,​orphans:​!0,​widows:​!0,​zIndex:​!0,​zoom:​!0},​cssProps:​{"​float":​f.support.cssFloat?"​cssFloat":"​styleFloat"​},​style:​function(a,​c,​d,​e){if(!!a&&​a.nodeType!==3&&​a.nodeType!==8&&​!!a.style){var g,​h,​i=f.camelCase(c),​j=a.style,​k=f.cssHooks[i];​c=f.cssProps[i]||i;​if(d===b){if(k&&"​get"​in k&&​(g=k.get(a,​!1,​e))!==b)return g;return j[c]}h=typeof d,​h==="​string"&&​(g=bu.exec(d))&&​(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,​c)),​h="​number"​);​if(d==null||h==="​number"&&​isNaN(d))return;​h==="​number"&&​!f.cssNumber[i]&&​(d+="​px"​);​if(!k||!("​set"​in k)||(d=k.set(a,​d))!==b)try{j[c]=d}catch(l){}}},​css:​function(a,​c,​d){var e,​g;​c=f.camelCase(c),​g=f.cssHooks[c],​c=f.cssProps[c]||c,​c==="​cssFloat"&&​(c="​float"​);​if(g&&"​get"​in g&&​(e=g.get(a,​!0,​d))!==b)return e;​if(by)return by(a,​c)},​swap:​function(a,​b,​c){var d={},​e,​f;​for(f in b)d[f]=a.style[f],​a.style[f]=b[f];​e=c.call(a);​for(f in b)a.style[f]=d[f];​return e}}),​f.curCSS=f.css,​c.defaultView&&​c.defaultView.getComputedStyle&&​(bz=function(a,​b){var c,​d,​e,​g,​h=a.style;​b=b.replace(br,"​-$1"​).toLowerCase(),​(d=a.ownerDocument.defaultView)&&​(e=d.getComputedStyle(a,​null))&&​(c=e.getPropertyValue(b),​c===""&&​!f.contains(a.ownerDocument.documentElement,​a)&&​(c=f.style(a,​b))),​!f.support.pixelMargin&&​e&&​bv.test(b)&&​bt.test(c)&&​(g=h.width,​h.width=c,​c=e.width,​h.width=g);​return c}),​c.documentElement.currentStyle&&​(bA=function(a,​b){var c,​d,​e,​f=a.currentStyle&&​a.currentStyle[b],​g=a.style;​f==null&&​g&&​(e=g[b])&&​(f=e),​bt.test(f)&&​(c=g.left,​d=a.runtimeStyle&&​a.runtimeStyle.left,​d&&​(a.runtimeStyle.left=a.currentStyle.left),​g.left=b==="​fontSize"?"​1em":​f,​f=g.pixelLeft+"​px",​g.left=c,​d&&​(a.runtimeStyle.left=d));​return f===""?"​auto":​f}),​by=bz||bA,​f.each(["​height","​width"​],​function(a,​b){f.cssHooks[b]={get:​function(a,​c,​d){if(c)return a.offsetWidth!==0?​bB(a,​b,​d):​f.swap(a,​bw,​function(){return bB(a,​b,​d)})},​set:​function(a,​b){return bs.test(b)?​b+"​px":​b}}}),​f.support.opacity||(f.cssHooks.opacity={get:​function(a,​b){return bq.test((b&&​a.currentStyle?​a.currentStyle.filter:​a.style.filter)||""​)?​parseFloat(RegExp.$1)/​100+"":​b?"​1":""​},​set:​function(a,​b){var c=a.style,​d=a.currentStyle,​e=f.isNumeric(b)?"​alpha(opacity="​+b*100+"​)":"",​g=d&&​d.filter||c.filter||"";​c.zoom=1;​if(b>​=1&&​f.trim(g.replace(bp,""​))===""​){c.removeAttribute("​filter"​);​if(d&&​!d.filter)return}c.filter=bp.test(g)?​g.replace(bp,​e):​g+"​ "​+e}}),​f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:​function(a,​b){return f.swap(a,​{display:"​inline-block"​},​function(){return b?​by(a,"​margin-right"​):​a.style.marginRight})}})}),​f.expr&&​f.expr.filters&&​(f.expr.filters.hidden=function(a){var b=a.offsetWidth,​c=a.offsetHeight;​return b===0&&​c===0||!f.support.reliableHiddenOffsets&&​(a.style&&​a.style.display||f.css(a,"​display"​))==="​none"​},​f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),​f.each({margin:"",​padding:"",​border:"​Width"​},​function(a,​b){f.cssHooks[a+b]={expand:​function(c){var d,e=typeof c=="​string"?​c.split("​ "​):​[c],​f={};​for(d=0;​d<​4;​d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];​return f}}});var bC=/​%20/​g,​bD=/​\[\]$/,​bE=/​\r?​\n/​g,​bF=/#​.*$/,​bG=/​^(.*?​):​[ \t]*([^\r\n]*)\r?​$/​mg,​bH=/​^(?:​color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/​i,​bI=/​^(?:​about|app|app\-storage|.+\-extension|file|res|widget):​$/,​bJ=/​^(?:​GET|HEAD)$/,​bK=/​^\/​\//,​bL=/​\?/,​bM=/<​script\b[^<​]*(?:​(?​!<​\/​script>​)<​[^<​]*)*<​\/​script>/​gi,​bN=/​^(?:​select|textarea)/​i,​bO=/​\s+/,​bP=/​([?&​])_=[^&​]*/,​bQ=/​^([\w\+\.\-]+:​)(?:​\/​\/​([^\/?#:​]*)(?::​(\d+))?​)?/,​bR=f.fn.load,​bS={},​bT={},​bU,​bV,​bW=["​*/"​]+["​*"​];​try{bU=e.href}catch(bX){bU=c.createElement("​a"​),​bU.href="",​bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],​f.fn.extend({load:​function(a,​c,​d){if(typeof a!="​string"&&​bR)return bR.apply(this,​arguments);​if(!this.length)return this;var e=a.indexOf("​ "​);​if(e>​=0){var g=a.slice(e,​a.length);​a=a.slice(0,​e)}var h="​GET";​c&&​(f.isFunction(c)?​(d=c,​c=b):​typeof c=="​object"&&​(c=f.param(c,​f.ajaxSettings.traditional),​h="​POST"​));​var i=this;​f.ajax({url:​a,​type:​h,​dataType:"​html",​data:​c,​complete:​function(a,​b,​c){c=a.responseText,​a.isResolved()&&​(a.done(function(a){c=a}),​i.html(g?​f("<​div>"​).append(c.replace(bM,""​)).find(g):​c)),​d&&​i.each(d,​[c,​b,​a])}});​return this},​serialize:​function(){return f.param(this.serializeArray())},​serializeArray:​function(){return this.map(function(){return this.elements?​f.makeArray(this.elements):​this}).filter(function(){return this.name&&​!this.disabled&&​(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,​b){var c=f(this).val();​return c==null?​null:​f.isArray(c)?​f.map(c,​function(a,​c){return{name:​b.name,​value:​a.replace(bE,"​\r\n"​)}}):​{name:​b.name,​value:​c.replace(bE,"​\r\n"​)}}).get()}}),​f.each("​ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend"​.split("​ "​),​function(a,​b){f.fn[b]=function(a){return this.on(b,​a)}}),​f.each(["​get","​post"​],​function(a,​c){f[c]=function(a,​d,​e,​g){f.isFunction(d)&&​(g=g||e,​e=d,​d=b);​return f.ajax({type:​c,​url:​a,​data:​d,​success:​e,​dataType:​g})}}),​f.extend({getScript:​function(a,​c){return f.get(a,​b,​c,"​script"​)},​getJSON:​function(a,​b,​c){return f.get(a,​b,​c,"​json"​)},​ajaxSetup:​function(a,​b){b?​b$(a,​f.ajaxSettings):​(b=a,​a=f.ajaxSettings),​b$(a,​b);​return a},​ajaxSettings:​{url:​bU,​isLocal:​bI.test(bV[1]),​global:​!0,​type:"​GET",​contentType:"​application/​x-www-form-urlencoded;​ charset=UTF-8",​processData:​!0,​async:​!0,​accepts:​{xml:"​application/​xml,​ text/​xml",​html:"​text/​html",​text:"​text/​plain",​json:"​application/​json,​ text/​javascript","​*":​bW},​contents:​{xml:/​xml/,​html:/​html/,​json:/​json/​},​responseFields:​{xml:"​responseXML",​text:"​responseText"​},​converters:​{"​* text":​a.String,"​text html":​!0,"​text json":​f.parseJSON,"​text xml":​f.parseXML},​flatOptions:​{context:​!0,​url:​!0}},​ajaxPrefilter:​bY(bS),​ajaxTransport:​bY(bT),​ajax:​function(a,​c){function w(a,​c,​l,​m){if(s!==2){s=2,​q&&​clearTimeout(q),​p=b,​n=m||"",​v.readyState=a>​0?​4:​0;​var o,​r,​u,​w=c,​x=l?​ca(d,​v,​l):​b,​y,​z;​if(a>​=200&&​a<​300||a===304){if(d.ifModified){if(y=v.getResponseHeader("​Last-Modified"​))f.lastModified[k]=y;​if(z=v.getResponseHeader("​Etag"​))f.etag[k]=z}if(a===304)w="​notmodified",​o=!0;​else try{r=cb(d,​x),​w="​success",​o=!0}catch(A){w="​parsererror",​u=A}}else{u=w;​if(!w||a)w="​error",​a<​0&&​(a=0)}v.status=a,​v.statusText=""​+(c||w),​o?​h.resolveWith(e,​[r,​w,​v]):​h.rejectWith(e,​[v,​w,​u]),​v.statusCode(j),​j=b,​t&&​g.trigger("​ajax"​+(o?"​Success":"​Error"​),​[v,​d,​o?​r:​u]),​i.fireWith(e,​[v,​w]),​t&&​(g.trigger("​ajaxComplete",​[v,​d]),​--f.active||f.event.trigger("​ajaxStop"​))}}typeof a=="​object"&&​(c=a,​a=b),​c=c||{};​var d=f.ajaxSetup({},​c),​e=d.context||d,​g=e!==d&&​(e.nodeType||e instanceof f)?​f(e):​f.event,​h=f.Deferred(),​i=f.Callbacks("​once memory"​),​j=d.statusCode||{},​k,​l={},​m={},​n,​o,​p,​q,​r,​s=0,​t,​u,​v={readyState:​0,​setRequestHeader:​function(a,​b){if(!s){var c=a.toLowerCase();​a=m[c]=m[c]||a,​l[a]=b}return this},​getAllResponseHeaders:​function(){return s===2?​n:​null},​getResponseHeader:​function(a){var c;​if(s===2){if(!o){o={};​while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?​null:​c},​overrideMimeType:​function(a){s||(d.mimeType=a);​return this},​abort:​function(a){a=a||"​abort",​p&&​p.abort(a),​w(0,​a);​return this}};​h.promise(v),​v.success=v.done,​v.error=v.fail,​v.complete=i.add,​v.statusCode=function(a){if(a){var b;​if(s<​2)for(b in a)j[b]=[j[b],​a[b]];​else b=a[v.status],​v.then(b,​b)}return this},​d.url=((a||d.url)+""​).replace(bF,""​).replace(bK,​bV[1]+"//"​),​d.dataTypes=f.trim(d.dataType||"​*"​).toLowerCase().split(bO),​d.crossDomain==null&&​(r=bQ.exec(d.url.toLowerCase()),​d.crossDomain=!(!r||r[1]==bV[1]&&​r[2]==bV[2]&&​(r[3]||(r[1]==="​http:"?​80:​443))==(bV[3]||(bV[1]==="​http:"?​80:​443)))),​d.data&&​d.processData&&​typeof d.data!="​string"&&​(d.data=f.param(d.data,​d.traditional)),​bZ(bS,​d,​c,​v);​if(s===2)return!1;​t=d.global,​d.type=d.type.toUpperCase(),​d.hasContent=!bJ.test(d.type),​t&&​f.active++===0&&​f.event.trigger("​ajaxStart"​);​if(!d.hasContent){d.data&&​(d.url+=(bL.test(d.url)?"&":"?"​)+d.data,​delete d.data),​k=d.url;​if(d.cache===!1){var x=f.now(),​y=d.url.replace(bP,"​$1_="​+x);​d.url=y+(y===d.url?​(bL.test(d.url)?"&":"?"​)+"​_="​+x:""​)}}(d.data&&​d.hasContent&&​d.contentType!==!1||c.contentType)&&​v.setRequestHeader("​Content-Type",​d.contentType),​d.ifModified&&​(k=k||d.url,​f.lastModified[k]&&​v.setRequestHeader("​If-Modified-Since",​f.lastModified[k]),​f.etag[k]&&​v.setRequestHeader("​If-None-Match",​f.etag[k])),​v.setRequestHeader("​Accept",​d.dataTypes[0]&&​d.accepts[d.dataTypes[0]]?​d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="​*"?",​ "​+bW+";​ q=0.01":""​):​d.accepts["​*"​]);​for(u in d.headers)v.setRequestHeader(u,​d.headers[u]);​if(d.beforeSend&&​(d.beforeSend.call(e,​v,​d)===!1||s===2)){v.abort();​return!1}for(u in{success:​1,​error:​1,​complete:​1})v[u](d[u]);​p=bZ(bT,​d,​c,​v);​if(!p)w(-1,"​No Transport"​);​else{v.readyState=1,​t&&​g.trigger("​ajaxSend",​[v,​d]),​d.async&&​d.timeout>​0&&​(q=setTimeout(function(){v.abort("​timeout"​)},​d.timeout));​try{s=1,​p.send(l,​w)}catch(z){if(s<​2)w(-1,​z);​else throw z}}return v},​param:​function(a,​c){var d=[],​e=function(a,​b){b=f.isFunction(b)?​b():​b,​d[d.length]=encodeURIComponent(a)+"​="​+encodeURIComponent(b)};​c===b&&​(c=f.ajaxSettings.traditional);​if(f.isArray(a)||a.jquery&&​!f.isPlainObject(a))f.each(a,​function(){e(this.name,​this.value)});​else for(var g in a)b_(g,​a[g],​c,​e);​return d.join("&"​).replace(bC,"​+"​)}}),​f.extend({active:​0,​lastModified:​{},​etag:​{}});​var cc=f.now(),​cd=/​(\=)\?​(&​|$)|\?​\?/​i;​f.ajaxSetup({jsonp:"​callback",​jsonpCallback:​function(){return f.expando+"​_"​+cc++}}),​f.ajaxPrefilter("​json jsonp",​function(b,​c,​d){var e=typeof b.data=="​string"&&/​^application\/​x\-www\-form\-urlencoded/​.test(b.contentType);​if(b.dataTypes[0]==="​jsonp"​||b.jsonp!==!1&&​(cd.test(b.url)||e&&​cd.test(b.data))){var g,​h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?​b.jsonpCallback():​b.jsonpCallback,​i=a[h],​j=b.url,​k=b.data,​l="​$1"​+h+"​$2";​b.jsonp!==!1&&​(j=j.replace(cd,​l),​b.url===j&&​(e&&​(k=k.replace(cd,​l)),​b.data===k&&​(j+=(/​\?/​.test(j)?"&":"?"​)+b.jsonp+"​="​+h))),​b.url=j,​b.data=k,​a[h]=function(a){g=[a]},​d.always(function(){a[h]=i,​g&&​f.isFunction(i)&&​a[h](g[0])}),​b.converters["​script json"​]=function(){g||f.error(h+"​ was not called"​);​return g[0]},​b.dataTypes[0]="​json";​return"​script"​}}),​f.ajaxSetup({accepts:​{script:"​text/​javascript,​ application/​javascript,​ application/​ecmascript,​ application/​x-ecmascript"​},​contents:​{script:/​javascript|ecmascript/​},​converters:​{"​text script":​function(a){f.globalEval(a);​return a}}}),​f.ajaxPrefilter("​script",​function(a){a.cache===b&&​(a.cache=!1),​a.crossDomain&&​(a.type="​GET",​a.global=!1)}),​f.ajaxTransport("​script",​function(a){if(a.crossDomain){var d,​e=c.head||c.getElementsByTagName("​head"​)[0]||c.documentElement;​return{send:​function(f,​g){d=c.createElement("​script"​),​d.async="​async",​a.scriptCharset&&​(d.charset=a.scriptCharset),​d.src=a.url,​d.onload=d.onreadystatechange=function(a,​c){if(c||!d.readyState||/​loaded|complete/​.test(d.readyState))d.onload=d.onreadystatechange=null,​e&&​d.parentNode&&​e.removeChild(d),​d=b,​c||g(200,"​success"​)},​e.insertBefore(d,​e.firstChild)},​abort:​function(){d&&​d.onload(0,​1)}}}});​var ce=a.ActiveXObject?​function(){for(var a in cg)cg[a](0,​1)}:​!1,​cf=0,​cg;​f.ajaxSettings.xhr=a.ActiveXObject?​function(){return!this.isLocal&&​ch()||ci()}:​ch,​function(a){f.extend(f.support,​{ajax:​!!a,​cors:​!!a&&"​withCredentials"​in a})}(f.ajaxSettings.xhr()),​f.support.ajax&&​f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;​return{send:​function(e,​g){var h=c.xhr(),​i,​j;​c.username?​h.open(c.type,​c.url,​c.async,​c.username,​c.password):​h.open(c.type,​c.url,​c.async);​if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];​c.mimeType&&​h.overrideMimeType&&​h.overrideMimeType(c.mimeType),​!c.crossDomain&&​!e["​X-Requested-With"​]&&​(e["​X-Requested-With"​]="​XMLHttpRequest"​);​try{for(j in e)h.setRequestHeader(j,​e[j])}catch(k){}h.send(c.hasContent&&​c.data||null),​d=function(a,​e){var j,​k,​l,​m,​n;​try{if(d&&​(e||h.readyState===4)){d=b,​i&&​(h.onreadystatechange=f.noop,​ce&&​delete cg[i]);​if(e)h.readyState!==4&&​h.abort();​else{j=h.status,​l=h.getAllResponseHeaders(),​m={},​n=h.responseXML,​n&&​n.documentElement&&​(m.xml=n);​try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""​}!j&&​c.isLocal&&​!c.crossDomain?​j=m.text?​200:​404:​j===1223&&​(j=204)}}}catch(p){e||g(-1,​p)}m&&​g(j,​k,​m,​l)},​!c.async||h.readyState===4?​d():​(i=++cf,​ce&&​(cg||(cg={},​f(a).unload(ce)),​cg[i]=d),​h.onreadystatechange=d)},​abort:​function(){d&&​d(0,​1)}}}});​var cj={},​ck,​cl,​cm=/​^(?:​toggle|show|hide)$/,​cn=/​^([+\-]=)?​([\d+.\-]+)([a-z%]*)$/​i,​co,​cp=[["​height","​marginTop","​marginBottom","​paddingTop","​paddingBottom"​],​["​width","​marginLeft","​marginRight","​paddingLeft","​paddingRight"​],​["​opacity"​]],​cq;​f.fn.extend({show:​function(a,​b,​c){var d,​e;​if(a||a===0)return this.animate(ct("​show",​3),​a,​b,​c);​for(var g=0,​h=this.length;​g<​h;​g++)d=this[g],​d.style&&​(e=d.style.display,​!f._data(d,"​olddisplay"​)&&​e==="​none"&&​(e=d.style.display=""​),​(e===""&&​f.css(d,"​display"​)==="​none"​||!f.contains(d.ownerDocument.documentElement,​d))&&​f._data(d,"​olddisplay",​cu(d.nodeName)));​for(g=0;​g<​h;​g++){d=this[g];​if(d.style){e=d.style.display;​if(e===""​||e==="​none"​)d.style.display=f._data(d,"​olddisplay"​)||""​}}return this},​hide:​function(a,​b,​c){if(a||a===0)return this.animate(ct("​hide",​3),​a,​b,​c);​var d,​e,​g=0,​h=this.length;​for(;​g<​h;​g++)d=this[g],​d.style&&​(e=f.css(d,"​display"​),​e!=="​none"&&​!f._data(d,"​olddisplay"​)&&​f._data(d,"​olddisplay",​e));​for(g=0;​g<​h;​g++)this[g].style&&​(this[g].style.display="​none"​);​return this},​_toggle:​f.fn.toggle,​toggle:​function(a,​b,​c){var d=typeof a=="​boolean";​f.isFunction(a)&&​f.isFunction(b)?​this._toggle.apply(this,​arguments):​a==null||d?​this.each(function(){var b=d?​a:​f(this).is(":​hidden"​);​f(this)[b?"​show":"​hide"​]()}):​this.animate(ct("​toggle",​3),​a,​b,​c);​return this},​fadeTo:​function(a,​b,​c,​d){return this.filter(":​hidden"​).css("​opacity",​0).show().end().animate({opacity:​b},​a,​c,​d)},​animate:​function(a,​b,​c,​d){function g(){e.queue===!1&&​f._mark(this);​var b=f.extend({},​e),​c=this.nodeType===1,​d=c&&​f(this).is(":​hidden"​),​g,​h,​i,​j,​k,​l,​m,​n,​o,​p,​q;​b.animatedProperties={};​for(i in a){g=f.camelCase(i),​i!==g&&​(a[g]=a[i],​delete a[i]);​if((k=f.cssHooks[g])&&"​expand"​in k){l=k.expand(a[g]),​delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],​f.isArray(h)?​(b.animatedProperties[g]=h[1],​h=a[g]=h[0]):​b.animatedProperties[g]=b.specialEasing&&​b.specialEasing[g]||b.easing||"​swing";​if(h==="​hide"&&​d||h==="​show"&&​!d)return b.complete.call(this);​c&&​(g==="​height"​||g==="​width"​)&&​(b.overflow=[this.style.overflow,​this.style.overflowX,​this.style.overflowY],​f.css(this,"​display"​)==="​inline"&&​f.css(this,"​float"​)==="​none"&&​(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="​inline"?​this.style.display="​inline-block":​this.style.zoom=1))}b.overflow!=null&&​(this.style.overflow="​hidden"​);​for(i in a)j=new f.fx(this,​b,​i),​h=a[i],​cm.test(h)?​(q=f._data(this,"​toggle"​+i)||(h==="​toggle"?​d?"​show":"​hide":​0),​q?​(f._data(this,"​toggle"​+i,​q==="​show"?"​hide":"​show"​),​j[q]()):​j[h]()):​(m=cn.exec(h),​n=j.cur(),​m?​(o=parseFloat(m[2]),​p=m[3]||(f.cssNumber[i]?"":"​px"​),​p!=="​px"&&​(f.style(this,​i,​(o||1)+p),​n=(o||1)/​j.cur()*n,​f.style(this,​i,​n+p)),​m[1]&&​(o=(m[1]==="​-="?​-1:​1)*o+n),​j.custom(n,​o,​p)):​j.custom(n,​h,""​));​return!0}var e=f.speed(b,​c,​d);​if(f.isEmptyObject(a))return this.each(e.complete,​[!1]);​a=f.extend({},​a);​return e.queue===!1?​this.each(g):​this.queue(e.queue,​g)},​stop:​function(a,​c,​d){typeof a!="​string"&&​(d=c,​c=a,​a=b),​c&&​a!==!1&&​this.queue(a||"​fx",​[]);​return this.each(function(){function h(a,​b,​c){var e=b[c];​f.removeData(a,​c,​!0),​e.stop(d)}var b,​c=!1,​e=f.timers,​g=f._data(this);​d||f._unmark(!0,​this);​if(a==null)for(b in g)g[b]&&​g[b].stop&&​b.indexOf("​.run"​)===b.length-4&&​h(this,​g,​b);​else g[b=a+"​.run"​]&&​g[b].stop&&​h(this,​g,​b);​for(b=e.length;​b--;​)e[b].elem===this&&​(a==null||e[b].queue===a)&&​(d?​e[b](!0):​e[b].saveState(),​c=!0,​e.splice(b,​1));​(!d||!c)&&​f.dequeue(this,​a)})}}),​f.each({slideDown:​ct("​show",​1),​slideUp:​ct("​hide",​1),​slideToggle:​ct("​toggle",​1),​fadeIn:​{opacity:"​show"​},​fadeOut:​{opacity:"​hide"​},​fadeToggle:​{opacity:"​toggle"​}},​function(a,​b){f.fn[a]=function(a,​c,​d){return this.animate(b,​a,​c,​d)}}),​f.extend({speed:​function(a,​b,​c){var d=a&&​typeof a=="​object"?​f.extend({},​a):​{complete:​c||!c&&​b||f.isFunction(a)&&​a,​duration:​a,​easing:​c&&​b||b&&​!f.isFunction(b)&&​b};​d.duration=f.fx.off?​0:​typeof d.duration=="​number"?​d.duration:​d.duration in f.fx.speeds?​f.fx.speeds[d.duration]:​f.fx.speeds._default;​if(d.queue==null||d.queue===!0)d.queue="​fx";​d.old=d.complete,​d.complete=function(a){f.isFunction(d.old)&&​d.old.call(this),​d.queue?​f.dequeue(this,​d.queue):​a!==!1&&​f._unmark(this)};​return d},​easing:​{linear:​function(a){return a},​swing:​function(a){return-Math.cos(a*Math.PI)/​2+.5}},​timers:​[],​fx:​function(a,​b,​c){this.options=b,​this.elem=a,​this.prop=c,​b.orig=b.orig||{}}}),​f.fx.prototype={update:​function(){this.options.step&&​this.options.step.call(this.elem,​this.now,​this),​(f.fx.step[this.prop]||f.fx.step._default)(this)},​cur:​function(){if(this.elem[this.prop]!=null&&​(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];​var a,​b=f.css(this.elem,​this.prop);​return isNaN(a=parseFloat(b))?​!b||b==="​auto"?​0:​b:​a},​custom:​function(a,​c,​d){function h(a){return e.step(a)}var e=this,​g=f.fx;​this.startTime=cq||cr(),​this.end=c,​this.now=this.start=a,​this.pos=this.state=0,​this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"​px"​),​h.queue=this.options.queue,​h.elem=this.elem,​h.saveState=function(){f._data(e.elem,"​fxshow"​+e.prop)===b&&​(e.options.hide?​f._data(e.elem,"​fxshow"​+e.prop,​e.start):​e.options.show&&​f._data(e.elem,"​fxshow"​+e.prop,​e.end))},​h()&&​f.timers.push(h)&&​!co&&​(co=setInterval(g.tick,​g.interval))},​show:​function(){var a=f._data(this.elem,"​fxshow"​+this.prop);​this.options.orig[this.prop]=a||f.style(this.elem,​this.prop),​this.options.show=!0,​a!==b?​this.custom(this.cur(),​a):​this.custom(this.prop==="​width"​||this.prop==="​height"?​1:​0,​this.cur()),​f(this.elem).show()},​hide:​function(){this.options.orig[this.prop]=f._data(this.elem,"​fxshow"​+this.prop)||f.style(this.elem,​this.prop),​this.options.hide=!0,​this.custom(this.cur(),​0)},​step:​function(a){var b,​c,​d,​e=cq||cr(),​g=!0,​h=this.elem,​i=this.options;​if(a||e>​=i.duration+this.startTime){this.now=this.end,​this.pos=this.state=1,​this.update(),​i.animatedProperties[this.prop]=!0;​for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&​(g=!1);​if(g){i.overflow!=null&&​!f.support.shrinkWrapBlocks&&​f.each(["","​X","​Y"​],​function(a,​b){h.style["​overflow"​+b]=i.overflow[a]}),​i.hide&&​f(h).hide();​if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,​b,​i.orig[b]),​f.removeData(h,"​fxshow"​+b,​!0),​f.removeData(h,"​toggle"​+b,​!0);​d=i.complete,​d&&​(i.complete=!1,​d.call(h))}return!1}i.duration==Infinity?​this.now=e:​(c=e-this.startTime,​this.state=c/​i.duration,​this.pos=f.easing[i.animatedProperties[this.prop]](this.state,​c,​0,​1,​i.duration),​this.now=this.start+(this.end-this.start)*this.pos),​this.update();​return!0}},​f.extend(f.fx,​{tick:​function(){var a,​b=f.timers,​c=0;​for(;​c<​b.length;​c++)a=b[c],​!a()&&​b[c]===a&&​b.splice(c--,​1);​b.length||f.fx.stop()},​interval:​13,​stop:​function(){clearInterval(co),​co=null},​speeds:​{slow:​600,​fast:​200,​_default:​400},​step:​{opacity:​function(a){f.style(a.elem,"​opacity",​a.now)},​_default:​function(a){a.elem.style&&​a.elem.style[a.prop]!=null?​a.elem.style[a.prop]=a.now+a.unit:​a.elem[a.prop]=a.now}}}),​f.each(cp.concat.apply([],​cp),​function(a,​b){b.indexOf("​margin"​)&&​(f.fx.step[b]=function(a){f.style(a.elem,​b,​Math.max(0,​a.now)+a.unit)})}),​f.expr&&​f.expr.filters&&​(f.expr.filters.animated=function(a){return f.grep(f.timers,​function(b){return a===b.elem}).length});​var cv,​cw=/​^t(?:​able|d|h)$/​i,​cx=/​^(?:​body|html)$/​i;"​getBoundingClientRect"​in c.documentElement?​cv=function(a,​b,​c,​d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,​a))return d?​{top:​d.top,​left:​d.left}:​{top:​0,​left:​0};​var g=b.body,​h=cy(b),​i=c.clientTop||g.clientTop||0,​j=c.clientLeft||g.clientLeft||0,​k=h.pageYOffset||f.support.boxModel&&​c.scrollTop||g.scrollTop,​l=h.pageXOffset||f.support.boxModel&&​c.scrollLeft||g.scrollLeft,​m=d.top+k-i,​n=d.left+l-j;​return{top:​m,​left:​n}}:​cv=function(a,​b,​c){var d,​e=a.offsetParent,​g=a,​h=b.body,​i=b.defaultView,​j=i?​i.getComputedStyle(a,​null):​a.currentStyle,​k=a.offsetTop,​l=a.offsetLeft;​while((a=a.parentNode)&&​a!==h&&​a!==c){if(f.support.fixedPosition&&​j.position==="​fixed"​)break;​d=i?​i.getComputedStyle(a,​null):​a.currentStyle,​k-=a.scrollTop,​l-=a.scrollLeft,​a===e&&​(k+=a.offsetTop,​l+=a.offsetLeft,​f.support.doesNotAddBorder&&​(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&​(k+=parseFloat(d.borderTopWidth)||0,​l+=parseFloat(d.borderLeftWidth)||0),​g=e,​e=a.offsetParent),​f.support.subtractsBorderForOverflowNotVisible&&​d.overflow!=="​visible"&&​(k+=parseFloat(d.borderTopWidth)||0,​l+=parseFloat(d.borderLeftWidth)||0),​j=d}if(j.position==="​relative"​||j.position==="​static"​)k+=h.offsetTop,​l+=h.offsetLeft;​f.support.fixedPosition&&​j.position==="​fixed"&&​(k+=Math.max(c.scrollTop,​h.scrollTop),​l+=Math.max(c.scrollLeft,​h.scrollLeft));​return{top:​k,​left:​l}},​f.fn.offset=function(a){if(arguments.length)return a===b?​this:​this.each(function(b){f.offset.setOffset(this,​a,​b)});​var c=this[0],​d=c&&​c.ownerDocument;​if(!d)return null;​if(c===d.body)return f.offset.bodyOffset(c);​return cv(c,​d,​d.documentElement)},​f.offset={bodyOffset:​function(a){var b=a.offsetTop,​c=a.offsetLeft;​f.support.doesNotIncludeMarginInBodyOffset&&​(b+=parseFloat(f.css(a,"​marginTop"​))||0,​c+=parseFloat(f.css(a,"​marginLeft"​))||0);​return{top:​b,​left:​c}},​setOffset:​function(a,​b,​c){var d=f.css(a,"​position"​);​d==="​static"&&​(a.style.position="​relative"​);​var e=f(a),​g=e.offset(),​h=f.css(a,"​top"​),​i=f.css(a,"​left"​),​j=(d==="​absolute"​||d==="​fixed"​)&&​f.inArray("​auto",​[h,​i])>​-1,​k={},​l={},​m,​n;​j?​(l=e.position(),​m=l.top,​n=l.left):​(m=parseFloat(h)||0,​n=parseFloat(i)||0),​f.isFunction(b)&&​(b=b.call(a,​c,​g)),​b.top!=null&&​(k.top=b.top-g.top+m),​b.left!=null&&​(k.left=b.left-g.left+n),"​using"​in b?​b.using.call(a,​k):​e.css(k)}},​f.fn.extend({position:​function(){if(!this[0])return null;var a=this[0],​b=this.offsetParent(),​c=this.offset(),​d=cx.test(b[0].nodeName)?​{top:​0,​left:​0}:​b.offset();​c.top-=parseFloat(f.css(a,"​marginTop"​))||0,​c.left-=parseFloat(f.css(a,"​marginLeft"​))||0,​d.top+=parseFloat(f.css(b[0],"​borderTopWidth"​))||0,​d.left+=parseFloat(f.css(b[0],"​borderLeftWidth"​))||0;​return{top:​c.top-d.top,​left:​c.left-d.left}},​offsetParent:​function(){return this.map(function(){var a=this.offsetParent||c.body;​while(a&&​!cx.test(a.nodeName)&&​f.css(a,"​position"​)==="​static"​)a=a.offsetParent;​return a})}}),​f.each({scrollLeft:"​pageXOffset",​scrollTop:"​pageYOffset"​},​function(a,​c){var d=/​Y/​.test(c);​f.fn[a]=function(e){return f.access(this,​function(a,​e,​g){var h=cy(a);​if(g===b)return h?c in h?​h[c]:​f.support.boxModel&&​h.document.documentElement[e]||h.document.body[e]:​a[e];​h?​h.scrollTo(d?​f(h).scrollLeft():​g,​d?​g:​f(h).scrollTop()):​a[e]=g},​a,​e,​arguments.length,​null)}}),​f.each({Height:"​height",​Width:"​width"​},​function(a,​c){var d="​client"​+a,​e="​scroll"​+a,​g="​offset"​+a;​f.fn["​inner"​+a]=function(){var a=this[0];​return a?​a.style?​parseFloat(f.css(a,​c,"​padding"​)):​this[c]():​null},​f.fn["​outer"​+a]=function(a){var b=this[0];​return b?​b.style?​parseFloat(f.css(b,​c,​a?"​margin":"​border"​)):​this[c]():​null},​f.fn[c]=function(a){return f.access(this,​function(a,​c,​h){var i,​j,​k,​l;​if(f.isWindow(a)){i=a.document,​j=i.documentElement[d];​return f.support.boxModel&&​j||i.body&&​i.body[d]||j}if(a.nodeType===9){i=a.documentElement;​if(i[d]>​=i[e])return i[d];return Math.max(a.body[e],​i[e],​a.body[g],​i[g])}if(h===b){k=f.css(a,​c),​l=parseFloat(k);​return f.isNumeric(l)?​l:​k}f(a).css(c,​h)},​c,​a,​arguments.length,​null)}}),​a.jQuery=a.$=f,​typeof define=="​function"&&​define.amd&&​define.amd.jQuery&&​define("​jquery",​[],​function(){return f})})(window); +
-jQuery.noConflict();​ +
-(function($){ +
- var rotateLeft = function(lValue,​ iShiftBits) {return (lValue << iShiftBits) | (lValue >>>​ (32 - iShiftBits));​} +
- var addUnsigned = function(lX,​ lY) {var lX4, lY4, lX8, lY8, lResult;lX8 = (lX & 0x80000000);​lY8 = (lY & 0x80000000);​lX4 = (lX & 0x40000000);​lY4 = (lY & 0x40000000);​lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);​if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);if (lX4 | lY4) {if (lResult & 0x40000000){ return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);}else{ return (lResult ^ 0x40000000 ^ lX8 ^ lY8);}} else {return (lResult ^ lX8 ^ lY8);}} +
- var F = function(x, y, z) {return (x & y) | ((~ x) & z);} +
- var G = function(x, y, z) {return (x & z) | (y & (~ z));} +
- var H = function(x, y, z) {return (x ^ y ^ z);} +
- var I = function(x, y, z) {return (y ^ (x | (~ z)));} +
- var FF = function(a, b, c, d, x, s, ac) {a = addUnsigned(a,​ addUnsigned(addUnsigned(F(b,​ c, d), x), ac));return addUnsigned(rotateLeft(a,​ s), b);}; +
- var GG = function(a, b, c, d, x, s, ac) {a = addUnsigned(a,​ addUnsigned(addUnsigned(G(b,​ c, d), x), ac));return addUnsigned(rotateLeft(a,​ s), b);}; +
- var HH = function(a, b, c, d, x, s, ac) {a = addUnsigned(a,​ addUnsigned(addUnsigned(H(b,​ c, d), x), ac));return addUnsigned(rotateLeft(a,​ s), b);}; +
- var II = function(a, b, c, d, x, s, ac) {a = addUnsigned(a,​ addUnsigned(addUnsigned(I(b,​ c, d), x), ac));return addUnsigned(rotateLeft(a,​ s), b);}; +
- var convertToWordArray = function(string) {var lWordCount;​var lMessageLength = string.length;​var lNumberOfWordsTempOne = lMessageLength + 8;var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;var lWordArray = Array(lNumberOfWords - 1); +
- var lBytePosition = 0;var lByteCount = 0;while (lByteCount < lMessageLength) {lWordCount = (lByteCount - (lByteCount % 4)) / 4;​lBytePosition = (lByteCount % 4) * 8;​lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));​lByteCount++;​}lWordCount = (lByteCount - (lByteCount % 4)) / 4;​lBytePosition = (lByteCount % 4) * 8;​lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);​lWordArray[lNumberOfWords - 2] = lMessageLength << 3;​lWordArray[lNumberOfWords - 1] = lMessageLength >>>​ 29;return lWordArray;​};​ +
- var wordToHex = function(lValue) {var WordToHexValue = "",​ WordToHexValueTemp = "",​ lByte, lCount;for (lCount = 0; lCount <= 3; lCount++) {lByte = (lValue >>>​ (lCount * 8)) & 255;​WordToHexValueTemp = "​0"​ + lByte.toString(16);​WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);}return WordToHexValue;​};​ +
- var uTF8Encode = function(string) {string = string.replace(/​\x0d\x0a/​g,​ "​\x0a"​);​var output = "";​for (var n = 0; n < string.length;​ n++) { +
- var c = string.charCodeAt(n);​if (c < 128) {output += String.fromCharCode(c);​} else if ((c > 127) && (c < 2048)) {output += String.fromCharCode((c >> 6) | 192);output += String.fromCharCode((c & 63) | 128);} else {output += String.fromCharCode((c >> 12) | 224);output += String.fromCharCode(((c >> 6) & 63) | 128);output += String.fromCharCode((c & 63) | 128);​}}return output;}; +
- $.extend({md5:​ function(string) {var x = Array();var k, AA, BB, CC, DD, a, b, c, d;var S11=7, S12=12, S13=17, S14=22;var S21=5, S22=9 , S23=14, S24=20;var S31=4, S32=11, S33=16, S34=23;var S41=6, S42=10, S43=15, S44=21;​string = uTF8Encode(string);​x = convertToWordArray(string);​a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;​for (k = 0; k < x.length; k += 16) {AA = a; BB = b; CC = c; DD = d;a = FF(a, b, c, d, x[k+0], ​ S11, 0xD76AA478);​d = FF(d, a, b, c, x[k+1], ​ S12, 0xE8C7B756);​c = FF(c, d, a, b, x[k+2], ​ S13, 0x242070DB);​b = FF(b, c, d, a, x[k+3], ​ S14, 0xC1BDCEEE);​a = FF(a, b, c, d, x[k+4], ​ S11, 0xF57C0FAF);​d = FF(d, a, b, c, x[k+5], ​ S12, 0x4787C62A);​c = FF(c, d, a, b, x[k+6], ​ S13, 0xA8304613);​b = FF(b, c, d, a, x[k+7], ​ S14, 0xFD469501);​a = FF(a, b, c, d, x[k+8], ​ S11, 0x698098D8);​d = FF(d, a, b, c, x[k+9], ​ S12, 0x8B44F7AF);​c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);​b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);​a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);​d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);​c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);​b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);​a = GG(a, b, c, d, x[k+1], ​ S21, 0xF61E2562);​d = GG(d, a, b, c, x[k+6], ​ S22, 0xC040B340);​c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);​b = GG(b, c, d, a, x[k+0], ​ S24, 0xE9B6C7AA);​a = GG(a, b, c, d, x[k+5], ​ S21, 0xD62F105D);​d = GG(d, a, b, c, x[k+10], S22, 0x2441453);​c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);​b = GG(b, c, d, a, x[k+4], ​ S24, 0xE7D3FBC8);​a = GG(a, b, c, d, x[k+9], ​ S21, 0x21E1CDE6);​d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);​c = GG(c, d, a, b, x[k+3], ​ S23, 0xF4D50D87);​b = GG(b, c, d, a, x[k+8], ​ S24, 0x455A14ED);​a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);​d = GG(d, a, b, c, x[k+2], ​ S22, 0xFCEFA3F8);​c = GG(c, d, a, b, x[k+7], ​ S23, 0x676F02D9);​b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);​a = HH(a, b, c, d, x[k+5], ​ S31, 0xFFFA3942);​d = HH(d, a, b, c, x[k+8], ​ S32, 0x8771F681);​c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);​b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);​a = HH(a, b, c, d, x[k+1], ​ S31, 0xA4BEEA44);​d = HH(d, a, b, c, x[k+4], ​ S32, 0x4BDECFA9);​c = HH(c, d, a, b, x[k+7], ​ S33, 0xF6BB4B60);​b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);​a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);​d = HH(d, a, b, c, x[k+0], ​ S32, 0xEAA127FA);​c = HH(c, d, a, b, x[k+3], ​ S33, 0xD4EF3085);​b = HH(b, c, d, a, x[k+6], ​ S34, 0x4881D05);​a = HH(a, b, c, d, x[k+9], ​ S31, 0xD9D4D039);​d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);​c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);​b = HH(b, c, d, a, x[k+2], ​ S34, 0xC4AC5665);​a = II(a, b, c, d, x[k+0], ​ S41, 0xF4292244);​d = II(d, a, b, c, x[k+7], ​ S42, 0x432AFF97);​c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);​b = II(b, c, d, a, x[k+5], ​ S44, 0xFC93A039);​a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);​d = II(d, a, b, c, x[k+3], ​ S42, 0x8F0CCC92);​c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);​b = II(b, c, d, a, x[k+1], ​ S44, 0x85845DD1);​a = II(a, b, c, d, x[k+8], ​ S41, 0x6FA87E4F);​d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);​c = II(c, d, a, b, x[k+6], ​ S43, 0xA3014314);​b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);​a = II(a, b, c, d, x[k+4], ​ S41, 0xF7537E82);​d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);​c = II(c, d, a, b, x[k+2], ​ S43, 0x2AD7D2BB);​b = II(b, c, d, a, x[k+9], ​ S44, 0xEB86D391);​a = addUnsigned(a,​ AA);b = addUnsigned(b,​ BB);c = addUnsigned(c,​ CC);d = addUnsigned(d,​ DD);}var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);​return tempValue.toLowerCase();​}});​ +
- function $ById(id,​root){return root ? root.getElementById(id) : document.getElementById(id);​} +
- var storage = '​none';​ +
- try { +
-     if (typeof GM_getValue === '​function'​ && typeof GM_setValue === '​function'​ && $.browser.mozilla) { +
-         storage = '​greasemonkey';​ +
-     } +
- } catch (x) {} +
- if (storage == '​none'​ && typeof localStorage == '​object'​) { +
-     storage = '​localstorage';​ +
-+
- function GMAjax(t,​u,​d,​fn){GM_xmlhttpRequest({method:​ t,url: u,headers: {"​Content-Type":​ "​application/​x-www-form-urlencoded"​},​data:​d,​onload:​ function(xhr) { fn(xhr.responseText);​ }});} +
- $.type = function(o) {var _toS = Object.prototype.toString;​var _types = {'​undefined':​ '​undefined','​number':​ '​number','​boolean':​ '​boolean','​string':​ '​string','​[object Function]':​ '​function','​[object RegExp]':​ '​regexp','​[object Array]':​ '​array','​[object Date]':​ '​date','​[object Error]':​ '​error'​};​return _types[typeof o] || _types[_toS.call(o)] || (o ? '​object'​ : '​null'​);​};​ +
- var $specialChars = { '​\b':​ '​\\b',​ '​\t':​ '​\\t',​ '​\n':​ '​\\n',​ '​\f':​ '​\\f',​ '​\r':​ '​\\r',​ '"':​ '​\\"',​ '​\\':​ '​\\\\'​ }; +
- var $replaceChars = function(chr) {return $specialChars[chr] || '​\\u00'​ + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);​};​ +
- $.toJSON = function(o) {var s = []; +
- switch ($.type(o)){ +
- case '​undefined':​return '​undefined';​break;​ +
- case '​null':​return '​null';​break;​ +
- case '​number':​ +
- case '​boolean':​ +
- case '​date':​ +
- case '​function':​return o.toString();​break;​ +
- case '​string':​return '"'​ + o.replace(/​[\x00-\x1f\\"​]/​g,​ $replaceChars) + '"';​break;​ +
- case '​array':​for (var i=0,​l=o.length;​i<​l;​i++) {s.push($.toJSON(o[i]));​}return '​['​ + s.join(','​) + '​]';​break;​ +
- case '​error':​ +
- case '​object':​for (var p in o) { +
- s.push('"'​+ p +'"'​ + ':'​ + $.toJSON(o[p]));​} +
- return '​{'​ + s.join(','​) + '​}';​ +
- break; +
- default:​return '';​break;​} +
- }; +
- function delValue(key){ +
- switch (storage) { +
- case '​greasemonkey':​GM_deleteValue('​fsa_'​+key);​break;​ +
- case '​localstorage':​delete localStorage['​fsa_'​+key];​break;​ +
-+
-+
- function setValue(key,​ value) { +
- switch (storage) { +
- case '​greasemonkey':​GM_setValue('​fsa_'​+key,​ value);​break;​ +
- case '​localstorage':​localStorage['​fsa_'​+key] = value;​break;​ +
-+
-+
- function getValue(key,​ value) { +
- switch (storage) { +
- case '​greasemonkey':​return GM_getValue('​fsa_'​+key,​ value); +
- case '​localstorage':​var val = localStorage['​fsa_'​+key];​ +
- if (val=='​true'​) { return true; } +
- else if (val=='​false'​) { return false; } +
- else if (val) { return val; } +
- break;​ +
-+
- return value; +
-+
- function FB_addScriptUrl(file){ +
- var a = document.createElement('​script'​);​ +
- a.type = '​text/​javascript';​ +
- a.src = file + '?'​ + version; +
- document.getElementsByTagName('​head'​)[0].appendChild(a);​ +
-+
- function FB_addScript(script,​tag){ +
- var a = document.createElement('​script'​);​ +
- a.type = '​text/​javascript';​ +
- a.innerHTML = script; +
- if(! tag ){tag = '​head'​} +
- document.getElementsByTagName(tag)[0].appendChild(a);​ +
-+
- function FB_addStyle(css){ +
- var style = document.createElement('​style'​);​ +
- try { style.innerHTML = css; } +
- catch(x) { style.innerText = css; } +
- style.type = '​text/​css';​ +
- document.getElementsByTagName('​head'​)[0].appendChild(style);​ +
-+
- FB_addStyle( +
- '​.slimHeader #pageNav #​fsa-account-list a{color:#​3A579A}'​+ +
- '#​fsa-account { position:​relative;​ display:​list-item;​float:​left }'+ +
- '#​fsa-account:​hover ul, #​fsa-account:​hover li { display:​block;​ }'+ +
- '#​fsa-account ul a, #​fsa-account ul a:focus { background:​white;​ }'+ +
- '#​fsa-account-list { display:​none;​overflow:​auto;​ }'+ +
- '#​fsa-account img { background:​url(http://​static.ak.fbcdn.net/​rsrc.php/​v1/​yl/​r/​_pZp2Uf5bdo.png) no-repeat -56px -297px; height:4px; left:5px; position:​relative;​ top:-2px; width:7px; }'+ +
- '#​fsa-account ul { background:#​fff;​border:​1px solid #​333;​border-bottom:​2px solid #​2d4486;​display:​none;​margin-right:​-1px;​margin-top:​-1px;​min-width:​200px;​padding:​10px 0 5px;​position:​absolute;​right:​0;​_right:​-1px;​top:​100%;​*width:​100%;​_width:​200px;​z-index:​1 }'+ +
- '#​fsa-account #​fsa-account-list a {color:#​3a579a;​display:​block;​font-weight:​normal;​height:​auto;​_margin-right:​-25px;​padding:​4px 10px 5px;​white-space:​nowrap;​*white-space:​auto;​_white-space:​nowrap}'​+ +
- '#​fsa-account #​fsa-account-list a:hover {background:#​6d84b4;​border-bottom:​1px solid #​3b5998;​border-top:​1px solid #​3b5998;​color:#​fff;​padding:​3px 10px 4px}'​+ +
- '#​fsa-account #​fsa-account-list li {display:​block;​float:​none}'​+ +
- '#​fsa-account:​hover #​fsa-account-link {background-color:#​fff;​color:#​333;​height:​22px;​position:​relative;​z-index:​3}'​+ +
- '#​fsa-account-link{ padding:6px 10px;​color:#​D8DFEA;​display:​inline;​font-weight:​ bold;​height:​31px;​line-height:​ 29px;​position:​relative;​text-decoration:​ none;​vertical-align:​ top;​}'​+ +
- '​.dialog_body table th{text-align:​center;​}'​+ +
-         '​.form_row {padding: 0 0 8px;​text-align:​ left;​}'​+ +
-         '​.form_row .login_form_label {display: block;​float:​ left;​padding:​ 3px 0;width: 100px;​}'​+ +
-         '​.form_row input {margin: 0;​}'​+ +
-         '​.form_row .inputtext, .inputpassword {width: 175px;​}'​+ +
-         '​.form_row .checkbox {float: left;​margin:​ 5px 4px 2px 0;width: 15px;​}'​ +
- ); +
- //​============================================================================================================================ +
- // Start Defind +
- //​============================================================================================================================ +
- var IMG = { +
- '​LOAD':'​R0lGODlhEAAQALMPAHp6evf394qKiry8vJOTk83NzYKCgubm5t7e3qysrMXFxe7u7pubm7S0tKOjo////​yH/​C05FVFNDQVBFMi4wAwEAAAAh+QQJCAAPACwAAAAAEAAQAAAETPDJSau9NRDAgWxDYGmdZADCkQnlU7CCOA3oNgXsQG2FRhUAAoWDIU6MGeSDR0m4ghRa7JjIUXCogqQzpRxYhi2HILsOGuJxGcNuTyIAIfkECQgADwAsAAAAABAAEAAABGLwSXmMmjhLAQjSWDAYQHmAz8GVQPIESxZwggIYS0AIATYAvAdh8OIQJwRAQbJkdjAlUCA6KfU0VEmyGWgWnpNfcEAoAo6SmWtBUtCuk9gjwQKeQAeWYQAHIZICKBoKBncTEQAh+QQJCAAPACwAAAAAEAAQAAAEWvDJORejGCtQsgwDAQAGGWSHMK7jgAWq0CGj0VEDIJxPnvAU0a13eAQKrsnI81gqAZ6AUzIonA7JRwFAyAQSgCQsjCmUAIhjDEhlrQTFV+lMGLApWwUzw1jsIwAh+QQJCAAPACwAAAAAEAAQAAAETvDJSau9L4QaBgEAMWgEQh0CqALCZ0pBKhRSkYLvM7Ab/​OGThoE2+QExyAdiuexhVglKwdCgqKKTGGBgBc00Np7VcVsJDpVo5ydyJt/​wCAAh+QQJCAAPACwAAAAAEAAQAAAEWvDJSau9OAwCABnBtQhdCQjHlQhFWJBCOKWPLAXk8KQIkCwWBcAgMDw4Q5CkgOwohCVCYTIwdAgPolVhWSQAiN1jcLLVQrQbrBV4EcySA8l0Alo0yA8cw+9TIgAh+QQFCAAPACwAAAAAEAAQAAAEWvDJSau9WA4AyAhWMChPwXHCQRUGYARgKQBCzJxAQgXzIC2KFkc1MREoHMTAhwQ0Y5oBgkMhAAqUw8mgWGho0EcCx5DwaAUQrGXATg6zE7bwCQ2sAGZmz7dEAAA7',​ +
- '​DEL':'​iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/​9hAAAABGdBTUEAAK/​INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHMSURBVHjapFO/​S0JRFP4UIUJIqMWgLQzalAyKIN4TxNXJoZaGIPwHXNMt/​A+C1pZabKgQQd9kQ4pS0KBUi4MNNgT+ev54nXPeVTRoqQvfu+ee7zvnnnPvfQ7LsvCf4ZLvSZi/​ScIpQScYv+g1QoGQEv15zk4wHo0k2BmJYJzNskB3XuTnkoyPQxKsNLwRnJTEycZwOJRgDAbgmdYF82hfmwSzzb4fGkni4DPoHu5K9sVw2I5wu9HNZKDagXDRKNBuy6Kbywm3ePlgSAUD0zQI+tftLdDrAa0WOIB8BYYEk4851rCWY1Qb1IJpYum6bNCsf97f0xZdoNHAUiwmYJt9zLFGaTFNMOj3ZbF882yQrX9ks0CnA9RqNshmH3OsmY1xqRampz21PR6g2bRtr3dOM6ubq+B9b1Uju7AWjwNvb3YVDLLZxxxrZmPkFurbK9NH4kskgHxeyHqpJLMvGLS3DYVQT6cnt2P4HluY3ILGpy3Bd3dy2i/​F4uS0dbbldohjjbod+51wBU+bC5Z1dWZZBzsCXhM05hSviUbxrJU1cdJCZcMlTzng96NSrUqJZM89ZfJLizOaVKA2TEqC8rrjTz/​T1quq4D/​jW4ABAF7lQOO4C9PnAAAAAElFTkSuQmCC',​ +
- '​DOWN':'​iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/​9hAAAACXBIWXMAAAsSAAALEgHS3X78AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/​rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/​SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/​w/​qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/​g88wAAKCRFRHgg/​P9eM4Ors7ONo62Dl8t6r8G/​yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/​qIl7gRoXgugdfeLZrIPQLUAoOnaV/​Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/​AV/​1s+X48/​Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/​LcL//​wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/​+8//​UegJQCAZkmScQAAXkQkLlTKsz/​HCAAARKCBKrBBG/​TBGCzABhzBBdzBC/​xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/​phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/​pH5Z/​YkGWcNMw09DpFGgsV/​jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/​R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/​OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/​1U/​W36p/​VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/​T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/​uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/​C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/​MN8C3yLfLT8Nvnl+F30N/​I/​9k/​3r/​0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/​87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/​RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/​zYnKOZarnivN7cyzytuQN5zvn//​tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/​PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/​T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/​0HIw6217nU1R3SPVRSj9Yr60cOxx++/​p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/​ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/​i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/​pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/​1tWeOT3dvfN6b/​fF9/​XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/​cGhYPP/​pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/​6i/​suuFxYvfvjV69fO0ZjRoZfyl5O/​bXyl/​erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/​2j5sfVT0Kf7kxmTk/​8EA5jz/​GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/​wAAgOkAAHUwAADqYAAAOpgAABdvkl/​FRgAAAf9JREFUeNp8kr9rU2EUhp+TmxvaJmmbgBbFLajoJOLQ6FDUUXB2EP8ERXB1dBNRwdXJQQfpH6CCYjUZpCCIrbUVB39AxVhNk5h893zH4d5cb2rr2b7vO/​d9n/​OeK2bGrZdTZMrYuSR7uHT8J3kA8xK/​CRjG5RMbrAxup40HChe5uVCJtSXWMYt98gDe50AEzIAcCz/​O8r37PBVYn3iEt9hETDAMSWASggATA8shYqiP8N6SWQT1Du8DxMALiBleZJTA0hEN1QGRT9IQQ/​0Ar0F8YaRjpAKRBiPpRL6PV0tzi3SAam40waRiAg1Ggo7Uofr3xkUOnzExthB4zVscTPzgtI/​6YbcRRb+HJrZl15IHUA04OXsMgLnd93n44TCaGWGgjqtnPvJs/​RwATxuvaLcn6ynB5q/​J+uMXi43a/​jZv1qqMlTQNFKDd/​cSdRpViucDa+yl6nck60ATIJTbNXqdUX12uMFYqsNnKo95QBfVGuxUyXiywulyl1ymmHwPI8I8CuHLv6GwYukbt4DfaLcf4tKO3EVKuhqy924VzYf36+cVmdgu5LVtpOhfWV97OUKyEdFsFJiohK0szOBeOOG9LkCURaNQOfWF1aS/​AP847CojIHmD81IV9c0dOz9z9/​Hr62oMbT+aBPtAFemb29b8EiVAZCIACMDCzje36/​gwAdqP5v6NRiAwAAAAASUVORK5CYII=',​ +
- '​UP':'​iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/​9hAAAACXBIWXMAAAsSAAALEgHS3X78AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/​rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/​SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/​w/​qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/​g88wAAKCRFRHgg/​P9eM4Ors7ONo62Dl8t6r8G/​yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/​qIl7gRoXgugdfeLZrIPQLUAoOnaV/​Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/​AV/​1s+X48/​Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/​LcL//​wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/​+8//​UegJQCAZkmScQAAXkQkLlTKsz/​HCAAARKCBKrBBG/​TBGCzABhzBBdzBC/​xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/​phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/​pH5Z/​YkGWcNMw09DpFGgsV/​jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/​R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/​OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/​1U/​W36p/​VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/​T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/​uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/​C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/​MN8C3yLfLT8Nvnl+F30N/​I/​9k/​3r/​0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/​87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/​RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/​zYnKOZarnivN7cyzytuQN5zvn//​tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/​PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/​T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/​0HIw6217nU1R3SPVRSj9Yr60cOxx++/​p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/​ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/​i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/​pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/​1tWeOT3dvfN6b/​fF9/​XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/​cGhYPP/​pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/​6i/​suuFxYvfvjV69fO0ZjRoZfyl5O/​bXyl/​erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/​2j5sfVT0Kf7kxmTk/​8EA5jz/​GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/​wAAgOkAAHUwAADqYAAAOpgAABdvkl/​FRgAAAclJREFUeNp8k8tqFEEUhr/​T1QQHA6PRiAtxMygkMIEQhO6sssnCB9H1gOBDRFB3eRTRB7AMIqKrMCshCpJJYDqJM5nurjouunouzoxn0UX/​deo7f12OqCqL4q29lQAWSDtp/​xNLIlq2WH1kO2kf9ZENsIUhbz42/​9USVxr79MkLumcHPL77knefX2PiMgVmnHTS/​pyDpMhX7P7Oc457B3iF49NX7O88o8hXLJD8bwvJaNiwu+09ur1DvAPvwXul2ztkt73HaNiYg9SAZHC5arc3W/​zsv8eVYXENKeFX/​wPbmy0Gl6szkAhIrrKm3dpY5zrPaMQP8ao4B86F0cON+AHXecbWxjpXWXMMibPzOxaUL98uAlNpPRJAEQUVBYWv34dTxg3Z+ZoFJHbOiKCAoKogaJF7TCwQnoh34J1BYZIbJmNXGqp64V4FyiIC0bFa5hGuNCEhyFL9xt5XgFpUhSKHyFQ1RKAowTmz8CHFvp7Q8BEZ30LtyhXgvZmyOQ0oo4n3QPJeGFyYmUTvokkhkSmARnVhNOzh/​r32nNWTH39QmQCkPkT1FXnSlMLR0XBx3+nYZFUMkLqdReQ2cBNYY3n8BkaqmtXC3wEAw8fkYdMBfE8AAAAASUVORK5CYII='​ +
-+
- var WURL = window.location.href;​ +
- var FURL = '​http://​www.facebook.com';​ +
- var useraccount = $.parseJSON(getValue('​useraccount',​ '​[{"​n":"​Your Account","​u":"​your@domain.com","​p":"​password"​}]'​) ); +
- var set_var = ['​sel_language','​chk_update','​chk_login_home','​chk_login_auto','​ipt_lock_pass','​ipt_custom_title','​chk_use_custom_title','​chk_show_user_name'​];​ +
- var set_default = {"​sel_language":"​en_us","​chk_update":​true,"​chk_login_home":​false,"​chk_login_auto":​false,"​ipt_lock_pass":"​39bc1c02846bc8749a79ee2b65d51e5f","​ipt_custom_title":"​Switch","​chk_use_custom_title":​false,"​chk_show_user_name":​true} +
- var setting = $.parseJSON(getValue('​setting',​ $.toJSON(set_default) ) ); +
- var facebook = ['​https://​ssl.facebook.com/​login.php',​ '​https://​login.facebook.com/',​ '​https://​login.facebook.com/​login.php?​login_attempt=1',​ '​http://​www.facebook.com/​login.php',​ '​https://​www.facebook.com/​login.php?​login_attempt=1',​ '​http://​www.facebook.com/​login/​setashome.php?​ref=genlogin'​],​ language = setting.sel_language;​ +
- var TIME = {},$FSA = {},FSA = new Object(), fuid_uarr = new Array(),​language_select,​noLogin = false,​fsa_json = {"​time":"​PM 02:27 2012/​6/​13","​version":​version,"​new_version":​version,"​language_select":​{"​en_us":"​English","​zh_tw":"​\u6B63\u9AD4\u4E2D\u6587","​zh_cn":"​\u7B80\u4F53\u4E2D\u6587","​fr_fr":"​Fran\u00E7ais","​de_de":"​German"​}},​fblocation = getValue('​fblocation',​ WURL); +
- var face_lang = { +
- '​en_us':​{ +
- '​TITLE'​ :'​Switch Accounts',​ +
- '​ABOUT'​ :'​※ About ※',​ +
- '​BTN_ADD_ACCOUNT'​ :'​Add Account',​ +
- '​BTN_EDT_ACCOUNT'​ :'​Edit Account',​ +
- '​BTN_CLS_ACCOUNT'​ :'​Delete All Account',​ +
- '​BTN_EXPORT_ACCOUNT'​ :'​Export Account',​ +
- '​BTN_IMPORT_ACCOUNT'​ :'​Import Account',​ +
- '​BTN_SETTING'​ :'​Switch Setting',​ +
- '​BTN_OK'​ :'​OK',​ +
- '​BTN_CANCEL'​ :'​Cancel',​ +
- '​ALT_NAMENULL'​ :'​Please enter your username and password!',​ +
- '​ALT_DELACCOUNT'​ :'​delete this account',​ +
- '​ALT_LOGIN'​ :'​Login,​ please wait!',​ +
- '​ALT_SWITCHING'​ :'​Switching,​ please wait!',​ +
- '​ALT_CONFIRM'​ :'​Do you want to %s ?', +
- '​LAB_USERNICK'​ :'​NickName',​ +
- '​LAB_USERNAME'​ :'​Account',​ +
- '​LAB_USERPASS'​ :'​Password',​ +
- '​LAB_NONEED'​ :'​(Optional)',​ +
- '​LAB_LANGUAGE'​ :'​Default Language',​ +
- '​LAB_UPDATE'​ :'​Prompt update',​ +
- '​LAB_EXPORT'​ :'​Export Account Data:',​ +
- '​LAB_IMPORT'​ :'​Import Account Data:',​ +
- '​LAB_LOGIN_AUTO'​ :'​Automatic Login',​ +
- '​LAB_LOGIN_HOME'​ :'​Login to Facebook Home',​ +
- '​LAB_LOCK_PASS'​ :'​Lock Password',​ +
- '​BTN_LOCK_PASS'​ :'​Set Lock Password',​ +
- '​LAB_DEL'​ :'​Delete',​ +
- '​LAB_MOVE'​ :'​Move',​ +
- '​LAB_VERSION'​ :'​Facebook Switch Accounts Version %s', +
- '​LAB_NEW_VERSION'​ :'​Latest version:​%s',​ +
- '​LAB_NEW_UPLOAD'​ :'​Latest upate:%s',​ +
- '​ALT_PLZ_KEYPASS'​ :'​Pleace enter %s', +
- '​ALT_PLZ_KEYNEWPASS'​ :'​Pleace enter new %s!',​ +
- '​ALT_PLZ_KEYNEWPASS2'​ :'​Pleace enter new %s agein!',​ +
- '​ALT_PASS_SETOVER'​ :'​Set %s complete',​ +
- '​ALT_PASS_DIFF'​ :'​Inconsistent %s, please enter again!',​ +
- '​ALT_ERROR'​ :'​%s Wrong!',​ +
- '​LAB_NEW_UPDATA'​ :'​An update is available for this',​ +
-         '​LAB_CUSTOM_TITLE' ​     :'​Custom Title',​ +
-         '​LAB_USE_CUSTOM_TITLE' ​ :'Use Custom Title',​ +
-         '​LAB_SHOW_NAME' ​        :'​Show Your Custom Name'​ +
- }, +
- '​zh_tw':​{ +
- '​TITLE'​ :'​切換帳號',​ +
- '​ABOUT'​ :'​※關於這個程式※',​ +
- '​BTN_ADD_ACCOUNT'​ :'​新增 Facebook 帳號',​ +
- '​BTN_EDT_ACCOUNT'​ :'​編輯 Facebook 帳號',​ +
- '​BTN_CLS_ACCOUNT'​ :'​清空 Facebook 帳號',​ +
- '​BTN_EXPORT_ACCOUNT'​ :'​匯出 Facebook 帳號',​ +
- '​BTN_IMPORT_ACCOUNT'​ :'​匯入 Facebook 帳號',​ +
- '​BTN_SETTING'​ :'​切換帳號程式設定',​ +
- '​BTN_OK'​ :'​確定',​ +
- '​BTN_CANCEL'​ :'​取消',​ +
- '​ALT_NAMENULL'​ :'​請輸入帳號及密碼!',​ +
- '​ALT_DELACCOUNT'​ :'​刪除此帳號',​ +
- '​ALT_LOGIN'​ :'​入中,請稍後!',​ +
- '​ALT_SWITCHING'​ :'​切換 Facebook 帳號',​ +
- '​ALT_CONFIRM'​ :'​是否要%s?',​ +
- '​LAB_USERNICK'​ :'​名稱',​ +
- '​LAB_USERNAME'​ :'​帳號',​ +
- '​LAB_USERPASS'​ :'​密碼',​ +
- '​LAB_NONEED'​ :'​(選填)',​ +
- '​LAB_LANGUAGE'​ :'​預設語言',​ +
- '​LAB_UPDATE'​ :'​提示更新',​ +
- '​LAB_EXPORT'​ :'​匯資料:',​ +
- '​LAB_IMPORT'​ :'​匯入資料:',​ +
- '​LAB_LOGIN_AUTO'​ :'​自動登入',​ +
- '​LAB_LOGIN_HOME'​ :'​登入首頁',​ +
- '​LAB_LOCK_PASS'​ :'​密碼',​ +
- '​BTN_LOCK_PASS'​ :'​設定密碼',​ +
- '​LAB_DEL'​ :'​刪除',​ +
- '​LAB_MOVE'​ :'​移動',​ +
- '​LAB_VERSION'​ :'​Facebook 帳號切換 %s 版',​ +
- '​LAB_NEW_VERSION'​ :'​最新版本:%s',​ +
- '​LAB_NEW_UPLOAD'​ :'​上傳時間:%s',​ +
- '​ALT_PLZ_KEYPASS'​ :'​請輸入%s',​ +
- '​ALT_PLZ_KEYNEWPASS'​ :'​請輸入新的%s!',​ +
- '​ALT_PLZ_KEYNEWPASS2'​ :'​請再次輸入新的%s!',​ +
- '​ALT_PASS_SETOVER'​ :'​%s設定完成',​ +
- '​ALT_PASS_DIFF'​ :'​%s輸入不一致請重新輸入!',​ +
- '​ALT_ERROR'​ :'​%s錯誤!',​ +
- '​LAB_NEW_UPDATA'​ :'​有更新版是否要安裝?',​ +
-         '​LAB_CUSTOM_TITLE' ​     :'​自訂標題',​ +
-         '​LAB_USE_CUSTOM_TITLE' ​ :'使用自訂標題',​ +
-         '​LAB_SHOW_NAME' ​        :'​顯示登入者名稱'​ +
-     }, +
- '​zh_cn':​ { +
- '​TITLE'​ :'​切换帐戶',​ +
- '​ABOUT'​ :'​※关于这个程式※',​ +
- '​BTN_ADD_ACCOUNT'​ :'​新增 Facebook 帐戶',​ +
- '​BTN_EDT_ACCOUNT'​ :'​编辑 Facebook 帐戶',​ +
- '​BTN_CLS_ACCOUNT'​ :'​清空 Facebook 帐戶',​ +
- '​BTN_EXPORT_ACCOUNT'​ :'​汇出 Facebook 帐戶',​ +
- '​BTN_IMPORT_ACCOUNT'​ :'​汇入 Facebook 帐戶',​ +
- '​BTN_SETTING'​ :'​切换帐戶程式设定',​ +
- '​BTN_OK'​ :'​确定',​ +
- '​BTN_CANCEL'​ :'​取消',​ +
- '​ALT_NAMENULL'​ :'​请输入帐戶及密码!',​ +
- '​ALT_DELACCOUNT'​ :'​删除此帐戶',​ +
- '​ALT_LOGIN'​ :'​登入中,请稍后!',​ +
- '​ALT_SWITCHING'​ :'​切换 Facebook 帐戶',​ +
- '​ALT_CONFIRM'​ :'​否要%s?',​ +
- '​LAB_USERNICK'​ :'​名称',​ +
- '​LAB_USERNAME'​ :'​帐戶',​ +
- '​LAB_USERPASS'​ :'​密码',​ +
- '​LAB_NONEED'​ :'​(选填)',​ +
- '​LAB_LANGUAGE'​ :'​默认语言',​ +
- '​LAB_UPDATE'​ :'​提示更新',​ +
- '​LAB_EXPORT'​ :'​汇出资料:',​ +
- '​LAB_IMPORT'​ :'​汇入资料:',​ +
- '​LAB_LOGIN_AUTO'​ :'​自动登入',​ +
- '​LAB_LOGIN_HOME'​ :'​登入首页',​ +
- '​LAB_LOCK_PASS'​ :'​密码',​ +
- '​BTN_LOCK_PASS'​ :'​设定密码',​ +
- '​LAB_DEL'​ :'​删除',​ +
- '​LAB_MOVE'​ :'​移动',​ +
- '​LAB_VERSION'​ :'​Facebook 帐戶切换 %s 版',​ +
- '​LAB_NEW_VERSION'​ :'​最新版本:%s',​ +
- '​LAB_NEW_UPLOAD'​ :'​上传时间:%s',​ +
- '​ALT_PLZ_KEYPASS'​ :'​请输入%s',​ +
- '​ALT_PLZ_KEYNEWPASS'​ :'​请输入新的%s!',​ +
- '​ALT_PLZ_KEYNEWPASS2'​ :'​请再次输入新的%s!',​ +
- '​ALT_PASS_SETOVER'​ :'​%s设定完成',​ +
- '​ALT_PASS_DIFF'​ :'​%s输入不一致,请重新输入!',​ +
- '​ALT_ERROR'​ :'​%s错误!',​ +
- '​LAB_NEW_UPDATA'​ :'​有更新版是否要安装?',​ +
-         '​LAB_CUSTOM_TITLE' ​     :'​自订标题',​ +
-         '​LAB_USE_CUSTOM_TITLE' ​ :'​使用自訂標題',​ +
-         '​LAB_SHOW_NAME' ​        :'​顯示登入者名稱'​ +
- }, +
- '​de_de'​:{ +
- '​TITLE'​ :'​Switch Accounts',​ +
- '​ABOUT'​ :'​ÜBER',​ +
- '​BTN_ADD_ACCOUNT'​ :'​Konto hinzuf?​gen',​ +
- '​BTN_EDT_ACCOUNT'​ :'​Konto bearbeiten',​ +
- '​BTN_CLS_ACCOUNT'​ :'Alle Konten l?​schen',​ +
- '​BTN_EXPORT_ACCOUNT'​ :'​Konto exportieren',​ +
- '​BTN_IMPORT_ACCOUNT'​ :'​Konto importieren',​ +
- '​BTN_SETTING'​ :'​Einstellungen',​ +
- '​BTN_OK'​ :'​OK',​ +
- '​BTN_CANCEL'​ :'​Abbrechen',​ +
- '​ALT_NAMENULL'​ :'​Bitte Login und Passwort eingeben!',​ +
- '​ALT_DELACCOUNT'​ :'​Dieses Konto l?​schen',​ +
- '​ALT_LOGIN'​ :'​Login l?uft, bitte warten!',​ +
- '​ALT_SWITCHING'​ :'​Wechsle,​ bitte warten!',​ +
- '​ALT_CONFIRM'​ :'​Willst du wirklich %s ?', +
- '​LAB_USERNICK'​ :'​NickName',​ +
- '​LAB_USERNAME'​ :'​Konto',​ +
- '​LAB_USERPASS'​ :'​Passwort',​ +
- '​LAB_NONEED'​ :'​(Optional)',​ +
- '​LAB_LANGUAGE'​ :'​Default-Sprache',​ +
- '​LAB_UPDATE'​ :'​Update pr?​fen',​ +
- '​LAB_EXPORT'​ :'​Kontodaten exportieren:',​ +
- '​LAB_IMPORT'​ :'​Kontodaten importieren:',​ +
- '​LAB_LOGIN_AUTO'​ :'​Automatischer Login',​ +
- '​LAB_LOGIN_HOME'​ :'​Login auf die FB-Startseite',​ +
- '​LAB_LOCK_PASS'​ :'​Sperr-Passwort',​ +
- '​BTN_LOCK_PASS'​ :'​Sperr-Passwort setzen',​ +
- '​LAB_DEL'​ :'​L?​schen',​ +
- '​LAB_MOVE'​ :'​Verschieben',​ +
- '​LAB_VERSION'​ :'​Facebook Switch Accounts Version %s', +
- '​LAB_NEW_VERSION'​ :'​Neueste Version:​%s',​ +
- '​LAB_NEW_UPLOAD'​ :'​Neuester Upload:​%s',​ +
- '​ALT_PLZ_KEYPASS'​ :'​Bitte %s eingeben',​ +
- '​ALT_PLZ_KEYNEWPASS'​ :'​Bitte neues %s eingeben!',​ +
- '​ALT_PLZ_KEYNEWPASS2'​ :'​Bitte neues %s erneut eingeben!',​ +
- '​ALT_PASS_SETOVER'​ :'%s erfolgreich gesetzt.',​ +
- '​ALT_PASS_DIFF'​ :'​Ungleiches %s, bitte erneut eingeben!',​ +
- '​ALT_ERROR'​ :'%s falsch!',​ +
- '​LAB_NEW_UPDATA'​ :'​Hierf?​r gibt es ein Update!',​ +
- '​LAB_CUSTOM_TITLE'​ :'​Eigener Titel',​ +
- '​LAB_USE_CUSTOM_TITLE'​ :'​Verwende eigenen Titel',​ +
- '​LAB_SHOW_NAME'​ :'​Verwende deinen Namen'​ +
- }, +
- '​fr_fr'​ :{ +
- }, +
- '​sv_se' ​:+
- }, +
- '​es_es' ​:+
-+
- }; +
- function $T(key,​text) { +
- var string; +
- if(typeof(face_lang[language]) != '​object'​){ +
- string = face_lang['​en_us'​][key];​ +
- }else if(face_lang[language][key]) { +
- string = face_lang[language][key];​ +
- }else{ +
- string = face_lang['​en_us'​][key];​ +
-+
- if (text) { string = string.replace('​%s',​ text); } +
- return string; +
-+
- function data_to_str(){ +
- var d = document.createElement('​div'​);​ +
- d.id = '​data_Env';​ +
- d.style.display ='​none';​ +
- d.innerHTML = JSON.stringify(Env);​ +
- document.getElementsByTagName('​body'​)[0].appendChild(d);​ +
-+
- //​============================================================================================================================ +
- // Create Interface +
- //​============================================================================================================================ +
- if( $.inArray(WURL,​facebook) != -1){ +
-     window.location.href = fblocation;​ +
-     setValue('​fblocation',​ FURL ); +
-+
- var inFB = true; +
- if( document.getElementsByTagName('​body'​)[0].className.indexOf('​Locale'​) != -1 ){ +
- if( $('#​pageNav'​).size() > 0) { +
- $FSA['​fb_pn'​] = $('#​pageNav'​);​ +
- FB_addScript(data_to_str + '​\nsetTimeout("​data_to_str();",​1000);','​body'​);​ +
- }else if( $('#​login_form'​).size() != 0 || $('#​navPrivacy'​).size() != 0 ){ +
- var $LOGIN = null; +
- var p = null; +
- if( $('#​navPrivacy'​).size() != 0 ) { +
- $LOGIN = $('#​navPrivacy'​);​ +
- $('#​navPrivacy'​).append('<​ul id="​pageNav"​ style="​positionabsolute;​top:-10px;​right:​200px ;​width:​240px;"></​ul>'​);​  +
- } else { +
- $LOGIN = $('#​login_form'​).find('​input[type="​submit"​]'​);​ +
- p = $LOGIN.position();​ +
- $('​div.loggedout_menubar div.rfloat'​).append('<​ul id="​pageNav"​ style="​position:​ absolute;​top:​0px;​left:'​+(p.left-120)+'​px ;​width:​240px;"></​ul>'​);​ +
-+
- $FSA['​fb_pn'​] = $('#​pageNav'​);​ +
- +
-         FB_addStyle( +
-         '#​pageNav a{color:#​fff;​display:​block;​display:​inline-block;​font-weight:​bold;​height:​22px;​padding:​8px 10px 0 10px;​text-decoration:​none}'​+ +
-         '#​pageNav a:​hover,#​pageNav a:​focus,#​pageNav a:​active{outline:​none;​background-color:#​6d86b7}'​ +
-         ); +
- +
-         window.setTimeout(function(){ $('#​pageNav > li'​).css({'​float':'​left'​});​ },1000); +
- noLogin = true; +
- }else{ +
- inFB = false; +
-+
- //​console.log('​this page  = ' +  window.location.href);​ +
- if( inFB ) { +
-     language_select += $.map(fsa_json.language_select,​function(val,​key) {return '<​option value="'​+key+'">'​+val+'</​option>';​}) +
- $FSA['​fb_pn'​].append('<​li id="​fsa-account"><​a href="#"​ onclick="​return false;"​ id="​fsa-account-link"><​span>'​+ $T('​TITLE'​) +'</​span></​a>'​+ +
- '<​ul id="​fsa-account-list"></​ul></​li>'​);​ +
- $FSA["​account"​] = $('#​fsa-account-list'​);​ +
- $FSA["​title"​] = $('#​fsa-account-link'​).find('​span'​);​ +
-     $FSA['​fsa-account'​] = $('#​fsa-account'​);​ +
- FSA.Methods = { +
- LanguageChange:​function(lan){ +
- language = lan.toLowerCase();​ +
- setValue('​language',​lan.toLowerCase() ); +
-             TITLE = (setting.chk_use_custom_title) ? setting.ipt_custom_title : $T('​TITLE'​);​ +
- $FSA["​title"​].text( TITLE ); +
- }, +
- AccountLoad:​function(){ +
- $FSA['​account'​].html(''​);​ +
- this.CreatAccount();​ +
- this.CreatMenuList();​ +
- var win_h = $(window).height();​ +
- var fsa_h = $FSA["​account"​].height();​ +
- if( (fsa_h+50) >win_h ){ +
- $FSA["​account"​].height( win_h - 50 ) +
- }  +
- setValue('​useraccount',​ $.toJSON(useraccount));​ +
- FSA.LanguageChange(setting.sel_language);​ +
- }, +
- CreatAccount:​function(){ +
- var list = '';​ +
- fuid_uarr = []; +
- $.each(useraccount,​function(index,​acc){ +
- var userview = (acc.n) ? acc.n : acc.u; +
-                 if( typeof(acc.f) == '​undefined'​){ +
-                     useraccount[index].f = 0 +
-                 }else{ +
-                     fuid_uarr.push( parseInt( useraccount[index].f ,10) ); +
-                 } +
- list += '<​li><​a class="​FSA_BTN_LOGIN_ACCOUNT"​ id="​user_'​+index+'">'​+userview+'</​a></​li>';​ +
- }) +
- $FSA['​account'​].append(list);​ +
- }, +
- CreatMenuList:​function(){ +
-             $('​a[id^="​FSA_BTN"​]'​).unbind('​click'​);​ +
- $FSA['​account'​].append( +
- '<​li><​div style="​padding:​ 2px 0pt 0pt; margin: 2px 5px 0pt; border-top: 1px solid #​E0E0E0;"></​div></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_ADD_ACCOUNT">'​+$T('​BTN_ADD_ACCOUNT'​)+'</​a></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_CLS_ACCOUNT">'​+$T('​BTN_CLS_ACCOUNT'​)+'</​a></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_EDIT_ACCOUNT">'​+$T('​BTN_EDT_ACCOUNT'​)+'</​a></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_EXPORT">'​+$T('​BTN_EXPORT_ACCOUNT'​)+'</​a></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_IMPORT">'​+$T('​BTN_IMPORT_ACCOUNT'​)+'</​a></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_SETTING">'​+$T('​BTN_SETTING'​)+'</​a></​li>'​+ +
- '<​li><​a onclick="​return false" id="​FSA_BTN_ABOUT">'​+$T('​ABOUT'​)+'</​a></​li>'​);​ +
- }, +
- LockPassCheck:​function(){ +
- var PASS_ori = prompt( $T('​ALT_PLZ_KEYPASS',​$T('​LAB_LOCK_PASS'​)) ); +
- var pass = false; +
- if(PASS_ori == null){}else if($.md5(PASS_ori) == setting.ipt_lock_pass){pass = true}else{ alert( $T('​ALT_ERROR',​ $T('​LAB_LOCK_PASS'​)) );} +
- return pass; +
- }, +
- LoginFacebook:​function(id , logout){ +
- //​$('​body'​).append('<​iframe src="​about:​block"​ name="​fblogout"​ width="​0"​ marginwidth="​0"​ height="​0"​ marginheight="​0"​ scrolling="​Auto"​ frameborder="​0"></​iframe>'​);​ +
- //​$('#​logout_form'​).attr('​target','​fblogout'​).submit();​ +
-             if( $('#​logout_form'​).size() !== 0 && typeof(logout) === '​undefined'​) { +
- FSA.LogoutFacebook(id);​ +
- }else{ +
-             //​login_form +
-             var fblocation = ( $.inArray( WURL , facebook) != -1) ? FURL:​WURL;​ +
-             setValue('​fblocation',​ fblocation ); +
-             if( setting.chk_login_home ){ +
-             fblocation = FURL; +
-             } +
- var Content = '<​form method="​POST"​ action="​https://​www.facebook.com/​login.php?​login_attempt=1"​ id="​switch_login_form">'​+ +
- '<​div id="​standard_status"​ class="​UIMessageBox status"><​h2 class="​main_message"><​img src="​data:​image/​png;​base64,'​+IMG['​LOAD'​]+'"​ border="​0"/>'​+$T('​ALT_LOGIN'​)+'</​h2></​div>'​+ +
- '<​div id="​loginform"​ class="​loginform">'​+ +
- '<​input type="​hidden"​ id="​next"​ name="​next"​ value="'​+fblocation+'"​ autocomplete="​off">'​+ +
- '<​div class="​form_row clearfix "><​label for="​email"​ class="​login_form_label"​ id="​label_email">'​+$T('​LAB_USERNAME'​)+'</​label><​input class="​inputtext"​ id="​email"​ name="​email"​ value="'​+useraccount[id].u+'"​ type="​text"></​div>'​+ +
- '<​div class="​form_row clearfix "><​label for="​pass"​ class="​login_form_label"​ id="​label_pass">'​+$T('​LAB_USERPASS'​)+'</​label><​input class="​inputpassword"​ id="​pass"​ name="​pass"​ value="'​+useraccount[id].p+'"​ type="​password"></​div>'​+ +
- '<​input type="​hidden"​ name="​persistent"​ value="​1"​ id="​persist_box"​ /><​input type="​hidden"​ autocomplete="​off"​ id="​non_com_login"​ name="​non_com_login"​ /><​input type="​submit"​ class="​inputsubmit"​ id="​login"​ name="​login"​ value="​Login"​ />'​+ +
- '</​div></​form>';​ +
- FSA.DialogBox( $T('​ALT_SWITCHING'​) ,​Content,​function(){}) +
- $("​.dialog_buttons"​).hide();​ +
- if( parseInt(useraccount[id].f,10) == 0 || parseInt(useraccount[id].f,​10) =='​NaN'​ ){ +
- setValue('​now_login',​ id ); +
- } +
- window.setTimeout(function(){ $ById('​switch_login_form'​).submit() ​},500); +
- +
- }, +
- LogoutFacebook:​function(id){ +
- $.post('/​logout.php',​ $('#​logout_form'​).serialize() ​ ,​function(r){ +
- FSA.LoginFacebook(id,​true);​ +
- }) +
- }, +
- FacebokUid:​function(fbuid){ +
- var id = $.inArray(fbuid,​ fuid_uarr), now_login = getValue('​now_login',​ -1 ); +
- if( id == -1 && now_login != -1){ +
- useraccount[ now_login ].f = fbuid; +
- setValue('​useraccount',​ $.toJSON(useraccount) ); +
- setValue('​now_login',​ -1 ); +
- }else if( id != -1){ +
- var userview = (useraccount[id].n)?​ useraccount[id].n ​useraccount[id].u;​ +
- if( setting.chk_show_user_name ){ +
-                     $('#​navAccountLink'​).html(userview + '<​img width="​1"​ height="​1"​ src="​http://​static.ak.fbcdn.net/​rsrc.php/​v1/​y4/​r/​-PAXP-deijE.gif"​ class="​img">'​);​ +
-+
-                 $('#​user_'​+id).css({'​font-style'​:'​italic','​font-weight'​:'​bold'​});​ +
-+
- }, +
- DialogBox:​function(title,​bodyContent,​okFunction,​cancel){ +
- $('#​div_Box'​).remove(); +
- var cancel_btn = (true != cancel) ? '<​input class="​uiButton uiButtonLarge uiButtonDefault"​ type="​button"​ name="​BTN_CANCEL"​ id="​BTN_CANCEL" ​ value="'​+$T('​BTN_CANCEL'​)+'"/>':'';​ +
- var Msg = '<​div class="​generic_dialog_popup">'​+ +
- '<​div class="​pop_container_advanced">'​+ +
- '<​div id="​pop_content"​ class="​pop_content">'​+ +
- '<​h2 class="​dialog_title"><​span>'​ + title + '</​span></​h2>'​+ +
- '<​div class="​dialog_content">'​+ +
- '<​div class="​dialog_body"><​div class="​clearfix">'​+bodyContent+'</​div></​div>'​+ +
- '<​div class="​dialog_buttons clearfix">'​+ +
- '<​input class="​uiButton uiButtonLarge uiButtonConfirm"​ type="​button"​ name="​BTN_OK"​ id="​BTN_OK"​ value="'​+$T('​BTN_OK'​)+'"​ />'​+ cancel_btn + +
- '</​div>'​+ +
- '</​div>'​+ +
- '</​div>'​+ +
- '</​div>'​+ +
- '</​div>';​ +
- $("​body"​).append('<​div id="​div_Box"​ class="​generic_dialog pop_dialog"​ style="​top:​125px;">'​+Msg+'</​div>'​);​ +
- $('#​BTN_OK'​).click(okFunction);​ +
- if(true != cancel){ +
- $('#​BTN_CANCEL'​).click(function(){ $('#​div_Box'​).remove()});​ +
-+
- }, +
- About:​function(){ +
- var Content = '<​h2>'​+ $T('​LAB_VERSION',​version)+'</​h2>'​+ +
- '<​div style="​width:​420px;"​ id="​version">'​+$T('​LAB_NEW_VERSION',​ fsa_json.new__version ) +'<​br />'​+ $T('​LAB_NEW_UPLOAD',​fsa_json.time)+'</​div>'​+ +
- '<​div style="​width:​420px;">​Script Page:<​a href="​http://​userscripts.org/​scripts/​show/​63761">​http://​userscripts.org/​scripts/​show/​63761</​a><​br/>'​+ +
- '<​p>​Create By Mesak <a href="​http://​mesak.oow.me"​ traget="​_blank">​http://​mesak.oow.me</​a></​p></​div>';​ +
- FSA.DialogBox( $T('​ABOUT'​) ,​Content,​function(){ $('#​div_Box'​).remove();​ },true) +
-+
-+
- $.extend(FSA,​ FSA.Methods);​ +
- $.each(set_var,​ function(i,​x){ +
- setting[x] = ( typeof(setting[x]) == '​undefined'​) ? set_default[x] : setting[x] ; +
- }) +
- if( typeof(getValue('​setting'​)) != '​string'​) +
-+
- var bodyClass = document.body.className.split("​ "); +
- $.each(bodyClass,​function(i,​n){ +
- if( n.indexOf('​Locale_'​) != -1){ +
- language = n.toLowerCase().replace("​locale_",""​);​ +
-+
- }) +
- FSA.LanguageChange(language);​ +
-  +
-+
- FSA.AccountLoad();​ +
- if(setting.chk_login_auto && noLogin){ +
- FSA.LoginFacebook(0);​ +
- }else{ +
- if( setting.chk_update ) +
-+
- checkUpdate();​ +
-+
-+
-     TIME['​fuid_timeout'​] = 0; +
- TIME['​fuid'​] =  window.setInterval(function(){ +
- if( $('#​data_Env'​).size() > 0 || TIME['​fuid_timeout'​] > 10){ +
-             if( $('#​data_Env'​).html() !== '​undefined'​ ){  +
-     var FacebookEnv =  $.parseJSON( $('#​data_Env'​).html() ); +
-                 FSA.FacebokUid( parseInt(FacebookEnv.user,​10) );  +
-             ​} +
- clearInterval( TIME['​fuid'​] ); +
- }else{ +
- TIME['​fuid_timeout'​]++;​ +
-+
- }, 1000); +
-     $("#​FSA_BTN_ABOUT",​$FSA['​fb_pn'​]).live('​click',​function(){ FSA.About();​});​ +
- $("#​FSA_BTN_ADD_ACCOUNT",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- var Content = '<​table>'​+ +
- '<​tr><​td>'​+$T('​LAB_USERNICK'​)+'</​td><​td><​input id="​FSA-usernicks"​ type="​text"​ autocomplete="​off"​ size="​20"​ />'​+$T('​LAB_NONEED'​)+'</​td></​tr>'​+ +
- '<​tr><​td>'​+$T('​LAB_USERNAME'​)+'</​td><​td><​input id="​FSA-usernames"​ type="​text"​ autocomplete="​off"​ size="​20"​ /></​td></​tr>'​+ +
- '<​tr><​td>'​+$T('​LAB_USERPASS'​)+'</​td><​td><​input id="​FSA-passwords"​ type="​password"​ size="​20"​ /></​td></​tr>'​+ +
- '</​table>';​ +
- FSA.DialogBox( $T('​BTN_ADD_ACCOUNT'​) ,​Content,​function(){ +
- var n = $('#​FSA-usernicks'​).val();​ +
- var u = $('#​FSA-usernames'​).val();​ +
- var p = $('#​FSA-passwords'​).val();​ +
- if (u != ""​ && p != ""​){ +
- var newaccount = {"​f":​0,"​n":​n,"​u":​u,"​p":​p};​ +
- useraccount.push(newaccount);​ +
- $('#​div_Box'​).remove();​ +
- FSA.AccountLoad();​ +
- }else{ +
- alert($T('​ALT_NAMENULL'​));​ +
-+
- }) +
- }) +
- $("#​FSA_BTN_EDIT_ACCOUNT",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- var Content = '<​div style="​overflow:​auto;​height:​360px;"><​table width="​100%"​ id="​account_edit"><​thead>'​+ +
- '<​tr><​th colspan="​2">'​+$T('​LAB_MOVE'​)+'</​th><​th>'​+$T('​LAB_USERNICK'​)+'</​th><​th>'​+$T('​LAB_USERNAME'​)+'</​th><​th>'​+$T('​LAB_USERPASS'​)+'</​th><​th>'​+$T('​LAB_DEL'​)+'</​th></​tr>'​+ +
- '</​thead><​tbody>';​ +
- $.each(useraccount,​function(index,​acc){ +
- var fbuid = (typeof(acc.f) != '​number'​)?​ 0 :acc.f; +
- Content += '<​tr style="​padding:​0">'​+ +
- '<​td style="​text-align:​center;"><​a href="​javascript:​void(0)"​ class="​FSA_BTN_MOVE_ACCOUNT"​ id="​up_'​+ index +'"><​img src="​data:​image/​png;​base64,'​+IMG['​UP'​]+'"​ border="​0"​ /></​a></​td>'​+ +
- '<​td style="​text-align:​center;"><​a href="​javascript:​void(0)"​ class="​FSA_BTN_MOVE_ACCOUNT"​ id="​down_'​+ index +'"><​img src="​data:​image/​png;​base64,'​+IMG['​DOWN'​]+'"​ border="​0"​ /></​a></​td>'​+ +
- '<​td ​ width="​80"><​input class="​fbuids"​ type="​hidden"​ autocomplete="​off"​ style="​width:​100%"​ value="'​+fbuid+'"/>'​+ +
- '<​input class="​usernicks"​ type="​text"​ autocomplete="​off"​ style="​width:​100%"​ value="'​+acc.n+'"/></​td>'​+ +
- '<​td ​           ><​input class="​usernames"​ type="​text"​ autocomplete="​off"​ style="​width:​100%"​ value="'​+acc.u+'"/></​td>'​+ +
- '<​td width="​120"><​input class="​passwords"​ type="​password"​ autocomplete="​off"​ style="​width:​100%"​ value="'​+acc.p+'"/></​td>'​+ +
- '<​td style="​text-align:​center;"><​a href="​javascript:​void(0)"​ class="​FSA_BTN_DEL_ACCOUNT"​ id="​del_'​+ index +'"><​img src="​data:​image/​png;​base64,'​+IMG['​DEL'​]+'"​ border="​0"​ /></​a></​td>'​+ +
- '</​tr>';​ +
- }) +
- Content += '</​tbody></​table></​div>';​ +
- FSA.DialogBox( $T('​BTN_EDT_ACCOUNT'​) ,​Content,​function(){ +
- useraccount = new Array() +
- $("#​account_edit tbody tr"​).each(function(i,​obj){ +
- var f = parseInt( $(obj).find('​input.fbuids'​).val() ,10 ), +
- n = $(obj).find('​input.usernicks'​).val(),​ +
- u = $(obj).find('​input.usernames'​).val(),​ +
- p = $(obj).find('​input.passwords'​).val(),​ +
- newaccount = {"​f":​f,"​n":​n,"​u":​u,"​p":​p};​ +
- useraccount.push(newaccount);​ +
- }) +
- FSA.AccountLoad();​ +
- $('#​div_Box'​).remove();​ +
- }) +
- $("​.generic_dialog_popup"​).css({"​width":"​620px"​});​ +
- }) +
- $("​a.FSA_BTN_MOVE_ACCOUNT",​$('#​pop_content'​)).live('​click',​function(){ +
- var job = $(this).attr("​id"​).split("​_"​);​ +
- var id = job[1];job = job[0]; +
- var row = $(this).parents("​tr:​first"​);​ +
- switch(job){ +
- case "​up":​row.insertBefore(row.prev());​break;​ +
- case "​down":​row.insertAfter(row.next());​break;​ +
-+
- }) +
- $("​a.FSA_BTN_DEL_ACCOUNT",​$('#​pop_content'​)).live('​click',​function(){ +
- var id = $(this).attr("​id"​).replace('​del_',''​);​ +
- if(confirm( $T('​ALT_CONFIRM',​ $T('​ALT_DELACCOUNT'​)) )){ +
- useraccount.splice(id,​1);​ +
- $("#​FSA_BTN_EDIT_ACCOUNT"​).click();​ +
-+
- }) +
- $("#​FSA_BTN_CLS_ACCOUNT",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- if(confirm( $T('​ALT_CONFIRM',​ $T('​BTN_CLS_ACCOUNT'​) ) ) ){ +
- useraccount = new Array(); +
- FSA.AccountLoad();​ +
-+
- },​false) +
- $("#​FSA_BTN_SETTING",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- var Content = '<​table>'​+ +
- '<​tr><​td>'​+$T('​LAB_UPDATE'​)+'</​td><​td><​input type="​checkbox"​ id="​FSA_CHK_UPDATE"​ /></​td></​tr>'​+ +
- '<​tr><​td>'​+$T('​LAB_LOGIN_HOME'​)+'</​td><​td><​input type="​checkbox"​ id="​FSA_CHK_LOGIN_HOME"​ /></​td></​tr>'​+ +
- '<​tr><​td>'​+$T('​LAB_LOGIN_AUTO'​)+'</​td><​td><​input type="​checkbox"​ id="​FSA_CHK_LOGIN_AUTO"​ /></​td></​tr>'​+ +
- '<​tr><​td>'​+$T('​LAB_LOCK_PASS'​)+'</​td><​td><​input type="​hidden"​ id="​FSA_IPT_LOCK_PASS"​ value=""​ /><​input class="​uiButton uiButtonLarge uiButtonConfirm"​ type="​button"​ id="​BTN_SET_PASS"​ value="'​+$T('​BTN_LOCK_PASS'​)+'"​ /></​td></​tr>'​+ +
- '<​tr><​td width="​100">'​+$T('​LAB_LANGUAGE'​)+'</​td><​td><​select id="​FSA_SEL_LANGUAGE">'​+language_select+'</​select></​td></​tr>'​+ +
-             '<​tr><​td>'​+$T('​LAB_USE_CUSTOM_TITLE'​)+'</​td><​td><​input type="​checkbox"​ id="​FSA_CHK_USE_CUSTOM_TITLE"​ /></​td></​tr>'​+ +
-             '<​tr><​td>'​+$T('​LAB_CUSTOM_TITLE'​)+'</​td><​td><​input type="​text"​ id="​FSA_IPT_CUSTOM_TITLE"​ value=""​ /></​td></​tr>'​+ +
-             '<​tr><​td>'​+$T('​LAB_SHOW_NAME'​)+'</​td><​td><​input type="​checkbox"​ id="​FSA_CHK_SHOW_USER_NAME"​ /></​td></​tr>'​+ +
- '</​table>';​ +
- FSA.DialogBox( $T('​BTN_SETTING'​) ,​Content,​function(){ +
- if(! $("#​FSA_CHK_USE_CUSTOM_TITLE"​).prop("​checked"​) ​ ){ +
- $("#​FSA_IPT_CUSTOM_TITLE"​ ).val( $T('​TITLE'​) ); +
-+
- $.each(set_var,​ function(i,​x){ +
- var key = x.toUpperCase();​ +
- switch (key.substr(0,​3)){ +
- case "​SEL":​ setting[x] = $ById('​FSA_'​+key).value;​break;​ +
- case "​CHK":​ setting[x] = $("#​FSA_"​+key ).prop("​checked"​);​break;​ +
- case "​IPT":​ setting[x] = $("#​FSA_"​+key ).val();​break;​ +
-+
- }) +
- setValue('​setting',​ $.toJSON(setting) ); +
- FSA.LanguageChange( setting.sel_language ); +
- FSA.AccountLoad();​ +
- $('#​div_Box'​).remove();​ +
- }) +
- $.each(setting,​ function(key,​val){ +
- var key = key.toUpperCase();​ +
- switch (key.substr(0,​3)){ +
- case "​SEL":​ $ById('​FSA_'​+key).value = val;​break;​ +
- case "​CHK":​ $("#​FSA_"​+key ).prop("​checked",​val);​break;​ +
- case "​IPT":​ $("#​FSA_"​+key ).val(val);​break;​ +
-+
- }) +
- $('#​FSA_SEL_LANGUAGE'​).val(language);​ +
- $("#​BTN_SET_PASS"​).click(function(){ +
- if( FSA.LockPassCheck() ){ +
- var PASS1 = prompt( $T('​ALT_PLZ_KEYNEWPASS',​$T('​LAB_LOCK_PASS'​)));​ +
- if(PASS1 != null){ +
- var PASS2 = prompt($T('​ALT_PLZ_KEYNEWPASS2',​$T('​LAB_LOCK_PASS'​)));​ +
- if(PASS1 == PASS2){ +
- setting.ipt_lock_pass = $.md5(PASS1);​ +
- $("#​FSA_IPT_LOCK_PASS"​).val(setting.ipt_lock_pass);​ +
- setValue('​setting',​ $.toJSON(setting) ); +
- alert($T('​ALT_PASS_SETOVER',​$T('​LAB_LOCK_PASS'​)));​ +
- }else{ +
- alert($T('​ALT_PASS_DIFF',​$T('​LAB_LOCK_PASS'​)));​ +
-+
-+
-+
- }) +
- }) +
- $("#​FSA_BTN_EXPORT",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- if( FSA.LockPassCheck() ){ +
- var Content = $T('​LAB_EXPORT'​) +'<​br/><​textarea cols="​70"​ rows="​7">'​+ $.toJSON(useraccount) +'</​textarea>';​ +
- FSA.DialogBox( $T('​BTN_EXPORT_ACCOUNT'​) ,​Content,​function(){ +
- $('#​div_Box'​).remove();​ +
- },​true) +
-+
- }) +
- $("#​FSA_BTN_IMPORT",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- if( FSA.LockPassCheck() ){ +
- var Content =  $T('​LAB_IMPORT'​) +'<​br/><​input type="​text"​ id="​FSA_IPT_IMPORT"​ size="​40"​ />';​ +
- FSA.DialogBox( $T('​BTN_IMPORT_ACCOUNT'​) ,​Content,​function(){ +
- var test =  $.parseJSON( $('#​FSA_IPT_IMPORT'​).val()) +
- if( test != null){ +
- useraccount = test; +
- FSA.AccountLoad();​ +
-+
- $('#​div_Box'​).remove();​ +
- }) +
-+
- }) +
- $("​a.FSA_BTN_LOGIN_ACCOUNT",​$FSA['​fb_pn'​]).live('​click',​function(){ +
- var id = $(this).attr('​id'​).replace('​user_',''​);​ +
- FSA.LoginFacebook(id);​ +
- }); +
-+
-+
- function checkUpdate(){ +
- try{ +
- function updateCheck(forced){ +
- if ((forced) || (parseInt(getValue('​SUC_last_update',​ '​0'​)) + 86400000 <= (new Date().getTime()))){ +
- try{ +
- GM_xmlhttpRequest({method:​ '​GET',​url:​ '​http://​userscripts.org/​scripts/​source/'​+SUC_script_num+'​.meta.js?'​+new Date().getTime(),​headers:​ {'​Cache-Control':​ '​no-cache'​},​onload:​function(resp){ +
- var local_version,​ remote_version,​ rt, script_name;​rt=resp.responseText;​setValue('​SUC_last_update',​ new Date().getTime()+''​);​ +
- remote_version=parseInt(/​@uso:​version\s*(.*?​)\s*$/​m.exec(rt)[1]);​ +
- fsa_json.new__version = remote_version;​ +
- local_version=parseInt(getValue('​SUC_current_version',​ '​-1'​));​ +
- if(local_version!=-1){script_name = (/​@name\s*(.*?​)\s*$/​m.exec(rt))[1];​ +
- getValue('​SUC_target_script_name',​ script_name);​ +
- if (remote_version > local_version){ +
- if(confirm('​There is an update available for the Greasemonkey script "'​+script_name+'​."​\nWould you like to go to the install page now?'​)){ +
- GM_openInTab('​http://​userscripts.org/​scripts/​show/'​+SUC_script_num);​ setValue('​SUC_current_version',​ remote_version);​} +
- }else if (forced)alert('​No update is available for "'​+script_name+'​."'​);​ +
- }else setValue('​SUC_current_version',​ remote_version+''​);​} +
- }); +
- }catch (err){ +
- if (forced)alert('​An error occurred while checking for updates:​\n'​+err);​}} +
-+
- GM_registerMenuCommand(getValue('​SUC_target_script_name',​ '???'​) + ' - Manual Update Check',​ function(){updateCheck(true);​});​updateCheck(false);​ +
- }catch(err){} +
-+
-})(jQuery);​ +
-</​code>​+
 ===== Reference ===== ===== Reference =====
   * [[http://​www.techbang.com.tw/​posts/​5188|使用教學]]   * [[http://​www.techbang.com.tw/​posts/​5188|使用教學]]
 +
 +=====    =====
 +----
 +\\
 +~~DISQUS~~