var AXIS={ancestor:function(d,c,b){var a=[];while((d=d.parentNode)){if(!c||c(d)){a.push(d);}if(b&&b(d)){return a;}}return a;},ancestorOrSelf:function(d,c,b){var a=[];
if(!c||c(d)){a.push(d);}if(b&&b(d)){return a;}return a.concat(this.ancestor(d,c,b));},attribute:function(f,e,d){var a,c,b=[];if(f.nodeType===1&&f.hasAttributes()){for(a=0,c=f.attributes.length;
a<c;a++){if(!e||e(f.attributes[a])){b.push(f.attributes[a]);}if(d&&d(f.attributes[a])){return b;}}}return b;},child:function(f,e,d){var a,c,g,b=[];if(f.hasChildNodes()){for(a=0,c=f.childNodes.length;
a<c;a++){g=f.childNodes[a];if(!e||e(g)){b.push(g);}if(d&&d(g)){return b;}}}return b;},descendant:function(e,d,c){var b=this.child(e),a=[],f;while(b.length){f=b.shift();
b.unshift.apply(b,this.child(f));if(!d||d(f)){a.push(f);}if(c&&c(f)){return a;}}return a;},descendantOrSelf:function(d,c,b){var a=[];if(!c||c(d)){a.push(d);}if(b&&b(d)){return a;
}return a.concat(this.descendant(d,c,b));},following:function(start,filter,stop){var output=[],cursor=start;
/*@cc_on
var ie6=(/MSIE\s6\b/).test(navigator.userAgent);
@*/
do{while(cursor.nextSibling===null&&cursor.parentNode!==null){
/*@cc_on
if(ie6&&cursor.nodeName.toLowerCase()=='body'&&cursor.parentNode.nodeName.toLowerCase()=='base'){cursor=cursor.parentNode.parentNode;}
@*/
cursor=cursor.parentNode;
}cursor=cursor.nextSibling;if(!cursor){return output;}output=output.concat(this.descendantOrSelf(cursor,filter,stop));if(output.length&&stop&&stop(output[output.length-1])){return output;
}}while(true);},followingSibling:function(d,c,b){var a=[];while((d=d.nextSibling)){if(!c||c(d)){a.push(d);}if(b&&b(d)){return a;}}return a;},parent:function(b,a){return(b.parentNode&&(!a||a(b.parentNode)))?[b.parentNode]:[];
},preceding:function(g,d,c){var a=[],e=g,b,f;do{while(e.previousSibling===null&&e.parentNode!==null){e=e.parentNode;}e=e.previousSibling;if(!e){return a;}b=this.descendantOrSelf(e,d).reverse();
if(c){for(f=0;f<b.length;f++){a.push(b[f]);if(c(b[f])){return a;}}}else{a=a.concat(b);}}while(true);},precedingSibling:function(d,c,b){var a=[];while((d=d.previousSibling)){if(!c||c(d)){a.push(d);
}if(b&&b(d)){return a;}}return a;},self:function(b,a){return(!a||a(b))?[b]:[];}};