if(typeof $WH=="undefined"){$WH={wowheadRemote:true}
}if(typeof $WowheadPower=="undefined"){var $WowheadPower=new function(){var AD=$WH.wowheadRemote;
var Aj={applyto:3},Ap=document.getElementsByTagName("head")[0],AT=true,A0,AK,AG,AP,An,Ai,AM,AO,Ay=0,Ab=false,AL={},Az={},Ah={},AR={},AF={},AV={},A2={},A3={},AA=1,Ad=1,AH=0,AJ=1,Ax=2,Am=3,AI=4,AE=5,Al=1,Av=2,AZ=3,AQ=5,Ak=6,As=10,Aw=100,Aq=15,AU=15,Aa={loading:"Loading...",noresponse:"No response from server :(",achievementcomplete:"Achievement earned by $1 on $2/$3/$4"},Ao={1:[AL,"npc","NPC"],2:[Az,"object","Object"],3:[Ah,"item","Item"],5:[AR,"quest","Quest"],6:[AF,"spell","Spell"],10:[AV,"achievement","Achievement"],100:[A3,"profile","Profile"]},AX={3:{url:"/data=item-scaling"},6:{url:"/data=spell-scaling"}},A4={0:"enus",2:"frfr",3:"dede",6:"eses",7:"ruru",ptr:"ptr",beta:"beta"},A6={wotlk:"www"};
if(AD){var A7={getId:function(){return 0
},getName:function(){return"enus"
}}
}if(AT){}else{A6.ptr="www"
}function Ag(){if(AD){var A=document.createElement("script");
A.src="https://static.wowhead.com/js/basic.js?5";
Ap.appendChild(A)
}else{AC()
}}function AC(){if(Ab){return 
}Ab=true;
$WH.aE(document,"mouseover",Af)
}this.init=function(){if(AD){$WH.ae(Ap,$WH.ce("link",{type:"text/css",href:"https://static.wowhead.com/css/basic.css?5",rel:"stylesheet"}))
}AC()
};
function Ar(B){var A=$WH.g_getCursorPos(B);
AM=A.x;
AO=A.y
}function Ac(A,E){if(A.nodeName!="A"&&A.nodeName!="AREA"){return -2323
}if(!A.href.length&&!A.rel){return 
}if(A.rel&&A.rel.indexOf("np")!=-1){return 
}var I,J,L,M,H={};
An=H;
var N=function(P,Q,O){if(Q=="buff"||Q=="sock"||Q=="map"){H[Q]=true
}else{if(Q=="rand"||Q=="ench"||Q=="lvl"||Q=="c"||Q=="diff"){H[Q]=parseInt(O)
}else{if(Q=="gems"||Q=="pcs"||Q=="forg"||Q=="know"){H[Q]=O.split(":")
}else{if(Q=="who"||Q=="domain"){H[Q]=O
}else{if(Q=="when"){H[Q]=new Date(parseInt(O))
}}}}}};
var F=false;
if(Aj.applyto&1){J=2;
L=3;
if(A.href.indexOf("http://")==0||A.href.indexOf("https://")==0){I=1;
M=A.href.match(/^https?:\/\/(.+?)?\.?(?:wowhead|thottbot)\.com\/\??(item|quest|spell|achievement|statistic|npc|object)=([0-9]+)/);
if(M==null){M=A.href.match(/^https?:\/\/(.+?)?\.?(?:wowhead|thottbot)\.com\/\??(profile)=([^&#]+)/)
}Ad=0
}else{F=true;
M=A.href.match(/()\/\??(item|quest|spell|achievement|statistic|npc|object)=([0-9]+)/);
if(M==null){M=A.href.match(/()\/\??(profile)=([^&#]+)/)
}Ad=1
}}if(M==null&&A.rel&&(Aj.applyto&2)){I=0;
J=1;
L=2;
M=A.rel.match(/(item|quest|spell|achievement|statistic|npc|object).?([0-9]+)/);
if(M==null){M=A.rel.match(/(profile).?([^&#]+)/)
}Ad=1
}A.href.replace(/([a-zA-Z]+)=?([a-zA-Z0-9:-]*)/g,N);
if(A.rel){A.rel.replace(/([a-zA-Z]+)=?([a-zA-Z0-9:-]*)/g,N)
}if(H.gems&&H.gems.length>0){var G;
for(G=Math.min(3,H.gems.length-1);
G>=0;
--G){if(parseInt(H.gems[G])){break
}}++G;
if(G==0){delete H.gems
}else{if(G<H.gems.length){H.gems=H.gems.slice(0,G)
}}}if(M){var B,K="www";
Ai=A;
if(H.domain){K=H.domain
}else{if(I&&M[I]){K=M[I]
}else{if(F){if($WH.isset("g_beta")&&g_beta){K="cata"
}else{if($WH.isset("g_ptr")&&g_ptr){K="ptr"
}else{if($WH.isset("g_old")&&g_old){K="old"
}}}}}}if(A6[K]){K=A6[K]
}B=$WH.g_getLocaleFromDomain(K);
if(K=="ptr"){B="ptr"
}else{if(K=="beta"||K=="cata"){B="beta"
}}AP=K;
if(A.href.indexOf("#")!=-1&&document.location.href.indexOf(M[J]+"="+M[L])!=-1){return 
}Ay=((A.parentNode.className.indexOf("icon")==0&&A.parentNode.nodeName=="DIV")?1:0);
if(!A.onmouseout){if(Ay==0){A.onmousemove=A8
}A.onmouseout=Ae
}Ar(E);
var C=$WH.g_getIdFromTypeName(M[J]),D=M[L];
AW(C,D,B,H)
}}function Af(A){A=$WH.$E(A);
var B=A._target;
var C=0;
while(B!=null&&C<5&&Ac(B,A)==-2323){B=B.parentNode;
++C
}}function A8(A){A=$WH.$E(A);
Ar(A);
$WH.Tooltip.move(AM,AO,0,0,Aq,AU)
}function Ae(){A0=null;
Ai=null;
$WH.Tooltip.hide()
}function AB(B,A){return(An&&An.buff?"buff":"tooltip")+(A?A:"")+"_"+A4[B]
}function AS(A){return(An&&An.buff?"buff":"")+"spells_"+A4[A]
}function Au(C,A,B){var D=Ao[C][0];
if(D[A]==null){D[A]={}
}if(D[A].status==null){D[A].status={}
}if(D[A].response==null){D[A].response={}
}if(D[A].status[B]==null){D[A].status[B]=AH
}}function AW(E,A,C,B){if(!B){B={}
}var D=A1(A,B);
A0=E;
AK=D;
AG=C;
An=B;
Au(E,D,C);
var F=Ao[E][0];
if(F[D].status[C]==AI||F[D].status[C]==Am){AY(F[D][AB(C)],F[D].icon,F[D].map,F[D][AS(C)],F[D][AB(C,2)])
}else{if(F[D].status[C]==AJ||F[D].status[C]==AE){AY(Aa.loading)
}else{A5(E,A,C,null,B)
}}}function A5(B,G,A,I,F){var K=A1(G,F);
var D=Ao[B][0];
if(D[K].status[A]!=AH&&D[K].status[A]!=Ax){return 
}D[K].status[A]=AJ;
if(!I){D[K].timer=setTimeout(function(){At.apply(this,[B,K,A])
},333)
}var H="";
for(var E in F){if(E!="rand"&&E!="ench"&&E!="gems"&&E!="sock"&&E!="diff"){continue
}if(typeof F[E]=="object"){H+="&"+E+"="+F[E].join(":")
}else{if(F[E]===true){H+="&"+E
}else{H+="&"+E+"="+F[E]
}}}var C=$WH.g_getDomainFromLocale(A);
if(A=="ptr"){C="ptr"
}else{if(A=="beta"){C="cata"
}}var J="";
if(typeof g_dev=="undefined"||!g_dev){J+=document.location.protocol+"//"+C+".wowhead.com"
}else{if(window.location.hostname.indexOf("dev.wowhead.com")!=-1){if(C!="www"&&window.location.hostname.indexOf(C)!=0){J+=document.location.protocol+"//"+C+"."+window.location.hostname
}}}$WH.g_ajaxIshRequest(J+"/"+Ao[B][1]+"="+G+"&power"+H);
if(AX[B]&&!AX[B][A]){$WH.g_ajaxIshRequest(J+AX[B].url)
}}function AY(I,E,N,F,G){if(Ai&&Ai._fixTooltip){I=Ai._fixTooltip(I,A0,AK,Ai)
}var D=false;
if(!I){I=Ao[A0][2]+" not found :(";
E="inv_misc_questionmark";
D=true
}else{if(An!=null){if(An.forg&&An.forg.length==2){var B=[An.forg[0]];
for(var J in $WH.g_individualToGlobalStat){if($WH.g_individualToGlobalStat[J]==B[0]){B.push(J)
}}var L;
if((L=I.match(new RegExp("(<!--(stat|rtg)("+B.join("|")+")-->)[+-]?([0-9]+)")))&&!I.match(new RegExp("<!--(stat|rtg)"+An.forg[1]+"-->[+-]?[0-9]+"))){var C=Math.floor(L[4]*0.4),K=LANG.traits[$WH.g_statToJson[An.forg[1]]][0];
if(An.forg[1]==6){I=I.replace("<!--rs-->","<br />+"+C+" "+K)
}else{I=I.replace("<!--rr-->",$WH.sprintfa(LANG.tooltip_genericrating,K.toLowerCase(),An.forg[1],C))
}I=I.replace(L[0],L[1]+(L[4]-C));
I=I.replace("<!--rf-->",'<span class="q2">'+LANG.reforged+"</span><br />")
}}if(An.pcs&&An.pcs.length){var A=AK.match(/^(\d+)/);
A=A[1];
var M=0;
for(var J=0,H=An.pcs.length;
J<H;
++J){var L;
if(L=I.match(new RegExp("<span><!--si([0-9]+:)*"+An.pcs[J]+'(:[0-9]+)*--><a href="/??item=(\\d+)">(.+?)</a></span>'))){I=I.replace(L[0],'<span class="q8"><!--si'+An.pcs[J]+'--><a href="/item='+L[3]+'">'+(($WH.isset("g_items")&&g_items[An.pcs[J]])?g_items[An.pcs[J]]["name_"+A4[AG]]:L[4])+"</a></span>");
++M
}}if(M>0){I=I.replace("(0/","("+M+"/");
I=I.replace(new RegExp("<span>\\(([0-"+M+"])\\)","g"),'<span class="q2">($1)')
}}if(An.know&&An.know.length){I=$WH.g_setTooltipSpells(I,An.know,F)
}if(An.lvl){I=$WH.g_setTooltipLevel(I,An.lvl,An.buff)
}if(An.who&&An.when){I=I.replace("<table><tr><td><br />",'<table><tr><td><br /><span class="q2">'+$WH.sprintf(Aa.achievementcomplete,An.who,An.when.getMonth()+1,An.when.getDate(),An.when.getFullYear())+"</span><br /><br />");
I=I.replace(/class="q0"/g,'class="r3"')
}}}if(An.map&&N&&N.getMap){G=N.getMap()
}if(Ay==1){$WH.Tooltip.setIcon(null);
$WH.Tooltip.show(Ai,I,null,null,null,G)
}else{$WH.Tooltip.setIcon(E);
$WH.Tooltip.showAtXY(I,AM,AO,Aq,AU,G)
}if(AD&&$WH.Tooltip.logo){$WH.Tooltip.logo.style.display=(Ad?"block":"none")
}}function At(C,A,B){if(A0==C&&AK==A&&AG==B){AY(Aa.loading);
var D=Ao[C][0];
D[A].timer=setTimeout(function(){AN.apply(this,[C,A,B])
},3850)
}}function AN(C,A,B){var D=Ao[C][0];
D[A].status[B]=Ax;
if(A0==C&&AK==A&&AG==B){AY(Aa.noresponse)
}}function A1(A,B){return A+(B.rand?"r"+B.rand:"")+(B.ench?"e"+B.ench:"")+(B.gems?"g"+B.gems.join(","):"")+(B.sock?"s":"")
}this.loadScales=function(C,B){var E=Ao[C][0];
for(var D in A4){if(B==D||(!B&&!isNaN(D))){AX[C][D]=1;
for(var A in E){if(E[A].status[D]==AE&&E[A].response[D]){E[A].response[D]()
}}}}};
this.register=function(C,A,B,D){var E=Ao[C][0];
Au(C,A,B);
if(AX[C]&&!AX[C][B]){E[A].status[B]=AE;
E[A].response[B]=this.register.bind(this,C,A,B,D);
return 
}if(E[A].timer){clearTimeout(E[A].timer);
E[A].timer=null
}if(D.map){if(E[A].map==null){E[A].map=new Mapper({parent:$WH.ce("div"),zoom:3,zoomable:false,buttons:false})
}E[A].map.update(D.map);
delete D.map
}$WH.cO(E[A],D);
if(E[A].status[B]==AJ||E[A].status[B]==AE){if(E[A][AB(B)]){E[A].status[B]=AI
}else{E[A].status[B]=Am
}}if(A0==C&&A==AK&&AG==B){AY(E[A][AB(B)],E[A].icon,E[A].map,E[A][AS(B)],E[A][AB(B,2)])
}};
this.registerNpc=function(A,B,C){this.register(Al,A,B,C)
};
this.registerObject=function(A,B,C){this.register(Av,A,B,C)
};
this.registerItem=function(A,B,C){this.register(AZ,A,B,C)
};
this.registerQuest=function(A,B,C){this.register(AQ,A,B,C)
};
this.registerSpell=function(A,B,C){this.register(Ak,A,B,C)
};
this.registerAchievement=function(A,B,C){this.register(As,A,B,C)
};
this.registerProfile=function(A,B,C){this.register(Aw,A,B,C)
};
this.request=function(E,A,C,B){if(!B){B={}
}var D=A1(A,B);
Au(E,D,C);
A5(E,A,C,1,B)
};
this.requestItem=function(A,B){this.request(AZ,A,A7.getId(),B)
};
this.requestSpell=function(A){this.request(Ak,A,A7.getId())
};
this.getStatus=function(C,A,B){var D=Ao[C][0];
if(D[A]!=null){return D[A].status[B]
}else{return AH
}};
this.getItemStatus=function(A,B){this.getStatus(AZ,A,B)
};
this.getSpellStatus=function(A,B){this.getStatus(Ak,A,B)
};
if(AD){this.set=function(A){$WH.cO(Aj,A)
};
this.showTooltip=function(A,C,B){Ar(A);
AY(C,B)
};
this.hideTooltip=function(){$WH.Tooltip.hide()
};
this.moveTooltip=function(A){A8(A)
}
}Ag()
}
};
WOW={};
WOW.Characters=function(D){return{add:function G(){var H=new AJS.Dialog({width:500,height:190,id:"add-character-dialog"});
var I=new AJS.Dialog({width:200,height:95,id:"add-character-progress-dialog",keypressListener:function(){}});
I.addPanel("Loading","<h1>Loading...</h1>");
H.addHeader("Add Character","dialog-title");
H.addPanel("Select Character","<form id='add-character-form' class='aui' action=''><fieldset><legend class='assistive'>Select your World of Warcraft Character</legend><div class='field-group'><label for='name'>Name:</label><input name='name' size='30'></div><div class='field-group'><label for='realm'>Realm:</label><input name='realm' size='30'></div></fieldset></form>");
H.addButton("Add",function(){I.show();
var J={name:D("#add-character-form input[name='name']").val(),realm:D("#add-character-form input[name='realm']").val()};
D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character/"+AJS.Data.get("remote-user")+".json",data:JSON.stringify(J),type:"POST",dataType:"json",contentType:"application/json",accepts:"application/json",success:function(K){alert("Character linked.");
I.hide();
H.hide();
window.location.reload()
},error:function(K){if(K.status==409){alert("Chracter not already linked.")
}else{alert("Chracter not found.")
}I.hide()
}})
},"add-character-add-button");
H.addCancel(AJS.I18n.getText("cancel.name"),function(){H.remove()
});
H.show()
},editMain:function B(){D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character",type:"GET",accepts:"application/json",success:function(M){var L="";
for(var H=0,I=M.character.length;
H<I;
H++){var J=M.character[H].name+"-"+M.character[0].realm;
L+="<option value='"+J+"'>"+J+"</option>"
}var K=new AJS.Dialog({width:500,height:190,id:"edit-main-dialog"});
K.addHeader("Main Character","dialog-title");
K.addPanel("Select Character","<form id='add-character-form' class='aui' action=''><fieldset><legend class='assistive'>Select your main World of Warcraft Character</legend><div class='field-group'><label for='character'>Character:</label><Select name='character' size='1'>"+L+"</select></div></fieldset></form>");
K.addButton("Save",function(){var O=D("#add-character-form select[name='character']").val();
var N={name:O.substring(0,O.indexOf("-")),realm:O.substring(O.indexOf("-")+1)};
D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character/"+AJS.Data.get("remote-user")+"/main.json",data:JSON.stringify(N),type:"POST",dataType:"json",contentType:"application/json",accepts:"application/json",success:function(P){alert("Main Character updated.");
K.hide();
window.location.reload()
},error:function(P){alert("Main Chracter not updated.")
}})
},"edit-main-character-add-button");
K.addCancel(AJS.I18n.getText("cancel.name"),function(){K.remove()
});
K.show()
},error:function(){}})
},remove:function F(H,I){D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character/"+AJS.Data.get("remote-user")+"/"+H+"/"+I+".json",type:"DELETE",dataType:"json",accepts:"application/json",success:function(J){D(".character[data-name="+I+"]").remove()
},error:function(){alert("Chracter not deleted.")
}})
},load:function E(J){var I=J.attr("data-name"),H=J.attr("data-realm");
J.html("<span class='character-info'>Loading...</span>");
D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character.json",data:"name="+I+"&realm="+H,type:"GET",accepts:"application/json",success:function(O){var K="";
for(var M=0;
M<18;
M++){var N=O.items[M];
N.link=N.itemId&&N.itemId>0?"http://www.wowhead.com/item="+N.itemId:"#";
var L=N.icon;
N.icon=L?L.toLowerCase():"";
K=K+AJS.template.load("character-item-template").fillHtml(N)
}J.html(AJS.template.load("character-template").fill({name:O.name,realm:O.realm,avatarURL:O.avatarURL,"character-css-class":"character-"+O["class"].toLowerCase().replace(" ","-"),"class":O["class"],spec:O.spec,race:O.race,"items:html":K,averageItemLevel:O.averageItemLevel,level:O.level}));
D(".character-delete-link",J).click(function(){WOW.Characters.remove(H,I)
})
},error:function(){J.html("<span class='character-info'>Error loading character.</span>")
}})
},loadSummary:function A(J){var I=J.attr("data-name"),H=J.attr("data-realm");
D(".character-name",J).mousemove(function(K){D(".character-tooltip",J).show().css("left",K.pageX+2).css("top",K.pageY+2)
}).mouseleave(function(){D(".character-tooltip",J).hide()
});
D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character.json",data:"name="+I+"&realm="+H,type:"GET",accepts:"application/json",success:function(L){var K="character-"+L["class"].toLowerCase().replace(" ","-");
D(".character-tooltip",J).html(AJS.template.load("character-template-tooltip").fill({name:L.name,realm:L.realm,avatarURL:L.avatarURL,"character-css-class":K,"class":L["class"],spec:L.spec,race:L.race,averageItemLevel:L.averageItemLevel,level:L.level}));
D(".character-name",J).addClass(K);
D(".character-name",J).css("cursor","pointer").click(function(){window.open("http://us.battle.net/wow/en/character/"+L.realm+"/"+L.name+"/simple");
return false
})
},error:function(){D(".character-tooltip",J).html("<span class='character-info'>Error loading character.</span>")
}})
},loadProfile:function C(J){var I=J.attr("data-name"),H=J.attr("data-realm");
D.ajax({url:AJS.Confluence.getContextPath()+"/rest/wow/1.0/wow/character.json",data:"name="+I+"&realm="+H,type:"GET",accepts:"application/json",success:function(L){var K="character-"+L["class"].toLowerCase().replace(" ","-");
J.html(AJS.template.load("character-template-tooltip").fill({name:L.name,realm:L.realm,avatarURL:L.avatarURL,"character-css-class":K,"class":L["class"],spec:L.spec,race:L.race,averageItemLevel:L.averageItemLevel,level:L.level}));
D(".character-name",J).addClass(K);
D(".character-name",J).css("cursor","pointer").click(function(){window.open("http://us.battle.net/wow/en/character/"+L.realm+"/"+L.name+"/simple");
return false
})
},error:function(){J.html("<span class='character-info'>Error loading character.</span>")
}})
}}
}(AJS.$);
AJS.toInit(function(A){A("a.add-character-link").click(function(){WOW.Characters.add();
return false
});
A(".character").each(function(){WOW.Characters.load(A(this))
});
A(".character-summary").each(function(){WOW.Characters.loadSummary(A(this))
});
A(".character-profile").each(function(){WOW.Characters.loadProfile(A(this))
});
A(".edit-main-link").click(function(){WOW.Characters.editMain(A(this));
return false
});
A(".character").mouseenter(function(){A(".character-delete-link").hide();
A(".character-delete-link",this).show()
}).mouseleave(function(){A(".character-delete-link").hide()
})
});
var JSON=JSON||{};
(function(){function f(n){return n<10?"0"+n:n
}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null
};
String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()
}
}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;
function quote(string){escapable.lastIndex=0;
return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];
return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)
})+'"':'"'+string+'"'
}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];
if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)
}if(typeof rep==="function"){value=rep.call(holder,key,value)
}switch(typeof value){case"string":return quote(value);
case"number":return isFinite(value)?String(value):"null";
case"boolean":case"null":return String(value);
case"object":if(!value){return"null"
}gap+=indent;
partial=[];
if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;
for(i=0;
i<length;
i+=1){partial[i]=str(i,value)||"null"
}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";
gap=mind;
return v
}if(rep&&typeof rep==="object"){length=rep.length;
for(i=0;
i<length;
i+=1){k=rep[i];
if(typeof k==="string"){v=str(k,value);
if(v){partial.push(quote(k)+(gap?": ":":")+v)
}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);
if(v){partial.push(quote(k)+(gap?": ":":")+v)
}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";
gap=mind;
return v
}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;
gap="";
indent="";
if(typeof space==="number"){for(i=0;
i<space;
i+=1){indent+=" "
}}else{if(typeof space==="string"){indent=space
}}rep=replacer;
if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")
}return str("",{"":value})
}
}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;
function walk(holder,key){var k,v,value=holder[key];
if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);
if(v!==undefined){value[k]=v
}else{delete value[k]
}}}}return reviver.call(holder,key,value)
}cx.lastIndex=0;
if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)
})
}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");
return typeof reviver==="function"?walk({"":j},""):j
}throw new SyntaxError("JSON.parse")
}
}}());

