PageSourceSearch

https://neetcode.io/3399.e4fa1a31f7b1435b.js

js neetcode.io collected 2026-10-02 07:16:18 UTC 31,333 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkangular_client=self.webpackChunkangular_client||[]).push([[3399],{93399:(et,_,s)=>{s.r(_),s.d(_,{VersusHistoryComponent:()=>ot});var d=s(10467),t=s(54438),p=s(60177),g=s(93121),u=s(345),x=s(21413),y=s(23294),v=s(56977),m=s(20060),c=s(45383),h=s(53044),P=s(87500),C=s(25621),f=s(26704),O=s(59550),M=s(88273),b=s(78605),k=s(73781);const w=(o,r)=>r.key,F=()=>[1,2,3,4,5,6],E=o=>["/user",o];function R(o,r){1&o&&(t.j41(0,"div",5)(1,"h2"),t.EFF(2,"Sign in to view your history"),t.k0s(),t.j41(3,"p"),t.EFF(4,"Match history is private \u2014 only you can see your record."),t.k0s()())}function D(o,r){if(1&o&&(t.j41(0,"span",14),t.EFF(1,"\u2013"),t.k0s(),t.j41(2,"span",22),t.EFF(3),t.k0s()),2&o){const n=t.XpG();t.R7$(3),t.JRh(n.ties)}}function j(o,r){if(1&o&&(t.j41(0,"span",18),t.EFF(1),t.k0s()),2&o){const n=t.XpG(3);t.R7$(),t.SpI("",n.winRate(),"% win rate")}}function $(o,r){if(1&o&&(t.j41(0,"div",20),t.nrm(1,"ng-icon",23),t.j41(2,"span",24),t.EFF(3),t.k0s(),t.j41(4,"span",25),t.EFF(5,"Current"),t.k0s()()),2&o){const n=t.XpG(3);t.R7$(3),t.JRh(n.streakLabel())}}function V(o,r){if(1&o&&(t.j41(0,"div",20),t.nrm(1,"fa-icon",26),t.j41(2,"span",24),t.EFF(3),t.k0s(),t.j41(4,"span",25),t.EFF(5,"Best streak"),t.k0s()()),2&o){const n=t.XpG(),e=t.XpG(2);t.R7$(),t.Y8G("icon",e.faTrophy),t.R7$(2),t.SpI("",n.bestWinStreak,"W")}}function T(o,r){if(1&o&&(t.j41(0,"div",20)(1,"span",24),t.EFF(2),t.k0s(),t.j41(3,"span",25),t.EFF(4,"Per ranked match (last 30)"),t.k0s()()),2&o){const n=t.XpG(),e=t.XpG(2);t.R7$(),t.AVh("delta-pos",n.avgDisplayedDelta>0)("delta-neg",n.avgDisplayedDelta<0),t.R7$(),t.JRh(e.avgDeltaLabel())}}function L(o,r){if(1&o&&t.nrm(0,"span",28),2&o){const n=r.$implicit;t.AVh("win","win"===n)("loss","loss"===n)("draw","draw"===n),t.BMQ("aria-label",n)}}function I(o,r){if(1&o&&(t.j41(0,"div",21),t.Z7z(1,L,1,7,"span",27,t.Vm6),t.k0s()),2&o){const n=t.XpG();t.R7$(),t.Dyx(n.last30Outcomes.slice().reverse())}}function H(o,r){if(1&o&&(t.j41(0,"section",6)(1,"div",11)(2,"div",12)(3,"span",13),t.EFF(4),t.k0s(),t.j41(5,"span",14),t.EFF(6,"\u2013"),t.k0s(),t.j41(7,"span",15),t.EFF(8),t.k0s(),t.DNE(9,D,4,1),t.k0s(),t.j41(10,"div",16)(11,"span",17),t.EFF(12,"Lifetime record"),t.k0s(),t.DNE(13,j,2,1,"span",18),t.k0s()(),t.j41(14,"div",19),t.DNE(15,$,6,1,"div",20)(16,V,6,2,"div",20)(17,T,5,5,"div",20),t.k0s(),t.DNE(18,I,3,0,"div",21),t.k0s()),2&o){const n=r,e=t.XpG(2);t.R7$(4),t.JRh(n.wins),t.R7$(4),t.JRh(n.losses),t.R7$(),t.vxM(n.ties>0?9:-1),t.R7$(4),t.vxM(null!==e.winRate()?13:-1),t.R7$(2),t.vxM(e.streakLabel()?15:-1),t.R7$(),t.vxM(n.bestWinStreak>0?16:-1),t.R7$(),t.vxM(e.avgDeltaLabel()?17:-1),t.R7$(),t.vxM(n.last30Outcomes.length>0?18:-1)}}function A(o,r){if(1&o){const n=t.RV6();t.j41(0,"button",29),t.bIt("click",function(){const a=t.eBV(n).$implicit,i=t.XpG(2);return t.Njj(i.selectFilter(a.key))}),t.EFF(1),t.k0s()}if(2&o){const n=r.$implicit,e=t.XpG(2);t.AVh("active",e.ratedFilter()===n.key),t.R7$(),t.SpI(" ",n.label," ")}}function B(o,r){if(1&o&&(t.j41(0,"div",9),t.EFF(1),t.k0s()),2&o){const n=t.XpG(2);t.R7$(),t.JRh(n.errorMessage())}}function N(o,r){1&o&&t.nrm(0,"div",30)}function W(o,r){1&o&&(t.j41(0,"div",10),t.Z7z(1,N,1,0,"div",30,t.Vm6),t.k0s()),2&o&&(t.R
17$(),t.Dyx(t.lJ4(0,F)))}function G(o,r){if(1&o&&(t.j41(0,"div",5),t.nrm(1,"fa-icon",31),t.j41(2,"h2"),t.EFF(3,"No matches yet"),t.k0s(),t.j41(4,"p"),t.EFF(5," Once you've played a Versus match, it'll show up here. Head to the lobby to start your first one. "),t.k0s(),t.j41(6,"a",32),t.EFF(7,"Open Versus lobby"),t.k0s()()),2&o){const n=t.XpG(2);t.R7$(),t.Y8G("icon",n.faClockRotateLeft)}}function X(o,r){if(1&o){const n=t.RV6();t.j41(0,"a",54),t.bIt("click",function(a){return t.eBV(n),t.Njj(a.stopPropagation())})("keydown.enter",function(a){return t.eBV(n),t.Njj(a.stopPropagation())})("keydown.space",function(a){return t.eBV(n),t.Njj(a.stopPropagation())}),t.EFF(1),t.k0s()}if(2&o){const n=t.XpG().$implicit;t.Y8G("routerLink",t.eq3(3,E,n.opponentDisplayName)),t.BMQ("aria-label","View "+n.opponentDisplayName+"'s profile"),t.R7$(),t.JRh(n.opponentDisplayName)}}function U(o,r){if(1&o&&(t.j41(0,"span",44),t.EFF(1),t.k0s()),2&o){const n=t.XpG().$implicit;t.R7$(),t.JRh(n.opponentDisplayName)}}function z(o,r){if(1&o&&(t.j41(0,"span",45),t.EFF(1),t.k0s()),2&o){const n=t.XpG().$implicit;t.R7$(),t.SpI("(",n.opponentRatingAtMatch,")")}}function S(o,r){1&o&&(t.j41(0,"span",51),t.EFF(1,"\xb7"),t.k0s(),t.j41(2,"span",55),t.EFF(3,"Casual"),t.k0s())}function J(o,r){if(1&o&&(t.j41(0,"span",56),t.EFF(1),t.k0s(),t.j41(2,"span",53),t.EFF(3,"rating"),t.k0s()),2&o){const n=t.XpG().$implicit,e=t.XpG(3);t.AVh("delta-pos",n.muDelta>0)("delta-neg",n.muDelta<0),t.R7$(),t.JRh(e.ratingDeltaText(n))}}function K(o,r){1&o&&(t.j41(0,"span",53),t.EFF(1,"No change"),t.k0s())}function Y(o,r){if(1&o){const n=t.RV6();t.j41(0,"li",34)(1,"div",36),t.bIt("click",function(){const a=t.eBV(n).$implicit,i=t.XpG(3);return t.Njj(i.openMatchDetails(a.matchId))})("keydown.enter",function(a){const i=t.eBV(n).$implicit,l=t.XpG(3);return t.Njj(l.openMatchDetails(i.matchId,a))})("keydown.space",function(a){const i=t.eBV(n).$implicit,l=t.XpG(3);return t.Njj(l.openMatchDetails(i.matchId,a))}),t.j41(2,"span",37),t.nrm(3,"fa-icon",3),t.j41(4,"span",38),t.EFF(5),t.k0s()(),t.j41(6,"div",39)(7,"div",40)(8,"span",41)(9,"span",42),t.EFF(10),t.k0s(),t.DNE(11,X,2,5,"a",43)(12,U,2,1,"span",44)(13,z,2,1,"span",45),t.k0s(),t.j41(14,"a",46),t.bIt("click",function(a){return t.eBV(n),t.Njj(a.stopPropagation())})("keydown.enter",function(a){return t.eBV(n),t.Njj(a.stopPropagation())})("keydown.space",function(a){return t.eBV(n),t.Njj(a.stopPropagation())}),t.EFF(15),t.nrm(16,"fa-icon",47),t.j41(17,"span",48),t.EFF(18,"Open problem in a new tab"),t.k0s()(),t.j41(19,"span",49),t.EFF(20),t.k0s()(),t.j41(21,"div",50)(22,"span"),t.EFF(23),t.k0s(),t.j41(24,"span",51),t.EFF(25,"\xb7"),t.k0s(),t.j41(26,"span"),t.EFF(27),t.k0s(),t.j41(28,"span",51),t.EFF(29,"\xb7"),t.k0s(),t.j41(30,"span"),t.EFF(31),t.k0s(),t.j41(32,"span",51),t.EFF(33,"\xb7"),t.k0s(),t.j41(34,"span"),t.EFF(35),t.nI1(36,"date"),t.k0s(),t.DNE(37,S,4,0),t.k0s()(),t.j41(38,"div",52),t.DNE(39,J,4,5)(40,K,2,0,"span",53),t.k0s()()()}if(2&o){const n=r.$implicit,e=t.XpG(3);t.R7$(),t.AVh("win","win"===n.outcome)("loss","loss"===n.outcome)("draw","draw"===n.outcome),t.R7$(),t.AVh("win","win"===n.outcome)("loss","loss"===n.outcome)("draw","draw"===n.outcome),t.R7$(),t.Y8G("icon",e.outcomeIcon(n.outcome)),t.R7$(2),t.JRh("win"===n.outcome?"Win":"loss"===n.outcome?"Loss":"Draw"),t.R7$(5),t.JRh(n.opponentDisplayName.charAt(0).toUpperCase()),t.R7$(),t.vxM(e.hasOpponentProfile(n.opponentDisplayName)?11:12),t.R7$(2),t.vxM(null!==n.opponentRatingAtMatch?13:-1),t.R7$(),t.Y8G("href","/problems/"+n.problemSlug,t.B4B),t.R7$(),t.SpI(" ",n.problemTitle," "),t.R7$(),t.Y8G("icon",e.faExternalLink),t.R7$(3),t.AVh("diff-easy","easy"===n.problemDifficulty)("diff-medium","medium"===n.problemDifficulty)("diff-hard","hard"===n.problemDifficulty),t.R7$(),t.SpI(" ",n.problemDifficulty," "),t.R7$(3),t.JRh(e.reasonLabel(n)),t.R7$(4),t.JRh(n.language),t.R7$(4),t.JRh(e.durationLabel(n.durationMs)),t.R7$(4),t.JRh(t.i5U(36,33,n.completedAt,"MMM d, h:mm a")),t.R7$(2),t.vxM(n.rated?-1:37),t.R7$(2),t.vxM(n.rated&&null!==n.muDelta?39:40)}}function Q(o,r){1&o&&t.EFF(0," Loading\u2026 ")}function Z(o,r){1&o&&t.EFF(0," Load more ")}function q(o,r){if(1&o){const n=t.RV6();t.j41(0,"div",35)(1,"button",57),t.bIt("click",function(){t.eBV(n);const a=t.XpG(3);return t.Njj(a.loadMore())}),t.DNE(2,Q,1,0)(3,Z,1,0),t.k0s()()}if(2&o){const n=t.XpG(3);t.R7$(),t.Y8G("disabled",n.pageLoading()),t.R7$(),t.vxM(n.pageLoading()?2:3)}}function tt(o,r){if(1&o&&(t.j41(0,"ul",33),t.Z7z(1,Y,41,36,"li",34,t.BUC().trackEntry,!0),t.k0s(),t.DNE(3,q,4,2,"div",35)),2&o){const n=t.XpG(2);t.R7$(),t.Dyx(n.entries()),t.R7$(2),t.vxM(n.hasMore()?3:-1)}}function nt(o,r){if(1&o&&(t.DNE(0,H,19,8,"section",6),t.j41(1,"nav",7),t.Z7z(2,A,2,3,"button",8,w),t.k0s(),t.DNE(4,B,2,1,"div",9)(5,W,3,1,"div",10)(6,G,8,1,"div",5)(7,tt,4,1)),2&o){let n;const e=t.XpG();t.vxM((n=e.summary())?0:-1,n),t.R7$(2),t.Dyx(e.filters),t.R7$(2),t.vxM(e.errorMessage()?4:-1),t.R7$(),t.vxM(e.initialLoading()?5:0===e.entries().length?6:7)}}let ot=(()=>{class o{openMatchDetails(n,e){e?.preventDefault(),this.router.navigate(["/versus/match",n])}constructor(n){this.platformId=n,this.api=(0,t.WQX)(O.E),this.toast=(0,t.WQX)(b.f),this.auth=(0,t.WQX)(C.Nj),this.router=(0,t.WQX)(g.Ix),this.title=(0,t.WQX)(u.hE),this.meta=(0,t.WQX)(u.W8),this.destroy$=new x.B,this.faChevronLeft=c.Wzs,this.faClockRotateLeft=c.Yj9,this.faFire=c.kNw,this.faTrophy=c.iHh,this.faMinus=c.EZy,this.faExternalLink=c.Ju_,this.filters=[{key:"all",label:"All"},{key:"rated",label:"Rated"},{key:"casual",label:"Casual"}],this.initialLoading=(0,t.vPA)(!0),this.pageLoading=(0,t.vPA)(!1),this.errorMessage=(0,t.vPA)(null),this.currentUid=(0,t.vPA)(null),this.authChecked=(0,t.vPA)(!1),this.entries=(0,t.vPA)([]),this.nextCursor=(0,t.vPA)(null),this.summary=(0,t.vPA)(null),this.ratedFilter=(0,t.vPA)("all"),this.hasMore=(0,t.EWP)(()=>
1null!==this.nextCursor()),this.winRate=(0,t.EWP)(()=>{const e=this.summary();return e?(0,f.wY)(e.wins,e.losses,e.ties):null}),this.streakLabel=(0,t.EWP)(()=>{const e=this.summary();if(!e||0===e.currentStreak)return null;const a=Math.abs(e.currentStreak);return e.currentStreak>0?`${a}W streak`:`${a}L streak`}),this.avgDeltaLabel=(0,t.EWP)(()=>{const e=this.summary();return e&&0!==e.avgDisplayedDelta?`${e.avgDisplayedDelta>0?"+":""}${e.avgDisplayedDelta.toFixed(2)}`:null}),this.requestId=0,this.hasLoadedOnce=!1}ngOnInit(){var n=this;return(0,d.A)(function*(){n.title.setTitle("Versus Match History | NeetCode");const e="Your Versus mode match history on NeetCode. See every match you've raced, your rating progression, and your win streak.";n.meta.updateTag({name:"description",content:e}),n.meta.updateTag({property:"og:title",content:"Versus Match History | NeetCode"}),n.meta.updateTag({property:"og:description",content:e}),(0,p.UE)(n.platformId)?(0,C.wh)(n.auth).pipe((0,y.F)((a,i)=>(a?.uid??null)===(i?.uid??null)),(0,v.Q)(n.destroy$)).subscribe(a=>{const i=a?.uid??null,l=n.currentUid()!==i;n.currentUid.set(i),n.authChecked.set(!0),l&&n.resetUserScopedState(),a?n.loadFirstPage():n.initialLoading.set(!1)}):n.initialLoading.set(!1)})()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}resetUserScopedState(){this.requestId+=1,this.entries.set([]),this.summary.set(null),this.nextCursor.set(null),this.hasLoadedOnce=!1,this.pageLoading.set(!1)}loadFirstPage(){var n=this;return(0,d.A)(function*(){n.hasLoadedOnce?n.pageLoading.set(!0):(n.initialLoading.set(!0),n.entries.set([]),n.nextCursor.set(null)),n.errorMessage.set(null);const a=++n.requestId;try{const i=yield n.api.getHistory({limit:20,ratedFilter:n.ratedFilter()});if(a!==n.requestId)return;n.applyResponse(i,!1),n.hasLoadedOnce=!0}catch(i){if(a!==n.requestId)return;n.errorMessage.set((0,M.q)(i,"Could not load match history."))}finally{a===n.requestId&&(n.initialLoading.set(!1),n.pageLoading.set(!1))}})()}loadMore(){var n=this;return(0,d.A)(function*(){if(!n.hasMore()||n.pageLoading())return;n.pageLoading.set(!0),n.errorMessage.set(null);const e=++n.requestId;try{const a=n.nextCursor();if(!a)return;const i=yield n.api.getHistory({limit:20,ratedFilter:n.ratedFilter(),cursorCompletedAt:a.completedAt,cursorMatchId:a.matchId});if(e!==n.requestId)return;n.applyResponse(i,!0)}catch(a){if(e!==n.requestId)return;n.errorMessage.set((0,M.q)(a,"Could not load match history."))}finally{e===n.requestId&&n.pageLoading.set(!1)}})()}selectFilter(n){this.ratedFilter()!==n&&(this.ratedFilter.set(n),this.loadFirstPage())}trackEntry(n,e){return e.matchId}outcomeIcon(n){return"win"===n?this.faTrophy:"loss"===n?this.faFire:this.faMinus}ratingDeltaText(n){return(0,f.Me)(n.muDelta,n.sigmaDelta)}durationLabel(n){const e=Math.max(0,Math.round(n/1e3)),a=Math.floor(e/60),i=e%60;return 0===a?`${i}s`:`${a}m ${i}s`}reasonLabel(n){switch(n.reason){case"all_tests_passed":return"All tests passed";case"hard_cap_expired":return"Time expired";case"concede":return"Conceded";case"disconnect":return"Disconnect";default:return n.reason}}powerUpLabel(n){switch(n){case"peek":return"Peek";case"hint_nudge":return"Hint";case"focus":return"Focus";case"mulligan":return"Mulligan";default:return""}}applyResponse(n,e){e?this.entries.update(a=>[...a,...n.entries]):this.entries.set(n.entries),this.nextCursor.set(n.nextCursor??null),this.summary.set(n.summary)}hasOpponentProfile(n){return(0,k.B)(n)}static{this.\u0275fac=function(e){return new(e||o)(t.rXU(t.Agw))}}static{this.\u0275cmp=t.VBU({type:o,selectors:[["app-versus-history"]],standalone:!0,features:[t.Jv_([(0,h.EB)({tablerFlame:P.Wf9})]),t.aNF],decls:11,vars:2,consts:[[1,"history","text-foreground"],[1,"hi-header"],["routerLink","/versus",1,"back-link"],[3,"icon"],[1,"subtitle"],[1,"empty-state","app-surface-card","text-foreground"],[1,"summary-card","app-surface-card","text-foreground"],["aria-label","Filter matches",1,"filter-row"],["type","button",1,"filter-chip",3,"active"],["role","alert",1,"error-banner"],["aria-busy","true","aria-label","Loading",1,"skeleton-grid"],[1,"record"],[1,"record-totals"],[1,"wins"],[1,"sep"],[1,"losses"],[1,"record-meta"],[1,"record-label"],[1,"winrate"],[1,"stat-grid"],[1,"stat-pill"],["aria-label","Last 30 rated matches",1,"last30-strip"],[1,"ties"],["name","tablerFlame",1,"stat-icon"],[1,"stat-value"],[1,"stat-label"],[1,"stat-icon",3,"icon"],[1,"strip-cell",3,"win","loss","draw"],[1,"strip-cell"],["type","button",1,"filter-chip",3,"click"],[1,"skeleton-row"],[1,"empty-icon",3,"icon"],["routerLink","/versus",1,"btn","btn-primary"],[1,"match-list"],[1,"match-row-shell"],[1,"load-more-wrap"],["data-tooltip","View details","role","link","tabindex","0",1,"match-row","app-surface-card","app-surface-card--overflow-visible","text-foreground","has-tooltip-top",3,"click","keydown.enter","keydown.space"],[1,"outcome-chip"],[1,"outcome-text"],[1,"match-main"],[1,"match-line"],[1,"opponent"],[1,"opp-avatar","avatar-fallback"],[1,"opponent-name","opponent-link",3,"routerLink"],[1,"opponent-name"],[1,"opp-rating"],["target","_blank","rel","noopener noreferrer",1,"problem-link",3,"click","keydown.enter","keydown.space","href"],["aria-hidden","true",1,"problem-link-icon",3,"icon"],[1,"sr-only"],[1,"diff-pill"],[1,"match-meta"],[1,"dot"],[1,"rating-delta"],[1,"delta-label"],[1,"opponent-name","opponent-link",3,"click","keydown.enter","keydown.space","routerLink"],[1,"casual-tag"],[1,"delta-value"],["type","button",1,"btn","btn-secondary",3,"click","disabled"]],template:function(e,a){1&e&&(t.j41(0,"section",0)(1,"header",1)(2,"a",2),t.nrm(3,"fa-icon",3),t.EFF(4," Versus lobby "),t.k0s(),t.j41(5,"h1"),t.EFF(6,"Match History"),t.k0s(),t.j41(7,"p",4),t.EFF(8," Every match you've played, ranked or casual. Open a match to see both players' attempts. "),t.k0s()(),t.DNE(9,R,5,0,"div",5)(10,nt,8,3),t.k0s()),2&e&&(t.R7$(3),t.Y8G("icon",a.faChevronLeft),t.R7$(6),t.vxM(a.authChecked()&&!a.currentUid()?9:10))},dependencies:[g.Wk,m.dX,m.aY,h.$e,p.vh],styles:["[_nghost-%COMP%]{--body-background: var(--surface-page);--body-background-2: var(--surface-sunken);--navbar-background: var(--card);--text-color: var(--foreground);--text-color-light: var(--foreground-secondary);--text-color-light-2: var(--muted-foreground);--card-background: var(--card);--card-background-hover: var(--accent);--card-border-color: var(--border);--accordion-button-background: var(--muted);--divider-background-color: var(--border);--code-editor-background-color: var(--card);
1--code-block-border-color: var(--border);--code-block1-background-color: var(--card);--code-inline-background-color: var(--code-sample-background-color);--code-inline-color: var(--foreground);--code-inline-border-color: var(--border);--hover-background-color: var(--control-hover-background);--input-background-color: var(--card);--border-color: var(--border);--primary-color: var(--primary);--link-color: var(--primary);--link-color-light: color-mix(in oklab, var(--primary) 14%, transparent);--selected-background-color: color-mix( in oklab, var(--primary) 16%, transparent );--editor-toolbar-border-color: var(--border);--text-muted-color: var(--muted-foreground);--accordion-button-background-invert: var(--accent);--sidebar-item-background: color-mix( in oklab, var(--app-surface-card-bg) 65%, var(--card-background-hover) );--tab-link-background: var(--control-selected-background);--code-editor-dragger-background-color: var(--background);--code-editor-language-btn-background-color: var(--muted);--table-background-color: var(--muted);--tabs-border-color: var(--border);--tabs-active-border-color: var(--foreground);--code-copy-clipboard-border-color: var(--border);--prompt-code-block-background-color: var(--code-sample-background-color);--monaco-btn-color: var(--muted);--code-container-background: var(--background);--test-case-btn-background-color: var(--muted);--lang-dropdown-background-color: var(--muted);--activity-item-background-color: var(--card);--skeleton-bg: color-mix(in oklab, var(--foreground) 12%, var(--muted));--skeleton-code-bg: var(--muted);display:block;background:var(--body-background);color:var(--text-color);min-height:100vh}.history[_ngcontent-%COMP%]{max-width:920px;margin:0 auto;padding:36px 24px 96px;display:flex;flex-direction:column;gap:22px}.hi-header[_ngcontent-%COMP%]{position:relative;text-align:center}.hi-header[_ngcontent-%COMP%]   .back-link[_ngcontent-%COMP%]{position:absolute;left:0;top:6px;color:var(--text-color);text-decoration:none;font-size:17px;display:inline-flex;align-items:center;gap:8px;transition:opacity .15s ease}.hi-header[_ngcontent-%COMP%]   .back-link[_ngcontent-%COMP%]:hover{opacity:.8;text-decoration:none}.hi-header[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%]{margin:0 0 8px;font-size:36px;font-weight:700;letter-spacing:-.5px}.hi-header[_ngcontent-%COMP%]   .subtitle[_ngcontent-%COMP%]{margin:0;color:var(--text-color-light);font-size:14px}.summary-card[_ngcontent-%COMP%]{--app-surface-card-radius: 14px;padding:20px;display:flex;flex-direction:column;gap:16px;animation:_ngcontent-%COMP%_fade-in .4s ease-out}@keyframes _ngcontent-%COMP%_fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.record[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.record-totals[_ngcontent-%COMP%]{font-size:36px;font-weight:700;letter-spacing:-.5px;font-variant-numeric:tabular-nums;color:var(--text-color)}.record-totals[_ngcontent-%COMP%]   .wins[_ngcontent-%COMP%], .record-totals[_ngcontent-%COMP%]   .losses[_ngcontent-%COMP%]{color:inherit}.record-totals[_ngcontent-%COMP%]   .ties[_ngcontent-%COMP%]{color:var(--text-color-light)}.record-totals[_ngcontent-%COMP%]   .sep[_ngcontent-%COMP%]{color:var(--text-color-light-2);margin:0 4px}.record-meta[_ngcontent-%COMP%]{text-align:right;display:flex;flex-direction:column;gap:2px}.record-meta[_ngcontent-%COMP%]   .record-label[_ngcontent-%COMP%]{color:var(--text-color-light-2);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.record-meta[_ngcontent-%COMP%]   .winrate[_ngcontent-%COMP%]{color:var(--text-color-light);font-size:14px;font-weight:600}.stat-grid[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:10px}.stat-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;background:var(--body-background-2);border:1px solid var(--card-border-color);border-radius:999px;padding:6px 12px;font-size:13px}.stat-pill[_ngcontent-%COMP%]   .stat-icon[_ngcontent-%COMP%]{color:var(--text-color-light-2)}.stat-pill[_ngcontent-%COMP%]   .stat-value[_ngcontent-%COMP%]{font-weight:600;color:var(--text-color)}.stat-pill[_ngcontent-%COMP%]   .stat-label[_ngcontent-%COMP%]{color:var(--text-color-light-2);font-size:11px;margin-left:2px}.stat-pill[_ngcontent-%COMP%]   .delta-pos[_ngcontent-%COMP%]{color:var(--success-color)}.stat-pill[_ngcontent-%COMP%]   .delta-neg[_ngcontent-%COMP%]{color:var(--difficulty-hard)}.last30-strip[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.strip-cell[_ngcontent-%COMP%]{width:14px;
1height:14px;border-radius:3px;background:var(--body-background-2);border:1px solid var(--card-border-color);flex-shrink:0}.strip-cell.win[_ngcontent-%COMP%]{background:var(--success-color);border-color:var(--success-color)}.strip-cell.loss[_ngcontent-%COMP%]{background:var(--difficulty-hard);border-color:var(--difficulty-hard)}.strip-cell.draw[_ngcontent-%COMP%]{background:var(--text-color-light-2);border-color:var(--text-color-light-2)}.filter-row[_ngcontent-%COMP%]{display:flex;gap:8px}.filter-chip[_ngcontent-%COMP%]{background:var(--card-background);color:var(--text-color-light);border:1px solid var(--card-border-color);padding:6px 14px;border-radius:999px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.filter-chip[_ngcontent-%COMP%]:hover{background:var(--hover-background-color);color:var(--text-color)}.filter-chip.active[_ngcontent-%COMP%]{background:var(--link-color);color:var(--btn-text-color);border-color:var(--link-color)}.error-banner[_ngcontent-%COMP%]{background:rgba(var(--difficulty-hard-rgb),.1);border:1px solid rgba(var(--difficulty-hard-rgb),.4);color:var(--difficulty-hard);padding:12px 16px;border-radius:8px;font-size:14px}.skeleton-grid[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.skeleton-row[_ngcontent-%COMP%]{height:64px;border-radius:10px;background:linear-gradient(90deg,var(--card-background) 0%,var(--body-background-2) 50%,var(--card-background) 100%);background-size:200% 100%;animation:_ngcontent-%COMP%_skeleton-shimmer 1.4s ease-in-out infinite}@keyframes _ngcontent-%COMP%_skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state[_ngcontent-%COMP%]{--app-surface-card-radius: 12px;text-align:center;padding:48px 16px}.empty-state[_ngcontent-%COMP%]   .empty-icon[_ngcontent-%COMP%]{font-size:36px;color:var(--text-color-light-2);margin-bottom:12px}.empty-state[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{margin:0 0 6px;font-size:22px}.empty-state[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0 auto 16px;color:var(--text-color-light);max-width:380px;font-size:14px}.match-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.match-row-shell[_ngcontent-%COMP%]{list-style:none}.match-row[_ngcontent-%COMP%]{--app-surface-card-radius: 10px;display:grid;grid-template-columns:100px 1fr auto;gap:14px;align-items:center;padding:12px 16px;color:inherit;text-decoration:none;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease;animation:_ngcontent-%COMP%_row-fade-in .3s ease-out backwards}.match-row[_ngcontent-%COMP%]:hover{border-color:var(--link-color)}.match-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--link-color);outline-offset:2px}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(1)   .match-row[_ngcontent-%COMP%]{animation-delay:25ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(2)   .match-row[_ngcontent-%COMP%]{animation-delay:50ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(3)   .match-row[_ngcontent-%COMP%]{animation-delay:75ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(4)   .match-row[_ngcontent-%COMP%]{animation-delay:.1s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(5)   .match-row[_ngcontent-%COMP%]{animation-delay:125ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(6)   .match-row[_ngcontent-%COMP%]{animation-delay:.15s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(7)   .match-row[_ngcontent-%COMP%]{animation-delay:175ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(8)   .match-row[_ngcontent-%COMP%]{animation-delay:.2s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(9)   .match-row[_ngcontent-%COMP%]{animation-delay:225ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(10)   .match-row[_ngcontent-%COMP%]{animation-delay:.25s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(11)   .match-row[_ngcontent-%COMP%]{animation-delay:275ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(12)   .match-row[_ngcontent-%COMP%]{animation-delay:.3s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(13)   .match-row[_ngcontent-%COMP%]{animation-delay:325ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(14)   .match-row[_ngcontent-%COMP%]{animation-delay:.35s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(15)   .match-row[_ngcontent-%COMP%]{animation-delay:375ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(16)   .match-row[_ngcontent-%COMP%]{animation-delay:.4s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(17)   .match-row[_ngcontent-%COMP%]{animation-delay:425ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(18)   .match-row[_ngcontent-%COMP%]{animation-delay:.45s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(19)   .match-row[_ngcontent-%COMP%]{animation-delay:475ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(20)   .match-row[_ngcontent-%COMP%]{animation-delay:.5s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(21)   .match-row[_ngcontent-%COMP%]{animation-delay:525ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(22)   .match-row[_ngcontent-%COMP%]{animation-delay:.55s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(23)   .match-row[_ngcontent-%COMP%]{animation-delay:575ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(24)   .match-row[_ngcontent-%COMP%]{animation-delay:.6s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(25)   .match-row[_ngcontent-%COMP%]{animation-delay:625ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(26)   .match-row[_ngcontent-%COMP%]{animation-delay:.65s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(27)   .match-row[_ngcontent-%COMP%]{animation-delay:675ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(28)   .match-row[_ngcontent-%COMP%]{animation-delay:.7s}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(29)   .match-row[_ngcontent-%COMP%]{animation-delay:725ms}.match-list[_ngcontent-%COMP%]   .match-row-shell[_ngcontent-%COMP%]:nth-child(30)   .match-row[_ngcontent-%COMP%]{animation-delay:.75s}@keyframes _ngcontent-%COMP%_row-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.outcome-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;width:fit-content}.outcome-chip.win[_ngcontent-%COMP%]{color:var(--success-color);background:rgba(var(--success-color-rgb),.1)}.outcome-chip.loss[_ngcontent-%COMP%]{color:var(--difficulty-hard);background:rgba(var(--difficulty-hard-rgb),.1)}.outcome-chip.draw[_ngcontent-%COMP%]{color:var(--text-color-light-2);background:var(--body-background-2)}.match-main[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;min-width:0}.match-line[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
1.opponent[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-weight:500;font-size:14px}.opp-avatar[_ngcontent-%COMP%]{width:22px;height:22px;border-radius:50%;object-fit:cover;background:var(--body-background-2);border:1px solid var(--card-border-color);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--text-color-light);flex-shrink:0}.avatar-fallback[_ngcontent-%COMP%]{text-transform:uppercase}.opponent-name[_ngcontent-%COMP%]{color:var(--text-color)}.opponent-link[_ngcontent-%COMP%]{text-decoration:none}.opponent-link[_ngcontent-%COMP%]:hover{color:var(--link-color);text-decoration:underline}.opp-rating[_ngcontent-%COMP%]{color:var(--text-color-light-2);font-size:12px;font-variant-numeric:tabular-nums}.problem-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.3rem;color:var(--link-color);text-decoration:none;font-weight:500;font-size:14px}.problem-link[_ngcontent-%COMP%]:hover, .problem-link[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}.problem-link-icon[_ngcontent-%COMP%]{font-size:.68rem;opacity:.8}.sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.diff-pill[_ngcontent-%COMP%]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:2px 8px;border-radius:999px;background:var(--body-background-2)}.diff-pill.diff-easy[_ngcontent-%COMP%]{color:var(--difficulty-easy);background:rgba(var(--success-color-rgb),.12)}.diff-pill.diff-medium[_ngcontent-%COMP%]{color:var(--difficulty-medium);background:rgba(var(--difficulty-medium-rgb),.14)}.diff-pill.diff-hard[_ngcontent-%COMP%]{color:var(--difficulty-hard);background:rgba(var(--difficulty-hard-rgb),.12)}.match-meta[_ngcontent-%COMP%]{font-size:12px;color:var(--text-color-light-2);display:flex;flex-wrap:wrap;align-items:center;gap:6px}.match-meta[_ngcontent-%COMP%]   .dot[_ngcontent-%COMP%]{opacity:.6}.match-meta[_ngcontent-%COMP%]   .casual-tag[_ngcontent-%COMP%]{background:var(--body-background-2);padding:1px 6px;border-radius:4px;font-size:10px;text-transform:uppercase;letter-spacing:.5px}.rating-delta[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0}.rating-delta[_ngcontent-%COMP%]   .delta-value[_ngcontent-%COMP%]{font-weight:700;font-size:18px}.rating-delta[_ngcontent-%COMP%]   .delta-value.delta-pos[_ngcontent-%COMP%]{color:var(--success-color)}.rating-delta[_ngcontent-%COMP%]   .delta-value.delta-neg[_ngcontent-%COMP%]{color:var(--difficulty-hard)}.rating-delta[_ngcontent-%COMP%]   .delta-label[_ngcontent-%COMP%]{font-size:11px;color:var(--text-color-light-2);text-transform:uppercase;letter-spacing:.5px}.load-more-wrap[_ngcontent-%COMP%]{display:flex;justify-content:center;margin-top:4px}@media (max-width: 720px){.history[_ngcontent-%COMP%]{padding:24px 14px 80px}.hi-header[_ngcontent-%COMP%]   .back-link[_ngcontent-%COMP%]{position:static;margin-bottom:12px}.hi-header[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%]{font-size:26px}.match-row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:8px}.match-row[_ngcontent-%COMP%]   .rating-delta[_ngcontent-%COMP%]{align-items:flex-start;text-align:left}.record-totals[_ngcontent-%COMP%]{font-size:28px}}"],changeDetection:0})}}return o})()}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.