DOMStorage={_storage:{},_elements:{},_tokenCounter:1,_NOT_IN_DOM_CONST:1,_getElementStorage:function(elem){var token;token=(elem.__FB_TOKEN||(elem.__FB_TOKEN=[DOMStorage._tokenCounter++]))[0];DOMStorage._elements[token]=elem;return DOMStorage._storage[token]||(DOMStorage._storage[token]={});},_shouldDeleteData:function(element){if(!element.nodeName){return false;}
try{if(null!=element.offsetParent){return false;}}catch(ex){}
if(document.documentElement.contains){return!document.documentElement.contains(element);}else{return(document.documentElement.compareDocumentPosition(element)&DOMStorage._NOT_IN_DOM_CONST);}},setData:function(element,key,value){var element_store=DOMStorage._getElementStorage(element);element_store[key]=value;return element;},getData:function(element,key,default_value){var element_store=DOMStorage._getElementStorage(element);var value=element_store[key];if((default_value!==undefined)&&(value===undefined)){value=element_store[key]=default_value;}
return value;},removeData:function(element,key){var element_store=DOMStorage._getElementStorage(element);delete element_store[key];return element;},cleanup:function(){var elem_token,elem;for(elem_token in DOMStorage._elements){elem=DOMStorage._elements[elem_token];if(DOMStorage._shouldDeleteData(elem)){delete DOMStorage._storage[elem_token];delete DOMStorage._elements[elem_token];}}}};

var CssManager={_enabled:false,_tokens_to_standby_rules:{},SELECTOR_FIELD:0,BODY_FIELD:1,TOKENS_FIELD:2,_paths_included:{},_used_tokens:{},_new_used_tokens:[],enable:function(){if(CssManager.isEnabled()){return;}
CssManager._enabled=true;Arbiter.subscribe('DOM.contentJustAdded',function(type,data){for(var i=0;i<data.length;++i){CssManager._lookForNewTokens(data[i]);}});},isEnabled:function(){return CssManager._enabled;},addStandbyInfo:function(standby_info){for(var path in standby_info.paths_to_rules){if(!CssManager._paths_included[path]){var rules=standby_info.paths_to_rules[path];CssManager._paths_included[path]=true;for(var i=0;i<rules.length;++i){var rule=rules[i];var tokens=rule[CssManager.TOKENS_FIELD];var tokens_flattened={};for(var j=0;j<tokens.length;++j){for(var k=0;k<tokens[j].length;++k){tokens_flattened[tokens[j][k]]=true;}}
for(var token in tokens_flattened){if(!CssManager._tokens_to_standby_rules[token]){CssManager._tokens_to_standby_rules[token]=[];}
CssManager._tokens_to_standby_rules[token].push(rule);}}}}
for(var i=0;i<standby_info.used_tokens.length;++i){this._used_tokens[standby_info.used_tokens[i]]=true;}},useToken:function(token){if(!CssManager._used_tokens[token]){CssManager._used_tokens[token]=true;CssManager._new_used_tokens.push(token);CssManager._dirty();}},useID:function(id){CssManager.useToken('#'+id);},useClasses:function(className){var classes=className.split(/\s+/);for(var i=0;i<classes.length;++i){CssManager.useToken('.'+classes[i]);}},useElement:function(element){if(element.id){CssManager.useID(element.id);}
if(element.className){CssManager.useClasses(element.className);}},_dirty:function(){if(!CssManager._is_dirty){CssManager._is_dirty=true;CssManager._applyUsedRules.defer();}},_lookForNewTokens:function(root){var traverse=function(element){if(!element.tagName){return;}
CssManager.useElement(element);for(var i=0;i<element.childNodes.length;++i){traverse(element.childNodes[i]);}};traverse(root);CssManager._applyUsedRules();},_applyUsedRules:function(){if(!CssManager.isEnabled()){return;}
var used_rules=[];for(var i=0;i<CssManager._new_used_tokens.length;++i){var new_token=CssManager._new_used_tokens[i];var standby_rules=CssManager._tokens_to_standby_rules[new_token];if(standby_rules){for(var j=0;j<standby_rules.length;++j){var rule=standby_rules[j];var tokens=rule[CssManager.TOKENS_FIELD];if(tokens!==null&&CssManager._isSelectorUsed(tokens)){used_rules.push(rule);rule[CssManager.TOKENS_FIELD]=null;}}}}
CssManager._addRules(used_rules);CssManager._new_used_tokens=[];CssManager._is_dirty=false;},_isSelectorUsed:function(selector_tokens){for(var i=0;i<selector_tokens.length;++i){if(CssManager._isSubselectorUsed(selector_tokens[i])){return true;}}
return false;},_isSubselectorUsed:function(subselector_tokens){for(var j=0;j<subselector_tokens.length;++j){if(!CssManager._used_tokens[subselector_tokens[j]]){return false;}}
return true;},_addRules:function(rules){if(!rules.length){return;}
var sheet=document.styleSheets[document.styleSheets.length-1];if(sheet.addRule){for(var i=0;i<rules.length;++i){var selector=rules[i][CssManager.SELECTOR_FIELD];var body=rules[i][CssManager.BODY_FIELD];var subselectors=selector.split(',');for(var j=0;j<subselectors.length;++j){if(body){sheet.addRule(subselectors[j],body);}}}}else{var css=[];for(var i=0;i<rules.length;++i){var selector=rules[i][CssManager.SELECTOR_FIELD];var body=rules[i][CssManager.BODY_FIELD];css.push(selector+'{'+body+'}');}
document.body.appendChild($N('style',css.join('\n')));}}};