// bms2js header.js Version 3.01@Awai-Shichigatsu
//   0       1       2       3       4       5       6       7
b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
s=location.search,LNDEF=384,co=["s","w","b","w","b","w","b","w"];
obr=[[0,1,2,3,4,5,6,7],[0,1,2,3,4,5,6,7]];kc=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];
dpalls=[[0,1,2,3,4,5,6,7],[0,7,6,5,4,3,2,1]];imgdir="../";diftype="";
ln=[],sp=[],dp=[],tc=[],sc32=[],c1=[],c2=[],cn=[],sides=["",2,2],csd=["","left","right"];
dw=[134,121],dr=[38,4],df=[134,119],ms=["",""," class=m1"," class=m2"];tm=new Date();
genre=title=artist=bpm=opt=lnse="",key=ky=back=7,hs=gap=ty=k=1;cncnt=bsscnt=legacy=prt=0;
soflan=level=notes=measure=a=l=m=g=db=p1o=hps=flp=off=lnln=lnst=lned=alls=sran=kuro=sftkey=0;
lv=["☆？","★１","★２","★３","★４","★５","★６","★７","★８","★９",
	"★10","★11","★12","★７".fontcolor("red"),"★８".fontcolor("red")];
DEFNOTE="01234567";MIRNOTE="07654321";

char1=s.charAt(1);
char2=s.charAt(2);
level=s.charAt(3)? s.charAt(3):0;
char2lower=char2.toLowerCase();
if(char2==char2lower){prt=1;imgdir="../prt/";}
char2=char2.toUpperCase();

if(char2=="X"){a=1;kuro=1;}
if(char2=="A")a=1;
if(char2=="L")l=1;
if(char2=="N"){l=1;hps=1;}
if(char2=="H")hps=1;
if(char2=="B"){l=1;g=1;}
if(char2=="G" || char2=="R"){l=1;hps=1;g=1;}
if(char1=="1")sides[1]=1;
if(char1=="D"){k=0;key=14;}
if(char1=="F"){flp=1;k=0;key=14;}
if(char1=="M"){m=1;k=0;key=14;}
if(char1=="B"){db=1;key=14;}
c4tmp=parseInt(s.charAt(4),16);
d=(c4tmp&1)? 1:0;
hs=((c4tmp&6)+4)/4;
legacy=(c4tmp&8)? 1:0;
if(hs==2.5)hs=5/8;
dstr=(d)?"_":"";
lnln=s.charAt(5) ? parseInt(s.charAt(5),36):0;
if(s.indexOf("~")>0 && s.indexOf("~")<s.indexOf("-")){
	lnse=s.substring(s.indexOf("~"));
	lnst=eval(s.substring(s.indexOf("~")+1,s.indexOf("-")));
	lned=eval(s.substring(s.indexOf("-")+1));
	if(lnln=="0")lnln=4;
}

if(s.indexOf("0000000000000000")>=0){
	alls=1;
	sran=1;

}else if(s.indexOf("9999999999999999")>=0){
	sran=1;

}else if(s.length-lnse.length==23){
	for(ri=0;ri<8;ri++){
		obr[0][s.charAt(ri+ 7)]=ri;
		obr[1][s.charAt(ri+15)]=ri;
	}
}

document.write("<style type=text/css><!-- div,span,div img{position:absolute;}"+((m)?
	"img.m1{filter:Alpha(Style=1,Opacity=10,FinishOpacity=90,StartX=100,FinishX=0);}"+
	"img.m2{filter:Alpha(Style=1,Opacity=10,FinishOpacity=90);}":"")+
	"td,th{font-size:16px;"+((prt)? "}body{color:black;background:white}"
	:"}body{color:white;background:black}")+" --></style>");
