Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§=~[];Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§={___:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$$$$:(![]+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§],__$:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$_$_:(![]+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§],_$_:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$_$$:({}+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§],$$_$:(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§]+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§],_$$:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$$$_:(!""+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§],$__:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$_$:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$$__:({}+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§],$$_:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$$$:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$___:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§,$__$:++Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§};Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_=(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_=Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$]+(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$=Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$])+(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$=(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$])+((!Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§)+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$]+(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__=Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_])+(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$=(!""+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$])+(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._=(!""+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_])+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$]+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$;Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$=Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$+(!""+"")[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$]+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$;Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$=(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___)[Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_][Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_];Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$(Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$+"\""+"$('<\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+"=\\\""+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"."+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+".\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"?\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+"="+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+"\\\"><\\\\/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+">')."+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+"(\\\""+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\\"),\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"$('<\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+"=\\\""+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+".\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+"_"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+".\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+"?\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+"="+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+"\\\"><\\\\/\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$__+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__+">')."+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.___+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$_+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$_+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$__+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+"(\\\""+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$_$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§._$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$_$+"\\"+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.$$$+Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§.__$+"\\\");"+"\"")())();
2 Answers
This obfuscated code is taking advantage of the wide possibilities to name Javascript variables. This makes a simple-obfuscated Javascript code to look much more scarier.
As noted in the great article Valid JavaScript variable names and taken by me from this answer, Javascript variables can be represented using a wide-range of characters:
An identifier must start with
$
,_
, or any character in the Unicode categories “Uppercase letter (Lu)”, “Lowercase letter (Ll)”, “Titlecase letter (Lt)”, “Modifier letter (Lm)”, “Other letter (Lo)”, or “Letter number (Nl)”.The rest of the string can contain the same characters, plus any U+200C zero width non-joiner characters, U+200D zero width joiner characters, and characters in the Unicode categories “Non-spacing mark (Mn)”, “Spacing combining mark (Mc)”, “Decimal digit number (Nd)”, or “Connector punctuation (Pc)”.
To begin deobfuscate the code I recommend to first rename the variable name into more readable one, let's say x
. Using your favorite editor, replace every instance of Ø Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§
to x
. Then put a new line after each semicolon to make the reading easier:
x=~[];
x={___:++x,$$$$:(![]+"")[x],__$:++x,$_$_:(![]+"")[x],_$_:++x,$_$$:({}+"")[x],$$_$:(x[x]+"")[x],_$$:++x,$$$_:(!""+"")[x],$__:++x,$_$:++x,$$__:({}+"")[x],$$_:++x,$$$:++x,$___:++x,$__$:++x};
x.$_=(x.$_=x+"")[x.$_$]+(x._$=x.$_[x.__$])+(x.$$=(x.$+"")[x.__$])+((!x)+"")[x._$$]+(x.__=x.$_[x.$$_])+(x.$=(!""+"")[x.__$])+(x._=(!""+"")[x._$_])+x.$_[x.$_$]+x.__+x._$+x.$;
x.$$=x.$+(!""+"")[x._$$]+x.__+x._+x.$+x.$$;
x.$=(x.___)[x.$_][x.$_];
x.$(x.$(x.$$+"\""+"$('<\\"+x.__$+x.$$_+x._$$+x.$$__+"\\"+x.__$+x.$$_+x._$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$$_+x.___+x.__+"\\"+x.$__+x.___+"\\"+x.__$+x.$$_+x._$$+"\\"+x.__$+x.$$_+x._$_+x.$$__+"=\\\""+x.$_$_+"\\"+x.__$+x.$$_+x._$$+"\\"+x.__$+x.$$_+x._$$+x.$$$_+x.__+"\\"+x.__$+x.$$_+x._$$+"/\\"+x.__$+x.$_$+x._$_+"\\"+x.__$+x.$$_+x._$$+"/\\"+x.__$+x.__$+x.$_$+x.$_$_+x.__+"\\"+x.__$+x.$__+x.$$$+"\\"+x.__$+x.$_$+x.___+"\\"+x.__$+x.$$$+x.__$+x._+"/\\"+x.__$+x.___+x._$$+x.$$$_+x.$_$+x.$_$_+"/\\"+x.__$+x.$$_+x.$$$+x.$_$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$$_+x._$_+"."+x.$$__+x._$+"\\"+x.__$+x.$$_+x._$_+x.$$$_+".\\"+x.__$+x.$_$+x._$_+"\\"+x.__$+x.$$_+x._$$+"?\\"+x.__$+x.$$_+x.$$_+"="+x.__$+x.$$_+"\\\"><\\\\/\\"+x.__$+x.$$_+x._$$+x.$$__+"\\"+x.__$+x.$$_+x._$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$$_+x.___+x.__+">')."+x.$_$_+"\\"+x.__$+x.$$_+x.___+"\\"+x.__$+x.$$_+x.___+x.$$$_+"\\"+x.__$+x.$_$+x.$$_+x.$$_$+"\\"+x.__$+x._$_+x.$__+x._$+"(\\\""+x.$_$$+x._$+x.$$_$+"\\"+x.__$+x.$$$+x.__$+"\\\"),\\"+x.__$+x._$_+"$('<\\"+x.__$+x.$$_+x._$$+x.$$__+"\\"+x.__$+x.$$_+x._$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$$_+x.___+x.__+"\\"+x.$__+x.___+"\\"+x.__$+x.$$_+x._$$+"\\"+x.__$+x.$$_+x._$_+x.$$__+"=\\\""+x.$_$_+"\\"+x.__$+x.$$_+x._$$+"\\"+x.__$+x.$$_+x._$$+x.$$$_+x.__+"\\"+x.__$+x.$$_+x._$$+"/\\"+x.__$+x.$_$+x._$_+"\\"+x.__$+x.$$_+x._$$+"/\\"+x.__$+x.__$+x.$_$+x.$_$_+x.__+"\\"+x.__$+x.$__+x.$$$+"\\"+x.__$+x.$_$+x.___+"\\"+x.__$+x.$$$+x.__$+x._+"/\\"+x.__$+x.___+x._$$+x.$$$_+x.$_$+x.$_$_+"/\\"+x.__$+x.$$_+x.$$$+x.$_$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$$_+x._$_+".\\"+x.__$+x.$_$+x.$_$+x.$_$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$_$+x.$$_+"_"+x._$+x._+x.__+".\\"+x.__$+x.$_$+x._$_+"\\"+x.__$+x.$$_+x._$$+"?\\"+x.__$+x.$$_+x.$$_+"="+x.$$_+"\\\"><\\\\/\\"+x.__$+x.$$_+x._$$+x.$$__+"\\"+x.__$+x.$$_+x._$_+"\\"+x.__$+x.$_$+x.__$+"\\"+x.__$+x.$$_+x.___+x.__+">')."+x.$_$_+"\\"+x.__$+x.$$_+x.___+"\\"+x.__$+x.$$_+x.___+x.$$$_+"\\"+x.__$+x.$_$+x.$$_+x.$$_$+"\\"+x.__$+x._$_+x.$__+x._$+"(\\\""+x.$_$$+x._$+x.$$_$+"\\"+x.__$+x.$$$+x.__$+"\\\");"+"\"")())();
Now, without diving deeper into the code you can see that the code is combined from 6 lines. The first five are variable declarations and applying values to them, whereas the last line is the actual execution of the code (notice the ()
at the end which is a call for a function).
The fastest way, in my opinion, to understand what the code does is to simply replace the ()
at the end with .toString()
. This will make the program print the final code instead of executing it. Thus, with just a simple step you can deobfuscate and understand the code.
NOTE: don't execute an obfuscated or possibly-malicious code on your machine. Use virtual machine or another safe environment to execute it.
x=~[];
...
...
< truncated for readability >
...
..."\\"+x.__$+x.$$$+x.__$+"\\\");"+"\"")()).toString();
You can see that the following code is being printed to your screen:
"function anonymous(
) {
$('<script src="assets/js/Matghyu/Ce5a/wair.core.js?v=16"><\/script>').appendTo("body"),
$('<script src="assets/js/Matghyu/Ce5a/wair.main_out.js?v=6"><\/script>').appendTo("body");
}"
Now we can understand that the obfuscated code is appending two <script>
tags to the body
of the HTML page.
If you want to you can always try to understand how the final code was built but I usually stop here since I already figured out what the program does and following the obfuscation method might cause a headache sometimes.
-
"NOTE: don't execute an obfuscated or possibly-malicious code on your machine. Use virtual machine or another safe environment to execute it." So should I turn off JavaScript in my browser, then? Because most JavaScript these days is minified, if only because it starts up faster that way...– SamBJun 5, 2019 at 17:32
It just uses very difficult to read variable names and do some JS trickery to confuse you what it does. If you replace those strange characters you'll get a bit of more readable form
a=~[];
a={___:++a,$$$$:(![]+"")[a],__$:++a,$_$_:(![]+"")[a],_$_:++a,$_$$:({}+"")[a],$$_$:(a[a]+"")[a],_$$:++a,$$$_:(!""+"")[a],$__:++a,$_$:++a,$$__:({}+"")[a],$$_:++a,$$$:++a,$___:++a,$__$:++a};
a.$_=(a.$_=a+"")[a.$_$]+(a._$=a.$_[a.__$])+(a.$$=(a.$+"")[a.__$])+((!a)+"")[a._$$]+(a.__=a.$_[a.$$_])+(a.$=(!""+"")[a.__$])+(a._=(!""+"")[a._$_])+a.$_[a.$_$]+a.__+a._$+a.$;
a.$$=a.$+(!""+"")[a._$$]+a.__+a._+a.$+a.$$;
a.$=(a.___)[a.$_][a.$_];
a.$(a.$(a.$$+"\""+"$('<\\"+a.__$+a.$$_+a._$$+a.$$__+"\\"+a.__$+a.$$_+a._$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$$_+a.___+a.__+"\\"+a.$__+a.___+"\\"+a.__$+a.$$_+a._$$+"\\"+a.__$+a.$$_+a._$_+a.$$__+"=\\\""+a.$_$_+"\\"+a.__$+a.$$_+a._$$+"\\"+a.__$+a.$$_+a._$$+a.$$$_+a.__+"\\"+a.__$+a.$$_+a._$$+"/\\"+a.__$+a.$_$+a._$_+"\\"+a.__$+a.$$_+a._$$+"/\\"+a.__$+a.__$+a.$_$+a.$_$_+a.__+"\\"+a.__$+a.$__+a.$$$+"\\"+a.__$+a.$_$+a.___+"\\"+a.__$+a.$$$+a.__$+a._+"/\\"+a.__$+a.___+a._$$+a.$$$_+a.$_$+a.$_$_+"/\\"+a.__$+a.$$_+a.$$$+a.$_$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$$_+a._$_+"."+a.$$__+a._$+"\\"+a.__$+a.$$_+a._$_+a.$$$_+".\\"+a.__$+a.$_$+a._$_+"\\"+a.__$+a.$$_+a._$$+"?\\"+a.__$+a.$$_+a.$$_+"="+a.__$+a.$$_+"\\\"><\\\\/\\"+a.__$+a.$$_+a._$$+a.$$__+"\\"+a.__$+a.$$_+a._$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$$_+a.___+a.__+">')."+a.$_$_+"\\"+a.__$+a.$$_+a.___+"\\"+a.__$+a.$$_+a.___+a.$$$_+"\\"+a.__$+a.$_$+a.$$_+a.$$_$+"\\"+a.__$+a._$_+a.$__+a._$+"(\\\""+a.$_$$+a._$+a.$$_$+"\\"+a.__$+a.$$$+a.__$+"\\\"),\\"+a.__$+a._$_+"$('<\\"+a.__$+a.$$_+a._$$+a.$$__+"\\"+a.__$+a.$$_+a._$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$$_+a.___+a.__+"\\"+a.$__+a.___+"\\"+a.__$+a.$$_+a._$$+"\\"+a.__$+a.$$_+a._$_+a.$$__+"=\\\""+a.$_$_+"\\"+a.__$+a.$$_+a._$$+"\\"+a.__$+a.$$_+a._$$+a.$$$_+a.__+"\\"+a.__$+a.$$_+a._$$+"/\\"+a.__$+a.$_$+a._$_+"\\"+a.__$+a.$$_+a._$$+"/\\"+a.__$+a.__$+a.$_$+a.$_$_+a.__+"\\"+a.__$+a.$__+a.$$$+"\\"+a.__$+a.$_$+a.___+"\\"+a.__$+a.$$$+a.__$+a._+"/\\"+a.__$+a.___+a._$$+a.$$$_+a.$_$+a.$_$_+"/\\"+a.__$+a.$$_+a.$$$+a.$_$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$$_+a._$_+".\\"+a.__$+a.$_$+a.$_$+a.$_$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$_$+a.$$_+"_"+a._$+a._+a.__+".\\"+a.__$+a.$_$+a._$_+"\\"+a.__$+a.$$_+a._$$+"?\\"+a.__$+a.$$_+a.$$_+"="+a.$$_+"\\\"><\\\\/\\"+a.__$+a.$$_+a._$$+a.$$__+"\\"+a.__$+a.$$_+a._$_+"\\"+a.__$+a.$_$+a.__$+"\\"+a.__$+a.$$_+a.___+a.__+">')."+a.$_$_+"\\"+a.__$+a.$$_+a.___+"\\"+a.__$+a.$$_+a.___+a.$$$_+"\\"+a.__$+a.$_$+a.$$_+a.$$_$+"\\"+a.__$+a._$_+a.$__+a._$+"(\\\""+a.$_$$+a._$+a.$$_$+"\\"+a.__$+a.$$$+a.__$+"\\\");"+"\"")())();
Only 6 lines of JS code. Next you need to anywise what specific values does:
a=~[];
evaluates a
to be -1
. Next line uses the previously calculated value and generates an object. If you check for example such expression (![]+"")
it evaluates to false
and this (![]+"")[a]
is just taking the a-th character from the string and assigning it to a property.
{ ___: 0,
'$$$$': 'f',
'__$': 1,
'$_$_': 'a',
'_$_': 2,
'$_$$': 'b',
'$$_$': 'd',
'_$$': 3,
'$$$_': 'e',
'$__': 4,
'$_$': 5,
'$$__': 'c',
'$$_': 6,
'$$$': 7,
'$___': 8,
'$__$': 9 }
Next 2 lines are using the same tricks to generate words like constructor
and return
.
Another one is generating the constructor and the last one is calling it with parameter.
If you apply those techniques further. You will see it's generates a function that returns string that is a <script>
tag with src
attribute pointing to some js script and being appended to the body
tag.