UNPKG

devil-windows

Version:

Debugger, profiler and runtime with embedded WebKit DevTools client (for Windows).

561 lines 102 kB
Object.isEmpty=function(obj) {for(var i in obj) return false;return true;} Object.values=function(obj) {var result=Object.keys(obj);var length=result.length;for(var i=0;i<length;++i) result[i]=obj[result[i]];return result;} function mod(m,n) {return((m%n)+n)%n;} String.prototype.findAll=function(string) {var matches=[];var i=this.indexOf(string);while(i!==-1){matches.push(i);i=this.indexOf(string,i+string.length);} return matches;} String.prototype.lineEndings=function() {if(!this._lineEndings){this._lineEndings=this.findAll("\n");this._lineEndings.push(this.length);} return this._lineEndings;} String.prototype.lineCount=function() {var lineEndings=this.lineEndings();return lineEndings.length;} String.prototype.lineAt=function(lineNumber) {var lineEndings=this.lineEndings();var lineStart=lineNumber>0?lineEndings[lineNumber-1]+1:0;var lineEnd=lineEndings[lineNumber];var lineContent=this.substring(lineStart,lineEnd);if(lineContent.length>0&&lineContent.charAt(lineContent.length-1)==="\r") lineContent=lineContent.substring(0,lineContent.length-1);return lineContent;} String.prototype.escapeCharacters=function(chars) {var foundChar=false;for(var i=0;i<chars.length;++i){if(this.indexOf(chars.charAt(i))!==-1){foundChar=true;break;}} if(!foundChar) return String(this);var result="";for(var i=0;i<this.length;++i){if(chars.indexOf(this.charAt(i))!==-1) result+="\\";result+=this.charAt(i);} return result;} String.regexSpecialCharacters=function() {return"^[]{}()\\.^$*+?|-,";} String.prototype.escapeForRegExp=function() {return this.escapeCharacters(String.regexSpecialCharacters());} String.prototype.escapeHTML=function() {return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");} String.prototype.collapseWhitespace=function() {return this.replace(/[\s\xA0]+/g," ");} String.prototype.trimMiddle=function(maxLength) {if(this.length<=maxLength) return String(this);var leftHalf=maxLength>>1;var rightHalf=maxLength-leftHalf-1;return this.substr(0,leftHalf)+"\u2026"+this.substr(this.length-rightHalf,rightHalf);} String.prototype.trimEnd=function(maxLength) {if(this.length<=maxLength) return String(this);return this.substr(0,maxLength-1)+"\u2026";} String.prototype.trimURL=function(baseURLDomain) {var result=this.replace(/^(https|http|file):\/\//i,"");if(baseURLDomain) result=result.replace(new RegExp("^"+baseURLDomain.escapeForRegExp(),"i"),"");return result;} String.prototype.toTitleCase=function() {return this.substring(0,1).toUpperCase()+this.substring(1);} String.prototype.compareTo=function(other) {if(this>other) return 1;if(this<other) return-1;return 0;} function sanitizeHref(href) {return href&&href.trim().toLowerCase().startsWith("javascript:")?null:href;} String.prototype.removeURLFragment=function() {var fragmentIndex=this.indexOf("#");if(fragmentIndex==-1) fragmentIndex=this.length;return this.substring(0,fragmentIndex);} String.prototype.startsWith=function(substring) {return!this.lastIndexOf(substring,0);} String.prototype.endsWith=function(substring) {return this.indexOf(substring,this.length-substring.length)!==-1;} String.prototype.hashCode=function() {var result=0;for(var i=0;i<this.length;++i) result=(result*3+this.charCodeAt(i))|0;return result;} String.prototype.isDigitAt=function(index) {var c=this.charCodeAt(index);return 48<=c&&c<=57;} String.naturalOrderComparator=function(a,b) {var chunk=/^\d+|^\D+/;var chunka,chunkb,anum,bnum;while(1){if(a){if(!b) return 1;}else{if(b) return-1;else return 0;} chunka=a.match(chunk)[0];chunkb=b.match(chunk)[0];anum=!isNaN(chunka);bnum=!isNaN(chunkb);if(anum&&!bnum) return-1;if(bnum&&!anum) return 1;if(anum&&bnum){var diff=chunka-chunkb;if(diff) return diff;if(chunka.length!==chunkb.length){if(!+chunka&&!+chunkb) return chunka.length-chunkb.length;else return chunkb.length-chunka.length;}}else if(chunka!==chunkb) return(chunka<chunkb)?-1:1;a=a.substring(chunka.length);b=b.substring(chunkb.length);}} Number.constrain=function(num,min,max) {if(num<min) num=min;else if(num>max) num=max;return num;} Number.gcd=function(a,b) {if(b===0) return a;else return Number.gcd(b,a%b);} Number.toFixedIfFloating=function(value) {if(!value||isNaN(value)) return value;var number=Number(value);return number%1?number.toFixed(3):String(number);} Date.prototype.toISO8601Compact=function() {function leadZero(x) {return(x>9?"":"0")+x;} return this.getFullYear()+ leadZero(this.getMonth()+1)+ leadZero(this.getDate())+"T"+ leadZero(this.getHours())+ leadZero(this.getMinutes())+ leadZero(this.getSeconds());} Date.prototype.toConsoleTime=function() {function leadZero2(x) {return(x>9?"":"0")+x;} function leadZero3(x) {return(Array(4-x.toString().length)).join('0')+x;} return this.getFullYear()+"-"+ leadZero2(this.getMonth()+1)+"-"+ leadZero2(this.getDate())+" "+ leadZero2(this.getHours())+":"+ leadZero2(this.getMinutes())+":"+ leadZero2(this.getSeconds())+"."+ leadZero3(this.getMilliseconds());} Object.defineProperty(Array.prototype,"remove",{value:function(value,firstOnly) {var index=this.indexOf(value);if(index===-1) return;if(firstOnly){this.splice(index,1);return;} for(var i=index+1,n=this.length;i<n;++i){if(this[i]!==value) this[index++]=this[i];} this.length=index;}});Object.defineProperty(Array.prototype,"keySet",{value:function() {var keys={};for(var i=0;i<this.length;++i) keys[this[i]]=true;return keys;}});Object.defineProperty(Array.prototype,"pushAll",{value:function(array) {Array.prototype.push.apply(this,array);}});Object.defineProperty(Array.prototype,"rotate",{value:function(index) {var result=[];for(var i=index;i<index+this.length;++i) result.push(this[i%this.length]);return result;}});Object.defineProperty(Array.prototype,"sortNumbers",{value:function() {function numericComparator(a,b) {return a-b;} this.sort(numericComparator);}});Object.defineProperty(Uint32Array.prototype,"sort",{value:Array.prototype.sort});(function(){var partition={value:function(comparator,left,right,pivotIndex) {function swap(array,i1,i2) {var temp=array[i1];array[i1]=array[i2];array[i2]=temp;} var pivotValue=this[pivotIndex];swap(this,right,pivotIndex);var storeIndex=left;for(var i=left;i<right;++i){if(comparator(this[i],pivotValue)<0){swap(this,storeIndex,i);++storeIndex;}} swap(this,right,storeIndex);return storeIndex;}};Object.defineProperty(Array.prototype,"partition",partition);Object.defineProperty(Uint32Array.prototype,"partition",partition);var sortRange={value:function(comparator,leftBound,rightBound,sortWindowLeft,sortWindowRight) {function quickSortRange(array,comparator,left,right,sortWindowLeft,sortWindowRight) {if(right<=left) return;var pivotIndex=Math.floor(Math.random()*(right-left))+left;var pivotNewIndex=array.partition(comparator,left,right,pivotIndex);if(sortWindowLeft<pivotNewIndex) quickSortRange(array,comparator,left,pivotNewIndex-1,sortWindowLeft,sortWindowRight);if(pivotNewIndex<sortWindowRight) quickSortRange(array,comparator,pivotNewIndex+1,right,sortWindowLeft,sortWindowRight);} if(leftBound===0&&rightBound===(this.length-1)&&sortWindowLeft===0&&sortWindowRight>=rightBound) this.sort(comparator);else quickSortRange(this,comparator,leftBound,rightBound,sortWindowLeft,sortWindowRight);return this;}} Object.defineProperty(Array.prototype,"sortRange",sortRange);Object.defineProperty(Uint32Array.prototype,"sortRange",sortRange);})();Object.defineProperty(Array.prototype,"stableSort",{value:function(comparator) {function defaultComparator(a,b) {return a<b?-1:(a>b?1:0);} comparator=comparator||defaultComparator;var indices=new Array(this.length);for(var i=0;i<this.length;++i) indices[i]=i;var self=this;function indexComparator(a,b) {var result=comparator(self[a],self[b]);return result?result:a-b;} indices.sort(indexComparator);for(var i=0;i<this.length;++i){if(indices[i]<0||i===indices[i]) continue;var cyclical=i;var saved=this[i];while(true){var next=indices[cyclical];indices[cyclical]=-1;if(next===i){this[cyclical]=saved;break;}else{this[cyclical]=this[next];cyclical=next;}}} return this;}});Object.defineProperty(Array.prototype,"qselect",{value:function(k,comparator) {if(k<0||k>=this.length) return;if(!comparator) comparator=function(a,b){return a-b;} var low=0;var high=this.length-1;for(;;){var pivotPosition=this.partition(comparator,low,high,Math.floor((high+low)/2));if(pivotPosition===k) return this[k];else if(pivotPosition>k) high=pivotPosition-1;else low=pivotPosition+1;}}});Object.defineProperty(Array.prototype,"lowerBound",{value:function(object,comparator,left,right) {function defaultComparator(a,b) {return a<b?-1:(a>b?1:0);} comparator=comparator||defaultComparator;var l=left||0;var r=right!==undefined?right:this.length;while(l<r){var m=(l+r)>>1;if(comparator(object,this[m])>0) l=m+1;else r=m;} return r;}});Object.defineProperty(Array.prototype,"upperBound",{value:function(object,comparator,left,right) {function defaultComparator(a,b) {return a<b?-1:(a>b?1:0);} comparator=comparator||defaultComparator;var l=left||0;var r=right!==undefined?right:this.length;while(l<r){var m=(l+r)>>1;if(comparator(object,this[m])>=0) l=m+1;else r=m;} return r;}});Object.defineProperty(Uint32Array.prototype,"lowerBound",{value:Array.prototype.lowerBound});Object.defineProperty(Uint32Array.prototype,"upperBound",{value:Array.prototype.upperBound});Object.defineProperty(Float64Array.prototype,"lowerBound",{value:Array.prototype.lowerBound});Object.defineProperty(Array.prototype,"binaryIndexOf",{value:function(value,comparator) {var index=this.lowerBound(value,comparator);return index<this.length&&comparator(value,this[index])===0?index:-1;}});Object.defineProperty(Array.prototype,"select",{value:function(field) {var result=new Array(this.length);for(var i=0;i<this.length;++i) result[i]=this[i][field];return result;}});Object.defineProperty(Array.prototype,"peekLast",{value:function() {return this[this.length-1];}});(function(){function mergeOrIntersect(array1,array2,comparator,mergeNotIntersect) {var result=[];var i=0;var j=0;while(i<array1.length&&j<array2.length){var compareValue=comparator(array1[i],array2[j]);if(mergeNotIntersect||!compareValue) result.push(compareValue<=0?array1[i]:array2[j]);if(compareValue<=0) i++;if(compareValue>=0) j++;} if(mergeNotIntersect){while(i<array1.length) result.push(array1[i++]);while(j<array2.length) result.push(array2[j++]);} return result;} Object.defineProperty(Array.prototype,"intersectOrdered",{value:function(array,comparator) {return mergeOrIntersect(this,array,comparator,false);}});Object.defineProperty(Array.prototype,"mergeOrdered",{value:function(array,comparator) {return mergeOrIntersect(this,array,comparator,true);}});}());function insertionIndexForObjectInListSortedByFunction(object,list,comparator,insertionIndexAfter) {if(insertionIndexAfter) return list.upperBound(object,comparator);else return list.lowerBound(object,comparator);} String.sprintf=function(format,var_arg) {return String.vsprintf(format,Array.prototype.slice.call(arguments,1));} String.tokenizeFormatString=function(format,formatters) {var tokens=[];var substitutionIndex=0;function addStringToken(str) {tokens.push({type:"string",value:str});} function addSpecifierToken(specifier,precision,substitutionIndex) {tokens.push({type:"specifier",specifier:specifier,precision:precision,substitutionIndex:substitutionIndex});} var index=0;for(var precentIndex=format.indexOf("%",index);precentIndex!==-1;precentIndex=format.indexOf("%",index)){addStringToken(format.substring(index,precentIndex));index=precentIndex+1;if(format[index]==="%"){addStringToken("%");++index;continue;} if(format.isDigitAt(index)){var number=parseInt(format.substring(index),10);while(format.isDigitAt(index)) ++index;if(number>0&&format[index]==="$"){substitutionIndex=(number-1);++index;}} var precision=-1;if(format[index]==="."){++index;precision=parseInt(format.substring(index),10);if(isNaN(precision)) precision=0;while(format.isDigitAt(index)) ++index;} if(!(format[index]in formatters)){addStringToken(format.substring(precentIndex,index+1));++index;continue;} addSpecifierToken(format[index],precision,substitutionIndex);++substitutionIndex;++index;} addStringToken(format.substring(index));return tokens;} String.standardFormatters={d:function(substitution) {return!isNaN(substitution)?substitution:0;},f:function(substitution,token) {if(substitution&&token.precision>-1) substitution=substitution.toFixed(token.precision);return!isNaN(substitution)?substitution:(token.precision>-1?Number(0).toFixed(token.precision):0);},s:function(substitution) {return substitution;}} String.vsprintf=function(format,substitutions) {return String.format(format,substitutions,String.standardFormatters,"",function(a,b){return a+b;}).formattedResult;} String.format=function(format,substitutions,formatters,initialValue,append) {if(!format||!substitutions||!substitutions.length) return{formattedResult:append(initialValue,format),unusedSubstitutions:substitutions};function prettyFunctionName() {return"String.format(\""+format+"\", \""+substitutions.join("\", \"")+"\")";} function warn(msg) {console.warn(prettyFunctionName()+": "+msg);} function error(msg) {console.error(prettyFunctionName()+": "+msg);} var result=initialValue;var tokens=String.tokenizeFormatString(format,formatters);var usedSubstitutionIndexes={};for(var i=0;i<tokens.length;++i){var token=tokens[i];if(token.type==="string"){result=append(result,token.value);continue;} if(token.type!=="specifier"){error("Unknown token type \""+token.type+"\" found.");continue;} if(token.substitutionIndex>=substitutions.length){error("not enough substitution arguments. Had "+substitutions.length+" but needed "+(token.substitutionIndex+1)+", so substitution was skipped.");result=append(result,"%"+(token.precision>-1?token.precision:"")+token.specifier);continue;} usedSubstitutionIndexes[token.substitutionIndex]=true;if(!(token.specifier in formatters)){warn("unsupported format character \u201C"+token.specifier+"\u201D. Treating as a string.");result=append(result,substitutions[token.substitutionIndex]);continue;} result=append(result,formatters[token.specifier](substitutions[token.substitutionIndex],token));} var unusedSubstitutions=[];for(var i=0;i<substitutions.length;++i){if(i in usedSubstitutionIndexes) continue;unusedSubstitutions.push(substitutions[i]);} return{formattedResult:result,unusedSubstitutions:unusedSubstitutions};} function createSearchRegex(query,caseSensitive,isRegex) {var regexFlags=caseSensitive?"g":"gi";var regexObject;if(isRegex){try{regexObject=new RegExp(query,regexFlags);}catch(e){}} if(!regexObject) regexObject=createPlainTextSearchRegex(query,regexFlags);return regexObject;} function createPlainTextSearchRegex(query,flags) {var regexSpecialCharacters=String.regexSpecialCharacters();var regex="";for(var i=0;i<query.length;++i){var c=query.charAt(i);if(regexSpecialCharacters.indexOf(c)!=-1) regex+="\\";regex+=c;} return new RegExp(regex,flags||"");} function countRegexMatches(regex,content) {var text=content;var result=0;var match;while(text&&(match=regex.exec(text))){if(match[0].length>0) ++result;text=text.substring(match.index+1);} return result;} function numberToStringWithSpacesPadding(value,symbolsCount) {var numberString=value.toString();var paddingLength=Math.max(0,symbolsCount-numberString.length);var paddingString=Array(paddingLength+1).join("\u00a0");return paddingString+numberString;} var createObjectIdentifier=function() {return"_"+ ++createObjectIdentifier._last;} createObjectIdentifier._last=0;var Set=function() {this._set={};this._size=0;} Set.fromArray=function(array) {var result=new Set();array.forEach(function(item){result.add(item);});return result;} Set.prototype={add:function(item) {var objectIdentifier=item.__identifier;if(!objectIdentifier){objectIdentifier=createObjectIdentifier();item.__identifier=objectIdentifier;} if(!this._set[objectIdentifier]) ++this._size;this._set[objectIdentifier]=item;},remove:function(item) {if(this._set[item.__identifier]){--this._size;delete this._set[item.__identifier];return true;} return false;},values:function() {var result=new Array(this._size);var i=0;for(var objectIdentifier in this._set) result[i++]=this._set[objectIdentifier];return result;},contains:function(item) {return!!this._set[item.__identifier];},size:function() {return this._size;},clear:function() {this._set={};this._size=0;}} var Map=function() {this._map={};this._size=0;} Map.prototype={put:function(key,value) {var objectIdentifier=key.__identifier;if(!objectIdentifier){objectIdentifier=createObjectIdentifier();key.__identifier=objectIdentifier;} if(!this._map[objectIdentifier]) ++this._size;this._map[objectIdentifier]=[key,value];},remove:function(key) {var result=this._map[key.__identifier];if(!result) return undefined;--this._size;delete this._map[key.__identifier];return result[1];},keys:function() {return this._list(0);},values:function() {return this._list(1);},_list:function(index) {var result=new Array(this._size);var i=0;for(var objectIdentifier in this._map) result[i++]=this._map[objectIdentifier][index];return result;},get:function(key) {var entry=this._map[key.__identifier];return entry?entry[1]:undefined;},contains:function(key) {var entry=this._map[key.__identifier];return!!entry;},size:function() {return this._size;},clear:function() {this._map={};this._size=0;}} var StringMap=function() {this._map={};this._size=0;} StringMap.prototype={put:function(key,value) {if(key==="__proto__"){if(!this._hasProtoKey){++this._size;this._hasProtoKey=true;} this._protoValue=value;return;} if(!Object.prototype.hasOwnProperty.call(this._map,key)) ++this._size;this._map[key]=value;},remove:function(key) {var result;if(key==="__proto__"){if(!this._hasProtoKey) return undefined;--this._size;delete this._hasProtoKey;result=this._protoValue;delete this._protoValue;return result;} if(!Object.prototype.hasOwnProperty.call(this._map,key)) return undefined;--this._size;result=this._map[key];delete this._map[key];return result;},keys:function() {var result=Object.keys(this._map)||[];if(this._hasProtoKey) result.push("__proto__");return result;},values:function() {var result=Object.values(this._map);if(this._hasProtoKey) result.push(this._protoValue);return result;},get:function(key) {if(key==="__proto__") return this._protoValue;if(!Object.prototype.hasOwnProperty.call(this._map,key)) return undefined;return this._map[key];},contains:function(key) {var result;if(key==="__proto__") return this._hasProtoKey;return Object.prototype.hasOwnProperty.call(this._map,key);},size:function() {return this._size;},clear:function() {this._map={};this._size=0;delete this._hasProtoKey;delete this._protoValue;}} var StringMultimap=function() {StringMap.call(this);} StringMultimap.prototype={put:function(key,value) {if(key==="__proto__"){if(!this._hasProtoKey){++this._size;this._hasProtoKey=true;this._protoValue=new Set();} this._protoValue.add(value);return;} if(!Object.prototype.hasOwnProperty.call(this._map,key)){++this._size;this._map[key]=new Set();} this._map[key].add(value);},get:function(key) {var result=StringMap.prototype.get.call(this,key);if(!result) result=new Set();return result;},remove:function(key,value) {var values=this.get(key);values.remove(value);if(!values.size()) StringMap.prototype.remove.call(this,key)},removeAll:function(key) {StringMap.prototype.remove.call(this,key);},values:function() {var result=[];var keys=this.keys();for(var i=0;i<keys.length;++i) result.pushAll(this.get(keys[i]).values());return result;},__proto__:StringMap.prototype} var StringSet=function() {this._map=new StringMap();} StringSet.fromArray=function(array) {var result=new StringSet();array.forEach(function(item){result.add(item);});return result;} StringSet.prototype={add:function(value) {this._map.put(value,true);},remove:function(value) {return!!this._map.remove(value);},values:function() {return this._map.keys();},contains:function(value) {return this._map.contains(value);},size:function() {return this._map.size();},clear:function() {this._map.clear();}} function loadXHR(url,async,callback) {function onReadyStateChanged() {if(xhr.readyState!==XMLHttpRequest.DONE) return;if(xhr.status===200){callback(xhr.responseText);return;} callback(null);} var xhr=new XMLHttpRequest();xhr.open("GET",url,async);if(async) xhr.onreadystatechange=onReadyStateChanged;xhr.send(null);if(!async){if(xhr.status===200||xhr.status===0) return xhr.responseText;return null;} return null;} function CallbackBarrier() {this._pendingIncomingCallbacksCount=0;} CallbackBarrier.prototype={createCallback:function(userCallback) {console.assert(!this._outgoingCallback,"CallbackBarrier.createCallback() is called after CallbackBarrier.callWhenDone()");++this._pendingIncomingCallbacksCount;return this._incomingCallback.bind(this,userCallback);},callWhenDone:function(callback) {console.assert(!this._outgoingCallback,"CallbackBarrier.callWhenDone() is called multiple times");this._outgoingCallback=callback;if(!this._pendingIncomingCallbacksCount) this._outgoingCallback();},_incomingCallback:function(userCallback) {console.assert(this._pendingIncomingCallbacksCount>0);if(userCallback){var args=Array.prototype.slice.call(arguments,1);userCallback.apply(null,args);} if(!--this._pendingIncomingCallbacksCount&&this._outgoingCallback) this._outgoingCallback();}} function suppressUnused(value) {} function WeakReference(targetObject) {this._targetObject=targetObject;} WeakReference.prototype={get:function() {return this._targetObject;},clear:function() {this._targetObject=null;}};self.setImmediate=(function(){var callbacks=[];function run(){var cbList=callbacks.slice();callbacks.length=0;cbList.forEach(function(callback){callback();});};return function setImmediate(callback){if(!callbacks.length) new Promise(function(resolve,reject){resolve(null);}).then(run);callbacks.push(callback);};})();;self.WebInspector={_queryParamsObject:{}} WebInspector.queryParam=function(name) {return WebInspector._queryParamsObject.hasOwnProperty(name)?WebInspector._queryParamsObject[name]:null;} {(function parseQueryParameters() {var queryParams=location.search;if(!queryParams) return;var params=queryParams.substring(1).split("&");for(var i=0;i<params.length;++i){var pair=params[i].split("=");WebInspector._queryParamsObject[pair[0]]=pair[1];} var settingsParam=WebInspector.queryParam("settings");if(settingsParam){try{var settings=JSON.parse(window.decodeURI(settingsParam));for(var key in settings) window.localStorage[key]=settings[key];}catch(e){}}})();};WebInspector.UIString=function(string,vararg) {return String.vsprintf(string,Array.prototype.slice.call(arguments,1));};WebInspector.TextUtils={isStopChar:function(char) {return(char>" "&&char<"0")||(char>"9"&&char<"A")||(char>"Z"&&char<"_")||(char>"_"&&char<"a")||(char>"z"&&char<="~");},isWordChar:function(char) {return!WebInspector.TextUtils.isStopChar(char)&&!WebInspector.TextUtils.isSpaceChar(char);},isSpaceChar:function(char) {return WebInspector.TextUtils._SpaceCharRegex.test(char);},isWord:function(word) {for(var i=0;i<word.length;++i){if(!WebInspector.TextUtils.isWordChar(word.charAt(i))) return false;} return true;},isOpeningBraceChar:function(char) {return char==="("||char==="{";},isClosingBraceChar:function(char) {return char===")"||char==="}";},isBraceChar:function(char) {return WebInspector.TextUtils.isOpeningBraceChar(char)||WebInspector.TextUtils.isClosingBraceChar(char);},textToWords:function(text,isWordChar) {var words=[];var startWord=-1;for(var i=0;i<text.length;++i){if(!isWordChar(text.charAt(i))){if(startWord!==-1) words.push(text.substring(startWord,i));startWord=-1;}else if(startWord===-1) startWord=i;} if(startWord!==-1) words.push(text.substring(startWord));return words;},findBalancedCurlyBrackets:function(source,startIndex,lastIndex){lastIndex=lastIndex||source.length;startIndex=startIndex||0;var counter=0;var inString=false;for(var index=startIndex;index<lastIndex;++index){var character=source[index];if(inString){if(character==="\\") ++index;else if(character==="\"") inString=false;}else{if(character==="\"") inString=true;else if(character==="{") ++counter;else if(character==="}"){if(--counter===0) return index+1;}}} return-1;},lineIndent:function(line) {var indentation=0;while(indentation<line.length&&WebInspector.TextUtils.isSpaceChar(line.charAt(indentation))) ++indentation;return line.substr(0,indentation);},isUpperCase:function(text) {return text===text.toUpperCase();},isLowerCase:function(text) {return text===text.toLowerCase();}} WebInspector.TextUtils._SpaceCharRegex=/\s/;WebInspector.TextUtils.Indent={TwoSpaces:" ",FourSpaces:" ",EightSpaces:" ",TabCharacter:"\t"};WebInspector.HeapSnapshotProgressEvent={Update:"ProgressUpdate"};WebInspector.HeapSnapshotCommon={} WebInspector.HeapSnapshotCommon.baseSystemDistance=100000000;WebInspector.HeapSnapshotCommon.AllocationNodeCallers=function(nodesWithSingleCaller,branchingCallers) {this.nodesWithSingleCaller=nodesWithSingleCaller;this.branchingCallers=branchingCallers;} WebInspector.HeapSnapshotCommon.SerializedAllocationNode=function(nodeId,functionName,scriptName,scriptId,line,column,count,size,liveCount,liveSize,hasChildren) {this.id=nodeId;this.name=functionName;this.scriptName=scriptName;this.scriptId=scriptId;this.line=line;this.column=column;this.count=count;this.size=size;this.liveCount=liveCount;this.liveSize=liveSize;this.hasChildren=hasChildren;} WebInspector.HeapSnapshotCommon.AllocationStackFrame=function(functionName,scriptName,scriptId,line,column) {this.functionName=functionName;this.scriptName=scriptName;this.scriptId=scriptId;this.line=line;this.column=column;} WebInspector.HeapSnapshotCommon.Node=function(id,name,distance,nodeIndex,retainedSize,selfSize,type) {this.id=id;this.name=name;this.distance=distance;this.nodeIndex=nodeIndex;this.retainedSize=retainedSize;this.selfSize=selfSize;this.type=type;this.canBeQueried=false;this.detachedDOMTreeNode=false;} WebInspector.HeapSnapshotCommon.Edge=function(name,node,type,edgeIndex) {this.name=name;this.node=node;this.type=type;this.edgeIndex=edgeIndex;};WebInspector.HeapSnapshotCommon.Aggregate=function() {this.count;this.distance;this.self;this.maxRet;this.type;this.name;this.idxs;} WebInspector.HeapSnapshotCommon.AggregateForDiff=function(){this.indexes=[];this.ids=[];this.selfSizes=[];} WebInspector.HeapSnapshotCommon.Diff=function() {this.addedCount=0;this.removedCount=0;this.addedSize=0;this.removedSize=0;this.deletedIndexes=[];this.addedIndexes=[];} WebInspector.HeapSnapshotCommon.DiffForClass=function() {this.addedCount;this.removedCount;this.addedSize;this.removedSize;this.deletedIndexes;this.addedIndexes;this.countDelta;this.sizeDelta;} WebInspector.HeapSnapshotCommon.ComparatorConfig=function() {this.fieldName1;this.ascending1;this.fieldName2;this.ascending2;} WebInspector.HeapSnapshotCommon.WorkerCommand=function() {this.callId;this.disposition;this.objectId;this.newObjectId;this.methodName;this.methodArguments;this.source;} WebInspector.HeapSnapshotCommon.ItemsRange=function(startPosition,endPosition,totalLength,items) {this.startPosition=startPosition;this.endPosition=endPosition;this.totalLength=totalLength;this.items=items;} WebInspector.HeapSnapshotCommon.StaticData=function(nodeCount,rootNodeIndex,totalSize,maxJSObjectId) {this.nodeCount=nodeCount;this.rootNodeIndex=rootNodeIndex;this.totalSize=totalSize;this.maxJSObjectId=maxJSObjectId;} WebInspector.HeapSnapshotCommon.Statistics=function() {this.total;this.v8heap;this.native;this.code;this.jsArrays;this.strings;} WebInspector.HeapSnapshotCommon.NodeFilter=function(minNodeId,maxNodeId) {this.minNodeId=minNodeId;this.maxNodeId=maxNodeId;this.allocationNodeId;} WebInspector.HeapSnapshotCommon.NodeFilter.prototype={equals:function(o) {return this.minNodeId===o.minNodeId&&this.maxNodeId===o.maxNodeId&&this.allocationNodeId===o.allocationNodeId;}};WebInspector.AllocationProfile=function(profile,liveObjectStats) {this._strings=profile.strings;this._liveObjectStats=liveObjectStats;this._nextNodeId=1;this._functionInfos=[] this._idToNode={};this._idToTopDownNode={};this._collapsedTopNodeIdToFunctionInfo={};this._traceTops=null;this._buildFunctionAllocationInfos(profile);this._traceTree=this._buildAllocationTree(profile,liveObjectStats);} WebInspector.AllocationProfile.prototype={_buildFunctionAllocationInfos:function(profile) {var strings=this._strings;var functionInfoFields=profile.snapshot.meta.trace_function_info_fields;var functionIdOffset=functionInfoFields.indexOf("function_id");var functionNameOffset=functionInfoFields.indexOf("name");var scriptNameOffset=functionInfoFields.indexOf("script_name");var scriptIdOffset=functionInfoFields.indexOf("script_id");var lineOffset=functionInfoFields.indexOf("line");var columnOffset=functionInfoFields.indexOf("column");var functionInfoFieldCount=functionInfoFields.length;var rawInfos=profile.trace_function_infos;var infoLength=rawInfos.length;var functionInfos=this._functionInfos=new Array(infoLength/functionInfoFieldCount);var index=0;for(var i=0;i<infoLength;i+=functionInfoFieldCount){functionInfos[index++]=new WebInspector.FunctionAllocationInfo(strings[rawInfos[i+functionNameOffset]],strings[rawInfos[i+scriptNameOffset]],rawInfos[i+scriptIdOffset],rawInfos[i+lineOffset],rawInfos[i+columnOffset]);}},_buildAllocationTree:function(profile,liveObjectStats) {var traceTreeRaw=profile.trace_tree;var functionInfos=this._functionInfos;var idToTopDownNode=this._idToTopDownNode;var traceNodeFields=profile.snapshot.meta.trace_node_fields;var nodeIdOffset=traceNodeFields.indexOf("id");var functionInfoIndexOffset=traceNodeFields.indexOf("function_info_index");var allocationCountOffset=traceNodeFields.indexOf("count");var allocationSizeOffset=traceNodeFields.indexOf("size");var childrenOffset=traceNodeFields.indexOf("children");var nodeFieldCount=traceNodeFields.length;function traverseNode(rawNodeArray,nodeOffset,parent) {var functionInfo=functionInfos[rawNodeArray[nodeOffset+functionInfoIndexOffset]];var id=rawNodeArray[nodeOffset+nodeIdOffset];var stats=liveObjectStats[id];var liveCount=stats?stats.count:0;var liveSize=stats?stats.size:0;var result=new WebInspector.TopDownAllocationNode(id,functionInfo,rawNodeArray[nodeOffset+allocationCountOffset],rawNodeArray[nodeOffset+allocationSizeOffset],liveCount,liveSize,parent);idToTopDownNode[id]=result;functionInfo.addTraceTopNode(result);var rawChildren=rawNodeArray[nodeOffset+childrenOffset];for(var i=0;i<rawChildren.length;i+=nodeFieldCount){result.children.push(traverseNode(rawChildren,i,result));} return result;} return traverseNode(traceTreeRaw,0,null);},serializeTraceTops:function() {if(this._traceTops) return this._traceTops;var result=this._traceTops=[];var functionInfos=this._functionInfos;for(var i=0;i<functionInfos.length;i++){var info=functionInfos[i];if(info.totalCount===0) continue;var nodeId=this._nextNodeId++;var isRoot=i==0;result.push(this._serializeNode(nodeId,info,info.totalCount,info.totalSize,info.totalLiveCount,info.totalLiveSize,!isRoot));this._collapsedTopNodeIdToFunctionInfo[nodeId]=info;} result.sort(function(a,b){return b.size-a.size;});return result;},serializeCallers:function(nodeId) {var node=this._ensureBottomUpNode(nodeId);var nodesWithSingleCaller=[];while(node.callers().length===1){node=node.callers()[0];nodesWithSingleCaller.push(this._serializeCaller(node));} var branchingCallers=[];var callers=node.callers();for(var i=0;i<callers.length;i++){branchingCallers.push(this._serializeCaller(callers[i]));} return new WebInspector.HeapSnapshotCommon.AllocationNodeCallers(nodesWithSingleCaller,branchingCallers);},serializeAllocationStack:function(traceNodeId) {var node=this._idToTopDownNode[traceNodeId];var result=[];while(node){var functionInfo=node.functionInfo;result.push(new WebInspector.HeapSnapshotCommon.AllocationStackFrame(functionInfo.functionName,functionInfo.scriptName,functionInfo.scriptId,functionInfo.line,functionInfo.column));node=node.parent;} return result;},traceIds:function(allocationNodeId) {return this._ensureBottomUpNode(allocationNodeId).traceTopIds;},_ensureBottomUpNode:function(nodeId) {var node=this._idToNode[nodeId];if(!node){var functionInfo=this._collapsedTopNodeIdToFunctionInfo[nodeId];node=functionInfo.bottomUpRoot();delete this._collapsedTopNodeIdToFunctionInfo[nodeId];this._idToNode[nodeId]=node;} return node;},_serializeCaller:function(node) {var callerId=this._nextNodeId++;this._idToNode[callerId]=node;return this._serializeNode(callerId,node.functionInfo,node.allocationCount,node.allocationSize,node.liveCount,node.liveSize,node.hasCallers());},_serializeNode:function(nodeId,functionInfo,count,size,liveCount,liveSize,hasChildren) {return new WebInspector.HeapSnapshotCommon.SerializedAllocationNode(nodeId,functionInfo.functionName,functionInfo.scriptName,functionInfo.scriptId,functionInfo.line,functionInfo.column,count,size,liveCount,liveSize,hasChildren);}} WebInspector.TopDownAllocationNode=function(id,functionInfo,count,size,liveCount,liveSize,parent) {this.id=id;this.functionInfo=functionInfo;this.allocationCount=count;this.allocationSize=size;this.liveCount=liveCount;this.liveSize=liveSize;this.parent=parent;this.children=[];} WebInspector.BottomUpAllocationNode=function(functionInfo) {this.functionInfo=functionInfo;this.allocationCount=0;this.allocationSize=0;this.liveCount=0;this.liveSize=0;this.traceTopIds=[];this._callers=[];} WebInspector.BottomUpAllocationNode.prototype={addCaller:function(traceNode) {var functionInfo=traceNode.functionInfo;var result;for(var i=0;i<this._callers.length;i++){var caller=this._callers[i];if(caller.functionInfo===functionInfo){result=caller;break;}} if(!result){result=new WebInspector.BottomUpAllocationNode(functionInfo);this._callers.push(result);} return result;},callers:function() {return this._callers;},hasCallers:function() {return this._callers.length>0;}} WebInspector.FunctionAllocationInfo=function(functionName,scriptName,scriptId,line,column) {this.functionName=functionName;this.scriptName=scriptName;this.scriptId=scriptId;this.line=line;this.column=column;this.totalCount=0;this.totalSize=0;this.totalLiveCount=0;this.totalLiveSize=0;this._traceTops=[];} WebInspector.FunctionAllocationInfo.prototype={addTraceTopNode:function(node) {if(node.allocationCount===0) return;this._traceTops.push(node);this.totalCount+=node.allocationCount;this.totalSize+=node.allocationSize;this.totalLiveCount+=node.liveCount;this.totalLiveSize+=node.liveSize;},bottomUpRoot:function() {if(!this._traceTops.length) return null;if(!this._bottomUpTree) this._buildAllocationTraceTree();return this._bottomUpTree;},_buildAllocationTraceTree:function() {this._bottomUpTree=new WebInspector.BottomUpAllocationNode(this);for(var i=0;i<this._traceTops.length;i++){var node=this._traceTops[i];var bottomUpNode=this._bottomUpTree;var count=node.allocationCount;var size=node.allocationSize;var liveCount=node.liveCount;var liveSize=node.liveSize;var traceId=node.id;while(true){bottomUpNode.allocationCount+=count;bottomUpNode.allocationSize+=size;bottomUpNode.liveCount+=liveCount;bottomUpNode.liveSize+=liveSize;bottomUpNode.traceTopIds.push(traceId);node=node.parent;if(node===null){break;} bottomUpNode=bottomUpNode.addCaller(node);}}}};WebInspector.HeapSnapshotItem=function(){} WebInspector.HeapSnapshotItem.prototype={itemIndex:function(){},serialize:function(){}};WebInspector.HeapSnapshotEdge=function(snapshot,edgeIndex) {this._snapshot=snapshot;this._edges=snapshot.containmentEdges;this.edgeIndex=edgeIndex||0;} WebInspector.HeapSnapshotEdge.prototype={clone:function() {return new WebInspector.HeapSnapshotEdge(this._snapshot,this.edgeIndex);},hasStringName:function() {throw new Error("Not implemented");},name:function() {throw new Error("Not implemented");},node:function() {return this._snapshot.createNode(this.nodeIndex());},nodeIndex:function() {return this._edges[this.edgeIndex+this._snapshot._edgeToNodeOffset];},toString:function() {return"HeapSnapshotEdge: "+this.name();},type:function() {return this._snapshot._edgeTypes[this._type()];},itemIndex:function() {return this.edgeIndex;},serialize:function() {return new WebInspector.HeapSnapshotCommon.Edge(this.name(),this.node().serialize(),this.type(),this.edgeIndex);},_type:function() {return this._edges[this.edgeIndex+this._snapshot._edgeTypeOffset];}};WebInspector.HeapSnapshotItemIterator=function(){} WebInspector.HeapSnapshotItemIterator.prototype={hasNext:function(){},item:function(){},next:function(){}};WebInspector.HeapSnapshotItemIndexProvider=function(){} WebInspector.HeapSnapshotItemIndexProvider.prototype={itemForIndex:function(newIndex){},};WebInspector.HeapSnapshotNodeIndexProvider=function(snapshot) {this._node=snapshot.createNode();} WebInspector.HeapSnapshotNodeIndexProvider.prototype={itemForIndex:function(index) {this._node.nodeIndex=index;return this._node;}};WebInspector.HeapSnapshotEdgeIndexProvider=function(snapshot) {this._edge=snapshot.createEdge(0);} WebInspector.HeapSnapshotEdgeIndexProvider.prototype={itemForIndex:function(index) {this._edge.edgeIndex=index;return this._edge;}};WebInspector.HeapSnapshotRetainerEdgeIndexProvider=function(snapshot) {this._retainerEdge=snapshot.createRetainingEdge(0);} WebInspector.HeapSnapshotRetainerEdgeIndexProvider.prototype={itemForIndex:function(index) {this._retainerEdge.setRetainerIndex(index);return this._retainerEdge;}};WebInspector.HeapSnapshotEdgeIterator=function(node) {this._sourceNode=node;this.edge=node._snapshot.createEdge(node.edgeIndexesStart());} WebInspector.HeapSnapshotEdgeIterator.prototype={hasNext:function() {return this.edge.edgeIndex<this._sourceNode.edgeIndexesEnd();},item:function() {return this.edge;},next:function() {this.edge.edgeIndex+=this.edge._snapshot._edgeFieldsCount;}};WebInspector.HeapSnapshotRetainerEdge=function(snapshot,retainerIndex) {this._snapshot=snapshot;this.setRetainerIndex(retainerIndex);} WebInspector.HeapSnapshotRetainerEdge.prototype={clone:function() {return new WebInspector.HeapSnapshotRetainerEdge(this._snapshot,this.retainerIndex());},hasStringName:function() {return this._edge().hasStringName();},name:function() {return this._edge().name();},node:function() {return this._node();},nodeIndex:function() {return this._retainingNodeIndex;},retainerIndex:function() {return this._retainerIndex;},setRetainerIndex:function(retainerIndex) {if(retainerIndex===this._retainerIndex) return;this._retainerIndex=retainerIndex;this._globalEdgeIndex=this._snapshot._retainingEdges[retainerIndex];this._retainingNodeIndex=this._snapshot._retainingNodes[retainerIndex];this._edgeInstance=null;this._nodeInstance=null;},set edgeIndex(edgeIndex) {this.setRetainerIndex(edgeIndex);},_node:function() {if(!this._nodeInstance) this._nodeInstance=this._snapshot.createNode(this._retainingNodeIndex);return this._nodeInstance;},_edge:function() {if(!this._edgeInstance) this._edgeInstance=this._snapshot.createEdge(this._globalEdgeIndex);return this._edgeInstance;},toString:function() {return this._edge().toString();},itemIndex:function() {return this._retainerIndex;},serialize:function() {return new WebInspector.HeapSnapshotCommon.Edge(this.name(),this.node().serialize(),this.type(),this._globalEdgeIndex);},type:function() {return this._edge().type();}} WebInspector.HeapSnapshotRetainerEdgeIterator=function(retainedNode) {var snapshot=retainedNode._snapshot;var retainedNodeOrdinal=retainedNode.ordinal();var retainerIndex=snapshot._firstRetainerIndex[retainedNodeOrdinal];this._retainersEnd=snapshot._firstRetainerIndex[retainedNodeOrdinal+1];this.retainer=snapshot.createRetainingEdge(retainerIndex);} WebInspector.HeapSnapshotRetainerEdgeIterator.prototype={hasNext:function() {return this.retainer.retainerIndex()<this._retainersEnd;},item:function() {return this.retainer;},next:function() {this.retainer.setRetainerIndex(this.retainer.retainerIndex()+1);}};WebInspector.HeapSnapshotNode=function(snapshot,nodeIndex) {this._snapshot=snapshot;this.nodeIndex=nodeIndex||0;} WebInspector.HeapSnapshotNode.prototype={distance:function() {return this._snapshot._nodeDistances[this.nodeIndex/this._snapshot._nodeFieldCount];},className:function() {throw new Error("Not implemented");},classIndex:function() {throw new Error("Not implemented");},dominatorIndex:function() {var nodeFieldCount=this._snapshot._nodeFieldCount;return this._snapshot._dominatorsTree[this.nodeIndex/this._snapshot._nodeFieldCount]*nodeFieldCount;},edges:function() {return new WebInspector.HeapSnapshotEdgeIterator(this);},edgesCount:function() {return(this.edgeIndexesEnd()-this.edgeIndexesStart())/this._snapshot._edgeFieldsCount;},id:function() {throw new Error("Not implemented");},isRoot:function() {return this.nodeIndex===this._snapshot._rootNodeIndex;},name:function() {return this._snapshot.strings[this._name()];},retainedSize:function() {return this._snapshot._retainedSizes[this.ordinal()];},retainers:function() {return new WebInspector.HeapSnapshotRetainerEdgeIterator(this);},retainersCount:function() {var snapshot=this._snapshot;var ordinal=this.ordinal();return snapshot._firstRetainerIndex[ordinal+1]-snapshot._firstRetainerIndex[ordinal];},selfSize:function() {var snapshot=this._snapshot;return snapshot.nodes[this.nodeIndex+snapshot._nodeSelfSizeOffset];},type:function() {return this._snapshot._nodeTypes[this._type()];},traceNodeId:function() {var snapshot=this._snapshot;return snapshot.nodes[this.nodeIndex+snapshot._nodeTraceNodeIdOffset];},itemIndex:function() {return this.nodeIndex;},serialize:function() {return new WebInspector.HeapSnapshotCommon.Node(this.id(),this.name(),this.distance(),this.nodeIndex,this.retainedSize(),this.selfSize(),this.type());},_name:function() {var snapshot=this._snapshot;return snapshot.nodes[this.nodeIndex+snapshot._nodeNameOffset];},edgeIndexesStart:function() {return this._snapshot._firstEdgeIndexes[this.ordinal()];},edgeIndexesEnd:function() {return this._snapshot._firstEdgeIndexes[this.ordinal()+1];},ordinal:function() {return this.nodeIndex/this._snapshot._nodeFieldCount;},_nextNodeIndex:function() {return this.nodeIndex+this._snapshot._nodeFieldCount;},_type:function() {var snapshot=this._snapshot;return snapshot.nodes[this.nodeIndex+snapshot._nodeTypeOffset];}};WebInspector.HeapSnapshotNodeIterator=function(node) {this.node=node;this._nodesLength=node._snapshot.nodes.length;} WebInspector.HeapSnapshotNodeIterator.prototype={hasNext:function() {return this.node.nodeIndex<this._nodesLength;},item:function() {return this.node;},next:function() {this.node.nodeIndex=this.node._nextNodeIndex();}} WebInspector.HeapSnapshotIndexRangeIterator=function(itemProvider,indexes) {this._itemProvider=itemProvider;this._indexes=indexes;this._position=0;} WebInspector.HeapSnapshotIndexRangeIterator.prototype={hasNext:function() {return this._position<this._indexes.length},item:function() {var index=this._indexes[this._position];return this._itemProvider.itemForIndex(index);},next:function() {++this._position;}} WebInspector.HeapSnapshotFilteredIterator=function(iterator,filter) {this._iterator=iterator;this._filter=filter;this._skipFilteredItems();} WebInspector.HeapSnapshotFilteredIterator.prototype={hasNext:function() {return this._iterator.hasNext();},item:function() {return this._iterator.item();},next:function() {this._iterator.next();this._skipFilteredItems();},_skipFilteredItems:function() {while(this._iterator.hasNext()&&!this._filter(this._iterator.item())){this._iterator.next();}}} WebInspector.HeapSnapshotProgress=function(dispatcher) {this._dispatcher=dispatcher;} WebInspector.HeapSnapshotProgress.prototype={updateStatus:function(status) {this._sendUpdateEvent(WebInspector.UIString(status));},updateProgress:function(title,value,total) {var percentValue=((total?(value/total):0)*100).toFixed(0);this._sendUpdateEvent(WebInspector.UIString(title,percentValue));},_sendUpdateEvent:function(text) {if(this._dispatcher) this._dispatcher.sendEvent(WebInspector.HeapSnapshotProgressEvent.Update,text);}} WebInspector.HeapSnapshot=function(profile,progress) {this.nodes=profile.nodes;this.containmentEdges=profile.edges;this._metaNode=profile.snapshot.meta;this.strings=profile.strings;this._progress=progress;this._noDistance=-5;this._rootNodeIndex=0;if(profile.snapshot.root_index) this._rootNodeIndex=profile.snapshot.root_index;this._snapshotDiffs={};this._aggregatesForDiff=null;this._aggregates={};this._aggregatesSortedFlags={};this._init();if(profile.snapshot.trace_function_count){this._progress.updateStatus("Buiding allocation statistics\u2026");var nodes=this.nodes;var nodesLength=nodes.length;var nodeFieldCount=this._nodeFieldCount;var node=this.rootNode();var liveObjects={};for(var nodeIndex=0;nodeIndex<nodesLength;nodeIndex+=nodeFieldCount){node.nodeIndex=nodeIndex;var traceNodeId=node.traceNodeId();var stats=liveObjects[traceNodeId];if(!stats){liveObjects[traceNodeId]=stats={count:0,size:0,ids:[]};} stats.count++;stats.size+=node.selfSize();stats.ids.push(node.id());} this._allocationProfile=new WebInspector.AllocationProfile(profile,liveObjects);this._progress.updateStatus("Done");}} function HeapSnapshotMetainfo() {this.node_fields=[];this.node_types=[];this.edge_fields=[];this.edge_types=[];this.trace_function_info_fields=[];this.trace_node_fields=[];this.type_strings={};} function HeapSnapshotHeader() {this.title="";this.meta=new HeapSnapshotMetainfo();this.node_count=0;this.edge_count=0;} WebInspector.HeapSnapshot.prototype={_init:function() {var meta=this._metaNode;this._nodeTypeOffset=meta.node_fields.indexOf("type");this._nodeNameOffset=meta.node_fields.indexOf("name");this._nodeIdOffset=meta.node_fields.indexOf("id");this._nodeSelfSizeOffset=meta.node_fields.indexOf("self_size");this._nodeEdgeCountOffset=meta.node_fields.indexOf("edge_count");this._nodeTraceNodeIdOffset=meta.node_fields.indexOf("trace_node_id");this._nodeFieldCount=meta.node_fields.length;this._nodeTypes=meta.node_types[this._nodeTypeOffset];this._nodeHiddenType=this._nodeTypes.indexOf("hidden");this._nodeObjectType=this._nodeTypes.indexOf("object");this._nodeNativeType=this._nodeTypes.indexOf("native");this._nodeConsStringType=this._nodeTypes.indexOf("concatenated string");this._nodeSlicedStringType=this._nodeTypes.indexOf("sliced string");this._nodeCodeType=this._nodeTypes.indexOf("code");this._nodeSyntheticType=this._nodeTypes.indexOf("synthetic");this._edgeFieldsCount=meta.edge_fields.length;this._edgeTypeOffset=meta.edge_fields.indexOf("type");this._edgeNameOffset=meta.edge_fields.indexOf("name_or_index");this._edgeToNodeOffset=meta.edge_fields.indexOf("to_node");this._edgeTypes=meta.edge_types[this._edgeTypeOffset];this._edgeTypes.push("invisible");this._edgeElementType=this._edgeTypes.indexOf("element");this._edgeHiddenType=this._edgeTypes.indexOf("hidden");this._edgeInternalType=this._edgeTypes.indexOf("internal");this._edgeShortcutType=this._edgeTypes.indexOf("shortcut");this._edgeWeakType=this._edgeTypes.indexOf("weak");this._edgeInvisibleType=this._edgeTypes.indexOf("invisible");this.nodeCount=this.nodes.length/this._nodeFieldCount;this._edgeCount=this.containmentEdges.length/this._edgeFieldsCount;this._progress.updateStatus("Building edge indexes\u2026");this._buildEdgeIndexes();this._progress.updateStatus("Building retainers\u2026");this._buildRetainers();this._progress.updateStatus("Calculating node flags\u2026");this._calculateFlags();this._progress.updateStatus("Calculating distances\u2026");this._calculateDistances();this._progress.updateStatus("Building postorder index\u2026");var result=this._buildPostOrderIndex();this._progress.updateStatus("Building dominator tree\u2026");this._dominatorsTree=this._buildDominatorTree(result.postOrderIndex2NodeOrdinal,result.nodeOrdinal2PostOrderIndex);this._progress.updateStatus("Calculating retained sizes\u2026");this._calculateRetainedSizes(result.postOrderIndex2NodeOrdinal);this._progress.updateStatus("Buiding dominated nodes\u2026");this._buildDominatedNodes();this._progress.updateStatus("Calculating statistics\u2026");this._calculateStatistics();this._progress.updateStatus("Finished processing.");},_buildEdgeIndexes:function() {var nodes=this.nodes;var nodeCount=this.nodeCount;var firstEdgeIndexes=this._firstEdgeIndexes=new Uint32Array(nodeCount+1);var nodeFieldCount=this._nodeFieldCount;var edgeFieldsCount=this._edgeFieldsCount;var nodeEdgeCountOffset=this._nodeEdgeCountOffset;firstEdgeIndexes[nodeCount]=this.containmentEdges.length;for(var nodeOrdinal=0,edgeIndex=0;nodeOrdinal<nodeCount;++nodeOrdinal){firstEdgeIndexes[nodeOrdinal]=edgeIndex;edgeIndex+=nodes[nodeOrdinal*nodeFieldCount+nodeEdgeCountOffset]*edgeFieldsCount;}},_buildRetainers:function() {var retainingNodes=this._retainingNodes=new Uint32Array(this._edgeCount);var retainingEdges=this._retainingEdges=new Uint32Array(this._edgeCount);var firstRetainerIndex=this._firstRetainerIndex=new Uint32Array(this.nodeCount+1);var containmentEdges=this.containmentEdges;var edgeFieldsCount=this._edgeFieldsCount;var nodeFieldCount=this._nodeFieldCount;var edgeToNodeOffset=this._edgeToNodeOffset;var firstEdgeIndexes=this._firstEdgeIndexes;var nodeCount=this.nodeCount;for(var toNodeFieldIndex=edgeToNodeOffset,l=containmentEdges.length;toNodeFieldIndex<l;toNodeFieldIndex+=edgeFieldsCount){var toNodeIndex=containmentEdges[toNodeFieldIndex];if(toNodeIndex%nodeFieldCount) throw new Error("Invalid toNodeIndex "+toNodeIndex);++firstRetainerIndex[toNodeIndex/nodeFieldCount];} f