System.register(["@angular/cdk/coercion","@angular/core","rxjs","rxjs/operators","@angular/cdk/platform","@angular/common","@angular/cdk/bidi","@angular/cdk/collections"],(function(e){"use strict";var t,i,r,n,s,o,a,l,c,h,d,u,f,_,g,p,m,v,S,w,C,R,b,x,k,z,y,O,V,I,D,B,E,T,j,F,P;return{setters:[function(e){t=e.coerceNumberProperty,i=e.coerceElement,r=e.coerceBooleanProperty},function(e){n=e.InjectionToken,s=e,o=e.forwardRef,e.Directive,e.Input,e.Injectable,a=e.Optional,l=e.Inject,c=e.inject,e.Component,e.ViewEncapsulation,e.ChangeDetectionStrategy,e.Output,e.ViewChild,e.SkipSelf,h=e.ElementRef,e.NgModule},function(e){d=e.Subject,u=e.of,f=e.Observable,_=e.fromEvent,g=e.Subscription,p=e.isObservable,m=e.animationFrameScheduler,v=e.asapScheduler},function(e){S=e.auditTime,w=e.filter,C=e.takeUntil,R=e.startWith,b=e.pairwise,x=e.switchMap,k=e.shareReplay,z=e.distinctUntilChanged},function(e){y=e,O=e.getRtlScrollAxisType,V=e.supportsScrollBehavior,I=e.Platform},function(e){D=e.DOCUMENT},function(e){B=e,E=e.BidiModule},function(e){T=e.isDataSource,j=e.ArrayDataSource,F=e._VIEW_REPEATER_STRATEGY,P=e._RecycleViewRepeaterStrategy,e}],execute:function(){e("_fixedSizeVirtualScrollStrategyFactory",M);const L=["contentWrapper"],W=["*"],A=e("VIRTUAL_SCROLL_STRATEGY",new n("VIRTUAL_SCROLL_STRATEGY"));class N{constructor(e,t,i){this._scrolledIndexChange=new d,this.scrolledIndexChange=this._scrolledIndexChange.pipe(z()),this._viewport=null,this._itemSize=e,this._minBufferPx=t,this._maxBufferPx=i}attach(e){this._viewport=e,this._updateTotalContentSize(),this._updateRenderedRange()}detach(){this._scrolledIndexChange.complete(),this._viewport=null}updateItemAndBufferSize(e,t,i){this._itemSize=e,this._minBufferPx=t,this._maxBufferPx=i,this._updateTotalContentSize(),this._updateRenderedRange()}onContentScrolled(){this._updateRenderedRange()}onDataLengthChanged(){this._updateTotalContentSize(),this._updateRenderedRange()}onContentRendered(){}onRenderedOffsetChanged(){}scrollToIndex(e,t){this._viewport&&this._viewport.scrollToOffset(e*this._itemSize,t)}_updateTotalContentSize(){this._viewport&&this._viewport.setTotalContentSize(this._viewport.getDataLength()*this._itemSize)}_updateRenderedRange(){if(!this._viewport)return;const e=this._viewport.getRenderedRange(),t={start:e.start,end:e.end},i=this._viewport.getViewportSize(),r=this._viewport.getDataLength();let n=this._viewport.measureScrollOffset(),s=this._itemSize>0?n/this._itemSize:0;if(t.end>r){const e=Math.ceil(i/this._itemSize),o=Math.max(0,Math.min(s,r-e));s!=o&&(s=o,n=o*this._itemSize,t.start=Math.floor(s)),t.end=Math.max(0,Math.min(r,t.start+e))}const o=n-t.start*this._itemSize;if(o<this._minBufferPx&&0!=t.start){const e=Math.ceil((this._maxBufferPx-o)/this._itemSize);t.start=Math.max(0,t.start-e),t.end=Math.min(r,Math.ceil(s+(i+this._minBufferPx)/this._itemSize))}else{const e=t.end*this._itemSize-(n+i);if(e<this._minBufferPx&&t.end!=r){const i=Math.ceil((this._maxBufferPx-e)/this._itemSize);i>0&&(t.end=Math.min(r,t.end+i),t.start=Math.max(0,Math.floor(s-this._minBufferPx/this._itemSize)))}}this._viewport.setRenderedRange(t),this._viewport.setRenderedContentOffset(this._itemSize*t.start),this._scrolledIndexChange.next(Math.floor(s))}}function M(e){return e._scrollStrategy}e("FixedSizeVirtualScrollStrategy",N);class Z{constructor(){this._itemSize=20,this._minBufferPx=100,this._maxBufferPx=200,this._scrollStrategy=new N(this.itemSize,this.minBufferPx,this.maxBufferPx)}get itemSize(){return this._itemSize}set itemSize(e){this._itemSize=t(e)}get minBufferPx(){return this._minBufferPx}set minBufferPx(e){this._minBufferPx=t(e)}get maxBufferPx(){return this._maxBufferPx}set maxBufferPx(e){this._maxBufferPx=t(e)}ngOnChanges(){this._scrollStrategy.updateItemAndBufferSize(this.itemSize,this.minBufferPx,this.maxBufferPx)}static{this.\u0275fac=function(e){return new(e||Z)}}static{this.\u0275dir=s.\u0275\u0275defineDirective({type:Z,selectors:[["cdk-virtual-scroll-viewport","itemSize",""]],inputs:{itemSize:"itemSize",minBufferPx:"minBufferPx",maxBufferPx:"maxBufferPx"},standalone:!0,features:[s.\u0275\u0275ProvidersFeature([{provide:A,useFactory:M,deps:[o((()=>Z))]}]),s.\u0275\u0275NgOnChangesFeature]})}}e("CdkFixedSizeVirtualScroll",Z);const U=e("DEFAULT_SCROLL_TIME",20);class H{constructor(e,t,i){this._ngZone=e,this._platform=t,this._scrolled=new d,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=i}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe((()=>this._scrolled.next(e))))}deregister(e){const t=this.scrollContainers.get(e);t&&(t.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=U){return this._platform.isBrowser?new f((t=>{this._globalSubscription||this._addGlobalListener();const i=e>0?this._scrolled.pipe(S(e)).subscribe(t):this._scrolled.subscribe(t);return this._scrolledCount++,()=>{i.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}})):u()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach(((e,t)=>this.deregister(t))),this._scrolled.complete()}ancestorScrolled(e,t){const i=this.getAncestorScrollContainers(e);return this.scrolled(t).pipe(w((e=>!e||i.indexOf(e)>-1)))}getAncestorScrollContainers(e){const t=[];return this.scrollContainers.forEach(((i,r)=>{this._scrollableContainsElement(r,e)&&t.push(r)})),t}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,t){let r=i(t),n=e.getElementRef().nativeElement;do{if(r==n)return!0}while(r=r.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular((()=>{const e=this._getWindow();return _(e.document,"scroll").subscribe((()=>this._scrolled.next()))}))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}static{this.\u0275fac=function(e){return new(e||H)(s.\u0275\u0275inject(s.NgZone),s.\u0275\u0275inject(y.Platform),s.\u0275\u0275inject(D,8))}}static{this.\u0275prov=s.\u0275\u0275defineInjectable({token:H,factory:H.\u0275fac,providedIn:"root"})}}e("ScrollDispatcher",H);class G{constructor(e,t,i,r){this.elementRef=e,this.scrollDispatcher=t,this.ngZone=i,this.dir=r,this._destroyed=new d,this._elementScrolled=new f((e=>this.ngZone.runOutsideAngular((()=>_(this.elementRef.nativeElement,"scroll").pipe(C(this._destroyed)).subscribe(e)))))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const t=this.elementRef.nativeElement,i=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=i?e.end:e.start),null==e.right&&(e.right=i?e.start:e.end),null!=e.bottom&&(e.top=t.scrollHeight-t.clientHeight-e.bottom),i&&0!=O()?(null!=e.left&&(e.right=t.scrollWidth-t.clientWidth-e.left),2==O()?e.left=e.right:1==O()&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=t.scrollWidth-t.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const t=this.elementRef.nativeElement;V()?t.scrollTo(e):(null!=e.top&&(t.scrollTop=e.top),null!=e.left&&(t.scrollLeft=e.left))}measureScrollOffset(e){const t="left",i="right",r=this.elementRef.nativeElement;if("top"==e)return r.scrollTop;if("bottom"==e)return r.scrollHeight-r.clientHeight-r.scrollTop;const n=this.dir&&"rtl"==this.dir.value;return"start"==e?e=n?i:t:"end"==e&&(e=n?t:i),n&&2==O()?e==t?r.scrollWidth-r.clientWidth-r.scrollLeft:r.scrollLeft:n&&1==O()?e==t?r.scrollLeft+r.scrollWidth-r.clientWidth:-r.scrollLeft:e==t?r.scrollLeft:r.scrollWidth-r.clientWidth-r.scrollLeft}static{this.\u0275fac=function(e){return new(e||G)(s.\u0275\u0275directiveInject(s.ElementRef),s.\u0275\u0275directiveInject(H),s.\u0275\u0275directiveInject(s.NgZone),s.\u0275\u0275directiveInject(B.Directionality,8))}}static{this.\u0275dir=s.\u0275\u0275defineDirective({type:G,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0})}}e("CdkScrollable",G);const $=e("DEFAULT_RESIZE_TIME",20);class Y{constructor(e,t,i){this._platform=e,this._change=new d,this._changeListener=e=>{this._change.next(e)},this._document=i,t.runOutsideAngular((()=>{if(e.isBrowser){const e=this._getWindow();e.addEventListener("resize",this._changeListener),e.addEventListener("orientationchange",this._changeListener)}this.change().subscribe((()=>this._viewportSize=null))}))}ngOnDestroy(){if(this._platform.isBrowser){const e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:t,height:i}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+i,right:e.left+t,height:i,width:t}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,t=this._getWindow(),i=e.documentElement,r=i.getBoundingClientRect();return{top:-r.top||e.body.scrollTop||t.scrollY||i.scrollTop||0,left:-r.left||e.body.scrollLeft||t.scrollX||i.scrollLeft||0}}change(e=$){return e>0?this._change.pipe(S(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static{this.\u0275fac=function(e){return new(e||Y)(s.\u0275\u0275inject(y.Platform),s.\u0275\u0275inject(s.NgZone),s.\u0275\u0275inject(D,8))}}static{this.\u0275prov=s.\u0275\u0275defineInjectable({token:Y,factory:Y.\u0275fac,providedIn:"root"})}}e("ViewportRuler",Y);const Q=e("VIRTUAL_SCROLLABLE",new n("VIRTUAL_SCROLLABLE"));class q extends G{constructor(e,t,i,r){super(e,t,i,r)}measureViewportSize(e){const t=this.elementRef.nativeElement;return"horizontal"===e?t.clientWidth:t.clientHeight}static{this.\u0275fac=function(e){return new(e||q)(s.\u0275\u0275directiveInject(s.ElementRef),s.\u0275\u0275directiveInject(H),s.\u0275\u0275directiveInject(s.NgZone),s.\u0275\u0275directiveInject(B.Directionality,8))}}static{this.\u0275dir=s.\u0275\u0275defineDirective({type:q,features:[s.\u0275\u0275InheritDefinitionFeature]})}}e("CdkVirtualScrollable",q);const X="undefined"!=typeof requestAnimationFrame?m:v;class J extends q{get orientation(){return this._orientation}set orientation(e){this._orientation!==e&&(this._orientation=e,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(e){this._appendOnly=r(e)}constructor(e,t,i,r,n,s,o,a){super(e,s,i,n),this.elementRef=e,this._changeDetectorRef=t,this._scrollStrategy=r,this.scrollable=a,this._platform=c(I),this._detachedSubject=new d,this._renderedRangeSubject=new d,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new f((e=>this._scrollStrategy.scrolledIndexChange.subscribe((t=>Promise.resolve().then((()=>this.ngZone.run((()=>e.next(t))))))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=g.EMPTY,this._viewportChanges=o.change().subscribe((()=>{this.checkViewportSize()})),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular((()=>Promise.resolve().then((()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(R(null),S(0,X),C(this._destroyed)).subscribe((()=>this._scrollStrategy.onContentScrolled())),this._markChangeDetectionNeeded()})))))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(e){this._forOf,this.ngZone.runOutsideAngular((()=>{this._forOf=e,this._forOf.dataStream.pipe(C(this._detachedSubject)).subscribe((e=>{const t=e.length;t!==this._dataLength&&(this._dataLength=t,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()}))}))}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]}setTotalContentSize(e){this._totalContentSize!==e&&(this._totalContentSize=e,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(e){var t,i;t=this._renderedRange,i=e,(t.start!=i.start||t.end!=i.end)&&(this.appendOnly&&(e={start:0,end:Math.max(this._renderedRange.end,e.end)}),this._renderedRangeSubject.next(this._renderedRange=e),this._markChangeDetectionNeeded((()=>this._scrollStrategy.onContentRendered())))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(e,t="to-start"){e=this.appendOnly&&"to-start"===t?0:e;const i=this.dir&&"rtl"==this.dir.value,r="horizontal"==this.orientation,n=r?"X":"Y";let s=`translate${n}(${Number((r&&i?-1:1)*e)}px)`;this._renderedContentOffset=e,"to-end"===t&&(s+=` translate${n}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=s&&(this._renderedContentTransform=s,this._markChangeDetectionNeeded((()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()})))}scrollToOffset(e,t="auto"){const i={behavior:t};"horizontal"===this.orientation?i.start=e:i.top=e,this.scrollable.scrollTo(i)}scrollToIndex(e,t="auto"){this._scrollStrategy.scrollToIndex(e,t)}measureScrollOffset(e){let t;return t=this.scrollable==this?e=>super.measureScrollOffset(e):e=>this.scrollable.measureScrollOffset(e),Math.max(0,t(e??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(e){let t;const i="left",r="right",n="rtl"==this.dir?.value;t="start"==e?n?r:i:"end"==e?n?i:r:e||("horizontal"===this.orientation?"left":"top");const s=this.scrollable.measureBoundingClientRectWithScrollOffset(t);return this.elementRef.nativeElement.getBoundingClientRect()[t]-s}measureRenderedContentSize(){const e=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?e.offsetWidth:e.offsetHeight}measureRangeSize(e){return this._forOf?this._forOf.measureRangeSize(e,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(e){e&&this._runAfterChangeDetection.push(e),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular((()=>Promise.resolve().then((()=>{this._doChangeDetection()})))))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run((()=>this._changeDetectorRef.markForCheck()));const e=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const t of e)t()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}static{this.\u0275fac=function(e){return new(e||J)(s.\u0275\u0275directiveInject(s.ElementRef),s.\u0275\u0275directiveInject(s.ChangeDetectorRef),s.\u0275\u0275directiveInject(s.NgZone),s.\u0275\u0275directiveInject(A,8),s.\u0275\u0275directiveInject(B.Directionality,8),s.\u0275\u0275directiveInject(H),s.\u0275\u0275directiveInject(Y),s.\u0275\u0275directiveInject(Q,8))}}static{this.\u0275cmp=s.\u0275\u0275defineComponent({type:J,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,t){if(1&e&&s.\u0275\u0275viewQuery(L,7),2&e){let e;s.\u0275\u0275queryRefresh(e=s.\u0275\u0275loadQuery())&&(t._contentWrapper=e.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,t){2&e&&s.\u0275\u0275classProp("cdk-virtual-scroll-orientation-horizontal","horizontal"===t.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==t.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[s.\u0275\u0275ProvidersFeature([{provide:G,useFactory:(e,t)=>e||t,deps:[[new a,new l(Q)],J]}]),s.\u0275\u0275InheritDefinitionFeature,s.\u0275\u0275StandaloneFeature],ngContentSelectors:W,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(e,t){1&e&&(s.\u0275\u0275projectionDef(),s.\u0275\u0275elementStart(0,"div",0,1),s.\u0275\u0275projection(2),s.\u0275\u0275elementEnd(),s.\u0275\u0275element(3,"div",2)),2&e&&(s.\u0275\u0275advance(3),s.\u0275\u0275styleProp("width",t._totalContentWidth)("height",t._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0})}}function K(e,t,i){const r=i;if(!r.getBoundingClientRect)return 0;const n=r.getBoundingClientRect();return"horizontal"===e?"start"===t?n.left:n.right:"start"===t?n.top:n.bottom}e("CdkVirtualScrollViewport",J);class ee{get cdkVirtualForOf(){return this._cdkVirtualForOf}set cdkVirtualForOf(e){this._cdkVirtualForOf=e,T(e)?this._dataSourceChanges.next(e):this._dataSourceChanges.next(new j(p(e)?e:Array.from(e||[])))}get cdkVirtualForTrackBy(){return this._cdkVirtualForTrackBy}set cdkVirtualForTrackBy(e){this._needsUpdate=!0,this._cdkVirtualForTrackBy=e?(t,i)=>e(t+(this._renderedRange?this._renderedRange.start:0),i):void 0}set cdkVirtualForTemplate(e){e&&(this._needsUpdate=!0,this._template=e)}get cdkVirtualForTemplateCacheSize(){return this._viewRepeater.viewCacheSize}set cdkVirtualForTemplateCacheSize(e){this._viewRepeater.viewCacheSize=t(e)}constructor(e,t,i,r,n,s){this._viewContainerRef=e,this._template=t,this._differs=i,this._viewRepeater=r,this._viewport=n,this.viewChange=new d,this._dataSourceChanges=new d,this.dataStream=this._dataSourceChanges.pipe(R(null),b(),x((([e,t])=>this._changeDataSource(e,t))),k(1)),this._differ=null,this._needsUpdate=!1,this._destroyed=new d,this.dataStream.subscribe((e=>{this._data=e,this._onRenderedDataChange()})),this._viewport.renderedRangeStream.pipe(C(this._destroyed)).subscribe((e=>{this._renderedRange=e,this.viewChange.observers.length&&s.run((()=>this.viewChange.next(this._renderedRange))),this._onRenderedDataChange()})),this._viewport.attach(this)}measureRangeSize(e,t){if(e.start>=e.end)return 0;e.start<this._renderedRange.start||(e.end,this._renderedRange.end);const i=e.start-this._renderedRange.start,r=e.end-e.start;let n,s;for(let e=0;e<r;e++){const t=this._viewContainerRef.get(e+i);if(t&&t.rootNodes.length){n=s=t.rootNodes[0];break}}for(let e=r-1;e>-1;e--){const t=this._viewContainerRef.get(e+i);if(t&&t.rootNodes.length){s=t.rootNodes[t.rootNodes.length-1];break}}return n&&s?K(t,"end",s)-K(t,"start",n):0}ngDoCheck(){if(this._differ&&this._needsUpdate){const e=this._differ.diff(this._renderedItems);e?this._applyChanges(e):this._updateContext(),this._needsUpdate=!1}}ngOnDestroy(){this._viewport.detach(),this._dataSourceChanges.next(void 0),this._dataSourceChanges.complete(),this.viewChange.complete(),this._destroyed.next(),this._destroyed.complete(),this._viewRepeater.detach()}_onRenderedDataChange(){this._renderedRange&&(this._renderedItems=this._data.slice(this._renderedRange.start,this._renderedRange.end),this._differ||(this._differ=this._differs.find(this._renderedItems).create(((e,t)=>this.cdkVirtualForTrackBy?this.cdkVirtualForTrackBy(e,t):t))),this._needsUpdate=!0)}_changeDataSource(e,t){return e&&e.disconnect(this),this._needsUpdate=!0,t?t.connect(this):u()}_updateContext(){const e=this._data.length;let t=this._viewContainerRef.length;for(;t--;){const i=this._viewContainerRef.get(t);i.context.index=this._renderedRange.start+t,i.context.count=e,this._updateComputedContextProperties(i.context),i.detectChanges()}}_applyChanges(e){this._viewRepeater.applyChanges(e,this._viewContainerRef,((e,t,i)=>this._getEmbeddedViewArgs(e,i)),(e=>e.item)),e.forEachIdentityChange((e=>{this._viewContainerRef.get(e.currentIndex).context.$implicit=e.item}));const t=this._data.length;let i=this._viewContainerRef.length;for(;i--;){const e=this._viewContainerRef.get(i);e.context.index=this._renderedRange.start+i,e.context.count=t,this._updateComputedContextProperties(e.context)}}_updateComputedContextProperties(e){e.first=0===e.index,e.last=e.index===e.count-1,e.even=e.index%2==0,e.odd=!e.even}_getEmbeddedViewArgs(e,t){return{templateRef:this._template,context:{$implicit:e.item,cdkVirtualForOf:this._cdkVirtualForOf,index:-1,count:-1,first:!1,last:!1,odd:!1,even:!1},index:t}}static{this.\u0275fac=function(e){return new(e||ee)(s.\u0275\u0275directiveInject(s.ViewContainerRef),s.\u0275\u0275directiveInject(s.TemplateRef),s.\u0275\u0275directiveInject(s.IterableDiffers),s.\u0275\u0275directiveInject(F),s.\u0275\u0275directiveInject(J,4),s.\u0275\u0275directiveInject(s.NgZone))}}static{this.\u0275dir=s.\u0275\u0275defineDirective({type:ee,selectors:[["","cdkVirtualFor","","cdkVirtualForOf",""]],inputs:{cdkVirtualForOf:"cdkVirtualForOf",cdkVirtualForTrackBy:"cdkVirtualForTrackBy",cdkVirtualForTemplate:"cdkVirtualForTemplate",cdkVirtualForTemplateCacheSize:"cdkVirtualForTemplateCacheSize"},standalone:!0,features:[s.\u0275\u0275ProvidersFeature([{provide:F,useClass:P}])]})}}e("CdkVirtualForOf",ee);class te extends q{constructor(e,t,i,r){super(e,t,i,r)}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]-this.measureScrollOffset(e)}static{this.\u0275fac=function(e){return new(e||te)(s.\u0275\u0275directiveInject(s.ElementRef),s.\u0275\u0275directiveInject(H),s.\u0275\u0275directiveInject(s.NgZone),s.\u0275\u0275directiveInject(B.Directionality,8))}}static{this.\u0275dir=s.\u0275\u0275defineDirective({type:te,selectors:[["","cdkVirtualScrollingElement",""]],hostAttrs:[1,"cdk-virtual-scrollable"],standalone:!0,features:[s.\u0275\u0275ProvidersFeature([{provide:Q,useExisting:te}]),s.\u0275\u0275InheritDefinitionFeature]})}}e("CdkVirtualScrollableElement",te);class ie extends q{constructor(e,t,i){super(new h(document.documentElement),e,t,i),this._elementScrolled=new f((e=>this.ngZone.runOutsideAngular((()=>_(document,"scroll").pipe(C(this._destroyed)).subscribe(e)))))}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]}static{this.\u0275fac=function(e){return new(e||ie)(s.\u0275\u0275directiveInject(H),s.\u0275\u0275directiveInject(s.NgZone),s.\u0275\u0275directiveInject(B.Directionality,8))}}static{this.\u0275dir=s.\u0275\u0275defineDirective({type:ie,selectors:[["cdk-virtual-scroll-viewport","scrollWindow",""]],standalone:!0,features:[s.\u0275\u0275ProvidersFeature([{provide:Q,useExisting:ie}]),s.\u0275\u0275InheritDefinitionFeature]})}}e("CdkVirtualScrollableWindow",ie);class re{static{this.\u0275fac=function(e){return new(e||re)}}static{this.\u0275mod=s.\u0275\u0275defineNgModule({type:re})}static{this.\u0275inj=s.\u0275\u0275defineInjector({})}}e("CdkScrollableModule",re);class ne{static{this.\u0275fac=function(e){return new(e||ne)}}static{this.\u0275mod=s.\u0275\u0275defineNgModule({type:ne})}static{this.\u0275inj=s.\u0275\u0275defineInjector({imports:[E,re,E,re]})}}e("ScrollingModule",ne)}}}));