Difference between revisions of "MediaWiki:Common.js"

From Team Fortress Wiki
Jump to: navigation, search
m
m (Enable custom CSS for User:Payn)
(188 intermediate revisions by 11 users not shown)
Line 1: Line 1:
// Note: This is a compressed version of the JavaScript code, for faster loading.
+
// This is the non-compressed version of MediaWiki:Common.js
// See http://wiki.teamfortress.com/wiki/MediaWiki:Common.js/Code.js for full readable code and licensing
 
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(12(E,B){12 ka(a,b,d){if(d===B&&a.1i===1){d=a.2x("1m-"+b);if(1k d==="1N"){1W{d=d==="1d"?1d:d==="1e"?1e:d==="1b"?1b:!c.5U(d)?27(d):f6.1h(d)?c.9c(d):d}1X(e){}c.1m(a,b,d)}1a d=B}14 d}12 U(){14 1e}12 ca(){14 1d}12 la(a,b,d){d[0].1n=a;14 c.1r.2K.2b(b,d)}12 dh(a){17 b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.1m(6,6.1i?"2W":"7c");if(1k h==="12")h=h.2W;if(!(a.7i===6||!h||!h.4w||a.3K&&a.1n==="4q")){if(a.49)A=4S("(^|\\\\.)"+a.49.2P(".").4g("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)");a.7i=6;17 J=h.4w.2C(0);19(k=0;k<J.18;k++){h=J[k];h.80.1D(X,"")===a.1n?f.1O(h.2h):J.3w(k--,1)}f=c(a.2J).5S(f,a.6S);o=0;19(x=f.18;o<x;o++){r=f[o];19(k=0;k<J.18;k++){h=J[k];if(r.2h===h.2h&&(!A||A.1h(h.49))){l=r.1E;e=1b;if(h.7X==="69"||h.7X==="64"){a.1n=h.7X;e=c(a.7m).5S(h.2h)[0]}if(!e||e!==l)C.1O({1E:l,5R:h,7q:r.7q})}}}o=0;19(x=C.18;o<x;o++){f=C[o];if(d&&f.7q>d)2j;a.6S=f.1E;a.1m=f.5R.1m;a.5R=f.5R;A=f.5R.c1.2b(f.1E,1I);if(A===1e||a.8r()){d=f.7q;if(A===1e)b=1e;if(a.8y())2j}}14 b}}12 Y(a,b){14(a&&a!=="*"?a+".":"")+b.1D(dg,"`").1D(dY,"&")}12 ma(a,b,d){if(c.1S(b))14 c.5Z(a,12(f,h){14!!b.1p(f,h,f)===d});1a if(b.1i)14 c.5Z(a,12(f){14 f===b===d});1a if(1k b==="1N"){17 e=c.5Z(a,12(f){14 f.1i===1});if(dy.1h(b))14 c.26(b,e,!d);1a b=c.26(b,e)}14 c.5Z(a,12(f){14 c.3X(f,b)>=0===d})}12 9D(a,b){17 d=0;b.1o(12(){if(6.1q===(a[d]&&a[d].1q)){17 e=c.1m(a[d++]),f=c.1m(6,e);if(e=e&&e.2W){3c f.2K;f.2W={};19(17 h in e)19(17 l in e[h])c.1r.3g(6,h,e[h][l],e[h][l].1m)}}})}12 f1(a,b){b.4G?c.6f({1J:b.4G,59:1e,3u:"2G"}):c.9b(b.1Q||b.eJ||b.39||"");b.1s&&b.1s.3E(b)}12 94(a,b,d){17 e=b==="2a"?a.5L:a.8m;if(d==="4Y")14 e;c.1o(b==="2a"?cr:c2,12(){d||(e-=27(c.1G(a,"67"+6))||0);if(d==="4B")e+=27(c.1G(a,"4B"+6))||0;1a e-=27(c.1G(a,"4Y"+6+"ep"))||0});14 e}12 da(a,b,d,e){if(c.3l(b)&&b.18)c.1o(b,12(f,h){d||ds.1h(a)?e(a,h):da(a+"["+(1k h==="2e"||c.3l(h)?f:"")+"]",h,d,e)});1a if(!d&&b!=1b&&1k b==="2e")c.63(b)?e(a,""):c.1o(b,12(f,h){da(a+"["+f+"]",h,d,e)});1a e(a,b)}12 S(a,b){17 d={};c.1o(a2.8O.2b([],a2.2C(0,b)),12(){d[6]=a});14 d}12 ac(a){if(!ea[a]){17 b=c("<"+a+">").fd("1T"),d=b.1G("1K");b.2S();if(d==="2A"||d==="")d="5k";ea[a]=d}14 ea[a]}12 fa(a){14 c.5q(a)?a:a.1i===9?a.7j||a.jc:1e}17 t=E.1F,c=12(){12 a(){if(!b.7a){1W{t.2g.cq("1R")}1X(j){3f(a,1);14}b.3x()}}17 b=12(j,s){14 3e b.fn.3O(j,s)},d=E.3M,e=E.$,f,h=/^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,l=/\\S/,k=/^\\s+/,o=/\\s+$/,x=/\\W/,r=/\\d/,A=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,C=/^[\\],:{}\\s]*$/,J=/\\\\(?:["\\\\\\/jd]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\\\\n\\r]*"|1d|1e|1b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,I=/(?:^|:|,)(?:\\s*\\[)+/g,L=/(fK)[ \\/]([\\w.]+)/,g=/(jr)(?:.*5Q)?[ \\/]([\\w.]+)/,i=/(jp) ([\\w.]+)/,n=/(jo)(?:.*? jm:([\\w.]+))?/,m=jn.j8,p=1e,q=[],u,y=6P.2B.3Q,F=6P.2B.iX,M=3t.2B.1O,N=3t.2B.2C,O=bs.2B.61,D=3t.2B.2c,R={};b.fn=b.2B={3O:12(j,s){17 v,z,H;if(!j)14 6;if(j.1i){6.2o=6[0]=j;6.18=1;14 6}if(j==="1T"&&!s&&t.1T){6.2o=t;6[0]=t.1T;6.2h="1T";6.18=1;14 6}if(1k j==="1N")if((v=h.1Z(j))&&(v[1]||!s))if(v[1]){H=s?s.2y||s:t;if(z=A.1Z(j))if(b.8g(s)){j=[t.24(z[1])];b.fn.1z.1p(j,s,1d)}1a j=[H.24(z[1])];1a{z=b.9Q([v[1]],[H]);j=(z.9Z?z.7o.5m(1d):z.7o).2L}14 b.5v(6,j)}1a{if((z=t.2Y(v[2]))&&z.1s){if(z.id!==v[2])14 f.21(j);6.18=1;6[0]=z}6.2o=t;6.2h=j;14 6}1a if(!s&&!x.1h(j)){6.2h=j;6.2o=t;j=t.29(j);14 b.5v(6,j)}1a 14!s||s.7f?(s||f).21(j):b(s).21(j);1a if(b.1S(j))14 f.3x(j);if(j.2h!==B){6.2h=j.2h;6.2o=j.2o}14 b.45(j,6)},2h:"",7f:"1.4.4",18:0,iY:12(){14 6.18},7v:12(){14 N.1p(6,0)},3q:12(j){14 j==1b?6.7v():j<0?6.2C(j)[0]:6[j]},3D:12(j,s,v){17 z=b();b.3l(j)?M.2b(z,j):b.5v(z,j);z.a1=6;z.2o=6.2o;if(s==="21")z.2h=6.2h+(6.2h?" ":"")+v;1a if(s)z.2h=6.2h+"."+s+"("+v+")";14 z},1o:12(j,s){14 b.1o(6,j,s)},3x:12(j){b.b1();if(b.7a)j.1p(t,b);1a q&&q.1O(j);14 6},eq:12(j){14 j===-1?6.2C(j):6.2C(j,+j+1)},5J:12(){14 6.eq(0)},6I:12(){14 6.eq(-1)},2C:12(){14 6.3D(N.2b(6,1I),"2C",N.1p(1I).4g(","))},30:12(j){14 6.3D(b.30(6,12(s,v){14 j.1p(s,v,s)}))},44:12(){14 6.a1||b(1b)},1O:M,4E:[].4E,3w:[].3w};b.fn.3O.2B=b.fn;b.1L=b.fn.1L=12(){17 j,s,v,z,H,G=1I[0]||{},K=1,Q=1I.18,ga=1e;if(1k G==="7T"){ga=G;G=1I[1]||{};K=2}if(1k G!=="2e"&&!b.1S(G))G={};if(Q===K){G=6;--K}19(;K<Q;K++)if((j=1I[K])!=1b)19(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.8g(z)||(H=b.3l(z)))){if(H){H=1e;v=v&&b.3l(v)?v:[]}1a v=v&&b.8g(v)?v:{};G[s]=b.1L(ga,v,z)}1a if(z!==B)G[s]=z}14 G};b.1L({iR:12(j){E.$=e;if(j)E.3M=d;14 b},7a:1e,8u:1,3x:12(j){j===1d&&b.8u--;if(!b.8u||j!==1d&&!b.7a){if(!t.1T)14 3f(b.3x,1);b.7a=1d;if(!(j!==1d&&--b.8u>0))if(q){17 s=0,v=q;19(q=1b;j=v[s++];)j.1p(t,b);b.fn.34&&b(t).34("3x").65("3x")}}},b1:12(){if(!p){p=1d;if(t.52==="3N")14 3f(b.3x,1);if(t.3L){t.3L("ex",u,1e);E.3L("4V",b.3x,1e)}1a if(t.3V){t.3V("53",u);E.3V("9i",b.3x);17 j=1e;1W{j=E.e8==1b}1X(s){}t.2g.cq&&j&&a()}}},1S:12(j){14 b.1n(j)==="12"},3l:3t.3l||12(j){14 b.1n(j)==="jO"},5q:12(j){14 j&&1k j==="2e"&&"cE"in j},5U:12(j){14 j==1b||!r.1h(j)||5U(j)},1n:12(j){14 j==1b?bs(j):R[y.1p(j)]||"2e"},8g:12(j){if(!j||b.1n(j)!=="2e"||j.1i||b.5q(j))14 1e;if(j.7t&&!F.1p(j,"7t")&&!F.1p(j.7t.2B,"jV"))14 1e;19(17 s in j);14 s===B||F.1p(j,s)},63:12(j){19(17 s in j)14 1e;14 1d},3v:12(j){fH j},9c:12(j){if(1k j!=="1N"||!j)14 1b;j=b.61(j);if(C.1h(j.1D(J,"@").1D(w,"]").1D(I,"")))14 E.7Y&&E.7Y.bZ?E.7Y.bZ(j):(3e 9h("14 "+j))();1a b.3v("k3 7Y: "+j)},6R:12(){},9b:12(j){if(j&&l.1h(j)){17 s=t.29("bi")[0]||t.2g,v=t.24("2G");v.1n="1Q/3T";if(b.1C.aD)v.2v(t.4o(j));1a v.1Q=j;s.3A(v,s.1B);s.3E(v)}},1q:12(j,s){14 j.1q&&j.1q.8h()===s.8h()},1o:12(j,s,v){17 z,H=0,G=j.18,K=G===B||b.1S(j);if(v)if(K)19(z in j){if(s.2b(j[z],v)===1e)2j}1a 19(;H<G;){if(s.2b(j[H++],v)===1e)2j}1a if(K)19(z in j){if(s.1p(j[z],z,j[z])===1e)2j}1a 19(v=j[0];H<G&&s.1p(v,H,v)!==1e;v=j[++H]);14 j},61:O?12(j){14 j==1b?"":O.1p(j)}:12(j){14 j==1b?"":j.3Q().1D(k,"").1D(o,"")},45:12(j,s){17 v=s||[];if(j!=1b){17 z=b.1n(j);j.18==1b||z==="1N"||z==="12"||z==="jZ"||b.5q(j)?M.1p(v,j):b.5v(v,j)}14 v},3X:12(j,s){if(s.2c)14 s.2c(j);19(17 v=0,z=s.18;v<z;v++)if(s[v]===j)14 v;14-1},5v:12(j,s){17 v=j.18,z=0;if(1k s.18==="4W")19(17 H=s.18;z<H;z++)j[v++]=s[z];1a 19(;s[z]!==B;)j[v++]=s[z++];j.18=v;14 j},5Z:12(j,s,v){17 z=[],H;v=!!v;19(17 G=0,K=j.18;G<K;G++){H=!!s(j[G],G);v!==H&&z.1O(j[G])}14 z},30:12(j,s,v){19(17 z=[],H,G=0,K=j.18;G<K;G++){H=s(j[G],G,v);if(H!=1b)z[z.18]=H}14 z.8O.2b([],z)},2p:1,6a:12(j,s,v){if(1I.18===2)if(1k s==="1N"){v=j;j=v[s];s=B}1a if(s&&!b.1S(s)){v=s;s=B}if(!s&&j)s=12(){14 j.2b(v||6,1I)};if(j)s.2p=j.2p=j.2p||s.2p||b.2p++;14 s},81:12(j,s,v,z,H,G){17 K=j.18;if(1k s==="2e"){19(17 Q in s)b.81(j,Q,s[Q],z,H,v);14 j}if(v!==B){z=!G&&z&&b.1S(v);19(Q=0;Q<K;Q++)H(j[Q],s,z?v.1p(j[Q],Q,H(j[Q],s)):v,G);14 j}14 K?H(j[0],s):B},2T:12(){14(3e aN).fl()},cF:12(j){j=j.1U();j=L.1Z(j)||g.1Z(j)||i.1Z(j)||j.2c("jw")<0&&n.1Z(j)||[];14{4K:j[1]||"",5Q:j[2]||"0"}},4K:{}});b.1o("jE jL bs 9h 3t aN 4S 6P".2P(" "),12(j,s){R["[2e "+s+"]"]=s.1U()});m=b.cF(m);if(m.4K){b.4K[m.4K]=1d;b.4K.5Q=m.5Q}if(b.4K.fK)b.4K.i3=1d;if(D)b.3X=12(j,s){14 D.1p(s,j)};if(!/\\s/.1h("\\i1")){k=/^[\\s\\eA]+/;o=/[\\s\\eA]+$/}f=b(t);if(t.3L)u=12(){t.77("ex",u,1e);b.3x()};1a if(t.3V)u=12(){if(t.52==="3N"){t.8k("53",u);b.3x()}};14 E.3M=E.$=b}();(12(){c.1C={};17 a=t.2g,b=t.24("2G"),d=t.24("1H"),e="2G"+c.2T();d.1g.1K="2A";d.39="  <3p/><2H></2H><a 2V=\'/a\' 1g=\'2q:93;88:1R;2u:.55;\'>a</a><2N 1n=\'58\'/>";17 f=d.29("*"),h=d.29("a")[0],l=t.24("31"),k=l.2v(t.24("66"));if(!(!f||!f.18||!h)){c.1C={9K:d.1B.1i===3,3i:!d.29("3i").18,f2:!!d.29("3p").18,1g:/93/.1h(h.2x("1g")),d5:h.2x("2V")==="/a",2u:/^0.55$/.1h(h.1g.2u),6M:!!h.1g.6M,cx:d.29("2N")[0].3s==="3H",hC:k.2Q,86:1d,a7:1e,7x:1e,aD:1e,9E:1d,5M:1b,a4:1e,9H:1e,6H:1d};l.4r=1d;c.1C.a7=!k.4r;b.1n="1Q/3T";1W{b.2v(t.4o("5u."+e+"=1;"))}1X(o){}a.3A(b,a.1B);if(E[e]){c.1C.aD=1d;3c E[e]}1W{3c b.1h}1X(x){c.1C.86=1e}a.3E(b);if(d.3V&&d.eD){d.3V("aQ",12 r(){c.1C.9E=1e;d.8k("aQ",r)});d.5m(1d).eD("aQ")}d=t.24("1H");d.39="<2N 1n=\'4F\' 3r=\'hL\' 4d=\'4d\'/>";a=t.fj();a.2v(d.1B);c.1C.7x=a.5m(1d).5m(1d).a6.4d;c(12(){17 r=t.24("1H");r.1g.2a=r.1g.cl="5b";t.1T.2v(r);c.5M=c.1C.5M=r.5L===2;if("6j"in r.1g){r.1g.1K="68";r.1g.6j=1;c.1C.a4=r.5L===2;r.1g.1K="";r.39="<1H 1g=\'2a:i7;\'></1H>";c.1C.9H=r.5L!==2}r.39="<2H><4p><4v 1g=\'67:0;1K:2A\'></4v><4v>t</4v></4p></2H>";17 A=r.29("4v");c.1C.6H=A[0].8m===0;A[0].1g.1K="";A[1].1g.1K="2A";c.1C.6H=c.1C.6H&&A[0].8m===0;r.39="";t.1T.3E(r).1g.1K="2A"});a=12(r){17 A=t.24("1H");r="3H"+r;17 C=r in A;if(!C){A.2r(r,"14;");C=1k A[r]==="12"}14 C};c.1C.dF=a("4y");c.1C.dR=a("6u");a=b=d=f=h=1b}})();17 aM={},f6=/^(?:\\{.*\\}|\\[.*\\])$/;c.1L({3R:{},fg:0,3I:"3M"+c.2T(),6A:{6x:1d,2e:"iC:iz-iO-iI-iJ-iK",iy:1d},1m:12(a,b,d){if(c.aG(a)){a=a==E?aM:a;17 e=a.1i,f=e?a[c.3I]:1b,h=c.3R;if(!(e&&!f&&1k b==="1N"&&d===B)){if(e)f||(a[c.3I]=f=++c.fg);1a h=a;if(1k b==="2e")if(e)h[f]=c.1L(h[f],b);1a c.1L(h,b);1a if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;14 1k b==="1N"?a[b]:a}}},5E:12(a,b){if(c.aG(a)){a=a==E?aM:a;17 d=a.1i,e=d?a[c.3I]:a,f=c.3R,h=d?f[e]:e;if(b){if(h){3c h[b];d&&c.63(h)&&c.5E(a)}}1a if(d&&c.1C.86)3c a[c.3I];1a if(a.5g)a.5g(c.3I);1a if(d)3c f[e];1a 19(17 l in a)3c a[l]}},aG:12(a){if(a.1q){17 b=c.6A[a.1q.1U()];if(b)14!(b===1d||a.2x("ix")!==b)}14 1d}});c.fn.1L({1m:12(a,b){17 d=1b;if(1k a==="3z"){if(6.18){17 e=6[0].9q,f;d=c.1m(6[0]);19(17 h=0,l=e.18;h<l;h++){f=e[h].3r;if(f.2c("1m-")===0){f=f.4z(5);ka(6[0],f,d[f])}}}14 d}1a if(1k a==="2e")14 6.1o(12(){c.1m(6,a)});17 k=a.2P(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=6.8e("ii"+k[1]+"!",[k[0]]);if(d===B&&6.18){d=c.1m(6[0],a);d=ka(6[0],a,d)}14 d===B&&k[1]?6.1m(k[0]):d}1a 14 6.1o(12(){17 o=c(6),x=[k[0],b];o.8e("ij"+k[1]+"!",x);c.1m(6,a,b);o.8e("ie"+k[1]+"!",x)})},5E:12(a){14 6.1o(12(){c.5E(6,a)})}});c.1L({3J:12(a,b,d){if(a){b=(b||"fx")+"3J";17 e=c.1m(a,b);if(!d)14 e||[];if(!e||c.3l(d))e=c.1m(a,b,c.45(d));1a e.1O(d);14 e}},4N:12(a,b){b=b||"fx";17 d=c.3J(a,b),e=d.4s();if(e==="aJ")e=d.4s();if(e){b==="fx"&&d.6s("aJ");e.1p(a,12(){c.4N(a,b)})}}});c.fn.1L({3J:12(a,b){if(1k a!=="1N"){b=a;a="fx"}if(b===B)14 c.3J(6[0],a);14 6.1o(12(){17 d=c.3J(6,a,b);a==="fx"&&d[0]!=="aJ"&&c.4N(6,a)})},4N:12(a){14 6.1o(12(){c.4N(6,a)})},im:12(a,b){a=c.fx?c.fx.7g[a]||a:a;b=b||"fx";14 6.3J(b,12(){17 d=6;3f(12(){c.4N(d,b)},a)})},kv:12(a){14 6.3J(a||"fx",[])}});17 9I=/[\\n\\t]/g,ha=/\\s+/,cz=/\\r/g,cy=/^(?:2V|4G|1g)$/,cI=/^(?:3K|2N)$/i,dK=/^(?:3K|2N|2e|31|6D)$/i,dT=/^a(?:mq)?$/i,a9=/^(?:4F|58)$/i;c.6W={"19":"fL","2R":"1Y",mm:"dN",m5:"mk",fU:"m3",m6:"m7",kx:"ky",kw:"ag",kt:"kH",kF:"kE"};c.fn.1L({1z:12(a,b){14 c.81(6,a,b,1d,c.1z)},kB:12(a){14 6.1o(12(){c.1z(6,a,"");6.1i===1&&6.5g(a)})},7b:12(a){if(c.1S(a))14 6.1o(12(x){17 r=c(6);r.7b(a.1p(6,x,r.1z("2R")))});if(a&&1k a==="1N")19(17 b=(a||"").2P(ha),d=0,e=6.18;d<e;d++){17 f=6[d];if(f.1i===1)if(f.1Y){19(17 h=" "+f.1Y+" ",l=f.1Y,k=0,o=b.18;k<o;k++)if(h.2c(" "+b[k]+" ")<0)l+=" "+b[k];f.1Y=c.61(l)}1a f.1Y=a}14 6},79:12(a){if(c.1S(a))14 6.1o(12(o){17 x=c(6);x.79(a.1p(6,o,x.1z("2R")))});if(a&&1k a==="1N"||a===B)19(17 b=(a||"").2P(ha),d=0,e=6.18;d<e;d++){17 f=6[d];if(f.1i===1&&f.1Y)if(a){19(17 h=(" "+f.1Y+" ").1D(9I," "),l=0,k=b.18;l<k;l++)h=h.1D(" "+b[l]+" "," ");f.1Y=c.61(h)}1a f.1Y=""}14 6},ft:12(a,b){17 d=1k a,e=1k b==="7T";if(c.1S(a))14 6.1o(12(f){17 h=c(6);h.ft(a.1p(6,f,h.1z("2R"),b),b)});14 6.1o(12(){if(d==="1N")19(17 f,h=0,l=c(6),k=b,o=a.2P(ha);f=o[h++];){k=e?k:!l.2l(f);l[k?"7b":"79"](f)}1a if(d==="3z"||d==="7T"){6.1Y&&c.1m(6,"cQ",6.1Y);6.1Y=6.1Y||a===1e?"":c.1m(6,"cQ")||""}})},2l:12(a){a=" "+a+" ";19(17 b=0,d=6.18;b<d;b++)if((" "+6[b].1Y+" ").1D(9I," ").2c(a)>-1)14 1d;14 1e},5t:12(a){if(!1I.18){17 b=6[0];if(b){if(c.1q(b,"66")){17 d=b.9q.3s;14!d||d.dH?b.3s:b.1Q}if(c.1q(b,"31")){17 e=b.8x;d=[];17 f=b.2d;b=b.1n==="31-6q";if(e<0)14 1b;17 h=b?e:0;19(e=b?e+1:f.18;h<e;h++){17 l=f[h];if(l.2Q&&(c.1C.a7?!l.4r:l.2x("4r")===1b)&&(!l.1s.4r||!c.1q(l.1s,"eu"))){a=c(l).5t();if(b)14 a;d.1O(a)}}14 d}if(a9.1h(b.1n)&&!c.1C.cx)14 b.2x("3s")===1b?"3H":b.3s;14(b.3s||"").1D(cz,"")}14 B}17 k=c.1S(a);14 6.1o(12(o){17 x=c(6),r=a;if(6.1i===1){if(k)r=a.1p(6,o,x.5t());if(r==1b)r="";1a if(1k r==="4W")r+="";1a if(c.3l(r))r=c.30(r,12(C){14 C==1b?"":C+""});if(c.3l(r)&&a9.1h(6.1n))6.4d=c.3X(x.5t(),r)>=0;1a if(c.1q(6,"31")){17 A=c.45(r);c("66",6).1o(12(){6.2Q=c.3X(c(6).5t(),A)>=0});if(!A.18)6.8x=-1}1a 6.3s=r}})}});c.1L({89:{5t:1d,1G:1d,2X:1d,1Q:1d,1m:1d,2a:1d,2w:1d,2s:1d},1z:12(a,b,d,e){if(!a||a.1i===3||a.1i===8)14 B;if(e&&b in c.89)14 c(a)[b](d);e=a.1i!==1||!c.9F(a);17 f=d!==B;b=e&&c.6W[b]||b;17 h=cy.1h(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="1n"&&cI.1h(a.1q)&&a.1s&&c.3v("1n kn kl\'t be l9");if(d===1b)a.1i===1&&a.5g(b);1a a[b]=d}if(c.1q(a,"6O")&&a.5c(b))14 a.5c(b).7D;if(b==="ag")14(b=a.5c("ag"))&&b.dH?b.3s:dK.1h(a.1q)||dT.1h(a.1q)&&a.2V?0:B;14 a[b]}if(!c.1C.1g&&e&&b==="1g"){if(f)a.1g.d8=""+d;14 a.1g.d8}f&&a.2r(b,""+d);if(!a.9q[b]&&a.dw&&!a.dw(b))14 B;a=!c.1C.d5&&e&&h?a.2x(b,2):a.2x(b);14 a===1b?B:a}});17 X=/\\.(.*)$/,ia=/^(?:6D|2N|31)$/i,dg=/\\./g,dY=/ /g,dX=/[^\\w\\s.|`]/g,c9=12(a){14 a.1D(dX,"\\\\$&")},bx={7W:0,6g:0};c.1r={3g:12(a,b,d,e){if(!(a.1i===3||a.1i===8)){if(c.5q(a)&&a!==E&&!a.e8)a=E;if(d===1e)d=U;1a if(!d)14;17 f,h;if(d.3h){f=d;d=f.3h}if(!d.2p)d.2p=c.2p++;if(h=c.1m(a)){17 l=a.1i?"2W":"7c",k=h[l],o=h.2K;if(1k k==="12"){o=k.2K;k=k.2W}1a if(!k){a.1i||(h[l]=h=12(){});h.2W=k={}}if(!o)h.2K=o=12(){14 1k c!=="3z"&&!c.1r.a3?c.1r.2K.2b(o.1E,1I):B};o.1E=a;b=b.2P(" ");19(17 x=0,r;l=b[x++];){h=f?c.1L({},f):{3h:d,1m:e};if(l.2c(".")>-1){r=l.2P(".");l=r.4s();h.49=r.2C(0).4E().4g(".")}1a{r=[];h.49=""}h.1n=l;if(!h.2p)h.2p=d.2p;17 A=k[l],C=c.1r.48[l]||{};if(!A){A=k[l]=[];if(!C.4R||C.4R.1p(a,e,r,o)===1e)if(a.3L)a.3L(l,o,1e);1a a.3V&&a.3V("3H"+l,o)}if(C.3g){C.3g.1p(a,h);if(!h.3h.2p)h.3h.2p=d.2p}A.1O(h);c.1r.41[l]=1d}a=1b}}},41:{},2S:12(a,b,d,e){if(!(a.1i===3||a.1i===8)){if(d===1e)d=U;17 f,h,l=0,k,o,x,r,A,C,J=a.1i?"2W":"7c",w=c.1m(a),I=w&&w[J];if(w&&I){if(1k I==="12"){w=I;I=I.2W}if(b&&b.1n){d=b.3h;b=b.1n}if(!b||1k b==="1N"&&b.gJ(0)==="."){b=b||"";19(f in I)c.1r.2S(a,f+b)}1a{19(b=b.2P(" ");f=b[l++];){r=f;k=f.2c(".")<0;o=[];if(!k){o=f.2P(".");f=o.4s();x=4S("(^|\\\\.)"+c.30(o.2C(0).4E(),c9).4g("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}if(A=I[f])if(d){r=c.1r.48[f]||{};19(h=e||0;h<A.18;h++){C=A[h];if(d.2p===C.2p){if(k||x.1h(C.49)){e==1b&&A.3w(h--,1);r.2S&&r.2S.1p(a,C)}if(e!=1b)2j}}if(A.18===0||e!=1b&&A.18===1){if(!r.4P||r.4P.1p(a,o)===1e)c.a8(a,f,w.2K);3c I[f]}}1a 19(h=0;h<A.18;h++){C=A[h];if(k||x.1h(C.49)){c.1r.2S(a,r,C.3h,h);A.3w(h--,1)}}}if(c.63(I)){if(b=w.2K)b.1E=1b;3c w.2W;3c w.2K;if(1k w==="12")c.5E(a,J);1a c.63(w)&&c.5E(a)}}}}},34:12(a,b,d,e){17 f=a.1n||a;if(!e){a=1k a==="2e"?a[c.3I]?a:c.1L(c.5l(f),a):c.5l(f);if(f.2c("!")>=0){a.1n=f=f.2C(0,-1);a.cK=1d}if(!d){a.5j();c.1r.41[f]&&c.1o(c.3R,12(){6.2W&&6.2W[f]&&c.1r.34(a,b,6.2K.1E)})}if(!d||d.1i===3||d.1i===8)14 B;a.23=B;a.2J=d;b=c.45(b);b.6s(a)}a.6S=d;(e=d.1i?c.1m(d,"2K"):(c.1m(d,"7c")||{}).2K)&&e.2b(d,b);e=d.1s||d.2y;1W{if(!(d&&d.1q&&c.6A[d.1q.1U()]))if(d["3H"+f]&&d["3H"+f].2b(d,b)===1e){a.23=1e;a.46()}}1X(h){}if(!a.8r()&&e)c.1r.34(a,b,e,1d);1a if(!a.b3()){17 l;e=a.2J;17 k=f.1D(X,""),o=c.1q(e,"a")&&k==="4q",x=c.1r.48[k]||{};if((!x.43||x.43.1p(d,a)===1e)&&!o&&!(e&&e.1q&&c.6A[e.1q.1U()])){1W{if(e[k]){if(l=e["3H"+k])e["3H"+k]=1b;c.1r.a3=1d;e[k]()}}1X(r){}if(l)e["3H"+k]=l;c.1r.a3=1e}}},2K:12(a){17 b,d,e,f;d=[];17 h=c.45(1I);a=h[0]=c.1r.bD(a||E.1r);a.6S=6;b=a.1n.2c(".")<0&&!a.cK;if(!b){e=a.1n.2P(".");a.1n=e.4s();d=e.2C(0).4E();e=4S("(^|\\\\.)"+d.4g("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}a.49=a.49||d.4g(".");f=c.1m(6,6.1i?"2W":"7c");if(1k f==="12")f=f.2W;d=(f||{})[a.1n];if(f&&d){d=d.2C(0);f=0;19(17 l=d.18;f<l;f++){17 k=d[f];if(b||e.1h(k.49)){a.3h=k.3h;a.1m=k.1m;a.5R=k;k=k.3h.2b(6,h);if(k!==B){a.23=k;if(k===1e){a.46();a.5j()}}if(a.8y())2j}}}14 a.23},6W:"hp g5 gx gX 3K gA 8p 9G dz bj 6S 1m hk h3 8z 3h 4D hs gm bk gz gk gI 6B 8d gP gU 7m h0 h8 gh dO 2J dG gw gQ 6N".2P(" "),bD:12(a){if(a[c.3I])14 a;17 b=a;a=c.5l(b);19(17 d=6.6W.18,e;d;){e=6.6W[--d];a[e]=b[e]}if(!a.2J)a.2J=a.dO||t;if(a.2J.1i===3)a.2J=a.2J.1s;if(!a.7m&&a.8z)a.7m=a.8z===a.2J?a.dG:a.8z;if(a.6B==1b&&a.9G!=1b){b=t.2g;d=t.1T;a.6B=a.9G+(b&&b.4H||d&&d.4H||0)-(b&&b.8E||d&&d.8E||0);a.8d=a.dz+(b&&b.4L||d&&d.4L||0)-(b&&b.8G||d&&d.8G||0)}if(a.6N==1b&&(a.8p!=1b||a.4D!=1b))a.6N=a.8p!=1b?a.8p:a.4D;if(!a.bk&&a.bj)a.bk=a.bj;if(!a.6N&&a.3K!==B)a.6N=a.3K&1?1:a.3K&2?3:a.3K&4?2:0;14 a},2p:gs,6a:c.6a,48:{3x:{4R:c.b1,4P:c.6R},4w:{3g:12(a){c.1r.3g(6,Y(a.80,a.2h),c.1L({},a,{3h:dh,2p:a.3h.2p}))},2S:12(a){c.1r.2S(6,Y(a.80,a.2h),a)}},g2:{4R:12(a,b,d){if(c.5q(6))6.aZ=d},4P:12(a,b){if(6.aZ===b)6.aZ=1b}}}};c.a8=t.77?12(a,b,d){a.77&&a.77(b,d,1e)}:12(a,b,d){a.8k&&a.8k("3H"+b,d)};c.5l=12(a){if(!6.46)14 3e c.5l(a);if(a&&a.1n){6.aY=a;6.1n=a.1n}1a 6.1n=a;6.hc=c.2T();6[c.3I]=1d};c.5l.2B={46:12(){6.b3=ca;17 a=6.aY;if(a)if(a.46)a.46();1a a.gD=1e},5j:12(){6.8r=ca;17 a=6.aY;if(a){a.5j&&a.5j();a.h5=1d}},hq:12(){6.8y=ca;6.5j()},b3:U,8r:U,8y:U};17 b5=12(a){17 b=a.7m;1W{19(;b&&b!==6;)b=b.1s;if(b!==6){a.1n=a.1m;c.1r.2K.2b(6,1I)}}1X(d){}},b6=12(a){a.1n=a.1m;c.1r.2K.2b(6,1I)};c.1o({69:"bp",64:"bo"},12(a,b){c.1r.48[a]={4R:12(d){c.1r.3g(6,b,d&&d.2h?b6:b5,a)},4P:12(d){c.1r.2S(6,b,d&&d.2h?b6:b5)}}});if(!c.1C.dF)c.1r.48.4y={4R:12(){if(6.1q.1U()!=="6O"){c.1r.3g(6,"4q.b4",12(a){17 b=a.2J,d=b.1n;if((d==="4y"||d==="3F")&&c(b).5S("6O").18){a.7i=B;14 la("4y",6,1I)}});c.1r.3g(6,"cB.b4",12(a){17 b=a.2J,d=b.1n;if((d==="1Q"||d==="6Q")&&c(b).5S("6O").18&&a.4D===13){a.7i=B;14 la("4y",6,1I)}})}1a 14 1e},4P:12(){c.1r.2S(6,".b4")}};if(!c.1C.dR){17 V,by=12(a){17 b=a.1n,d=a.3s;if(b==="4F"||b==="58")d=a.4d;1a if(b==="31-7J")d=a.8x>-1?c.30(a.2d,12(e){14 e.2Q}).4g("-"):"";1a if(a.1q.1U()==="31")d=a.8x;14 d},Z=12(a,b){17 d=a.2J,e,f;if(!(!ia.1h(d.1q)||d.dN)){e=c.1m(d,"bA");f=by(d);if(a.1n!=="6g"||d.1n!=="4F")c.1m(d,"bA",f);if(!(e===B||f===e))if(e!=1b||f){a.1n="6u";a.7i=B;14 c.1r.34(a,b,d)}}};c.1r.48.6u={3S:{6g:Z,gM:Z,4q:12(a){17 b=a.2J,d=b.1n;if(d==="4F"||d==="58"||b.1q.1U()==="31")14 Z.1p(6,a)},av:12(a){17 b=a.2J,d=b.1n;if(a.4D===13&&b.1q.1U()!=="6D"||a.4D===32&&(d==="58"||d==="4F")||d==="31-7J")14 Z.1p(6,a)},cp:12(a){a=a.2J;c.1m(a,"bA",by(a))}},4R:12(){if(6.1n==="76")14 1e;19(17 a in V)c.1r.3g(6,a+".cd",V[a]);14 ia.1h(6.1q)},4P:12(){c.1r.2S(6,".cd");14 ia.1h(6.1q)}};V=c.1r.48.6u.3S;V.6U=V.cp}t.3L&&c.1o({6U:"7W",6e:"6g"},12(a,b){12 d(e){e=c.1r.bD(e);e.1n=b;14 c.1r.34(e,1b,e.2J)}c.1r.48[b]={4R:12(){bx[b]++===0&&t.3L(a,d,1d)},4P:12(){--bx[b]===0&&t.77(a,d,1d)}}});c.1o(["8o","6q"],12(a,b){c.fn[b]=12(d,e,f){if(1k d==="2e"){19(17 h in d)6[b](h,e,d[h],f);14 6}if(c.1S(e)||e===1e){f=e;e=B}17 l=b==="6q"?c.6a(f,12(o){c(6).65(o,l);14 f.2b(6,1I)}):f;if(d==="au"&&b!=="6q")6.6q(d,e,f);1a{h=0;19(17 k=6.18;h<k;h++)c.1r.3g(6[h],d,l,e)}14 6}});c.fn.1L({65:12(a,b){if(1k a==="2e"&&!a.46)19(17 d in a)6.65(d,a[d]);1a{d=0;19(17 e=6.18;d<e;d++)c.1r.2S(6[d],a,b)}14 6},gS:12(a,b,d,e){14 6.4w(b,d,e,a)},gV:12(a,b,d){14 1I.18===0?6.65("4w"):6.c3(b,1b,d,a)},34:12(a,b){14 6.1o(12(){c.1r.34(a,b,6)})},8e:12(a,b){if(6[0]){17 d=c.5l(a);d.46();d.5j();c.1r.34(d,b,6[0]);14 d.23}},4x:12(a){19(17 b=1I,d=1;d<b.18;)c.6a(a,b[d++]);14 6.4q(c.6a(a,12(e){17 f=(c.1m(6,"c4"+a.2p)||0)%d;c.1m(6,"c4"+a.2p,f+1);e.46();14 b[f].2b(6,1I)||1e}))},c0:12(a,b){14 6.69(a).64(b||a)}});17 bw={6U:"7W",6e:"6g",69:"bp",64:"bo"};c.1o(["4w","c3"],12(a,b){c.fn[b]=12(d,e,f,h){17 l,k=0,o,x,r=h||6.2h;h=h?6:c(6.2o);if(1k d==="2e"&&!d.46){19(l in d)h[b](l,e,d[l],r);14 6}if(c.1S(e)){f=e;e=B}19(d=(d||"").2P(" ");(l=d[k++])!=1b;){o=X.1Z(l);x="";if(o){x=o[0];l=l.1D(X,"")}if(l==="c0")d.1O("69"+x,"64"+x);1a{o=l;if(l==="6U"||l==="6e"){d.1O(bw[l]+x);l+=x}1a l=(bw[l]||l)+x;if(b==="4w"){x=0;19(17 A=h.18;x<A;x++)c.1r.3g(h[x],"4w."+Y(l,r),{1m:e,2h:r,3h:f,80:l,c1:f,7X:o})}1a h.65("4w."+Y(l,r),f)}}14 6}});c.1o("6e 6U 7W 6g 4V 8T 7E au 4q h2 hl hj hi bp bo 69 64 6u 31 4y av cB gr 3v".2P(" "),12(a,b){c.fn[b]=12(d,e){if(e==1b){e=d;d=1b}14 1I.18>0?6.8o(b,d,e):6.34(b)};if(c.89)c.89[b]=1d});E.3V&&!E.3L&&c(E).8o("au",12(){19(17 a in c.3R)if(c.3R[a].2K)1W{c.1r.2S(c.3R[a].2K.1E)}1X(b){}});(12(){12 a(g,i,n,m,p,q){p=0;19(17 u=m.18;p<u;p++){17 y=m[p];if(y){17 F=1e;19(y=y[g];y;){if(y.5H===n){F=m[y.7R];2j}if(y.1i===1&&!q){y.5H=n;y.7R=p}if(y.1q.1U()===i){F=y;2j}y=y[g]}m[p]=F}}}12 b(g,i,n,m,p,q){p=0;19(17 u=m.18;p<u;p++){17 y=m[p];if(y){17 F=1e;19(y=y[g];y;){if(y.5H===n){F=m[y.7R];2j}if(y.1i===1){if(!q){y.5H=n;y.7R=p}if(1k i!=="1N"){if(y===i){F=1d;2j}}1a if(k.26(i,[y]).18>0){F=y;2j}}y=y[g]}m[p]=F}}}17 d=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,e=0,f=6P.2B.3Q,h=1e,l=1d;[0,0].4E(12(){l=1e;14 0});17 k=12(g,i,n,m){n=n||[];17 p=i=i||t;if(i.1i!==1&&i.1i!==9)14[];if(!g||1k g!=="1N")14 n;17 q,u,y,F,M,N=1d,O=k.5O(i),D=[],R=g;do{d.1Z("");if(q=d.1Z(R)){R=q[3];D.1O(q[1]);if(q[2]){F=q[3];2j}}}eU(q);if(D.18>1&&x.1Z(g))if(D.18===2&&o.4f[D[0]])u=L(D[0]+D[1],i);1a 19(u=o.4f[D[0]]?[i]:k(D.4s(),i);D.18;){g=D.4s();if(o.4f[g])g+=D.4s();u=L(g,u)}1a{if(!m&&D.18>1&&i.1i===9&&!O&&o.2k.4A.1h(D[0])&&!o.2k.4A.1h(D[D.18-1])){q=k.21(D.4s(),i,O);i=q.2D?k.26(q.2D,q.4i)[0]:q.4i[0]}if(i){q=m?{2D:D.8B(),4i:C(m)}:k.21(D.8B(),D.18===1&&(D[0]==="~"||D[0]==="+")&&i.1s?i.1s:i,O);u=q.2D?k.26(q.2D,q.4i):q.4i;if(D.18>0)y=C(u);1a N=1e;19(;D.18;){q=M=D.8B();if(o.4f[M])q=D.8B();1a M="";if(q==1b)q=i;o.4f[M](y,q,O)}}1a y=[]}y||(y=u);y||k.3v(M||g);if(f.1p(y)==="[2e 3t]")if(N)if(i&&i.1i===1)19(g=0;y[g]!=1b;g++){if(y[g]&&(y[g]===1d||y[g].1i===1&&k.3Z(i,y[g])))n.1O(u[g])}1a 19(g=0;y[g]!=1b;g++)y[g]&&y[g].1i===1&&n.1O(u[g]);1a n.1O.2b(n,y);1a C(y,n);if(F){k(F,p,n,m);k.bO(n)}14 n};k.bO=12(g){if(w){h=l;g.4E(w);if(h)19(17 i=1;i<g.18;i++)g[i]===g[i-1]&&g.3w(i--,1)}14 g};k.fq=12(g,i){14 k(g,1b,1b,i)};k.6r=12(g,i){14 k(i,1b,1b,[g]).18>0};k.21=12(g,i,n){17 m;if(!g)14[];19(17 p=0,q=o.7A.18;p<q;p++){17 u,y=o.7A[p];if(u=o.7H[y].1Z(g)){17 F=u[1];u.3w(1,1);if(F.4z(F.18-1)!=="\\\\"){u[1]=(u[1]||"").1D(/\\\\/g,"");m=o.21[y](u,i,n);if(m!=1b){g=g.1D(o.2k[y],"");2j}}}}m||(m=i.29("*"));14{4i:m,2D:g}};k.26=12(g,i,n,m){19(17 p,q,u=g,y=[],F=i,M=i&&i[0]&&k.5O(i[0]);g&&i.18;){19(17 N in o.26)if((p=o.7H[N].1Z(g))!=1b&&p[2]){17 O,D,R=o.26[N];D=p[1];q=1e;p.3w(1,1);if(D.4z(D.18-1)!=="\\\\"){if(F===y)y=[];if(o.aq[N])if(p=o.aq[N](p,F,n,y,m,M)){if(p===1d)bT}1a q=O=1d;if(p)19(17 j=0;(D=F[j])!=1b;j++)if(D){O=R(D,p,j,F);17 s=m^!!O;if(n&&O!=1b)if(s)q=1d;1a F[j]=1e;1a if(s){y.1O(D);q=1d}}if(O!==B){n||(F=y);g=g.1D(o.2k[N],"");if(!q)14[];2j}}}if(g===u)if(q==1b)k.3v(g);1a 2j;u=g}14 F};k.3v=12(g){fH"eI 3v, eG fo: "+g};17 o=k.dk={7A:["4A","an","5Y"],2k:{4A:/#((?:[\\w\\5y-\\5C\\-]|\\\\.)+)/,6v:/\\.((?:[\\w\\5y-\\5C\\-]|\\\\.)+)/,an:/\\[3r=[\'"]*((?:[\\w\\5y-\\5C\\-]|\\\\.)+)[\'"]*\\]/,aR:/\\[\\s*((?:[\\w\\5y-\\5C\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*([\'"]*)(.*?)\\3|)\\s*\\]/,5Y:/^((?:[\\w\\5y-\\5C\\*\\-]|\\\\.)+)/,8R:/:(ev|4O|6I|5J)-he(?:\\((8L|8M|[\\dn+\\-]*)\\))?/,51:/:(4O|eq|gt|lt|5J|6I|8L|8M)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,5D:/:((?:[\\w\\5y-\\5C\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},7H:{},aC:{"2R":"1Y","19":"fL"},7K:{2V:12(g){14 g.2x("2V")}},4f:{"+":12(g,i){17 n=1k i==="1N",m=n&&!/\\W/.1h(i);n=n&&!m;if(m)i=i.1U();m=0;19(17 p=g.18,q;m<p;m++)if(q=g[m]){19(;(q=q.6h)&&q.1i!==1;);g[m]=n||q&&q.1q.1U()===i?q||1e:q===i}n&&k.26(i,g,1d)},">":12(g,i){17 n,m=1k i==="1N",p=0,q=g.18;if(m&&!/\\W/.1h(i))19(i=i.1U();p<q;p++){if(n=g[p]){n=n.1s;g[p]=n.1q.1U()===i?n:1e}}1a{19(;p<q;p++)if(n=g[p])g[p]=m?n.1s:n.1s===i;m&&k.26(i,g,1d)}},"":12(g,i,n){17 m,p=e++,q=b;if(1k i==="1N"&&!/\\W/.1h(i)){m=i=i.1U();q=a}q("1s",i,p,g,m,n)},"~":12(g,i,n){17 m,p=e++,q=b;if(1k i==="1N"&&!/\\W/.1h(i)){m=i=i.1U();q=a}q("6h",i,p,g,m,n)}},21:{4A:12(g,i,n){if(1k i.2Y!=="3z"&&!n)14(g=i.2Y(g[1]))&&g.1s?[g]:[]},an:12(g,i){if(1k i.fu!=="3z"){19(17 n=[],m=i.fu(g[1]),p=0,q=m.18;p<q;p++)m[p].2x("3r")===g[1]&&n.1O(m[p]);14 n.18===0?1b:n}},5Y:12(g,i){14 i.29(g[1])}},aq:{6v:12(g,i,n,m,p,q){g=" "+g[1].1D(/\\\\/g,"")+" ";if(q)14 g;q=0;19(17 u;(u=i[q])!=1b;q++)if(u)if(p^(u.1Y&&(" "+u.1Y+" ").1D(/[\\t\\n]/g," ").2c(g)>=0))n||m.1O(u);1a if(n)i[q]=1e;14 1e},4A:12(g){14 g[1].1D(/\\\\/g,"")},5Y:12(g){14 g[1].1U()},8R:12(g){if(g[1]==="4O"){17 i=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.1Z(g[2]==="8L"&&"2n"||g[2]==="8M"&&"2n+1"||!/\\D/.1h(g[2])&&"gT+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;14 g},aR:12(g,i,n,m,p,q){i=g[1].1D(/\\\\/g,"");if(!q&&o.aC[i])g[1]=o.aC[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";14 g},5D:12(g,i,n,m,p){if(g[1]==="7k")if((d.1Z(g[3])||"").18>1||/^\\w/.1h(g[3]))g[3]=k(g[3],1b,1b,i);1a{g=k.26(g[3],i,n,1d^p);n||m.1O.2b(m,g);14 1e}1a if(o.2k.51.1h(g[0])||o.2k.8R.1h(g[0]))14 1d;14 g},51:12(g){g.6s(1d);14 g}},3S:{gR:12(g){14 g.4r===1e&&g.1n!=="3G"},4r:12(g){14 g.4r===1d},4d:12(g){14 g.4d===1d},2Q:12(g){14 g.2Q===1d},6E:12(g){14!!g.1B},6y:12(g){14!g.1B},d7:12(g,i,n){14!!k(n[3],g).18},gW:12(g){14/h\\d/i.1h(g.1q)},1Q:12(g){14"1Q"===g.1n},4F:12(g){14"4F"===g.1n},58:12(g){14"58"===g.1n},76:12(g){14"76"===g.1n},6Q:12(g){14"6Q"===g.1n},4y:12(g){14"4y"===g.1n},3F:12(g){14"3F"===g.1n},ez:12(g){14"ez"===g.1n},3K:12(g){14"3K"===g.1n||g.1q.1U()==="3K"},2N:12(g){14/2N|31|6D|3K/i.1h(g.1q)}},em:{5J:12(g,i){14 i===0},6I:12(g,i,n,m){14 i===m.18-1},8L:12(g,i){14 i%2===0},8M:12(g,i){14 i%2===1},lt:12(g,i,n){14 i<n[3]-0},gt:12(g,i,n){14 i>n[3]-0},4O:12(g,i,n){14 n[3]-0===i},eq:12(g,i,n){14 n[3]-0===i}},26:{5D:12(g,i,n,m){17 p=i[1],q=o.3S[p];if(q)14 q(g,n,i,m);1a if(p==="3Z")14(g.eJ||g.gF||k.7O([g])||"").2c(i[3])>=0;1a if(p==="7k"){i=i[3];n=0;19(m=i.18;n<m;n++)if(i[n]===g)14 1e;14 1d}1a k.3v("eI 3v, eG fo: "+p)},8R:12(g,i){17 n=i[1],m=g;gL(n){8V"ev":8V"5J":19(;m=m.6h;)if(m.1i===1)14 1e;if(n==="5J")14 1d;m=g;8V"6I":19(;m=m.38;)if(m.1i===1)14 1e;14 1d;8V"4O":n=i[2];17 p=i[3];if(n===1&&p===0)14 1d;17 q=i[0],u=g.1s;if(u&&(u.5H!==q||!g.aO)){17 y=0;19(m=u.1B;m;m=m.38)if(m.1i===1)m.aO=++y;u.5H=q}m=g.aO-p;14 n===0?m===0:m%n===0&&m/n>=0}},4A:12(g,i){14 g.1i===1&&g.2x("id")===i},5Y:12(g,i){14 i==="*"&&g.1i===1||g.1q.1U()===i},6v:12(g,i){14(" "+(g.1Y||g.2x("2R"))+" ").2c(i)>-1},aR:12(g,i){17 n=i[1];n=o.7K[n]?o.7K[n](g):g[n]!=1b?g[n]:g.2x(n);17 m=n+"",p=i[2],q=i[4];14 n==1b?p==="!=":p==="="?m===q:p==="*="?m.2c(q)>=0:p==="~="?(" "+m+" ").2c(q)>=0:!q?m&&n!==1e:p==="!="?m!==q:p==="^="?m.2c(q)===0:p==="$="?m.4z(m.18-q.18)===q:p==="|="?m===q||m.4z(0,q.18+1)===q+"-":1e},51:12(g,i,n,m){17 p=o.em[i[2]];if(p)14 p(g,n,i,m)}}},x=o.2k.51,r=12(g,i){14"\\\\"+(i-0+1)},A;19(A in o.2k){o.2k[A]=4S(o.2k[A].7F+/(?![^\\[]*\\])(?![^\\(]*\\))/.7F);o.7H[A]=4S(/(^(?:.|\\r|\\n)*?)/.7F+o.2k[A].7F.1D(/\\\\(\\d+)/g,r))}17 C=12(g,i){g=3t.2B.2C.1p(g,0);if(i){i.1O.2b(i,g);14 i}14 g};1W{3t.2B.2C.1p(t.2g.2L,0)}1X(J){C=12(g,i){17 n=0,m=i||[];if(f.1p(g)==="[2e 3t]")3t.2B.1O.2b(m,g);1a if(1k g.18==="4W")19(17 p=g.18;n<p;n++)m.1O(g[n]);1a 19(;g[n];n++)m.1O(g[n]);14 m}}17 w,I;if(t.2g.57)w=12(g,i){if(g===i){h=1d;14 0}if(!g.57||!i.57)14 g.57?-1:1;14 g.57(i)&4?-1:1};1a{w=12(g,i){17 n,m,p=[],q=[];n=g.1s;m=i.1s;17 u=n;if(g===i){h=1d;14 0}1a if(n===m)14 I(g,i);1a if(n){if(!m)14 1}1a 14-1;19(;u;){p.6s(u);u=u.1s}19(u=m;u;){q.6s(u);u=u.1s}n=p.18;m=q.18;19(u=0;u<n&&u<m;u++)if(p[u]!==q[u])14 I(p[u],q[u]);14 u===n?I(g,q[u],-1):I(p[u],i,1)};I=12(g,i,n){if(g===i)14 n;19(g=g.38;g;){if(g===i)14-1;g=g.38}14 1}}k.7O=12(g){19(17 i="",n,m=0;g[m];m++){n=g[m];if(n.1i===3||n.1i===4)i+=n.7D;1a if(n.1i!==8)i+=k.7O(n.2L)}14 i};(12(){17 g=t.24("1H"),i="2G"+(3e aN).fl(),n=t.2g;g.39="<a 3r=\'"+i+"\'/>";n.3A(g,n.1B);if(t.2Y(i)){o.21.4A=12(m,p,q){if(1k p.2Y!=="3z"&&!q)14(p=p.2Y(m[1]))?p.id===m[1]||1k p.5c!=="3z"&&p.5c("id").7D===m[1]?[p]:B:[]};o.26.4A=12(m,p){17 q=1k m.5c!=="3z"&&m.5c("id");14 m.1i===1&&q&&q.7D===p}}n.3E(g);n=g=1b})();(12(){17 g=t.24("1H");g.2v(t.g8(""));if(g.29("*").18>0)o.21.5Y=12(i,n){17 m=n.29(i[1]);if(i[1]==="*"){19(17 p=[],q=0;m[q];q++)m[q].1i===1&&p.1O(m[q]);m=p}14 m};g.39="<a 2V=\'#\'></a>";if(g.1B&&1k g.1B.2x!=="3z"&&g.1B.2x("2V")!=="#")o.7K.2V=12(i){14 i.2x("2V",2)};g=1b})();t.70&&12(){17 g=k,i=t.24("1H");i.39="<p 2R=\'fe\'></p>";if(!(i.70&&i.70(".fe").18===0)){k=12(m,p,q,u){p=p||t;m=m.1D(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!u&&!k.5O(p))if(p.1i===9)1W{14 C(p.70(m),q)}1X(y){}1a if(p.1i===1&&p.1q.1U()!=="2e"){17 F=p.2x("id"),M=F||"gC";F||p.2r("id",M);1W{14 C(p.70("#"+M+" "+m),q)}1X(N){}gB{F||p.5g("id")}}14 g(m,p,q,u)};19(17 n in g)k[n]=g[n];i=1b}}();(12(){17 g=t.2g,i=g.6r||g.gl||g.go||g.g6,n=1e;1W{i.1p(t.2g,"[1h!=\'\']:gv")}1X(m){n=1d}if(i)k.6r=12(p,q){q=q.1D(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!k.5O(p))1W{if(n||!o.2k.5D.1h(q)&&!/!=/.1h(q))14 i.1p(p,q)}1X(u){}14 k(q,1b,1b,[p]).18>0}})();(12(){17 g=t.24("1H");g.39="<1H 2R=\'1h e\'></1H><1H 2R=\'1h\'></1H>";if(!(!g.7l||g.7l("e").18===0)){g.a6.1Y="e";if(g.7l("e").18!==1){o.7A.3w(1,0,"6v");o.21.6v=12(i,n,m){if(1k n.7l!=="3z"&&!m)14 n.7l(i[1])};g=1b}}})();k.3Z=t.2g.3Z?12(g,i){14 g!==i&&(g.3Z?g.3Z(i):1d)}:t.2g.57?12(g,i){14!!(g.57(i)&16)}:12(){14 1e};k.5O=12(g){14(g=(g?g.2y||g:0).2g)?g.1q!=="gO":1e};17 L=12(g,i){19(17 n,m=[],p="",q=i.1i?[i]:i;n=o.2k.5D.1Z(g);){p+=n[0];g=g.1D(o.2k.5D,"")}g=o.4f[g]?g+"*":g;n=0;19(17 u=q.18;n<u;n++)k(g,q[n],m);14 k.26(p,m)};c.21=k;c.2D=k.dk;c.2D[":"]=c.2D.3S;c.7w=k.bO;c.1Q=k.7O;c.9F=k.5O;c.3Z=k.3Z})();17 cD=/gy$/,$a=/^(?:cm|cU|cN)/,ab=/,/,dy=/^.[^:#\\[\\.,]*$/,bb=3t.2B.2C,cb=c.2D.2k.51;c.fn.1L({21:12(a){19(17 b=6.3D("","21",a),d=0,e=0,f=6.18;e<f;e++){d=b.18;c.21(a,6[e],b);if(e>0)19(17 h=d;h<b.18;h++)19(17 l=0;l<d;l++)if(b[l]===b[h]){b.3w(h--,1);2j}}14 b},d7:12(a){17 b=c(a);14 6.26(12(){19(17 d=0,e=b.18;d<e;d++)if(c.3Z(6,b[d]))14 1d})},7k:12(a){14 6.3D(ma(6,a,1e),"7k",a)},26:12(a){14 6.3D(ma(6,a,1d),"26",a)},is:12(a){14!!a&&c.26(a,6).18>0},5S:12(a,b){17 d=[],e,f,h=6[0];if(c.3l(a)){17 l,k={},o=1;if(h&&a.18){e=0;19(f=a.18;e<f;e++){l=a[e];k[l]||(k[l]=c.2D.2k.51.1h(l)?c(l,b||6.2o):l)}19(;h&&h.2y&&h!==b;){19(l in k){e=k[l];if(e.7f?e.3C(h)>-1:c(h).is(e))d.1O({2h:l,1E:h,7q:o})}h=h.1s;o++}}14 d}l=cb.1h(a)?c(a,b||6.2o):1b;e=0;19(f=6.18;e<f;e++)19(h=6[e];h;)if(l?l.3C(h)>-1:c.21.6r(h,a)){d.1O(h);2j}1a{h=h.1s;if(!h||!h.2y||h===b)2j}d=d.18>1?c.7w(d):d;14 6.3D(d,"5S",a)},3C:12(a){if(!a||1k a==="1N")14 c.3X(6[0],a?c(a):6.6E().22());14 c.3X(a.7f?a[0]:a,6)},3g:12(a,b){17 d=1k a==="1N"?c(a,b||6.2o):c.45(a),e=c.5v(6.3q(),d);14 6.3D(!d[0]||!d[0].1s||d[0].1s.1i===11||!e[0]||!e[0].1s||e[0].1s.1i===11?e:c.7w(e))},gK:12(){14 6.3g(6.a1)}});c.1o({6E:12(a){14(a=a.1s)&&a.1i!==11?a:1b},cm:12(a){14 c.56(a,"1s")},h7:12(a,b,d){14 c.56(a,"1s",d)},gG:12(a){14 c.4O(a,2,"38")},hm:12(a){14 c.4O(a,2,"6h")},hn:12(a){14 c.56(a,"38")},cN:12(a){14 c.56(a,"6h")},hh:12(a,b,d){14 c.56(a,"38",d)},cU:12(a,b,d){14 c.56(a,"6h",d)},gd:12(a){14 c.ae(a.1s.1B,a)},22:12(a){14 c.ae(a.1B)},bd:12(a){14 c.1q(a,"g0")?a.gp||a.g1.1F:c.45(a.2L)}},12(a,b){c.fn[a]=12(d,e){17 f=c.30(6,b,d);cD.1h(a)||(e=d);if(e&&1k e==="1N")f=c.26(e,f);f=6.18>1?c.7w(f):f;if((6.18>1||ab.1h(e))&&$a.1h(a))f=f.g4();14 6.3D(f,a,bb.1p(1I).4g(","))}});c.1L({26:12(a,b,d){if(d)a=":7k("+a+")";14 b.18===1?c.21.6r(b[0],a)?[b[0]]:[]:c.21.fq(a,b)},56:12(a,b,d){17 e=[];19(a=a[b];a&&a.1i!==9&&(d===B||a.1i!==1||!c(a).is(d));){a.1i===1&&e.1O(a);a=a[b]}14 e},4O:12(a,b,d){b=b||1;19(17 e=0;a;a=a[d])if(a.1i===1&&++e===b)2j;14 a},ae:12(a,b){19(17 d=[];a;a=a.38)a.1i===1&&a!==b&&d.1O(a);14 d}});17 9C=/ 3M\\d+="(?:\\d+|1b)"/g,$=/^\\s+/,9U=/<(?!ee|br|ej|6x|hr|4J|2N|3p|gY|5o)(([\\w:]+)[^>]*)\\/>/ig,9W=/<([\\w:]+)/,db=/<3i/i,eb=/<|&#?\\w+;/,9M=/<(?:2G|2e|6x|66|1g)/i,9y=/4d\\s*(?:[^=]|=\\s*.4d.)/i,fb=/\\=([^="\'>\\s]+\\/)>/g,P={66:[1,"<31 7J=\'7J\'>","</31>"],gZ:[1,"<eK>","</eK>"],f3:[1,"<2H>","</2H>"],4p:[2,"<2H><3i>","</3i></2H>"],4v:[3,"<2H><3i><4p>","</4p></3i></2H>"],ej:[2,"<2H><3i></3i><a5>","</a5></2H>"],ee:[1,"<30>","</30>"],43:[0,"",""]};P.eu=P.66;P.3i=P.h6=P.a5=P.gq=P.f3;P.fE=P.4v;if(!c.1C.f2)P.43=[1,"1H<1H>","</1H>"];c.fn.1L({1Q:12(a){if(c.1S(a))14 6.1o(12(b){17 d=c(6);d.1Q(a.1p(6,b,d.1Q()))});if(1k a!=="2e"&&a!==B)14 6.6y().4j((6[0]&&6[0].2y||t).4o(a));14 c.1Q(6)},7u:12(a){if(c.1S(a))14 6.1o(12(d){c(6).7u(a.1p(6,d))});if(6[0]){17 b=c(a,6[0].2y).eq(0).97(1d);6[0].1s&&b.3A(6[0]);b.30(12(){19(17 d=6;d.1B&&d.1B.1i===1;)d=d.1B;14 d}).4j(6)}14 6},eO:12(a){if(c.1S(a))14 6.1o(12(b){c(6).eO(a.1p(6,b))});14 6.1o(12(){17 b=c(6),d=b.bd();d.18?d.7u(a):b.4j(a)})},gn:12(a){14 6.1o(12(){c(6).7u(a)})},gj:12(){14 6.6E().1o(12(){c.1q(6,"1T")||c(6).6C(6.2L)}).44()},4j:12(){14 6.5e(1I,1d,12(a){6.1i===1&&6.2v(a)})},f5:12(){14 6.5e(1I,1d,12(a){6.1i===1&&6.3A(a,6.1B)})},7I:12(){if(6[0]&&6[0].1s)14 6.5e(1I,1e,12(b){6.1s.3A(b,6)});1a if(1I.18){17 a=c(1I[0]);a.1O.2b(a,6.7v());14 6.3D(a,"7I",1I)}},9T:12(){if(6[0]&&6[0].1s)14 6.5e(1I,1e,12(b){6.1s.3A(b,6.38)});1a if(1I.18){17 a=6.3D(6,"9T",1I);a.1O.2b(a,c(1I[0]).7v());14 a}},2S:12(a,b){19(17 d=0,e;(e=6[d])!=1b;d++)if(!a||c.26(a,[e]).18){if(!b&&e.1i===1){c.7n(e.29("*"));c.7n([e])}e.1s&&e.1s.3E(e)}14 6},6y:12(){19(17 a=0,b;(b=6[a])!=1b;a++)19(b.1i===1&&c.7n(b.29("*"));b.1B;)b.3E(b.1B);14 6},97:12(a){17 b=6.30(12(){if(!c.1C.9E&&!c.9F(6)){17 d=6.g3,e=6.2y;if(!d){d=e.24("1H");d.2v(6.5m(1d));d=d.39}14 c.9r([d.1D(9C,"").1D(fb,\'="$1">\').1D($,"")],e)[0]}1a 14 6.5m(1d)});if(a===1d){9D(6,b);9D(6.21("*"),b.21("*"))}14 b},2X:12(a){if(a===B)14 6[0]&&6[0].1i===1?6[0].39.1D(9C,""):1b;1a if(1k a==="1N"&&!9M.1h(a)&&(c.1C.9K||!$.1h(a))&&!P[(9W.1Z(a)||["",""])[1].1U()]){a=a.1D(9U,"<$1></$2>");1W{19(17 b=0,d=6.18;b<d;b++)if(6[b].1i===1){c.7n(6[b].29("*"));6[b].39=a}}1X(e){6.6y().4j(a)}}1a c.1S(a)?6.1o(12(f){17 h=c(6);h.2X(a.1p(6,f,h.2X()))}):6.6y().4j(a);14 6},6C:12(a){if(6[0]&&6[0].1s){if(c.1S(a))14 6.1o(12(b){17 d=c(6),e=d.2X();d.6C(a.1p(6,b,e))});if(1k a!=="1N")a=c(a).eW();14 6.1o(12(){17 b=6.38,d=6.1s;c(6).2S();b?c(b).7I(a):c(d).4j(a)})}1a 14 6.3D(c(c.1S(a)?a():a),"6C",a)},eW:12(a){14 6.2S(a,1d)},5e:12(a,b,d){17 e,f,h,l=a[0],k=[];if(!c.1C.7x&&1I.18===3&&1k l==="1N"&&9y.1h(l))14 6.1o(12(){c(6).5e(a,b,d,1d)});if(c.1S(l))14 6.1o(12(x){17 r=c(6);a[0]=l.1p(6,x,b?r.2X():B);r.5e(a,b,d)});if(6[0]){e=l&&l.1s;e=c.1C.1s&&e&&e.1i===11&&e.2L.18===6.18?{7o:e}:c.9Q(a,6,k);h=e.7o;if(f=h.2L.18===1?h=h.1B:h.1B){b=b&&c.1q(f,"4p");f=0;19(17 o=6.18;f<o;f++)d.1p(b?c.1q(6[f],"2H")?6[f].29("3i")[0]||6[f].2v(6[f].2y.24("3i")):6[f]:6[f],f>0||e.9Z||6.18>1?h.5m(1d):h)}k.18&&c.1o(k,f1)}14 6}});c.9Q=12(a,b,d){17 e,f,h;b=b&&b[0]?b[0].2y||b[0]:t;if(a.18===1&&1k a[0]==="1N"&&a[0].18<gu&&b===t&&!9M.1h(a[0])&&(c.1C.7x||!9y.1h(a[0]))){f=1d;if(h=c.9x[a[0]])if(h!==1)e=h}if(!e){e=b.fj();c.9r(a,b,e,d)}if(f)c.9x[a[0]]=h?e:1;14{7o:e,9Z:f}};c.9x={};c.1o({fd:"4j",ht:"f5",3A:"7I",h4:"9T",hg:"6C"},12(a,b){c.fn[a]=12(d){17 e=[];d=c(d);17 f=6.18===1&&6[0].1s;if(f&&f.1i===11&&f.2L.18===1&&d.18===1){d[b](6[0]);14 6}1a{f=0;19(17 h=d.18;f<h;f++){17 l=(f>0?6.97(1d):6).3q();c(d[f])[b](l);e=e.8O(l)}14 6.3D(e,a,d.2h)}}});c.1L({9r:12(a,b,d,e){b=b||t;if(1k b.24==="3z")b=b.2y||b[0]&&b[0].2y||t;19(17 f=[],h=0,l;(l=a[h])!=1b;h++){if(1k l==="4W")l+="";if(l){if(1k l==="1N"&&!eb.1h(l))l=b.4o(l);1a if(1k l==="1N"){l=l.1D(9U,"<$1></$2>");17 k=(9W.1Z(l)||["",""])[1].1U(),o=P[k]||P.43,x=o[0],r=b.24("1H");19(r.39=o[1]+l+o[2];x--;)r=r.a6;if(!c.1C.3i){x=db.1h(l);k=k==="2H"&&!x?r.1B&&r.1B.2L:o[1]==="<2H>"&&!x?r.2L:[];19(o=k.18-1;o>=0;--o)c.1q(k[o],"3i")&&!k[o].2L.18&&k[o].1s.3E(k[o])}!c.1C.9K&&$.1h(l)&&r.3A(b.4o($.1Z(l)[0]),r.1B);l=r.2L}if(l.1i)f.1O(l);1a f=c.5v(f,l)}}if(d)19(h=0;f[h];h++)if(e&&c.1q(f[h],"2G")&&(!f[h].1n||f[h].1n.1U()==="1Q/3T"))e.1O(f[h].1s?f[h].1s.3E(f[h]):f[h]);1a{f[h].1i===1&&f.3w.2b(f,[h+1,0].8O(c.45(f[h].29("2G"))));d.2v(f[h])}14 f},7n:12(a){19(17 b,d,e=c.3R,f=c.1r.48,h=c.1C.86,l=0,k;(k=a[l])!=1b;l++)if(!(k.1q&&c.6A[k.1q.1U()]))if(d=k[c.3I]){if((b=e[d])&&b.2W)19(17 o in b.2W)f[o]?c.1r.2S(k,o):c.a8(k,o,b.2K);if(h)3c k[c.3I];1a k.5g&&k.5g(c.3I);3c e[d]}}});17 9k=/e3\\([^)]*\\)/i,gb=/2u=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,9m=/^-?\\d+(?:3d)?$/i,jb=/^-?\\d/,kb={2M:"5A",am:"3G",1K:"5k"},cr=["eh","h1"],c2=["eg","gN"],W,92,aa,lb=12(a,b){14 b.8h()};c.fn.1G=12(a,b){if(1I.18===2&&b===B)14 6;14 c.81(6,a,b,1d,12(d,e,f){14 f!==B?c.1g(d,e,f):c.1G(d,e)})};c.1L({7h:{2u:{3q:12(a,b){if(b){17 d=W(a,"2u","2u");14 d===""?"1":d}1a 14 a.1g.2u}}},c6:{gE:1d,dB:1d,2u:1d,6j:1d,gH:1d},a0:{"88":c.1C.6M?"6M":"dp"},1g:12(a,b,d,e){if(!(!a||a.1i===3||a.1i===8||!a.1g)){17 f,h=c.7U(b),l=a.1g,k=c.7h[h];b=c.a0[h]||h;if(d!==B){if(!(1k d==="4W"&&5U(d)||d==1b)){if(1k d==="4W"&&!c.c6[h])d+="3d";if(!k||!("4i"in k)||(d=k.4i(a,d))!==B)1W{l[b]=d}1X(o){}}}1a{if(k&&"3q"in k&&(f=k.3q(a,1e,e))!==B)14 f;14 l[b]}}},1G:12(a,b,d){17 e,f=c.7U(b),h=c.7h[f];b=c.a0[f]||f;if(h&&"3q"in h&&(e=h.3q(a,1d,d))!==B)14 e;1a if(W)14 W(a,b,f)},cf:12(a,b,d){17 e={},f;19(f in b){e[f]=a.1g[f];a.1g[f]=b[f]}d.1p(a);19(f in b)a.1g[f]=e[f]},7U:12(a){14 a.1D(hb,lb)}});c.eR=c.1G;c.1o(["2w","2a"],12(a,b){c.7h[b]={3q:12(d,e,f){17 h;if(e){if(d.5L!==0)h=94(d,b,f);1a c.cf(d,kb,12(){h=94(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="3B"&&aa)h=aa(d,b,b);if(h!=1b)14 h===""||h==="8P"?"3B":h}if(h<0||h==1b){h=d.1g[b];14 h===""||h==="8P"?"3B":h}14 1k h==="1N"?h:h+"3d"}},4i:12(d,e){if(9m.1h(e)){e=27(e);if(e>=0)14 e+"3d"}1a 14 e}}});if(!c.1C.2u)c.7h.2u={3q:12(a,b){14 gb.1h((b&&a.4M?a.4M.26:a.1g.26)||"")?27(4S.$1)/6G+"":b?"1":""},4i:12(a,b){17 d=a.1g;d.6j=1;17 e=c.5U(b)?"":"e3(2u="+b*6G+")",f=d.26||"";d.26=9k.1h(f)?f.1D(9k,e):d.26+" "+e}};if(t.7j&&t.7j.8J)92=12(a,b,d){17 e;d=d.1D(ib,"-$1").1U();if(!(b=a.2y.7j))14 B;if(b=b.8J(a,1b)){e=b.hf(d);if(e===""&&!c.3Z(a.2y.2g,a))e=c.1g(a,d)}14 e};if(t.2g.4M)aa=12(a,b){17 d,e,f=a.4M&&a.4M[b],h=a.1g;if(!9m.1h(f)&&jb.1h(f)){d=h.1R;e=a.9t.1R;a.9t.1R=a.4M.1R;h.1R=b==="h9"?"gf":f||0;f=h.gg+"3d";h.1R=d;a.9t.1R=e}14 f===""?"8P":f};W=92||aa;if(c.2D&&c.2D.3S){c.2D.3S.3G=12(a){17 b=a.8m;14 a.5L===0&&b===0||!c.1C.6H&&(a.1g.1K||c.1G(a,"1K"))==="2A"};c.2D.3S.fP=12(a){14!c.2D.3S.3G(a)}}17 mb=c.2T(),dt=/<2G\\b[^<]*(?:(?!<\\/2G>)<[^<]*)*<\\/2G>/gi,du=/^(?:31|6D)/i,dv=/^(?:2q|g7|ge|g9|3G|gc|4W|6Q|ho|io|kW|1Q|kV|1J|kU)$/i,d4=/^(?:5P|kX)$/,ds=/\\[\\]$/,T=/\\=\\?(&|$)/,ja=/\\?/,di=/([?&])df=[^&]*/,dc=/^(\\w+:)?\\/\\/([^\\/?#]+)/,dL=/%20/g,d3=/#.*$/,98=c.fn.4V;c.fn.1L({4V:12(a,b,d){if(1k a!=="1N"&&98)14 98.2b(6,1I);1a if(!6.18)14 6;17 e=a.2c(" ");if(e>=0){17 f=a.2C(e,a.18);a=a.2C(0,e)}e="5P";if(b)if(c.1S(b)){d=b;b=1b}1a if(1k b==="2e"){b=c.5o(b,c.5h.9v);e="dx"}17 h=6;c.6f({1J:a,1n:e,3u:"2X",1m:b,3N:12(l,k){if(k==="4U"||k==="9g")h.2X(f?c("<1H>").4j(l.8v.1D(dt,"")).21(f):l.8v);d&&h.1o(d,[l.8v,k,l])}});14 6},kY:12(){14 c.5o(6.dq())},dq:12(){14 6.30(12(){14 6.dl?c.45(6.dl):6}).26(12(){14 6.3r&&!6.4r&&(6.4d||du.1h(6.1q)||dv.1h(6.1n))}).30(12(a,b){17 d=c(6).5t();14 d==1b?1b:c.3l(d)?c.30(d,12(e){14{3r:b.3r,3s:e}}):{3r:b.3r,3s:d}}).3q()}});c.1o("d9 9w cZ dM dS e6".2P(" "),12(a,b){c.fn[b]=12(d){14 6.8o(b,d)}});c.1L({3q:12(a,b,d,e){if(c.1S(b)){e=e||d;d=b;b=1b}14 c.6f({1n:"5P",1J:a,1m:b,4U:d,3u:e})},d6:12(a,b){14 c.3q(a,1b,b,"2G")},l0:12(a,b,d){14 c.3q(a,b,d,"5w")},kZ:12(a,b,d,e){if(c.1S(b)){e=e||d;d=b;b={}}14 c.6f({1n:"dx",1J:a,1m:b,4U:d,3u:e})},kT:12(a){c.1L(c.5h,a)},5h:{1J:6i.2V,41:1d,1n:"5P",9l:"8l/x-kS-6O-kM",d0:1d,59:1d,7Z:12(){14 3e E.9o},8q:{72:"8l/72, 1Q/72",2X:"1Q/2X",2G:"1Q/3T, 8l/3T",5w:"8l/5w, 1Q/3T",1Q:"1Q/kL",43:"*/*"}},6f:12(a){17 b=c.1L(1d,{},c.5h,a),d,e,f,h=b.1n.8h(),l=d4.1h(h);b.1J=b.1J.1D(d3,"");b.2o=a&&a.2o!=1b?a.2o:b;if(b.1m&&b.d0&&1k b.1m!=="1N")b.1m=c.5o(b.1m,b.9v);if(b.3u==="8i"){if(h==="5P")T.1h(b.1J)||(b.1J+=(ja.1h(b.1J)?"&":"?")+(b.8i||"3y")+"=?");1a if(!b.1m||!T.1h(b.1m))b.1m=(b.1m?b.1m+"&":"")+(b.8i||"3y")+"=?";b.3u="5w"}if(b.3u==="5w"&&(b.1m&&T.1h(b.1m)||T.1h(b.1J))){d=b.kK||"8i"+mb++;if(b.1m)b.1m=(b.1m+"").1D(T,"="+d+"$1");b.1J=b.1J.1D(T,"="+d+"$1");b.3u="2G";17 k=E[d];E[d]=12(m){if(c.1S(k))k(m);1a{E[d]=B;1W{3c E[d]}1X(p){}}f=m;c.8A(b,w,e,f);c.5T(b,w,e,f);r&&r.3E(A)}}if(b.3u==="2G"&&b.3R===1b)b.3R=1e;if(b.3R===1e&&l){17 o=c.2T(),x=b.1J.1D(di,"$kN="+o);b.1J=x+(x===b.1J?(ja.1h(b.1J)?"&":"?")+"df="+o:"")}if(b.1m&&l)b.1J+=(ja.1h(b.1J)?"&":"?")+b.1m;b.41&&c.8w++===0&&c.1r.34("d9");o=(o=dc.1Z(b.1J))&&(o[1]&&o[1].1U()!==6i.99||o[2].1U()!==6i.kO);if(b.3u==="2G"&&h==="5P"&&o){17 r=t.29("bi")[0]||t.2g,A=t.24("2G");if(b.dC)A.kR=b.dC;A.4G=b.1J;if(!d){17 C=1e;A.9i=A.53=12(){if(!C&&(!6.52||6.52==="kQ"||6.52==="3N")){C=1d;c.8A(b,w,e,f);c.5T(b,w,e,f);A.9i=A.53=1b;r&&A.1s&&r.3E(A)}}}r.3A(A,r.1B);14 B}17 J=1e,w=b.7Z();if(w){b.e0?w.dZ(h,b.1J,b.59,b.e0,b.6Q):w.dZ(h,b.1J,b.59);1W{if(b.1m!=1b&&!l||a&&a.9l)w.6m("kP-l1",b.9l);if(b.e5){c.8s[b.1J]&&w.6m("dW-ce-l2",c.8s[b.1J]);c.8t[b.1J]&&w.6m("dW-lg-lf",c.8t[b.1J])}o||w.6m("X-le-lh","9o");w.6m("lj",b.3u&&b.8q[b.3u]?b.8q[b.3u]+", */*; q=0.ll":b.8q.43)}1X(I){}if(b.e7&&b.e7.1p(b.2o,w,b)===1e){b.41&&c.8w--===1&&c.1r.34("9w");w.5G();14 1e}b.41&&c.7p(b,"e6",[w,b]);17 L=w.53=12(m){if(!w||w.52===0||m==="5G"){J||c.5T(b,w,e,f);J=1d;if(w)w.53=c.6R}1a if(!J&&w&&(w.52===4||m==="5f")){J=1d;w.53=c.6R;e=m==="5f"?"5f":!c.cg(w)?"3v":b.e5&&c.ch(w,b.1J)?"9g":"4U";17 p;if(e==="4U")1W{f=c.co(w,b.3u,b)}1X(q){e="95";p=q}if(e==="4U"||e==="9g")d||c.8A(b,w,e,f);1a c.9s(b,w,e,p);d||c.5T(b,w,e,f);m==="5f"&&w.5G();if(b.59)w=1b}};1W{17 g=w.5G;w.5G=12(){w&&9h.2B.1p.1p(g,w);L("5G")}}1X(i){}b.59&&b.5f>0&&3f(12(){w&&!J&&L("5f")},b.5f);1W{w.lk(l||b.1m==1b?1b:b.1m)}1X(n){c.9s(b,w,1b,n);c.5T(b,w,e,f)}b.59||L();14 w}},5o:12(a,b){17 d=[],e=12(h,l){l=c.1S(l)?l():l;d[d.18]=8n(h)+"="+8n(l)};if(b===B)b=c.5h.9v;if(c.3l(a)||a.7f)c.1o(a,12(){e(6.3r,6.3s)});1a 19(17 f in a)da(f,a[f],b,e);14 d.4g("&").1D(dL,"+")}});c.1L({8w:0,8s:{},8t:{},9s:12(a,b,d,e){a.3v&&a.3v.1p(a.2o,b,d,e);a.41&&c.7p(a,"dM",[b,a,e])},8A:12(a,b,d,e){a.4U&&a.4U.1p(a.2o,e,d,b);a.41&&c.7p(a,"dS",[b,a])},5T:12(a,b,d){a.3N&&a.3N.1p(a.2o,b,d);a.41&&c.7p(a,"cZ",[b,a]);a.41&&c.8w--===1&&c.1r.34("9w")},7p:12(a,b,d){(a.2o&&a.2o.1J==1b?c(a.2o):c.1r).34(b,d)},cg:12(a){1W{14!a.5z&&6i.99==="76:"||a.5z>=bG&&a.5z<ld||a.5z===ci||a.5z===lc}1X(b){}14 1e},ch:12(a,b){17 d=a.8Y("l5-ce"),e=a.8Y("l4");if(d)c.8s[b]=d;if(e)c.8t[b]=e;14 a.5z===ci},co:12(a,b,d){17 e=a.8Y("5r-1n")||"",f=b==="72"||!b&&e.2c("72")>=0;a=f?a.l3:a.8v;f&&a.2g.1q==="95"&&c.3v("95");if(d&&d.c5)a=d.c5(a,b);if(1k a==="1N")if(b==="5w"||!b&&e.2c("5w")>=0)a=c.9c(a);1a if(b==="2G"||!b&&e.2c("3T")>=0)c.9b(a);14 a}});if(E.c7)c.5h.7Z=12(){if(E.6i.99!=="76:")1W{14 3e E.9o}1X(a){}1W{14 3e E.c7("l6.l7")}1X(b){}};c.1C.6f=!!c.5h.7Z();17 ea={},cS=/^(?:4x|3n|3o)$/,cT=/^([+\\-]=)?([\\d+.\\-]+)(.*)$/,ba,a2=[["2w","8F","l8","kJ","kI"],["2a","9p","kk","cl","kj"],["2u"]];c.fn.1L({3n:12(a,b,d){if(a||a===0)14 6.4u(S("3n",3),a,b,d);1a{d=0;19(17 e=6.18;d<e;d++){a=6[d];b=a.1g.1K;if(!c.1m(a,"7S")&&b==="2A")b=a.1g.1K="";b===""&&c.1G(a,"1K")==="2A"&&c.1m(a,"7S",ac(a.1q))}19(d=0;d<e;d++){a=6[d];b=a.1g.1K;if(b===""||b==="2A")a.1g.1K=c.1m(a,"7S")||""}14 6}},3o:12(a,b,d){if(a||a===0)14 6.4u(S("3o",3),a,b,d);1a{a=0;19(b=6.18;a<b;a++){d=c.1G(6[a],"1K");d!=="2A"&&c.1m(6[a],"7S",d)}19(a=0;a<b;a++)6[a].1g.1K="2A";14 6}},cY:c.fn.4x,4x:12(a,b,d){17 e=1k a==="7T";if(c.1S(a)&&c.1S(b))6.cY.2b(6,1I);1a a==1b||e?6.1o(12(){17 f=e?a:c(6).is(":3G");c(6)[f?"3n":"3o"]()}):6.4u(S("4x",3),a,b,d);14 6},ki:12(a,b,d,e){14 6.26(":3G").1G("2u",0).3n().44().4u({2u:b},a,d,e)},4u:12(a,b,d,e){17 f=c.ed(b,d,e);if(c.63(a))14 6.1o(f.3N);14 6[f.3J===1e?"1o":"3J"](12(){17 h=c.1L({},f),l,k=6.1i===1,o=k&&c(6).is(":3G"),x=6;19(l in a){17 r=c.7U(l);if(l!==r){a[r]=a[l];3c a[l];l=r}if(a[l]==="3o"&&o||a[l]==="3n"&&!o)14 h.3N.1p(6);if(k&&(l==="2w"||l==="2a")){h.4l=[6.1g.4l,6.1g.km,6.1g.kp];if(c.1G(6,"1K")==="68"&&c.1G(6,"88")==="2A")if(c.1C.a4)if(ac(6.1q)==="68")6.1g.1K="68-5k";1a{6.1g.1K="68";6.1g.6j=1}1a 6.1g.1K="68-5k"}if(c.3l(a[l])){(h.87=h.87||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.4l!=1b)6.1g.4l="3G";h.6J=c.1L({},a);c.1o(a,12(A,C){17 J=3e c.fx(x,h,A);if(cS.1h(C))J[C==="4x"?o?"3n":"3o":C](a);1a{17 w=cT.1Z(C),I=J.6w()||0;if(w){17 L=27(w[2]),g=w[3]||"3d";if(g!=="3d"){c.1g(x,A,(L||1)+g);I=(L||1)/J.6w()*I;c.1g(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.6L(I,L,g)}1a J.6L(I,C,"")}});14 1d})},9J:12(a,b){17 d=c.6T;a&&6.3J([]);6.1o(12(){19(17 e=d.18-1;e>=0;e--)if(d[e].1E===6){b&&d[e](1d);d.3w(e,1)}});b||6.4N();14 6}});c.1o({et:S("3n",1),fz:S("3o",1),kh:S("4x",1),cu:{2u:"3n"},cJ:{2u:"3o"},kg:{2u:"4x"}},12(a,b){c.fn[a]=12(d,e,f){14 6.4u(b,d,e,f)}});c.1L({ed:12(a,b,d){17 e=a&&1k a==="2e"?c.1L({},a):{3N:d||!d&&b||c.1S(a)&&a,2E:a,4k:d&&b||b&&!c.1S(b)&&b};e.2E=c.fx.k8?0:1k e.2E==="4W"?e.2E:e.2E in c.fx.7g?c.fx.7g[e.2E]:c.fx.7g.43;e.9z=e.3N;e.3N=12(){e.3J!==1e&&c(6).4N();c.1S(e.9z)&&e.9z.1p(6)};14 e},4k:{fQ:12(a,b,d,e){14 d+e*a},9R:12(a,b,d,e){14(-2m.k7(a*2m.fN)/2+0.5)*e+d}},6T:[],fx:12(a,b,d){6.2d=b;6.1E=a;6.2F=d;if(!b.6K)b.6K={}}});c.fx.2B={9N:12(){6.2d.4C&&6.2d.4C.1p(6.1E,6.2T,6);(c.fx.4C[6.2F]||c.fx.4C.43)(6)},6w:12(){if(6.1E[6.2F]!=1b&&(!6.1E.1g||6.1E.1g[6.2F]==1b))14 6.1E[6.2F];17 a=27(c.1G(6.1E,6.2F));14 a&&a>-k6?a:0},6L:12(a,b,d){12 e(l){14 f.4C(l)}17 f=6,h=c.fx;6.9P=c.2T();6.3U=a;6.44=b;6.9A=d||6.9A||"3d";6.2T=6.3U;6.5s=6.7d=0;e.1E=6.1E;if(e()&&c.6T.1O(e)&&!ba)ba=cE(h.fZ,h.fT)},3n:12(){6.2d.6K[6.2F]=c.1g(6.1E,6.2F);6.2d.3n=1d;6.6L(6.2F==="2a"||6.2F==="2w"?1:0,6.6w());c(6.1E).3n()},3o:12(){6.2d.6K[6.2F]=c.1g(6.1E,6.2F);6.2d.3o=1d;6.6L(6.6w(),0)},4C:12(a){17 b=c.2T(),d=1d;if(a||b>=6.2d.2E+6.9P){6.2T=6.44;6.5s=6.7d=1;6.9N();6.2d.6J[6.2F]=1d;19(17 e in 6.2d.6J)if(6.2d.6J[e]!==1d)d=1e;if(d){if(6.2d.4l!=1b&&!c.1C.9H){17 f=6.1E,h=6.2d;c.1o(["","X","Y"],12(k,o){f.1g["4l"+o]=h.4l[k]})}6.2d.3o&&c(6.1E).3o();if(6.2d.3o||6.2d.3n)19(17 l in 6.2d.6J)c.1g(6.1E,l,6.2d.6K[l]);6.2d.3N.1p(6.1E)}14 1e}1a{a=b-6.9P;6.7d=a/6.2d.2E;b=6.2d.4k||(c.4k.9R?"9R":"fQ");6.5s=c.4k[6.2d.87&&6.2d.87[6.2F]||b](6.7d,a,0,1,6.2d.2E);6.2T=6.3U+(6.44-6.3U)*6.5s;6.9N()}14 1d}};c.1L(c.fx,{fZ:12(){19(17 a=c.6T,b=0;b<a.18;b++)a[b]()||a.3w(b--,1);a.18||c.fx.9J()},fT:13,9J:12(){k9(ba);ba=1b},7g:{kc:kf,ke:bG,43:kd},4C:{2u:12(a){c.1g(a.1E,"2u",a.2T)},43:12(a){if(a.1E.1g&&a.1E.1g[a.2F]!=1b)a.1E.1g[a.2F]=(a.2F==="2a"||a.2F==="2w"?2m.4e(0,a.2T):a.2T)+a.9A;1a a.1E[a.2F]=a.2T}}});if(c.2D&&c.2D.3S)c.2D.3S.kq=12(a){14 c.5Z(c.6T,12(b){14 a===b.1E}).18};17 fv=/^t(?:kr|d|h)$/i,9f=/^(?:1T|2X)$/i;c.fn.2s="fC"in t.2g?12(a){17 b=6[0],d;if(a)14 6.1o(12(l){c.2s.8Z(6,a,l)});if(!b||!b.2y)14 1b;if(b===b.2y.1T)14 c.2s.9Y(b);1W{d=b.fC()}1X(e){}17 f=b.2y,h=f.2g;if(!d||!c.3Z(h,b))14 d||{2i:0,1R:0};b=f.1T;f=fa(f);14{2i:d.2i+(f.el||c.1C.5M&&h.4L||b.4L)-(h.8G||b.8G||0),1R:d.1R+(f.9d||c.1C.5M&&h.4H||b.4H)-(h.8E||b.8E||0)}}:12(a){17 b=6[0];if(a)14 6.1o(12(x){c.2s.8Z(6,a,x)});if(!b||!b.2y)14 1b;if(b===b.2y.1T)14 c.2s.9Y(b);c.2s.8Q();17 d,e=b.5K,f=b.2y,h=f.2g,l=f.1T;d=(f=f.7j)?f.8J(b,1b):b.4M;19(17 k=b.4h,o=b.8N;(b=b.1s)&&b!==l&&b!==h;){if(c.2s.9V&&d.2M==="9X")2j;d=f?f.8J(b,1b):b.4M;k-=b.4L;o-=b.4H;if(b===e){k+=b.4h;o+=b.8N;if(c.2s.fW&&!(c.2s.fm&&fv.1h(b.1q))){k+=27(d.9u)||0;o+=27(d.9n)||0}e=b.5K}if(c.2s.eC&&d.4l!=="fP"){k+=27(d.9u)||0;o+=27(d.9n)||0}d=d}if(d.2M==="4f"||d.2M==="90"){k+=l.4h;o+=l.8N}if(c.2s.9V&&d.2M==="9X"){k+=2m.4e(h.4L,l.4L);o+=2m.4e(h.4H,l.4H)}14{2i:k,1R:o}};c.2s={8Q:12(){17 a=t.1T,b=t.24("1H"),d,e,f,h=27(c.1G(a,"8F"))||0;c.1L(b.1g,{2M:"5A",2i:0,1R:0,4B:0,4Y:0,2a:"5b",2w:"5b",am:"3G"});b.39="<1H 1g=\'2M:5A;2i:0;1R:0;4B:0;4Y:fy fO #fY;67:0;2a:5b;2w:5b;\'><1H></1H></1H><2H 1g=\'2M:5A;2i:0;1R:0;4B:0;4Y:fy fO #fY;67:0;2a:5b;2w:5b;\' kD=\'0\' fU=\'0\'><4p><4v></4v></4p></2H>";a.3A(b,a.1B);d=b.1B;e=d.1B;f=d.38.1B.1B;6.fW=e.4h!==5;6.fm=f.4h===5;e.1g.2M="9X";e.1g.2i="kC";6.9V=e.4h===20||e.4h===15;e.1g.2M=e.1g.2i="";d.1g.4l="3G";d.1g.2M="4f";6.eC=e.4h===-5;6.ey=a.4h!==h;a.3E(b);c.2s.8Q=c.6R},9Y:12(a){17 b=a.4h,d=a.8N;c.2s.8Q();if(c.2s.ey){b+=27(c.1G(a,"8F"))||0;d+=27(c.1G(a,"9p"))||0}14{2i:b,1R:d}},8Z:12(a,b,d){17 e=c.1G(a,"2M");if(e==="90")a.1g.2M="4f";17 f=c(a),h=f.2s(),l=c.1G(a,"2i"),k=c.1G(a,"1R"),o=e==="5A"&&c.3X("8P",[l,k])>-1;e={};17 x={};if(o)x=f.2M();l=o?x.2i:2z(l,10)||0;k=o?x.1R:2z(k,10)||0;if(c.1S(b))b=b.1p(a,d,h);if(b.2i!=1b)e.2i=b.2i-h.2i+l;if(b.1R!=1b)e.1R=b.1R-h.1R+k;"eL"in b?b.eL.1p(a,e):f.1G(e)}};c.fn.1L({2M:12(){if(!6[0])14 1b;17 a=6[0],b=6.5K(),d=6.2s(),e=9f.1h(b[0].1q)?{2i:0,1R:0}:b.2s();d.2i-=27(c.1G(a,"8F"))||0;d.1R-=27(c.1G(a,"9p"))||0;e.2i+=27(c.1G(b[0],"9u"))||0;e.1R+=27(c.1G(b[0],"9n"))||0;14{2i:d.2i-e.2i,1R:d.1R-e.1R}},5K:12(){14 6.30(12(){19(17 a=6.5K||t.1T;a&&!9f.1h(a.1q)&&c.1G(a,"2M")==="90";)a=a.5K;14 a})}});c.1o(["eh","eg"],12(a,b){17 d="7E"+b;c.fn[d]=12(e){17 f=6[0],h;if(!f)14 1b;if(e!==B)14 6.1o(12(){if(h=fa(6))h.kG(!a?e:c(h).4H(),a?e:c(h).4L());1a 6[d]=e});1a 14(h=fa(f))?"9d"in h?h[a?"el":"9d"]:c.1C.5M&&h.1F.2g[d]||h.1F.1T[d]:f[d]}});c.1o(["kA","ep"],12(a,b){17 d=b.1U();c.fn["kz"+b]=12(){14 6[0]?27(c.1G(6[0],d,"67")):1b};c.fn["ku"+b]=12(e){14 6[0]?27(c.1G(6[0],d,e?"4B":"4Y")):1b};c.fn[d]=12(e){17 f=6[0];if(!f)14 e==1b?1b:6;if(c.1S(e))14 6.1o(12(l){17 k=c(6);k[d](e.1p(6,l,k[d]()))});if(c.5q(f))14 f.1F.ks==="ln"&&f.1F.2g["9j"+b]||f.1F.1T["9j"+b];1a if(f.1i===9)14 2m.4e(f.2g["9j"+b],f.1T["7E"+b],f.2g["7E"+b],f.1T["2s"+b],f.2g["2s"+b]);1a if(e===B){f=c.1G(f,d);17 h=27(f);14 c.5U(h)?f:h}1a 14 6.1G(d,1k e==="1N"?e:e+"3d")}})})(5u);(12(3M){3M.1o([\'eP\',\'lm\',\'lB\',\'mz\',\'mu\',\'2q\',\'ml\'],12(i,1z){3M.fx.4C[1z]=12(fx){if(fx.7d==0){fx.3U=eT(fx.1E,1z);fx.44=9B(fx.44)}fx.1E.1g[1z]="9O("+[2m.4e(2m.af(2z((fx.5s*(fx.44[0]-fx.3U[0]))+fx.3U[0]),1V),0),2m.4e(2m.af(2z((fx.5s*(fx.44[1]-fx.3U[1]))+fx.3U[1]),1V),0),2m.4e(2m.af(2z((fx.5s*(fx.44[2]-fx.3U[2]))+fx.3U[2]),1V),0)].4g(",")+")"}});12 9B(2q){17 23;if(2q&&2q.7t==3t&&2q.18==3)14 2q;if(23=/9O\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.1Z(2q))14[2z(23[1]),2z(23[2]),2z(23[3])];if(23=/9O\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.1Z(2q))14[27(23[1])*2.55,27(23[2])*2.55,27(23[3])*2.55];if(23=/#([a-fA-6b-9]{2})([a-fA-6b-9]{2})([a-fA-6b-9]{2})/.1Z(2q))14[2z(23[1],16),2z(23[2],16),2z(23[3],16)];if(23=/#([a-fA-6b-9])([a-fA-6b-9])([a-fA-6b-9])/.1Z(2q))14[2z(23[1]+23[1],16),2z(23[2]+23[2],16),2z(23[3]+23[3],16)];14 f0[3M.61(2q).1U()]}12 eT(1E,1z){17 2q;do{2q=3M.eR(1E,1z);if(2q!=\'\'&&2q!=\'mf\'||3M.1q(1E,"1T"))2j;1z="eP"}eU(1E=1E.1s);14 9B(2q)};17 f0={me:[0,1V,1V],mg:[fJ,1V,1V],mh:[eY,eY,mj],mi:[0,0,0],md:[0,0,1V],mc:[ck,42,42],hv:[0,1V,1V],m4:[0,0,62],m9:[0,62,62],m8:[9S,9S,9S],ms:[0,6G,0],mv:[mw,mx,eS],my:[62,0,62],mn:[85,eS,47],mo:[1V,fF,0],mp:[mr,50,mA],mt:[62,0,0],m1:[m2,lA,lz],lC:[lD,0,7z],lG:[1V,0,1V],lF:[1V,lE,0],ly:[0,4n,0],lx:[75,0,lq],lp:[fJ,cj,fF],lo:[lr,ls,cj],lw:[cW,1V,1V],lv:[cH,lu,cH],lH:[7z,7z,7z],lI:[1V,lV,lU],lT:[1V,1V,cW],lW:[0,1V,0],lX:[1V,0,1V],m0:[4n,0,0],lZ:[0,0,4n],lY:[4n,4n,0],lS:[1V,ck,0],lR:[1V,7s,lL],lK:[4n,0,4n],lJ:[4n,0,4n],93:[1V,0,0],lM:[7s,7s,7s],lN:[1V,1V,1V],lQ:[1V,1V,0]}})(3M);$(\'a.lP\').1z(\'2J\',\'lO\');17 2l=(12(){17 7B={};14 12(d1,1Y){14(7B[1Y]?7B[1Y]:(7B[1Y]=3e 4S("(?:\\\\s|^)"+1Y+"(?:\\\\s|$)"))).1h(d1.1Y)}})();17 dJ=2;17 6p="3o";17 bM="3n";12 bN(3W){17 35=1F.2Y("dd"+3W);17 9e=1F.2Y("dm"+3W);if(!9e||!35){14 1e}17 5I=9e.k4;if(35.1B.1m==6p){19(17 i=1;i<5I.18;i++){5I[i].1g.1K="2A"}35.1B.1m=bM}1a{19(17 i=1;i<5I.18;i++){5I[i].1g.1K=5I[0].1g.1K}35.1B.1m=6p}}12 dE(){17 3W=0;17 7N=3e 6P();17 5N=1F.29("2H");19(17 i=0;i<5N.18;i++){if(2l(5N[i],"iq")){17 9L=5N[i].29("4p")[0];if(!9L)bT;17 6k=9L.29("fE")[0];if(!6k)bT;7N[3W]=5N[i];5N[i].2r("id","dm"+3W);17 35=1F.24("ip");17 5W=1F.24("a");17 dV=1F.4o(6p);35.1g.dp="bJ";35.1g.6M="bJ";35.1g.dB="k5";35.1g.ir="bJ";35.1g.2a="iu";5W.1g.2q=6k.1g.2q;5W.2r("id","dd"+3W);5W.2r("2V","3T:bN("+3W+");");5W.2v(dV);35.2v(1F.4o("["));35.2v(5W);35.2v(1F.4o("]"));6k.3A(35,6k.2L[0]);3W++}}19(17 i=0;i<3W;i++){if(2l(7N[i],"ah")||(3W>=dJ&&2l(7N[i],"iw"))){bN(i)}}}3P(dE);17 7y=\'[\'+6p+\']\';17 7Q=\'[\'+bM+\']\';12 ec(4Q){17 2U=1F.2Y("2U"+4Q);17 2O=1F.2Y("2O"+4Q);if(!2O||!2U){14 1e}if(2U.1B.1m==7y){19(17 28=2O.1B;28!=1b;28=28.38){if(2l(28,\'7C\')||2l(28,\'7M\')){28.1g.1K=\'2A\'}}2U.1B.1m=7Q}1a if(2U.1B.1m==7Q){19(17 28=2O.1B;28!=1b;28=28.38){if(2l(28,\'7C\')||2l(28,\'7M\')){28.1g.1K=\'5k\'}}2U.1B.1m=7y}}12 cc(){17 4Q=0;17 dQ=1F.29("1H");19(17 i=0;2O=dQ[i];i++){if(2l(2O,"2O")){4Q++;17 2U=1F.24("a");2U.1Y=\'2U\';2U.2r(\'id\',\'2U\'+4Q);2U.2r(\'2V\',\'3T:ec(\'+4Q+\');\');17 6X=2l(2O,"ah");19(17 28=2O.1B;28!=1b&&!6X;28=28.38){if(2l(28,\'7M\')||2l(28,\'7C\')){if(28.1g.1K==\'2A\'){6X=1d}}}if(6X){19(17 28=2O.1B;28!=1b;28=28.38){if(2l(28,\'7M\')||2l(28,\'7C\')){28.1g.1K=\'2A\'}}}17 cM=1F.4o(6X?7Q:7y);2U.2v(cM);19(17 j=0;j<2O.2L.18;j++){if(2l(2O.2L[j],"iv")){2U.1g.2q=2O.2L[j].1g.2q;2O.2L[j].2v(2U)}}2O.2r(\'id\',\'2O\'+4Q)}}}3P(cc);17 3k={bK:$.1C.2u,bI:12(1l,3C){14 $(1l.22(\'.1l-1P\').22(\'aK\').22(\'li\')[2z(3C)])},aL:12(1l,3C,2E,cn){if(3C==2z(1l.1z(\'7r\'))&&!cn&&2E)14;if(!3k.bK){2E=0}1l.1z(\'7r\',3C.3Q());17 7L=1l.22(\'.1l-1P-5r\').22();7L.1o(12(){$(6).cJ(2E,12(){$(6).79(\'1l-1P-2Q\')})});$(7L[3C]).1o(12(){$(6).cu(2E,12(){$(6).7b(\'1l-1P-2Q\')})});17 bS=1l.22(\'.1l-1P\').22(\'aK\').22(\'li\');bS.79(\'1l-1P-2Q\');$(bS[3C]).7b(\'1l-1P-2Q\');3k.fX(1l,$(7L[3C]).2w())},fX:12(1l,fs){if(1l.2l(\'1l-1P-il\')){1l.21(\'.1l-1P-bQ\').2X(1l.1z(\'eM\')+\' ⁣ \'+3k.bI(1l,1l.1z(\'7r\')).2X())}1a{1l.21(\'.1l-1P-bQ\').2X(3k.bI(1l,1l.1z(\'7r\')).2X())}17 bP=2m.4e(1l.22(\'.1l-1P-5r\').2w(),2m.4e(1l.22(\'.1l-1P\').2w(),fs)).3Q()+\'3d\';1l.22(\'.1l-1P-5r\').1G(\'2w\',bP);if(1l.1z(\'eV\')){1l.22(\'.1l-1P\').1G(\'2w\',bP)}},aF:12(1l){17 bL=1l.22(\'.1l-1P-i9\').1Q().2P(\';\');17 2E=3k.bK?2z(1l.1z(\'cv\')):0;if(1l.1z(\'7G\')!=\'1d\'){1l.1z(\'7G\',\'1d\');1l.21(\'.1l-1P-aE a\').1Q(bL[0]);1l.22(\'.1l-1P, .1l-1P-5r\').fz(2E)}1a{1l.1z(\'7G\',\'\');1l.21(\'.1l-1P-aE a\').1Q(bL[1]);1l.22(\'.1l-1P, .1l-1P-5r\').et(2E)}},bR:12(1l,2Q){3f(12(){1l.1z(\'i8\',2Q.3Q());3k.aL(1l,2Q,0,1d);if(1l.2l(\'1l-1P-ah\')){3k.aF(1l)}},6G)},1l:12(){17 2I=$(6);17 aI=0;2I.1z(\'eM\',2I.21(\'.1l-1P-bQ\').2X());17 2Q=/1l-1P-2Q-(\\d+)/i.1Z(2I.1z(\'2R\'));if(2Q){3k.bR(2I,2z(2Q[1])-1)}1a{3k.bR(2I,0)}17 2E=2I.2l(\'1l-1P-eX\')?0:bG;2I.1z(\'cv\',2I.2l(\'1l-1P-eX\')?\'0\':\'75\');2I.22(\'.1l-1P\').22(\'aK\').22(\'li\').1o(12(){17 eZ=aI;$(6).4q(12(){3k.aL(2I,eZ,2E,1e);$(6).6e();$(6).21(\'*\').6e();14 1e});aI++});17 aH=2I.2l(\'1l-1P-eV\');2I.1z(\'ih\',aH?\'1d\':\'\');if(aH){17 eQ=2I.22(\'.1l-1P\').2a().3Q()+\'3d\';2I.22(\'.1l-1P-5r\').1G(\'4B-1R\',eQ)}2I.1z(\'7G\',\'\');2I.21(\'.1l-1P-aE a\').4q(12(){3k.aF(2I);14 1e})},3O:12(){$(\'.1l-1P-ik\').1o(3k.1l)}};3P(3k.3O);12 f4(){17 6t=[\'ar\',\'cs\',\'da\',\'de\',\'es\',\'fi\',\'fr\',\'hu\',\'it\',\'ja\',\'ko\',\'iL\',\'fG\',\'iM\',\'fh\',\'fh-br\',\'iN\',\'iH\',\'iG\',\'fk-iB\',\'fk-iA\'];17 fc=\'en\';1W{17 1T=1F.29(\'1T\')[0]}1X(e){14}17 5V=fc;19(17 i in 6t){if(5n.4z(5n.18-1-6t[i].18).1U()==\'/\'+6t[i].1U()){5V=6t[i];2j}}if(1T.2x(\'2R\')){1T.2r(\'2R\',1T.2x(\'2R\')+\' 5V-\'+5V)}1a{1T.2r(\'2R\',\'5V-\'+5V)}}3P(f4);17 2Z={er:25,f8:0.85,eo:/5i-(\\d+)x(\\d+)/i,f7:/5x((?:-\\d+)+)/i,ek:12(){17 5x=2Z.f7.1Z($(6).1z(\'2R\'));if(5x!=1b){5x=5x[1].4z(1).2P(\'-\');17 7P=$(\'#iD\').2a();if($(\'.f9\').18){7P-=$(\'.f9\').2a()}7P*=2Z.f8;17 5p=[];19(17 w=0;w<5x.18;w++){5p[w]=2z(5x[w])}5p.4E(12(a,b){14 b-a});19(17 w=0;w<5p.18;w++){if(5p[w]<=7P||w==5p.18-1){2Z.aU(6,5p[w]);2j}}}1a{2Z.aU(6,27(2t.1z(\'2a\')))}},hd:12(){17 2t=$(6).22(\'2e\');if(!2t)14;if($(6).2l(\'hd-3H\')){17 aT=2t.22(\'5o[3r="eN"]\').1z(\'3s\')+\'&hd=1\';2t.22(\'5o[3r="eN"]\').1z(\'3s\',aT);2t.22(\'6x\').1z(\'4G\',aT)}},aU:12(aV,2a){17 2t=$(aV).22(\'2e\');if(!2t)14;17 5i=2Z.eo.1Z($(aV).1z(\'2R\'));if(5i!=1b){5i=27(5i[1])/27(5i[2]);17 aS=2m.iF(2a/5i+2Z.er).3Q();2t.1z(\'2a\',2a).1z(\'2w\',aS);2t.22(\'6x\').1z(\'2a\',2a).1z(\'2w\',aS)}},8U:1b,8T:12(){if(2Z.8U!=1b){iE(2Z.8U)}2Z.8U=3f(2Z.aP,6G)},aP:12(){$(\'.ef\').1o(2Z.ek)},3O:12(){$(\'.ef\').1o(2Z.hd);$(5u).8T(2Z.8T);2Z.aP()}};3P(2Z.3O);if(ei=="i6"||ei=="4y"||5n=="hI:hH"){ew(\'1H.8H-1Q { 1K:2A; }\');3P(12(){17 8S=1F.2Y("hG-hJ");if(!8S||5u.hK){ew(\'1H.8H-1Q { 1K:5k; }\');14}17 2k=/(?:^| )8H-5Q-(\\d+)(?: |$)/.1Z(8S.1Y);if(!2k&&5u.hM)2k=/(?:^| )8H-5Q-(1h\\d+)(?: |$)/.1Z(8S.1Y);if(!2k)14;17 1J=bh+\'?33=hF:hE.js&b9=bc&bg=1Q/3T&hy=\'+2k[1];hx(1J)})}12 eF(){17 8K=1F.2Y(\'ca-hw\');if(8K&&8K.1Y==\'3e\'){8K.1B.2V+=\'&hz=3e\'}}3P(eF);17 1j={};1j.as=\'1y://1v.1w.1x/w/1t/7/73/hA.1A\';1j.at=hD;1j.az=\'1y://1v.1w.1x/w/1t/8/8f/hB.1A\';1j.ax=\'1y://1v.1w.1x/w/1t/4/4a/hN.hO\';1j.6V=40;1j.fB=eB;1j.dP=i0;1j.fS=eB;1j.eH=hZ;1j.74=12(){14 1F.2Y(\'i2\')};1j.8D=[];1j.6Y=[];1j.ai={};1j.7e=[1j.as,1j.az];1j.1u=1b;1j.ao=1e;1j.ap=1e;1j.8W=1e;if(!3t.2B.2c){3t.2B.2c=12(2t,5a){if(5a==1b){5a=0}1a if(5a<0){5a=2m.4e(0,6.18+5a)}19(17 i=5a,j=6.18;i<j;i++){if(6[i]===2t)14 i}14-1}}17 bn={i5:1j,fp:12(3F){17 1u=1j.1u;17 1H=1F.24(\'1H\');17 4J=1F.24(\'4J\');4J.4G=3F;1H.2v(4J);3f(12(){1j.74().2v(1H)},1);14{\'1H\':1H,\'4J\':4J}},ct:12(){1j.ap=1d;if(1j.ao){1j.1u.bH()}},cC:12(){1j.ao=1d;if(1j.ap){1j.1u.bH()}},cO:12(8X,3y){17 1u=1j.1u;1W{17 3m=1F.24(\'3m\');3m.2r(\'4G\',8X);3m.2r(\'1g\',\'1K: 2A;\');3m.2r(\'i4\',\'1d\');1j.74().2v(3m);3m.3L(\'hY\',3y,1e)}1X(e){}3f(3y,hX)},aj:12(3F){17 1u=1j.1u;if(1j.6Y.2c(3F)==-1){1j.6Y[1j.6Y.18]=3F;17 5B=1u.fp(3F);1j.ai[3F]=5B[\'4J\'];5B[\'1H\'].2r(\'1g\',\'am: 3G; 2w: 3B; 2a: 3B; 4l: 3G; z-3C: -fM;\')}if(1j.ai[3F].2a){1j.8D[1j.8D.18]=3F}1a{3f(12(){1u.aj(3F)},1j.6V)}},ay:12(3y){17 1u=1j.1u;17 ak=1d;19(17 i in 1j.7e){if(1j.8D.2c(1j.7e[i])==-1){ak=1e}if(1j.6Y.2c(1j.7e[i])==-1){1u.aj(1j.7e[i])}}if(ak){3y()}1a{3f(12(){1u.ay(3y)},1j.6V)}},fI:12(78){1W{78.1s.3E(78)}1X(e){}},aB:12(4b){14(2m.hR((4b-.5)*2m.fN)+1)/2},al:12(71,8I,5F,3y,4k){17 1u=1j.1u;71(4k(8I/5F));if(8I>=5F){3y()}1a{3f(12(){1u.al(71,8I+1j.6V,5F,3y,4k)},1j.6V)}},4u:12(71,5F,3y,4k){17 1u=1j.1u;14 1u.al(71,0.0,5F,3y,4k)},fw:12(8X){17 1u=1j.1u;1W{17 3m=1F.24(\'3m\');3m.2r(\'4G\',8X);3m.2r(\'1g\',\'1K: 2A;\');3m.2r(\'hQ\',\'1d\');1j.74().2v(3m)}1X(e){}},fV:12(5B){17 1u=1j.1u;19(17 78 in 5B){1u.fI(5B[78])}1j.8W=1e},bH:12(){17 1u=1j.1u;if(1j.8W)14;1j.8W=1d;17 60=1F.24(\'a\');60.2r(\'2V\',\'/\');60.2r(\'1g\',\'1K:5k; 2M: 5A; 2i: 3B; 1R: 3B; 2a: hP; 2w: hS; 4Y: 3B; hT: 1J(\'+1j.as+\') fG-hW 3B -hV; z-3C: fM;\');1j.74().2v(60);17 4I=1F.2Y(\'p-hU\');4I.1g.fD=\'iP iQ\';17 6d=1F.24(\'1H\');6d.2r(\'2R\',\'jH\');6d.2r(\'1g\',\'88: 1R; 4B:3B; 67:3B; 2w: 3B;\');4I.1s.3A(6d,4I);17 aA=12(4b){4b=2z(4b*1j.at);60.1g.fD=\'3B \'+(-1j.at+4b).3Q()+\'3d\';4I.1g.2i=4b.3Q()+\'3d\';6d.1g.2w=4b.3Q()+\'3d\'};1u.4u(aA,1j.fB,12(){1u.fw(1j.ax);3f(12(){17 fR=4I.29(\'a\')[0].1g.8j;4I.29(\'a\')[0].1g.8j=\'1J(\'+1j.az+\')\';1u.4u(12(4b){aA(1.0-4b)},1j.fS,12(){3f(12(){4I.29(\'a\')[0].1g.8j=fR;1u.fV([60,6d])},1j.eH)},1u.aB)},1j.dP)},1u.aB)},cL:12(){17 1u=1j.1u;1u.ay(1u.ct);1u.cO(1j.ax,1u.cC)},cP:12(){17 1u=1j.1u;17 cR=12(){17 1M={6F:12(2t,1n,fn,6z){if(2t.3L)2t.3L(1n,fn,1e);1a if(2t.3V){2t["e"+1n+fn]=fn;2t[1n+fn]=12(){2t["e"+1n+fn](5u.1r,6z)};2t.3V("3H"+1n,2t[1n+fn])}},2N:"",84:"jG",4V:12(3p){6.6F(1F,"av",12(e,6z){if(6z)1M=6z;1M.2N+=e?e.4D:1r.4D;if(1M.2N.18>1M.84.18)1M.2N=1M.2N.4z((1M.2N.18-1M.84.18));if(1M.2N==1M.84){1M.6c();1M.2N="";14}},6);6.3j.4V(3p)},6c:12(3p){5u.6i=3p},3j:{8c:0,83:0,8b:0,82:0,6n:1e,8C:1e,bq:"",4T:["bv","bv","bu","bu","bt","aX","bt","aX","7V","7V","7V"],6c:12(3p){1M.6c(3p)},4V:12(3p){bq=6.4T;1M.6F(1F,"jF",12(e){if(e.cG.18==1&&1M.3j.8C==1d){17 aw=e.cG[0];1M.3j.8b=aw.6B;1M.3j.82=aw.8d;1M.3j.6n=1e;1M.3j.8C=1e;1M.3j.aW()}});1M.6F(1F,"jI",12(8a){if(1M.3j.6n==1d)1M.3j.aW(3p)},1e);1M.6F(1F,"jJ",12(8a){1M.3j.8c=8a.cA[0].6B;1M.3j.83=8a.cA[0].8d;1M.3j.6n=1d;1M.3j.8C=1d})},aW:12(3p){cV=2m.cw(6.8c-6.8b);cX=2m.cw(6.83-6.82);x=((6.8c-6.8b)<0)?"aX":"bt";y=((6.83-6.82)<0)?"bu":"bv";23=(cV>cX)?x:y;23=(6.6n==1d)?"7V":23;if(23==6.4T[0])6.4T=6.4T.2C(1,6.4T.18);if(6.4T.18==0){6.4T=6.bq;6.6c(3p)}}}};14 1M};17 1M=3e cR();1M.6c=12(){1u.cL.2b(1u)};1M.4V()}};1j.1u=bn;3P(bn.cP);17 4t={6l:{\'jK\':\'1y://1v.1w.1x/w/1t/3/36/jD.1A\',\'jx\':\'1y://1v.1w.1x/w/1t/f/ff/jv.1A\',\'jy\':\'1y://1v.1w.1x/w/1t/9/91/jz.1A\',\'jC\':\'1y://1v.1w.1x/w/1t/4/4c/jB.1A\',\'jA\':\'1y://1v.1w.1x/w/1t/1/1c/jM.1A\',\'jN\':\'1y://1v.1w.1x/w/1t/3/37/jY.1A\',\'jX\':\'1y://1v.1w.1x/w/1t/1/1f/k0.1A\',\'k1\':\'1y://1v.1w.1x/w/1t/b/bf/k2.1A\',\'jW\':\'1y://1v.1w.1x/w/1t/9/96/jQ.1A\',\'jP\':\'1y://1v.1w.1x/w/1t/f/fa/jR.1A\',\'4Z bz 3Y\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'bY bV 6Z bW 3Y\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'33-4Z jS\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'33-4Z bz\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'33-4Z jU jT\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'33-bY bV 6Z bW\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'33-bX 4Z\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'bX 4Z 3Y\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'33-bU\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'bU 3Y\':\'1y://1v.1w.1x/w/1t/1/16/4m.1A\',\'bC 6Z bB 3Y\':\'1y://1v.1w.1x/w/1t/5/54/c8.1A\',\'33-bC 6Z bB\':\'1y://1v.1w.1x/w/1t/5/54/c8.1A\',\'bE 3Y\':\'1y://1v.1w.1x/w/1t/5/54/bF.1A\',\'bE ju 3Y\':\'1y://1v.1w.1x/w/1t/5/54/bF.1A\',\'33-bE\':\'1y://1v.1w.1x/w/1t/5/54/bF.1A\',\'bm bl 3a\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'jt/j3 (3a) 3Y\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'j2/j1 (3a) 3Y\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'bC 6Z bB (3a) 3Y\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'j4 (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'4Z bz (3a) 3Y\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'j5 (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'j7 (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'j6 (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'j0 (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'iZ (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'iT (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'bm bl 3a 3m\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'bm bl 3a 1t\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'iS (3a)\':\'1y://1v.1w.1x/w/1t/a/ad/3b.1A\',\'33-iU iV 2\':\'1y://1v.1w.1x/w/1t/2/2f/iW.1A\'},e9:12(){17 dI=1F.2Y(\'6o\');if(!dI)14[];17 6o=1F.2Y(\'6o\').29(\'a\');17 5X=[];17 l;19(17 i=0;i<6o.18;i++){l=6o[i].2x(\'33\');if(l.2k(/^j9:/i,\'\')){5X[5X.18]=l.4z(9).1D(/\\/[^/]+$/,\'\')}}14 5X},3X:12(b2,dU){19(17 i=0;i<b2.18;i++){if(b2[i]==dU){14 i}}14-1},3O:12(){if(1k(e4)!=\'3z\'){if(4t.3X(e4,\'jl\')!=-1){14}}1W{17 5X=4t.e9();17 1T=1F.29(\'1T\')[0]}1X(e){14}17 5d=[];if(1k(4t.6l[\'33-\'+e2])!=\'3z\'){5d[0]=4t.6l[\'33-\'+e2]}1a{19(17 i in 4t.6l){if(4t.3X(5X,i)!=-1){5d[5d.18]=4t.6l[i]}}}if(!5d.18)14;17 e1=5d[2m.jq(2m.jk()*5d.18)];1T.1g.8j=\'1J(\'+e1+\')\'}};3P(4t.3O);17 4X={b7:[\'b0:dD\'],b8:[\'b0:dD\',\'b0:jj/je\'],dj:\'/d2.js\',dA:\'/d2.1G\',3O:12(){19(17 i in 4X.b7){if(5n==4X.b7[i]){$.d6(bh+\'?33=\'+8n(5n+4X.dj)+\'&bg=1Q/3T&b9=bc\')}}19(17 i in 4X.b8){if(5n==4X.b8[i]){$(\'bi\').4j($(\'<3p jf="jg" 1n="1Q/1G" ji="jh" />\').1z(\'2V\',bh+\'?33=\'+8n(5n+4X.dA)+\'&bg=1Q/1G&b9=bc\'))}}}};3P(4X.3O);3P(12(){$(\'.dr-3r-1Q\').4q(12(){$(6).6E().22(\'.dr-bd\').4x()})});',62,1401,'||||||this||||||||||||||||||||||||||||||||||||||||||||||||||||||||||function||return|||var|length|for|else|null||true|false||style|test|nodeType|spaiConstants|typeof|poot|data|type|each|call|nodeName|event|parentNode|images|self|wiki|teamfortress|com|http|attr|png|firstChild|support|replace|elem|document|css|div|arguments|url|display|extend|konami|string|push|tabs|text|left|isFunction|body|toLowerCase|255|try|catch|className|exec||find|children|result|createElement||filter|parseFloat|NavChild|getElementsByTagName|width|apply|indexOf|options|object||documentElement|selector|top|break|match|hasClass|Math||context|guid|color|setAttribute|offset|obj|opacity|appendChild|height|getAttribute|ownerDocument|parseInt|none|prototype|slice|expr|duration|prop|script|table|dis|target|handle|childNodes|position|input|NavFrame|split|selected|class|remove|now|NavToggle|href|events|html|getElementById|youtubeHelper|map|select||title|trigger|Button|||nextSibling|innerHTML|Classic|Background_TFC|delete|px|new|setTimeout|add|handler|tbody|iphone|pootTabsHere|isArray|audio|show|hide|link|get|name|value|Array|dataType|error|splice|ready|callback|undefined|insertBefore|0px|index|pushStack|removeChild|image|hidden|on|expando|queue|button|addEventListener|jQuery|complete|init|addOnloadHook|toString|cache|filters|javascript|start|attachEvent|tableIndex|inArray|maps|contains||global||_default|end|makeArray|preventDefault||special|namespace||progress||checked|max|relative|join|offsetTop|set|append|easing|overflow|Background_CP|128|createTextNode|tr|click|disabled|shift|dynamicBg|animate|td|live|toggle|submit|substr|ID|margin|step|keyCode|sort|radio|src|scrollLeft|logoPortlet|img|browser|scrollTop|currentStyle|dequeue|nth|teardown|indexNavigationBar|setup|RegExp|keys|success|load|number|pageScripts|border|Control||POS|readyState|onreadystatechange|||dir|compareDocumentPosition|checkbox|async|fromIndex|1px|getAttributeNode|selectedCats|domManip|timeout|removeAttribute|ajaxSettings|ratio|stopPropagation|block|Event|cloneNode|wgPageName|param|intWidths|isWindow|content|pos|val|window|merge|json|widths|u00c0|status|absolute|nodes|uFFFF|PSEUDO|removeData|totalTime|abort|sizcache|Rows|first|offsetParent|offsetWidth|boxModel|Tables|isXML|GET|version|handleObj|closest|handleComplete|isNaN|lang|ButtonLink|cats|TAG|grep|spai|trim|139|isEmptyObject|mouseleave|unbind|option|padding|inline|mouseenter|proxy|F0|code|tempPortlet|blur|ajax|focusout|previousSibling|location|zoom|Header|categories|setRequestHeader|tap|catlinks|collapseCaption|one|matchesSelector|unshift|langList|change|CLASS|cur|embed|empty|ref_obj|noData|pageX|replaceWith|textarea|parent|addEvent|100|reliableHiddenOffsets|last|curAnim|orig|custom|cssFloat|which|form|Object|password|noop|currentTarget|timers|focus|timeStep|props|isCollapsed|preloadingImages|the|querySelectorAll|func|xml||theBody||file|removeEventListener|node|removeClass|isReady|addClass|__events__|state|toPreloadImages|jquery|speeds|cssHooks|liveFired|defaultView|not|getElementsByClassName|relatedTarget|cleanData|fragment|triggerGlobal|level|pootSelected|192|constructor|wrapAll|toArray|unique|checkClone|NavigationBarHide|211|order|reCache|NavContent|nodeValue|scroll|source|pootcollapse|leftMatch|before|multiple|attrHandle|babies|NavPic|NavigationBoxes|getText|availableWidth|NavigationBarShow|sizset|olddisplay|boolean|camelCase|TAP|focusin|preType|JSON|xhr|origType|access|stop_y|start_y|pattern||deleteExpando|specialEasing|float|attrFn|evt|stop_x|start_x|pageY|triggerHandler||isPlainObject|toUpperCase|jsonp|backgroundImage|detachEvent|application|offsetHeight|encodeURIComponent|bind|charCode|accepts|isPropagationStopped|lastModified|etag|readyWait|responseText|active|selectedIndex|isImmediatePropagationStopped|fromElement|handleSuccess|pop|capture|preloadedImages|clientLeft|marginTop|clientTop|edittools|progressTime|getComputedStyle|talkpagelink|even|odd|offsetLeft|concat|auto|initialize|CHILD|placeholder|resize|resizeTimer|case|fired|sound|getResponseHeader|setOffset|static||Ga|red|oa|parsererror||clone|Ha|protocol||globalEval|parseJSON|pageXOffset|Table|Ia|notmodified|Function|onload|client|Ea|contentType|Fa|borderLeftWidth|XMLHttpRequest|marginLeft|attributes|clean|handleError|runtimeStyle|borderTopWidth|traditional|ajaxStop|fragments|Da|old|unit|getRGB|za|na|noCloneEvent|isXMLDoc|clientX|shrinkWrapBlocks|sa|stop|leadingWhitespace|HeaderRow|Ca|update|rgb|startTime|buildFragment|swing|169|after|Aa|supportsFixedPosition|Ba|fixed|bodyOffset|cacheable|cssProps|prevObject|pa|triggered|inlineBlockNeedsLayout|colgroup|lastChild|optDisabled|removeEvent|ta|||qa||sibling|min|tabIndex|collapsed|preloadingRefs|preloadImage|allPreloaded|inAnimation|visibility|NAME|loadedSound|loadedImages|preFilter||spaiImage|spaiHeight|unload|keydown|touch|spaiSappingMahWikiWav|preloadImages|sappedLogo|changeHeight|smoothInOut|attrMap|scriptEval|hidelink|toggleCollapse|acceptData|isVertical|ind|inprogress|ul|changeTab|ra|Date|nodeIndex|onResize|onclick|ATTR|newHeight|playerUrl|setWidth|youtube|check_direction|RIGHT|originalEvent|onbeforeunload|User|bindReady|haystack|isDefaultPrevented|specialSubmit|va|wa|pagesJS|pagesCSS|action|||raw|contents|||ctype|wgScript|head|ctrlKey|metaKey|Fortress|Team|spaiSappinMahWiki|mouseout|mouseover|orig_keys||String|LEFT|DOWN|UP|ya|ua|xa|Point|_change_data|Flag|Capture|fix|Payload|Background_Payload|200|spySappingMahWiki|getTab|right|animationsEnabled|pootLinkText|expandCaption|collapseTable|uniqueSort|bestHeight|titletext|delayHeight|cowtabs|continue|Arena|of|Hill|Territorial|King|parse|hover|origHandler|Qa|die|lastToggle|dataFilter|cssNumber|ActiveXObject|Background_Intelligence|Ya|||createNavigationBarToggleButton|specialChange|Modified|swap|httpSuccess|httpNotModified|304|230|165|paddingLeft|parents|force|httpData|beforeactivate|doScroll|Pa||imagesLoaded|fadeIn|pootslideduration|abs|checkOn|Ta|Sa|changedTouches|keypress|soundLoaded|Za|setInterval|uaMatch|touches|144|Ua|fadeOut|exclusive|hitItDoc|NavToggleText|prevAll|preloadSound|initKonami|__className__|Konami|vb|wb|prevUntil|x_magnitude|224|y_magnitude|_toggle|ajaxComplete|processData|element|Page|ub|qb|hrefNormalized|getScript|has|cssText|ajaxStart|||sb|collapseButton||_|La|Ka|rb|suffixJS|selectors|elements|collapsibleTable|||styleFloat|serializeArray|diff|Ra|nb|ob|pb|hasAttribute|POST|Na|clientY|suffixCSS|fontWeight|scriptCharset|WindPower|createCollapseButtons|submitBubbles|toElement|specified|catlinksnode|autoCollapse|Va|tb|ajaxError|readOnly|srcElement|anim_spaiWait|divs|changeBubbles|ajaxSuccess|Wa|needle|ButtonText|If|Xa|Ma|open|username|selectedCat|wgTitle|alpha|wPrefs|ifModified|ajaxSend|beforeSend|frameElement|getCategories|||toggleNavigationBar|speed|area|youtubebox|Top|Left|wgAction|col|setSize|pageYOffset|setFilters||ratioR|Width||chromeSize||slideDown|optgroup|only|appendCSS|DOMContentLoaded|doesNotIncludeMarginInBodyOffset|reset|xA0|2000|subtractsBorderForOverflowNotVisible|fireEvent||talkpageplus|unrecognized|anim_sapperDestroyed|Syntax|textContent|fieldset|using|originalTitle|movie|wrapInner|backgroundColor|teenie|curCSS|107|getColor|while|vertical|detach|noanimations|245|thisInd|colors|Oa|htmlSerialize|thead|langClass|prepend|Ja|widthsR|maxWidth|infobox|||defaultLang|appendTo|TEST||uuid|pt||createDocumentFragment|zh|getTime|doesAddBorderForTableAndCells||expression|createImgDiv|matches||babysize|toggleClass|getElementsByName|xb|playSound||5px|slideUp||anim_spaiFallDown|getBoundingClientRect|backgroundPosition|th|140|no|throw|destroyNode|240|webkit|htmlFor|10000|PI|solid|visible|linear|oldBackground|anim_spaiBackUp|interval|cellspacing|spyAnimationFinished|doesNotAddBorder|updatePoot|000|tick|iframe|contentWindow|beforeunload|outerHTML|reverse|attrChange|msMatchesSelector|date|createComment|email|||month|siblings|datetime|1em|pixelLeft|shiftKey||unwrap|offsetX|mozMatchesSelector|layerY|wrap|webkitMatchesSelector|contentDocument|caption|keyup|1E8||512|sizzle|view|attrName|Until|newValue|cancelable|finally|__sizzle__|returnValue|zIndex|innerText|next|lineHeight|offsetY|charAt|andSelf|switch|beforedeactivate|Bottom|HTML|prevValue|wheelDelta|enabled|delegate|0n|relatedNode|undelegate|header|bubbles|meta|legend|screenX|Right|dblclick|eventPhase|insertAfter|cancelBubble|tfoot|parentsUntil|screenY|fontSize|||timeStamp||child|getPropertyValue|replaceAll|nextUntil|mousemove|mouseup|detail|mousedown|prev|nextAll|range|altKey|stopImmediatePropagation||layerX|prependTo||cyan|talk|importScriptURI|nocache|section|Team_Fortress_Wiki_Egg_Spy|Team_Fortress_Wiki_Egg_Logo_Sap|optSelected|196|Edittools|MediaWiki|editpage|Upload|Special|specialchars|noDefaultEdittools|radiotest|testJsEdittools|Team_Fortress_Wiki_Egg|wav|160px|autoplay|sin|200px|background|logo|50000px|repeat|1000|canplaythrough|2250|900|u00a0|globalWrapper|safari|preload|constants|edit|4px|pootselected|showhide|||mdash||changeData|||pootvertical|getData|setData|container|notitle|delay||search|span|collapsible|textAlign|||6em|NavHead|autocollapse|classid|applet|D27CDB6E|hant|hans|clsid|bodyContent|clearTimeout|round|sv|ru|11cf|96B8|444553540000|nl|pl|ro|AE6D|center|bottom|noConflict|Weapons|Patches|Gang|Garrison|Background_GG2|hasOwnProperty|size|Movement|Maps|Defend|Attack|Protection|Classes|Gameplay|Mapping|Lists|userAgent|Category|||parentWindow|bfnrt|armory|rel|stylesheet|screen|media|Pilk|random|noDynamicBackground|rv|navigator|mozilla|msie|floor|opera||Assassination|Race|Background_Soldier|compatible|Soldier|Pyro|Background_Pyro|Engineer|Background_Demoman|Demoman|Background_Scout|Boolean|touchmove|3838404037393739666513|portlet|touchend|touchstart|Scout|Number|Background_Engineer|Heavy|array|Achievements|Background_Spy|Background_Achievements|points|timing|point|isPrototypeOf|Spy|Medic|Background_Heavy|regexp|Background_Medic|Sniper|Background_Sniper|Invalid|rows|normal|1E4|cos|off|clearInterval|||slow|400|fast|600|fadeToggle|slideToggle|fadeTo|paddingRight|marginRight|can|overflowX|property||overflowY|animated|able|compatMode|usemap|outer|clearQueue|tabindex|colspan|colSpan|inner|Height|removeAttr|20px|cellpadding|frameBorder|frameborder|scrollTo|useMap|paddingBottom|paddingTop|jsonpCallback|plain|urlencoded|1_|host|Content|loaded|charset|www|ajaxSetup|week|time|tel|HEAD|serialize|post|getJSON|Type|Since|responseXML|Etag|Last|Microsoft|XMLHTTP|marginBottom|changed|||1223|300|Requested|Match|None|With||Accept|send|01|borderBottomColor|CSS1Compat|lightblue|khaki|130|173|216||238|lightgreen|lightcyan|indigo|green|122|150|borderLeftColor|darkviolet|148|215|gold|fuchsia|lightgrey|lightpink|violet|purple|203|silver|white|_blank|external|yellow|pink|orange|lightyellow|193|182|lime|magenta|olive|navy|maroon|darksalmon|233|cellSpacing|darkblue|maxlength|rowspan|rowSpan|darkgrey|darkcyan|||brown|blue|aqua|transparent|azure|beige|black|220|maxLength|outlineColor|readonly|darkolivegreen|darkorange|darkorchid|rea|153|darkgreen|darkred|borderTopColor|darkkhaki|189|183|darkmagenta|borderRightColor|204'.split('|'),0,{}))
 
  
/* Google Analytics - Uncompressed */
+
// External links open in new windows/tabs:
var _gaq = _gaq || [];
+
$('a.external').attr('target', '_blank');
_gaq.push(['_setAccount', 'UA-18260470-1']);
+
 
_gaq.push(['_trackPageview']);
+
/** Collapsible tables *********************************************************
_gaq.push(['_trackPageLoadTime']);
+
  *
(function() {
+
  *  Description: Allows tables to be collapsed, showing only the header. See
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+
  *              [[Wikipedia:NavFrame]].
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+
  *  Maintainers: [[User:R. Koot]]
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+
  */
})();
+
var hasClass = (function () {
 +
    var reCache = {};
 +
    return function (element, className) {
 +
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
 +
    };
 +
})();
 +
 
 +
var autoCollapse = 2;
 +
var collapseCaptionLang = {'ar': 'أخف', 'cs': 'sbalit', 'da': 'fold sammen', 'de': 'einklappen', 'es': 'contraer', 'fi': 'supista', 'fr': 'masquer', 'hu': 'becsuk', 'it': 'comprimi', 'ja': '折り畳む', 'ko': '접기', 'nl': 'samenvouwen', 'pl': 'zwiń', 'pt': 'ocultar', 'pt-br': 'ocultar', 'ro': 'restrânge', 'ru': 'свернуть', 'sv': 'dölj', 'tr': 'daralt', 'zh-hans': '折叠', 'zh-hant': '合併'};
 +
var expandCaptionLang = {'ar': 'أظهر', 'cs': 'rozbalit', 'da': 'fold ud', 'de': 'ausklappen', 'es': 'expandir', 'fi': 'Laajenna', 'fr': 'afficher', 'hu': 'kinyit', 'it': 'espandi', 'ja': '展開する', 'ko': '펼치기', 'nl': 'uitvouwen', 'pl': 'rozwiń', 'pt': 'expandir', 'pt-br': 'expandir', 'ro': 'extinde', 'ru': 'развернуть', 'sv': 'visa', 'tr': 'genişlet', 'zh-hans': '展开', 'zh-hant': '展開'};
 +
var collapseCaption = collapseCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'collapse';
 +
var expandCaption = expandCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'expand';
 +
 +
window.collapseTable = function ( tableIndex ) {
 +
    var Button = document.getElementById( 'collapseButton' + tableIndex );
 +
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 +
 +
    if ( !Table || !Button ) {
 +
        return false;
 +
    }
 +
 +
    var Rows = Table.rows;
 +
    var i;
 +
 +
    if ( Button.firstChild.data === collapseCaption ) {
 +
        for ( i = 1; i < Rows.length; i++ ) {
 +
            Rows[i].style.display = 'none';
 +
        }
 +
        Button.firstChild.data = expandCaption;
 +
    } else {
 +
        for ( i = 1; i < Rows.length; i++ ) {
 +
            Rows[i].style.display = Rows[0].style.display;
 +
        }
 +
        Button.firstChild.data = collapseCaption;
 +
    }
 +
};
 +
 +
function createCollapseButtons() {
 +
    var tableIndex = 0;
 +
    var NavigationBoxes = {};
 +
    var Tables = document.getElementsByTagName( 'table' );
 +
    var i;
 +
 +
    function handleButtonLink( index, e ) {
 +
        window.collapseTable( index );
 +
        e.preventDefault();
 +
    }
 +
 +
    for ( i = 0; i < Tables.length; i++ ) {
 +
        if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
 +
 +
            /* only add button and increment count if there is a header row to work with */
 +
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
 +
            if ( !HeaderRow ) continue;
 +
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
 +
            if ( !Header ) continue;
 +
 +
            NavigationBoxes[ tableIndex ] = Tables[i];
 +
            Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 +
 +
            var Button    = document.createElement( 'span' );
 +
            var ButtonLink = document.createElement( 'a' );
 +
            var ButtonText = document.createTextNode( collapseCaption );
 +
 +
            Button.className = 'collapseButton';  /* Styles are declared in Common.css */
 +
 +
            ButtonLink.style.color = Header.style.color;
 +
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
 +
            ButtonLink.setAttribute( 'href', '#' );
 +
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
 +
            ButtonLink.appendChild( ButtonText );
 +
 +
            Button.appendChild( document.createTextNode( '[' ) );
 +
            Button.appendChild( ButtonLink );
 +
            Button.appendChild( document.createTextNode( ']' ) );
 +
 +
            Header.insertBefore( Button, Header.firstChild );
 +
            tableIndex++;
 +
        }
 +
    }
 +
 +
    for ( i = 0;  i < tableIndex; i++ ) {
 +
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
 +
            window.collapseTable( i );
 +
        }
 +
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
 +
            var element = NavigationBoxes[i];
 +
            while ((element = element.parentNode)) {
 +
                if ( $( element ).hasClass( 'outercollapse' ) ) {
 +
                    window.collapseTable ( i );
 +
                    break;
 +
                }
 +
            }
 +
        }
 +
    }
 +
}
 +
 +
$( createCollapseButtons );
 +
 
 +
/** Dynamic Navigation Bars (experimental) *************************************
 +
*
 +
*  Description: See [[Wikipedia:NavFrame]].
 +
*  Maintainers: UNMAINTAINED
 +
*/
 +
 
 +
// set up the words in your language
 +
var NavigationBarHide = '[' + collapseCaption + ']';
 +
var NavigationBarShow = '[' + expandCaption + ']';
 +
 
 +
// shows and hides content and picture (if available) of navigation bars
 +
// Parameters:
 +
//    indexNavigationBar: the index of navigation bar to be toggled
 +
function toggleNavigationBar(indexNavigationBar){
 +
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
 +
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 +
 
 +
    if (!NavFrame || !NavToggle) {
 +
        return false;
 +
    }
 +
 
 +
    // if shown now
 +
    if (NavToggle.firstChild.data == NavigationBarHide) {
 +
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
 +
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
 +
                NavChild.style.display = 'none';
 +
            }
 +
        }
 +
    NavToggle.firstChild.data = NavigationBarShow;
 +
 
 +
    // if hidden now
 +
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
 +
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
 +
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
 +
                NavChild.style.display = 'block';
 +
            }
 +
        }
 +
        NavToggle.firstChild.data = NavigationBarHide;
 +
    }
 +
}
 +
 
 +
// adds show/hide-button to navigation bars
 +
function createNavigationBarToggleButton(){
 +
    var indexNavigationBar = 0;
 +
    // iterate over all < div >-elements
 +
    var divs = document.getElementsByTagName("div");
 +
    for (var i = 0; NavFrame = divs[i]; i++) {
 +
        // if found a navigation bar
 +
        if (hasClass(NavFrame, "NavFrame")) {
 +
 
 +
            indexNavigationBar++;
 +
            var NavToggle = document.createElement("a");
 +
            NavToggle.className = 'NavToggle';
 +
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
 +
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 +
 
 +
            var isCollapsed = hasClass( NavFrame, "collapsed" );
 +
            /*
 +
            * Check if any children are already hidden.  This loop is here for backwards compatibility:
 +
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
 +
            * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
 +
            * the content visible without JavaScript support), the new recommended way is to add the class
 +
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
 +
            */
 +
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
 +
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
 +
                    if ( NavChild.style.display == 'none' ) {
 +
                        isCollapsed = true;
 +
                    }
 +
                }
 +
            }
 +
            if (isCollapsed) {
 +
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
 +
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
 +
                        NavChild.style.display = 'none';
 +
                    }
 +
                }
 +
            }
 +
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
 +
            NavToggle.appendChild(NavToggleText);
 +
 
 +
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
 +
            for(var j=0; j < NavFrame.childNodes.length; j++) {
 +
                if (hasClass(NavFrame.childNodes[j], "NavHead")) {
 +
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
 +
                    NavFrame.childNodes[j].appendChild(NavToggle);
 +
                }
 +
            }
 +
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
 +
        }
 +
    }
 +
}
 +
 
 +
$( createNavigationBarToggleButton );
 +
 
 +
//END Collapsible tables *********************************************************
 +
 
 +
// PootTabs by User:WindPower~
 +
// It puts tabs on pages.
 +
var pootTabsHere = {
 +
    animationsEnabled: $.support.opacity,
 +
getTab:function(poot, index) {
 +
return $(poot.children('.poot-tabs').children('ul').children('li')[parseInt(index)]);
 +
},
 +
changeTab:function(poot, index, duration, force) {
 +
if(index == parseInt(poot.attr('pootSelected')) && !force && duration) return;
 +
if(!pootTabsHere.animationsEnabled) {
 +
duration = 0;
 +
}
 +
poot.attr('pootSelected', index.toString());
 +
var babies = poot.children('.poot-tabs-content').children();
 +
babies.each(function() {
 +
$(this).fadeOut(duration, function(){
 +
$(this).removeClass('poot-tabs-selected');
 +
});
 +
});
 +
$(babies[index]).each(function() {
 +
$(this).fadeIn(duration, function(){
 +
$(this).addClass('poot-tabs-selected');
 +
});
 +
});
 +
var cowtabs = poot.children('.poot-tabs').children('ul').children('li');
 +
cowtabs.removeClass('poot-tabs-selected');
 +
$(cowtabs[index]).addClass('poot-tabs-selected');
 +
pootTabsHere.updatePoot(poot, $(babies[index]).height());
 +
},
 +
updatePoot:function(poot, babysize) {
 +
if(poot.hasClass('poot-tabs-notitle')) {
 +
poot.find('.poot-tabs-titletext').html(pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
 +
} else {
 +
poot.find('.poot-tabs-titletext').html(poot.attr('originalTitle') + ' &mdash; ' + pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
 +
}
 +
if(poot.has('.poot-tabs-edittabs') && poot.has('.poot-tabs-navbar')) {
 +
try {
 +
poot.find('.poot-tabs-navbar').html($(poot.children('.poot-tabs-edittabs').children('span')[parseInt(poot.attr('pootSelected'))]).html());
 +
} catch(e) {}
 +
}
 +
var bestHeight = Math.max(poot.children('.poot-tabs-content').height(), Math.max(poot.children('.poot-tabs').height(), babysize)).toString() + 'px';
 +
poot.children('.poot-tabs-content').css('height', bestHeight);
 +
if(poot.attr('vertical')) {
 +
poot.children('.poot-tabs').css('height', bestHeight);
 +
}
 +
},
 +
toggleCollapse:function(poot) {
 +
var pootLinkText = poot.children('.poot-tabs-showhide').text().split(';');
 +
var duration = pootTabsHere.animationsEnabled ? parseInt(poot.attr('pootslideduration')) : 0;
 +
if(poot.attr('pootcollapse') != 'true') {
 +
poot.attr('pootcollapse', 'true');
 +
poot.find('.poot-tabs-hidelink a').text(pootLinkText[0]);
 +
poot.children('.poot-tabs, .poot-tabs-content').slideUp(duration);
 +
}
 +
else {
 +
poot.attr('pootcollapse', '');
 +
poot.find('.poot-tabs-hidelink a').text(pootLinkText[1]);
 +
poot.children('.poot-tabs, .poot-tabs-content').slideDown(duration);
 +
}
 +
},
 +
delayHeight:function(poot, selected) {
 +
setTimeout(function() {
 +
poot.attr('pootselected', selected.toString());
 +
pootTabsHere.changeTab(poot, selected, 0, true);
 +
if(poot.hasClass('poot-tabs-collapsed')) {
 +
pootTabsHere.toggleCollapse(poot);
 +
}
 +
}, 100);
 +
},
 +
poot:function() {
 +
var dis = $(this);
 +
dis.removeClass('poot-tabs-nojs'); // If this thing runs, JS is on
 +
var ind = 0;
 +
dis.attr('originalTitle', dis.find('.poot-tabs-titletext').html());
 +
var selected = /poot-tabs-selected-(\d+)/i.exec(dis.attr('class'));
 +
if(selected) {
 +
pootTabsHere.delayHeight(dis, parseInt(selected[1])-1);
 +
}
 +
else {
 +
pootTabsHere.delayHeight(dis, 0);
 +
}
 +
var duration = dis.hasClass('poot-tabs-noanimations') ? 0 : 200;
 +
dis.attr('pootslideduration', dis.hasClass('poot-tabs-noanimations') ? '0' : '75');
 +
dis.children('.poot-tabs').children('ul').children('li').each(function(){
 +
var thisInd = ind;
 +
$(this).click(function(){
 +
pootTabsHere.changeTab(dis, thisInd, duration, false);
 +
$(this).blur();
 +
$(this).find('*').blur();
 +
return false;
 +
});
 +
ind++;
 +
});
 +
var isVertical = dis.hasClass('poot-tabs-vertical');
 +
dis.attr('pootvertical', isVertical ? 'true' : '');
 +
if(isVertical) {
 +
var teenie = dis.children('.poot-tabs').width().toString() + 'px';
 +
dis.children('.poot-tabs-content').css('margin-left', teenie);
 +
}
 +
dis.attr('pootcollapse', ''); // False
 +
dis.find('.poot-tabs-hidelink a').click(function(){
 +
pootTabsHere.toggleCollapse(dis);
 +
return false;
 +
});
 +
},
 +
init:function() {
 +
$('.poot-tabs-container').each(pootTabsHere.poot);
 +
}
 +
};
 +
$(pootTabsHere.init);
 +
 
 +
// Language support fixes
 +
var langFixes = {
 +
init: function() {
 +
// Supported list of languages (not including the default one):
 +
var langList = ['ar', 'cs', 'da', 'de', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', 'sv', 'tr', 'zh-hans', 'zh-hant'];
 +
// Assumed language if the page is in none of the languages above:
 +
var defaultLang = 'en';
 +
var lang = defaultLang;
 +
for(var i in langList) {
 +
if(mw.config.get('wgPageName').substr(mw.config.get('wgPageName').length - 1 - langList[i].length).toLowerCase() == '/' + langList[i].toLowerCase()) {
 +
lang = langList[i];
 +
break;
 +
}
 +
}
 +
$('body').addClass('lang-' + lang);
 +
}
 +
};
 +
$(langFixes.init);
 +
 
 +
// Custom tooltip component. See Template:Tooltip
 +
var wikiTooltip = {
 +
    init: function() {
 +
        var $tooltips = $('.wiki-tooltip .wiki-tooltip-content');
 +
        if ($tooltips[0]) {
 +
            $tooltips.each(function() {
 +
                var $this = $(this);
 +
                function handler() {
 +
                    // Check for links and handle them on handheld devices
 +
                    if (!!$this.closest('a').attr('href')) {
 +
                        $this.closest('a').removeAttr('title');
 +
 
 +
                        widthRect <= 1000 ? wikiTooltip.hasLink($this) : wikiTooltip.removeAnchor($this);
 +
                    }
 +
                   
 +
                    // Prevent tooltips from overflowing the viewport
 +
                    var bounding = $this[0].getBoundingClientRect();
 +
                    edgeRect = {
 +
                        left: Math.floor(($this.width() + bounding.left + 10)),
 +
                        right: Math.floor(($this.width() + bounding.right + 10))
 +
                    };
 +
 
 +
                    widthRect = $(window).innerWidth();
 +
                    if (edgeRect.left >= (widthRect || document.documentElement.clientWidth)) {
 +
                        $this.css('left', '');
 +
                        $this.css('right', '50%');
 +
                    } else if (edgeRect.right <= (widthRect || document.documentElement.clientWidth)) {
 +
                        $this.css('right', '');
 +
                        $this.css('left', '50%');
 +
                    }
 +
                }
 +
                $(handler);
 +
                setTimeout(function() {
 +
                    $(window).on('resize', handler);
 +
                }, 250);
 +
            });
 +
        }
 +
    },
 +
    hasLink: function(tooltip) {
 +
        if (tooltip.find('a').length < 1) {
 +
            var $a = $('<a>');
 +
            var url = tooltip.closest('a');
 +
            var href = url.attr('href');
 +
 
 +
            $a.attr('href', href);
 +
            url.attr('href', 'javascript:void(0);');
 +
            tooltip.append($a);
 +
        }
 +
    },
 +
    removeAnchor: function(tooltip) {
 +
        var url = tooltip.closest('a');
 +
        var href = url.attr('href');
 +
 
 +
        innerLink = tooltip.find('a').attr('href');
 +
        if (innerLink) {
 +
            href = innerLink;
 +
            url.attr('href', href);
 +
            tooltip.find('a').remove();
 +
        } else {
 +
            return;
 +
        }
 +
    }
 +
};
 +
$(wikiTooltip.init);
 +
 
 +
// Logged-in body class injection
 +
var loggedinBodyClass = {
 +
init: function() {
 +
$('body').addClass(mw.config.get('wgUserName') == null ? 'not-logged-in' : 'logged-in');
 +
}
 +
};
 +
$(loggedinBodyClass.init);
 +
 
 +
// Resize YouTube embed, turn HD on, etc, by User:WindPower
 +
var youtubeHelper = {
 +
chromeSize: 25, // This is the height (in pixels) of the chrome of YouTube's embedded video player. Update this whenever they release a new embedded video player
 +
maxWidth: 0.85, // Maximum fraction of the available width that the video may take
 +
infoboxes: ['.infobox', '.testchamber'], // Selectors of infobox-style boxes that should be deducted from the page's available width
 +
ratioR: /ratio-(\d+)x(\d+)/i,
 +
widthsR: /widths((?:\D+\d+)+)/i,
 +
setSize:function() {
 +
var widths = youtubeHelper.widthsR.exec($(this).attr('class'));
 +
if(widths != null) {
 +
widths = widths[1].substr(1).split(/\D+/g);
 +
var availableWidth = $('#bodyContent').width();
 +
for(var i in youtubeHelper.infoboxes) {
 +
if($(youtubeHelper.infoboxes[i]).length) {
 +
availableWidth -= $(youtubeHelper.infoboxes[i]).width();
 +
}
 +
}
 +
availableWidth *= youtubeHelper.maxWidth;
 +
var intWidths = [];
 +
for(var w = 0; w < widths.length; w++) {
 +
intWidths[w] = parseInt(widths[w]);
 +
}
 +
intWidths.sort(function(a, b){return b - a;});
 +
for(var w = 0; w < intWidths.length; w++) {
 +
if(intWidths[w] <= availableWidth || w == intWidths.length-1) {
 +
youtubeHelper.setWidth(this, intWidths[w]);
 +
break;
 +
}
 +
}
 +
}
 +
else {
 +
youtubeHelper.setWidth(this, parseFloat(obj.attr('width')));
 +
}
 +
},
 +
setUrl:function() {
 +
var obj = $(this).children('object');
 +
if(!obj.length) return;
 +
obj.append($('<param name="allowscriptaccess" value="true"></param>'));
 +
obj.append($('<param name="allowfullscreen" value="true"></param>'));
 +
var titleParts = mw.config.get('wgPageName').split(/\//g);
 +
var lang = 'en';
 +
if(titleParts.length == 2 && !mw.config.get('wgCanonicalSpecialPageName')) {
 +
lang = titleParts[titleParts.length-1];
 +
}
 +
var playerUrl = obj.children('param[name="movie"]').attr('value') + '&version=2&fs=1&theme=dark&color=white' + ($(this).hasClass('hd-on') ? '&hd=1' : '') + '&cc_load_policy=1&modestbranding=1&hl=' + lang + '&cc_lang_pref=' + lang;
 +
obj.children('param[name="movie"]').attr('value', playerUrl);
 +
obj.children('embed').attr('src', playerUrl).attr('allowscriptaccess', 'always').attr('allowfullscreen', 'true');
 +
var resultHtml = $(this).html();
 +
$(this).html('').html(resultHtml);
 +
},
 +
setWidth:function(youtube, width) {
 +
var obj = $(youtube).children('object');
 +
if(!obj) return;
 +
if($(youtube).hasClass('youtube-audio')) {
 +
obj.attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <object> height
 +
obj.children('embed').attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <embed> height
 +
}
 +
else {
 +
var ratio = youtubeHelper.ratioR.exec($(youtube).attr('class'));
 +
if(ratio != null) {
 +
ratio = parseFloat(ratio[1])/parseFloat(ratio[2]);
 +
var newHeight = Math.round(width / ratio + youtubeHelper.chromeSize).toString();
 +
obj.attr('width', width).attr('height', newHeight); // Set <object> height
 +
obj.children('embed').attr('width', width).attr('height', newHeight); // Set <embed> height
 +
}
 +
}
 +
},
 +
resizeTimer:null,
 +
resize:function() {
 +
if(youtubeHelper.resizeTimer != null) {
 +
clearTimeout(youtubeHelper.resizeTimer);
 +
}
 +
youtubeHelper.resizeTimer = setTimeout(youtubeHelper.onResize, 100);
 +
},
 +
onResize:function() {
 +
$('.youtubebox').each(youtubeHelper.setSize);
 +
},
 +
init:function() {
 +
$('.youtubebox').each(youtubeHelper.setUrl);
 +
$(window).resize(youtubeHelper.resize);
 +
youtubeHelper.onResize();
 +
}
 +
};
 +
$(youtubeHelper.init);
 +
 
 +
// Edittools loader copied from http://en.wikipedia.org/wiki/MediaWiki:Common.js/edit.js?oldid=407371785
 +
// Only slightly modified by seb26
 +
 
 +
/**
 +
*  Edittools javascript loader ************************************************
 +
*
 +
*  Description: Pulls in [[MediaWiki:Edittools.js]]. Includes a cache-bypassing
 +
*  version number in the URL in order to allow any changes to the edittools to
 +
*  be rapidly deployed to users.
 +
*
 +
*  Note that, by default, this function does nothing unless the element with
 +
*  the ID "editpage-specialchars" (which contains the old edittools code in
 +
*  [[MediaWiki:Edittools]], and will be retained as a placeholder in the new
 +
*  implementation) has a class named "edittools-version-NNN", where NNN is a
 +
*  number.  If the class name has "test" before the number, the code will only
 +
*  run for users who have set "window.testJsEdittools = true" in their user JS.
 +
*  The "test" should be retained in the class name until the new edittools
 +
*  implementation is ready and fully tested, and until at least 30 days have
 +
*  passed since this loader stub was added (which will be in 27 June 2008).
 +
*
 +
*  For compatibility with Alex Smotrov's original implementation, on which this
 +
*  code is loosely based (see [[mw:User talk:Alex Smotrov/edittools.js]]), this
 +
*  loader can also be disabled by setting "window.noDefaultEdittools = true".
 +
*
 +
*  Maintainers: [[User:Ilmari Karonen]]
 +
*/
 +
 
 +
if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1 || mw.config.get('wgPageName') == "Special:Upload") //scripts specific to editing pages
 +
{
 +
 +
  // Prevent the static edittools from flashing before the compact edittools below is loaded.
 +
  mw.util.addCSS('div.edittools-text { display:none; }');
 +
 +
  $(function () {
 +
    // needs to be deferred until the DOM has fully loaded
 +
    var placeholder = document.getElementById("editpage-specialchars");
 +
    if (!placeholder || window.noDefaultEdittools) {
 +
      //Show the static edittools again for users with "window.noDefaultEdittools=true".
 +
      mw.util.addCSS('div.edittools-text { display:block; }');
 +
      return;
 +
    }
 +
    var match = /(?:^| )edittools-version-(\d+)(?: |$)/.exec(placeholder.className);
 +
 +
    // set window.testJsEdittools = true to enable testing before full deployment
 +
    if (!match && window.testJsEdittools)
 +
        match = /(?:^| )edittools-version-(test\d+)(?: |$)/.exec(placeholder.className);
 +
 +
    if (!match) return;
 +
    var url = mw.config.get('wgScript') + '?title=MediaWiki:Edittools.js&action=raw&ctype=text/javascript&nocache=' + match[1];
 +
    mw.loader.load(url);
 +
  });
 +
}
 +
 
 +
/********* MediaWiki:Valve.js *********/
 +
function talkpageplus()
 +
{
 +
    var talkpagelink = document.getElementById('ca-talk');
 +
    if (talkpagelink && talkpagelink.className == 'new')
 +
    {
 +
        talkpagelink.firstChild.href += '&section=new';
 +
    }
 +
}
 +
$(talkpageplus);
 +
 
 +
// Konami code easter egg by WindPower, modified by Wookipan
 +
// Constants:
 +
var spaiConstants = {};
 +
// Editable constants:
 +
// General info:
 +
spaiConstants.spaiEnabled = true;
 +
spaiConstants.spaiImage = '/w/images/7/73/Team_Fortress_Wiki_Egg_Spy.png';
 +
spaiConstants.spaiHeight = 196;
 +
spaiConstants.sapperClass = '--sapped';
 +
spaiConstants.spaiSappingMahWikiWav = '/w/images/4/4a/Team_Fortress_Wiki_Egg.wav';
 +
spaiConstants.timeStep = 40; // In milliseconds; 40 ms => 25 fps
 +
// Animation timing (all times in milliseconds):
 +
spaiConstants.anim_spaiFallDown = 2000; // Time for Spy to fall down
 +
spaiConstants.anim_spaiWait = 900; // Time Spy waits before going back up
 +
spaiConstants.anim_spaiBackUp = 2000; // Time for Spy to go back up
 +
spaiConstants.anim_sapperDestroyed = 2250; // Time until Sapper gets destroyed
 +
// End editable constants
 +
spaiConstants.theBody = function(){return document.getElementById('content');};
 +
spaiConstants.preloadedImages = [];
 +
spaiConstants.preloadingImages = [];
 +
spaiConstants.preloadingRefs = {};
 +
spaiConstants.toPreloadImage = spaiConstants.spaiImage;
 +
spaiConstants.self = null;
 +
spaiConstants.loadedSound = false;
 +
spaiConstants.loadedImages = false;
 +
spaiConstants.fired = false;
 +
// End constants
 +
 
 +
if (!Array.prototype.indexOf) {
 +
  Array.prototype.indexOf = function (obj, fromIndex) {
 +
    if (fromIndex == null) {
 +
        fromIndex = 0;
 +
    } else if (fromIndex < 0) {
 +
        fromIndex = Math.max(0, this.length + fromIndex);
 +
    }
 +
    for (var i = fromIndex, j = this.length; i < j; i++) {
 +
        if (this[i] === obj)
 +
            return i;
 +
    }
 +
    return -1;
 +
  };
 +
}
 +
 
 +
var spaiSappinMahWiki = {
 +
constants: spaiConstants,
 +
createImgDiv:function(image) {
 +
var self = spaiConstants.self;
 +
var div = document.createElement('div');
 +
var img = document.createElement('img');
 +
img.src = image;
 +
div.appendChild(img);
 +
setTimeout(function(){spaiConstants.theBody().appendChild(div);}, 1);
 +
return {
 +
'div': div,
 +
'img': img
 +
};
 +
},
 +
imagesLoaded:function() {
 +
spaiConstants.loadedImages = true;
 +
if(spaiConstants.loadedSound) {
 +
spaiConstants.self.spySappingMahWiki();
 +
}
 +
},
 +
soundLoaded:function() {
 +
spaiConstants.loadedSound = true;
 +
if(spaiConstants.loadedImages) {
 +
spaiConstants.self.spySappingMahWiki();
 +
}
 +
},
 +
preloadSound:function(sound, callback) {
 +
var self = spaiConstants.self;
 +
try {
 +
var audio = document.createElement('audio');
 +
audio.setAttribute('src', sound);
 +
audio.setAttribute('style', 'display: none;');
 +
audio.setAttribute('preload', 'true');
 +
spaiConstants.theBody().appendChild(audio);
 +
audio.addEventListener('canplaythrough', callback, false);
 +
}
 +
catch(e) {}
 +
setTimeout(callback, 1000); // Fallback
 +
},
 +
preloadImage:function(image) {
 +
var self = spaiConstants.self;
 +
if(spaiConstants.preloadingImages.indexOf(image) == -1) {
 +
spaiConstants.preloadingImages[spaiConstants.preloadingImages.length] = image;
 +
var nodes = self.createImgDiv(image);
 +
spaiConstants.preloadingRefs[image] = nodes['img'];
 +
nodes['div'].setAttribute('style', 'visibility: hidden; height: 0px; width: 0px; overflow: hidden; z-index: -10000;');
 +
}
 +
if(spaiConstants.preloadingRefs[image].width) {
 +
spaiConstants.preloadedImages[spaiConstants.preloadedImages.length] = image;
 +
}
 +
else
 +
{
 +
setTimeout(function(){self.preloadImage(image);}, spaiConstants.timeStep);
 +
}
 +
},
 +
preloadImages:function(callback) {
 +
var self = spaiConstants.self;
 +
var allPreloaded = true;
 +
for(var i in spaiConstants.toPreloadImages) {
 +
if(spaiConstants.preloadedImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
 +
allPreloaded = false;
 +
}
 +
if(spaiConstants.preloadingImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
 +
self.preloadImage(spaiConstants.toPreloadImages[i]);
 +
}
 +
}
 +
if(allPreloaded) {
 +
callback();
 +
} else {
 +
setTimeout(function(){self.preloadImages(callback);}, spaiConstants.timeStep);
 +
}
 +
},
 +
destroyNode:function(node) {
 +
try {
 +
node.parentNode.removeChild(node);
 +
} catch(e) {
 +
// Ze goggles, zey do nothin
 +
}
 +
},
 +
smoothInOut:function(progress) {
 +
return (Math.sin((progress-.5)*Math.PI)+1)/2;
 +
},
 +
inAnimation:function(func, progressTime, totalTime, callback, easing) {
 +
var self = spaiConstants.self;
 +
func(easing(progressTime / totalTime));
 +
if(progressTime >= totalTime) {
 +
callback();
 +
} else {
 +
setTimeout(function(){self.inAnimation(func, progressTime + spaiConstants.timeStep, totalTime, callback, easing);}, spaiConstants.timeStep);
 +
}
 +
},
 +
animate:function(func, totalTime, callback, easing) {
 +
var self = spaiConstants.self;
 +
return self.inAnimation(func, 0.0, totalTime, callback, easing);
 +
},
 +
playSound:function(sound) {
 +
var self = spaiConstants.self;
 +
try {
 +
var audio = document.createElement('audio');
 +
audio.setAttribute('src', sound);
 +
audio.setAttribute('style', 'display: none;');
 +
audio.setAttribute('autoplay', 'true');
 +
spaiConstants.theBody().appendChild(audio);
 +
}
 +
catch(e) {}
 +
},
 +
spyAnimationFinished:function(nodes) {
 +
var self = spaiConstants.self;
 +
for(var node in nodes) {
 +
self.destroyNode(nodes[node]);
 +
}
 +
spaiConstants.fired = false;
 +
},
 +
spySappingMahWiki:function() {
 +
var self = spaiConstants.self;
 +
if(spaiConstants.fired) return;
 +
spaiConstants.fired = true;
 +
var spai = document.createElement('a');
 +
spai.setAttribute('href', '/');
 +
spai.setAttribute('style', 'display:block; position: absolute; top: 0px; left: 0px; width: 160px; height: 200px; border: 0px; background: url('+spaiConstants.spaiImage+') no-repeat 0px -50000px; z-index: 10000;');
 +
spaiConstants.theBody().appendChild(spai);
 +
var logoPortlet = document.getElementById('p-logo');
 +
var changeHeight = function(progress) {
 +
progress = parseInt(progress * spaiConstants.spaiHeight);
 +
spai.style.backgroundPosition = '0px ' + (-spaiConstants.spaiHeight + progress).toString() + 'px';
 +
};
 +
self.animate(changeHeight, spaiConstants.anim_spaiFallDown, function(){
 +
self.playSound(spaiConstants.spaiSappingMahWikiWav);
 +
setTimeout(function(){
 +
logoPortlet.classList.add('wiki-logo' + spaiConstants.sapperClass);
 +
self.animate(function(progress){changeHeight(1.0-progress);}, spaiConstants.anim_spaiBackUp, function(){
 +
setTimeout(function(){
 +
logoPortlet.removeAttribute('class');
 +
self.spyAnimationFinished([spai]);
 +
}, spaiConstants.anim_sapperDestroyed);
 +
}, self.smoothInOut);
 +
}, spaiConstants.anim_spaiWait);
 +
}, self.smoothInOut);
 +
},
 +
hitItDoc:function() {
 +
var self = spaiConstants.self;
 +
self.preloadImages(self.imagesLoaded);
 +
self.preloadSound(spaiConstants.spaiSappingMahWikiWav, self.soundLoaded);
 +
},
 +
initKonami: function () {
 +
var self = spaiConstants.self;
 +
/*
 +
* Konami-JS ~
 +
* :: Now with support for touch events and multiple instances for
 +
* :: those situations that call for multiple easter eggs!
 +
* Code: https://github.com/georgemandis/konami-js
 +
* Copyright (c) 2009 George Mandis (https://george.mand.is)
 +
* Version: 1.6.3 (11/11/2021)
 +
* Licensed under the MIT License (http://opensource.org/licenses/MIT)
 +
* Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android
 +
*/
 +
var Konami = function (callback) {
 +
var konami = {
 +
addEvent: function (obj, type, fn, ref_obj) {
 +
if (obj.addEventListener)
 +
obj.addEventListener(type, fn, false);
 +
else if (obj.attachEvent) {
 +
// IE
 +
obj["e" + type + fn] = fn;
 +
obj[type + fn] = function () {
 +
obj["e" + type + fn](window.event, ref_obj);
 +
}
 +
obj.attachEvent("on" + type, obj[type + fn]);
 +
}
 +
},
 +
removeEvent: function (obj, eventName, eventCallback) {
 +
if (obj.removeEventListener) {
 +
obj.removeEventListener(eventName, eventCallback);
 +
} else if (obj.attachEvent) {
 +
obj.detachEvent(eventName);
 +
}
 +
},
 +
input: "",
 +
pattern: "38384040373937396665",
 +
keydownHandler: function (e, ref_obj) {
 +
if (ref_obj) {
 +
konami = ref_obj;
 +
} // IE
 +
konami.input += e ? e.keyCode : event.keyCode;
 +
if (konami.input.length > konami.pattern.length) {
 +
konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
 +
}
 +
if (konami.input === konami.pattern) {
 +
konami.code(konami._currentLink);
 +
konami.input = '';
 +
e.preventDefault();
 +
return false;
 +
}
 +
},
 +
load: function (link) {
 +
this._currentLink = link;
 +
this.addEvent(document, "keydown", this.keydownHandler, this);
 +
this.iphone.load(link);
 +
},
 +
unload: function () {
 +
this.removeEvent(document, 'keydown', this.keydownHandler);
 +
this.iphone.unload();
 +
},
 +
code: function (link) {
 +
window.location = link
 +
},
 +
iphone: {
 +
start_x: 0,
 +
start_y: 0,
 +
stop_x: 0,
 +
stop_y: 0,
 +
tap: false,
 +
capture: false,
 +
orig_keys: "",
 +
keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"],
 +
input: [],
 +
code: function (link) {
 +
konami.code(link);
 +
},
 +
touchmoveHandler: function (e) {
 +
if (e.touches.length === 1 && konami.iphone.capture === true) {
 +
var touch = e.touches[0];
 +
konami.iphone.stop_x = touch.pageX;
 +
konami.iphone.stop_y = touch.pageY;
 +
konami.iphone.tap = false;
 +
konami.iphone.capture = false;
 +
konami.iphone.check_direction();
 +
}
 +
},
 +
touchendHandler: function () {
 +
konami.iphone.input.push(konami.iphone.check_direction());
 +
 
 +
if (konami.iphone.input.length > konami.iphone.keys.length) konami.iphone.input.shift();
 +
 
 +
if (konami.iphone.input.length === konami.iphone.keys.length) {
 +
var match = true;
 +
for (var i = 0; i < konami.iphone.keys.length; i++) {
 +
if (konami.iphone.input[i] !== konami.iphone.keys[i]) {
 +
match = false;
 +
}
 +
}
 +
if (match) {
 +
konami.iphone.code(konami._currentLink);
 +
}
 +
}
 +
},
 +
touchstartHandler: function (e) {
 +
konami.iphone.start_x = e.changedTouches[0].pageX;
 +
konami.iphone.start_y = e.changedTouches[0].pageY;
 +
konami.iphone.tap = true;
 +
konami.iphone.capture = true;
 +
},
 +
load: function (link) {
 +
this.orig_keys = this.keys;
 +
konami.addEvent(document, "touchmove", this.touchmoveHandler);
 +
konami.addEvent(document, "touchend", this.touchendHandler, false);
 +
konami.addEvent(document, "touchstart", this.touchstartHandler);
 +
},
 +
unload: function () {
 +
konami.removeEvent(document, 'touchmove', this.touchmoveHandler);
 +
konami.removeEvent(document, 'touchend', this.touchendHandler);
 +
konami.removeEvent(document, 'touchstart', this.touchstartHandler);
 +
},
 +
check_direction: function () {
 +
x_magnitude = Math.abs(this.start_x - this.stop_x);
 +
y_magnitude = Math.abs(this.start_y - this.stop_y);
 +
x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT";
 +
y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP";
 +
result = (x_magnitude > y_magnitude) ? x : y;
 +
result = (this.tap === true) ? "TAP" : result;
 +
return result;
 +
}
 +
}
 +
}
 +
 
 +
typeof callback === "string" && konami.load(callback);
 +
if (typeof callback === "function") {
 +
konami.code = callback;
 +
konami.load();
 +
}
 +
 
 +
return konami;
 +
};
 +
// End of Konami-JS
 +
var konami = new Konami();
 +
konami.code = function() {
 +
if (spaiConstants.spaiEnabled) {
 +
self.hitItDoc.apply(self);
 +
}
 +
 +
document.dispatchEvent(new CustomEvent('konami:fire'));
 +
};
 +
konami.load();
 +
}
 +
};
 +
spaiConstants.self = spaiSappinMahWiki;
 +
$(spaiSappinMahWiki.initKonami);
 +
 
 +
// Dynamic background by WindPower
 +
// WindPower is secksy and makes this wiki awesome with his very breath. (- Smashman)
 +
var dynamicBg = {
 +
categories: {
 +
// Format:
 +
// 'CategoryName': 'URL of background image',  ---OR--- 'title-PageTitle': 'URL of background image',
 +
// Categories don't have to be class names, they can be things like "Weapons", "Featured articles", "Maps", "Help", etc.
 +
'Scout': '/w/images/e/ea/Background_Scout_vector.png',
 +
'Soldier': '/w/images/5/54/Background_Soldier_vector.png',
 +
'Pyro': '/w/images/e/ed/Background_Pyro_vector.png',
 +
                'Demoman': '/w/images/5/59/Background_Demoman_vector.png',
 +
                'Engineer': '/w/images/f/f7/Background_Engineer_vector.png',
 +
                'Heavy': '/w/images/0/03/Background_Heavy_vector.png',
 +
                'Medic': '/w/images/2/24/Background_Medic_vector.png',
 +
                'Sniper': '/w/images/e/ed/Background_Sniper_vector.png',
 +
                'Spy': '/w/images/b/b9/Background_Spy_vector.png'
 +
// (No comma at the end of the last line)
 +
},
 +
getCategories:function() {
 +
var catlinksnode = document.getElementById('catlinks');
 +
if(!catlinksnode) return [];
 +
var catlinks = document.getElementById('catlinks').getElementsByTagName('a');
 +
var cats = [];
 +
var l;
 +
for(var i = 0; i < catlinks.length; i++) {
 +
l = catlinks[i].getAttribute('title');
 +
if(l.match(/^Category:/i, '')) {
 +
cats[cats.length] = l.substr(9).replace(/\/[^/]+$/, '');
 +
}
 +
}
 +
return cats;
 +
},
 +
inArray:function(haystack, needle) {
 +
for(var i = 0; i < haystack.length; i++) {
 +
if(haystack[i] == needle) {
 +
return i;
 +
}
 +
}
 +
return -1;
 +
},
 +
init:function() {
 +
if(typeof(wPrefs) != 'undefined') {
 +
if(dynamicBg.inArray(wPrefs, 'noDynamicBackground') != -1) {
 +
return; // Script disabled
 +
}
 +
}
 +
try {
 +
var cats = dynamicBg.getCategories();
 +
var body = document.getElementsByTagName('body')[0];
 +
} catch(e) {
 +
return;
 +
}
 +
var selectedCats = [];
 +
if(typeof(dynamicBg.categories['title-' + mw.config.get('wgTitle')]) != 'undefined') {
 +
selectedCats[0] = dynamicBg.categories['title-' + mw.config.get('wgTitle')];
 +
}
 +
else {
 +
for(var i in dynamicBg.categories) {
 +
if(dynamicBg.inArray(cats, i) != -1) {
 +
selectedCats[selectedCats.length] = dynamicBg.categories[i];
 +
}
 +
}
 +
}
 +
if(!selectedCats.length) return; // No match, keep default style
 +
var selectedCat = selectedCats[Math.floor(Math.random()*selectedCats.length)];
 +
body.style.backgroundImage='url('+selectedCat+')';
 +
}
 +
};
 +
$(dynamicBg.init);
 +
 
 +
// Page-specific JavaScript/CSS
 +
var pageScripts = {
 +
pagesJS: ['Main_Page', 'User:WindPower', 'User:MogDog66', 'User:WindPower/Main_Page', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:Lexar/responsive_infobox', 'User:Lexar/sandbox', 'User:Tark', 'User:Tark/Sandbox', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Wookipan/Sandbox'],
 +
pagesCSS: ['Main_Page', 'User:WindPower', 'User:Pilk/armory', 'User:Pilk', 'User:Esky', 'User:Lagg', 'User:MogDog66', 'User:CrushBOT', 'User:MogDog66/userpagev2', 'User:NVis', 'User:NVis/Sandbox', 'User:Lexar', 'User:MogDog66/MPR', 'User:WindPower/Main_Page', 'User:Moussekateer/3DViewer', 'User:T-Wayne', 'User:FreeXMan', 'User:Nixshadow', 'User:Ath', 'User:Carez', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:MogDog66/Sandbox', 'User:Obilisk', 'User:Lexar/itembox_tooltip', 'User:Lexar/sandbox', 'User:Lexar/responsive_infobox', 'User:Hagbard Celine', 'User:Wookipan', 'User:Wookipan/Sandbox', 'User:GrampaSwood', 'Team_Fortress_Wiki:April_Fools\'_Day/2019/Main_Page', 'User:Tark', 'User:Tark/Sandbox', 'User:Boba', 'User:Boba/Projects', 'User:FanCyy', 'User:Dan_greene', 'User:Boba/Sandbox', 'User:Ashe', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Foxbite', 'User:Mediarch', 'User:Payn'],
 +
suffixJS: '/Page.js',
 +
suffixCSS: '/Page.css',
 +
init: function() {
 +
for(var i in pageScripts.pagesJS) {
 +
if(mw.config.get('wgPageName') == pageScripts.pagesJS[i]) {
 +
mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixJS) + '&ctype=text/javascript&action=raw');
 +
}
 +
}
 +
for(var i in pageScripts.pagesCSS) {
 +
if(mw.config.get('wgPageName') == pageScripts.pagesCSS[i]) {
 +
mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixCSS) + '&ctype=text/css&action=raw', 'text/css');
 +
}
 +
}
 +
}
 +
};
 +
$(pageScripts.init);
 +
 
 +
// Fancy diffs
 +
var fancyDiffs = {
 +
isBigDiff: false,
 +
isBigDiffThreshold: 72,
 +
toggle: function(element) {
 +
var expanded = element.hasClass('diff-expanded');
 +
var contents = element.parent().children('.diff-contents');
 +
if(expanded) { // Just collapse then
 +
element.removeClass('diff-expanded');
 +
if(fancyDiffs.isBigDiff) {
 +
contents.hide();
 +
} else {
 +
contents.slideUp('fast');
 +
}
 +
} else if(element.hasClass('diff-data-loaded')) { // Stuff is already loaded, expand
 +
element.addClass('diff-expanded');
 +
contents.slideDown('fast');
 +
} else if(!element.hasClass('diff-data-requested')) { // Stuff is not loaded
 +
element.addClass('diff-data-requested');
 +
var fileName = element.find('span').text().replace(/^\s+|\s+$/g);
 +
var patchName = element.closest('.diffname');
 +
var diffName = mw.config.get('wgPageName');
 +
if(patchName && patchName.length && patchName.attr('class')) {
 +
diffName = patchName.attr('class').substr(9);
 +
}
 +
$.get('/w/?title=Template:PatchDiff/' + encodeURIComponent(diffName.replace(/^Template:PatchDiff\//, '')) + '/' + encodeURIComponent(fileName) + '&action=raw', function(data) {
 +
contents.html(data);
 +
if(fancyDiffs.isBigDiff) {
 +
contents.show();
 +
} else {
 +
contents.slideDown('fast');
 +
}
 +
element.removeClass('diff-data-requested').addClass('diff-data-loaded').addClass('diff-expanded');
 +
});
 +
}
 +
 +
},
 +
init: function() {
 +
var diffText = $('.diff-name-text');
 +
if(diffText.length) {
 +
// Preload leetle gif
 +
$('body').append($('<img/>').attr('src', '/w/images/4/43/Patch_diff_loading.gif').css('display', 'none'));
 +
diffText.find('span').each(function() {
 +
$(this).text($(this).find('a').text().replace(/^\s+|\s+$/g));
 +
});
 +
diffText.click(function() {
 +
fancyDiffs.toggle($(this));
 +
return false;
 +
});
 +
fancyDiffs.isBigDiff = $('.diff-file').length > fancyDiffs.isBigDiffThreshold;
 +
}
 +
}
 +
};
 +
$(fancyDiffs.init);
 +
 
 +
// 3D/2D viewer
 +
$('#switch-to-3d').click(function() {
 +
$('.container-2d').hide();
 +
$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').show();
 +
});
 +
 
 +
$('#switch-to-2d').click(function() {
 +
$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').hide();
 +
$('.container-2d').show();
 +
});
 +
 
 +
// 3D model viewer
 +
var viewer3d = {
 +
dragging: null,
 +
draggingFrameX: 0,
 +
draggingFrameY: 0,
 +
viewers: [],
 +
frameThresholdX: 10,
 +
frameThresholdY: 128,
 +
realMod: function(x, y) {
 +
return ((x % y) + y) % y;
 +
},
 +
init: function() {
 +
$('.viewer-3d').each(viewer3d.bind);
 +
$(document).mouseup(viewer3d.release);
 +
$(document).mousemove(viewer3d.move);
 +
},
 +
bind: function() {
 +
var v = $(this);
 +
var num = viewer3d.viewers.length;
 +
var allModels = [];
 +
var modelID = 0;
 +
var viewerSize = 0;
 +
while(true) {
 +
var modelMap = v.find('.viewer-3d-map-' + modelID);
 +
var urlNode = v.find('.viewer-3d-url-' + modelID);
 +
if(!modelMap.length || !urlNode.length) break;
 +
var url = $('<div/>').html(urlNode.text()).text();
 +
var framesS = $('<div/>').html(modelMap.text()).text().replace(/^\s+|\s+$/g).split(/,/g);
 +
var frameMap = [];
 +
var heightMap = [];
 +
var leftCropMap = [];
 +
var totalW = parseInt(framesS[0]);
 +
var maxFrameW = parseInt(framesS[1]);
 +
var totalH = parseInt(framesS[2]);
 +
var verticalSteps = parseInt(framesS[3]);
 +
var midVertical = Math.floor(verticalSteps / 2);
 +
for(var f = 4; f < framesS.length; f += 3) {
 +
frameMap.push(parseInt(framesS[f]));
 +
heightMap.push(parseInt(framesS[f + 1]));
 +
leftCropMap.push(parseInt(framesS[f + 2]));
 +
}
 +
allModels.push({
 +
imageURL: url,
 +
map: frameMap,
 +
cropMap: leftCropMap,
 +
totalWidth: totalW,
 +
totalHeight: totalH,
 +
maxFrameWidth: maxFrameW,
 +
xStep: verticalSteps
 +
});
 +
viewerSize = Math.max(viewerSize, totalH, maxFrameW);
 +
modelID++;
 +
}
 +
if(!modelID) return;
 +
var overlayNode = $('<div class="viewer-3d-overlay"></div>');
 +
var frameN = v.find('.viewer-3d-frame');
 +
v.find('img').detach();
 +
var klasses = v.attr('class').split(/ /g);
 +
var startFrame = 0;
 +
for(var k in klasses) {
 +
if(klasses[k].substr(0, 11) == 'startframe-') {
 +
startFrame = Math.max(0, parseInt(klasses[k].substr(11)));
 +
}
 +
}
 +
var viewer = {
 +
node: v,
 +
frameX: startFrame,
 +
frameY: midVertical,
 +
models: allModels,
 +
currentModel: -1,
 +
frameNode: frameN,
 +
width: viewerSize,
 +
height: viewerSize,
 +
mouseX: 0,
 +
mouseY: 0,
 +
overlay: overlayNode
 +
};
 +
viewer3d.viewers.push(viewer);
 +
v.hover(viewer3d.hover, viewer3d.unhover).mousedown(viewer3d.drag).append(overlayNode).attr('data-id', num).css({
 +
width: viewer.width + 'px',
 +
height: viewer.height + 'px'
 +
});
 +
frameN.mousedown(viewer3d.drag).attr('data-id', num).css('height', viewer.height + 'px');
 +
viewer3d.changeVersion(viewer, 0);
 +
},
 +
getCurrentModel: function(v) {
 +
return v.models[v.currentModel];
 +
},
 +
changeVersion: function(v, version) {
 +
version = Math.max(0, Math.min(v.models.length - 1, version));
 +
if(v.currentModel == version) return;
 +
v.currentModel = version;
 +
v.frameNode.css('background', 'url(' + viewer3d.getCurrentModel(v).imageURL + ') top left no-repeat');
 +
viewer3d.display(v, v.frameX, v.frameY);
 +
},
 +
hover: function(e) {
 +
var v = viewer3d.getViewer(this);
 +
if(viewer3d.dragging != v) {
 +
v.overlay.animate({'opacity': '1'}, 'fast');
 +
}
 +
},
 +
unhover: function(e) {
 +
var v = viewer3d.getViewer(this);
 +
if(viewer3d.dragging != v) {
 +
v.overlay.animate({'opacity': '0.5'}, 'fast');
 +
}
 +
},
 +
drag: function(e) {
 +
var v = viewer3d.getViewer(this);
 +
v.mouseX = e.pageX;
 +
v.mouseY = e.pageY;
 +
viewer3d.dragging = v;
 +
draggingFrameX = v.frameX;
 +
draggingFrameY = v.frameY;
 +
return false;
 +
},
 +
release: function() {
 +
var v = viewer3d.dragging;
 +
viewer3d.dragging = null;
 +
if(v != null) {
 +
v.frameX = viewer3d.draggingFrameX;
 +
v.frameY = viewer3d.draggingFrameY;
 +
v.overlay.animate({'opacity': '0.5'}, 'fast');
 +
}
 +
viewer3d.draggingFrameX = 0;
 +
viewer3d.draggingFrameY = 0;
 +
},
 +
getViewer: function(node) {
 +
return viewer3d.viewers[parseInt($(node).attr('data-id'))];
 +
},
 +
display: function(v, frameX, frameY) {
 +
var model = viewer3d.getCurrentModel(v);
 +
var frameID = viewer3d.realMod(frameX * model.xStep + frameY, model.map.length);
 +
var frameOffset = model.map[frameID];
 +
var frameWidth = 0;
 +
if(frameID == model.map.length - 1) {
 +
frameWidth = model.totalWidth - frameOffset;
 +
} else {
 +
frameWidth = model.map[frameID + 1] - frameOffset;
 +
}
 +
v.frameNode.css({
 +
backgroundPosition: (-frameOffset - frameID) + 'px 0px',
 +
left: Math.round((v.width - model.maxFrameWidth) / 2.0 + model.cropMap[frameID]) + 'px',
 +
top: Math.round((v.height - model.totalHeight) / 2) + 'px',
 +
width: frameWidth + 'px',
 +
height: model.totalHeight + 'px'
 +
});
 +
},
 +
move: function(e) {
 +
if(viewer3d.dragging == null) {
 +
return;
 +
}
 +
var v = viewer3d.dragging;
 +
var model = viewer3d.getCurrentModel(v);
 +
var mouseDeltaX = e.pageX - v.mouseX;
 +
var mouseDeltaY = e.pageY - v.mouseY;
 +
var frameDeltaX = Math.round(mouseDeltaX / viewer3d.frameThresholdX);
 +
var frameDeltaY = -Math.round(mouseDeltaY / viewer3d.frameThresholdY);
 +
viewer3d.draggingFrameX = v.frameX + frameDeltaX;
 +
viewer3d.draggingFrameY = Math.max(0, Math.min(model.xStep - 1, v.frameY + frameDeltaY));
 +
viewer3d.display(v, viewer3d.draggingFrameX, viewer3d.draggingFrameY);
 +
}
 +
};
 +
$(viewer3d.init);
 +
var selector3d = {
 +
bind: function() {
 +
var viewer = viewer3d.getViewer($(this).find('.viewer-3d'));
 +
var keepGoing = true;
 +
var modelVariant = 0;
 +
var selector;
 +
while(keepGoing) {
 +
selector = $(this).find('.selector-' + modelVariant);
 +
if(selector.length) {
 +
selector.attr('data-variant', modelVariant).click(function() {
 +
viewer3d.changeVersion(viewer, parseInt($(this).attr('data-variant')));
 +
return false;
 +
});
 +
}
 +
modelVariant++;
 +
keepGoing = selector.length;
 +
}
 +
},
 +
init: function() {
 +
$('.viewer-3d-multi, .viewer-3d-container').each(selector3d.bind);
 +
}
 +
};
 +
$(selector3d.init);
 +
 
 +
// Code to get 3D viewer drag working on touch devices
 +
// Source: http://www.jquery4u.com/mobile/jquery-add-dragtouch-support-ipad/
 +
$.fn.addTouch = function(){
 +
    this.each(function(i,el){
 +
      $(el).bind('touchstart touchmove touchend touchcancel',function(){
 +
        //we pass the original event object because the jQuery event
 +
        //object is normalized to w3c specs and does not provide the TouchList
 +
        handleTouch(event);
 +
      });
 +
    });
 +
 
 +
    var handleTouch = function(event)
 +
    {
 +
      var touches = event.changedTouches,
 +
              first = touches[0],
 +
              type = '';
 +
 
 +
      switch(event.type)
 +
      {
 +
        case 'touchstart':
 +
          type = 'mousedown';
 +
          break;
 +
 
 +
        case 'touchmove':
 +
          type = 'mousemove';
 +
          event.preventDefault();
 +
          break;
 +
 
 +
        case 'touchend':
 +
          type = 'mouseup';
 +
          break;
 +
 
 +
        default:
 +
          return;
 +
      }
 +
 
 +
      var simulatedEvent = document.createEvent('MouseEvent');
 +
      simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
 +
      first.target.dispatchEvent(simulatedEvent);
 +
    };
 +
  };
 +
 
 +
$('.viewer-3d').addTouch();
 +
 
 +
// End 3D viewer touch device code
 +
 
 +
// Start weapon wear table tabs -----
 +
var WeaponWearTable = {
 +
tabSwitch: function($this,tab,weapons,weapon) {
 +
if (!$this.hasClass('current')) {
 +
var tabIndex = $this.index();
 +
$this.parent().find('.current').removeClass('current');
 +
$this.addClass('current');
 +
weapons.find('.current').removeClass('current');
 +
weapon.eq(tabIndex).addClass('current');
 +
}
 +
},
 +
init: function() {
 +
$('.weapon-wear-table').each(function(){
 +
var $this = $(this),
 +
tabs = $this.children('.tabs'),
 +
tab = tabs.children('li'),
 +
weapons = $this.children('.weapons'),
 +
weapon = weapons.children('li');
 +
tab.click(function(){
 +
WeaponWearTable.tabSwitch($(this),tab,weapons,weapon);
 +
});
 +
});
 +
}
 +
};
 +
$(WeaponWearTable.init);
 +
// End weapon wear table tabs -----
 +
 
 +
// Start Bilibili iframe support -----
 +
var Bilibili = {
 +
  init: function() {
 +
    var $videos = $('.bilibili-video');
 +
    $videos.each(function() {
 +
      var $this = $(this);
 +
      var aid = parseInt($this.data('vaid'));
 +
      var danmaku = parseInt($this.data('vdanmaku'));
 +
      var page = parseInt($this.data('vpage'));
 +
      var width = $this.data('vwidth');
 +
      var height = $this.data('vheight');
 +
      var iframeSrc = 'https://www.bilibili.com/blackboard/html5mobileplayer.html?aid=' + aid + '&high_quality=1&danmaku=' + danmaku + '&page=' + page + '&hideCoverInfo=1&hideDanmakuButton=1';
 +
      var iframe = '<iframe src="' + iframeSrc + '" width="' + width + '" height="' + height + '" frameborder="0" allowfullscreen="true"></iframe>';
 +
      $this.append(iframe);
 +
    });
 +
  }
 +
};
 +
$(Bilibili.init);
 +
// End Bilibili iframe support -----
 +
 
 +
// Start custom username highlighting -----
 +
var uGroupHighlight = {
 +
  init: function() {
 +
    if ($('.mw-userlink')[0]) {
 +
      var params = {
 +
        action: 'query',
 +
        list: 'allusers',
 +
        augroup: ['sysop', 'moderator', 'bot'],
 +
        auprop: 'groups',
 +
        aulimit: 100,
 +
        format: 'json'
 +
      };
 +
 
 +
      var api = new mw.Api();
 +
 
 +
      api.get(params).done(function(data) {
 +
        var uGroups = data.query.allusers, user;
 +
        for (user in uGroups) {
 +
          var name = uGroups[user].name;
 +
          var group = uGroups[user].groups;
 +
 
 +
          $('bdi').each(function() {
 +
            if ($(this).text().match('\\b' + name + '\\b')) {
 +
              $(this).closest('.mw-userlink').addClass(group.includes('bot') ? 'bot' : 'staff');
 +
            }
 +
          });
 +
        }
 +
      });
 +
    }
 +
  },
 +
};
 +
$(uGroupHighlight.init);
 +
// End custom username highlighting -----
 +
 
 +
// Start login icon randomizer -----
 +
var iconRandomizer = {
 +
    init: function() {
 +
        var classes = [
 +
            '/w/images/3/33/Login_Scout.png',
 +
            '/w/images/d/d8/Login_Soldier.png',
 +
            '/w/images/7/71/Login_Pyro.png',
 +
            '/w/images/5/53/Login_Demoman.png',
 +
            '/w/images/3/35/Login_Heavy.png',
 +
            '/w/images/a/ab/Login_Engineer.png',
 +
            '/w/images/d/d4/Login_Medic.png',
 +
            '/w/images/e/e4/Login_Sniper.png',
 +
            '/w/images/2/27/Login_Spy.png'
 +
        ];
 +
 
 +
        // pick a random class image out of nine choices
 +
        pickClass = classes[Math.floor(Math.random() * classes.length)];
 +
 
 +
        // ensure all relative elements are hit
 +
        var nodes = $('#pt-userpage, #pt-anonuserpage, #pt-login');
 +
        if (nodes.length) {
 +
            for (var i = 0; i < nodes.length; i++) {
 +
                nodes.css('background-image', 'url(' + pickClass + ')');
 +
            }
 +
        }
 +
    }
 +
};
 +
 
 +
$(iconRandomizer.init);
 +
// End login icon randomizer -----
 +
 
 +
// Start 'Audio player'
 +
var audioPlayer = {
 +
    currentAudio: null,
 +
 
 +
    init: function () {
 +
        var audioPauseImg = new Image();
 +
        var audioPlayImg = new Image();
 +
        audioPauseImg.src = '/w/images/d/d2/Pause_icon.png';
 +
        audioPlayImg.src = '/w/images/6/67/Play_icon.png';
 +
 
 +
        $('.tfwiki-audio-player').each(function () {
 +
            var audioPlayerElement = $(this);
 +
            var audioLink = audioPlayerElement.children('a');
 +
            var audioURL = audioLink.attr('href');
 +
            var audio = null;
 +
            var audioStatus = audioPlayerElement.find('.tfwiki-audio-player-action');
 +
 +
audioStatus.removeClass('inactive');
 +
 
 +
            audioPlayerElement.on('click', function (e) {
 +
                if (e.target !== audioStatus[0]) {
 +
                    return;
 +
                }
 +
 
 +
                e.preventDefault();
 +
 +
                if (!audio) {
 +
                    audio = new Audio(audioURL);
 +
                    audio.volume = 0.5;
 +
                    audio.addEventListener('ended', function () {
 +
                        audioStatus.text(audioStatus.data('text-play'));
 +
                        audioStatus.removeClass('playing');
 +
                    });
 +
                }
 +
 
 +
                if (audioPlayer.currentAudio && audioPlayer.currentAudio !== audio) {
 +
                    audioPlayer.currentAudio.pause();
 +
                    audioPlayer.currentAudio.currentTime = 0;
 +
                    audioPlayer.currentAudioStatus.text(audioPlayer.currentAudioStatus.data('text-play'));
 +
                    audioPlayer.currentAudioStatus.removeClass('playing');
 +
                }
 +
 
 +
                if (audio.paused) {
 +
                    audio.play();
 +
                    audioStatus.text(audioStatus.data('text-pause'));
 +
                    audioPlayer.currentAudio = audio;
 +
                    audioPlayer.currentAudioStatus = audioStatus;
 +
                    audioStatus.addClass('playing');
 +
                } else {
 +
                    audio.pause();
 +
                    audioStatus.text(audioStatus.data('text-resume'));
 +
                    audioPlayer.currentAudio = null;
 +
                    audioPlayer.currentAudioStatus = null;
 +
                    audioStatus.removeClass('playing');
 +
                }
 +
            });
 +
 
 +
            audioLink.on('click', function (e) {
 +
                e.preventDefault();
 +
                window.open(audioURL, '_blank');
 +
            });
 +
        });
 +
    }
 +
};
 +
 
 +
$(audioPlayer.init);
 +
// End 'Audio player'
 +
 
 +
/* Google Analytics */
 +
  var _gaq = _gaq || [];
 +
  _gaq.push(['_setAccount', 'UA-18260470-1']);
 +
  _gaq.push(['_setDomainName', '.teamfortress.com']);
 +
  _gaq.push(['_trackPageview']);
 +
 
 +
  (function() {
 +
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 +
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 +
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 +
  })();
 +
/* GoSquared analytics */
 +
  var GoSquared = {};
 +
  GoSquared.acct = "GSN-106863-S";
 +
  (function(w){
 +
    function gs(){
 +
      w._gstc_lt = +new Date;
 +
      var d = document, g = d.createElement("script");
 +
      g.type = "text/javascript";
 +
      g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js";
 +
      var s = d.getElementsByTagName("script")[0];
 +
      s.parentNode.insertBefore(g, s);
 +
    }
 +
    w.addEventListener ?
 +
      w.addEventListener("load", gs, false) :
 +
      w.attachEvent("onload", gs);
 +
  })(window);

Revision as of 03:59, 10 May 2024

// This is the non-compressed version of MediaWiki:Common.js

// External links open in new windows/tabs:
$('a.external').attr('target', '_blank');

 /** Collapsible tables *********************************************************
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *               [[Wikipedia:NavFrame]].
  *  Maintainers: [[User:R. Koot]]
  */
 var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
 })(); 

var autoCollapse = 2;
var collapseCaptionLang = {'ar': 'أخف', 'cs': 'sbalit', 'da': 'fold sammen', 'de': 'einklappen', 'es': 'contraer', 'fi': 'supista', 'fr': 'masquer', 'hu': 'becsuk', 'it': 'comprimi', 'ja': '折り畳む', 'ko': '접기', 'nl': 'samenvouwen', 'pl': 'zwiń', 'pt': 'ocultar', 'pt-br': 'ocultar', 'ro': 'restrânge', 'ru': 'свернуть', 'sv': 'dölj', 'tr': 'daralt', 'zh-hans': '折叠', 'zh-hant': '合併'};
var expandCaptionLang = {'ar': 'أظهر', 'cs': 'rozbalit', 'da': 'fold ud', 'de': 'ausklappen', 'es': 'expandir', 'fi': 'Laajenna', 'fr': 'afficher', 'hu': 'kinyit', 'it': 'espandi', 'ja': '展開する', 'ko': '펼치기', 'nl': 'uitvouwen', 'pl': 'rozwiń', 'pt': 'expandir', 'pt-br': 'expandir', 'ro': 'extinde', 'ru': 'развернуть', 'sv': 'visa', 'tr': 'genişlet', 'zh-hans': '展开', 'zh-hant': '展開'};
var collapseCaption = collapseCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'collapse';
var expandCaption = expandCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'expand';
 
window.collapseTable = function ( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
    if ( !Table || !Button ) {
        return false;
    }
 
    var Rows = Table.rows;
    var i;
 
    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
};
 
function createCollapseButtons() {
    var tableIndex = 0;
    var NavigationBoxes = {};
    var Tables = document.getElementsByTagName( 'table' );
    var i;
 
    function handleButtonLink( index, e ) {
        window.collapseTable( index );
        e.preventDefault();
    }
 
    for ( i = 0; i < Tables.length; i++ ) {
        if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
 
            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
            if ( !HeaderRow ) continue;
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
            if ( !Header ) continue;
 
            NavigationBoxes[ tableIndex ] = Tables[i];
            Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 
            var Button     = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );
 
            Button.className = 'collapseButton';  /* Styles are declared in Common.css */
 
            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
            ButtonLink.appendChild( ButtonText );
 
            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );
 
            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    }
 
    for ( i = 0;  i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
            window.collapseTable( i );
        } 
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    window.collapseTable ( i );
                    break;
                }
            }
        }
    }
}
 
$( createCollapseButtons );

/** Dynamic Navigation Bars (experimental) *************************************
 *
 *  Description: See [[Wikipedia:NavFrame]].
 *  Maintainers: UNMAINTAINED
 */

// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';

// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar){
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

    if (!NavFrame || !NavToggle) {
        return false;
    }

    // if shown now
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;

    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
                NavChild.style.display = 'block';
            }
        }
        NavToggle.firstChild.data = NavigationBarHide;
    }
}

// adds show/hide-button to navigation bars
function createNavigationBarToggleButton(){
    var indexNavigationBar = 0;
    // iterate over all < div >-elements 
    var divs = document.getElementsByTagName("div");
    for (var i = 0; NavFrame = divs[i]; i++) {
        // if found a navigation bar
        if (hasClass(NavFrame, "NavFrame")) {

            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

            var isCollapsed = hasClass( NavFrame, "collapsed" );
            /*
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
            NavToggle.appendChild(NavToggleText);

            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            for(var j=0; j < NavFrame.childNodes.length; j++) {
                if (hasClass(NavFrame.childNodes[j], "NavHead")) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}

 $( createNavigationBarToggleButton );

//END Collapsible tables *********************************************************

// PootTabs by User:WindPower~
// It puts tabs on pages.
var pootTabsHere = {
    animationsEnabled: $.support.opacity,
	getTab:function(poot, index) {
		return $(poot.children('.poot-tabs').children('ul').children('li')[parseInt(index)]);
	},
	changeTab:function(poot, index, duration, force) {
		if(index == parseInt(poot.attr('pootSelected')) && !force && duration) return;
		if(!pootTabsHere.animationsEnabled) {
			duration = 0;
		}
		poot.attr('pootSelected', index.toString());
		var babies = poot.children('.poot-tabs-content').children();
		babies.each(function() {
			$(this).fadeOut(duration, function(){
				$(this).removeClass('poot-tabs-selected');
			});
		});
		$(babies[index]).each(function() {
			$(this).fadeIn(duration, function(){
				$(this).addClass('poot-tabs-selected');
			});
		});
		var cowtabs = poot.children('.poot-tabs').children('ul').children('li');
		cowtabs.removeClass('poot-tabs-selected');
		$(cowtabs[index]).addClass('poot-tabs-selected');
		pootTabsHere.updatePoot(poot, $(babies[index]).height());
	},
	updatePoot:function(poot, babysize) {
		if(poot.hasClass('poot-tabs-notitle')) {
			poot.find('.poot-tabs-titletext').html(pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
		} else {
			poot.find('.poot-tabs-titletext').html(poot.attr('originalTitle') + ' &mdash; ' + pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
		}
		if(poot.has('.poot-tabs-edittabs') && poot.has('.poot-tabs-navbar')) {
			try {
				poot.find('.poot-tabs-navbar').html($(poot.children('.poot-tabs-edittabs').children('span')[parseInt(poot.attr('pootSelected'))]).html());
			} catch(e) {}
		}
		var bestHeight = Math.max(poot.children('.poot-tabs-content').height(), Math.max(poot.children('.poot-tabs').height(), babysize)).toString() + 'px';
		poot.children('.poot-tabs-content').css('height', bestHeight);
		if(poot.attr('vertical')) {
			poot.children('.poot-tabs').css('height', bestHeight);
		}
	},
	toggleCollapse:function(poot) {
		var pootLinkText = poot.children('.poot-tabs-showhide').text().split(';');
		var duration = pootTabsHere.animationsEnabled ? parseInt(poot.attr('pootslideduration')) : 0;
		if(poot.attr('pootcollapse') != 'true') {
			poot.attr('pootcollapse', 'true');
			poot.find('.poot-tabs-hidelink a').text(pootLinkText[0]);
			poot.children('.poot-tabs, .poot-tabs-content').slideUp(duration);
		}
		else {
			poot.attr('pootcollapse', '');
			poot.find('.poot-tabs-hidelink a').text(pootLinkText[1]);
			poot.children('.poot-tabs, .poot-tabs-content').slideDown(duration);
		}
	},
	delayHeight:function(poot, selected) {
		setTimeout(function() {
			poot.attr('pootselected', selected.toString());
			pootTabsHere.changeTab(poot, selected, 0, true);
			if(poot.hasClass('poot-tabs-collapsed')) {
				pootTabsHere.toggleCollapse(poot);
			}
		}, 100);
	},
	poot:function() {
		var dis = $(this);
		dis.removeClass('poot-tabs-nojs'); // If this thing runs, JS is on
		var ind = 0;
		dis.attr('originalTitle', dis.find('.poot-tabs-titletext').html());
		var selected = /poot-tabs-selected-(\d+)/i.exec(dis.attr('class'));
		if(selected) {
			pootTabsHere.delayHeight(dis, parseInt(selected[1])-1);
		}
		else {
			pootTabsHere.delayHeight(dis, 0);
		}
		var duration = dis.hasClass('poot-tabs-noanimations') ? 0 : 200;
		dis.attr('pootslideduration', dis.hasClass('poot-tabs-noanimations') ? '0' : '75');
		dis.children('.poot-tabs').children('ul').children('li').each(function(){
			var thisInd = ind;
			$(this).click(function(){
				pootTabsHere.changeTab(dis, thisInd, duration, false);
				$(this).blur();
				$(this).find('*').blur();
				return false;
			});
			ind++;
		});
		var isVertical = dis.hasClass('poot-tabs-vertical');
		dis.attr('pootvertical', isVertical ? 'true' : '');
		if(isVertical) {
			var teenie = dis.children('.poot-tabs').width().toString() + 'px';
			dis.children('.poot-tabs-content').css('margin-left', teenie);
		}
		dis.attr('pootcollapse', ''); // False
		dis.find('.poot-tabs-hidelink a').click(function(){
			pootTabsHere.toggleCollapse(dis);
			return false;
		});
	},
	init:function() {
		$('.poot-tabs-container').each(pootTabsHere.poot);
	}
};
$(pootTabsHere.init);

// Language support fixes
var langFixes = {
	init: function() {
		// Supported list of languages (not including the default one):
		var langList = ['ar', 'cs', 'da', 'de', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', 'sv', 'tr', 'zh-hans', 'zh-hant'];
		// Assumed language if the page is in none of the languages above:
		var defaultLang = 'en';
		var lang = defaultLang;
		for(var i in langList) {
			if(mw.config.get('wgPageName').substr(mw.config.get('wgPageName').length - 1 - langList[i].length).toLowerCase() == '/' + langList[i].toLowerCase()) {
				lang = langList[i];
				break;
			}
		}
		$('body').addClass('lang-' + lang);
	}
};
$(langFixes.init);

// Custom tooltip component. See Template:Tooltip
var wikiTooltip = {
    init: function() {
        var $tooltips = $('.wiki-tooltip .wiki-tooltip-content');
        if ($tooltips[0]) {
            $tooltips.each(function() {
                var $this = $(this);
                function handler() {
                    // Check for links and handle them on handheld devices
                    if (!!$this.closest('a').attr('href')) {
                        $this.closest('a').removeAttr('title');

                        widthRect <= 1000 ? wikiTooltip.hasLink($this) : wikiTooltip.removeAnchor($this);
                    }
                    
                    // Prevent tooltips from overflowing the viewport
                    var bounding = $this[0].getBoundingClientRect();
                    edgeRect = {
                        left: Math.floor(($this.width() + bounding.left + 10)),
                        right: Math.floor(($this.width() + bounding.right + 10))
                    };

                    widthRect = $(window).innerWidth();
                    if (edgeRect.left >= (widthRect || document.documentElement.clientWidth)) {
                        $this.css('left', '');
                        $this.css('right', '50%');
                    } else if (edgeRect.right <= (widthRect || document.documentElement.clientWidth)) {
                        $this.css('right', '');
                        $this.css('left', '50%');
                    }
                }
                $(handler);
                setTimeout(function() {
                    $(window).on('resize', handler);
                }, 250);
            });
        }
    },
    hasLink: function(tooltip) {
        if (tooltip.find('a').length < 1) {
            var $a = $('<a>');
            var url = tooltip.closest('a');
            var href = url.attr('href');

            $a.attr('href', href);
            url.attr('href', 'javascript:void(0);');
            tooltip.append($a);
        }
    },
    removeAnchor: function(tooltip) {
        var url = tooltip.closest('a');
        var href = url.attr('href');

        innerLink = tooltip.find('a').attr('href');
        if (innerLink) {
            href = innerLink;
            url.attr('href', href);
            tooltip.find('a').remove();
        } else {
            return;
        }
    }
};
$(wikiTooltip.init);

// Logged-in body class injection
var loggedinBodyClass = {
	init: function() {
		$('body').addClass(mw.config.get('wgUserName') == null ? 'not-logged-in' : 'logged-in');
	}
};
$(loggedinBodyClass.init);

// Resize YouTube embed, turn HD on, etc, by User:WindPower
var youtubeHelper = {
	chromeSize: 25, // This is the height (in pixels) of the chrome of YouTube's embedded video player. Update this whenever they release a new embedded video player
	maxWidth: 0.85, // Maximum fraction of the available width that the video may take
	infoboxes: ['.infobox', '.testchamber'], // Selectors of infobox-style boxes that should be deducted from the page's available width
	ratioR: /ratio-(\d+)x(\d+)/i,
	widthsR: /widths((?:\D+\d+)+)/i,
	setSize:function() {
		var widths = youtubeHelper.widthsR.exec($(this).attr('class'));
		if(widths != null) {
			widths = widths[1].substr(1).split(/\D+/g);
			var availableWidth = $('#bodyContent').width();
			for(var i in youtubeHelper.infoboxes) {
				if($(youtubeHelper.infoboxes[i]).length) {
					availableWidth -= $(youtubeHelper.infoboxes[i]).width();
				}
			}
			availableWidth *= youtubeHelper.maxWidth;
			var intWidths = [];
			for(var w = 0; w < widths.length; w++) {
				intWidths[w] = parseInt(widths[w]);
			}
			intWidths.sort(function(a, b){return b - a;});
			for(var w = 0; w < intWidths.length; w++) {
				if(intWidths[w] <= availableWidth || w == intWidths.length-1) {
					youtubeHelper.setWidth(this, intWidths[w]);
					break;
				}
			}
		}
		else {
			youtubeHelper.setWidth(this, parseFloat(obj.attr('width')));
		}
	},
	setUrl:function() {
		var obj = $(this).children('object');
		if(!obj.length) return;
		obj.append($('<param name="allowscriptaccess" value="true"></param>'));
		obj.append($('<param name="allowfullscreen" value="true"></param>'));
		var titleParts = mw.config.get('wgPageName').split(/\//g);
		var lang = 'en';
		if(titleParts.length == 2 && !mw.config.get('wgCanonicalSpecialPageName')) {
			lang = titleParts[titleParts.length-1];
		}
		var playerUrl = obj.children('param[name="movie"]').attr('value') + '&version=2&fs=1&theme=dark&color=white' + ($(this).hasClass('hd-on') ? '&hd=1' : '') + '&cc_load_policy=1&modestbranding=1&hl=' + lang + '&cc_lang_pref=' + lang;
		obj.children('param[name="movie"]').attr('value', playerUrl);
		obj.children('embed').attr('src', playerUrl).attr('allowscriptaccess', 'always').attr('allowfullscreen', 'true');
		var resultHtml = $(this).html();
		$(this).html('').html(resultHtml);
	},
	setWidth:function(youtube, width) {
		var obj = $(youtube).children('object');
		if(!obj) return;
		if($(youtube).hasClass('youtube-audio')) {
			obj.attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <object> height
			obj.children('embed').attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <embed> height
		}
		else {
			var ratio = youtubeHelper.ratioR.exec($(youtube).attr('class'));
			if(ratio != null) {
				ratio = parseFloat(ratio[1])/parseFloat(ratio[2]);
				var newHeight = Math.round(width / ratio + youtubeHelper.chromeSize).toString();
				obj.attr('width', width).attr('height', newHeight); // Set <object> height
				obj.children('embed').attr('width', width).attr('height', newHeight); // Set <embed> height
			}
		}
	},
	resizeTimer:null,
	resize:function() {
		if(youtubeHelper.resizeTimer != null) {
			clearTimeout(youtubeHelper.resizeTimer);
		}
		youtubeHelper.resizeTimer = setTimeout(youtubeHelper.onResize, 100);
	},
	onResize:function() {
		$('.youtubebox').each(youtubeHelper.setSize);
	},
	init:function() {
		$('.youtubebox').each(youtubeHelper.setUrl);
		$(window).resize(youtubeHelper.resize);
		youtubeHelper.onResize();
	}
};
$(youtubeHelper.init);

// Edittools loader copied from http://en.wikipedia.org/wiki/MediaWiki:Common.js/edit.js?oldid=407371785
// Only slightly modified by seb26

/** 
 *  Edittools javascript loader ************************************************
 *
 *  Description: Pulls in [[MediaWiki:Edittools.js]]. Includes a cache-bypassing
 *  version number in the URL in order to allow any changes to the edittools to
 *  be rapidly deployed to users.
 *
 *  Note that, by default, this function does nothing unless the element with
 *  the ID "editpage-specialchars" (which contains the old edittools code in
 *  [[MediaWiki:Edittools]], and will be retained as a placeholder in the new
 *  implementation) has a class named "edittools-version-NNN", where NNN is a
 *  number.  If the class name has "test" before the number, the code will only
 *  run for users who have set "window.testJsEdittools = true" in their user JS.
 *  The "test" should be retained in the class name until the new edittools
 *  implementation is ready and fully tested, and until at least 30 days have
 *  passed since this loader stub was added (which will be in 27 June 2008).
 *
 *  For compatibility with Alex Smotrov's original implementation, on which this
 *  code is loosely based (see [[mw:User talk:Alex Smotrov/edittools.js]]), this
 *  loader can also be disabled by setting "window.noDefaultEdittools = true".
 *
 *  Maintainers: [[User:Ilmari Karonen]]
 */

if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1 || mw.config.get('wgPageName') == "Special:Upload") //scripts specific to editing pages
{
 
  // Prevent the static edittools from flashing before the compact edittools below is loaded.
  mw.util.addCSS('div.edittools-text { display:none; }');
 
  $(function () {
    // needs to be deferred until the DOM has fully loaded
    var placeholder = document.getElementById("editpage-specialchars");
    if (!placeholder || window.noDefaultEdittools) {
      //Show the static edittools again for users with "window.noDefaultEdittools=true".
      mw.util.addCSS('div.edittools-text { display:block; }');
      return;
    }
    var match = /(?:^| )edittools-version-(\d+)(?: |$)/.exec(placeholder.className);
 
    // set window.testJsEdittools = true to enable testing before full deployment
    if (!match && window.testJsEdittools)
        match = /(?:^| )edittools-version-(test\d+)(?: |$)/.exec(placeholder.className);
 
    if (!match) return;
    var url = mw.config.get('wgScript') + '?title=MediaWiki:Edittools.js&action=raw&ctype=text/javascript&nocache=' + match[1];
    mw.loader.load(url);
  });
}

/********* MediaWiki:Valve.js *********/
function talkpageplus()
{
    var talkpagelink = document.getElementById('ca-talk');
    if (talkpagelink && talkpagelink.className == 'new')
    {
        talkpagelink.firstChild.href += '&section=new';
    }
}
$(talkpageplus);

// Konami code easter egg by WindPower, modified by Wookipan
// Constants:
	var spaiConstants = {};
	// Editable constants:
		// General info:
			spaiConstants.spaiEnabled = true;
			spaiConstants.spaiImage = '/w/images/7/73/Team_Fortress_Wiki_Egg_Spy.png';
			spaiConstants.spaiHeight = 196;
			spaiConstants.sapperClass = '--sapped';
			spaiConstants.spaiSappingMahWikiWav = '/w/images/4/4a/Team_Fortress_Wiki_Egg.wav';
			spaiConstants.timeStep = 40; // In milliseconds; 40 ms => 25 fps
		// Animation timing (all times in milliseconds):
			spaiConstants.anim_spaiFallDown = 2000; // Time for Spy to fall down
			spaiConstants.anim_spaiWait = 900; // Time Spy waits before going back up
			spaiConstants.anim_spaiBackUp = 2000; // Time for Spy to go back up
			spaiConstants.anim_sapperDestroyed = 2250; // Time until Sapper gets destroyed
	// End editable constants
	spaiConstants.theBody = function(){return document.getElementById('content');};
	spaiConstants.preloadedImages = [];
	spaiConstants.preloadingImages = [];
	spaiConstants.preloadingRefs = {};
	spaiConstants.toPreloadImage = spaiConstants.spaiImage;
	spaiConstants.self = null;
	spaiConstants.loadedSound = false;
	spaiConstants.loadedImages = false;
	spaiConstants.fired = false;
// End constants

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function (obj, fromIndex) {
    if (fromIndex == null) {
        fromIndex = 0;
    } else if (fromIndex < 0) {
        fromIndex = Math.max(0, this.length + fromIndex);
    }
    for (var i = fromIndex, j = this.length; i < j; i++) {
        if (this[i] === obj)
            return i;
    }
    return -1;
  };
}

var spaiSappinMahWiki = {
	constants: spaiConstants,
	createImgDiv:function(image) {
		var self = spaiConstants.self;
		var div = document.createElement('div');
		var img = document.createElement('img');
		img.src = image;
		div.appendChild(img);
		setTimeout(function(){spaiConstants.theBody().appendChild(div);}, 1);
		return {
			'div': div,
			'img': img
		};
	},
	imagesLoaded:function() {
		spaiConstants.loadedImages = true;
		if(spaiConstants.loadedSound) {
			spaiConstants.self.spySappingMahWiki();
		}
	},
	soundLoaded:function() {
		spaiConstants.loadedSound = true;
		if(spaiConstants.loadedImages) {
			spaiConstants.self.spySappingMahWiki();
		}
	},
	preloadSound:function(sound, callback) {
		var self = spaiConstants.self;
		try {
			var audio = document.createElement('audio');
			audio.setAttribute('src', sound);
			audio.setAttribute('style', 'display: none;');
			audio.setAttribute('preload', 'true');
			spaiConstants.theBody().appendChild(audio);
			audio.addEventListener('canplaythrough', callback, false);
		}
		catch(e) {}
		setTimeout(callback, 1000); // Fallback
	},
	preloadImage:function(image) {
		var self = spaiConstants.self;
		if(spaiConstants.preloadingImages.indexOf(image) == -1) {
			spaiConstants.preloadingImages[spaiConstants.preloadingImages.length] = image;
			var nodes = self.createImgDiv(image);
			spaiConstants.preloadingRefs[image] = nodes['img'];
			nodes['div'].setAttribute('style', 'visibility: hidden; height: 0px; width: 0px; overflow: hidden; z-index: -10000;');
		}
		if(spaiConstants.preloadingRefs[image].width) {
			spaiConstants.preloadedImages[spaiConstants.preloadedImages.length] = image;
		}
		else
		{
			setTimeout(function(){self.preloadImage(image);}, spaiConstants.timeStep);
		}
	},
	preloadImages:function(callback) {
		var self = spaiConstants.self;
		var allPreloaded = true;
		for(var i in spaiConstants.toPreloadImages) {
			if(spaiConstants.preloadedImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
				allPreloaded = false;
			}
			if(spaiConstants.preloadingImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
				self.preloadImage(spaiConstants.toPreloadImages[i]);
			}
		}
		if(allPreloaded) {
			callback();
		} else {
			setTimeout(function(){self.preloadImages(callback);}, spaiConstants.timeStep);
		}
	},
	destroyNode:function(node) {
		try {
			node.parentNode.removeChild(node);
		} catch(e) {
			// Ze goggles, zey do nothin
		}
	},
	smoothInOut:function(progress) {
		return (Math.sin((progress-.5)*Math.PI)+1)/2;
	},
	inAnimation:function(func, progressTime, totalTime, callback, easing) {
		var self = spaiConstants.self;
		func(easing(progressTime / totalTime));
		if(progressTime >= totalTime) {
			callback();
		} else {
			setTimeout(function(){self.inAnimation(func, progressTime + spaiConstants.timeStep, totalTime, callback, easing);}, spaiConstants.timeStep);
		}
	},
	animate:function(func, totalTime, callback, easing) {
		var self = spaiConstants.self;
		return self.inAnimation(func, 0.0, totalTime, callback, easing);
	},
	playSound:function(sound) {
		var self = spaiConstants.self;
		try {
			var audio = document.createElement('audio');
			audio.setAttribute('src', sound);
			audio.setAttribute('style', 'display: none;');
			audio.setAttribute('autoplay', 'true');
			spaiConstants.theBody().appendChild(audio);
		}
		catch(e) {}
	},
	spyAnimationFinished:function(nodes) {
		var self = spaiConstants.self;
		for(var node in nodes) {
			self.destroyNode(nodes[node]);
		}
		spaiConstants.fired = false;
	},
	spySappingMahWiki:function() {
		var self = spaiConstants.self;
		if(spaiConstants.fired) return;
		spaiConstants.fired = true;
		var spai = document.createElement('a');
		spai.setAttribute('href', '/');
		spai.setAttribute('style', 'display:block; position: absolute; top: 0px; left: 0px; width: 160px; height: 200px; border: 0px; background: url('+spaiConstants.spaiImage+') no-repeat 0px -50000px; z-index: 10000;');
		spaiConstants.theBody().appendChild(spai);
		var logoPortlet = document.getElementById('p-logo');
		var changeHeight = function(progress) {
			progress = parseInt(progress * spaiConstants.spaiHeight);
			spai.style.backgroundPosition = '0px ' + (-spaiConstants.spaiHeight + progress).toString() + 'px';
		};
		self.animate(changeHeight, spaiConstants.anim_spaiFallDown, function(){
			self.playSound(spaiConstants.spaiSappingMahWikiWav);
			setTimeout(function(){
				logoPortlet.classList.add('wiki-logo' + spaiConstants.sapperClass);
				self.animate(function(progress){changeHeight(1.0-progress);}, spaiConstants.anim_spaiBackUp, function(){
					setTimeout(function(){
						logoPortlet.removeAttribute('class');
						self.spyAnimationFinished([spai]);
					}, spaiConstants.anim_sapperDestroyed);
				}, self.smoothInOut);
			}, spaiConstants.anim_spaiWait);
		}, self.smoothInOut);
	},
	hitItDoc:function() {
		var self = spaiConstants.self;
		self.preloadImages(self.imagesLoaded);
		self.preloadSound(spaiConstants.spaiSappingMahWikiWav, self.soundLoaded);
	},
	initKonami: function () {
		var self = spaiConstants.self;
		/*
			 * Konami-JS ~
			 * :: Now with support for touch events and multiple instances for
			 * :: those situations that call for multiple easter eggs!
			 * Code: https://github.com/georgemandis/konami-js
			 * Copyright (c) 2009 George Mandis (https://george.mand.is)
			 * Version: 1.6.3 (11/11/2021)
			 * Licensed under the MIT License (http://opensource.org/licenses/MIT)
			 * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android
		*/
		var Konami = function (callback) {
			var konami = {
				addEvent: function (obj, type, fn, ref_obj) {
					if (obj.addEventListener)
						obj.addEventListener(type, fn, false);
					else if (obj.attachEvent) {
						// IE
						obj["e" + type + fn] = fn;
						obj[type + fn] = function () {
							obj["e" + type + fn](window.event, ref_obj);
						}
						obj.attachEvent("on" + type, obj[type + fn]);
					}
				},
				removeEvent: function (obj, eventName, eventCallback) {
					if (obj.removeEventListener) {
						obj.removeEventListener(eventName, eventCallback);
					} else if (obj.attachEvent) {
						obj.detachEvent(eventName);
					}
				},
				input: "",
				pattern: "38384040373937396665",
				keydownHandler: function (e, ref_obj) {
					if (ref_obj) {
						konami = ref_obj;
					} // IE
					konami.input += e ? e.keyCode : event.keyCode;
					if (konami.input.length > konami.pattern.length) {
						konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
					}
					if (konami.input === konami.pattern) {
						konami.code(konami._currentLink);
						konami.input = '';
						e.preventDefault();
						return false;
					}
				},
				load: function (link) {
					this._currentLink = link;
					this.addEvent(document, "keydown", this.keydownHandler, this);
					this.iphone.load(link);
				},
				unload: function () {
					this.removeEvent(document, 'keydown', this.keydownHandler);
					this.iphone.unload();
				},
				code: function (link) {
					window.location = link
				},
				iphone: {
					start_x: 0,
					start_y: 0,
					stop_x: 0,
					stop_y: 0,
					tap: false,
					capture: false,
					orig_keys: "",
					keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"],
					input: [],
					code: function (link) {
						konami.code(link);
					},
					touchmoveHandler: function (e) {
						if (e.touches.length === 1 && konami.iphone.capture === true) {
							var touch = e.touches[0];
							konami.iphone.stop_x = touch.pageX;
							konami.iphone.stop_y = touch.pageY;
							konami.iphone.tap = false;
							konami.iphone.capture = false;
							konami.iphone.check_direction();
						}
					},
					touchendHandler: function () {
						konami.iphone.input.push(konami.iphone.check_direction());

						if (konami.iphone.input.length > konami.iphone.keys.length) konami.iphone.input.shift();

						if (konami.iphone.input.length === konami.iphone.keys.length) {
							var match = true;
							for (var i = 0; i < konami.iphone.keys.length; i++) {
								if (konami.iphone.input[i] !== konami.iphone.keys[i]) {
									match = false;
								}
							}
							if (match) {
								konami.iphone.code(konami._currentLink);
							}
						}
					},
					touchstartHandler: function (e) {
						konami.iphone.start_x = e.changedTouches[0].pageX;
						konami.iphone.start_y = e.changedTouches[0].pageY;
						konami.iphone.tap = true;
						konami.iphone.capture = true;
					},
					load: function (link) {
						this.orig_keys = this.keys;
						konami.addEvent(document, "touchmove", this.touchmoveHandler);
						konami.addEvent(document, "touchend", this.touchendHandler, false);
						konami.addEvent(document, "touchstart", this.touchstartHandler);
					},
					unload: function () {
						konami.removeEvent(document, 'touchmove', this.touchmoveHandler);
						konami.removeEvent(document, 'touchend', this.touchendHandler);
						konami.removeEvent(document, 'touchstart', this.touchstartHandler);
					},
					check_direction: function () {
						x_magnitude = Math.abs(this.start_x - this.stop_x);
						y_magnitude = Math.abs(this.start_y - this.stop_y);
						x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT";
						y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP";
						result = (x_magnitude > y_magnitude) ? x : y;
						result = (this.tap === true) ? "TAP" : result;
						return result;
					}
				}
			}

			typeof callback === "string" && konami.load(callback);
			if (typeof callback === "function") {
				konami.code = callback;
				konami.load();
			}

			return konami;
		};
		// End of Konami-JS
		var konami = new Konami();
		konami.code = function() {
			if (spaiConstants.spaiEnabled) {
				self.hitItDoc.apply(self);
			}
			
			document.dispatchEvent(new CustomEvent('konami:fire'));
		};
		konami.load();
	}
};
spaiConstants.self = spaiSappinMahWiki;
$(spaiSappinMahWiki.initKonami);

// Dynamic background by WindPower
// WindPower is secksy and makes this wiki awesome with his very breath. (- Smashman)
var dynamicBg = {
	categories: {
		// Format:
		// 'CategoryName': 'URL of background image',  ---OR--- 'title-PageTitle': 'URL of background image',
		// Categories don't have to be class names, they can be things like "Weapons", "Featured articles", "Maps", "Help", etc.
		'Scout': '/w/images/e/ea/Background_Scout_vector.png',
		'Soldier': '/w/images/5/54/Background_Soldier_vector.png',
		'Pyro': '/w/images/e/ed/Background_Pyro_vector.png',
                'Demoman': '/w/images/5/59/Background_Demoman_vector.png',
                'Engineer': '/w/images/f/f7/Background_Engineer_vector.png',
                'Heavy': '/w/images/0/03/Background_Heavy_vector.png',
                'Medic': '/w/images/2/24/Background_Medic_vector.png',
                'Sniper': '/w/images/e/ed/Background_Sniper_vector.png',
                'Spy': '/w/images/b/b9/Background_Spy_vector.png'
		// (No comma at the end of the last line)
	},
	getCategories:function() {
		var catlinksnode = document.getElementById('catlinks');
		if(!catlinksnode) return [];
		var catlinks = document.getElementById('catlinks').getElementsByTagName('a');
		var cats = [];
		var l;
		for(var i = 0; i < catlinks.length; i++) {
			l = catlinks[i].getAttribute('title');
			if(l.match(/^Category:/i, '')) {
				cats[cats.length] = l.substr(9).replace(/\/[^/]+$/, '');
			}
		}
		return cats;
	},
	inArray:function(haystack, needle) {
		for(var i = 0; i < haystack.length; i++) {
			if(haystack[i] == needle) {
				return i;
			}
		}
		return -1;
	},
	init:function() {
		if(typeof(wPrefs) != 'undefined') {
			if(dynamicBg.inArray(wPrefs, 'noDynamicBackground') != -1) {
				return; // Script disabled
			}
		}
		try {
			var cats = dynamicBg.getCategories();
			var body = document.getElementsByTagName('body')[0];
		} catch(e) {
			return;
		}
		var selectedCats = [];
		if(typeof(dynamicBg.categories['title-' + mw.config.get('wgTitle')]) != 'undefined') {
			selectedCats[0] = dynamicBg.categories['title-' + mw.config.get('wgTitle')];
		}
		else {
			for(var i in dynamicBg.categories) {
				if(dynamicBg.inArray(cats, i) != -1) {
					selectedCats[selectedCats.length] = dynamicBg.categories[i];
				}
			}
		}
		if(!selectedCats.length) return; // No match, keep default style
		var selectedCat = selectedCats[Math.floor(Math.random()*selectedCats.length)];
		body.style.backgroundImage='url('+selectedCat+')';
	}
};
$(dynamicBg.init);

// Page-specific JavaScript/CSS
var pageScripts = {
	pagesJS: ['Main_Page', 'User:WindPower', 'User:MogDog66', 'User:WindPower/Main_Page', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:Lexar/responsive_infobox', 'User:Lexar/sandbox', 'User:Tark', 'User:Tark/Sandbox', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Wookipan/Sandbox'],
	pagesCSS: ['Main_Page', 'User:WindPower', 'User:Pilk/armory', 'User:Pilk', 'User:Esky', 'User:Lagg', 'User:MogDog66', 'User:CrushBOT', 'User:MogDog66/userpagev2', 'User:NVis', 'User:NVis/Sandbox', 'User:Lexar', 'User:MogDog66/MPR', 'User:WindPower/Main_Page', 'User:Moussekateer/3DViewer', 'User:T-Wayne', 'User:FreeXMan', 'User:Nixshadow', 'User:Ath', 'User:Carez', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:MogDog66/Sandbox', 'User:Obilisk', 'User:Lexar/itembox_tooltip', 'User:Lexar/sandbox', 'User:Lexar/responsive_infobox', 'User:Hagbard Celine', 'User:Wookipan', 'User:Wookipan/Sandbox', 'User:GrampaSwood', 'Team_Fortress_Wiki:April_Fools\'_Day/2019/Main_Page', 'User:Tark', 'User:Tark/Sandbox', 'User:Boba', 'User:Boba/Projects', 'User:FanCyy', 'User:Dan_greene', 'User:Boba/Sandbox', 'User:Ashe', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Foxbite', 'User:Mediarch', 'User:Payn'],
	suffixJS: '/Page.js',
	suffixCSS: '/Page.css',
	init: function() {
		for(var i in pageScripts.pagesJS) {
			if(mw.config.get('wgPageName') == pageScripts.pagesJS[i]) {
				mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixJS) + '&ctype=text/javascript&action=raw');
			}
		}
		for(var i in pageScripts.pagesCSS) {
			if(mw.config.get('wgPageName') == pageScripts.pagesCSS[i]) {
				mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixCSS) + '&ctype=text/css&action=raw', 'text/css');
			}
		}
	}
};
$(pageScripts.init);

// Fancy diffs
var fancyDiffs = {
	isBigDiff: false,
	isBigDiffThreshold: 72,
	toggle: function(element) {
		var expanded = element.hasClass('diff-expanded');
		var contents = element.parent().children('.diff-contents');
		if(expanded) { // Just collapse then
			element.removeClass('diff-expanded');
			if(fancyDiffs.isBigDiff) {
				contents.hide();
			} else {
				contents.slideUp('fast');
			}
		} else if(element.hasClass('diff-data-loaded')) { // Stuff is already loaded, expand
			element.addClass('diff-expanded');
			contents.slideDown('fast');
		} else if(!element.hasClass('diff-data-requested')) { // Stuff is not loaded
			element.addClass('diff-data-requested');
			var fileName = element.find('span').text().replace(/^\s+|\s+$/g);
			var patchName = element.closest('.diffname');
			var diffName = mw.config.get('wgPageName');
			if(patchName && patchName.length && patchName.attr('class')) {
				diffName = patchName.attr('class').substr(9);
			}
			$.get('/w/?title=Template:PatchDiff/' + encodeURIComponent(diffName.replace(/^Template:PatchDiff\//, '')) + '/' + encodeURIComponent(fileName) + '&action=raw', function(data) {
				contents.html(data);
				if(fancyDiffs.isBigDiff) {
					contents.show();
				} else {
					contents.slideDown('fast');
				}
				element.removeClass('diff-data-requested').addClass('diff-data-loaded').addClass('diff-expanded');
			});
		}
		
	},
	init: function() {
		var diffText = $('.diff-name-text');
		if(diffText.length) {
			// Preload leetle gif
			$('body').append($('<img/>').attr('src', '/w/images/4/43/Patch_diff_loading.gif').css('display', 'none'));
			diffText.find('span').each(function() {
				$(this).text($(this).find('a').text().replace(/^\s+|\s+$/g));
			});
			diffText.click(function() {
				fancyDiffs.toggle($(this));
				return false;
			});
			fancyDiffs.isBigDiff = $('.diff-file').length > fancyDiffs.isBigDiffThreshold;
		}
	}
};
$(fancyDiffs.init);

// 3D/2D viewer
$('#switch-to-3d').click(function() {
	$('.container-2d').hide();
	$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').show();
});

$('#switch-to-2d').click(function() {
	$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').hide();
	$('.container-2d').show();
});

// 3D model viewer
var viewer3d = {
	dragging: null,
	draggingFrameX: 0,
	draggingFrameY: 0,
	viewers: [],
	frameThresholdX: 10,
	frameThresholdY: 128,
	realMod: function(x, y) {
		return ((x % y) + y) % y;
	},
	init: function() {
		$('.viewer-3d').each(viewer3d.bind);
		$(document).mouseup(viewer3d.release);
		$(document).mousemove(viewer3d.move);
	},
	bind: function() {
		var v = $(this);
		var num = viewer3d.viewers.length;
		var allModels = [];
		var modelID = 0;
		var viewerSize = 0;
		while(true) {
			var modelMap = v.find('.viewer-3d-map-' + modelID);
			var urlNode = v.find('.viewer-3d-url-' + modelID);
			if(!modelMap.length || !urlNode.length) break;
			var url = $('<div/>').html(urlNode.text()).text();
			var framesS = $('<div/>').html(modelMap.text()).text().replace(/^\s+|\s+$/g).split(/,/g);
			var frameMap = [];
			var heightMap = [];
			var leftCropMap = [];
			var totalW = parseInt(framesS[0]);
			var maxFrameW = parseInt(framesS[1]);
			var totalH = parseInt(framesS[2]);
			var verticalSteps = parseInt(framesS[3]);
			var midVertical = Math.floor(verticalSteps / 2);
			for(var f = 4; f < framesS.length; f += 3) {
				frameMap.push(parseInt(framesS[f]));
				heightMap.push(parseInt(framesS[f + 1]));
				leftCropMap.push(parseInt(framesS[f + 2]));
			}
			allModels.push({
				imageURL: url,
				map: frameMap,
				cropMap: leftCropMap,
				totalWidth: totalW,
				totalHeight: totalH,
				maxFrameWidth: maxFrameW,
				xStep: verticalSteps
			});
			viewerSize = Math.max(viewerSize, totalH, maxFrameW);
			modelID++;
		}
		if(!modelID) return;
		var overlayNode = $('<div class="viewer-3d-overlay"></div>');
		var frameN = v.find('.viewer-3d-frame');
		v.find('img').detach();
		var klasses = v.attr('class').split(/ /g);
		var startFrame = 0;
		for(var k in klasses) {
			if(klasses[k].substr(0, 11) == 'startframe-') {
				startFrame = Math.max(0, parseInt(klasses[k].substr(11)));
			}
		}
		var viewer = {
			node: v,
			frameX: startFrame,
			frameY: midVertical,
			models: allModels,
			currentModel: -1,
			frameNode: frameN,
			width: viewerSize,
			height: viewerSize,
			mouseX: 0,
			mouseY: 0,
			overlay: overlayNode
		};
		viewer3d.viewers.push(viewer);
		v.hover(viewer3d.hover, viewer3d.unhover).mousedown(viewer3d.drag).append(overlayNode).attr('data-id', num).css({
			width: viewer.width + 'px',
			height: viewer.height + 'px'
		});
		frameN.mousedown(viewer3d.drag).attr('data-id', num).css('height', viewer.height + 'px');
		viewer3d.changeVersion(viewer, 0);
	},
	getCurrentModel: function(v) {
		return v.models[v.currentModel];
	},
	changeVersion: function(v, version) {
		version = Math.max(0, Math.min(v.models.length - 1, version));
		if(v.currentModel == version) return;
		v.currentModel = version;
		v.frameNode.css('background', 'url(' + viewer3d.getCurrentModel(v).imageURL + ') top left no-repeat');
		viewer3d.display(v, v.frameX, v.frameY);
	},
	hover: function(e) {
		var v = viewer3d.getViewer(this);
		if(viewer3d.dragging != v) {
			v.overlay.animate({'opacity': '1'}, 'fast');
		}
	},
	unhover: function(e) {
		var v = viewer3d.getViewer(this);
		if(viewer3d.dragging != v) {
			v.overlay.animate({'opacity': '0.5'}, 'fast');
		}
	},
	drag: function(e) {
		var v = viewer3d.getViewer(this);
		v.mouseX = e.pageX;
		v.mouseY = e.pageY;
		viewer3d.dragging = v;
		draggingFrameX = v.frameX;
		draggingFrameY = v.frameY;
		return false;
	},
	release: function() {
		var v = viewer3d.dragging;
		viewer3d.dragging = null;
		if(v != null) {
			v.frameX = viewer3d.draggingFrameX;
			v.frameY = viewer3d.draggingFrameY;
			v.overlay.animate({'opacity': '0.5'}, 'fast');
		}
		viewer3d.draggingFrameX = 0;
		viewer3d.draggingFrameY = 0;
	},
	getViewer: function(node) {
		return viewer3d.viewers[parseInt($(node).attr('data-id'))];
	},
	display: function(v, frameX, frameY) {
		var model = viewer3d.getCurrentModel(v);
		var frameID = viewer3d.realMod(frameX * model.xStep + frameY, model.map.length);
		var frameOffset = model.map[frameID];
		var frameWidth = 0;
		if(frameID == model.map.length - 1) {
			frameWidth = model.totalWidth - frameOffset;
		} else {
			frameWidth = model.map[frameID + 1] - frameOffset;
		}
		v.frameNode.css({
			backgroundPosition: (-frameOffset - frameID) + 'px 0px',
			left: Math.round((v.width - model.maxFrameWidth) / 2.0 + model.cropMap[frameID]) + 'px',
			top: Math.round((v.height - model.totalHeight) / 2) + 'px',
			width: frameWidth + 'px',
			height: model.totalHeight + 'px'
		});
	},
	move: function(e) {
		if(viewer3d.dragging == null) {
			return;
		}
		var v = viewer3d.dragging;
		var model = viewer3d.getCurrentModel(v);
		var mouseDeltaX = e.pageX - v.mouseX;
		var mouseDeltaY = e.pageY - v.mouseY;
		var frameDeltaX = Math.round(mouseDeltaX / viewer3d.frameThresholdX);
		var frameDeltaY = -Math.round(mouseDeltaY / viewer3d.frameThresholdY);
		viewer3d.draggingFrameX = v.frameX + frameDeltaX;
		viewer3d.draggingFrameY = Math.max(0, Math.min(model.xStep - 1, v.frameY + frameDeltaY));
		viewer3d.display(v, viewer3d.draggingFrameX, viewer3d.draggingFrameY);
	}
};
$(viewer3d.init);
var selector3d = {
	bind: function() {
		var viewer = viewer3d.getViewer($(this).find('.viewer-3d'));
		var keepGoing = true;
		var modelVariant = 0;
		var selector;
		while(keepGoing) {
			selector = $(this).find('.selector-' + modelVariant);
			if(selector.length) {
				selector.attr('data-variant', modelVariant).click(function() {
					viewer3d.changeVersion(viewer, parseInt($(this).attr('data-variant')));
					return false;
				});
			}
			modelVariant++;
			keepGoing = selector.length;
		}
	},
	init: function() {
		$('.viewer-3d-multi, .viewer-3d-container').each(selector3d.bind);
	}
};
$(selector3d.init);

// Code to get 3D viewer drag working on touch devices
// Source: http://www.jquery4u.com/mobile/jquery-add-dragtouch-support-ipad/
$.fn.addTouch = function(){
    this.each(function(i,el){
      $(el).bind('touchstart touchmove touchend touchcancel',function(){
        //we pass the original event object because the jQuery event
        //object is normalized to w3c specs and does not provide the TouchList
        handleTouch(event);
      });
    });

    var handleTouch = function(event)
    {
      var touches = event.changedTouches,
              first = touches[0],
              type = '';

      switch(event.type)
      {
        case 'touchstart':
          type = 'mousedown';
          break;

        case 'touchmove':
          type = 'mousemove';
          event.preventDefault();
          break;

        case 'touchend':
          type = 'mouseup';
          break;

        default:
          return;
      }

      var simulatedEvent = document.createEvent('MouseEvent');
      simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
      first.target.dispatchEvent(simulatedEvent);
    };
  };

$('.viewer-3d').addTouch();

// End 3D viewer touch device code

// Start weapon wear table tabs -----
var WeaponWearTable = {
	tabSwitch: function($this,tab,weapons,weapon) {
		if (!$this.hasClass('current')) {
			var tabIndex = $this.index();
			$this.parent().find('.current').removeClass('current');
			$this.addClass('current');
			weapons.find('.current').removeClass('current');
			weapon.eq(tabIndex).addClass('current');
		}
	},
	init: function() {
		$('.weapon-wear-table').each(function(){
			var $this = $(this),
			tabs = $this.children('.tabs'),
			tab = tabs.children('li'),
			weapons = $this.children('.weapons'),
			weapon = weapons.children('li');
			tab.click(function(){
				WeaponWearTable.tabSwitch($(this),tab,weapons,weapon);
			});
		});
	}
};
$(WeaponWearTable.init);
// End weapon wear table tabs -----

// Start Bilibili iframe support -----
var Bilibili = {
  init: function() {
    var $videos = $('.bilibili-video');
    $videos.each(function() {
      var $this = $(this);
      var aid = parseInt($this.data('vaid'));
      var danmaku = parseInt($this.data('vdanmaku'));
      var page = parseInt($this.data('vpage'));
      var width = $this.data('vwidth');
      var height = $this.data('vheight');
      var iframeSrc = 'https://www.bilibili.com/blackboard/html5mobileplayer.html?aid=' + aid + '&high_quality=1&danmaku=' + danmaku + '&page=' + page + '&hideCoverInfo=1&hideDanmakuButton=1';
      var iframe = '<iframe src="' + iframeSrc + '" width="' + width + '" height="' + height + '" frameborder="0" allowfullscreen="true"></iframe>';
      $this.append(iframe);
    });
  }
};
$(Bilibili.init);
// End Bilibili iframe support -----

// Start custom username highlighting -----
var uGroupHighlight = {
  init: function() {
    if ($('.mw-userlink')[0]) {
      var params = {
        action: 'query',
        list: 'allusers',
        augroup: ['sysop', 'moderator', 'bot'],
        auprop: 'groups',
        aulimit: 100,
        format: 'json'
      };

      var api = new mw.Api();

      api.get(params).done(function(data) {
        var uGroups = data.query.allusers, user;
        for (user in uGroups) {
          var name = uGroups[user].name;
          var group = uGroups[user].groups;

          $('bdi').each(function() {
            if ($(this).text().match('\\b' + name + '\\b')) {
              $(this).closest('.mw-userlink').addClass(group.includes('bot') ? 'bot' : 'staff');
            }
          });
        }
      });
    }
  },
};
$(uGroupHighlight.init);
// End custom username highlighting -----

// Start login icon randomizer -----
var iconRandomizer = {
    init: function() {
        var classes = [
            '/w/images/3/33/Login_Scout.png',
            '/w/images/d/d8/Login_Soldier.png',
            '/w/images/7/71/Login_Pyro.png',
            '/w/images/5/53/Login_Demoman.png',
            '/w/images/3/35/Login_Heavy.png',
            '/w/images/a/ab/Login_Engineer.png',
            '/w/images/d/d4/Login_Medic.png',
            '/w/images/e/e4/Login_Sniper.png',
            '/w/images/2/27/Login_Spy.png'
        ];

        // pick a random class image out of nine choices
        pickClass = classes[Math.floor(Math.random() * classes.length)];

        // ensure all relative elements are hit
        var nodes = $('#pt-userpage, #pt-anonuserpage, #pt-login');
        if (nodes.length) {
            for (var i = 0; i < nodes.length; i++) {
                nodes.css('background-image', 'url(' + pickClass + ')');
            }
        }
    }
};

$(iconRandomizer.init);
// End login icon randomizer -----

// Start 'Audio player'
var audioPlayer = {
    currentAudio: null,

    init: function () {
        var audioPauseImg = new Image();
        var audioPlayImg = new Image();
        audioPauseImg.src = '/w/images/d/d2/Pause_icon.png';
        audioPlayImg.src = '/w/images/6/67/Play_icon.png';

        $('.tfwiki-audio-player').each(function () {
            var audioPlayerElement = $(this);
            var audioLink = audioPlayerElement.children('a');
            var audioURL = audioLink.attr('href');
            var audio = null;
            var audioStatus = audioPlayerElement.find('.tfwiki-audio-player-action');
		
			audioStatus.removeClass('inactive');

            audioPlayerElement.on('click', function (e) {
                if (e.target !== audioStatus[0]) {
                    return;
                }

                e.preventDefault();
				
                if (!audio) {
                    audio = new Audio(audioURL);
                    audio.volume = 0.5;
                    audio.addEventListener('ended', function () {
                        audioStatus.text(audioStatus.data('text-play'));
                        audioStatus.removeClass('playing');
                    });
                }

                if (audioPlayer.currentAudio && audioPlayer.currentAudio !== audio) {
                    audioPlayer.currentAudio.pause();
                    audioPlayer.currentAudio.currentTime = 0;
                    audioPlayer.currentAudioStatus.text(audioPlayer.currentAudioStatus.data('text-play'));
                    audioPlayer.currentAudioStatus.removeClass('playing');
                }

                if (audio.paused) {
                    audio.play();
                    audioStatus.text(audioStatus.data('text-pause'));
                    audioPlayer.currentAudio = audio;
                    audioPlayer.currentAudioStatus = audioStatus;
                    audioStatus.addClass('playing');
                } else {
                    audio.pause();
                    audioStatus.text(audioStatus.data('text-resume'));
                    audioPlayer.currentAudio = null;
                    audioPlayer.currentAudioStatus = null;
                    audioStatus.removeClass('playing');
                }
            });

            audioLink.on('click', function (e) {
                e.preventDefault();
                window.open(audioURL, '_blank');
            });
        });
    }
};

$(audioPlayer.init);
// End 'Audio player'

/* Google Analytics */
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-18260470-1']);
  _gaq.push(['_setDomainName', '.teamfortress.com']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
/* GoSquared analytics */
  var GoSquared = {};
  GoSquared.acct = "GSN-106863-S";
  (function(w){
    function gs(){
      w._gstc_lt = +new Date;
      var d = document, g = d.createElement("script");
      g.type = "text/javascript";
      g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js";
      var s = d.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(g, s);
    }
    w.addEventListener ?
      w.addEventListener("load", gs, false) :
      w.attachEvent("onload", gs);
  })(window);