@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 39.9 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import*as Root from"../../core/root/root.js";import*as SDK from"../../core/sdk/sdk.js";import*as CPUProfile from"../cpu_profile/cpu_profile.js";import*as TraceEngine from"../trace/trace.js";import{TimelineJSProfileProcessor}from"./TimelineJSProfile.js";const UIStrings={threadS:"Thread {PH1}",workerS:"`Worker` — {PH1}",dedicatedWorker:"Dedicated `Worker`",workerSS:"`Worker`: {PH1} — {PH2}",bidderWorkletS:"Bidder Worklet — {PH1}",sellerWorkletS:"Seller Worklet — {PH1}",unknownWorkletS:"Auction Worklet — {PH1}",bidderWorklet:"Bidder Worklet",sellerWorklet:"Seller Worklet",unknownWorklet:"Auction Worklet",workletService:"Auction Worklet Service",workletServiceS:"Auction Worklet Service — {PH1}"},str_=i18n.i18n.registerUIStrings("models/timeline_model/TimelineModel.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class TimelineModelImpl{isGenericTraceInternal;tracksInternal;namedTracks;inspectedTargetEventsInternal;sessionId;mainFrameNodeId;pageFrames;auctionWorklets;cpuProfilesInternal;workerIdByThread;requestsFromBrowser;mainFrame;minimumRecordTimeInternal;maximumRecordTimeInternal;asyncEventTracker;invalidationTracker;layoutInvalidate;lastScheduleStyleRecalculation;paintImageEventByPixelRefId;lastPaintForLayer;lastRecalculateStylesEvent;currentScriptEvent;eventStack;browserFrameTracking;persistentIds;legacyCurrentPage;currentTaskLayoutAndRecalcEvents;tracingModelInternal;mainFrameLayerTreeId;#e=!1;constructor(){this.minimumRecordTimeInternal=0,this.maximumRecordTimeInternal=0,this.reset(),this.resetProcessingState(),this.currentTaskLayoutAndRecalcEvents=[],this.tracingModelInternal=null}static forEachEvent(e,t,a,r,n,i,s,o=!0){n=n||0,i=i||1/0;const l=[];for(let c=TimelineModelImpl.topLevelEventEndingAfter(e,n);c<e.length;++c){const d=e[c],{endTime:m,startTime:T,duration:p}=TraceEngine.Legacy.timesForEventInMilliseconds(d),u=TraceEngine.Legacy.phaseForEvent(d);if((m||T)<n)continue;if(T>=i)break;if(o&&TraceEngine.Types.TraceEvents.isAsyncPhase(u)||TraceEngine.Types.TraceEvents.isFlowPhase(u))continue;let h=l[l.length-1],y=h&&TraceEngine.Legacy.timesForEventInMilliseconds(h).endTime;for(;h&&void 0!==y&&y<=T;)l.pop(),a(h),h=l[l.length-1],y=h&&TraceEngine.Legacy.timesForEventInMilliseconds(h).endTime;s&&!s(d)||(p?(t(d),l.push(d)):r&&r(d,l[l.length-1]||null))}for(;l.length;){const e=l.pop();e&&a(e)}}static topLevelEventEndingAfter(e,t){let a=Platform.ArrayUtilities.upperBound(e,t,((e,t)=>e-TraceEngine.Legacy.timesForEventInMilliseconds(t).startTime))-1;for(;a>0&&!TraceEngine.Legacy.TracingModel.isTopLevelEvent(e[a]);)a--;return Math.max(a,0)}isMarkerEvent(e){switch(e.name){case RecordType.TimeStamp:return!0;case RecordType.MarkFirstPaint:case RecordType.MarkFCP:return Boolean(this.mainFrame)&&e.args.frame===this.mainFrame.frameId&&Boolean(e.args.data);case RecordType.MarkDOMContent:case RecordType.MarkLoad:case RecordType.MarkLCPCandidate:case RecordType.MarkLCPInvalidate:return Boolean(e.args.data.isOutermostMainFrame??e.args.data.isMainFrame);default:return!1}}isInteractiveTimeEvent(e){return e.name===RecordType.InteractiveTime}isLayoutShiftEvent(e){return e.name===RecordType.LayoutShift}isParseHTMLEvent(e){return e.name===RecordType.ParseHTML}static isJsFrameEvent(e){return e.name===RecordType.JSFrame||e.name===RecordType.JSIdleFrame||e.name===RecordType.JSSystemFrame}static globalEventId(e,t){const a=e.args.data||e.args.beginData,r=a&&a[t];return r?`${e.thread.process().id()}.${r}`:""}static eventFrameId(e){const t=e.args.data||e.args.beginData;return t&&t.frame||null}cpuProfiles(){return this.cpuProfilesInternal}targetByEvent(e){let t;if(e instanceof TraceEngine.Legacy.Event)t=e.thread;else{const a=this.tracingModelInternal?.getProcessById(e.pid);t=a?.threadById(e.tid)}if(!t)return null;const a=this.workerIdByThread.get(t),r=SDK.TargetManager.TargetManager.instance().rootTarget();return a?SDK.TargetManager.TargetManager.instance().targetById(a):r}isFreshRecording(){return this.#e}setEvents(e,t=!1){this.#e=t,this.reset(),this.resetProcessingState(),this.tracingModelInternal=e,this.minimumRecordTimeInternal=e.minimumRecordTime(),this.maximumRecordTimeInternal=e.maximumRecordTime();const a=[];for(const t of e.sortedProcesses())if("Renderer"===t.name())for(const e of t.sortedThreads()){const t=e.removeEventsByName(RecordType.LayoutShift);a.push(...t)}if(this.processSyncBrowserEvents(e),this.browserFrameTracking)this.processThreadsForBrowserFrames(e);else{const t=this.processMetadataEvents(e);this.isGenericTraceInternal=!t,t?this.processMetadataAndThreads(e,t):this.processGenericTrace(e)}this.inspectedTargetEventsInternal.sort(TraceEngine.Legacy.Event.compareStartTime),this.processAsyncBrowserEvents(e),this.resetProcessingState()}processGenericTrace(e){let t=TraceEngine.Legacy.TracingModel.browserMainThread(e);!t&&e.sortedProcesses().length&&(t=e.sortedProcesses()[0].sortedThreads()[0]);for(const a of e.sortedProcesses())for(const r of a.sortedThreads())this.processThreadEvents(e,r,r===t,!1,!0,0,null)}processMetadataAndThreads(e,t){let a=0;for(let r=0,n=t.page.length;r<n;r++){const i=t.page[r],s=i.thread.process(),o=r+1<n?t.page[r+1].startTime:1/0;if(a!==o){this.legacyCurrentPage=i.args.data&&i.args.data.page;for(const a of s.sortedThreads()){let r=null;if(a.name()===TimelineModelImpl.WorkerThreadName||a.name()===TimelineModelImpl.WorkerThreadNameLegacy){const e=t.workers.find((e=>{if(e.args.data.workerThreadId!==a.id())return!1;if(e.args.data.sessionId===this.sessionId)return!0;const t=TimelineModelImpl.eventFrameId(e);return!!t&&Boolean(this.pageFrames.get(t))}));if(!e)continue;const n=e.args.data.workerId;n&&this.workerIdByThread.set(a,n),r=e.args.data.url||Platform.DevToolsPath.EmptyUrlString}this.processThreadEvents(e,a,a===i.thread,Boolean(r),!0,0,r)}a=o}}}processThreadsForBrowserFrames(e){const t=new Map;for(const e of this.pageFrames.values())for(let a=0;a<e.processes.length;a++){const r=e.processes[a].processId;let n=t.get(r);n||(n=[],t.set(r,n));const i=a===e.processes.length-1?e.deletedTime||1/0:e.processes[a+1].time;n.push({from:e.processes[a].time,to:i,main:!e.parent,url:e.processes[a].url,workletType:0})}for(const e of this.auctionWorklets.values()){const a=e.processId;let r=t.get(a);r||(r=[],t.set(a,r)),r.push({from:e.startTime,to:e.endTime,main:!1,workletType:e.workletType,url:e.host?"https://"+e.host:Platform.DevToolsPath.EmptyUrlString})}const a=e.devToolsMetadataEvents();for(const r of e.sortedProcesses()){const n=t.get(r.id());if(!n)continue;n.sort(((e,t)=>e.from-t.from||e.to-t.to));let i=null,s=null,o=!1,l=!0,c=!1,d=0;for(const e of n)e.main&&(o=!0),e.url&&(e.main&&(s=e.url),i=e.url),0===e.workletType?l=!1:(!1===c?c=e.url:c!==e.url&&(c=!0),0===d?d=e.workletType:d!==e.workletType&&(d=3));for(const t of r.sortedThreads())if(t.name()===TimelineModelImpl.RendererMainThreadName)this.processThreadEvents(e,t,!0,!1,o,0,o?s:i);else if(t.name()===TimelineModelImpl.WorkerThreadName||t.name()===TimelineModelImpl.WorkerThreadNameLegacy){const n=a.find((e=>{if(e.name!==TimelineModelImpl.DevToolsMetadataEvent.TracingSessionIdForWorker)return!1;if(e.thread.process()!==r)return!1;if(e.args.data.workerThreadId!==t.id())return!1;const a=TimelineModelImpl.eventFrameId(e);return!!a&&Boolean(this.pageFrames.get(a))}));if(!n)continue;this.workerIdByThread.set(t,n.args.data.workerId||""),this.processThreadEvents(e,t,!1,!0,!1,0,n.args.data.url||Platform.DevToolsPath.EmptyUrlString)}else{let a=null,r=0;if(t.name()===TimelineModelImpl.AuctionWorkletThreadName||t.name().endsWith(TimelineModelImpl.UtilityMainThreadNameSuffix))"boolean"!=typeof c&&(a=c),r=d;else if(l)continue;this.processThreadEvents(e,t,!1,!1,!1,r,a)}}}processMetadataEvents(e){const t=e.devToolsMetadataEvents(),a=[],r=[];for(const e of t)if(e.name===TimelineModelImpl.DevToolsMetadataEvent.TracingStartedInPage){a.push(e),e.args.data&&e.args.data.persistentIds&&(this.persistentIds=!0);(e.args.data&&e.args.data.frames||[]).forEach((t=>this.addPageFrame(e,t))),this.mainFrame=this.rootFrames()[0]}else e.name===TimelineModelImpl.DevToolsMetadataEvent.TracingSessionIdForWorker?r.push(e):e.name===TimelineModelImpl.DevToolsMetadataEvent.TracingStartedInBrowser&&(console.assert(!this.mainFrameNodeId,"Multiple sessions in trace"),this.mainFrameNodeId=e.args.frameTreeNodeId);if(!a.length)return null;const n=a[0].args.sessionId||a[0].args.data.sessionId;this.sessionId=n;const i=new Set;const s={page:a.filter((function(e){let t=e.args;t.data&&(t=t.data);const a=t.sessionId;return a===n||(i.add(a),!1)})).sort(TraceEngine.Legacy.Event.compareStartTime),workers:r.sort(TraceEngine.Legacy.Event.compareStartTime)};return i.size&&Common.Console.Console.instance().error("Timeline recording was started in more than one page simultaneously. Session id mismatch: "+this.sessionId+" and "+[...i]+"."),s}processSyncBrowserEvents(e){const t=TraceEngine.Legacy.TracingModel.browserMainThread(e);t&&t.events().forEach(this.processBrowserEvent,this)}processAsyncBrowserEvents(e){const t=TraceEngine.Legacy.TracingModel.browserMainThread(e);t&&this.processAsyncEvents(t)}resetProcessingState(){this.asyncEventTracker=new TimelineAsyncEventTracker,this.invalidationTracker=new InvalidationTracker,this.layoutInvalidate={},this.lastScheduleStyleRecalculation={},this.paintImageEventByPixelRefId={},this.lastPaintForLayer={},this.lastRecalculateStylesEvent=null,this.currentScriptEvent=null,this.eventStack=[],this.browserFrameTracking=!1,this.persistentIds=!1,this.legacyCurrentPage=null}extractCpuProfileDataModel(e,t){const a=t.events();let r,n=null,i=a.at(-1);if(i&&i.name===RecordType.CpuProfile){const e=i.args.data;r=e&&e.cpuProfile,n=this.targetByEvent(i)}if(!r){if(i=a.find((e=>e.name===RecordType.Profile)),!i)return null;n=this.targetByEvent(i);const t=e.profileGroup(i);if(!t)return Common.Console.Console.instance().error("Invalid CPU profile format."),null;r={startTime:1e3*i.startTime,endTime:0,nodes:[],samples:[],timeDeltas:[],lines:[]};for(const e of t.children){const t=e.args.data;"startTime"in t&&(r.startTime=1e3*e.startTime),"endTime"in t&&(r.endTime=1e3*e.startTime);const a=t.cpuProfile||{},n=a.samples||[],i=t.lines||Array(n.length).fill(0);if(r.nodes.push(...a.nodes||[]),r.lines.push(...i),r.samples&&r.samples.push(...n),r.timeDeltas&&r.timeDeltas.push(...t.timeDeltas||[]),r.samples&&r.timeDeltas&&r.samples.length!==r.timeDeltas.length)return Common.Console.Console.instance().error("Failed to parse CPU profile."),null}if(!r.endTime&&r.timeDeltas){const e=r.timeDeltas;r.endTime=e.reduce(((e,t)=>e+t),r.startTime)}}try{const e=r,t=new CPUProfile.CPUProfileDataModel.CPUProfileDataModel(e);return this.cpuProfilesInternal.push({cpuProfileData:t,target:n}),t}catch(e){Common.Console.Console.instance().error("Failed to parse CPU profile.")}return null}injectJSFrameEvents(e,t){const a=this.extractCpuProfileDataModel(e,t);let r=t.events();const n=a?TimelineJSProfileProcessor.generateConstructedEventsFromCpuProfileDataModel(a,t):null;if(n&&n.length&&(r=Platform.ArrayUtilities.mergeOrdered(r,n,TraceEngine.Legacy.Event.orderedCompareStartTime)),n||r.some((e=>e.name===RecordType.JSSample||e.name===RecordType.JSSystemSample||e.name===RecordType.JSIdleSample))){const e=TimelineJSProfileProcessor.generateJSFrameEvents(r,{showAllEvents:Root.Runtime.experiments.isEnabled("timelineShowAllEvents"),showRuntimeCallStats:Root.Runtime.experiments.isEnabled("timelineV8RuntimeCallStats"),showNativeFunctions:Common.Settings.Settings.instance().moduleSetting("showNativeFunctionsInJSProfile").get()});e&&e.length&&(r=Platform.ArrayUtilities.mergeOrdered(e,r,TraceEngine.Legacy.Event.orderedCompareStartTime))}return r}static nameAuctionWorklet(e,t){switch(e){case 1:return t?i18nString(UIStrings.bidderWorkletS,{PH1:t}):i18nString(UIStrings.bidderWorklet);case 2:return t?i18nString(UIStrings.sellerWorkletS,{PH1:t}):i18nString(UIStrings.sellerWorklet);default:return t?i18nString(UIStrings.unknownWorkletS,{PH1:t}):i18nString(UIStrings.unknownWorklet)}}processThreadEvents(e,t,a,r,n,i,s){const o=new Track;o.name=t.name()||i18nString(UIStrings.threadS,{PH1:t.id()}),o.type=TrackType.Other,o.thread=t,a?(o.type=TrackType.MainThread,o.url=s||Platform.DevToolsPath.EmptyUrlString,o.forMainFrame=n):r?(o.type=TrackType.Worker,o.url=s||Platform.DevToolsPath.EmptyUrlString,o.name=o.url?i18nString(UIStrings.workerS,{PH1:o.url}):i18nString(UIStrings.dedicatedWorker)):t.name().startsWith("CompositorTileWorker")?o.type=TrackType.Raster:t.name()===TimelineModelImpl.AuctionWorkletThreadName?(o.url=s||Platform.DevToolsPath.EmptyUrlString,o.name=TimelineModelImpl.nameAuctionWorklet(i,s)):0!==i&&t.name().endsWith(TimelineModelImpl.UtilityMainThreadNameSuffix)&&(o.url=s||Platform.DevToolsPath.EmptyUrlString,o.name=s?i18nString(UIStrings.workletServiceS,{PH1:s}):i18nString(UIStrings.workletService)),this.tracksInternal.push(o);const l=this.injectJSFrameEvents(e,t);this.eventStack=[];const c=this.eventStack;if(r){const e=l.find((e=>e.name===RecordType.Profile));if(e){const t=this.targetByEvent(e);t&&(o.name=i18nString(UIStrings.workerSS,{PH1:t.name(),PH2:o.url}))}}for(let e=0;e<l.length;e++){const t=l[e];let a=c[c.length-1];for(;a&&void 0!==a.endTime&&a.endTime<=t.startTime;)c.pop(),a=c[c.length-1];if(this.processEvent(t)){if(!TraceEngine.Types.TraceEvents.isAsyncPhase(t.phase)&&t.duration){if(c.length){const e=c[c.length-1];e&&(e.selfTime-=t.duration,e.selfTime<0&&this.fixNegativeDuration(e,t))}t.selfTime=t.duration,c.length||o.tasks.push(t),c.push(t)}o.events.push(t),this.inspectedTargetEventsInternal.push(t)}}this.processAsyncEvents(t)}fixNegativeDuration(e,t){e.selfTime<-.001&&console.error(`Children are longer than parent at ${e.startTime} (${(t.startTime-this.minimumRecordTime()).toFixed(3)} by ${(-e.selfTime).toFixed(3)}`),e.selfTime=0}processAsyncEvents(e){const t=e.asyncEvents(),a=new Map;for(let e=0;e<t.length;++e){const n=t[e];n.name!==RecordType.Animation||(r=TrackType.Animation,a.has(r)||a.set(r,[]),a.get(r)).push(n)}var r;for(const[t,r]of a){const a=this.ensureNamedTrack(t);a.thread=e,a.asyncEvents=Platform.ArrayUtilities.mergeOrdered(a.asyncEvents,r,TraceEngine.Legacy.Event.compareStartTime)}}processEvent(e){const t=this.eventStack;if(!t.length){if(this.currentTaskLayoutAndRecalcEvents&&this.currentTaskLayoutAndRecalcEvents.length){const e=this.currentTaskLayoutAndRecalcEvents.reduce(((e,t)=>void 0===t.duration?e:e+t.duration),0);if(e>TimelineModelImpl.Thresholds.ForcedLayout)for(const e of this.currentTaskLayoutAndRecalcEvents){EventOnTimelineData.forEvent(e).warning=e.name===RecordType.Layout?TimelineModelImpl.WarningType.ForcedLayout:TimelineModelImpl.WarningType.ForcedStyle}}this.currentTaskLayoutAndRecalcEvents=[]}this.currentScriptEvent&&void 0!==this.currentScriptEvent.endTime&&e.startTime>this.currentScriptEvent.endTime&&(this.currentScriptEvent=null);const a=e.args.data||e.args.beginData||{},r=EventOnTimelineData.forEvent(e);a.stackTrace&&(r.stackTrace=a.stackTrace.map((t=>{if(e.name!==RecordType.JSSample&&e.name!==RecordType.JSSystemSample&&e.name!==RecordType.JSIdleSample){const e={...t};return--e.lineNumber,--e.columnNumber,e}return t})));let n=TimelineModelImpl.eventFrameId(e);const i=t[t.length-1];switch(!n&&i&&(n=EventOnTimelineData.forEvent(i).frameId),r.frameId=n||this.mainFrame&&this.mainFrame.frameId||"",this.asyncEventTracker.processEvent(e),e.name){case RecordType.ResourceSendRequest:case RecordType.WebSocketCreate:r.setInitiator(t[t.length-1]||null),r.url=a.url;break;case RecordType.ScheduleStyleRecalculation:this.lastScheduleStyleRecalculation[a.frame]=e;break;case RecordType.UpdateLayoutTree:case RecordType.RecalculateStyles:this.invalidationTracker.didRecalcStyle(e),e.args.beginData&&r.setInitiator(this.lastScheduleStyleRecalculation[e.args.beginData.frame]),this.lastRecalculateStylesEvent=e,this.currentScriptEvent&&this.currentTaskLayoutAndRecalcEvents.push(e);break;case RecordType.ScheduleStyleInvalidationTracking:case RecordType.StyleRecalcInvalidationTracking:case RecordType.StyleInvalidatorInvalidationTracking:case RecordType.LayoutInvalidationTracking:this.invalidationTracker.addInvalidation(new InvalidationTrackingEvent(e,r));break;case RecordType.InvalidateLayout:{let t=e;const r=a.frame;!this.layoutInvalidate[r]&&this.lastRecalculateStylesEvent&&void 0!==this.lastRecalculateStylesEvent.endTime&&this.lastRecalculateStylesEvent.endTime>e.startTime&&(t=EventOnTimelineData.forEvent(this.lastRecalculateStylesEvent).initiator()),this.layoutInvalidate[r]=t;break}case RecordType.Layout:{this.invalidationTracker.didLayout(e);const t=e.args.beginData.frame;if(r.setInitiator(this.layoutInvalidate[t]),e.args.endData)if(e.args.endData.layoutRoots)for(let t=0;t<e.args.endData.layoutRoots.length;++t)r.backendNodeIds.push(e.args.endData.layoutRoots[t].nodeId);else r.backendNodeIds.push(e.args.endData.rootNode);this.layoutInvalidate[t]=null,this.currentScriptEvent&&this.currentTaskLayoutAndRecalcEvents.push(e);break}case RecordType.Task:void 0!==e.duration&&e.duration>TimelineModelImpl.Thresholds.LongTask&&(r.warning=TimelineModelImpl.WarningType.LongTask);break;case RecordType.EventDispatch:void 0!==e.duration&&e.duration>TimelineModelImpl.Thresholds.RecurringHandler&&(r.warning=TimelineModelImpl.WarningType.LongHandler);break;case RecordType.TimerFire:case RecordType.FireAnimationFrame:void 0!==e.duration&&e.duration>TimelineModelImpl.Thresholds.RecurringHandler&&(r.warning=TimelineModelImpl.WarningType.LongRecurringHandler);break;case RecordType.FunctionCall:"string"==typeof a.scriptName&&(a.url=a.scriptName),"number"==typeof a.scriptLine&&(a.lineNumber=a.scriptLine);case RecordType.EvaluateScript:case RecordType.CompileScript:case RecordType.CacheScript:"number"==typeof a.lineNumber&&--a.lineNumber,"number"==typeof a.columnNumber&&--a.columnNumber;case RecordType.RunMicrotasks:this.currentScriptEvent||(this.currentScriptEvent=e);break;case RecordType.SetLayerTreeId:{if(this.sessionId&&a.sessionId&&this.sessionId===a.sessionId){this.mainFrameLayerTreeId=a.layerTreeId;break}const t=TimelineModelImpl.eventFrameId(e),r=t?this.pageFrames.get(t):null;if(!r||r.parent)return!1;this.mainFrameLayerTreeId=a.layerTreeId;break}case RecordType.Paint:{if(this.invalidationTracker.didPaint=!0,"nodeId"in a&&r.backendNodeIds.push(a.nodeId),!a.layerId)break;const t=a.layerId;this.lastPaintForLayer[t]=e;break}case RecordType.DisplayItemListSnapshot:case RecordType.PictureSnapshot:{const t=this.findAncestorEvent(RecordType.UpdateLayer);if(!t||t.args.layerTreeId!==this.mainFrameLayerTreeId)break;const a=this.lastPaintForLayer[t.args.layerId];a&&(EventOnTimelineData.forEvent(a).picture=e);break}case RecordType.ScrollLayer:r.backendNodeIds.push(a.nodeId);break;case RecordType.PaintImage:r.backendNodeIds.push(a.nodeId),r.url=a.url;break;case RecordType.DecodeImage:case RecordType.ResizeImage:{let e=this.findAncestorEvent(RecordType.PaintImage);if(!e){const t=this.findAncestorEvent(RecordType.DecodeLazyPixelRef);e=t&&this.paintImageEventByPixelRefId[t.args.LazyPixelRef]}if(!e)break;const t=EventOnTimelineData.forEvent(e);r.backendNodeIds.push(t.backendNodeIds[0]),r.url=t.url;break}case RecordType.DrawLazyPixelRef:{const t=this.findAncestorEvent(RecordType.PaintImage);if(!t)break;this.paintImageEventByPixelRefId[e.args.LazyPixelRef]=t;const a=EventOnTimelineData.forEvent(t);r.backendNodeIds.push(a.backendNodeIds[0]),r.url=a.url;break}case RecordType.FrameStartedLoading:if(r.frameId!==e.args.frame)return!1;break;case RecordType.MarkLCPCandidate:r.backendNodeIds.push(a.nodeId);break;case RecordType.MarkDOMContent:case RecordType.MarkLoad:{const t=TimelineModelImpl.eventFrameId(e);if(!t||!this.pageFrames.has(t))return!1;break}case RecordType.CommitLoad:{if(this.browserFrameTracking)break;const t=TimelineModelImpl.eventFrameId(e),r=Boolean(a.isOutermostMainFrame??a.isMainFrame),n=t?this.pageFrames.get(t):null;if(n)n.update(e.startTime,a);else if(this.persistentIds){if(r)return!1;if(!this.addPageFrame(e,a))return!1}else if(a.page&&a.page!==this.legacyCurrentPage)return!1;if(r&&t){const e=this.pageFrames.get(t);e&&(this.mainFrame=e)}break}case RecordType.FireIdleCallback:void 0!==e.duration&&e.duration>a.allottedMilliseconds+TimelineModelImpl.Thresholds.IdleCallbackAddon&&(r.warning=TimelineModelImpl.WarningType.IdleDeadlineExceeded)}return!0}processBrowserEvent(e){if(e.name!==RecordType.ResourceWillSendRequest){if(e.hasCategory(TraceEngine.Legacy.DevToolsMetadataEventCategory)&&e.args.data){const t=e.args.data;if(e.name===TimelineModelImpl.DevToolsMetadataEvent.TracingStartedInBrowser){if(!t.persistentIds)return;this.browserFrameTracking=!0,this.mainFrameNodeId=t.frameTreeNodeId;return void(t.frames||[]).forEach((e=>{const t=e.parent&&this.pageFrames.get(e.parent);if(e.parent&&!t)return;let a=this.pageFrames.get(e.frame);a||(a=new PageFrame(e),this.pageFrames.set(a.frameId,a),t?t.addChild(a):this.mainFrame=a),a.update(this.minimumRecordTimeInternal,e)}))}if(e.name===TimelineModelImpl.DevToolsMetadataEvent.FrameCommittedInBrowser&&this.browserFrameTracking){let a=this.pageFrames.get(t.frame);if(!a){const e=t.parent&&this.pageFrames.get(t.parent);a=new PageFrame(t),this.pageFrames.set(a.frameId,a),e&&e.addChild(a)}return void a.update(e.startTime,t)}if(e.name===TimelineModelImpl.DevToolsMetadataEvent.ProcessReadyInBrowser&&this.browserFrameTracking){const e=this.pageFrames.get(t.frame);return void(e&&e.processReady(t.processPseudoId,t.processId))}if(e.name===TimelineModelImpl.DevToolsMetadataEvent.FrameDeletedInBrowser&&this.browserFrameTracking){const a=this.pageFrames.get(t.frame);return void(a&&(a.deletedTime=e.startTime))}if(e.name===TimelineModelImpl.DevToolsMetadataEvent.AuctionWorkletRunningInProcess&&this.browserFrameTracking){const a=new AuctionWorklet(e,t);this.auctionWorklets.set(t.target,a)}if(e.name===TimelineModelImpl.DevToolsMetadataEvent.AuctionWorkletDoneWithProcess&&this.browserFrameTracking){const a=this.auctionWorklets.get(t.target);a&&(a.endTime=e.startTime)}}}else{const t=e.args?.data?.requestId;"string"==typeof t&&this.requestsFromBrowser.set(t,e)}}ensureNamedTrack(e){let t=this.namedTracks.get(e);return t||(t=new Track,t.type=e,this.tracksInternal.push(t),this.namedTracks.set(e,t),t)}findAncestorEvent(e){for(let t=this.eventStack.length-1;t>=0;--t){const a=this.eventStack[t];if(a.name===e)return a}return null}addPageFrame(e,t){const a=t.parent&&this.pageFrames.get(t.parent);if(t.parent&&!a)return!1;const r=new PageFrame(t);return this.pageFrames.set(r.frameId,r),r.update(e.startTime,t),a&&a.addChild(r),!0}reset(){this.isGenericTraceInternal=!1,this.tracksInternal=[],this.namedTracks=new Map,this.inspectedTargetEventsInternal=[],this.sessionId=null,this.mainFrameNodeId=null,this.cpuProfilesInternal=[],this.workerIdByThread=new WeakMap,this.pageFrames=new Map,this.auctionWorklets=new Map,this.requestsFromBrowser=new Map,this.minimumRecordTimeInternal=0,this.maximumRecordTimeInternal=0}isGenericTrace(){return this.isGenericTraceInternal}tracingModel(){return this.tracingModelInternal}minimumRecordTime(){return this.minimumRecordTimeInternal}maximumRecordTime(){return this.maximumRecordTimeInternal}inspectedTargetEvents(){return this.inspectedTargetEventsInternal}tracks(){return this.tracksInternal}isEmpty(){return 0===this.minimumRecordTime()&&0===this.maximumRecordTime()}rootFrames(){return Array.from(this.pageFrames.values()).filter((e=>!e.parent))}pageURL(){return this.mainFrame&&this.mainFrame.url||Platform.DevToolsPath.EmptyUrlString}pageFrameById(e){return e&&this.pageFrames.get(e)||null}}export var RecordType;!function(e){e.Task="RunTask",e.Program="Program",e.EventDispatch="EventDispatch",e.GPUTask="GPUTask",e.Animation="Animation",e.RequestMainThreadFrame="RequestMainThreadFrame",e.BeginFrame="BeginFrame",e.NeedsBeginFrameChanged="NeedsBeginFrameChanged",e.BeginMainThreadFrame="BeginMainThreadFrame",e.ActivateLayerTree="ActivateLayerTree",e.DrawFrame="DrawFrame",e.DroppedFrame="DroppedFrame",e.HitTest="HitTest",e.ScheduleStyleRecalculation="ScheduleStyleRecalculation",e.RecalculateStyles="RecalculateStyles",e.UpdateLayoutTree="UpdateLayoutTree",e.InvalidateLayout="InvalidateLayout",e.Layerize="Layerize",e.Layout="Layout",e.LayoutShift="LayoutShift",e.UpdateLayer="UpdateLayer",e.UpdateLayerTree="UpdateLayerTree",e.PaintSetup="PaintSetup",e.Paint="Paint",e.PaintImage="PaintImage",e.PrePaint="PrePaint",e.Rasterize="Rasterize",e.RasterTask="RasterTask",e.ScrollLayer="ScrollLayer",e.Commit="Commit",e.CompositeLayers="CompositeLayers",e.ComputeIntersections="IntersectionObserverController::computeIntersections",e.InteractiveTime="InteractiveTime",e.ScheduleStyleInvalidationTracking="ScheduleStyleInvalidationTracking",e.StyleRecalcInvalidationTracking="StyleRecalcInvalidationTracking",e.StyleInvalidatorInvalidationTracking="StyleInvalidatorInvalidationTracking",e.LayoutInvalidationTracking="LayoutInvalidationTracking",e.ParseHTML="ParseHTML",e.ParseAuthorStyleSheet="ParseAuthorStyleSheet",e.TimerInstall="TimerInstall",e.TimerRemove="TimerRemove",e.TimerFire="TimerFire",e.XHRReadyStateChange="XHRReadyStateChange",e.XHRLoad="XHRLoad",e.CompileScript="v8.compile",e.CompileCode="V8.CompileCode",e.OptimizeCode="V8.OptimizeCode",e.EvaluateScript="EvaluateScript",e.CacheScript="v8.produceCache",e.CompileModule="v8.compileModule",e.EvaluateModule="v8.evaluateModule",e.CacheModule="v8.produceModuleCache",e.WasmStreamFromResponseCallback="v8.wasm.streamFromResponseCallback",e.WasmCompiledModule="v8.wasm.compiledModule",e.WasmCachedModule="v8.wasm.cachedModule",e.WasmModuleCacheHit="v8.wasm.moduleCacheHit",e.WasmModuleCacheInvalid="v8.wasm.moduleCacheInvalid",e.FrameStartedLoading="FrameStartedLoading",e.CommitLoad="CommitLoad",e.MarkLoad="MarkLoad",e.MarkDOMContent="MarkDOMContent",e.MarkFirstPaint="firstPaint",e.MarkFCP="firstContentfulPaint",e.MarkLCPCandidate="largestContentfulPaint::Candidate",e.MarkLCPInvalidate="largestContentfulPaint::Invalidate",e.NavigationStart="navigationStart",e.TimeStamp="TimeStamp",e.ConsoleTime="ConsoleTime",e.UserTiming="UserTiming",e.EventTiming="EventTiming",e.ResourceWillSendRequest="ResourceWillSendRequest",e.ResourceSendRequest="ResourceSendRequest",e.ResourceReceiveResponse="ResourceReceiveResponse",e.ResourceReceivedData="ResourceReceivedData",e.ResourceFinish="ResourceFinish",e.ResourceMarkAsCached="ResourceMarkAsCached",e.RunMicrotasks="RunMicrotasks",e.FunctionCall="FunctionCall",e.GCEvent="GCEvent",e.MajorGC="MajorGC",e.MinorGC="MinorGC",e.JSFrame="JSFrame",e.JSSample="JSSample",e.JSIdleFrame="JSIdleFrame",e.JSIdleSample="JSIdleSample",e.JSSystemFrame="JSSystemFrame",e.JSSystemSample="JSSystemSample",e.JSRoot="JSRoot",e.V8Sample="V8Sample",e.JitCodeAdded="JitCodeAdded",e.JitCodeMoved="JitCodeMoved",e.StreamingCompileScript="v8.parseOnBackground",e.StreamingCompileScriptWaiting="v8.parseOnBackgroundWaiting",e.StreamingCompileScriptParsing="v8.parseOnBackgroundParsing",e.BackgroundDeserialize="v8.deserializeOnBackground",e.FinalizeDeserialization="V8.FinalizeDeserialization",e.V8Execute="V8.Execute",e.UpdateCounters="UpdateCounters",e.RequestAnimationFrame="RequestAnimationFrame",e.CancelAnimationFrame="CancelAnimationFrame",e.FireAnimationFrame="FireAnimationFrame",e.RequestIdleCallback="RequestIdleCallback",e.CancelIdleCallback="CancelIdleCallback",e.FireIdleCallback="FireIdleCallback",e.WebSocketCreate="WebSocketCreate",e.WebSocketSendHandshakeRequest="WebSocketSendHandshakeRequest",e.WebSocketReceiveHandshakeResponse="WebSocketReceiveHandshakeResponse",e.WebSocketDestroy="WebSocketDestroy",e.EmbedderCallback="EmbedderCallback",e.SetLayerTreeId="SetLayerTreeId",e.TracingStartedInPage="TracingStartedInPage",e.TracingSessionIdForWorker="TracingSessionIdForWorker",e.StartProfiling="CpuProfiler::StartProfiling",e.DecodeImage="Decode Image",e.ResizeImage="Resize Image",e.DrawLazyPixelRef="Draw LazyPixelRef",e.DecodeLazyPixelRef="Decode LazyPixelRef",e.LazyPixelRef="LazyPixelRef",e.LayerTreeHostImplSnapshot="cc::LayerTreeHostImpl",e.PictureSnapshot="cc::Picture",e.DisplayItemListSnapshot="cc::DisplayItemList",e.InputLatencyMouseMove="InputLatency::MouseMove",e.InputLatencyMouseWheel="InputLatency::MouseWheel",e.ImplSideFling="InputHandlerProxy::HandleGestureFling::started",e.GCCollectGarbage="BlinkGC.AtomicPhase",e.CryptoDoEncrypt="DoEncrypt",e.CryptoDoEncryptReply="DoEncryptReply",e.CryptoDoDecrypt="DoDecrypt",e.CryptoDoDecryptReply="DoDecryptReply",e.CryptoDoDigest="DoDigest",e.CryptoDoDigestReply="DoDigestReply",e.CryptoDoSign="DoSign",e.CryptoDoSignReply="DoSignReply",e.CryptoDoVerify="DoVerify",e.CryptoDoVerifyReply="DoVerifyReply",e.CpuProfile="CpuProfile",e.Profile="Profile",e.AsyncTask="AsyncTask"}(RecordType||(RecordType={})),function(e){let t;e.Category={Console:"blink.console",UserTiming:"blink.user_timing",Loading:"loading"},function(e){e.LongTask="LongTask",e.ForcedStyle="ForcedStyle",e.ForcedLayout="ForcedLayout",e.IdleDeadlineExceeded="IdleDeadlineExceeded",e.LongHandler="LongHandler",e.LongRecurringHandler="LongRecurringHandler",e.V8Deopt="V8Deopt",e.LongInteraction="LongInteraction"}(t=e.WarningType||(e.WarningType={})),e.WorkerThreadName="DedicatedWorker thread",e.WorkerThreadNameLegacy="DedicatedWorker Thread",e.RendererMainThreadName="CrRendererMain",e.BrowserMainThreadName="CrBrowserMain",e.UtilityMainThreadNameSuffix="CrUtilityMain",e.AuctionWorkletThreadName="AuctionV8HelperThread",e.DevToolsMetadataEvent={TracingStartedInBrowser:"TracingStartedInBrowser",TracingStartedInPage:"TracingStartedInPage",TracingSessionIdForWorker:"TracingSessionIdForWorker",FrameCommittedInBrowser:"FrameCommittedInBrowser",ProcessReadyInBrowser:"ProcessReadyInBrowser",FrameDeletedInBrowser:"FrameDeletedInBrowser",AuctionWorkletRunningInProcess:"AuctionWorkletRunningInProcess",AuctionWorkletDoneWithProcess:"AuctionWorkletDoneWithProcess"},e.Thresholds={LongTask:50,Handler:150,RecurringHandler:50,ForcedLayout:30,IdleCallbackAddon:5}}(TimelineModelImpl||(TimelineModelImpl={}));export class Track{name;type;forMainFrame;url;events;asyncEvents;tasks;eventsForTreeViewInternal;thread;constructor(){this.name="",this.type=TrackType.Other,this.forMainFrame=!1,this.url=Platform.DevToolsPath.EmptyUrlString,this.events=[],this.asyncEvents=[],this.tasks=[],this.eventsForTreeViewInternal=null,this.thread=null}eventsForTreeView(){if(this.eventsForTreeViewInternal)return this.eventsForTreeViewInternal;const e=[];function t(){const t=e[e.length-1];if(void 0!==t){const e=t.endTime;if(void 0!==e)return e}throw new Error("End time does not exist on event.")}this.eventsForTreeViewInternal=[...this.events];for(const a of this.asyncEvents){const r=a.startTime;let n=a.endTime;for(void 0===n&&(n=r);e.length&&r>=t();)e.pop();if(e.length&&n>t()){this.eventsForTreeViewInternal=[...this.events];break}const i=new TraceEngine.Legacy.ConstructedEvent(a.categoriesString,a.name,"X",r,a.thread);i.setEndTime(n),i.addArgs(a.args),this.eventsForTreeViewInternal.push(i),e.push(i)}return this.eventsForTreeViewInternal}}export var TrackType;!function(e){e.MainThread="MainThread",e.Worker="Worker",e.Animation="Animation",e.Raster="Raster",e.Experience="Experience",e.Other="Other"}(TrackType||(TrackType={}));export class PageFrame{frameId;url;name;children;parent;processes;deletedTime;ownerNode;constructor(e){this.frameId=e.frame,this.url=e.url||Platform.DevToolsPath.EmptyUrlString,this.name=e.name,this.children=[],this.parent=null,this.processes=[],this.deletedTime=null,this.ownerNode=null}update(e,t){this.url=t.url||"",this.name=t.name,t.processId?this.processes.push({time:e,processId:t.processId,processPseudoId:"",url:t.url||""}):this.processes.push({time:e,processId:-1,processPseudoId:t.processPseudoId,url:t.url||""})}processReady(e,t){for(const a of this.processes)a.processPseudoId===e&&(a.processPseudoId="",a.processId=t)}addChild(e){this.children.push(e),e.parent=this}}export class AuctionWorklet{targetId;processId;host;startTime;endTime;workletType;constructor(e,t){this.targetId="string"==typeof t.target?t.target:"",this.processId="number"==typeof t.pid?t.pid:0,this.host="string"==typeof t.host?t.host:void 0,this.startTime=e.startTime,this.endTime=1/0,"bidder"===t.type?this.workletType=1:"seller"===t.type?this.workletType=2:this.workletType=3}}export class InvalidationTrackingEvent{type;startTime;tracingEvent;frame;nodeId;nodeName;invalidationSet;invalidatedSelectorId;changedId;changedClass;changedAttribute;changedPseudo;selectorPart;extraData;invalidationList;cause;linkedRecalcStyleEvent;linkedLayoutEvent;constructor(e,t){this.type=e.name,this.startTime=e.startTime,this.tracingEvent=e;const a=e.args.data;this.frame=a.frame,this.nodeId=a.nodeId,this.nodeName=a.nodeName,this.invalidationSet=a.invalidationSet,this.invalidatedSelectorId=a.invalidatedSelectorId,this.changedId=a.changedId,this.changedClass=a.changedClass,this.changedAttribute=a.changedAttribute,this.changedPseudo=a.changedPseudo,this.selectorPart=a.selectorPart,this.extraData=a.extraData,this.invalidationList=a.invalidationList,this.cause={reason:a.reason,stackTrace:t.stackTrace},this.linkedRecalcStyleEvent=!1,this.linkedLayoutEvent=!1,!this.cause.reason&&this.cause.stackTrace&&this.type===RecordType.LayoutInvalidationTracking&&(this.cause.reason="Layout forced")}}export class InvalidationTracker{lastRecalcStyle;didPaint;invalidations;invalidationsByNodeId;constructor(){this.lastRecalcStyle=null,this.didPaint=!1,this.initializePerFrameState(),this.invalidations={},this.invalidationsByNodeId={}}static invalidationEventsFor(e){return eventToInvalidation.get(e)||null}addInvalidation(e){if(this.startNewFrameIfNeeded(),!e.nodeId)return console.error("Invalidation lacks node information."),void console.error(e);if(e.type===RecordType.StyleRecalcInvalidationTracking&&"StyleInvalidator"===e.cause.reason)return;if(e.type===RecordType.ScheduleStyleInvalidationTracking||e.type===RecordType.StyleInvalidatorInvalidationTracking||e.type===RecordType.StyleRecalcInvalidationTracking){e.startTime&&this.lastRecalcStyle&&void 0!==this.lastRecalcStyle.endTime&&e.startTime>=this.lastRecalcStyle.startTime&&e.startTime<=this.lastRecalcStyle.endTime&&this.associateWithLastRecalcStyleEvent(e)}this.invalidations[e.type]?this.invalidations[e.type].push(e):this.invalidations[e.type]=[e],e.nodeId&&(this.invalidationsByNodeId[e.nodeId]?this.invalidationsByNodeId[e.nodeId].push(e):this.invalidationsByNodeId[e.nodeId]=[e])}didRecalcStyle(e){this.lastRecalcStyle=e;const t=[RecordType.ScheduleStyleInvalidationTracking,RecordType.StyleInvalidatorInvalidationTracking,RecordType.StyleRecalcInvalidationTracking];for(const e of this.invalidationsOfTypes(t))this.associateWithLastRecalcStyleEvent(e)}associateWithLastRecalcStyleEvent(e){if(e.linkedRecalcStyleEvent)return;if(!this.lastRecalcStyle)throw new Error("Last recalculate style event not set.");const t=this.lastRecalcStyle.args.beginData.frame;e.type===RecordType.StyleInvalidatorInvalidationTracking?this.addSyntheticStyleRecalcInvalidations(this.lastRecalcStyle,t,e):e.type===RecordType.ScheduleStyleInvalidationTracking||this.addInvalidationToEvent(this.lastRecalcStyle,t,e),e.linkedRecalcStyleEvent=!0}addSyntheticStyleRecalcInvalidations(e,t,a){if(a.invalidationList){if(!a.nodeId)return console.error("Invalidation lacks node information."),void console.error(a);for(let e=0;e<a.invalidationList.length;e++){const r=a.invalidationList[e].id;let n;const i=this.invalidationsByNodeId[a.nodeId]||[];for(let e=0;e<i.length;e++){const a=i[e];a.frame===t&&a.invalidationSet===r&&a.type===RecordType.ScheduleStyleInvalidationTracking&&(n=a)}n&&this.addSyntheticStyleRecalcInvalidation(n.tracingEvent,a)}}else this.addSyntheticStyleRecalcInvalidation(a.tracingEvent,a)}addSyntheticStyleRecalcInvalidation(e,t){const a=EventOnTimelineData.forEvent(e),r=new InvalidationTrackingEvent(e,a);r.type=RecordType.StyleRecalcInvalidationTracking,t.cause.reason&&(r.cause.reason=t.cause.reason),t.selectorPart&&(r.selectorPart=t.selectorPart),r.linkedRecalcStyleEvent||this.associateWithLastRecalcStyleEvent(r)}didLayout(e){const t=e.args.beginData.frame;for(const a of this.invalidationsOfTypes([RecordType.LayoutInvalidationTracking]))a.linkedLayoutEvent||(this.addInvalidationToEvent(e,t,a),a.linkedLayoutEvent=!0)}addInvalidationToEvent(e,t,a){if(t!==a.frame)return;const r=eventToInvalidation.get(e);r?r.push(a):eventToInvalidation.set(e,[a])}invalidationsOfTypes(e){const t=this.invalidations;return e||(e=Object.keys(t)),function*(){if(e)for(let a=0;a<e.length;++a){const r=t[e[a]]||[];for(let e=0;e<r.length;++e)yield r[e]}}()}startNewFrameIfNeeded(){this.didPaint&&this.initializePerFrameState()}initializePerFrameState(){this.invalidations={},this.invalidationsByNodeId={},this.lastRecalcStyle=null,this.didPaint=!1}}export class TimelineAsyncEventTracker{initiatorByType;constructor(){if(TimelineAsyncEventTracker.initialize(),this.initiatorByType=new Map,TimelineAsyncEventTracker.asyncEvents)for(const e of TimelineAsyncEventTracker.asyncEvents.keys())this.initiatorByType.set(e,new Map)}static initialize(){if(TimelineAsyncEventTracker.asyncEvents)return;const e=new Map;e.set(RecordType.TimerInstall,{causes:[RecordType.TimerFire],joinBy:"timerId"}),e.set(RecordType.ResourceSendRequest,{causes:[RecordType.ResourceMarkAsCached,RecordType.ResourceReceiveResponse,RecordType.ResourceReceivedData,RecordType.ResourceFinish],joinBy:"requestId"}),e.set(RecordType.RequestAnimationFrame,{causes:[RecordType.FireAnimationFrame],joinBy:"id"}),e.set(RecordType.RequestIdleCallback,{causes:[RecordType.FireIdleCallback],joinBy:"id"}),e.set(RecordType.WebSocketCreate,{causes:[RecordType.WebSocketSendHandshakeRequest,RecordType.WebSocketReceiveHandshakeResponse,RecordType.WebSocketDestroy],joinBy:"identifier"}),TimelineAsyncEventTracker.asyncEvents=e,TimelineAsyncEventTracker.typeToInitiator=new Map;for(const t of e){const e=t[1].causes;for(const a of e)TimelineAsyncEventTracker.typeToInitiator.set(a,t[0])}}processEvent(e){if(!TimelineAsyncEventTracker.typeToInitiator||!TimelineAsyncEventTracker.asyncEvents)return;let t=TimelineAsyncEventTracker.typeToInitiator.get(e.name);const a=!t;t||(t=e.name);const r=TimelineAsyncEventTracker.asyncEvents.get(t);if(!r)return;const n=TimelineModelImpl.globalEventId(e,r.joinBy);if(!n)return;const i=this.initiatorByType.get(t);if(i){if(a)return void i.set(n,e);const t=i.get(n),r=EventOnTimelineData.forEvent(e);r.setInitiator(t||null),!r.frameId&&t&&(r.frameId=TimelineModelImpl.eventFrameId(t))}}static asyncEvents=null;static typeToInitiator=null}export class EventOnTimelineData{warning;url;backendNodeIds;stackTrace;picture;initiatorInternal;frameId;constructor(){this.warning=null,this.url=null,this.backendNodeIds=[],this.stackTrace=null,this.picture=null,this.initiatorInternal=null,this.frameId=null}setInitiator(e){if(this.initiatorInternal=e,!e||this.url)return;const t=EventOnTimelineData.forEvent(e).url;t&&(this.url=t)}initiator(){return this.initiatorInternal}topFrame(){const e=this.stackTraceForSelfOrInitiator();return e&&e[0]||null}stackTraceForSelfOrInitiator(){return this.stackTrace||this.initiatorInternal&&EventOnTimelineData.forEvent(this.initiatorInternal).stackTrace}static forEvent(e){return e instanceof TraceEngine.Legacy.PayloadEvent?EventOnTimelineData.forTraceEventData(e.rawPayload()):e instanceof TraceEngine.Legacy.Event?getOrCreateEventData(e):EventOnTimelineData.forTraceEventData(e)}static forTraceEventData(e){return getOrCreateEventData(e)}static reset(){eventToData=new Map,eventToInvalidation=new WeakMap}}function getOrCreateEventData(e){let t=eventToData.get(e);return t||(t=new EventOnTimelineData,eventToData.set(e,t)),t}let eventToData=new Map,eventToInvalidation=new WeakMap;