{"version":3,"file":"chunk-dq6h3n6l.js","sources":["packages/sports/libs/content-distribution/feature/src/cds-push-store.service.ts","packages/sports/libs/common/core/utils/css-formatters/src/css-url-formatter/to-css-url.ts","packages/sports/web/app/src/horse-racing-shared/model/day-of-race.model.ts","packages/sports/web/app/src/horse-racing-shared/services/racing-api.service.ts","packages/sports/web/app/src/horse-racing-shared/services/horse-racing-api.service.ts","packages/sports/web/app/src/racing/common/fixture-update.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { MessageEnvelope } from '@cds/push';\nimport { Page } from '@frontend/vanilla/core';\nimport { Observable, Subject, finalize, merge, share } from 'rxjs';\n\nimport { BaseSubscription, CdsPushService, FixtureAllSubscription, FixtureSlimSubscription } from './cds-push.service';\n\nexport interface SubscriptionFixtureLike {\n id: string;\n context: string;\n}\n\nexport enum SubscriptionKind {\n Full,\n Slim,\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CdsPushStoreService {\n private subscriptions: Map> = new Map>();\n\n constructor(\n private cdsPush: CdsPushService,\n private page: Page,\n ) {}\n\n subscribeToFixture(fixture: SubscriptionFixtureLike, kind: SubscriptionKind = SubscriptionKind.Full): Observable {\n let subscription = this.subscriptionFactory(fixture, kind, () => {});\n const observables: Observable[] = [];\n\n for (const key of subscription.key) {\n if (this.subscriptions.has(key)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n observables.push(this.subscriptions.get(key)!);\n } else {\n const subject = new Subject();\n subscription = this.subscriptionFactory(fixture, kind, (message) => {\n subject.next(message);\n });\n this.cdsPush.subscribe(subscription);\n const observable = subject.asObservable().pipe(\n finalize(() => {\n this.subscriptions.delete(key);\n this.cdsPush.unsubscribe(subscription);\n }),\n share(),\n );\n\n this.subscriptions.set(key, observable);\n observables.push(observable);\n }\n }\n\n if (observables.length === 0) {\n throw new Error('Observables are empty. Subscription Key might be set incorrectly.');\n }\n\n return merge(...observables);\n }\n\n private subscriptionFactory(\n fixture: SubscriptionFixtureLike,\n kind: SubscriptionKind,\n callback: (message: MessageEnvelope) => void,\n ): BaseSubscription {\n switch (kind) {\n case SubscriptionKind.Full:\n return new FixtureAllSubscription([fixture.context], fixture.id, this.page.lang, callback);\n case SubscriptionKind.Slim:\n return new FixtureSlimSubscription([fixture.context], fixture.id, this.page.lang, callback);\n }\n }\n}\n","/**\n * helper function that wraps an image URL with CSS `url()` syntax.\n *\n */\nexport function toCSSUrl(value?: string): string {\n return value ? `url(${value})` : '';\n}\n","import { DayOfRaceRegion, DayOfRaceResponse } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { WinGameFixture, WinGameFixturePreview, toRacingFixturePreview } from '@frontend/sports/racing/feature/models';\n\nexport interface DayOfRaceModel {\n fixtures: WinGameFixturePreview[];\n regions: { [pos: number]: DayOfRaceRegion[] };\n}\n\nexport interface TodayRaceModel extends DayOfRaceModel {\n nextFixtures: TRacePredictor[];\n}\n\nexport function toDayOfRaceModel(dto: DayOfRaceResponse): DayOfRaceModel {\n return {\n fixtures: dto.fixtures.map(toRacingFixturePreview),\n regions: dto.regions,\n };\n}\n","import { Fixture } from '@cds/betting-offer';\nimport { DayOfRaceDate, DayOfRaceResponse, RaceEntity, RacingProviders, TimeGroupedMeetings } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { OfferMapping } from '@cds/query-objects';\nimport { DetailedCreateFactory, DetailedGroupingFactory } from '@frontend/sports/betting-offer/feature/fixture-factories';\nimport { OfferGroupingService } from '@frontend/sports/betting-offer/feature/offer-grouping';\nimport { RacingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { BaseCdsApi, BaseCdsApiFactory } from '@frontend/sports/content-distribution/feature';\nimport {\n NextRaceFilters,\n RacingOptionMarketTypes,\n WinGameFixture,\n WinGameFixturePreview,\n toWinGameFixture,\n} from '@frontend/sports/racing/feature/models';\nimport { orderBy } from 'lodash-es';\nimport { Observable, catchError, map, of, switchMap } from 'rxjs';\n\nimport { DayOfRaceModel, toDayOfRaceModel } from '../model/day-of-race.model';\n\nexport abstract class AbstractRacingService {\n cdsApi: BaseCdsApi;\n\n constructor(\n cdsApiServiceFactory: BaseCdsApiFactory,\n protected racingConfig: RacingConfig,\n protected endpointUrl: string,\n protected offerGroupingService: OfferGroupingService,\n protected createFactory: DetailedCreateFactory,\n protected groupingFactory: DetailedGroupingFactory,\n ) {\n this.cdsApi = cdsApiServiceFactory({ endpoint: endpointUrl });\n }\n\n getDayOfRaceFixtures(dayOfRace: DayOfRaceDate): Observable {\n return this.cdsApi.get('/day-of-race', { day: dayOfRace, raceProvider: this.provider() }).pipe(\n map((value) => {\n return value ? toDayOfRaceModel(value) : undefined;\n }),\n );\n }\n\n getMeeting(meetingId: number, day: DayOfRaceDate): Observable {\n return this.cdsApi.get('/meeting', { meeting: meetingId, day }).pipe(\n map((fixtures) => {\n return fixtures ? fixtures.map(toWinGameFixture) : [];\n }),\n catchError(() => {\n return of([]);\n }),\n );\n }\n\n getMeetingFixtures(meetingId: number, dayOfRace: DayOfRaceDate): Observable {\n return this.cdsApi\n .get(`/meeting/fixtures`, {\n meeting: meetingId,\n day: dayOfRace,\n marketTypes: RacingOptionMarketTypes.WinEw,\n raceProvider: this.provider(),\n offerMapping: OfferMapping.Filtered,\n })\n .pipe(\n switchMap((fixtures) => {\n if (!fixtures) {\n return of([]);\n }\n return this.mapFixtures(fixtures);\n }),\n catchError(() => {\n return of([]);\n }),\n );\n }\n\n getMeetings(): Observable {\n const empty: TimeGroupedMeetings = {\n byDay: {\n [DayOfRaceDate.Today.toLowerCase()]: [],\n [DayOfRaceDate.Tomorrow.toLowerCase()]: [],\n },\n };\n\n return this.cdsApi.get('/meetings').pipe(\n map((model) => (model ? model : empty)),\n catchError(() => {\n return of(empty);\n }),\n );\n }\n\n getNextFixtures(nextCount: number = 0, regionIds?: string): Observable {\n const fixturesCount = nextCount || this.racingConfig.nextFixturesCount;\n let resourceUrl = `/next?raceprovider=${this.provider()}&nextFixturesCount=${fixturesCount}&marketTypes=WinEW&offerMapping=Filtered`;\n\n if (regionIds) {\n resourceUrl += `®ionIds=${regionIds}`;\n }\n\n return this.cdsApi.get(resourceUrl).pipe(\n switchMap((value) => {\n if (value && value.length > 0) {\n return this.buildOptionsForNextFixtures(value, regionIds ? NextRaceFilters.Ukireland : NextRaceFilters.All);\n }\n return of([] as WinGameFixture[]);\n }),\n catchError(() => of([] as WinGameFixture[])),\n );\n }\n\n getFixture(fixtureId: string): Observable {\n return this.cdsApi\n .get('/fixtures', {\n fixtureIds: [fixtureId],\n raceProvider: this.provider(),\n })\n .pipe(\n switchMap((fix) => {\n if (!fix || fix.length === 0) {\n return of({} as WinGameFixture);\n }\n return this.mapFixture(fix[0]);\n }),\n catchError(() => of({} as WinGameFixture)),\n );\n }\n\n updateFixture(winGameFixture: WinGameFixture): Observable {\n return this.offerGroupingService\n .getFixtureGrouping(winGameFixture.sport.id, '')\n .pipe(map((grouping) => this.processFixture(winGameFixture, grouping)));\n }\n\n protected mapFixtures(races: RaceEntity[]): Observable {\n if (races.length === 0) {\n return of([]);\n }\n\n const sportId = races[0].fixture.sport.id;\n\n return this.offerGroupingService.getFixtureGrouping(sportId, 'any').pipe(\n map((grouping) => {\n return races.map((race) => {\n const winGameFixture = this.ToFixture(race) as WinGameFixture;\n return this.processFixture(winGameFixture, grouping);\n });\n }),\n );\n }\n\n private processFixture(winGameFixture: WinGameFixture, grouping: any): WinGameFixture {\n const fixture = winGameFixture as unknown as Fixture;\n\n if (grouping) {\n const optionGroups = this.createFactory.createOptionGroups(fixture, [], grouping, undefined, false, false, false);\n const optionSets = this.groupingFactory.getOptionSets(optionGroups, grouping, fixture.source);\n\n return {\n ...winGameFixture,\n optionGroups,\n optionSets,\n };\n }\n return winGameFixture;\n }\n\n mapFixture(race: RaceEntity): Observable {\n return this.mapFixtures([race]).pipe(\n map((fixtures) => {\n return fixtures[0] || null;\n }),\n );\n }\n\n getFixtures(interval?: { from?: string; to?: string }): Observable {\n return this.cdsApi.get('/race-fixtures', { ...interval, raceProvider: this.provider() }).pipe(\n map((value) => {\n return value ? toDayOfRaceModel(value) : undefined;\n }),\n );\n }\n\n buildOptionsForNextFixtures(fixtures: RaceEntity[], filter: NextRaceFilters): Observable {\n return this.mapFixtures(fixtures).pipe(\n map((winGameFixtures) =>\n winGameFixtures.map((value) => ({\n ...value,\n nextRaceFilter: filter,\n })),\n ),\n );\n }\n\n getTodaysResult(regionIds?: string): Observable {\n const regionIdsQueryParam = regionIds ? `®ionIds=${regionIds}` : '';\n\n return this.cdsApi.post(`/today-result?marketTypes=WinEW&offerMapping=Filtered${regionIdsQueryParam}`).pipe(\n switchMap((fixtures) => {\n if (!fixtures || fixtures.length === 0) {\n return of([]);\n }\n return this.mapFixtures(fixtures);\n }),\n map((fixtures) => {\n return fixtures ? orderBy(fixtures, (f) => f.startDate, 'desc') : [];\n }),\n );\n }\n\n abstract ToFixture(raceEntity: RaceEntity): WinGameFixture;\n\n abstract provider(): RacingProviders;\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { RaceEntity, RacingProviders } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { HorsePerformanceData } from '@cds/betting-offer/domain-specific/horse-racing/timeform';\nimport { DetailedCreateFactory, DetailedGroupingFactory } from '@frontend/sports/betting-offer/feature/fixture-factories';\nimport { OfferGroupingService } from '@frontend/sports/betting-offer/feature/offer-grouping';\nimport { RacingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { BaseCdsApiFactory, CDS_API_FACTORY } from '@frontend/sports/content-distribution/feature';\nimport { WinGameFixture, toHorseRacingTimeFormFixture } from '@frontend/sports/racing/feature/models';\nimport { Observable, catchError, map, of } from 'rxjs';\n\nimport { AbstractRacingService } from './racing-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HorseRacingApiService extends AbstractRacingService {\n ToFixture(raceEntity: RaceEntity): WinGameFixture {\n return toHorseRacingTimeFormFixture(raceEntity);\n }\n\n provider(): RacingProviders {\n return RacingProviders.Timeform;\n }\n\n constructor(\n @Inject(CDS_API_FACTORY) cdsApiServiceFactory: BaseCdsApiFactory,\n protected override racingConfig: RacingConfig,\n protected override offerGroupingService: OfferGroupingService,\n protected override createFactory: DetailedCreateFactory,\n protected override groupingFactory: DetailedGroupingFactory,\n ) {\n super(cdsApiServiceFactory, racingConfig, '/horse-racing', offerGroupingService, createFactory, groupingFactory);\n }\n\n getHorsePerformance(fixtureId: string, participantId: number): Observable {\n const empty: HorsePerformanceData[] = [];\n\n return this.cdsApi\n .get<{ [participantId: number]: HorsePerformanceData[] }>(`/horse-performance/${fixtureId}`, {\n participantId: [participantId],\n })\n .pipe(\n map((value) => {\n return value ? value[participantId] || empty : empty;\n }),\n catchError(() => {\n return of(empty);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ParticipantPriceStatus } from '@cds/betting-offer';\nimport { MessageEnvelope } from '@cds/push';\nimport {\n CdsPushStoreService,\n isFixtureSlimUpdateEnvelope,\n isOptionMarketEnvelope,\n isParticipantUpdateEnvelope,\n updateFixture,\n updateFixtureOptionMarkets,\n updateFixtureParticipants,\n} from '@frontend/sports/content-distribution/feature';\nimport { WinGameFixture, createParticipantWithRacingPostData, createParticipantWithTimeFormData } from '@frontend/sports/racing/feature/models';\nimport { Observable, scan, switchMap } from 'rxjs';\n\nimport { HorseRacingApiService } from '../../horse-racing-shared/services/horse-racing-api.service';\nimport { HorsesFixtureHelper } from '../../horse-racing-shared/services/horses-fixture-helper.service';\nimport { HorsesFixturePricingHelper } from '../../horse-racing-shared/services/horses-fixture-pricing-helper.service';\n\n@Injectable()\nexport class FixtureUpdateService {\n constructor(\n private horseRacingService: HorseRacingApiService,\n protected horsesFixturePricingHelper: HorsesFixturePricingHelper,\n private cdsPushStoreService: CdsPushStoreService,\n ) {}\n\n handleFixtureUpdates(fixture: WinGameFixture): Observable {\n return this.cdsPushStoreService.subscribeToFixture(fixture).pipe(\n scan((accumulateFixture, message) => this.updatedFixtureFromMessage(accumulateFixture, message), fixture),\n switchMap((updatedFixture) => this.updateOptionGroupsAndSets(updatedFixture)),\n );\n }\n\n private updateFixtureParticipants(fixture: WinGameFixture, message: MessageEnvelope): WinGameFixture {\n if (fixture.timeform) {\n return updateFixtureParticipants(fixture, message, {\n creator: createParticipantWithTimeFormData,\n });\n } else {\n return updateFixtureParticipants(fixture, message, {\n creator: createParticipantWithRacingPostData,\n });\n }\n }\n\n private updateFixtureSlim(fixture: WinGameFixture, message: MessageEnvelope): WinGameFixture {\n return updateFixture(fixture, message);\n }\n\n shouldCompleteFixtureResult(updatedFixture: WinGameFixture): boolean | undefined {\n return (\n !HorsesFixtureHelper.isTradable(updatedFixture) ||\n (!updatedFixture.isOptionBet &&\n updatedFixture.participants.flatMap((p) => p.options).every((o) => o.participantPriceStatus !== ParticipantPriceStatus.Visible)) ||\n (updatedFixture.isOptionBet && updatedFixture.addons.isRaceOff)\n );\n }\n\n isRelevantMessage(message: MessageEnvelope): boolean {\n return isParticipantUpdateEnvelope(message) || isFixtureSlimUpdateEnvelope(message) || isOptionMarketEnvelope(message);\n }\n\n private updateOptionGroupsAndSets(fixture: WinGameFixture): Observable {\n return this.horseRacingService.updateFixture(fixture);\n }\n\n private updatedFixtureFromMessage(fixture: WinGameFixture, message: MessageEnvelope): WinGameFixture {\n if (!this.isRelevantMessage(message) || message.payload.fixtureId !== fixture.id) {\n return fixture;\n }\n\n if (isParticipantUpdateEnvelope(message)) {\n fixture = this.updateFixtureParticipants(fixture, message);\n }\n\n if (isOptionMarketEnvelope(message)) {\n fixture = updateFixtureOptionMarkets(fixture, message);\n }\n\n if (isFixtureSlimUpdateEnvelope(message)) {\n fixture = this.updateFixtureSlim(fixture, message);\n }\n\n return fixture;\n }\n}\n"],"names":["SubscriptionKind","CdsPushStoreService","constructor","cdsPush","page","subscriptions","Map","subscribeToFixture","fixture","kind","Full","subscription","subscriptionFactory","observables","key","has","push","get","subject","Subject","message","next","subscribe","observable","asObservable","pipe","finalize","delete","unsubscribe","share","set","length","Error","merge","callback","FixtureAllSubscription","context","id","lang","Slim","FixtureSlimSubscription","ɵɵinject","CdsPushService","Page","factory","ɵfac","providedIn","_CdsPushStoreService","toCSSUrl","value","toDayOfRaceModel","dto","fixtures","map","toRacingFixturePreview","regions","AbstractRacingService","cdsApiServiceFactory","racingConfig","endpointUrl","offerGroupingService","createFactory","groupingFactory","cdsApi","endpoint","getDayOfRaceFixtures","dayOfRace","day","raceProvider","provider","undefined","getMeeting","meetingId","meeting","toWinGameFixture","catchError","of","getMeetingFixtures","marketTypes","RacingOptionMarketTypes","WinEw","offerMapping","switchMap","mapFixtures","getMeetings","empty","byDay","toLowerCase","model","getNextFixtures","nextCount","regionIds","fixturesCount","nextFixturesCount","resourceUrl","buildOptionsForNextFixtures","NextRaceFilters","Ukireland","All","getFixture","fixtureId","fixtureIds","fix","mapFixture","updateFixture","winGameFixture","getFixtureGrouping","sport","grouping","processFixture","races","sportId","race","ToFixture","optionGroups","createOptionGroups","optionSets","getOptionSets","source","__spreadProps","__spreadValues","getFixtures","interval","filter","winGameFixtures","nextRaceFilter","getTodaysResult","regionIdsQueryParam","post","orderBy","f","startDate","HorseRacingApiService","raceEntity","toHorseRacingTimeFormFixture","getHorsePerformance","participantId","CDS_API_FACTORY","RacingConfig","OfferGroupingService","DetailedCreateFactory","DetailedGroupingFactory","_HorseRacingApiService","FixtureUpdateService","horseRacingService","horsesFixturePricingHelper","cdsPushStoreService","handleFixtureUpdates","scan","accumulateFixture","updatedFixtureFromMessage","updatedFixture","updateOptionGroupsAndSets","updateFixtureParticipants","timeform","creator","createParticipantWithTimeFormData","createParticipantWithRacingPostData","updateFixtureSlim","shouldCompleteFixtureResult","HorsesFixtureHelper","isTradable","isOptionBet","participants","flatMap","p","options","every","o","participantPriceStatus","addons","isRaceOff","isRelevantMessage","isParticipantUpdateEnvelope","isFixtureSlimUpdateEnvelope","isOptionMarketEnvelope","payload","updateFixtureOptionMarkets","HorsesFixturePricingHelper","_FixtureUpdateService"],"mappings":"8eAaA,IAAYA,CAAZ,CAAA,SAAYA,CAAgB,CAAA,CACxBA,OAAAA,CAAAA,CAAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,MACAA,CAAAA,CAAAA,CAAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAFQA,CAGZ,CAAA,CAHYA,CAAgB,EAAA,EAAA,CAQfC,CAAAA,CAAAA,CAAAA,CAAmB,IAAA,CAA1B,IAAOA,CAAAA,CAAP,MAAOA,CAAmB,CAG5BC,WACYC,CAAAA,CAAAA,CACAC,CAAU,CAAA,CADV,IAAAD,CAAAA,OAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,IAAAA,CAAAA,CAAAA,CAJJ,IAAAC,CAAAA,aAAAA,CAA0D,IAAIC,IAKnE,CAEHC,kBAAAA,CAAmBC,EAAkCC,CAAyBT,CAAAA,CAAAA,CAAiBU,IAAI,CAAA,CAC/F,IAAIC,CAAAA,CAAe,IAAKC,CAAAA,mBAAAA,CAAoBJ,EAASC,CAAM,CAAA,IAAK,EAAG,CAC7DI,CAAAA,CAAAA,CAA6C,EAAA,CAEnD,QAAWC,CAAOH,IAAAA,CAAAA,CAAaG,GAC3B,CAAA,GAAI,IAAKT,CAAAA,aAAAA,CAAcU,GAAID,CAAAA,CAAG,CAE1BD,CAAAA,CAAAA,CAAYG,IAAK,CAAA,IAAA,CAAKX,aAAcY,CAAAA,GAAAA,CAAIH,CAAG,CAAE,OAC1C,CACH,IAAMI,CAAU,CAAA,IAAIC,CACpBR,CAAAA,CAAAA,CAAe,IAAKC,CAAAA,mBAAAA,CAAoBJ,EAASC,CAAOW,CAAAA,EAAAA,EAAW,CAC/DF,CAAAA,CAAQG,IAAKD,CAAAA,EAAO,EACxB,CAAC,EACD,IAAKjB,CAAAA,OAAAA,CAAQmB,SAAUX,CAAAA,CAAY,CACnC,CAAA,IAAMY,CAAaL,CAAAA,CAAAA,CAAQM,YAAY,EAAA,CAAGC,IACtCC,CAAAA,EAAAA,CAAS,IAAK,CACV,IAAKrB,CAAAA,aAAAA,CAAcsB,OAAOb,CAAG,CAAA,CAC7B,IAAKX,CAAAA,OAAAA,CAAQyB,WAAYjB,CAAAA,CAAY,EACzC,CAAC,EACDkB,EAAK,EAAE,CAGX,CAAA,IAAA,CAAKxB,aAAcyB,CAAAA,GAAAA,CAAIhB,CAAKS,CAAAA,CAAU,EACtCV,CAAYG,CAAAA,IAAAA,CAAKO,CAAU,EAC/B,CAGJ,GAAIV,CAAYkB,CAAAA,MAAAA,GAAW,CACvB,CAAA,MAAM,IAAIC,KAAAA,CAAM,mEAAmE,CAAA,CAGvF,OAAOC,EAAAA,CAAM,GAAGpB,CAAW,CAC/B,CAEQD,mBAAAA,CACJJ,CACAC,CAAAA,CAAAA,CACAyB,CAA4C,CAAA,CAE5C,OAAQzB,CAAI,EACR,KAAKT,CAAAA,CAAiBU,IAClB,CAAA,OAAO,IAAIyB,EAAAA,CAAuB,CAAC3B,CAAQ4B,CAAAA,OAAO,CAAG5B,CAAAA,CAAAA,CAAQ6B,EAAI,CAAA,IAAA,CAAKjC,IAAKkC,CAAAA,IAAAA,CAAMJ,CAAQ,CAAA,CAC7F,KAAKlC,CAAAA,CAAiBuC,IAClB,CAAA,OAAO,IAAIC,EAAAA,CAAwB,CAAChC,CAAQ4B,CAAAA,OAAO,CAAG5B,CAAAA,CAAAA,CAAQ6B,EAAI,CAAA,IAAA,CAAKjC,IAAKkC,CAAAA,IAAAA,CAAMJ,CAAQ,CAClG,CACJ,CArDSjC,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,OAAAA,IAAAA,CAAAA,EAAAA,CAAAA,EAAmBwC,EAAAC,CAAAA,EAAA,CAAAD,CAAAA,EAAAA,CAAAE,CAAA,CAAA,CAAA,CAAnB1C,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAmB2C,OAAnB3C,CAAAA,CAAAA,CAAmB4C,SAAAC,CAAAA,UAAAA,CAFhB,MAAM,CAAA,CAEhB,CAAA,IAAO7C,CAAP8C,CAAAA,CAAAA,CAAAA,OAAO9C,CAAmB,CAAA,ICjB1B,SAAU+C,EAAAA,CAASC,CAAc,CAAA,CACnC,OAAOA,CAAAA,CAAQ,CAAOA,IAAAA,EAAAA,CAAK,IAAM,EACrC,CCMM,SAAUC,CAAAA,CAAiBC,CAAsB,CAAA,CACnD,OAAO,CACHC,SAAUD,CAAIC,CAAAA,QAAAA,CAASC,GAAIC,CAAAA,CAAsB,CACjDC,CAAAA,OAAAA,CAASJ,CAAII,CAAAA,OAAAA,CAErB,CCEM,IAAgBC,CAAhB,CAAA,KAAqC,CAGvCtD,WAAAA,CACIuD,CACUC,CAAAA,CAAAA,CACAC,EACAC,CACAC,CAAAA,CAAAA,CACAC,CAAwC,CAAA,CAJxC,IAAAJ,CAAAA,YAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,YAAAA,CACA,CAAA,IAAA,CAAAC,oBAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,aAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,gBAAAA,CAEV,CAAA,IAAA,CAAKC,MAASN,CAAAA,CAAAA,CAAqB,CAAEO,QAAAA,CAAUL,CAAW,CAAE,EAChE,CAEAM,oBAAqBC,CAAAA,CAAAA,CAAwB,CACzC,OAAO,IAAKH,CAAAA,MAAAA,CAAO9C,IAAuB,cAAgB,CAAA,CAAEkD,GAAKD,CAAAA,CAAAA,CAAWE,YAAc,CAAA,IAAA,CAAKC,QAAQ,EAAE,CAAE,CAAE5C,CAAAA,IAAAA,CACzG4B,EAAKJ,CAAAA,CAAAA,EACMA,CAAQC,CAAAA,CAAAA,CAAiBD,CAAK,CAAA,CAAIqB,MAC5C,CAAC,CAEV,CAEAC,UAAAA,CAAWC,CAAmBL,CAAAA,CAAAA,CAAkB,CAC5C,OAAO,IAAKJ,CAAAA,MAAAA,CAAO9C,GAAe,CAAA,UAAA,CAAY,CAAEwD,OAAAA,CAASD,CAAWL,CAAAA,GAAAA,CAAAA,CAAG,CAAE,CAAA,CAAE1C,IACvE4B,CAAAA,EAAAA,CAAKD,CACMA,EAAAA,CAAAA,CAAWA,CAASC,CAAAA,GAAAA,CAAIqB,CAAgB,CAAI,CAAA,EACtD,CAAA,CACDC,EAAW,CAAA,IACAC,EAAG,CAAA,EAAE,CACf,CAAC,CAEV,CAEAC,kBAAmBL,CAAAA,CAAAA,CAAmBN,CAAwB,CAAA,CAC1D,OAAO,IAAA,CAAKH,MACP9C,CAAAA,GAAAA,CAAkB,mBAAqB,CAAA,CACpCwD,OAASD,CAAAA,CAAAA,CACTL,IAAKD,CACLY,CAAAA,WAAAA,CAAaC,CAAwBC,CAAAA,KAAAA,CACrCZ,YAAc,CAAA,IAAA,CAAKC,QAAQ,EAAA,CAC3BY,aAAY,UACf,CAAA,CAAA,CACAxD,IACGyD,CAAAA,EAAAA,CAAW9B,CACFA,EAAAA,CAAAA,CAGE,IAAK+B,CAAAA,WAAAA,CAAY/B,CAAQ,CAFrBwB,CAAAA,EAAAA,CAAG,EAAE,CAGnB,CAAA,CACDD,EAAW,CAAA,IACAC,EAAG,CAAA,EAAE,CACf,CAAC,CAEd,CAEAQ,WAAAA,EAAW,CACP,IAAMC,CAAAA,CAA6B,CAC/BC,KAAAA,CAAO,CACH,CAAC,OAAoBC,CAAAA,WAAAA,EAAa,EAAG,EACrC,CAAA,CAAC,UAAuBA,CAAAA,WAAAA,EAAa,EAAG,EAIhD,CAAA,CAAA,CAAA,OAAO,IAAKxB,CAAAA,MAAAA,CAAO9C,GAAyB,CAAA,WAAW,CAAEQ,CAAAA,IAAAA,CACrD4B,EAAKmC,CAAAA,CAAAA,EAAWA,CAAgBH,EAAAA,CAAM,CACtCV,CAAAA,EAAAA,CAAW,IACAC,EAAAA,CAAGS,CAAK,CAClB,CAAC,CAEV,CAEAI,eAAgBC,CAAAA,CAAAA,CAAoB,CAAGC,CAAAA,CAAAA,CAAkB,CACrD,IAAMC,CAAAA,CAAgBF,CAAa,EAAA,IAAA,CAAKhC,YAAamC,CAAAA,iBAAAA,CACjDC,CAAc,CAAA,CAAA,mBAAA,EAAsB,KAAKzB,QAAQ,EAAE,CAAsBuB,mBAAAA,EAAAA,CAAa,CAE1F,wCAAA,CAAA,CAAA,OAAID,CACAG,GAAAA,CAAAA,EAAe,CAAcH,WAAAA,EAAAA,CAAS,CAGnC,CAAA,CAAA,CAAA,IAAA,CAAK5B,MAAO9C,CAAAA,GAAAA,CAAkB6E,CAAW,CAAA,CAAErE,KAC9CyD,EAAWjC,CAAAA,CAAAA,EACHA,CAASA,EAAAA,CAAAA,CAAMlB,MAAS,CAAA,CAAA,CACjB,IAAKgE,CAAAA,2BAAAA,CAA4B9C,EAAO0C,CAAYK,CAAAA,CAAAA,CAAgBC,SAAYD,CAAAA,CAAAA,CAAgBE,GAAG,CAAA,CAEvGtB,EAAG,CAAA,EAAsB,CACnC,CAAA,CACDD,EAAW,CAAA,IAAMC,EAAG,CAAA,EAAsB,CAAC,CAAC,CAEpD,CAEAuB,UAAAA,CAAWC,CAAiB,CAAA,CACxB,OAAO,IAAA,CAAKrC,OACP9C,GAAkB,CAAA,WAAA,CAAa,CAC5BoF,UAAAA,CAAY,CAACD,CAAS,CACtBhC,CAAAA,YAAAA,CAAc,KAAKC,QAAQ,EAAA,CAC9B,CACA5C,CAAAA,IAAAA,CACGyD,EAAWoB,CAAAA,CAAAA,EACH,CAACA,CAAAA,EAAOA,EAAIvE,MAAW,GAAA,CAAA,CAChB6C,EAAG,CAAA,EAAoB,CAAA,CAE3B,IAAK2B,CAAAA,UAAAA,CAAWD,CAAI,CAAA,CAAC,CAAC,CAChC,CACD3B,CAAAA,EAAAA,CAAW,IAAMC,EAAAA,CAAG,EAAoB,CAAC,CAAC,CAEtD,CAEA4B,aAAAA,CAAcC,CAA8B,CAAA,CACxC,OAAO,IAAK7C,CAAAA,oBAAAA,CACP8C,kBAAmBD,CAAAA,CAAAA,CAAeE,KAAMtE,CAAAA,EAAAA,CAAI,EAAE,CAAA,CAC9CZ,KAAK4B,EAAKuD,CAAAA,CAAAA,EAAa,IAAKC,CAAAA,cAAAA,CAAeJ,CAAgBG,CAAAA,CAAQ,CAAC,CAAC,CAC9E,CAEUzB,WAAY2B,CAAAA,CAAAA,CAAmB,CACrC,GAAIA,CAAM/E,CAAAA,MAAAA,GAAW,EACjB,OAAO6C,EAAAA,CAAG,EAAE,CAGhB,CAAA,IAAMmC,CAAUD,CAAAA,CAAAA,CAAM,CAAC,CAAEtG,CAAAA,OAAAA,CAAQmG,KAAMtE,CAAAA,EAAAA,CAEvC,OAAO,IAAA,CAAKuB,oBAAqB8C,CAAAA,kBAAAA,CAAmBK,EAAS,KAAK,CAAA,CAAEtF,IAChE4B,CAAAA,EAAAA,CAAKuD,CACME,EAAAA,CAAAA,CAAMzD,GAAK2D,CAAAA,CAAAA,EAAQ,CACtB,IAAMP,CAAiB,CAAA,IAAA,CAAKQ,SAAUD,CAAAA,CAAI,CAC1C,CAAA,OAAO,KAAKH,cAAeJ,CAAAA,CAAAA,CAAgBG,CAAQ,CACvD,CAAC,CACJ,CAAC,CAEV,CAEQC,cAAeJ,CAAAA,CAAAA,CAAgCG,CAAa,CAAA,CAChE,IAAMpG,CAAAA,CAAUiG,CAEhB,CAAA,GAAIG,EAAU,CACV,IAAMM,CAAe,CAAA,IAAA,CAAKrD,aAAcsD,CAAAA,kBAAAA,CAAmB3G,CAAS,CAAA,EAAIoG,CAAAA,CAAAA,CAAUtC,KAAW,CAAA,CAAA,CAAA,CAAA,CAAO,CAAO,CAAA,CAAA,CAAA,CAAK,CAC1G8C,CAAAA,CAAAA,CAAa,KAAKtD,eAAgBuD,CAAAA,aAAAA,CAAcH,CAAcN,CAAAA,CAAAA,CAAUpG,CAAQ8G,CAAAA,MAAM,CAE5F,CAAA,OAAOC,IAAAC,CAAA,CAAA,EAAA,CACAf,CADA,CAAA,CAAA,CAEHS,YAAAA,CAAAA,CAAAA,CACAE,UAAAA,CAAAA,CAAAA,CAAAA,CAER,CACA,OAAOX,CACX,CAEAF,UAAAA,CAAWS,CAAgB,CAAA,CACvB,OAAO,IAAA,CAAK7B,WAAY,CAAA,CAAC6B,CAAI,CAAC,CAAEvF,CAAAA,IAAAA,CAC5B4B,EAAKD,CAAAA,CAAAA,EACMA,EAAS,CAAC,CAAA,EAAK,IACzB,CAAC,CAEV,CAEAqE,WAAYC,CAAAA,CAAAA,CAAyC,CACjD,OAAO,IAAA,CAAK3D,MAAO9C,CAAAA,GAAAA,CAAuB,gBAAkBsG,CAAAA,GAAAA,CAAAC,CAAA,CAAA,EAAA,CAAKE,GAAL,CAAetD,YAAAA,CAAc,IAAKC,CAAAA,QAAAA,EAAU,CAAA,CAAE,CAAE5C,CAAAA,IAAAA,CACxG4B,EAAKJ,CAAAA,CAAAA,EACMA,CAAQC,CAAAA,CAAAA,CAAiBD,CAAK,CAAA,CAAIqB,KAC5C,CAAA,CAAC,CAEV,CAEAyB,2BAAAA,CAA4B3C,CAAwBuE,CAAAA,CAAAA,CAAuB,CACvE,OAAO,IAAKxC,CAAAA,WAAAA,CAAY/B,CAAQ,CAAE3B,CAAAA,IAAAA,CAC9B4B,EAAKuE,CAAAA,CAAAA,EACDA,CAAgBvE,CAAAA,GAAAA,CAAKJ,CAAWsE,EAAAA,GAAAA,CAAAC,EAAA,EACzBvE,CAAAA,CAAAA,CAAAA,CADyB,CAE5B4E,cAAAA,CAAgBF,CAClB,CAAA,CAAA,CAAC,CACN,CAET,CAEAG,eAAAA,CAAgBnC,CAAkB,CAAA,CAC9B,IAAMoC,CAAAA,CAAsBpC,CAAY,CAAA,CAAA,WAAA,EAAcA,CAAS,CAAK,CAAA,CAAA,EAAA,CAEpE,OAAO,IAAA,CAAK5B,MAAOiE,CAAAA,IAAAA,CAAmB,CAAwDD,qDAAAA,EAAAA,CAAmB,EAAE,CAAEtG,CAAAA,IAAAA,CACjHyD,EAAW9B,CAAAA,CAAAA,EACH,CAACA,CAAAA,EAAYA,CAASrB,CAAAA,MAAAA,GAAW,EAC1B6C,EAAG,CAAA,EAAE,CAAA,CAET,IAAKO,CAAAA,WAAAA,CAAY/B,CAAQ,CACnC,CACDC,CAAAA,EAAAA,CAAKD,CACMA,EAAAA,CAAAA,CAAW6E,EAAQ7E,CAAAA,CAAAA,CAAW8E,CAAMA,EAAAA,CAAAA,CAAEC,UAAW,MAAM,CAAA,CAAI,EACrE,CAAC,CAEV,CC9LJ,EAAA,IAAaC,GAAsB,IAAA,CAA7B,IAAOA,CAAAA,CAAP,MAAOA,CAAAA,SAA8B5E,CAAqB,CAC5DyD,UAAUoB,CAAsB,CAAA,CAC5B,OAAOC,CAAAA,CAA6BD,CAAU,CAClD,CAEAhE,QAAAA,EAAQ,CACJ,OAAA,UACJ,CAEAnE,WAC6BuD,CAAAA,CAAAA,CACNC,CACAE,CAAAA,CAAAA,CACAC,EACAC,CAAwC,CAAA,CAE3D,KAAML,CAAAA,CAAAA,CAAsBC,CAAc,CAAA,eAAA,CAAiBE,CAAsBC,CAAAA,CAAAA,CAAeC,CAAe,CAL5F,CAAA,IAAA,CAAAJ,YAAAA,CAAAA,CAAAA,CACA,IAAAE,CAAAA,oBAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,cAAAA,CACA,CAAA,IAAA,CAAAC,eAAAA,CAAAA,EAGvB,CAEAyE,mBAAAA,CAAoBnC,CAAmBoC,CAAAA,CAAAA,CAAqB,CACxD,IAAMnD,CAAgC,CAAA,EAEtC,CAAA,OAAO,IAAKtB,CAAAA,MAAAA,CACP9C,IAAyD,CAAsBmF,mBAAAA,EAAAA,CAAS,CAAI,CAAA,CAAA,CACzFoC,aAAe,CAAA,CAACA,CAAa,CAAA,CAChC,EACA/G,IACG4B,CAAAA,EAAAA,CAAKJ,CACMA,EAAAA,CAAAA,EAAQA,CAAMuF,CAAAA,CAAa,CAAKnD,EAAAA,CAC1C,EACDV,EAAW,CAAA,IACAC,EAAGS,CAAAA,CAAK,CAClB,CAAC,CAEd,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA,OAAA,IAAA,CAAA,EAlCS+C,CAAqB3F,EAAAA,EAAAA,CAUlBgG,CAAe,CAAA,CAAAhG,EAAAiG,CAAAA,EAAA,CAAAjG,CAAAA,EAAAA,CAAAkG,EAAA,CAAAlG,CAAAA,EAAAA,CAAAmG,EAAA,CAAA,CAAAnG,EAAAoG,CAAAA,EAAA,CAAA,CAAA,wBAVlBT,CAAqBxF,CAAAA,OAAAA,CAArBwF,CAAqBvF,CAAAA,SAAAA,CAAAC,UAFlB,CAAA,MAAM,CAAA,CAAA,CAEhB,IAAOsF,CAAPU,CAAAA,CAAAA,CAAAA,OAAOV,CAAsB,CAAA,ICKnC,IAAaW,EAAoB,CAAA,CAAA,IAAA,CAA3B,IAAOA,CAAP,CAAA,MAAOA,CAAoB,CAC7B7I,WACY8I,CAAAA,CAAAA,CACEC,EACFC,CAAwC,CAAA,CAFxC,IAAAF,CAAAA,kBAAAA,CAAAA,CACE,CAAA,IAAA,CAAAC,0BAAAA,CAAAA,CAAAA,CACF,KAAAC,mBAAAA,CAAAA,EACT,CAEHC,oBAAAA,CAAqB3I,CAAuB,CAAA,CACxC,OAAO,IAAA,CAAK0I,oBAAoB3I,kBAAmBC,CAAAA,CAAO,CAAEiB,CAAAA,IAAAA,CACxD2H,EAAK,CAAA,CAACC,CAAmBjI,CAAAA,CAAAA,GAAY,IAAKkI,CAAAA,yBAAAA,CAA0BD,CAAmBjI,CAAAA,CAAO,CAAGZ,CAAAA,CAAO,CACxG0E,CAAAA,EAAAA,CAAWqE,GAAmB,IAAKC,CAAAA,yBAAAA,CAA0BD,CAAc,CAAC,CAAC,CAErF,CAEQE,yBAAAA,CAA0BjJ,EAAyBY,CAAwB,CAAA,CAC/E,OAAIZ,CAAAA,CAAQkJ,QACDD,CAAAA,CAAAA,CAA0BjJ,CAASY,CAAAA,CAAAA,CAAS,CAC/CuI,OAASC,CAAAA,CAAAA,CACZ,CAEMH,CAAAA,CAAAA,CAA0BjJ,CAASY,CAAAA,CAAAA,CAAS,CAC/CuI,OAAAA,CAASE,CACZ,CAAA,CAET,CAEQC,iBAAAA,CAAkBtJ,CAAyBY,CAAAA,CAAAA,CAAwB,CACvE,OAAOoF,IAAchG,CAASY,CAAAA,CAAO,CACzC,CAEA2I,2BAA4BR,CAAAA,CAAAA,CAA8B,CACtD,OACI,CAACS,CAAoBC,CAAAA,UAAAA,CAAWV,CAAc,CAAA,EAC7C,CAACA,CAAAA,CAAeW,WACbX,EAAAA,CAAAA,CAAeY,aAAaC,OAASC,CAAAA,CAAAA,EAAMA,CAAEC,CAAAA,OAAO,CAAEC,CAAAA,KAAAA,CAAOC,CAAMA,EAAAA,CAAAA,CAAEC,sBAAsB,GAAA,SAAmC,CACjIlB,EAAAA,CAAAA,CAAeW,WAAeX,EAAAA,CAAAA,CAAemB,MAAOC,CAAAA,SAE7D,CAEAC,iBAAkBxJ,CAAAA,CAAAA,CAAwB,CACtC,OAAOyJ,CAA4BzJ,CAAAA,CAAO,CAAK0J,EAAAA,CAAAA,CAA4B1J,CAAO,CAAK2J,EAAAA,GAAAA,CAAuB3J,CAAO,CACzH,CAEQoI,yBAAAA,CAA0BhJ,CAAuB,CAAA,CACrD,OAAO,IAAKwI,CAAAA,kBAAAA,CAAmBxC,aAAchG,CAAAA,CAAO,CACxD,CAEQ8I,yBAA0B9I,CAAAA,CAAAA,CAAyBY,CAAwB,CAAA,CAC/E,OAAI,CAAC,IAAKwJ,CAAAA,iBAAAA,CAAkBxJ,CAAO,CAAA,EAAKA,EAAQ4J,OAAQ5E,CAAAA,SAAAA,GAAc5F,CAAQ6B,CAAAA,EAAAA,GAI1EwI,CAA4BzJ,CAAAA,CAAO,CACnCZ,GAAAA,CAAAA,CAAU,KAAKiJ,yBAA0BjJ,CAAAA,CAAAA,CAASY,CAAO,CAAA,CAAA,CAGzD2J,GAAuB3J,CAAAA,CAAO,CAC9BZ,GAAAA,CAAAA,CAAUyK,EAA2BzK,CAASY,CAAAA,CAAO,CAGrD0J,CAAAA,CAAAA,CAAAA,CAA4B1J,CAAO,CAAA,GACnCZ,CAAU,CAAA,IAAA,CAAKsJ,kBAAkBtJ,CAASY,CAAAA,CAAO,CAG9CZ,CAAAA,CAAAA,CAAAA,CACX,CAjESuI,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,OAAAA,IAAAA,CAAAA,EAAAA,CAAAA,EAAoBtG,EAAA2F,CAAAA,CAAA,EAAA3F,EAAAyI,CAAAA,CAAA,CAAAzI,CAAAA,EAAAA,CAAAxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAAiI,CAAA,CAAA,CAAA,KAAA,CAApBa,EAAoBnG,OAApBmG,CAAAA,CAAAA,CAAoBlG,SAAA,CAAA,CAA3B,CAAA,IAAOkG,CAAPoC,CAAAA,CAAAA,CAAAA,OAAOpC,CAAoB,CAAA"}