document.onkeydown=scrl;
function scrl(inkey){
	incode=(inkey)? inkey.keyCode : event.keyCode;
//	alert(incode);
	switch(incode){
		case 16: sftkey ^= 1;
		case 188:window.scrollBy(-dr[d]-ty*dw[d],0);break;	// <
		case 190:window.scrollBy( dr[d]+ty*dw[d],0);break;	// >
		case  66:	// bar clip
			rstr=prompt("BAR CLIP:(ex.25-32)","");
			barclip(rstr);
			break;
		case  85:	// up bar
			if(lnse!="" && lned<measure+gap)barclip((lnst+1)+"-"+(lned+1));
			break;
		case  67:	// clip
			if (window.confirm("クリップボードにリンクをコピーします。")) {
				clipboardData.setData("Text", "<a href='"+location.href+"' target='_blank'>"+title+diftype+"</a>");
			}
			break;
		case  68:	// down bar
			if(lnse!="" && lnst>1)barclip((lnst-1)+"-"+(lned-1));
			break;
		case  70:	// flip
			if(s.charAt(6)!="R")rndjump(DEFNOTE,DEFNOTE,"f");
			else rndjump(s.substring(15,23),s.substring(7,15),"f");
			break;
		case  75:	// key count
			kcstr="",kcnum=0;
			for(kcj=0; kcj<(key==7? 1:2); kcj++){
				kcstr+=(kcj+1)+"P\n"
				for(kci=0; kci<8; kci++){
					kcnum+=kc[kcj][kci];
					kcstr+=(kci ? kci+"K ":"SC ")+kc[kcj][kci]+" ("
							+Math.round(kc[kcj][kci]/notes*10000)/100+"%)\n";
				}
			}
			kcstr+="\nTOTAL : "+kcnum+" ("+Math.round(kcnum/notes*10000)/100+"%)";
			alert(kcstr);

			break;
		case  76:	// legacy
			if(cncnt||bsscnt) {
				if(s.charAt(6)!="R")rndjump(DEFNOTE,DEFNOTE,"l");
				else rndjump(s.substring(7,15),s.substring(15,23),"l");
			}
			break;
		case  77:	// mirror
			if(key==7){
				if(s.charAt(6)!="R")rndjump(MIRNOTE,DEFNOTE);
				else if(s.substring(7,15)==MIRNOTE)rndjump(DEFNOTE,DEFNOTE);
			}else{
				if(s.charAt(6)!="R")rndjump(MIRNOTE,"01234567");
				else if(s.substring(7,23)==MIRNOTE+DEFNOTE)rndjump(DEFNOTE,MIRNOTE);
				else if(s.substring(7,23)==DEFNOTE+MIRNOTE)rndjump(MIRNOTE,MIRNOTE);
				else if(s.substring(7,23)==MIRNOTE+MIRNOTE)rndjump(DEFNOTE,DEFNOTE);
			}
			break;
		case  80:	// print
			if(s.charAt(6)!="R")rndjump(DEFNOTE,DEFNOTE,"p");
			else rndjump(s.substring(7,15),s.substring(15,23),"p");
			break;
		case  81:	// all-scratch
			rndjump("00000000","00000000");
			break;
		case  82:	// random
			if(key==14){
				rstr=prompt("RANDOM:12345671234567→","12345671234567");
				rndjump("0"+rstr.substring(0,7),"0"+rstr.substring(7,14));
			}else{
				rstr=prompt("RANDOM:1234567→","1234567");
				rndjump("0"+rstr.substring(0,7),DEFNOTE);
			}
			break;
		case  83:	// s-random
			rndjump("99999999","99999999");
			break;
		case  90:	// default
			rndjump("01234567","01234567");
			break;
		case  65:	// auto random
			rstr=["0","0"];
			for (ari=0; ari<2; ari++) {
				tmprnd=[1,2,3,4,5,6,7];
				for (ri=0; ri<7; ri++) {
					arpos=Math.floor(Math.random()*(7-ri))+ri;
					rstr[ari]+=tmprnd[arpos];
					tmprnd[arpos]=tmprnd[ri];
				}
			}
			rndjump(rstr[0],rstr[1]);
			break;
		case 48:
			if (sftkey==0) {barclip("1-255");break;}
		case 49: case 50: case 51: case 52:
		case 53: case 54: case 55: case 56: case 57:
			inln = (sftkey==1 ? 10 : 0) + incode - 48;
			if(s.charAt(6)!="R")rndjump(DEFNOTE,DEFNOTE,inln);
			else rndjump(s.substring(7,15),s.substring(15,23),inln);
		break;
		default:
			break;
	}

}

