{"version":3,"names":["APIClientBase","getBaseUrl","_","__","window","cross7Env","baseUrl","async","options","headers","Object","assign","Slug","location","pathname","search","indexOf","Preview","BookingClient","constructor","http","super","this","jsonParseReviver","undefined","getSettings","pageId","categoryIds","signal","url_","Error","replace","encodeURIComponent","forEach","item","options_","method","Accept","transformOptions","then","transformedOptions_","fetch","_response","processGetSettings","response","status","_headers","v","k","text","_responseText","result200","resultData200","JSON","parse","BookingSettingsDto","fromJS","throwException","Promise","resolve","getCategories","includeEmpty","excludeCategoryIds","processGetCategories","Array","isArray","push","BookingCategoryTeaserDto","getBookables","parentId","pageNumber","pageSize","itemIds","excludeItemIds","sortType","sortDirection","categoryFilterMode","processGetBookables","PaginatedListOfBookingBookableTeaserDto","getBookable","bookableId","preview","processGetBookable","BookingBookableDto","getCalendarAvailability","filters","from","until","ignoreReservationId","index","attr","hasOwnProperty","toISOString","processGetCalendarAvailability","BookableCalendarAvailabilityDto","result400","resultData400","ProblemDetails","resultdefault","resultDatadefault","getCalendarConflicts","processGetCalendarConflicts","BookableCalendarConflictDto","submitReservation","command","content_","stringify","body","processSubmitReservation","BookingReservationSubmittedResponseDto","createReservation","processCreateReservation","CalendarClient","CalendarSettingsDto","CalendarCategoryTeaserDto","getEvents","processGetEvents","PaginatedListOfCalendarEventTeaserDto","getEventsYearPdf","referenceDate","processGetEventsYearPdf","contentDisposition","get","fileNameMatch","exec","fileName","length","decodeURIComponent","blob","data","getEventsMonthPdf","processGetEventsMonthPdf","getEventsListPdf","entireYear","hideCategories","processGetEventsListPdf","getEventsYearHtml","processGetEventsYearHtml","getEventsMonthHtml","processGetEventsMonthHtml","getEventsListHtml","processGetEventsListHtml","getEventsIcs","processGetEventsIcs","getEventIcs","eventId","processGetEventIcs","getEvent","processGetEvent","CalendarEventDto","CommunicationClient","CommunicationSettingsDto","submitRecipient","processSubmitRecipient","deleteRecipient","processDeleteRecipient","createRecipient","processCreateRecipient","DatabaseClient","DatabaseSettingsDto","DatabaseCategoryTeaserDto","getObjects","objectTypeIds","fieldFilters","sortProperty","processGetObjects","PaginatedListOfDatabaseObjectTeaserDto","getObject","objectId","processGetObject","DatabaseObjectDto","getObjectTypes","processGetObjectTypes","DatabaseObjectTypeDto","DirectoryClient","getLetters","componentType","processGetLetters","getForms","letter","processGetForms","PaginatedListOfDirectoryFormTeaserDto","getFormCategories","processGetFormCategories","DirectoryFormCategoryTeaserDto","getOrgUnits","processGetOrgUnits","PaginatedListOfDirectoryOrgUnitTeaserDto","getOrgUnitsTree","processGetOrgUnitsTree","DirectoryOrgUnitTreeNodeDto","getOrgUnit","orgUnitId","processGetOrgUnit","DirectoryOrgUnitDto","getPersons","orgUnitIds","processGetPersons","PaginatedListOfDirectoryPersonTeaserDto","getGroupedPersons","processGetGroupedPersons","PaginatedListOfGroupedDirectoryPersonTeaserDto","getPerson","personId","processGetPerson","DirectoryPersonDto","getServices","onlyFromTenant","onlyWithProcesses","processGetServices","PaginatedListOfDirectoryServiceTeaserDto","getXZuFiServices","processGetXZuFiServices","getXZuFiService","serviceId","processGetXZuFiService","getService","processGetService","DirectoryServiceDto","getSituations","processGetSituations","PaginatedListOfDirectorySituationTeaserDto","getSituation","situationId","processGetSituation","DirectorySituationDto","FilesClient","getFile","fileId","size","width","height","x","y","webp","processGetFile","getFileDto","processGetFileDto","FileDto","createFile","file","FormData","append","processCreateFile","GalleryClient","GallerySettingsDto","GalleryCategoryTeaserDto","getAlbums","processGetAlbums","PaginatedListOfGalleryAlbumTeaserDto","getAlbum","albumId","processGetAlbum","GalleryAlbumDto","GeocodingClient","forwardGeocoding","address","moduleId","limit","processForwardGeocoding","Address","reverseGeocoding","longitude","latitude","processReverseGeocoding","GeoClient","GeoSettingsDto","GeoCategoryTeaserDto","sortingReference_Longitude","sortingReference_Latitude","sortingReference_Elevation","sortingReference_NavigationUrl","searchArea_NorthEastLongitude","searchArea_NorthEastLatitude","searchArea_SouthWestLongitude","searchArea_SouthWestLatitude","openAt","PaginatedListOfGeoObjectTeaserDto","GeoObjectDto","InteractionClient","getForm","formId","processGetForm","InteractionFormDto","submitForm","processSubmitForm","Node","getSurvey","surveyId","processGetSurvey","InteractionSurveyDto","submitSurvey","processSubmitSurvey","NewsClient","NewsSettingsDto","NewsCategoryTeaserDto","getArticles","processGetArticles","PaginatedListOfNewsArticleTeaserDto","getArticlesRss","processGetArticlesRss","getArticle","articleId","processGetArticle","NewsArticleDto","getArticleDateRange","processGetArticleDateRange","DateRangeDto","PageClient","getCurrentPageId","processGetCurrentPageId","getPage","categoryId","processGetPage","Typo3PageDto","ProblemClient","ProblemSettingsDto","ProblemCategoryTeaserDto","getDefects","processGetDefects","PaginatedListOfProblemDefectTeaserDto","submitDefect","processSubmitDefect","getDefect","defectId","processGetDefect","ProblemDefectDto","createDefect","processCreateDefect","getDefectDetails","token","processGetDefectDetails","PublicProblemDefectDetailsDto","updateDefect","processUpdateDefect","submitComment","processSubmitComment","createComment","processCreateComment","getCommentDetails","commentId","processGetCommentDetails","updateComment","processUpdateComment","PushClient","getWebPushPublicKey","processGetWebPushPublicKey","getPushSubscription","subscriptionId","processGetPushSubscription","PushSubscriptionDto","getPushCategories","processGetPushCategories","GroupedCategoryTeasersDto","getOrCreateEmailPushSubscription","processGetOrCreateEmailPushSubscription","result404","resultData404","getOrCreateWebPushSubscription","processGetOrCreateWebPushSubscription","getOrCreateFirebasePushSubscription","processGetOrCreateFirebasePushSubscription","subscribeToCategories","processSubscribeToCategories","subscribeToCategory","processSubscribeToCategory","unsubscribeFromCategory","processUnsubscribeFromCategory","subscribeToLiveItem","itemId","processSubscribeToLiveItem","unsubscribeFromLiveItem","processUnsubscribeFromLiveItem","SearchClient","getSearchResults","moduleFilters","processGetSearchResults","PaginatedListOfSearchResultDto","getSearchSuggestions","processGetSearchSuggestions","getFilters","processGetFilters","SearchSettingsDto","ShopClient","ShopSettingsDto","ShopCategoryTeaserDto","getProducts","processGetProducts","PaginatedListOfShopProductTeaserDto","getShippingOptions","orderItemIds","processGetShippingOptions","ShippingOption","getPaymentOptions","shippingOptionId","processGetPaymentOptions","PaymentOption","getOrderBreakdown","orderItems","paymentType","processGetOrderBreakdown","OrderBreakdownDto","getProduct","productId","processGetProduct","ShopProductDto","submitOrder","processSubmitOrder","ShopOrderSubmittedResponseDto","createOrder","processCreateOrder","submitReview","processSubmitReview","createReview","processCreateReview","getReviewDetails","reviewId","processGetReviewDetails","PublicShopProductDetailsDto","updateReview","processUpdateReview","WeatherClient","getCurrentWeather","processGetCurrentWeather","CurrentWeatherDto","AppColor","property","init","_data","url","id","name","static","result","toJSON","clone","json","AppLinkType","AppMenuLayout","type","attrs","NodeAttribute","content","marks","Mark","NodeType","level","textAlign","colspan","rowspan","colwidth","start","position","display","cols","images","GalleryImage","fieldId","fieldLabel","src","alt","title","caption","GalleryPosition","GalleryDisplay","href","MarkAttribute","MarkType","target","class","referenceId","ReferenceType","AppFont","detail","instance","extensions","key","formConfirmationHtml","CategoryTeaserDto","_discriminator","slug","teaserPictureUrl","iconUrl","color","subCategories","itemsCount","CommunicationCategoryTeaserDto","items","BookingBookableTeaserDto","totalPages","totalCount","hasPreviousPage","hasNextPage","ItemTeaserDto","link","Link","categoryNames","additionalFields","created","Date","toString","categoryIconUrl","categoryColor","teaserText","hasContent","CategoryNameDto","FieldGroupValuesDto","GeoPlaceTeaserDto","GeoRouteTeaserDto","GeoAreaTeaserDto","NewsArticleTeaserDto","GalleryAlbumTeaserDto","ProblemDefectTeaserDto","CalendarEventTeaserDto","DirectoryFormTeaserDto","DirectoryPersonTeaserDto","DirectoryProcessTeaserDto","DirectoryServiceTeaserDto","DirectoryOrgUnitTeaserDto","DirectorySituationTeaserDto","DatabaseObjectTeaserDto","SearchResultDto","ShopProductTeaserDto","bookableQuantity","targetId","CategoryAndModuleNameDto","moduleName","fieldValues","FieldValueDto","field","FieldDto","value","iconFileUrl","unit","FieldType","GeoObjectTeaserDto","addresses","openingHours","TimeSeriesDto","distance","firstName","lastName","description","room","building","houseNumber","street","zipCode","city","telephone","mobilephone","fax","eMail","web","socials","SocialLink","additionalProperties","AdditionalAddressProperty","SocialLinkType","label","times","validFrom","validUntil","TimeDto","TimeStatusDto","day","time","TimeStatus","PointDto","GeographyDataDto","navigationUrl","LineStringDto","PolygonDto","elevation","points","opacity","weight","dashArray","fill","route","area","pictureCount","DefectStatus","fromDate","fromTime","untilDate","untilTime","formatDate","function","communication","processes","fields","databaseObjectTypeId","SortType","SortDirection","CategoryFilterMode","ItemDto","document","livePush","lastModified","GeoPlaceDto","GeoRouteDto","GeoAreaDto","ProblemCommentDto","ShopReviewDto","readingTime","shareLink","pictures","comments","creator","createdByCurrentUser","createdInBackend","persons","subOrgUnits","services","officeHours","orgUnits","salutation","situations","forms","subSituations","configuration","InteractionFormConfiguration","recipientEmailDocument","senderEmailDocument","confirmationPageDocument","pages","recipientEmailAddress","recipientEmailSubject","senderEmailAddressFieldId","senderEmailSubject","InteractionFormPage","InteractionFormField","rows","InteractionFormRow","condition","InteractionFormCondition","columns","InteractionFormColumn","internalName","autocompleteType","required","placeholder","minValue","maxValue","minLength","maxLength","acceptMimeTypes","regEx","likertLabelLeft","likertLabelRight","FormFieldType","AutocompleteType","action","ConditionAction","ReservationRequestFilterDto","amount","details","BookingReservationSubmittedResponseType","PublicSubmitBookingReservationCommand","reservationItems","BookingReservationItemDto","bookerCode","PublicCreateBookingReservationCommand","reservationId","slugs","SlugDto","count","PublicSubmitCommunicationRecipientCommand","PublicCreateCommunicationRecipientCommand","recipientId","PublicDeleteCommunicationRecipientCommand","showAllSlug","FieldFilterDto","values","DatabaseObjectFilterType","enableDocument","enableAddresses","enableCommunication","enableOpeningHours","DatabaseObjectTypeFieldGroupDto","DatabaseObjectTypeFieldDto","filterOptions","restrictToSuggestedValues","FilterOptionDto","ComponentType","nodes","expanded","depth","GroupedDirectoryPersonTeaserDto","GeoCodingFilter","defaultLocation","defaultZoom","PublicSubmitInteractionFormCommand","formData","InteractionSurveyConfiguration","PublicSubmitInteractionSurveyCommand","surveyData","years","min","max","commentMode","CommentMode","PublicSubmitProblemDefectCommand","PublicCreateProblemDefectCommand","PublicUpdateProblemDefectCommand","PublicSubmitProblemCommentCommand","PublicCreateProblemCommentCommand","PublicUpdateProblemCommentCommand","subscribedCategories","subscribedLiveItems","ItemAndModuleNameDto","ItemNameDto","categories","GetOrCreateWebPushSubscriptionCommand","keys","endpoint","GetOrCreateFirebasePushSubscriptionCommand","ModuleType","searchSlug","reviewMode","quantityMode","shoppingCartLink","ReviewMode","QuantityMode","rating","grossPrice","grossCost","ShippingOptionType","additionalPaymentCosts","PaymentType","shippingGrossCost","shippingTaxes","paymentGrossCost","paymentTaxes","shippingOptionLabel","totalTaxes","totalGrossCost","PaymentOrderItemDto","individualGrossPrice","individualTaxes","sumGrossPrice","sumTaxes","ShopOrderItemDto","reviews","currentQuantity","ShopOrderSubmittedResponseType","PublicSubmitShopOrderCommand","billingAddress","shippingAddress","PublicCreateShopOrderCommand","orderId","PublicSubmitShopReviewCommand","PublicCreateShopReviewCommand","current","WeatherDto","next","dateTime","temperature","category","imageUrl","SignalRClientMethods","SignalRServerMethods","d","getFullYear","getMonth","getDate","ApiException","message","isApiException","obj"],"sources":["./src/api/APIClient.ts"],"sourcesContent":["//----------------------\n// \n// Generated using the NSwag toolchain v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nexport class APIClientBase {\n protected getBaseUrl(_: string, __: string): string {\n return window.cross7Env.baseUrl;\n }\n\n protected async transformOptions(options: RequestInit): Promise {\n options.headers = {\n ...options.headers,\n 'Slug': window.location.pathname\n };\n\n if (window.location.search.indexOf('c7-preview') !== -1) {\n options.headers = {\n ...options.headers,\n 'Preview': 'true'\n };\n }\n\n return options;\n }\n}\n\nexport interface IAppClient {\n\n getConfiguration(pageId: number): Promise;\n\n /**\n * @param token (optional) \n * @deprecated\n */\n sendLoginMail(email: string, pageId: string, token?: string | null | undefined): Promise;\n}\n\nexport class AppClient extends APIClientBase implements IAppClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getConfiguration(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/app/{PageId}/configuration\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetConfiguration(_response);\n });\n }\n\n protected processGetConfiguration(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AppConfigurationDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param token (optional) \n * @deprecated\n */\n sendLoginMail(email: string, pageId: string, token?: string | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/app/{PageId}/sendloginmail\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(email);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"token\": token !== undefined && token !== null ? \"\" + token : \"\",\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSendLoginMail(_response);\n });\n }\n\n protected processSendLoginMail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IBookingClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getBookables(pageId: number, parentId?: number | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getBookable(pageId: number, bookableId: number, preview?: boolean | undefined): Promise;\n\n getCalendarAvailability(pageId: number, filters: ReservationRequestFilterDto[] | null, from: Date, until: Date, ignoreReservationId?: number | null | undefined): Promise;\n\n getCalendarConflicts(pageId: number, filters: ReservationRequestFilterDto[] | null, from: Date, until: Date, ignoreReservationId?: number | null | undefined): Promise;\n\n submitReservation(pageId: number, command: PublicSubmitBookingReservationCommand): Promise;\n\n createReservation(pageId: number, command: PublicCreateBookingReservationCommand): Promise;\n}\n\nexport class BookingClient extends APIClientBase implements IBookingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BookingSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(BookingCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBookables(pageId: number, parentId?: number | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/bookables?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (parentId !== undefined && parentId !== null)\n url_ += \"ParentId=\" + encodeURIComponent(\"\" + parentId) + \"&\";\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBookables(_response);\n });\n }\n\n protected processGetBookables(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfBookingBookableTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBookable(pageId: number, bookableId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/bookables/{BookableId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (bookableId === undefined || bookableId === null)\n throw new Error(\"The parameter 'bookableId' must be defined.\");\n url_ = url_.replace(\"{BookableId}\", encodeURIComponent(\"\" + bookableId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBookable(_response);\n });\n }\n\n protected processGetBookable(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BookingBookableDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCalendarAvailability(pageId: number, filters: ReservationRequestFilterDto[] | null, from: Date, until: Date, ignoreReservationId?: number | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/calendar/availability?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (filters === undefined)\n throw new Error(\"The parameter 'filters' must be defined.\");\n else if(filters !== null)\n filters && filters.forEach((item, index) => {\n for (let attr in item)\n \t\t\tif (item.hasOwnProperty(attr)) {\n \t\t\t\turl_ += \"Filters[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\n \t\t\t}\n });\n if (from === undefined || from === null)\n throw new Error(\"The parameter 'from' must be defined and cannot be null.\");\n else\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (until === undefined || until === null)\n throw new Error(\"The parameter 'until' must be defined and cannot be null.\");\n else\n url_ += \"Until=\" + encodeURIComponent(until ? \"\" + until.toISOString() : \"\") + \"&\";\n if (ignoreReservationId !== undefined && ignoreReservationId !== null)\n url_ += \"IgnoreReservationId=\" + encodeURIComponent(\"\" + ignoreReservationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCalendarAvailability(_response);\n });\n }\n\n protected processGetCalendarAvailability(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(BookableCalendarAvailabilityDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ProblemDetails.fromJS(resultData400);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getCalendarConflicts(pageId: number, filters: ReservationRequestFilterDto[] | null, from: Date, until: Date, ignoreReservationId?: number | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/calendar/conflicts?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (filters === undefined)\n throw new Error(\"The parameter 'filters' must be defined.\");\n else if(filters !== null)\n filters && filters.forEach((item, index) => {\n for (let attr in item)\n \t\t\tif (item.hasOwnProperty(attr)) {\n \t\t\t\turl_ += \"Filters[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\n \t\t\t}\n });\n if (from === undefined || from === null)\n throw new Error(\"The parameter 'from' must be defined and cannot be null.\");\n else\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (until === undefined || until === null)\n throw new Error(\"The parameter 'until' must be defined and cannot be null.\");\n else\n url_ += \"Until=\" + encodeURIComponent(until ? \"\" + until.toISOString() : \"\") + \"&\";\n if (ignoreReservationId !== undefined && ignoreReservationId !== null)\n url_ += \"IgnoreReservationId=\" + encodeURIComponent(\"\" + ignoreReservationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCalendarConflicts(_response);\n });\n }\n\n protected processGetCalendarConflicts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(BookableCalendarConflictDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ProblemDetails.fromJS(resultData400);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n submitReservation(pageId: number, command: PublicSubmitBookingReservationCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/reservations\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitReservation(_response);\n });\n }\n\n protected processSubmitReservation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BookingReservationSubmittedResponseDto.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createReservation(pageId: number, command: PublicCreateBookingReservationCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/booking/{PageId}/reservations/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateReservation(_response);\n });\n }\n\n protected processCreateReservation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface ICalendarClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getEvents(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsYearPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsMonthPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsListPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsYearHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsMonthHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsListHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getEventsIcs(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getEventIcs(pageId: number, eventId: number): Promise;\n\n getEvent(pageId: number, eventId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class CalendarClient extends APIClientBase implements ICalendarClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CalendarSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CalendarCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEvents(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (from !== undefined && from !== null)\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (until !== undefined && until !== null)\n url_ += \"Until=\" + encodeURIComponent(until ? \"\" + until.toISOString() : \"\") + \"&\";\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEvents(_response);\n });\n }\n\n protected processGetEvents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfCalendarEventTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsYearPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/yearpdf?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsYearPdf(_response);\n });\n }\n\n protected processGetEventsYearPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsMonthPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/monthpdf?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsMonthPdf(_response);\n });\n }\n\n protected processGetEventsMonthPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsListPdf(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/listpdf?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (entireYear === null)\n throw new Error(\"The parameter 'entireYear' cannot be null.\");\n else if (entireYear !== undefined)\n url_ += \"EntireYear=\" + encodeURIComponent(\"\" + entireYear) + \"&\";\n if (hideCategories === null)\n throw new Error(\"The parameter 'hideCategories' cannot be null.\");\n else if (hideCategories !== undefined)\n url_ += \"HideCategories=\" + encodeURIComponent(\"\" + hideCategories) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsListPdf(_response);\n });\n }\n\n protected processGetEventsListPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsYearHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/yearpdf/html?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsYearHtml(_response);\n });\n }\n\n protected processGetEventsYearHtml(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsMonthHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/monthpdf/html?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsMonthHtml(_response);\n });\n }\n\n protected processGetEventsMonthHtml(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsListHtml(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, referenceDate?: Date | null | undefined, entireYear?: boolean | undefined, hideCategories?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/listpdf/html?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (referenceDate !== undefined && referenceDate !== null)\n url_ += \"ReferenceDate=\" + encodeURIComponent(referenceDate ? \"\" + referenceDate.toISOString() : \"\") + \"&\";\n if (entireYear === null)\n throw new Error(\"The parameter 'entireYear' cannot be null.\");\n else if (entireYear !== undefined)\n url_ += \"EntireYear=\" + encodeURIComponent(\"\" + entireYear) + \"&\";\n if (hideCategories === null)\n throw new Error(\"The parameter 'hideCategories' cannot be null.\");\n else if (hideCategories !== undefined)\n url_ += \"HideCategories=\" + encodeURIComponent(\"\" + hideCategories) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsListHtml(_response);\n });\n }\n\n protected processGetEventsListHtml(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventsIcs(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/ics?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventsIcs(_response);\n });\n }\n\n protected processGetEventsIcs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventIcs(pageId: number, eventId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/{EventId}/ics\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (eventId === undefined || eventId === null)\n throw new Error(\"The parameter 'eventId' must be defined.\");\n url_ = url_.replace(\"{EventId}\", encodeURIComponent(\"\" + eventId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventIcs(_response);\n });\n }\n\n protected processGetEventIcs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEvent(pageId: number, eventId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/calendar/{PageId}/events/{EventId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (eventId === undefined || eventId === null)\n throw new Error(\"The parameter 'eventId' must be defined.\");\n url_ = url_.replace(\"{EventId}\", encodeURIComponent(\"\" + eventId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEvent(_response);\n });\n }\n\n protected processGetEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CalendarEventDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ICommunicationClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n submitRecipient(pageId: number, command: PublicSubmitCommunicationRecipientCommand): Promise;\n\n deleteRecipient(pageId: number, command: PublicDeleteCommunicationRecipientCommand): Promise;\n\n createRecipient(pageId: number, command: PublicCreateCommunicationRecipientCommand): Promise;\n}\n\nexport class CommunicationClient extends APIClientBase implements ICommunicationClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CommunicationSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitRecipient(pageId: number, command: PublicSubmitCommunicationRecipientCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/recipients\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitRecipient(_response);\n });\n }\n\n protected processSubmitRecipient(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n deleteRecipient(pageId: number, command: PublicDeleteCommunicationRecipientCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/recipients\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"DELETE\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteRecipient(_response);\n });\n }\n\n protected processDeleteRecipient(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createRecipient(pageId: number, command: PublicCreateCommunicationRecipientCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/communication/{PageId}/recipients/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateRecipient(_response);\n });\n }\n\n protected processCreateRecipient(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IDatabaseClient {\n\n getSettings(pageId: number): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getObjects(pageId: number, objectTypeIds?: number[] | null | undefined, fieldFilters?: FieldFilterDto[] | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortProperty?: string | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined): Promise;\n\n getObjectTypes(pageId: number, objectTypeIds: number[] | null): Promise;\n}\n\nexport class DatabaseClient extends APIClientBase implements IDatabaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/settings\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DatabaseSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DatabaseCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObjects(pageId: number, objectTypeIds?: number[] | null | undefined, fieldFilters?: FieldFilterDto[] | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortProperty?: string | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/objects?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectTypeIds !== undefined && objectTypeIds !== null)\n objectTypeIds && objectTypeIds.forEach(item => { url_ += \"ObjectTypeIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (fieldFilters !== undefined && fieldFilters !== null)\n fieldFilters && fieldFilters.forEach((item, index) => {\n for (let attr in item)\n \t\t\tif (item.hasOwnProperty(attr)) {\n \t\t\t\turl_ += \"FieldFilters[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\n \t\t\t}\n });\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortProperty === null)\n throw new Error(\"The parameter 'sortProperty' cannot be null.\");\n else if (sortProperty !== undefined)\n url_ += \"SortProperty=\" + encodeURIComponent(\"\" + sortProperty) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObjects(_response);\n });\n }\n\n protected processGetObjects(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDatabaseObjectTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/objects/{ObjectId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectId === undefined || objectId === null)\n throw new Error(\"The parameter 'objectId' must be defined.\");\n url_ = url_.replace(\"{ObjectId}\", encodeURIComponent(\"\" + objectId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObject(_response);\n });\n }\n\n protected processGetObject(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DatabaseObjectDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObjectTypes(pageId: number, objectTypeIds: number[] | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/database/{PageId}/objecttypes?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectTypeIds === undefined)\n throw new Error(\"The parameter 'objectTypeIds' must be defined.\");\n else if(objectTypeIds !== null)\n objectTypeIds && objectTypeIds.forEach(item => { url_ += \"ObjectTypeIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObjectTypes(_response);\n });\n }\n\n protected processGetObjectTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DatabaseObjectTypeDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IDirectoryClient {\n\n getLetters(pageId: number, componentType: ComponentType, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getForms(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getFormCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getOrgUnits(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getOrgUnitsTree(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getOrgUnit(pageId: number, orgUnitId: number, preview?: boolean | undefined): Promise;\n\n getPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getGroupedPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getPerson(pageId: number, personId: number, preview?: boolean | undefined): Promise;\n\n getServices(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, onlyFromTenant?: boolean | undefined, onlyWithProcesses?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getXZuFiServices(pageId: number): Promise;\n\n getXZuFiService(serviceId: number, pageId: string): Promise;\n\n getService(pageId: number, serviceId: number, preview?: boolean | undefined): Promise;\n\n getSituations(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getSituation(pageId: number, situationId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class DirectoryClient extends APIClientBase implements IDirectoryClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getLetters(pageId: number, componentType: ComponentType, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/letters?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (componentType === undefined || componentType === null)\n throw new Error(\"The parameter 'componentType' must be defined and cannot be null.\");\n else\n url_ += \"ComponentType=\" + encodeURIComponent(\"\" + componentType) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetLetters(_response);\n });\n }\n\n protected processGetLetters(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getForms(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/forms?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForms(_response);\n });\n }\n\n protected processGetForms(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryFormTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getFormCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/formcategories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFormCategories(_response);\n });\n }\n\n protected processGetFormCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DirectoryFormCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrgUnits(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/orgunits?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrgUnits(_response);\n });\n }\n\n protected processGetOrgUnits(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryOrgUnitTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrgUnitsTree(pageId: number, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/orgunits/tree?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrgUnitsTree(_response);\n });\n }\n\n protected processGetOrgUnitsTree(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DirectoryOrgUnitTreeNodeDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrgUnit(pageId: number, orgUnitId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/orgunits/{OrgUnitId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orgUnitId === undefined || orgUnitId === null)\n throw new Error(\"The parameter 'orgUnitId' must be defined.\");\n url_ = url_.replace(\"{OrgUnitId}\", encodeURIComponent(\"\" + orgUnitId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrgUnit(_response);\n });\n }\n\n protected processGetOrgUnit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectoryOrgUnitDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/persons?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (orgUnitIds !== undefined && orgUnitIds !== null)\n orgUnitIds && orgUnitIds.forEach(item => { url_ += \"OrgUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPersons(_response);\n });\n }\n\n protected processGetPersons(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryPersonTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getGroupedPersons(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, orgUnitIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/persons/grouped?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (orgUnitIds !== undefined && orgUnitIds !== null)\n orgUnitIds && orgUnitIds.forEach(item => { url_ += \"OrgUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetGroupedPersons(_response);\n });\n }\n\n protected processGetGroupedPersons(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfGroupedDirectoryPersonTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPerson(pageId: number, personId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/persons/{PersonId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (personId === undefined || personId === null)\n throw new Error(\"The parameter 'personId' must be defined.\");\n url_ = url_.replace(\"{PersonId}\", encodeURIComponent(\"\" + personId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPerson(_response);\n });\n }\n\n protected processGetPerson(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectoryPersonDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getServices(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, onlyFromTenant?: boolean | undefined, onlyWithProcesses?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (onlyFromTenant === null)\n throw new Error(\"The parameter 'onlyFromTenant' cannot be null.\");\n else if (onlyFromTenant !== undefined)\n url_ += \"OnlyFromTenant=\" + encodeURIComponent(\"\" + onlyFromTenant) + \"&\";\n if (onlyWithProcesses === null)\n throw new Error(\"The parameter 'onlyWithProcesses' cannot be null.\");\n else if (onlyWithProcesses !== undefined)\n url_ += \"OnlyWithProcesses=\" + encodeURIComponent(\"\" + onlyWithProcesses) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetServices(_response);\n });\n }\n\n protected processGetServices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectoryServiceTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getXZuFiServices(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services/xzufi\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetXZuFiServices(_response);\n });\n }\n\n protected processGetXZuFiServices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getXZuFiService(serviceId: number, pageId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services/xzufi/{ServiceId}.xml\";\n if (serviceId === undefined || serviceId === null)\n throw new Error(\"The parameter 'serviceId' must be defined.\");\n url_ = url_.replace(\"{ServiceId}\", encodeURIComponent(\"\" + serviceId));\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetXZuFiService(_response);\n });\n }\n\n protected processGetXZuFiService(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getService(pageId: number, serviceId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/services/{ServiceId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (serviceId === undefined || serviceId === null)\n throw new Error(\"The parameter 'serviceId' must be defined.\");\n url_ = url_.replace(\"{ServiceId}\", encodeURIComponent(\"\" + serviceId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetService(_response);\n });\n }\n\n protected processGetService(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectoryServiceDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSituations(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, letter?: string | null | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/situations?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (letter !== undefined && letter !== null)\n url_ += \"Letter=\" + encodeURIComponent(\"\" + letter) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSituations(_response);\n });\n }\n\n protected processGetSituations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfDirectorySituationTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSituation(pageId: number, situationId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/directory/{PageId}/situations/{SituationId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (situationId === undefined || situationId === null)\n throw new Error(\"The parameter 'situationId' must be defined.\");\n url_ = url_.replace(\"{SituationId}\", encodeURIComponent(\"\" + situationId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSituation(_response);\n });\n }\n\n protected processGetSituation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DirectorySituationDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IFilesClient {\n\n getFile(fileId: string, size?: number | null | undefined, width?: number | null | undefined, height?: number | null | undefined, x?: number | null | undefined, y?: number | null | undefined, webp?: boolean | null | undefined): Promise;\n\n getFileDto(fileId: string): Promise;\n\n createFile(file?: FileParameter | null | undefined): Promise;\n}\n\nexport class FilesClient extends APIClientBase implements IFilesClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getFile(fileId: string, size?: number | null | undefined, width?: number | null | undefined, height?: number | null | undefined, x?: number | null | undefined, y?: number | null | undefined, webp?: boolean | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/files/{FileId}?\";\n if (fileId === undefined || fileId === null)\n throw new Error(\"The parameter 'fileId' must be defined.\");\n url_ = url_.replace(\"{FileId}\", encodeURIComponent(\"\" + fileId));\n if (size !== undefined && size !== null)\n url_ += \"Size=\" + encodeURIComponent(\"\" + size) + \"&\";\n if (width !== undefined && width !== null)\n url_ += \"Width=\" + encodeURIComponent(\"\" + width) + \"&\";\n if (height !== undefined && height !== null)\n url_ += \"Height=\" + encodeURIComponent(\"\" + height) + \"&\";\n if (x !== undefined && x !== null)\n url_ += \"X=\" + encodeURIComponent(\"\" + x) + \"&\";\n if (y !== undefined && y !== null)\n url_ += \"Y=\" + encodeURIComponent(\"\" + y) + \"&\";\n if (webp !== undefined && webp !== null)\n url_ += \"Webp=\" + encodeURIComponent(\"\" + webp) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFile(_response);\n });\n }\n\n protected processGetFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getFileDto(fileId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/files/{FileId}/dto\";\n if (fileId === undefined || fileId === null)\n throw new Error(\"The parameter 'fileId' must be defined.\");\n url_ = url_.replace(\"{FileId}\", encodeURIComponent(\"\" + fileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFileDto(_response);\n });\n }\n\n protected processGetFileDto(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FileDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createFile(file?: FileParameter | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/files\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateFile(_response);\n });\n }\n\n protected processCreateFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FileDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = ProblemDetails.fromJS(resultData400);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IGalleryClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getAlbums(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getAlbum(pageId: number, albumId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class GalleryClient extends APIClientBase implements IGalleryClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GallerySettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(GalleryCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAlbums(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/albums?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAlbums(_response);\n });\n }\n\n protected processGetAlbums(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfGalleryAlbumTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAlbum(pageId: number, albumId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/gallery/{PageId}/albums/{AlbumId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (albumId === undefined || albumId === null)\n throw new Error(\"The parameter 'albumId' must be defined.\");\n url_ = url_.replace(\"{AlbumId}\", encodeURIComponent(\"\" + albumId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAlbum(_response);\n });\n }\n\n protected processGetAlbum(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GalleryAlbumDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IGeocodingClient {\n\n forwardGeocoding(address: string | null, moduleId?: number | null | undefined, filters?: GeoCodingFilter[] | null | undefined, limit?: number | undefined): Promise;\n\n reverseGeocoding(longitude: number, latitude: number, limit?: number | undefined): Promise;\n}\n\nexport class GeocodingClient extends APIClientBase implements IGeocodingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n forwardGeocoding(address: string | null, moduleId?: number | null | undefined, filters?: GeoCodingFilter[] | null | undefined, limit?: number | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geocoding/forward?\";\n if (address === undefined)\n throw new Error(\"The parameter 'address' must be defined.\");\n else if(address !== null)\n url_ += \"Address=\" + encodeURIComponent(\"\" + address) + \"&\";\n if (moduleId !== undefined && moduleId !== null)\n url_ += \"ModuleId=\" + encodeURIComponent(\"\" + moduleId) + \"&\";\n if (filters !== undefined && filters !== null)\n filters && filters.forEach(item => { url_ += \"Filters=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processForwardGeocoding(_response);\n });\n }\n\n protected processForwardGeocoding(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(Address.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n reverseGeocoding(longitude: number, latitude: number, limit?: number | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geocoding/reverse?\";\n if (longitude === undefined || longitude === null)\n throw new Error(\"The parameter 'longitude' must be defined and cannot be null.\");\n else\n url_ += \"Longitude=\" + encodeURIComponent(\"\" + longitude) + \"&\";\n if (latitude === undefined || latitude === null)\n throw new Error(\"The parameter 'latitude' must be defined and cannot be null.\");\n else\n url_ += \"Latitude=\" + encodeURIComponent(\"\" + latitude) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReverseGeocoding(_response);\n });\n }\n\n protected processReverseGeocoding(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(Address.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IGeoClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getObjects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, sortingReference_Longitude?: number | null | undefined, sortingReference_Latitude?: number | null | undefined, sortingReference_Elevation?: number | null | undefined, sortingReference_NavigationUrl?: string | null | undefined, searchArea_NorthEastLongitude?: number | undefined, searchArea_NorthEastLatitude?: number | undefined, searchArea_SouthWestLongitude?: number | undefined, searchArea_SouthWestLatitude?: number | undefined, openAt?: Date | null | undefined, preview?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined): Promise;\n}\n\nexport class GeoClient extends APIClientBase implements IGeoClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GeoSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(GeoCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObjects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, sortingReference_Longitude?: number | null | undefined, sortingReference_Latitude?: number | null | undefined, sortingReference_Elevation?: number | null | undefined, sortingReference_NavigationUrl?: string | null | undefined, searchArea_NorthEastLongitude?: number | undefined, searchArea_NorthEastLatitude?: number | undefined, searchArea_SouthWestLongitude?: number | undefined, searchArea_SouthWestLatitude?: number | undefined, openAt?: Date | null | undefined, preview?: boolean | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/objects?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sortingReference_Longitude !== undefined && sortingReference_Longitude !== null)\n url_ += \"SortingReference.Longitude=\" + encodeURIComponent(\"\" + sortingReference_Longitude) + \"&\";\n if (sortingReference_Latitude !== undefined && sortingReference_Latitude !== null)\n url_ += \"SortingReference.Latitude=\" + encodeURIComponent(\"\" + sortingReference_Latitude) + \"&\";\n if (sortingReference_Elevation !== undefined && sortingReference_Elevation !== null)\n url_ += \"SortingReference.Elevation=\" + encodeURIComponent(\"\" + sortingReference_Elevation) + \"&\";\n if (sortingReference_NavigationUrl !== undefined && sortingReference_NavigationUrl !== null)\n url_ += \"SortingReference.NavigationUrl=\" + encodeURIComponent(\"\" + sortingReference_NavigationUrl) + \"&\";\n if (searchArea_NorthEastLongitude === null)\n throw new Error(\"The parameter 'searchArea_NorthEastLongitude' cannot be null.\");\n else if (searchArea_NorthEastLongitude !== undefined)\n url_ += \"SearchArea.NorthEastLongitude=\" + encodeURIComponent(\"\" + searchArea_NorthEastLongitude) + \"&\";\n if (searchArea_NorthEastLatitude === null)\n throw new Error(\"The parameter 'searchArea_NorthEastLatitude' cannot be null.\");\n else if (searchArea_NorthEastLatitude !== undefined)\n url_ += \"SearchArea.NorthEastLatitude=\" + encodeURIComponent(\"\" + searchArea_NorthEastLatitude) + \"&\";\n if (searchArea_SouthWestLongitude === null)\n throw new Error(\"The parameter 'searchArea_SouthWestLongitude' cannot be null.\");\n else if (searchArea_SouthWestLongitude !== undefined)\n url_ += \"SearchArea.SouthWestLongitude=\" + encodeURIComponent(\"\" + searchArea_SouthWestLongitude) + \"&\";\n if (searchArea_SouthWestLatitude === null)\n throw new Error(\"The parameter 'searchArea_SouthWestLatitude' cannot be null.\");\n else if (searchArea_SouthWestLatitude !== undefined)\n url_ += \"SearchArea.SouthWestLatitude=\" + encodeURIComponent(\"\" + searchArea_SouthWestLatitude) + \"&\";\n if (openAt !== undefined && openAt !== null)\n url_ += \"OpenAt=\" + encodeURIComponent(openAt ? \"\" + openAt.toISOString() : \"\") + \"&\";\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObjects(_response);\n });\n }\n\n protected processGetObjects(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfGeoObjectTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getObject(pageId: number, objectId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/geo/{PageId}/objects/{ObjectId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (objectId === undefined || objectId === null)\n throw new Error(\"The parameter 'objectId' must be defined.\");\n url_ = url_.replace(\"{ObjectId}\", encodeURIComponent(\"\" + objectId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetObject(_response);\n });\n }\n\n protected processGetObject(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = GeoObjectDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IInteractionClient {\n\n getForm(pageId: number, formId: number, preview?: boolean | undefined): Promise;\n\n submitForm(pageId: number, command: PublicSubmitInteractionFormCommand): Promise;\n\n getSurvey(pageId: number, surveyId: number, preview?: boolean | undefined): Promise;\n\n submitSurvey(pageId: number, command: PublicSubmitInteractionSurveyCommand): Promise;\n}\n\nexport class InteractionClient extends APIClientBase implements IInteractionClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getForm(pageId: number, formId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/forms/{FormId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (formId === undefined || formId === null)\n throw new Error(\"The parameter 'formId' must be defined.\");\n url_ = url_.replace(\"{FormId}\", encodeURIComponent(\"\" + formId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForm(_response);\n });\n }\n\n protected processGetForm(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InteractionFormDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitForm(pageId: number, command: PublicSubmitInteractionFormCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/forms\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitForm(_response);\n });\n }\n\n protected processSubmitForm(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Node.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getSurvey(pageId: number, surveyId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/surveys/{SurveyId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{SurveyId}\", encodeURIComponent(\"\" + surveyId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSurvey(_response);\n });\n }\n\n protected processGetSurvey(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InteractionSurveyDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitSurvey(pageId: number, command: PublicSubmitInteractionSurveyCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/interaction/{PageId}/surveys\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitSurvey(_response);\n });\n }\n\n protected processSubmitSurvey(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Node.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface INewsClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getArticles(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getArticlesRss(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getArticle(pageId: number, articleId: number, preview?: boolean | undefined): Promise;\n\n getArticleDateRange(pageId: number, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n}\n\nexport class NewsClient extends APIClientBase implements INewsClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = NewsSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(NewsCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticles(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, from?: Date | null | undefined, until?: Date | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (from !== undefined && from !== null)\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (until !== undefined && until !== null)\n url_ += \"Until=\" + encodeURIComponent(until ? \"\" + until.toISOString() : \"\") + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticles(_response);\n });\n }\n\n protected processGetArticles(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfNewsArticleTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticlesRss(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles/rss?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticlesRss(_response);\n });\n }\n\n protected processGetArticlesRss(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticle(pageId: number, articleId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles/{ArticleId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (articleId === undefined || articleId === null)\n throw new Error(\"The parameter 'articleId' must be defined.\");\n url_ = url_.replace(\"{ArticleId}\", encodeURIComponent(\"\" + articleId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticle(_response);\n });\n }\n\n protected processGetArticle(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = NewsArticleDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getArticleDateRange(pageId: number, categoryIds?: number[] | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/news/{PageId}/articles/daterange?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetArticleDateRange(_response);\n });\n }\n\n protected processGetArticleDateRange(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DateRangeDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IPageClient {\n\n getCurrentPageId(): Promise;\n\n getPage(pageId: number, categoryId: number): Promise;\n}\n\nexport class PageClient extends APIClientBase implements IPageClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getCurrentPageId(signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/page/current\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrentPageId(_response);\n });\n }\n\n protected processGetCurrentPageId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPage(pageId: number, categoryId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/page/{PageId}/pages/{CategoryId}\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryId === undefined || categoryId === null)\n throw new Error(\"The parameter 'categoryId' must be defined.\");\n url_ = url_.replace(\"{CategoryId}\", encodeURIComponent(\"\" + categoryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPage(_response);\n });\n }\n\n protected processGetPage(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Typo3PageDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IProblemClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getDefects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n submitDefect(pageId: number, command: PublicSubmitProblemDefectCommand): Promise;\n\n getDefect(pageId: number, defectId: number, preview?: boolean | undefined): Promise;\n\n createDefect(pageId: number, command: PublicCreateProblemDefectCommand): Promise;\n\n getDefectDetails(pageId: number, defectId: number, token: string | null): Promise;\n\n updateDefect(pageId: number, command: PublicUpdateProblemDefectCommand): Promise;\n\n submitComment(pageId: number, command: PublicSubmitProblemCommentCommand): Promise;\n\n createComment(pageId: number, command: PublicCreateProblemCommentCommand): Promise;\n\n getCommentDetails(pageId: number, defectId: number, commentId: number, token: string | null): Promise;\n\n updateComment(pageId: number, command: PublicUpdateProblemCommentCommand): Promise;\n}\n\nexport class ProblemClient extends APIClientBase implements IProblemClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProblemSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ProblemCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getDefects(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefects(_response);\n });\n }\n\n protected processGetDefects(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfProblemDefectTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitDefect(pageId: number, command: PublicSubmitProblemDefectCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitDefect(_response);\n });\n }\n\n protected processSubmitDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getDefect(pageId: number, defectId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/{DefectId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (defectId === undefined || defectId === null)\n throw new Error(\"The parameter 'defectId' must be defined.\");\n url_ = url_.replace(\"{DefectId}\", encodeURIComponent(\"\" + defectId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefect(_response);\n });\n }\n\n protected processGetDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProblemDefectDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createDefect(pageId: number, command: PublicCreateProblemDefectCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateDefect(_response);\n });\n }\n\n protected processCreateDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getDefectDetails(pageId: number, defectId: number, token: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/{DefectId}/details?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (defectId === undefined || defectId === null)\n throw new Error(\"The parameter 'defectId' must be defined.\");\n url_ = url_.replace(\"{DefectId}\", encodeURIComponent(\"\" + defectId));\n if (token === undefined)\n throw new Error(\"The parameter 'token' must be defined.\");\n else if(token !== null)\n url_ += \"Token=\" + encodeURIComponent(\"\" + token) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefectDetails(_response);\n });\n }\n\n protected processGetDefectDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PublicProblemDefectDetailsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateDefect(pageId: number, command: PublicUpdateProblemDefectCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/update\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateDefect(_response);\n });\n }\n\n protected processUpdateDefect(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n submitComment(pageId: number, command: PublicSubmitProblemCommentCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/comments\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitComment(_response);\n });\n }\n\n protected processSubmitComment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createComment(pageId: number, command: PublicCreateProblemCommentCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/comments/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateComment(_response);\n });\n }\n\n protected processCreateComment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getCommentDetails(pageId: number, defectId: number, commentId: number, token: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/defects/{DefectId}/comments/{CommentId}/details?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (defectId === undefined || defectId === null)\n throw new Error(\"The parameter 'defectId' must be defined.\");\n url_ = url_.replace(\"{DefectId}\", encodeURIComponent(\"\" + defectId));\n if (commentId === undefined || commentId === null)\n throw new Error(\"The parameter 'commentId' must be defined.\");\n url_ = url_.replace(\"{CommentId}\", encodeURIComponent(\"\" + commentId));\n if (token === undefined)\n throw new Error(\"The parameter 'token' must be defined.\");\n else if(token !== null)\n url_ += \"Token=\" + encodeURIComponent(\"\" + token) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCommentDetails(_response);\n });\n }\n\n protected processGetCommentDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PublicProblemDefectDetailsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateComment(pageId: number, command: PublicUpdateProblemCommentCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/problem/{PageId}/comments/update\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateComment(_response);\n });\n }\n\n protected processUpdateComment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface IPushClient {\n\n getWebPushPublicKey(): Promise;\n\n getPushSubscription(subscriptionId: string | null): Promise;\n\n getPushCategories(pageId: number): Promise;\n\n getOrCreateEmailPushSubscription(command: GetOrCreateEmailPushSubscriptionCommand): Promise;\n\n getOrCreateWebPushSubscription(command: GetOrCreateWebPushSubscriptionCommand): Promise;\n\n getOrCreateFirebasePushSubscription(command: GetOrCreateFirebasePushSubscriptionCommand): Promise;\n\n subscribeToCategories(subscriptionId: string | null, categoryIds?: number[] | null | undefined): Promise;\n\n subscribeToCategory(subscriptionId: string | null, categoryId: number): Promise;\n\n unsubscribeFromCategory(subscriptionId: string | null, categoryId: number): Promise;\n\n subscribeToLiveItem(subscriptionId: string | null, itemId: number): Promise;\n\n unsubscribeFromLiveItem(subscriptionId: string | null, itemId: number): Promise;\n}\n\nexport class PushClient extends APIClientBase implements IPushClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getWebPushPublicKey(signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/web/publickey\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetWebPushPublicKey(_response);\n });\n }\n\n protected processGetWebPushPublicKey(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPushSubscription(subscriptionId: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPushSubscription(_response);\n });\n }\n\n protected processGetPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPushCategories(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/{PageId}/categories\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPushCategories(_response);\n });\n }\n\n protected processGetPushCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(GroupedCategoryTeasersDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrCreateEmailPushSubscription(command: GetOrCreateEmailPushSubscriptionCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/email\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrCreateEmailPushSubscription(_response);\n });\n }\n\n protected processGetOrCreateEmailPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ProblemDetails.fromJS(resultData404);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getOrCreateWebPushSubscription(command: GetOrCreateWebPushSubscriptionCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/web\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrCreateWebPushSubscription(_response);\n });\n }\n\n protected processGetOrCreateWebPushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ProblemDetails.fromJS(resultData404);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getOrCreateFirebasePushSubscription(command: GetOrCreateFirebasePushSubscriptionCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/firebase\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrCreateFirebasePushSubscription(_response);\n });\n }\n\n protected processGetOrCreateFirebasePushSubscription(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = ProblemDetails.fromJS(resultData404);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n subscribeToCategories(subscriptionId: string | null, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/categories?\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubscribeToCategories(_response);\n });\n }\n\n protected processSubscribeToCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n subscribeToCategory(subscriptionId: string | null, categoryId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/categories/{CategoryId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (categoryId === undefined || categoryId === null)\n throw new Error(\"The parameter 'categoryId' must be defined.\");\n url_ = url_.replace(\"{CategoryId}\", encodeURIComponent(\"\" + categoryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubscribeToCategory(_response);\n });\n }\n\n protected processSubscribeToCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unsubscribeFromCategory(subscriptionId: string | null, categoryId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/categories/{CategoryId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (categoryId === undefined || categoryId === null)\n throw new Error(\"The parameter 'categoryId' must be defined.\");\n url_ = url_.replace(\"{CategoryId}\", encodeURIComponent(\"\" + categoryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnsubscribeFromCategory(_response);\n });\n }\n\n protected processUnsubscribeFromCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n subscribeToLiveItem(subscriptionId: string | null, itemId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/items/{ItemId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (itemId === undefined || itemId === null)\n throw new Error(\"The parameter 'itemId' must be defined.\");\n url_ = url_.replace(\"{ItemId}\", encodeURIComponent(\"\" + itemId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubscribeToLiveItem(_response);\n });\n }\n\n protected processSubscribeToLiveItem(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unsubscribeFromLiveItem(subscriptionId: string | null, itemId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/push/subscriptions/{SubscriptionId}/items/{ItemId}\";\n if (subscriptionId === undefined || subscriptionId === null)\n throw new Error(\"The parameter 'subscriptionId' must be defined.\");\n url_ = url_.replace(\"{SubscriptionId}\", encodeURIComponent(\"\" + subscriptionId));\n if (itemId === undefined || itemId === null)\n throw new Error(\"The parameter 'itemId' must be defined.\");\n url_ = url_.replace(\"{ItemId}\", encodeURIComponent(\"\" + itemId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnsubscribeFromLiveItem(_response);\n });\n }\n\n protected processUnsubscribeFromLiveItem(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PushSubscriptionDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISearchClient {\n\n getSearchResults(pageId: number, search?: string | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, moduleFilters?: ModuleType[] | null | undefined): Promise;\n\n getSearchSuggestions(pageId: number, search: string | null, limit?: number | undefined, moduleFilters?: ModuleType[] | null | undefined): Promise;\n\n getFilters(pageId: number): Promise;\n\n getSettings(pageId: number): Promise;\n}\n\nexport class SearchClient extends APIClientBase implements ISearchClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSearchResults(pageId: number, search?: string | null | undefined, pageNumber?: number | undefined, pageSize?: number | undefined, moduleFilters?: ModuleType[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/search?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (moduleFilters !== undefined && moduleFilters !== null)\n moduleFilters && moduleFilters.forEach(item => { url_ += \"ModuleFilters=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSearchResults(_response);\n });\n }\n\n protected processGetSearchResults(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfSearchResultDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSearchSuggestions(pageId: number, search: string | null, limit?: number | undefined, moduleFilters?: ModuleType[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/suggestions?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (search === undefined)\n throw new Error(\"The parameter 'search' must be defined.\");\n else if(search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n if (moduleFilters !== undefined && moduleFilters !== null)\n moduleFilters && moduleFilters.forEach(item => { url_ += \"ModuleFilters=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSearchSuggestions(_response);\n });\n }\n\n protected processGetSearchSuggestions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getFilters(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/filters\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFilters(_response);\n });\n }\n\n protected processGetFilters(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSettings(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/search/{PageId}/settings\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SearchSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IShopClient {\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined): Promise;\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined): Promise;\n\n getProducts(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined): Promise;\n\n getShippingOptions(pageId: number, orderItemIds: number[] | null): Promise;\n\n getPaymentOptions(pageId: number, orderItemIds: number[] | null, shippingOptionId: string): Promise;\n\n getOrderBreakdown(pageId: number, orderItems: ShopOrderItemDto[] | null, paymentType: PaymentType, shippingOptionId: string): Promise;\n\n getProduct(pageId: number, productId: number, preview?: boolean | undefined): Promise;\n\n submitOrder(pageId: number, command: PublicSubmitShopOrderCommand): Promise;\n\n createOrder(pageId: number, command: PublicCreateShopOrderCommand): Promise;\n\n submitReview(pageId: number, command: PublicSubmitShopReviewCommand): Promise;\n\n createReview(pageId: number, command: PublicCreateShopReviewCommand): Promise;\n\n getReviewDetails(pageId: number, productId: number, reviewId: number, token: string | null): Promise;\n\n updateReview(pageId: number, command: PublicUpdateShopReviewCommand): Promise;\n}\n\nexport class ShopClient extends APIClientBase implements IShopClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSettings(pageId: number, categoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/settings?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSettings(_response);\n });\n }\n\n protected processGetSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ShopSettingsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCategories(pageId: number, includeEmpty?: boolean | undefined, categoryIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/categories?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (includeEmpty === null)\n throw new Error(\"The parameter 'includeEmpty' cannot be null.\");\n else if (includeEmpty !== undefined)\n url_ += \"IncludeEmpty=\" + encodeURIComponent(\"\" + includeEmpty) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategories(_response);\n });\n }\n\n protected processGetCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ShopCategoryTeaserDto.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getProducts(pageId: number, pageNumber?: number | undefined, pageSize?: number | undefined, categoryIds?: number[] | null | undefined, itemIds?: number[] | null | undefined, excludeCategoryIds?: number[] | null | undefined, excludeItemIds?: number[] | null | undefined, sortType?: SortType | undefined, sortDirection?: SortDirection | undefined, search?: string | null | undefined, categoryFilterMode?: CategoryFilterMode | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/products?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n if (categoryIds !== undefined && categoryIds !== null)\n categoryIds && categoryIds.forEach(item => { url_ += \"CategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (itemIds !== undefined && itemIds !== null)\n itemIds && itemIds.forEach(item => { url_ += \"ItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeCategoryIds !== undefined && excludeCategoryIds !== null)\n excludeCategoryIds && excludeCategoryIds.forEach(item => { url_ += \"ExcludeCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (excludeItemIds !== undefined && excludeItemIds !== null)\n excludeItemIds && excludeItemIds.forEach(item => { url_ += \"ExcludeItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (sortType === null)\n throw new Error(\"The parameter 'sortType' cannot be null.\");\n else if (sortType !== undefined)\n url_ += \"SortType=\" + encodeURIComponent(\"\" + sortType) + \"&\";\n if (sortDirection === null)\n throw new Error(\"The parameter 'sortDirection' cannot be null.\");\n else if (sortDirection !== undefined)\n url_ += \"SortDirection=\" + encodeURIComponent(\"\" + sortDirection) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (categoryFilterMode === null)\n throw new Error(\"The parameter 'categoryFilterMode' cannot be null.\");\n else if (categoryFilterMode !== undefined)\n url_ += \"CategoryFilterMode=\" + encodeURIComponent(\"\" + categoryFilterMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProducts(_response);\n });\n }\n\n protected processGetProducts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaginatedListOfShopProductTeaserDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getShippingOptions(pageId: number, orderItemIds: number[] | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/shippingoptions?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orderItemIds === undefined)\n throw new Error(\"The parameter 'orderItemIds' must be defined.\");\n else if(orderItemIds !== null)\n orderItemIds && orderItemIds.forEach(item => { url_ += \"OrderItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetShippingOptions(_response);\n });\n }\n\n protected processGetShippingOptions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ShippingOption.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPaymentOptions(pageId: number, orderItemIds: number[] | null, shippingOptionId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/paymentoptions?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orderItemIds === undefined)\n throw new Error(\"The parameter 'orderItemIds' must be defined.\");\n else if(orderItemIds !== null)\n orderItemIds && orderItemIds.forEach(item => { url_ += \"OrderItemIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (shippingOptionId === undefined || shippingOptionId === null)\n throw new Error(\"The parameter 'shippingOptionId' must be defined and cannot be null.\");\n else\n url_ += \"ShippingOptionId=\" + encodeURIComponent(\"\" + shippingOptionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPaymentOptions(_response);\n });\n }\n\n protected processGetPaymentOptions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PaymentOption.fromJS(item));\n }\n else {\n result200 = null;\n }\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getOrderBreakdown(pageId: number, orderItems: ShopOrderItemDto[] | null, paymentType: PaymentType, shippingOptionId: string, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/breakdown?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (orderItems === undefined)\n throw new Error(\"The parameter 'orderItems' must be defined.\");\n else if(orderItems !== null)\n orderItems && orderItems.forEach((item, index) => {\n for (let attr in item)\n \t\t\tif (item.hasOwnProperty(attr)) {\n \t\t\t\turl_ += \"OrderItems[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\n \t\t\t}\n });\n if (paymentType === undefined || paymentType === null)\n throw new Error(\"The parameter 'paymentType' must be defined and cannot be null.\");\n else\n url_ += \"PaymentType=\" + encodeURIComponent(\"\" + paymentType) + \"&\";\n if (shippingOptionId === undefined || shippingOptionId === null)\n throw new Error(\"The parameter 'shippingOptionId' must be defined and cannot be null.\");\n else\n url_ += \"ShippingOptionId=\" + encodeURIComponent(\"\" + shippingOptionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetOrderBreakdown(_response);\n });\n }\n\n protected processGetOrderBreakdown(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrderBreakdownDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getProduct(pageId: number, productId: number, preview?: boolean | undefined, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/products/{ProductId}?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{ProductId}\", encodeURIComponent(\"\" + productId));\n if (preview === null)\n throw new Error(\"The parameter 'preview' cannot be null.\");\n else if (preview !== undefined)\n url_ += \"Preview=\" + encodeURIComponent(\"\" + preview) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProduct(_response);\n });\n }\n\n protected processGetProduct(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ShopProductDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n submitOrder(pageId: number, command: PublicSubmitShopOrderCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/orders\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitOrder(_response);\n });\n }\n\n protected processSubmitOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ShopOrderSubmittedResponseDto.fromJS(resultData200);\n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createOrder(pageId: number, command: PublicCreateShopOrderCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/orders/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateOrder(_response);\n });\n }\n\n protected processCreateOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n submitReview(pageId: number, command: PublicSubmitShopReviewCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/reviews\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitReview(_response);\n });\n }\n\n protected processSubmitReview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n createReview(pageId: number, command: PublicCreateShopReviewCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/reviews/create\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateReview(_response);\n });\n }\n\n protected processCreateReview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return result200;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n\n getReviewDetails(pageId: number, productId: number, reviewId: number, token: string | null, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/products/{ProductId}/reviews/{ReviewId}/details?\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n if (productId === undefined || productId === null)\n throw new Error(\"The parameter 'productId' must be defined.\");\n url_ = url_.replace(\"{ProductId}\", encodeURIComponent(\"\" + productId));\n if (reviewId === undefined || reviewId === null)\n throw new Error(\"The parameter 'reviewId' must be defined.\");\n url_ = url_.replace(\"{ReviewId}\", encodeURIComponent(\"\" + reviewId));\n if (token === undefined)\n throw new Error(\"The parameter 'token' must be defined.\");\n else if(token !== null)\n url_ += \"Token=\" + encodeURIComponent(\"\" + token) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetReviewDetails(_response);\n });\n }\n\n protected processGetReviewDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PublicShopProductDetailsDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateReview(pageId: number, command: PublicUpdateShopReviewCommand, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/shop/{PageId}/reviews/update\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(command);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n signal,\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateReview(_response);\n });\n }\n\n protected processUpdateReview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else {\n return response.text().then((_responseText) => {\n let resultdefault: any = null;\n let resultDatadefault = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n resultdefault = ProblemDetails.fromJS(resultDatadefault);\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, resultdefault);\n });\n }\n }\n}\n\nexport interface ISocialClient {\n\n getSocialTags(itemId: number): Promise;\n}\n\nexport class SocialClient extends APIClientBase implements ISocialClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getSocialTags(itemId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/socialtags/{ItemId}\";\n if (itemId === undefined || itemId === null)\n throw new Error(\"The parameter 'itemId' must be defined.\");\n url_ = url_.replace(\"{ItemId}\", encodeURIComponent(\"\" + itemId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSocialTags(_response);\n });\n }\n\n protected processGetSocialTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IWeatherClient {\n\n getCurrentWeather(pageId: number): Promise;\n}\n\nexport class WeatherClient extends APIClientBase implements IWeatherClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n getCurrentWeather(pageId: number, signal?: AbortSignal | undefined): Promise {\n let url_ = this.baseUrl + \"/public/weather/{PageId}/current\";\n if (pageId === undefined || pageId === null)\n throw new Error(\"The parameter 'pageId' must be defined.\");\n url_ = url_.replace(\"{PageId}\", encodeURIComponent(\"\" + pageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n signal,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrentWeather(_response);\n });\n }\n\n protected processGetCurrentWeather(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CurrentWeatherDto.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class AppConfigurationDto implements IAppConfigurationDto {\n name!: string;\n startPageId!: number;\n pagesConfiguration!: AppPageDto[];\n toolbarConfiguration!: AppToolbarDto;\n settingsConfiguration!: AppSettingsDto;\n themeConfiguration!: AppThemeDto;\n\n constructor(data?: IAppConfigurationDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.pagesConfiguration = [];\n this.toolbarConfiguration = new AppToolbarDto();\n this.settingsConfiguration = new AppSettingsDto();\n this.themeConfiguration = new AppThemeDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.startPageId = _data[\"startPageId\"];\n if (Array.isArray(_data[\"pagesConfiguration\"])) {\n this.pagesConfiguration = [] as any;\n for (let item of _data[\"pagesConfiguration\"])\n this.pagesConfiguration!.push(AppPageDto.fromJS(item));\n }\n this.toolbarConfiguration = _data[\"toolbarConfiguration\"] ? AppToolbarDto.fromJS(_data[\"toolbarConfiguration\"]) : new AppToolbarDto();\n this.settingsConfiguration = _data[\"settingsConfiguration\"] ? AppSettingsDto.fromJS(_data[\"settingsConfiguration\"]) : new AppSettingsDto();\n this.themeConfiguration = _data[\"themeConfiguration\"] ? AppThemeDto.fromJS(_data[\"themeConfiguration\"]) : new AppThemeDto();\n }\n }\n\n static fromJS(data: any): AppConfigurationDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppConfigurationDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"startPageId\"] = this.startPageId;\n if (Array.isArray(this.pagesConfiguration)) {\n data[\"pagesConfiguration\"] = [];\n for (let item of this.pagesConfiguration)\n data[\"pagesConfiguration\"].push(item.toJSON());\n }\n data[\"toolbarConfiguration\"] = this.toolbarConfiguration ? this.toolbarConfiguration.toJSON() : undefined;\n data[\"settingsConfiguration\"] = this.settingsConfiguration ? this.settingsConfiguration.toJSON() : undefined;\n data[\"themeConfiguration\"] = this.themeConfiguration ? this.themeConfiguration.toJSON() : undefined;\n return data;\n }\n\n clone(): AppConfigurationDto {\n const json = this.toJSON();\n let result = new AppConfigurationDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppConfigurationDto {\n name: string;\n startPageId: number;\n pagesConfiguration: AppPageDto[];\n toolbarConfiguration: AppToolbarDto;\n settingsConfiguration: AppSettingsDto;\n themeConfiguration: AppThemeDto;\n}\n\nexport class AppPageDto implements IAppPageDto {\n id!: number;\n parentId?: number | undefined;\n name?: string | undefined;\n showNameAsTitle!: boolean;\n isStartpage!: boolean;\n backgroundColor!: AppColor;\n toolbarColor!: AppColor;\n showInSideMenu!: boolean;\n isSideMenuExternalLink!: boolean;\n externalLinkUrl?: string | undefined;\n sideMenuSorting?: number | undefined;\n backgroundImage?: FileDto | undefined;\n sideMenuIcon?: FileDto | undefined;\n contents!: AppContentDto[];\n css?: string | undefined;\n cssClasses?: string | undefined;\n\n constructor(data?: IAppPageDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.contents = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.parentId = _data[\"parentId\"];\n this.name = _data[\"name\"];\n this.showNameAsTitle = _data[\"showNameAsTitle\"];\n this.isStartpage = _data[\"isStartpage\"];\n this.backgroundColor = _data[\"backgroundColor\"];\n this.toolbarColor = _data[\"toolbarColor\"];\n this.showInSideMenu = _data[\"showInSideMenu\"];\n this.isSideMenuExternalLink = _data[\"isSideMenuExternalLink\"];\n this.externalLinkUrl = _data[\"externalLinkUrl\"];\n this.sideMenuSorting = _data[\"sideMenuSorting\"];\n this.backgroundImage = _data[\"backgroundImage\"] ? FileDto.fromJS(_data[\"backgroundImage\"]) : undefined;\n this.sideMenuIcon = _data[\"sideMenuIcon\"] ? FileDto.fromJS(_data[\"sideMenuIcon\"]) : undefined;\n if (Array.isArray(_data[\"contents\"])) {\n this.contents = [] as any;\n for (let item of _data[\"contents\"])\n this.contents!.push(AppContentDto.fromJS(item));\n }\n this.css = _data[\"css\"];\n this.cssClasses = _data[\"cssClasses\"];\n }\n }\n\n static fromJS(data: any): AppPageDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppPageDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"parentId\"] = this.parentId;\n data[\"name\"] = this.name;\n data[\"showNameAsTitle\"] = this.showNameAsTitle;\n data[\"isStartpage\"] = this.isStartpage;\n data[\"backgroundColor\"] = this.backgroundColor;\n data[\"toolbarColor\"] = this.toolbarColor;\n data[\"showInSideMenu\"] = this.showInSideMenu;\n data[\"isSideMenuExternalLink\"] = this.isSideMenuExternalLink;\n data[\"externalLinkUrl\"] = this.externalLinkUrl;\n data[\"sideMenuSorting\"] = this.sideMenuSorting;\n data[\"backgroundImage\"] = this.backgroundImage ? this.backgroundImage.toJSON() : undefined;\n data[\"sideMenuIcon\"] = this.sideMenuIcon ? this.sideMenuIcon.toJSON() : undefined;\n if (Array.isArray(this.contents)) {\n data[\"contents\"] = [];\n for (let item of this.contents)\n data[\"contents\"].push(item.toJSON());\n }\n data[\"css\"] = this.css;\n data[\"cssClasses\"] = this.cssClasses;\n return data;\n }\n\n clone(): AppPageDto {\n const json = this.toJSON();\n let result = new AppPageDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppPageDto {\n id: number;\n parentId?: number | undefined;\n name?: string | undefined;\n showNameAsTitle: boolean;\n isStartpage: boolean;\n backgroundColor: AppColor;\n toolbarColor: AppColor;\n showInSideMenu: boolean;\n isSideMenuExternalLink: boolean;\n externalLinkUrl?: string | undefined;\n sideMenuSorting?: number | undefined;\n backgroundImage?: FileDto | undefined;\n sideMenuIcon?: FileDto | undefined;\n contents: AppContentDto[];\n css?: string | undefined;\n cssClasses?: string | undefined;\n}\n\nexport enum AppColor {\n Primary = 0,\n Secondary = 1,\n Black = 2,\n White = 3,\n Transparent = 4,\n TransparentDark = 5,\n Grey = 6,\n GreyDark = 7,\n GreyLight = 8,\n}\n\nexport class FileDto implements IFileDto {\n url?: string | undefined;\n id!: string;\n name!: string;\n\n constructor(data?: IFileDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.url = _data[\"url\"];\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): FileDto {\n data = typeof data === 'object' ? data : {};\n let result = new FileDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"url\"] = this.url;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n return data;\n }\n\n clone(): FileDto {\n const json = this.toJSON();\n let result = new FileDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFileDto {\n url?: string | undefined;\n id: string;\n name: string;\n}\n\nexport abstract class AppContentDto implements IAppContentDto {\n name?: string | undefined;\n cssClasses?: string | undefined;\n showNameAsHeader?: boolean | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: IAppContentDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"AppContentDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.cssClasses = _data[\"cssClasses\"];\n this.showNameAsHeader = _data[\"showNameAsHeader\"];\n }\n }\n\n static fromJS(data: any): AppContentDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"AppComponentContentDto\") {\n let result = new AppComponentContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppMenuContentDto\") {\n let result = new AppMenuContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppPicturesContentDto\") {\n let result = new AppPicturesContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppDocumentContentDto\") {\n let result = new AppDocumentContentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"AppWebViewContentDto\") {\n let result = new AppWebViewContentDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'AppContentDto' cannot be instantiated.\");\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"name\"] = this.name;\n data[\"cssClasses\"] = this.cssClasses;\n data[\"showNameAsHeader\"] = this.showNameAsHeader;\n return data;\n }\n\n clone(): AppContentDto {\n throw new Error(\"The abstract class 'AppContentDto' cannot be instantiated.\");\n }\n}\n\nexport interface IAppContentDto {\n name?: string | undefined;\n cssClasses?: string | undefined;\n showNameAsHeader?: boolean | undefined;\n}\n\nexport class AppComponentContentDto extends AppContentDto implements IAppComponentContentDto {\n componentHtml!: string;\n slideshow!: boolean;\n\n constructor(data?: IAppComponentContentDto) {\n super(data);\n this._discriminator = \"AppComponentContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.componentHtml = _data[\"componentHtml\"];\n this.slideshow = _data[\"slideshow\"];\n }\n }\n\n static override fromJS(data: any): AppComponentContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppComponentContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"componentHtml\"] = this.componentHtml;\n data[\"slideshow\"] = this.slideshow;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppComponentContentDto {\n const json = this.toJSON();\n let result = new AppComponentContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppComponentContentDto extends IAppContentDto {\n componentHtml: string;\n slideshow: boolean;\n}\n\nexport class AppMenuContentDto extends AppContentDto implements IAppMenuContentDto {\n links!: AppLinkDto[];\n backgroundImageUrl?: string | undefined;\n layout!: AppMenuLayout;\n\n constructor(data?: IAppMenuContentDto) {\n super(data);\n if (!data) {\n this.links = [];\n }\n this._discriminator = \"AppMenuContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"links\"])) {\n this.links = [] as any;\n for (let item of _data[\"links\"])\n this.links!.push(AppLinkDto.fromJS(item));\n }\n this.backgroundImageUrl = _data[\"backgroundImageUrl\"];\n this.layout = _data[\"layout\"];\n }\n }\n\n static override fromJS(data: any): AppMenuContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppMenuContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.links)) {\n data[\"links\"] = [];\n for (let item of this.links)\n data[\"links\"].push(item.toJSON());\n }\n data[\"backgroundImageUrl\"] = this.backgroundImageUrl;\n data[\"layout\"] = this.layout;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppMenuContentDto {\n const json = this.toJSON();\n let result = new AppMenuContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppMenuContentDto extends IAppContentDto {\n links: AppLinkDto[];\n backgroundImageUrl?: string | undefined;\n layout: AppMenuLayout;\n}\n\nexport class AppLinkDto implements IAppLinkDto {\n name?: string | undefined;\n icon?: FileDto | undefined;\n picture?: FileDto | undefined;\n isWeather?: boolean | undefined;\n textOutside?: boolean | undefined;\n linkType!: AppLinkType;\n targetPageId?: number | undefined;\n targetUrl?: string | undefined;\n\n constructor(data?: IAppLinkDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.icon = _data[\"icon\"] ? FileDto.fromJS(_data[\"icon\"]) : undefined;\n this.picture = _data[\"picture\"] ? FileDto.fromJS(_data[\"picture\"]) : undefined;\n this.isWeather = _data[\"isWeather\"];\n this.textOutside = _data[\"textOutside\"];\n this.linkType = _data[\"linkType\"];\n this.targetPageId = _data[\"targetPageId\"];\n this.targetUrl = _data[\"targetUrl\"];\n }\n }\n\n static fromJS(data: any): AppLinkDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppLinkDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"icon\"] = this.icon ? this.icon.toJSON() : undefined;\n data[\"picture\"] = this.picture ? this.picture.toJSON() : undefined;\n data[\"isWeather\"] = this.isWeather;\n data[\"textOutside\"] = this.textOutside;\n data[\"linkType\"] = this.linkType;\n data[\"targetPageId\"] = this.targetPageId;\n data[\"targetUrl\"] = this.targetUrl;\n return data;\n }\n\n clone(): AppLinkDto {\n const json = this.toJSON();\n let result = new AppLinkDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppLinkDto {\n name?: string | undefined;\n icon?: FileDto | undefined;\n picture?: FileDto | undefined;\n isWeather?: boolean | undefined;\n textOutside?: boolean | undefined;\n linkType: AppLinkType;\n targetPageId?: number | undefined;\n targetUrl?: string | undefined;\n}\n\nexport enum AppLinkType {\n Page = 0,\n Url = 1,\n}\n\nexport enum AppMenuLayout {\n Basic = 0,\n Modern = 1,\n ModernLarge = 2,\n Flags = 3,\n Beans = 4,\n Grid = 5,\n Column = 6,\n}\n\nexport class AppPicturesContentDto extends AppContentDto implements IAppPicturesContentDto {\n pictures!: FileDto[];\n showAsCarousel!: boolean;\n showSearchbar!: boolean;\n flat!: boolean;\n searchBarText?: string | undefined;\n\n constructor(data?: IAppPicturesContentDto) {\n super(data);\n if (!data) {\n this.pictures = [];\n }\n this._discriminator = \"AppPicturesContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(FileDto.fromJS(item));\n }\n this.showAsCarousel = _data[\"showAsCarousel\"];\n this.showSearchbar = _data[\"showSearchbar\"];\n this.flat = _data[\"flat\"];\n this.searchBarText = _data[\"searchBarText\"];\n }\n }\n\n static override fromJS(data: any): AppPicturesContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppPicturesContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"showAsCarousel\"] = this.showAsCarousel;\n data[\"showSearchbar\"] = this.showSearchbar;\n data[\"flat\"] = this.flat;\n data[\"searchBarText\"] = this.searchBarText;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppPicturesContentDto {\n const json = this.toJSON();\n let result = new AppPicturesContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppPicturesContentDto extends IAppContentDto {\n pictures: FileDto[];\n showAsCarousel: boolean;\n showSearchbar: boolean;\n flat: boolean;\n searchBarText?: string | undefined;\n}\n\nexport class AppDocumentContentDto extends AppContentDto implements IAppDocumentContentDto {\n document!: Node;\n\n constructor(data?: IAppDocumentContentDto) {\n super(data);\n if (!data) {\n this.document = new Node();\n }\n this._discriminator = \"AppDocumentContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static override fromJS(data: any): AppDocumentContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppDocumentContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppDocumentContentDto {\n const json = this.toJSON();\n let result = new AppDocumentContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppDocumentContentDto extends IAppContentDto {\n document: Node;\n}\n\nexport class Node implements INode {\n type!: NodeType;\n attrs?: NodeAttribute | undefined;\n content?: Node[] | undefined;\n marks?: Mark[] | undefined;\n text?: string | undefined;\n\n constructor(data?: INode) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.attrs = _data[\"attrs\"] ? NodeAttribute.fromJS(_data[\"attrs\"]) : undefined;\n if (Array.isArray(_data[\"content\"])) {\n this.content = [] as any;\n for (let item of _data[\"content\"])\n this.content!.push(Node.fromJS(item));\n }\n if (Array.isArray(_data[\"marks\"])) {\n this.marks = [] as any;\n for (let item of _data[\"marks\"])\n this.marks!.push(Mark.fromJS(item));\n }\n this.text = _data[\"text\"];\n }\n }\n\n static fromJS(data: any): Node {\n data = typeof data === 'object' ? data : {};\n let result = new Node();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"attrs\"] = this.attrs ? this.attrs.toJSON() : undefined;\n if (Array.isArray(this.content)) {\n data[\"content\"] = [];\n for (let item of this.content)\n data[\"content\"].push(item.toJSON());\n }\n if (Array.isArray(this.marks)) {\n data[\"marks\"] = [];\n for (let item of this.marks)\n data[\"marks\"].push(item.toJSON());\n }\n data[\"text\"] = this.text;\n return data;\n }\n\n clone(): Node {\n const json = this.toJSON();\n let result = new Node();\n result.init(json);\n return result;\n }\n}\n\nexport interface INode {\n type: NodeType;\n attrs?: NodeAttribute | undefined;\n content?: Node[] | undefined;\n marks?: Mark[] | undefined;\n text?: string | undefined;\n}\n\nexport enum NodeType {\n Blockquote = \"blockquote\",\n BulletList = \"bulletList\",\n Doc = \"doc\",\n HardBreak = \"hardBreak\",\n Heading = \"heading\",\n HorizontalRule = \"horizontalRule\",\n ListItem = \"listItem\",\n OrderedList = \"orderedList\",\n Paragraph = \"paragraph\",\n Table = \"table\",\n TableRow = \"tableRow\",\n TableHeader = \"tableHeader\",\n TableCell = \"tableCell\",\n Text = \"text\",\n Gallery = \"gallery\",\n Video = \"video\",\n Audio = \"audio\",\n Interpolation = \"interpolation\",\n Image = \"image\",\n PanelInfo = \"panelInfo\",\n PanelTeaser = \"panelTeaser\",\n Vspace = \"vspace\",\n Accordion = \"accordion\",\n AccordionHeader = \"accordionHeader\",\n AccordionContent = \"accordionContent\",\n Figure = \"figure\",\n}\n\nexport class NodeAttribute implements INodeAttribute {\n level?: number | undefined;\n textAlign?: string | undefined;\n colspan?: number | undefined;\n rowspan?: number | undefined;\n colwidth?: number | undefined;\n start?: number | undefined;\n position?: GalleryPosition | undefined;\n display?: GalleryDisplay | undefined;\n width?: number | undefined;\n cols?: number | undefined;\n images?: GalleryImage[] | undefined;\n fieldId?: string | undefined;\n fieldLabel?: string | undefined;\n fileId?: string | undefined;\n src?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n\n constructor(data?: INodeAttribute) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.level = _data[\"level\"];\n this.textAlign = _data[\"textAlign\"];\n this.colspan = _data[\"colspan\"];\n this.rowspan = _data[\"rowspan\"];\n this.colwidth = _data[\"colwidth\"];\n this.start = _data[\"start\"];\n this.position = _data[\"position\"];\n this.display = _data[\"display\"];\n this.width = _data[\"width\"];\n this.cols = _data[\"cols\"];\n if (Array.isArray(_data[\"images\"])) {\n this.images = [] as any;\n for (let item of _data[\"images\"])\n this.images!.push(GalleryImage.fromJS(item));\n }\n this.fieldId = _data[\"fieldId\"];\n this.fieldLabel = _data[\"fieldLabel\"];\n this.fileId = _data[\"fileId\"];\n this.src = _data[\"src\"];\n this.alt = _data[\"alt\"];\n this.title = _data[\"title\"];\n this.caption = _data[\"caption\"];\n }\n }\n\n static fromJS(data: any): NodeAttribute {\n data = typeof data === 'object' ? data : {};\n let result = new NodeAttribute();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"level\"] = this.level;\n data[\"textAlign\"] = this.textAlign;\n data[\"colspan\"] = this.colspan;\n data[\"rowspan\"] = this.rowspan;\n data[\"colwidth\"] = this.colwidth;\n data[\"start\"] = this.start;\n data[\"position\"] = this.position;\n data[\"display\"] = this.display;\n data[\"width\"] = this.width;\n data[\"cols\"] = this.cols;\n if (Array.isArray(this.images)) {\n data[\"images\"] = [];\n for (let item of this.images)\n data[\"images\"].push(item.toJSON());\n }\n data[\"fieldId\"] = this.fieldId;\n data[\"fieldLabel\"] = this.fieldLabel;\n data[\"fileId\"] = this.fileId;\n data[\"src\"] = this.src;\n data[\"alt\"] = this.alt;\n data[\"title\"] = this.title;\n data[\"caption\"] = this.caption;\n return data;\n }\n\n clone(): NodeAttribute {\n const json = this.toJSON();\n let result = new NodeAttribute();\n result.init(json);\n return result;\n }\n}\n\nexport interface INodeAttribute {\n level?: number | undefined;\n textAlign?: string | undefined;\n colspan?: number | undefined;\n rowspan?: number | undefined;\n colwidth?: number | undefined;\n start?: number | undefined;\n position?: GalleryPosition | undefined;\n display?: GalleryDisplay | undefined;\n width?: number | undefined;\n cols?: number | undefined;\n images?: GalleryImage[] | undefined;\n fieldId?: string | undefined;\n fieldLabel?: string | undefined;\n fileId?: string | undefined;\n src?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n}\n\nexport enum GalleryPosition {\n Left = \"left\",\n Center = \"center\",\n Right = \"right\",\n}\n\nexport enum GalleryDisplay {\n Normal = \"normal\",\n MiniGallery = \"miniGallery\",\n}\n\nexport class GalleryImage implements IGalleryImage {\n src?: string | undefined;\n id?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n href?: string | undefined;\n\n constructor(data?: IGalleryImage) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.src = _data[\"src\"];\n this.id = _data[\"id\"];\n this.alt = _data[\"alt\"];\n this.title = _data[\"title\"];\n this.caption = _data[\"caption\"];\n this.href = _data[\"href\"];\n }\n }\n\n static fromJS(data: any): GalleryImage {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryImage();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"src\"] = this.src;\n data[\"id\"] = this.id;\n data[\"alt\"] = this.alt;\n data[\"title\"] = this.title;\n data[\"caption\"] = this.caption;\n data[\"href\"] = this.href;\n return data;\n }\n\n clone(): GalleryImage {\n const json = this.toJSON();\n let result = new GalleryImage();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryImage {\n src?: string | undefined;\n id?: string | undefined;\n alt?: string | undefined;\n title?: string | undefined;\n caption?: string | undefined;\n href?: string | undefined;\n}\n\nexport class Mark implements IMark {\n type!: MarkType;\n attrs?: MarkAttribute | undefined;\n\n constructor(data?: IMark) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.attrs = _data[\"attrs\"] ? MarkAttribute.fromJS(_data[\"attrs\"]) : undefined;\n }\n }\n\n static fromJS(data: any): Mark {\n data = typeof data === 'object' ? data : {};\n let result = new Mark();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"attrs\"] = this.attrs ? this.attrs.toJSON() : undefined;\n return data;\n }\n\n clone(): Mark {\n const json = this.toJSON();\n let result = new Mark();\n result.init(json);\n return result;\n }\n}\n\nexport interface IMark {\n type: MarkType;\n attrs?: MarkAttribute | undefined;\n}\n\nexport enum MarkType {\n Bold = \"bold\",\n Italic = \"italic\",\n Link = \"link\",\n Strike = \"strike\",\n Subscript = \"subscript\",\n Superscript = \"superscript\",\n Underline = \"underline\",\n Reference = \"reference\",\n}\n\nexport class MarkAttribute implements IMarkAttribute {\n target?: string | undefined;\n title?: string | undefined;\n class?: string | undefined;\n href?: string | undefined;\n fileId?: string | undefined;\n referenceId?: number | undefined;\n type?: ReferenceType | undefined;\n\n constructor(data?: IMarkAttribute) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.target = _data[\"target\"];\n this.title = _data[\"title\"];\n this.class = _data[\"class\"];\n this.href = _data[\"href\"];\n this.fileId = _data[\"fileId\"];\n this.referenceId = _data[\"referenceId\"];\n this.type = _data[\"type\"];\n }\n }\n\n static fromJS(data: any): MarkAttribute {\n data = typeof data === 'object' ? data : {};\n let result = new MarkAttribute();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"target\"] = this.target;\n data[\"title\"] = this.title;\n data[\"class\"] = this.class;\n data[\"href\"] = this.href;\n data[\"fileId\"] = this.fileId;\n data[\"referenceId\"] = this.referenceId;\n data[\"type\"] = this.type;\n return data;\n }\n\n clone(): MarkAttribute {\n const json = this.toJSON();\n let result = new MarkAttribute();\n result.init(json);\n return result;\n }\n}\n\nexport interface IMarkAttribute {\n target?: string | undefined;\n title?: string | undefined;\n class?: string | undefined;\n href?: string | undefined;\n fileId?: string | undefined;\n referenceId?: number | undefined;\n type?: ReferenceType | undefined;\n}\n\nexport enum ReferenceType {\n File = \"file\",\n Page = \"page\",\n News = \"news\",\n Calendar = \"calendar\",\n Geo = \"geo\",\n Database = \"database\",\n Gallery = \"gallery\",\n DirectoryForm = \"directoryForm\",\n DirectoryOrgUnit = \"directoryOrgUnit\",\n DirectoryPerson = \"directoryPerson\",\n DirectoryProcess = \"directoryProcess\",\n DirectoryService = \"directoryService\",\n DirectorySituation = \"directorySituation\",\n InteractionForm = \"interactionForm\",\n Shop = \"shop\",\n}\n\nexport class AppWebViewContentDto extends AppContentDto implements IAppWebViewContentDto {\n url!: string;\n downloadAllowed!: boolean;\n\n constructor(data?: IAppWebViewContentDto) {\n super(data);\n this._discriminator = \"AppWebViewContentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.url = _data[\"url\"];\n this.downloadAllowed = _data[\"downloadAllowed\"];\n }\n }\n\n static override fromJS(data: any): AppWebViewContentDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppWebViewContentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"url\"] = this.url;\n data[\"downloadAllowed\"] = this.downloadAllowed;\n super.toJSON(data);\n return data;\n }\n\n clone(): AppWebViewContentDto {\n const json = this.toJSON();\n let result = new AppWebViewContentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppWebViewContentDto extends IAppContentDto {\n url: string;\n downloadAllowed: boolean;\n}\n\nexport class AppToolbarDto implements IAppToolbarDto {\n logoImage?: FileDto | undefined;\n backgroundImage?: FileDto | undefined;\n bell!: boolean;\n bellCategories!: number[];\n\n constructor(data?: IAppToolbarDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.bellCategories = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.logoImage = _data[\"logoImage\"] ? FileDto.fromJS(_data[\"logoImage\"]) : undefined;\n this.backgroundImage = _data[\"backgroundImage\"] ? FileDto.fromJS(_data[\"backgroundImage\"]) : undefined;\n this.bell = _data[\"bell\"];\n if (Array.isArray(_data[\"bellCategories\"])) {\n this.bellCategories = [] as any;\n for (let item of _data[\"bellCategories\"])\n this.bellCategories!.push(item);\n }\n }\n }\n\n static fromJS(data: any): AppToolbarDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppToolbarDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"logoImage\"] = this.logoImage ? this.logoImage.toJSON() : undefined;\n data[\"backgroundImage\"] = this.backgroundImage ? this.backgroundImage.toJSON() : undefined;\n data[\"bell\"] = this.bell;\n if (Array.isArray(this.bellCategories)) {\n data[\"bellCategories\"] = [];\n for (let item of this.bellCategories)\n data[\"bellCategories\"].push(item);\n }\n return data;\n }\n\n clone(): AppToolbarDto {\n const json = this.toJSON();\n let result = new AppToolbarDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppToolbarDto {\n logoImage?: FileDto | undefined;\n backgroundImage?: FileDto | undefined;\n bell: boolean;\n bellCategories: number[];\n}\n\nexport class AppSettingsDto implements IAppSettingsDto {\n impressumDocuments!: AppLinkDto[];\n showWasteReminderSettings!: boolean;\n wasteCategories!: number[];\n districtCategories!: number[];\n\n constructor(data?: IAppSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.impressumDocuments = [];\n this.wasteCategories = [];\n this.districtCategories = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"impressumDocuments\"])) {\n this.impressumDocuments = [] as any;\n for (let item of _data[\"impressumDocuments\"])\n this.impressumDocuments!.push(AppLinkDto.fromJS(item));\n }\n this.showWasteReminderSettings = _data[\"showWasteReminderSettings\"];\n if (Array.isArray(_data[\"wasteCategories\"])) {\n this.wasteCategories = [] as any;\n for (let item of _data[\"wasteCategories\"])\n this.wasteCategories!.push(item);\n }\n if (Array.isArray(_data[\"districtCategories\"])) {\n this.districtCategories = [] as any;\n for (let item of _data[\"districtCategories\"])\n this.districtCategories!.push(item);\n }\n }\n }\n\n static fromJS(data: any): AppSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.impressumDocuments)) {\n data[\"impressumDocuments\"] = [];\n for (let item of this.impressumDocuments)\n data[\"impressumDocuments\"].push(item.toJSON());\n }\n data[\"showWasteReminderSettings\"] = this.showWasteReminderSettings;\n if (Array.isArray(this.wasteCategories)) {\n data[\"wasteCategories\"] = [];\n for (let item of this.wasteCategories)\n data[\"wasteCategories\"].push(item);\n }\n if (Array.isArray(this.districtCategories)) {\n data[\"districtCategories\"] = [];\n for (let item of this.districtCategories)\n data[\"districtCategories\"].push(item);\n }\n return data;\n }\n\n clone(): AppSettingsDto {\n const json = this.toJSON();\n let result = new AppSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppSettingsDto {\n impressumDocuments: AppLinkDto[];\n showWasteReminderSettings: boolean;\n wasteCategories: number[];\n districtCategories: number[];\n}\n\nexport class AppThemeDto implements IAppThemeDto {\n colorPrimary!: string;\n colorSecondary?: string | undefined;\n fontPrimary!: AppFont;\n fontSecondary?: AppFont | undefined;\n scss?: string | undefined;\n css?: string | undefined;\n cssClasses?: string | undefined;\n cityCoatImage?: FileDto | undefined;\n\n constructor(data?: IAppThemeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.colorPrimary = _data[\"colorPrimary\"];\n this.colorSecondary = _data[\"colorSecondary\"];\n this.fontPrimary = _data[\"fontPrimary\"];\n this.fontSecondary = _data[\"fontSecondary\"];\n this.scss = _data[\"scss\"];\n this.css = _data[\"css\"];\n this.cssClasses = _data[\"cssClasses\"];\n this.cityCoatImage = _data[\"cityCoatImage\"] ? FileDto.fromJS(_data[\"cityCoatImage\"]) : undefined;\n }\n }\n\n static fromJS(data: any): AppThemeDto {\n data = typeof data === 'object' ? data : {};\n let result = new AppThemeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"colorPrimary\"] = this.colorPrimary;\n data[\"colorSecondary\"] = this.colorSecondary;\n data[\"fontPrimary\"] = this.fontPrimary;\n data[\"fontSecondary\"] = this.fontSecondary;\n data[\"scss\"] = this.scss;\n data[\"css\"] = this.css;\n data[\"cssClasses\"] = this.cssClasses;\n data[\"cityCoatImage\"] = this.cityCoatImage ? this.cityCoatImage.toJSON() : undefined;\n return data;\n }\n\n clone(): AppThemeDto {\n const json = this.toJSON();\n let result = new AppThemeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAppThemeDto {\n colorPrimary: string;\n colorSecondary?: string | undefined;\n fontPrimary: AppFont;\n fontSecondary?: AppFont | undefined;\n scss?: string | undefined;\n css?: string | undefined;\n cssClasses?: string | undefined;\n cityCoatImage?: FileDto | undefined;\n}\n\nexport enum AppFont {\n PtSerif = 0,\n Karla = 1,\n WorkSans = 2,\n Barlow = 3,\n Lato = 4,\n Quicksand = 5,\n Montserrat = 6,\n RobotoSlab = 7,\n SourceSansPro = 8,\n ZillaSlab = 9,\n Jost = 10,\n Inter = 11,\n}\n\nexport class ProblemDetails implements IProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n extensions?: { [key: string]: any; };\n\n [key: string]: any;\n\n constructor(data?: IProblemDetails) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n for (var property in _data) {\n if (_data.hasOwnProperty(property))\n this[property] = _data[property];\n }\n this.type = _data[\"type\"];\n this.title = _data[\"title\"];\n this.status = _data[\"status\"];\n this.detail = _data[\"detail\"];\n this.instance = _data[\"instance\"];\n if (_data[\"extensions\"]) {\n this.extensions = {} as any;\n for (let key in _data[\"extensions\"]) {\n if (_data[\"extensions\"].hasOwnProperty(key))\n (this.extensions)![key] = _data[\"extensions\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ProblemDetails {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemDetails();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n for (var property in this) {\n if (this.hasOwnProperty(property))\n data[property] = this[property];\n }\n data[\"type\"] = this.type;\n data[\"title\"] = this.title;\n data[\"status\"] = this.status;\n data[\"detail\"] = this.detail;\n data[\"instance\"] = this.instance;\n if (this.extensions) {\n data[\"extensions\"] = {};\n for (let key in this.extensions) {\n if (this.extensions.hasOwnProperty(key))\n (data[\"extensions\"])[key] = (this.extensions)[key];\n }\n }\n return data;\n }\n\n clone(): ProblemDetails {\n const json = this.toJSON();\n let result = new ProblemDetails();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n extensions?: { [key: string]: any; };\n\n [key: string]: any;\n}\n\nexport class BookingSettingsDto implements IBookingSettingsDto {\n formConfirmationHtml?: string | undefined;\n\n constructor(data?: IBookingSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): BookingSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): BookingSettingsDto {\n const json = this.toJSON();\n let result = new BookingSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingSettingsDto {\n formConfirmationHtml?: string | undefined;\n}\n\nexport class CategoryTeaserDto implements ICategoryTeaserDto {\n id!: number;\n name!: string;\n slug?: string | undefined;\n teaserPictureUrl?: string | undefined;\n iconUrl?: string | undefined;\n color?: string | undefined;\n subCategories?: CategoryTeaserDto[] | undefined;\n itemsCount?: number | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: ICategoryTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"CategoryTeaserDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.slug = _data[\"slug\"];\n this.teaserPictureUrl = _data[\"teaserPictureUrl\"];\n this.iconUrl = _data[\"iconUrl\"];\n this.color = _data[\"color\"];\n if (Array.isArray(_data[\"subCategories\"])) {\n this.subCategories = [] as any;\n for (let item of _data[\"subCategories\"])\n this.subCategories!.push(CategoryTeaserDto.fromJS(item));\n }\n this.itemsCount = _data[\"itemsCount\"];\n }\n }\n\n static fromJS(data: any): CategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"BookingCategoryTeaserDto\") {\n let result = new BookingCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoCategoryTeaserDto\") {\n let result = new GeoCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CalendarCategoryTeaserDto\") {\n let result = new CalendarCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryFormCategoryTeaserDto\") {\n let result = new DirectoryFormCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"NewsCategoryTeaserDto\") {\n let result = new NewsCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GalleryCategoryTeaserDto\") {\n let result = new GalleryCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemCategoryTeaserDto\") {\n let result = new ProblemCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DatabaseCategoryTeaserDto\") {\n let result = new DatabaseCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CommunicationCategoryTeaserDto\") {\n let result = new CommunicationCategoryTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopCategoryTeaserDto\") {\n let result = new ShopCategoryTeaserDto();\n result.init(data);\n return result;\n }\n let result = new CategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"slug\"] = this.slug;\n data[\"teaserPictureUrl\"] = this.teaserPictureUrl;\n data[\"iconUrl\"] = this.iconUrl;\n data[\"color\"] = this.color;\n if (Array.isArray(this.subCategories)) {\n data[\"subCategories\"] = [];\n for (let item of this.subCategories)\n data[\"subCategories\"].push(item.toJSON());\n }\n data[\"itemsCount\"] = this.itemsCount;\n return data;\n }\n\n clone(): CategoryTeaserDto {\n const json = this.toJSON();\n let result = new CategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICategoryTeaserDto {\n id: number;\n name: string;\n slug?: string | undefined;\n teaserPictureUrl?: string | undefined;\n iconUrl?: string | undefined;\n color?: string | undefined;\n subCategories?: CategoryTeaserDto[] | undefined;\n itemsCount?: number | undefined;\n}\n\nexport class BookingCategoryTeaserDto extends CategoryTeaserDto implements IBookingCategoryTeaserDto {\n\n constructor(data?: IBookingCategoryTeaserDto) {\n super(data);\n this._discriminator = \"BookingCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): BookingCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): BookingCategoryTeaserDto {\n const json = this.toJSON();\n let result = new BookingCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class GeoCategoryTeaserDto extends CategoryTeaserDto implements IGeoCategoryTeaserDto {\n\n constructor(data?: IGeoCategoryTeaserDto) {\n super(data);\n this._discriminator = \"GeoCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): GeoCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoCategoryTeaserDto {\n const json = this.toJSON();\n let result = new GeoCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class CalendarCategoryTeaserDto extends CategoryTeaserDto implements ICalendarCategoryTeaserDto {\n\n constructor(data?: ICalendarCategoryTeaserDto) {\n super(data);\n this._discriminator = \"CalendarCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): CalendarCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): CalendarCategoryTeaserDto {\n const json = this.toJSON();\n let result = new CalendarCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class DirectoryFormCategoryTeaserDto extends CategoryTeaserDto implements IDirectoryFormCategoryTeaserDto {\n\n constructor(data?: IDirectoryFormCategoryTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryFormCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DirectoryFormCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryFormCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryFormCategoryTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryFormCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryFormCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class NewsCategoryTeaserDto extends CategoryTeaserDto implements INewsCategoryTeaserDto {\n\n constructor(data?: INewsCategoryTeaserDto) {\n super(data);\n this._discriminator = \"NewsCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): NewsCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): NewsCategoryTeaserDto {\n const json = this.toJSON();\n let result = new NewsCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class GalleryCategoryTeaserDto extends CategoryTeaserDto implements IGalleryCategoryTeaserDto {\n\n constructor(data?: IGalleryCategoryTeaserDto) {\n super(data);\n this._discriminator = \"GalleryCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): GalleryCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): GalleryCategoryTeaserDto {\n const json = this.toJSON();\n let result = new GalleryCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class ProblemCategoryTeaserDto extends CategoryTeaserDto implements IProblemCategoryTeaserDto {\n\n constructor(data?: IProblemCategoryTeaserDto) {\n super(data);\n this._discriminator = \"ProblemCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): ProblemCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemCategoryTeaserDto {\n const json = this.toJSON();\n let result = new ProblemCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class DatabaseCategoryTeaserDto extends CategoryTeaserDto implements IDatabaseCategoryTeaserDto {\n\n constructor(data?: IDatabaseCategoryTeaserDto) {\n super(data);\n this._discriminator = \"DatabaseCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DatabaseCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DatabaseCategoryTeaserDto {\n const json = this.toJSON();\n let result = new DatabaseCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class CommunicationCategoryTeaserDto extends CategoryTeaserDto implements ICommunicationCategoryTeaserDto {\n\n constructor(data?: ICommunicationCategoryTeaserDto) {\n super(data);\n this._discriminator = \"CommunicationCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): CommunicationCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): CommunicationCategoryTeaserDto {\n const json = this.toJSON();\n let result = new CommunicationCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICommunicationCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class ShopCategoryTeaserDto extends CategoryTeaserDto implements IShopCategoryTeaserDto {\n\n constructor(data?: IShopCategoryTeaserDto) {\n super(data);\n this._discriminator = \"ShopCategoryTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): ShopCategoryTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopCategoryTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopCategoryTeaserDto {\n const json = this.toJSON();\n let result = new ShopCategoryTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopCategoryTeaserDto extends ICategoryTeaserDto {\n}\n\nexport class PaginatedListOfBookingBookableTeaserDto implements IPaginatedListOfBookingBookableTeaserDto {\n items!: BookingBookableTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfBookingBookableTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(BookingBookableTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfBookingBookableTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfBookingBookableTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfBookingBookableTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfBookingBookableTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfBookingBookableTeaserDto {\n items: BookingBookableTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class ItemTeaserDto implements IItemTeaserDto {\n link!: Link;\n name!: string;\n created!: Date;\n teaserPictureUrl?: string | undefined;\n categoryIconUrl?: string | undefined;\n categoryColor?: string | undefined;\n teaserText?: string | undefined;\n hasContent!: boolean;\n categoryNames!: CategoryNameDto[];\n additionalFields!: FieldGroupValuesDto[];\n\n protected _discriminator: string;\n\n constructor(data?: IItemTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.link = new Link();\n this.categoryNames = [];\n this.additionalFields = [];\n }\n this._discriminator = \"ItemTeaserDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.link = _data[\"link\"] ? Link.fromJS(_data[\"link\"]) : new Link();\n this.name = _data[\"name\"];\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : undefined;\n this.teaserPictureUrl = _data[\"teaserPictureUrl\"];\n this.categoryIconUrl = _data[\"categoryIconUrl\"];\n this.categoryColor = _data[\"categoryColor\"];\n this.teaserText = _data[\"teaserText\"];\n this.hasContent = _data[\"hasContent\"];\n if (Array.isArray(_data[\"categoryNames\"])) {\n this.categoryNames = [] as any;\n for (let item of _data[\"categoryNames\"])\n this.categoryNames!.push(CategoryNameDto.fromJS(item));\n }\n if (Array.isArray(_data[\"additionalFields\"])) {\n this.additionalFields = [] as any;\n for (let item of _data[\"additionalFields\"])\n this.additionalFields!.push(FieldGroupValuesDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ItemTeaserDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"BookingBookableTeaserDto\") {\n let result = new BookingBookableTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoObjectTeaserDto\") {\n throw new Error(\"The abstract class 'GeoObjectTeaserDto' cannot be instantiated.\");\n }\n if (data[\"discriminator\"] === \"GeoPlaceTeaserDto\") {\n let result = new GeoPlaceTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteTeaserDto\") {\n let result = new GeoRouteTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaTeaserDto\") {\n let result = new GeoAreaTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"NewsArticleTeaserDto\") {\n let result = new NewsArticleTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GalleryAlbumTeaserDto\") {\n let result = new GalleryAlbumTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemDefectTeaserDto\") {\n let result = new ProblemDefectTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CalendarEventTeaserDto\") {\n let result = new CalendarEventTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryFormTeaserDto\") {\n let result = new DirectoryFormTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryPersonTeaserDto\") {\n let result = new DirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryProcessTeaserDto\") {\n let result = new DirectoryProcessTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryServiceTeaserDto\") {\n let result = new DirectoryServiceTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryOrgUnitTeaserDto\") {\n let result = new DirectoryOrgUnitTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectorySituationTeaserDto\") {\n let result = new DirectorySituationTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DatabaseObjectTeaserDto\") {\n let result = new DatabaseObjectTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"SearchResultDto\") {\n let result = new SearchResultDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopProductTeaserDto\") {\n let result = new ShopProductTeaserDto();\n result.init(data);\n return result;\n }\n let result = new ItemTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"link\"] = this.link ? this.link.toJSON() : undefined;\n data[\"name\"] = this.name;\n data[\"created\"] = this.created ? this.created.toISOString() : undefined;\n data[\"teaserPictureUrl\"] = this.teaserPictureUrl;\n data[\"categoryIconUrl\"] = this.categoryIconUrl;\n data[\"categoryColor\"] = this.categoryColor;\n data[\"teaserText\"] = this.teaserText;\n data[\"hasContent\"] = this.hasContent;\n if (Array.isArray(this.categoryNames)) {\n data[\"categoryNames\"] = [];\n for (let item of this.categoryNames)\n data[\"categoryNames\"].push(item.toJSON());\n }\n if (Array.isArray(this.additionalFields)) {\n data[\"additionalFields\"] = [];\n for (let item of this.additionalFields)\n data[\"additionalFields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): ItemTeaserDto {\n const json = this.toJSON();\n let result = new ItemTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemTeaserDto {\n link: Link;\n name: string;\n created: Date;\n teaserPictureUrl?: string | undefined;\n categoryIconUrl?: string | undefined;\n categoryColor?: string | undefined;\n teaserText?: string | undefined;\n hasContent: boolean;\n categoryNames: CategoryNameDto[];\n additionalFields: FieldGroupValuesDto[];\n}\n\nexport class BookingBookableTeaserDto extends ItemTeaserDto implements IBookingBookableTeaserDto {\n bookableQuantity!: number;\n\n constructor(data?: IBookingBookableTeaserDto) {\n super(data);\n this._discriminator = \"BookingBookableTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.bookableQuantity = _data[\"bookableQuantity\"];\n }\n }\n\n static override fromJS(data: any): BookingBookableTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingBookableTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"bookableQuantity\"] = this.bookableQuantity;\n super.toJSON(data);\n return data;\n }\n\n clone(): BookingBookableTeaserDto {\n const json = this.toJSON();\n let result = new BookingBookableTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingBookableTeaserDto extends IItemTeaserDto {\n bookableQuantity: number;\n}\n\nexport class Link implements ILink {\n targetId?: number | undefined;\n slug?: string | undefined;\n\n constructor(data?: ILink) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.targetId = _data[\"targetId\"];\n this.slug = _data[\"slug\"];\n }\n }\n\n static fromJS(data: any): Link {\n data = typeof data === 'object' ? data : {};\n let result = new Link();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"targetId\"] = this.targetId;\n data[\"slug\"] = this.slug;\n return data;\n }\n\n clone(): Link {\n const json = this.toJSON();\n let result = new Link();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILink {\n targetId?: number | undefined;\n slug?: string | undefined;\n}\n\nexport class CategoryNameDto implements ICategoryNameDto {\n id!: number;\n name!: string;\n iconUrl?: string | undefined;\n color?: string | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: ICategoryNameDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"CategoryNameDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.iconUrl = _data[\"iconUrl\"];\n this.color = _data[\"color\"];\n }\n }\n\n static fromJS(data: any): CategoryNameDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"CategoryAndModuleNameDto\") {\n let result = new CategoryAndModuleNameDto();\n result.init(data);\n return result;\n }\n let result = new CategoryNameDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"iconUrl\"] = this.iconUrl;\n data[\"color\"] = this.color;\n return data;\n }\n\n clone(): CategoryNameDto {\n const json = this.toJSON();\n let result = new CategoryNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICategoryNameDto {\n id: number;\n name: string;\n iconUrl?: string | undefined;\n color?: string | undefined;\n}\n\nexport class CategoryAndModuleNameDto extends CategoryNameDto implements ICategoryAndModuleNameDto {\n moduleId!: number;\n moduleName!: string;\n\n constructor(data?: ICategoryAndModuleNameDto) {\n super(data);\n this._discriminator = \"CategoryAndModuleNameDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.moduleId = _data[\"moduleId\"];\n this.moduleName = _data[\"moduleName\"];\n }\n }\n\n static override fromJS(data: any): CategoryAndModuleNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new CategoryAndModuleNameDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"moduleId\"] = this.moduleId;\n data[\"moduleName\"] = this.moduleName;\n super.toJSON(data);\n return data;\n }\n\n clone(): CategoryAndModuleNameDto {\n const json = this.toJSON();\n let result = new CategoryAndModuleNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICategoryAndModuleNameDto extends ICategoryNameDto {\n moduleId: number;\n moduleName: string;\n}\n\nexport class FieldGroupValuesDto implements IFieldGroupValuesDto {\n name!: string;\n fieldValues!: FieldValueDto[];\n\n constructor(data?: IFieldGroupValuesDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fieldValues = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"fieldValues\"])) {\n this.fieldValues = [] as any;\n for (let item of _data[\"fieldValues\"])\n this.fieldValues!.push(FieldValueDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): FieldGroupValuesDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldGroupValuesDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.fieldValues)) {\n data[\"fieldValues\"] = [];\n for (let item of this.fieldValues)\n data[\"fieldValues\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): FieldGroupValuesDto {\n const json = this.toJSON();\n let result = new FieldGroupValuesDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldGroupValuesDto {\n name: string;\n fieldValues: FieldValueDto[];\n}\n\nexport class FieldValueDto implements IFieldValueDto {\n field!: FieldDto;\n value?: any | undefined;\n\n constructor(data?: IFieldValueDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.field = new FieldDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.field = _data[\"field\"] ? FieldDto.fromJS(_data[\"field\"]) : new FieldDto();\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): FieldValueDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldValueDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"field\"] = this.field ? this.field.toJSON() : undefined;\n data[\"value\"] = this.value;\n return data;\n }\n\n clone(): FieldValueDto {\n const json = this.toJSON();\n let result = new FieldValueDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldValueDto {\n field: FieldDto;\n value?: any | undefined;\n}\n\nexport class FieldDto implements IFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type!: FieldType;\n name!: string;\n unit?: string | undefined;\n\n constructor(data?: IFieldDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.iconFileUrl = _data[\"iconFileUrl\"];\n this.type = _data[\"type\"];\n this.name = _data[\"name\"];\n this.unit = _data[\"unit\"];\n }\n }\n\n static fromJS(data: any): FieldDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"iconFileUrl\"] = this.iconFileUrl;\n data[\"type\"] = this.type;\n data[\"name\"] = this.name;\n data[\"unit\"] = this.unit;\n return data;\n }\n\n clone(): FieldDto {\n const json = this.toJSON();\n let result = new FieldDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type: FieldType;\n name: string;\n unit?: string | undefined;\n}\n\nexport enum FieldType {\n String = 0,\n Number = 1,\n Boolean = 2,\n DateTime = 3,\n Link = 4,\n Page = 5,\n News = 6,\n Geo = 7,\n Gallery = 8,\n Calendar = 9,\n Database = 10,\n Document = 11,\n}\n\nexport abstract class GeoObjectTeaserDto extends ItemTeaserDto implements IGeoObjectTeaserDto {\n addresses!: Address[];\n openingHours?: TimeSeriesDto | undefined;\n distance?: number | undefined;\n\n constructor(data?: IGeoObjectTeaserDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n }\n this._discriminator = \"GeoObjectTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n this.openingHours = _data[\"openingHours\"] ? TimeSeriesDto.fromJS(_data[\"openingHours\"]) : undefined;\n this.distance = _data[\"distance\"];\n }\n }\n\n static override fromJS(data: any): GeoObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"GeoPlaceTeaserDto\") {\n let result = new GeoPlaceTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteTeaserDto\") {\n let result = new GeoRouteTeaserDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaTeaserDto\") {\n let result = new GeoAreaTeaserDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'GeoObjectTeaserDto' cannot be instantiated.\");\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n data[\"openingHours\"] = this.openingHours ? this.openingHours.toJSON() : undefined;\n data[\"distance\"] = this.distance;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoObjectTeaserDto {\n throw new Error(\"The abstract class 'GeoObjectTeaserDto' cannot be instantiated.\");\n }\n}\n\nexport interface IGeoObjectTeaserDto extends IItemTeaserDto {\n addresses: Address[];\n openingHours?: TimeSeriesDto | undefined;\n distance?: number | undefined;\n}\n\nexport class Address implements IAddress {\n type?: string | undefined;\n name?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n description?: string | undefined;\n room?: string | undefined;\n building?: string | undefined;\n houseNumber?: string | undefined;\n street?: string | undefined;\n zipCode?: string | undefined;\n city?: string | undefined;\n telephone?: string | undefined;\n mobilephone?: string | undefined;\n fax?: string | undefined;\n eMail?: string | undefined;\n web?: string | undefined;\n socials?: SocialLink[] | undefined;\n longitude?: number | undefined;\n latitude?: number | undefined;\n additionalProperties?: AdditionalAddressProperty[] | undefined;\n\n constructor(data?: IAddress) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.name = _data[\"name\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.description = _data[\"description\"];\n this.room = _data[\"room\"];\n this.building = _data[\"building\"];\n this.houseNumber = _data[\"houseNumber\"];\n this.street = _data[\"street\"];\n this.zipCode = _data[\"zipCode\"];\n this.city = _data[\"city\"];\n this.telephone = _data[\"telephone\"];\n this.mobilephone = _data[\"mobilephone\"];\n this.fax = _data[\"fax\"];\n this.eMail = _data[\"eMail\"];\n this.web = _data[\"web\"];\n if (Array.isArray(_data[\"socials\"])) {\n this.socials = [] as any;\n for (let item of _data[\"socials\"])\n this.socials!.push(SocialLink.fromJS(item));\n }\n this.longitude = _data[\"longitude\"];\n this.latitude = _data[\"latitude\"];\n if (Array.isArray(_data[\"additionalProperties\"])) {\n this.additionalProperties = [] as any;\n for (let item of _data[\"additionalProperties\"])\n this.additionalProperties!.push(AdditionalAddressProperty.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): Address {\n data = typeof data === 'object' ? data : {};\n let result = new Address();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"name\"] = this.name;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"description\"] = this.description;\n data[\"room\"] = this.room;\n data[\"building\"] = this.building;\n data[\"houseNumber\"] = this.houseNumber;\n data[\"street\"] = this.street;\n data[\"zipCode\"] = this.zipCode;\n data[\"city\"] = this.city;\n data[\"telephone\"] = this.telephone;\n data[\"mobilephone\"] = this.mobilephone;\n data[\"fax\"] = this.fax;\n data[\"eMail\"] = this.eMail;\n data[\"web\"] = this.web;\n if (Array.isArray(this.socials)) {\n data[\"socials\"] = [];\n for (let item of this.socials)\n data[\"socials\"].push(item.toJSON());\n }\n data[\"longitude\"] = this.longitude;\n data[\"latitude\"] = this.latitude;\n if (Array.isArray(this.additionalProperties)) {\n data[\"additionalProperties\"] = [];\n for (let item of this.additionalProperties)\n data[\"additionalProperties\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): Address {\n const json = this.toJSON();\n let result = new Address();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAddress {\n type?: string | undefined;\n name?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n description?: string | undefined;\n room?: string | undefined;\n building?: string | undefined;\n houseNumber?: string | undefined;\n street?: string | undefined;\n zipCode?: string | undefined;\n city?: string | undefined;\n telephone?: string | undefined;\n mobilephone?: string | undefined;\n fax?: string | undefined;\n eMail?: string | undefined;\n web?: string | undefined;\n socials?: SocialLink[] | undefined;\n longitude?: number | undefined;\n latitude?: number | undefined;\n additionalProperties?: AdditionalAddressProperty[] | undefined;\n}\n\nexport class SocialLink implements ISocialLink {\n type!: SocialLinkType;\n url!: string;\n\n constructor(data?: ISocialLink) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.url = _data[\"url\"];\n }\n }\n\n static fromJS(data: any): SocialLink {\n data = typeof data === 'object' ? data : {};\n let result = new SocialLink();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"url\"] = this.url;\n return data;\n }\n\n clone(): SocialLink {\n const json = this.toJSON();\n let result = new SocialLink();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISocialLink {\n type: SocialLinkType;\n url: string;\n}\n\nexport enum SocialLinkType {\n Facebook = 1,\n Instagram = 2,\n TikTok = 3,\n Twitter = 4,\n Youtube = 5,\n Pinterest = 6,\n LinkedIn = 7,\n Xing = 8,\n TripAdvisor = 9,\n GoogleBusiness = 10,\n WebShop = 11,\n Tumblr = 12,\n Vimeo = 13,\n Kununu = 14,\n}\n\nexport class AdditionalAddressProperty implements IAdditionalAddressProperty {\n label!: string;\n value!: string;\n\n constructor(data?: IAdditionalAddressProperty) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.label = _data[\"label\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): AdditionalAddressProperty {\n data = typeof data === 'object' ? data : {};\n let result = new AdditionalAddressProperty();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"label\"] = this.label;\n data[\"value\"] = this.value;\n return data;\n }\n\n clone(): AdditionalAddressProperty {\n const json = this.toJSON();\n let result = new AdditionalAddressProperty();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAdditionalAddressProperty {\n label: string;\n value: string;\n}\n\nexport class TimeSeriesDto implements ITimeSeriesDto {\n name?: string | undefined;\n validFrom?: string | undefined;\n validUntil?: string | undefined;\n times!: TimeDto[];\n status?: TimeStatusDto | undefined;\n\n constructor(data?: ITimeSeriesDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.times = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.validFrom = _data[\"validFrom\"];\n this.validUntil = _data[\"validUntil\"];\n if (Array.isArray(_data[\"times\"])) {\n this.times = [] as any;\n for (let item of _data[\"times\"])\n this.times!.push(TimeDto.fromJS(item));\n }\n this.status = _data[\"status\"] ? TimeStatusDto.fromJS(_data[\"status\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TimeSeriesDto {\n data = typeof data === 'object' ? data : {};\n let result = new TimeSeriesDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"validFrom\"] = this.validFrom;\n data[\"validUntil\"] = this.validUntil;\n if (Array.isArray(this.times)) {\n data[\"times\"] = [];\n for (let item of this.times)\n data[\"times\"].push(item.toJSON());\n }\n data[\"status\"] = this.status ? this.status.toJSON() : undefined;\n return data;\n }\n\n clone(): TimeSeriesDto {\n const json = this.toJSON();\n let result = new TimeSeriesDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITimeSeriesDto {\n name?: string | undefined;\n validFrom?: string | undefined;\n validUntil?: string | undefined;\n times: TimeDto[];\n status?: TimeStatusDto | undefined;\n}\n\nexport class TimeDto implements ITimeDto {\n day!: string;\n time!: string;\n\n constructor(data?: ITimeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.day = _data[\"day\"];\n this.time = _data[\"time\"];\n }\n }\n\n static fromJS(data: any): TimeDto {\n data = typeof data === 'object' ? data : {};\n let result = new TimeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"day\"] = this.day;\n data[\"time\"] = this.time;\n return data;\n }\n\n clone(): TimeDto {\n const json = this.toJSON();\n let result = new TimeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITimeDto {\n day: string;\n time: string;\n}\n\nexport class TimeStatusDto implements ITimeStatusDto {\n status!: TimeStatus;\n time?: string | undefined;\n\n constructor(data?: ITimeStatusDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.status = _data[\"status\"];\n this.time = _data[\"time\"];\n }\n }\n\n static fromJS(data: any): TimeStatusDto {\n data = typeof data === 'object' ? data : {};\n let result = new TimeStatusDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"status\"] = this.status;\n data[\"time\"] = this.time;\n return data;\n }\n\n clone(): TimeStatusDto {\n const json = this.toJSON();\n let result = new TimeStatusDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITimeStatusDto {\n status: TimeStatus;\n time?: string | undefined;\n}\n\nexport enum TimeStatus {\n Open = 0,\n OpeningSoon = 1,\n ClosingSoon = 2,\n Closed = 3,\n}\n\nexport class GeoPlaceTeaserDto extends GeoObjectTeaserDto implements IGeoPlaceTeaserDto {\n location?: PointDto | undefined;\n\n constructor(data?: IGeoPlaceTeaserDto) {\n super(data);\n this._discriminator = \"GeoPlaceTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoPlaceTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoPlaceTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoPlaceTeaserDto {\n const json = this.toJSON();\n let result = new GeoPlaceTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoPlaceTeaserDto extends IGeoObjectTeaserDto {\n location?: PointDto | undefined;\n}\n\nexport abstract class GeographyDataDto implements IGeographyDataDto {\n navigationUrl?: string | undefined;\n\n protected _discriminator: string;\n\n constructor(data?: IGeographyDataDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"GeographyDataDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.navigationUrl = _data[\"navigationUrl\"];\n }\n }\n\n static fromJS(data: any): GeographyDataDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"PointDto\") {\n let result = new PointDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"LineStringDto\") {\n let result = new LineStringDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"PolygonDto\") {\n let result = new PolygonDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'GeographyDataDto' cannot be instantiated.\");\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"navigationUrl\"] = this.navigationUrl;\n return data;\n }\n\n clone(): GeographyDataDto {\n throw new Error(\"The abstract class 'GeographyDataDto' cannot be instantiated.\");\n }\n}\n\nexport interface IGeographyDataDto {\n navigationUrl?: string | undefined;\n}\n\nexport class PointDto extends GeographyDataDto implements IPointDto {\n longitude?: number | undefined;\n latitude?: number | undefined;\n elevation?: number | undefined;\n\n constructor(data?: IPointDto) {\n super(data);\n this._discriminator = \"PointDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.longitude = _data[\"longitude\"];\n this.latitude = _data[\"latitude\"];\n this.elevation = _data[\"elevation\"];\n }\n }\n\n static override fromJS(data: any): PointDto {\n data = typeof data === 'object' ? data : {};\n let result = new PointDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"longitude\"] = this.longitude;\n data[\"latitude\"] = this.latitude;\n data[\"elevation\"] = this.elevation;\n super.toJSON(data);\n return data;\n }\n\n clone(): PointDto {\n const json = this.toJSON();\n let result = new PointDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPointDto extends IGeographyDataDto {\n longitude?: number | undefined;\n latitude?: number | undefined;\n elevation?: number | undefined;\n}\n\nexport class LineStringDto extends GeographyDataDto implements ILineStringDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n\n constructor(data?: ILineStringDto) {\n super(data);\n this._discriminator = \"LineStringDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"points\"])) {\n this.points = [] as any;\n for (let item of _data[\"points\"])\n this.points!.push(PointDto.fromJS(item));\n }\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n }\n }\n\n static override fromJS(data: any): LineStringDto {\n data = typeof data === 'object' ? data : {};\n let result = new LineStringDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.points)) {\n data[\"points\"] = [];\n for (let item of this.points)\n data[\"points\"].push(item.toJSON());\n }\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n super.toJSON(data);\n return data;\n }\n\n clone(): LineStringDto {\n const json = this.toJSON();\n let result = new LineStringDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILineStringDto extends IGeographyDataDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n}\n\nexport class PolygonDto extends GeographyDataDto implements IPolygonDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n fill?: boolean | undefined;\n\n constructor(data?: IPolygonDto) {\n super(data);\n this._discriminator = \"PolygonDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"points\"])) {\n this.points = [] as any;\n for (let item of _data[\"points\"])\n this.points!.push(PointDto.fromJS(item));\n }\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.fill = _data[\"fill\"];\n }\n }\n\n static override fromJS(data: any): PolygonDto {\n data = typeof data === 'object' ? data : {};\n let result = new PolygonDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.points)) {\n data[\"points\"] = [];\n for (let item of this.points)\n data[\"points\"].push(item.toJSON());\n }\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"fill\"] = this.fill;\n super.toJSON(data);\n return data;\n }\n\n clone(): PolygonDto {\n const json = this.toJSON();\n let result = new PolygonDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPolygonDto extends IGeographyDataDto {\n points?: PointDto[] | undefined;\n color?: string | undefined;\n opacity?: number | undefined;\n weight?: number | undefined;\n dashArray?: string | undefined;\n fill?: boolean | undefined;\n}\n\nexport class GeoRouteTeaserDto extends GeoObjectTeaserDto implements IGeoRouteTeaserDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n\n constructor(data?: IGeoRouteTeaserDto) {\n super(data);\n this._discriminator = \"GeoRouteTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.route = _data[\"route\"] ? LineStringDto.fromJS(_data[\"route\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoRouteTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoRouteTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"route\"] = this.route ? this.route.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoRouteTeaserDto {\n const json = this.toJSON();\n let result = new GeoRouteTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoRouteTeaserDto extends IGeoObjectTeaserDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n}\n\nexport class GeoAreaTeaserDto extends GeoObjectTeaserDto implements IGeoAreaTeaserDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n fill!: boolean;\n area?: PolygonDto | undefined;\n\n constructor(data?: IGeoAreaTeaserDto) {\n super(data);\n this._discriminator = \"GeoAreaTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.fill = _data[\"fill\"];\n this.area = _data[\"area\"] ? PolygonDto.fromJS(_data[\"area\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoAreaTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoAreaTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"fill\"] = this.fill;\n data[\"area\"] = this.area ? this.area.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoAreaTeaserDto {\n const json = this.toJSON();\n let result = new GeoAreaTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoAreaTeaserDto extends IGeoObjectTeaserDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n fill: boolean;\n area?: PolygonDto | undefined;\n}\n\nexport class NewsArticleTeaserDto extends ItemTeaserDto implements INewsArticleTeaserDto {\n\n constructor(data?: INewsArticleTeaserDto) {\n super(data);\n this._discriminator = \"NewsArticleTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): NewsArticleTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsArticleTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): NewsArticleTeaserDto {\n const json = this.toJSON();\n let result = new NewsArticleTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsArticleTeaserDto extends IItemTeaserDto {\n}\n\nexport class GalleryAlbumTeaserDto extends ItemTeaserDto implements IGalleryAlbumTeaserDto {\n pictureCount!: number;\n\n constructor(data?: IGalleryAlbumTeaserDto) {\n super(data);\n this._discriminator = \"GalleryAlbumTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.pictureCount = _data[\"pictureCount\"];\n }\n }\n\n static override fromJS(data: any): GalleryAlbumTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryAlbumTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pictureCount\"] = this.pictureCount;\n super.toJSON(data);\n return data;\n }\n\n clone(): GalleryAlbumTeaserDto {\n const json = this.toJSON();\n let result = new GalleryAlbumTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryAlbumTeaserDto extends IItemTeaserDto {\n pictureCount: number;\n}\n\nexport class ProblemDefectTeaserDto extends ItemTeaserDto implements IProblemDefectTeaserDto {\n address?: Address | undefined;\n location?: PointDto | undefined;\n status!: DefectStatus;\n\n constructor(data?: IProblemDefectTeaserDto) {\n super(data);\n this._discriminator = \"ProblemDefectTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static override fromJS(data: any): ProblemDefectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemDefectTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n data[\"status\"] = this.status;\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemDefectTeaserDto {\n const json = this.toJSON();\n let result = new ProblemDefectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemDefectTeaserDto extends IItemTeaserDto {\n address?: Address | undefined;\n location?: PointDto | undefined;\n status: DefectStatus;\n}\n\nexport enum DefectStatus {\n New = 0,\n InProgress = 1,\n WontFix = 2,\n Done = 3,\n}\n\nexport class CalendarEventTeaserDto extends ItemTeaserDto implements ICalendarEventTeaserDto {\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n addresses!: Address[];\n\n constructor(data?: ICalendarEventTeaserDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n }\n this._discriminator = \"CalendarEventTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): CalendarEventTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarEventTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fromDate\"] = this.fromDate ? formatDate(this.fromDate) : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? formatDate(this.untilDate) : undefined;\n data[\"untilTime\"] = this.untilTime;\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): CalendarEventTeaserDto {\n const json = this.toJSON();\n let result = new CalendarEventTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarEventTeaserDto extends IItemTeaserDto {\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n addresses: Address[];\n}\n\nexport class DirectoryFormTeaserDto extends ItemTeaserDto implements IDirectoryFormTeaserDto {\n url?: string | undefined;\n\n constructor(data?: IDirectoryFormTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryFormTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.url = _data[\"url\"];\n }\n }\n\n static override fromJS(data: any): DirectoryFormTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryFormTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"url\"] = this.url;\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryFormTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryFormTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryFormTeaserDto extends IItemTeaserDto {\n url?: string | undefined;\n}\n\nexport class DirectoryPersonTeaserDto extends ItemTeaserDto implements IDirectoryPersonTeaserDto {\n function?: Node | undefined;\n position?: Node | undefined;\n communication?: Address | undefined;\n\n constructor(data?: IDirectoryPersonTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryPersonTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.function = _data[\"function\"] ? Node.fromJS(_data[\"function\"]) : undefined;\n this.position = _data[\"position\"] ? Node.fromJS(_data[\"position\"]) : undefined;\n this.communication = _data[\"communication\"] ? Address.fromJS(_data[\"communication\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): DirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"function\"] = this.function ? this.function.toJSON() : undefined;\n data[\"position\"] = this.position ? this.position.toJSON() : undefined;\n data[\"communication\"] = this.communication ? this.communication.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryPersonTeaserDto extends IItemTeaserDto {\n function?: Node | undefined;\n position?: Node | undefined;\n communication?: Address | undefined;\n}\n\nexport class DirectoryServiceTeaserDto extends ItemTeaserDto implements IDirectoryServiceTeaserDto {\n processes!: DirectoryProcessTeaserDto[];\n\n constructor(data?: IDirectoryServiceTeaserDto) {\n super(data);\n if (!data) {\n this.processes = [];\n }\n this._discriminator = \"DirectoryServiceTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"processes\"])) {\n this.processes = [] as any;\n for (let item of _data[\"processes\"])\n this.processes!.push(DirectoryProcessTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryServiceTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryServiceTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.processes)) {\n data[\"processes\"] = [];\n for (let item of this.processes)\n data[\"processes\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryServiceTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryServiceTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryServiceTeaserDto extends IItemTeaserDto {\n processes: DirectoryProcessTeaserDto[];\n}\n\nexport class DirectoryProcessTeaserDto extends ItemTeaserDto implements IDirectoryProcessTeaserDto {\n\n constructor(data?: IDirectoryProcessTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryProcessTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DirectoryProcessTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryProcessTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryProcessTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryProcessTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryProcessTeaserDto extends IItemTeaserDto {\n}\n\nexport class DirectoryOrgUnitTeaserDto extends ItemTeaserDto implements IDirectoryOrgUnitTeaserDto {\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n\n constructor(data?: IDirectoryOrgUnitTeaserDto) {\n super(data);\n this._discriminator = \"DirectoryOrgUnitTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.openingHours = _data[\"openingHours\"] ? TimeSeriesDto.fromJS(_data[\"openingHours\"]) : undefined;\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.communication = _data[\"communication\"] ? Address.fromJS(_data[\"communication\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): DirectoryOrgUnitTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryOrgUnitTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"openingHours\"] = this.openingHours ? this.openingHours.toJSON() : undefined;\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"communication\"] = this.communication ? this.communication.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryOrgUnitTeaserDto {\n const json = this.toJSON();\n let result = new DirectoryOrgUnitTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryOrgUnitTeaserDto extends IItemTeaserDto {\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n}\n\nexport class DirectorySituationTeaserDto extends ItemTeaserDto implements IDirectorySituationTeaserDto {\n\n constructor(data?: IDirectorySituationTeaserDto) {\n super(data);\n this._discriminator = \"DirectorySituationTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): DirectorySituationTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectorySituationTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectorySituationTeaserDto {\n const json = this.toJSON();\n let result = new DirectorySituationTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectorySituationTeaserDto extends IItemTeaserDto {\n}\n\nexport class DatabaseObjectTeaserDto extends ItemTeaserDto implements IDatabaseObjectTeaserDto {\n databaseObjectTypeId!: number;\n fields!: FieldGroupValuesDto[];\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n\n constructor(data?: IDatabaseObjectTeaserDto) {\n super(data);\n if (!data) {\n this.fields = [];\n }\n this._discriminator = \"DatabaseObjectTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.databaseObjectTypeId = _data[\"databaseObjectTypeId\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(FieldGroupValuesDto.fromJS(item));\n }\n this.openingHours = _data[\"openingHours\"] ? TimeSeriesDto.fromJS(_data[\"openingHours\"]) : undefined;\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.communication = _data[\"communication\"] ? Address.fromJS(_data[\"communication\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): DatabaseObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"databaseObjectTypeId\"] = this.databaseObjectTypeId;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n data[\"openingHours\"] = this.openingHours ? this.openingHours.toJSON() : undefined;\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"communication\"] = this.communication ? this.communication.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): DatabaseObjectTeaserDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTeaserDto extends IItemTeaserDto {\n databaseObjectTypeId: number;\n fields: FieldGroupValuesDto[];\n openingHours?: TimeSeriesDto | undefined;\n address?: Address | undefined;\n communication?: Address | undefined;\n}\n\nexport class SearchResultDto extends ItemTeaserDto implements ISearchResultDto {\n\n constructor(data?: ISearchResultDto) {\n super(data);\n this._discriminator = \"SearchResultDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): SearchResultDto {\n data = typeof data === 'object' ? data : {};\n let result = new SearchResultDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): SearchResultDto {\n const json = this.toJSON();\n let result = new SearchResultDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchResultDto extends IItemTeaserDto {\n}\n\nexport enum SortType {\n Random = \"random\",\n Alphabetic = \"alphabetic\",\n Distance = \"distance\",\n Popularity = \"popularity\",\n Time = \"time\",\n}\n\nexport enum SortDirection {\n Ascending = \"ascending\",\n Descending = \"descending\",\n}\n\nexport enum CategoryFilterMode {\n Or = 0,\n And = 1,\n}\n\nexport class ItemDto implements IItemDto {\n id!: number;\n name!: string;\n teaserText?: string | undefined;\n teaserPictureUrl?: string | undefined;\n document?: Node | undefined;\n push!: boolean;\n livePush!: boolean;\n categoryNames!: CategoryNameDto[];\n created!: Date;\n lastModified?: Date | undefined;\n additionalFields!: FieldGroupValuesDto[];\n\n protected _discriminator: string;\n\n constructor(data?: IItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.categoryNames = [];\n this.additionalFields = [];\n }\n this._discriminator = \"ItemDto\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.teaserText = _data[\"teaserText\"];\n this.teaserPictureUrl = _data[\"teaserPictureUrl\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : undefined;\n this.push = _data[\"push\"];\n this.livePush = _data[\"livePush\"];\n if (Array.isArray(_data[\"categoryNames\"])) {\n this.categoryNames = [] as any;\n for (let item of _data[\"categoryNames\"])\n this.categoryNames!.push(CategoryNameDto.fromJS(item));\n }\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : undefined;\n this.lastModified = _data[\"lastModified\"] ? new Date(_data[\"lastModified\"].toString()) : undefined;\n if (Array.isArray(_data[\"additionalFields\"])) {\n this.additionalFields = [] as any;\n for (let item of _data[\"additionalFields\"])\n this.additionalFields!.push(FieldGroupValuesDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ItemDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"BookingBookableDto\") {\n let result = new BookingBookableDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoObjectDto\") {\n throw new Error(\"The abstract class 'GeoObjectDto' cannot be instantiated.\");\n }\n if (data[\"discriminator\"] === \"GeoPlaceDto\") {\n let result = new GeoPlaceDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteDto\") {\n let result = new GeoRouteDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaDto\") {\n let result = new GeoAreaDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"NewsArticleDto\") {\n let result = new NewsArticleDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GalleryAlbumDto\") {\n let result = new GalleryAlbumDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemCommentDto\") {\n let result = new ProblemCommentDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ProblemDefectDto\") {\n let result = new ProblemDefectDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"CalendarEventDto\") {\n let result = new CalendarEventDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DatabaseObjectDto\") {\n let result = new DatabaseObjectDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryOrgUnitDto\") {\n let result = new DirectoryOrgUnitDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryPersonDto\") {\n let result = new DirectoryPersonDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectoryServiceDto\") {\n let result = new DirectoryServiceDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"DirectorySituationDto\") {\n let result = new DirectorySituationDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"InteractionFormDto\") {\n let result = new InteractionFormDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"InteractionSurveyDto\") {\n let result = new InteractionSurveyDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"PublicProblemDefectDetailsDto\") {\n let result = new PublicProblemDefectDetailsDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopReviewDto\") {\n let result = new ShopReviewDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"ShopProductDto\") {\n let result = new ShopProductDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"PublicShopProductDetailsDto\") {\n let result = new PublicShopProductDetailsDto();\n result.init(data);\n return result;\n }\n let result = new ItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"discriminator\"] = this._discriminator;\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"teaserText\"] = this.teaserText;\n data[\"teaserPictureUrl\"] = this.teaserPictureUrl;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n data[\"push\"] = this.push;\n data[\"livePush\"] = this.livePush;\n if (Array.isArray(this.categoryNames)) {\n data[\"categoryNames\"] = [];\n for (let item of this.categoryNames)\n data[\"categoryNames\"].push(item.toJSON());\n }\n data[\"created\"] = this.created ? this.created.toISOString() : undefined;\n data[\"lastModified\"] = this.lastModified ? this.lastModified.toISOString() : undefined;\n if (Array.isArray(this.additionalFields)) {\n data[\"additionalFields\"] = [];\n for (let item of this.additionalFields)\n data[\"additionalFields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): ItemDto {\n const json = this.toJSON();\n let result = new ItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemDto {\n id: number;\n name: string;\n teaserText?: string | undefined;\n teaserPictureUrl?: string | undefined;\n document?: Node | undefined;\n push: boolean;\n livePush: boolean;\n categoryNames: CategoryNameDto[];\n created: Date;\n lastModified?: Date | undefined;\n additionalFields: FieldGroupValuesDto[];\n}\n\nexport class BookingBookableDto extends ItemDto implements IBookingBookableDto {\n bookableQuantity!: number;\n\n constructor(data?: IBookingBookableDto) {\n super(data);\n this._discriminator = \"BookingBookableDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.bookableQuantity = _data[\"bookableQuantity\"];\n }\n }\n\n static override fromJS(data: any): BookingBookableDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingBookableDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"bookableQuantity\"] = this.bookableQuantity;\n super.toJSON(data);\n return data;\n }\n\n clone(): BookingBookableDto {\n const json = this.toJSON();\n let result = new BookingBookableDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingBookableDto extends IItemDto {\n bookableQuantity: number;\n}\n\nexport abstract class GeoObjectDto extends ItemDto implements IGeoObjectDto {\n addresses!: Address[];\n openingHours!: TimeSeriesDto[];\n\n constructor(data?: IGeoObjectDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n this.openingHours = [];\n }\n this._discriminator = \"GeoObjectDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"openingHours\"])) {\n this.openingHours = [] as any;\n for (let item of _data[\"openingHours\"])\n this.openingHours!.push(TimeSeriesDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): GeoObjectDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"GeoPlaceDto\") {\n let result = new GeoPlaceDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoRouteDto\") {\n let result = new GeoRouteDto();\n result.init(data);\n return result;\n }\n if (data[\"discriminator\"] === \"GeoAreaDto\") {\n let result = new GeoAreaDto();\n result.init(data);\n return result;\n }\n throw new Error(\"The abstract class 'GeoObjectDto' cannot be instantiated.\");\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.openingHours)) {\n data[\"openingHours\"] = [];\n for (let item of this.openingHours)\n data[\"openingHours\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoObjectDto {\n throw new Error(\"The abstract class 'GeoObjectDto' cannot be instantiated.\");\n }\n}\n\nexport interface IGeoObjectDto extends IItemDto {\n addresses: Address[];\n openingHours: TimeSeriesDto[];\n}\n\nexport class GeoPlaceDto extends GeoObjectDto implements IGeoPlaceDto {\n location?: PointDto | undefined;\n\n constructor(data?: IGeoPlaceDto) {\n super(data);\n this._discriminator = \"GeoPlaceDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoPlaceDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoPlaceDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoPlaceDto {\n const json = this.toJSON();\n let result = new GeoPlaceDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoPlaceDto extends IGeoObjectDto {\n location?: PointDto | undefined;\n}\n\nexport class GeoRouteDto extends GeoObjectDto implements IGeoRouteDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n\n constructor(data?: IGeoRouteDto) {\n super(data);\n this._discriminator = \"GeoRouteDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.route = _data[\"route\"] ? LineStringDto.fromJS(_data[\"route\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoRouteDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoRouteDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"route\"] = this.route ? this.route.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoRouteDto {\n const json = this.toJSON();\n let result = new GeoRouteDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoRouteDto extends IGeoObjectDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n route?: LineStringDto | undefined;\n}\n\nexport class GeoAreaDto extends GeoObjectDto implements IGeoAreaDto {\n color!: string;\n opacity!: number;\n weight!: number;\n dashArray?: string | undefined;\n fill!: boolean;\n area?: PolygonDto | undefined;\n\n constructor(data?: IGeoAreaDto) {\n super(data);\n this._discriminator = \"GeoAreaDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.color = _data[\"color\"];\n this.opacity = _data[\"opacity\"];\n this.weight = _data[\"weight\"];\n this.dashArray = _data[\"dashArray\"];\n this.fill = _data[\"fill\"];\n this.area = _data[\"area\"] ? PolygonDto.fromJS(_data[\"area\"]) : undefined;\n }\n }\n\n static override fromJS(data: any): GeoAreaDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoAreaDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"color\"] = this.color;\n data[\"opacity\"] = this.opacity;\n data[\"weight\"] = this.weight;\n data[\"dashArray\"] = this.dashArray;\n data[\"fill\"] = this.fill;\n data[\"area\"] = this.area ? this.area.toJSON() : undefined;\n super.toJSON(data);\n return data;\n }\n\n clone(): GeoAreaDto {\n const json = this.toJSON();\n let result = new GeoAreaDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoAreaDto extends IGeoObjectDto {\n color: string;\n opacity: number;\n weight: number;\n dashArray?: string | undefined;\n fill: boolean;\n area?: PolygonDto | undefined;\n}\n\nexport class NewsArticleDto extends ItemDto implements INewsArticleDto {\n readingTime!: number;\n shareLink?: string | undefined;\n\n constructor(data?: INewsArticleDto) {\n super(data);\n this._discriminator = \"NewsArticleDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.readingTime = _data[\"readingTime\"];\n this.shareLink = _data[\"shareLink\"];\n }\n }\n\n static override fromJS(data: any): NewsArticleDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsArticleDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"readingTime\"] = this.readingTime;\n data[\"shareLink\"] = this.shareLink;\n super.toJSON(data);\n return data;\n }\n\n clone(): NewsArticleDto {\n const json = this.toJSON();\n let result = new NewsArticleDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsArticleDto extends IItemDto {\n readingTime: number;\n shareLink?: string | undefined;\n}\n\nexport class GalleryAlbumDto extends ItemDto implements IGalleryAlbumDto {\n pictures!: GalleryImage[];\n\n constructor(data?: IGalleryAlbumDto) {\n super(data);\n if (!data) {\n this.pictures = [];\n }\n this._discriminator = \"GalleryAlbumDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): GalleryAlbumDto {\n data = typeof data === 'object' ? data : {};\n let result = new GalleryAlbumDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): GalleryAlbumDto {\n const json = this.toJSON();\n let result = new GalleryAlbumDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGalleryAlbumDto extends IItemDto {\n pictures: GalleryImage[];\n}\n\nexport class ProblemDefectDto extends ItemDto implements IProblemDefectDto {\n creator!: string;\n address?: Address | undefined;\n comments!: ProblemCommentDto[];\n pictures!: GalleryImage[];\n location?: PointDto | undefined;\n status!: DefectStatus;\n\n constructor(data?: IProblemDefectDto) {\n super(data);\n if (!data) {\n this.comments = [];\n this.pictures = [];\n }\n this._discriminator = \"ProblemDefectDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.creator = _data[\"creator\"];\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n if (Array.isArray(_data[\"comments\"])) {\n this.comments = [] as any;\n for (let item of _data[\"comments\"])\n this.comments!.push(ProblemCommentDto.fromJS(item));\n }\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static override fromJS(data: any): ProblemDefectDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"PublicProblemDefectDetailsDto\") {\n let result = new PublicProblemDefectDetailsDto();\n result.init(data);\n return result;\n }\n let result = new ProblemDefectDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"creator\"] = this.creator;\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n if (Array.isArray(this.comments)) {\n data[\"comments\"] = [];\n for (let item of this.comments)\n data[\"comments\"].push(item.toJSON());\n }\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n data[\"status\"] = this.status;\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemDefectDto {\n const json = this.toJSON();\n let result = new ProblemDefectDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemDefectDto extends IItemDto {\n creator: string;\n address?: Address | undefined;\n comments: ProblemCommentDto[];\n pictures: GalleryImage[];\n location?: PointDto | undefined;\n status: DefectStatus;\n}\n\nexport class ProblemCommentDto extends ItemDto implements IProblemCommentDto {\n creator!: string;\n createdByCurrentUser!: boolean;\n createdInBackend!: boolean;\n\n constructor(data?: IProblemCommentDto) {\n super(data);\n this._discriminator = \"ProblemCommentDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.creator = _data[\"creator\"];\n this.createdByCurrentUser = _data[\"createdByCurrentUser\"];\n this.createdInBackend = _data[\"createdInBackend\"];\n }\n }\n\n static override fromJS(data: any): ProblemCommentDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemCommentDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"creator\"] = this.creator;\n data[\"createdByCurrentUser\"] = this.createdByCurrentUser;\n data[\"createdInBackend\"] = this.createdInBackend;\n super.toJSON(data);\n return data;\n }\n\n clone(): ProblemCommentDto {\n const json = this.toJSON();\n let result = new ProblemCommentDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemCommentDto extends IItemDto {\n creator: string;\n createdByCurrentUser: boolean;\n createdInBackend: boolean;\n}\n\nexport class CalendarEventDto extends ItemDto implements ICalendarEventDto {\n shareLink?: string | undefined;\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n addresses!: Address[];\n\n constructor(data?: ICalendarEventDto) {\n super(data);\n if (!data) {\n this.addresses = [];\n }\n this._discriminator = \"CalendarEventDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.shareLink = _data[\"shareLink\"];\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): CalendarEventDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarEventDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"shareLink\"] = this.shareLink;\n data[\"fromDate\"] = this.fromDate ? formatDate(this.fromDate) : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? formatDate(this.untilDate) : undefined;\n data[\"untilTime\"] = this.untilTime;\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): CalendarEventDto {\n const json = this.toJSON();\n let result = new CalendarEventDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarEventDto extends IItemDto {\n shareLink?: string | undefined;\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n addresses: Address[];\n}\n\nexport class DatabaseObjectDto extends ItemDto implements IDatabaseObjectDto {\n databaseObjectTypeId!: number;\n fields!: FieldGroupValuesDto[];\n communication?: Address[] | undefined;\n addresses?: Address[] | undefined;\n openingHours?: TimeSeriesDto[] | undefined;\n\n constructor(data?: IDatabaseObjectDto) {\n super(data);\n if (!data) {\n this.fields = [];\n }\n this._discriminator = \"DatabaseObjectDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.databaseObjectTypeId = _data[\"databaseObjectTypeId\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(FieldGroupValuesDto.fromJS(item));\n }\n if (Array.isArray(_data[\"communication\"])) {\n this.communication = [] as any;\n for (let item of _data[\"communication\"])\n this.communication!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"openingHours\"])) {\n this.openingHours = [] as any;\n for (let item of _data[\"openingHours\"])\n this.openingHours!.push(TimeSeriesDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DatabaseObjectDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"databaseObjectTypeId\"] = this.databaseObjectTypeId;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n if (Array.isArray(this.communication)) {\n data[\"communication\"] = [];\n for (let item of this.communication)\n data[\"communication\"].push(item.toJSON());\n }\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.openingHours)) {\n data[\"openingHours\"] = [];\n for (let item of this.openingHours)\n data[\"openingHours\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DatabaseObjectDto {\n const json = this.toJSON();\n let result = new DatabaseObjectDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectDto extends IItemDto {\n databaseObjectTypeId: number;\n fields: FieldGroupValuesDto[];\n communication?: Address[] | undefined;\n addresses?: Address[] | undefined;\n openingHours?: TimeSeriesDto[] | undefined;\n}\n\nexport class DirectoryOrgUnitDto extends ItemDto implements IDirectoryOrgUnitDto {\n communication!: Address[];\n addresses!: Address[];\n openingHours!: TimeSeriesDto[];\n persons!: DirectoryPersonTeaserDto[];\n subOrgUnits!: DirectoryOrgUnitTeaserDto[];\n services!: DirectoryServiceTeaserDto[];\n\n constructor(data?: IDirectoryOrgUnitDto) {\n super(data);\n if (!data) {\n this.communication = [];\n this.addresses = [];\n this.openingHours = [];\n this.persons = [];\n this.subOrgUnits = [];\n this.services = [];\n }\n this._discriminator = \"DirectoryOrgUnitDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"communication\"])) {\n this.communication = [] as any;\n for (let item of _data[\"communication\"])\n this.communication!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"openingHours\"])) {\n this.openingHours = [] as any;\n for (let item of _data[\"openingHours\"])\n this.openingHours!.push(TimeSeriesDto.fromJS(item));\n }\n if (Array.isArray(_data[\"persons\"])) {\n this.persons = [] as any;\n for (let item of _data[\"persons\"])\n this.persons!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"subOrgUnits\"])) {\n this.subOrgUnits = [] as any;\n for (let item of _data[\"subOrgUnits\"])\n this.subOrgUnits!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"services\"])) {\n this.services = [] as any;\n for (let item of _data[\"services\"])\n this.services!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryOrgUnitDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryOrgUnitDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.communication)) {\n data[\"communication\"] = [];\n for (let item of this.communication)\n data[\"communication\"].push(item.toJSON());\n }\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.openingHours)) {\n data[\"openingHours\"] = [];\n for (let item of this.openingHours)\n data[\"openingHours\"].push(item.toJSON());\n }\n if (Array.isArray(this.persons)) {\n data[\"persons\"] = [];\n for (let item of this.persons)\n data[\"persons\"].push(item.toJSON());\n }\n if (Array.isArray(this.subOrgUnits)) {\n data[\"subOrgUnits\"] = [];\n for (let item of this.subOrgUnits)\n data[\"subOrgUnits\"].push(item.toJSON());\n }\n if (Array.isArray(this.services)) {\n data[\"services\"] = [];\n for (let item of this.services)\n data[\"services\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryOrgUnitDto {\n const json = this.toJSON();\n let result = new DirectoryOrgUnitDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryOrgUnitDto extends IItemDto {\n communication: Address[];\n addresses: Address[];\n openingHours: TimeSeriesDto[];\n persons: DirectoryPersonTeaserDto[];\n subOrgUnits: DirectoryOrgUnitTeaserDto[];\n services: DirectoryServiceTeaserDto[];\n}\n\nexport class DirectoryPersonDto extends ItemDto implements IDirectoryPersonDto {\n salutation?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n function?: Node | undefined;\n position?: Node | undefined;\n communication!: Address[];\n addresses!: Address[];\n officeHours!: TimeSeriesDto[];\n orgUnits!: DirectoryOrgUnitTeaserDto[];\n services!: DirectoryServiceTeaserDto[];\n\n constructor(data?: IDirectoryPersonDto) {\n super(data);\n if (!data) {\n this.communication = [];\n this.addresses = [];\n this.officeHours = [];\n this.orgUnits = [];\n this.services = [];\n }\n this._discriminator = \"DirectoryPersonDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.salutation = _data[\"salutation\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.function = _data[\"function\"] ? Node.fromJS(_data[\"function\"]) : undefined;\n this.position = _data[\"position\"] ? Node.fromJS(_data[\"position\"]) : undefined;\n if (Array.isArray(_data[\"communication\"])) {\n this.communication = [] as any;\n for (let item of _data[\"communication\"])\n this.communication!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"addresses\"])) {\n this.addresses = [] as any;\n for (let item of _data[\"addresses\"])\n this.addresses!.push(Address.fromJS(item));\n }\n if (Array.isArray(_data[\"officeHours\"])) {\n this.officeHours = [] as any;\n for (let item of _data[\"officeHours\"])\n this.officeHours!.push(TimeSeriesDto.fromJS(item));\n }\n if (Array.isArray(_data[\"orgUnits\"])) {\n this.orgUnits = [] as any;\n for (let item of _data[\"orgUnits\"])\n this.orgUnits!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"services\"])) {\n this.services = [] as any;\n for (let item of _data[\"services\"])\n this.services!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryPersonDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryPersonDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"salutation\"] = this.salutation;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"function\"] = this.function ? this.function.toJSON() : undefined;\n data[\"position\"] = this.position ? this.position.toJSON() : undefined;\n if (Array.isArray(this.communication)) {\n data[\"communication\"] = [];\n for (let item of this.communication)\n data[\"communication\"].push(item.toJSON());\n }\n if (Array.isArray(this.addresses)) {\n data[\"addresses\"] = [];\n for (let item of this.addresses)\n data[\"addresses\"].push(item.toJSON());\n }\n if (Array.isArray(this.officeHours)) {\n data[\"officeHours\"] = [];\n for (let item of this.officeHours)\n data[\"officeHours\"].push(item.toJSON());\n }\n if (Array.isArray(this.orgUnits)) {\n data[\"orgUnits\"] = [];\n for (let item of this.orgUnits)\n data[\"orgUnits\"].push(item.toJSON());\n }\n if (Array.isArray(this.services)) {\n data[\"services\"] = [];\n for (let item of this.services)\n data[\"services\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryPersonDto {\n const json = this.toJSON();\n let result = new DirectoryPersonDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryPersonDto extends IItemDto {\n salutation?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n function?: Node | undefined;\n position?: Node | undefined;\n communication: Address[];\n addresses: Address[];\n officeHours: TimeSeriesDto[];\n orgUnits: DirectoryOrgUnitTeaserDto[];\n services: DirectoryServiceTeaserDto[];\n}\n\nexport class DirectoryServiceDto extends ItemDto implements IDirectoryServiceDto {\n situations!: DirectorySituationTeaserDto[];\n persons!: DirectoryPersonTeaserDto[];\n orgUnits!: DirectoryOrgUnitTeaserDto[];\n forms!: DirectoryFormTeaserDto[];\n processes!: DirectoryProcessTeaserDto[];\n\n constructor(data?: IDirectoryServiceDto) {\n super(data);\n if (!data) {\n this.situations = [];\n this.persons = [];\n this.orgUnits = [];\n this.forms = [];\n this.processes = [];\n }\n this._discriminator = \"DirectoryServiceDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"situations\"])) {\n this.situations = [] as any;\n for (let item of _data[\"situations\"])\n this.situations!.push(DirectorySituationTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"persons\"])) {\n this.persons = [] as any;\n for (let item of _data[\"persons\"])\n this.persons!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"orgUnits\"])) {\n this.orgUnits = [] as any;\n for (let item of _data[\"orgUnits\"])\n this.orgUnits!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"forms\"])) {\n this.forms = [] as any;\n for (let item of _data[\"forms\"])\n this.forms!.push(DirectoryFormTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"processes\"])) {\n this.processes = [] as any;\n for (let item of _data[\"processes\"])\n this.processes!.push(DirectoryProcessTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectoryServiceDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryServiceDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.situations)) {\n data[\"situations\"] = [];\n for (let item of this.situations)\n data[\"situations\"].push(item.toJSON());\n }\n if (Array.isArray(this.persons)) {\n data[\"persons\"] = [];\n for (let item of this.persons)\n data[\"persons\"].push(item.toJSON());\n }\n if (Array.isArray(this.orgUnits)) {\n data[\"orgUnits\"] = [];\n for (let item of this.orgUnits)\n data[\"orgUnits\"].push(item.toJSON());\n }\n if (Array.isArray(this.forms)) {\n data[\"forms\"] = [];\n for (let item of this.forms)\n data[\"forms\"].push(item.toJSON());\n }\n if (Array.isArray(this.processes)) {\n data[\"processes\"] = [];\n for (let item of this.processes)\n data[\"processes\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectoryServiceDto {\n const json = this.toJSON();\n let result = new DirectoryServiceDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryServiceDto extends IItemDto {\n situations: DirectorySituationTeaserDto[];\n persons: DirectoryPersonTeaserDto[];\n orgUnits: DirectoryOrgUnitTeaserDto[];\n forms: DirectoryFormTeaserDto[];\n processes: DirectoryProcessTeaserDto[];\n}\n\nexport class DirectorySituationDto extends ItemDto implements IDirectorySituationDto {\n services!: DirectoryServiceTeaserDto[];\n subSituations!: DirectorySituationTeaserDto[];\n\n constructor(data?: IDirectorySituationDto) {\n super(data);\n if (!data) {\n this.services = [];\n this.subSituations = [];\n }\n this._discriminator = \"DirectorySituationDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"services\"])) {\n this.services = [] as any;\n for (let item of _data[\"services\"])\n this.services!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n if (Array.isArray(_data[\"subSituations\"])) {\n this.subSituations = [] as any;\n for (let item of _data[\"subSituations\"])\n this.subSituations!.push(DirectorySituationTeaserDto.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): DirectorySituationDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectorySituationDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.services)) {\n data[\"services\"] = [];\n for (let item of this.services)\n data[\"services\"].push(item.toJSON());\n }\n if (Array.isArray(this.subSituations)) {\n data[\"subSituations\"] = [];\n for (let item of this.subSituations)\n data[\"subSituations\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): DirectorySituationDto {\n const json = this.toJSON();\n let result = new DirectorySituationDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectorySituationDto extends IItemDto {\n services: DirectoryServiceTeaserDto[];\n subSituations: DirectorySituationTeaserDto[];\n}\n\nexport class InteractionFormDto extends ItemDto implements IInteractionFormDto {\n configuration!: InteractionFormConfiguration;\n formConfirmationHtml?: string | undefined;\n\n constructor(data?: IInteractionFormDto) {\n super(data);\n if (!data) {\n this.configuration = new InteractionFormConfiguration();\n }\n this._discriminator = \"InteractionFormDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.configuration = _data[\"configuration\"] ? InteractionFormConfiguration.fromJS(_data[\"configuration\"]) : new InteractionFormConfiguration();\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static override fromJS(data: any): InteractionFormDto {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n super.toJSON(data);\n return data;\n }\n\n clone(): InteractionFormDto {\n const json = this.toJSON();\n let result = new InteractionFormDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormDto extends IItemDto {\n configuration: InteractionFormConfiguration;\n formConfirmationHtml?: string | undefined;\n}\n\nexport class InteractionFormConfiguration implements IInteractionFormConfiguration {\n recipientEmailAddress!: string;\n recipientEmailSubject!: string;\n recipientEmailDocument!: Node;\n senderEmailAddressFieldId?: string | undefined;\n senderEmailSubject!: string;\n senderEmailDocument!: Node;\n confirmationPageDocument!: Node;\n pages!: InteractionFormPage[];\n fields!: { [key: string]: InteractionFormField; };\n\n constructor(data?: IInteractionFormConfiguration) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.recipientEmailDocument = new Node();\n this.senderEmailDocument = new Node();\n this.confirmationPageDocument = new Node();\n this.pages = [];\n this.fields = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.recipientEmailAddress = _data[\"recipientEmailAddress\"];\n this.recipientEmailSubject = _data[\"recipientEmailSubject\"];\n this.recipientEmailDocument = _data[\"recipientEmailDocument\"] ? Node.fromJS(_data[\"recipientEmailDocument\"]) : new Node();\n this.senderEmailAddressFieldId = _data[\"senderEmailAddressFieldId\"];\n this.senderEmailSubject = _data[\"senderEmailSubject\"];\n this.senderEmailDocument = _data[\"senderEmailDocument\"] ? Node.fromJS(_data[\"senderEmailDocument\"]) : new Node();\n this.confirmationPageDocument = _data[\"confirmationPageDocument\"] ? Node.fromJS(_data[\"confirmationPageDocument\"]) : new Node();\n if (Array.isArray(_data[\"pages\"])) {\n this.pages = [] as any;\n for (let item of _data[\"pages\"])\n this.pages!.push(InteractionFormPage.fromJS(item));\n }\n if (_data[\"fields\"]) {\n this.fields = {} as any;\n for (let key in _data[\"fields\"]) {\n if (_data[\"fields\"].hasOwnProperty(key))\n (this.fields)![key] = _data[\"fields\"][key] ? InteractionFormField.fromJS(_data[\"fields\"][key]) : new InteractionFormField();\n }\n }\n }\n }\n\n static fromJS(data: any): InteractionFormConfiguration {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormConfiguration();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"recipientEmailAddress\"] = this.recipientEmailAddress;\n data[\"recipientEmailSubject\"] = this.recipientEmailSubject;\n data[\"recipientEmailDocument\"] = this.recipientEmailDocument ? this.recipientEmailDocument.toJSON() : undefined;\n data[\"senderEmailAddressFieldId\"] = this.senderEmailAddressFieldId;\n data[\"senderEmailSubject\"] = this.senderEmailSubject;\n data[\"senderEmailDocument\"] = this.senderEmailDocument ? this.senderEmailDocument.toJSON() : undefined;\n data[\"confirmationPageDocument\"] = this.confirmationPageDocument ? this.confirmationPageDocument.toJSON() : undefined;\n if (Array.isArray(this.pages)) {\n data[\"pages\"] = [];\n for (let item of this.pages)\n data[\"pages\"].push(item.toJSON());\n }\n if (this.fields) {\n data[\"fields\"] = {};\n for (let key in this.fields) {\n if (this.fields.hasOwnProperty(key))\n (data[\"fields\"])[key] = this.fields[key] ? this.fields[key].toJSON() : undefined;\n }\n }\n return data;\n }\n\n clone(): InteractionFormConfiguration {\n const json = this.toJSON();\n let result = new InteractionFormConfiguration();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormConfiguration {\n recipientEmailAddress: string;\n recipientEmailSubject: string;\n recipientEmailDocument: Node;\n senderEmailAddressFieldId?: string | undefined;\n senderEmailSubject: string;\n senderEmailDocument: Node;\n confirmationPageDocument: Node;\n pages: InteractionFormPage[];\n fields: { [key: string]: InteractionFormField; };\n}\n\nexport class InteractionFormPage implements IInteractionFormPage {\n name!: string;\n rows!: InteractionFormRow[];\n condition?: InteractionFormCondition | undefined;\n\n constructor(data?: IInteractionFormPage) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.rows = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"rows\"])) {\n this.rows = [] as any;\n for (let item of _data[\"rows\"])\n this.rows!.push(InteractionFormRow.fromJS(item));\n }\n this.condition = _data[\"condition\"] ? InteractionFormCondition.fromJS(_data[\"condition\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InteractionFormPage {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormPage();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.rows)) {\n data[\"rows\"] = [];\n for (let item of this.rows)\n data[\"rows\"].push(item.toJSON());\n }\n data[\"condition\"] = this.condition ? this.condition.toJSON() : undefined;\n return data;\n }\n\n clone(): InteractionFormPage {\n const json = this.toJSON();\n let result = new InteractionFormPage();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormPage {\n name: string;\n rows: InteractionFormRow[];\n condition?: InteractionFormCondition | undefined;\n}\n\nexport class InteractionFormRow implements IInteractionFormRow {\n columns!: InteractionFormColumn[];\n\n constructor(data?: IInteractionFormRow) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.columns = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"columns\"])) {\n this.columns = [] as any;\n for (let item of _data[\"columns\"])\n this.columns!.push(InteractionFormColumn.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InteractionFormRow {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormRow();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.columns)) {\n data[\"columns\"] = [];\n for (let item of this.columns)\n data[\"columns\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): InteractionFormRow {\n const json = this.toJSON();\n let result = new InteractionFormRow();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormRow {\n columns: InteractionFormColumn[];\n}\n\nexport class InteractionFormColumn implements IInteractionFormColumn {\n width!: number;\n field?: InteractionFormField | undefined;\n\n constructor(data?: IInteractionFormColumn) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.width = _data[\"width\"];\n this.field = _data[\"field\"] ? InteractionFormField.fromJS(_data[\"field\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InteractionFormColumn {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormColumn();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"width\"] = this.width;\n data[\"field\"] = this.field ? this.field.toJSON() : undefined;\n return data;\n }\n\n clone(): InteractionFormColumn {\n const json = this.toJSON();\n let result = new InteractionFormColumn();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormColumn {\n width: number;\n field?: InteractionFormField | undefined;\n}\n\nexport class InteractionFormField implements IInteractionFormField {\n id?: string | undefined;\n name!: string;\n internalName?: string | undefined;\n description?: string | undefined;\n type!: FormFieldType;\n autocompleteType?: AutocompleteType | undefined;\n required!: boolean;\n placeholder?: string | undefined;\n document?: Node | undefined;\n minValue?: number | undefined;\n maxValue?: number | undefined;\n minLength?: number | undefined;\n maxLength?: number | undefined;\n acceptMimeTypes?: string | undefined;\n regEx?: string | undefined;\n condition?: InteractionFormCondition | undefined;\n options?: string[] | undefined;\n likertLabelLeft?: string | undefined;\n likertLabelRight?: string | undefined;\n\n constructor(data?: IInteractionFormField) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.internalName = _data[\"internalName\"];\n this.description = _data[\"description\"];\n this.type = _data[\"type\"];\n this.autocompleteType = _data[\"autocompleteType\"];\n this.required = _data[\"required\"];\n this.placeholder = _data[\"placeholder\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : undefined;\n this.minValue = _data[\"minValue\"];\n this.maxValue = _data[\"maxValue\"];\n this.minLength = _data[\"minLength\"];\n this.maxLength = _data[\"maxLength\"];\n this.acceptMimeTypes = _data[\"acceptMimeTypes\"];\n this.regEx = _data[\"regEx\"];\n this.condition = _data[\"condition\"] ? InteractionFormCondition.fromJS(_data[\"condition\"]) : undefined;\n if (Array.isArray(_data[\"options\"])) {\n this.options = [] as any;\n for (let item of _data[\"options\"])\n this.options!.push(item);\n }\n this.likertLabelLeft = _data[\"likertLabelLeft\"];\n this.likertLabelRight = _data[\"likertLabelRight\"];\n }\n }\n\n static fromJS(data: any): InteractionFormField {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormField();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"internalName\"] = this.internalName;\n data[\"description\"] = this.description;\n data[\"type\"] = this.type;\n data[\"autocompleteType\"] = this.autocompleteType;\n data[\"required\"] = this.required;\n data[\"placeholder\"] = this.placeholder;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n data[\"minValue\"] = this.minValue;\n data[\"maxValue\"] = this.maxValue;\n data[\"minLength\"] = this.minLength;\n data[\"maxLength\"] = this.maxLength;\n data[\"acceptMimeTypes\"] = this.acceptMimeTypes;\n data[\"regEx\"] = this.regEx;\n data[\"condition\"] = this.condition ? this.condition.toJSON() : undefined;\n if (Array.isArray(this.options)) {\n data[\"options\"] = [];\n for (let item of this.options)\n data[\"options\"].push(item);\n }\n data[\"likertLabelLeft\"] = this.likertLabelLeft;\n data[\"likertLabelRight\"] = this.likertLabelRight;\n return data;\n }\n\n clone(): InteractionFormField {\n const json = this.toJSON();\n let result = new InteractionFormField();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormField {\n id?: string | undefined;\n name: string;\n internalName?: string | undefined;\n description?: string | undefined;\n type: FormFieldType;\n autocompleteType?: AutocompleteType | undefined;\n required: boolean;\n placeholder?: string | undefined;\n document?: Node | undefined;\n minValue?: number | undefined;\n maxValue?: number | undefined;\n minLength?: number | undefined;\n maxLength?: number | undefined;\n acceptMimeTypes?: string | undefined;\n regEx?: string | undefined;\n condition?: InteractionFormCondition | undefined;\n options?: string[] | undefined;\n likertLabelLeft?: string | undefined;\n likertLabelRight?: string | undefined;\n}\n\nexport enum FormFieldType {\n Text = 0,\n TextArea = 1,\n Email = 2,\n TelephoneNumber = 3,\n Number = 4,\n Date = 5,\n File = 6,\n Image = 7,\n Select = 8,\n Checkboxes = 9,\n Radiobuttons = 10,\n Document = 11,\n PriorityList = 12,\n Confirmation = 13,\n Likert = 14,\n}\n\nexport enum AutocompleteType {\n None = 0,\n Name = 1,\n Firstname = 2,\n Lastname = 3,\n Email = 4,\n TelephoneNumber = 5,\n Street = 6,\n City = 7,\n ZipCode = 8,\n Birthday = 9,\n}\n\nexport class InteractionFormCondition implements IInteractionFormCondition {\n condition!: string;\n action!: ConditionAction;\n\n constructor(data?: IInteractionFormCondition) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.condition = _data[\"condition\"];\n this.action = _data[\"action\"];\n }\n }\n\n static fromJS(data: any): InteractionFormCondition {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionFormCondition();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"condition\"] = this.condition;\n data[\"action\"] = this.action;\n return data;\n }\n\n clone(): InteractionFormCondition {\n const json = this.toJSON();\n let result = new InteractionFormCondition();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionFormCondition {\n condition: string;\n action: ConditionAction;\n}\n\nexport enum ConditionAction {\n Hide = 0,\n Show = 1,\n}\n\nexport class BookableCalendarAvailabilityDto implements IBookableCalendarAvailabilityDto {\n from!: Date;\n until!: Date;\n\n constructor(data?: IBookableCalendarAvailabilityDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.until = _data[\"until\"] ? new Date(_data[\"until\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): BookableCalendarAvailabilityDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookableCalendarAvailabilityDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"until\"] = this.until ? this.until.toISOString() : undefined;\n return data;\n }\n\n clone(): BookableCalendarAvailabilityDto {\n const json = this.toJSON();\n let result = new BookableCalendarAvailabilityDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookableCalendarAvailabilityDto {\n from: Date;\n until: Date;\n}\n\nexport class ReservationRequestFilterDto implements IReservationRequestFilterDto {\n bookableId!: number;\n amount!: number;\n\n constructor(data?: IReservationRequestFilterDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.bookableId = _data[\"bookableId\"];\n this.amount = _data[\"amount\"];\n }\n }\n\n static fromJS(data: any): ReservationRequestFilterDto {\n data = typeof data === 'object' ? data : {};\n let result = new ReservationRequestFilterDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"bookableId\"] = this.bookableId;\n data[\"amount\"] = this.amount;\n return data;\n }\n\n clone(): ReservationRequestFilterDto {\n const json = this.toJSON();\n let result = new ReservationRequestFilterDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReservationRequestFilterDto {\n bookableId: number;\n amount: number;\n}\n\nexport class BookableCalendarConflictDto implements IBookableCalendarConflictDto {\n from!: Date;\n until!: Date;\n\n constructor(data?: IBookableCalendarConflictDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.until = _data[\"until\"] ? new Date(_data[\"until\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): BookableCalendarConflictDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookableCalendarConflictDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"until\"] = this.until ? this.until.toISOString() : undefined;\n return data;\n }\n\n clone(): BookableCalendarConflictDto {\n const json = this.toJSON();\n let result = new BookableCalendarConflictDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookableCalendarConflictDto {\n from: Date;\n until: Date;\n}\n\nexport class BookingReservationSubmittedResponseDto implements IBookingReservationSubmittedResponseDto {\n type!: BookingReservationSubmittedResponseType;\n details!: string;\n\n constructor(data?: IBookingReservationSubmittedResponseDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.details = _data[\"details\"];\n }\n }\n\n static fromJS(data: any): BookingReservationSubmittedResponseDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingReservationSubmittedResponseDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"details\"] = this.details;\n return data;\n }\n\n clone(): BookingReservationSubmittedResponseDto {\n const json = this.toJSON();\n let result = new BookingReservationSubmittedResponseDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingReservationSubmittedResponseDto {\n type: BookingReservationSubmittedResponseType;\n details: string;\n}\n\nexport enum BookingReservationSubmittedResponseType {\n NoFurtherActionRequired = 0,\n EmailConfirmationNeeded = 1,\n PayPalRedirect = 2,\n}\n\nexport class PublicSubmitBookingReservationCommand implements IPublicSubmitBookingReservationCommand {\n pageId!: number;\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n reservationItems!: BookingReservationItemDto[];\n address?: Address | undefined;\n bookerCode?: string | undefined;\n\n constructor(data?: IPublicSubmitBookingReservationCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.reservationItems = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n if (Array.isArray(_data[\"reservationItems\"])) {\n this.reservationItems = [] as any;\n for (let item of _data[\"reservationItems\"])\n this.reservationItems!.push(BookingReservationItemDto.fromJS(item));\n }\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.bookerCode = _data[\"bookerCode\"];\n }\n }\n\n static fromJS(data: any): PublicSubmitBookingReservationCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitBookingReservationCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"fromDate\"] = this.fromDate ? this.fromDate.toISOString() : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? this.untilDate.toISOString() : undefined;\n data[\"untilTime\"] = this.untilTime;\n if (Array.isArray(this.reservationItems)) {\n data[\"reservationItems\"] = [];\n for (let item of this.reservationItems)\n data[\"reservationItems\"].push(item.toJSON());\n }\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"bookerCode\"] = this.bookerCode;\n return data;\n }\n\n clone(): PublicSubmitBookingReservationCommand {\n const json = this.toJSON();\n let result = new PublicSubmitBookingReservationCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitBookingReservationCommand {\n pageId: number;\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n reservationItems: BookingReservationItemDto[];\n address?: Address | undefined;\n bookerCode?: string | undefined;\n}\n\nexport class BookingReservationItemDto implements IBookingReservationItemDto {\n bookableId!: number;\n amount!: number;\n\n constructor(data?: IBookingReservationItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.bookableId = _data[\"bookableId\"];\n this.amount = _data[\"amount\"];\n }\n }\n\n static fromJS(data: any): BookingReservationItemDto {\n data = typeof data === 'object' ? data : {};\n let result = new BookingReservationItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"bookableId\"] = this.bookableId;\n data[\"amount\"] = this.amount;\n return data;\n }\n\n clone(): BookingReservationItemDto {\n const json = this.toJSON();\n let result = new BookingReservationItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IBookingReservationItemDto {\n bookableId: number;\n amount: number;\n}\n\nexport class PublicCreateBookingReservationCommand implements IPublicCreateBookingReservationCommand {\n pageId!: number;\n reservationId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateBookingReservationCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.reservationId = _data[\"reservationId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateBookingReservationCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateBookingReservationCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"reservationId\"] = this.reservationId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateBookingReservationCommand {\n const json = this.toJSON();\n let result = new PublicCreateBookingReservationCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateBookingReservationCommand {\n pageId: number;\n reservationId: number;\n token: string;\n}\n\nexport class CalendarSettingsDto implements ICalendarSettingsDto {\n slugs!: SlugDto[];\n\n constructor(data?: ICalendarSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CalendarSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): CalendarSettingsDto {\n const json = this.toJSON();\n let result = new CalendarSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICalendarSettingsDto {\n slugs: SlugDto[];\n}\n\nexport class SlugDto implements ISlugDto {\n name?: string | undefined;\n slug!: string;\n count!: number;\n\n constructor(data?: ISlugDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.slug = _data[\"slug\"];\n this.count = _data[\"count\"];\n }\n }\n\n static fromJS(data: any): SlugDto {\n data = typeof data === 'object' ? data : {};\n let result = new SlugDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"slug\"] = this.slug;\n data[\"count\"] = this.count;\n return data;\n }\n\n clone(): SlugDto {\n const json = this.toJSON();\n let result = new SlugDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISlugDto {\n name?: string | undefined;\n slug: string;\n count: number;\n}\n\nexport class PaginatedListOfCalendarEventTeaserDto implements IPaginatedListOfCalendarEventTeaserDto {\n items!: CalendarEventTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfCalendarEventTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(CalendarEventTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfCalendarEventTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfCalendarEventTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfCalendarEventTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfCalendarEventTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfCalendarEventTeaserDto {\n items: CalendarEventTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class CommunicationSettingsDto implements ICommunicationSettingsDto {\n formConfirmationHtml?: string | undefined;\n\n constructor(data?: ICommunicationSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): CommunicationSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): CommunicationSettingsDto {\n const json = this.toJSON();\n let result = new CommunicationSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICommunicationSettingsDto {\n formConfirmationHtml?: string | undefined;\n}\n\nexport class PublicSubmitCommunicationRecipientCommand implements IPublicSubmitCommunicationRecipientCommand {\n pageId!: number;\n categoryIds!: number[];\n eMail!: string;\n\n constructor(data?: IPublicSubmitCommunicationRecipientCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.categoryIds = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n if (Array.isArray(_data[\"categoryIds\"])) {\n this.categoryIds = [] as any;\n for (let item of _data[\"categoryIds\"])\n this.categoryIds!.push(item);\n }\n this.eMail = _data[\"eMail\"];\n }\n }\n\n static fromJS(data: any): PublicSubmitCommunicationRecipientCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitCommunicationRecipientCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n if (Array.isArray(this.categoryIds)) {\n data[\"categoryIds\"] = [];\n for (let item of this.categoryIds)\n data[\"categoryIds\"].push(item);\n }\n data[\"eMail\"] = this.eMail;\n return data;\n }\n\n clone(): PublicSubmitCommunicationRecipientCommand {\n const json = this.toJSON();\n let result = new PublicSubmitCommunicationRecipientCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitCommunicationRecipientCommand {\n pageId: number;\n categoryIds: number[];\n eMail: string;\n}\n\nexport class PublicCreateCommunicationRecipientCommand implements IPublicCreateCommunicationRecipientCommand {\n pageId!: number;\n recipientId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateCommunicationRecipientCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.recipientId = _data[\"recipientId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateCommunicationRecipientCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateCommunicationRecipientCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"recipientId\"] = this.recipientId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateCommunicationRecipientCommand {\n const json = this.toJSON();\n let result = new PublicCreateCommunicationRecipientCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateCommunicationRecipientCommand {\n pageId: number;\n recipientId: number;\n token: string;\n}\n\nexport class PublicDeleteCommunicationRecipientCommand implements IPublicDeleteCommunicationRecipientCommand {\n pageId!: number;\n recipientId!: number;\n token!: string;\n\n constructor(data?: IPublicDeleteCommunicationRecipientCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.recipientId = _data[\"recipientId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicDeleteCommunicationRecipientCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicDeleteCommunicationRecipientCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"recipientId\"] = this.recipientId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicDeleteCommunicationRecipientCommand {\n const json = this.toJSON();\n let result = new PublicDeleteCommunicationRecipientCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicDeleteCommunicationRecipientCommand {\n pageId: number;\n recipientId: number;\n token: string;\n}\n\nexport class DatabaseSettingsDto implements IDatabaseSettingsDto {\n showAllSlug?: string | undefined;\n\n constructor(data?: IDatabaseSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.showAllSlug = _data[\"showAllSlug\"];\n }\n }\n\n static fromJS(data: any): DatabaseSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"showAllSlug\"] = this.showAllSlug;\n return data;\n }\n\n clone(): DatabaseSettingsDto {\n const json = this.toJSON();\n let result = new DatabaseSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseSettingsDto {\n showAllSlug?: string | undefined;\n}\n\nexport class PaginatedListOfDatabaseObjectTeaserDto implements IPaginatedListOfDatabaseObjectTeaserDto {\n items!: DatabaseObjectTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDatabaseObjectTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DatabaseObjectTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDatabaseObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDatabaseObjectTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDatabaseObjectTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDatabaseObjectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDatabaseObjectTeaserDto {\n items: DatabaseObjectTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class FieldFilterDto implements IFieldFilterDto {\n fieldId!: string;\n type!: DatabaseObjectFilterType;\n values!: (string | undefined)[];\n\n constructor(data?: IFieldFilterDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.values = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.fieldId = _data[\"fieldId\"];\n this.type = _data[\"type\"];\n if (Array.isArray(_data[\"values\"])) {\n this.values = [] as any;\n for (let item of _data[\"values\"])\n this.values!.push(item);\n }\n }\n }\n\n static fromJS(data: any): FieldFilterDto {\n data = typeof data === 'object' ? data : {};\n let result = new FieldFilterDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fieldId\"] = this.fieldId;\n data[\"type\"] = this.type;\n if (Array.isArray(this.values)) {\n data[\"values\"] = [];\n for (let item of this.values)\n data[\"values\"].push(item);\n }\n return data;\n }\n\n clone(): FieldFilterDto {\n const json = this.toJSON();\n let result = new FieldFilterDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldFilterDto {\n fieldId: string;\n type: DatabaseObjectFilterType;\n values: (string | undefined)[];\n}\n\nexport enum DatabaseObjectFilterType {\n Or = 0,\n And = 1,\n Range = 2,\n LessThan = 3,\n GreaterThan = 4,\n}\n\nexport class DatabaseObjectTypeDto implements IDatabaseObjectTypeDto {\n id!: number;\n name!: string;\n enableDocument!: boolean;\n enableAddresses!: boolean;\n enableCommunication!: boolean;\n enableOpeningHours!: boolean;\n fields!: DatabaseObjectTypeFieldGroupDto[];\n\n constructor(data?: IDatabaseObjectTypeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fields = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.enableDocument = _data[\"enableDocument\"];\n this.enableAddresses = _data[\"enableAddresses\"];\n this.enableCommunication = _data[\"enableCommunication\"];\n this.enableOpeningHours = _data[\"enableOpeningHours\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(DatabaseObjectTypeFieldGroupDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DatabaseObjectTypeDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTypeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"enableDocument\"] = this.enableDocument;\n data[\"enableAddresses\"] = this.enableAddresses;\n data[\"enableCommunication\"] = this.enableCommunication;\n data[\"enableOpeningHours\"] = this.enableOpeningHours;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DatabaseObjectTypeDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTypeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTypeDto {\n id: number;\n name: string;\n enableDocument: boolean;\n enableAddresses: boolean;\n enableCommunication: boolean;\n enableOpeningHours: boolean;\n fields: DatabaseObjectTypeFieldGroupDto[];\n}\n\nexport class DatabaseObjectTypeFieldGroupDto implements IDatabaseObjectTypeFieldGroupDto {\n name!: string;\n fields!: DatabaseObjectTypeFieldDto[];\n\n constructor(data?: IDatabaseObjectTypeFieldGroupDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fields = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(DatabaseObjectTypeFieldDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DatabaseObjectTypeFieldGroupDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTypeFieldGroupDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DatabaseObjectTypeFieldGroupDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTypeFieldGroupDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTypeFieldGroupDto {\n name: string;\n fields: DatabaseObjectTypeFieldDto[];\n}\n\nexport class DatabaseObjectTypeFieldDto implements IDatabaseObjectTypeFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type!: FieldType;\n name!: string;\n unit?: string | undefined;\n restrictToSuggestedValues!: boolean;\n filterOptions!: FilterOptionDto[];\n\n constructor(data?: IDatabaseObjectTypeFieldDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.filterOptions = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.iconFileUrl = _data[\"iconFileUrl\"];\n this.type = _data[\"type\"];\n this.name = _data[\"name\"];\n this.unit = _data[\"unit\"];\n this.restrictToSuggestedValues = _data[\"restrictToSuggestedValues\"];\n if (Array.isArray(_data[\"filterOptions\"])) {\n this.filterOptions = [] as any;\n for (let item of _data[\"filterOptions\"])\n this.filterOptions!.push(FilterOptionDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DatabaseObjectTypeFieldDto {\n data = typeof data === 'object' ? data : {};\n let result = new DatabaseObjectTypeFieldDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"iconFileUrl\"] = this.iconFileUrl;\n data[\"type\"] = this.type;\n data[\"name\"] = this.name;\n data[\"unit\"] = this.unit;\n data[\"restrictToSuggestedValues\"] = this.restrictToSuggestedValues;\n if (Array.isArray(this.filterOptions)) {\n data[\"filterOptions\"] = [];\n for (let item of this.filterOptions)\n data[\"filterOptions\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DatabaseObjectTypeFieldDto {\n const json = this.toJSON();\n let result = new DatabaseObjectTypeFieldDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatabaseObjectTypeFieldDto {\n id?: string | undefined;\n iconFileUrl?: string | undefined;\n type: FieldType;\n name: string;\n unit?: string | undefined;\n restrictToSuggestedValues: boolean;\n filterOptions: FilterOptionDto[];\n}\n\nexport class FilterOptionDto implements IFilterOptionDto {\n label!: string;\n value!: any;\n\n constructor(data?: IFilterOptionDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.label = _data[\"label\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): FilterOptionDto {\n data = typeof data === 'object' ? data : {};\n let result = new FilterOptionDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"label\"] = this.label;\n data[\"value\"] = this.value;\n return data;\n }\n\n clone(): FilterOptionDto {\n const json = this.toJSON();\n let result = new FilterOptionDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFilterOptionDto {\n label: string;\n value: any;\n}\n\nexport enum ComponentType {\n None = 0,\n News = 1,\n Geo = 2,\n Calendar = 3,\n DirectoryForm = 4,\n DirectoryOrgUnit = 5,\n DirectoryPerson = 6,\n DirectoryProcess = 7,\n DirectoryService = 8,\n DirectorySituation = 9,\n Search = 10,\n Database = 11,\n Communication = 12,\n Gallery = 13,\n Problem = 14,\n Weather = 15,\n InteractionForm = 16,\n SubscriptionManager = 17,\n Shop = 18,\n InteractionSurvey = 19,\n Booking = 20,\n}\n\nexport class PaginatedListOfDirectoryFormTeaserDto implements IPaginatedListOfDirectoryFormTeaserDto {\n items!: DirectoryFormTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryFormTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryFormTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryFormTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryFormTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryFormTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryFormTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryFormTeaserDto {\n items: DirectoryFormTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PaginatedListOfDirectoryOrgUnitTeaserDto implements IPaginatedListOfDirectoryOrgUnitTeaserDto {\n items!: DirectoryOrgUnitTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryOrgUnitTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryOrgUnitTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryOrgUnitTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryOrgUnitTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryOrgUnitTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryOrgUnitTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryOrgUnitTeaserDto {\n items: DirectoryOrgUnitTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class DirectoryOrgUnitTreeNodeDto implements IDirectoryOrgUnitTreeNodeDto {\n content!: DirectoryOrgUnitTeaserDto;\n expanded!: boolean;\n nodes!: DirectoryOrgUnitTreeNodeDto[];\n depth!: number;\n\n constructor(data?: IDirectoryOrgUnitTreeNodeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.content = new DirectoryOrgUnitTeaserDto();\n this.nodes = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.content = _data[\"content\"] ? DirectoryOrgUnitTeaserDto.fromJS(_data[\"content\"]) : new DirectoryOrgUnitTeaserDto();\n this.expanded = _data[\"expanded\"];\n if (Array.isArray(_data[\"nodes\"])) {\n this.nodes = [] as any;\n for (let item of _data[\"nodes\"])\n this.nodes!.push(DirectoryOrgUnitTreeNodeDto.fromJS(item));\n }\n this.depth = _data[\"depth\"];\n }\n }\n\n static fromJS(data: any): DirectoryOrgUnitTreeNodeDto {\n data = typeof data === 'object' ? data : {};\n let result = new DirectoryOrgUnitTreeNodeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"content\"] = this.content ? this.content.toJSON() : undefined;\n data[\"expanded\"] = this.expanded;\n if (Array.isArray(this.nodes)) {\n data[\"nodes\"] = [];\n for (let item of this.nodes)\n data[\"nodes\"].push(item.toJSON());\n }\n data[\"depth\"] = this.depth;\n return data;\n }\n\n clone(): DirectoryOrgUnitTreeNodeDto {\n const json = this.toJSON();\n let result = new DirectoryOrgUnitTreeNodeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDirectoryOrgUnitTreeNodeDto {\n content: DirectoryOrgUnitTeaserDto;\n expanded: boolean;\n nodes: DirectoryOrgUnitTreeNodeDto[];\n depth: number;\n}\n\nexport class PaginatedListOfDirectoryPersonTeaserDto implements IPaginatedListOfDirectoryPersonTeaserDto {\n items!: DirectoryPersonTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryPersonTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryPersonTeaserDto {\n items: DirectoryPersonTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PaginatedListOfGroupedDirectoryPersonTeaserDto implements IPaginatedListOfGroupedDirectoryPersonTeaserDto {\n items!: GroupedDirectoryPersonTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfGroupedDirectoryPersonTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(GroupedDirectoryPersonTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfGroupedDirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfGroupedDirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfGroupedDirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfGroupedDirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfGroupedDirectoryPersonTeaserDto {\n items: GroupedDirectoryPersonTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class GroupedDirectoryPersonTeaserDto implements IGroupedDirectoryPersonTeaserDto {\n name?: string | undefined;\n persons!: DirectoryPersonTeaserDto[];\n\n constructor(data?: IGroupedDirectoryPersonTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.persons = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"persons\"])) {\n this.persons = [] as any;\n for (let item of _data[\"persons\"])\n this.persons!.push(DirectoryPersonTeaserDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GroupedDirectoryPersonTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new GroupedDirectoryPersonTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n if (Array.isArray(this.persons)) {\n data[\"persons\"] = [];\n for (let item of this.persons)\n data[\"persons\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): GroupedDirectoryPersonTeaserDto {\n const json = this.toJSON();\n let result = new GroupedDirectoryPersonTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGroupedDirectoryPersonTeaserDto {\n name?: string | undefined;\n persons: DirectoryPersonTeaserDto[];\n}\n\nexport class PaginatedListOfDirectoryServiceTeaserDto implements IPaginatedListOfDirectoryServiceTeaserDto {\n items!: DirectoryServiceTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectoryServiceTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectoryServiceTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectoryServiceTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectoryServiceTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectoryServiceTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectoryServiceTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectoryServiceTeaserDto {\n items: DirectoryServiceTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PaginatedListOfDirectorySituationTeaserDto implements IPaginatedListOfDirectorySituationTeaserDto {\n items!: DirectorySituationTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfDirectorySituationTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DirectorySituationTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfDirectorySituationTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfDirectorySituationTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfDirectorySituationTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfDirectorySituationTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfDirectorySituationTeaserDto {\n items: DirectorySituationTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class GallerySettingsDto implements IGallerySettingsDto {\n slugs!: SlugDto[];\n\n constructor(data?: IGallerySettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GallerySettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new GallerySettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): GallerySettingsDto {\n const json = this.toJSON();\n let result = new GallerySettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGallerySettingsDto {\n slugs: SlugDto[];\n}\n\nexport class PaginatedListOfGalleryAlbumTeaserDto implements IPaginatedListOfGalleryAlbumTeaserDto {\n items!: GalleryAlbumTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfGalleryAlbumTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(GalleryAlbumTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfGalleryAlbumTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfGalleryAlbumTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfGalleryAlbumTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfGalleryAlbumTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfGalleryAlbumTeaserDto {\n items: GalleryAlbumTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport enum GeoCodingFilter {\n Street = 0,\n City = 1,\n}\n\nexport class GeoSettingsDto implements IGeoSettingsDto {\n slugs!: SlugDto[];\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n\n constructor(data?: IGeoSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n this.defaultLocation = _data[\"defaultLocation\"] ? PointDto.fromJS(_data[\"defaultLocation\"]) : undefined;\n this.defaultZoom = _data[\"defaultZoom\"];\n }\n }\n\n static fromJS(data: any): GeoSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new GeoSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n data[\"defaultLocation\"] = this.defaultLocation ? this.defaultLocation.toJSON() : undefined;\n data[\"defaultZoom\"] = this.defaultZoom;\n return data;\n }\n\n clone(): GeoSettingsDto {\n const json = this.toJSON();\n let result = new GeoSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoSettingsDto {\n slugs: SlugDto[];\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n}\n\nexport class PaginatedListOfGeoObjectTeaserDto implements IPaginatedListOfGeoObjectTeaserDto {\n items!: GeoObjectTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfGeoObjectTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(GeoObjectTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfGeoObjectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfGeoObjectTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfGeoObjectTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfGeoObjectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfGeoObjectTeaserDto {\n items: GeoObjectTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PublicSubmitInteractionFormCommand implements IPublicSubmitInteractionFormCommand {\n pageId!: number;\n formId!: number;\n formData!: { [key: string]: any; };\n\n constructor(data?: IPublicSubmitInteractionFormCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.formData = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.formId = _data[\"formId\"];\n if (_data[\"formData\"]) {\n this.formData = {} as any;\n for (let key in _data[\"formData\"]) {\n if (_data[\"formData\"].hasOwnProperty(key))\n (this.formData)![key] = _data[\"formData\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): PublicSubmitInteractionFormCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitInteractionFormCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"formId\"] = this.formId;\n if (this.formData) {\n data[\"formData\"] = {};\n for (let key in this.formData) {\n if (this.formData.hasOwnProperty(key))\n (data[\"formData\"])[key] = (this.formData)[key];\n }\n }\n return data;\n }\n\n clone(): PublicSubmitInteractionFormCommand {\n const json = this.toJSON();\n let result = new PublicSubmitInteractionFormCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitInteractionFormCommand {\n pageId: number;\n formId: number;\n formData: { [key: string]: any; };\n}\n\nexport class InteractionSurveyDto extends ItemDto implements IInteractionSurveyDto {\n fromDate!: Date;\n fromTime?: string | undefined;\n untilDate!: Date;\n untilTime?: string | undefined;\n configuration!: InteractionSurveyConfiguration;\n formConfirmationHtml?: string | undefined;\n\n constructor(data?: IInteractionSurveyDto) {\n super(data);\n if (!data) {\n this.configuration = new InteractionSurveyConfiguration();\n }\n this._discriminator = \"InteractionSurveyDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.fromDate = _data[\"fromDate\"] ? new Date(_data[\"fromDate\"].toString()) : undefined;\n this.fromTime = _data[\"fromTime\"];\n this.untilDate = _data[\"untilDate\"] ? new Date(_data[\"untilDate\"].toString()) : undefined;\n this.untilTime = _data[\"untilTime\"];\n this.configuration = _data[\"configuration\"] ? InteractionSurveyConfiguration.fromJS(_data[\"configuration\"]) : new InteractionSurveyConfiguration();\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static override fromJS(data: any): InteractionSurveyDto {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionSurveyDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fromDate\"] = this.fromDate ? formatDate(this.fromDate) : undefined;\n data[\"fromTime\"] = this.fromTime;\n data[\"untilDate\"] = this.untilDate ? formatDate(this.untilDate) : undefined;\n data[\"untilTime\"] = this.untilTime;\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n super.toJSON(data);\n return data;\n }\n\n clone(): InteractionSurveyDto {\n const json = this.toJSON();\n let result = new InteractionSurveyDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionSurveyDto extends IItemDto {\n fromDate: Date;\n fromTime?: string | undefined;\n untilDate: Date;\n untilTime?: string | undefined;\n configuration: InteractionSurveyConfiguration;\n formConfirmationHtml?: string | undefined;\n}\n\nexport class InteractionSurveyConfiguration extends InteractionFormConfiguration implements IInteractionSurveyConfiguration {\n\n constructor(data?: IInteractionSurveyConfiguration) {\n super(data);\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): InteractionSurveyConfiguration {\n data = typeof data === 'object' ? data : {};\n let result = new InteractionSurveyConfiguration();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): InteractionSurveyConfiguration {\n const json = this.toJSON();\n let result = new InteractionSurveyConfiguration();\n result.init(json);\n return result;\n }\n}\n\nexport interface IInteractionSurveyConfiguration extends IInteractionFormConfiguration {\n}\n\nexport class PublicSubmitInteractionSurveyCommand implements IPublicSubmitInteractionSurveyCommand {\n pageId!: number;\n surveyId!: number;\n surveyData!: { [key: string]: any; };\n\n constructor(data?: IPublicSubmitInteractionSurveyCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.surveyData = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.surveyId = _data[\"surveyId\"];\n if (_data[\"surveyData\"]) {\n this.surveyData = {} as any;\n for (let key in _data[\"surveyData\"]) {\n if (_data[\"surveyData\"].hasOwnProperty(key))\n (this.surveyData)![key] = _data[\"surveyData\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): PublicSubmitInteractionSurveyCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitInteractionSurveyCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"surveyId\"] = this.surveyId;\n if (this.surveyData) {\n data[\"surveyData\"] = {};\n for (let key in this.surveyData) {\n if (this.surveyData.hasOwnProperty(key))\n (data[\"surveyData\"])[key] = (this.surveyData)[key];\n }\n }\n return data;\n }\n\n clone(): PublicSubmitInteractionSurveyCommand {\n const json = this.toJSON();\n let result = new PublicSubmitInteractionSurveyCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitInteractionSurveyCommand {\n pageId: number;\n surveyId: number;\n surveyData: { [key: string]: any; };\n}\n\nexport class NewsSettingsDto implements INewsSettingsDto {\n slugs!: SlugDto[];\n\n constructor(data?: INewsSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.slugs = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"slugs\"])) {\n this.slugs = [] as any;\n for (let item of _data[\"slugs\"])\n this.slugs!.push(SlugDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): NewsSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new NewsSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.slugs)) {\n data[\"slugs\"] = [];\n for (let item of this.slugs)\n data[\"slugs\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): NewsSettingsDto {\n const json = this.toJSON();\n let result = new NewsSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface INewsSettingsDto {\n slugs: SlugDto[];\n}\n\nexport class PaginatedListOfNewsArticleTeaserDto implements IPaginatedListOfNewsArticleTeaserDto {\n items!: NewsArticleTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfNewsArticleTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(NewsArticleTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfNewsArticleTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfNewsArticleTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfNewsArticleTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfNewsArticleTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfNewsArticleTeaserDto {\n items: NewsArticleTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class DateRangeDto implements IDateRangeDto {\n min!: Date;\n max!: Date;\n years!: number[];\n\n constructor(data?: IDateRangeDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.years = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.min = _data[\"min\"] ? new Date(_data[\"min\"].toString()) : undefined;\n this.max = _data[\"max\"] ? new Date(_data[\"max\"].toString()) : undefined;\n if (Array.isArray(_data[\"years\"])) {\n this.years = [] as any;\n for (let item of _data[\"years\"])\n this.years!.push(item);\n }\n }\n }\n\n static fromJS(data: any): DateRangeDto {\n data = typeof data === 'object' ? data : {};\n let result = new DateRangeDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"min\"] = this.min ? this.min.toISOString() : undefined;\n data[\"max\"] = this.max ? this.max.toISOString() : undefined;\n if (Array.isArray(this.years)) {\n data[\"years\"] = [];\n for (let item of this.years)\n data[\"years\"].push(item);\n }\n return data;\n }\n\n clone(): DateRangeDto {\n const json = this.toJSON();\n let result = new DateRangeDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDateRangeDto {\n min: Date;\n max: Date;\n years: number[];\n}\n\nexport class Typo3PageDto implements ITypo3PageDto {\n id!: number;\n name!: string;\n slug!: string;\n\n constructor(data?: ITypo3PageDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.slug = _data[\"slug\"];\n }\n }\n\n static fromJS(data: any): Typo3PageDto {\n data = typeof data === 'object' ? data : {};\n let result = new Typo3PageDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"slug\"] = this.slug;\n return data;\n }\n\n clone(): Typo3PageDto {\n const json = this.toJSON();\n let result = new Typo3PageDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITypo3PageDto {\n id: number;\n name: string;\n slug: string;\n}\n\nexport class ProblemSettingsDto implements IProblemSettingsDto {\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n commentMode!: CommentMode;\n formConfirmationHtml?: string | undefined;\n\n constructor(data?: IProblemSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.defaultLocation = _data[\"defaultLocation\"] ? PointDto.fromJS(_data[\"defaultLocation\"]) : undefined;\n this.defaultZoom = _data[\"defaultZoom\"];\n this.commentMode = _data[\"commentMode\"];\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): ProblemSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new ProblemSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"defaultLocation\"] = this.defaultLocation ? this.defaultLocation.toJSON() : undefined;\n data[\"defaultZoom\"] = this.defaultZoom;\n data[\"commentMode\"] = this.commentMode;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): ProblemSettingsDto {\n const json = this.toJSON();\n let result = new ProblemSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IProblemSettingsDto {\n defaultLocation?: PointDto | undefined;\n defaultZoom?: number | undefined;\n commentMode: CommentMode;\n formConfirmationHtml?: string | undefined;\n}\n\nexport enum CommentMode {\n Disabled = 0,\n Anonymous = 1,\n Public = 2,\n}\n\nexport class PaginatedListOfProblemDefectTeaserDto implements IPaginatedListOfProblemDefectTeaserDto {\n items!: ProblemDefectTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfProblemDefectTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProblemDefectTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfProblemDefectTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfProblemDefectTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfProblemDefectTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfProblemDefectTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfProblemDefectTeaserDto {\n items: ProblemDefectTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class PublicSubmitProblemDefectCommand implements IPublicSubmitProblemDefectCommand {\n pageId!: number;\n categoryId!: number;\n creator!: Address;\n name!: string;\n document!: Node;\n pictures?: GalleryImage[] | undefined;\n address?: Address | undefined;\n location?: PointDto | undefined;\n\n constructor(data?: IPublicSubmitProblemDefectCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.creator = new Address();\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.categoryId = _data[\"categoryId\"];\n this.creator = _data[\"creator\"] ? Address.fromJS(_data[\"creator\"]) : new Address();\n this.name = _data[\"name\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PublicSubmitProblemDefectCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitProblemDefectCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"categoryId\"] = this.categoryId;\n data[\"creator\"] = this.creator ? this.creator.toJSON() : undefined;\n data[\"name\"] = this.name;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitProblemDefectCommand {\n const json = this.toJSON();\n let result = new PublicSubmitProblemDefectCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitProblemDefectCommand {\n pageId: number;\n categoryId: number;\n creator: Address;\n name: string;\n document: Node;\n pictures?: GalleryImage[] | undefined;\n address?: Address | undefined;\n location?: PointDto | undefined;\n}\n\nexport class PublicCreateProblemDefectCommand implements IPublicCreateProblemDefectCommand {\n pageId!: number;\n defectId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateProblemDefectCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateProblemDefectCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateProblemDefectCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateProblemDefectCommand {\n const json = this.toJSON();\n let result = new PublicCreateProblemDefectCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateProblemDefectCommand {\n pageId: number;\n defectId: number;\n token: string;\n}\n\nexport class PublicProblemDefectDetailsDto extends ProblemDefectDto implements IPublicProblemDefectDetailsDto {\n categoryId!: number;\n\n constructor(data?: IPublicProblemDefectDetailsDto) {\n super(data);\n this._discriminator = \"PublicProblemDefectDetailsDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.categoryId = _data[\"categoryId\"];\n }\n }\n\n static override fromJS(data: any): PublicProblemDefectDetailsDto {\n data = typeof data === 'object' ? data : {};\n let result = new PublicProblemDefectDetailsDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"categoryId\"] = this.categoryId;\n super.toJSON(data);\n return data;\n }\n\n clone(): PublicProblemDefectDetailsDto {\n const json = this.toJSON();\n let result = new PublicProblemDefectDetailsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicProblemDefectDetailsDto extends IProblemDefectDto {\n categoryId: number;\n}\n\nexport class PublicUpdateProblemDefectCommand implements IPublicUpdateProblemDefectCommand {\n pageId!: number;\n defectId!: number;\n token!: string;\n categoryId!: number;\n name!: string;\n document!: Node;\n pictures!: GalleryImage[];\n address?: Address | undefined;\n location!: PointDto;\n\n constructor(data?: IPublicUpdateProblemDefectCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.document = new Node();\n this.pictures = [];\n this.location = new PointDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.token = _data[\"token\"];\n this.categoryId = _data[\"categoryId\"];\n this.name = _data[\"name\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n this.address = _data[\"address\"] ? Address.fromJS(_data[\"address\"]) : undefined;\n this.location = _data[\"location\"] ? PointDto.fromJS(_data[\"location\"]) : new PointDto();\n }\n }\n\n static fromJS(data: any): PublicUpdateProblemDefectCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicUpdateProblemDefectCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"token\"] = this.token;\n data[\"categoryId\"] = this.categoryId;\n data[\"name\"] = this.name;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n data[\"address\"] = this.address ? this.address.toJSON() : undefined;\n data[\"location\"] = this.location ? this.location.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicUpdateProblemDefectCommand {\n const json = this.toJSON();\n let result = new PublicUpdateProblemDefectCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicUpdateProblemDefectCommand {\n pageId: number;\n defectId: number;\n token: string;\n categoryId: number;\n name: string;\n document: Node;\n pictures: GalleryImage[];\n address?: Address | undefined;\n location: PointDto;\n}\n\nexport class PublicSubmitProblemCommentCommand implements IPublicSubmitProblemCommentCommand {\n pageId!: number;\n defectId!: number;\n creator!: Address;\n document!: Node;\n\n constructor(data?: IPublicSubmitProblemCommentCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.creator = new Address();\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.creator = _data[\"creator\"] ? Address.fromJS(_data[\"creator\"]) : new Address();\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static fromJS(data: any): PublicSubmitProblemCommentCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitProblemCommentCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"creator\"] = this.creator ? this.creator.toJSON() : undefined;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitProblemCommentCommand {\n const json = this.toJSON();\n let result = new PublicSubmitProblemCommentCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitProblemCommentCommand {\n pageId: number;\n defectId: number;\n creator: Address;\n document: Node;\n}\n\nexport class PublicCreateProblemCommentCommand implements IPublicCreateProblemCommentCommand {\n pageId!: number;\n defectId!: number;\n commentId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateProblemCommentCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.defectId = _data[\"defectId\"];\n this.commentId = _data[\"commentId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateProblemCommentCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateProblemCommentCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"defectId\"] = this.defectId;\n data[\"commentId\"] = this.commentId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateProblemCommentCommand {\n const json = this.toJSON();\n let result = new PublicCreateProblemCommentCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateProblemCommentCommand {\n pageId: number;\n defectId: number;\n commentId: number;\n token: string;\n}\n\nexport class PublicUpdateProblemCommentCommand implements IPublicUpdateProblemCommentCommand {\n pageId!: number;\n commentId!: number;\n token!: string;\n document!: Node;\n\n constructor(data?: IPublicUpdateProblemCommentCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.commentId = _data[\"commentId\"];\n this.token = _data[\"token\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static fromJS(data: any): PublicUpdateProblemCommentCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicUpdateProblemCommentCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"commentId\"] = this.commentId;\n data[\"token\"] = this.token;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicUpdateProblemCommentCommand {\n const json = this.toJSON();\n let result = new PublicUpdateProblemCommentCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicUpdateProblemCommentCommand {\n pageId: number;\n commentId: number;\n token: string;\n document: Node;\n}\n\nexport class PushSubscriptionDto implements IPushSubscriptionDto {\n id!: string;\n subscribedCategories!: CategoryAndModuleNameDto[];\n subscribedLiveItems!: ItemAndModuleNameDto[];\n\n constructor(data?: IPushSubscriptionDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.subscribedCategories = [];\n this.subscribedLiveItems = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n if (Array.isArray(_data[\"subscribedCategories\"])) {\n this.subscribedCategories = [] as any;\n for (let item of _data[\"subscribedCategories\"])\n this.subscribedCategories!.push(CategoryAndModuleNameDto.fromJS(item));\n }\n if (Array.isArray(_data[\"subscribedLiveItems\"])) {\n this.subscribedLiveItems = [] as any;\n for (let item of _data[\"subscribedLiveItems\"])\n this.subscribedLiveItems!.push(ItemAndModuleNameDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PushSubscriptionDto {\n data = typeof data === 'object' ? data : {};\n let result = new PushSubscriptionDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n if (Array.isArray(this.subscribedCategories)) {\n data[\"subscribedCategories\"] = [];\n for (let item of this.subscribedCategories)\n data[\"subscribedCategories\"].push(item.toJSON());\n }\n if (Array.isArray(this.subscribedLiveItems)) {\n data[\"subscribedLiveItems\"] = [];\n for (let item of this.subscribedLiveItems)\n data[\"subscribedLiveItems\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): PushSubscriptionDto {\n const json = this.toJSON();\n let result = new PushSubscriptionDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPushSubscriptionDto {\n id: string;\n subscribedCategories: CategoryAndModuleNameDto[];\n subscribedLiveItems: ItemAndModuleNameDto[];\n}\n\nexport class ItemNameDto implements IItemNameDto {\n id!: number;\n name!: string;\n\n constructor(data?: IItemNameDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): ItemNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new ItemNameDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n return data;\n }\n\n clone(): ItemNameDto {\n const json = this.toJSON();\n let result = new ItemNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemNameDto {\n id: number;\n name: string;\n}\n\nexport class ItemAndModuleNameDto extends ItemNameDto implements IItemAndModuleNameDto {\n moduleId!: number;\n moduleName!: string;\n\n constructor(data?: IItemAndModuleNameDto) {\n super(data);\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.moduleId = _data[\"moduleId\"];\n this.moduleName = _data[\"moduleName\"];\n }\n }\n\n static override fromJS(data: any): ItemAndModuleNameDto {\n data = typeof data === 'object' ? data : {};\n let result = new ItemAndModuleNameDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"moduleId\"] = this.moduleId;\n data[\"moduleName\"] = this.moduleName;\n super.toJSON(data);\n return data;\n }\n\n clone(): ItemAndModuleNameDto {\n const json = this.toJSON();\n let result = new ItemAndModuleNameDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IItemAndModuleNameDto extends IItemNameDto {\n moduleId: number;\n moduleName: string;\n}\n\nexport class GroupedCategoryTeasersDto implements IGroupedCategoryTeasersDto {\n type!: ComponentType;\n categories!: CategoryTeaserDto[];\n\n constructor(data?: IGroupedCategoryTeasersDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.categories = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n if (Array.isArray(_data[\"categories\"])) {\n this.categories = [] as any;\n for (let item of _data[\"categories\"])\n this.categories!.push(CategoryTeaserDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GroupedCategoryTeasersDto {\n data = typeof data === 'object' ? data : {};\n let result = new GroupedCategoryTeasersDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n if (Array.isArray(this.categories)) {\n data[\"categories\"] = [];\n for (let item of this.categories)\n data[\"categories\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): GroupedCategoryTeasersDto {\n const json = this.toJSON();\n let result = new GroupedCategoryTeasersDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGroupedCategoryTeasersDto {\n type: ComponentType;\n categories: CategoryTeaserDto[];\n}\n\nexport class GetOrCreateEmailPushSubscriptionCommand implements IGetOrCreateEmailPushSubscriptionCommand {\n pageId!: number;\n eMail!: string;\n deviceId?: string | undefined;\n\n constructor(data?: IGetOrCreateEmailPushSubscriptionCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.eMail = _data[\"eMail\"];\n this.deviceId = _data[\"deviceId\"];\n }\n }\n\n static fromJS(data: any): GetOrCreateEmailPushSubscriptionCommand {\n data = typeof data === 'object' ? data : {};\n let result = new GetOrCreateEmailPushSubscriptionCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"eMail\"] = this.eMail;\n data[\"deviceId\"] = this.deviceId;\n return data;\n }\n\n clone(): GetOrCreateEmailPushSubscriptionCommand {\n const json = this.toJSON();\n let result = new GetOrCreateEmailPushSubscriptionCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGetOrCreateEmailPushSubscriptionCommand {\n pageId: number;\n eMail: string;\n deviceId?: string | undefined;\n}\n\nexport class GetOrCreateWebPushSubscriptionCommand implements IGetOrCreateWebPushSubscriptionCommand {\n pageId!: number;\n endpoint!: string;\n keys!: { [key: string]: string; };\n\n constructor(data?: IGetOrCreateWebPushSubscriptionCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.keys = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.endpoint = _data[\"endpoint\"];\n if (_data[\"keys\"]) {\n this.keys = {} as any;\n for (let key in _data[\"keys\"]) {\n if (_data[\"keys\"].hasOwnProperty(key))\n (this.keys)![key] = _data[\"keys\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): GetOrCreateWebPushSubscriptionCommand {\n data = typeof data === 'object' ? data : {};\n let result = new GetOrCreateWebPushSubscriptionCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"endpoint\"] = this.endpoint;\n if (this.keys) {\n data[\"keys\"] = {};\n for (let key in this.keys) {\n if (this.keys.hasOwnProperty(key))\n (data[\"keys\"])[key] = (this.keys)[key];\n }\n }\n return data;\n }\n\n clone(): GetOrCreateWebPushSubscriptionCommand {\n const json = this.toJSON();\n let result = new GetOrCreateWebPushSubscriptionCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGetOrCreateWebPushSubscriptionCommand {\n pageId: number;\n endpoint: string;\n keys: { [key: string]: string; };\n}\n\nexport class GetOrCreateFirebasePushSubscriptionCommand implements IGetOrCreateFirebasePushSubscriptionCommand {\n pageId!: number;\n token!: string;\n\n constructor(data?: IGetOrCreateFirebasePushSubscriptionCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): GetOrCreateFirebasePushSubscriptionCommand {\n data = typeof data === 'object' ? data : {};\n let result = new GetOrCreateFirebasePushSubscriptionCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): GetOrCreateFirebasePushSubscriptionCommand {\n const json = this.toJSON();\n let result = new GetOrCreateFirebasePushSubscriptionCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGetOrCreateFirebasePushSubscriptionCommand {\n pageId: number;\n token: string;\n}\n\nexport class PaginatedListOfSearchResultDto implements IPaginatedListOfSearchResultDto {\n items!: SearchResultDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfSearchResultDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SearchResultDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfSearchResultDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfSearchResultDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfSearchResultDto {\n const json = this.toJSON();\n let result = new PaginatedListOfSearchResultDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfSearchResultDto {\n items: SearchResultDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport enum ModuleType {\n None = 0,\n Latest = 1,\n Statistics = 2,\n News = 3,\n Typo3 = 4,\n ExternalSite = 5,\n Geo = 6,\n Calendar = 7,\n Directory = 8,\n Database = 9,\n App = 10,\n Settings = 11,\n Organizer = 12,\n Interaction = 13,\n Council = 14,\n Shop = 15,\n Communication = 16,\n Gallery = 17,\n Problem = 18,\n Tracking = 19,\n Booking = 20,\n Help = 100,\n Admin = 101,\n Logo = 102,\n}\n\nexport class SearchSettingsDto implements ISearchSettingsDto {\n searchSlug?: string | undefined;\n\n constructor(data?: ISearchSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.searchSlug = _data[\"searchSlug\"];\n }\n }\n\n static fromJS(data: any): SearchSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new SearchSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"searchSlug\"] = this.searchSlug;\n return data;\n }\n\n clone(): SearchSettingsDto {\n const json = this.toJSON();\n let result = new SearchSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchSettingsDto {\n searchSlug?: string | undefined;\n}\n\nexport class ShopSettingsDto implements IShopSettingsDto {\n reviewMode!: ReviewMode;\n quantityMode!: QuantityMode;\n shoppingCartLink!: string;\n formConfirmationHtml?: string | undefined;\n\n constructor(data?: IShopSettingsDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.reviewMode = _data[\"reviewMode\"];\n this.quantityMode = _data[\"quantityMode\"];\n this.shoppingCartLink = _data[\"shoppingCartLink\"];\n this.formConfirmationHtml = _data[\"formConfirmationHtml\"];\n }\n }\n\n static fromJS(data: any): ShopSettingsDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopSettingsDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"reviewMode\"] = this.reviewMode;\n data[\"quantityMode\"] = this.quantityMode;\n data[\"shoppingCartLink\"] = this.shoppingCartLink;\n data[\"formConfirmationHtml\"] = this.formConfirmationHtml;\n return data;\n }\n\n clone(): ShopSettingsDto {\n const json = this.toJSON();\n let result = new ShopSettingsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopSettingsDto {\n reviewMode: ReviewMode;\n quantityMode: QuantityMode;\n shoppingCartLink: string;\n formConfirmationHtml?: string | undefined;\n}\n\nexport enum ReviewMode {\n Disabled = 0,\n Public = 1,\n}\n\nexport enum QuantityMode {\n Hidden = 0,\n TrafficLight = 1,\n Numeric = 2,\n}\n\nexport class PaginatedListOfShopProductTeaserDto implements IPaginatedListOfShopProductTeaserDto {\n items!: ShopProductTeaserDto[];\n pageNumber!: number;\n totalPages!: number;\n totalCount!: number;\n hasPreviousPage!: boolean;\n hasNextPage!: boolean;\n\n constructor(data?: IPaginatedListOfShopProductTeaserDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ShopProductTeaserDto.fromJS(item));\n }\n this.pageNumber = _data[\"pageNumber\"];\n this.totalPages = _data[\"totalPages\"];\n this.totalCount = _data[\"totalCount\"];\n this.hasPreviousPage = _data[\"hasPreviousPage\"];\n this.hasNextPage = _data[\"hasNextPage\"];\n }\n }\n\n static fromJS(data: any): PaginatedListOfShopProductTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaginatedListOfShopProductTeaserDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n data[\"pageNumber\"] = this.pageNumber;\n data[\"totalPages\"] = this.totalPages;\n data[\"totalCount\"] = this.totalCount;\n data[\"hasPreviousPage\"] = this.hasPreviousPage;\n data[\"hasNextPage\"] = this.hasNextPage;\n return data;\n }\n\n clone(): PaginatedListOfShopProductTeaserDto {\n const json = this.toJSON();\n let result = new PaginatedListOfShopProductTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaginatedListOfShopProductTeaserDto {\n items: ShopProductTeaserDto[];\n pageNumber: number;\n totalPages: number;\n totalCount: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport class ShopProductTeaserDto extends ItemTeaserDto implements IShopProductTeaserDto {\n rating?: number | undefined;\n grossPrice!: number;\n\n constructor(data?: IShopProductTeaserDto) {\n super(data);\n this._discriminator = \"ShopProductTeaserDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.rating = _data[\"rating\"];\n this.grossPrice = _data[\"grossPrice\"];\n }\n }\n\n static override fromJS(data: any): ShopProductTeaserDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopProductTeaserDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"rating\"] = this.rating;\n data[\"grossPrice\"] = this.grossPrice;\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopProductTeaserDto {\n const json = this.toJSON();\n let result = new ShopProductTeaserDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopProductTeaserDto extends IItemTeaserDto {\n rating?: number | undefined;\n grossPrice: number;\n}\n\nexport class ShippingOption implements IShippingOption {\n id!: string;\n label!: string;\n grossCost!: number;\n type!: ShippingOptionType;\n\n constructor(data?: IShippingOption) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.label = _data[\"label\"];\n this.grossCost = _data[\"grossCost\"];\n this.type = _data[\"type\"];\n }\n }\n\n static fromJS(data: any): ShippingOption {\n data = typeof data === 'object' ? data : {};\n let result = new ShippingOption();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"label\"] = this.label;\n data[\"grossCost\"] = this.grossCost;\n data[\"type\"] = this.type;\n return data;\n }\n\n clone(): ShippingOption {\n const json = this.toJSON();\n let result = new ShippingOption();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShippingOption {\n id: string;\n label: string;\n grossCost: number;\n type: ShippingOptionType;\n}\n\nexport enum ShippingOptionType {\n Postal = 0,\n Digital = 1,\n Pickup = 2,\n}\n\nexport class PaymentOption implements IPaymentOption {\n type!: PaymentType;\n additionalPaymentCosts!: number;\n\n constructor(data?: IPaymentOption) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.additionalPaymentCosts = _data[\"additionalPaymentCosts\"];\n }\n }\n\n static fromJS(data: any): PaymentOption {\n data = typeof data === 'object' ? data : {};\n let result = new PaymentOption();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"additionalPaymentCosts\"] = this.additionalPaymentCosts;\n return data;\n }\n\n clone(): PaymentOption {\n const json = this.toJSON();\n let result = new PaymentOption();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaymentOption {\n type: PaymentType;\n additionalPaymentCosts: number;\n}\n\nexport enum PaymentType {\n None = 0,\n PayPal = 1,\n Invoice = 2,\n}\n\nexport class OrderBreakdownDto implements IOrderBreakdownDto {\n shippingGrossCost!: number;\n shippingTaxes!: number;\n paymentGrossCost!: number;\n paymentTaxes!: number;\n shippingOptionLabel!: string;\n totalTaxes!: number;\n totalGrossCost!: number;\n orderItems!: PaymentOrderItemDto[];\n\n constructor(data?: IOrderBreakdownDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.orderItems = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.shippingGrossCost = _data[\"shippingGrossCost\"];\n this.shippingTaxes = _data[\"shippingTaxes\"];\n this.paymentGrossCost = _data[\"paymentGrossCost\"];\n this.paymentTaxes = _data[\"paymentTaxes\"];\n this.shippingOptionLabel = _data[\"shippingOptionLabel\"];\n this.totalTaxes = _data[\"totalTaxes\"];\n this.totalGrossCost = _data[\"totalGrossCost\"];\n if (Array.isArray(_data[\"orderItems\"])) {\n this.orderItems = [] as any;\n for (let item of _data[\"orderItems\"])\n this.orderItems!.push(PaymentOrderItemDto.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): OrderBreakdownDto {\n data = typeof data === 'object' ? data : {};\n let result = new OrderBreakdownDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"shippingGrossCost\"] = this.shippingGrossCost;\n data[\"shippingTaxes\"] = this.shippingTaxes;\n data[\"paymentGrossCost\"] = this.paymentGrossCost;\n data[\"paymentTaxes\"] = this.paymentTaxes;\n data[\"shippingOptionLabel\"] = this.shippingOptionLabel;\n data[\"totalTaxes\"] = this.totalTaxes;\n data[\"totalGrossCost\"] = this.totalGrossCost;\n if (Array.isArray(this.orderItems)) {\n data[\"orderItems\"] = [];\n for (let item of this.orderItems)\n data[\"orderItems\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): OrderBreakdownDto {\n const json = this.toJSON();\n let result = new OrderBreakdownDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IOrderBreakdownDto {\n shippingGrossCost: number;\n shippingTaxes: number;\n paymentGrossCost: number;\n paymentTaxes: number;\n shippingOptionLabel: string;\n totalTaxes: number;\n totalGrossCost: number;\n orderItems: PaymentOrderItemDto[];\n}\n\nexport class PaymentOrderItemDto implements IPaymentOrderItemDto {\n name!: string;\n amount!: number;\n individualGrossPrice!: number;\n individualTaxes!: number;\n sumGrossPrice!: number;\n sumTaxes!: number;\n\n constructor(data?: IPaymentOrderItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.amount = _data[\"amount\"];\n this.individualGrossPrice = _data[\"individualGrossPrice\"];\n this.individualTaxes = _data[\"individualTaxes\"];\n this.sumGrossPrice = _data[\"sumGrossPrice\"];\n this.sumTaxes = _data[\"sumTaxes\"];\n }\n }\n\n static fromJS(data: any): PaymentOrderItemDto {\n data = typeof data === 'object' ? data : {};\n let result = new PaymentOrderItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"amount\"] = this.amount;\n data[\"individualGrossPrice\"] = this.individualGrossPrice;\n data[\"individualTaxes\"] = this.individualTaxes;\n data[\"sumGrossPrice\"] = this.sumGrossPrice;\n data[\"sumTaxes\"] = this.sumTaxes;\n return data;\n }\n\n clone(): PaymentOrderItemDto {\n const json = this.toJSON();\n let result = new PaymentOrderItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPaymentOrderItemDto {\n name: string;\n amount: number;\n individualGrossPrice: number;\n individualTaxes: number;\n sumGrossPrice: number;\n sumTaxes: number;\n}\n\nexport class ShopOrderItemDto implements IShopOrderItemDto {\n productId!: number;\n amount!: number;\n\n constructor(data?: IShopOrderItemDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.productId = _data[\"productId\"];\n this.amount = _data[\"amount\"];\n }\n }\n\n static fromJS(data: any): ShopOrderItemDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopOrderItemDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"productId\"] = this.productId;\n data[\"amount\"] = this.amount;\n return data;\n }\n\n clone(): ShopOrderItemDto {\n const json = this.toJSON();\n let result = new ShopOrderItemDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopOrderItemDto {\n productId: number;\n amount: number;\n}\n\nexport class ShopProductDto extends ItemDto implements IShopProductDto {\n currentQuantity?: number | undefined;\n grossPrice!: number;\n rating?: number | undefined;\n reviews!: ShopReviewDto[];\n pictures!: GalleryImage[];\n\n constructor(data?: IShopProductDto) {\n super(data);\n if (!data) {\n this.reviews = [];\n this.pictures = [];\n }\n this._discriminator = \"ShopProductDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.currentQuantity = _data[\"currentQuantity\"];\n this.grossPrice = _data[\"grossPrice\"];\n this.rating = _data[\"rating\"];\n if (Array.isArray(_data[\"reviews\"])) {\n this.reviews = [] as any;\n for (let item of _data[\"reviews\"])\n this.reviews!.push(ShopReviewDto.fromJS(item));\n }\n if (Array.isArray(_data[\"pictures\"])) {\n this.pictures = [] as any;\n for (let item of _data[\"pictures\"])\n this.pictures!.push(GalleryImage.fromJS(item));\n }\n }\n }\n\n static override fromJS(data: any): ShopProductDto {\n data = typeof data === 'object' ? data : {};\n if (data[\"discriminator\"] === \"PublicShopProductDetailsDto\") {\n let result = new PublicShopProductDetailsDto();\n result.init(data);\n return result;\n }\n let result = new ShopProductDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"currentQuantity\"] = this.currentQuantity;\n data[\"grossPrice\"] = this.grossPrice;\n data[\"rating\"] = this.rating;\n if (Array.isArray(this.reviews)) {\n data[\"reviews\"] = [];\n for (let item of this.reviews)\n data[\"reviews\"].push(item.toJSON());\n }\n if (Array.isArray(this.pictures)) {\n data[\"pictures\"] = [];\n for (let item of this.pictures)\n data[\"pictures\"].push(item.toJSON());\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopProductDto {\n const json = this.toJSON();\n let result = new ShopProductDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopProductDto extends IItemDto {\n currentQuantity?: number | undefined;\n grossPrice: number;\n rating?: number | undefined;\n reviews: ShopReviewDto[];\n pictures: GalleryImage[];\n}\n\nexport class ShopReviewDto extends ItemDto implements IShopReviewDto {\n creator!: string;\n createdByCurrentUser!: boolean;\n createdInBackend!: boolean;\n rating!: number;\n\n constructor(data?: IShopReviewDto) {\n super(data);\n this._discriminator = \"ShopReviewDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.creator = _data[\"creator\"];\n this.createdByCurrentUser = _data[\"createdByCurrentUser\"];\n this.createdInBackend = _data[\"createdInBackend\"];\n this.rating = _data[\"rating\"];\n }\n }\n\n static override fromJS(data: any): ShopReviewDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopReviewDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"creator\"] = this.creator;\n data[\"createdByCurrentUser\"] = this.createdByCurrentUser;\n data[\"createdInBackend\"] = this.createdInBackend;\n data[\"rating\"] = this.rating;\n super.toJSON(data);\n return data;\n }\n\n clone(): ShopReviewDto {\n const json = this.toJSON();\n let result = new ShopReviewDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopReviewDto extends IItemDto {\n creator: string;\n createdByCurrentUser: boolean;\n createdInBackend: boolean;\n rating: number;\n}\n\nexport class ShopOrderSubmittedResponseDto implements IShopOrderSubmittedResponseDto {\n type!: ShopOrderSubmittedResponseType;\n details!: string;\n\n constructor(data?: IShopOrderSubmittedResponseDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"];\n this.details = _data[\"details\"];\n }\n }\n\n static fromJS(data: any): ShopOrderSubmittedResponseDto {\n data = typeof data === 'object' ? data : {};\n let result = new ShopOrderSubmittedResponseDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"details\"] = this.details;\n return data;\n }\n\n clone(): ShopOrderSubmittedResponseDto {\n const json = this.toJSON();\n let result = new ShopOrderSubmittedResponseDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IShopOrderSubmittedResponseDto {\n type: ShopOrderSubmittedResponseType;\n details: string;\n}\n\nexport enum ShopOrderSubmittedResponseType {\n NoFurtherActionRequired = 0,\n EmailConfirmationNeeded = 1,\n PayPalRedirect = 2,\n}\n\nexport class PublicSubmitShopOrderCommand implements IPublicSubmitShopOrderCommand {\n pageId!: number;\n orderItems!: ShopOrderItemDto[];\n paymentType!: PaymentType;\n shippingOptionId!: string;\n billingAddress!: Address;\n shippingAddress?: Address | undefined;\n\n constructor(data?: IPublicSubmitShopOrderCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.orderItems = [];\n this.billingAddress = new Address();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n if (Array.isArray(_data[\"orderItems\"])) {\n this.orderItems = [] as any;\n for (let item of _data[\"orderItems\"])\n this.orderItems!.push(ShopOrderItemDto.fromJS(item));\n }\n this.paymentType = _data[\"paymentType\"];\n this.shippingOptionId = _data[\"shippingOptionId\"];\n this.billingAddress = _data[\"billingAddress\"] ? Address.fromJS(_data[\"billingAddress\"]) : new Address();\n this.shippingAddress = _data[\"shippingAddress\"] ? Address.fromJS(_data[\"shippingAddress\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PublicSubmitShopOrderCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitShopOrderCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n if (Array.isArray(this.orderItems)) {\n data[\"orderItems\"] = [];\n for (let item of this.orderItems)\n data[\"orderItems\"].push(item.toJSON());\n }\n data[\"paymentType\"] = this.paymentType;\n data[\"shippingOptionId\"] = this.shippingOptionId;\n data[\"billingAddress\"] = this.billingAddress ? this.billingAddress.toJSON() : undefined;\n data[\"shippingAddress\"] = this.shippingAddress ? this.shippingAddress.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicSubmitShopOrderCommand {\n const json = this.toJSON();\n let result = new PublicSubmitShopOrderCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitShopOrderCommand {\n pageId: number;\n orderItems: ShopOrderItemDto[];\n paymentType: PaymentType;\n shippingOptionId: string;\n billingAddress: Address;\n shippingAddress?: Address | undefined;\n}\n\nexport class PublicCreateShopOrderCommand implements IPublicCreateShopOrderCommand {\n pageId!: number;\n orderId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateShopOrderCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.orderId = _data[\"orderId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateShopOrderCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateShopOrderCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"orderId\"] = this.orderId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateShopOrderCommand {\n const json = this.toJSON();\n let result = new PublicCreateShopOrderCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateShopOrderCommand {\n pageId: number;\n orderId: number;\n token: string;\n}\n\nexport class PublicSubmitShopReviewCommand implements IPublicSubmitShopReviewCommand {\n pageId!: number;\n productId!: number;\n creator!: Address;\n document!: Node;\n rating!: number;\n\n constructor(data?: IPublicSubmitShopReviewCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.creator = new Address();\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.productId = _data[\"productId\"];\n this.creator = _data[\"creator\"] ? Address.fromJS(_data[\"creator\"]) : new Address();\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n this.rating = _data[\"rating\"];\n }\n }\n\n static fromJS(data: any): PublicSubmitShopReviewCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicSubmitShopReviewCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"productId\"] = this.productId;\n data[\"creator\"] = this.creator ? this.creator.toJSON() : undefined;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n data[\"rating\"] = this.rating;\n return data;\n }\n\n clone(): PublicSubmitShopReviewCommand {\n const json = this.toJSON();\n let result = new PublicSubmitShopReviewCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicSubmitShopReviewCommand {\n pageId: number;\n productId: number;\n creator: Address;\n document: Node;\n rating: number;\n}\n\nexport class PublicCreateShopReviewCommand implements IPublicCreateShopReviewCommand {\n pageId!: number;\n productId!: number;\n reviewId!: number;\n token!: string;\n\n constructor(data?: IPublicCreateShopReviewCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.productId = _data[\"productId\"];\n this.reviewId = _data[\"reviewId\"];\n this.token = _data[\"token\"];\n }\n }\n\n static fromJS(data: any): PublicCreateShopReviewCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicCreateShopReviewCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"productId\"] = this.productId;\n data[\"reviewId\"] = this.reviewId;\n data[\"token\"] = this.token;\n return data;\n }\n\n clone(): PublicCreateShopReviewCommand {\n const json = this.toJSON();\n let result = new PublicCreateShopReviewCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicCreateShopReviewCommand {\n pageId: number;\n productId: number;\n reviewId: number;\n token: string;\n}\n\nexport class PublicShopProductDetailsDto extends ShopProductDto implements IPublicShopProductDetailsDto {\n\n constructor(data?: IPublicShopProductDetailsDto) {\n super(data);\n this._discriminator = \"PublicShopProductDetailsDto\";\n }\n\n override init(_data?: any) {\n super.init(_data);\n }\n\n static override fromJS(data: any): PublicShopProductDetailsDto {\n data = typeof data === 'object' ? data : {};\n let result = new PublicShopProductDetailsDto();\n result.init(data);\n return result;\n }\n\n override toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): PublicShopProductDetailsDto {\n const json = this.toJSON();\n let result = new PublicShopProductDetailsDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicShopProductDetailsDto extends IShopProductDto {\n}\n\nexport class PublicUpdateShopReviewCommand implements IPublicUpdateShopReviewCommand {\n pageId!: number;\n reviewId!: number;\n token!: string;\n document!: Node;\n\n constructor(data?: IPublicUpdateShopReviewCommand) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.document = new Node();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.pageId = _data[\"pageId\"];\n this.reviewId = _data[\"reviewId\"];\n this.token = _data[\"token\"];\n this.document = _data[\"document\"] ? Node.fromJS(_data[\"document\"]) : new Node();\n }\n }\n\n static fromJS(data: any): PublicUpdateShopReviewCommand {\n data = typeof data === 'object' ? data : {};\n let result = new PublicUpdateShopReviewCommand();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"pageId\"] = this.pageId;\n data[\"reviewId\"] = this.reviewId;\n data[\"token\"] = this.token;\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\n return data;\n }\n\n clone(): PublicUpdateShopReviewCommand {\n const json = this.toJSON();\n let result = new PublicUpdateShopReviewCommand();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPublicUpdateShopReviewCommand {\n pageId: number;\n reviewId: number;\n token: string;\n document: Node;\n}\n\nexport class CurrentWeatherDto implements ICurrentWeatherDto {\n current!: WeatherDto;\n next!: WeatherDto;\n\n constructor(data?: ICurrentWeatherDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.current = new WeatherDto();\n this.next = new WeatherDto();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.current = _data[\"current\"] ? WeatherDto.fromJS(_data[\"current\"]) : new WeatherDto();\n this.next = _data[\"next\"] ? WeatherDto.fromJS(_data[\"next\"]) : new WeatherDto();\n }\n }\n\n static fromJS(data: any): CurrentWeatherDto {\n data = typeof data === 'object' ? data : {};\n let result = new CurrentWeatherDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"current\"] = this.current ? this.current.toJSON() : undefined;\n data[\"next\"] = this.next ? this.next.toJSON() : undefined;\n return data;\n }\n\n clone(): CurrentWeatherDto {\n const json = this.toJSON();\n let result = new CurrentWeatherDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICurrentWeatherDto {\n current: WeatherDto;\n next: WeatherDto;\n}\n\nexport class WeatherDto implements IWeatherDto {\n dateTime!: Date;\n temperature!: number;\n category!: string;\n description!: string;\n iconUrl!: string;\n imageUrl!: string;\n\n constructor(data?: IWeatherDto) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateTime = _data[\"dateTime\"] ? new Date(_data[\"dateTime\"].toString()) : undefined;\n this.temperature = _data[\"temperature\"];\n this.category = _data[\"category\"];\n this.description = _data[\"description\"];\n this.iconUrl = _data[\"iconUrl\"];\n this.imageUrl = _data[\"imageUrl\"];\n }\n }\n\n static fromJS(data: any): WeatherDto {\n data = typeof data === 'object' ? data : {};\n let result = new WeatherDto();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateTime\"] = this.dateTime ? this.dateTime.toISOString() : undefined;\n data[\"temperature\"] = this.temperature;\n data[\"category\"] = this.category;\n data[\"description\"] = this.description;\n data[\"iconUrl\"] = this.iconUrl;\n data[\"imageUrl\"] = this.imageUrl;\n return data;\n }\n\n clone(): WeatherDto {\n const json = this.toJSON();\n let result = new WeatherDto();\n result.init(json);\n return result;\n }\n}\n\nexport interface IWeatherDto {\n dateTime: Date;\n temperature: number;\n category: string;\n description: string;\n iconUrl: string;\n imageUrl: string;\n}\n\nexport enum SignalRClientMethods {\n NotificationReceived = 0,\n}\n\nexport enum SignalRServerMethods {\n NotifyAll = 0,\n NotifyUser = 1,\n}\n\nfunction formatDate(d: Date) {\n return d.getFullYear() + '-' + \n (d.getMonth() < 9 ? ('0' + (d.getMonth()+1)) : (d.getMonth()+1)) + '-' +\n (d.getDate() < 10 ? ('0' + d.getDate()) : d.getDate());\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new ApiException(message, status, response, headers, null);\n}"],"mappings":"MAUaA,EACDC,WAAWC,EAAWC,GAC9B,OAAOC,OAAOC,UAAUC,O,CAGhBC,uBAAuBC,GAC/BA,EAAQC,QAAOC,OAAAC,OAAAD,OAAAC,OAAA,GACVH,EAAQC,SAAO,CAClBG,KAAQR,OAAOS,SAASC,WAG1B,GAAIV,OAAOS,SAASE,OAAOC,QAAQ,iBAAmB,EAAG,CACvDR,EAAQC,QAAOC,OAAAC,OAAAD,OAAAC,OAAA,GACVH,EAAQC,SAAO,CAClBQ,QAAW,Q,CAIf,OAAOT,C,QAqIEU,UAAsBlB,EAK/BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,qCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYI,EAAmBC,OAAOJ,GACtC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA4B,K,CAG/CC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKC,EAAyBX,OAAOtB,G,KAEnD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAoC,K,CAGvDS,aAAa1C,EAAgB2C,EAAsCC,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8CC,EAAiCC,EAA2C5D,EAAoC6D,EAAqDhD,GACtd,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI2C,IAAa7C,WAAa6C,IAAa,KACvCxC,GAAQ,YAAcG,mBAAmB,GAAKqC,GAAY,IAC9D,GAAIC,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIwC,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuD,oBAAoBnC,I,CAI9BmC,oBAAoBjC,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2B,EAAwCtB,OAAOJ,GAC3D,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAiD,K,CAGpEoB,YAAYrD,EAAgBsD,EAAoBC,EAA+BrD,GAC3E,IAAIC,EAAOP,KAAKhB,QAAU,mDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIsD,IAAexD,WAAawD,IAAe,KAC3C,MAAM,IAAIlD,MAAM,+CACpBD,EAAOA,EAAKE,QAAQ,eAAgBC,mBAAmB,GAAKgD,IAC5D,GAAIC,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK4D,mBAAmBxC,I,CAI7BwC,mBAAmBtC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYgC,GAAmB3B,OAAOJ,GACtC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA4B,K,CAG/CyB,wBAAwB1D,EAAgB2D,EAA+CC,EAAYC,EAAaC,EAAiD5D,GAC7J,IAAIC,EAAOP,KAAKhB,QAAU,kDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI2D,IAAY7D,UACZ,MAAM,IAAIM,MAAM,iDACf,GAAGuD,IAAY,KAChBA,GAAWA,EAAQpD,SAAQ,CAACC,EAAMuD,KAC9B,IAAK,IAAIC,KAAQxD,EACtB,GAAIA,EAAKyD,eAAeD,GAAO,CAC9B7D,GAAQ,WAAa4D,EAAQ,KAAOC,EAAO,IAAM1D,mBAAmB,GAAME,EAAawD,IAAS,G,KAGpG,GAAIJ,IAAS9D,WAAa8D,IAAS,KAC/B,MAAM,IAAIxD,MAAM,iEAEhBD,GAAQ,QAAUG,mBAAmBsD,EAAO,GAAKA,EAAKM,cAAgB,IAAM,IAChF,GAAIL,IAAU/D,WAAa+D,IAAU,KACjC,MAAM,IAAIzD,MAAM,kEAEhBD,GAAQ,SAAWG,mBAAmBuD,EAAQ,GAAKA,EAAMK,cAAgB,IAAM,IACnF,GAAIJ,IAAwBhE,WAAagE,IAAwB,KAC7D3D,GAAQ,uBAAyBG,mBAAmB,GAAKwD,GAAuB,IACpF3D,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuE,+BAA+BnD,I,CAIzCmD,+BAA+BjD,GACrC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK4B,GAAgCtC,OAAOtB,G,KAE1D,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,IAAK,CACvB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAI6C,EAAiB,KACrB,IAAIC,EAAgB9C,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjFwE,EAAYE,EAAezC,OAAOwC,GAClC,OAAOvC,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUiD,EAAU,G,KAE/F,CACH,OAAOnD,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GE,qBAAqB1E,EAAgB2D,EAA+CC,EAAYC,EAAaC,EAAiD5D,GAC1J,IAAIC,EAAOP,KAAKhB,QAAU,+CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI2D,IAAY7D,UACZ,MAAM,IAAIM,MAAM,iDACf,GAAGuD,IAAY,KAChBA,GAAWA,EAAQpD,SAAQ,CAACC,EAAMuD,KAC9B,IAAK,IAAIC,KAAQxD,EACtB,GAAIA,EAAKyD,eAAeD,GAAO,CAC9B7D,GAAQ,WAAa4D,EAAQ,KAAOC,EAAO,IAAM1D,mBAAmB,GAAME,EAAawD,IAAS,G,KAGpG,GAAIJ,IAAS9D,WAAa8D,IAAS,KAC/B,MAAM,IAAIxD,MAAM,iEAEhBD,GAAQ,QAAUG,mBAAmBsD,EAAO,GAAKA,EAAKM,cAAgB,IAAM,IAChF,GAAIL,IAAU/D,WAAa+D,IAAU,KACjC,MAAM,IAAIzD,MAAM,kEAEhBD,GAAQ,SAAWG,mBAAmBuD,EAAQ,GAAKA,EAAMK,cAAgB,IAAM,IACnF,GAAIJ,IAAwBhE,WAAagE,IAAwB,KAC7D3D,GAAQ,uBAAyBG,mBAAmB,GAAKwD,GAAuB,IACpF3D,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK+E,4BAA4B3D,I,CAItC2D,4BAA4BzD,GAClC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKoC,GAA4B9C,OAAOtB,G,KAEtD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,IAAK,CACvB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAI6C,EAAiB,KACrB,IAAIC,EAAgB9C,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjFwE,EAAYE,EAAezC,OAAOwC,GAClC,OAAOvC,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUiD,EAAU,G,KAE/F,CACH,OAAOnD,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GK,kBAAkB7E,EAAgB8E,EAAgD5E,GAC9E,IAAIC,EAAOP,KAAKhB,QAAU,wCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsF,yBAAyBlE,I,CAInCkE,yBAAyBhE,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY0D,GAAuCrD,OAAOJ,GAC1D,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GY,kBAAkBpF,EAAgB8E,EAAgD5E,GAC9E,IAAIC,EAAOP,KAAKhB,QAAU,+CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,qBAIxB,OAAOa,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyF,yBAAyBrE,I,CAInCqE,yBAAyBnE,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,O,KAG1B,CACH,OAAON,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,SAiCrGc,UAAuBhH,EAKhCmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY8D,GAAoBzD,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,wCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKgD,EAA0B1D,OAAOtB,G,KAEpD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAqC,K,CAGxDwD,UAAUzF,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8Ca,EAAgCC,EAAiCb,EAAiCC,EAA2C5D,EAAoC6D,EAAqDhD,GAC9e,IAAIC,EAAOP,KAAKhB,QAAU,oCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIoD,IAAS9D,WAAa8D,IAAS,KAC/BzD,GAAQ,QAAUG,mBAAmBsD,EAAO,GAAKA,EAAKM,cAAgB,IAAM,IAChF,GAAIL,IAAU/D,WAAa+D,IAAU,KACjC1D,GAAQ,SAAWG,mBAAmBuD,EAAQ,GAAKA,EAAMK,cAAgB,IAAM,IACnF,GAAIlB,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8F,iBAAiB1E,I,CAI3B0E,iBAAiBxE,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYkE,GAAsC7D,OAAOJ,GACzD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA+C,K,CAGlE2D,iBAAiB5F,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C8C,EAAyC3C,EAAqDhD,GAC7S,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIqF,IAAkB/F,WAAa+F,IAAkB,KACjD1F,GAAQ,iBAAmBG,mBAAmBuF,EAAgB,GAAKA,EAAc3B,cAAgB,IAAM,IAC3G,GAAIhB,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKkG,wBAAwB9E,I,CAIlC8E,wBAAwB5E,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCuE,kBAAkBxG,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C8C,EAAyC3C,EAAqDhD,GAC9S,IAAIC,EAAOP,KAAKhB,QAAU,6CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIqF,IAAkB/F,WAAa+F,IAAkB,KACjD1F,GAAQ,iBAAmBG,mBAAmBuF,EAAgB,GAAKA,EAAc3B,cAAgB,IAAM,IAC3G,GAAIhB,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK6G,yBAAyBzF,I,CAInCyF,yBAAyBvF,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCyE,iBAAiB1G,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C8C,EAAyCc,EAAkCC,EAAsC1D,EAAqDhD,GACrX,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIqF,IAAkB/F,WAAa+F,IAAkB,KACjD1F,GAAQ,iBAAmBG,mBAAmBuF,EAAgB,GAAKA,EAAc3B,cAAgB,IAAM,IAC3G,GAAIyC,IAAe,KACf,MAAM,IAAIvG,MAAM,mDACf,GAAIuG,IAAe7G,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKqG,GAAc,IAClE,GAAIC,IAAmB,KACnB,MAAM,IAAIxG,MAAM,uDACf,GAAIwG,IAAmB9G,UACxBK,GAAQ,kBAAoBG,mBAAmB,GAAKsG,GAAkB,IAC1E,GAAI1D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiH,wBAAwB7F,I,CAIlC6F,wBAAwB3F,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzC6E,kBAAkB9G,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C8C,EAAyC3C,EAAqDhD,GAC9S,IAAIC,EAAOP,KAAKhB,QAAU,iDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIqF,IAAkB/F,WAAa+F,IAAkB,KACjD1F,GAAQ,iBAAmBG,mBAAmBuF,EAAgB,GAAKA,EAAc3B,cAAgB,IAAM,IAC3G,GAAIhB,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmH,yBAAyB/F,I,CAInC+F,yBAAyB7F,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzC+E,mBAAmBhH,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C8C,EAAyC3C,EAAqDhD,GAC/S,IAAIC,EAAOP,KAAKhB,QAAU,kDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIqF,IAAkB/F,WAAa+F,IAAkB,KACjD1F,GAAQ,iBAAmBG,mBAAmBuF,EAAgB,GAAKA,EAAc3B,cAAgB,IAAM,IAC3G,GAAIhB,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqH,0BAA0BjG,I,CAIpCiG,0BAA0B/F,GAChC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCiF,kBAAkBlH,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C8C,EAAyCc,EAAkCC,EAAsC1D,EAAqDhD,GACtX,IAAIC,EAAOP,KAAKhB,QAAU,iDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIqF,IAAkB/F,WAAa+F,IAAkB,KACjD1F,GAAQ,iBAAmBG,mBAAmBuF,EAAgB,GAAKA,EAAc3B,cAAgB,IAAM,IAC3G,GAAIyC,IAAe,KACf,MAAM,IAAIvG,MAAM,mDACf,GAAIuG,IAAe7G,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKqG,GAAc,IAClE,GAAIC,IAAmB,KACnB,MAAM,IAAIxG,MAAM,uDACf,GAAIwG,IAAmB9G,UACxBK,GAAQ,kBAAoBG,mBAAmB,GAAKsG,GAAkB,IAC1E,GAAI1D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuH,yBAAyBnG,I,CAInCmG,yBAAyBjG,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCmF,aAAapH,EAAgBC,EAA2CC,GACpE,IAAIC,EAAOP,KAAKhB,QAAU,wCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyH,oBAAoBrG,I,CAI9BqG,oBAAoBnG,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCqF,YAAYtH,EAAgBuH,EAAiBrH,GACzC,IAAIC,EAAOP,KAAKhB,QAAU,iDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIuH,IAAYzH,WAAayH,IAAY,KACrC,MAAM,IAAInH,MAAM,4CACpBD,EAAOA,EAAKE,QAAQ,YAAaC,mBAAmB,GAAKiH,IACzDpH,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK4H,mBAAmBxG,I,CAI7BwG,mBAAmBtG,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCwF,SAASzH,EAAgBuH,EAAiBhE,EAA+BrD,GACrE,IAAIC,EAAOP,KAAKhB,QAAU,8CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIuH,IAAYzH,WAAayH,IAAY,KACrC,MAAM,IAAInH,MAAM,4CACpBD,EAAOA,EAAKE,QAAQ,YAAaC,mBAAmB,GAAKiH,IACzD,GAAIhE,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8H,gBAAgB1G,I,CAI1B0G,gBAAgBxG,GACtB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYkG,GAAiB7F,OAAOJ,GACpC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA0B,K,QAepC2F,UAA4BtJ,EAKrCmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,2CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYoG,GAAyB/F,OAAOJ,GAC5C,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAkC,K,CAGrD6F,gBAAgB9H,EAAgB8E,EAAoD5E,GAChF,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmI,uBAAuB/G,I,CAIjC+G,uBAAuB7G,GAC7B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GwD,gBAAgBhI,EAAgB8E,EAAoD5E,GAChF,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,SACRR,SACAnB,QAAS,CACL,eAAgB,qBAIxB,OAAOa,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqI,uBAAuBjH,I,CAIjCiH,uBAAuB/G,GAC7B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,O,KAG1B,CACH,OAAON,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9G0D,gBAAgBlI,EAAgB8E,EAAoD5E,GAChF,IAAIC,EAAOP,KAAKhB,QAAU,mDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuI,uBAAuBnH,I,CAIjCmH,uBAAuBjH,GAC7B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,SAmBrG4D,UAAuB9J,EAKhCmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBE,GACxB,IAAIC,EAAOP,KAAKhB,QAAU,qCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY4G,GAAoBvG,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,wCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK8F,EAA0BxG,OAAOtB,G,KAEpD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAqC,K,CAGxDsG,WAAWvI,EAAgBwI,EAA6CC,EAAoD7F,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C2F,EAAmCzF,EAA2C5D,EAAoC6D,EAAqDhD,GACjhB,IAAIC,EAAOP,KAAKhB,QAAU,qCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIwI,IAAkB1I,WAAa0I,IAAkB,KACjDA,GAAiBA,EAAcjI,SAAQC,IAAUL,GAAQ,iBAAmBG,mBAAmB,GAAKE,GAAQ,GAAG,IACnH,GAAIiI,IAAiB3I,WAAa2I,IAAiB,KAC/CA,GAAgBA,EAAalI,SAAQ,CAACC,EAAMuD,KACxC,IAAK,IAAIC,KAAQxD,EACtB,GAAIA,EAAKyD,eAAeD,GAAO,CAC9B7D,GAAQ,gBAAkB4D,EAAQ,KAAOC,EAAO,IAAM1D,mBAAmB,GAAME,EAAawD,IAAS,G,KAGzG,GAAIpB,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIkI,IAAiB,KACjB,MAAM,IAAItI,MAAM,qDACf,GAAIsI,IAAiB5I,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAKoI,GAAgB,IACtE,GAAIzF,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK+I,kBAAkB3H,I,CAI5B2H,kBAAkBzH,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYmH,GAAuC9G,OAAOJ,GAC1D,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAgD,K,CAGnE4G,UAAU7I,EAAgB8I,EAAkBvF,EAA+BrD,GACvE,IAAIC,EAAOP,KAAKhB,QAAU,gDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI8I,IAAahJ,WAAagJ,IAAa,KACvC,MAAM,IAAI1I,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKwI,IAC1D,GAAIvF,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmJ,iBAAiB/H,I,CAI3B+H,iBAAiB7H,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYuH,GAAkBlH,OAAOJ,GACrC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA2B,K,CAG9CgH,eAAejJ,EAAgBwI,EAAgCtI,GAC3D,IAAIC,EAAOP,KAAKhB,QAAU,yCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIwI,IAAkB1I,UAClB,MAAM,IAAIM,MAAM,uDACf,GAAGoI,IAAkB,KACtBA,GAAiBA,EAAcjI,SAAQC,IAAUL,GAAQ,iBAAmBG,mBAAmB,GAAKE,GAAQ,GAAG,IACnHL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsJ,sBAAsBlI,I,CAIhCkI,sBAAsBhI,GAC5B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK2G,GAAsBrH,OAAOtB,G,KAEhD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAiC,K,QAqC3CmH,UAAwB9K,EAKjCmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCyK,WAAWrJ,EAAgBsJ,EAA8BrJ,EAA2CiD,EAAqDhD,GACrJ,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIsJ,IAAkBxJ,WAAawJ,IAAkB,KACjD,MAAM,IAAIlJ,MAAM,0EAEhBD,GAAQ,iBAAmBG,mBAAmB,GAAKgJ,GAAiB,IACxE,GAAIrJ,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI0C,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK2J,kBAAkBvI,I,CAI5BuI,kBAAkBrI,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKhC,E,KAEnB,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAkB,K,CAGrCuH,SAASxJ,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C0G,EAAoCpK,EAAoC6D,EAAqDhD,GACpY,IAAIC,EAAOP,KAAKhB,QAAU,oCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIiJ,IAAW3J,WAAa2J,IAAW,KACnCtJ,GAAQ,UAAYG,mBAAmB,GAAKmJ,GAAU,IAC1D,GAAIpK,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8J,gBAAgB1I,I,CAI1B0I,gBAAgBxI,GACtB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYkI,GAAsC7H,OAAOJ,GACzD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA+C,K,CAGlE2H,kBAAkB5J,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC/J,IAAIC,EAAOP,KAAKhB,QAAU,6CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiK,yBAAyB7I,I,CAInC6I,yBAAyB3I,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKsH,EAA+BhI,OAAOtB,G,KAEzD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA0C,K,CAG7D8H,YAAY/J,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C0G,EAAoCpK,EAAoC6D,EAAqDhD,GACvY,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIiJ,IAAW3J,WAAa2J,IAAW,KACnCtJ,GAAQ,UAAYG,mBAAmB,GAAKmJ,GAAU,IAC1D,GAAIpK,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKoK,mBAAmBhJ,I,CAI7BgJ,mBAAmB9I,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYwI,GAAyCnI,OAAOJ,GAC5D,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAkD,K,CAGrEiI,gBAAgBlK,EAAgBC,EAA2C6C,EAAuCV,EAAkDW,EAA8C1D,EAAoC6D,EAAqDhD,GACvS,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAInB,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuK,uBAAuBnJ,I,CAIjCmJ,uBAAuBjJ,GAC7B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK4H,GAA4BtI,OAAOtB,G,KAEtD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAuC,K,CAG1DoI,WAAWrK,EAAgBsK,EAAmB/G,EAA+BrD,GACzE,IAAIC,EAAOP,KAAKhB,QAAU,mDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIsK,IAAcxK,WAAawK,IAAc,KACzC,MAAM,IAAIlK,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAKgK,IAC3D,GAAI/G,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK2K,kBAAkBvJ,I,CAI5BuJ,kBAAkBrJ,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY+I,GAAoB1I,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDwI,WAAWzK,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C0G,EAAoCpK,EAAoCqL,EAA0CxH,EAAqDhD,GAChb,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIiJ,IAAW3J,WAAa2J,IAAW,KACnCtJ,GAAQ,UAAYG,mBAAmB,GAAKmJ,GAAU,IAC1D,GAAIpK,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAIqL,IAAe5K,WAAa4K,IAAe,KAC3CA,GAAcA,EAAWnK,SAAQC,IAAUL,GAAQ,cAAgBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC1G,GAAI0C,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK+K,kBAAkB3J,I,CAI5B2J,kBAAkBzJ,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYmJ,GAAwC9I,OAAOJ,GAC3D,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAiD,K,CAGpE4I,kBAAkB7K,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C0G,EAAoCpK,EAAoCqL,EAA0CxH,EAAqDhD,GACvb,IAAIC,EAAOP,KAAKhB,QAAU,8CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIiJ,IAAW3J,WAAa2J,IAAW,KACnCtJ,GAAQ,UAAYG,mBAAmB,GAAKmJ,GAAU,IAC1D,GAAIpK,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAIqL,IAAe5K,WAAa4K,IAAe,KAC3CA,GAAcA,EAAWnK,SAAQC,IAAUL,GAAQ,cAAgBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC1G,GAAI0C,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKkL,yBAAyB9J,I,CAInC8J,yBAAyB5J,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYsJ,GAA+CjJ,OAAOJ,GAClE,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAwD,K,CAG3E+I,UAAUhL,EAAgBiL,EAAkB1H,EAA+BrD,GACvE,IAAIC,EAAOP,KAAKhB,QAAU,iDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIiL,IAAanL,WAAamL,IAAa,KACvC,MAAM,IAAI7K,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAK2K,IAC1D,GAAI1H,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsL,iBAAiBlK,I,CAI3BkK,iBAAiBhK,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY0J,GAAmBrJ,OAAOJ,GACtC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA4B,K,CAG/CmJ,YAAYpL,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C0G,EAAoCpK,EAAoCgM,EAAsCC,EAAyCpI,EAAqDhD,GACtd,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIiJ,IAAW3J,WAAa2J,IAAW,KACnCtJ,GAAQ,UAAYG,mBAAmB,GAAKmJ,GAAU,IAC1D,GAAIpK,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAIgM,IAAmB,KACnB,MAAM,IAAIjL,MAAM,uDACf,GAAIiL,IAAmBvL,UACxBK,GAAQ,kBAAoBG,mBAAmB,GAAK+K,GAAkB,IAC1E,GAAIC,IAAsB,KACtB,MAAM,IAAIlL,MAAM,0DACf,GAAIkL,IAAsBxL,UAC3BK,GAAQ,qBAAuBG,mBAAmB,GAAKgL,GAAqB,IAChF,GAAIpI,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK2L,mBAAmBvK,I,CAI7BuK,mBAAmBrK,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY+J,GAAyC1J,OAAOJ,GAC5D,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAkD,K,CAGrEwJ,iBAAiBzL,EAAgBE,GAC7B,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8L,wBAAwB1K,I,CAIlC0K,wBAAwBxK,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzC0J,gBAAgBC,EAAmB5L,EAAgBE,GAC/C,IAAIC,EAAOP,KAAKhB,QAAU,4DAC1B,GAAIgN,IAAc9L,WAAa8L,IAAc,KACzC,MAAM,IAAIxL,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAKsL,IAC3D,GAAI5L,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiM,uBAAuB7K,I,CAIjC6K,uBAAuB3K,GAC7B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzC6J,WAAW9L,EAAgB4L,EAAmBrI,EAA+BrD,GACzE,IAAIC,EAAOP,KAAKhB,QAAU,mDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4L,IAAc9L,WAAa8L,IAAc,KACzC,MAAM,IAAIxL,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAKsL,IAC3D,GAAIrI,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmM,kBAAkB/K,I,CAI5B+K,kBAAkB7K,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYuK,GAAoBlK,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDgK,cAAcjM,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8C0G,EAAoCpK,EAAoC6D,EAAqDhD,GACzY,IAAIC,EAAOP,KAAKhB,QAAU,yCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIiJ,IAAW3J,WAAa2J,IAAW,KACnCtJ,GAAQ,UAAYG,mBAAmB,GAAKmJ,GAAU,IAC1D,GAAIpK,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsM,qBAAqBlL,I,CAI/BkL,qBAAqBhL,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY0K,GAA2CrK,OAAOJ,GAC9D,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAoD,K,CAGvEmK,aAAapM,EAAgBqM,EAAqB9I,EAA+BrD,GAC7E,IAAIC,EAAOP,KAAKhB,QAAU,uDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIqM,IAAgBvM,WAAauM,IAAgB,KAC7C,MAAM,IAAIjM,MAAM,gDACpBD,EAAOA,EAAKE,QAAQ,gBAAiBC,mBAAmB,GAAK+L,IAC7D,GAAI9I,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK0M,oBAAoBtL,I,CAI9BsL,oBAAoBpL,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY8K,GAAsBzK,OAAOJ,GACzC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA+B,K,QAazCuK,UAAoBlO,EAK7BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvC6N,QAAQC,EAAgBC,EAAkCC,EAAmCC,EAAoCC,EAA+BC,EAA+BC,EAAmC9M,GAC9N,IAAIC,EAAOP,KAAKhB,QAAU,0BAC1B,GAAI8N,IAAW5M,WAAa4M,IAAW,KACnC,MAAM,IAAItM,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKoM,IACxD,GAAIC,IAAS7M,WAAa6M,IAAS,KAC/BxM,GAAQ,QAAUG,mBAAmB,GAAKqM,GAAQ,IACtD,GAAIC,IAAU9M,WAAa8M,IAAU,KACjCzM,GAAQ,SAAWG,mBAAmB,GAAKsM,GAAS,IACxD,GAAIC,IAAW/M,WAAa+M,IAAW,KACnC1M,GAAQ,UAAYG,mBAAmB,GAAKuM,GAAU,IAC1D,GAAIC,IAAMhN,WAAagN,IAAM,KACzB3M,GAAQ,KAAOG,mBAAmB,GAAKwM,GAAK,IAChD,GAAIC,IAAMjN,WAAaiN,IAAM,KACzB5M,GAAQ,KAAOG,mBAAmB,GAAKyM,GAAK,IAChD,GAAIC,IAASlN,WAAakN,IAAS,KAC/B7M,GAAQ,QAAUG,mBAAmB,GAAK0M,GAAQ,IACtD7M,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqN,eAAejM,I,CAIzBiM,eAAe/L,GACrB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCiL,WAAWR,EAAgBxM,GACvB,IAAIC,EAAOP,KAAKhB,QAAU,6BAC1B,GAAI8N,IAAW5M,WAAa4M,IAAW,KACnC,MAAM,IAAItM,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKoM,IACxDvM,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuN,kBAAkBnM,I,CAI5BmM,kBAAkBjM,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2L,EAAQtL,OAAOJ,GAC3B,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAiB,K,CAGpCoL,WAAWC,EAAyCpN,GAChD,IAAIC,EAAOP,KAAKhB,QAAU,gBAC1BuB,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAW,IAAIwI,SACrB,GAAID,IAAS,MAAQA,IAASxN,UAC1BiF,EAASyI,OAAO,OAAQF,EAAK/G,KAAM+G,EAAKnH,SAAWmH,EAAKnH,SAAW,QAEvE,IAAI1F,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK6N,kBAAkBzM,I,CAI5ByM,kBAAkBvM,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2L,EAAQtL,OAAOJ,GAC3B,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,IAAK,CACvB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAI6C,EAAiB,KACrB,IAAIC,EAAgB9C,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjFwE,EAAYE,EAAezC,OAAOwC,GAClC,OAAOvC,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUiD,EAAU,G,KAE/F,CACH,OAAOnD,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,SAiBrGkJ,UAAsBpP,EAK/BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,qCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYkM,GAAmB7L,OAAOJ,GACtC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA4B,K,CAG/CC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKoL,EAAyB9L,OAAOtB,G,KAEnD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAoC,K,CAGvD4L,UAAU7N,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8CC,EAAiCC,EAA2C5D,EAAoC6D,EAAqDhD,GAC7a,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIwC,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKkO,iBAAiB9M,I,CAI3B8M,iBAAiB5M,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYsM,GAAqCjM,OAAOJ,GACxD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA8C,K,CAGjE+L,SAAShO,EAAgBiO,EAAiB1K,EAA+BrD,GACrE,IAAIC,EAAOP,KAAKhB,QAAU,6CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIiO,IAAYnO,WAAamO,IAAY,KACrC,MAAM,IAAI7N,MAAM,4CACpBD,EAAOA,EAAKE,QAAQ,YAAaC,mBAAmB,GAAK2N,IACzD,GAAI1K,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsO,gBAAgBlN,I,CAI1BkN,gBAAgBhN,GACtB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY0M,GAAgBrM,OAAOJ,GACnC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAyB,K,QAWnCmM,UAAwB9P,EAKjCmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCyP,iBAAiBC,EAAwBC,EAAsC5K,EAAgD6K,EAA4BtO,GACvJ,IAAIC,EAAOP,KAAKhB,QAAU,6BAC1B,GAAI0P,IAAYxO,UACZ,MAAM,IAAIM,MAAM,iDACf,GAAGkO,IAAY,KAChBnO,GAAQ,WAAaG,mBAAmB,GAAKgO,GAAW,IAC5D,GAAIC,IAAazO,WAAayO,IAAa,KACvCpO,GAAQ,YAAcG,mBAAmB,GAAKiO,GAAY,IAC9D,GAAI5K,IAAY7D,WAAa6D,IAAY,KACrCA,GAAWA,EAAQpD,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAIgO,IAAU,KACV,MAAM,IAAIpO,MAAM,8CACf,GAAIoO,IAAU1O,UACfK,GAAQ,SAAWG,mBAAmB,GAAKkO,GAAS,IACxDrO,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK6O,wBAAwBzN,I,CAIlCyN,wBAAwBvN,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKkM,GAAQ5M,OAAOtB,G,KAElC,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAmB,K,CAGtC0M,iBAAiBC,EAAmBC,EAAkBL,EAA4BtO,GAC9E,IAAIC,EAAOP,KAAKhB,QAAU,6BAC1B,GAAIgQ,IAAc9O,WAAa8O,IAAc,KACzC,MAAM,IAAIxO,MAAM,sEAEhBD,GAAQ,aAAeG,mBAAmB,GAAKsO,GAAa,IAChE,GAAIC,IAAa/O,WAAa+O,IAAa,KACvC,MAAM,IAAIzO,MAAM,qEAEhBD,GAAQ,YAAcG,mBAAmB,GAAKuO,GAAY,IAC9D,GAAIL,IAAU,KACV,MAAM,IAAIpO,MAAM,8CACf,GAAIoO,IAAU1O,UACfK,GAAQ,SAAWG,mBAAmB,GAAKkO,GAAS,IACxDrO,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKkP,wBAAwB9N,I,CAIlC8N,wBAAwB5N,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKkM,GAAQ5M,OAAOtB,G,KAElC,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAmB,K,QAe7B8M,UAAkBzQ,EAK3BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,iCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYuN,GAAelN,OAAOJ,GAClC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAwB,K,CAG3CC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKyM,EAAqBnN,OAAOtB,G,KAE/C,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAgC,K,CAGnDsG,WAAWvI,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8CC,EAAiCC,EAA2C5D,EAAoC6P,EAAwDC,EAAuDC,EAAwDC,EAA4DC,EAAoDC,EAAmDC,EAAoDC,EAAmDC,EAAkCnM,EAA+BL,EAAqDhD,GACh6B,IAAIC,EAAOP,KAAKhB,QAAU,gCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIwC,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6P,IAA+BpP,WAAaoP,IAA+B,KAC3E/O,GAAQ,8BAAgCG,mBAAmB,GAAK4O,GAA8B,IAClG,GAAIC,IAA8BrP,WAAaqP,IAA8B,KACzEhP,GAAQ,6BAA+BG,mBAAmB,GAAK6O,GAA6B,IAChG,GAAIC,IAA+BtP,WAAasP,IAA+B,KAC3EjP,GAAQ,8BAAgCG,mBAAmB,GAAK8O,GAA8B,IAClG,GAAIC,IAAmCvP,WAAauP,IAAmC,KACnFlP,GAAQ,kCAAoCG,mBAAmB,GAAK+O,GAAkC,IAC1G,GAAIC,IAAkC,KAClC,MAAM,IAAIlP,MAAM,sEACf,GAAIkP,IAAkCxP,UACvCK,GAAQ,iCAAmCG,mBAAmB,GAAKgP,GAAiC,IACxG,GAAIC,IAAiC,KACjC,MAAM,IAAInP,MAAM,qEACf,GAAImP,IAAiCzP,UACtCK,GAAQ,gCAAkCG,mBAAmB,GAAKiP,GAAgC,IACtG,GAAIC,IAAkC,KAClC,MAAM,IAAIpP,MAAM,sEACf,GAAIoP,IAAkC1P,UACvCK,GAAQ,iCAAmCG,mBAAmB,GAAKkP,GAAiC,IACxG,GAAIC,IAAiC,KACjC,MAAM,IAAIrP,MAAM,qEACf,GAAIqP,IAAiC3P,UACtCK,GAAQ,gCAAkCG,mBAAmB,GAAKmP,GAAgC,IACtG,GAAIC,IAAW5P,WAAa4P,IAAW,KACnCvP,GAAQ,UAAYG,mBAAmBoP,EAAS,GAAKA,EAAOxL,cAAgB,IAAM,IACtF,GAAIX,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5D,GAAIL,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK+I,kBAAkB3H,I,CAI5B2H,kBAAkBzH,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYkO,GAAkC7N,OAAOJ,GACrD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA2C,K,CAG9D4G,UAAU7I,EAAgB8I,EAAkBvF,EAA+BrD,GACvE,IAAIC,EAAOP,KAAKhB,QAAU,2CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI8I,IAAahJ,WAAagJ,IAAa,KACvC,MAAM,IAAI1I,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKwI,IAC1D,GAAIvF,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmJ,iBAAiB/H,I,CAI3B+H,iBAAiB7H,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYmO,GAAa9N,OAAOJ,GAChC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,QAehC4N,UAA0BvR,EAKnCmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCkR,QAAQ9P,EAAgB+P,EAAgBxM,EAA+BrD,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,+CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI+P,IAAWjQ,WAAaiQ,IAAW,KACnC,MAAM,IAAI3P,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKyP,IACxD,GAAIxM,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKoQ,eAAehP,I,CAIzBgP,eAAe9O,GACrB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYwO,GAAmBnO,OAAOJ,GACtC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA4B,K,CAG/CiO,WAAWlQ,EAAgB8E,EAA6C5E,GACpE,IAAIC,EAAOP,KAAKhB,QAAU,qCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuQ,kBAAkBnP,I,CAI5BmP,kBAAkBjP,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2O,EAAKtO,OAAOJ,GACxB,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9G6L,UAAUrQ,EAAgBsQ,EAAkB/M,EAA+BrD,GACvE,IAAIC,EAAOP,KAAKhB,QAAU,mDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIsQ,IAAaxQ,WAAawQ,IAAa,KACvC,MAAM,IAAIlQ,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKgQ,IAC1D,GAAI/M,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK2Q,iBAAiBvP,I,CAI3BuP,iBAAiBrP,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY+O,GAAqB1O,OAAOJ,GACxC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA8B,K,CAGjDwO,aAAazQ,EAAgB8E,EAA+C5E,GACxE,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8Q,oBAAoB1P,I,CAI9B0P,oBAAoBxP,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2O,EAAKtO,OAAOJ,GACxB,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,SAqBrGmM,UAAmBrS,EAK5BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,kCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYmP,GAAgB9O,OAAOJ,GACnC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAyB,K,CAG5CC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,oCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKqO,EAAsB/O,OAAOtB,G,KAEhD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAiC,K,CAGpD6O,YAAY9Q,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8CC,EAAiCC,EAA2C5D,EAAoCuE,EAAgCC,EAAiCX,EAAqDhD,GAChf,IAAIC,EAAOP,KAAKhB,QAAU,kCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIwC,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAIuE,IAAS9D,WAAa8D,IAAS,KAC/BzD,GAAQ,QAAUG,mBAAmBsD,EAAO,GAAKA,EAAKM,cAAgB,IAAM,IAChF,GAAIL,IAAU/D,WAAa+D,IAAU,KACjC1D,GAAQ,SAAWG,mBAAmBuD,EAAQ,GAAKA,EAAMK,cAAgB,IAAM,IACnF,GAAIhB,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmR,mBAAmB/P,I,CAI7B+P,mBAAmB7P,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYuP,GAAoClP,OAAOJ,GACvD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6C,K,CAGhEgP,eAAejR,EAAgBC,EAA2CC,GACtE,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,6BAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsR,sBAAsBlQ,I,CAIhCkQ,sBAAsBhQ,GAC5B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAM4E,EAAqB7E,EAASnC,QAAUmC,EAASnC,QAAQiH,IAAI,uBAAyBlG,UAC5F,IAAImG,EAAgBF,EAAqB,6DAA6DG,KAAKH,GAAsBjG,UACjI,IAAIqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,IAAMA,EAAc,GAAKnG,UAClG,GAAIqG,EAAU,CACVA,EAAWE,mBAAmBF,E,KAC3B,CACHF,EAAgBF,EAAqB,8BAA8BG,KAAKH,GAAsBjG,UAC9FqG,EAAWF,GAAiBA,EAAcG,OAAS,EAAIH,EAAc,GAAKnG,S,CAE9E,OAAOoB,EAASoF,OAAOzF,MAAKyF,IAAiB,CAAEH,SAAUA,EAAUI,KAAMD,EAAMnF,OAAQA,EAAQpC,QAASqC,K,MACrG,GAAID,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzCkP,WAAWnR,EAAgBoR,EAAmB7N,EAA+BrD,GACzE,IAAIC,EAAOP,KAAKhB,QAAU,8CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIoR,IAActR,WAAasR,IAAc,KACzC,MAAM,IAAIhR,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAK8Q,IAC3D,GAAI7N,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyR,kBAAkBrQ,I,CAI5BqQ,kBAAkBnQ,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY6P,GAAexP,OAAOJ,GAClC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAwB,K,CAG3CsP,oBAAoBvR,EAAgBC,EAA2CiD,EAAqDhD,GAChI,IAAIC,EAAOP,KAAKhB,QAAU,4CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI0C,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK4R,2BAA2BxQ,I,CAIrCwQ,2BAA2BtQ,GACjC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYgQ,GAAa3P,OAAOJ,GAChC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,QAWhCyP,UAAmBpT,EAK5BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvC+S,iBAAiBzR,GACb,IAAIC,EAAOP,KAAKhB,QAAU,uBAC1BuB,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKgS,wBAAwB5Q,I,CAIlC4Q,wBAAwB1Q,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAuB,K,CAG1C4P,QAAQ7R,EAAgB8R,EAAoB5R,GACxC,IAAIC,EAAOP,KAAKhB,QAAU,2CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI8R,IAAehS,WAAagS,IAAe,KAC3C,MAAM,IAAI1R,MAAM,+CACpBD,EAAOA,EAAKE,QAAQ,eAAgBC,mBAAmB,GAAKwR,IAC5D3R,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmS,eAAe/Q,I,CAIzB+Q,eAAe7Q,GACrB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYuQ,GAAalQ,OAAOJ,GAChC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,QA+BhCgQ,UAAsB3T,EAK/BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,qCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYyQ,GAAmBpQ,OAAOJ,GACtC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA4B,K,CAG/CC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK2P,EAAyBrQ,OAAOtB,G,KAEnD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAoC,K,CAGvDmQ,WAAWpS,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8CC,EAAiCC,EAA2C5D,EAAoC6D,EAAqDhD,GAC9a,IAAIC,EAAOP,KAAKhB,QAAU,oCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIwC,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyS,kBAAkBrR,I,CAI5BqR,kBAAkBnR,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY6Q,GAAsCxQ,OAAOJ,GACzD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA+C,K,CAGlEsQ,aAAavS,EAAgB8E,EAA2C5E,GACpE,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK4S,oBAAoBxR,I,CAI9BwR,oBAAoBtR,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GiO,UAAUzS,EAAgB0S,EAAkBnP,EAA+BrD,GACvE,IAAIC,EAAOP,KAAKhB,QAAU,+CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI0S,IAAa5S,WAAa4S,IAAa,KACvC,MAAM,IAAItS,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKoS,IAC1D,GAAInP,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK+S,iBAAiB3R,I,CAI3B2R,iBAAiBzR,GACvB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYmR,GAAiB9Q,OAAOJ,GACpC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA0B,K,CAG7C4Q,aAAa7S,EAAgB8E,EAA2C5E,GACpE,IAAIC,EAAOP,KAAKhB,QAAU,0CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKkT,oBAAoB9R,I,CAI9B8R,oBAAoB5R,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GuO,iBAAiB/S,EAAgB0S,EAAkBM,EAAsB9S,GACrE,IAAIC,EAAOP,KAAKhB,QAAU,uDAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI0S,IAAa5S,WAAa4S,IAAa,KACvC,MAAM,IAAItS,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKoS,IAC1D,GAAIM,IAAUlT,UACV,MAAM,IAAIM,MAAM,+CACf,GAAG4S,IAAU,KACd7S,GAAQ,SAAWG,mBAAmB,GAAK0S,GAAS,IACxD7S,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqT,wBAAwBjS,I,CAIlCiS,wBAAwB/R,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYyR,GAA8BpR,OAAOJ,GACjD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAuC,K,CAG1DkR,aAAanT,EAAgB8E,EAA2C5E,GACpE,IAAIC,EAAOP,KAAKhB,QAAU,0CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,qBAIxB,OAAOa,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKwT,oBAAoBpS,I,CAI9BoS,oBAAoBlS,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,O,KAG1B,CACH,OAAON,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9G6O,cAAcrT,EAAgB8E,EAA4C5E,GACtE,IAAIC,EAAOP,KAAKhB,QAAU,oCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK0T,qBAAqBtS,I,CAI/BsS,qBAAqBpS,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9G+O,cAAcvT,EAAgB8E,EAA4C5E,GACtE,IAAIC,EAAOP,KAAKhB,QAAU,2CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK4T,qBAAqBxS,I,CAI/BwS,qBAAqBtS,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GiP,kBAAkBzT,EAAgB0S,EAAkBgB,EAAmBV,EAAsB9S,GACzF,IAAIC,EAAOP,KAAKhB,QAAU,4EAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI0S,IAAa5S,WAAa4S,IAAa,KACvC,MAAM,IAAItS,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKoS,IAC1D,GAAIgB,IAAc5T,WAAa4T,IAAc,KACzC,MAAM,IAAItT,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAKoT,IAC3D,GAAIV,IAAUlT,UACV,MAAM,IAAIM,MAAM,+CACf,GAAG4S,IAAU,KACd7S,GAAQ,SAAWG,mBAAmB,GAAK0S,GAAS,IACxD7S,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK+T,yBAAyB3S,I,CAInC2S,yBAAyBzS,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYyR,GAA8BpR,OAAOJ,GACjD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAuC,K,CAG1D2R,cAAc5T,EAAgB8E,EAA4C5E,GACtE,IAAIC,EAAOP,KAAKhB,QAAU,2CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,qBAIxB,OAAOa,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiU,qBAAqB7S,I,CAI/B6S,qBAAqB3S,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,O,KAG1B,CACH,OAAON,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,SA+BrGsP,UAAmBxV,EAK5BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmV,oBAAoB7T,GAChB,IAAIC,EAAOP,KAAKhB,QAAU,6BAC1BuB,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKoU,2BAA2BhT,I,CAIrCgT,2BAA2B9S,GACjC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAgB,K,CAGnCgS,oBAAoBC,EAA+BhU,GAC/C,IAAIC,EAAOP,KAAKhB,QAAU,8CAC1B,GAAIsV,IAAmBpU,WAAaoU,IAAmB,KACnD,MAAM,IAAI9T,MAAM,mDACpBD,EAAOA,EAAKE,QAAQ,mBAAoBC,mBAAmB,GAAK4T,IAChE/T,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuU,2BAA2BnT,I,CAIrCmT,2BAA2BjT,GACjC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDoS,kBAAkBrU,EAAgBE,GAC9B,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK0U,yBAAyBtT,I,CAInCsT,yBAAyBpT,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK+R,GAA0BzS,OAAOtB,G,KAEpD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAqC,K,CAGxDuS,iCAAiC1P,EAAkD5E,GAC/E,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1BuB,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK6U,wCAAwCzT,I,CAIlDyT,wCAAwCvT,GAC9C,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,IAAK,CACvB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIkT,EAAiB,KACrB,IAAIC,EAAgBnT,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF6U,EAAYnQ,EAAezC,OAAO6S,GAClC,OAAO5S,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUsT,EAAU,G,KAE/F,CACH,OAAOxT,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GoQ,+BAA+B9P,EAAgD5E,GAC3E,IAAIC,EAAOP,KAAKhB,QAAU,iCAC1BuB,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiV,sCAAsC7T,I,CAIhD6T,sCAAsC3T,GAC5C,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,IAAK,CACvB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIkT,EAAiB,KACrB,IAAIC,EAAgBnT,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF6U,EAAYnQ,EAAezC,OAAO6S,GAClC,OAAO5S,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUsT,EAAU,G,KAE/F,CACH,OAAOxT,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GsQ,oCAAoChQ,EAAqD5E,GACrF,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1BuB,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKmV,2CAA2C/T,I,CAIrD+T,2CAA2C7T,GACjD,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,IAAK,CACvB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIkT,EAAiB,KACrB,IAAIC,EAAgBnT,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF6U,EAAYnQ,EAAezC,OAAO6S,GAClC,OAAO5S,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUsT,EAAU,G,KAE/F,CACH,OAAOxT,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GwQ,sBAAsBd,EAA+BjU,EAA2CC,GAC5F,IAAIC,EAAOP,KAAKhB,QAAU,0DAC1B,GAAIsV,IAAmBpU,WAAaoU,IAAmB,KACnD,MAAM,IAAI9T,MAAM,mDACpBD,EAAOA,EAAKE,QAAQ,mBAAoBC,mBAAmB,GAAK4T,IAChE,GAAIjU,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqV,6BAA6BjU,I,CAIvCiU,6BAA6B/T,GACnC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDiT,oBAAoBhB,EAA+BpC,EAAoB5R,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,sEAC1B,GAAIsV,IAAmBpU,WAAaoU,IAAmB,KACnD,MAAM,IAAI9T,MAAM,mDACpBD,EAAOA,EAAKE,QAAQ,mBAAoBC,mBAAmB,GAAK4T,IAChE,GAAIpC,IAAehS,WAAagS,IAAe,KAC3C,MAAM,IAAI1R,MAAM,+CACpBD,EAAOA,EAAKE,QAAQ,eAAgBC,mBAAmB,GAAKwR,IAC5D3R,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,OACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuV,2BAA2BnU,I,CAIrCmU,2BAA2BjU,GACjC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDmT,wBAAwBlB,EAA+BpC,EAAoB5R,GACvE,IAAIC,EAAOP,KAAKhB,QAAU,sEAC1B,GAAIsV,IAAmBpU,WAAaoU,IAAmB,KACnD,MAAM,IAAI9T,MAAM,mDACpBD,EAAOA,EAAKE,QAAQ,mBAAoBC,mBAAmB,GAAK4T,IAChE,GAAIpC,IAAehS,WAAagS,IAAe,KAC3C,MAAM,IAAI1R,MAAM,+CACpBD,EAAOA,EAAKE,QAAQ,eAAgBC,mBAAmB,GAAKwR,IAC5D3R,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,SACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyV,+BAA+BrU,I,CAIzCqU,+BAA+BnU,GACrC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDqT,oBAAoBpB,EAA+BqB,EAAgBrV,GAC/D,IAAIC,EAAOP,KAAKhB,QAAU,6DAC1B,GAAIsV,IAAmBpU,WAAaoU,IAAmB,KACnD,MAAM,IAAI9T,MAAM,mDACpBD,EAAOA,EAAKE,QAAQ,mBAAoBC,mBAAmB,GAAK4T,IAChE,GAAIqB,IAAWzV,WAAayV,IAAW,KACnC,MAAM,IAAInV,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKiV,IACxDpV,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,OACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK4V,2BAA2BxU,I,CAIrCwU,2BAA2BtU,GACjC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,CAGhDwT,wBAAwBvB,EAA+BqB,EAAgBrV,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,6DAC1B,GAAIsV,IAAmBpU,WAAaoU,IAAmB,KACnD,MAAM,IAAI9T,MAAM,mDACpBD,EAAOA,EAAKE,QAAQ,mBAAoBC,mBAAmB,GAAK4T,IAChE,GAAIqB,IAAWzV,WAAayV,IAAW,KACnC,MAAM,IAAInV,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKiV,IACxDpV,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,SACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8V,+BAA+B1U,I,CAIzC0U,+BAA+BxU,GACrC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2S,GAAoBtS,OAAOJ,GACvC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6B,K,QAevC0T,UAAqBrX,EAK9BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCgX,iBAAiB5V,EAAgBX,EAAoCuD,EAAiCC,EAA+BgT,EAAiD3V,GAClL,IAAIC,EAAOP,KAAKhB,QAAU,kCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIX,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAIuD,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAIgT,IAAkB/V,WAAa+V,IAAkB,KACjDA,GAAiBA,EAActV,SAAQC,IAAUL,GAAQ,iBAAmBG,mBAAmB,GAAKE,GAAQ,GAAG,IACnHL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKkW,wBAAwB9U,I,CAIlC8U,wBAAwB5U,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYsU,GAA+BjU,OAAOJ,GAClD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAwC,K,CAG3D+T,qBAAqBhW,EAAgBX,EAAuBmP,EAA4BqH,EAAiD3V,GACrI,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIX,IAAWS,UACX,MAAM,IAAIM,MAAM,gDACf,GAAGf,IAAW,KACfc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAImP,IAAU,KACV,MAAM,IAAIpO,MAAM,8CACf,GAAIoO,IAAU1O,UACfK,GAAQ,SAAWG,mBAAmB,GAAKkO,GAAS,IACxD,GAAIqH,IAAkB/V,WAAa+V,IAAkB,KACjDA,GAAiBA,EAActV,SAAQC,IAAUL,GAAQ,iBAAmBG,mBAAmB,GAAKE,GAAQ,GAAG,IACnHL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqW,4BAA4BjV,I,CAItCiV,4BAA4B/U,GAClC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKhC,E,KAEnB,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAkB,K,CAGrCiU,WAAWlW,EAAgBE,GACvB,IAAIC,EAAOP,KAAKhB,QAAU,kCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKuW,kBAAkBnV,I,CAI5BmV,kBAAkBjV,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKhC,E,KAEnB,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAsB,K,CAGzClC,YAAYC,EAAgBE,GACxB,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY2U,GAAkBtU,OAAOJ,GACrC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA2B,K,QAiCrCoU,UAAmB/X,EAK5BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCmB,YAAYC,EAAgBC,EAA2CC,GACnE,IAAIC,EAAOP,KAAKhB,QAAU,kCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7GL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqB,mBAAmBD,I,CAI7BC,mBAAmBC,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY6U,GAAgBxU,OAAOJ,GACnC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAyB,K,CAG5CC,cAAclC,EAAgBmC,EAAoClC,EAA2CmC,EAAkDlC,GAC3J,IAAIC,EAAOP,KAAKhB,QAAU,oCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAImC,IAAiB,KACjB,MAAM,IAAI/B,MAAM,qDACf,GAAI+B,IAAiBrC,UACtBK,GAAQ,gBAAkBG,mBAAmB,GAAK6B,GAAgB,IACtE,GAAIlC,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClIL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKyC,qBAAqBrB,I,CAI/BqB,qBAAqBnB,GAC3B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK+T,EAAsBzU,OAAOtB,G,KAEhD,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAiC,K,CAGpDuU,YAAYxW,EAAgB4C,EAAiCC,EAA+B5C,EAA2C6C,EAAuCV,EAAkDW,EAA8CC,EAAiCC,EAA2C5D,EAAoC6D,EAAqDhD,GAC/a,IAAIC,EAAOP,KAAKhB,QAAU,kCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4C,IAAe,KACf,MAAM,IAAIxC,MAAM,mDACf,GAAIwC,IAAe9C,UACpBK,GAAQ,cAAgBG,mBAAmB,GAAKsC,GAAc,IAClE,GAAIC,IAAa,KACb,MAAM,IAAIzC,MAAM,iDACf,GAAIyC,IAAa/C,UAClBK,GAAQ,YAAcG,mBAAmB,GAAKuC,GAAY,IAC9D,GAAI5C,IAAgBH,WAAaG,IAAgB,KAC7CA,GAAeA,EAAYM,SAAQC,IAAUL,GAAQ,eAAiBG,mBAAmB,GAAKE,GAAQ,GAAG,IAC7G,GAAIsC,IAAYhD,WAAagD,IAAY,KACrCA,GAAWA,EAAQvC,SAAQC,IAAUL,GAAQ,WAAaG,mBAAmB,GAAKE,GAAQ,GAAG,IACjG,GAAI4B,IAAuBtC,WAAasC,IAAuB,KAC3DA,GAAsBA,EAAmB7B,SAAQC,IAAUL,GAAQ,sBAAwBG,mBAAmB,GAAKE,GAAQ,GAAG,IAClI,GAAIuC,IAAmBjD,WAAaiD,IAAmB,KACnDA,GAAkBA,EAAexC,SAAQC,IAAUL,GAAQ,kBAAoBG,mBAAmB,GAAKE,GAAQ,GAAG,IACtH,GAAIwC,IAAa,KACb,MAAM,IAAI5C,MAAM,iDACf,GAAI4C,IAAalD,UAClBK,GAAQ,YAAcG,mBAAmB,GAAK0C,GAAY,IAC9D,GAAIC,IAAkB,KAClB,MAAM,IAAI7C,MAAM,sDACf,GAAI6C,IAAkBnD,UACvBK,GAAQ,iBAAmBG,mBAAmB,GAAK2C,GAAiB,IACxE,GAAI5D,IAAWS,WAAaT,IAAW,KACnCc,GAAQ,UAAYG,mBAAmB,GAAKjB,GAAU,IAC1D,GAAI6D,IAAuB,KACvB,MAAM,IAAI9C,MAAM,2DACf,GAAI8C,IAAuBpD,UAC5BK,GAAQ,sBAAwBG,mBAAmB,GAAK4C,GAAsB,IAClF/C,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK6W,mBAAmBzV,I,CAI7ByV,mBAAmBvV,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYiV,GAAoC5U,OAAOJ,GACvD,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA6C,K,CAGhE0U,mBAAmB3W,EAAgB4W,EAA+B1W,GAC9D,IAAIC,EAAOP,KAAKhB,QAAU,yCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4W,IAAiB9W,UACjB,MAAM,IAAIM,MAAM,sDACf,GAAGwW,IAAiB,KACrBA,GAAgBA,EAAarW,SAAQC,IAAUL,GAAQ,gBAAkBG,mBAAmB,GAAKE,GAAQ,GAAG,IAChHL,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiX,0BAA0B7V,I,CAIpC6V,0BAA0B3V,GAChC,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAKsU,GAAehV,OAAOtB,G,KAEzC,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA0B,K,CAG7C8U,kBAAkB/W,EAAgB4W,EAA+BI,EAA0B9W,GACvF,IAAIC,EAAOP,KAAKhB,QAAU,wCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAI4W,IAAiB9W,UACjB,MAAM,IAAIM,MAAM,sDACf,GAAGwW,IAAiB,KACrBA,GAAgBA,EAAarW,SAAQC,IAAUL,GAAQ,gBAAkBG,mBAAmB,GAAKE,GAAQ,GAAG,IAChH,GAAIwW,IAAqBlX,WAAakX,IAAqB,KACvD,MAAM,IAAI5W,MAAM,6EAEhBD,GAAQ,oBAAsBG,mBAAmB,GAAK0W,GAAoB,IAC9E7W,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKqX,yBAAyBjW,I,CAInCiW,yBAAyB/V,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF,GAAIyC,MAAMC,QAAQb,GAAgB,CAC9BD,EAAY,GACZ,IAAK,IAAIjB,KAAQkB,EACbD,EAAWe,KAAK0U,GAAcpV,OAAOtB,G,KAExC,CACDiB,EAAiB,I,CAErB,OAAOA,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAyB,K,CAG5CkV,kBAAkBnX,EAAgBoX,EAAuCC,EAA0BL,EAA0B9W,GACzH,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIoX,IAAetX,UACf,MAAM,IAAIM,MAAM,oDACf,GAAGgX,IAAe,KACnBA,GAAcA,EAAW7W,SAAQ,CAACC,EAAMuD,KACpC,IAAK,IAAIC,KAAQxD,EACtB,GAAIA,EAAKyD,eAAeD,GAAO,CAC9B7D,GAAQ,cAAgB4D,EAAQ,KAAOC,EAAO,IAAM1D,mBAAmB,GAAME,EAAawD,IAAS,G,KAGvG,GAAIqT,IAAgBvX,WAAauX,IAAgB,KAC7C,MAAM,IAAIjX,MAAM,wEAEhBD,GAAQ,eAAiBG,mBAAmB,GAAK+W,GAAe,IACpE,GAAIL,IAAqBlX,WAAakX,IAAqB,KACvD,MAAM,IAAI5W,MAAM,6EAEhBD,GAAQ,oBAAsBG,mBAAmB,GAAK0W,GAAoB,IAC9E7W,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK0X,yBAAyBtW,I,CAInCsW,yBAAyBpW,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY8V,GAAkBzV,OAAOJ,GACrC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA2B,K,CAG9CuV,WAAWxX,EAAgByX,EAAmBlU,EAA+BrD,GACzE,IAAIC,EAAOP,KAAKhB,QAAU,8CAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIyX,IAAc3X,WAAa2X,IAAc,KACzC,MAAM,IAAIrX,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAKmX,IAC3D,GAAIlU,IAAY,KACZ,MAAM,IAAInD,MAAM,gDACf,GAAImD,IAAYzD,UACjBK,GAAQ,WAAaG,mBAAmB,GAAKiD,GAAW,IAC5DpD,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8X,kBAAkB1W,I,CAI5B0W,kBAAkBxW,GACxB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYkW,GAAe7V,OAAOJ,GAClC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAwB,K,CAG3C2V,YAAY5X,EAAgB8E,EAAuC5E,GAC/D,IAAIC,EAAOP,KAAKhB,QAAU,+BAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiY,mBAAmB7W,I,CAI7B6W,mBAAmB3W,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYqW,GAA8BhW,OAAOJ,GACjD,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GuT,YAAY/X,EAAgB8E,EAAuC5E,GAC/D,IAAIC,EAAOP,KAAKhB,QAAU,sCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,qBAIxB,OAAOa,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKoY,mBAAmBhX,I,CAI7BgX,mBAAmB9W,GACzB,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,O,KAG1B,CACH,OAAON,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9GyT,aAAajY,EAAgB8E,EAAwC5E,GACjE,IAAIC,EAAOP,KAAKhB,QAAU,gCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,OACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKsY,oBAAoBlX,I,CAI9BkX,oBAAoBhX,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9G2T,aAAanY,EAAgB8E,EAAwC5E,GACjE,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,mBAChB4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKwY,oBAAoBpX,I,CAI9BoX,oBAAoBlX,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBAC7E4B,EAAYC,IAAkB5B,UAAY4B,EAAqB,KAEnE,OAAOD,CAAS,G,KAEb,CACH,OAAOP,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,EAK9G6T,iBAAiBrY,EAAgByX,EAAmBa,EAAkBtF,EAAsB9S,GACxF,IAAIC,EAAOP,KAAKhB,QAAU,yEAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxD,GAAIyX,IAAc3X,WAAa2X,IAAc,KACzC,MAAM,IAAIrX,MAAM,8CACpBD,EAAOA,EAAKE,QAAQ,cAAeC,mBAAmB,GAAKmX,IAC3D,GAAIa,IAAaxY,WAAawY,IAAa,KACvC,MAAM,IAAIlY,MAAM,6CACpBD,EAAOA,EAAKE,QAAQ,aAAcC,mBAAmB,GAAKgY,IAC1D,GAAItF,IAAUlT,UACV,MAAM,IAAIM,MAAM,+CACf,GAAG4S,IAAU,KACd7S,GAAQ,SAAWG,mBAAmB,GAAK0S,GAAS,IACxD7S,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK2Y,wBAAwBvX,I,CAIlCuX,wBAAwBrX,GAC9B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAY+W,GAA4B1W,OAAOJ,GAC/C,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAAqC,K,CAGxDwW,aAAazY,EAAgB8E,EAAwC5E,GACjE,IAAIC,EAAOP,KAAKhB,QAAU,uCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,MAAM0E,EAAWpD,KAAKqD,UAAUF,GAEhC,IAAIrE,EAAwB,CACxBwE,KAAMF,EACNrE,OAAQ,QACRR,SACAnB,QAAS,CACL,eAAgB,qBAIxB,OAAOa,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAK8Y,oBAAoB1X,I,CAI9B0X,oBAAoBxX,GAC1B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,O,KAG1B,CACH,OAAON,EAASK,OAAOV,MAAMW,IAC7B,IAAIgD,EAAqB,KACzB,IAAIC,EAAoBjD,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACrF2E,EAAgBD,EAAezC,OAAO2C,GACtC,OAAO1C,GAAe,gCAAiCZ,EAAQK,EAAeJ,EAAUoD,EAAc,G,SAwErGmU,UAAsBra,EAK/BmB,YAAYb,EAAkBc,GAC1BC,QAHMC,KAAAC,iBAAmEC,UAIzEF,KAAKF,KAAOA,EAAOA,EAAOhB,OAC1BkB,KAAKhB,QAAUgB,KAAKrB,WAAW,GAAIK,E,CAGvCga,kBAAkB5Y,EAAgBE,GAC9B,IAAIC,EAAOP,KAAKhB,QAAU,mCAC1B,GAAIoB,IAAWF,WAAaE,IAAW,KACnC,MAAM,IAAII,MAAM,2CACpBD,EAAOA,EAAKE,QAAQ,WAAYC,mBAAmB,GAAKN,IACxDG,EAAOA,EAAKE,QAAQ,QAAS,IAE7B,IAAII,EAAwB,CACxBC,OAAQ,MACRR,SACAnB,QAAS,CACL4B,OAAU,qBAIlB,OAAOf,KAAKgB,iBAAiBH,GAAUI,MAAKC,GACjClB,KAAKF,KAAKqB,MAAMZ,EAAMW,KAC9BD,MAAMG,GACEpB,KAAKiZ,yBAAyB7X,I,CAInC6X,yBAAyB3X,GAC/B,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,GAAI,GAAIF,EAASnC,SAAWmC,EAASnC,QAAQwB,QAAS,CAAEW,EAASnC,QAAQwB,SAAQ,CAACc,EAAQC,IAAWF,EAASE,GAAKD,G,CACvI,GAAIF,IAAW,IAAK,CAChB,OAAOD,EAASK,OAAOV,MAAMW,IAC7B,IAAIC,EAAiB,KACrB,IAAIC,EAAgBF,IAAkB,GAAK,KAAOG,KAAKC,MAAMJ,EAAe5B,KAAKC,kBACjF4B,EAAYqX,GAAkBhX,OAAOJ,GACrC,OAAOD,CAAS,G,MAEb,GAAIN,IAAW,KAAOA,IAAW,IAAK,CACzC,OAAOD,EAASK,OAAOV,MAAMW,GACtBO,GAAe,uCAAwCZ,EAAQK,EAAeJ,I,CAGzF,OAAOY,QAAQC,QAA2B,K,EAmMlD,IAAY8W,GAAZ,SAAYA,GACRA,IAAA,wBACAA,IAAA,4BACAA,IAAA,oBACAA,IAAA,oBACAA,IAAA,gCACAA,IAAA,wCACAA,IAAA,kBACAA,IAAA,0BACAA,IAAA,2BACH,EAVD,CAAYA,MAAQ,K,MAYP3L,EAKT3N,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKuZ,IAAMD,EAAM,OACjBtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInM,EACjBmM,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,OAAS3G,KAAKuZ,IACnB5S,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB,OAAO9S,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInM,EACjBmM,EAAON,KAAKS,GACZ,OAAOH,C,EAqQf,IAAYI,GAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,eACH,EAHD,CAAYA,MAAW,KAKvB,IAAYC,GAAZ,SAAYA,GACRA,IAAA,oBACAA,IAAA,sBACAA,IAAA,gCACAA,IAAA,oBACAA,IAAA,oBACAA,IAAA,kBACAA,IAAA,qBACH,EARD,CAAYA,MAAa,K,MA0HZxJ,EAOT3Q,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKka,MAAQZ,EAAM,SAAWa,EAAcjY,OAAOoX,EAAM,UAAiBpZ,UAC1E,GAAIwC,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAKoa,QAAU,GACf,IAAK,IAAIxZ,KAAQ0Y,EAAM,WACnBtZ,KAAKoa,QAASxX,KAAK4N,EAAKtO,OAAOtB,G,CAEvC,GAAI8B,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKqa,MAAQ,GACb,IAAK,IAAIzZ,KAAQ0Y,EAAM,SACnBtZ,KAAKqa,MAAOzX,KAAK0X,EAAKpY,OAAOtB,G,CAErCZ,KAAK2B,KAAO2X,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInJ,EACjBmJ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,SAAW3G,KAAKka,MAAQla,KAAKka,MAAMN,SAAgB1Z,UACxD,GAAIwC,MAAMC,QAAQ3C,KAAKoa,SAAU,CAC7BzT,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAKoa,QAClBzT,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElC,GAAIlX,MAAMC,QAAQ3C,KAAKqa,OAAQ,CAC3B1T,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKqa,MAClB1T,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,QAAU3G,KAAK2B,KACpB,OAAOgF,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInJ,EACjBmJ,EAAON,KAAKS,GACZ,OAAOH,C,MAYHY,GAAZ,SAAYA,GACRA,EAAA,2BACAA,EAAA,2BACAA,EAAA,aACAA,EAAA,yBACAA,EAAA,qBACAA,EAAA,mCACAA,EAAA,uBACAA,EAAA,6BACAA,EAAA,yBACAA,EAAA,iBACAA,EAAA,uBACAA,EAAA,6BACAA,EAAA,yBACAA,EAAA,eACAA,EAAA,qBACAA,EAAA,iBACAA,EAAA,iBACAA,EAAA,iCACAA,EAAA,iBACAA,EAAA,yBACAA,EAAA,6BACAA,EAAA,mBACAA,EAAA,yBACAA,EAAA,qCACAA,EAAA,uCACAA,EAAA,kBACH,EA3BD,CAAYA,MAAQ,K,MA6BPJ,EAoBTta,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwa,MAAQlB,EAAM,SACnBtZ,KAAKya,UAAYnB,EAAM,aACvBtZ,KAAK0a,QAAUpB,EAAM,WACrBtZ,KAAK2a,QAAUrB,EAAM,WACrBtZ,KAAK4a,SAAWtB,EAAM,YACtBtZ,KAAK6a,MAAQvB,EAAM,SACnBtZ,KAAK8a,SAAWxB,EAAM,YACtBtZ,KAAK+a,QAAUzB,EAAM,WACrBtZ,KAAKgN,MAAQsM,EAAM,SACnBtZ,KAAKgb,KAAO1B,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKib,OAAS,GACd,IAAK,IAAIra,KAAQ0Y,EAAM,UACnBtZ,KAAKib,OAAQrY,KAAKsY,EAAahZ,OAAOtB,G,CAE9CZ,KAAKmb,QAAU7B,EAAM,WACrBtZ,KAAKob,WAAa9B,EAAM,cACxBtZ,KAAK8M,OAASwM,EAAM,UACpBtZ,KAAKqb,IAAM/B,EAAM,OACjBtZ,KAAKsb,IAAMhC,EAAM,OACjBtZ,KAAKub,MAAQjC,EAAM,SACnBtZ,KAAKwb,QAAUlC,EAAM,U,EAI7BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIQ,EACjBR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAKwa,MACrB7T,EAAK,aAAe3G,KAAKya,UACzB9T,EAAK,WAAa3G,KAAK0a,QACvB/T,EAAK,WAAa3G,KAAK2a,QACvBhU,EAAK,YAAc3G,KAAK4a,SACxBjU,EAAK,SAAW3G,KAAK6a,MACrBlU,EAAK,YAAc3G,KAAK8a,SACxBnU,EAAK,WAAa3G,KAAK+a,QACvBpU,EAAK,SAAW3G,KAAKgN,MACrBrG,EAAK,QAAU3G,KAAKgb,KACpB,GAAItY,MAAMC,QAAQ3C,KAAKib,QAAS,CAC5BtU,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKib,OAClBtU,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjCjT,EAAK,WAAa3G,KAAKmb,QACvBxU,EAAK,cAAgB3G,KAAKob,WAC1BzU,EAAK,UAAY3G,KAAK8M,OACtBnG,EAAK,OAAS3G,KAAKqb,IACnB1U,EAAK,OAAS3G,KAAKsb,IACnB3U,EAAK,SAAW3G,KAAKub,MACrB5U,EAAK,WAAa3G,KAAKwb,QACvB,OAAO7U,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIQ,EACjBR,EAAON,KAAKS,GACZ,OAAOH,C,MAyBH8B,GAAZ,SAAYA,GACRA,EAAA,eACAA,EAAA,mBACAA,EAAA,gBACH,EAJD,CAAYA,MAAe,K,IAMfC,GAAZ,SAAYA,GACRA,EAAA,mBACAA,EAAA,4BACH,EAHD,CAAYA,MAAc,K,MAKbR,EAQTrb,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKqb,IAAM/B,EAAM,OACjBtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKsb,IAAMhC,EAAM,OACjBtZ,KAAKub,MAAQjC,EAAM,SACnBtZ,KAAKwb,QAAUlC,EAAM,WACrBtZ,KAAK2b,KAAOrC,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuB,EACjBvB,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,OAAS3G,KAAKqb,IACnB1U,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,OAAS3G,KAAKsb,IACnB3U,EAAK,SAAW3G,KAAKub,MACrB5U,EAAK,WAAa3G,KAAKwb,QACvB7U,EAAK,QAAU3G,KAAK2b,KACpB,OAAOhV,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuB,EACjBvB,EAAON,KAAKS,GACZ,OAAOH,C,QAaFW,EAITza,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKka,MAAQZ,EAAM,SAAWsC,EAAc1Z,OAAOoX,EAAM,UAAiBpZ,S,EAIlFwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIW,EACjBX,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,SAAW3G,KAAKka,MAAQla,KAAKka,MAAMN,SAAgB1Z,UACxD,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIW,EACjBX,EAAON,KAAKS,GACZ,OAAOH,C,MASHkC,GAAZ,SAAYA,GACRA,EAAA,eACAA,EAAA,mBACAA,EAAA,eACAA,EAAA,mBACAA,EAAA,yBACAA,EAAA,6BACAA,EAAA,yBACAA,EAAA,wBACH,EATD,CAAYA,MAAQ,K,MAWPD,EAST/b,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK8b,OAASxC,EAAM,UACpBtZ,KAAKub,MAAQjC,EAAM,SACnBtZ,KAAK+b,MAAQzC,EAAM,SACnBtZ,KAAK2b,KAAOrC,EAAM,QAClBtZ,KAAK8M,OAASwM,EAAM,UACpBtZ,KAAKgc,YAAc1C,EAAM,eACzBtZ,KAAKia,KAAOX,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIiC,EACjBjC,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAK8b,OACtBnV,EAAK,SAAW3G,KAAKub,MACrB5U,EAAK,SAAW3G,KAAK+b,MACrBpV,EAAK,QAAU3G,KAAK2b,KACpBhV,EAAK,UAAY3G,KAAK8M,OACtBnG,EAAK,eAAiB3G,KAAKgc,YAC3BrV,EAAK,QAAU3G,KAAKia,KACpB,OAAOtT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIiC,EACjBjC,EAAON,KAAKS,GACZ,OAAOH,C,EAcf,IAAYsC,GAAZ,SAAYA,GACRA,EAAA,eACAA,EAAA,eACAA,EAAA,eACAA,EAAA,uBACAA,EAAA,aACAA,EAAA,uBACAA,EAAA,qBACAA,EAAA,iCACAA,EAAA,uCACAA,EAAA,qCACAA,EAAA,uCACAA,EAAA,uCACAA,EAAA,2CACAA,EAAA,qCACAA,EAAA,cACH,EAhBD,CAAYA,MAAa,KA4RzB,IAAYC,GAAZ,SAAYA,GACRA,IAAA,wBACAA,IAAA,oBACAA,IAAA,0BACAA,IAAA,sBACAA,IAAA,kBACAA,IAAA,4BACAA,IAAA,8BACAA,IAAA,8BACAA,IAAA,oCACAA,IAAA,4BACAA,IAAA,mBACAA,IAAA,oBACH,EAbD,CAAYA,MAAO,K,MAeNvX,EAUT9E,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACP,IAAK,IAAIF,KAAYE,EAAO,CACxB,GAAIA,EAAMjV,eAAe+U,GACrBpZ,KAAKoZ,GAAYE,EAAMF,E,CAE/BpZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKub,MAAQjC,EAAM,SACnBtZ,KAAKuB,OAAS+X,EAAM,UACpBtZ,KAAKmc,OAAS7C,EAAM,UACpBtZ,KAAKoc,SAAW9C,EAAM,YACtB,GAAIA,EAAM,cAAe,CACrBtZ,KAAKqc,WAAa,GAClB,IAAK,IAAIC,KAAOhD,EAAM,cAAe,CACjC,GAAIA,EAAM,cAAcjV,eAAeiY,GAC7Btc,KAAKqc,WAAaC,GAAOhD,EAAM,cAAcgD,E,IAMvE5C,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIhV,EACjBgV,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAK,IAAIyS,KAAYpZ,KAAM,CACvB,GAAIA,KAAKqE,eAAe+U,GACpBzS,EAAKyS,GAAYpZ,KAAKoZ,E,CAE9BzS,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,SAAW3G,KAAKub,MACrB5U,EAAK,UAAY3G,KAAKuB,OACtBoF,EAAK,UAAY3G,KAAKmc,OACtBxV,EAAK,YAAc3G,KAAKoc,SACxB,GAAIpc,KAAKqc,WAAY,CACjB1V,EAAK,cAAgB,GACrB,IAAK,IAAI2V,KAAOtc,KAAKqc,WAAY,CAC7B,GAAIrc,KAAKqc,WAAWhY,eAAeiY,GACzB3V,EAAK,cAAe2V,GAAatc,KAAKqc,WAAYC,E,EAGpE,OAAO3V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIhV,EACjBgV,EAAON,KAAKS,GACZ,OAAOH,C,QAeF1X,EAGTpC,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKuc,qBAAuBjD,EAAM,uB,EAI1CI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI1X,EACjB0X,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,wBAA0B3G,KAAKuc,qBACpC,OAAO5V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI1X,EACjB0X,EAAON,KAAKS,GACZ,OAAOH,C,QAQF6C,EAYT3c,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhDpZ,KAAKyc,eAAiB,mB,CAG1BpD,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK0c,KAAOpD,EAAM,QAClBtZ,KAAK2c,iBAAmBrD,EAAM,oBAC9BtZ,KAAK4c,QAAUtD,EAAM,WACrBtZ,KAAK6c,MAAQvD,EAAM,SACnB,GAAI5W,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAK8c,cAAgB,GACrB,IAAK,IAAIlc,KAAQ0Y,EAAM,iBACnBtZ,KAAK8c,cAAela,KAAK4Z,EAAkBta,OAAOtB,G,CAE1DZ,KAAK+c,WAAazD,EAAM,a,EAIhCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,2BAA4B,CACtD,IAAIgT,EAAS,IAAI9W,EACjB8W,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,uBAAwB,CAClD,IAAIgT,EAAS,IAAItK,EACjBsK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,4BAA6B,CACvD,IAAIgT,EAAS,IAAI/T,EACjB+T,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,iCAAkC,CAC5D,IAAIgT,EAAS,IAAIzP,EACjByP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,wBAAyB,CACnD,IAAIgT,EAAS,IAAI1I,EACjB0I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,2BAA4B,CACtD,IAAIgT,EAAS,IAAI3L,EACjB2L,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,2BAA4B,CACtD,IAAIgT,EAAS,IAAIpH,EACjBoH,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,4BAA6B,CACvD,IAAIgT,EAAS,IAAIjR,EACjBiR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,iCAAkC,CAC5D,IAAIgT,EAAS,IAAIqD,EACjBrD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,wBAAyB,CACnD,IAAIgT,EAAS,IAAIhD,EACjBgD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,IAAIA,EAAS,IAAI6C,EACjB7C,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,iBAAmB3G,KAAKyc,eAC7B9V,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,QAAU3G,KAAK0c,KACpB/V,EAAK,oBAAsB3G,KAAK2c,iBAChChW,EAAK,WAAa3G,KAAK4c,QACvBjW,EAAK,SAAW3G,KAAK6c,MACrB,GAAIna,MAAMC,QAAQ3C,KAAK8c,eAAgB,CACnCnW,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAK8c,cAClBnW,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExCjT,EAAK,cAAgB3G,KAAK+c,WAC1B,OAAOpW,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI6C,EACjB7C,EAAON,KAAKS,GACZ,OAAOH,C,QAeF9W,UAAiC2Z,EAE1C3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,0B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI9W,EACjB8W,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI9W,EACjB8W,EAAON,KAAKS,GACZ,OAAOH,C,QAOFtK,UAA6BmN,EAEtC3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,sB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAItK,EACjBsK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAItK,EACjBsK,EAAON,KAAKS,GACZ,OAAOH,C,QAOF/T,UAAkC4W,EAE3C3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,2B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI/T,EACjB+T,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI/T,EACjB+T,EAAON,KAAKS,GACZ,OAAOH,C,QAOFzP,UAAuCsS,EAEhD3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,gC,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIzP,EACjByP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIzP,EACjByP,EAAON,KAAKS,GACZ,OAAOH,C,QAOF1I,UAA8BuL,EAEvC3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,uB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI1I,EACjB0I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI1I,EACjB0I,EAAON,KAAKS,GACZ,OAAOH,C,QAOF3L,UAAiCwO,EAE1C3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,0B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI3L,EACjB2L,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI3L,EACjB2L,EAAON,KAAKS,GACZ,OAAOH,C,QAOFpH,UAAiCiK,EAE1C3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,0B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIpH,EACjBoH,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIpH,EACjBoH,EAAON,KAAKS,GACZ,OAAOH,C,QAOFjR,UAAkC8T,EAE3C3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,2B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIjR,EACjBiR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIjR,EACjBiR,EAAON,KAAKS,GACZ,OAAOH,C,QAOFqD,UAAuCR,EAEhD3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,gC,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIqD,EACjBrD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIqD,EACjBrD,EAAON,KAAKS,GACZ,OAAOH,C,QAOFhD,UAA8B6F,EAEvC3c,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,uB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIhD,EACjBgD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIhD,EACjBgD,EAAON,KAAKS,GACZ,OAAOH,C,QAOFnW,EAQT3D,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKsa,EAAyBhb,OAAOtB,G,CAEzDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInW,EACjBmW,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInW,EACjBmW,EAAON,KAAKS,GACZ,OAAOH,C,QAaF4D,EAcT1d,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKwd,KAAO,IAAIC,EAChBzd,KAAK0d,cAAgB,GACrB1d,KAAK2d,iBAAmB,E,CAE5B3d,KAAKyc,eAAiB,e,CAG1BpD,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwd,KAAOlE,EAAM,QAAUmE,EAAKvb,OAAOoX,EAAM,SAAW,IAAImE,EAC7Dzd,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK4d,QAAUtE,EAAM,WAAa,IAAIuE,KAAKvE,EAAM,WAAWwE,YAAmB5d,UAC/EF,KAAK2c,iBAAmBrD,EAAM,oBAC9BtZ,KAAK+d,gBAAkBzE,EAAM,mBAC7BtZ,KAAKge,cAAgB1E,EAAM,iBAC3BtZ,KAAKie,WAAa3E,EAAM,cACxBtZ,KAAKke,WAAa5E,EAAM,cACxB,GAAI5W,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAK0d,cAAgB,GACrB,IAAK,IAAI9c,KAAQ0Y,EAAM,iBACnBtZ,KAAK0d,cAAe9a,KAAKub,EAAgBjc,OAAOtB,G,CAExD,GAAI8B,MAAMC,QAAQ2W,EAAM,qBAAsB,CAC1CtZ,KAAK2d,iBAAmB,GACxB,IAAK,IAAI/c,KAAQ0Y,EAAM,oBACnBtZ,KAAK2d,iBAAkB/a,KAAKwb,EAAoBlc,OAAOtB,G,GAKvE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,2BAA4B,CACtD,IAAIgT,EAAS,IAAIuD,EACjBvD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,qBAAsB,CAChD,MAAM,IAAInG,MAAM,kE,CAEpB,GAAImG,EAAK,mBAAqB,oBAAqB,CAC/C,IAAIgT,EAAS,IAAI0E,GACjB1E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,oBAAqB,CAC/C,IAAIgT,EAAS,IAAI2E,GACjB3E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,mBAAoB,CAC9C,IAAIgT,EAAS,IAAI4E,GACjB5E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,uBAAwB,CAClD,IAAIgT,EAAS,IAAI6E,GACjB7E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,wBAAyB,CACnD,IAAIgT,EAAS,IAAI8E,GACjB9E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,yBAA0B,CACpD,IAAIgT,EAAS,IAAI+E,GACjB/E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,yBAA0B,CACpD,IAAIgT,EAAS,IAAIgF,GACjBhF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,yBAA0B,CACpD,IAAIgT,EAAS,IAAIiF,GACjBjF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,2BAA4B,CACtD,IAAIgT,EAAS,IAAIkF,GACjBlF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,4BAA6B,CACvD,IAAIgT,EAAS,IAAImF,GACjBnF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,4BAA6B,CACvD,IAAIgT,EAAS,IAAIoF,GACjBpF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,4BAA6B,CACvD,IAAIgT,EAAS,IAAIqF,GACjBrF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,8BAA+B,CACzD,IAAIgT,EAAS,IAAIsF,GACjBtF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,0BAA2B,CACrD,IAAIgT,EAAS,IAAIuF,GACjBvF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,kBAAmB,CAC7C,IAAIgT,EAAS,IAAIwF,GACjBxF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,uBAAwB,CAClD,IAAIgT,EAAS,IAAIyF,GACjBzF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,IAAIA,EAAS,IAAI4D,EACjB5D,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,iBAAmB3G,KAAKyc,eAC7B9V,EAAK,QAAU3G,KAAKwd,KAAOxd,KAAKwd,KAAK5D,SAAgB1Z,UACrDyG,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,WAAa3G,KAAK4d,QAAU5d,KAAK4d,QAAQtZ,cAAqBpE,UACnEyG,EAAK,oBAAsB3G,KAAK2c,iBAChChW,EAAK,mBAAqB3G,KAAK+d,gBAC/BpX,EAAK,iBAAmB3G,KAAKge,cAC7BrX,EAAK,cAAgB3G,KAAKie,WAC1BtX,EAAK,cAAgB3G,KAAKke,WAC1B,GAAIxb,MAAMC,QAAQ3C,KAAK0d,eAAgB,CACnC/W,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAK0d,cAClB/W,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExC,GAAIlX,MAAMC,QAAQ3C,KAAK2d,kBAAmB,CACtChX,EAAK,oBAAsB,GAC3B,IAAK,IAAI/F,KAAQZ,KAAK2d,iBAClBhX,EAAK,oBAAoB/D,KAAKhC,EAAKgZ,S,CAE3C,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI4D,EACjB5D,EAAON,KAAKS,GACZ,OAAOH,C,QAiBFuD,UAAiCK,EAG1C1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,0B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKqf,iBAAmB/F,EAAM,mB,EAItCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuD,EACjBvD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,oBAAsB3G,KAAKqf,iBAChCtf,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuD,EACjBvD,EAAON,KAAKS,GACZ,OAAOH,C,QAQF8D,EAIT5d,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKsf,SAAWhG,EAAM,YACtBtZ,KAAK0c,KAAOpD,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI8D,EACjB9D,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAKsf,SACxB3Y,EAAK,QAAU3G,KAAK0c,KACpB,OAAO/V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI8D,EACjB9D,EAAON,KAAKS,GACZ,OAAOH,C,QASFwE,EAQTte,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhDpZ,KAAKyc,eAAiB,iB,CAG1BpD,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK4c,QAAUtD,EAAM,WACrBtZ,KAAK6c,MAAQvD,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,2BAA4B,CACtD,IAAIgT,EAAS,IAAI4F,EACjB5F,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,IAAIA,EAAS,IAAIwE,EACjBxE,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,iBAAmB3G,KAAKyc,eAC7B9V,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,WAAa3G,KAAK4c,QACvBjW,EAAK,SAAW3G,KAAK6c,MACrB,OAAOlW,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIwE,EACjBxE,EAAON,KAAKS,GACZ,OAAOH,C,QAWF4F,UAAiCpB,EAI1Cte,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,0B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK2O,SAAW2K,EAAM,YACtBtZ,KAAKwf,WAAalG,EAAM,a,EAIhCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI4F,EACjB5F,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAK2O,SACxBhI,EAAK,cAAgB3G,KAAKwf,WAC1Bzf,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI4F,EACjB5F,EAAON,KAAKS,GACZ,OAAOH,C,QASFyE,EAITve,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKyf,YAAc,E,EAI3BpG,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,gBAAiB,CACrCtZ,KAAKyf,YAAc,GACnB,IAAK,IAAI7e,KAAQ0Y,EAAM,eACnBtZ,KAAKyf,YAAa7c,KAAK8c,EAAcxd,OAAOtB,G,GAK5D8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyE,EACjBzE,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB,GAAI/W,MAAMC,QAAQ3C,KAAKyf,aAAc,CACjC9Y,EAAK,eAAiB,GACtB,IAAK,IAAI/F,KAAQZ,KAAKyf,YAClB9Y,EAAK,eAAe/D,KAAKhC,EAAKgZ,S,CAEtC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyE,EACjBzE,EAAON,KAAKS,GACZ,OAAOH,C,QASF+F,EAIT7f,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK2f,MAAQ,IAAIC,E,EAIzBvG,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK2f,MAAQrG,EAAM,SAAWsG,GAAS1d,OAAOoX,EAAM,UAAY,IAAIsG,GACpE5f,KAAK6f,MAAQvG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI+F,EACjB/F,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAK2f,MAAQ3f,KAAK2f,MAAM/F,SAAgB1Z,UACxDyG,EAAK,SAAW3G,KAAK6f,MACrB,OAAOlZ,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI+F,EACjB/F,EAAON,KAAKS,GACZ,OAAOH,C,QASFiG,GAOT/f,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAK8f,YAAcxG,EAAM,eACzBtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK+f,KAAOzG,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIiG,GACjBjG,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,eAAiB3G,KAAK8f,YAC3BnZ,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,QAAU3G,KAAK+f,KACpB,OAAOpZ,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIiG,GACjBjG,EAAON,KAAKS,GACZ,OAAOH,C,MAYHqG,IAAZ,SAAYA,GACRA,IAAA,sBACAA,IAAA,sBACAA,IAAA,wBACAA,IAAA,0BACAA,IAAA,kBACAA,IAAA,kBACAA,IAAA,kBACAA,IAAA,gBACAA,IAAA,wBACAA,IAAA,0BACAA,IAAA,2BACAA,IAAA,0BACH,EAbD,CAAYA,QAAS,K,MAeCC,WAA2B1C,EAK7C1d,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKkgB,UAAY,E,CAErBlgB,KAAKyc,eAAiB,oB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,CAE5CZ,KAAKmgB,aAAe7G,EAAM,gBAAkB8G,GAAcle,OAAOoX,EAAM,iBAAwBpZ,UAC/FF,KAAKqgB,SAAW/G,EAAM,W,EAI9BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,oBAAqB,CAC/C,IAAIgT,EAAS,IAAI0E,GACjB1E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,oBAAqB,CAC/C,IAAIgT,EAAS,IAAI2E,GACjB3E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,mBAAoB,CAC9C,IAAIgT,EAAS,IAAI4E,GACjB5E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,MAAM,IAAInZ,MAAM,kE,CAGXoZ,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpCjT,EAAK,gBAAkB3G,KAAKmgB,aAAengB,KAAKmgB,aAAavG,SAAgB1Z,UAC7EyG,EAAK,YAAc3G,KAAKqgB,SACxBtgB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAM,IAAIrZ,MAAM,kE,QAUXsO,GAsBTjP,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAKsgB,UAAYhH,EAAM,aACvBtZ,KAAKugB,SAAWjH,EAAM,YACtBtZ,KAAKwgB,YAAclH,EAAM,eACzBtZ,KAAKygB,KAAOnH,EAAM,QAClBtZ,KAAK0gB,SAAWpH,EAAM,YACtBtZ,KAAK2gB,YAAcrH,EAAM,eACzBtZ,KAAK4gB,OAAStH,EAAM,UACpBtZ,KAAK6gB,QAAUvH,EAAM,WACrBtZ,KAAK8gB,KAAOxH,EAAM,QAClBtZ,KAAK+gB,UAAYzH,EAAM,aACvBtZ,KAAKghB,YAAc1H,EAAM,eACzBtZ,KAAKihB,IAAM3H,EAAM,OACjBtZ,KAAKkhB,MAAQ5H,EAAM,SACnBtZ,KAAKmhB,IAAM7H,EAAM,OACjB,GAAI5W,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAKohB,QAAU,GACf,IAAK,IAAIxgB,KAAQ0Y,EAAM,WACnBtZ,KAAKohB,QAASxe,KAAKye,GAAWnf,OAAOtB,G,CAE7CZ,KAAKgP,UAAYsK,EAAM,aACvBtZ,KAAKiP,SAAWqK,EAAM,YACtB,GAAI5W,MAAMC,QAAQ2W,EAAM,yBAA0B,CAC9CtZ,KAAKshB,qBAAuB,GAC5B,IAAK,IAAI1gB,KAAQ0Y,EAAM,wBACnBtZ,KAAKshB,qBAAsB1e,KAAK2e,GAA0Brf,OAAOtB,G,GAKjF8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI7K,GACjB6K,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,aAAe3G,KAAKsgB,UACzB3Z,EAAK,YAAc3G,KAAKugB,SACxB5Z,EAAK,eAAiB3G,KAAKwgB,YAC3B7Z,EAAK,QAAU3G,KAAKygB,KACpB9Z,EAAK,YAAc3G,KAAK0gB,SACxB/Z,EAAK,eAAiB3G,KAAK2gB,YAC3Bha,EAAK,UAAY3G,KAAK4gB,OACtBja,EAAK,WAAa3G,KAAK6gB,QACvBla,EAAK,QAAU3G,KAAK8gB,KACpBna,EAAK,aAAe3G,KAAK+gB,UACzBpa,EAAK,eAAiB3G,KAAKghB,YAC3Bra,EAAK,OAAS3G,KAAKihB,IACnBta,EAAK,SAAW3G,KAAKkhB,MACrBva,EAAK,OAAS3G,KAAKmhB,IACnB,GAAIze,MAAMC,QAAQ3C,KAAKohB,SAAU,CAC7Bza,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAKohB,QAClBza,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElCjT,EAAK,aAAe3G,KAAKgP,UACzBrI,EAAK,YAAc3G,KAAKiP,SACxB,GAAIvM,MAAMC,QAAQ3C,KAAKshB,sBAAuB,CAC1C3a,EAAK,wBAA0B,GAC/B,IAAK,IAAI/F,KAAQZ,KAAKshB,qBAClB3a,EAAK,wBAAwB/D,KAAKhC,EAAKgZ,S,CAE/C,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI7K,GACjB6K,EAAON,KAAKS,GACZ,OAAOH,C,QA2BF0H,GAITxhB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKuZ,IAAMD,EAAM,M,EAIzBI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI0H,GACjB1H,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,OAAS3G,KAAKuZ,IACnB,OAAO5S,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI0H,GACjB1H,EAAON,KAAKS,GACZ,OAAOH,C,MASH6H,IAAZ,SAAYA,GACRA,IAAA,0BACAA,IAAA,4BACAA,IAAA,sBACAA,IAAA,wBACAA,IAAA,wBACAA,IAAA,4BACAA,IAAA,0BACAA,IAAA,kBACAA,IAAA,gCACAA,IAAA,uCACAA,IAAA,yBACAA,IAAA,uBACAA,IAAA,qBACAA,IAAA,sBACH,EAfD,CAAYA,QAAc,K,MAiBbD,GAIT1hB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyhB,MAAQnI,EAAM,SACnBtZ,KAAK6f,MAAQvG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI4H,GACjB5H,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAKyhB,MACrB9a,EAAK,SAAW3G,KAAK6f,MACrB,OAAOlZ,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI4H,GACjB5H,EAAON,KAAKS,GACZ,OAAOH,C,QASFyG,GAOTvgB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK0hB,MAAQ,E,EAIrBrI,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK2hB,UAAYrI,EAAM,aACvBtZ,KAAK4hB,WAAatI,EAAM,cACxB,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAK0hB,MAAQ,GACb,IAAK,IAAI9gB,KAAQ0Y,EAAM,SACnBtZ,KAAK0hB,MAAO9e,KAAKif,GAAQ3f,OAAOtB,G,CAExCZ,KAAKuB,OAAS+X,EAAM,UAAYwI,GAAc5f,OAAOoX,EAAM,WAAkBpZ,S,EAIrFwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyG,GACjBzG,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,aAAe3G,KAAK2hB,UACzBhb,EAAK,cAAgB3G,KAAK4hB,WAC1B,GAAIlf,MAAMC,QAAQ3C,KAAK0hB,OAAQ,CAC3B/a,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAK0hB,MAClB/a,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,UAAY3G,KAAKuB,OAASvB,KAAKuB,OAAOqY,SAAgB1Z,UAC3D,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyG,GACjBzG,EAAON,KAAKS,GACZ,OAAOH,C,QAYFkI,GAIThiB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK+hB,IAAMzI,EAAM,OACjBtZ,KAAKgiB,KAAO1I,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIkI,GACjBlI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,OAAS3G,KAAK+hB,IACnBpb,EAAK,QAAU3G,KAAKgiB,KACpB,OAAOrb,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIkI,GACjBlI,EAAON,KAAKS,GACZ,OAAOH,C,QASFmI,GAITjiB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKuB,OAAS+X,EAAM,UACpBtZ,KAAKgiB,KAAO1I,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAImI,GACjBnI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKuB,OACtBoF,EAAK,QAAU3G,KAAKgiB,KACpB,OAAOrb,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAImI,GACjBnI,EAAON,KAAKS,GACZ,OAAOH,C,MASHsI,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,gCACAA,IAAA,gCACAA,IAAA,qBACH,EALD,CAAYA,QAAU,K,MAOT5D,WAA0B4B,GAGnCpgB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,mB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKT,SAAW+Z,EAAM,YAAc4I,GAAShgB,OAAOoX,EAAM,aAAoBpZ,S,EAItFwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI0E,GACjB1E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAKT,SAAWS,KAAKT,SAASqa,SAAgB1Z,UACjEH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI0E,GACjB1E,EAAON,KAAKS,GACZ,OAAOH,C,QAQOwI,GAKlBtiB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhDpZ,KAAKyc,eAAiB,kB,CAG1BpD,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKoiB,cAAgB9I,EAAM,gB,EAInCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,WAAY,CACtC,IAAIgT,EAAS,IAAIuI,GACjBvI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,gBAAiB,CAC3C,IAAIgT,EAAS,IAAI0I,GACjB1I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,aAAc,CACxC,IAAIgT,EAAS,IAAI2I,GACjB3I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,MAAM,IAAInZ,MAAM,gE,CAGpBoZ,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,iBAAmB3G,KAAKyc,eAC7B9V,EAAK,iBAAmB3G,KAAKoiB,cAC7B,OAAOzb,C,CAGXkT,QACI,MAAM,IAAIrZ,MAAM,gE,QAQX0hB,WAAiBC,GAK1BtiB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,U,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKgP,UAAYsK,EAAM,aACvBtZ,KAAKiP,SAAWqK,EAAM,YACtBtZ,KAAKuiB,UAAYjJ,EAAM,Y,EAI/BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuI,GACjBvI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,aAAe3G,KAAKgP,UACzBrI,EAAK,YAAc3G,KAAKiP,SACxBtI,EAAK,aAAe3G,KAAKuiB,UACzBxiB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuI,GACjBvI,EAAON,KAAKS,GACZ,OAAOH,C,QAUF0I,WAAsBF,GAO/BtiB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,e,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKwiB,OAAS,GACd,IAAK,IAAI5hB,KAAQ0Y,EAAM,UACnBtZ,KAAKwiB,OAAQ5f,KAAKsf,GAAShgB,OAAOtB,G,CAE1CZ,KAAK6c,MAAQvD,EAAM,SACnBtZ,KAAKyiB,QAAUnJ,EAAM,WACrBtZ,KAAK0iB,OAASpJ,EAAM,UACpBtZ,KAAK2iB,UAAYrJ,EAAM,Y,EAI/BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI0I,GACjB1I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKwiB,QAAS,CAC5B7b,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKwiB,OAClB7b,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjCjT,EAAK,SAAW3G,KAAK6c,MACrBlW,EAAK,WAAa3G,KAAKyiB,QACvB9b,EAAK,UAAY3G,KAAK0iB,OACtB/b,EAAK,aAAe3G,KAAK2iB,UACzB5iB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI0I,GACjB1I,EAAON,KAAKS,GACZ,OAAOH,C,QAYF2I,WAAmBH,GAQ5BtiB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,Y,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKwiB,OAAS,GACd,IAAK,IAAI5hB,KAAQ0Y,EAAM,UACnBtZ,KAAKwiB,OAAQ5f,KAAKsf,GAAShgB,OAAOtB,G,CAE1CZ,KAAK6c,MAAQvD,EAAM,SACnBtZ,KAAKyiB,QAAUnJ,EAAM,WACrBtZ,KAAK0iB,OAASpJ,EAAM,UACpBtZ,KAAK2iB,UAAYrJ,EAAM,aACvBtZ,KAAK4iB,KAAOtJ,EAAM,O,EAI1BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI2I,GACjB3I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKwiB,QAAS,CAC5B7b,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKwiB,OAClB7b,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjCjT,EAAK,SAAW3G,KAAK6c,MACrBlW,EAAK,WAAa3G,KAAKyiB,QACvB9b,EAAK,UAAY3G,KAAK0iB,OACtB/b,EAAK,aAAe3G,KAAK2iB,UACzBhc,EAAK,QAAU3G,KAAK4iB,KACpB7iB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI2I,GACjB3I,EAAON,KAAKS,GACZ,OAAOH,C,QAaF2E,WAA0B2B,GAOnCpgB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,mB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK6c,MAAQvD,EAAM,SACnBtZ,KAAKyiB,QAAUnJ,EAAM,WACrBtZ,KAAK0iB,OAASpJ,EAAM,UACpBtZ,KAAK2iB,UAAYrJ,EAAM,aACvBtZ,KAAK6iB,MAAQvJ,EAAM,SAAW+I,GAAcngB,OAAOoX,EAAM,UAAiBpZ,S,EAIlFwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI2E,GACjB3E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAK6c,MACrBlW,EAAK,WAAa3G,KAAKyiB,QACvB9b,EAAK,UAAY3G,KAAK0iB,OACtB/b,EAAK,aAAe3G,KAAK2iB,UACzBhc,EAAK,SAAW3G,KAAK6iB,MAAQ7iB,KAAK6iB,MAAMjJ,SAAgB1Z,UACxDH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI2E,GACjB3E,EAAON,KAAKS,GACZ,OAAOH,C,QAYF4E,WAAyB0B,GAQlCpgB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,kB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK6c,MAAQvD,EAAM,SACnBtZ,KAAKyiB,QAAUnJ,EAAM,WACrBtZ,KAAK0iB,OAASpJ,EAAM,UACpBtZ,KAAK2iB,UAAYrJ,EAAM,aACvBtZ,KAAK4iB,KAAOtJ,EAAM,QAClBtZ,KAAK8iB,KAAOxJ,EAAM,QAAUgJ,GAAWpgB,OAAOoX,EAAM,SAAgBpZ,S,EAI5EwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI4E,GACjB5E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAK6c,MACrBlW,EAAK,WAAa3G,KAAKyiB,QACvB9b,EAAK,UAAY3G,KAAK0iB,OACtB/b,EAAK,aAAe3G,KAAK2iB,UACzBhc,EAAK,QAAU3G,KAAK4iB,KACpBjc,EAAK,QAAU3G,KAAK8iB,KAAO9iB,KAAK8iB,KAAKlJ,SAAgB1Z,UACrDH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI4E,GACjB5E,EAAON,KAAKS,GACZ,OAAOH,C,QAaF6E,WAA6BjB,EAEtC1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,sB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI6E,GACjB7E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI6E,GACjB7E,EAAON,KAAKS,GACZ,OAAOH,C,QAOF8E,WAA8BlB,EAGvC1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,uB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK+iB,aAAezJ,EAAM,e,EAIlCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI8E,GACjB9E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,gBAAkB3G,KAAK+iB,aAC5BhjB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI8E,GACjB9E,EAAON,KAAKS,GACZ,OAAOH,C,QAQF+E,WAA+BnB,EAKxC1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,wB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1EF,KAAKT,SAAW+Z,EAAM,YAAc4I,GAAShgB,OAAOoX,EAAM,aAAoBpZ,UAC9EF,KAAKuB,OAAS+X,EAAM,S,EAI5BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI+E,GACjB/E,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9DyG,EAAK,YAAc3G,KAAKT,SAAWS,KAAKT,SAASqa,SAAgB1Z,UACjEyG,EAAK,UAAY3G,KAAKuB,OACtBxB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI+E,GACjB/E,EAAON,KAAKS,GACZ,OAAOH,C,MAUHqJ,IAAZ,SAAYA,GACRA,IAAA,gBACAA,IAAA,8BACAA,IAAA,wBACAA,IAAA,iBACH,EALD,CAAYA,QAAY,K,MAOXrE,WAA+BpB,EAOxC1d,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKkgB,UAAY,E,CAErBlgB,KAAKyc,eAAiB,wB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKijB,SAAW3J,EAAM,YAAc,IAAIuE,KAAKvE,EAAM,YAAYwE,YAAmB5d,UAClFF,KAAKkjB,SAAW5J,EAAM,YACtBtZ,KAAKmjB,UAAY7J,EAAM,aAAe,IAAIuE,KAAKvE,EAAM,aAAawE,YAAmB5d,UACrFF,KAAKojB,UAAY9J,EAAM,aACvB,GAAI5W,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,GAKpD8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIgF,GACjBhF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAKijB,SAAWI,GAAWrjB,KAAKijB,UAAiB/iB,UACpEyG,EAAK,YAAc3G,KAAKkjB,SACxBvc,EAAK,aAAe3G,KAAKmjB,UAAYE,GAAWrjB,KAAKmjB,WAAkBjjB,UACvEyG,EAAK,aAAe3G,KAAKojB,UACzB,GAAI1gB,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIgF,GACjBhF,EAAON,KAAKS,GACZ,OAAOH,C,QAYFiF,WAA+BrB,EAGxC1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,wB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKuZ,IAAMD,EAAM,M,EAIzBI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIiF,GACjBjF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,OAAS3G,KAAKuZ,IACnBxZ,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIiF,GACjBjF,EAAON,KAAKS,GACZ,OAAOH,C,QAQFkF,WAAiCtB,EAK1C1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,0B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKsjB,SAAWhK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAoBpZ,UAC1EF,KAAK8a,SAAWxB,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAoBpZ,UAC1EF,KAAKujB,cAAgBjK,EAAM,iBAAmBxK,GAAQ5M,OAAOoX,EAAM,kBAAyBpZ,S,EAIpGwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIkF,GACjBlF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAKsjB,SAAWtjB,KAAKsjB,SAAS1J,SAAgB1Z,UACjEyG,EAAK,YAAc3G,KAAK8a,SAAW9a,KAAK8a,SAASlB,SAAgB1Z,UACjEyG,EAAK,iBAAmB3G,KAAKujB,cAAgBvjB,KAAKujB,cAAc3J,SAAgB1Z,UAChFH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIkF,GACjBlF,EAAON,KAAKS,GACZ,OAAOH,C,QAUFoF,WAAkCxB,EAG3C1d,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKwjB,UAAY,E,CAErBxjB,KAAKyc,eAAiB,2B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKwjB,UAAY,GACjB,IAAK,IAAI5iB,KAAQ0Y,EAAM,aACnBtZ,KAAKwjB,UAAW5gB,KAAKkc,GAA0B5c,OAAOtB,G,GAKtE8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIoF,GACjBpF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKwjB,WAAY,CAC/B7c,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKwjB,UAClB7c,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIoF,GACjBpF,EAAON,KAAKS,GACZ,OAAOH,C,QAQFmF,WAAkCvB,EAE3C1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,2B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAImF,GACjBnF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAImF,GACjBnF,EAAON,KAAKS,GACZ,OAAOH,C,QAOFqF,WAAkCzB,EAK3C1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,2B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKmgB,aAAe7G,EAAM,gBAAkB8G,GAAcle,OAAOoX,EAAM,iBAAwBpZ,UAC/FF,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1EF,KAAKujB,cAAgBjK,EAAM,iBAAmBxK,GAAQ5M,OAAOoX,EAAM,kBAAyBpZ,S,EAIpGwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIqF,GACjBrF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,gBAAkB3G,KAAKmgB,aAAengB,KAAKmgB,aAAavG,SAAgB1Z,UAC7EyG,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9DyG,EAAK,iBAAmB3G,KAAKujB,cAAgBvjB,KAAKujB,cAAc3J,SAAgB1Z,UAChFH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIqF,GACjBrF,EAAON,KAAKS,GACZ,OAAOH,C,QAUFsF,WAAoC1B,EAE7C1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,6B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIsF,GACjBtF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIsF,GACjBtF,EAAON,KAAKS,GACZ,OAAOH,C,QAOFuF,WAAgC3B,EAOzC1d,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKyjB,OAAS,E,CAElBzjB,KAAKyc,eAAiB,yB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK0jB,qBAAuBpK,EAAM,wBAClC,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKyjB,OAAS,GACd,IAAK,IAAI7iB,KAAQ0Y,EAAM,UACnBtZ,KAAKyjB,OAAQ7gB,KAAKwb,EAAoBlc,OAAOtB,G,CAErDZ,KAAKmgB,aAAe7G,EAAM,gBAAkB8G,GAAcle,OAAOoX,EAAM,iBAAwBpZ,UAC/FF,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1EF,KAAKujB,cAAgBjK,EAAM,iBAAmBxK,GAAQ5M,OAAOoX,EAAM,kBAAyBpZ,S,EAIpGwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuF,GACjBvF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,wBAA0B3G,KAAK0jB,qBACpC,GAAIhhB,MAAMC,QAAQ3C,KAAKyjB,QAAS,CAC5B9c,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKyjB,OAClB9c,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjCjT,EAAK,gBAAkB3G,KAAKmgB,aAAengB,KAAKmgB,aAAavG,SAAgB1Z,UAC7EyG,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9DyG,EAAK,iBAAmB3G,KAAKujB,cAAgBvjB,KAAKujB,cAAc3J,SAAgB1Z,UAChFH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuF,GACjBvF,EAAON,KAAKS,GACZ,OAAOH,C,QAYFwF,WAAwB5B,EAEjC1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,iB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIwF,GACjBxF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIwF,GACjBxF,EAAON,KAAKS,GACZ,OAAOH,C,MAOHgK,IAAZ,SAAYA,GACRA,EAAA,mBACAA,EAAA,2BACAA,EAAA,uBACAA,EAAA,2BACAA,EAAA,cACH,EAND,CAAYA,QAAQ,K,IAQRC,IAAZ,SAAYA,GACRA,EAAA,yBACAA,EAAA,0BACH,EAHD,CAAYA,QAAa,K,IAKbC,IAAZ,SAAYA,GACRA,IAAA,cACAA,IAAA,eACH,EAHD,CAAYA,QAAkB,K,MAKjBC,GAeTjkB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK0d,cAAgB,GACrB1d,KAAK2d,iBAAmB,E,CAE5B3d,KAAKyc,eAAiB,S,CAG1BpD,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAKie,WAAa3E,EAAM,cACxBtZ,KAAK2c,iBAAmBrD,EAAM,oBAC9BtZ,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAoBpZ,UAC1EF,KAAK4C,KAAO0W,EAAM,QAClBtZ,KAAKgkB,SAAW1K,EAAM,YACtB,GAAI5W,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAK0d,cAAgB,GACrB,IAAK,IAAI9c,KAAQ0Y,EAAM,iBACnBtZ,KAAK0d,cAAe9a,KAAKub,EAAgBjc,OAAOtB,G,CAExDZ,KAAK4d,QAAUtE,EAAM,WAAa,IAAIuE,KAAKvE,EAAM,WAAWwE,YAAmB5d,UAC/EF,KAAKikB,aAAe3K,EAAM,gBAAkB,IAAIuE,KAAKvE,EAAM,gBAAgBwE,YAAmB5d,UAC9F,GAAIwC,MAAMC,QAAQ2W,EAAM,qBAAsB,CAC1CtZ,KAAK2d,iBAAmB,GACxB,IAAK,IAAI/c,KAAQ0Y,EAAM,oBACnBtZ,KAAK2d,iBAAkB/a,KAAKwb,EAAoBlc,OAAOtB,G,GAKvE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,qBAAsB,CAChD,IAAIgT,EAAS,IAAI9V,GACjB8V,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,eAAgB,CAC1C,MAAM,IAAInG,MAAM,4D,CAEpB,GAAImG,EAAK,mBAAqB,cAAe,CACzC,IAAIgT,EAAS,IAAIuK,GACjBvK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,cAAe,CACzC,IAAIgT,EAAS,IAAIwK,GACjBxK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,aAAc,CACxC,IAAIgT,EAAS,IAAIyK,GACjBzK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,iBAAkB,CAC5C,IAAIgT,EAAS,IAAIjI,GACjBiI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,kBAAmB,CAC7C,IAAIgT,EAAS,IAAIpL,GACjBoL,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,oBAAqB,CAC/C,IAAIgT,EAAS,IAAI0K,GACjB1K,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,mBAAoB,CAC9C,IAAIgT,EAAS,IAAI3G,GACjB2G,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,mBAAoB,CAC9C,IAAIgT,EAAS,IAAI5R,GACjB4R,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,oBAAqB,CAC/C,IAAIgT,EAAS,IAAIvQ,GACjBuQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,sBAAuB,CACjD,IAAIgT,EAAS,IAAI/O,GACjB+O,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,qBAAsB,CAChD,IAAIgT,EAAS,IAAIpO,GACjBoO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,sBAAuB,CACjD,IAAIgT,EAAS,IAAIvN,GACjBuN,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,wBAAyB,CACnD,IAAIgT,EAAS,IAAIhN,GACjBgN,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,qBAAsB,CAChD,IAAIgT,EAAS,IAAItJ,GACjBsJ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,uBAAwB,CAClD,IAAIgT,EAAS,IAAI/I,GACjB+I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,gCAAiC,CAC3D,IAAIgT,EAAS,IAAIrG,GACjBqG,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,gBAAiB,CAC3C,IAAIgT,EAAS,IAAI2K,GACjB3K,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,iBAAkB,CAC5C,IAAIgT,EAAS,IAAI5B,GACjB4B,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,8BAA+B,CACzD,IAAIgT,EAAS,IAAIf,GACjBe,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,IAAIA,EAAS,IAAImK,GACjBnK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,iBAAmB3G,KAAKyc,eAC7B9V,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,cAAgB3G,KAAKie,WAC1BtX,EAAK,oBAAsB3G,KAAK2c,iBAChChW,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjEyG,EAAK,QAAU3G,KAAK4C,KACpB+D,EAAK,YAAc3G,KAAKgkB,SACxB,GAAIthB,MAAMC,QAAQ3C,KAAK0d,eAAgB,CACnC/W,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAK0d,cAClB/W,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExCjT,EAAK,WAAa3G,KAAK4d,QAAU5d,KAAK4d,QAAQtZ,cAAqBpE,UACnEyG,EAAK,gBAAkB3G,KAAKikB,aAAejkB,KAAKikB,aAAa3f,cAAqBpE,UAClF,GAAIwC,MAAMC,QAAQ3C,KAAK2d,kBAAmB,CACtChX,EAAK,oBAAsB,GAC3B,IAAK,IAAI/F,KAAQZ,KAAK2d,iBAClBhX,EAAK,oBAAoB/D,KAAKhC,EAAKgZ,S,CAE3C,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAImK,GACjBnK,EAAON,KAAKS,GACZ,OAAOH,C,QAkBF9V,WAA2BigB,GAGpCjkB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,oB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKqf,iBAAmB/F,EAAM,mB,EAItCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI9V,GACjB8V,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,oBAAsB3G,KAAKqf,iBAChCtf,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI9V,GACjB8V,EAAON,KAAKS,GACZ,OAAOH,C,QAQO3J,WAAqB8T,GAIvCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKkgB,UAAY,GACjBlgB,KAAKmgB,aAAe,E,CAExBngB,KAAKyc,eAAiB,c,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,CAE5C,GAAI8B,MAAMC,QAAQ2W,EAAM,iBAAkB,CACtCtZ,KAAKmgB,aAAe,GACpB,IAAK,IAAIvf,KAAQ0Y,EAAM,gBACnBtZ,KAAKmgB,aAAcvd,KAAKwd,GAAcle,OAAOtB,G,GAK7D8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,cAAe,CACzC,IAAIgT,EAAS,IAAIuK,GACjBvK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,cAAe,CACzC,IAAIgT,EAAS,IAAIwK,GACjBxK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,GAAIhT,EAAK,mBAAqB,aAAc,CACxC,IAAIgT,EAAS,IAAIyK,GACjBzK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,MAAM,IAAInZ,MAAM,4D,CAGXoZ,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC,GAAIlX,MAAMC,QAAQ3C,KAAKmgB,cAAe,CAClCxZ,EAAK,gBAAkB,GACvB,IAAK,IAAI/F,KAAQZ,KAAKmgB,aAClBxZ,EAAK,gBAAgB/D,KAAKhC,EAAKgZ,S,CAEvC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAM,IAAIrZ,MAAM,4D,QASX0jB,WAAoBlU,GAG7BnQ,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,a,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKT,SAAW+Z,EAAM,YAAc4I,GAAShgB,OAAOoX,EAAM,aAAoBpZ,S,EAItFwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuK,GACjBvK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAKT,SAAWS,KAAKT,SAASqa,SAAgB1Z,UACjEH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuK,GACjBvK,EAAON,KAAKS,GACZ,OAAOH,C,QAQFwK,WAAoBnU,GAO7BnQ,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,a,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK6c,MAAQvD,EAAM,SACnBtZ,KAAKyiB,QAAUnJ,EAAM,WACrBtZ,KAAK0iB,OAASpJ,EAAM,UACpBtZ,KAAK2iB,UAAYrJ,EAAM,aACvBtZ,KAAK6iB,MAAQvJ,EAAM,SAAW+I,GAAcngB,OAAOoX,EAAM,UAAiBpZ,S,EAIlFwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIwK,GACjBxK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAK6c,MACrBlW,EAAK,WAAa3G,KAAKyiB,QACvB9b,EAAK,UAAY3G,KAAK0iB,OACtB/b,EAAK,aAAe3G,KAAK2iB,UACzBhc,EAAK,SAAW3G,KAAK6iB,MAAQ7iB,KAAK6iB,MAAMjJ,SAAgB1Z,UACxDH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIwK,GACjBxK,EAAON,KAAKS,GACZ,OAAOH,C,QAYFyK,WAAmBpU,GAQ5BnQ,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,Y,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK6c,MAAQvD,EAAM,SACnBtZ,KAAKyiB,QAAUnJ,EAAM,WACrBtZ,KAAK0iB,OAASpJ,EAAM,UACpBtZ,KAAK2iB,UAAYrJ,EAAM,aACvBtZ,KAAK4iB,KAAOtJ,EAAM,QAClBtZ,KAAK8iB,KAAOxJ,EAAM,QAAUgJ,GAAWpgB,OAAOoX,EAAM,SAAgBpZ,S,EAI5EwZ,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyK,GACjBzK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAK6c,MACrBlW,EAAK,WAAa3G,KAAKyiB,QACvB9b,EAAK,UAAY3G,KAAK0iB,OACtB/b,EAAK,aAAe3G,KAAK2iB,UACzBhc,EAAK,QAAU3G,KAAK4iB,KACpBjc,EAAK,QAAU3G,KAAK8iB,KAAO9iB,KAAK8iB,KAAKlJ,SAAgB1Z,UACrDH,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyK,GACjBzK,EAAON,KAAKS,GACZ,OAAOH,C,QAaFjI,WAAuBoS,GAIhCjkB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,gB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKukB,YAAcjL,EAAM,eACzBtZ,KAAKwkB,UAAYlL,EAAM,Y,EAI/BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIjI,GACjBiI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,eAAiB3G,KAAKukB,YAC3B5d,EAAK,aAAe3G,KAAKwkB,UACzBzkB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIjI,GACjBiI,EAAON,KAAKS,GACZ,OAAOH,C,QASFpL,WAAwBuV,GAGjCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKykB,SAAW,E,CAEpBzkB,KAAKyc,eAAiB,iB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKykB,SAAW,GAChB,IAAK,IAAI7jB,KAAQ0Y,EAAM,YACnBtZ,KAAKykB,SAAU7hB,KAAKsY,EAAahZ,OAAOtB,G,GAKxD8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIpL,GACjBoL,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKykB,UAAW,CAC9B9d,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKykB,SAClB9d,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIpL,GACjBoL,EAAON,KAAKS,GACZ,OAAOH,C,QAQF3G,WAAyB8Q,GAQlCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAK0kB,SAAW,GAChB1kB,KAAKykB,SAAW,E,CAEpBzkB,KAAKyc,eAAiB,kB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK2kB,QAAUrL,EAAM,WACrBtZ,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1E,GAAIwC,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAK0kB,SAAW,GAChB,IAAK,IAAI9jB,KAAQ0Y,EAAM,YACnBtZ,KAAK0kB,SAAU9hB,KAAKyhB,GAAkBniB,OAAOtB,G,CAErD,GAAI8B,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKykB,SAAW,GAChB,IAAK,IAAI7jB,KAAQ0Y,EAAM,YACnBtZ,KAAKykB,SAAU7hB,KAAKsY,EAAahZ,OAAOtB,G,CAEhDZ,KAAKT,SAAW+Z,EAAM,YAAc4I,GAAShgB,OAAOoX,EAAM,aAAoBpZ,UAC9EF,KAAKuB,OAAS+X,EAAM,S,EAI5BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,gCAAiC,CAC3D,IAAIgT,EAAS,IAAIrG,GACjBqG,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,IAAIA,EAAS,IAAI3G,GACjB2G,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAK2kB,QACvBhe,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9D,GAAIwC,MAAMC,QAAQ3C,KAAK0kB,UAAW,CAC9B/d,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAK0kB,SAClB/d,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC,GAAIlX,MAAMC,QAAQ3C,KAAKykB,UAAW,CAC9B9d,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKykB,SAClB9d,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnCjT,EAAK,YAAc3G,KAAKT,SAAWS,KAAKT,SAASqa,SAAgB1Z,UACjEyG,EAAK,UAAY3G,KAAKuB,OACtBxB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI3G,GACjB2G,EAAON,KAAKS,GACZ,OAAOH,C,QAaF0K,WAA0BP,GAKnCjkB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,mB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK2kB,QAAUrL,EAAM,WACrBtZ,KAAK4kB,qBAAuBtL,EAAM,wBAClCtZ,KAAK6kB,iBAAmBvL,EAAM,mB,EAItCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI0K,GACjB1K,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAK2kB,QACvBhe,EAAK,wBAA0B3G,KAAK4kB,qBACpCje,EAAK,oBAAsB3G,KAAK6kB,iBAChC9kB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI0K,GACjB1K,EAAON,KAAKS,GACZ,OAAOH,C,QAUF5R,WAAyB+b,GAQlCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKkgB,UAAY,E,CAErBlgB,KAAKyc,eAAiB,kB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKwkB,UAAYlL,EAAM,aACvBtZ,KAAKijB,SAAW3J,EAAM,YAAc,IAAIuE,KAAKvE,EAAM,YAAYwE,YAAmB5d,UAClFF,KAAKkjB,SAAW5J,EAAM,YACtBtZ,KAAKmjB,UAAY7J,EAAM,aAAe,IAAIuE,KAAKvE,EAAM,aAAawE,YAAmB5d,UACrFF,KAAKojB,UAAY9J,EAAM,aACvB,GAAI5W,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,GAKpD8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI5R,GACjB4R,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,aAAe3G,KAAKwkB,UACzB7d,EAAK,YAAc3G,KAAKijB,SAAWI,GAAWrjB,KAAKijB,UAAiB/iB,UACpEyG,EAAK,YAAc3G,KAAKkjB,SACxBvc,EAAK,aAAe3G,KAAKmjB,UAAYE,GAAWrjB,KAAKmjB,WAAkBjjB,UACvEyG,EAAK,aAAe3G,KAAKojB,UACzB,GAAI1gB,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI5R,GACjB4R,EAAON,KAAKS,GACZ,OAAOH,C,QAaFvQ,WAA0B0a,GAOnCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKyjB,OAAS,E,CAElBzjB,KAAKyc,eAAiB,mB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK0jB,qBAAuBpK,EAAM,wBAClC,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKyjB,OAAS,GACd,IAAK,IAAI7iB,KAAQ0Y,EAAM,UACnBtZ,KAAKyjB,OAAQ7gB,KAAKwb,EAAoBlc,OAAOtB,G,CAErD,GAAI8B,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAKujB,cAAgB,GACrB,IAAK,IAAI3iB,KAAQ0Y,EAAM,iBACnBtZ,KAAKujB,cAAe3gB,KAAKkM,GAAQ5M,OAAOtB,G,CAEhD,GAAI8B,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,CAE5C,GAAI8B,MAAMC,QAAQ2W,EAAM,iBAAkB,CACtCtZ,KAAKmgB,aAAe,GACpB,IAAK,IAAIvf,KAAQ0Y,EAAM,gBACnBtZ,KAAKmgB,aAAcvd,KAAKwd,GAAcle,OAAOtB,G,GAK7D8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIvQ,GACjBuQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,wBAA0B3G,KAAK0jB,qBACpC,GAAIhhB,MAAMC,QAAQ3C,KAAKyjB,QAAS,CAC5B9c,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKyjB,OAClB9c,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjC,GAAIlX,MAAMC,QAAQ3C,KAAKujB,eAAgB,CACnC5c,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAKujB,cAClB5c,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExC,GAAIlX,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC,GAAIlX,MAAMC,QAAQ3C,KAAKmgB,cAAe,CAClCxZ,EAAK,gBAAkB,GACvB,IAAK,IAAI/F,KAAQZ,KAAKmgB,aAClBxZ,EAAK,gBAAgB/D,KAAKhC,EAAKgZ,S,CAEvC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIvQ,GACjBuQ,EAAON,KAAKS,GACZ,OAAOH,C,QAYF/O,WAA4BkZ,GAQrCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKujB,cAAgB,GACrBvjB,KAAKkgB,UAAY,GACjBlgB,KAAKmgB,aAAe,GACpBngB,KAAK8kB,QAAU,GACf9kB,KAAK+kB,YAAc,GACnB/kB,KAAKglB,SAAW,E,CAEpBhlB,KAAKyc,eAAiB,qB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAKujB,cAAgB,GACrB,IAAK,IAAI3iB,KAAQ0Y,EAAM,iBACnBtZ,KAAKujB,cAAe3gB,KAAKkM,GAAQ5M,OAAOtB,G,CAEhD,GAAI8B,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,CAE5C,GAAI8B,MAAMC,QAAQ2W,EAAM,iBAAkB,CACtCtZ,KAAKmgB,aAAe,GACpB,IAAK,IAAIvf,KAAQ0Y,EAAM,gBACnBtZ,KAAKmgB,aAAcvd,KAAKwd,GAAcle,OAAOtB,G,CAErD,GAAI8B,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAK8kB,QAAU,GACf,IAAK,IAAIlkB,KAAQ0Y,EAAM,WACnBtZ,KAAK8kB,QAASliB,KAAKic,GAAyB3c,OAAOtB,G,CAE3D,GAAI8B,MAAMC,QAAQ2W,EAAM,gBAAiB,CACrCtZ,KAAK+kB,YAAc,GACnB,IAAK,IAAInkB,KAAQ0Y,EAAM,eACnBtZ,KAAK+kB,YAAaniB,KAAKoc,GAA0B9c,OAAOtB,G,CAEhE,GAAI8B,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKglB,SAAW,GAChB,IAAK,IAAIpkB,KAAQ0Y,EAAM,YACnBtZ,KAAKglB,SAAUpiB,KAAKmc,GAA0B7c,OAAOtB,G,GAKrE8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI/O,GACjB+O,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKujB,eAAgB,CACnC5c,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAKujB,cAClB5c,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExC,GAAIlX,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC,GAAIlX,MAAMC,QAAQ3C,KAAKmgB,cAAe,CAClCxZ,EAAK,gBAAkB,GACvB,IAAK,IAAI/F,KAAQZ,KAAKmgB,aAClBxZ,EAAK,gBAAgB/D,KAAKhC,EAAKgZ,S,CAEvC,GAAIlX,MAAMC,QAAQ3C,KAAK8kB,SAAU,CAC7Bne,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAK8kB,QAClBne,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElC,GAAIlX,MAAMC,QAAQ3C,KAAK+kB,aAAc,CACjCpe,EAAK,eAAiB,GACtB,IAAK,IAAI/F,KAAQZ,KAAK+kB,YAClBpe,EAAK,eAAe/D,KAAKhC,EAAKgZ,S,CAEtC,GAAIlX,MAAMC,QAAQ3C,KAAKglB,UAAW,CAC9Bre,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKglB,SAClBre,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI/O,GACjB+O,EAAON,KAAKS,GACZ,OAAOH,C,QAaFpO,WAA2BuY,GAYpCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKujB,cAAgB,GACrBvjB,KAAKkgB,UAAY,GACjBlgB,KAAKilB,YAAc,GACnBjlB,KAAKklB,SAAW,GAChBllB,KAAKglB,SAAW,E,CAEpBhlB,KAAKyc,eAAiB,oB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKmlB,WAAa7L,EAAM,cACxBtZ,KAAKsgB,UAAYhH,EAAM,aACvBtZ,KAAKugB,SAAWjH,EAAM,YACtBtZ,KAAKsjB,SAAWhK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAoBpZ,UAC1EF,KAAK8a,SAAWxB,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAoBpZ,UAC1E,GAAIwC,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAKujB,cAAgB,GACrB,IAAK,IAAI3iB,KAAQ0Y,EAAM,iBACnBtZ,KAAKujB,cAAe3gB,KAAKkM,GAAQ5M,OAAOtB,G,CAEhD,GAAI8B,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKkgB,UAAY,GACjB,IAAK,IAAItf,KAAQ0Y,EAAM,aACnBtZ,KAAKkgB,UAAWtd,KAAKkM,GAAQ5M,OAAOtB,G,CAE5C,GAAI8B,MAAMC,QAAQ2W,EAAM,gBAAiB,CACrCtZ,KAAKilB,YAAc,GACnB,IAAK,IAAIrkB,KAAQ0Y,EAAM,eACnBtZ,KAAKilB,YAAariB,KAAKwd,GAAcle,OAAOtB,G,CAEpD,GAAI8B,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKklB,SAAW,GAChB,IAAK,IAAItkB,KAAQ0Y,EAAM,YACnBtZ,KAAKklB,SAAUtiB,KAAKoc,GAA0B9c,OAAOtB,G,CAE7D,GAAI8B,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKglB,SAAW,GAChB,IAAK,IAAIpkB,KAAQ0Y,EAAM,YACnBtZ,KAAKglB,SAAUpiB,KAAKmc,GAA0B7c,OAAOtB,G,GAKrE8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIpO,GACjBoO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,cAAgB3G,KAAKmlB,WAC1Bxe,EAAK,aAAe3G,KAAKsgB,UACzB3Z,EAAK,YAAc3G,KAAKugB,SACxB5Z,EAAK,YAAc3G,KAAKsjB,SAAWtjB,KAAKsjB,SAAS1J,SAAgB1Z,UACjEyG,EAAK,YAAc3G,KAAK8a,SAAW9a,KAAK8a,SAASlB,SAAgB1Z,UACjE,GAAIwC,MAAMC,QAAQ3C,KAAKujB,eAAgB,CACnC5c,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAKujB,cAClB5c,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExC,GAAIlX,MAAMC,QAAQ3C,KAAKkgB,WAAY,CAC/BvZ,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKkgB,UAClBvZ,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC,GAAIlX,MAAMC,QAAQ3C,KAAKilB,aAAc,CACjCte,EAAK,eAAiB,GACtB,IAAK,IAAI/F,KAAQZ,KAAKilB,YAClBte,EAAK,eAAe/D,KAAKhC,EAAKgZ,S,CAEtC,GAAIlX,MAAMC,QAAQ3C,KAAKklB,UAAW,CAC9Bve,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKklB,SAClBve,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC,GAAIlX,MAAMC,QAAQ3C,KAAKglB,UAAW,CAC9Bre,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKglB,SAClBre,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIpO,GACjBoO,EAAON,KAAKS,GACZ,OAAOH,C,QAiBFvN,WAA4B0X,GAOrCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKolB,WAAa,GAClBplB,KAAK8kB,QAAU,GACf9kB,KAAKklB,SAAW,GAChBllB,KAAKqlB,MAAQ,GACbrlB,KAAKwjB,UAAY,E,CAErBxjB,KAAKyc,eAAiB,qB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,eAAgB,CACpCtZ,KAAKolB,WAAa,GAClB,IAAK,IAAIxkB,KAAQ0Y,EAAM,cACnBtZ,KAAKolB,WAAYxiB,KAAKqc,GAA4B/c,OAAOtB,G,CAEjE,GAAI8B,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAK8kB,QAAU,GACf,IAAK,IAAIlkB,KAAQ0Y,EAAM,WACnBtZ,KAAK8kB,QAASliB,KAAKic,GAAyB3c,OAAOtB,G,CAE3D,GAAI8B,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKklB,SAAW,GAChB,IAAK,IAAItkB,KAAQ0Y,EAAM,YACnBtZ,KAAKklB,SAAUtiB,KAAKoc,GAA0B9c,OAAOtB,G,CAE7D,GAAI8B,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKqlB,MAAQ,GACb,IAAK,IAAIzkB,KAAQ0Y,EAAM,SACnBtZ,KAAKqlB,MAAOziB,KAAKgc,GAAuB1c,OAAOtB,G,CAEvD,GAAI8B,MAAMC,QAAQ2W,EAAM,cAAe,CACnCtZ,KAAKwjB,UAAY,GACjB,IAAK,IAAI5iB,KAAQ0Y,EAAM,aACnBtZ,KAAKwjB,UAAW5gB,KAAKkc,GAA0B5c,OAAOtB,G,GAKtE8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIvN,GACjBuN,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKolB,YAAa,CAChCze,EAAK,cAAgB,GACrB,IAAK,IAAI/F,KAAQZ,KAAKolB,WAClBze,EAAK,cAAc/D,KAAKhC,EAAKgZ,S,CAErC,GAAIlX,MAAMC,QAAQ3C,KAAK8kB,SAAU,CAC7Bne,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAK8kB,QAClBne,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElC,GAAIlX,MAAMC,QAAQ3C,KAAKklB,UAAW,CAC9Bve,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKklB,SAClBve,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC,GAAIlX,MAAMC,QAAQ3C,KAAKqlB,OAAQ,CAC3B1e,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKqlB,MAClB1e,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhC,GAAIlX,MAAMC,QAAQ3C,KAAKwjB,WAAY,CAC/B7c,EAAK,aAAe,GACpB,IAAK,IAAI/F,KAAQZ,KAAKwjB,UAClB7c,EAAK,aAAa/D,KAAKhC,EAAKgZ,S,CAEpC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIvN,GACjBuN,EAAON,KAAKS,GACZ,OAAOH,C,QAYFhN,WAA8BmX,GAIvCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKglB,SAAW,GAChBhlB,KAAKslB,cAAgB,E,CAEzBtlB,KAAKyc,eAAiB,uB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKglB,SAAW,GAChB,IAAK,IAAIpkB,KAAQ0Y,EAAM,YACnBtZ,KAAKglB,SAAUpiB,KAAKmc,GAA0B7c,OAAOtB,G,CAE7D,GAAI8B,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAKslB,cAAgB,GACrB,IAAK,IAAI1kB,KAAQ0Y,EAAM,iBACnBtZ,KAAKslB,cAAe1iB,KAAKqc,GAA4B/c,OAAOtB,G,GAK5E8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIhN,GACjBgN,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKglB,UAAW,CAC9Bre,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKglB,SAClBre,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC,GAAIlX,MAAMC,QAAQ3C,KAAKslB,eAAgB,CACnC3e,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAKslB,cAClB3e,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIhN,GACjBgN,EAAON,KAAKS,GACZ,OAAOH,C,QASFtJ,WAA2ByT,GAIpCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKulB,cAAgB,IAAIC,E,CAE7BxlB,KAAKyc,eAAiB,oB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKulB,cAAgBjM,EAAM,iBAAmBkM,GAA6BtjB,OAAOoX,EAAM,kBAAoB,IAAIkM,GAChHxlB,KAAKuc,qBAAuBjD,EAAM,uB,EAI1CI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAItJ,GACjBsJ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,iBAAmB3G,KAAKulB,cAAgBvlB,KAAKulB,cAAc3L,SAAgB1Z,UAChFyG,EAAK,wBAA0B3G,KAAKuc,qBACpCxc,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAItJ,GACjBsJ,EAAON,KAAKS,GACZ,OAAOH,C,QASF6L,GAWT3lB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKylB,uBAAyB,IAAIjV,EAClCxQ,KAAK0lB,oBAAsB,IAAIlV,EAC/BxQ,KAAK2lB,yBAA2B,IAAInV,EACpCxQ,KAAK4lB,MAAQ,GACb5lB,KAAKyjB,OAAS,E,EAItBpK,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK6lB,sBAAwBvM,EAAM,yBACnCtZ,KAAK8lB,sBAAwBxM,EAAM,yBACnCtZ,KAAKylB,uBAAyBnM,EAAM,0BAA4B9I,EAAKtO,OAAOoX,EAAM,2BAA6B,IAAI9I,EACnHxQ,KAAK+lB,0BAA4BzM,EAAM,6BACvCtZ,KAAKgmB,mBAAqB1M,EAAM,sBAChCtZ,KAAK0lB,oBAAsBpM,EAAM,uBAAyB9I,EAAKtO,OAAOoX,EAAM,wBAA0B,IAAI9I,EAC1GxQ,KAAK2lB,yBAA2BrM,EAAM,4BAA8B9I,EAAKtO,OAAOoX,EAAM,6BAA+B,IAAI9I,EACzH,GAAI9N,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAK4lB,MAAQ,GACb,IAAK,IAAIhlB,KAAQ0Y,EAAM,SACnBtZ,KAAK4lB,MAAOhjB,KAAKqjB,GAAoB/jB,OAAOtB,G,CAEpD,GAAI0Y,EAAM,UAAW,CACjBtZ,KAAKyjB,OAAS,GACd,IAAK,IAAInH,KAAOhD,EAAM,UAAW,CAC7B,GAAIA,EAAM,UAAUjV,eAAeiY,GACzBtc,KAAKyjB,OAASnH,GAAOhD,EAAM,UAAUgD,GAAO4J,GAAqBhkB,OAAOoX,EAAM,UAAUgD,IAAQ,IAAI4J,E,IAM9HxM,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI6L,GACjB7L,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,yBAA2B3G,KAAK6lB,sBACrClf,EAAK,yBAA2B3G,KAAK8lB,sBACrCnf,EAAK,0BAA4B3G,KAAKylB,uBAAyBzlB,KAAKylB,uBAAuB7L,SAAgB1Z,UAC3GyG,EAAK,6BAA+B3G,KAAK+lB,0BACzCpf,EAAK,sBAAwB3G,KAAKgmB,mBAClCrf,EAAK,uBAAyB3G,KAAK0lB,oBAAsB1lB,KAAK0lB,oBAAoB9L,SAAgB1Z,UAClGyG,EAAK,4BAA8B3G,KAAK2lB,yBAA2B3lB,KAAK2lB,yBAAyB/L,SAAgB1Z,UACjH,GAAIwC,MAAMC,QAAQ3C,KAAK4lB,OAAQ,CAC3Bjf,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAK4lB,MAClBjf,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhC,GAAI5Z,KAAKyjB,OAAQ,CACb9c,EAAK,UAAY,GACjB,IAAK,IAAI2V,KAAOtc,KAAKyjB,OAAQ,CACzB,GAAIzjB,KAAKyjB,OAAOpf,eAAeiY,GACrB3V,EAAK,UAAW2V,GAAOtc,KAAKyjB,OAAOnH,GAAOtc,KAAKyjB,OAAOnH,GAAK1C,SAAgB1Z,S,EAG7F,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI6L,GACjB7L,EAAON,KAAKS,GACZ,OAAOH,C,QAgBFsM,GAKTpmB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmmB,KAAO,E,EAIpB9M,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,SAAU,CAC9BtZ,KAAKmmB,KAAO,GACZ,IAAK,IAAIvlB,KAAQ0Y,EAAM,QACnBtZ,KAAKmmB,KAAMvjB,KAAKwjB,GAAmBlkB,OAAOtB,G,CAElDZ,KAAKqmB,UAAY/M,EAAM,aAAegN,GAAyBpkB,OAAOoX,EAAM,cAAqBpZ,S,EAIzGwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIsM,GACjBtM,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB,GAAI/W,MAAMC,QAAQ3C,KAAKmmB,MAAO,CAC1Bxf,EAAK,QAAU,GACf,IAAK,IAAI/F,KAAQZ,KAAKmmB,KAClBxf,EAAK,QAAQ/D,KAAKhC,EAAKgZ,S,CAE/BjT,EAAK,aAAe3G,KAAKqmB,UAAYrmB,KAAKqmB,UAAUzM,SAAgB1Z,UACpE,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIsM,GACjBtM,EAAON,KAAKS,GACZ,OAAOH,C,QAUFyM,GAGTvmB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKumB,QAAU,E,EAIvBlN,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAKumB,QAAU,GACf,IAAK,IAAI3lB,KAAQ0Y,EAAM,WACnBtZ,KAAKumB,QAAS3jB,KAAK4jB,GAAsBtkB,OAAOtB,G,GAKhE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyM,GACjBzM,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKumB,SAAU,CAC7B5f,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAKumB,QAClB5f,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyM,GACjBzM,EAAON,KAAKS,GACZ,OAAOH,C,QAQF6M,GAIT3mB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKgN,MAAQsM,EAAM,SACnBtZ,KAAK2f,MAAQrG,EAAM,SAAW4M,GAAqBhkB,OAAOoX,EAAM,UAAiBpZ,S,EAIzFwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI6M,GACjB7M,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAKgN,MACrBrG,EAAK,SAAW3G,KAAK2f,MAAQ3f,KAAK2f,MAAM/F,SAAgB1Z,UACxD,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI6M,GACjB7M,EAAON,KAAKS,GACZ,OAAOH,C,QASFuM,GAqBTrmB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAKymB,aAAenN,EAAM,gBAC1BtZ,KAAKwgB,YAAclH,EAAM,eACzBtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAK0mB,iBAAmBpN,EAAM,oBAC9BtZ,KAAK2mB,SAAWrN,EAAM,YACtBtZ,KAAK4mB,YAActN,EAAM,eACzBtZ,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAoBpZ,UAC1EF,KAAK6mB,SAAWvN,EAAM,YACtBtZ,KAAK8mB,SAAWxN,EAAM,YACtBtZ,KAAK+mB,UAAYzN,EAAM,aACvBtZ,KAAKgnB,UAAY1N,EAAM,aACvBtZ,KAAKinB,gBAAkB3N,EAAM,mBAC7BtZ,KAAKknB,MAAQ5N,EAAM,SACnBtZ,KAAKqmB,UAAY/M,EAAM,aAAegN,GAAyBpkB,OAAOoX,EAAM,cAAqBpZ,UACjG,GAAIwC,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAKd,QAAU,GACf,IAAK,IAAI0B,KAAQ0Y,EAAM,WACnBtZ,KAAKd,QAAS0D,KAAKhC,E,CAE3BZ,KAAKmnB,gBAAkB7N,EAAM,mBAC7BtZ,KAAKonB,iBAAmB9N,EAAM,mB,EAItCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuM,GACjBvM,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,gBAAkB3G,KAAKymB,aAC5B9f,EAAK,eAAiB3G,KAAKwgB,YAC3B7Z,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,oBAAsB3G,KAAK0mB,iBAChC/f,EAAK,YAAc3G,KAAK2mB,SACxBhgB,EAAK,eAAiB3G,KAAK4mB,YAC3BjgB,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjEyG,EAAK,YAAc3G,KAAK6mB,SACxBlgB,EAAK,YAAc3G,KAAK8mB,SACxBngB,EAAK,aAAe3G,KAAK+mB,UACzBpgB,EAAK,aAAe3G,KAAKgnB,UACzBrgB,EAAK,mBAAqB3G,KAAKinB,gBAC/BtgB,EAAK,SAAW3G,KAAKknB,MACrBvgB,EAAK,aAAe3G,KAAKqmB,UAAYrmB,KAAKqmB,UAAUzM,SAAgB1Z,UACpE,GAAIwC,MAAMC,QAAQ3C,KAAKd,SAAU,CAC7ByH,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAKd,QAClByH,EAAK,WAAW/D,KAAKhC,E,CAE7B+F,EAAK,mBAAqB3G,KAAKmnB,gBAC/BxgB,EAAK,oBAAsB3G,KAAKonB,iBAChC,OAAOzgB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuM,GACjBvM,EAAON,KAAKS,GACZ,OAAOH,C,MA0BH0N,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,0BACAA,IAAA,oBACAA,IAAA,wCACAA,IAAA,sBACAA,IAAA,kBACAA,IAAA,kBACAA,IAAA,oBACAA,IAAA,sBACAA,IAAA,8BACAA,IAAA,mCACAA,IAAA,2BACAA,IAAA,mCACAA,IAAA,mCACAA,IAAA,sBACH,EAhBD,CAAYA,QAAa,K,IAkBbC,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,kBACAA,IAAA,4BACAA,IAAA,0BACAA,IAAA,oBACAA,IAAA,wCACAA,IAAA,sBACAA,IAAA,kBACAA,IAAA,wBACAA,IAAA,yBACH,EAXD,CAAYA,QAAgB,K,MAafhB,GAITzmB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKqmB,UAAY/M,EAAM,aACvBtZ,KAAKunB,OAASjO,EAAM,S,EAI5BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI2M,GACjB3M,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,aAAe3G,KAAKqmB,UACzB1f,EAAK,UAAY3G,KAAKunB,OACtB,OAAO5gB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI2M,GACjB3M,EAAON,KAAKS,GACZ,OAAOH,C,MASH6N,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,iBACH,EAHD,CAAYA,QAAe,K,MAKdhjB,GAIT3E,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKgE,KAAOsV,EAAM,QAAU,IAAIuE,KAAKvE,EAAM,QAAQwE,YAAmB5d,UACtEF,KAAKiE,MAAQqV,EAAM,SAAW,IAAIuE,KAAKvE,EAAM,SAASwE,YAAmB5d,S,EAIjFwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInV,GACjBmV,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKgE,KAAOhE,KAAKgE,KAAKM,cAAqBpE,UAC1DyG,EAAK,SAAW3G,KAAKiE,MAAQjE,KAAKiE,MAAMK,cAAqBpE,UAC7D,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInV,GACjBmV,EAAON,KAAKS,GACZ,OAAOH,C,QASF8N,GAIT5nB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK0D,WAAa4V,EAAM,cACxBtZ,KAAK0nB,OAASpO,EAAM,S,EAI5BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI8N,GACjB9N,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,cAAgB3G,KAAK0D,WAC1BiD,EAAK,UAAY3G,KAAK0nB,OACtB,OAAO/gB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI8N,GACjB9N,EAAON,KAAKS,GACZ,OAAOH,C,QASF3U,GAITnF,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKgE,KAAOsV,EAAM,QAAU,IAAIuE,KAAKvE,EAAM,QAAQwE,YAAmB5d,UACtEF,KAAKiE,MAAQqV,EAAM,SAAW,IAAIuE,KAAKvE,EAAM,SAASwE,YAAmB5d,S,EAIjFwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI3U,GACjB2U,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKgE,KAAOhE,KAAKgE,KAAKM,cAAqBpE,UAC1DyG,EAAK,SAAW3G,KAAKiE,MAAQjE,KAAKiE,MAAMK,cAAqBpE,UAC7D,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI3U,GACjB2U,EAAON,KAAKS,GACZ,OAAOH,C,QASFpU,GAIT1F,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAK2nB,QAAUrO,EAAM,U,EAI7BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIpU,GACjBoU,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,WAAa3G,KAAK2nB,QACvB,OAAOhhB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIpU,GACjBoU,EAAON,KAAKS,GACZ,OAAOH,C,EASf,IAAYiO,IAAZ,SAAYA,GACRA,IAAA,wDACAA,IAAA,wDACAA,IAAA,qCACH,EAJD,CAAYA,QAAuC,K,MAMtCC,GAUThoB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK8nB,iBAAmB,E,EAIhCzO,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKijB,SAAW3J,EAAM,YAAc,IAAIuE,KAAKvE,EAAM,YAAYwE,YAAmB5d,UAClFF,KAAKkjB,SAAW5J,EAAM,YACtBtZ,KAAKmjB,UAAY7J,EAAM,aAAe,IAAIuE,KAAKvE,EAAM,aAAawE,YAAmB5d,UACrFF,KAAKojB,UAAY9J,EAAM,aACvB,GAAI5W,MAAMC,QAAQ2W,EAAM,qBAAsB,CAC1CtZ,KAAK8nB,iBAAmB,GACxB,IAAK,IAAIlnB,KAAQ0Y,EAAM,oBACnBtZ,KAAK8nB,iBAAkBllB,KAAKmlB,GAA0B7lB,OAAOtB,G,CAErEZ,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1EF,KAAKgoB,WAAa1O,EAAM,a,EAIhCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIkO,GACjBlO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAKijB,SAAWjjB,KAAKijB,SAAS3e,cAAqBpE,UACtEyG,EAAK,YAAc3G,KAAKkjB,SACxBvc,EAAK,aAAe3G,KAAKmjB,UAAYnjB,KAAKmjB,UAAU7e,cAAqBpE,UACzEyG,EAAK,aAAe3G,KAAKojB,UACzB,GAAI1gB,MAAMC,QAAQ3C,KAAK8nB,kBAAmB,CACtCnhB,EAAK,oBAAsB,GAC3B,IAAK,IAAI/F,KAAQZ,KAAK8nB,iBAClBnhB,EAAK,oBAAoB/D,KAAKhC,EAAKgZ,S,CAE3CjT,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9DyG,EAAK,cAAgB3G,KAAKgoB,WAC1B,OAAOrhB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIkO,GACjBlO,EAAON,KAAKS,GACZ,OAAOH,C,QAeFoO,GAITloB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK0D,WAAa4V,EAAM,cACxBtZ,KAAK0nB,OAASpO,EAAM,S,EAI5BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIoO,GACjBpO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,cAAgB3G,KAAK0D,WAC1BiD,EAAK,UAAY3G,KAAK0nB,OACtB,OAAO/gB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIoO,GACjBpO,EAAON,KAAKS,GACZ,OAAOH,C,QASFsO,GAKTpoB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKkoB,cAAgB5O,EAAM,iBAC3BtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIsO,GACjBtO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,iBAAmB3G,KAAKkoB,cAC7BvhB,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIsO,GACjBtO,EAAON,KAAKS,GACZ,OAAOH,C,QAUFhU,GAGT9F,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmoB,MAAQ,E,EAIrB9O,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKmoB,MAAQ,GACb,IAAK,IAAIvnB,KAAQ0Y,EAAM,SACnBtZ,KAAKmoB,MAAOvlB,KAAKwlB,GAAQlmB,OAAOtB,G,GAKhD8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIhU,GACjBgU,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKmoB,OAAQ,CAC3BxhB,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKmoB,MAClBxhB,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIhU,GACjBgU,EAAON,KAAKS,GACZ,OAAOH,C,QAQFyO,GAKTvoB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK0c,KAAOpD,EAAM,QAClBtZ,KAAKqoB,MAAQ/O,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyO,GACjBzO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,QAAU3G,KAAK0c,KACpB/V,EAAK,SAAW3G,KAAKqoB,MACrB,OAAO1hB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyO,GACjBzO,EAAON,KAAKS,GACZ,OAAOH,C,QAUF5T,GAQTlG,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAK+b,GAAuBzc,OAAOtB,G,CAEvDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI5T,GACjB4T,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI5T,GACjB4T,EAAON,KAAKS,GACZ,OAAOH,C,QAaF1R,GAGTpI,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKuc,qBAAuBjD,EAAM,uB,EAI1CI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI1R,GACjB0R,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,wBAA0B3G,KAAKuc,qBACpC,OAAO5V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI1R,GACjB0R,EAAON,KAAKS,GACZ,OAAOH,C,QAQF2O,GAKTzoB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKK,YAAc,E,EAI3BgZ,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpB,GAAI5W,MAAMC,QAAQ2W,EAAM,gBAAiB,CACrCtZ,KAAKK,YAAc,GACnB,IAAK,IAAIO,KAAQ0Y,EAAM,eACnBtZ,KAAKK,YAAauC,KAAKhC,E,CAE/BZ,KAAKkhB,MAAQ5H,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI2O,GACjB3O,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtB,GAAIsC,MAAMC,QAAQ3C,KAAKK,aAAc,CACjCsG,EAAK,eAAiB,GACtB,IAAK,IAAI/F,KAAQZ,KAAKK,YAClBsG,EAAK,eAAe/D,KAAKhC,E,CAEjC+F,EAAK,SAAW3G,KAAKkhB,MACrB,OAAOva,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI2O,GACjB3O,EAAON,KAAKS,GACZ,OAAOH,C,QAUF4O,GAKT1oB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKwoB,YAAclP,EAAM,eACzBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI4O,GACjB5O,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,eAAiB3G,KAAKwoB,YAC3B7hB,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI4O,GACjB5O,EAAON,KAAKS,GACZ,OAAOH,C,QAUF8O,GAKT5oB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKwoB,YAAclP,EAAM,eACzBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI8O,GACjB9O,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,eAAiB3G,KAAKwoB,YAC3B7hB,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI8O,GACjB9O,EAAON,KAAKS,GACZ,OAAOH,C,QAUFlR,GAGT5I,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK0oB,YAAcpP,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIlR,GACjBkR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,eAAiB3G,KAAK0oB,YAC3B,OAAO/hB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIlR,GACjBkR,EAAON,KAAKS,GACZ,OAAOH,C,QAQF3Q,GAQTnJ,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKsc,GAAwBhd,OAAOtB,G,CAExDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI3Q,GACjB2Q,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI3Q,GACjB2Q,EAAON,KAAKS,GACZ,OAAOH,C,QAaFgP,GAKT9oB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK4oB,OAAS,E,EAItBvP,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKmb,QAAU7B,EAAM,WACrBtZ,KAAKia,KAAOX,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAK4oB,OAAS,GACd,IAAK,IAAIhoB,KAAQ0Y,EAAM,UACnBtZ,KAAK4oB,OAAQhmB,KAAKhC,E,GAKlC8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIgP,GACjBhP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAKmb,QACvBxU,EAAK,QAAU3G,KAAKia,KACpB,GAAIvX,MAAMC,QAAQ3C,KAAK4oB,QAAS,CAC5BjiB,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAK4oB,OAClBjiB,EAAK,UAAU/D,KAAKhC,E,CAE5B,OAAO+F,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIgP,GACjBhP,EAAON,KAAKS,GACZ,OAAOH,C,MAUHkP,IAAZ,SAAYA,GACRA,IAAA,cACAA,IAAA,gBACAA,IAAA,oBACAA,IAAA,0BACAA,IAAA,+BACH,EAND,CAAYA,QAAwB,K,MAQvBtf,GAST1J,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKyjB,OAAS,E,EAItBpK,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK8oB,eAAiBxP,EAAM,kBAC5BtZ,KAAK+oB,gBAAkBzP,EAAM,mBAC7BtZ,KAAKgpB,oBAAsB1P,EAAM,uBACjCtZ,KAAKipB,mBAAqB3P,EAAM,sBAChC,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKyjB,OAAS,GACd,IAAK,IAAI7iB,KAAQ0Y,EAAM,UACnBtZ,KAAKyjB,OAAQ7gB,KAAKsmB,GAAgChnB,OAAOtB,G,GAKzE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIpQ,GACjBoQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,kBAAoB3G,KAAK8oB,eAC9BniB,EAAK,mBAAqB3G,KAAK+oB,gBAC/BpiB,EAAK,uBAAyB3G,KAAKgpB,oBACnCriB,EAAK,sBAAwB3G,KAAKipB,mBAClC,GAAIvmB,MAAMC,QAAQ3C,KAAKyjB,QAAS,CAC5B9c,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKyjB,OAClB9c,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIpQ,GACjBoQ,EAAON,KAAKS,GACZ,OAAOH,C,QAcFuP,GAITrpB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKyjB,OAAS,E,EAItBpK,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,WAAY,CAChCtZ,KAAKyjB,OAAS,GACd,IAAK,IAAI7iB,KAAQ0Y,EAAM,UACnBtZ,KAAKyjB,OAAQ7gB,KAAKumB,GAA2BjnB,OAAOtB,G,GAKpE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuP,GACjBvP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB,GAAI/W,MAAMC,QAAQ3C,KAAKyjB,QAAS,CAC5B9c,EAAK,UAAY,GACjB,IAAK,IAAI/F,KAAQZ,KAAKyjB,OAClB9c,EAAK,UAAU/D,KAAKhC,EAAKgZ,S,CAEjC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuP,GACjBvP,EAAON,KAAKS,GACZ,OAAOH,C,QASFwP,GASTtpB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKopB,cAAgB,E,EAI7B/P,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAK8f,YAAcxG,EAAM,eACzBtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK+f,KAAOzG,EAAM,QAClBtZ,KAAKqpB,0BAA4B/P,EAAM,6BACvC,GAAI5W,MAAMC,QAAQ2W,EAAM,kBAAmB,CACvCtZ,KAAKopB,cAAgB,GACrB,IAAK,IAAIxoB,KAAQ0Y,EAAM,iBACnBtZ,KAAKopB,cAAexmB,KAAK0mB,GAAgBpnB,OAAOtB,G,GAKhE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIwP,GACjBxP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,eAAiB3G,KAAK8f,YAC3BnZ,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,QAAU3G,KAAK+f,KACpBpZ,EAAK,6BAA+B3G,KAAKqpB,0BACzC,GAAI3mB,MAAMC,QAAQ3C,KAAKopB,eAAgB,CACnCziB,EAAK,iBAAmB,GACxB,IAAK,IAAI/F,KAAQZ,KAAKopB,cAClBziB,EAAK,iBAAiB/D,KAAKhC,EAAKgZ,S,CAExC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIwP,GACjBxP,EAAON,KAAKS,GACZ,OAAOH,C,QAcF2P,GAITzpB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyhB,MAAQnI,EAAM,SACnBtZ,KAAK6f,MAAQvG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI2P,GACjB3P,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,SAAW3G,KAAKyhB,MACrB9a,EAAK,SAAW3G,KAAK6f,MACrB,OAAOlZ,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI2P,GACjB3P,EAAON,KAAKS,GACZ,OAAOH,C,MASH4P,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,kBACAA,IAAA,gBACAA,IAAA,0BACAA,IAAA,oCACAA,IAAA,0CACAA,IAAA,wCACAA,IAAA,0CACAA,IAAA,0CACAA,IAAA,8CACAA,IAAA,uBACAA,IAAA,2BACAA,IAAA,qCACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,yCACAA,IAAA,iDACAA,IAAA,mBACAA,IAAA,6CACAA,IAAA,wBACH,EAtBD,CAAYA,QAAa,K,MAwBZxf,GAQTlK,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKgc,GAAuB1c,OAAOtB,G,CAEvDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI5P,GACjB4P,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI5P,GACjB4P,EAAON,KAAKS,GACZ,OAAOH,C,QAaFtP,GAQTxK,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKoc,GAA0B9c,OAAOtB,G,CAE1DZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAItP,GACjBsP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAItP,GACjBsP,EAAON,KAAKS,GACZ,OAAOH,C,QAaFnP,GAMT3K,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKoa,QAAU,IAAI4E,GACnBhf,KAAKwpB,MAAQ,E,EAIrBnQ,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKoa,QAAUd,EAAM,WAAa0F,GAA0B9c,OAAOoX,EAAM,YAAc,IAAI0F,GAC3Fhf,KAAKypB,SAAWnQ,EAAM,YACtB,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKwpB,MAAQ,GACb,IAAK,IAAI5oB,KAAQ0Y,EAAM,SACnBtZ,KAAKwpB,MAAO5mB,KAAK4H,GAA4BtI,OAAOtB,G,CAE5DZ,KAAK0pB,MAAQpQ,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInP,GACjBmP,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAKoa,QAAUpa,KAAKoa,QAAQR,SAAgB1Z,UAC9DyG,EAAK,YAAc3G,KAAKypB,SACxB,GAAI/mB,MAAMC,QAAQ3C,KAAKwpB,OAAQ,CAC3B7iB,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKwpB,MAClB7iB,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,SAAW3G,KAAK0pB,MACrB,OAAO/iB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInP,GACjBmP,EAAON,KAAKS,GACZ,OAAOH,C,QAWF3O,GAQTnL,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKic,GAAyB3c,OAAOtB,G,CAEzDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI3O,GACjB2O,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI3O,GACjB2O,EAAON,KAAKS,GACZ,OAAOH,C,QAaFxO,GAQTtL,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAK+mB,GAAgCznB,OAAOtB,G,CAEhEZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIxO,GACjBwO,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIxO,GACjBwO,EAAON,KAAKS,GACZ,OAAOH,C,QAaFgQ,GAIT9pB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK8kB,QAAU,E,EAIvBzL,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAK8kB,QAAU,GACf,IAAK,IAAIlkB,KAAQ0Y,EAAM,WACnBtZ,KAAK8kB,QAASliB,KAAKic,GAAyB3c,OAAOtB,G,GAKnE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIgQ,GACjBhQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB,GAAI/W,MAAMC,QAAQ3C,KAAK8kB,SAAU,CAC7Bne,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAK8kB,QAClBne,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIgQ,GACjBhQ,EAAON,KAAKS,GACZ,OAAOH,C,QASF/N,GAQT/L,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKmc,GAA0B7c,OAAOtB,G,CAE1DZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI/N,GACjB+N,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI/N,GACjB+N,EAAON,KAAKS,GACZ,OAAOH,C,QAaFpN,GAQT1M,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKqc,GAA4B/c,OAAOtB,G,CAE5DZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIpN,GACjBoN,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIpN,GACjBoN,EAAON,KAAKS,GACZ,OAAOH,C,QAaF5L,GAGTlO,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmoB,MAAQ,E,EAIrB9O,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKmoB,MAAQ,GACb,IAAK,IAAIvnB,KAAQ0Y,EAAM,SACnBtZ,KAAKmoB,MAAOvlB,KAAKwlB,GAAQlmB,OAAOtB,G,GAKhD8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI5L,GACjB4L,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKmoB,OAAQ,CAC3BxhB,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKmoB,MAClBxhB,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI5L,GACjB4L,EAAON,KAAKS,GACZ,OAAOH,C,QAQFxL,GAQTtO,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAK6b,GAAsBvc,OAAOtB,G,CAEtDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIxL,GACjBwL,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIxL,GACjBwL,EAAON,KAAKS,GACZ,OAAOH,C,MAaHiQ,IAAZ,SAAYA,GACRA,IAAA,sBACAA,IAAA,iBACH,EAHD,CAAYA,QAAe,K,MAKdxa,GAKTvP,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmoB,MAAQ,E,EAIrB9O,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKmoB,MAAQ,GACb,IAAK,IAAIvnB,KAAQ0Y,EAAM,SACnBtZ,KAAKmoB,MAAOvlB,KAAKwlB,GAAQlmB,OAAOtB,G,CAExCZ,KAAK6pB,gBAAkBvQ,EAAM,mBAAqB4I,GAAShgB,OAAOoX,EAAM,oBAA2BpZ,UACnGF,KAAK8pB,YAAcxQ,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIvK,GACjBuK,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKmoB,OAAQ,CAC3BxhB,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKmoB,MAClBxhB,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,mBAAqB3G,KAAK6pB,gBAAkB7pB,KAAK6pB,gBAAgBjQ,SAAgB1Z,UACtFyG,EAAK,eAAiB3G,KAAK8pB,YAC3B,OAAOnjB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIvK,GACjBuK,EAAON,KAAKS,GACZ,OAAOH,C,QAUF5J,GAQTlQ,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKqd,GAAmB/d,OAAOtB,G,CAEnDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI5J,GACjB4J,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI5J,GACjB4J,EAAON,KAAKS,GACZ,OAAOH,C,QAaFoQ,GAKTlqB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKgqB,SAAW,E,EAIxB3Q,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKmQ,OAASmJ,EAAM,UACpB,GAAIA,EAAM,YAAa,CACnBtZ,KAAKgqB,SAAW,GAChB,IAAK,IAAI1N,KAAOhD,EAAM,YAAa,CAC/B,GAAIA,EAAM,YAAYjV,eAAeiY,GAC3Btc,KAAKgqB,SAAW1N,GAAOhD,EAAM,YAAYgD,E,IAMnE5C,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIoQ,GACjBpQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,UAAY3G,KAAKmQ,OACtB,GAAInQ,KAAKgqB,SAAU,CACfrjB,EAAK,YAAc,GACnB,IAAK,IAAI2V,KAAOtc,KAAKgqB,SAAU,CAC3B,GAAIhqB,KAAKgqB,SAAS3lB,eAAeiY,GACvB3V,EAAK,YAAa2V,GAAatc,KAAKgqB,SAAU1N,E,EAGhE,OAAO3V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIoQ,GACjBpQ,EAAON,KAAKS,GACZ,OAAOH,C,QAUF/I,WAA6BkT,GAQtCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKulB,cAAgB,IAAI0E,E,CAE7BjqB,KAAKyc,eAAiB,sB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKijB,SAAW3J,EAAM,YAAc,IAAIuE,KAAKvE,EAAM,YAAYwE,YAAmB5d,UAClFF,KAAKkjB,SAAW5J,EAAM,YACtBtZ,KAAKmjB,UAAY7J,EAAM,aAAe,IAAIuE,KAAKvE,EAAM,aAAawE,YAAmB5d,UACrFF,KAAKojB,UAAY9J,EAAM,aACvBtZ,KAAKulB,cAAgBjM,EAAM,iBAAmB2Q,GAA+B/nB,OAAOoX,EAAM,kBAAoB,IAAI2Q,GAClHjqB,KAAKuc,qBAAuBjD,EAAM,uB,EAI1CI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI/I,GACjB+I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAKijB,SAAWI,GAAWrjB,KAAKijB,UAAiB/iB,UACpEyG,EAAK,YAAc3G,KAAKkjB,SACxBvc,EAAK,aAAe3G,KAAKmjB,UAAYE,GAAWrjB,KAAKmjB,WAAkBjjB,UACvEyG,EAAK,aAAe3G,KAAKojB,UACzBzc,EAAK,iBAAmB3G,KAAKulB,cAAgBvlB,KAAKulB,cAAc3L,SAAgB1Z,UAChFyG,EAAK,wBAA0B3G,KAAKuc,qBACpCxc,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI/I,GACjB+I,EAAON,KAAKS,GACZ,OAAOH,C,QAaFsQ,WAAuCzE,GAEhD3lB,YAAY8G,GACR5G,MAAM4G,E,CAGD0S,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIsQ,GACjBtQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIsQ,GACjBtQ,EAAON,KAAKS,GACZ,OAAOH,C,QAOFuQ,GAKTrqB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmqB,WAAa,E,EAI1B9Q,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK0Q,SAAW4I,EAAM,YACtB,GAAIA,EAAM,cAAe,CACrBtZ,KAAKmqB,WAAa,GAClB,IAAK,IAAI7N,KAAOhD,EAAM,cAAe,CACjC,GAAIA,EAAM,cAAcjV,eAAeiY,GAC7Btc,KAAKmqB,WAAa7N,GAAOhD,EAAM,cAAcgD,E,IAMvE5C,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuQ,GACjBvQ,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAK0Q,SACxB,GAAI1Q,KAAKmqB,WAAY,CACjBxjB,EAAK,cAAgB,GACrB,IAAK,IAAI2V,KAAOtc,KAAKmqB,WAAY,CAC7B,GAAInqB,KAAKmqB,WAAW9lB,eAAeiY,GACzB3V,EAAK,cAAe2V,GAAatc,KAAKmqB,WAAY7N,E,EAGpE,OAAO3V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuQ,GACjBvQ,EAAON,KAAKS,GACZ,OAAOH,C,QAUF3I,GAGTnR,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmoB,MAAQ,E,EAIrB9O,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKmoB,MAAQ,GACb,IAAK,IAAIvnB,KAAQ0Y,EAAM,SACnBtZ,KAAKmoB,MAAOvlB,KAAKwlB,GAAQlmB,OAAOtB,G,GAKhD8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI3I,GACjB2I,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKmoB,OAAQ,CAC3BxhB,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKmoB,MAClBxhB,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI3I,GACjB2I,EAAON,KAAKS,GACZ,OAAOH,C,QAQFvI,GAQTvR,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAK4b,GAAqBtc,OAAOtB,G,CAErDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIvI,GACjBuI,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIvI,GACjBuI,EAAON,KAAKS,GACZ,OAAOH,C,QAaF9H,GAKThS,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKoqB,MAAQ,E,EAIrB/Q,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKqqB,IAAM/Q,EAAM,OAAS,IAAIuE,KAAKvE,EAAM,OAAOwE,YAAmB5d,UACnEF,KAAKsqB,IAAMhR,EAAM,OAAS,IAAIuE,KAAKvE,EAAM,OAAOwE,YAAmB5d,UACnE,GAAIwC,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKoqB,MAAQ,GACb,IAAK,IAAIxpB,KAAQ0Y,EAAM,SACnBtZ,KAAKoqB,MAAOxnB,KAAKhC,E,GAKjC8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI9H,GACjB8H,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,OAAS3G,KAAKqqB,IAAMrqB,KAAKqqB,IAAI/lB,cAAqBpE,UACvDyG,EAAK,OAAS3G,KAAKsqB,IAAMtqB,KAAKsqB,IAAIhmB,cAAqBpE,UACvD,GAAIwC,MAAMC,QAAQ3C,KAAKoqB,OAAQ,CAC3BzjB,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKoqB,MAClBzjB,EAAK,SAAS/D,KAAKhC,E,CAE3B,OAAO+F,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI9H,GACjB8H,EAAON,KAAKS,GACZ,OAAOH,C,QAUFvH,GAKTvS,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK0c,KAAOpD,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIvH,GACjBuH,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,QAAU3G,KAAK0c,KACpB,OAAO/V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIvH,GACjBuH,EAAON,KAAKS,GACZ,OAAOH,C,QAUFrH,GAMTzS,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK6pB,gBAAkBvQ,EAAM,mBAAqB4I,GAAShgB,OAAOoX,EAAM,oBAA2BpZ,UACnGF,KAAK8pB,YAAcxQ,EAAM,eACzBtZ,KAAKuqB,YAAcjR,EAAM,eACzBtZ,KAAKuc,qBAAuBjD,EAAM,uB,EAI1CI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIrH,GACjBqH,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,mBAAqB3G,KAAK6pB,gBAAkB7pB,KAAK6pB,gBAAgBjQ,SAAgB1Z,UACtFyG,EAAK,eAAiB3G,KAAK8pB,YAC3BnjB,EAAK,eAAiB3G,KAAKuqB,YAC3B5jB,EAAK,wBAA0B3G,KAAKuc,qBACpC,OAAO5V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIrH,GACjBqH,EAAON,KAAKS,GACZ,OAAOH,C,MAWH6Q,IAAZ,SAAYA,GACRA,IAAA,0BACAA,IAAA,4BACAA,IAAA,qBACH,EAJD,CAAYA,QAAW,K,MAMV9X,GAQT7S,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAK8b,GAAuBxc,OAAOtB,G,CAEvDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIjH,GACjBiH,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIjH,GACjBiH,EAAON,KAAKS,GACZ,OAAOH,C,QAaF8Q,GAUT5qB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK2kB,QAAU,IAAI7V,GACnB9O,KAAK+jB,SAAW,IAAIvT,C,EAI5B6I,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKkS,WAAaoH,EAAM,cACxBtZ,KAAK2kB,QAAUrL,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAc,IAAIxK,GACzE9O,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAe,IAAI9I,EACzE,GAAI9N,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKykB,SAAW,GAChB,IAAK,IAAI7jB,KAAQ0Y,EAAM,YACnBtZ,KAAKykB,SAAU7hB,KAAKsY,EAAahZ,OAAOtB,G,CAEhDZ,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1EF,KAAKT,SAAW+Z,EAAM,YAAc4I,GAAShgB,OAAOoX,EAAM,aAAoBpZ,S,EAItFwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI8Q,GACjB9Q,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,cAAgB3G,KAAKkS,WAC1BvL,EAAK,WAAa3G,KAAK2kB,QAAU3kB,KAAK2kB,QAAQ/K,SAAgB1Z,UAC9DyG,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjE,GAAIwC,MAAMC,QAAQ3C,KAAKykB,UAAW,CAC9B9d,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKykB,SAClB9d,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnCjT,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9DyG,EAAK,YAAc3G,KAAKT,SAAWS,KAAKT,SAASqa,SAAgB1Z,UACjE,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI8Q,GACjB9Q,EAAON,KAAKS,GACZ,OAAOH,C,QAeF+Q,GAKT7qB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK8S,SAAWwG,EAAM,YACtBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI+Q,GACjB/Q,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAK8S,SACxBnM,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI+Q,GACjB/Q,EAAON,KAAKS,GACZ,OAAOH,C,QAUFrG,WAAsCN,GAG/CnT,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,+B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKkS,WAAaoH,EAAM,a,EAIhCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIrG,GACjBqG,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,cAAgB3G,KAAKkS,WAC1BnS,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIrG,GACjBqG,EAAON,KAAKS,GACZ,OAAOH,C,QAQFgR,GAWT9qB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK+jB,SAAW,IAAIvT,EACpBxQ,KAAKykB,SAAW,GAChBzkB,KAAKT,SAAW,IAAI2iB,E,EAI5B7I,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK8S,SAAWwG,EAAM,YACtBtZ,KAAKoT,MAAQkG,EAAM,SACnBtZ,KAAKkS,WAAaoH,EAAM,cACxBtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAe,IAAI9I,EACzE,GAAI9N,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKykB,SAAW,GAChB,IAAK,IAAI7jB,KAAQ0Y,EAAM,YACnBtZ,KAAKykB,SAAU7hB,KAAKsY,EAAahZ,OAAOtB,G,CAEhDZ,KAAK0O,QAAU4K,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAmBpZ,UAC1EF,KAAKT,SAAW+Z,EAAM,YAAc4I,GAAShgB,OAAOoX,EAAM,aAAe,IAAI4I,E,EAIrFxI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIgR,GACjBhR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAK8S,SACxBnM,EAAK,SAAW3G,KAAKoT,MACrBzM,EAAK,cAAgB3G,KAAKkS,WAC1BvL,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjE,GAAIwC,MAAMC,QAAQ3C,KAAKykB,UAAW,CAC9B9d,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKykB,SAClB9d,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnCjT,EAAK,WAAa3G,KAAK0O,QAAU1O,KAAK0O,QAAQkL,SAAgB1Z,UAC9DyG,EAAK,YAAc3G,KAAKT,SAAWS,KAAKT,SAASqa,SAAgB1Z,UACjE,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIgR,GACjBhR,EAAON,KAAKS,GACZ,OAAOH,C,QAgBFiR,GAMT/qB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK2kB,QAAU,IAAI7V,GACnB9O,KAAK+jB,SAAW,IAAIvT,C,EAI5B6I,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK8S,SAAWwG,EAAM,YACtBtZ,KAAK2kB,QAAUrL,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAc,IAAIxK,GACzE9O,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAe,IAAI9I,C,EAIjFkJ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIiR,GACjBjR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAK8S,SACxBnM,EAAK,WAAa3G,KAAK2kB,QAAU3kB,KAAK2kB,QAAQ/K,SAAgB1Z,UAC9DyG,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjE,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIiR,GACjBjR,EAAON,KAAKS,GACZ,OAAOH,C,QAWFkR,GAMThrB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK8S,SAAWwG,EAAM,YACtBtZ,KAAK8T,UAAYwF,EAAM,aACvBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIkR,GACjBlR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAK8S,SACxBnM,EAAK,aAAe3G,KAAK8T,UACzBnN,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIkR,GACjBlR,EAAON,KAAKS,GACZ,OAAOH,C,QAWFmR,GAMTjrB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK+jB,SAAW,IAAIvT,C,EAI5B6I,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK8T,UAAYwF,EAAM,aACvBtZ,KAAKoT,MAAQkG,EAAM,SACnBtZ,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAe,IAAI9I,C,EAIjFkJ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAImR,GACjBnR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,aAAe3G,KAAK8T,UACzBnN,EAAK,SAAW3G,KAAKoT,MACrBzM,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjE,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAImR,GACjBnR,EAAON,KAAKS,GACZ,OAAOH,C,QAWFnF,GAKT3U,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK+qB,qBAAuB,GAC5B/qB,KAAKgrB,oBAAsB,E,EAInC3R,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChB,GAAI5W,MAAMC,QAAQ2W,EAAM,yBAA0B,CAC9CtZ,KAAK+qB,qBAAuB,GAC5B,IAAK,IAAInqB,KAAQ0Y,EAAM,wBACnBtZ,KAAK+qB,qBAAsBnoB,KAAK2c,EAAyBrd,OAAOtB,G,CAExE,GAAI8B,MAAMC,QAAQ2W,EAAM,wBAAyB,CAC7CtZ,KAAKgrB,oBAAsB,GAC3B,IAAK,IAAIpqB,KAAQ0Y,EAAM,uBACnBtZ,KAAKgrB,oBAAqBpoB,KAAKqoB,GAAqB/oB,OAAOtB,G,GAK3E8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInF,GACjBmF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB,GAAI9W,MAAMC,QAAQ3C,KAAK+qB,sBAAuB,CAC1CpkB,EAAK,wBAA0B,GAC/B,IAAK,IAAI/F,KAAQZ,KAAK+qB,qBAClBpkB,EAAK,wBAAwB/D,KAAKhC,EAAKgZ,S,CAE/C,GAAIlX,MAAMC,QAAQ3C,KAAKgrB,qBAAsB,CACzCrkB,EAAK,uBAAyB,GAC9B,IAAK,IAAI/F,KAAQZ,KAAKgrB,oBAClBrkB,EAAK,uBAAuB/D,KAAKhC,EAAKgZ,S,CAE9C,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInF,GACjBmF,EAAON,KAAKS,GACZ,OAAOH,C,QAUFuR,GAITrrB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyZ,KAAOH,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIuR,GACjBvR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,QAAU3G,KAAKyZ,KACpB,OAAO9S,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIuR,GACjBvR,EAAON,KAAKS,GACZ,OAAOH,C,QASFsR,WAA6BC,GAItCrrB,YAAY8G,GACR5G,MAAM4G,E,CAGD0S,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK2O,SAAW2K,EAAM,YACtBtZ,KAAKwf,WAAalG,EAAM,a,EAIhCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIsR,GACjBtR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAK2O,SACxBhI,EAAK,cAAgB3G,KAAKwf,WAC1Bzf,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIsR,GACjBtR,EAAON,KAAKS,GACZ,OAAOH,C,QASFhF,GAIT9U,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKmrB,WAAa,E,EAI1B9R,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClB,GAAI5W,MAAMC,QAAQ2W,EAAM,eAAgB,CACpCtZ,KAAKmrB,WAAa,GAClB,IAAK,IAAIvqB,KAAQ0Y,EAAM,cACnBtZ,KAAKmrB,WAAYvoB,KAAK4Z,EAAkBta,OAAOtB,G,GAK/D8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIhF,GACjBgF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpB,GAAIvX,MAAMC,QAAQ3C,KAAKmrB,YAAa,CAChCxkB,EAAK,cAAgB,GACrB,IAAK,IAAI/F,KAAQZ,KAAKmrB,WAClBxkB,EAAK,cAAc/D,KAAKhC,EAAKgZ,S,CAErC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIhF,GACjBgF,EAAON,KAAKS,GACZ,OAAOH,C,QA4DFyR,GAKTvrB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKqrB,KAAO,E,EAIpBhS,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKsrB,SAAWhS,EAAM,YACtB,GAAIA,EAAM,QAAS,CACftZ,KAAKqrB,KAAO,GACZ,IAAK,IAAI/O,KAAOhD,EAAM,QAAS,CAC3B,GAAIA,EAAM,QAAQjV,eAAeiY,GACvBtc,KAAKqrB,KAAO/O,GAAOhD,EAAM,QAAQgD,E,IAM3D5C,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyR,GACjBzR,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,YAAc3G,KAAKsrB,SACxB,GAAItrB,KAAKqrB,KAAM,CACX1kB,EAAK,QAAU,GACf,IAAK,IAAI2V,KAAOtc,KAAKqrB,KAAM,CACvB,GAAIrrB,KAAKqrB,KAAKhnB,eAAeiY,GACnB3V,EAAK,QAAS2V,GAAatc,KAAKqrB,KAAM/O,E,EAGxD,OAAO3V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyR,GACjBzR,EAAON,KAAKS,GACZ,OAAOH,C,QAUF4R,GAIT1rB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI4R,GACjB5R,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI4R,GACjB5R,EAAON,KAAKS,GACZ,OAAOH,C,QASFxD,GAQTtW,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKuc,GAAgBjd,OAAOtB,G,CAEhDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIxD,GACjBwD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIxD,GACjBwD,EAAON,KAAKS,GACZ,OAAOH,C,MAaH6R,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,sBACAA,IAAA,8BACAA,IAAA,kBACAA,IAAA,oBACAA,IAAA,kCACAA,IAAA,gBACAA,IAAA,0BACAA,IAAA,4BACAA,IAAA,0BACAA,IAAA,iBACAA,IAAA,2BACAA,IAAA,6BACAA,IAAA,iCACAA,IAAA,yBACAA,IAAA,mBACAA,IAAA,qCACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,2BACAA,IAAA,yBACAA,IAAA,oBACAA,IAAA,sBACAA,IAAA,mBACH,EAzBD,CAAYA,QAAU,K,MA2BThV,GAGT3W,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyrB,WAAanS,EAAM,a,EAIhCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAInD,GACjBmD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,cAAgB3G,KAAKyrB,WAC1B,OAAO9kB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAInD,GACjBmD,EAAON,KAAKS,GACZ,OAAOH,C,QAQFjD,GAMT7W,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK0rB,WAAapS,EAAM,cACxBtZ,KAAK2rB,aAAerS,EAAM,gBAC1BtZ,KAAK4rB,iBAAmBtS,EAAM,oBAC9BtZ,KAAKuc,qBAAuBjD,EAAM,uB,EAI1CI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIjD,GACjBiD,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,cAAgB3G,KAAK0rB,WAC1B/kB,EAAK,gBAAkB3G,KAAK2rB,aAC5BhlB,EAAK,oBAAsB3G,KAAK4rB,iBAChCjlB,EAAK,wBAA0B3G,KAAKuc,qBACpC,OAAO5V,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIjD,GACjBiD,EAAON,KAAKS,GACZ,OAAOH,C,MAWHkS,IAAZ,SAAYA,GACRA,IAAA,0BACAA,IAAA,qBACH,EAHD,CAAYA,QAAU,KAKtB,IAAYC,IAAZ,SAAYA,GACRA,IAAA,sBACAA,IAAA,kCACAA,IAAA,uBACH,EAJD,CAAYA,QAAY,K,MAMXhV,GAQTjX,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKid,MAAQ,E,EAIrB5D,KAAKC,GACD,GAAIA,EAAO,CACP,GAAI5W,MAAMC,QAAQ2W,EAAM,UAAW,CAC/BtZ,KAAKid,MAAQ,GACb,IAAK,IAAIrc,KAAQ0Y,EAAM,SACnBtZ,KAAKid,MAAOra,KAAKwc,GAAqBld,OAAOtB,G,CAErDZ,KAAKgD,WAAasW,EAAM,cACxBtZ,KAAKmd,WAAa7D,EAAM,cACxBtZ,KAAKod,WAAa9D,EAAM,cACxBtZ,KAAKqd,gBAAkB/D,EAAM,mBAC7BtZ,KAAKsd,YAAchE,EAAM,c,EAIjCI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI7C,GACjB6C,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIjE,MAAMC,QAAQ3C,KAAKid,OAAQ,CAC3BtW,EAAK,SAAW,GAChB,IAAK,IAAI/F,KAAQZ,KAAKid,MAClBtW,EAAK,SAAS/D,KAAKhC,EAAKgZ,S,CAEhCjT,EAAK,cAAgB3G,KAAKgD,WAC1B2D,EAAK,cAAgB3G,KAAKmd,WAC1BxW,EAAK,cAAgB3G,KAAKod,WAC1BzW,EAAK,mBAAqB3G,KAAKqd,gBAC/B1W,EAAK,eAAiB3G,KAAKsd,YAC3B,OAAO3W,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI7C,GACjB6C,EAAON,KAAKS,GACZ,OAAOH,C,QAaFyF,WAA6B7B,EAItC1d,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,sB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK+rB,OAASzS,EAAM,UACpBtZ,KAAKgsB,WAAa1S,EAAM,a,EAIhCI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIyF,GACjBzF,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAK+rB,OACtBplB,EAAK,cAAgB3G,KAAKgsB,WAC1BjsB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIyF,GACjBzF,EAAON,KAAKS,GACZ,OAAOH,C,QASFzC,GAMTrX,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKwZ,GAAKF,EAAM,MAChBtZ,KAAKyhB,MAAQnI,EAAM,SACnBtZ,KAAKisB,UAAY3S,EAAM,aACvBtZ,KAAKia,KAAOX,EAAM,O,EAI1BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIzC,GACjByC,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,MAAQ3G,KAAKwZ,GAClB7S,EAAK,SAAW3G,KAAKyhB,MACrB9a,EAAK,aAAe3G,KAAKisB,UACzBtlB,EAAK,QAAU3G,KAAKia,KACpB,OAAOtT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIzC,GACjByC,EAAON,KAAKS,GACZ,OAAOH,C,EAWf,IAAYuS,IAAZ,SAAYA,GACRA,IAAA,sBACAA,IAAA,wBACAA,IAAA,qBACH,EAJD,CAAYA,QAAkB,K,MAMjB5U,GAITzX,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAKmsB,uBAAyB7S,EAAM,yB,EAI5CI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIrC,GACjBqC,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,0BAA4B3G,KAAKmsB,uBACtC,OAAOxlB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIrC,GACjBqC,EAAON,KAAKS,GACZ,OAAOH,C,MASHyS,IAAZ,SAAYA,GACRA,IAAA,kBACAA,IAAA,sBACAA,IAAA,uBACH,EAJD,CAAYA,QAAW,K,MAMVzU,GAUT9X,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKwX,WAAa,E,EAI1B6B,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKqsB,kBAAoB/S,EAAM,qBAC/BtZ,KAAKssB,cAAgBhT,EAAM,iBAC3BtZ,KAAKusB,iBAAmBjT,EAAM,oBAC9BtZ,KAAKwsB,aAAelT,EAAM,gBAC1BtZ,KAAKysB,oBAAsBnT,EAAM,uBACjCtZ,KAAK0sB,WAAapT,EAAM,cACxBtZ,KAAK2sB,eAAiBrT,EAAM,kBAC5B,GAAI5W,MAAMC,QAAQ2W,EAAM,eAAgB,CACpCtZ,KAAKwX,WAAa,GAClB,IAAK,IAAI5W,KAAQ0Y,EAAM,cACnBtZ,KAAKwX,WAAY5U,KAAKgqB,GAAoB1qB,OAAOtB,G,GAKjE8Y,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIhC,GACjBgC,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,qBAAuB3G,KAAKqsB,kBACjC1lB,EAAK,iBAAmB3G,KAAKssB,cAC7B3lB,EAAK,oBAAsB3G,KAAKusB,iBAChC5lB,EAAK,gBAAkB3G,KAAKwsB,aAC5B7lB,EAAK,uBAAyB3G,KAAKysB,oBACnC9lB,EAAK,cAAgB3G,KAAK0sB,WAC1B/lB,EAAK,kBAAoB3G,KAAK2sB,eAC9B,GAAIjqB,MAAMC,QAAQ3C,KAAKwX,YAAa,CAChC7Q,EAAK,cAAgB,GACrB,IAAK,IAAI/F,KAAQZ,KAAKwX,WAClB7Q,EAAK,cAAc/D,KAAKhC,EAAKgZ,S,CAErC,OAAOjT,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIhC,GACjBgC,EAAON,KAAKS,GACZ,OAAOH,C,QAeFiT,GAQT/sB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKyZ,KAAOH,EAAM,QAClBtZ,KAAK0nB,OAASpO,EAAM,UACpBtZ,KAAK6sB,qBAAuBvT,EAAM,wBAClCtZ,KAAK8sB,gBAAkBxT,EAAM,mBAC7BtZ,KAAK+sB,cAAgBzT,EAAM,iBAC3BtZ,KAAKgtB,SAAW1T,EAAM,W,EAI9BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIiT,GACjBjT,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKyZ,KACpB9S,EAAK,UAAY3G,KAAK0nB,OACtB/gB,EAAK,wBAA0B3G,KAAK6sB,qBACpClmB,EAAK,mBAAqB3G,KAAK8sB,gBAC/BnmB,EAAK,iBAAmB3G,KAAK+sB,cAC7BpmB,EAAK,YAAc3G,KAAKgtB,SACxB,OAAOrmB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIiT,GACjBjT,EAAON,KAAKS,GACZ,OAAOH,C,QAaFsT,GAITptB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK6X,UAAYyB,EAAM,aACvBtZ,KAAK0nB,OAASpO,EAAM,S,EAI5BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIsT,GACjBtT,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,aAAe3G,KAAK6X,UACzBlR,EAAK,UAAY3G,KAAK0nB,OACtB,OAAO/gB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIsT,GACjBtT,EAAON,KAAKS,GACZ,OAAOH,C,QASF5B,WAAuB+L,GAOhCjkB,YAAY8G,GACR5G,MAAM4G,GACN,IAAKA,EAAM,CACP3G,KAAKktB,QAAU,GACfltB,KAAKykB,SAAW,E,CAEpBzkB,KAAKyc,eAAiB,gB,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAKmtB,gBAAkB7T,EAAM,mBAC7BtZ,KAAKgsB,WAAa1S,EAAM,cACxBtZ,KAAK+rB,OAASzS,EAAM,UACpB,GAAI5W,MAAMC,QAAQ2W,EAAM,YAAa,CACjCtZ,KAAKktB,QAAU,GACf,IAAK,IAAItsB,KAAQ0Y,EAAM,WACnBtZ,KAAKktB,QAAStqB,KAAK0hB,GAAcpiB,OAAOtB,G,CAEhD,GAAI8B,MAAMC,QAAQ2W,EAAM,aAAc,CAClCtZ,KAAKykB,SAAW,GAChB,IAAK,IAAI7jB,KAAQ0Y,EAAM,YACnBtZ,KAAKykB,SAAU7hB,KAAKsY,EAAahZ,OAAOtB,G,GAKxD8Y,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,GAAIA,EAAK,mBAAqB,8BAA+B,CACzD,IAAIgT,EAAS,IAAIf,GACjBe,EAAON,KAAK1S,GACZ,OAAOgT,C,CAEX,IAAIA,EAAS,IAAI5B,GACjB4B,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,mBAAqB3G,KAAKmtB,gBAC/BxmB,EAAK,cAAgB3G,KAAKgsB,WAC1BrlB,EAAK,UAAY3G,KAAK+rB,OACtB,GAAIrpB,MAAMC,QAAQ3C,KAAKktB,SAAU,CAC7BvmB,EAAK,WAAa,GAClB,IAAK,IAAI/F,KAAQZ,KAAKktB,QAClBvmB,EAAK,WAAW/D,KAAKhC,EAAKgZ,S,CAElC,GAAIlX,MAAMC,QAAQ3C,KAAKykB,UAAW,CAC9B9d,EAAK,YAAc,GACnB,IAAK,IAAI/F,KAAQZ,KAAKykB,SAClB9d,EAAK,YAAY/D,KAAKhC,EAAKgZ,S,CAEnC7Z,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI5B,GACjB4B,EAAON,KAAKS,GACZ,OAAOH,C,QAYF2K,WAAsBR,GAM/BjkB,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,e,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,GACX,GAAIA,EAAO,CACPtZ,KAAK2kB,QAAUrL,EAAM,WACrBtZ,KAAK4kB,qBAAuBtL,EAAM,wBAClCtZ,KAAK6kB,iBAAmBvL,EAAM,oBAC9BtZ,KAAK+rB,OAASzS,EAAM,S,EAI5BI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI2K,GACjB3K,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAK2kB,QACvBhe,EAAK,wBAA0B3G,KAAK4kB,qBACpCje,EAAK,oBAAsB3G,KAAK6kB,iBAChCle,EAAK,UAAY3G,KAAK+rB,OACtBhsB,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI2K,GACjB3K,EAAON,KAAKS,GACZ,OAAOH,C,QAWFzB,GAITrY,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKia,KAAOX,EAAM,QAClBtZ,KAAK2nB,QAAUrO,EAAM,U,EAI7BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIzB,GACjByB,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,QAAU3G,KAAKia,KACpBtT,EAAK,WAAa3G,KAAK2nB,QACvB,OAAOhhB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIzB,GACjByB,EAAON,KAAKS,GACZ,OAAOH,C,MASHyT,IAAZ,SAAYA,GACRA,IAAA,wDACAA,IAAA,wDACAA,IAAA,qCACH,EAJD,CAAYA,QAA8B,K,MAM7BC,GAQTxtB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAKwX,WAAa,GAClBxX,KAAKstB,eAAiB,IAAIxe,E,EAIlCuK,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpB,GAAI5W,MAAMC,QAAQ2W,EAAM,eAAgB,CACpCtZ,KAAKwX,WAAa,GAClB,IAAK,IAAI5W,KAAQ0Y,EAAM,cACnBtZ,KAAKwX,WAAY5U,KAAKqqB,GAAiB/qB,OAAOtB,G,CAEtDZ,KAAKyX,YAAc6B,EAAM,eACzBtZ,KAAKoX,iBAAmBkC,EAAM,oBAC9BtZ,KAAKstB,eAAiBhU,EAAM,kBAAoBxK,GAAQ5M,OAAOoX,EAAM,mBAAqB,IAAIxK,GAC9F9O,KAAKutB,gBAAkBjU,EAAM,mBAAqBxK,GAAQ5M,OAAOoX,EAAM,oBAA2BpZ,S,EAI1GwZ,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI0T,GACjB1T,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtB,GAAIsC,MAAMC,QAAQ3C,KAAKwX,YAAa,CAChC7Q,EAAK,cAAgB,GACrB,IAAK,IAAI/F,KAAQZ,KAAKwX,WAClB7Q,EAAK,cAAc/D,KAAKhC,EAAKgZ,S,CAErCjT,EAAK,eAAiB3G,KAAKyX,YAC3B9Q,EAAK,oBAAsB3G,KAAKoX,iBAChCzQ,EAAK,kBAAoB3G,KAAKstB,eAAiBttB,KAAKstB,eAAe1T,SAAgB1Z,UACnFyG,EAAK,mBAAqB3G,KAAKutB,gBAAkBvtB,KAAKutB,gBAAgB3T,SAAgB1Z,UACtF,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI0T,GACjB1T,EAAON,KAAKS,GACZ,OAAOH,C,QAaF6T,GAKT3tB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAKytB,QAAUnU,EAAM,WACrBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI6T,GACjB7T,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,WAAa3G,KAAKytB,QACvB9mB,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI6T,GACjB7T,EAAON,KAAKS,GACZ,OAAOH,C,QAUF+T,GAOT7tB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK2kB,QAAU,IAAI7V,GACnB9O,KAAK+jB,SAAW,IAAIvT,C,EAI5B6I,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK6X,UAAYyB,EAAM,aACvBtZ,KAAK2kB,QAAUrL,EAAM,WAAaxK,GAAQ5M,OAAOoX,EAAM,YAAc,IAAIxK,GACzE9O,KAAK+jB,SAAWzK,EAAM,YAAc9I,EAAKtO,OAAOoX,EAAM,aAAe,IAAI9I,EACzExQ,KAAK+rB,OAASzS,EAAM,S,EAI5BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAI+T,GACjB/T,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,aAAe3G,KAAK6X,UACzBlR,EAAK,WAAa3G,KAAK2kB,QAAU3kB,KAAK2kB,QAAQ/K,SAAgB1Z,UAC9DyG,EAAK,YAAc3G,KAAK+jB,SAAW/jB,KAAK+jB,SAASnK,SAAgB1Z,UACjEyG,EAAK,UAAY3G,KAAK+rB,OACtB,OAAOplB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAI+T,GACjB/T,EAAON,KAAKS,GACZ,OAAOH,C,QAYFgU,GAMT9tB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAKI,OAASkZ,EAAM,UACpBtZ,KAAK6X,UAAYyB,EAAM,aACvBtZ,KAAK0Y,SAAWY,EAAM,YACtBtZ,KAAKoT,MAAQkG,EAAM,Q,EAI3BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIgU,GACjBhU,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,UAAY3G,KAAKI,OACtBuG,EAAK,aAAe3G,KAAK6X,UACzBlR,EAAK,YAAc3G,KAAK0Y,SACxB/R,EAAK,SAAW3G,KAAKoT,MACrB,OAAOzM,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIgU,GACjBhU,EAAON,KAAKS,GACZ,OAAOH,C,QAWFf,WAAoCb,GAE7ClY,YAAY8G,GACR5G,MAAM4G,GACN3G,KAAKyc,eAAiB,6B,CAGjBpD,KAAKC,GACVvZ,MAAMsZ,KAAKC,E,CAGfI,cAAuB/S,GACnBA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIf,GACjBe,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGFC,OAAOjT,GACZA,SAAcA,IAAS,SAAWA,EAAO,GACzC5G,MAAM6Z,OAAOjT,GACb,OAAOA,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIf,GACjBe,EAAON,KAAKS,GACZ,OAAOH,C,QAiEFT,GAITrZ,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,EAGhD,IAAKzS,EAAM,CACP3G,KAAK4tB,QAAU,IAAIC,GACnB7tB,KAAK8tB,KAAO,IAAID,E,EAIxBxU,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK4tB,QAAUtU,EAAM,WAAauU,GAAW3rB,OAAOoX,EAAM,YAAc,IAAIuU,GAC5E7tB,KAAK8tB,KAAOxU,EAAM,QAAUuU,GAAW3rB,OAAOoX,EAAM,SAAW,IAAIuU,E,EAI3EnU,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIT,GACjBS,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,WAAa3G,KAAK4tB,QAAU5tB,KAAK4tB,QAAQhU,SAAgB1Z,UAC9DyG,EAAK,QAAU3G,KAAK8tB,KAAO9tB,KAAK8tB,KAAKlU,SAAgB1Z,UACrD,OAAOyG,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIT,GACjBS,EAAON,KAAKS,GACZ,OAAOH,C,QASFkU,GAQThuB,YAAY8G,GACR,GAAIA,EAAM,CACN,IAAK,IAAIyS,KAAYzS,EAAM,CACvB,GAAIA,EAAKtC,eAAe+U,GACdpZ,KAAMoZ,GAAkBzS,EAAMyS,E,GAKpDC,KAAKC,GACD,GAAIA,EAAO,CACPtZ,KAAK+tB,SAAWzU,EAAM,YAAc,IAAIuE,KAAKvE,EAAM,YAAYwE,YAAmB5d,UAClFF,KAAKguB,YAAc1U,EAAM,eACzBtZ,KAAKiuB,SAAW3U,EAAM,YACtBtZ,KAAKwgB,YAAclH,EAAM,eACzBtZ,KAAK4c,QAAUtD,EAAM,WACrBtZ,KAAKkuB,SAAW5U,EAAM,W,EAI9BI,cAAc/S,GACVA,SAAcA,IAAS,SAAWA,EAAO,GACzC,IAAIgT,EAAS,IAAIkU,GACjBlU,EAAON,KAAK1S,GACZ,OAAOgT,C,CAGXC,OAAOjT,GACHA,SAAcA,IAAS,SAAWA,EAAO,GACzCA,EAAK,YAAc3G,KAAK+tB,SAAW/tB,KAAK+tB,SAASzpB,cAAqBpE,UACtEyG,EAAK,eAAiB3G,KAAKguB,YAC3BrnB,EAAK,YAAc3G,KAAKiuB,SACxBtnB,EAAK,eAAiB3G,KAAKwgB,YAC3B7Z,EAAK,WAAa3G,KAAK4c,QACvBjW,EAAK,YAAc3G,KAAKkuB,SACxB,OAAOvnB,C,CAGXkT,QACI,MAAMC,EAAO9Z,KAAK4Z,SAClB,IAAID,EAAS,IAAIkU,GACjBlU,EAAON,KAAKS,GACZ,OAAOH,C,EAaf,IAAYwU,IAAZ,SAAYA,GACRA,IAAA,iDACH,EAFD,CAAYA,QAAoB,KAIhC,IAAYC,IAAZ,SAAYA,GACRA,IAAA,4BACAA,IAAA,6BACH,EAHD,CAAYA,QAAoB,KAKhC,SAAS/K,GAAWgL,GAChB,OAAOA,EAAEC,cAAgB,KACpBD,EAAEE,WAAa,EAAK,KAAOF,EAAEE,WAAW,GAAOF,EAAEE,WAAW,GAAM,KAClEF,EAAEG,UAAY,GAAM,IAAMH,EAAEG,UAAaH,EAAEG,UACpD,C,MAcaC,WAAqBjuB,MAO9BX,YAAY6uB,EAAiBntB,EAAgBD,EAAkBnC,EAAkCwa,GAC7F5Z,QASMC,KAAA2uB,eAAiB,KAPvB3uB,KAAK0uB,QAAUA,EACf1uB,KAAKuB,OAASA,EACdvB,KAAKsB,SAAWA,EAChBtB,KAAKb,QAAUA,EACfa,KAAK2Z,OAASA,C,CAKlBD,sBAAsBkV,GAClB,OAAOA,EAAID,iBAAmB,I,EAItC,SAASxsB,GAAeusB,EAAiBntB,EAAgBD,EAAkBnC,EAAkCwa,GACzG,GAAIA,IAAW,MAAQA,IAAWzZ,UAC9B,MAAMyZ,OAEN,MAAM,IAAI8U,GAAaC,EAASntB,EAAQD,EAAUnC,EAAS,KACnE,Q"}