function w(str){
	if(!off)document.write(str);
}

function hd(){
	opt=(k)?"[SP ":"[DP ";
	if  (kuro)opt+="黒ANOTHER";
	else if(a)opt+="ANOTHER";
	else if(g)opt+="BEGINNER";
	else if(l)opt+="NORMAL";
	else      opt+="HYPER";
	diftype=opt+"]";

	opt+="]<font color="+(prt?"black":"yellow")+">";
	if(db){notes*=2;opt+="+BATTLE";}
	if(flp)opt+="+FLIP";
	if(m){key=ky=7;opt+="+BUSTER'S";}
	if(legacy)opt+="+LEGACY";

	if(s.charAt(6)=="R"){
		if     (alls)opt+="+ALL-SCRATCH";
		else if(sran)opt+="+S-RANDOM";
		else if(key==7){
			if     (s.substring(7,15)==MIRNOTE)opt+="+MIRROR";
			else if(s.substring(7,15)!=DEFNOTE)opt+="+RANDOM";
		}else{
			if     (s.substring( 7,15)==MIRNOTE)opt+="+1P MIR";
			else if(s.substring( 7,15)!=DEFNOTE)opt+="+1P RAN";
			if     (s.substring(15,23)==MIRNOTE)opt+="+2P MIR";
			else if(s.substring(15,23)!=DEFNOTE)opt+="+2P RAN";
		}
	}
	opt+="<\/font>";
	
	optcol=prt?"black":"orange";
	if(lnse!="")w("<nobr><b>"+title+"<\/b> "+opt.fontcolor(optcol)+
				  " bpm:"+bpm+" - "+lv[parseInt(level,16)]+"<\/nobr>");
	else w("<nobr>\""+genre+"\""+opt.fontcolor(optcol)+" <b>"+title+"<\/b> / "+
		artist+" bpm:"+bpm+" - "+lv[parseInt(level,16)]+" Notes:"+notes+"<\/nobr>");

	sd=[[],sp,dp];
	cn=[[],c1,c2];

	if(lnln!=0){
		if(ln[measure]==24)ln[measure]=LNDEF;
		premsr= (lnst>0) ? lnst-gap:1-gap;

		if(tc!=null){
			if(tc[premsr]==null || (tc[premsr]!=null && tc[premsr][0].charAt(3)!="0")){
				for(tcp=premsr-1; tcp>=0; tcp--){
					if(tc[tcp]!=null){
						tmptc = tc[tcp][tc[tcp].length-1].substring(0,3)+"0";
						if(!tc[premsr])tc[premsr]=[tmptc];
						else tc[premsr][tc[premsr].length]=tmptc;
						break;
					}
				}
			}
		}
		if(tc[premsr]==null && tc[premsr+1]!=null){
			tc[premsr]=tc[premsr+1];
			tc[premsr+1]=null;
		}else if(tc[premsr]==null && tc[premsr+1]==null && tc[premsr+2]!=null){
			tc[premsr]=tc[premsr+2];
			tc[premsr+2]=null;
		}
	}

	if(lnln==1){
		b(1-gap,measure);
		off=1;
	}else if(lnln!=0){
		dispmax=384*lnln/hs;
		mtmp=(lned>0)? lned-gap:measure;

		w("<table><tr>");
		for(li=premsr,dispnow=0; li<=mtmp; li++){
			lntmp=ln[li] ? ln[li]:LNDEF;
			if(dispnow!=0 && dispnow+lntmp>dispmax){
				w("<td valign=bottom>");
				b(premsr,li-1);
				w("<\/td>");
				premsr=li;
				dispnow=0;
			}
			if(li==mtmp){
				w("<td valign=bottom>");
				b(premsr,mtmp);
				w("<\/td>");
			}
			dispnow+=lntmp;
		}
		document.write("<\/tr><\/table>")
		off=1;
	}
}

function ft(){
	sc=kc[0][0]+kc[1][0];
	if(!off)document.write("<\/tr><\/table>");
	tmpURL = document.URL;
	tmpURL = tmpURL.replace(/\\/g,"/");
	tmpURL.match(/\/score\/([0-9sx]{1,2})\//);
	tmpVer = RegExp.$1;

	if(lnse.length==0){
		document.write("<font size=-1>AAA:"+Math.ceil(notes*16/9)+
		", AA:"+Math.ceil(notes*14/9)+", A:"+Math.ceil(notes*12/9)+" (SCR="+sc);
		if(cncnt) document.write(" CN="+cncnt);
		if(bsscnt)document.write(" BSS="+bsscnt);
		document.write(")"+(!k&&!m ? " ("+p1o+" / "+(notes-p1o)+")":"")+"<\/font>");
	}

	pathname = location.pathname;
	htmlname = pathname.substring(pathname.lastIndexOf("/")+1);
	tagname  = htmlname.substring(0, htmlname.indexOf("."));
	document.write("<img src='../log/log.php?tag="+tagname+"' width=0 height=0>");

//+(new Date()-tm);
}

function im(hy){
	if(!off)document.write("<img width=1 height="+(hy*hs)+">");
}

function barclip(rstr){
	if(rstr==0){bcst=1;bced=measure+gap;}
	else if(rstr.indexOf("-")!=rstr.lastIndexOf("-"))return;
	else{
		bcst=new Number(rstr.substring(0,rstr.indexOf("-")));
		bced=new Number(rstr.substring(rstr.indexOf("-")+1));
		if(bced>measure+gap)bced=measure+gap;
		if(bcst<1)bcst=bced;
		if(isNaN(bcst) || isNaN(bced) || bcst>bced)return;
	}
	stmp=(s.indexOf("~")>0)? s.substring(0,s.indexOf("~")):s;
	if(stmp.charAt(5)=="0")stmp=stmp.substring(0,5)+"4"+stmp.substring(6);
	if(bcst==1 && bced==measure+gap)
		location.replace(stmp.substring(0,5)+"0"+stmp.substring(6));
	else location.replace(stmp+"~"+bcst+"-"+bced);
	return;
}

function rndjump(rstr1,rstr2,rndopt){
	c4cnvtab="0123456789ABCDEFGHIJ";
	md=s.charAt(1);
	stp=s.charAt(2);
	ldisp=c4cnvtab.charAt(lnln);
	
	if(rndopt=="p"){
		if (prt) stp=stp.toUpperCase();
		else	 stp=stp.toLowerCase();
	}else if(rndopt=="l"){
		if (c4tmp>=8) c4tmp-=8;
		else		  c4tmp+=8;
	}else if(rndopt=="f"){
		switch(md){
			case "1":md="2";break;
			case "2":md="1";break;
			case "D":md="F";break;
			case "F":md="D";break;
			default:return;
		}
	}else if(rndopt){
		ldisp=c4cnvtab.charAt(rndopt);
	}
	c4cnv = c4cnvtab.charAt(c4tmp);
	rephd = "?"+md+stp+s.substring(3,4)+c4cnv+ldisp;

	if(rstr1==DEFNOTE && rstr2==DEFNOTE){
		location.replace(rephd+(ldisp==1 ?"":lnse));return;}
	if(rstr1=="00000000" || rstr1=="99999999"){
		location.replace(rephd+"R"+rstr1+rstr1+(ldisp==1 ?"":lnse));
		return;}

	for(ri=0;ri<8;ri++)
		if(rstr1.indexOf(""+ri)<0 ||
		   rstr2.indexOf(""+ri)<0){alert("入力が正しくありません。");return;}
	location.replace(rephd+"R"+rstr1+rstr2+(ldisp==1 ?"":lnse));
}

function bars_(n,mn){
	if(off)return;
	o="";
	if(s.charAt(5)!="0" && n==-1)n=999;
	else if(n<0 || n>measure)return;
	if(!ln[n])ln[n]=LNDEF;
	nbar=Math.ceil(ln[n]/3);
	if(nbar<4)nbar=4;
	if(hs>1)mn=void(0);
	else if(sc32[n])mn=sc32[n];

	if(db){sd[2]=sp;cn[2]=c1;}
	if(flp){sd[0][n]=sd[1][n];
			sd[1][n]=sd[2][n];
			sd[2][n]=sd[0][n];
			cn[0][n]=cn[1][n];
			cn[1][n]=cn[2][n];
			cn[2][n]=cn[0][n];}
	o+="<table cellpadding=0 cellspacing=0 width="+(ty*dw[d]+dr[d]-4)+
		" style='border:1px "+(prt? "black":"white")+" solid' height="+(nbar*hs)+"><tr>";
	for(h=1;h<=2;h++){
		objtab=[];
		if(h==2){
			if(d==0)o+="<\/div><\/td><th width=32 bgcolor="+
				(prt ? "white style='border-left:1px black solid;"+
				(ty==2 ? "border-right:1px black solid;padding:0px'" : "'")
				:"gray")+">"+((nbar>=32*hs) ? (n==999 ? 1:n+gap)+"<\/th>":
				"<img width=1 height=1><\/th>");
			if(ty==1)break;
			if(d==1)o+="<\/div><\/td><td width=2 bgcolor="+(prt ? "black":"white")+"><\/td>";
		}
		o+="<td width="+df[d]+" valign=top background="+imgdir+
			(hs==5/8 ? 5 : back-4+4*hs)+d+
			".gif style='background-position:"+((2-sides[h])*(23-7*d))+"px "+
			(nbar*hs-1)+"px'><div style='width:"+df[d]+"px;height:"+(nbar*hs)+"px'>"+
			((d && ty-h<1 && nbar>=32*hs)?"<span style='bottom:0px;"+csd[sides[h]]+
			":0px;color:"+(prt?"gray":"gray")+";font:16px impact'>"+
			(n==999 ? 1:n+gap)+"<\/span>":"");

		if(tc[n]&&h==1){
			while(tc[n].length){
				cb=tc[n][tc[n].length-1];
				tc[n].length--;
				tp=nbar-cb.substring(3)-2;
				o+="<img src="+imgdir+"t.gif height=2 width="+((d)?dw[d]*ty-2:dw[d])+
					" style='top:"+((tp+2)*hs-2)+"px'>"+
					"<span style='z-index:5;font-size:10px;top:"+((tp+2)*hs-7-d*4)+
					"px;font-weight:bold;width:20px;text-align:center;"+
					((!d) ? "background:"+(prt?"white":"gray")+";left:14":csd[sides[1]]+":")+
					"0px;color:"+(prt ? "black":"palegreen")+";'>"+cb.substring(0,3)+
					"<\/span>"+((!d && ty==2)?"<img src="+imgdir+
					"t.gif height=2 width=134 style='top:"+(tp*hs)+"px;left:166px'>":"");
			}
		}

		for(mm=0; mm<=m; mm++){
			sdd=sd[h+mm][n];
			if(!sdd)continue;
			sh=sides[h];
			msc=ms[m*2+mm];
			sft=div=0;


		if(cn[h][n]) {
			for(cni=cn[h][n].length-1; cni>=0; cni--){
				cnz = cn[h][n][cni][0];
				cnp = Math.floor(cn[h][n][cni][1]*hs);
				cnhtmp = cn[h][n][cni][2];
				if (cnhtmp == undefined) cnhtmp=30;
				cnh = Math.floor(cnhtmp*hs);
				cnf = cn[h][n][cni][3];
				if (cnf == undefined) cnf = 3;
				if (!cn[h][n][cni][h+3]) cn[h][n][cni][h+3] = [];
				cnsrd = cn[h][n][cni][h+3][n];
				
				for (cnj=0; cnj<(cnz<10 ? 1:2); cnj++) {
					jpos = obr[h-1][(cnj==0) ? cnz%10 : Math.floor(cnz/10)];

					if(sran){
						if(cnsrd) {
							jpos = cnsrd;
						}else if(jpos) {
							cnorig = jpos;
							cn[h][n][cni][h+3][n] = cnorig;
							
							if(alls&&key==14){
								for (dpalli=1; dpalli<8; dpalli++) {
									jpos=dpalls[h-1][dpalli];
									if (!(   (objtab[cnp*3]&(1<<jpos))
										  || (objtab[(cnp+cnh+2)*3]&(1<<jpos)))) break;
								}
							} else {
								do {
									jpos = Math.floor(Math.random()*7)+1;
								} while(   (objtab[cnp*3]&(1<<jpos))
										|| (objtab[(cnp+cnh+2)*3]&(1<<jpos)));
							}
							if(!(cnf&1)){
								cnend = 0;
								for(cnmes=n-1; ; cnmes--) {
									for (cnnow=cn[h][cnmes].length-1; cnnow>=0; cnnow--) {
										cnpos = cn[h][cnmes][cnnow];
										if (cnpos[0]==cnorig) {
											if (!cnpos[h+3])cnpos[h+3] = [];
											cnpos[h+3][cnmes] = jpos;
											if (cnpos[3]&1) cnend = 1;
											break;
										}
									}
									if (cnend==1) break;
								}
							}
							if(!(cnf&2)){
								cnend = 0;
								for(cnmes=n+1; ; cnmes++) {
									for (cnnow=0; cnnow<cn[h][cnmes].length; cnnow++) {
										cnpos = cn[h][cnmes][cnnow];
										if (cnpos[0]==cnorig) {
											if (!cnpos[h+3])cnpos[h+3] = [];
											cnpos[h+3][cnmes] = jpos;
											if (cnpos[3]&2) cnend = 1;
											break;
										}
									}
									if (cnend==1) break;
								}
							}
						}
						for(cno=cnp*3;cno<=(cnp+cnh+2)*3;cno++)objtab[cno]|=(1<<jpos);
					}
					if(!legacy) {
						o+="<img src="+imgdir+"l"+co[jpos]+dstr+".gif"+msc+" style='top:"+
							(nbar*hs-cnp-cnh-1)+"px;left:"+
							(jpos? jpos*(14-d)-sh*(37-d*8)+61-d*15:(sh-1)*(98-d*7)+2)+
							"px;height:"+cnh+"px;width:"+(jpos ? 11-d : 32-d*8)+"px'>";
					}
					if (cnf&1) {
						if (jpos) cncnt++;
						else	  bsscnt++;
						o+="<img src="+imgdir+co[jpos]+dstr+".gif"+msc+" style='top:"+
							(nbar*hs-cnp-5)+"px;left:"+
							(jpos? jpos*(14-d)-sh*(37-d*8)+60-d*15:(sh-1)*(98-d*7))+"px;'>";
						if(h==1)p1o++;
						kc[h-1][jpos]++;
					}
					if (cnf&2 && !legacy) {
						o+="<img src="+imgdir+co[jpos]+dstr+".gif"+msc+" style='top:"+
							(nbar*hs-cnp-cnh-5)+"px;left:"+
							(jpos? jpos*(14-d)-sh*(37-d*8)+60-d*15:(sh-1)*(98-d*7))+"px;'>";
						if(h==1)p1o++;
						kc[h-1][jpos]++;
					}
				}
			}
		}

if(sdd.charAt(0)=="#"){
	sft++;
	v2c=0;
	while(sft<sdd.length){
		v2o="";
		v2v=(v2c? 1:3)*ln[n]/6;
		switch(sdd.charAt(sft)){
			case "C":v2s= 0;v2p=192;v2t=0;if(!v2c)v2o=sdd.charAt(++sft);sft++;break;
			case "c":v2s=96;v2p=192;v2t=0;if(!v2c)v2o=sdd.charAt(++sft);sft++;break;
			case "R":v2s= 0;v2p= 96;v2t=0;if(!v2c)v2o=sdd.charAt(++sft);sft++;break;
			case "r":v2s=48;v2p= 96;v2t=0;if(!v2c)v2o=sdd.charAt(++sft);sft++;break;
			case "P":v2s= 0;v2p= 48;v2t=0;if(!v2c)v2o=sdd.charAt(++sft);sft++;break;
			case "p":v2s=24;v2p= 48;v2t=0;if(!v2c)v2o=sdd.charAt(++sft);sft++;break;

			case "B":v2s= 0;v2p=192;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "b":v2s=96;v2p=192;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "Q":v2s= 0;v2p= 96;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "q":v2s=48;v2p= 96;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "O":v2s= 0;v2p= 48;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "o":v2s=24;v2p= 48;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "X":v2s= 0;v2p= 24;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "x":v2s=12;v2p= 24;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "Z":v2s= 0;v2p= 12;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
                                                                                               
			case "S":v2s= 0;v2p= 64;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "s":v2s=32;v2p= 64;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "T":v2s= 0;v2p= 32;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "t":v2s=16;v2p= 32;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;
			case "U":v2s= 0;v2p= 16;v2t=1;v2b=Math.ceil(v2v/v2p)+1;v2o=sdd.substring(sft+1,sft+v2b);sft+=v2b;break;

			case "1":case "2":case "3":case "4":case "5":case "6":case "7":
				v2o=sdd.substring(sft,sft+3);v2t=2;sft+=3;break;
			case "9":v2o="1"+sdd.substring(sft+2,sft+4);
			case "8":for(i2=0;i2<6;i2++){
						if(b64.indexOf(sdd.charAt(sft+1))&(1<<i2))v2o+=(i2+2)+sdd.substring(sft+2,sft+4);
					}v2t=2;sft+=4;break;

			case "-":v2c=1;sft++;break;
			case "_":v2o=(sft==sdd.length-1)? "AA":sdd.substring(sft+1);v2c=v2t=2;break;

			default:w("<font color=red>error<\/red>");return;
		}
		if(sdd.charAt(sft-1)=="-")continue;

		v2k="";
		if(v2t==1){
			for(i2=0;i2<v2o.length;i2++){
				if(v2c==0){
					v2x=b64.indexOf(v2o.charAt(i2));
					v2k+=Math.floor(v2x/8)+""+v2x%8;
				}else if(v2c==1){
					v2x=b64.indexOf(v2o.charAt(i2));
					for(i3=5;i3>=0;i3--)v2k+=(v2x>>i3)&1 ? 1:0;
				}
			}
		}else if(v2t==0){
			for(i2=v2s;i2<ln[n];i2+=v2p)v2k+=(v2c ? "1":v2o);
		}
		if(v2t!=2){
			for(v2i=0,i2=v2s;i2<ln[n];v2i++,i2+=v2p){
				if((ob2=v2k.charAt(v2i))!=0){
					if(alls&&key==14){
						for (dpalli=0; dpalli<8; dpalli++) {
							ob2=dpalls[h-1][dpalli];
							if (!(objtab[i2] & (1<<ob2))) break;
						}
					}else if(v2c&&!alls){
						ob2=0;
						co[0]=(Math.floor(i2/48)==mn)? "r":"s";
					}else if(sran) {
						if     (alls) ob2=0;
						else if (ob2) ob2=Math.floor(Math.random()*7)+1;
						while(objtab[i2] & (1<<ob2)) {
							ob2=Math.floor(Math.random()*7)+1;
						}
					}
					if(h==1)p1o++;
					kc[h-1][ob2]++;
					objtab[i2] |= (1<<ob2);
					o+="<img src="+imgdir+co[obr[h-1][ob2]]+dstr+".gif"+msc+" style='top:"+
						(nbar*hs-Math.floor(i2*hs/3)-5)+"px;left:"+
						(ob2 ? obr[h-1][ob2]*(14-d)-sh*(37-d*8)+60-d*15
						:(sh-1)*(98-d*7))+"px'>";
				}
			}
		}else{
			for(i2=0;i2<v2o.length;i2+=2){

				if(v2c==0){ob2=v2o.charAt(i2);i2++;}else ob2=0;
				v2h=b64.indexOf(v2o.charAt(i2))*64+b64.indexOf(v2o.charAt(i2+1))*1;
				if(alls&&key==14){
					for (dpalli=0; dpalli<8; dpalli++) {
						ob2=dpalls[h-1][dpalli];
						if (!(objtab[v2h] & (1<<ob2))) break;
					}
				}else if(mn!=void(0)&&!alls){
					co[0]=(Math.floor(v2h/48)==mn)? "r":"s";
				}else if(sran) {
					if     (alls) ob2=0;
					else if (ob2) ob2=Math.floor(Math.random()*7)+1;
					while(objtab[v2h] & (1<<ob2)){
						ob2=Math.floor(Math.random()*7)+1;
					}
				}
				if(h==1)p1o++;
				kc[h-1][ob2]++;
				objtab[v2h] |= (1<<ob2);
				o+="<img src="+imgdir+co[obr[h-1][ob2]]+dstr+".gif"+msc+" style='top:"+
					(nbar*hs-Math.floor(v2h*hs/3)-5)+"px;left:"+
					(ob2 ? obr[h-1][ob2]*(14-d)-sh*(37-d*8)+60-d*15
					:(sh-1)*(98-d*7))+"px'>";
			}
		}
		if(v2c==2)break;
	}
}else{
	if(sdd.charAt(0)=="x"){
		len=parseInt(sdd.substring(1,4),16);
		sft=4;
	}else len=sdd.length;
	for(;sft<sdd.length;sft+=2,div+=2){
		while(sdd.charAt(sft)=="@"){
			div+=parseInt(sd[h+mm][n].substring(sft+1,sft+3),16)*2;
			sft+=3;
		}
		if(mn)co[0]=(Math.floor(nbar*div/(len*16))==mn)?"r":"s";
		y=parseInt(sdd.substring(sft,sft+2),16);
		for(j=0;j<=ky;j++){
			if(y>>j==0)break;
			if(y>>j&1){
				if(h==1)p1o++;
				kc[h-1][j]++;
				jpos = obr[h-1][j];
				if(alls&&key==14){
					for (dpalli=0; dpalli<8; dpalli++) {
						jpos=dpalls[h-1][dpalli];
						if (!(objtab[Math.floor(nbar*div*3/len)] & (1<<jpos))) break;
					}
				}else if (sran) {
					if      (alls) jpos=0;
					else if (jpos) jpos=Math.floor(Math.random()*7)+1;
					while(objtab[Math.floor(nbar*div*3/len)] & (1<<jpos)) {
						jpos=Math.floor(Math.random()*7)+1;
					}
				}
				objtab[Math.floor(nbar*div*3/len)] |= (1<<jpos);
				o+="<img src="+imgdir+co[jpos]+dstr+".gif"+msc+" style='top:"+
					(nbar*hs-Math.floor(nbar*div*hs/len)-5)+"px;left:"+
					(jpos? jpos*(14-d)-sh*(37-d*8)+60-d*15:(sh-1)*(98-d*7))+"px'>";
			}
		}
	}
}
		}
	//document.write(objtab);
	}
	if(d || ty==2)o+="<\/div><\/td>";
	document.write(o+"<\/tr><\/table>");
	co[0]="s";
}

function b(st,en){
	if(off)return;
	if(key>7)ty=2;
	if(key==14){sides[1]=m+1;sides[2]=2;}
	if(st==null){st=0;en=measure;}
	if(en==null)en=st;
	for(bb=en;bb>=st;bb--)bars_(bb);
}
