{"version":3,"sources":["webpack:///../../../src/utilities/utils.ts?fbc0","webpack:///../../src/get-selected-variant.ts?f0c0","webpack:///../../src/get-wishlist-by-customer-id.ts?e873","webpack:///../../src/get-attribute-definitions.ts?cc6b","webpack:///../../src/get-org-unit-configuration.ts?4793","webpack:///src/actions/getById-product-telemetry.action.ts?3e17","webpack:///./src/modules/family-and-friends/actions/get-friends-and-family-list.action.ts?fa0a","webpack:///src/actions/inputs/get-product-reviews-input.ts?bfba","webpack:///../../src/get-delivery-options-for-selected-variant.ts?3f6c","webpack:///../../src/get-customer.ts?8319","webpack:///./src/modules/wine-club-management/actions/get-membership.action.ts?373b","webpack:///./src/dataActions/get-attributes-for-selected-variant.ts?c216","webpack:///src/actions/purchase-telemetry.action.ts?c1a6","webpack:///../../src/get-feature-state.ts?1a1d","webpack:///src/modules/search-result-container/actions/get-mapped-search-configuration.ts?978c","webpack:///../../../src/invoices/get-invoices.ts?22cb","webpack:///./src/dataActions/get-country-state.ts?1d9c","webpack:///../../src/search-org-unit-locations.ts?d18d","webpack:///src/modules/wishlist-items/actions/get-items-in-wishlists.ts?d05a","webpack:///src/modules/list-page-summary/list-page-summary.action.ts?9732","webpack:///src/actions/getVariantsByDimensionValues-telemetry.action.ts?acda","webpack:///../../../src/utilities/input-data-parser.ts?027a","webpack:///src/dataActions/get-attributes-for-selected-variant.ts?5b72","webpack:///src/actions/get-sales-order-with-hydrations.ts?9c2c","webpack:///src/data-actions/tab-state-data-action.ts?8dcc","webpack:///../../../src/utilities/QueryResultSettingsProxy.ts?5e44","webpack:///../../src/get-categories-hierarchy.ts?acde","webpack:///src/modules/order-template/actions/get-order-template.ts?4d59","webpack:///src/actions/addToCart-telemetry.action.ts?ceef","webpack:///src/store-selector-state-manager/base-store-selector-state-manager.ts?edbe","webpack:///src/store-selector-state-manager/map-store-selector-state-manager.ts?d1f8","webpack:///src/store-selector-state-manager/store-selector-state-manager-data-action.ts?22fb","webpack:///../../src/get-simple-products.ts?fed7","webpack:///src/actions/get-org-unit-locations.ts?3eeb","webpack:///../../../src/order-templates/get-order-templates-preview.ts?b8c3","webpack:///../../src/get-channel-delivery-option-configuration.ts?a716","webpack:///src/actions/get-channels.ts?9c62","webpack:///src/actions/get-tender-types.ts?c899","webpack:///./src/actions/products-by-category.action.ts?197d","webpack:///./src/modules/wine-club-management/actions/membership-edit.action.ts?239b","webpack:///../../src/get-dimensions-for-selected-variant.ts?6bf4","webpack:///./src/actions/products-by-recommendation.action.ts?8dd0","webpack:///src/actions/ratings-reviews-state-data-action.ts?6daf","webpack:///./lib/component-registration.js?266e","webpack:///src/actions/removeFromCart-telemetry.action.ts?f9cf","webpack:///./src/dataActions/sku-selector-container-classes.ts?3050","webpack:///./src/dataActions/hide-club-price.ts?6f90","webpack:///./src/dataActions/search-result-container/list-page-state.ts?e654","webpack:///./src/dataActions/DataServiceEntities.g.ts?8792","webpack:///./src/dataActions/DataActionExtension.g.ts?8b01","webpack:///../../src/get-checkout-cart.ts?79bc","webpack:///src/modules/search-result-container/actions/url-utils.ts?6091","webpack:///src/modules/search-result-container/actions/base-collection-action.ts?32fc","webpack:///src/modules/product-page-summary/product-page-summary.action.ts?836c","webpack:///./lib/module-registration.js?44dd","webpack:///./src/dataActions/get-products-with-attributes-by-category.ts?2c36","webpack:///src/actions/copyCart-checkOut-telemetry.action.ts?b241","webpack:///../../src/get-full-available-inventory-nearby.ts?20be","webpack:///../../src/get-items-in-wishlist.ts?0d27","webpack:///src/modules/checkout-payment-instrument/actions/get-card-payment-accept-point.ts?e5ef","webpack:///../../src/get-price-for-selected-variant.ts?9e79","webpack:///src/actions/telemetry.action.helper.ts?4cd3","webpack:///./src/dataActions/search-result-container/smwe-get-full-products-by-collection.ts?248d","webpack:///../../src/checkout-state.ts?acd8","webpack:///../../../../src/utilities/Url-builder/parameterize.ts?f5a5","webpack:///../../../../src/utilities/Url-builder/category-url-builder.ts?e564","webpack:///../../../../src/utilities/Url-builder/product-url-builder.ts?baf1","webpack:///../../src/get-loyalty-transaction-estimation.ts?e254","webpack:///../../src/add-address.ts?fb17","webpack:///../../src/add-organization-user.ts?ed86","webpack:///../../src/checkout.ts?57e0","webpack:///../../src/delete-address.ts?f9a3","webpack:///../../src/delete-organization-user.ts?7f5d","webpack:///../../src/edit-organization-user.ts?d2ac","webpack:///../../src/generic-data-action.ts?f887","webpack:///../../src/get-customer-loyalty-cards.ts?2466","webpack:///../../src/get-full-products-by-refine-search-text.ts?2ad7","webpack:///../../../src/utilities/refiner-utils.ts?1e61","webpack:///../../src/get-list.ts?4fd5","webpack:///../../src/get-media-locations-for-selected-variant.ts?fd54","webpack:///../../src/get-order-history.ts?76fd","webpack:///../../src/get-organization-wide-order-history.ts?92b8","webpack:///../../src/get-products-by-category.ts?accf","webpack:///../../src/get-promotion-options-for-cartlines.ts?1a35","webpack:///../../src/get-ratings-summary-input.ts?3ccb","webpack:///../../src/get-refiners-by-category.ts?6d4e","webpack:///../../src/get-refiners-by-text.ts?c52a","webpack:///../../src/get-related-products.ts?6f93","webpack:///../../src/get-search-configuration.ts?acd1","webpack:///../../src/issue-loyalty.ts?f8fa","webpack:///../../../src/order-templates/add-item-to-order-template.ts?fff3","webpack:///../../../src/order-templates/get-paginated-order-template-lines.ts?9b12","webpack:///../../../src/order-templates/add-order-template-to-cart.ts?6ee4","webpack:///../../../src/order-templates/create-order-template.ts?03c1","webpack:///../../../src/order-templates/get-full-order-template.ts?72c6","webpack:///../../../src/order-templates/update-order-template-header.ts?1f77","webpack:///../../../src/order-templates/update-order-template-line.ts?527b","webpack:///../../src/refine-search-by-category.ts?3e65","webpack:///../../src/search-by-text.ts?ebe1","webpack:///../../src/update-address.ts?3e4d","webpack:///../../src/update-customer-attributes.ts?8d49","webpack:///../../src/update-customer-personalization.ts?4aa9","webpack:///../../src/update-primary-address.ts?83fa","webpack:///../../../../src/utilities/promise-queue/promise-queue.ts?e362","webpack:///../../../../src/utilities/promise-queue/finite-promise-queue.ts?77bf","webpack:///../../../../src/utilities/extensions/object-extensions.ts?6388","webpack:///../../../../src/utilities/extensions/array-extensions.ts?1a2a","webpack:///../../../../src/utilities/extensions/enum-extensions.ts?cf51","webpack:///../../../../src/utilities/extensions/string-extensions.ts?ab9f","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/rng.js?b47d","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/regex.js?08ba","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/stringify.js?6cb1","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/validate.js?acea","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/v4.js?0101","webpack:///../../../../src/utilities/random/guid.ts?1947","webpack:///../../../../src/utilities/random/index.ts?1f9d","webpack:///../../src/get-ratings-summary.ts?49bc","webpack:///./src/dataActions/wine-club-offers-bus.ts?fe0e","webpack:///./lib/module-registration.local.js?540f","webpack:///./src/modules/subscription-management/actions/subscription-update.action.ts?57e7","webpack:///../../src/get-full-products-by-refine-search-category.ts?30ab","webpack:///../../src/get-delivery-options-for-cartlines.ts?4dfe","webpack:///src/actions/inputs/get-user-review-input.ts?f98a","webpack:///./src/actions/get-product-availabilities-for-selected-variant.override.action.ts?428a","webpack:///../../src/get-address.ts?20a3","webpack:///../../../src/utilities/product-inventory-utils.ts?58b5","webpack:///../../src/get-store-location-information.ts?1df0","webpack:///../../src/get-full-products.ts?ba9a","webpack:///src/actions/getByIds-product-telemetry.action.ts?a77c","webpack:///./src/dataActions/search-result-container/base-collection-action.ts?a4d7","webpack:///external \"React\"?c481","webpack:///./src/modules/wine-club-management/actions/membership-state.action.ts?ba82","webpack:///src/modules/category-page-summary/category-page-summary.action.ts?be94","webpack:///src/actions/get-product-reviews.ts?ca83","webpack:///./src/dataActions/search-result-container/url-utils.ts?e0b5","webpack:///../../src/get-organization-users-count.ts?b5f7","webpack:///src/modules/search-result-container/actions/get-product-refiner-hierarchy.ts?bc3c","webpack:///src/modules/search-result-container/actions/get-refiners-for-collection.ts?3c89","webpack:///./src/modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart.ts?fdaa","webpack:///external \"ReactDOM\"?4b2d","webpack:///src/actions/readCart-telemetry.action.ts?562f","webpack:///../../../src/order-templates/get-order-templates.ts?a3b1","webpack:///./src/modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action.ts?2333","webpack:///../../src/get-loyalty-card.ts?7213","webpack:///src/modules/search-result-container/actions/get-full-products-by-collection.ts?5cc2","webpack:///../../src/get-products-in-active-cart.ts?3376","webpack:///./lib/connector-registration.js?87e5","webpack:///../../src/get-current-category-hierarchy.ts?d48e","webpack:///src/actions/get-user-review.ts?1a29","webpack:///../../src/get-current-category.ts?354d","webpack:///../../src/get-media-locations-by-id.ts?8462","webpack:///./src/dataActions/search-result-container/get-mapped-search-configuration.ts?e115","webpack:///../../src/get-category-paths.ts?b007","webpack:///./src/actions/get-availabilities-cartlines.overide.action.ts?4e65","webpack:///../../../src/utilities/order-templates.ts?d593","webpack:///../../src/get-organization-users.ts?b72e","webpack:///./src/dataActions/get-keyed-in-price.ts?f634","webpack:///./src/dataActions/get-keyed-in-price-error.ts?f78a","webpack:///./lib/view-registration.js?92f2","webpack:///src/actions/updateCart-telemetry.action.ts?2995","webpack:///./src/modules/subscription-management/actions/get-subscriptions.action.ts?88ca","webpack:///./src/modules/product-price/data-actions/get-price-for-selected-variant.ts?1651","webpack:///../../src/get-customer-balance.ts?d165","webpack:///./src/modules/subscription-management/actions/get-subscription-cards.action.ts?e034","webpack:///./src/dataActions/get-notification-message.ts?adb4","webpack:///../../src/get-availabilities-cartlines.ts?b8e8","webpack:///src/actions/get-state-provinces.ts?d329","webpack:///src/actions/get-address-purposes.ts?30ca","webpack:///src/actions/get-country-state.ts?3926","webpack:///../../src/get-product-availabilities-for-selected-variant.ts?0abd","webpack:///./src/modules/family-and-friends/actions/validate-friends-and-family.action.ts?5b36","webpack:///./src/modules/wine-club-management/actions/wine-shipment-state.action.ts?3b3b","webpack:///../../src/get-categories.ts?8dc6","webpack:///./src/modules/subscription-management/actions/subscription-state.action.ts?23b4","webpack:///src/search-state-data-action.ts?8823","webpack:///src/actions/get-country-regions.ts?a1d1","webpack:///src/modules/default-page-summary/default-page-summary.action.ts?121d","webpack:///src/modules/wishlist-items/actions/get-product-availabilities-wishlist-items.ts?4a20","webpack:///./src/dataActions/get-country-regions.ts?0b98","webpack:///../../../src/utilities/getRnrKeys.ts?700f","webpack:///./src/modules/single-product-container/data-actions/get-single-product.ts?6b8d","webpack:///./src/dataActions/search-result-container/get-product-refiner-hierarchy.ts?2f02","webpack:///./src/dataActions/search-result-container/get-refiners-for-collection.ts?fc99","webpack:///./src/dataActions/get-state-provinces.ts?e970","webpack:///src/modules/search-result-container/list-page-state.ts?90c8","webpack:///src/data-actions/accordion-state-data-action.ts?0c51","webpack:///./src/dataActions/get-event-description.ts?cefb","webpack:///./src/actions/get-ratings-summary.override.action.ts?924f","webpack:///../../src/checkout-state-data-action.ts?8344","webpack:///../../../src/order-templates/get-full-order-templates.ts?b553","webpack:///src/modules/checkout/actions/get-products-in-active-checkout-cart.ts?e0ab"],"names":["wrapInResolvedAsyncResult","input","status","result","metadata","wrapInRejectedAsyncResult","buildQueryResultSettings","inputData","searchInputData","parseSearchData","q","Error","Paging","Top","maxItems","Number","top","Skip","skip","e","getSelectedProductIdFromActionInput","requestContext","query","productId","urlTokens","itemId","config","generateImageUrl","imageUrl","apiSettings","startsWith","baseImageUrl","encodeURIComponent","generateProductImageUrl","product","PrimaryImageUrl","buildCartLine","quantity","catalogId","CatalogId","Description","EntryMethodTypeValue","ItemId","ProductId","RecordId","Quantity","TrackingId","UnitOfMeasureSymbol","DefaultUnitOfMeasure","buildWishlistLine","customerId","wishlistId","CommerceListId","CustomerId","getProductDetailsCriteriaFromActionInput","getPrice","hidePrice","getRating","hideRating","buildCacheKey","base","locale","channelId","buildCacheKeyWithUrlTokens","defaultCacheKey","recordId","pageType","generateKey","args","options","handler","separator","undefined","map","arg","join","getFallbackImageUrl","productUrl","SelectedVariantInput","constructor","matchingDimensionValues","getCacheKey","getCacheObjectType","dataCacheType","this","createObservableDataAction","id","action","async","ctx","response","getByIdAsync","callerContext","baseProduct","Array","isArray","baseProductHadUnmatchedDimension","Dimensions","dimension","matchedTargetDimension","find","targetDimension","DimensionTypeValue","DimensionValue","length","variants","getVariantsByDimensionValuesAsync","queryResultSettings","newImageUrl","retailAction","user","isAuthenticated","createGetByCustomerInput","GetAttributeDefinitionsInput","attributeDefinitionCriteria","channel","CustomerAttributeGroupId","getAttributeDefinitionsAsync","then","trace","AttributeGroupIdentifier","createGetOrgUnitConfigurationInput","createDataActionHook","actionId","postReaderHook","_inputs","simpleProduct","actionContext","Promise","resolve","productInfo","getProductInfoFromSimpleProduct","telemetryData","productSku","TelemetryEvent","ProductPageView","preReaderHook","GetFriendsAndFamilyListInput","shouldCacheOutput","Msdyn365","execute","friendsAndFamilyListInput","GetProductReviewsInput","tenantId","localeListFilter","serviceEndpoint","orderBy","starFilters","skipItems","pageSize","pageToken","dataSources","GetDeliveryOptionsForSelectedVariantInput","selectedProduct","featureState","getFeatureState","context","getFeatureStateAction","FeatureStateInput","createDeliveryOptionsForSelectedVariantInput","getDeliveryOptionsForSelectedVariantAction","item","Name","IsEnabled","activeProduct","selectedVariantInput","getSelectedVariant","productResult","getDeliveryOptionsAsync","IsGiftCard","catch","error","message","telemetry","exception","debug","GetCustomerInput","accountNumber","customerAccountNumber","readAsync","token","GetMembershipInput","createGetMembershipInput","accNumber","clubMembershipGetDataInput","getMembershipAction","AttributesForSelectedVariantInput","createAttributesForSelectedVariantInput","getAttributesForSelectedVariantAction","getAttributeValuesAsync","attributeValues","console","log","salesOrder","window","_msdyn365","salesObject","saleLineProductUnits","SalesLines","getProductInfoFromCartLinesAsync","Purchase","Id","affiliation","ChannelId","toString","revenue","NetAmountWithoutTax","tax","TaxAmount","products","logEvent","featureNames","createGetFeatureStateInput","getFeatureStatesAsync","sortOptions","sortByOptionRelevanceDesc","sortByOptionRatingAsc","sortByOptionRatingDesc","sortByOptionNameAsc","sortByOptionNameDesc","sortByOptionPriceAsc","sortByOptionPriceDesc","MappedSearchInput","getMappedSearchConfiguration","getSearchConfigurationAsync","searchConfiguration","ProductSortColumns","sortColumn","key","ColumnName","toUpperCase","IsDescending","warning","filter","Boolean","createInput","GetInvoicesInput","searchCriteria","CreateGetInvoicesInput","getDefaultSearchCriteria","getInvoices","getInvoicesAsync","GetCountryStateInput","getCountryStateAction","countryInput","GetCountryRegionsInput","countryRegionsInfo","getCountryRegionsAction","channelConfiguration","marketISOCode","ChannelCountryRegionISOCode","currentCountryRegion","countryRegion","ISOCode","countryRegionId","CountryRegionId","stateInput","GetStateProvincesInput","getStateProvinceAction","createSearchOrgUnitLocationsInputFunc","createSearchOrgUnitLocationsInput","ActiveWishlistInput","getActiveWishlistItems","wishlists","getByCustomerAsync","productInputs","forEach","currWishlist","CommerceListLines","commerceListLine","push","FullProductInput","getFullProducts","ListPageSummaryInput","getSubListItem","sitePathOfRequest","imageList","getImages","fields","content","images","sublistHref","listName","_name","sitePath","Title","title","description","ShortDescription","shortDescription","BackgroundColor","backgroundColor","ForegroundColor","foregroundColor","Href","Images","getSitePath","resultImageList","image","href","imageItem","altText","width","height","createGetListInput","listData","pageData","list","items","_id","data","getInputListData","listItems","productList","parentImageList","itemsPerPage","isNaN","getItemsPerPage","skipCount","getSkipCount","productItems","sum","index","type","clonedList","productItem","ListInput","getList","simpleProducts","QueryResultSettingsProxy","fromInputData","QueryResultSettings","GetSalesOrderWithHydrationsInput","orderType","orderId","getSalesOrderWithHydrationsAction","getSalesOrderDetailsBySalesIdAsync","getSalesOrderDetailsByTransactionIdAsync","getSalesOrder","TransactionTypeValue","productIds","salesLine","ProductInput","getSimpleProducts","getProducts","deliveryOptions","x","salesId","transactionId","createTabStateInput","GenericInput","getGenericAction","topHint","skipHint","sortingHintData","Sorting","Columns","column","sortingHint","fromModuleData","sortingCriteria","CategoriesInput","mappedToHierarchy","_mappedToHierarchy","getLocale","mapCategoryToHierarchy","categoryList","categoryMap","reduce","memo","category","localName","nameTranslations","nameTranslation","Language","toLowerCase","Text","getFriendlyName","NameTranslations","categoryHierarchy","NeutralizedName","zeroCategory","Object","keys","element","parentId","ParentCategory","Url","getCategoryUrl","parent","Children","createCategoriesHierarchyInput","topItems","topCategories","parseInt","getCategoryHierarchyAction","categories","getCategoryAction","RawCategoriesInput","ActiveOrderTemplateLinesInput","orderTemplateId","count","getActiveOrderTemplateLines","getFullOrderTemplate","GetFullOrderTemplateInput","cart","cartObject","addedCartLines","addedProducts","AddToCart","cartId","cartVersion","Version","OrderNumber","inputs","actionInput","queryParams","addCartLinesParams","cartLines","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","value","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","BingMapsApiKey","BingMapsEnabled","jsonp","crypto","getRandomValues","Uint32Array","encodeURI","geolocationApiUrl","app","requestUrl","script","document","createElement","setAttribute","body","removeChild","resourceSets","resources","point","coordinates","appendChild","getElementById","url","lang","market","reject","defer","src","mapAPIReady","isMapApiLoaded","onerror","createStoreSelectorStateInput","productIdMapping","idx","getByIdsAsync","getDefault","mappedProducts","split","isBatched","searchArea","Radius","Math","max","DistanceUnitValue","GetOrgUnitLocationsInput","getOrgUnitLocationsAction","orgUnitLocations","getOrgUnitLocationsByAreaAsync","getOrgUnitLocations","GetOrderTemplatesPreviewInput","createGetOrderTemplatesPreviewInput","getOrderTemplatesPreview","getFullOrderTemplates","GetFullOrderTemplatesInput","GetChannelDeliveryConfigurationInput","getChannelDeliveryOptionConfigurationAsync","GetChannelIdentitiesInput","getChannelsAction","channels","getChannelsAsync","getChannels","channelIdentities","createGetTenderTypesInput","getProductsByCategoryList","categoryId","listMetadata","categoryIds","CATEGORY_PAGE_NAME","productSearchCriteria","Context","CategoryIds","IncludeAttributes","searchByCriteriaAsync","getProductImageUrls","getProductsByCategoryListAction","MembershipEditInput","createEditMembershipInput","WineClubId","CreditCard","DeliveryPreference","ShipToAddress","PickupLocationId","clubMembershipUpdateInput","getEditMembershipAction","GetDimensionsForSelectedVariantInput","results","dimensionValues","getDimensionValuesAsync","MasterProductId","fullDimension","DimensionValues","CartTokenPrefix","getProductIdForReco","recommendationCriteria","includeCart","cookies","cartCookieParts","getCartCookie","Auth","Anon","readCart","getCart","CartLines","cartProductIds","includePageContext","PDP_PAGE_NAME","ProductIds","getProductsByRecommendationList","recommendationListId","PICKS_FOR_YOU_LIST","proxyContext","reccomendationListId","missingType","actionInputError","getCategoryIdForReco","personalization","CustomerAccountNumber","bypassCache","getElementsAsync","recommendedElements","productTypeId","i","ElementId","ElementTypeValue","semver","retailServerProxyVersion","itemIds","Ids","productSearchResults","orderProductSearchResults","productRatingsPromise","getProductRatingsAsync","productInput","productRatings","productRating","unratedProduct","mappedProduct","TotalRatings","AverageRating","getProductsByRecommendationListAction","createRatingsReviewsStateInput","filterKey","componentDictionary","c","cn","removeCartLineIds","removedCartLineIds","activeCart","productTransaction","removedCartLines","removedProducts","cartLine","indexOf","LineId","some","RemoveFromCart","removeCartLinesParams","cartLineIds","createSkuSelectorContainerClasses","HideClubPriceInput","createHideClubPriceInput","hideClubPrice","getOrgUnitConfigurationAsync","GiftCardItemId","skuSelectorContainerClasses","ListPageState","activeFilters","activeProducts","sortingCritera","currentPageNumber","ListPageStateInput","listPageStateAction","createListPageInput","rsmWineClubSignUpEntityExtensionClass","odataObject","IsGifted","AddressFirstName","AddressLastName","AddressEmail","AddressPhone","AddressLine1","AddressLine2","City","State","Zipcode","Country","ExtensionProperties","className","substr","lastIndexOf","concat","EntityClasses","rsmClubMembershipPauseResumeResponseExtensionClass","Status","Result","rsmClubMembershipSkipShipmentResponseExtensionClass","rsmClubMembershipUpdateResponseExtensionClass","rsmClubMemberMgmtGetDataResponseExtensionClass","WineClubMemberDataExtensionClass","rsmVerifyEmployeeResponseExtensionClass","Message","rsmFriendsAndFamilyValidateProgramResponseExtensionClass","rsmFriendsAndFamilyValidateProgramDataExtensionClass","rsmFriendsAndFamilyListResponseExtensionClass","rsmFriendsAndFamilyListObjectExtensionClass","rsmInsertMailingListResponseExtensionClass","IsSaved","rsmOfferSelectionsResponseExtensionClass","rsmSubscriptionCancelResponseExtensionClass","rsmSubscriptionDataExtensionClass","rsmSubscriptionPauseResponseExtensionClass","rsmSubscriptionResumeResponseExtensionClass","rsmSubscriptionUpdateResponseExtensionClass","rsmSubscriptionCardsResponseExtensionClass","rsmSubscriptionCardExtensionClass","rsmSubscriptionListResponseExtensionClass","rsmWineClubSignUpResponseExtensionClass","Code","rsmFriendsAndFamilyCodeExtensionClass","RecipientEmailAddress","SentDate","ActivationDate","QuantityAvailable","Codes","SubscriptionID","SubStatus","SubscriptionName","Frequency","NextOrderDate","LockoutPeriod","DeliveryAddress","ActiveCreditCardID","Lines","rsmSubscriptionLineExtensionClass","SubLineID","Qty","CardID","CardNumber","WineClubMemberNum","WineClubName","WineClubDisplay","NextClubRunDate","CustomerName","MemberStatus","ShowStatus","DeactivationDate","GiftMembershipEndDate","ShowMemberSince","GiftCustName","CanSkip","IsBlackoutPeriod","PickUpLocationId","CreditCardExtensionClass","ShipToAddressExtensionClass","MembershipProducts","MembershipProductsExtensionClass","HasOfferSelections","OfferSelections","OfferSelectionsExtensionClass","RecId","CreditCardNum","IsPrimary","ShipToAddressRecId","StreetAddress","ZipCode","DateBirth","Company","ItemName","OfferId","OfferName","EndDate","Date","jsonLightReadStringPropertyValue","clubMembershipPauseResumeInput","wineClubId","pauseResume","DataServiceQuery","createDataServiceRequestForOperation","DataServiceEntities","returnEntity","PauseResume","clubMembershipSkipShipmentInput","skipShipment","SkipShipment","creditCard","shipToAddress","deliveryPreference","pickupLocationId","verifyEmployeeInput","customerAccount","employeeNumber","lastName","birthYear","CustomerAccount","EmployeeNumber","LastName","BirthYear","friendsAndFamilyValidateProgramInput","code","emailListID","sourceID","EmailListID","SourceID","insertMailingListInput","mailingListId","sourceId","email","name","zipCode","MailingListId","SourceId","Email","offerSelectionInput","offerId","subscriptionCancelInput","subscriptionId","SubscriptionId","subscriptionPauseInput","subscriptionResumeInput","subscriptionUpdateInput","subscriptionName","nextOrderDate","deliveryPostalAddress","frequency","cardId","DeliveryPostalAddress","CardId","subscriptionCardsInput","subscriptionListInput","createWineClubSignUpInput","entityData","rSMWineClubSignUpEntityControllerQuery","GetCheckoutCartInput","CartCookieName","msdyn365Commerce","CartCookie","getCheckoutCart","Cookie","get","getCartState","checkoutCart","copyAsync","compressedRefinerKeys","hydrateRefinersFromUrl","compressedRefinerArray","parseQueryParam","compressedRefiner","parsedRefiner","refinerKey","buildListPageUrl","fullUrl","refiners","sortingColumns","searchParams","set","compressedRefiners","refiner","compressRefiners","delete","decodeURIComponent","getCurrentUrl","URL","location","BaseCollectionInput","searchText","includeAttributes","toJS","RefinerRecordId","LeftValueBoundString","RightValueBoundString","convertToString","createBaseCollectionInput","inputClassConstuctor","queryRefiners","sorting","ProductPageSummaryInput","simpleProductData","createGetSelectedVariantInput","getProductUrlSync","canonicalDomain","sharingImageUrl","canonicalUrl","faviconUrl","sharingImage","registerAllModules","requiredModules","binding","modules","dataActions","handleError","modPath","errObject","errorObject","process","exit","module","isNotRegistered","moduleName","findIndex","registerActionId","actionPath","default","prototype","registerSanitizedActionPath","sanitizedActionPath","dataAction","RegistrationId","$type","da","iNM","ns","n","p","pdp","md","path","runOn","definitionExtensions","themeSettings","require","ProductsByCategoryInput","queryResultSettingsProxy","categorySlug","cacheKeyHint","currentCategory","ProductsWithAttributesByCategoryInput","categoryInput","productsInput","criteria","CurrentCategoryInput","eventCategoryId","productSearchResult","getProductsByCategory","fullProductInputs","searchResult","isMaxDepthExceeded","all","attribute","ProductDetails","ProductAttributes","cartLineProductUnits","CheckOut","GetFullAvailableInventoryNearbyInput","_productId","_latitude","_longitude","_radius","_DistanceUnitValue","_IgnoreLocation","radius","IgnoreLocation","createGetFullAvailableInventoryNearbyInput","getFullAvailableInventoryNearbyAction","retailMulitplePickupMFeatureState","getEstimatedAvailabilityAsync","SearchArea","DefaultWarehouseOnly","FilterByChannelFulfillmentGroup","productInventoryInformation","mapProductInventoryInformation","productWarehouseInformation","ProductWarehouseInventoryAvailabilities","storeMap","Map","stores","store","InventoryLocationId","locationDeliveryOptions","orgUnitChannel","channelCollection","channelIdList","getChannelDeliveryOptionsAsync","channelDeliveryOptions","_getLocationPickUpDeliveryModes","availabilityPromiseList","locationDeliveryOption","_channeldeliveryoption","orgUnitLocation","channelDeleiveryOptions","OrgUnitNumber","OrgUnitAvailability","getStoreHoursAsync","hours","itemAvailabilities","InventLocationId","has","AvailableQuantity","ProductAvailableQuantity","availability","OrgUnitLocation","ItemAvailabilities","ProductInventoryInformation","OrgUnitPickUpDeliveryModes","StoreHours","_getAvailabilityWithHours","GetCardPaymentAcceptPointInput","paymenTenderType","showBillingAddress","createCheckoutPaymentInstrumentInput","getCardPaymentAcceptPointInput","showBillingAddres","getCardPaymentAcceptPointAction","checkoutState","getCheckoutState","isEmptyOrNullObject","origin","cardPaymentAcceptSettings","HostPageOrigin","AdaptorPath","CardPaymentEnabled","CardTokenizationEnabled","HideBillingAddress","TenderTypeId","PaymentAmount","getCardPaymentAcceptPointAsync","cardPaymentAcceptPoint","AcceptPageUrl","AcceptPageContent","PriceForSelectedVariantInput","createActivePriceForSelectedVariantInput","getPriceForSelectedVariantAction","affliations","customerInput","customer","getCustomer","CustomerAffiliations","affliation","aff","AffiliationId","RetailAffiliationId","AccountNumber","projectDomain","getActivePricesAsync","productPrice","CustomerContextualPrice","AdjustedPrice","productPromises","Price","productQuantity","reason","productName","productChannelId","productChannelName","productCategoryId","productCategoryName","productCurrency","GetFullProductsByCollectionInput","promise","searchCriteriaInput","Refinement","SearchCondition","update","totalProductCount","showSortBy","sortName","showSortingByRelevance","sortColumName","ranking","showSortingByName","showSortingByPrice","price","showSortingByRating","averageRating","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","CheckoutState","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","newTokenizedPaymentCard","newTenderLine","newShippingAddress","newBillingAddress","newCardPrefix","giftCardNumber","giftCard","__spreadArrays","newLoyaltyCardNumber","newAmount","newGuestCheckoutEmail","newIsTermsAndConditionAccepted","parameterize","sep","parameterizeFeatureFlags","neutralizedName","candidateName","platformSettings","enableUrlLocalization","enableUrlEncoding","replace","trim","getCategorySlug","categoryName","Slug","getParameterizeFeatureFlags","getUrlSync","getProductPageUrlSync","GetLoyaltyTransactionEstimationInput","userAccountNumber","createGetLoyaltyTransactionEstimationInput","getLoyaltyTransactionEstimationAction","promises","_getCart","_getLoyalty","_getOrgUnits","getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync","Currency","points","loyaltyCardInput","GetLoyaltyCardInput","getLoyalty","AddressManagementInput","address","createAddressManagementInput","doAddressManagementOperation","operationHandler","newCustomer","updatedCustomer","updateAsync","createReadAsync","Addresses","addAddressHandler","AddOrganizationUserInput","newUser","getCurrentAsync","businessPartner","BusinessPartnerId","createBusinessPartnerUserAsync","CheckOutInput","receiptEmail","cartTenderLines","billingAddress","baseUrl","requestOptions","headers","oun","Authorization","cartTenderLineItem","TokenizedPaymentCard","House","CardTokenInfo","Phone","ThreeLetterISORegionName","Street","Address1","Zip","requestBody","sendCommerceRequest","deleteAddressHandler","cur","DeleteOrganizationUserInput","deleteAsync","EditOrganizationUserInput","updatedUser","cacheKey","cacheObjectType","createGetCustomerLoyaltyCardsInput","FullProductsRefineSearchByTextInput","refinementCriteria","productDetailsCriteria","getRefinedProducts","searchResults","ProductDetailsCriteria","getRefinedFullProducts","refineSearchByTextAsync","documentId","itemsCount","DocumentId","ItemsCount","ItemsPerPage","SkipCount","Items","ProductItems","inputArray","GetProducts","productMap","listitem","getInutListData","MediaLocationsForSelectedVariantInput","AsyncResult","getMediaLocationsAsync","mediaLocation","Uri","AltText","createGetOrderShipmentsHistoryInput","GetOrganizationWideOrderHistoryInput","getOrderHistoryAsync","getCurrentCategory","searchByCategoryAsync","PromotionOptionsForCartLineItems","cartState","hasInvoiceLine","getActiveCartProductsAction","ActiveCartProductsInput","getAvailablePromotionsAsync","GetRatingsSummaryInput","RefinersByCategoryInput","createRefinersByCategoryInput","getRefinersByCategoryAsync","RefinersByTextInput","createRefinersByTextInput","getRefinersByTextAsync","GetRelatedProductsInput","relationType","querySettings","productRelationTypes","getRelationTypesAsync","productRelationTypeId","_productRelationType","foundProductRelationTypeId","productRelationType","searchProductRelationType","getRelatedProductsAsync","stack","SearchConfigurationInput","IssueLoyaltyInput","getLoyaltyAction","updateCart","card","updateLoyaltyCardId","loyaltyCardNumber","issueLoyaltyCardAsync","issuedCard","AddItemToOrderTemplateInput","unitOfMeasure","productListLineToAdd","ProductListId","UnitOfMeasure","productListLine","addProductListLinesAsync","GetPaginatedOrderTemplateLinesInput","getPaginatedOrderTemplateLinesAction","orderTemplateLinesState","lines","totalCount","getProductListLinesAsync","productListLines","listLine","OrderTemplateLine","fullProductsInfo","line","fullProduct","AddOrderTemplateToCartInput","getPaginatedOrderTemplateLinesInput","orderTemplateLines","productLine","addCartLinesAsync","refreshCart","CreateOrderTemplateInput","templateName","orderTemplate","ProductListTypeValue","createdProductList","createProductListAsync","inputParams","GetOrderTemplatesInput","productLists","getOrderTemplates","inputLines","linesState","OrderTemplate","UpdateOrderTemplateHeaderInput","updatedProductList","UpdateOrderTemplateInput","getLinesInput","getPaginatedOrderTemplateLines","linesToUpdate","lineToUpdate","updatedLines","updateProductListLinesAsync","updatedLine","RefineSearchByCriteriaInput","createRefineSearchByCategoryInput","refinementCriterion","search","querySettingsProxy","createSearchByTextInput","updateAddressHandler","updateCustomerAttributesInput","customerAttributes","phone","vatNumber","VatNumber","Attributes","updateCustomerPersonalizationInput","isOptOut","preferenceType","OptOutWebActivityTracking","OptOutPersonalization","updatePrimaryAddressHandler","setPrimaryAddress","primaryAddresses","addresses","addr","PromiseQueueElement","PromiseQueue","_queue","_isBusy","promiseBody","_dequeue","_canProcess","shift","_processElement","_processNext","FinitePromiseQueueError","ObjectExtensions","ArrayExtensions","EnumExtensions","StringExtensions","FinitePromiseQueue","maxQueueLength","InvalidMaxQueueLengthPassed","super","_maxQueueLength","totalElementsCount","ProcessWasDiscardedFromTheQueue","enqueue","hasElements","isNullOrUndefined","from","Set","predicate","getValues","enumClass","getNumericValues","isNumber","isString","isNullOrEmpty","rnds8","Uint8Array","rng","bind","msCrypto","validate","uuid","REGEX","test","byteToHex","arr","offset","arguments","TypeError","v4","Guid","Random","buf","rnds","random","uuidv4","_guid","getRnrPartnerId","getRnrEndpointId","inputIsValid","sendRequest","WineClubOffersBusInput","IWineClubOffersBusAction","offerTaken","offerAcceptedText","offerIdUsed","SubscriptionUpdateInput","createSubscriptionUpdateInput","addressId","subscriptionUpdateAction","FullProductsRefineSearchByCategoryInput","createFullProductsRefineSearchByCategoryInput","getFullProductsByRefineSearchCategoryAction","hasSortingColumn","refineSearchByCategoryAsync","ProductDeliveryOptionsForCartLineItems","getDeliveryOptionsForCartLineItems","GetUserReviewInput","authorization","ProductAvailabilitiesForSelectedVariantInput","createProductAvailabilitiesForSelectedVariantInput","getProductAvailabilitiesForSelectedVariantAction","PhysicalAvailable","AddressInput","createGetAddressInput","getAddressAction","productsWarehouseInventory","enableStockCheck","inventoryLevel","physicalProductMap","mapInventoryWithPhysicalBufferEnabled","totalAvailableProductMap","mapInventoryWithTotalAvailableBufferEnabled","mapInventoryWithThresholdEnabled","productWarehouseInventoryAvailability","TotalAvailable","productQty","outOfStockThreshold","productAvailableQuantity","IsProductAvailable","shouldRenderLabel","displayLabelEnabled","PhysicalAvailableInventoryLevelCode","StockLevelCode","StockLevelLabel","PhysicalAvailableInventoryLevelLabel","TotalAvailableInventoryLevelCode","TotalAvailableInventoryLevelLabel","inventoryCode","inventoryRanges","GetOrgUnitLocationsByAreaInput","_Latitude","_Longitude","_Radius","createGetOrgUnitLocationsByAreaInput","getOrgUnitLocationsByArea","locationPromiseList","_getLocationWithHours","_getActivePrices","validProductIds","productCollection","validInputs","ProductPrice","_getProductRatings","ProductRating","err","ratingsAndPricePromises","exports","React","MembershipStateInput","createMembershipStateInput","getMembershipStateAction","CategoryPageSummaryInput","createGetCurrentCategoryInput","categoryUrl","OfflineImage","createInputForProductReviews","getReviewsForGivenProduct","isTakenDown","pagingInfo","OrganizationUsersCountInput","createGetOrganizationUsersCountInput","getOrganizationUsersCount","getUsersAsync","users","getProductRefinerHierarchy","getProductSearchRefinersAsync","productRefiners","productRefiner","RefinersByCollectionInput","searchProductId","RecommendationListId","ActiveCheckoutCartProductsInput","getActiveCheckoutCartProductsAction","ReactDOM","productListId","createGetOrderTemplatesInput","getOrderTemplatesAction","productListSearchCriteria","searchAsync","GetInput","CommerceEntityInput","dataSource","getbreadcrumbByProductIdAction","text","prodIds","getbreadcrumbByCategoryIdAction","getbreadcrumbDataAction","breadcrumbData","createGetLoyaltyCardInput","getCustomerLoyaltyCardsAsync","cards","firstCard","getLoyaltyCardAsync","LoyaltyEnrollmentDate","LoyaltyEnrollmentDateLocal","SkipVariantExpansion","connectorDictionary","validateConnectorRegistration","CurrentCategoryHierarchyInput","activeCategoryId","getCurrentCategoryHierarchyAction","fullCategoryHierarchy","getCategoriesHierarchy","categoryArray","findCategory","childCategory","reverse","errorMessage","userInfo","getRnrAuthEndpointId","tempActionContext","searchCategory","foundCategory","cat","matchingChild","getCurrentCategoryAction","getCategoryHierarchy","MediaLocationsByIdInput","createMediaLocationsByIdInput","getMediaLocationsByIdAction","GetCategoryPathsInput","categoryPathLooksups","constructedCacheKey","categoryPath","createGetCategoryPathsInput","getCategoryPathsAction","categoryPathResults","getCategoryPathsAsync","CategoryPath","getCategoriesUrlSync","ProductAvailabilitiesForCartLineItems","ProductAvailableQuantityMerge","getDeliveryMode","featureSate","channelDeliveryOptionConfig","pickupDeliveryMode","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","getAvailabilitiesForCartLineItems","shippingItems","bopisItems","productAvailabilities","featureStateInput","getFeature","retailMultiplePickUpOptionEnabled","PickupDeliveryModeCode","EmailDeliveryModeCode","unique","shippingProductAvailabilities","bopisItem","productWarehouse","WarehouseId","DataAreaId","InventLocationDataAreaId","getProductWarehouseAvail","getEstimatedProductWarehouseAvailabilityAsync","productWarehouseMapping","totalLines","OrganizationUsersInput","createGetOrganizationUsersInput","getOrganizationUsers","createKeyedInPrice","createKeyedInPriceError","viewDictionary","updatedCartLines","updatedProducts","UpdateInCart","updateCartLinesParams","GetSubscriptionsInput","createGetSubscriptionsInput","String","affiliationId","affiliations","customerAffiliations","GetCustomerBalanceInput","createGetCustomerBalanceInput","getCustomerBalanceAction","getCustomerBalanceAsync","InvoiceAccount","GetSubscriptionCardsInput","createNotificationMessage","getStateProvincesAsync","GetAddressPurposesInput","getAddressPurposesAction","getAddressPurposesAsync","ItemTypeValue","ProductTypeValue","mergeProductWarehouseToProductAvailabities","productAvailable","ValidateFriendsAndFamilyInput","createValidateFriendsAndFamilyInput","emailListId","validateFriendsAndFamilyAction","WineShipmentStateInput","createWineShipmentStateInput","getWineShipmentStateAction","getCategoriesAsync","SubscriptionState","createSubscriptionStateInput","newState","createSubscriptionStateAction","createSearchStateInput","getCountryRegionsByLanguageIdAsync","PageSummaryInput","keywords","ProductAvailabilitiesForWishlistItems","getAvailabilitiesForWishlistItems","validProducts","rnr","endpoint","proxyUrl","charAt","substring","SingleProductInput","singleProduct","createSingleProductInput","singleProductAction","getSimpleProductVariant","attributesForSelectedVariantInput","getAttributesFromSimpleProduct","configuration","remappers","refinerRemappers","entry","remap","remapRecord","originalName","KeyName","newName","featureProduct","productPrices","createAccordionStateInput","EventDescriptionInput","attrib","attributesInput","getEventDescription","attributes","getAttributesForSelectedVariant","eventDescription","intro","eventIntro","TextValue","eventBody","selectedVariant","_this","checkoutStateAction","CheckoutStateInput","orderTemplates"],"mappings":"irCAYO,MAAMA,EAA0CC,IAC5B,CACnBC,OAAQ,UACRC,OAAQF,EACRG,SAAU,KAILC,EAA0CJ,IAC5B,CACnBC,OAAQ,SACRC,OAAQF,EACRG,SAAU,KAILE,EAA4BC,IACrC,IACI,MAAMC,EAAkBC,YAAgBF,GAExC,IADeC,EAAgBE,EAE3B,MAAM,IAAIC,MAAM,8DAGpB,MAAO,CAAEC,OAAQ,CAAEC,IADNL,EAAgBM,UAAYC,OAAOP,EAAgBM,WAAcN,EAAgBQ,IACjEC,KAAMT,EAAgBU,OACrD,MAAOC,GACL,MAAO,KASFC,EAAuCb,GAC5CA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMC,UACnGhB,EAAUc,eAAeC,MAAMC,UAC/BhB,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeG,WAAajB,EAAUc,eAAeG,UAAUC,OAClHlB,EAAUc,eAAeG,UAAUC,OACnClB,GAAaA,EAAUmB,QAAUnB,EAAUmB,OAAOH,UAClDhB,EAAUmB,OAAOH,eADrB,EAWEI,EAAmB,CAACC,EAA8BC,IACvDD,EAEIA,EAASE,WAAW,QACbF,EAIJC,EAAYE,aAAeC,mBAAmBJ,QAGrD,EASKK,EAA0B,CACnCC,EACAL,IAEOF,EAAiBO,EAAQC,gBAAiBN,GASxCO,EAAgB,CAACF,EAAwBG,EAAmBC,KAC9D,CACHC,UAAWD,GAAa,EACxBE,YAAaN,EAAQM,YAErBC,qBAAsB,EACtBC,OAAQR,EAAQQ,OAChBC,UAAWT,EAAQU,SACnBC,SAAUR,GAAY,EACtBS,WAAY,GACZC,oBAAqBb,EAAQc,uBAUxBC,EAAoB,CAAC1B,EAAmB2B,EAAoBC,KAC9D,CACHC,eAAgBD,EAChBR,UAAWpB,EACX8B,WAAYH,IAQPI,EAA4C/C,GACjDA,GAAaA,EAAUmB,OAChB,CACH6B,UAAWhD,EAAUmB,OAAO8B,UAC5BC,WAAYlD,EAAUmB,OAAOgC,YAG9B,CACHH,UAAU,EACVE,WAAW,GAkBNE,EAAgB,CAACC,EAAc/B,EAAmCgC,IACrE,GAAN,OAAUD,EAAV,mBAAyB/B,EAAYiC,UAArC,kBAAwDjC,EAAYS,WAApE,OAAgFuB,EAAO,IAAD,OAAKA,GAAS,IAG3FE,EAA6B,CAACH,EAAcvC,KACrD,MAAMG,EAAYH,EAAeG,UAC3BwC,EAAkBL,EAAcC,EAAMvC,EAAeQ,YAAaR,EAAewC,QACvF,OAAOrC,EAAS,UACPwC,EADO,YACYxC,EAAUC,OADtB,YACgCD,EAAUyC,SAD1C,YACsDzC,EAAU0C,UAC1EF,GAeGG,EAAc,CAACC,EAAmBC,KAC3C,MAAM,QAAEC,EAAF,UAAWC,GAAX,OAAmD,CAAEA,UAAW,IAAKD,aAASE,IAAiBH,GAAW,IAChH,OAAOD,EACFK,IAAIC,GACGA,SACIJ,EACOA,EAAQI,GAGhBA,GAEVC,KAAKJ,IAQDK,EAAsB,CAACnD,EAA4BI,KAC5D,IAAKJ,EACD,MAAO,GAGX,MAAMoD,EAAU,mBAAepD,EAAf,gBAChB,OAAOE,EAAiBkD,EAAYhD,K,wYClMjC,MAAMiD,EAKTC,YAAYxD,EAAmBuC,EAAmBkB,GAM3C,KAAAC,YAAc,sBACd,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKJ,wBAA0BA,GAA2B,IAmFnDK,+CAA2B,CACtCC,GAAI,iEACJC,OA1DJC,eAAwCvF,EAA6BwF,GACjE,IAAIvD,EAAgC,KAEpC,MAAMwD,QAAiBC,YAAa,CAAEC,cAAeH,GAAOxF,EAAMsB,UAAWtB,EAAM6D,WAE7E+B,EAA6BC,MAAMC,QAAQL,GAAYA,EAAS,GAAKA,EAS3E,GAFAxD,E,yWAAO,IAAQ2D,GAEX3D,EAAS,CACT,IAAI8D,GAA4C,EAehD,GAdI9D,EAAQ+D,YACR/D,EAAQ+D,WAAWxB,IAAIyB,IACnB,MAAMC,EAAyBlG,EAAM+E,wBAAwBoB,KACzDC,GAAmBA,EAAgBC,qBAAuBJ,EAAUI,oBAGpEH,EACAD,EAAUK,eAAiBJ,EAAuBI,eAElDP,GAAmC,KAK1CA,GAAoC/F,EAAM+E,wBAAwBwB,OAAS,EAAG,CAC/E,MAAMC,QAAiBC,YACnB,CAAEd,cAAeH,EAAKkB,oBAAqB,IAC3Cd,EAAYjD,SACZ3C,EAAM6D,UACN7D,EAAM+E,yBAGNyB,GAAYA,EAASD,OAAS,IAC9BtE,EAAUuE,EAAS,IAI3B,MAAMG,EAAc3E,YAAwBC,EAASuD,EAAIpE,eAAeQ,aAEpE+E,IACA1E,EAAQC,gBAAkByE,GAIlC,OAAO1E,GASPjC,MA1EiBM,IACjB,MAAMgB,EAAYH,YAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIuD,GAAsBvD,GAAYhB,EAAUc,eAAeQ,YAAYiC,UAAW,IAE7F,MAAM,IAAInD,MAAM,2F,oCCnCxB,2DAqBe0E,+CAA2B,CACtCC,GAAI,wEACJC,OAAiCsB,eACjC5G,MAlByBM,IACzB,GACIA,EAAUc,gBACVd,EAAUc,eAAeyF,MACzBvG,EAAUc,eAAeyF,KAAKC,gBAE9B,OAAOC,YAAyB1G,YAAyBC,GAAY,MAGzE,MAAM,IAAII,MAAM,6E,0JCLb,MAAMsG,EAITlC,YAAYlD,EAAmCqF,GAKxC,KAAAjC,YAAc,IAAMtB,YAAc,uBAAwByB,KAAKvD,aAC/D,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK8B,4BAA8BA,EACnC9B,KAAKvD,YAAcA,GA+BZwD,+CAA2B,CACtCC,GAAI,kEACJC,OAbkCC,MAAOvF,EAAqCwF,IAC1ExF,GAASwF,EAAIpE,eAAe8F,SAAW1B,EAAIpE,eAAe8F,QAAQC,yBAC3DC,YAA6B,CAAEzB,cAAeH,GAAOxF,EAAMiH,6BAA+B,MAAMI,KAAK5B,GAChGA,IAIhBD,EAAI8B,MAAM,2DACH,IAMPtH,MAvBiBM,IACjB,MAAM,YAAEsB,EAAF,QAAesF,GAAY5G,EAAUc,eAC3C,IAAK8F,IAAYA,EAAQC,yBACrB,MAAM,IAAIzG,MAAM,qFAGpB,OAAO,IAAIsG,EAA6BpF,EAAa,CAAC2F,yBAA0BL,EAAQC,+B,qFCjC5F,+CAQe/B,+CAA2B,CACtCC,GAAI,uEACJC,OAAwCsB,eACxC5G,MAAO,IACIwH,iB,+GCgBfC,+BAAqB,CACjBC,SAAU,mDACVC,eAjBiBpC,MACjBqC,EACAC,EACAC,KAKA,GAHAD,QAAsBE,QAAQC,QAAQnC,MAAMC,QAAQ+B,GAAiBA,EAAc,GAAKA,GAGrE,CACf,MAAMI,EAAcC,YAAgCL,GACpDC,EAAc1G,eAAe+G,cAAcF,EAAYG,YAAcH,EACrEH,EAAc1G,eAAe+G,cAAcE,IAAeC,iBAAmBL,EAAc,CAACA,GAAe,KAO/GM,cAtBkBhD,e,qKCGhB,MAAOiD,EAET1D,YAAY9E,GAGL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,gCACpB,KAAAC,mBAAqB,IAAM,gCAC3B,KAAAC,cAAgB,IAA0B,cAN7CC,KAAKnF,MAAQA,GA+DN0I,uCAAoC,CAC/CpD,OAjDJC,eAAsBvF,EAAqCwF,GACvD,OAAOxF,EAAMA,MAAM2I,QAAQnD,IAiD3BxF,MAxDiBmE,GACV,IAAIqE,EACPI,kB,oCCPR,kCAAO,MAAMC,EAmDT/D,YACIxD,EACAwH,EACAC,EACAC,GAMiC,IALjCC,EAKiC,uDALf,cAClBC,EAIiC,uDAJX,GACtBC,EAGiC,uDAHb,EACpBC,EAEiC,uDAFd,GACnBC,EACiC,uDADN,KAC3BC,EAAiC,uDAAJ,KAgB1B,KAAAtE,YAAc,cAASG,KAAK7D,UAAd,YAA2B6D,KAAK2D,SAAhC,YAA4C3D,KAAK4D,iBAAjD,YAAqE5D,KAAKiE,SAA1E,YAAsFjE,KAAK8D,QAA3F,YAAsG9D,KAAK+D,YAA3G,YAA0H/D,KAAKgE,WAC7I,KAAAlE,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,UAhBpCC,KAAK7D,UAAYA,EACjB6D,KAAK2D,SAAWA,EAChB3D,KAAK4D,iBAAmBA,EAGxB5D,KAAKiE,SAAWA,EAAW,GAAK,GAAKA,EACrCjE,KAAK8D,QAAUA,EACf9D,KAAK+D,YAAcA,EACnB/D,KAAKgE,UAAYA,EACjBhE,KAAKkE,UAAYA,EACjBlE,KAAKmE,YAAcA,EACnBnE,KAAK6D,gBAAkBA,K,2XCnFxB,MAAMO,EAOTzE,YAAYxD,EAAmBuC,EAAmB2F,EAAiCvG,EAAqBwG,GAQjG,KAAAzE,YAAc,wCACd,KAAAC,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKqE,gBAAkBA,EACvBrE,KAAKlC,WAAaA,GAAc,GAChCkC,KAAKsE,aAAeA,GAWrBlE,eAAemE,EAAgBC,GAClC,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAOnD,MAAMG,EAAgDxJ,IACzD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIiI,GACNjI,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,OACAA,GAGJ,MAAM,IAAI7D,MAAM,gGASjB6E,eAAewE,EAClB/J,EACAwF,GAEA,QAA0BjB,IAAvBvE,EAAMyJ,aAA4B,CAAC,IAAD,EACjC,MAAMA,QAAqBC,EAAgBlE,GAC3CxF,EAAMyJ,aAAeA,SAArB,UAAqBA,EAActD,KAAK6D,GAAsB,oEAAdA,EAAKC,aAArD,aAAqB,EAA6GC,UAGtI,OAAOnC,QAAQC,UAEVX,KAAK,KACF,MAAM8C,EAA2CnK,EAAMwJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOwG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IAEV9C,KAAMiD,IACH,MAAMH,EAAsEG,EAE5E,GAAIH,EACA,OAAOI,YACH,CAAE5E,cAAeH,EAAKkB,oBAAqB,IAC3C,CAACyD,EAAcxH,UACf,IAEC3C,EAAMyJ,cAAiBa,WAAeE,WAAwE,KAA3D,GACtDnD,KAAK5B,IACH,GAAGA,GAAYA,EAASc,OAAS,EAC7B,OAAOd,EAAS,OAS/BgF,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,sEACM,IAAIpK,MAAM,wEAIb0E,+CAA2B,CACtCC,GAAI,sFACJC,OAAqDyE,EACrD/J,MAAO8J,K,8IC3GJ,MAAMiB,EAITjG,YAAYlD,EAAmCoJ,GAKxC,KAAAhG,YAAc,IAAMtB,YAAc,YAAD,OAAayB,KAAK8F,uBAAyB9F,KAAKvD,aACjF,KAAAqD,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK8F,sBAAwBD,EAC7B7F,KAAKvD,YAAcA,GAgCZwD,+CAA2B,CACtCC,GAAI,yDACJC,OAdsBC,MAAOvF,EAAyBwF,IAClDxF,GAASwF,EAAIpE,eAAeyF,KAAKC,gBAE1BoE,YAAU,CAAEvF,cAAeH,GAAOxF,EAAMiL,uBAAyB,IAAI5D,KAAK5B,GACtEI,MAAMC,QAAQL,GAAYA,EAAS,GAAKA,IAIvDD,EAAI8B,MAAM,+CACO,IAMjBtH,MAxBiBM,IACjB,MAAM,KAAEuG,EAAF,YAAQjF,GAAgBtB,EAAUc,eACxC,IAAKyF,EAAKsE,QAAUtE,EAAKC,gBACrB,MAAM,IAAIpG,MAAM,0DAGpB,OAAO,IAAIqK,EAAiBnJ,O,iPCnB1B,MAAOwJ,EAEXtG,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,sBACpB,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAA0B,cAP/CC,KAAKnF,MAAQA,GAgBV,MAAMqL,EACXlH,IAEA,MAAMmH,EAAYnH,EAAK/C,eAAeyF,KAAKoE,uBAAyB,GACpE,OAAO,IAAIG,EACTG,YACED,KAKC/F,eAAeiG,EACpBxL,EACAwF,GAEA,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAGdkD,uCAAoC,CACjDpD,OAA+CkG,EAC/CxL,MAAOqL,K,6SC3CH,MAAOI,EAKX3G,YACExD,EACAuC,EACA2F,EACAnH,GAOK,KAAA2C,YAAc,IAAM,GAAN,OAASG,KAAK7D,UAAd,YAA2B6D,KAAKtB,UAAhC,YAA6CsB,KAAK9C,UAAlD,iCACd,KAAA4C,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OAPtCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKqE,gBAAkBA,EACvBrE,KAAK9C,UAAYA,GAAa,GAO3B,MAAMqJ,EACXpL,IAEA,MAAMgB,EAAYH,8CAAoCb,GACtD,GAAIgB,EACF,OAAO,IAAImK,GACRnK,GAEAhB,EAAUc,eAAeQ,YAAYiC,WAGxC,MAAM,IAAInD,MACR,qGAQC6E,eAAeoG,EACpB3L,EACAwF,GAIA,OAAOuC,QAAQC,UAAUX,KAAK,KAC1B,MAAM8C,EAA2CnK,EAAMwJ,gBACvD,IAAKW,EAAe,CAClB,MAAMC,EAAuB,IAAIvF,uBAC/B7E,EAAMsB,UACNtB,EAAM6D,WAGR,OAAOwG,6BAAmBD,EAAsB5E,GAElD,OAAO2E,IAER9C,KAA+BiD,IAC9B,MAAMH,EAAsEG,EAE5E,OAAIH,EACKyB,YACL,CAAEjG,cAAeH,EAAKkB,oBAAqB,IAC3CyD,EAAcxH,SACd3C,EAAM6D,UACN7D,EAAMqC,WAGH,OAERgF,KAAMwE,GACiCA,GAI/B,IAERpB,MAAOC,IAKN,MAJAoB,QAAQC,IAAIrB,GACZoB,QAAQC,IAAIrB,EAAMC,SAClBnF,EAAI8B,MAAMoD,EAAMC,SAEV,IAAIjK,MACR,8DAKO0E,+CAA2B,CACxCE,OAAmCqG,EACnC3L,MAAO0L,K,uGCvCTjE,+BAAqB,CACjBC,SAAU,iDACVC,eAtCkBpC,MAClBqC,EACAoE,EACAlE,KAEA,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMuB,EAActG,MAAMC,QAAQkG,GAAcA,EAAW,GAAKA,EAChE,IAAII,EAAuC,GAG3C,GAAID,GAAeA,EAAYE,YAAcxG,MAAMC,QAAQqG,EAAYE,aAAeF,EAAYE,WAAW9F,OAAS,EAClH,IACI6F,QAA6BE,YAAiCH,EAAYE,WAAYvE,GACxF,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,+DAAgEA,GAKtG5C,EAAc1G,eAAe+G,cAAcE,IAAekE,UAAY,CAClElH,GAAI8G,EAAYK,GAChBC,YAAaN,EAAYO,UAAYP,EAAYO,UAAUC,WAAa,GACxEC,QAAST,EAAYU,oBACrBC,IAAKX,EAAYY,UAEjBC,SAAUZ,GAIdH,OAAOC,UAAUtB,UAAUqC,SACvB5E,IAAekE,SACMzE,EAAc1G,eAAe+G,cAAcE,IAAekE,aAQvFhE,cAjDmBhD,e,oPCRhB,MAAMsE,EAAb/E,cAEoB,KAAAoI,aAAyB,CACrC,oDACA,kEACA,mEAGG,KAAAlI,YAAc,IAAM,eACpB,KAAAC,mBAAqB,IAAM,eAC3B,KAAAC,cAAgB,IAAiB,eAOrC,MAAMiI,EAA8B7M,GAChC,IAAIuJ,EAQRtE,eAAeqE,EAAsB5J,EAA0BwF,GAGlE,aAD2B4H,YAAsB,CAAEzH,cAAeH,GAAOxF,EAAMkN,cASpE9H,+CAA2C,CACtDC,GAAI,8DACJC,OAAiCsE,EACjC5J,MAAOmN,K,oSC/BJ,MAAME,EAAc,CACvBC,0BAA2B,eAC3BC,sBAAuB,oBACvBC,uBAAwB,qBACxBC,oBAAqB,WACrBC,qBAAsB,YACtBC,qBAAsB,YACtBC,sBAAuB,cAMpB,MAAMC,EAGT/I,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,oBAAqByB,KAAKvD,aAC5D,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAWpB2D,eAAeuI,EAA6B9N,EAA0BwF,GACzE,OAAOuI,YAA4B,CAAEpI,cAAeH,IAAO6B,KAAM2G,IACvBA,EAAoBC,oBAAsB,IAAIzJ,IAA4C0J,IAC5H,IAAIC,EAAM,GACV,GAAID,EAAWE,WACX,OAAOF,EAAWE,WAAWC,eACzB,IAAK,OACDF,EAAMD,EAAWI,aAAejB,EAAYK,qBAAuBL,EAAYI,oBAC/E,MACJ,IAAK,QACDU,EAAMD,EAAWI,aAAejB,EAAYO,sBAAwBP,EAAYM,qBAChF,MACJ,IAAK,gBACDQ,EAAMD,EAAWI,aAAejB,EAAYG,uBAAyBH,EAAYE,sBACjF,MACJ,IAAK,UACDY,EAAMd,EAAYC,+BAK1B9H,EAAIoF,UAAU2D,QAAQ,2DAE1B,OAAIJ,EACO,CACHA,MACAD,mBAGJ,IAELM,OAAOC,UAIX,MAAMC,EAAepO,GACjB,IAAIuN,EAAkBvN,EAAUc,eAAeQ,aAG3CwD,+CAA2B,CACtCC,GAAI,qFACJC,OAA8CwI,EAC9C9N,MAAO0O,K,qOCxEJ,MAAMC,EAGT7J,YAAY8J,GAIL,KAAA5J,YAAc,IAAM,0BACpB,KAAAC,mBAAqB,IAAM,eAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKyJ,eAAiBA,GAQvB,MAAMC,EAA0BvO,IACnC,MAAM,eAAEc,GAAmBd,EAG3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,0BAGpB,OAAO,IAAIiO,EA9BkB,MAC7B,MAAMC,EAAwC,CAC9CA,kBAAmC,CAAC,GACpCA,wBAAyC,CAAC,IAC1C,OAAOA,GA0BqBE,KAGzBvJ,eAAewJ,EAAY/O,EAAyB2J,GAAuB,QAC9E,GAAKA,SAAD,UAACA,EAASvI,sBAAV,iBAAC,EAAyByF,YAA1B,QAAC,EAA+BC,gBAChC,MAAM,IAAIpG,MAAM,8DAGpB,OAAOsO,YAAiB,CAAErJ,cAAegE,GAAW3J,EAAM4O,gBAG/CxJ,+CAA2B,CACtCC,GAAI,eACJC,OAAiCyJ,EACjC/O,MAAO6O,K,oNClCL,MAAOI,EAITnK,YAAYlB,EAAgBhC,GAKrB,KAAAoD,YAAc,IAAMtB,wBAAc,oBAAD,OAAqByB,KAAKvB,QAAUuB,KAAKvD,aAC1E,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKvB,OAASA,EACduB,KAAKvD,YAAcA,GAmBpB2D,eAAe2J,EAAsBlP,EAA6BwF,GACrE,MAAM2J,EAAe,IAAIC,yBAAuBpP,EAAM4D,OAAQ5D,EAAM4B,aAC9DyN,QAA2BC,kCAAwBH,EAAc3J,GAEjE+J,EAAuB/J,EAAIpE,eAAe8F,QAE1CsI,EAAgBD,GAAwBA,EAAqBE,6BAA+B,KAC5FC,EAAuBL,EAAmBlJ,KAAKwJ,IAAkBA,EAAcC,SAAW,MAAQJ,GAClGK,EAAmBH,GAAwBA,EAAqBI,iBAAoB,MAEpFC,EAAa,IAAIC,IAAuBH,EAAiB7P,EAAM4B,aACrE,OAAOqO,YAAuBF,EAAYvK,GAG/BJ,+CAA2B,CACtCC,GAAI,uDACJC,OAAsC4J,EACtClP,MAzBiBM,IACjB,MAAM,OAAEsD,EAAF,YAAUhC,GAAgBtB,EAAUc,eAC1C,IAAMd,EAAUc,iBAAkBwC,EAC9B,MAAM,IAAIlD,MAAM,oEAEpB,OAAO,IAAIuO,EAAqBrL,EAAQhC,O,oCCpC5C,iIAUO,SAASsO,EAAsC5P,GAClD,OAAO6P,YAAkC9P,YAAyBC,GAAY,IAGnE8E,+CAA2B,CACtCC,GAAI,sEACJC,OAAwCsB,eACxC5G,MAAOkQ,K,kNCRJ,MAAME,EAAbtL,cACW,KAAAE,YAAc,0BACd,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,QAUrCK,eAAe8K,EAAuBrQ,EAA4BwF,GAErE,IAAKxF,EACD,MAAM,IAAIU,MAAM,gEAGpB,GAAI8E,EAAIpE,eAAeyF,KAAKC,gBAAiB,CACzC,MAAMwJ,QAAkBC,YAAmB,CAAE5K,cAAeH,EAAKkB,oBAAqB,IAAM,MAE5F,KAAI4J,GAAaA,EAAU/J,OAAS,GAgChC,OADAf,EAAI8B,MAAM,sEACY,GAhCa,CACnC,MAAMkJ,EAAoC,GAW1C,GAVAF,EAAUG,QAASC,IACXA,EAAaC,mBACbD,EAAaC,kBAAkBF,QAASG,IAChCA,EAAiBlO,WACjB8N,EAAcK,KAAK,IAAIC,mBAAiBF,EAAiBlO,UAAW8C,EAAIpE,eAAeQ,YAAayB,mDAAyCmC,SAMzJgL,EAAcjK,OAAS,EACvB,OAAOwK,0BAAgBP,EAAehL,GACjC6B,KAAK2F,GACEA,GAGsB,IAG7BvC,MAAMC,IAIH,MAHAlF,EAAI8B,MAAMoD,GACVlF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAd,2EACM,IAAIpK,MAAM,6EAGxB8E,EAAI8B,MAAM,qCAQtB,OADA9B,EAAI8B,MAAM,8DACY,GAGXlC,+CAA2B,CACtCC,GAAI,2EACJC,OAAgC+K,EAChCrQ,MA1DiBM,GACV,IAAI8P,K,oKCCR,MAAMY,EAITlM,YAAYrD,EAAmCL,GAKxC,KAAA6D,mBAAqB,IAAc,kBACnC,KAAAD,YAAc,IAAclB,qCAA2B,kBAAmBqB,KAAK/D,gBAC/E,KAAA8D,cAAgB,IAAiB,UANpCC,KAAK1D,OAASA,GAAU,GACxB0D,KAAK/D,eAAiBA,GAmC9B,SAAS6P,EAAejH,EAAsBkH,GAC1C,MAAMC,EAAqBC,EAAUpH,EAAKqH,OAAOC,QAAQC,QAEnDC,GAnBaC,EAmBezH,EAAKqH,OAAOK,MAnBTC,EAmBgBT,EAlBhDO,EAIAE,EAKC,GAAN,OAAUA,EAAV,YAAsBF,EAAtB,MAJU,IAAN,OAAWA,EAAX,MAJO,IAFf,IAAuBA,EAAkBE,EAoBrC,MAAO,CACHC,MAAO5H,EAAKqH,OAAOC,QAAQO,MAC3BtP,YAAayH,EAAKqH,OAAOC,QAAQQ,YACjCC,iBAAkB/H,EAAKqH,OAAOC,QAAQU,iBACtCC,gBAAiBjI,EAAKqH,OAAOC,QAAQY,gBACrCC,gBAAiBnI,EAAKqH,OAAOC,QAAQc,gBACrCC,KAAMb,EACNc,OAAQnB,GAOhB,SAASoB,EAAYjS,GAEjB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeuQ,SAAWrR,EAAUc,eAAeuQ,SAAW,GA+B5H,SAASP,EAAUG,GACf,MAAMiB,EAA2B,GAEjC,OAAKjB,GAILA,EAAOd,QAAQzG,IACX,GAAIA,GAAQA,EAAKyI,OAASzI,EAAKyI,MAAMC,KAAM,CAEvC,MAAMC,EAAmB,CACrBD,KAAM1I,EAAKyI,MAAMC,KACjBE,QAAS5I,EAAKyI,MAAMG,QACpBf,MAAO7H,EAAKyI,MAAMZ,MAClBgB,MAAO7I,EAAKyI,MAAMI,MAClBC,OAAQ9I,EAAKyI,MAAMK,QAGvBN,EAAgB3B,KAAK8B,MAItBH,GAlBIA,EAuDf,MAAMO,EAAsBzS,IACxB,MAAM0S,EAhCV,SAA0B1S,GACtB,IAAI0S,EACC1S,GAAcA,EAAUc,gBAAmBd,EAAUc,eAAe6R,SAAkB3S,EAAUc,eAAe6R,SAASC,KAAzC,KACpF,KACK5S,GACAA,EAAUc,gBACVd,EAAUc,eAAe6R,UACzB3S,EAAUc,eAAe6R,SAASC,MAClC5S,EAAUc,eAAe6R,SAASC,KAAK5B,SACvChR,EAAUc,eAAe6R,SAASC,KAAK5B,QAAQ6B,OAC/C7S,EAAUc,eAAe6R,SAASC,KAAK5B,QAAQO,OAC/CvR,EAAUc,eAAe6R,SAASC,KAAKE,KAC1C,CACE,KACK9S,GACAA,EAAU+S,MACV/S,EAAU+S,KAAKH,MACf5S,EAAU+S,KAAKH,KAAK5B,SACpBhR,EAAU+S,KAAKH,KAAK5B,QAAQ6B,OAC5B7S,EAAU+S,KAAKH,KAAK5B,QAAQO,OAC5BvR,EAAU+S,KAAKH,KAAKE,KAGrB,MADAtH,QAAQpB,MAAM,kDACR,IAAIhK,MAAM,kDAGpBsS,EAAW1S,EAAU+S,KAAKH,KAE9B,OAAOF,EAI0BM,CAAiBhT,GAC5CiT,EAA2C,GACjD,IAAIC,EAA8B,GAElC,MAAMC,EAA2BrC,EAAU4B,EAAS1B,QAAQC,QAEtDmC,EA3FV,SAAyBpT,GACrB,IAAKA,IAAcA,EAAUmB,SAAWnB,EAAUmB,OAAOiS,aACrD,OAAO,GAGX,MAAMxT,EAASY,OAAOR,EAAUmB,OAAOiS,cACvC,OAAIC,MAAMzT,GACC,GAGJA,EAiFc0T,CAAgBtT,GAC/BuT,EA5EV,SAAsBvT,GAClB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMwS,UAC3G/S,OAAOR,EAAUc,eAAeC,MAAMwS,WACtC,EAyEYC,CAAaxT,GAGzByT,EAA+B,GAC/BC,EAAMH,EAAYH,EACxB,IAAK,IAAIO,EAAQJ,EAAWI,EAAQjB,EAAS1B,QAAQ6B,MAAM5M,QAAU0N,EAAQD,EAAKC,IAAS,CACvF,MAAMjK,EAAOgJ,EAAS1B,QAAQ6B,MAAMc,GACpC,GAAa,SAATjK,EAAKkK,KAA4B,CACjC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOC,UAAYtH,EAAKqH,OAAOC,QAAQO,MAAO,CACpE/F,QAAQpB,MAAR,gEAAuEsI,EAASI,MAChF,SAIJ,GAA6B,IAAvBI,EAAYjN,OAAe,CAC7B,MAAM4N,EAAa,IAAIX,GACvBD,EAAU1C,KAAKsD,GACfX,EAAc,GAIlBD,EAAU1C,KAAKI,EAAejH,EAAMuI,EAAYjS,KAGpD,GAAa,YAAT0J,EAAKkK,KAA+B,CACpC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOrN,SAAU,CACvC8H,QAAQpB,MAAR,gDAAuDsI,EAASI,MAChE,SAIJ,MAAMgB,EAA4B,CAC9BzR,SAAUqH,EAAKqH,OAAOrN,SACtB1B,UAAW0H,EAAKqH,OAAOhP,WAAa,KAGxCmR,EAAY3C,KAAKuD,GACjBL,EAAalD,KAAKuD,IAS1B,OAJ6B,IAAvBZ,EAAYjN,QACdgN,EAAU1C,KAAK2C,GAGZ,IAAIa,YACPrB,EAASI,IACTJ,EAAS1B,QAAQO,MACjBmB,EAAS1B,QAAQQ,YACjBkB,EAAS1B,QAAQU,iBACjBgB,EAAS1B,QAAQY,gBACjBc,EAAS1B,QAAQc,gBACjBqB,EACAF,EACAQ,EACAf,EAAS1B,QAAQ6B,MAAM5M,OACvBmN,EACAG,IA4BOzO,+CAA2B,CACtCC,GAAI,4DACJC,OA1BWC,MAAOvF,EAA6B2J,KAC/C,MAAM,OAAElI,GAAWzB,EACnB,IAAIgT,EACJ,IACIA,QAAiBsB,kBAAQvB,EAAmBpJ,GAAUA,GACxD,MAAOzI,IAGT,OAAI8R,GAAYA,EAASpB,MACd,CACHC,MAAOmB,EAASpB,MAChBE,YAAakB,EAASzQ,aAGnBd,EACA,CACHoQ,MAAOpQ,EAAOoQ,MACdC,YAAarQ,EAAOqQ,aAGjB,IAOX9R,MAAQmE,GACG,IAAI6M,EAAgD7M,EAAK1C,OAAQ0C,EAAK/C,mB,2FC5OrFqG,+BAAqB,CACjBC,SAAU,wEACVC,eApBsCpC,MACtCqC,EACA2M,EACAzM,KAEKjC,MAAMC,QAAQyO,KACfA,EAAiB,CAACA,IAGtBA,EAAe9D,QAAQlL,UACnB,GAAItD,EAAS,CACTA,QAAgB8F,QAAQC,QAAQ/F,GAChC,MAAMgG,EAAcC,YAAgCjG,GACpD6F,EAAc1G,eAAe+G,cAAcF,EAAYG,YAAcH,MAQ7EM,cAzBuChD,e,oCCP3C,kDAYO,MAAM/E,EAAmBF,IAG5B,MAAQc,gBAAiBC,OAAO,EAACZ,EAAD,IAAIM,EAAJ,KAASE,GAAOW,aAAa,UAACiC,IAAapC,QAAQ,SAACZ,EAAD,aAAW6S,IAAiBpT,EACzGoG,EAAsB8N,IAAyBC,cAAcnU,GAAWoU,oBAC9E,MAAO,CACHjU,IACAQ,KAAOA,GAAQH,OAAOG,IAAS,EAC/BF,IAAMA,GAAOD,OAAOC,IAAQ,GAC5B2S,eACA7S,WACAgD,YACA6C,yB,2SCjBD,MAAM+E,EAMT3G,YAAYxD,EAAmBuC,EAAmB2F,EAAiCnH,GAO5E,KAAA2C,YAAc,mCACd,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKqE,gBAAkBA,EACvBrE,KAAK9C,UAAYA,GAAa,GAQ/B,MAAMqJ,EAA2CpL,IACpD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAImK,GAAmCnK,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAE/F,MAAM,IAAInD,MAAM,gGAOjB6E,eAAeoG,EAClB3L,EACAwF,GAGA,OAAOuC,QAAQC,UAAUX,KAAK,KAC1B,MAAM8C,EAA0CnK,EAAMwJ,gBAEtD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOwG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IACR9C,KAA+BiD,IAC9B,MAAMH,EAAqEG,EAE3E,OAAIH,EACOyB,YAAwB,CAAEjG,cAAeH,EAAKkB,oBAAqB,IAAMyD,EAAcxH,SAAU3C,EAAM6D,UAAW7D,EAAMqC,WAG5H,OACRgF,KAAMwE,GACiCA,GAK/B,IACRpB,MAAOC,IAEN,MADAlF,EAAI8B,MAAMoD,EAAMC,SACV,IAAIjK,MAAM,8DAIT0E,+CAA2B,CACtCC,GAAI,8EACJC,OAAmCqG,EACnC3L,MAAO0L,K,0OCrCJ,MAAMiJ,EAKT7P,YAAY8P,EAAoBC,EAAiBjT,GAM1C,KAAAoD,YAAc,IAAMtB,wBAAc,2BAA4ByB,KAAKvD,aACnE,KAAAqD,mBAAqB,uCAAkCE,KAAKyP,UAAvC,YAAoDzP,KAAK0P,SAC9E,KAAA3P,cAAgB,IAAiB,UAPpCC,KAAKyP,UAAYA,EACjBzP,KAAK0P,QAAUA,EACf1P,KAAKvD,YAAcA,GAwBpB2D,eAAeuP,EAClB9U,EACAwF,GAEA,IAAKA,EACD,MAAM,IAAI9E,MAAJ,+EAGV,MAAM,UAAEkU,EAAF,QAAaC,GAAY7U,EAE/B,IAAK4U,IAAcC,EAEf,OADArP,EAAI8B,MAAJ,yEACkC,GAGtC,MAAM0E,QAlEY,eAAC4I,EAAD,uDAAqB,GAAIC,EAAzB,uDAA2C,GAA3C,OAAkDtP,SACpD,eAATqP,EACDG,YAAmC,CAAEpP,cAAeH,GAAOqP,GAG3DG,YAAyC,CAAErP,cAAeH,GAAOqP,EAAS,GA6DvDI,CAAcL,EAAWC,EAAzBI,CAAkCzP,GAE3D,IAAKwG,EAED,OADAxG,EAAI8B,MAAJ,4DACkC,GAKtC,GAAwC,KAApC0E,EAAWkJ,qBACX,MAAkC,CAC9BlJ,aACAgB,SAAU,IAIlB,IAAKhB,EAAWK,aAAeL,EAAWK,WAAW9F,OAEjD,OADAf,EAAI8B,MAAJ,2DACkC,GAGtC,MAAM6N,EAAuBnJ,EAAWK,WAAW7H,IAAI4Q,GAAaA,EAAU1S,WAAa,GAAG8L,OAAOlN,GAAaA,GAElH,IAAK6T,IAAeA,EAAW5O,OAE3B,OADAf,EAAI8B,MAAJ,wEACkC,GAGtC,MAAM0F,QAnFU,eAACmI,EAAD,uDAAwB,GAAItR,EAA5B,8CAAmD0B,UACnE,MAAMiL,EAAgB2E,EAAW3Q,IAAIlD,GAAa,IAAI+T,eAAa/T,EAAWkE,EAAIpE,eAAeQ,YAAaiC,IAC9G,OAAOyR,4BAAkB9E,EAAehL,IAiFjB+P,CAAYJ,EAAYnJ,EAAWU,UAAnC6I,CAA8C/P,GAErE,IAAKwH,IAAaA,EAASzG,OAEvB,OADAf,EAAI8B,MAAJ,yDACkC,GAGtC,MAAMkO,QAAyBjL,YAAwB,CAAE5E,cAAeH,EAAKkB,oBAAqB,IAAMsG,EAASxI,IAAIiR,GAAKA,EAAE9S,UAAW,GAAI,GACtI0E,KAAKnH,GACCA,GACRuK,MAAOC,IAIN,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,8DACM,IAAIpK,MAAM,gEAGpB,MAAkC,CAC9BsL,aACAgB,WACAwI,mBAIOpQ,+CAA2B,CACtCC,GAAI,8EACJC,OAA4CwP,EAC5C9U,MAnFyCM,IACzC,MAAM,QAAEoV,EAAU,GAAZ,cAAgBC,EAAgB,IAAQrV,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,OAAU,GACnH,GAAIqU,EACA,OAAO,IAAIf,EAAgC,aAAwBe,EAASpV,EAAUc,eAAeQ,aAClG,GAAI+T,EACP,OAAO,IAAIhB,EAAgC,cAAyBgB,EAAerV,EAAUc,eAAeQ,aAEhH,MAAM,IAAIlB,MAAJ,mF,kCCpEV,uFAIO,SAASkV,EAAoB1V,GAChC,OAAO,IAAI2V,eAA8B,iBAAkB3V,EAAQ,mBAOxDkF,+CAA2B,CACtCE,OAAkCwQ,mBAClC9V,MANgC,IACzB4V,EAAoB,O,kCCL/B,kCAIO,MAAMpB,EA+DT1P,YACI4B,GAEAvB,KAAKuB,oBAAsBA,EA9DP,0BACpB,OAAOvB,KAAKuB,oBAMA,mBAEZ,MAAMqP,EAAO,cAAU5Q,KAAKuB,oBAAoB/F,OAAQC,KAClDoV,EAAQ,eAAW7Q,KAAKuB,oBAAoB/F,OAAQK,MACpDiV,GAAmB9Q,KAAKuB,oBAAoBwP,QAASC,SAAW,IAAI3R,IAAK4R,GACrE,GAAN,OAAUA,EAAOhI,WAAjB,aAAgCgI,EAAO9H,aAAgB,OAAU,QAClE5J,KAAK,WAAQH,EACV8R,EAAW,iBAAaJ,GAC9B,MAAM,GAAN,OAAUF,EAAV,YAAqBC,EAArB,YAAiCK,GAOV,qBAAC/V,GACxB,MAAM,eAAEc,EAAF,OAAkBK,GAAWnB,EACnC,OAAOkU,EAAyB8B,eAAelV,EAAgBK,GAQvC,sBAACL,EAAiCK,GAC1D,MAAM8U,EAAkB9U,GAAUA,EAAO8U,sBAAmBhS,EACtDlD,EAAQD,GAAkBA,EAAeC,MACzCN,EAAMM,GAASA,EAAMN,UAAOwD,EAC5BtD,EAAOI,GAASA,EAAMJ,WAAQsD,EAE9BmC,EAAsB,CACxB/F,OAAQ,CACJK,KAAOC,GAAQH,OAAOG,IAAS,EAC/BL,IAAMG,GAAOD,OAAOC,KAAQU,aAAtB,EAAsBA,EAAQiS,eAAgB,IAExDwC,QAASK,GAAmB,IAGhC,OAAO,IAAI/B,EAAyB9N,GAMhB,oBACpB,OAAO,IAAI8N,EAAyB,CAAE7T,OAAQ,GAAIuV,QAAS,Q,wkBCrD5D,MAAMM,EAQT1R,YAAY6E,EAA0B8M,EAA4B5V,GAS3D,KAAAmE,YAAc,IAAMtB,YAAc,GAAD,OAAIyB,KAAKtB,UAAT,YAAsBsB,KAAKwM,SAA3B,gBAA2CxM,KAAKtE,UAAY,KAAOsE,KAAKvD,YAAauD,KAAKvB,QAC3H,KAAAqB,mBAAqB,IAAOE,KAAKuR,mBAAqB,oBAAsB,WAC5E,KAAAxR,cAAgB,IAAiB,cACjC,KAAAyR,UAAY,IAAaxR,KAAKvB,QAAU,GAX3CuB,KAAKuR,mBAAqBD,EAC1BtR,KAAKtE,SAAWA,GAAY,IAC5BsE,KAAKtB,UAAY8F,GAAWA,EAAQ/H,aAAe+H,EAAQ/H,YAAYiC,WAAa8F,EAAQ/H,YAAYiC,UAAY,EACpHsB,KAAKwM,SAAWhI,GAAWA,EAAQgI,UAAY,GAC/CxM,KAAKvD,YAAc+H,EAAQ/H,YAC3BuD,KAAKvB,OAAS+F,EAAQ/F,QAAU,IASxC,MAkBagT,EAAyB,CAACC,EAA0BrR,EAAqB5B,KAClF,IAAKiT,IAAiBA,EAAatQ,OAC/B,MAAO,GAGX,MAAMuQ,EAA4BD,EAAaE,OAAO,CAACC,EAAoBC,KACvE,MAAMC,EAxBU,EAACtT,EAAiBuT,KACtC,IAAIC,EAKJ,OAJIxT,GAAUuT,GAAoBA,EAAiB5Q,OAAS,IACxD6Q,EAAkBD,EAAiBhR,KAAK6D,GAAQA,EAAKqN,SAAUC,gBAAkB1T,EAAO0T,gBAGrFF,GAAmBA,EAAgBG,MAkBpBC,CAAgB5T,EAAQqT,EAASQ,kBAC7CC,E,yWAAiB,IAA4BT,GAInD,OAHAS,EAAkBC,gBAAkBV,EAAShN,KAC7CyN,EAAkBzN,KAAOiN,GAAaQ,EAAkBC,gBACxDX,EAAKC,EAAStU,UAAY+U,EACnBV,GACR,IAEH,IAAIY,EAAed,EAAY,GAkB/B,OAhBAe,OAAOC,KAAKhB,GAAarG,QAASpL,IAC9B,MAAM0S,EAAUjB,GAAazR,GACvB2S,EAAWD,EAAQE,eAEzB,GADAF,EAAQG,IAAMC,YAAeJ,EAASvS,EAAKsR,GAC1B,IAAbkB,EAEA,YADAJ,EAAeG,GAInB,MAAMK,EAASJ,GAAYlB,EAAYkB,GACnCI,IACAA,EAAOC,SAAWD,EAAOC,UAAY,GACrCD,EAAOC,SAASxH,KAAKkH,MAIrBH,GAAgBA,EAAaS,UAAa,IAMzCC,EAAkChY,IAC3C,MAAMiY,EAAWjY,EAAUmB,QAAUnB,EAAUmB,OAAO+W,eAAiBC,SAASnY,EAAUmB,OAAO+W,cAAe,IAChH,OAAO,IAAIhC,EAAgBlW,EAAUc,gBAAgB,EAAMmX,IAMxDhT,eAAemT,EAA2B1Y,EAAwBwF,GACrE,MAAMmT,QAAmBC,YACrB,IAAIC,IAAmBrT,EAAIpE,gBAAgB,EAAOpB,EAAMa,UACxD2E,GAEJ,OAAOoR,EAAuB+B,EAAYnT,EAAKxF,EAAM2W,aAG1CvR,+CAA2B,CACtCC,GAAI,qEACJC,OAAsCoT,EACtC1Y,MAAOsY,K,yMCxFJ,MAAMQ,EAKThU,YAAY1D,EAAiCK,GAAwC,MACjF,GAaG,KAAAuD,YAAc,IAAelB,qCAA2B,2BAA4BqB,KAAK/D,gBACzF,KAAA6D,mBAAqB,IAAc,2BACnC,KAAAC,cAAgB,IAAiB,WACjC,KAAAuD,kBAAoB,KAAM,EAhBzB,UAACrH,EAAeC,aAAhB,QAAC,EAAsBgE,GACvB,MAAM,IAAI3E,MAAM,mDAEpB,IAAKe,EACD,MAAM,IAAIf,MAAM,qDAEpByE,KAAK4T,gBAAkB3X,EAAeC,MAAMgE,GAC5CF,KAAKuB,oBAAsB8N,2BAAyB8B,eAAelV,EAAgBK,GAAQiT,oBAE3FvP,KAAKuB,oBAAoBsS,OAAQ,EACjC7T,KAAK/D,eAAiBA,GAYvBmE,eAAe0T,EAA4BjZ,EAAsC2J,GACpF,OAAOuP,+BAAqB,IAAIC,4BAA0BnZ,EAAM+Y,gBAAiB/Y,EAAM0G,qBAAsBiD,GAGlGvE,+CAA2B,CACtCC,GAAI,oFACJC,OAAgC2T,EAChCjZ,MAAQ2J,IACJ,IAAKA,EAAQlI,OACT,MAAM,IAAIf,MAAM,qDAEpB,OAAO,IAAIoY,EAA8BnP,EAAQvI,eAAgBuI,EAAQlI,Y,qGCOjFgG,+BAAqB,CACjBC,SAAU,qDACVC,eA3BmBpC,MAAOqC,EAAwCwR,EAAqBtR,KACvF,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMyO,EAAaxT,MAAMC,QAAQsT,GAAQA,EAAK,GAAKA,EAC7CE,EAA6BxR,EAAc1G,eAAe+G,cAAcmR,eAC9E,IAAIC,EAAgC,GAGpC,GAAID,EACA,IACIC,QAAsBjN,YAAiCgN,EAAgBxR,GACzE,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,mEAAoEA,GAK1GuB,OAAOC,UAAUtB,UAAUqC,SAAS5E,IAAemR,UAAW,CAC1DC,OAAQJ,EAAW7M,GACnBkN,YAAaL,EAAWM,QAAUN,EAAWM,QAAQhN,WAAa,GAClEK,SAAUuM,EACV1E,QAASwE,EAAWO,YAAcP,EAAWO,YAAYjN,WAAa,OAQ9EpE,cArDoBhD,MAAOsU,EAAuC/R,KAClE,IACI,MAAMgS,EAAcjU,MAAMC,QAAQ+T,GAA+BA,EAAO,GAA0BA,EAGlG,GAAIC,EAAYC,aAAkD,mBAA5BD,EAAYC,YAA4B,CAC1E,MAAMC,EAAqBF,EAAYC,cACvC,GAAIC,GAAsBA,EAAmBC,UAGzC,YADAnS,EAAc1G,eAAe+G,cAAcmR,eAAiBU,EAAmBC,WAIvFnS,EAAc8C,UAAUE,MAAM,qEAChC,MAAO5J,GACL4G,EAAc8C,UAAUE,MAAM,yCAA0C5J,Q,yNCxBzE,MAAegZ,EAkBlBpV,cANmB,KAAAqV,iBAAsC,CAAEC,aAAa,EAAMC,YAAY,GAIlF,KAAAC,8BAAwC,6BAG5CnV,KAAKoV,mBAAoB,EACzB,MAAMC,EAAQrV,KAAKsV,kBAAkBtV,KAAKmV,+BAC1C,IACI,MAAMI,EAAoCF,EAAQG,KAAKC,MAAMJ,QAASjW,EACnEmW,IACCvV,KAAK0V,eAAiBH,GAE5B,SACEvV,KAAK0V,oBAAiBtW,GAzBG,mBAC7B,YAAyBA,IAAlBY,KAAK2V,SAEY,cACxB,OAAO3V,KAAK2V,SA+BmB,+BAC/B3V,KAAKgV,iBAAmB,CACpBC,aAAcjV,KAAKgV,iBAAiBC,YACpCC,YAAalV,KAAKgV,iBAAiBE,YAKZ,yBAACra,GAC5BmF,KAAKoV,kBAAoBva,EAIU,iCAACA,GACpCmF,KAAK2V,SAAW9a,EAImB,iCAAC+a,GACpC5V,KAAK6V,wBAA0BD,EAIG,gCAACA,EAAkBE,GAAqG,IAArEC,EAAqE,wDAC1J,MAAMR,EAAwB,CAAES,QAASJ,EAASK,UAAWH,EAAWI,SADkF,uCAC9DC,UAD8D,wCAE1JnW,KAAK0V,eAAiBH,EAClBQ,GACA/V,KAAKoW,eAAepW,KAAKmV,8BAA+BK,KAAKa,UAAUd,IAK5C,6BAACe,EAAmBC,GACnD,MAAMhB,EAAwB,CAAES,QAAS,GAAIC,UAAW,GAAIC,SAAUI,EAAUH,UAAWI,GAC3FvW,KAAKwW,yBAA2BjB,EAIJ,0BAACQ,GAC7B/V,KAAK0V,oBAAiBtW,EAClB2W,GACA/V,KAAKyW,cAAczW,KAAKmV,+BAKT,iBAACta,GACpB,GAAImF,KAAK2V,UAAY3V,KAAK2V,SAASzV,KAAOrF,EAAMqF,GAC5C,MAAM,IAAI3E,MAAM,4BAGpByE,KAAK2V,SAAW9a,EAII,oBACpBmF,KAAK2V,cAAWvW,EAGZqX,cAAczN,GAClB,GAAKA,GAGD0N,UAASC,UAAW,CACJ7P,OAAO8P,aACfC,WAAW7N,IAInBoN,eAAepN,EAAaqM,GAChC,GAAKrM,GAAQqM,GAGTqB,UAASC,UAAW,CACJ7P,OAAO8P,aACfE,QAAQ9N,EAAKqM,IAIrBC,kBAAkBtM,GACtB,GAAKA,GAGD0N,UAASC,UAAW,CACpB,MACMI,EADUjQ,OAAO8P,aACKI,QAAQhO,GACpC,GAAI+N,EACA,OAAOA,IA1HTE,sBAATC,KAAS,iCAGAD,sBAATC,KAAS,4BAIED,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,8CACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,uCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,+CACAF,sBAAXE,KAAW,+BAsBZF,sBADC9W,KACD,2CAQA8W,sBADC9W,KACD,uCAKA8W,sBADC9W,KACD,+CAKA8W,sBADC9W,KACD,+CAKA8W,sBADC9W,KACD,8CASA8W,sBADC9W,KACD,2CAMA8W,sBADC9W,KACD,wCAQA8W,sBADC9W,KACD,+BASA8W,sBADC9W,KACD,gCCzFG,MAAMiX,UAAqCrC,EAAlDpV,kCACqB,KAAA0X,iBAA2B,wCAC3B,KAAAC,iBAA2B,gEAGtB,gBAACC,EAAoB5U,GACvC,KAAK4U,GACA5U,EAAc1G,eAAe8F,SAC7BY,EAAc1G,eAAe8F,QAAQyV,gBACrC7U,EAAc1G,eAAe8F,QAAQ0V,iBACtC,OAGJ,MAAMC,EAAK,4BAAwBC,OAAOC,gBAAgB,IAAIC,YAAY,IAAI,IACxE3b,EAAQ4b,UAAUP,GAClBvO,EAAM8O,UAAUnV,EAAc1G,eAAe8F,QAAQyV,gBAErDO,EAAoBpV,EAAc1G,eAAe+b,KAAOrV,EAAc1G,eAAe+b,IAAI1b,QAAUqG,EAAc1G,eAAe+b,IAAI1b,OAAOyb,kBAC3IE,EAAU,UAAMF,GAAwC/X,KAAKqX,iBAAnD,4BAAuFnb,EAAvF,gBAAoG8M,EAApG,kBAAiH0O,GAEjI,OAAO,IAAI9U,QAA6CC,IACpD,MAAMqV,EAASC,SAASC,cAAc,UACtCF,EAAOG,aAAa,OAAQ,mBAC5BH,EAAOG,aAAa,MAAOJ,GAE3BnR,OAAO4Q,GAAUxJ,WACNpH,OAAO4Q,GACdS,SAASG,KAAKC,YAAYL,GAEtBhK,GAAQA,EAAKsK,cAAgBtK,EAAKsK,aAAapX,OAAS,GAAK8M,EAAKsK,aAAa,GAAGC,UAAUrX,OAAS,GACrGyB,EAAQ,CACJyT,SAAUpI,EAAKsK,aAAa,GAAGC,UAAU,GAAGC,MAAMC,YAAY,GAC9DpC,UAAWrI,EAAKsK,aAAa,GAAGC,UAAU,GAAGC,MAAMC,YAAY,KAIvE9V,OAAQzD,IAGZ+Y,SAASG,KAAKM,YAAYV,KAMX,iBAACrd,GAAuB,MAG3C,KAFsC,QAAR,EAAAsd,gBAAA,UAAUU,eAAe,yBAInD,OAAOjW,QAAQC,UAGnB,MAAMiW,EAAG,UAAM9Y,KAAKsX,kBAAX,OAA8Bzc,EAAMmO,IAAN,eAAoBnO,EAAMmO,KAAQ,IAAhE,OAAqEnO,EAAMke,KAAN,mBAAyBle,EAAMke,MAAS,IAA7G,OAAkHle,EAAMme,OAAN,kBAA0Bne,EAAMme,QAAW,IAEtK,OAAO,IAAIpW,QAAQ,CAACC,EAASoW,KAAU,UACnC,MAAMf,EAAM,UAAGC,gBAAH,aAAG,EAAUC,cAAc,UACvCF,EAAOnJ,KAAO,kBACdmJ,EAAO9X,OAAQ,EACf8X,EAAOgB,OAAQ,EACfhB,EAAOiB,IAAML,EACbZ,EAAOhY,GAAK,uBACR4G,SACAA,OAAOsS,YAAc,KACjBpZ,KAAKqZ,gBAAiB,EACtBxW,MAGRqV,EAAOoB,QAAW/T,IACd0T,EAAO1T,IAEH,QAAR,EAAA4S,gBAAA,mBAAUG,YAAV,SAAgBM,YAAYV,MC7EjC,SAASqB,EAA8Bxe,GAC1C,OAAO,IAAI2V,eAAyC,UAAW3V,EAAQ,8BDUvEkc,sBADC9W,KACD,8BAwCA8W,sBADC9W,KACD,+BC3CWF,+CAA2B,CACtCE,OAA6CwQ,mBAC7C9V,MAN2CM,GACpCoe,EAA8B,IAAInC,M,kKCAtC,MAAMlH,EAKTvQ,YAAYxD,EAA4BM,EAAmCiC,GAMpE,KAAAmB,YAAc,IAAOtB,YAAc,YAAD,OAAayB,KAAK7D,UAAUqL,WAA5B,sBAAoDxH,KAAKtB,UAAU8I,YAAcxH,KAAKvD,aACxH,KAAAqD,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,cAPpCC,KAAKvD,YAAcA,EACnBuD,KAAK7D,WAAaA,EAClB6D,KAAKtB,UAAYA,GAAajC,EAAYiC,WAuEnCuB,yCAA2B,CACtCC,GAAI,gEACJC,OA7CGC,eAAuCsU,EAAwBrU,GAClE,IAAKK,MAAMC,QAAQ+T,IAA6B,IAAlBA,EAAOtT,OAEjC,OADAf,EAAI8B,MAAM,6DACH,GAGX,MAAMqX,EAAwC,GACxCxJ,EAAa0E,EAAOrV,IAAI,CAACxE,EAAO4e,KAClCD,EAAiB3e,EAAMsB,WAAasd,EAC7B5e,EAAMsB,YAGjB,OAAOud,YAAc,CAAElZ,cAAeH,EAAKkB,oBAAqB8N,IAAyBsK,aAAapK,qBAAuBmF,EAAO,GAAGhW,UAAWsR,GAAY9N,KAAK2F,IAC/J,MAAM+R,EAAiB/R,EAASxI,IAAIvC,IAC5B,IACI,MAAM0E,EAAc3E,YAAwBC,EAASuD,EAAIpE,eAAeQ,aAMxE,OAJI+E,IACA1E,EAAQC,gBAAkByE,GAGvB1E,EACT,MAAOf,GACLsE,EAAI8B,MAAM,sEAGjByP,OAAO,CAACC,EAAuB/U,KAC5B,IAAKA,EACD,OAAO+U,EAIX,OADAA,EADY2H,EAAiB1c,EAAQU,WACzBV,EACL+U,GACR,IAGP,OAAO6C,EAAOrV,IAAIxE,GACO+e,EAAe5Y,KAAKlE,GAAWA,GAAWA,EAAQU,WAAa3C,EAAMsB,YACpD,OAQ9CtB,MA/DsCM,IACtC,IAAI6U,EAAa7U,EAAUmB,QAAUnB,EAAUmB,OAAO0T,WACtD,OAAKA,GAILA,EAAmC,iBAAfA,EAA0BA,EAAW6J,MAAM,KAAO7J,EAC9DtP,MAAMC,QAAQqP,GAEhBA,EAAW3Q,IAAKlD,GACL,IAAI+T,EAAa/T,EAAWhB,EAAUc,eAAeQ,cAFhE,IALK,IA6DXqd,WAAW,K,8MC3Ef,MAAMC,EAAyB,CAC3BC,OAAQC,KAAKC,MACbC,kBAAmB,GAmBhB,MAAMC,EAGTza,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,mBAAoByB,KAAKvD,aAC3D,KAAAqD,mBAAqB,uBACrB,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAkBpB2D,eAAeia,EAClBxf,EACAwF,GAEA,IAAKA,EACD,MAAM,IAAI9E,MAAJ,uEAGV,IAAI+e,EAAsC,GAE1C,IACIA,OA9C0Bla,UACvBma,YACH,CACI/Z,cAAeH,EACfkB,oBAAqB,IAEzBwY,GAwCyBS,CAAsBna,GACjD,MAAOkF,GACL,MAAMA,EAGV,MAAO,CAAE+U,iBAAkBA,GAGhBra,+CAA2B,CACtCC,GAAI,qEACJC,OAAoCka,EACpCxf,MA7BiCM,GAC1B,IAAIif,EAAyBjf,EAAUc,eAAeQ,gB,sRC1C1D,MAAMge,EAGT9a,YAAY4B,GAML,KAAA1B,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAKuB,oBAAsBA,EAC3BvB,KAAKuB,oBAAoBsS,OAAQ,EACjC7T,KAAKuB,oBAAoB/F,OAAQC,IAAM,GAYxC,MAAMif,EAAuCvf,IAChD,MAAMoG,EAA4C8N,IAAyBC,cAAcnU,GAAWoU,oBACpG,OAAO,IAAIkL,EAA8BlZ,IAQtCnB,eAAeua,EAAyB9f,EAAsC2J,GACjF,OAAOoW,YAAsB,IAAIC,IAA2BhgB,EAAM0G,qBAAsBiD,GAO7EvE,+CAA4C,CACvDC,GAAI,wFACJC,OAAkCwa,EAClC9f,MAAO6f,K,gKC5CJ,MAAMI,EAGTnb,YAAYlD,EAAmCoJ,GAIxC,KAAAhG,YAAc,IAAMtB,YAAc,+BAAgCyB,KAAKvD,aACvE,KAAAqD,mBAAqB,IAAM,+BAC3B,KAAAC,cAAgB,IAAiB,cALpCC,KAAKvD,YAAcA,GA+BZwD,+CAA2B,CACtCC,GAAI,sFACJC,OAbgDC,MAAOvF,EAA6CwF,IAChGxF,EACOkgB,YAA2C,CAAEva,cAAeH,IAAO6B,KAAK5B,GACpEA,IAIfD,EAAI8B,MAAM,6EACiC,IAM3CtH,MAvBiBM,IACjB,MAAM,YAAEsB,GAAgBtB,EAAUc,eAClC,IAAKQ,EACD,MAAM,IAAIlB,MAAM,oFAGpB,OAAO,IAAIuf,EAAqCre,O,uMCG7C,MAAMue,EAGTrb,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,oBAAqByB,KAAKvD,aAC5D,KAAAqD,mBAAqB,wBACrB,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAkBpB2D,eAAe6a,EAClBpgB,EACAwF,GAEA,IAAKA,EACD,MAAM,IAAI9E,MAAJ,+DAGV,IAAI2f,EAA8B,GAElC,IACIA,OA5CkB9a,UACf+a,YACH,CACI3a,cAAeH,IAyCF+a,CAAc/a,GACjC,MAAOkF,GACL,MAAMA,EAGV,MAAO,CAAE8V,kBAAmBH,GAGjBjb,+CAA2B,CACtCC,GAAI,2DACJC,OAAmC8a,EACnCpgB,MA7BkCM,GAC3B,IAAI6f,EAA0B7f,EAAUc,eAAeQ,gB,kCCjDlE,+CAQewD,+CAA2B,CACtCE,OAA+BsB,eAC/B5G,MAAO,IAAMygB,YAA0B,O;;;;;ACKpC,MAAMC,EAA4Bnb,MAAOvF,EAAyB2J,KACrE,IAAIgX,EACJ,MAAMpf,EAAYoI,EAAQvI,eAAeG,UAGzC,GAAIvB,EAAM4gB,aAAaC,aAAe7gB,EAAM4gB,aAAaC,YAAYta,OAAS,EAC1Eoa,EAAa3gB,EAAM4gB,aAAaC,YAAY,QACzC,GAAItf,GAAaA,EAAU0C,UAAY1C,EAAU0C,SAASqT,gBAAkBwJ,KAAsBvf,EAAUyC,SAC/G2c,GAAcpf,EAAUyC,aACrB,MAAIzC,GAAaA,EAAUoX,YAAcpX,EAAUoX,WAAWpS,OAAS,GAI1E,MAAM,IAAI7F,MAAM,kDAHhBigB,GAAcpf,EAAUoX,WAAW,GAKvChP,EAAQiB,UAAUE,MAAlB,2DAA4E6V,IAC5E,MAAMI,EAA+C,CACjDC,QAAS,CACLtU,WAAY1M,EAAM6D,UAClBvB,WAAYtC,EAAMqC,WAEtB4e,YAAa,CAACN,GACdO,mBAAmB,GAGvB,OAAOC,YACH,CAAExb,cAAegE,EAASjD,oBAAqB,CAAE/F,OAAQ,CAAEC,IAAKZ,EAAM4gB,aAAaxX,UAAY,MAC/F2X,GAEC1Z,KAAM2F,IACHrD,EAAQiB,UAAUE,MAAM,gDAAiDkC,GAClEoU,YAAoBpU,EAAUrD,EAAQvI,eAAeQ,eAE/D6I,MAAMC,IAEH,MADAf,EAAQiB,UAAUF,MAAlB,kDAAmEA,IAC7D,IAAIhK,MAAMgK,MAIf2W,EAAkCjc,YAA2B,CACtEE,OAAwCob,EACxCrb,GAAI,6C,qPC3CF,MAAOic,EAETxc,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,uBACpB,KAAAC,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAA0B,OAP7CC,KAAKnF,MAAQA,GAoBd,MAAMuhB,EAA4B,CACrCpd,EADqC,KAGhB,IADrB,WAAEqd,EAAF,WAAcC,EAAd,mBAA0BC,EAA1B,cAA8CC,EAA9C,iBAA6DC,GACxC,EACrB,OAAO,IAAIN,EACPO,YACIL,EACAC,EACAE,EACAD,EACAE,KAKLrc,eAAeuc,EAClB9hB,EACAwF,GAEA,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAA0Dwc,EAC1D9hB,MAAOuhB,K,uxBChDJ,MAAMQ,EAKTjd,YAAYxD,EAAmBuC,EAAmBkB,GAM3C,KAAAC,YAAc,mCACd,KAAAC,mBAAqB,IAAM,oCAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKJ,wBAA0BA,GAA2B,IAkEnDK,+CAA2B,CACtCC,GAAI,gFACJC,OA3CJC,eACIvF,EACAwF,GAEA,MAAM4E,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,UAAW7D,EAAM+E,yBAExFoF,QAA4CE,kBAAmBD,EAAsB5E,GAE3F,GAAI2E,GAAiBA,EAAcnE,YAAcmE,EAAcnE,WAAWO,OAAS,EAAG,CAClF,MAAMyb,EAAkC,GAExC,IAAK,MAAM/b,KAAakE,EAAcnE,WAAY,CAC9C,MAAMic,QAAwBC,YAC1B,CAAEvc,cAAeH,EAAKkB,oBAAqB,IAC3CyD,EAAcgY,gBAAkBhY,EAAcgY,gBAAkBhY,EAAcxH,SAC9E3C,EAAM6D,UACNoC,EAAUI,mBACVrG,EAAM+E,wBAAwByJ,OAAOgM,GAASA,EAAMnU,qBAAuBJ,EAAUI,oBAErF,MAGE+b,EAAa,OACZnc,GADY,IAEfoc,gBAAiBJ,IAGrBD,EAAQnR,KAAKuR,GAGjB,OAAOJ,EAGX,MAAO,IAWPhiB,MAzD6CM,IAC7C,MAAMgB,EAAYH,YAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIygB,GAAsCzgB,GAAYhB,EAAUc,eAAeQ,YAAYiC,UAAW,IAE7G,MAAM,IAAInD,MAAM,wG,6TCLxB,IAAW4hB,GAAX,SAAWA,GACPA,WACAA,WAFJ,CAAWA,MAAe,KAK1B,MAmEMC,EAAsBhd,MAAOid,EAAgDxiB,EAAyB2J,KACxG,IAAIwL,EAAuB,GAE3B,GAAInV,EAAM4gB,aAAa6B,YAAa,CAChC,MAAMrJ,OAlCE7T,WACZ,IAAI6T,EACJ,GAAI5T,EAAIpE,gBAAkBoE,EAAIpE,eAAeshB,QAAS,CAClD,MAEMC,GAFUnd,EAAIpE,gBAAkBoE,EAAIpE,eAAeshB,SAC9BE,gBACQ5D,MAAM,KACzC,GAAI2D,GAA8C,IAA3BA,EAAgBpc,SAE9Bf,EAAIpE,eAAeyF,KAAKC,iBAAmB6b,EAAgB,KAAOL,EAAgBO,OACjFrd,EAAIpE,eAAeyF,KAAKC,iBAAmB6b,EAAgB,KAAOL,EAAgBQ,MACtF,CACE,MAAMC,QAAiB7X,YAAU,CAAEvF,cAAeH,GAAOmd,EAAgB,IACrEI,GAAYA,EAASvW,KACrB4M,EAAO2J,IAKvB,OAAO3J,GAgBgB4J,CAAQrZ,GAC3B,GAAIyP,GAAQA,EAAK6J,UAAW,CACxB,MACMC,EADiB9J,EAAK6J,UAAUzU,OAAOuJ,QAAiCxT,IAAtBwT,EAAQrV,WAC1B8B,IAAIvC,GAAWA,EAAQS,WAC7DiH,EAAQiB,UAAUE,MAAlB,4BAA6CoY,IAEzCA,GAAkBA,EAAe3c,OAAS,IAG1C4O,EAAa+N,SAGlB,GAAIljB,EAAM4gB,aAAauC,qBAAuBnjB,EAAM4gB,aAAazL,YAAuD,IAAzCnV,EAAM4gB,aAAazL,WAAW5O,OAAc,CAC9H,MAAMhF,EAAYoI,EAAQvI,eAAeG,UAErCA,GAAaA,EAAUyC,UAAYzC,EAAU0C,UAAY1C,EAAU0C,SAASqT,gBAAkB8L,MAC9FjO,EAAa,EAAE5T,EAAUyC,gBAIzBhE,EAAM4gB,aAAazL,YAAcnV,EAAM4gB,aAAazL,WAAW5O,OAAS,IACxE4O,EAAa,CAACnV,EAAM4gB,aAAazL,WAAW,KAIpDqN,EAAuBa,WAAalO,GAI3BmO,EAAkC/d,MAAOvF,EAAyB2J,KAE3E,MAAMsB,EACFtB,EAAQvI,gBAAkBuI,EAAQvI,eAAeyF,MAAQ8C,EAAQvI,eAAeyF,KAAKoE,sBACzF,GAAIjL,EAAM4gB,aAAa2C,uBAAyBC,MAAuBvY,EACnE,MAAO,GAGX,MAAMuX,EAAiD,GACjDiB,EAAyB,CAAE9d,cAAegE,EAASjD,oBAAqB,CAAE/F,OAAQ,CAAEC,IAAKZ,EAAM4gB,aAAaxX,UAAY,MAG9H,IAAIsa,EAkBJ,OApBAlB,EAAuBlgB,UAAYtC,EAAMqC,UAGrCrC,EAAM4gB,aAAa2C,qBACnBG,EAAuB1jB,EAAM4gB,aAAa2C,qBA3HxBI,KACtB,MAAM,IAAIjjB,MAAJ,gBAAmBijB,EAAnB,0EA4HFC,CAAiB,4CA1GI,EAACpB,EAAgDxiB,EAAyB2J,KACnG,IAAIkX,EAAwB,GAE5B,GAAI7gB,EAAM4gB,aAAauC,qBAAuBnjB,EAAM4gB,aAAaC,aAAyD,IAA1C7gB,EAAM4gB,aAAaC,YAAYta,OAAc,CACzH,MAAMhF,EAAYoI,EAAQvI,eAAeG,UAErCA,GAAaA,EAAU0C,UAAY1C,EAAU0C,SAASqT,gBAAkBwJ,KACpEvf,EAAUyC,WACV6c,EAAc,EAAEtf,EAAUyC,gBAK9BhE,EAAM4gB,aAAaC,aAAe7gB,EAAM4gB,aAAaC,YAAYta,OAAS,IAC1Esa,EAAc7gB,EAAM4gB,aAAaC,aAIzC2B,EAAuBvB,YAAcJ,GA2FrCgD,CAAqBrB,EAAwBxiB,EAAO2J,SAC9C4Y,EAAoBC,EAAwBxiB,EAAO2J,IAEpD3J,EAAM4gB,aAAakD,iBAAmBJ,IAAyBF,MAAuBvY,IACvFuX,EAAuBuB,sBAAwB9Y,EAC/CwY,EAAaO,YAAc,OAG/Bra,EAAQiB,UAAUE,MAAlB,mCAAoD6P,KAAKa,UAAUgH,KAG5DyB,YAAiBR,EAAcC,EAAsBlB,GACvDnb,KAAK9B,UACF,GAAI2e,EAAqB,CACrB,MAAM1T,EAAgC,GAChC2T,EAA0B,GAEhC,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAoB3d,OAAQ6d,IAAK,CACjD,MAAMrM,EAAUmM,EAAoBE,GAEhCrM,EAAQsM,WAA0C,IAA7BtM,EAAQuM,mBAC7B9T,EAAc4T,GAAK,IAAI/O,gBAAc0C,EAAQsM,UAAW1a,EAAQvI,eAAeQ,aAC/EuiB,EAAcC,GAAKrM,EAAQsM,WAOnC,GAJA1a,EAAQiB,UAAUE,MAAlB,iDAAkE9K,EAAM4gB,aAAa2C,uBACrF5Z,EAAQiB,UAAUE,MAAlB,uCAAwDqZ,EAAc5d,SACtEoD,EAAQiB,UAAUE,MAAM,uBAAwBqZ,GAE5C3T,EAAcjK,OAAQ,CAEtB,GACIge,MACIA,SAAc5a,EAAQvI,eAAeQ,YAAY4iB,2BAA6B,GAxJ9C,UA2JtC,CACE,MAAMC,EAAoBjU,EAAchM,IAAIgW,GAASA,EAAMlZ,WACrDyf,EAA+C,CACjD2D,IAAKD,EACLzD,QAAS,CACLtU,WAAY/C,EAAQvI,eAAeQ,YAAYiC,UAC/CvB,WAAYqH,EAAQvI,eAAeQ,YAAYS,WAEnD4e,YAAauB,GAA0BA,EAAuBvB,aAAeuB,EAAuBvB,YAAY1a,OAAS,EAAIic,EAAuBvB,YAAc,GAClKC,mBAAmB,GAEvB,IACI,IAAIyD,QAA6BxD,YAAsB,CAAExb,cAAegE,GAAWoX,GAInF,GADApX,EAAQiB,UAAUE,MAAM,kCAAmC6P,KAAKa,UAAUmJ,IACtEA,EAAqBpe,OAAS,EAG9B,OAFA6a,YAAoBuD,EAAsBhb,EAAQvI,eAAeQ,aACjE+iB,EAAuBC,YAA0BH,EAASE,GACnDA,EAEb,MAAOzjB,GAELyI,EAAQiB,UAAUF,MAAlB,mDAAoExJ,KAK5E,MAAM2jB,EAAwBC,YAC1B,CAAEnf,cAAegE,GACjB6G,EAAchM,IAAIugB,GAAgBA,EAAazjB,YAGnD,OAAOgU,EAAkB9E,EAAe7G,GAAStC,KAAM2F,IACnDoU,YAAoBpU,EAAUrD,EAAQvI,eAAeQ,aACrDoL,EAAW4X,YACPpU,EAAchM,IAAIgW,GAASA,EAAMlZ,WACjC0L,GAEG6X,EAAsBxd,KAAK2d,IAC9BA,EAAevU,QAAQwU,IACnB,MAAMC,EACFlY,EAAS7G,KAAKgf,GAAiBA,EAAcxiB,WAAasiB,EAAcviB,WAExEwiB,IACAA,EAAeE,aAAeH,EAAcG,aAC5CF,EAAeG,cAAgBJ,EAAcI,iBAI9CrY,OAKvB,MAAO,KAGVvC,MAAOC,IAEJ,MADAf,EAAQiB,UAAUF,MAAlB,wDAAyEA,IACnE,IAAIhK,MAAMgK,MAIf4a,EAAwClgB,YAA2B,CAC5EE,OAAwCge,EACxCje,GAAI,mD,kCC9PR,kGAOO,SAASkgB,EAA+BrlB,GAC3C,OAAO,IAAI2V,eAAmC,sBAAuB3V,EAAQ,4BAOlEkF,+CAA2B,CACtCE,OAAuCwQ,mBACvC9V,MAN2C,IACpCulB,EAA+B,CAACC,UAAW,iB,iHCX/C,MAAMC,EAAsB,GAEnCA,EAAoB,4CAA8C,CACtDC,EAAGngB,SAAY,+DAIfogB,GAAI,iCAEhBF,EAAoB,uDAAyD,CACjEC,EAAGngB,SAAY,sEAIfogB,GAAI,4CAEhBF,EAAoB,+CAAiD,CACzDC,EAAGngB,SAAY,kCAIfogB,GAAI,oCAEhBF,EAAoB,wDAA0D,CAClEC,EAAGngB,SAAY,+DAIfogB,GAAI,6CAEhBF,EAAoB,sDAAwD,CAChEC,EAAGngB,SAAY,+DAIfogB,GAAI,2CAEhBF,EAAoB,0CAA4C,CACpDC,EAAGngB,SAAY,8EAIfogB,GAAI,+BAEhBF,EAAoB,sFAAwF,CAChGC,EAAGngB,SAAY,iCAIfogB,GAAI,4CAEhBF,EAAoB,0EAA4E,CACpFC,EAAGngB,SAAY,8EAIfogB,GAAI,gCAEhBF,EAAoB,8EAAgF,CACxFC,EAAGngB,SAAY,sEAIfogB,GAAI,oCAEhBF,EAAoB,6FAA+F,CACvGC,EAAGngB,SAAY,kCAIfogB,GAAI,mDAEhBF,EAAoB,sEAAwE,CAChFC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,mEAAqE,CAC7EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,gEAAkE,CAC1EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,8DAAgE,CACxEC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,gEAAkE,CAC1EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,oEAAsE,CAC9EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,0EAA4E,CACpFC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,mEAAqE,CAC7EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,iEAAmE,CAC3EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,+EAAiF,CACzFC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,kEAAoE,CAC5EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,oEAAsE,CAC9EC,EAAGngB,SAAY,8DAIfogB,GAAI,gCAEhBF,EAAoB,iGAAmG,CAC3GC,EAAGngB,SAAY,+DAIfogB,GAAI,+DAEhBF,EAAoB,8FAAgG,CACxGC,EAAGngB,SAAY,qEAIfogB,GAAI,6D,mGCpFhBle,+BAAqB,CACjBC,SAAU,wDACVC,eAlDwBpC,MAAOqC,EAAwCwR,EAAqBtR,KAC5F,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMyO,EAAaxT,MAAMC,QAAQsT,GAAQA,EAAK,GAAKA,EAC7CwM,EAA8B9d,EAAc1G,eAAe+G,cAAc0d,mBACzEC,EAAmBhe,EAAc1G,eAAe+G,cAAc2d,WAC9DC,EAA0Cje,EAAc1G,eAAe+G,cAAcE,iBAAekE,UACpGyZ,EAA+B,GACrC,IAAIC,EAAkC,GAGtC,GAAIL,GAAqBE,GAAcA,EAAW7C,YAC9C6C,EAAW7C,UAAUxS,QAASyV,KAEtBA,EAASxjB,YAC8D,IAAvEkjB,EAAkBO,QAAQD,EAASE,OAASF,EAASE,OAAS,KAE1DL,GACAA,EAAmB/Y,UACnB+Y,EAAmB/Y,SAASqZ,KAAKpkB,IAAYA,EAAQmG,aAAe8d,EAASxjB,YAGjFsjB,EAAiBnV,KAAKqV,KAI1BF,EAAiBzf,OAAS,GAC1B,IACI0f,QAAwB3Z,YAAiC0Z,EAAkBle,GAC7E,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,sEAAuEA,GAM7Gsb,GAAoBA,EAAiBzf,OAAS,EAC9C0F,OAAOC,UAAUtB,UAAUqC,SAAS5E,iBAAeie,eAAgB,CAC/D7M,OAAQJ,EAAW7M,GACnBkN,YAAaL,EAAWM,QAAUN,EAAWM,QAAQhN,WAAa,GAClEK,SAAUiZ,EACVpR,QAASwE,EAAWO,YAAcP,EAAWO,YAAYjN,WAAa,KAG1E7E,EAAc8C,UAAUE,MAAM,gEAQtCvC,cA5EyBhD,MAAOsU,EAAuC/R,KACvE,IACI,MAAMgS,EAAcjU,MAAMC,QAAQ+T,GAA+BA,EAAO,GAA0BA,EAGlG,GAAIC,EAAYC,aAAkD,mBAA5BD,EAAYC,YAA4B,CAC1E,MAAMwM,EAAwBzM,EAAYC,cAC1C,GAAIwM,GAAyBA,EAAsBC,YAG/C,YADA1e,EAAc1G,eAAe+G,cAAc0d,mBAAqBU,EAAsBC,aAI9F1e,EAAc8C,UAAUE,MAAM,4EAChC,MAAO5J,GACL4G,EAAc8C,UAAUE,MAAM,8CAA+C5J,Q,qPCnB/E,SAAUulB,EACdvmB,GAEA,OAAO,IAAI2V,eAAqB,qBAAsB3V,EAAQ,UASjDkF,2CAA2B,CACxCE,OAAyBwQ,mBACzB9V,MAPAM,GAEOmmB,EAAkC,MCdrC,MAAOC,EAIT5hB,YAAYxD,EAA4BuC,GAKjC,KAAAmB,YAAc,IAAM,iBAAN,OAAuBG,KAAK7D,UAA5B,YAAyC6D,KAAKtB,WAC5D,KAAAoB,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK7D,UAAiC,iBAAdA,GAA0BA,EAAYA,EAC9D6D,KAAKtB,UAAYA,GAYlB,MAAM8iB,EACTrmB,IAEA,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIolB,GAAoBplB,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAEhF,MAAM,IAAInD,MAAM,sFAOjB6E,eAAeqhB,EAClB5mB,EACAwF,GAEA,MAAM4E,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WACvE5B,QAAgBoI,6BAAmBD,EAAsB5E,GACzD+J,QAA6BsX,YAA6B,CAAElhB,cAAeH,IAG/EvD,GACCA,EAAQQ,SAAW8M,EAAqBuX,sBAEnCC,EACJN,EAAkC,WAClCjhB,GAUOJ,+CAA2B,CACtCE,OAAuBshB,EACvB5mB,MAAO2mB,K,oSC7CL,MAAOK,EAAbliB,cACuB,KAAAmiB,cAA8C,KAC9C,KAAAC,eAAwC,GACxC,KAAAC,eAAqC,KACrC,KAAAC,kBAAmC,KAEnC,KAAAhe,SAAmB,GACnB,KAAAnF,SAAyB,WANhCmY,sBAAXE,KAAW,oCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,+BACAF,sBAAXE,KAAW,+BAMV,MAAO+K,EAAbviB,cACW,KAAAE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,WAGrCK,eAAe+hB,EAClBtnB,EACAwF,GAEA,OAAO,IAAIwhB,EAMR,MAAMO,EACTjnB,GAEO,IAAI+mB,EAMAjiB,+CAA0C,CACrDE,OAAgCgiB,EAChCtnB,MAAOunB,K,snBC4QH,MAAOC,EAqDT1iB,YAAY2iB,GA8CV,GA7CFA,EAAcA,GAAe,GAEvBtiB,KAAKqc,WAAaiG,EAAYjG,WAG9Brc,KAAK/B,WAAaqkB,EAAYrkB,WAG9B+B,KAAKuiB,SAAWD,EAAYC,SAG5BviB,KAAKuc,mBAAqB+F,EAAY/F,mBAGtCvc,KAAKwiB,iBAAmBF,EAAYE,iBAGpCxiB,KAAKyiB,gBAAkBH,EAAYG,gBAGnCziB,KAAK0iB,aAAeJ,EAAYI,aAGhC1iB,KAAK2iB,aAAeL,EAAYK,aAGhC3iB,KAAK4iB,aAAeN,EAAYM,aAGhC5iB,KAAK6iB,aAAeP,EAAYO,aAGhC7iB,KAAK8iB,KAAOR,EAAYQ,KAGxB9iB,KAAK+iB,MAAQT,EAAYS,MAGzB/iB,KAAKgjB,QAAUV,EAAYU,QAG3BhjB,KAAKijB,QAAUX,EAAYW,QAG/BjjB,KAAKkjB,yBAAsB9jB,EACvBkjB,EAAYY,oBAAqB,CACnCljB,KAAKkjB,oBAAsB,GAC3B,IAAK,IAAIjE,EAAI,EAAGA,EAAIqD,EAAYY,oBAAoB9hB,OAAQ6d,IAC1D,GAAIqD,EAAYY,oBAAoBjE,GACxC,GAAIqD,EAAYY,oBAAoBjE,GAAG,eAAgB,CACrD,IAAIkE,EAAoBb,EAAYY,oBAAoBjE,GAAG,eAC3DkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKkjB,oBAAoBjE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYY,oBAAoBjE,UAG7Fjf,KAAKkjB,oBAAoBjE,GAAK,IAAIsE,wBAAoCjB,EAAYY,oBAAoBjE,SAKlGjf,KAAKkjB,oBAAoBjE,QAAK7f,IAWpC,MAAOokB,EAcT7jB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG1BzjB,KAAK0jB,OAASpB,EAAYoB,QAQ9B,MAAOC,EAcThkB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG1BzjB,KAAK0jB,OAASpB,EAAYoB,QAgE9B,MAAOE,EAcTjkB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG1BzjB,KAAK0jB,OAASpB,EAAYoB,QAQ9B,MAAOG,EAeTlkB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAI6E,EAAiCxB,EAAYoB,OAAOzE,SAKrEjf,KAAK0jB,OAAOzE,QAAK7f,IAuCvB,MAAO2kB,EAcTpkB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAK0jB,OAASpB,EAAYoB,OAG1B1jB,KAAKgkB,QAAU1B,EAAY0B,SAQ/B,MAAOC,EAeTtkB,YAAY2iB,GAKV,GAJFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAEH,OAAvBnB,EAAYoB,OAEd1jB,KAAK0jB,YAAStkB,OACT,GAAyC,MAArCkjB,EAAYoB,OAAO,eAC5B1jB,KAAK0jB,OAAS,IAAIQ,EAAqD5B,EAAYoB,YAC9E,CACL,IAAIP,EAAoBb,EAAYoB,OAAO,eAC3CP,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAS,IAAIH,EAAcJ,GAAWb,EAAYoB,WAW3D,MAAOS,EAeTxkB,YAAY2iB,GAKV,GAJFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAEH,OAAvBnB,EAAYoB,OAEd1jB,KAAK0jB,YAAStkB,OACT,GAAyC,MAArCkjB,EAAYoB,OAAO,eAC5B1jB,KAAK0jB,OAAS,IAAIU,EAA4C9B,EAAYoB,YACrE,CACL,IAAIP,EAAoBb,EAAYoB,OAAO,eAC3CP,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAS,IAAIH,EAAcJ,GAAWb,EAAYoB,WAW3D,MAAOW,EAcT1kB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKskB,QAAUhC,EAAYgC,QAG3BtkB,KAAKgkB,QAAU1B,EAAY0B,SAoC/B,MAAOO,EAWT5kB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKjF,OAASunB,EAAYvnB,QAQ9B,MAAOypB,EAeT7kB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtEjf,KAAK0jB,OAAOzE,QAAK7f,IAWvB,MAAOslB,EAeT/kB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtEjf,KAAK0jB,OAAOzE,QAAK7f,IAWvB,MAAOulB,EAeThlB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtEjf,KAAK0jB,OAAOzE,QAAK7f,IAWvB,MAAOwlB,EAeTjlB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtEjf,KAAK0jB,OAAOzE,QAAK7f,IAWvB,MAAOylB,EAeTllB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAI6F,EAAkCxC,EAAYoB,OAAOzE,SAKtEjf,KAAK0jB,OAAOzE,QAAK7f,IAWvB,MAAO2lB,EAeTplB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKyjB,OAASnB,EAAYmB,OAG9BzjB,KAAK0jB,YAAStkB,EACVkjB,EAAYoB,OAAQ,CACtB1jB,KAAK0jB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOtiB,OAAQ6d,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAK0jB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnEjf,KAAK0jB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtEjf,KAAK0jB,OAAOzE,QAAK7f,IAWvB,MAAO4lB,EAcTrlB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKjF,OAASunB,EAAYvnB,OAG1BiF,KAAKgkB,QAAU1B,EAAY0B,SAQ/B,MAAOE,EAeTvkB,YAAY2iB,GAKV,GAJFA,EAAcA,GAAe,GAEvBtiB,KAAKgkB,QAAU1B,EAAY0B,QAEN,OAArB1B,EAAY2C,KAEdjlB,KAAKilB,UAAO7lB,OACP,GAAuC,MAAnCkjB,EAAY2C,KAAK,eAC1BjlB,KAAKilB,KAAO,IAAIC,EAAsC5C,EAAY2C,UAC7D,CACL,IAAI9B,EAAoBb,EAAY2C,KAAK,eACzC9B,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKilB,KAAO,IAAI1B,EAAcJ,GAAWb,EAAY2C,SAWzD,MAAOC,EAuBTvlB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKmlB,sBAAwB7C,EAAY6C,sBAGzCnlB,KAAKyjB,OAASnB,EAAYmB,OAG1BzjB,KAAKilB,KAAO3C,EAAY2C,KAGxBjlB,KAAKolB,SAAW9C,EAAY8C,SAG5BplB,KAAKqlB,eAAiB/C,EAAY+C,gBAQtC,MAAOjB,EAeTzkB,YAAY2iB,GAOV,GANFA,EAAcA,GAAe,GAEvBtiB,KAAKslB,kBAAoBhD,EAAYgD,kBAGzCtlB,KAAKulB,WAAQnmB,EACTkjB,EAAYiD,MAAO,CACrBvlB,KAAKulB,MAAQ,GACb,IAAK,IAAItG,EAAI,EAAGA,EAAIqD,EAAYiD,MAAMnkB,OAAQ6d,IAC5C,GAAIqD,EAAYiD,MAAMtG,GAC1B,GAAIqD,EAAYiD,MAAMtG,GAAG,eAAgB,CACvC,IAAIkE,EAAoBb,EAAYiD,MAAMtG,GAAG,eAC7CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKulB,MAAMtG,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYiD,MAAMtG,UAGjEjf,KAAKulB,MAAMtG,GAAK,IAAIiG,EAAsC5C,EAAYiD,MAAMtG,SAKxEjf,KAAKulB,MAAMtG,QAAK7f,IAWtB,MAAOqlB,EAoCT9kB,YAAY2iB,GA4BV,GA3BFA,EAAcA,GAAe,GAEvBtiB,KAAKwlB,eAAiBlD,EAAYkD,eAGlCxlB,KAAKylB,UAAYnD,EAAYmD,UAG7BzlB,KAAK0lB,iBAAmBpD,EAAYoD,iBAGpC1lB,KAAK2lB,UAAYrD,EAAYqD,UAG7B3lB,KAAK4lB,cAAgBtD,EAAYsD,cAGjC5lB,KAAK6lB,cAAgBvD,EAAYuD,cAGjC7lB,KAAK8lB,gBAAkBxD,EAAYwD,gBAGnC9lB,KAAK+lB,mBAAqBzD,EAAYyD,mBAG1C/lB,KAAKgmB,WAAQ5mB,EACTkjB,EAAY0D,MAAO,CACrBhmB,KAAKgmB,MAAQ,GACb,IAAK,IAAI/G,EAAI,EAAGA,EAAIqD,EAAY0D,MAAM5kB,OAAQ6d,IAC5C,GAAIqD,EAAY0D,MAAM/G,GAC1B,GAAIqD,EAAY0D,MAAM/G,GAAG,eAAgB,CACvC,IAAIkE,EAAoBb,EAAY0D,MAAM/G,GAAG,eAC7CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKgmB,MAAM/G,GAAK,IAAIsE,EAAcJ,GAAWb,EAAY0D,MAAM/G,UAGjEjf,KAAKgmB,MAAM/G,GAAK,IAAIgH,EAAkC3D,EAAY0D,MAAM/G,SAKpEjf,KAAKgmB,MAAM/G,QAAK7f,IAWtB,MAAO6mB,EAiBTtmB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKkmB,UAAY5D,EAAY4D,UAG7BlmB,KAAK5C,YAAcklB,EAAYllB,YAG/B4C,KAAKmmB,IAAM7D,EAAY6D,KAQ3B,MAAOrB,EAcTnlB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKomB,OAAS9D,EAAY8D,OAG1BpmB,KAAKqmB,WAAa/D,EAAY+D,YA0ClC,MAAOvC,EA8ETnkB,YAAY2iB,GAuDV,GAtDFA,EAAcA,GAAe,GAEvBtiB,KAAKsmB,kBAAoBhE,EAAYgE,kBAGrCtmB,KAAKqc,WAAaiG,EAAYjG,WAG9Brc,KAAKumB,aAAejE,EAAYiE,aAGhCvmB,KAAKwmB,gBAAkBlE,EAAYkE,gBAGnCxmB,KAAKymB,gBAAkBnE,EAAYmE,gBAGnCzmB,KAAK0mB,aAAepE,EAAYoE,aAGhC1mB,KAAK2mB,aAAerE,EAAYqE,aAGhC3mB,KAAK4mB,WAAatE,EAAYsE,WAG9B5mB,KAAKqlB,eAAiB/C,EAAY+C,eAGlCrlB,KAAK6mB,iBAAmBvE,EAAYuE,iBAGpC7mB,KAAK8mB,sBAAwBxE,EAAYwE,sBAGzC9mB,KAAK+mB,gBAAkBzE,EAAYyE,gBAGnC/mB,KAAKgnB,aAAe1E,EAAY0E,aAGhChnB,KAAKinB,QAAU3E,EAAY2E,QAG3BjnB,KAAKknB,iBAAmB5E,EAAY4E,iBAGpClnB,KAAKuc,mBAAqB+F,EAAY/F,mBAGtCvc,KAAKmnB,iBAAmB7E,EAAY6E,iBAGxCnnB,KAAKsc,gBAAald,EACdkjB,EAAYhG,WAAY,CAC1Btc,KAAKsc,WAAa,GAClB,IAAK,IAAI2C,EAAI,EAAGA,EAAIqD,EAAYhG,WAAWlb,OAAQ6d,IAAK,CACtD,GAAIqD,EAAYhG,WAAW2C,GAC/B,GAAIqD,EAAYhG,WAAW2C,GAAG,eAE5BkE,GADIA,EAAoBb,EAAYhG,WAAW2C,GAAG,gBAC5BmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKsc,WAAW2C,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYhG,WAAW2C,UAG3Ejf,KAAKsc,WAAW2C,GAAK,IAAImI,EAAyB9E,EAAYhG,WAAW2C,SAKrEjf,KAAKsc,WAAW2C,QAAK7f,GAO3B,GADAY,KAAKwc,mBAAgBpd,EACjBkjB,EAAY9F,cAAe,CAC7Bxc,KAAKwc,cAAgB,GACrB,IAASyC,EAAI,EAAGA,EAAIqD,EAAY9F,cAAcpb,OAAQ6d,IAAK,CACzD,GAAIqD,EAAY9F,cAAcyC,GAClC,GAAIqD,EAAY9F,cAAcyC,GAAG,eAE/BkE,GADIA,EAAoBb,EAAY9F,cAAcyC,GAAG,gBAC/BmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKwc,cAAcyC,GAAK,IAAIsE,EAAcJ,GAAWb,EAAY9F,cAAcyC,UAGjFjf,KAAKwc,cAAcyC,GAAK,IAAIoI,EAA4B/E,EAAY9F,cAAcyC,SAK9Ejf,KAAKwc,cAAcyC,QAAK7f,GAO9B,GADAY,KAAKsnB,wBAAqBloB,EACtBkjB,EAAYgF,mBAAoB,CAClCtnB,KAAKsnB,mBAAqB,GAC1B,IAASrI,EAAI,EAAGA,EAAIqD,EAAYgF,mBAAmBlmB,OAAQ6d,IAAK,CAC9D,GAAIqD,EAAYgF,mBAAmBrI,GACvC,GAAIqD,EAAYgF,mBAAmBrI,GAAG,eAEpCkE,GADIA,EAAoBb,EAAYgF,mBAAmBrI,GAAG,gBACpCmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKsnB,mBAAmBrI,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYgF,mBAAmBrI,UAG3Fjf,KAAKsnB,mBAAmBrI,GAAK,IAAIsI,EAAiCjF,EAAYgF,mBAAmBrI,SAK7Fjf,KAAKsnB,mBAAmBrI,QAAK7f,GAUnC,GAJIY,KAAKwnB,mBAAqBlF,EAAYkF,mBAG1CxnB,KAAKynB,qBAAkBroB,EACnBkjB,EAAYmF,gBAAiB,CAC/BznB,KAAKynB,gBAAkB,GACvB,IAASxI,EAAI,EAAGA,EAAIqD,EAAYmF,gBAAgBrmB,OAAQ6d,IAAK,CAG7D,IAAIkE,EAFF,GAAIb,EAAYmF,gBAAgBxI,GACpC,GAAIqD,EAAYmF,gBAAgBxI,GAAG,eAEjCkE,GADIA,EAAoBb,EAAYmF,gBAAgBxI,GAAG,gBACjCmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChBnjB,KAAKynB,gBAAgBxI,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYmF,gBAAgBxI,UAGrFjf,KAAKynB,gBAAgBxI,GAAK,IAAIyI,EAA8BpF,EAAYmF,gBAAgBxI,SAKpFjf,KAAKynB,gBAAgBxI,QAAK7f,KAWhC,MAAOgoB,EAiBTznB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAK2nB,MAASrF,EAAYqF,MAASrU,SAASgP,EAAYqF,MAAO,IAAM,EAGrE3nB,KAAK4nB,cAAgBtF,EAAYsF,cAGjC5nB,KAAK6nB,UAAYvF,EAAYuF,WAQjC,MAAOR,EAmCT1nB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAK8nB,mBAAsBxF,EAAYwF,mBAAsBxU,SAASgP,EAAYwF,mBAAoB,IAAM,EAG5G9nB,KAAK8E,KAAOwd,EAAYxd,KAGxB9E,KAAK+nB,cAAgBzF,EAAYyF,cAGjC/nB,KAAKgoB,QAAU1F,EAAY0F,QAG3BhoB,KAAK8iB,KAAOR,EAAYQ,KAGxB9iB,KAAK+iB,MAAQT,EAAYS,MAGzB/iB,KAAKioB,UAAY3F,EAAY2F,UAG7BjoB,KAAKkoB,QAAU5F,EAAY4F,QAG3BloB,KAAK6nB,UAAYvF,EAAYuF,WAQjC,MAAON,EAoBT5nB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAK1C,OAASglB,EAAYhlB,OAG1B0C,KAAKmoB,SAAW7F,EAAY6F,SAG5BnoB,KAAKmmB,IAAM7D,EAAY6D,IAGvBnmB,KAAKooB,QAAU9F,EAAY8F,SAQ/B,MAAOV,EAoBT/nB,YAAY2iB,GACZA,EAAcA,GAAe,GAEvBtiB,KAAKooB,QAAU9F,EAAY8F,QAG3BpoB,KAAKqoB,UAAY/F,EAAY+F,UAG7BroB,KAAKsoB,QAAWhG,EAAYgG,mBAAmBC,KAAQjG,EAAYgG,QAC5DhG,EAAYgG,QAAWE,YAAiClG,EAAYgG,QAAS,sBAAsB,QAAUlpB,EAGpHY,KAAK1C,OAASglB,EAAYhlB;;;;;;ECp2D5B,SAAUmrB,EACZ3qB,EAEI4qB,EAEAC,GAIN,OAbW,IAAIC,oBAaFC,qCACT,6BACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,6DACpC,CACA9qB,WAAYH,EACVue,WAAYqM,EACZM,YAAaL,IAsBf,SAAUM,EACZnrB,EAEI4qB,EAEAQ,GAIN,OAbW,IAAIN,oBAaFC,qCACT,8BACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,8DACpC,CACA9qB,WAAYH,EACVue,WAAYqM,EACZS,aAAcD,IAwGhB,SAAUxM,EACZgM,EAEIU,EAEAC,EAEAC,EAEAC,GAIN,OAjBW,IAAIX,oBAiBFC,qCACT,wBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,wDACpC,CACA1M,WAAYqM,EACVpM,WAAY8M,EACZ5M,cAAe6M,EACf9M,mBAAoB+M,EACpB7M,iBAAkB8M,IA0BpB,SAAUnjB,EACZtI,GAIF,OATW,IAAI8qB,oBASFC,qCACT,yBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,yDACpC,CACA9qB,WAAYH,IAsDZ,SAAU0rB,EACZC,EAEIC,EAEAC,EAEAC,GAIN,OAfW,IAAIhB,oBAeFC,qCACT,kBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,kDACpC,CACAc,gBAAiBJ,EACfK,eAAgBJ,EAChBK,SAAUJ,EACVK,UAAWJ,IAwBb,SAAUK,EACZC,EAEIC,EAEAC,GAIN,OAbW,IAAIxB,oBAaFC,qCACT,mCACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,mEACpC,CACA9D,KAAMiF,EACJG,YAAaF,EACbG,SAAUF,IAsBZ,SAAU3mB,IAId,OARW,IAAImlB,oBAQFC,qCACT,wBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,wDACpC,IAkBA,SAAUwB,EACZC,EAEIC,EAEAC,EAEAC,EAEAC,GAIN,OAjBW,IAAIhC,oBAiBFC,qCACT,qBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,qDACpC,CACA8B,cAAeL,EACbM,SAAUL,EACVM,MAAOL,EACP5lB,KAAM6lB,EACN3C,QAAS4C,IAmEX,SAAUI,EACZltB,EAEI4qB,EAEAuC,GAIN,OAbW,IAAIrC,oBAaFC,qCACT,kBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,mDACpC,CACA9qB,WAAYH,EACVue,WAAYqM,EACZN,QAAS6C,IAmFX,SAAUC,EACZC,EAEIrtB,GAIN,OAXW,IAAI8qB,oBAWFC,qCACT,sBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,sDACpC,CACAqC,eAAgBD,EACdltB,WAAYH,IAoBd,SAAUutB,EACZF,EAEIrtB,GAIN,OAXW,IAAI8qB,oBAWFC,qCACT,qBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,qDACpC,CACAqC,eAAgBD,EACdltB,WAAYH,IAoBd,SAAUwtB,EACZH,EAEIrtB,GAIN,OAXW,IAAI8qB,oBAWFC,qCACT,sBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,sDACpC,CACAqC,eAAgBD,EACdltB,WAAYH,IAoBd,SAAUytB,EACZJ,EAEIK,EAEAC,EAEAC,EAEAC,EAEA7tB,EAEA8tB,GAIN,OArBW,IAAIhD,oBAqBFC,qCACT,sBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,sDACpC,CACAqC,eAAgBD,EACdzF,iBAAkB8F,EAClB5F,cAAe6F,EACfI,sBAAuBH,EACvB/F,UAAWgG,EACX1tB,WAAYH,EACZguB,OAAQF,IA8BV,SAAUG,EACZjuB,GAIF,OATW,IAAI8qB,oBASFC,qCACT,qBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,qDACpC,CACA9qB,WAAYH,IAkBZ,SAAUkuB,EACZluB,GAIF,OATW,IAAI8qB,oBASFC,qCACT,oBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,oDACpC,CACA9qB,WAAYH,IAqBZ,SAAUmuB,EAA0BC,GAE1C,OARI,SAAgDxD,GAChD,MAAM1f,EAAO0f,EAAc,CAAErM,WAAYqM,GAAc,KACvD,OAAO,IAAIE,mBAAiB,oCAAqC,0BAA2BE,EAA2D9f,GAK7ImjB,GACDtD,qCAAqC,kBAAkB,EAAMC,EAA6D,QAAS,CAACjK,YAAa,MAAOkK,aAAc,kDAAmD,CAACmD,WAAYA,M,iOCn0BhP,MAAME,EAGTzsB,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,YAAc,qBAAsByB,KAAKvD,aAC7D,KAAAqD,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAQ3B,MAKM4vB,EAAyBC,mBAAiBC,YAAc,OAKvDnsB,eAAeosB,EAAgB3xB,EAA6BwF,GAE/D,GADeosB,IAAOC,IAAIL,IAAmB,GACjC,CACR,MACM1L,SADyBgM,YAAatsB,IACR4T,KAGpC,GAAI0M,GAAcjO,OAAOC,KAAKgO,GAAYvf,OAAS,EAAG,CAClD,MAAMwrB,QAAqBC,YAAU,CAAErsB,cAAeH,GAAOsgB,EAAWtZ,GAAI,GAE5E,GAAIulB,EACA,OAAOlsB,MAAMC,QAAQisB,GAAgBA,EAAa,GAAKA,OAG3DvsB,EAAI8B,MAAJ,+EAIR,MAAa,GAGFlC,+CAA2B,CACtCC,GAAI,8DACJC,OAAuBqsB,EACvB3xB,MAlCiBM,GACV,IAAIixB,EAAqBjxB,EAAUc,eAAeQ,gB,4OCX7D,MAAMqwB,EAAwB,CAAC,gBAAiB,uBAAwB,kBAAmB,qBAAsB,wBAAyB,YAM7HC,EAA0B9wB,IACnC,MAAM+wB,EAAyBC,EAAuC,WAAYhxB,GAClF,OAAK+wB,GAA2BA,EAAuB5rB,OAIzB4rB,EAAuB3tB,IAAK6tB,IACtD,IACI,MAAMC,EAAqC,GAK3C,OAJAL,EAAsBxhB,QAAQ,CAAC8hB,EAAYte,KAEvCqe,EAAcC,GAAcF,EAAkBpe,KAE3Cqe,EACT,MAAMpxB,GACJ,UAELsN,OAAOC,SAdC,IAyCF+jB,EAAmB,CAACC,EAAcC,EAAkCC,EAA+B9e,SAE3FtP,IAAbmuB,GACKA,EAASnsB,OAGVksB,EAAQG,aAAaC,IAAI,WAAYlY,KAAKa,UA1BrBkX,KAC7B,MAAMI,EAA4C,GAWlD,OATAJ,EAASjiB,QAASsiB,IACd,MAAMV,EAAyC,GAC/CJ,EAAsBxhB,QAAS8hB,IAE3BF,EAAkBxhB,KAAKkiB,EAAQR,MAEnCO,EAAmBjiB,KAAKwhB,KAGrBS,GAcqDE,CAAiBN,KAFrED,EAAQG,aAAaK,OAAO,YAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ/f,WAGInO,IAAnBouB,GACIA,EAAepsB,OAGfksB,EAAQG,aAAaC,IAAI,UAAWlY,KAAKa,UAAUmX,IAFnDF,EAAQG,aAAaK,OAAO,WAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ/f,OAGfmB,GACA4e,EAAQG,aAAaC,IAAI,OAAQhf,EAAUlH,YAGxC8lB,EAAQ/f,MAQN0f,EAAkB,CAAIjkB,EAAa/M,IACzCA,EAAeC,OAASD,EAAeC,MAAM8M,GAClCwM,KAAKC,MAAMsY,mBAAmB9xB,EAAeC,MAAM8M,KAE1D,KAOEglB,EAAiB/xB,GACvBya,UAASC,UACD,IAAIsX,IAAInnB,OAAOonB,SAAS3gB,MAG3BtR,EAAe6c,IAAIb,WAAW1K,KACvB,IAAI0gB,IAAIhyB,EAAe6c,IAAIb,WAAW1K,MAEtC,IAAI0gB,IAAsBhyB,EAAe6c,IAAIb,a,yvBCpFzD,MAAMkW,EAUTxuB,YACIb,EACArC,EACA8E,EACAgsB,EACAzb,EACAsc,EACAC,EACA5vB,GAWG,KAAAoB,YAAc,KACjB,MAAM0B,EAAmB,OAClBvB,KAAKuB,oBAAoB/F,QACzB8yB,YAAKtuB,KAAKuB,oBAAoBwP,UAOrC,OAJiBxS,wBAAc,GAAD,OACvByB,KAAKlB,SADkB,YACNkB,KAAKvB,OADC,YACSuB,KAAK8R,UAAY9R,KAAKouB,WAD/B,YAC6CpuB,KAAKutB,SAASluB,IAAIuuB,GAAO,UAAOA,EAAQW,iBAAmBX,EAAQY,sBAAwB,KAAOZ,EAAQa,uBAAyB,IAA1G,MADtE,YAC2LC,0BAAgBntB,IACrOvB,KAAKvD,YAAauD,KAAKvB,SAKxB,KAAAqB,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,UAvBpCC,KAAKlB,SAAWA,EAChBkB,KAAKvD,YAAcA,EACnBuD,KAAK8R,SAAWA,EAChB9R,KAAKouB,WAAaA,EAClBpuB,KAAKuB,oBAAsBA,EAC3BvB,KAAKutB,SAAWA,EAChBvtB,KAAKquB,kBAAkBA,EACvBruB,KAAKvB,OAASA,GAuCf,MAAMkwB,EAA4B,CACrC3vB,EACA4vB,KAEA,MAAM9vB,EACyC,aAA3CE,EAAK/C,eAAeG,UAAU0C,UAA4BE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMsf,WAC3G,WACA,SAEJja,EAAsB8N,2BAAyBC,cAActQ,GAAMuQ,oBACnEsf,EAAgB9B,YAAuB/tB,EAAK/C,gBAC5CoyB,MA1FoBlzB,EA0FmB6D,KAxFzC7D,EAAUmB,aAC6B8C,IAAvCjE,EAAUmB,OAAO+xB,oBACsB,IAAvClzB,EAAUmB,OAAO+xB,mBAJzB,IAA8BlzB,EAgG1B,GAJG6D,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAM4yB,UACtDvtB,EAAoBwP,QAAU,CAAEC,QAAuBwE,KAAKC,MAAMsY,mBAAmB/uB,EAAK/C,eAAeC,MAAM4yB,YAGlG,aAAbhwB,EACA,OAAO,IAAI8vB,EACP9vB,EACAE,EAAK/C,eAAeQ,YACpB8E,EACAstB,IACE7vB,EAAK/C,eAAeG,UAAUC,QAAW2C,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMsf,YAAe,QACjHpc,EACAivB,EACArvB,EAAK/C,eAAewC,QAErB,GAAiB,WAAbK,GAAyBE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMZ,EACvF,OAAO,IAAIszB,EACP9vB,EACAE,EAAK/C,eAAeQ,YACpB8E,EACAstB,OACAzvB,EACAJ,EAAK/C,eAAeC,MAAMZ,EAC1B+yB,EACArvB,EAAK/C,eAAewC,QAErB,GAAiB,WAAbK,GAAyBE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMC,UACvF,OAAO,IAAIyyB,EACP9vB,EACAE,EAAK/C,eAAeQ,YACpB8E,EACAstB,OACAzvB,EACAJ,EAAK/C,eAAeC,MAAMC,UAC1BkyB,EACArvB,EAAK/C,eAAewC,QAI5B,MAAM,IAAIlD,MAAM,0D,iJCtJb,MAAMwzB,EAITpvB,YAAYrD,EAAmCG,GAKxC,KAAAqD,mBAAqB,IAAc,qBACnC,KAAAD,YAAc,cAAiBtB,wBAAc,qBAAsByB,KAAKvD,aAA1D,YAA0EuD,KAAK1D,OAAOoQ,OACpG,KAAA3M,cAAgB,IAAiB,UANpCC,KAAK1D,OAASA,GAAU,GACxB0D,KAAKvD,YAAcA,GA4DZwD,+CAA2B,CACtCC,GAAI,+DACJC,OA5CWC,MAAOvF,EAAgC2J,KAClD,MAAM,OAAElI,GAAWzB,EACnB,IAAIm0B,EACJ,IACIA,QAA0B9pB,6BAdK/J,KACnC,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIuD,wBAAsBvD,GAAYhB,EAAUc,eAAeQ,YAAYiC,UAAW,IAE7F,MAAM,IAAInD,MAAM,wFAQ6B0zB,CAA8BzqB,GAAUA,GACvF,MAAOzI,IAGT,GAAIizB,EAAmB,CACnB,IAAIvvB,EACJ,IACIA,EAAayvB,4BAAkBF,EAAmBxqB,GAElD,MAAM2qB,EAAkB3qB,EAAQvI,eAAekzB,gBAE3C1vB,EADAA,GAAc0vB,EACJ,kBAAcA,GAAd,OAAgC1vB,QAE7BL,EAEnB,MAAOrD,GACL0D,OAAaL,EAEjB,MAAO,CACHsN,MAAOsiB,EAAkBlqB,KACzB6H,YAAaqiB,EAAkB5xB,YAC/BgyB,gBAAiBJ,EAAkBjyB,gBACnCsyB,aAAc5vB,EACd6vB,WAAYhzB,GAAUA,EAAOgzB,YAG9B,OAAIhzB,EACA,CACHoQ,MAAOpQ,EAAOoQ,MACdC,YAAarQ,EAAOqQ,YACpByiB,gBAAiB9yB,EAAOizB,cAAgBjzB,EAAOizB,aAAapW,IAC5DmW,WAAYhzB,GAAUA,EAAOgzB,YAG1B,IAOXz0B,MAAQmE,GACG,IAAI+vB,EAAmD/vB,EAAK1C,OAAQ0C,EAAK/C,eAAeQ,gB,gJClEhG,MAAM+yB,EAAsBC,IAC/B,IAAIC,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAC1C,MAAM,IAAEhpB,EAAF,MAAOrB,GAAWoB,QAElBkpB,EAAc,CAACC,EAASC,KADD,IAAMC,IAEqBD,EAFHxqB,EAE5B,oBAAsBuqB,GAFkBvqB,EAAMyqB,GAAwDzqB,EAAM,8CAA+C0qB,EAAQC,KAAK,KAI7LT,IACAA,EAAkBA,EAAgBpwB,IAAK8wB,GAAWA,EAAOhe,gBAE7D,MAAMie,EAAmBC,IACbZ,GAAmBA,EAAgBruB,QAAU,IAAuE,IAAlEquB,EAAgBa,UAAWH,GAAWA,IAAWE,GAIzGE,EAAoBC,IAClBd,EAAQE,YAAYY,IACpBd,EAAQE,YAAYY,GAAYC,SAChCf,EAAQE,YAAYY,GAAYC,QAAQC,WACxChB,EAAQE,YAAYY,GAAYC,QAAQC,UAAUxwB,KAClDwvB,EAAQE,YAAYF,EAAQE,YAAYY,GAAYC,QAAQC,UAAUxwB,IAAMwvB,EAAQE,YAAYY,KAIlGG,EAA8B,CAACC,EAAqBC,KAUlD,GADAnB,EAAQE,YAAYgB,GAAuBC,GACtCnB,EAAQE,YAAYgB,GAAqBH,QAC1C,MAAM,IAAIl1B,MAAM,oBAAsBq1B,EAAsB,mCAEhElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUI,eAAiBF,EACxElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUxwB,KAC3DwvB,EAAQE,YAAYF,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUxwB,IAAM0wB,IAKjG,IAGAR,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,cACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DpP,EAAGngB,SAAY,8DAKf2wB,MAAO,mBACPC,GAAI,CAAC,CAACrG,KAAK,yBAA2B4G,KAAK,yFAA0FC,MAAO,IAE5IP,KAAK,EACLC,GAAI,6BACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iFAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,mBACPC,GAAI,CAAC,CAACrG,KAAK,yBAA2B4G,KAAK,yFAA0FC,MAAO,IAE5IP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sFAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,IAErNP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,IAE9NP,KAAK,EACLC,GAAI,6BACJC,EAAG,2BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,yGAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,IAE9NP,KAAK,EACLC,GAAI,6BACJC,EAAG,gCACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,8GAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,2EAA4EC,MAAO,IAEhHP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAE7fP,KAAK,EACLC,GAAI,6BACJC,EAAG,6BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,yFAA0FC,MAAO,IAElWP,KAAK,EACLC,GAAI,6BACJC,EAAG,+BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,6GAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,uBAAyB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,IAEhPP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,qBAAuB4G,KAAK,kEAAmEC,MAAO,IAEjHP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAEvHP,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,sGAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,oFAIRlB,EAAgB,gBAAkBV,EAAQC,QAAR,WAAgC,CAC9DpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,oBAAsB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,wEAAyEC,MAAO,GAAG,CAAC7G,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,IAE9VP,KAAK,EACLC,GAAI,6BACJC,EAAG,aACHC,EAAG,aAEHC,IAAK,GAGLC,GAAI,mFAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,wEAAyEC,MAAO,IAE7bP,KAAK,EACLC,GAAI,6BACJC,EAAG,2BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,QAAU4G,KAAK,4EAA6EC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,6BACHC,EAAG,6BAEHC,IAAK,GAGLC,GAAI,mHAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,mBACHC,EAAG,8BAEHC,IAAK,GAGLC,GAAI,0GAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDpP,EAAGngB,SAAY,qEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,iGAAkGC,MAAO,GAAG,CAAC7G,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,qGAAsGC,MAAO,GAAG,CAAC7G,KAAK,oBAAsB4G,KAAK,yFAA0FC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,yEAA0EC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,GAAG,CAAC7G,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAE5/CP,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,+EAIRlB,EAAgB,UAAYV,EAAQC,QAAR,KAA0B,CAClDpP,EAAGngB,SAAY,qEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,wFAAyFC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,iGAAkGC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,kFAAmFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,iFAAkFC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAEt/CP,KAAK,EACLC,GAAI,6BACJC,EAAG,OACHC,EAAG,OAEHC,IAAK,GAGLC,GAAI,uEAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,IAEjfP,KAAK,EACLC,GAAI,6BACJC,EAAG,YACHC,EAAG,OAEHC,IAAK,GAGLC,GAAI,4EAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,qBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,8GAA+GC,MAAO,IAEtJP,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DpP,EAAGngB,SAAY,sEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,wFAAyFC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,6GAA8GC,MAAO,IAEv3BP,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,+EAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,kBAAoB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,wEAAyEC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAEn4BP,KAAK,EACLC,GAAI,6BACJC,EAAG,2BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,uCAAyCV,EAAQC,QAAQ,qCAAuC,CAC5GpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,IAE3VP,KAAK,EACLC,GAAI,6BACJC,EAAG,oCACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,wGAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,IAE3XP,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,qBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,yFAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,IAEtOP,KAAK,EACLC,GAAI,6BACJC,EAAG,yBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,6FAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,GAAG,CAAC7G,KAAK,+BAAiC4G,KAAK,wFAAyFC,MAAO,IAEnXP,KAAK,EACLC,GAAI,6BACJC,EAAG,mBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,gFAAiFC,MAAO,IAE7lBP,KAAK,EACLC,GAAI,6BACJC,EAAG,8BACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,0GAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,yBAA2B4G,KAAK,yHAA0HC,MAAO,GAAG,CAAC7G,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,IAEriBP,KAAK,EACLC,GAAI,6BACJC,EAAG,8BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,kGAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,wFAAyFC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,IAEvnBP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,sFAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,6BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,iGAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,wEAAyEC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAEt+BP,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,gCACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,oGAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,gBAEHC,IAAK,GAGLC,GAAI,yFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,oBAEHC,IAAK,GAGLC,GAAI,iGAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,kCAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FpP,EAAGngB,SAAY,kCAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,uGAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FpP,EAAGngB,SAAY,kCAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,uGAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,eACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,eACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,mGAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,kCAKf2wB,MAAO,qBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,mBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,aACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,0FAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,qBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,4GAA6GC,MAAO,IAEpJP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DpP,EAAGngB,SAAY,kCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,gBAAgB,eAAe,cAC/DR,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,sBAEHC,IAAK,GAELK,cAAe,+BACfJ,GAAI,0FAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,oFAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,mBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,cACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,gFAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDpP,EAAGngB,SAAY,qEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,qBAAuB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,OAAS4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAEnZP,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,2EAA4EC,MAAO,IAErNP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,mFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,kCAKf2wB,MAAO,qBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,sGAAuGC,MAAO,IAE9IP,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAElLP,KAAK,EACLC,GAAI,6BACJC,EAAG,MACHC,EAAG,MAEHC,IAAK,GAGLC,GAAI,qEAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,IAEtOP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,gBAEHC,IAAK,GAGLC,GAAI,yFAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,aAAe4G,KAAK,8EAA+EC,MAAO,IAErHP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,6FAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,gFAAiFC,MAAO,IAE/mBP,KAAK,EACLC,GAAI,6BACJC,EAAG,qBACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,iGAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,4EAA6EC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,sFAAuFC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,gFAAiFC,MAAO,IAE/1BP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,8BAAgC4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,4EAA6EC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,sFAAuFC,MAAO,IAErmBP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,uGAAwGC,MAAO,IAE/PP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,iBAEHC,IAAK,GAGLC,GAAI,2FAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,iGAAkGC,MAAO,IAE5IP,KAAK,EACLC,GAAI,6BACJC,EAAG,sBACHC,EAAG,iBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,QAAU4G,KAAK,kFAAmFC,MAAO,IAEpHP,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,wGAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,8BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,4GAIRlB,EAAgB,wCAA0CV,EAAQC,QAAQ,sCAAwC,CAC9GpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,qCACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,gHAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,qEAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,qBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,mGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,qBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,4GAA6GC,MAAO,IAEpJP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,4GAA6GC,MAAO,IAE7QP,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,wBAEHC,IAAK,GAGLC,GAAI,yGAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,sBAAwB4G,KAAK,gGAAiGC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,yEAA0EC,MAAO,IAElQP,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,gGAAiGC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,yEAA0EC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,kFAAmFC,MAAO,GAAG,CAAC7G,KAAK,aAAe4G,KAAK,8EAA+EC,MAAO,IAEzlBP,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,0FAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,eACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,6FAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,cAAgB4G,KAAK,gFAAiFC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,oBAAsB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,8GAA+GC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,sIAAuIC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,kIAAmIC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,sIAAuIC,MAAO,IAE1/BP,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,0BAEHC,IAAK,GAGLC,GAAI,6GAIRlB,EAAgB,aAAeV,EAAQC,QAAQ,WAAa,CACxDpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,UACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,wFAIRlB,EAAgB,aAAeV,EAAQC,QAAQ,WAAa,CACxDpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,UACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,wFAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,cACHC,EAAG,cAEHC,IAAK,GAGLC,GAAI,qFAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,mBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,aAAeV,EAAQC,QAAR,QAA6B,CACxDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,gBAAgB,eAAe,cACtDR,KAAK,EACLC,GAAI,6BACJC,EAAG,UACHC,EAAG,qBAEHC,IAAK,GAELK,cAAe,8BACfJ,GAAI,wFAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,0BAA4B4G,KAAK,yFAA0FC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAE1bP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,iBAEHC,IAAK,GAGLC,GAAI,2FAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDpP,EAAGngB,SAAY,8DAKf2wB,MAAO,mBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,6EAA8EC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,MACHC,EAAG,MAEHC,IAAK,GAGLC,GAAI,qEAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DpP,EAAGngB,SAAY,8DAKf2wB,MAAO,mBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,6EAA8EC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,MAEHC,IAAK,GAGLC,GAAI,0EAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,aACHC,EAAG,aAEHC,IAAK,GAGLC,GAAI,mFAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,wHAAyHC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,qGAAsGC,MAAO,GAAG,CAAC7G,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAEjvBP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,qFAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,aAAe4G,KAAK,8EAA+EC,MAAO,IAEjOP,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,0FAIJ,CACI,MAAMd,EAAa,yFACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,iGACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,+FACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,gGACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wFACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wFACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8FACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,0FACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,sGACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,GAAIJ,EAAgB,aAAa,CAG7BO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,qGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,8GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,6GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qCAAqC,CAGrDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qCAAqC,CAGrDO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qCAAqC,CAGrDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,yHACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,4GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,sGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,OAAO,CAGvBO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,uGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,uBAAuB,CAGvCO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,4GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,4GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,gGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,gGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,sIACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,sIACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,kIACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,8GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,OAAO,CAGvBO,EAF4B,6EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,6EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,qGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,wHACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,0EACXgB,EAAQ,UAM/B,MAAO51B,GACL8zB,EAAY,IAAK9zB,GAGrB,OAAO2zB,I,yVC5tGX,MAAMkC,EASJjyB,YACEmS,EACArV,EACAo1B,GAUK,KAAAhyB,YAAc,IA/BD,EACpBrB,EACA/B,IAEA,UAAU+B,EAAV,mBAAyB/B,EAAYiC,UAArC,kBAAwDjC,EAAYS,WA4BlEqB,CAAc,GAAD,OACRyB,KAAKwb,YAAcxb,KAAK8xB,aADhB,YACgC9xB,KAAK9C,UADrC,YAET8C,KAAK6xB,yBAAyBE,cAEhC/xB,KAAKvD,aAEF,KAAAqD,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,cAhBtCC,KAAKvD,YAAcA,EACnBuD,KAAKgyB,gBAAkBlgB,EACvB9R,KAAK6xB,yBAA2BA,EAChC7xB,KAAK9C,UAAYT,EAAYS,UAC7B8C,KAAKwb,WAAa1J,EAAS0J,WAC3Bxb,KAAK8xB,aAAehgB,EAASggB,cAgB3B,MAAOG,EAQXtyB,YACEjB,EACA8c,EACA0W,EACAC,EACAC,EACAl1B,GASK,KAAA2C,YAAc,cAChBG,KAAKwb,WADW,YACGxb,KAAKtB,UADR,YACqBsB,KAAK9C,UAD1B,qCAEd,KAAA4C,mBAAqB,IAAM,mCAC3B,KAAAC,cAAgB,IAAiB,UAVtCC,KAAKtB,UAAYA,EACjBsB,KAAKmyB,cAAgBA,EACrBnyB,KAAKwb,WAAaA,EAClBxb,KAAKkyB,cAAgBA,EACrBlyB,KAAKoyB,SAAWA,EAChBpyB,KAAK9C,UAAYA,GAAa,GAU3B,MAAMqJ,EACXpL,IAEA,GAAIA,GAAaA,EAAUc,eAAgB,CACrCd,EAAUc,eAAeC,QAAUf,EAAUc,eAAeC,MAAMN,MACpET,EAAUc,eAAeC,MAAMN,IAAM,QAEvC,MAAMo2B,EAAkB,IAAIK,uBAAqBl3B,EAAUc,gBAEvDd,EAAUmB,QAAUnB,EAAUmB,OAAOg2B,kBACvCN,EAAgBxW,WAAargB,EAAUmB,OAAOg2B,iBAEhD,MAAMT,EAA2BxiB,2BAAyBC,cACxDnU,GAEF,OAAO,IAAI82B,GACR92B,EAAUc,eAAeQ,YAAYiC,YACpCszB,EAAgBxW,YAAc,GAChCwW,EACA,IAAIJ,EACFI,EACA72B,EAAUc,eAAeQ,YACzBo1B,GAEF3zB,mDAAyC/C,IAI7C,MAAM,IAAII,MAAM,uDAKX6E,eAAeoG,EACpB3L,EACAwF,GAEA,MAAMkyB,QAA4BC,gCAChC33B,EAAMs3B,cACN9xB,GAEIoyB,EAAwC,GAY9C,GAXAF,EAAoBjnB,QAASonB,SACGtzB,IAA1BszB,EAAal1B,UACfi1B,EAAkB/mB,KAChB,IAAIC,mBACF+mB,EAAal1B,SACb6C,EAAIpE,eAAeQ,YACnB5B,EAAMu3B,cAKTK,EACH,MAAsB,GAExB,MAAM5qB,QAAiB+D,0BAAgB6mB,EAAmBpyB,GAI1D,OAFAA,EAAIsyB,mBAAqB,KAAM,EAExB/vB,QAAQgwB,IAAI/qB,EAASxI,IAAIe,UAC9B,MAAMyyB,QAAkBpsB,YACtB,CAAEjG,cAAeH,EAAKkB,oBAAqB,IAC3CzE,EAAQg2B,eAAet1B,SACvB3C,EAAM6D,UACN7D,EAAMqC,WAKR,OADAJ,EAAQi2B,kBAAoBF,EACrB/1B,KAIImD,+CAA2B,CACxCE,OAAgCqG,EAChC3L,MAAO0L,K,qGC7HTjE,+BAAqB,CACjBC,SAAU,6CACVC,eA1BkBpC,MAAOqC,EAAwCwR,EAAqBtR,KACtF,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMyO,EAAaxT,MAAMC,QAAQsT,GAAQA,EAAK,GAAKA,EACnD,IAAI+e,EAAuC,GAG3C,GAAI9e,GAAcA,EAAW4J,WAAapd,MAAMC,QAAQuT,EAAW4J,YAAc5J,EAAW4J,UAAU1c,OAAS,EAC3G,IACI4xB,QAA6B7rB,YAAiC+M,EAAW4J,UAAWnb,GACtF,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,+DAAgEA,GAKtGuB,OAAOC,UAAUtB,UAAUqC,SAAS5E,IAAe+vB,SAAU,CACzD3e,OAAQJ,EAAW7M,GACnBkN,YAAaL,EAAWM,QAAUN,EAAWM,QAAQhN,WAAa,GAClEK,SAAUmrB,EACVtjB,QAASwE,EAAWO,YAAcP,EAAWO,YAAYjN,WAAa,OAQ9EpE,cArCmBhD,e,+YCJhB,MAAM8yB,EAQVvzB,YAAYwzB,EAAqBC,EAAoBC,EAAqBC,EAAkBC,EAA6BC,GASlH,KAAA3zB,YAAc,gDACd,KAAAC,mBAAqB,IAAM,uCAC3B,KAAAC,cAAgB,IAAiB,OAVpCC,KAAK7D,UAAYg3B,EACjBnzB,KAAKsW,SAAW8c,EAChBpzB,KAAKuW,UAAY8c,EACjBrzB,KAAKyzB,OAASH,EACdtzB,KAAKma,kBAAoBoZ,EACzBvzB,KAAK0zB,eAAiBF,GAYtB,MAAMG,EAA8Cx4B,GAChD,IAAI+3B,EAMR9yB,eAAemE,EAAgBC,GAClC,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAQnDpE,eAAewzB,EAClB/4B,EACAwF,GAAmB,MAGnB,IAAKxF,EAAMsB,UACP,OAGJ,MAAOtB,EAAM44B,QAA2B,IAAjB54B,EAAM44B,SAAkB54B,EAAMyb,UAAazb,EAAM0b,WAAe1b,EAAM64B,gBAEzF,MAAO,GAGX,MAAM3Z,EAAyB,CAC3B7D,SAAUrb,EAAMyb,SAChBH,UAAWtb,EAAM0b,UACjByD,OAAQnf,EAAM44B,OACdtZ,kBAAmBtf,EAAMsf,mBAAqB,GAG7C7V,QAAqBC,EAAgBlE,GACrCwzB,EAAoCvvB,SAAH,UAAGA,EAActD,KAAK6D,GAAsB,oEAAdA,EAAKC,aAAnC,aAAG,EAA6GC,UAEtJ,OAAO+uB,YAA8B,CAACtzB,cAAeH,GAAM,CAAC6d,WAAY,CAACrjB,EAAMsB,WAAY43B,WAAYha,EAAYia,sBAAqB,EAAOC,iCAAiC,IAC/K/xB,KAAK9B,UACF,MAAM8zB,EAA8BC,YAA+B9zB,EAAK+zB,aAAN,EAAMA,EAA6BC,yCACrG,OAAO9Z,YAA+B,CAAC/Z,cAAeH,GAAM0Z,GAC3D7X,KAAK9B,UAEF,MAAMk0B,EAAW,IAAIC,IACrBC,EAAOlpB,QAAQmpB,IACRA,EAAMC,qBACLJ,EAAS5G,IAAI+G,EAAMC,oBAAqBD,KAIhD,IAAIE,EAA+D,GAEnE,GAAGd,EAAmC,CAClC,MAAMe,EAAiBJ,EAAOn1B,IAAIo1B,GAASA,EAAMltB,WAChDotB,QAgFjBv0B,eACIy0B,EACAx0B,GACA,GAAkC,KAA9Bw0B,aAAA,EAAAA,EAAmBzzB,cAAuChC,IAAtBy1B,EAChC,OAGJ,MAAMC,EAA0B,GAQpC,OAPKD,WAAmBx1B,IAAIa,IACnB,QAAUd,IAAPc,EACC,OAAO40B,EAAcppB,KAAKxL,KAKhC60B,YAA+B,CAAEv0B,cAAeH,GAAOy0B,EAAe,GACxE5yB,KAAM8yB,IAEH,GAAIA,KAA4BA,aAAkCz5B,OAC9D,OAAOy5B,IAKd1vB,MAAOC,IACJlF,EAAI8B,MAAM,8HACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,+HACO,KA7G8BsvB,CAAgCL,EAAgBv0B,GAGrF,MAAM60B,EAA0BV,EAAOn1B,IAAIo1B,IAAQ,MAC/C,MAAMU,EAAsB,UAAGR,SAAH,aAAG,EAAyB3zB,KAAKo0B,GAA0BA,EAAuB7tB,YAAcktB,EAAMltB,WAClI,OA6BhBnH,eACIi1B,EACAnB,EACAI,EACAj0B,EAAqBi1B,GACjB,IAAKD,IAAoBA,EAAgBE,cACrC,MAAO,CAAEC,yBAAqBp2B,GAGlC,OAAOq2B,YAAmB,CAAEj1B,cAAeH,GAAMg1B,EAAgBE,eAC5DrzB,KAAMwzB,IACH,MAAMC,EAAyC,GAC5CzB,GACAI,GACKJ,EAA4B5oB,QAAQsH,IAC4G,IAAD,EAAxIA,EAAQgjB,kBAAoBtB,EAASuB,IAAIjjB,EAAQgjB,mBAAqBhjB,EAAQgjB,mBAAqBP,EAAgBX,qBAClHiB,EAAmBjqB,KAAK,CAACoqB,kBAAiB,UAACljB,EAAQmjB,gCAAT,aAAC,EAAkCD,sBAK7F,MAAME,EAAoC,CACtCC,gBAAiBZ,EACjBa,mBAAoBP,GAGxB,OAAID,GAAWA,aAAiBn6B,MAIzB,CAAEi6B,oBAAqBQ,EAAcG,4BAA6BjC,EAA6BkC,2BAA4Bd,GAHvH,CAAEE,oBAAqBQ,EAAcK,WAAYX,EAAOS,4BAA6BjC,EAA6BkC,2BAA6Bd,KAK7JhwB,MAAOC,IACJlF,EAAI8B,MAAM,2EACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,2EACO,CAAE6vB,oBAAqB,MAlEvBc,CAA0B7B,EAAOP,EAA6BI,EAASj0B,EAAK80B,KAGvF,OAAOvyB,QAAQgwB,IAAIsC,KAEtB5vB,MAAOC,IACJlF,EAAI8B,MAAM,8EACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAd,8EACO,OAGdL,MAAOC,IACJlF,EAAI8B,MAAM,8HACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAd,8HACO,KA6FA1F,+CAA2B,CACtCC,GAAI,gFACJC,OAAyDyzB,EACzD/4B,MAAO84B,K,gNC5MJ,MAAM1oB,EAAbtL,cACW,KAAAE,YAAc,0BACd,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,QAUrCK,eAAe8K,EAAuBrQ,EAA4BwF,GAErE,IAAKxF,EACD,MAAM,IAAIU,MAAM,gEAGpB,GAAG8E,EAAIpE,eAAeyF,KAAKC,gBAAiB,CACxC,MAAMwJ,QAAkBC,YAAmB,CAAE5K,cAAeH,EAAKkB,oBAAqB,IAAM,MAE5F,KAAG4J,GAAaA,EAAU/J,OAAS,GA8B/B,OADAf,EAAI8B,MAAM,sEACY,GA9BY,CAClC,MAAMkJ,EAAoC,GAS1C,GARGF,EAAU,GAAGK,mBACZL,EAAU,GAAGK,kBAAkBF,QAASG,IACjCA,EAAiBlO,WAChB8N,EAAcK,KAAK,IAAIC,mBAAiBF,EAAiBlO,UAAW8C,EAAIpE,eAAeQ,YAAayB,mDAAyCmC,OAKtJgL,EAAcjK,OAAS,EACtB,OAAOwK,0BAAgBP,EAAehL,GACjC6B,KAAK2F,GACEA,GAGsB,IAG7BvC,MAAMC,IAIH,MAHAlF,EAAI8B,MAAMoD,GACVlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,2EACM,IAAIpK,MAAM,6EAGxB8E,EAAI8B,MAAM,qCAQtB,OADA9B,EAAI8B,MAAM,8DACY,GAGXlC,+CAA2B,CACtCC,GAAI,kEACJC,OAAgC+K,EAChCrQ,MAxDiBM,GACV,IAAI8P,K,+7BCUR,MAAMsrB,EAKT52B,YAAY9E,GAML,KAAAgF,YAAc,IAAMtB,wBAAc,yBAAD,OAA0ByB,KAAKw2B,iBAAL,WAA4Bx2B,KAAKw2B,kBAAqB,IAAMx2B,KAAKvD,aAC5H,KAAAqD,mBAAqB,6BACrB,KAAAC,cAAgB,IAAiB,OAPpCC,KAAKy2B,mBAAqB57B,EAAM47B,mBAChCz2B,KAAKw2B,iBAAmB37B,EAAM27B,iBAC9Bx2B,KAAKvD,YAAc5B,EAAM4B,aAQ1B,MAAMi6B,EAAwCv7B,IAEjD,MAAM,mBAAEs7B,EAAF,iBAAsBD,GAAqBr7B,EAAUmB,OACrDq6B,EAAiC,CACnCC,kBAAmBH,EACnBD,iBAAkBA,EAClB/5B,YAAatB,EAAUc,eAAeQ,aAG1C,OAAO,IAAI85B,EAA+BI,IAMvCv2B,eAAey2B,EAClBh8B,EACAwF,GAGA,IAAKxF,EAED,MADAwF,EAAIoF,UAAUC,UAAU,IAAInK,MAAM,2EAC5B,IAAIA,MAAM,0EAGpB,MAAM,mBAAEk7B,EAAF,iBAAsBD,GAAqB37B,EAC3Ci8B,QAAsCC,YAAiB12B,GAAKiF,MAAOC,IAErE,MADAlF,EAAIoF,UAAUC,UAAUH,GAClBA,IAGV,GACIyxB,8BAAoBF,IACpBE,8BAAoBF,EAAclK,eAClCoK,8BAAoBF,EAAclK,aAAa3Y,MAG/C,MADA5T,EAAIoF,UAAUC,UAAU,IAAInK,MAAM,yDAC5B,IAAIA,MAAM,wDAGpB,IAAKu7B,EAAclK,aAAa3Y,KAAK6J,YAAcgZ,EAAclK,aAAa3Y,KAAK6J,UAAU1c,OAEzF,MADAf,EAAIoF,UAAUC,UAAU,IAAInK,MAAM,oDAC5B,IAAIA,MAAM,mDAGpB,MAAM0c,EAC2C,iBAAtC5X,EAAIpE,eAAe6c,IAAIb,WACxB,IAAIgW,IAAI5tB,EAAIpE,eAAe6c,IAAIb,YAC/B5X,EAAIpE,eAAe6c,IAAIb,WAC3Bgf,EAASvK,IAAI5lB,OAAQ,oBAAsBmR,EAAWgf,OAEtDC,EAAyB,OAC3B,cAAe,2EACfC,eAAgBF,EAChBG,YAAa,UAAGH,EAAH,kBAA2BA,EACxCI,oBAAoB,EACpBC,yBAAyB,IACpBb,GAAsB,CAAEc,oBAAoB,IAC7Cf,GAAoB,CAAEgB,aAAchB,IAPb,IAQ3BiB,cAAe,IAGnB,OAAOC,YACH,CAAEl3B,cAAeH,EAAKwe,YAAa,OACnCiY,EAAclK,aAAa3Y,KAAK5M,GAChC6vB,EACA,IAECh1B,KAAKy1B,IACF,IAAKA,EAAuBC,gBAAkBD,EAAuBE,kBACjE,MAAM,IAAIt8B,MACN,+IAGR,OAAOo8B,IAEVryB,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,2CACdJ,IAIHtF,+CAA2B,CACtCC,GAAI,+EACJC,OAAyC02B,EACzCh8B,MAAO67B,K,sUCrHJ,MAAMoB,EAMTn4B,YAAYxD,EAAmBuC,EAAmB2F,EAAiCvG,GAO5E,KAAA+B,YAAc,8BACd,KAAAC,mBAAqB,IAAM,QAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKqE,gBAAkBA,EACvBrE,KAAKlC,WAAaA,GAAc,IAYjC,MAAMi6B,EAA4C58B,IACrD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAI27B,GACN37B,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,GAEJ,MAAM,IAAI7D,MAAM,gGASjB6E,eAAe43B,EAClBn9B,EACAwF,GAEA,IAAI43B,EAAuC,GAC3C,GAAG53B,EAAIpE,gBAAkBoE,EAAIpE,eAAeyF,MAAQrB,EAAIpE,eAAeyF,KAAKC,gBAC5E,CACI,MAAMu2B,EAAgB,IAAItyB,mBAAiBvF,EAAIpE,eAAeQ,aACxD07B,QAAiBC,sBAAYF,EAAe73B,GAC/C83B,GAAYA,EAASE,sBAEpBF,EAASE,qBAAqB/sB,QAASgtB,IACnC,IAAIC,EAA6B,CAACC,cAAcF,EAAWG,oBAAqBx6B,WAAYk6B,EAASO,eACrGT,EAAYvsB,KAAK6sB,KAK7B,OAAO31B,QAAQC,UAEVX,KAAK,KACF,MAAM8C,EAA2CnK,EAAMwJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOwG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IAEV9C,KAA2BiD,IACxB,MAAMwzB,EAAkC,CAAEpxB,WAAYlH,EAAIpE,eAAeQ,YAAYiC,UAAWvB,WAAYkD,EAAIpE,eAAeQ,YAAYS,WAErI8H,EAAsEG,EAC5E,OAAIH,EAEO4zB,YACH,CAAEp4B,cAAeH,EAAKkB,oBAAqB,IAC3Co3B,EACA,CAAC3zB,EAAcxH,UACf,IAAI+qB,KACJ1tB,EAAMiD,YAAc,KACpBm6B,GACA,GAEF/1B,KAAK5B,IACH,GAAGA,GAAYA,EAASc,OAAS,EAAG,CAChC,MAAMy3B,EAAev4B,EAAS,GAQ9B,OAJI8e,KAAU/e,EAAIpE,eAAeQ,YAAY4iB,yBAA0B,YACnEwZ,EAAaC,wBAA0BD,EAAaE,eAGjDF,EAEX,MAAM,IAAIt9B,MAAM,4FAIjB,OAEV+J,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,4DACM,IAAIpK,MAAM,8DAIb0E,+CAA2B,CACtCC,GAAI,2EACJC,OAAsC63B,EACtCn9B,MAAOk9B,K;;;;;AC/GJ,MAAM5wB,EAAmC/G,MAAO0U,EAAuBnS,KAC1E,QAA6CvD,IAAzCuD,EAAc1G,eAAe8F,QAC7B,MAAM,IAAIxG,MAAM,wDAGpB,MAAMy9B,EAA2C,GAGjD,IAAK,IAAI/Z,EAAI,EAAGA,EAAInK,EAAU1T,OAAQ6d,IAAK,CACvC,MAAM8B,EAAqBjM,EAAUmK,GAEjC8B,EAASxjB,WAETy7B,EAAgBttB,KACZnL,YAAa,CAAEC,cAAemC,GAAiBoe,EAASxjB,UAAWoF,EAAc1G,eAAe8F,QAAQvE,UAAU0E,KAC9GnH,IAEI,MAAM+H,EAAcC,EAAgChI,GAMpD,OAHA+H,EAAY+1B,aAAe9X,EAASkY,MAAQlY,EAASkY,MAAMzxB,WAAa,GACxE1E,EAAYo2B,gBAAkBnY,EAAStjB,SAAWsjB,EAAStjB,SAAS+J,WAAa,GAE1E1E,GAEXq2B,IACI,MAAM,IAAI59B,MAAJ,oDAAuDwlB,EAASxjB,UAAhE,cAA+E47B,OAQzG,OAAOv2B,QAAQgwB,IAAIoG,IAQVj2B,EAAmCL,IAC5C,MAAM7D,EAAW6D,EAAclF,UAAY,GAE3C,MAAO,CAEHrB,UAAWuG,EAAcsa,gBAAkBta,EAAcsa,gBAAgBxV,WAAa3I,EAAS2I,WAC/FvE,WAAYpE,EAAWA,EAAS2I,WAAa,GAC7C4xB,YAAa12B,EAAcoC,MAAQpC,EAActF,aAAe,GAChEy7B,aAAcn2B,EAAcu2B,MAAQv2B,EAAcu2B,MAAMzxB,WAAa,GACrE6xB,iBAAkB,GAClBC,mBAAoB,GACpBC,kBAAmB,GACnBC,oBAAqB,GACrBN,gBAAiB,GACjBO,gBAAiB,M,0MCpDnB,MAAOC,UAAyCvL,IAAtDxuB,c,oBACW,KAAAG,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKlB,UACJkB,KAAKutB,UAAYvtB,KAAKutB,SAASnsB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBwP,SAAW/Q,KAAKuB,oBAAoBwP,QAAQC,SAAWhR,KAAKuB,oBAAoBwP,QAAQC,QAAQ5P,OAAS,EAExJ,UAEA,eAsIJnB,+CAA2B,CACtCE,OArEJC,eACIvF,EACAwF,GAEA,IAAIs5B,EACJ,MAAMC,EAA6C,GAKnD,GAJAA,EAAoB/d,QAAU,CAAEtU,UAAWlH,EAAIpE,eAAeQ,YAAYiC,UAAWvB,UAAWkD,EAAIpE,eAAeQ,YAAYS,WAC/H08B,EAAoBC,WAAah/B,EAAM0yB,SACvCqM,EAAoB7d,mBAAoB,EAEjB,aAAnBlhB,EAAMiE,UAA4BuB,EAAIpE,eAAeC,OAASmE,EAAIpE,eAAeC,MAAMsf,WAAa,CACpG,IAAI3gB,EAAMiX,SAUN,MAAM,IAAIvW,MACN,wFAVJq+B,EAAoB9d,YAAc,CAACjhB,EAAMiX,UAAY,GACrD6nB,EAAU3d,YACN,CACIxb,cAAeH,EACfkB,oBAAqB1G,EAAM0G,qBAE/Bq4B,OAOL,CACH,IAAI/+B,EAAMuzB,WAUN,MAAM,IAAI7yB,MACN,uFAVJq+B,EAAoBE,gBAAkBj/B,EAAMuzB,WAC5CuL,EAAU3d,YACN,CACIxb,cAAeH,EACfkB,oBAAqB1G,EAAM0G,qBAE/Bq4B,GASZ,MAEMhgB,SAF6B+f,GAESt6B,IAAIkzB,IAC5C,MAAM/wB,EAAc3E,kCAChB01B,EACAlyB,EAAIpE,eAAeQ,aAOvB,OAJI+E,IACA+wB,EAAoBx1B,gBAAkByE,GAGlC+wB,IAQZ,OAJK7b,UAASC,WACVtW,EAAI05B,OAAO,IAAI7X,qBAAsB,CAAE8X,kBAAmBL,EAAQ3+B,SAAS6Y,OAAS,EAAGiO,cAAejnB,EAAM0yB,WAGzG,CACH1lB,SAAU+R,EACV/F,MAAO8lB,EAAQ3+B,SAAS6Y,OAAS,IAMrChZ,MAjHiBmE,IACjB,MAAMnE,EAAQ8zB,YAA0B3vB,EAAM06B,GAY9C,GATI7+B,EAAM0G,oBAAoB/F,QAAUwD,EAAK1C,SACzCzB,EAAM0G,oBAAoB/F,OAAOC,IAAMuD,EAAK1C,OAAOiS,cAAgB,GAInE1T,EAAM0G,oBAAoB/F,QAAUwD,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMJ,OAC3FjB,EAAM0G,oBAAoB/F,OAAOK,MAAQmD,EAAK/C,eAAeC,MAAMJ,MAGnEkD,EAAK1C,OAAQ29B,YAAcp/B,EAAM0G,oBAAoBwP,cAAyD3R,IAA9CvE,EAAM0G,oBAAoBwP,QAAQC,QAAuB,CAEzH,IAAIkpB,EAAkB,GACnBl7B,EAAK1C,OAAQ69B,uBACZD,EAAWE,gBAAcC,QACnBr7B,EAAK1C,OAAQg+B,kBACnBJ,EAAWE,gBAAczP,KACnB3rB,EAAK1C,OAAQi+B,mBACnBL,EAAWE,gBAAcI,MACnBx7B,EAAK1C,OAAQm+B,sBACnBP,EAAWE,gBAAcM,eAG1BR,IACCr/B,EAAM0G,oBAAoBwP,QAAU,CAAEC,QAAU,CAC5C,CACI/H,WAAYixB,MAQ5B,OAFAr/B,EAAM0G,oBAAoBsS,OAAQ,EAE3BhZ,M,gGCnFX,0BA0BwB,KAAA8/B,WAAyB,GAKzB,KAAAC,iBAAsC,GAUtC,KAAAC,eAAyB,EAKzB,KAAAC,oBAA8B,GAK9B,KAAAC,8BAAwC,EAKxC,KAAAC,uBAAiC,EA0EzD,OAhIctoB,sBAAWuoB,YAAA,uBAAoB,KAA/B,WACN,OAAOj7B,KAAKk7B,uBADyB,gCAK/BxoB,sBAAWuoB,YAAA,aAAU,KAArB,WACN,OAAOj7B,KAAKm7B,aADe,gCAKrBzoB,sBAAWuoB,YAAA,iBAAc,KAAzB,WACN,OAAOj7B,KAAKo7B,iBADmB,gCAKzB1oB,sBAAWuoB,YAAA,kBAAe,KAA1B,WACN,OAAOj7B,KAAKq7B,kBADoB,gCAK1B3oB,sBAAWuoB,YAAA,aAAU,KAArB,WACN,OAAOj7B,KAAKs7B,aADe,gCAKrB5oB,sBAAWuoB,YAAA,YAAS,KAApB,WACN,OAAOj7B,KAAK26B,YADc,gCAKpBjoB,sBAAWuoB,YAAA,kBAAe,KAA1B,WACN,OAAOj7B,KAAK46B,kBADoB,gCAK1BloB,sBAAWuoB,YAAA,oBAAiB,KAA5B,WACN,OAAOj7B,KAAKu7B,oBADsB,gCAK5B7oB,sBAAWuoB,YAAA,gBAAa,KAAxB,WACN,OAAOj7B,KAAK66B,gBADkB,gCAKxBnoB,sBAAWuoB,YAAA,qBAAkB,KAA7B,WACN,OAAOj7B,KAAK86B,qBADuB,gCAK7BpoB,sBAAWuoB,YAAA,8BAA2B,KAAtC,WACN,OAAOj7B,KAAK+6B,8BADgC,gCAKtCroB,sBAAWuoB,YAAA,wBAAqB,KAAhC,WACN,OAAOj7B,KAAKg7B,wBAD0B,gCAKnCC,uCAAP,SAAkCO,GAC9Bx7B,KAAKk7B,sBAAwBM,GAI1BP,6BAAP,SAAwBQ,GACpBz7B,KAAKm7B,YAAcM,GAIhBR,kCAAP,SAA6BS,GACzB17B,KAAKq7B,iBAAmBK,GAIrBT,iCAAP,SAA4BU,GACxB37B,KAAKo7B,gBAAkBO,GAIpBV,6BAAP,SAAwBW,GACpB57B,KAAKs7B,YAAcM,GAIhBX,2BAAP,SAAsBY,GAClB77B,KAAK26B,WAAa36B,KAAK26B,WAAWtxB,QAAO,SAAAyyB,GAAY,OAAAA,EAASz0B,KAAOw0B,MAIlEZ,iCAAP,SAA4BY,GACxB77B,KAAK46B,iBAAmB56B,KAAK46B,iBAAiBvxB,QAAO,SAAAyyB,GAAY,OAAAA,EAASz0B,KAAOw0B,MAI9EZ,wBAAP,SAAmBa,GACf97B,KAAK26B,WAAUoB,0BAAID,GAAa97B,KAAK26B,aAIlCM,8BAAP,SAAyBa,GACrB97B,KAAK46B,iBAAgBmB,0BAAID,GAAa97B,KAAK26B,aAIxCM,oCAAP,SAA+Be,GAC3Bh8B,KAAKu7B,mBAAqBS,GAIvBf,gCAAP,SAA2BgB,GACvBj8B,KAAK66B,eAAiBoB,GAInBhB,qCAAP,SAAgCiB,GAC5Bl8B,KAAK86B,oBAAsBoB,GAIxBjB,+CAAP,SAA0CkB,GACtCn8B,KAAK+6B,6BAA+BoB,GAIjClB,wCAAP,SAAmCgB,GAC/Bj8B,KAAKg7B,uBAAyBiB,GA/HtBhlB,sBAAXE,IAAW,wFACFF,sBAATC,IAAS,kIAIED,sBAAXE,IAAW,8EACFF,sBAATC,IAAS,wHAIED,sBAAXE,IAAW,kFACFF,sBAATC,IAAS,4HAIED,sBAAXE,IAAW,mFACFF,sBAATC,IAAS,6HAIED,sBAAXE,IAAW,8EACFF,sBAATC,IAAS,wHAIED,sBAAXE,IAAW,4EACFF,sBAATC,IAAS,uHAIED,sBAAXE,IAAW,kFACFF,sBAATC,IAAS,6HAIED,sBAAXE,IAAW,qFACFF,sBAATC,IAAS,+HAIED,sBAAXE,IAAW,iFACFF,sBAATC,IAAS,2HAIED,sBAAXE,IAAW,sFACFF,sBAATC,IAAS,gIAIED,sBAAXE,IAAW,gGACFF,sBAATC,IAAS,yIAIED,sBAAXE,IAAW,yFACFF,sBAATC,IAAS,mIAKVD,sBADC9W,IACD,iMAKA8W,sBADC9W,IACD,uLAKA8W,sBADC9W,IACD,4LAKA8W,sBADC9W,IACD,2LAKA8W,sBADC9W,IACD,uLAKA8W,sBADC9W,IACD,qLAKA8W,sBADC9W,IACD,2LAKA8W,sBADC9W,IACD,kLAKA8W,sBADC9W,IACD,wLAKA8W,sBADC9W,IACD,8LAKA8W,sBADC9W,IACD,0LAKA8W,sBADC9W,IACD,+LAKA8W,sBADC9W,IACD,0MAKA8W,sBADC9W,IACD,kMAGJ,EAlIA,I,gPCLO,SAASi8B,IAA2H,IAA9GzR,EAA8G,uDAA/F,GAAI0R,EAA2F,uDAArF,IAAKC,EAAgF,uDAA3B,GAAIC,EAAuB,uCAEvI,MAAMC,EAAiBlQ,UAAiBmQ,kBAAoBnQ,UAAiBmQ,iBAAiBC,uBAAyBJ,EAAyBI,sBAAwB/R,EAAM4R,GAAmB5R,EAUjM,OAAI2R,EAAyBK,mBAAqBrQ,UAAiBmQ,kBAAoBnQ,UAAiBmQ,iBAAiBE,kBAG9G//B,mBAAmB4/B,EAAcrqB,cAAcyqB,QAAQ,eAAgB,KAAKC,OAAOD,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,KAElIjS,EACFxY,cACAyqB,QAAQ,iBAAkB,KAC1BC,OACAD,QAAQ,OAAQP,GCZlB,SAASS,EAAgBhrB,EAA6BH,EAA2B2qB,GACpF,IAAKxqB,IAAaA,EAAShN,KAEvB,MAAO,GAEX,MAAMi4B,EAAeX,EAAatqB,EAAShN,UAAM1F,EAAWk9B,EAA0BxqB,EAASU,iBAQ/F,OAPKV,EAASgB,gBAA8C,IAA5BhB,EAASgB,eAG9BhB,EAASgB,iBAChBhB,EAASkrB,KAAOlrB,EAASkrB,MAAT,UAAoBF,EAAgBnrB,EAAYG,EAASgB,gBAAiBnB,EAAa2qB,GAAvF,YAAoHS,IAFpIjrB,EAASkrB,KAAOlrB,EAASkrB,MAAT,WAAqBD,GAKlCjrB,EAASkrB,MAAQ,GAQrB,SAAShqB,EAAelB,EAA6BzR,EAAsBsR,GAC9E,IAAKG,EAASiB,KAAO1S,GAAOsR,EAAa,CACrC,IAAKG,EAASkrB,KAAM,CAChB,MAAMV,EAAsDj8B,EAAIpE,eAAgBghC,sCAA4B58B,GAAK,GACjHyR,EAASkrB,KAAOF,EAAgBhrB,EAAUH,EAAa2qB,GAE3DxqB,EAASiB,IAAMmqB,qBAAW,WAAY78B,EAAK,CAAEyR,aAEjD,OAAOA,EAASiB,I,mmBC/Bb,SAASmc,EAAkBpyB,EAAwBuD,EAAqByR,GAC3E,MAAMzN,EAAe,OAAQvH,GAAR,IAAiBU,SAAUV,EAAQkgB,iBAAmBlgB,EAAQU,WAEnF,OAAO2/B,EAAsB94B,EAAgBS,MAAQ,GAAIT,EAAgB7G,SAAU6C,EAAKyR,GAQrF,SAASqrB,EAAsBxS,EAAc9rB,EAAkBwB,EAAqByR,GACvF,OAAOorB,qBAAW,UAAW78B,EAAK,CAC9BvD,QAAS,CAACgI,KAAM6lB,GAAQ,GAAIntB,SAAUqB,GACtCiT,e,mVCZD,MAAMsrB,EAITz9B,YAAYlD,EAAmC4gC,GAKxC,KAAAx9B,YAAc,IAAMtB,wBAAc,uCAAD,OAAwCyB,KAAKq9B,mBAAqBr9B,KAAKvD,aACxG,KAAAqD,mBAAqB,IAAM,sCAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKvD,YAAcA,GAYpB,MAAM6gC,EAA8CniC,IACvD,MAAM,eAAEc,GAAmBd,EAC3B,OAAKc,EAAeyF,KAAKC,gBAIlB,IAAIy7B,EAAqCjiC,EAAUc,eAAeQ,cAQtE2D,eAAem9B,EAAsC1iC,EAA6CwF,GAErG,IAAMA,EAAIpE,eAAeyF,KAAKC,gBAC1B,MAAuC,GAG3C,MAAM67B,EAAgF,CAAEC,EAASp9B,GAAMq9B,EAAY7iC,EAAOwF,GAAMs9B,EAAat9B,IAC7I,OAAOuC,QAAQgwB,IAAI4K,GACdt7B,KAAMnH,GACAA,GAAUA,EAAOqG,QAAS,GAAKrG,EAAO,GAAGsrB,WAErCuX,YAAsD,CAAEp9B,cAAeH,GAAOtF,EAAO,GAAGsM,GAAItM,EAAO,GAAGsrB,WAAatrB,EAAO,GAAG8iC,UAAY,IAC3I37B,KAAK47B,GACKA,GAEVx4B,MAAMvJ,IAGH,MAFAsE,EAAIoF,UAAUC,UAAU3J,GACxBsE,EAAIoF,UAAUE,MAAd,mDACM,IAAIpK,MAAM,qDAGe,IAE1C+J,MAAMvJ,IACoC,KAInDqE,eAAeq9B,EAASp9B,GAGpB,aAFwBssB,YAAatsB,IAEpB4T,KAGrB7T,eAAes9B,EAAY7iC,EAA6CwF,GACpE,MAAM09B,EAAmB,IAAIC,sBAAoBnjC,EAAM4B,aACvD,OAAOwhC,qBAAWF,EAAkB19B,GAGxCD,eAAeu9B,EAAat9B,GACxB,OAAOqhB,YAA6B,CAAClhB,cAAeH,EAAKkB,oBAAqB,KAOnEtB,+CAAwC,CACnDC,GAAI,+EACJC,OAA8Bo9B,EAC9B1iC,MAAqDyiC,K,6+UCzElD,MAAMY,EAITv+B,YAAYw+B,EAAkBd,GAKvB,KAAAx9B,YAAc,IAAM,aACpB,KAAAC,mBAAqB,IAAM,aAC3B,KAAAC,cAAgB,IAAiB,OANpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKm+B,QAAUA,GAYhB,MAAMC,EACTjjC,IAEI,GAAIA,EAAUc,eAAeyF,KAAKC,gBAClC,MAAM,IAAIpG,MAAM,4DAGpB,MAAM,QAAE4iC,GAAYhjC,EAAU+S,MAAQ,CAAEiwB,aAAS/+B,GAEjD,IAAK++B,EACD,MAAM,IAAI5iC,MAAM,0DAGpB,OAAO,IAAI2iC,EAAuBC,IAG/B/9B,eAAei+B,EAClBxjC,EACAwF,EACAi+B,GAEA,MAAM,kBAAEjB,EAAF,QAAqBc,GAAYtjC,EACjCq9B,EAAgB,IAAItyB,mBAAiBvF,EAAIpE,eAAeQ,YAAa4gC,GACrElF,QAAiBC,kBAAYF,EAAe73B,GAElD,IAAK83B,EACD,MAAM,IAAI58B,MAAM,+BAGpB,MAAMgjC,EAAcD,E,yWAAiB,CAAD,GAAMnG,GAAYgG,GAChDK,QAAwBC,YAAY,CAAEj+B,cAAeH,GAAOk+B,GAElE,IAAKC,EACD,MAAM,IAAIjjC,MAAM,+BAKpB,OAFA8E,EAAI05B,OAAO2E,YAAgBF,EAAgB9F,eAAgB8F,GAEpDA,EAAgBG,WAAa,GAGjC,SAASC,EAAkBzG,EAAoBgG,GAGlD,OAFAhG,EAASwG,UAAY,IAAKxG,EAASwG,WAAa,IAChDxG,EAASwG,UAAUjzB,KAAKyyB,GACjBhG,EAaIl4B,2CAAsC,CACjDC,GAAI,wDACJC,OAZGC,eAAgCvF,EAAgCwF,GACnE,OAAOg+B,EAA6BxjC,EAAOwF,EAAKu+B,IAYhD/jC,MAA4DujC,EAC5DtkB,WAAW,I,wBC5FR,MAAM+kB,EAGTl/B,YAAYm/B,GAIL,KAAAj/B,YAAc,0BACd,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0B,KAAOo9B,GA4DL7+B,2CAAgD,CAC3DC,GAAI,kEACJC,OAjCGC,eAAmCvF,EAAiCwF,GACvE,MAAM,KAAEqB,GAAS7G,EAEjB,OAAOkkC,YAAgB,CAAEv+B,cAAeH,IACnC6B,KAAM88B,IAEHt9B,EAAKu9B,kBAAoBD,EAAgBC,kBAElCC,YAA+B,CAAE1+B,cAAeH,GAAMqB,GACxDQ,KAAK48B,GACKA,GAEVx5B,MAAM,KAEH,MADAjF,EAAIoF,UAAUE,MAAM,wEACd,IAAIpK,MAAM,4EAG3B+J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,uEACd,IAAIpK,MAAM,0EAcxBV,MApD0C,CAACM,EAAiD2jC,KAC5F,MAAM,eAAE7iC,GAAmBd,EAG3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,0BAGpB,OAAO,IAAIsjC,EAAyBC,M,ykBCfjC,MAAMK,EAOTx/B,YAAY2U,EAAgBC,EAAqB6qB,EAAuBC,EAAoCC,GAQrG,KAAAz/B,YAAc,cAASG,KAAKsU,OAAd,YAAwBtU,KAAKuU,aAC3C,KAAAzU,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAKsU,OAASA,EACdtU,KAAKuU,YAAcA,EACnBvU,KAAKo/B,aAAeA,EACpBp/B,KAAKq/B,gBAAkBA,EACvBr/B,KAAKs/B,eAAiBA,GAyFfr/B,2CAA2B,CACtCC,GAAI,qDACJC,OAhFGC,eAA8BvF,EAAsBwF,GACvD,MAAM,YAAE5D,GAAgB4D,EAAIpE,eACtBgc,EAAU,UAAMxb,EAAY8iC,QAAlB,2BAA4C1kC,EAAMyZ,OAAlD,+BACVkrB,EAAsC,CACxCC,QAAS,CACLC,IAAKjjC,EAAYijC,IACjB,eAAgB,qBAIpBF,EAAeC,SAAWp/B,EAAIpE,eAAeyF,KAAKsE,QAClDw5B,EAAeC,QAAQE,cAAvB,mBAAmDt/B,EAAIpE,eAAeyF,KAAKsE,QAG3EnL,EAAMwkC,iBAAmBxkC,EAAMwkC,gBAAgBj+B,SAC/CvG,EAAMwkC,gBAAkBxkC,EAAMwkC,gBAAgBhgC,IAAKugC,IAQ/C,GALAA,EAAmB,eAAiB,gEAGpCA,EAAmB,qBAAuB,WAEtCA,EAAmBC,uBAGnBD,EAAmBC,qBAAqB,eACpC,sEAICD,EAAmBC,qBAAqBC,QAEzCF,EAAmBC,qBAAqBC,MAAQ,OAGhDF,EAAmBC,qBAAqBE,gBAGxCH,EAAmBC,qBAAqBE,cAAc,eAClD,gEAGJllC,EAAMykC,gBAAgB,CACtB,MAAM,MAAEU,EAAF,yBAASC,EAA2B,GAApC,OAAwCC,EAAxC,KAAgDpd,EAAhD,MAAsDC,EAAtD,QAA6DiF,GAAYntB,EAAMykC,eACrFM,EAAmBC,qBAAnB,OACOD,EAAmBC,sBAD1B,IAEIG,QACA/c,QAASgd,EAAyB/2B,cAClCi3B,SAAUD,EACVpd,OACAC,QACAqd,IAAKpY,IAKjB,OAAO4X,KAIf,MAAMS,EAAW,GACbjB,aAAcvkC,EAAMukC,aACpB7qB,YAAa1Z,EAAM0Z,aAAe,MAC9B1Z,EAAMwkC,iBAAmB,CAAEA,gBAAiBxkC,EAAMwkC,kBAI1D,OAAOiB,8BAAgCroB,EAAY,OAAQooB,EAAab,GAAgBt9B,KAAM5B,IAC1F,GAAIA,EAASxF,QAAU,KAAOwF,EAASxF,OAAS,KAAOwF,EAAS4N,KAC5D,OAAO5N,EAAS4N,KACb,GAAI5N,EAAS4N,KAChB,MAAM5N,EAAS4N,KAEnB,MAAM,IAAI3S,MAAM,qEC3GjB,SAASglC,EAAqBpI,EAAoBgG,GAGrD,OAFAhG,EAASwG,UAAYxG,EAASwG,WAAa,GAC3CxG,EAASwG,UAAY,IAAIxG,EAASwG,UAAUt1B,OAAOm3B,GAAOA,EAAIhjC,WAAa2gC,EAAQ3gC,WAC5E26B,EAaIl4B,2CAAsC,CACjDC,GAAI,2DACJC,OAZGC,eAAmCvF,EAAgCwF,GACtE,OAAOg+B,EAA6BxjC,EAAOwF,EAAKkgC,IAYhD1lC,MAA4DujC,EAC5DtkB,WAAW,ICnBR,MAAM2mB,EAGT9gC,YAAYm/B,GAIL,KAAAj/B,YAAc,6BACd,KAAAC,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0B,KAAOo9B,GA+CL7+B,2CAAgD,CAC3DC,GAAI,qEACJC,OApBGC,eAAsCvF,EAAoCwF,GAC7E,MAAM,KAAEqB,GAAS7G,EAEjB,OAAO6lC,YAAY,CAAElgC,cAAeH,GAAMqB,GACrC4D,MAAMC,IAGH,MAFAoB,QAAQC,IAAIrB,GACZlF,EAAIoF,UAAUE,MAAM,2EACd,IAAIpK,MAAM,8EAcxBV,MAvC6C,CAACM,EAAiD2jC,KAC/F,MAAM,eAAE7iC,GAAmBd,EAG3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,0BAGpB,OAAO,IAAIklC,EAA4B3B,MCvBpC,MAAM6B,EAGThhC,YAAYm/B,GAIL,KAAAj/B,YAAc,2BACd,KAAAC,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0B,KAAOo9B,GAwCL7+B,2CAAgD,CAC3DC,GAAI,mEACJC,OApBGC,eAAoCvF,EAAkCwF,GACzE,MAAM,KAAEqB,GAAS7G,EAEjB,OAAO4jC,YAAY,CAAEj+B,cAAeH,GAAMqB,GACrCQ,KAAK0+B,GACKA,GAEVt7B,MAAM,KAEH,MADAjF,EAAIoF,UAAUE,MAAM,yEACd,IAAIpK,MAAM,4EAYxBV,MAhC2C,CAACM,EAAiD2jC,KAC7F,MAAM,eAAE7iC,GAAmBd,EAG3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,0BAGpB,OAAO,IAAIolC,EAA0B7B,MCvBlC,MAAMpuB,EAKT/Q,YAAYkhC,EAAkB9lC,EAAW+lC,GAMlC,KAAAjhC,YAAc,sBAAiBG,KAAK6gC,UACpC,KAAA/gC,mBAAqB,cAASE,KAAK8gC,iBACnC,KAAA/gC,cAAgB,IAAiB,OAPpCC,KAAK6gC,SAAWA,EAChB7gC,KAAK8gC,gBAAkBA,EACvB9gC,KAAKjF,OAASA,GAcfqF,eAAeuQ,EAAoB9V,EAAwBwF,GAC9D,OAAOxF,EAAME,O,gKCTFkF,2CAA2B,CACtCC,GAAI,uEACJC,OAAgCsB,eAChC5G,MAfqCM,IACrC,GACIA,EAAUc,gBACVd,EAAUc,eAAeyF,MACzBvG,EAAUc,eAAeyF,KAAKC,gBAE9B,OAAOo/B,YAAmC,GAAI,MAGlD,MAAM,IAAIxlC,MAAM,wE,wICHb,MAAMylC,GAUTrhC,YACIkyB,EACAzD,EACA1vB,EACAuiC,EACA/jC,EACAk1B,GAUG,KAAAvyB,YAAc,+CACd,KAAAC,mBAAqB,IAAM,sCAC3B,KAAAC,cAAgB,IAAiB,OAVpCC,KAAK6xB,yBAA2BA,EAChC7xB,KAAKouB,WAAaA,GAAc,GAChCpuB,KAAKtB,UAAYA,EACjBsB,KAAKihC,mBAAqBA,GAAsB,GAChDjhC,KAAK9C,UAAYA,GAAa,EAC9B8C,KAAKkhC,uBAAyB9O,GAuDvBnyB,4CAA2B,CACtCC,GAAI,oFACJC,OArBG,SACHtF,EACAwF,GAEA,OCzDGD,eACHvF,EACAwF,EACA8gC,GAGA,IAAKtmC,IAAUA,EAAMomC,mBAEjB,OADA5gC,EAAI8B,MAAM,gEAC6B,GAG3C,IAAKtH,EAAMomC,mBAAmB7/B,OAE1B,OADAf,EAAI8B,MAAM,wEAC6B,GAE3C,MAAM,YAAE1F,GAAgB4D,EAAIpE,eAE5B,IAAIw2B,EAAwC,GAE5C,MAAM2O,QAAsBD,IAW5B,GAVKC,EAGD3O,EAAoB2O,EAAc/hC,IAC7BvC,GACU,IAAI6O,IAAiB7O,EAAQU,SAAUf,EAAa5B,EAAMqmC,wBAA0B,IAAIG,MAJvGhhC,EAAIoF,UAAUF,MAAM,2EASpBktB,EAAkBrxB,OAAQ,CAE1B,MAAO,CACHmxB,0BAFwB3mB,YAAgB6mB,EAAmBpyB,GAG3D4gC,mBAAoBpmC,EAAMomC,oBAG9B,MAAO,CACH1O,oBAAqB,GACrB0O,mBAAoBpmC,EAAMomC,oBDkB3BK,CACHzmC,EACAwF,EAEA,IACWkhC,YACH,CAAE/gC,cAAeH,EAAKkB,oBAAqB1G,EAAMg3B,yBAAyBtiB,qBAC1E1U,EAAM6D,WAAa,EACnB7D,EAAMqC,UACNrC,EAAMuzB,WACNvzB,EAAMomC,sBAQlBpmC,MA/CsDM,IACtD,MAAM8lC,EAAqB9lC,EAAUmB,QAAUnB,EAAUmB,OAAO2kC,mBAC1DpP,EAA2BxiB,IAAyBC,cAAcnU,GACxE,IAAKuF,MAAMC,QAAQsgC,GACf,OAAO,IAAID,GAAoCnP,GAGnD,MAAMz2B,EAAkBC,YAAgBF,GAClC+B,EAAY/B,EAAUc,eAAeQ,YAAYS,UACjDgkC,EAAyBhjC,YAAyC/C,GAExE,OAAO,IAAI6lC,GACPnP,EACAz2B,EAAgBE,EAChBF,EAAgBsD,UACOuiC,EACvB/jC,EACAgkC,IA+BJpnB,WAAW,I,sCEtFR,MAAM5K,GAcTvP,YACI6hC,EACA90B,EACAC,EACAE,EACAE,EACAE,EACAb,EACA4B,EACAY,EACA6yB,EACAlzB,EACAG,GAgBG,KAAApL,kBAAoB,KAAM,EAC1B,KAAAxD,mBAAqB,IAAM,OAC3B,KAAAD,YAAc,cAASG,KAAK0hC,WAAd,YAA4B1hC,KAAK2hC,WAAjC,YAA+C3hC,KAAK4hC,aAApD,YAAoE5hC,KAAK6hC,WAhB1F7hC,KAAK0hC,WAAaF,EAClBxhC,KAAKyM,MAAQC,EACb1M,KAAK5C,YAAcuP,EACnB3M,KAAK4M,iBAAmBC,EACxB7M,KAAK8M,gBAAkBC,EACvB/M,KAAKgN,gBAAkBC,EACvBjN,KAAKmN,OAASf,EACdpM,KAAK8hC,MAAQ9zB,EACbhO,KAAK+hC,aAAenzB,EACpB5O,KAAK2hC,WAAaF,EAClBzhC,KAAK4hC,aAAerzB,EACpBvO,KAAK6hC,UAAYnzB,GAmFzB,SAASzC,GAAUG,GACf,MAAMiB,EAA2B,GAEjC,OAAKjB,GAILA,EAAOd,QAAQzG,IACX,GAAIA,GAAQA,EAAKyI,OAASzI,EAAKyI,MAAMC,KAAM,CAEvC,MAAMC,EAAmB,CACrBD,KAAM1I,EAAKyI,MAAMC,KACjBE,QAAS5I,EAAKyI,MAAMG,QACpBf,MAAO7H,EAAKyI,MAAMZ,MAClBgB,MAAO7I,EAAKyI,MAAMI,MAClBC,OAAQ9I,EAAKyI,MAAMK,QAGvBN,EAAgB3B,KAAK8B,MAItBH,GAlBIA,EA0Ef,SAASvB,GAAejH,EAAsBkH,GAC1C,MAAMC,EAAqBC,GAAUpH,EAAKqH,OAAOC,QAAQC,QAEnDC,GArDaC,EAqDezH,EAAKqH,OAAOK,MArDTC,EAqDgBT,EApDhDO,EAIDE,EAKE,GAAN,OAAUA,EAAV,YAAsBF,EAAtB,MAJU,IAAN,OAAWA,EAAX,MAJO,IAFf,IAAuBA,EAAkBE,EAsDrC,MAAO,CACHC,MAAO5H,EAAKqH,OAAOC,QAAQO,MAC3BtP,YAAayH,EAAKqH,OAAOC,QAAQQ,YACjCC,iBAAkB/H,EAAKqH,OAAOC,QAAQU,iBACtCC,gBAAiBjI,EAAKqH,OAAOC,QAAQY,gBACrCC,gBAAiBnI,EAAKqH,OAAOC,QAAQc,gBACrCC,KAAMb,EACNc,OAAQnB,GAOhB,SAASoB,GAAYjS,GAEjB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeuQ,SAAWrR,EAAUc,eAAeuQ,SAAW,GAqG7GvM,4CAA2B,CACtCC,GAAI,qDACJC,OApQGC,eAA2BvF,EAAkBwF,GAChDA,EAAI8B,MAAJ,sBAAyBtH,EAAM4R,QAG/B,MAAM,YAAEhQ,GAAgB4D,EAAIpE,eAGtBlB,EAAe,CACjB0R,MAAO5R,EAAM4R,MACbrP,YAAavC,EAAMuC,YACnBwP,iBAAkB/R,EAAM+R,iBACxBE,gBAAiBjS,EAAMiS,gBACvBE,gBAAiBnS,EAAMmS,gBACvB80B,MAP2C,GAQ3CH,WAAY9mC,EAAM8mC,YAGtB,GAAI9mC,GAASA,EAAMinC,OAASjnC,EAAMinC,MAAM1gC,OAAQ,CAE5C,IAAIyG,EAA4B,GAChC,GAAIhN,EAAMknC,cAAgBlnC,EAAMknC,aAAa3gC,OAAQ,CACjD,MAAM4gC,EAAannC,EAAMknC,aAAa1iC,IAAIwF,GAAQ,IAAIqL,MAAcrL,EAAKrH,SAAUf,IACnFoL,QAAkCo6B,aAAYD,EAAY3hC,GAI9D,MAAM6hC,EAAoD,GAC1Dr6B,EAASyD,QAAQzG,IACTA,IACAq9B,EAAW,GAAD,OAAIr9B,EAAKrH,WAAcqH,KAIzC,IAAK,MAAMs9B,KAAYtnC,EAAMinC,WAoBM1iC,IAnBjB+iC,EAmBMh1B,OAlBhBpS,EAAO+mC,MAAMp2B,KAAKy2B,GAElBA,EAAS72B,QAAQzG,IACTq9B,EAAWr9B,EAAKrH,WAChBzC,EAAO+mC,MAAMp2B,KAAKw2B,EAAWr9B,EAAKrH,aAOtD,OAAOzC,GAuNPF,MAzEqBM,IACrB,MAAM0S,EAtFV,SAAyB1S,GACrB,IAAI0S,EACC1S,GAAcA,EAAUc,gBAAmBd,EAAUc,eAAe6R,SAAkB3S,EAAUc,eAAe6R,SAASC,KAAzC,KACpF,KACK5S,GACAA,EAAUc,gBACVd,EAAUc,eAAe6R,UACzB3S,EAAUc,eAAe6R,SAASC,MAClC5S,EAAUc,eAAe6R,SAASC,KAAK5B,SACvChR,EAAUc,eAAe6R,SAASC,KAAK5B,QAAQ6B,OAC/C7S,EAAUc,eAAe6R,SAASC,KAAK5B,QAAQO,OAC/CvR,EAAUc,eAAe6R,SAASC,KAAKE,KAC1C,CACE,KACK9S,GACAA,EAAU+S,MACV/S,EAAU+S,KAAKH,MACf5S,EAAU+S,KAAKH,KAAK5B,SACpBhR,EAAU+S,KAAKH,KAAK5B,QAAQ6B,OAC5B7S,EAAU+S,KAAKH,KAAK5B,QAAQO,OAC5BvR,EAAU+S,KAAKH,KAAKE,KAGrB,MADAtH,QAAQpB,MAAM,kDACR,IAAIhK,MAAM,kDAGpBsS,EAAW1S,EAAU+S,KAAKH,KAE9B,OAAOF,EA0D0Bu0B,CAAgBjnC,GAC3CiT,EAA2C,GACjD,IAAIC,EAA8B,GAElC,MAAMC,EAA2BrC,GAAU4B,EAAS1B,QAAQC,QAEtDmC,EAhCV,SAAyBpT,GACrB,IAAKA,IAAcA,EAAUmB,SAAWnB,EAAUmB,OAAOiS,aACrD,OAAO,GAGX,MAAMxT,EAASY,OAAOR,EAAUmB,OAAOiS,cACvC,OAAIC,MAAMzT,GACC,GAGJA,EAsBc0T,CAAgBtT,GAC/BuT,EAjBV,SAAsBvT,GAClB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMwS,UAC3G/S,OAAOR,EAAUc,eAAeC,MAAMwS,WACtC,EAcYC,CAAaxT,GAGzByT,EAA+B,GAC/BC,EAAMH,EAAYH,EACxB,IAAK,IAAIO,EAAQJ,EAAWI,EAAQjB,EAAS1B,QAAQ6B,MAAM5M,QAAU0N,EAAQD,EAAKC,IAAS,CACvF,MAAMjK,EAAOgJ,EAAS1B,QAAQ6B,MAAMc,GACpC,GAAa,SAATjK,EAAKkK,KAA4B,CACjC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOC,UAAYtH,EAAKqH,OAAOC,QAAQO,MAAO,CACpE/F,QAAQpB,MAAR,gEAAuEsI,EAASI,MAChF,SAIJ,GAA6B,IAAvBI,EAAYjN,OAAe,CAC7B,MAAM4N,EAAa,IAAIX,GACvBD,EAAU1C,KAAKsD,GACfX,EAAc,GAIlBD,EAAU1C,KAAKI,GAAejH,EAAMuI,GAAYjS,KAGpD,GAAa,YAAT0J,EAAKkK,KAA+B,CACpC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOrN,SAAU,CACvC8H,QAAQpB,MAAR,gDAAuDsI,EAASI,MAChE,SAIJ,MAAMgB,EAA4B,CAC9BzR,SAAUqH,EAAKqH,OAAOrN,SACtB1B,UAAW0H,EAAKqH,OAAOhP,WAAa,KAGxCmR,EAAY3C,KAAKuD,GACjBL,EAAalD,KAAKuD,IAS1B,OAJ6B,IAAvBZ,EAAYjN,QACdgN,EAAU1C,KAAK2C,GAGZ,IAAIa,GACPrB,EAASI,IACTJ,EAAS1B,QAAQO,MACjBmB,EAAS1B,QAAQQ,YACjBkB,EAAS1B,QAAQU,iBACjBgB,EAAS1B,QAAQY,gBACjBc,EAAS1B,QAAQc,gBACjBqB,EACAF,EACAQ,EACAf,EAAS1B,QAAQ6B,MAAM5M,OACvBmN,EACAG,M,uCCzTD,MAAM2zB,GAMT1iC,YAAYxD,EAAmBuC,EAAmB2F,EAAiCnH,GAO5E,KAAA2C,YAAc,uCACd,KAAAC,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAK9C,UAAYA,GAAa,EAC9B8C,KAAKqE,gBAAkBA,GA0EhBpE,4CAA2B,CACtCC,GAAI,qFACJC,OAjDGC,eACHvF,EACAwF,GAEA,OAAOiiC,cAAYz/B,UACdX,KAAK,KACF,MAAM8C,EAA2CnK,EAAMwJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,wBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAG7E,OAAmCwG,mBAAmBD,EAAsB5E,GAGhF,OAAO2E,IAEV9C,KAAKiD,IACF,MAAMH,EAAsEG,EAE5E,OAAIH,EACOu9B,YAAuB,CAAE/hC,cAAeH,EAAKkB,oBAAqB,IAAMyD,EAAcxH,SAAU3C,EAAM6D,UAAW7D,EAAMqC,WAAWgF,KAAK5B,GACnIA,EAASjB,IACXmjC,IACGA,EAAcC,IAAMlmC,YAAiBimC,EAAcC,IAAKpiC,EAAIpE,eAAeQ,aAC3E+lC,EAAcE,QAAUF,EAAcE,QAAUF,EAAcE,QAAU19B,EAAcF,KAC/E09B,KAMhB,KAEVl9B,MAAMC,IAIH,MAHAlF,EAAI8B,MAAMoD,GACVlF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAd,qEACM,IAAIpK,MAAM,wEAYxBV,MAhEAM,IAEA,MAAMgB,EAAYH,YAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIkmC,IAAuClmC,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAEnG,MAAM,IAAInD,MAAM,2GCjBT0E,4CAA2B,CACtCC,GAAI,8DACJC,OAAmCsB,eACnC5G,MAtBiBM,IACjB,GACIA,EAAUc,gBACVd,EAAUc,eAAeyF,MACzBvG,EAAUc,eAAeyF,KAAKC,gBAE9B,OAAOghC,YAAoC,CACvCnnC,OAAQ,CACJC,IAAK,IACLI,KAAM,IAId,MAGJ,MAAM,IAAIN,MAAM,wE,uCCRb,MAAMqnC,GAGTjjC,YAAY4B,GAIL,KAAA1B,YAAc,mDAA8C6uB,0BAAgB1uB,KAAKuB,sBACjF,KAAAzB,mBAAqB,IAAM,uCAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKuB,oBAAsBA,GAyCpBtB,4CAA2B,CACtCC,GAAI,gFACJC,OAfGC,eAA+CvF,EAA6C2J,GAAuB,QACtH,GAAKA,SAAD,UAACA,EAASvI,sBAAV,iBAAC,EAAyByF,YAA1B,QAAC,EAA+BC,gBAChC,MAAM,IAAIpG,MAAM,2DAGpB,MAAMyjC,QAAwBD,YAAgB,CAAEv+B,cAAegE,IAC/D,IAAKw6B,EACD,MAAM,IAAIzjC,MAAM,wEAGpB,OAAOsnC,YAAqB,CAAEriC,cAAegE,EAASjD,oBAAqB1G,EAAM0G,qBAAuBy9B,EAAgBC,oBAMxHpkC,MA/BAM,IAAyE,QAEzE,GAAKA,SAAD,UAACA,EAAWc,sBAAZ,iBAAC,EAA2ByF,YAA5B,QAAC,EAAiCC,gBAClC,MAAM,IAAIpG,MAAM,2DAGpB,MAAMgG,EAA4C8N,IAAyBC,cAAcnU,GAAWoU,oBACpG,OAAO,IAAIqzB,GAAqCrhC,M,0BC3B7C,MAAMqwB,GASTjyB,YAAYmS,EAAgCrV,EAAmCo1B,GASxE,KAAAhyB,YAAc,IAAMtB,YAAc,GAAD,OAAIyB,KAAKwb,YAAcxb,KAAK8xB,aAA5B,YAA4C9xB,KAAK9C,UAAjD,YAA8D8C,KAAK6xB,yBAAyBE,cAAgB/xB,KAAKvD,aAClJ,KAAAqD,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,cAVpCC,KAAKvD,YAAcA,EACnBuD,KAAKgyB,gBAAkBlgB,EACvB9R,KAAK6xB,yBAA2BA,EAChC7xB,KAAK9C,UAAYT,EAAYS,UAC7B8C,KAAKwb,WAAa1J,EAAS0J,WAC3Bxb,KAAK8xB,aAAehgB,EAASggB,cAmEtB7xB,4CAA2B,CACtCC,GAAI,qEACJC,OAzCGC,eAA2CvF,EAAgCwF,GAC9E,MAAM,YAAE5D,GAAgB4D,EAAIpE,eAC5B,IAAIuf,EAAa3gB,EAAMm3B,gBAAgBxW,WACvC,GAAI3gB,EAAMm3B,gBAAgBF,eAAiBtW,EAAY,CACnD,MAAM1J,QAAiBgxB,kBAAmBjoC,EAAMm3B,gBAAiB3xB,GACjE,IAAKyR,EAED,OADAzR,EAAI8B,MAAM,yDACc,GAE5BqZ,EAAa1J,EAAStU,SAG1B,MAAM6N,QAAsB03B,YACxB,CAAEviC,cAAeH,EAAKkB,oBAAqB1G,EAAMg3B,yBAAyBtiB,sBACzE9S,EAAYiC,UACb7D,EAAMqC,UACNse,GAAc,GAChBtZ,KAAKsd,GACIA,EAAqBngB,IACvBvC,GACU,IAAIoT,KAAapT,EAAQU,SAAUf,KAKtD,OAAI4O,EAAcjK,OAAS,QACOgP,aAAY/E,EAAehL,GAEjC,IAc5BxF,MA3D6CM,IAC7C,GAAIA,GAAaA,EAAUc,eAAgB,CACvC,MAAM+1B,EAAkB,IAAIK,uBAAqBl3B,EAAUc,gBACrD41B,EAA2BxiB,IAAyBC,cAAcnU,GACxE,OAAO,IAAIy2B,GACPI,EACA72B,EAAUc,eAAeQ,YACzBo1B,GAIR,MAAM,IAAIt2B,MAAM,yD,uCCxCb,MAAMynC,GAGTrjC,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,YAAc,sCAAuCyB,KAAKvD,aAC9E,KAAAqD,mBAAqB,IAAM,sCAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKvD,YAAcA,GA+CZwD,4CAA2B,CACtCC,GAAI,gFACJC,OAlCGC,eAAmDvF,EAAyCwF,GAE/F,IAAKxF,EACD,MAAM,IAAIU,MAAM,6EAEpB,MAAM0nC,QAAkBtW,aAAatsB,GACrC,GAAG4iC,EAAUC,eAET,OADA7iC,EAAI8B,MAAM,+DACkB,GAEhC,MAAM8R,EAAOgvB,EAAUhvB,KACjBpM,QAAiBs7B,mBAA4B,IAAIC,2BAA2B/iC,GAElF,IAAI4T,IAASA,EAAK6J,YAAcjW,GAAgC,IAApBA,EAASzG,OAGjD,OAFAuF,QAAQC,IAAI,6GACZvG,EAAI8B,MAAM,6GACkB,GAGhC,MAAMkf,EAAcpN,EAAK6J,UAAUze,IAAIkhB,GAAKA,EAAEU,QAAU,IAExD,OAAOoiB,aAA4B,CAAE7iC,cAAeH,EAAKkB,oBAAqB,GAAIsd,YAAa,OAAS5K,EAAK5M,GAAIga,GAAe,MAC3Hnf,KAAKnH,GACKA,GACRuK,MAAOC,IAIN,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,+DACM,IAAIpK,MAAM,kEAOxBV,MA1CiBM,GACV,IAAI6nC,GAAiC7nC,EAAUc,eAAeQ,e,aClBlE,MAAM6mC,GAgBT3jC,YACIxD,EACAwH,EACAE,GAQG,KAAAhE,YAAc,cAASG,KAAK7D,UAAd,YAA2B6D,KAAK2D,UAC9C,KAAA7D,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,cARpCC,KAAK7D,UAAYA,EACjB6D,KAAK2D,SAAWA,EAChB3D,KAAK6D,gBAAkBA,GCjBxB,MAAM0/B,GAIT5jC,YAAYmS,EAAgC+f,EAAoD30B,GAMzF,KAAA2C,YAAc,cAASG,KAAKgyB,gBAAgBnyB,cAA9B,YAA+CG,KAAK9C,UAApD,YAAiE8C,KAAK6xB,yBAAyBE,cAC7G,KAAAjyB,mBAAqB,IAAM,iBAC3B,KAAAwD,kBAAoB,KAAM,EAP7BtD,KAAK6xB,yBAA2BA,EAChC7xB,KAAK9C,UAAYA,GAAa,EAC9B8C,KAAKgyB,gBAAkBlgB,GAWxB,MAAM0xB,GAAiCroC,IAC1C,GAAIA,GAAaA,EAAUc,eAAgB,CACvC,MAAMiB,EAAY/B,EAAUmB,OAASX,OAAOR,EAAUmB,OAAOY,WAAa,EACpE80B,EAAkB,IAAIK,uBAAqBl3B,EAAUc,gBAE3D,OAAO,IAAIsnC,GACPvR,EACA3iB,IAAyBC,cAAcnU,GACvCQ,OAAO6S,MAAMtR,GAAa,EAAIA,GAItC,MAAM,IAAI3B,MAAM,uDAwBL0E,4CAA2B,CACtCC,GAAI,qEACJC,OApBGC,eAA2CvF,EAAgCwF,GAC9E,IAAImb,EAAa3gB,EAAMm3B,gBAAgBxW,WACvC,GAAI3gB,EAAMm3B,gBAAgBF,eAAiBtW,EAAY,CACnD,MAAM1J,QAAiBgxB,kBAAmBjoC,EAAMm3B,gBAAiB3xB,GACjE,IAAKyR,EAED,OADAzR,EAAI8B,MAAM,yDACe,GAE7BqZ,EAAa1J,EAAStU,SAG1B,OAAOimC,YACH,CAAEjjC,cAAeH,EAAKkB,oBAAqB1G,EAAMg3B,yBAAyBtiB,qBAC1E1U,EAAMqC,UACNse,GAAc,IAOlB3gB,MAAO2oC,KCxDJ,MAAME,GAMT/jC,YACIyuB,EACAlxB,EACA20B,EACAp1B,GAOG,KAAAoD,YAAc,IAAMtB,YAAc,GAAD,OAAIyB,KAAKouB,WAAT,YAAuBpuB,KAAK9C,UAA5B,YAAyC8C,KAAK6xB,yBAAyBE,cAAgB/xB,KAAKvD,aAC7H,KAAAqD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,UARpCC,KAAK9C,UAAYA,EACjB8C,KAAKouB,WAAaA,EAClBpuB,KAAK6xB,yBAA2BA,EAChC7xB,KAAKvD,YAAcA,GAWpB,MAAMknC,GAA6BxoC,IACtC,MAAMC,EAAkBC,YAAgBF,GAClC+B,EAAY/B,EAAUmB,OAASX,OAAOR,EAAUmB,OAAOY,WAAa,EAE1E,OAAO,IAAIwmC,GACPtoC,EAAgBE,EAChBK,OAAO6S,MAAMtR,GAAa,EAAIA,EAC9BmS,IAAyBC,cAAcnU,GACvCA,EAAUc,eAAeQ,cAclBwD,4CAA2B,CACtCC,GAAI,iEACJC,OATGC,eAAuCvF,EAA4BwF,GACtE,OAAOujC,YACH,CAAEpjC,cAAeH,EAAKkB,oBAAqB1G,EAAMg3B,yBAAyBtiB,qBAC1E1U,EAAMqC,UACNrC,EAAMuzB,aAMVvzB,MAAO8oC,KC5CJ,MAAME,GAOTlkC,YACIxD,EACAe,EACA4mC,EACAjS,EACAO,GASG,KAAAvyB,YAAc,cACdG,KAAK7D,UADS,YACI6D,KAAK9C,UADT,YACsB8C,KAAK8jC,aAAa3xB,cADxC,YACyDnS,KAAK6xB,yBAAyBE,aADvF,YAEb/xB,KAAKqhC,uBAAuBljC,UAE7B,KAAA2B,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,OAZpCC,KAAK7D,UAAYA,EACjB6D,KAAK9C,UAAYA,EACjB8C,KAAK8jC,aAAeA,EACpB9jC,KAAK6xB,yBAA2BA,EAChC7xB,KAAKqhC,uBAAyBjP,GAuHvBnyB,4CAA2B,CACtCC,GAAI,iEACJC,OA/DJC,eAAwCvF,EAAgCwF,GACpE,MAAM5D,EAAc4D,EAAIpE,eAAeQ,YACjCsnC,EAAgBlpC,EAAMg3B,yBAAyBtiB,oBAE/Cy0B,QAA6BC,YAC/B,CAAEzjC,cAAeH,EAAKkB,oBAAqBwiC,GAC3ClpC,EAAMsB,WACLM,EAAYiC,UACb7D,EAAMqC,WAEV,IAAK8mC,EAED,OADA3jC,EAAI8B,MAAJ,oFAAuFtH,EAAMsB,YACvE,GAE1B,MAAM+nC,EA1BH,SAAmCF,EAA6CG,GACnF,IAAIC,EAQJ,OAPAD,EAAuBA,EAAqBhyB,cAC5C6xB,EAAqB14B,QAAS+4B,IAC1B,GAAIA,EAAoBv/B,MAAQu/B,EAAoBv/B,KAAKqN,gBAAkBgyB,EACvE,OAAQC,EAA6BC,EAAoB7mC,WAI1D4mC,EAiBuBE,CAA0BN,EAAsBnpC,EAAMipC,cACpF,IAAKI,EAED,OADA7jC,EAAI8B,MAAJ,4DAA+DtH,EAAMipC,aAArE,wBAAiGjpC,EAAMsB,YACjF,GAG1B,MAAMkP,QAAsBk5B,YACxB,CAAE/jC,cAAeH,EAAKkB,oBAAqBwiC,GAC3ClpC,EAAMsB,WACLM,EAAYiC,UACb7D,EAAMqC,UACNgnC,GAEChiC,KAAK5B,GACEA,GAAYA,EAASc,OACdd,EAASjB,IACXvC,GACU,IAAI6O,IAAiB7O,EAAQU,SAAUf,EAAa5B,EAAMwmC,0BAK7EhhC,EAAI8B,MAAM,2DACiB,KAE9BmD,MAAOC,IACJlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAI8B,MAAMoD,EAAMi/B,OAAS,IACzBnkC,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,wDACAtF,EAAI8B,MAAJ,wDAC2B,KAGnC,OAAIkJ,EAAcjK,OAAS,EAChBwK,YAAgBP,EAAehL,GAEhB,IAa1BxF,MA5G0CM,IAC1C,GAAIA,GAAaA,EAAUc,gBAAkBd,EAAUmB,OAAQ,CAC3D,MAAMY,EAAY/B,EAAUc,eAAeQ,YAAYS,UACjD4mC,EAAe3oC,EAAUmB,OAAOwnC,aAGtC,IAAI3nC,EAAYhB,EAAUc,eAAeG,UAAYT,OAAOR,EAAUc,eAAeG,UAAUyC,UAAY,EAC3G,MAAMqiC,EAAyBhjC,YAAyC/C,GACxE,IAAK2oC,EACD,MAAM,IAAIvoC,MAAM,mCAQpB,GAJIJ,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMC,YACjEA,EAAYR,OAAOR,EAAUc,eAAeC,MAAMC,YAGlDR,OAAO6S,MAAMrS,IAAcA,GAAa,EACxC,MAAM,IAAIZ,MAAM,yDAGpB,GAAII,OAAO6S,MAAMtR,GACb,MAAM,IAAI3B,MAAM,4CAGpB,MAAMs2B,EAA2BxiB,IAAyBC,cAAcnU,GACxE,OAAO,IAAI0oC,GAAwB1nC,EAAWe,EAAW4mC,EAAcjS,EAA0BqP,GAGrG,MAAM,IAAI3lC,MAAM,4CC/Db,MAAMkpC,GAGT9kC,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,YAAc,eAAgByB,KAAKvD,aACvD,KAAAqD,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,UALtCC,KAAKvD,YAAcA,GAsBVwD,4CAA2B,CACtCC,GAAI,sEACJC,OANGC,eAA4CvF,EAAiCwF,GAChF,OAAOuI,YAA4B,CAAEpI,cAAeH,KAMpDxF,MAd2CM,GACpC,IAAIspC,GAAyBtpC,EAAUc,eAAeQ,e,uCCtB1D,MAAMioC,GAIT/kC,YAAYlD,EAAmC4gC,GAKxC,KAAAx9B,YAAc,IAAMtB,YAAc,gBAAD,OAAiByB,KAAKq9B,mBAAqBr9B,KAAKvD,aACjF,KAAAqD,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKvD,YAAcA,GA0D3B2D,eAAes9B,GAAY7iC,EAA0BwF,GACjD,MAAM09B,EAAmB,IAAIC,uBAAoBnjC,EAAM4B,aACvD,OAAOkoC,4BAAiB5G,EAAkB19B,GAG9C,SAASukC,GAAW3B,EAAuB4B,GACvC5B,EAAU6B,oBAAoB,CAACC,kBAAmBF,EAAKxe,aAO5CpmB,4CAAwC,CACnDC,GAAI,0DACJC,OA9CGC,eAAkCvF,EAA0BwF,GAC/D,MAAMm9B,EAAuD,CAAE7Q,aAAatsB,GAAMq9B,GAAY7iC,EAAOwF,IACrG,OAAOuC,QAAQgwB,IAAI4K,GACVt7B,KAAMnH,IACH,MAAMkoC,EAAYloC,EAAO,GACnB8pC,EAAO9pC,EAAO,GACpB,OAAI8pC,GAAQA,EAAKxe,YACbue,GAAW3B,EAAW4B,GACfA,GAIJG,YAAsB,CAAExkC,cAAeH,GAAO,CAAEwpB,gBAAiBhvB,EAAMwiC,mBAAqB,OAC9Fn7B,KAAM+iC,IACHL,GAAW3B,EAAWgC,GACfA,IAGV3/B,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,+BACd,IAAIpK,MAAM,mCAG3B+J,MAAOC,IAGJ,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,gCACd,IAAIpK,MAAM,mCAoB5BV,MA9DoCM,IACpC,MAAM,eAAEc,GAAmBd,EAE3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,qEAGpB,OAAO,IAAImpC,GAAkBvpC,EAAUc,eAAeQ,gB,aCvBnD,MAAMyoC,GAMTvlC,YAAYiU,EAAyBzX,EAAmBc,EAAkBkoC,GAOnE,KAAAtlC,YAAc,IAAM,8BACpB,KAAAC,mBAAqB,IAAM,8BAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK4T,gBAAkBA,EACvB5T,KAAK7D,UAAYA,EACjB6D,KAAK/C,SAAWA,EAChB+C,KAAKmlC,cAAgBA,GAAiB,MA2D/BllC,4CAA4C,CACvDC,GAAI,uFACJC,OA/BGC,eAA4CvF,EAAoCwF,GACnF,IACI,MAAM+kC,EAAwC,CAC1CC,cAAexqC,EAAM+Y,gBACrBrW,UAAW1C,EAAMsB,UACjBsB,SAAU5C,EAAMoC,SAChBqoC,cAAezqC,EAAMsqC,eAGnBI,QAA2CC,aAAyB,CACtEhlC,cAAeH,GAChBxF,EAAM+Y,gBAAiB,CAACwxB,IAE3B,GAAIG,GAA8C,IAA3BA,EAAgBnkC,QAAgBmkC,EAAgB,IAAMA,EAAgB,GAAGF,cAC5F,OAAOE,EAAgB,GAGvB,MADAllC,EAAIoF,UAAUF,MAAM,uEACdhK,MAAM,uEAElB,MAAOgK,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,4CAA6CA,GAC3DA,IAWV1K,MA/CuC,CACvCM,EAAiCyY,EAAyBzX,EAAmBc,EAAkBkoC,KAE/F,MAAM,eAAElpC,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,+DAEpB,OAAO,IAAI2pC,GAA4BtxB,EAAiBzX,EAAWc,EAAUkoC,M,yBC9B1E,MAAMM,GAKT9lC,YAAYiU,EAAyBrS,EAA2C6sB,GAMzE,KAAAvuB,YAAc,6CAAwCG,KAAK4T,gBAA7C,YAAgE8a,0BAAgB1uB,KAAKuB,qBAArF,YAA6GvB,KAAKouB,YAChI,KAAAtuB,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAK4T,gBAAkBA,EACvB5T,KAAKuB,oBAAsBA,EAC3BvB,KAAKouB,WAAaA,GAAc,IAyBjChuB,eAAeslC,GAAqC7qC,EAA4C2J,GACnG,IAAKA,EAAQvI,eAAeyF,KAAKC,gBAC7B,MAAM,IAAIpG,MAAM,kEAGpB,MAAMoqC,EAAoD,CACtDC,MAAO,GACPC,WAAY,GAEVlM,EAAUmM,aAAyB,CACrCtlC,cAAegE,EAASjD,oBAAqB1G,EAAM0G,qBACpD1G,EAAM+Y,gBAAiB/Y,EAAMuzB,YAC1B2X,QAAyBpM,EACzBtuB,EAAoC,GAC1C,GAAI06B,GAAoBA,EAAiB3kC,OAAS,EAAG,CAQjD,GAPAukC,EAAwBE,WAAalM,EAAQ3+B,SAAS6Y,OAAS8xB,EAAwBC,MAAMxkC,OAC7F2kC,EAAiBz6B,QAAS06B,IAClBA,EAASzoC,YACTooC,EAAwBC,MAAMl6B,KAAK,IAAIu6B,KAAkBD,IACzD36B,EAAcK,KAAK,IAAIC,IAAiBq6B,EAASzoC,UAAWiH,EAAQvI,eAAeQ,YAAayB,YAAyCsG,QAG7I6G,EAAcjK,OAAS,EAAG,CAC1B,MAAM8kC,QAAyBt6B,YAAgBP,EAAe7G,GACzDtC,KAAM2F,GACCA,GAGsB,IAG7BvC,MAAMC,IACHf,EAAQrC,MAAMoD,GACdf,EAAQiB,UAAUF,MAAMA,EAAMC,SAC9BhB,EAAQiB,UAAUF,MAAM,6EAYhC,OAVI2gC,GACAP,EAAwBC,MAAMt6B,QAAQ66B,IAClC,MAAMC,EAAcF,EAAiBllC,KAAKlE,GAAWA,EAAQg2B,eAAet1B,WAAa2oC,EAAKZ,gBAAgBhoC,WACzG6oC,EAILD,EAAKC,YAAcA,EAHf5hC,EAAQiB,UAAUF,MAAM,oGAM7BogC,EAGX,OADAnhC,EAAQrC,MAAMwjC,EAAwBC,MAAMxkC,OAAOoG,YAC5Cm+B,EAEX,OAAOA,EAOI1lC,4CAAqD,CAChEC,GAAI,+FACJC,OAA2CulC,GAC3C7qC,MA1EqD,CACrDM,EAAiCyY,EAAyBwa,KAE1D,MAAM7sB,EAA4C8N,IAAyBC,cAAcnU,GAAWoU,oBAEpG,OADAhO,EAAoBsS,OAAQ,EACrB,IAAI4xB,GAAoC7xB,EAAiBrS,EAAqB6sB,MCvBlF,MAAMiY,GAGT1mC,YAAYiU,GAIL,KAAA/T,YAAc,IAAM,8BACpB,KAAAC,mBAAqB,IAAM,8BAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK4T,gBAAkBA,GAmEhB3T,4CAAuC,CAClDC,GAAI,uFACJC,OA3CGC,eAA4CvF,EAAoC2J,GACnF,MAAMy+B,QAAkBtW,aAAanoB,GAE/BjD,EAA2C,CAC7C/F,OAAQ,CACJC,IAHW,IAIXI,KAAM,IAGRyqC,EAAsC,IAAIb,GAAoC5qC,EAAM+Y,gBAAiBrS,GAC3G,IAAIglC,QAA2Bb,GAAqCY,EAAqC9hC,GACrG2P,EAA6B,GACjC,IAAK,IAAIrY,EAVU,IAU6C,IAApCyqC,EAAmBX,MAAMxkC,OAActF,GAVhD,IAUoE,CACnF,MAAMgZ,EAAwByxB,EAAmBX,MAAMvmC,IAAImnC,IAAc,MASrE,MAP2B,CACvBlpC,OAAM,UAAEkpC,EAAYJ,mBAAd,aAAE,EAAyBtT,eAAex1B,OAChDC,UAAWipC,EAAYjB,gBAAgBhoC,UACvCE,SAAU+oC,EAAYjB,gBAAgB9nC,SACtCC,WAAY,GACZC,oBAAqB6oC,EAAYjB,gBAAgBD,uBAInDmB,aAAkB,CAAEjmC,cAAegE,GAAWy+B,EAAUhvB,KAAK5M,GAAIyN,EAAWmuB,EAAUhvB,KAAKO,SAAUlP,MAAMC,IAG7G,MAFAf,EAAQiB,UAAUtD,MAAMoD,GACxBf,EAAQiB,UAAUtD,MAAM,yCAClBoD,IAEV4O,EAAiBA,EAAemP,OAAOxO,GACvCwxB,EAAoC/kC,oBAAoB/F,OAAQK,KAAOC,EACvEyqC,QAA2Bb,GAAqCY,EAAqC9hC,GAGzG,aADMy+B,EAAUyD,YAAY,IACrBvyB,GAUPtZ,MAzDuC,CAACM,EAAiCyY,KACzE,MAAM,eAAE3X,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,+DAEpB,OAAO,IAAI8qC,GAA4BzyB,MCxBpC,MAAM+yB,GAGThnC,YAAYinC,GAIL,KAAA/mC,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK4mC,aAAeA,GAoDb3mC,4CAAwC,CACnDC,GAAI,kFACJC,OA5BGC,eAAyCvF,EAAiCwF,GAC7E,IACI,MAAMwmC,EAA6B,CAC/Bx/B,GAAI,GACJvC,KAAMjK,EAAM+rC,aACZE,qBAAqB,GAEnBC,QAA2BC,aAAuB,CACpDxmC,cAAeH,GAChBwmC,GACH,GAAIE,GAAgD,KAA1BA,EAAmB1/B,GACzC,OAAO0/B,EAGP,MADA1mC,EAAIoF,UAAUF,MAAM,iCACdhK,MAAM,iCAElB,MAAOgK,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,oCAAqCA,GACnDA,IAWV1K,MA1CoC,CAACM,EAAiCyrC,KACtE,MAAM,eAAE3qC,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,+DAEpB,OAAO,IAAIorC,GAAyBC,MCrBjC,MAAM5yB,GAITrU,YAAYiU,EAAyBrS,GAK9B,KAAA1B,YAAc,mCAA8BG,KAAK4T,iBACjD,KAAA9T,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,OANpCC,KAAK4T,gBAAkBA,EACvB5T,KAAKuB,oBAAsBA,GAiDpBtB,4CAA0C,CACrDC,GAAI,oFACJC,OAvBGC,eAA0CvF,EAAkCwF,GAC/E,IAAKA,EAAIpE,eAAeyF,KAAKC,gBACzB,MAAM,IAAIpG,MAAM,iEAGpB,MAAM0rC,EAAc,IAAIC,0BAAuBrsC,EAAM+Y,iBAC/CuzB,QAAoCC,mBAAkBH,EAAa5mC,GAEzE,IAAK8mC,GAAwC,IAAxBA,EAAa/lC,OAC9B,MAAM,IAAI7F,MAAM,oEAGpB,MAAM8rC,EAAa,IAAI5B,GAAoC0B,EAAa,GAAG9/B,GAAIxM,EAAM0G,qBAC/E+lC,QAAmB5B,GAAqC2B,EAAYhnC,GAC1E,OAAO,IAAIknC,KAAcJ,EAAa,GAAIG,EAAW1B,MAAO0B,EAAWzB,aAUvEhrC,MAxC2C,CAACM,EAAiCyY,KAC7E,MAAM,eAAE3X,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,kEAEpB,MAAMgG,EAA4C8N,IAAyBC,cAAcnU,GAAWoU,oBAGpG,OAFAhO,EAAoBsS,OAAQ,EAErB,IAAIG,GAA0BJ,EAAiBrS,M,uCC7BnD,MAAMimC,GAGT7nC,YAAYknC,GAIL,KAAAhnC,YAAc,IAAM,iCACpB,KAAAC,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK6mC,cAAgBA,GAgDd5mC,4CAAwC,CACnDC,GAAI,yFACJC,OAxBGC,eAA+CvF,EAAuCwF,GACzF,IACI,MAAM,cAAEwmC,GAAkBhsC,EACpB4sC,QAA2BhJ,aAAY,CACzCj+B,cAAeH,GAChBwmC,GACH,GAAIY,EACA,OAAOA,EAGP,MADApnC,EAAIoF,UAAUF,MAAd,+BAA4CshC,EAAcx/B,GAA1D,wBACM9L,MAAM,kCAElB,MAAOgK,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,oCAAqCA,GACnDA,IAWV1K,MAtC0C,CAACM,EAAiC0rC,KAC5E,MAAM,eAAE5qC,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,+DAEpB,OAAO,IAAIisC,GAA+BX,MCrBvC,MAAMa,GAMT/nC,YAAYiU,EAAyBzX,EAAmBc,EAAkBkoC,GAOnE,KAAAtlC,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK4T,gBAAkBA,EACvB5T,KAAK7D,UAAYA,EACjB6D,KAAK/C,SAAWA,EAChB+C,KAAKmlC,cAAgBA,GAAiB,MAyE/BllC,4CAA4C,CACvDC,GAAI,uFACJC,OA7CGC,eAAyCvF,EAAiCwF,GAC7E,IACI,IAAKA,EAAIpE,eAAeyF,KAAKC,gBACzB,MAAMpG,MAAM,6DAEhB,MAAMosC,EAAgB,IAAIlC,GAAoC5qC,EAAM+Y,gBAAiB,GAAI/Y,EAAMsB,UAAUqL,YACnG8/B,QAAmBM,GAA+BD,EAAetnC,GACvE,IAAKinC,EACD,MAAM/rC,MAAM,iEAGhB,MAAMssC,EAAgBP,EAAW1B,MAAMv8B,OAAO88B,GAAQA,EAAKZ,gBAAgBhoC,YAAc1C,EAAMsB,WAC/F,GAA6B,IAAzB0rC,EAAczmC,OACd,MAAM7F,MAAM,sEAGhB,MAAMusC,EAAeD,EAAc,GAAGtC,gBAEtCuC,EAAaxC,cAAgBzqC,EAAMsqC,cACnC2C,EAAarqC,SAAW5C,EAAMoC,SAE9B,MAAM8qC,QAAwCC,aAA4B,CACtExnC,cAAeH,GAChBxF,EAAM+Y,gBAAiB,CAACk0B,IAE3B,IAAKC,GAAwC,IAAxBA,EAAa3mC,OAC9B,MAAM7F,MAAM,8DAEhB,MAAM0sC,EAAcF,EAAa1+B,OAAO88B,GAAQA,EAAK5oC,YAAc1C,EAAMsB,WACzE,GAA2B,IAAvB8rC,EAAY7mC,QAAgB6mC,EAAY,GAAGxqC,WAAa5C,EAAMoC,UAAYgrC,EAAY,GAAG3C,gBAAkBzqC,EAAMsqC,cACjH,MAAM5pC,MAAM,+DAEhB,OAAO0sC,EAAY,GACrB,MAAO1iC,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,4CAA6CA,GAC3DA,IAWV1K,MA7DoC,CACpCM,EAAiCyY,EAAyBzX,EAAmBc,EAAkBkoC,KAE/F,MAAM,eAAElpC,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,+DAEpB,OAAO,IAAImsC,GAAyB9zB,EAAiBzX,EAAWc,EAAUkoC,M,aC5BvE,MAAM+C,GAQTvoC,YACIkyB,EACAp1B,EACA+e,EACA9c,EACAuiC,EACA/jC,GAUG,KAAA2C,YAAc,IAAMtB,YAAc,mCAAoCyB,KAAKvD,aAC3E,KAAAqD,mBAAqB,IAAM,8BAC3B,KAAAC,cAAgB,IAAiB,UAVpCC,KAAKwb,WAAaA,EAClBxb,KAAKtB,UAAYA,EACjBsB,KAAKihC,mBAAqBA,GAAsB,GAChDjhC,KAAK6xB,yBAA2BA,EAChC7xB,KAAK9C,UAAYA,GAAa,EAC9B8C,KAAKvD,YAAcA,GAgCZwD,4CAA2B,CACtCC,GAAI,qEACJC,OAAwCsB,KACxC5G,MAxBwBM,IACxB,MAAM8lC,EAAqB9lC,EAAUmB,QAAUnB,EAAUmB,OAAO2kC,mBAEhE,GAAI9lC,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMsf,WAC1G,OAAO2sB,YACH94B,IAAyBC,cAAcnU,GAAWoU,qBACjDpU,EAAUc,eAAeQ,YAAYiC,UACtCvD,EAAUmB,OAASX,OAAOR,EAAUmB,OAAOY,WAAa,GACvD/B,EAAUc,eAAeC,MAAMsf,WAC/B9a,MAAMC,QAAQsgC,GAA2BA,EAAmB5hC,IAAK+oC,GAA6CA,GAA1E,IAI7C,MAAM,IAAI7sC,MAAM,4FClCL0E,4CAA2B,CACtCC,GAAI,2DACJC,OAAwCsB,eACxC5G,MArBG,SAAsCM,GACzC,MAAQc,gBAAgB,MAACC,EAAOO,aAAa,UAACiC,KAAevD,EAEvDktC,EAASnsC,GAASA,EAAMZ,EAE9B,IAAK+sC,EACD,MAAM,IAAI9sC,MAAM,qIAGpB,MAAM+sC,EAAqBj5B,IAAyBC,cAAcnU,GAClE,OAAOotC,YAAwBD,EAAmB/4B,oBAAqB5T,OAAO+C,GAAY,EAAG2pC,MCd1F,SAASG,GAAqBrQ,EAAoBgG,GAMrD,OALAhG,EAASwG,UAAYxG,EAASwG,WAAa,GACvCR,EAAQtW,WACRsQ,EAASwG,UAAUrzB,QAAQk1B,GAAOA,EAAI3Y,WAAY,GAEtDsQ,EAASwG,UAAY,IAAIxG,EAASwG,UAAUt1B,OAAOm3B,GAAOA,EAAIhjC,WAAa2gC,EAAQ3gC,UAAW2gC,GACvFhG,EAaIl4B,4CAAsC,CACjDC,GAAI,2DACJC,OAZGC,eAAmCvF,EAAgCwF,GACtE,OAAOg+B,EAA6BxjC,EAAOwF,EAAKmoC,KAYhD3tC,MAA4DujC,I,+NCLzD,MAAMqK,GAOT9oC,YAAY09B,EAA2BqL,EAAyCjsC,EAAmCksC,EAAgBC,GAQ5H,KAAA/oC,YAAc,IAActB,YAAc,GAAD,OAAIyB,KAAKq9B,mBAAqBr9B,KAAKvD,aAC5E,KAAAqD,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKvD,YAAcA,EACnBuD,KAAK0oC,mBAAqBA,EAC1B1oC,KAAK2oC,MAAQA,EACb3oC,KAAK4oC,UAAYA,GA4CV3oC,4CAAqC,CAChDC,GAAI,uEACJC,OAjCGC,eAA8CvF,EAAuCwF,GACxF,MAAM,mBAAEqoC,EAAF,MAAsBC,EAAtB,UAA6BC,EAA7B,kBAAwCvL,GAAsBxiC,EAE9Ds9B,QAAiBpyB,YAAU,CAAEvF,cAAeH,GAAOg9B,GAEzD,IAAKlF,EAED,MADA93B,EAAIoF,UAAUE,MAAM,wDACd,IAAIpK,MAAM,2BAGpB,MAAMgjC,E,2WAAW,IAAQpG,GACzBoG,EAAYyB,MAAQ2I,EACpBpK,EAAYsK,UAAYD,EACxBrK,EAAYuK,WAAaJ,EAEzB,MAAMlK,QAAwBC,YAAY,CAAEj+B,cAAeH,GAAOk+B,GAElE,IAAKC,EAED,MADAn+B,EAAIoF,UAAUE,MAAM,qEACd,IAAIpK,MAAM,wCAKpB,OAFA8E,EAAI05B,OAAO,IAAIn0B,mBAAiBvF,EAAIpE,eAAeQ,aAAc+hC,GAE1DA,K,+NClDJ,MAAMuK,GAMTppC,YAAY09B,EAA2B2L,EAAmBvsC,EAAmCwsC,GAOtF,KAAAppC,YAAc,IAActB,YAAc,GAAD,OAAIyB,KAAKq9B,mBAAqBr9B,KAAKvD,aAC5E,KAAAqD,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKvD,YAAcA,EACnBuD,KAAKgpC,SAAWA,EAChBhpC,KAAKipC,eAAiBA,GAiDfhpC,4CAAqC,CAChDC,GAAI,4EACJC,OAtCGC,eAAmDvF,EAA4CwF,GAClG,MAAM,kBAAEg9B,EAAF,SAAqB2L,EAArB,eAA+BC,GAAmBpuC,EAElDs9B,QAAiBpyB,YAAU,CAAEvF,cAAeH,GAAOg9B,GAEzD,IAAKlF,EACD,MAAM,IAAI58B,MAAM,2BAGpB,MAAMgjC,E,2WAAW,IAAQpG,GAEzB,OAAQ8Q,GACJ,IAAK,eACD1K,EAAY2K,0BAA4BF,EACxC,MACJ,UAAK5pC,EACL,IAAK,kBACL,QACIm/B,EAAY4K,sBAAwBH,EAG5C,MAAMxK,QAAwBC,YAAY,CAAEj+B,cAAeH,GAAOk+B,GAElE,IAAKC,EACD,MAAM,IAAIjjC,MAAM,6BAKpB,OAFA8E,EAAI05B,OAAO,IAAIn0B,mBAAiBvF,EAAIpE,eAAeQ,aAAc+hC,GAE1DA,K,+NCrEJ,SAAS4K,GAA4BjR,EAAoBgG,GAE5D,OADAhG,EAASwG,UAAY0K,G,2WAAkB,IAAKlL,GAAW,IAAKhG,EAASwG,WAAa,KAC3ExG,EAaIl4B,4CAAsC,CACjDC,GAAI,mEACJC,OAZGC,eAA0CvF,EAAgCwF,GAC7E,OAAOg+B,EAA6BxjC,EAAOwF,EAAK+oC,KAYhDvuC,MAA4DujC,EAC5DtkB,WAAW,IAGf,MAAMuvB,GAAoB,CAACC,EAA2BC,IAC3CA,EAAUlqC,IAAImqC,IACbA,EAAKhsC,WAAa8rC,EAAiB9rC,SACnCgsC,EAAK3hB,WAAY,EAEjB2hB,EAAK3hB,WAAY,EAEd2hB,IC3Bf,MAAMC,GAsBF9pC,YACI2Y,EACAzV,EACAoW,GAEAjZ,KAAKsY,KAAOA,EACZtY,KAAK6C,QAAUA,EACf7C,KAAKiZ,OAASA,GAQf,MAAMywB,GAqBT/pC,cACIK,KAAK2pC,OAAS,GACd3pC,KAAK4pC,SAAU,EATI,kBACnB,OAAQ5pC,KAAK4pC,SAAkC,IAAvB5pC,KAAK2pC,OAAOvoC,OAgBpB,cAACyoC,GAEjB,OAAO,IAAIjnC,QAA2BxC,MAAOyC,EAASoW,KAClDjZ,KAAK2pC,OAAOj+B,KAAK,IAAI+9B,GAAoBI,EAAahnC,EAASoW,UACzDjZ,KAAK8pC,aAQG,iBAElB,IAAK9pC,KAAK+pC,YACN,OAIJ/pC,KAAK4pC,SAAU,EAGf,MAAMh3B,EAAkD5S,KAAK2pC,OAAOK,cAC9DhqC,KAAKiqC,gBAAgBr3B,SAGrB5S,KAAKkqC,eAOc,sBAACt3B,GAC1B,UACUA,EAAQ0F,OAAOpW,KAAK0Q,EAAQ/P,SAASyC,MAAMsN,EAAQqG,QAC3D,MAAO1T,GACLqN,EAAQqG,OAAO1T,IAOG,qBACtBvF,KAAK4pC,SAAU,QACT5pC,KAAK8pC,YCtHZ,IAAKK,GCAKC,GCEAC,GCAAC,GCAAC,IJFjB,SAAYJ,GACRA,wIACAA,uFAFJ,CAAYA,QAAuB,KAc5B,MAAMK,WAA8Cd,GAcvD/pC,YAAmB8qC,GACf,GAAIA,EAAiB,EACjB,MAAM,IAAIlvC,MAAM4uC,GAAwBO,6BAG5CC,QACA3qC,KAAK4qC,gBAAkBH,EASP,cAACZ,GACjB,IAAIgB,EAAqB7qC,KAAK2pC,OAAOvoC,OAWrC,GAPIpB,KAAK4pC,WACHiB,EAMFA,IAAuB7qC,KAAK4qC,gBAAiB,CAC7C,MAAMh4B,EAAU5S,KAAK2pC,OAAOK,QACxBp3B,GACAA,EAAQqG,OAAOkxB,GAAwBW,iCAI/C,OAAOH,MAAMI,QAAQlB,KC9D7B,SAAiBO,GAQGA,oBAAhB,SAAkC/0B,GAC9B,OAAOA,SAQK+0B,WAAhB,SAAyB/0B,GACrB,MAAwB,iBAAVA,GAQF+0B,WAAhB,SAAyB/0B,GACrB,MAAwB,iBAAVA,GAQF+0B,aAAhB,SAA2B/0B,GACvB,MAAwB,mBAAVA,GApCtB,CAAiB+0B,QAAgB,KCEjC,SAAiBC,GAmBb,SAAgBW,EAAe31B,GAC3B,OAAQ+0B,GAAiBa,kBAAkB51B,IAAUA,EAAMjU,OAAS,EAdxDipC,SAAhB,SAA0Bh1B,GACtB,OAAK21B,EAAY31B,GAIV3U,MAAMwqC,KAAK,IAAIC,IAAI91B,IAHf,IAWCg1B,cAAWW,EAWXX,MAAhB,SAAuBh1B,EAAY+1B,GAC/B,OAAKJ,EAAY31B,IAIVA,EAAMhM,OAAO+hC,GAAWhqC,SAAWiU,EAAMjU,QAnCxD,CAAiBipC,QAAe,KCAhC,SAAiBC,GAQb,SAAgBe,EAAUC,GACtB,OAAIlB,GAAiBa,kBAAkBK,GAC5B,GAGJ54B,OAAOC,KAAK24B,GAAWjsC,IAAIwF,GAAQymC,EAAUzmC,IAiBxD,SAAgB0mC,EAAiBD,GAC7B,OAAOD,EAAUC,GAAWjiC,OAAO+gC,GAAiBoB,UAvBxClB,YAASe,EAaTf,WAAhB,SAAyBgB,GACrB,OAAOD,EAAUC,GAAWjiC,OAAO+gC,GAAiBqB,WAQxCnB,mBAAgBiB,EAShBjB,gBAAhB,SAAgDgB,GAC5C,OAAOC,EAAiBD,GAAWjsC,IAAIgW,GAAYA,IAxC3D,CAAiBi1B,QAAc,KCA/B,SAAiBC,GAeb,SAAgBmB,EAAcr2B,GAC1B,GAAI+0B,GAAiBa,kBAAkB51B,GACnC,OAAO,EAGX,IAAK+0B,GAAiBqB,SAASp2B,GAC3B,MAAM,IAAI9Z,MAAM,qDAGpB,MAAiB,KAAV8Z,EAlBKk1B,qBAAhB,SAAmCl1B,GAC/B,OAAOq2B,EAAcr2B,IAA4B,KAAlBA,EAAOwnB,QAQ1B0N,gBAAamB,EAfjC,CAAiBnB,QAAgB,K,4CCF7B3yB,GACA+zB,GAAQ,IAAIC,WAAW,IACZ,SAASC,KAEtB,IAAKj0B,MAGHA,GAAoC,oBAAXD,QAA0BA,OAAOC,iBAAmBD,OAAOC,gBAAgBk0B,KAAKn0B,SAA+B,oBAAbo0B,UAAgE,mBAA7BA,SAASn0B,iBAAkCm0B,SAASn0B,gBAAgBk0B,KAAKC,WAGrO,MAAM,IAAIxwC,MAAM,4GAIpB,OAAOqc,GAAgB+zB,I,cCjBV,yHCQf,ICFeK,OAJf,SAAkBC,GAChB,MAAuB,iBAATA,GAAqBC,GAAMC,KAAKF,IDG5CG,GAAY,GAEPntB,GAAI,EAAGA,GAAI,MAAOA,GACzBmtB,GAAU1gC,MAAMuT,GAAI,KAAOzX,SAAS,IAAI4b,OAAO,IAoBlC/M,OAjBf,SAAmBg2B,GACjB,IAAIC,EAASC,UAAUnrC,OAAS,QAAsBhC,IAAjBmtC,UAAU,GAAmBA,UAAU,GAAK,EAG7EN,GAAQG,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,MAAMn6B,cAMzf,IAAK65B,GAASC,GACZ,MAAMO,UAAU,+BAGlB,OAAOP,GEHMQ,IClBEC,GCHAC,GFqBFF,GApBf,SAAYxtC,EAAS2tC,EAAKN,GAExB,IAAIO,GADJ5tC,EAAUA,GAAW,IACF6tC,SAAW7tC,EAAQ4sC,KAAOA,MAK7C,GAHAgB,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBD,EAAK,CACPN,EAASA,GAAU,EAEnB,IAAK,IAAIrtB,EAAI,EAAGA,EAAI,KAAMA,EACxB2tB,EAAIN,EAASrtB,GAAK4tB,EAAK5tB,GAGzB,OAAO2tB,EAGT,OAAOv2B,GAAUw2B,KCfFH,QAAI,KACDA,aAAhB,WACI,OAAOK,OCLEJ,QAAM,KACLA,KAAOK,G,mLCOlB,MAAMzjC,EAAe1O,IACxB,MAAMsB,EAAYH,8CAAoCnB,GACtD,GAAIsB,EACA,OAAO,IAAImnC,yBAAuBnnC,EAAW8wC,YAAgBpyC,GAAQqyC,YAAiBryC,IAE1F,MAAM,IAAIU,MAAM,yGA0BL0E,+CAA2B,CACtCC,GAAI,gEACJC,OAtBJC,eAAiCvF,EAA+BwF,GAC5D,IAeJ,SAAsBxF,GAClB,OAAOA,GAASA,EAAMsB,UAAUiF,OAAS,GAAKvG,EAAM8I,SAASvC,OAAS,EAhBjE+rC,CAAatyC,GAEd,OADAwF,EAAI8B,MAAJ,iEACO,GAGX,MAAM8V,EAAa,UAAGpd,EAAMgJ,gBAAT,iCAAiDhJ,EAAMsB,UAAvD,gCACHtB,EAAM8I,UACtB,OAAOypC,sBAA4Bn1B,EAAY,OAAO/V,KAAM5B,GACjDA,EAAS4N,MACjB5I,MAAOC,IAEN,MADAlF,EAAI8B,MAAJ,iEACMoD,KAWV1K,MAAO0O,K,qLCjCL,MAAO8jC,EAAb1tC,cACW,KAAAE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAA0B,WAkB9C,MAAMutC,EAA2B/pC,6BAAoC,CACxEpD,OALJC,eAAsBvF,EAA+BwF,GACjD,MAAO,CAAEktC,YAAY,EAAO7kB,WAAY,GAAI8kB,kBAAmB,UAAWC,YAAa,KAKvF5yC,MAVgB,IACT,IAAIwyC,IAYAC,a,4HC3BR,MAAM9d,EAAsBC,IAC/B,IAAIC,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAC1C,MAAM,IAAEhpB,EAAF,MAAOrB,GAAWoB,QAElBkpB,EAAc,CAACC,EAASC,KADD,IAAMC,IAEqBD,EAFHxqB,EAE5B,oBAAsBuqB,GAFkBvqB,EAAMyqB,GAAwDzqB,EAAM,8CAA+C0qB,EAAQC,KAAK,KAI7LT,IACAA,EAAkBA,EAAgBpwB,IAAK8wB,GAAWA,EAAOhe,gBAE7D,MAAMie,EAAmBC,IACbZ,GAAmBA,EAAgBruB,QAAU,IAAuE,IAAlEquB,EAAgBa,UAAWH,GAAWA,IAAWE,GAIzGE,EAAoBC,IAClBd,EAAQE,YAAYY,IACpBd,EAAQE,YAAYY,GAAYC,SAChCf,EAAQE,YAAYY,GAAYC,QAAQC,WACxChB,EAAQE,YAAYY,GAAYC,QAAQC,UAAUxwB,KAClDwvB,EAAQE,YAAYF,EAAQE,YAAYY,GAAYC,QAAQC,UAAUxwB,IAAMwvB,EAAQE,YAAYY,KAIlGG,EAA8B,CAACC,EAAqBC,KAUlD,GADAnB,EAAQE,YAAYgB,GAAuBC,GACtCnB,EAAQE,YAAYgB,GAAqBH,QAC1C,MAAM,IAAIl1B,MAAM,oBAAsBq1B,EAAsB,mCAEhElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUI,eAAiBF,EACxElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUxwB,KAC3DwvB,EAAQE,YAAYF,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUxwB,IAAM0wB,IAKjG,IAGAR,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,wDAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DpP,EAAGngB,SAAY,uDAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,4BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0CAIRlB,EAAgB,WAAaV,EAAQC,QAAR,MAA2B,CACpDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,gBAAgB,SAAS,cAAc,gBAAgB,uBAAuB,oBAChHR,KAAK,EACLC,GAAI,YACJC,EAAG,QACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,4BACfJ,GAAI,qBAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,kEAAmEC,MAAO,IAErNP,KAAK,EACLC,GAAI,YACJC,EAAG,+BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6CAIRlB,EAAgB,iBAAmBV,EAAQC,QAAR,YAAiC,CAChEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,IAEtOP,KAAK,EACLC,GAAI,YACJC,EAAG,+BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6CAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,gBAAkB4G,KAAK,mFAAoFC,MAAO,IAE7HP,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,uCAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGpP,EAAGngB,SAAY,wDAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,gBAAkB4G,KAAK,oFAAqFC,MAAO,IAE9HP,KAAK,EACLC,GAAI,YACJC,EAAG,gCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8CAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,sBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,oCAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,gCACfJ,GAAI,yBAIRlB,EAAgB,mBAAqBV,EAAQC,QAAR,cAAmC,CACpEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,oCACfJ,GAAI,6BAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,kEAAmEC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,aACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,iCACfJ,GAAI,0BAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,2BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,wDAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,gBAAgB,SAAS,cAAc,gBAAgB,wBACzFR,KAAK,EACLC,GAAI,YACJC,EAAG,SACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,6BACfJ,GAAI,sBAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChEpP,EAAGngB,SAAY,8EAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,wFAAyFC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,kFAAmFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,iFAAkFC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAEz/BP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,8EAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,oBAAsB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,sDAAuDC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,sEAAuEC,MAAO,IAE73BP,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,gBAAgB,SAAS,gCAC3DR,KAAK,EACLC,GAAI,YACJC,EAAG,MACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,0BACfJ,GAAI,mBAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,kEAAmEC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,aAAeV,EAAQC,QAAR,QAA6B,CACxDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,UACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,8BACfJ,GAAI,uBAIRlB,EAAgB,WAAaV,EAAQC,QAAR,MAA2B,CACpDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,QACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,4BACfJ,GAAI,qBAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,mBAAqB4G,KAAK,oCAAqCC,MAAO,IAEjFP,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,gFAAiFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,uDAAwDC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,iGAAkGC,MAAO,IAExdP,KAAK,EACLC,GAAI,YACJC,EAAG,aACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,2BAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,mBAAqB4G,KAAK,oCAAqCC,MAAO,GAAG,CAAC7G,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAElSP,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,wEAAyEC,MAAO,IAE7GP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,wBAAwB,gBAAgB,SAAS,qBAAqB,wBACxGR,KAAK,EACLC,GAAI,YACJC,EAAG,MACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,0BACfJ,GAAI,mBAIRlB,EAAgB,aAAeV,EAAQC,QAAQ,WAAa,CACxDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,UACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,8BACfJ,GAAI,uBAIRlB,EAAgB,iBAAmBV,EAAQC,QAAR,YAAiC,CAChEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,kCACfJ,GAAI,2BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,wBAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,yBACfJ,GAAI,wBAIRlB,EAAgB,aAAeV,EAAQC,QAAR,QAA6B,CACxDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,UACvBR,KAAK,EACLC,GAAI,YACJC,EAAG,UACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,8BACfJ,GAAI,uBAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,wCACfJ,GAAI,iCAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DpP,EAAGngB,SAAY,8DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FpP,EAAGngB,SAAY,8DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,2BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yCAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,6BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,2CAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,kCAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,aACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,iCACfJ,GAAI,0BAIRlB,EAAgB,kBAAoBV,EAAQC,QAAR,aAAkC,CAClEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,eAAiB4G,KAAK,uCAAwCC,MAAO,IAEhFP,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,mCAAoCC,MAAO,IAE9EP,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFpP,EAAGngB,SAAY,iCAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,mCAAoCC,MAAO,IAE9EP,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,uCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,+BACfJ,GAAI,wBAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,IAE9GP,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,oBAAsB4G,KAAK,kDAAmDC,MAAO,IAEhGP,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,sBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,oCAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,IAE9GP,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,uDAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,uBAAyB4G,KAAK,gFAAiFC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,8BAA+BC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,iCAAkCC,MAAO,GAAG,CAAC7G,KAAK,oBAAsB4G,KAAK,uCAAwCC,MAAO,GAAG,CAAC7G,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,oEAAqEC,MAAO,IAEzjBP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,sBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,oCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFpP,EAAGngB,SAAY,wDAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,uDAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtEpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FpP,EAAGngB,SAAY,iCAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,oBAAsB4G,KAAK,mEAAoEC,MAAO,IAEjHP,KAAK,EACLC,GAAI,YACJC,EAAG,2BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,wDAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,UAAYV,EAAQC,QAAR,KAA0B,CAClDpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,wBAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,OACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,2BACfJ,GAAI,oBAIRlB,EAAgB,qCAAuCV,EAAQC,QAAQ,mCAAqC,CACxGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,kCAAmCC,MAAO,IAEhLP,KAAK,EACLC,GAAI,YACJC,EAAG,kCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gDAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,8DAA+DC,MAAO,GAAG,CAAC7G,KAAK,aAAe4G,KAAK,8EAA+EC,MAAO,IAE5NP,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChEpP,EAAGngB,SAAY,8EAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,aAAe4G,KAAK,8EAA+EC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,gFAAiFC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,iCAAkCC,MAAO,GAAG,CAAC7G,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,qGAAsGC,MAAO,GAAG,CAAC7G,KAAK,oBAAsB4G,KAAK,yFAA0FC,MAAO,GAAG,CAAC7G,KAAK,eAAiB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,yEAA0EC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,GAAG,CAAC7G,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAE9iDP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DpP,EAAGngB,SAAY,sEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,wFAAyFC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,kFAAmFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,iFAAkFC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,YAAc4G,KAAK,iFAAkFC,MAAO,IAEz/BP,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,sEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,0EAA2EC,MAAO,IAE7cP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,kCAAmCC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,gCAAiCC,MAAO,IAE3QP,KAAK,EACLC,GAAI,YACJC,EAAG,gCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8CAIRlB,EAAgB,oCAAsCV,EAAQC,QAAQ,kCAAoC,CACtGpP,EAAGngB,SAAY,8EAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,YACJC,EAAG,iCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+CAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,qCAAuCV,EAAQC,QAAQ,mCAAqC,CACxGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gDAIRlB,EAAgB,oCAAsCV,EAAQC,QAAQ,kCAAoC,CACtGpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,OAAS4G,KAAK,uEAAwEC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,gFAAiFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,mFAAoFC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,kCAAmCC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,gCAAiCC,MAAO,IAEnlBP,KAAK,EACLC,GAAI,YACJC,EAAG,iCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+CAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,sEAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,IAE1OP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,aAAe4G,KAAK,8EAA+EC,MAAO,IAErHP,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,qEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,WAAa4G,KAAK,4EAA6EC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,sEAAuEC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,+FAAgGC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,sFAAuFC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,gFAAiFC,MAAO,IAE5lBP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,8EAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGpP,EAAGngB,SAAY,8EAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,0EAA2EC,MAAO,GAAG,CAAC7G,KAAK,oBAAsB4G,KAAK,oFAAqFC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,sDAAuDC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,2EAA4EC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,kEAAmEC,MAAO,GAAG,CAAC7G,KAAK,sBAAwB4G,KAAK,sEAAuEC,MAAO,IAElwBP,KAAK,EACLC,GAAI,YACJC,EAAG,+BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6CAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGpP,EAAGngB,SAAY,uDAKf2wB,MAAO,kBACPC,GAAI,CAAC,CAACrG,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,8BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4CAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FpP,EAAGngB,SAAY,+DAKf2wB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,4BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0CAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,6CACfJ,GAAI,sCAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,UACvBR,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,gCACfJ,GAAI,yBAIRlB,EAAgB,iBAAmBV,EAAQC,QAAR,YAAiC,CAChEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,gBAAgB,UAChDR,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,kCACfJ,GAAI,2BAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,wBAAwB,gBAAgB,SAAS,qBAAqB,wBACxGR,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,sCACfJ,GAAI,+BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,uDAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,YAAc4G,KAAK,iEAAkEC,MAAO,GAAG,CAAC7G,KAAK,cAAgB4G,KAAK,wEAAyEC,MAAO,GAAG,CAAC7G,KAAK,gBAAkB4G,KAAK,mEAAoEC,MAAO,IAEhUP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,qCAAuCV,EAAQC,QAAQ,mCAAqC,CACxGpP,EAAGngB,SAAY,sEAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,kCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gDAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFpP,EAAGngB,SAAY,8EAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,kBAAoB4G,KAAK,wFAAyFC,MAAO,GAAG,CAAC7G,KAAK,mBAAqB4G,KAAK,+EAAgFC,MAAO,GAAG,CAAC7G,KAAK,uBAAyB4G,KAAK,kFAAmFC,MAAO,GAAG,CAAC7G,KAAK,WAAa4G,KAAK,iFAAkFC,MAAO,GAAG,CAAC7G,KAAK,4BAA8B4G,KAAK,4HAA6HC,MAAO,IAEjxBP,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,uCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,2BAA6B4G,KAAK,kDAAmDC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClEpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,UAAY4G,KAAK,iEAAkEC,MAAO,IAErGP,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5EpP,EAAGngB,SAAY,iCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,iBAAmB4G,KAAK,kCAAmCC,MAAO,GAAG,CAAC7G,KAAK,iBAAmB4G,KAAK,6DAA8DC,MAAO,IAEnLP,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,wDAKf2wB,MAAO,gBACPC,GAAI,CAAC,CAACrG,KAAK,OAAS4G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9EpP,EAAGngB,SAAY,kCAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1EpP,EAAGngB,SAAY,+DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpEpP,EAAGngB,SAAY,8DAKf2wB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIJ,CACI,MAAMd,EAAa,sDACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,0EACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8CACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,sCACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4CACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,mEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,oEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,qEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,6DACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8DACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,+DACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,kEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,GAAIJ,EAAgB,gCAAgC,CAGhDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,sDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,oCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,uDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,oCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,uCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,mCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,mCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,uBAAuB,CAGvCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,uBAAuB,CAGvCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,iCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,uCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,8BACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,oEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,mEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mCAAmC,CAGnDO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mCAAmC,CAGnDO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,8DACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,qGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,gCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,gCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,sFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,sDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,mEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mCAAmC,CAGnDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,6DACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,+EACXgB,EAAQ,UAM/B,MAAO51B,GACL8zB,EAAY,IAAK9zB,GAGrB,OAAO2zB,I,oRC3hHL,MAAOge,EAET/tC,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKnF,MAAQA,GA0Bd,MAAM8yC,EAAgC,CACzC3uC,EADyC,KAWhB,IATzB,eACImsB,EADJ,iBAEIK,EAFJ,cAGIC,EAHJ,UAIImiB,EAJJ,WAKI9vC,EALJ,OAMI8tB,EANJ,UAOID,GAEqB,EACzB,MAAMxlB,EAAYnH,EAAK/C,eAAeyF,KAAKoE,uBAAyBhI,EACpE,OAAO,IAAI4vC,EACPniB,YAAwBJ,EAAgBK,EAAkBC,EAAemiB,EAAWjiB,EAAWxlB,EAAYylB,KAO5GxrB,eAAeytC,EAAyBhzC,EAAgCwF,GAC3E,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAmD0tC,EACnDhzC,MAAO8yC,K,qVCzDJ,MAAMG,EAQTnuC,YACIkyB,EACArW,EACA9c,EACAuiC,EACA/jC,EACAk1B,GAWG,KAAAvyB,YAAc,mDACd,KAAAC,mBAAqB,IAAM,0CAC3B,KAAAC,cAAgB,IAAiB,OAVpCC,KAAK6xB,yBAA2BA,EAChC7xB,KAAKwb,WAAaA,EAClBxb,KAAKtB,UAAYA,EACjBsB,KAAKihC,mBAAqBA,GAAsB,GAChDjhC,KAAK9C,UAAYA,GAAa,EAC9B8C,KAAKqhC,uBAAyBjP,GAW/B,MAAM2b,EAAiD5yC,IAC1D,MAAM8lC,EAAqB9lC,EAAUmB,QAAUnB,EAAUmB,OAAO2kC,mBAC1DpP,EAA2BxiB,IAAyBC,cAAcnU,GACxE,IAAKuF,MAAMC,QAAQsgC,GACf,OAAO,IAAI6M,EAAwCjc,GAGvD,GAAI12B,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMsf,WAAY,CACtH,MAAMA,EAAa7f,OAAOR,EAAUc,eAAeC,MAAMsf,YACnD9c,EAAYvD,EAAUc,eAAeQ,YAAYiC,UACjDxB,EAAY/B,EAAUc,eAAeQ,YAAYS,UACjDgkC,EAAyBhjC,YAAyC/C,GACxE,OAAO,IAAI2yC,EACPjc,EACArW,GACC9c,EACDuiC,EACA/jC,EACAgkC,GAIR,MAAM,IAAI3lC,MAAM,0FAOb6E,eAAe4tC,EAClBnzC,EACAwF,GAEA,IAAKxF,IAAUA,EAAMomC,mBAEjB,OADA5gC,EAAI8B,MAAM,gEAC6B,GAG3C,MAAM8rC,EAAmBpzC,EAAMg3B,yBAAyBtiB,qBACpD1U,EAAMg3B,yBAAyBtiB,oBAAoBwB,SACnDlW,EAAMg3B,yBAAyBtiB,oBAAoBwB,QAAQC,SAC3DnW,EAAMg3B,yBAAyBtiB,oBAAoBwB,QAAQC,QAAQ5P,OAAS,EAChF,IAAKvG,EAAMomC,mBAAmB7/B,SAAW6sC,EAErC,OADA5tC,EAAIoF,UAAUtD,MAAM,mFACmB,GAE3C,MAAM,YAAE1F,GAAgB4D,EAAIpE,eAE5B,IAAIglC,EAA4C,GAChD,MAAMxO,QAA0Byb,YAC5B,CAAE1tC,cAAeH,EAAKkB,oBAAsB1G,EAAMg3B,yBAAyBtiB,qBAC3E1U,EAAM6D,WAAa,EACnB7D,EAAMqC,UACNrC,EAAM2gB,YAAc,EACpB3gB,EAAMomC,oBACJ/+B,KAAKk/B,IACHH,EAAqBpmC,EAAMomC,mBACpBG,EAAc/hC,IAChBvC,GACU,IAAI6O,IAAiB7O,EAAQU,SAAUf,EAAa5B,EAAMwmC,wBAA0B,IAAIA,QAK/G,GAAI5O,EAAkBrxB,OAAS,EAAG,CAE9B,MAAO,CACHmxB,0BAFgD3mB,YAAgB6mB,EAAmBpyB,GAGnF4gC,mBAAoBA,GAGxB,MAAO,CACH1O,oBAAqB,GACrB0O,mBAAoBA,GAKjBhhC,+CAA2B,CACtCC,GAAI,wFACJC,OAAiD6tC,EACjDnzC,MAAOkzC,EACPj0B,WAAW,K,iPCrHR,MAAMq0B,EAGTxuC,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,qCAAsCyB,KAAKvD,aAC7E,KAAAqD,mBAAqB,IAAM,qCAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAepB2D,eAAeguC,EAAmCvzC,EAA+CwF,GAEpG,IAAKxF,EACD,MAAM,IAAIU,MAAM,4EAEpB,MACM0Y,SADkB0Y,YAAatsB,IACd4T,KACjBpM,QAAiBs7B,sCAA4B,IAAIC,0BAA2B/iC,GAElF,OAAI4T,GAASpM,GAAgC,IAApBA,EAASzG,OAM3BgE,YAAwB,CAAE5E,cAAeH,EAAKkB,oBAAqB,IAAMsG,EAASxI,IAAIiR,GAAKA,EAAE9S,UAAW,GAAI,MAC9G0E,KAAKnH,GACKA,GACRuK,MAAOC,IAIN,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,8DACM,IAAIpK,MAAM,iEAZpBoL,QAAQC,IAAI,4GACZvG,EAAI8B,MAAM,4GACuB,IAc1BlC,+CAA2B,CACtCC,GAAI,+EACJC,OAA6CiuC,EAC7CvzC,MApCiBM,GACV,IAAIgzC,EAAuChzC,EAAUc,eAAeQ,gB,oCClB/E,kCAAO,MAAM4xC,EAqBT1uC,YACIxD,EACAwH,EACA2qC,EACAzqC,GAQG,KAAAhE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,OARhCC,KAAK7D,UAAYA,EACjB6D,KAAK2D,SAAWA,EAChB3D,KAAKsuC,cAAgBA,EACrBtuC,KAAK6D,gBAAkBA,K,8UC3B7B,MAAO0qC,EAIT5uC,YAAYxD,EAA4BuC,GAKjC,KAAAmB,YAAc,IAAM,0CACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAgB,OANnCC,KAAK7D,UAAiC,iBAAdA,GAA0BA,EAAYA,EAC9D6D,KAAKtB,UAAYA,GAWlB,MAAM8vC,EAAsDrzC,IAC/D,MAAMgB,EAAYH,8CAAoCb,GACtD,GAAIgB,EACA,OAAO,IAAIoyC,GAA8CpyC,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAE1G,MAAM,IAAInD,MAAM,gHAMjB6E,eAAequC,EAAiD5zC,EAAqDwF,GACxH,MAAM4E,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAC7E,OAAOwG,6BAAmBD,EAAsB5E,GAC3C6B,KAAKiD,GACFA,EACO2uB,YAA8B,CAAEtzB,cAAeH,EAAKkB,oBAAqB,IAAM,CAAE2c,WAAY,CAAC/Y,EAAc3H,UAAWw2B,sBAAsB,IAAO9xB,KAAK5B,IAC5J,GAAIA,GAAYA,EAAS+zB,yCAA2C/zB,EAAS+zB,wCAAwCjzB,OAAQ,OAKzH,OAHuB,UAAGd,EAAS+zB,+CAAZ,aAAG,EAAkDh1B,IAAKvC,IACtE,CAACS,UAAWT,EAAQS,UAAWu4B,kBAAmBh5B,EAAQ4xC,kBAAmBxrB,oBAAqBpmB,EAAQomB,wBAE5F,GAE7B,OAAO,OAGR,MAEN5d,MAAOC,IAER,MADAlF,EAAI8B,MAAMoD,EAAMC,SACV,IAAIjK,MAAM,8DAQT0E,+CAA2B,CACtCC,GAAI,4FACJC,OAA6CsuC,EAC7C5zC,MAAqD2zC,K,+OCzDlD,MAAMG,EAIThvC,YAAYlD,EAAmC4gC,GAKxC,KAAAx9B,YAAc,IAAMtB,YAAc,cAAD,OAAeyB,KAAKq9B,mBAAqBr9B,KAAKvD,aAC/E,KAAAqD,mBAAqB,IAAM,aAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKvD,YAAcA,GAYpB,MAAMmyC,EAAyBzzC,IAClC,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,+DAGpB,OAAO,IAAIozC,EAAaxzC,EAAUc,eAAeQ,cAQ9C2D,eAAeyuC,EAAiBh0C,EAAqBwF,GACxD,MAAM63B,EAAgB,IAAItyB,mBAAiBvF,EAAIpE,eAAeQ,YAAa5B,EAAMwiC,mBAC3ElF,QAAiBC,kBAAYF,EAAe73B,GAElD,IAAK83B,EACD,MAAM,IAAI58B,MAAM,4BAGpB,OAAO48B,EAASwG,WAAa,GAQlB1+B,+CAAsC,CACjDC,GAAI,wDACJC,OAA4B0uC,EAC5Bh0C,MAAqD+zC,K,8ECtDlD,SAASza,EAA+B9zB,EAAoByuC,GAC/D,MAAM5a,EAA8D,GAEpE,QAAsD90B,IAAnDiB,EAAIpE,eAAe+b,IAAI1b,OAAOyyC,mBAAqF,IAAnD1uC,EAAIpE,eAAe+b,IAAI1b,OAAOyyC,iBAC7F,OAAO7a,EAGX,GAAG4a,GAA8BA,EAA2B1tC,OAAS,EACjE,IAAI,MAAMtE,KAAWgyC,EACjB,OAAOzuC,EAAIpE,eAAe+b,IAAI1b,OAAO0yC,gBACjC,IAAK,oBAED,MAAMC,EAAqBC,EAAsC7uC,EAAKvD,GACnEmyC,GACC/a,EAA4BxoB,KAAKujC,GAErC,MACJ,IAAK,iBAED,MAAME,EAA2BC,EAA4C/uC,EAAKvD,GAC/EqyC,GACCjb,EAA4BxoB,KAAKyjC,GAErC,MACJ,QAEI,MAAMjN,EAAamN,EAAiChvC,EAAKvD,GACtDolC,GACChO,EAA4BxoB,KAAKw2B,GAMrD,OAAOhO,EAGJ,SAASmb,EAAiChvC,EAAqBivC,GAClE,GAAGA,GAAyCA,EAAsC/xC,gBAAoE6B,IAAvDkwC,EAAsCC,eAA4B,CAC7J,MAAMC,EAAaF,EAAsCC,eAAiBlvC,EAAIpE,eAAe+b,IAAI1b,OAAOmzC,oBAClGC,EAAqD,CACvDnyC,UAAW+xC,EAAsC/xC,UACjDu4B,kBAAmB0Z,EAAa,EAAGA,EAAa,GAGpD,MAAO,CACHzZ,yBAAyB2Z,EACzBC,sBAAoBD,EAAyB5Z,mBAAqB4Z,EAAyB5Z,kBAAoB,GAC/GF,iBAAkB0Z,EAAsC1Z,kBAIhE,OAAO,KAGJ,SAASsZ,EAAsC7uC,EAAqBivC,GACvE,MAAMM,EAAoBC,EAAoBxvC,EAAKivC,EAAsCQ,qCAEzF,GAAGR,GAAyCA,EAAsC/xC,gBAAsE6B,IAAzDkwC,EAAsCC,eAA8B,CAG/J,MAAMrW,EAAgG,QAA9EoW,EAAsCQ,oCACxD,EACDR,EAAsCZ,kBAErCgB,EAAqD,CACvDnyC,UAAW+xC,EAAsC/xC,UACjDu4B,kBAAmBoD,GAEvB,MAAO,CACHnD,yBAAyB2Z,EACzBK,eAAgBH,EAAmBN,EAAsCQ,yCAAqC1wC,EAC9G4wC,gBAAiBJ,EAAmBN,EAAsCW,0CAAsC7wC,EAChHuwC,mBAAkEvwC,MAA9CswC,EAAyB5Z,mBAAmC4Z,EAAyB5Z,kBAAoB,EAC7HF,iBAAkB0Z,EAAsC1Z,kBAIhE,OAAO,KAGJ,SAASwZ,EAA4C/uC,EAAqBivC,GAC7E,MAAMM,EAAoBC,EAAoBxvC,EAAKivC,EAAsCY,kCACzF,GAAGZ,GAAyCA,EAAsC/xC,gBAAsE6B,IAAzDkwC,EAAsCC,eAA8B,CAG/J,MAAMrW,EAA6F,QAA3EoW,EAAsCY,iCACxD,EACDZ,EAAsCC,eAErCG,EAAqD,CACvDnyC,UAAW+xC,EAAsC/xC,UACjDu4B,kBAAmBoD,GAEvB,MAAO,CACHnD,yBAAyB2Z,EACzBK,eAAgBH,EAAmBN,EAAsCY,sCAAkC9wC,EAC3G4wC,gBAAiBJ,EAAmBN,EAAsCa,uCAAmC/wC,EAC7GuwC,mBAAkEvwC,MAA9CswC,EAAyB5Z,mBAAmC4Z,EAAyB5Z,kBAAoB,EAC7HF,iBAAkB0Z,EAAsC1Z,kBAIhE,OAAO,KAGJ,SAASia,EAAoBxvC,EAAsB+vC,GACvD,IAAIA,EACA,OAAO,EAGV,OAAO/vC,EAAIpE,eAAe+b,IAAI1b,OAAO+zC,iBACjC,IAAK,mBACG,GAAqB,UAAlBD,EACC,OAAO,EAEf,MACJ,IAAK,aACG,GAAoB,OAAjBA,EACC,OAAO,EAEf,MACJ,IAAK,MACD,OAAO,EAEf,OAAO,I,mVC3HJ,MAAME,EAOT3wC,YAAY4wC,EAAoBC,EAAqBC,EAAkBld,EAA6BC,GAQ7F,KAAA3zB,YAAc,qCACd,KAAAC,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAKkW,SAAWq6B,EAChBvwC,KAAKmW,UAAYq6B,EACjBxwC,KAAKga,OAASy2B,EACdzwC,KAAKma,kBAAoBoZ,EACzBvzB,KAAK0zB,eAAiBF,GAYvB,MAAMkd,EAAwCv1C,GAC1C,IAAIm1C,EAMRlwC,eAAemE,EAAgBC,GAClC,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAQnDpE,eAAeuwC,EAClB91C,EACAwF,GAAmB,MAGnB,UAAsBjB,IAAjBvE,EAAMmf,QAAyBnf,EAAMqb,UAAarb,EAAMsb,WAAetb,EAAM64B,gBAE9E,MAAO,GAGX,MAAM3Z,EAAyB,CAC3B7D,SAAUrb,EAAMqb,SAChBC,UAAWtb,EAAMsb,UACjB6D,OAAQnf,EAAMmf,OACdG,kBAAmBtf,EAAMsf,mBAAqB,GAG5C7V,QAAqBC,EAAgBlE,GACrCwzB,EAAoCvvB,SAAH,UAAGA,EAActD,KAAK6D,GAAsB,oEAAdA,EAAKC,aAAnC,aAAG,EAA6GC,UAEvJ,OAAOwV,YAA+B,CAAE/Z,cAAeH,GAAO0Z,GACzD7X,KAAK9B,UACF,IAAIu0B,EAA+D,GAEvE,GAAGd,EAAmC,CACnC,MAAMe,EAAiBJ,EAAOn1B,IAAIo1B,GAASA,EAAMltB,WACjDotB,QAyDXv0B,eACIy0B,EACAx0B,GACI,GAAkC,KAA9Bw0B,aAAA,EAAAA,EAAmBzzB,cAAuChC,IAAtBy1B,EACpC,OAGJ,MAAMC,EAA0B,GAQpC,OAPKD,WAAmBx1B,IAAIa,IACnB,QAAUd,IAAPc,EACC,OAAO40B,EAAcppB,KAAKxL,KAKhC60B,YAA+B,CAAEv0B,cAAeH,GAAOy0B,EAAe,GACxE5yB,KAAM8yB,IAEH,GAAIA,KAA4BA,aAAkCz5B,OAC9D,OAAOy5B,IAKd1vB,MAAOC,IACJlF,EAAI8B,MAAM,8HACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,+HACO,KAtFwBsvB,CAAgCL,EAAgBv0B,GAEhF,MAAMuwC,EAAsBpc,EAAOn1B,IAAIo1B,IAAQ,MAC3C,MAAMU,EAAsB,UAAGR,SAAH,aAAG,EAAyB3zB,KAAKo0B,GAA0BA,EAAuB7tB,YAAcktB,EAAMltB,WAClI,OAmBfnH,eACIi1B,EAAiCC,EACjCj1B,GACA,IAAKg1B,IAAoBA,EAAgBE,cACrC,MAAO,CAAEC,yBAAqBp2B,GAGlC,OAAOq2B,YAAmB,CAAEj1B,cAAeH,GAAOg1B,EAAgBE,eAC7DrzB,KAAMwzB,IAEH,MAAMM,EAAoC,CACtCC,gBAAiBZ,GAGrB,OAAIK,GAAWA,aAAiBn6B,MAIzB,CAAEi6B,oBAAqBQ,EAAcI,2BAA4Bd,GAH7D,CAAEE,oBAAqBQ,EAAcK,WAAYX,EAAOU,2BAA4Bd,KAKlGhwB,MAAOC,IACJlF,EAAI8B,MAAM,2EACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,2EACO,CAAE6vB,oBAAqB,MA5CpBqb,CAAsBpc,EAAOU,EAAwB90B,KAE/D,OAAOuC,QAAQgwB,IAAIge,KAEtBtrC,MAAOC,IACJlF,EAAI8B,MAAM,uDACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAd,uDACO,KAgFJ1F,+CAA2B,CACtCC,GAAI,2EACJC,OAAyDwwC,EACzD91C,MAAO61C,K,kOC7JJ,MAAM/kC,EAOThM,YAAYxD,EAA4BM,EAAmC21B,GAOpE,KAAAvyB,YAAc,KACjB,MAAM,SAAE1B,EAAF,UAAYE,GAAc2B,KAAKqhC,uBACrC,OAAO9iC,YAAcQ,YAAY,CAACiB,KAAK7D,UAAWgC,EAAUE,IAAa2B,KAAKvD,cAE3E,KAAAqD,mBAAqB,IAAM,cAC3B,KAAAC,cAAgB,IAAiB,cAXpCC,KAAK7D,UAAiC,iBAAdA,EAAyBmX,SAASnX,EAAW,IAAMA,EAC3E6D,KAAKqhC,uBAAyBjP,EAC9BpyB,KAAKvD,YAAcA,EACnBuD,KAAKtB,UAAYjC,EAAYiC,WAc9B,MAAM2iC,EAGT1hC,YAAYxB,EAAoBE,GAC5B2B,KAAK7B,SAAWA,IAAY,EAC5B6B,KAAK3B,UAAYA,IAAa,GA6DtC+B,eAAe0wC,EACXp8B,EACAq8B,EACAC,EACA3wC,GAEA,MAAMs4B,EAAkC,CAAEpxB,WAAYlH,EAAIpE,eAAeQ,YAAYiC,UAAWvB,UAAW,GACrG8zC,EAAwBv8B,EACzBrV,IAAIxE,IACL,GAAIA,EAAMwmC,uBAAuBljC,UAAY4yC,EAAgBlb,IAAIh7B,EAAMsB,WACnE,OAAOtB,EAAMsB,YAGhBkN,OAAOC,SAEX,OAAOsvB,YACA,CAAEp4B,cAAeH,EAAKkB,oBAAqB,IAC3Co3B,EACAsY,EACA,IAAI1oB,KACJ,KACA,IACA,GAEFrmB,KAAKnH,IAEHA,EAAOuQ,QAAQutB,IACX,MAAMuN,EAAuC4K,EAAkBhwC,KAAKsP,GACzDA,EAAEwiB,gBAAmBxiB,EAAEwiB,eAAet1B,WAAaq7B,EAAat7B,WAEvE6oC,IAGIhnB,KAAU/e,EAAIpE,eAAeQ,YAAY4iB,yBAA0B,YACnEwZ,EAAaC,wBAA0BD,EAAaE,eAExDqN,EAAY8K,aAAerY,OAItCvzB,MAAOC,IACJ,MAAME,EAAYpF,EAAIoF,UACtBA,EAAUE,MAAM,sDAChBF,EAAUC,UAAUH,KAIhCnF,eAAe+wC,EACXz8B,EACAq8B,EACAC,EACA3wC,GAEA,MAAM4wC,EAAwBv8B,EACzBrV,IAAIxE,IACN,GAAIA,EAAMwmC,uBAAuBhjC,WAAa0yC,EAAgBlb,IAAIh7B,EAAMsB,WACpE,OAAOtB,EAAMsB,YAGfkN,OAAOC,SAEZ,OAAOqW,YAAuB,CAAEnf,cAAeH,EAAKkB,oBAAqB,IAAM0vC,GAC1E/uC,KAAKnH,IACFA,EAAOuQ,QAAQwU,IACX,MAAMsmB,EAAuC4K,EAAkBhwC,KAAKsP,GACzDA,EAAEwiB,gBAAmBxiB,EAAEwiB,eAAet1B,WAAasiB,EAAcviB,WAExE6oC,IACAA,EAAYgL,cAAgBtxB,OAIvCxa,MAAM+rC,IACH,MAAM5rC,EAAYpF,EAAIoF,UACtBA,EAAUE,MAAV,2DACAF,EAAUC,UAAU2rC,KAIjBpxC,yCAA2B,CACtCC,GAAI,8DACJC,OAtHGC,eAAqCsU,EAA4BrU,GACpE,IAAKK,MAAMC,QAAQ+T,KAAYA,EAAOtT,OAElC,OADAf,EAAI8B,MAAM,2DACY,GAG1B,MAAM,YAAE1F,GAAgB4D,EAAIpE,eACtBoP,EAAgBqJ,EAAOrV,IACxBxE,GACU,IAAIqV,IAAarV,EAAMsB,UAAWM,IAIjD,OAAO0T,YAAkB9E,EAAehL,GACnC6B,KAAKnH,GACKA,EAAOsE,IAAIvC,IACX,CAAEg2B,eAAgBh2B,MAG5BoF,KAAM8uC,IACX,MAAMD,EAAkB,IAAI5F,IAAI6F,EAAkB3xC,IAAIxE,GAASA,EAAMi4B,gBAAkBj4B,EAAMi4B,eAAet1B,WAE9F8zC,EAA0B,CAC5BR,EAAiBp8B,EAAQq8B,EAAiBC,EAAmB3wC,GAC7D8wC,EAAmBz8B,EAAQq8B,EAAiBC,EAAmB3wC,IAE3E,OAAOuC,QAAQgwB,IAAI0e,GAAyBpvC,KAAK,IACtC8uC,KAGN1rC,MAAMvJ,IACHsE,EAAIoF,UAAUC,UAAU3J,GACxBsE,EAAIoF,UAAUE,MAAd,iCACO,MAsFf9K,MAxIwBM,IACxB,IAAI6U,EAAa7U,EAAUmB,QAAUnB,EAAUmB,OAAO0T,WACtD,MAAMkxB,EAAyBhjC,YAAyC/C,GAIxE,MAH0B,iBAAf6U,IACPA,EAAaA,EAAW6J,MAAM,MAE9BnZ,MAAMC,QAAQqP,IAAeA,EAAW5O,OACjC4O,EAAW3Q,IAAKlD,GACZ,IAAIwP,GAAkBxP,EAAWhB,EAAUc,eAAeQ,YAAaykC,IAG3E,IA8HXpnB,WAAW,K,yFC7JfxX,+BAAqB,CACjBC,SAAU,oDACVC,eApBkBpC,MAClBqC,EACA2M,EACAzM,KAEKjC,MAAMC,QAAQyO,KACfA,EAAiB,CAACA,IAGtBA,EAAe9D,QAAQlL,UACnB,GAAItD,EAAS,CACTA,QAAgB8F,QAAQC,QAAQ/F,GAChC,MAAMgG,EAAcC,YAAgCjG,GACpD6F,EAAc1G,eAAe+G,cAAcF,EAAYG,YAAcH,MAQ7EM,cAzBmBhD,e,kCCTvB,gGAsBM,MAAO+tB,EAQTxuB,YACIb,EACArC,EACA8E,EACAgsB,EACAzb,EACAsc,GAUG,KAAAvuB,YAAc,IAEjBtB,wBAAc,GAAD,OACNyB,KAAKlB,SADC,YACWkB,KAAK8R,UAAY9R,KAAKouB,WADjC,YAC+CpuB,KAAKutB,SAASluB,IAAIuuB,GAAW,GAAJ,OAAOA,EAAQW,iBAAf,OAAiCX,EAAQY,sBAAwB,IAAjE,OAAsEZ,EAAQa,uBAAyB,GAAvG,MADxE,YACyLjZ,KAAKa,UAAUrW,KAAKuB,sBACtNvB,KAAKvD,aAEN,KAAAqD,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,UAfpCC,KAAKlB,SAAWA,EAChBkB,KAAKvD,YAAcA,EACnBuD,KAAK8R,SAAWA,EAChB9R,KAAKouB,WAAaA,EAClBpuB,KAAKuB,oBAAsBA,EAC3BvB,KAAKutB,SAAWA,GA8BjB,MAAMoB,EAA4B,CACrC3vB,EACA4vB,KAEA,MAAM9vB,EACyC,aAA3CE,EAAK/C,eAAeG,UAAU0C,UAA4BE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMsf,WAC3G,WACA,SAEJja,EAAsB8N,2BAAyBC,cAActQ,GAAMuQ,oBACnEsf,EAAgB9B,YAAuB/tB,EAAK/C,gBAMlD,GAJG+C,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAM4yB,UACtDvtB,EAAoBwP,QAAU,CAAEC,QAAuBwE,KAAKC,MAAMsY,mBAAmB/uB,EAAK/C,eAAeC,MAAM4yB,YAGlG,aAAbhwB,EACA,OAAO,IAAI8vB,EACP9vB,EACAE,EAAK/C,eAAeQ,YACpB8E,EACAstB,IACE7vB,EAAK/C,eAAeG,UAAUC,QAAW2C,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMsf,YAAe,QACjHpc,GAED,GAAiB,WAAbN,GAAyBE,EAAK/C,eAAeC,MACpD,OAAO,IAAI0yB,EACP9vB,EACAE,EAAK/C,eAAeQ,YACpB8E,EACAstB,OACAzvB,EACAJ,EAAK/C,eAAeC,MAAMZ,GAIlC,MAAM,IAAIC,MAAM,0D,mBC7GpB40B,EAAOohB,QAAUC,O,wPCaX,MAAOC,EAET9xC,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,wBACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAA0B,OAP7CC,KAAKnF,MAAQA,GAiBd,MAAM62C,EAA6B,CACtC1yC,EADsC,KAGhB,IADtB,YAAE2pB,EAAF,WAAeD,GACO,EACtB,MAAMviB,EAAYnH,EAAK/C,eAAeyF,KAAKoE,sBAC3C,OAAO,IAAI2rC,EACPhpB,YACItiB,EACAuiB,EACAC,KAKLvoB,eAAeuxC,EAClB92C,EACAwF,GAEA,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAiDwxC,EACjD92C,MAAO62C,K,wICzCJ,MAAME,EAITjyC,YAAYrD,EAAmCL,GAKxC,KAAA6D,mBAAqB,IAAc,sBACnC,KAAAD,YAAc,IAAclB,qCAA2B,sBAAuBqB,KAAK/D,gBACnF,KAAA8D,cAAgB,IAAiB,UANpCC,KAAK1D,OAASA,GAAU,GACxB0D,KAAK/D,eAAiBA,GA6DfgE,+CAA2B,CACtCC,GAAI,gEACJC,OA/CWC,MAAOvF,EAAiC2J,KACnD,MAAM,OAAElI,GAAWzB,EACnB,IAAIm3B,EACJ,IACIA,QAAwB8Q,6BAZO3nC,KACnC,GAAIA,GAAaA,EAAUc,eACvB,OAAO,IAAIo2B,uBAAqBl3B,EAAUc,gBAG9C,MAAM,IAAIV,MAAM,uDAO+Bs2C,CAA8BrtC,GAAUA,GACrF,MAAOzI,IAGT,GAAIi2B,EAAiB,CACjB,IAAI8f,EACJ,IAEI,MAAM//B,EAAYM,0BAAgB7N,EAAQvI,eAAewC,OAAQuzB,EAAgB1f,kBAC3EiqB,EAAkBvK,EAAgBxf,iBAAmBwf,EAAgBltB,KAC3EktB,EAAgBltB,KAAOiN,EACvBigB,EAAgBxf,gBAAkB+pB,EAClCuV,EAAc9+B,yBAAegf,GAE7B,MAAM7C,EAAkB3qB,EAAQvI,eAAekzB,gBAE3C2iB,EADAA,GAAe3iB,EACJ,kBAAcA,GAAd,OAAgC2iB,QAE7B1yC,EAEpB,MAAOrD,GACL+1C,OAAc1yC,EAElB,MAAO,CACHsN,MAAOslB,EAAgBltB,KACvBsqB,gBAAiB4C,EAAgB+f,aACjC1iB,aAAcyiB,EACdxiB,WAAYhzB,GAAUA,EAAOgzB,YAG9B,OAAIhzB,EACA,CACHoQ,MAAOpQ,EAAOoQ,MACd0iB,gBAAiB9yB,EAAOizB,cAAgBjzB,EAAOizB,aAAapW,IAC5DmW,WAAYhzB,GAAUA,EAAOgzB,YAG1B,IAOXz0B,MAAQmE,GACG,IAAI4yC,EAAoD5yC,EAAK1C,OAAQ0C,EAAK/C,mB,kNCzElF,MAAM+1C,EAAgCn3C,IACzC,MAAMsB,EAAYH,8CAAoCnB,GACtD,GAAIsB,EAEA,OAAO,IAAIuH,IAAuBvH,EAAW8wC,0BAAgBpyC,GAAQA,EAAMoB,eAAewC,OAAQyuC,2BAAiBryC,IAEvH,MAAM,IAAIU,MAAM,yGAGb6E,eAAe6xC,EAA0Bp3C,EAA+BwF,GAC3E,IAuCJ,SAAsBxF,GAClB,OAAOA,GAASA,EAAMsB,UAAUiF,OAAS,GAAKvG,EAAM8I,SAASvC,OAAS,GAAKvG,EAAM+I,iBAAiBxC,OAAS,GAAKvG,EAAMoJ,SAAW,EAxC5HkpC,CAAatyC,GACd,MAAM,IAAIU,MAAJ,yDACgDV,EAAMsB,UADtD,wBAC+EtB,EAAM8I,SADrF,gCACqH9I,EAAM+I,mBAGrI,IAAIqU,EACA,UAAGpd,EAAMgJ,gBAAT,iCAAiDhJ,EAAMsB,WAAvD,oBACatB,EAAM8I,UADnB,4BAEqB9I,EAAM+I,kBAF3B,oBAGa/I,EAAMoJ,UAHnB,mBAIYpJ,EAAMiJ,SAJlB,qBAKcjJ,EAAMmJ,WASxB,YAP0B5E,IAAtBvE,EAAMkJ,aAA6BlJ,EAAMkJ,YAAY3C,OAAS,IAC9D6W,EAAU,UAAMA,EAAN,wBAAgCpd,EAAMkJ,cAG5B,OAApBlJ,EAAMqJ,YACN+T,EAAU,UAAMA,EAAN,sBAA8Bpd,EAAMqJ,YAE3CkpC,sBAAqBn1B,EAAY,OACnC/V,KAAK5B,GACEA,EAAS4N,MAAQ5N,EAAS4N,KAAKF,OAAS1N,EAAS4N,KAAKF,MAAM5M,OAAS,EAC9D,CACH4M,MAAO1N,EAAS4N,KAAKF,MAAM3E,OAAO4V,IAAMA,EAAEizB,aAC1CC,WAAY7xC,EAAS4N,KAAKikC,aAGlC9xC,EAAI8B,MAAJ,0DACO7B,EAAS4N,OAEnB5I,MAAMC,IAIH,MAHAlF,EAAI8B,MAAJ,yDACA9B,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,yDACMJ,IAQHtF,+CAA2B,CACtCC,GAAI,iEACJC,OAA0B8xC,EAC1Bp3C,MAAOm3C,K,4OCtDX,MAAMllB,EAAwB,CAAC,gBAAiB,uBAAwB,kBAAmB,qBAAsB,wBAAyB,YAM7HC,EAA0B9wB,IACnC,MAAM+wB,EAAyBC,EAAuC,WAAYhxB,GAClF,OAAK+wB,GAA2BA,EAAuB5rB,OAIzB4rB,EAAuB3tB,IAAK6tB,IACtD,IACI,MAAMC,EAAqC,GAK3C,OAJAL,EAAsBxhB,QAAQ,CAAC8hB,EAAYte,KAEvCqe,EAAcC,GAAcF,EAAkBpe,KAE3Cqe,EACT,MAAMpxB,GACJ,UAELsN,OAAOC,SAdC,IAyCF+jB,EAAmB,CAACC,EAAcC,EAAkCC,EAA+B9e,SAE3FtP,IAAbmuB,GACKA,EAASnsB,OAGVksB,EAAQG,aAAaC,IAAI,WAAYlY,KAAKa,UA1BrBkX,KAC7B,MAAMI,EAA4C,GAWlD,OATAJ,EAASjiB,QAASsiB,IACd,MAAMV,EAAyC,GAC/CJ,EAAsBxhB,QAAS8hB,IAE3BF,EAAkBxhB,KAAKkiB,EAAQR,MAEnCO,EAAmBjiB,KAAKwhB,KAGrBS,GAcqDE,CAAiBN,KAFrED,EAAQG,aAAaK,OAAO,YAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ/f,WAGInO,IAAnBouB,GACIA,EAAepsB,OAGfksB,EAAQG,aAAaC,IAAI,UAAWlY,KAAKa,UAAUmX,IAFnDF,EAAQG,aAAaK,OAAO,WAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ/f,OAGfmB,GACA4e,EAAQG,aAAaC,IAAI,OAAQhf,EAAUlH,YAGxC8lB,EAAQ/f,MAQN0f,EAAkB,CAAIjkB,EAAa/M,IACzCA,EAAeC,OAASD,EAAeC,MAAM8M,GAClCwM,KAAKC,MAAMsY,mBAAmB9xB,EAAeC,MAAM8M,KAE1D,KAOEglB,EAAiB/xB,GACvBya,UAASC,UACD,IAAIsX,IAAInnB,OAAOonB,SAAS3gB,MAG3BtR,EAAe6c,IAAIb,WAAW1K,KACvB,IAAI0gB,IAAIhyB,EAAe6c,IAAIb,WAAW1K,MAEtC,IAAI0gB,IAAsBhyB,EAAe6c,IAAIb,a,4QCnHzD,MAAMm6B,EAAbzyC,cACW,KAAAE,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,QAGrC,MAAMsyC,EAAwCl3C,IACjD,MAAM,eAAEc,GAAmBd,EAG3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,0BAGpB,OAAO,IAAI62C,GAGRhyC,eAAekyC,EAA0Bz3C,EAAoCwF,GAChF,OAAO0+B,YAAgB,CAAEv+B,cAAeH,IACnC6B,KAAK88B,GACGA,EAIEuT,YAAc,CAAE/xC,cAAeH,GAAO2+B,EAAgBC,mBACxD/8B,KAAMswC,GACIA,EAAMpxC,QAEhBkE,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAI8B,MAAM,uDACJ,IAAI5G,MAAM,yDAVb,GAad+J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,gEACd,IAAIpK,MAAM,kEAGb0E,+CAA2B,CACtCC,GAAI,+BACJC,OAAkCmyC,EAClCz3C,MAAOw3C,K,+JCvCJjyC,eAAeqyC,EAA2BhpC,EAAuClI,EAA2ClB,GAC/H,OAAOqyC,YAA8B,CAAElyC,cAAeH,EAAKkB,oBAAqBA,GAAuBkI,GAAgBvH,KAAMywC,IACzH,IAAKA,EAED,OADAtyC,EAAI8B,MAAM,sDACyB,GAGvC,MAAMpH,GAAU43C,GAAmB,IAAItzC,IAAKuzC,GAA6DA,GAEzG,OAAK73C,EAAOqG,OAKLrG,GAJHsF,EAAI8B,MAAM,8EACyB,MCVxC,MAAM0wC,UAAkC1kB,IAA/CxuB,kCACW,KAAAG,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKlB,UACJkB,KAAKutB,UAAYvtB,KAAKutB,SAASnsB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBwP,SAAW/Q,KAAKuB,oBAAoBwP,QAAQC,SAAWhR,KAAKuB,oBAAoBwP,QAAQC,QAAQ5P,OAAS,EAExJ,UAEA,eAuEJnB,+CAA2B,CACtCC,GAAI,iFACJC,OA1DJC,eAAsBvF,EAAiCwF,GACnD,IAAIyyC,EACJ,GAAsB,aAAnBj4C,EAAMiE,SAAyB,CAC9B,GAAGjE,EAAMiX,SACL,OAAO2gC,EACH,CACI32B,YAAY,CAACjhB,EAAMiX,UACnB+J,QAAU,CACNtU,UAAW1M,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAM0G,oBACNlB,GAEJ,MAAM,IAAI9E,MAAM,oFAGpB,GAAIV,EAAMuzB,YAAe/tB,EAAIpE,eAAeC,OAASmE,EAAIpE,eAAeC,MAAMZ,EAC1E,OAAOm3C,EACH,CACI3Y,gBAAiBj/B,EAAMuzB,WACvBvS,QAAU,CACNtU,UAAW1M,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAM0G,oBACNlB,GAEA,GAAIxF,EAAMuzB,YAAe/tB,EAAIpE,eAAeC,OAASmE,EAAIpE,eAAeC,MAAMC,UAAY,CAEtF,GADA22C,EAAkBn3C,OAAOd,EAAMuzB,YAC3BzyB,OAAO6S,MAAMskC,GACb,MAAM,IAAIv3C,MAAM,mDAEhB,OAAOk3C,EACH,CACI52B,QAAU,CACNtU,UAAW1M,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,WAEjC61C,qBAAsB,QACtBxzB,IAAK,CAACuzB,GAAmB,IAE7Bj4C,EAAM0G,oBACNlB,GAGR,MAAM,IAAI9E,MACN,sGAUpBV,MAlEiBmE,GACV2vB,YAA0B3vB,EAAM6zC,M,2QCvBrC,MAAOG,EAAbrzC,cACW,KAAAE,YAAc,IAAM,6BACpB,KAAAC,mBAAqB,IAAM,6BAC3B,KAAAC,cAAgB,IAAiB,QAGrC,MAAMwJ,EAAc,IAChB,IAAIypC,EAMR5yC,eAAe6yC,EAAoCp4C,EAAwCwF,GAE9F,IAAKxF,EAED,MADAwF,EAAIoF,UAAUC,UAAU,IAAInK,MAAM,4EAC5B,IAAIA,MAAM,2EAGpB,MACM0Y,SADsB8iB,YAAiB12B,IAClBusB,aAAa3Y,KAGxC,OAAIA,GAAQA,EAAK6J,WAAa7J,EAAK6J,UAAU1c,OAClC+O,4BACa8D,EAAK6J,UAAUze,IAAI0hB,IAC/B,GAAIA,EAASxjB,UACT,OAAO,IAAI2S,eAAa6Q,EAASxjB,UAAW8C,EAAIpE,eAAeQ,eAGpE4M,OAAOC,SACVjJ,GAEC6B,KAAK2F,GACEA,GAGO,IAGdvC,MAAMC,IAEH,MADAlF,EAAIoF,UAAUC,UAAUH,GAClB,IAAIhK,MAAM,wFAIJ,GAGb0E,+CAA2B,CACtCC,GAAI,2EACJC,OAAkC8yC,EAClCp4C,MAAO0O,K,mBC7DX4mB,EAAOohB,QAAU2B,U,0FCqBjB5wC,+BAAqB,CACjBC,SAAU,6CACVC,eAXcpC,MAAOqC,EAAwCwR,EAAqBtR,KAClF,IACI,MAAMge,QAAmB/d,QAAQC,QAAQnC,MAAMC,QAAQsT,GAAQA,EAAK,GAAKA,GACzEtR,EAAc1G,eAAe+G,cAAc2d,WAAaA,EAC1D,MAAO5kB,GACL4G,EAAc8C,UAAUE,MAAM,yCAA0C5J,KAO5EqH,cAhBehD,e,2PCKZ,MAAM8mC,EAITvnC,YAAYwzC,EAAwB5xC,GAK7B,KAAA1B,YAAc,iCAAiBG,KAAKmzC,cAAtB,sBAAuCnzC,KAAKuB,2BAA5C,iBAAuC,EAA0B/F,cAAjE,aAAuC,EAAkCC,IAAzE,sBAAgFuE,KAAKuB,2BAArF,iBAAgF,EAA0B/F,cAA1G,aAAgF,EAAkCK,OAChI,KAAAiE,mBAAqB,IAAM,cAC3B,KAAAC,cAAgB,IAAiB,WACjC,KAAAuD,kBAAoB,KAAM,EAP7BtD,KAAKmzC,cAAgBA,GAAiB,GACtCnzC,KAAKuB,oBAAsBA,GAe5B,MAAM6xC,EAA+B,CAACj4C,EAAiCg4C,EAAwB5xC,KAClG,MAAM,eAAEtF,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,mEAGpB,OAAO,IAAI2rC,EAAuBiM,GAAiB,GAAI5xC,IAQpDnB,eAAeizC,EAAwBx4C,EAA+BwF,GACzE,IAEI,MAAMizC,EAAuD,CACzDjO,cAAexqC,EAAMs4C,cACrBl1C,WAAYoC,EAAIpE,eAAeyF,KAAKoE,uBAExC,OAAOytC,YACH,CACI/yC,cAAeH,EACfkB,oBAAqB1G,EAAM0G,qBAE/B+xC,GAEN,MAAO/tC,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,oCAAqCA,GACnDA,GAQCtF,+CAA0C,CACrDC,GAAI,gFACJC,OAAgCkzC,EAChCx4C,MAAOu4C,K,yTC3DL,MAAOI,UAAiBC,sBAG1B9zC,YAAY0H,EAAYqsC,GACpB/I,MAAM,CACF5qC,cAAe,OACf+gC,gBAAiB,iBACjBD,SAAU,mBAEd7gC,KAAK3D,OAASgL,EACdrH,KAAK0zC,WAAaA,GAkBnBtzC,eAAeuzC,EAClBtzC,EACAlE,GAEA,IAAKkE,EACD,MAAM,IAAI9E,MAAJ,4EAEV,IAAI69B,EAAyB,CAACwa,KAAK,IACnC,MAAMC,EAAoB,CAAC13C,GACrBmE,QA7CUF,iBAAmF,IAA5E4P,EAA4E,uDAArD,GAAI3P,EAAiD,uCACnG,MAAMgL,EAAgB2E,EAAW3Q,IAAIlD,GAAa,IAAI+T,eAAa/T,EAAUkE,EAAIpE,eAAeQ,cAChG,OAAO0T,4BAAkB9E,EAAehL,GA2CjB+P,CAAYyjC,EAASxzC,GAI5C,OAHIC,GAAYA,EAASc,SACrBg4B,EAAc,CAACwa,KAAKtzC,EAAS,GAAGwE,MAAQ,KAErCs0B,EAMJh5B,eAAe0zC,EAClBzzC,EACAmb,GAEA,IAAKnb,EACD,MAAM,IAAI9E,MAAJ,6EAEV,IAAIwhC,EAA0B,CAAC6W,KAAK,IACpC,MAAM/4C,EAAO,IAAIw3B,uBAAqBhyB,EAAIpE,gBAC1CpB,EAAM2gB,WAAWA,EACjB,MAAMlb,QAAkBwiC,6BAAmBjoC,EAAMwF,GAIjD,OAHIC,IACAy8B,EAAe,CAAC6W,KAAKtzC,EAASwE,MAAQ,KAEnCi4B,EAMJ38B,eAAe2zC,EAClBl5C,EACAwF,GAEA,IAAKA,EACD,MAAM,IAAI9E,MAAJ,qEAEV,IAAIy4C,EAA4B,CAACJ,KAAK,IAEtC,OAD8B/4C,EAAO64C,WAClBxqC,eACf,IAAK,WAED,OADA8qC,QAAuBF,EAAgCzzC,EAAgBxF,EAAOwB,QACvE23C,EACX,IAAK,UAED,OADAA,QAAuBL,EAA+BtzC,EAAgBxF,EAAOwB,QACtE23C,EACX,QACI,OAAOA,GAIJ/zC,+CAA2B,CACtCE,OAA6B4zC,EAC7Bl5C,MAzEiBM,IACjB,KAAKA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeG,WACpE,MAAM,IAAIb,MAAM,uBAEnB,MAAMyK,EAAkB7K,EAAUc,eAAeG,UACjD,OAAO,IAAIo3C,EAASlgC,SAAStN,EAAM3J,QAAU,IAAI,IAAK2J,EAAMlH,UAAY,Q,0PC9BrE,MAAMk/B,EAITr+B,YAAYlD,EAAmC4gC,GAMxC,KAAAx9B,YAAc,IAAMtB,wBAAc,kBAAD,OAAmByB,KAAKq9B,mBAAqBr9B,KAAKvD,aACnF,KAAAqD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,UAPpCC,KAAKq9B,kBAAoBA,EACzBr9B,KAAKvD,YAAcA,GAapB,MAAMw3C,EAA6B94C,IACtC,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,wEAGpB,OAAO,IAAIyiC,EAAoB7iC,EAAUc,eAAeQ,cAQrD2D,eAAeukC,EAAiB9pC,EAA4BwF,GAC/D,OAAO6zC,YAA6B,CAAE1zC,cAAeH,EAAKkB,oBAAqB,IAAM1G,EAAMwiC,mBAAqB,MACvGn7B,KAAKiyC,IACF,IAAKA,GAASA,EAAM/yC,OAAS,EACzB,MAAoB,GAGxB,MAAMgzC,EAAYD,EAAM,GAExB,OAAOE,YAAoB,CAAE7zC,cAAeH,GAAO+zC,EAAU/tB,YACxDnkB,KAAK2iC,IACFA,EAAKyP,sBAAwBF,EAAUE,sBACvCzP,EAAK0P,2BAA6BH,EAAUG,2BACrC1P,IAGVv/B,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,8BACM,IAAIpK,MAAM,kCAG3B+J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,EAAMC,SAC9BnF,EAAIoF,UAAUE,MAAd,wCACM,IAAIpK,MAAM,0CAQjB0E,+CAAwC,CACnDC,GAAI,6DACJC,OAA8BwkC,EAC9B9pC,MAAqDo5C,K,8LCpDlD,MAAMva,UAAyCvL,IAAtDxuB,kCACW,KAAAG,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKlB,UACJkB,KAAKutB,UAAYvtB,KAAKutB,SAASnsB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBwP,SAAW/Q,KAAKuB,oBAAoBwP,QAAQC,SAAWhR,KAAKuB,oBAAoBwP,QAAQC,QAAQ5P,OAAS,EAExJ,UAEA,eA2HJnB,+CAA2B,CACtCC,GAAI,qFACJC,OA3FJC,eACIvF,EACAwF,GAEA,IAAImf,EACAma,EACAmZ,EACJ,MAAMlZ,EAA6C,GAMnD,GALAA,EAAoB/d,QAAU,CAAEtU,UAAWlH,EAAIpE,eAAeQ,YAAYiC,UAAWvB,UAAWkD,EAAIpE,eAAeQ,YAAYS,WAC/H08B,EAAoBC,WAAah/B,EAAM0yB,SACvCqM,EAAoB7d,kBAAoBlhB,EAAMwzB,kBAC9CuL,EAAoB4a,sBAAuB,EAEpB,aAAnB35C,EAAMiE,UAA4BuB,EAAIpE,eAAeC,OAASmE,EAAIpE,eAAeC,MAAMsf,WAAa,CACpG,IAAI3gB,EAAMiX,SAUN,MAAM,IAAIvW,MACN,wFAVJq+B,EAAoB9d,YAAc,CAACjhB,EAAMiX,UAAY,GACrD6nB,EAAU3d,YACN,CACIxb,cAAeH,EACfkB,oBAAqB1G,EAAM0G,qBAE/Bq4B,QAQR,GAAI/+B,EAAMuzB,YAAe/tB,EAAIpE,eAAeC,OAASmE,EAAIpE,eAAeC,MAAMZ,EAC1Es+B,EAAoBE,gBAAkBj/B,EAAMuzB,WAC5CuL,EAAU3d,YACN,CACIxb,cAAeH,EACfkB,oBAAqB1G,EAAM0G,qBAE/Bq4B,OAED,CACH,KAAI/+B,EAAMuzB,YAAe/tB,EAAIpE,eAAeC,OAASmE,EAAIpE,eAAeC,MAAMC,WAgB1E,MAAM,IAAIZ,MACN,qGAfJ,GADAu3C,EAAkBn3C,OAAOd,EAAMuzB,YAC3BzyB,OAAO6S,MAAMskC,GACb,MAAM,IAAIv3C,MAAM,mDAEhBq+B,EAAoBmZ,qBAAuB,QAC3CnZ,EAAoBra,IAAM,CAACuzB,GAAmB,GAC9CnZ,EAAU3d,YACN,CACIxb,cAAeH,EACfkB,oBAAqB1G,EAAM0G,qBAE/Bq4B,GAWpBpa,QAA6Bma,EAE7B,MAAM/f,EAAiB4F,EAAqBngB,IAAIkzB,IAC5C,MAAM/wB,EAAc3E,kCAChB01B,EACAlyB,EAAIpE,eAAeQ,aAOvB,OAJI+E,IACA+wB,EAAoBx1B,gBAAkByE,GAGlC+wB,IASZ,OALK7b,UAASC,WACVtW,EAAI05B,OAAO,IAAI7X,qBAAsB,CAAE8X,kBAAmBL,EAAQ3+B,SAAS6Y,OAAS,EAAGiO,cAAejnB,EAAM0yB,WAIzG,CACH1lB,SAAU+R,EACV/F,MAAO8lB,EAAQ3+B,SAAS6Y,OAAS,IAOrChZ,MAjHiBmE,IACjB,MAAMnE,EAAQ8zB,YAA0B3vB,EAAM06B,GAc9C,OAXI7+B,EAAM0G,oBAAoB/F,QAAUwD,EAAK1C,SACzCzB,EAAM0G,oBAAoB/F,OAAOC,IAAMuD,EAAK1C,OAAOiS,cAAgB,GAInE1T,EAAM0G,oBAAoB/F,QAAUwD,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMJ,OAC3FjB,EAAM0G,oBAAoB/F,OAAOK,MAAQmD,EAAK/C,eAAeC,MAAMJ,MAGvEjB,EAAM0G,oBAAoBsS,OAAQ,EAE3BhZ,M,2NCtDJ,MAAMuoC,EAAbzjC,cACW,KAAAE,YAAc,yBACd,KAAAC,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,QAUrCK,eAAe+iC,EAA4BtoC,EAAgCwF,GAE9E,IAAKxF,EACD,MAAM,IAAIU,MAAM,mEAGpB,MACM0Y,SADkB0Y,YAAatsB,IACd4T,KAGvB,OAAIA,GAAQA,EAAK6J,WAAa7J,EAAK6J,UAAU1c,QACzCf,EAAI8B,MAAM,uCACHgO,4BACa8D,EAAK6J,UAAUze,IAAI0hB,IAC/B,GAAIA,EAASxjB,UACT,OAAO,IAAI2S,eAAa6Q,EAASxjB,UAAW8C,EAAIpE,eAAeQ,eAGpE4M,OAAOC,SACVjJ,GAEC6B,KAAM2F,GACCA,GAGO,IAGdvC,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMiC,YAChBnH,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAd,8EACM,IAAIpK,MAAM,kFAI5B8E,EAAI8B,MAAM,wDACc,IAGblC,+CAA2B,CACtCC,GAAI,wEACJC,OAAkCgjC,EAClCtoC,MAlDiBM,GACV,IAAIioC,K,oCChBf,qIAKA,MAAM,IAAEx8B,EAAF,MAAOrB,GAAWoB,QAmFX8tC,EAAsB,GAGtBC,EAAgC,Q,wTCpFtC,MAAMC,UAAsCtjC,kBAG/C1R,YAAY6E,EAA0B8M,EAA4B5V,EAAmBk5C,GACjFjK,MAAMnmC,EAAS8M,EAAmB5V,GAK/B,KAAAoE,mBAAqB,IAAM,2BAC3B,KAAAD,YAAc,cAASG,KAAK40C,iBAAd,YAAkC50C,KAAKtB,WALxDsB,KAAK40C,iBAAmBA,GAAoB,GAW7C,MAAMzhC,EAAkChY,IAC3C,MAAMiY,EAAWjY,EAAUmB,QAAUnB,EAAUmB,OAAO+W,eAAiBC,SAASnY,EAAUmB,OAAO+W,cAAe,IAC1GuhC,EACDz5C,EAAUc,eAAeG,WAA6D,aAAhDjB,EAAUc,eAAeG,UAAU0C,UAA2B3D,EAAUc,eAAeG,UAAUC,QACvIlB,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMsf,YAClE,EAEJ,OAAO,IAAIm5B,EAA8Bx5C,EAAUc,gBAAgB,EAAMmX,GAAWwhC,IAOjFx0C,eAAey0C,EAAkCh6C,EAAsCwF,GAE1F,MAAMy0C,QAA8BC,kBAChC,IAAI1jC,kBACAhR,EAAIpE,gBACJ,EACApB,EAAMa,UACV2E,GACE20C,EAAqC,GAErCC,EAAgBnjC,GACfA,EAAStU,WAAa3C,EAAM+5C,kBAC3BI,EAActpC,KAAKoG,IACZ,MACAA,EAASoB,WAAYpB,EAASoB,SAAS9R,cAC9C0Q,EAASoB,SAAS5H,QAAS4pC,IACpBD,EAAaC,IACZF,EAActpC,KAAKoG,KAYnC,OAJAgjC,EAAsBxpC,QAASiH,IAC3B0iC,EAAa1iC,KAGVyiC,EAAcG,UAGVl1C,+CAA2B,CACtCC,GAAI,2EACJC,OAAsC00C,EACtCh6C,MAAOsY,K,6FCtBIlT,+CAA2B,CACtCC,GAAI,6DACJC,OA1BJC,eAA6BvF,EAA0BwF,GACnD,IAmBJ,SAAsBxF,GAClB,OAAOA,EAAMsB,UAAUiF,OAAS,GAAKvG,EAAMyzC,cAAcltC,OAAS,GAAKvG,EAAM8I,SAASvC,OAAS,EApB1F+rC,CAAatyC,GAAQ,CACtB,MAAMu6C,EAAY,wEAAoEv6C,GAEtF,MADAwF,EAAI8B,MAAMizC,GACJ,IAAI75C,MAAM65C,GAGpB,MAAMn9B,EAAU,UAAMpd,EAAMgJ,gBAAZ,iCAAoDhJ,EAAMsB,UAA1D,0BAAqFtB,EAAM8I,UAE3G,OAAOypC,sBAAoBn1B,EAAY,MAAO,KAAM,CAACwnB,QAAS,CAACE,cAAc,YAAD,OAAc9kC,EAAMyzC,kBAAmBpsC,KAAM5B,GAC9GA,EAAS4N,MACjB5I,MAAOC,IAKN,MAJAlF,EAAI8B,MAAJ,4DACA9B,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,4DACAtF,EAAI8B,MAAMoD,GACHA,KAWX1K,MAxCiBA,IACjB,MAAMsB,EAAYH,8CAAoCnB,GAChDw6C,EAAWx6C,EAAMoB,eAAeyF,KACtC,GAAIvF,GAAak5C,GAAYA,EAAS1zC,gBAElC,OAAO,IAAI0sC,IAAmBlyC,EAAW8wC,0BAAgBpyC,GAAQw6C,EAASrvC,MAAOsvC,+BAAqBz6C,IAE1G,MAAM,IAAIU,MAAM,oG,4UCVb,MAAM82B,EAKT1yB,YAAY6E,GACR,IAAIgX,EACAsW,EACJ,GAoCG,KAAAjyB,YAAc,IAAMtB,wBAAc,GAAD,OAAIyB,KAAKwb,YAAcxb,KAAK8xB,cAAgB9xB,KAAKvD,aAClF,KAAAqD,mBAAqB,IAAM,mBAC3B,KAAAC,cAAgB,IAAiB,cAtChCyE,EAAQtI,OAASsI,EAAQtI,MAAMsf,YAG/B,GAFAA,EAAa7f,OAAO6I,EAAQtI,MAAMsf,YAE9B7f,OAAO6S,MAAMgN,GACb,MAAM,IAAIjgB,MAAM,kDAGjB,GAAIiJ,EAAQpI,WAAaoI,EAAQpI,UAAUyC,UAG9C,GADA2c,EAAa7f,OAAO6I,EAAQpI,UAAUyC,UAClClD,OAAO6S,MAAMgN,GACb,MAAM,IAAIjgB,MAAM,kDAEjB,GAAIiJ,EAAQpI,WAAaoI,EAAQpI,UAAUoX,YAAchP,EAAQpI,UAAUoX,WAAWpS,OAAQ,CACjG,MAAMoS,EAA2ChP,EAAQpI,UAAUoX,WAEnE,IAAKA,EAAWpS,OACZ,MAAM,IAAI7F,MAAM,8CAGpB,MAAMg6C,EAAoB,CACtBt5C,eAAeuI,GAEnBstB,EAAY,WAAOte,EACdnU,IAAIyS,IAED,MAAMwqB,EAAsDW,sCAA4BsY,GACxF,OAAOnZ,YAAatqB,OAAS1S,EAAWk9B,KAE3C/8B,KAAK,MAEdS,KAAKwb,WAAaA,EAClBxb,KAAK8xB,aAAeA,EACpB9xB,KAAKvD,YAAc+H,EAAQ/H,aAW5B,MAAMo1C,EAAiC12C,IAC1C,GAAIA,GAAaA,EAAUc,eACvB,OAAO,IAAIo2B,EAAqBl3B,EAAUc,gBAG9C,MAAM,IAAIV,MAAM,uDASb,SAASi6C,EAAehiC,EAAiCse,EAAuBtW,GACnF,IAAIi6B,EAWJ,OAVAjiC,EAAWlI,QAASoqC,IAChB,GAAKl6B,GAAck6B,EAAIl4C,WAAage,GAAgBsW,GAAgB4jB,EAAI1Y,OAASlL,EAC7E,OAAQ2jB,EAAgBC,EACrB,GAAIA,EAAIxiC,UAAYwiC,EAAIxiC,SAAS9R,OAAQ,CAC5C,MAAMu0C,EAAgBH,EAAeE,EAAIxiC,SAAU4e,EAActW,GAC7Dm6B,IACAF,EAAgBE,MAIrBF,EAQJr1C,eAAew1C,EAAyB/6C,EAA6BwF,GACxE,GAAIxF,EAAMi3B,cAAgBj3B,EAAM2gB,WAAY,CACxC,MAAM0W,EAAgB,IAAI7gB,kBAAgBhR,EAAIpE,gBAAgB,GACxDuX,QAAmBqiC,kBAAqB3jB,EAAe7xB,GAC7D,IAAKmT,EAED,YADAnT,EAAI8B,MAAM,6DAId,MAAM2P,EAAW0jC,EAAehiC,EAAY3Y,EAAMi3B,aAAcj3B,EAAM2gB,YACtE,OAAK1J,QACDzR,EAAI8B,MAAM,iDAaPlC,+CAA2B,CACtCC,GAAI,iEACJC,OAAoCy1C,EACpC/6C,MAAOg3C,K,uRCnHJ,MAAMiE,EAMTn2C,YAAYlD,EAAmCN,EAAoBe,GAO5D,KAAA2C,YAAc,IAAMtB,YAAc,mBAAD,OAAoByB,KAAK7D,WAAa6D,KAAK7D,UAAUqL,YAAcxH,KAAKvD,aACzG,KAAAqD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,WAAajC,EAAYiC,UAC9BsB,KAAK9C,UAAYA,GAAa,EAC9B8C,KAAKvD,YAAcA,GAWpB,MAAMs5C,EAAiC56C,IAC1C,MAAMgB,EAAYhB,EAAUmB,SAAWnB,EAAUmB,OAAOH,gBAAaiD,EACrE,OAAO,IAAI02C,EAAwB36C,EAAUc,eAAeQ,YAAaN,OAAWiD,IAMjFgB,eAAe41C,EAA4Bn7C,EAAgCwF,GAC9E,OAAIxF,EAAMsB,UACComC,YAAuB,CAAE/hC,cAAeH,EAAKkB,oBAAqB,IAAM1G,EAAMsB,UAAWtB,EAAM6D,UAAW7D,EAAMqC,WAAWgF,KAAK5B,GAC5HA,EAASjB,IACXmjC,IACGA,EAAcC,IAAMlmC,YAAiBimC,EAAcC,IAAKpiC,EAAIpE,eAAeQ,aAC3E+lC,EAAcE,QAAUF,EAAcE,QAAUF,EAAcE,QAAU,GACjEF,KAKhB,GAGIviC,+CAA2B,CACtCC,GAAI,sEACJC,OAAyC61C,EACzCn7C,MAAOk7C,K,gVC3CJ,MAAM7tC,EAAc,CACvBC,0BAA2B,eAC3BC,sBAAuB,oBACvBC,uBAAwB,qBACxBC,oBAAqB,WACrBC,qBAAsB,YACtBC,qBAAsB,YACtBC,sBAAuB,cAGd2xB,EAAgB,CACzBzP,KAAM,OACN6P,MAAO,QACPE,cAAgB,gBAChBL,QAAS,WAMP,MAAO3xB,EAGT/I,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,oBAAqByB,KAAKvD,aAC5D,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAWpB2D,eAAeuI,EAA6B9N,EAA0BwF,GACzE,OAAOuI,YAA4B,CAAEpI,cAAeH,IAAO6B,KAAM2G,IACtBA,EAAoBC,oBAAsB,IAAIzJ,IAA6C0J,IAC9H,IAAIC,EAAM,GACV,GAAID,EAAWE,WACX,OAAOF,EAAWE,WAAWC,eACzB,KAAKkxB,EAAczP,KACf3hB,EAAMD,EAAWI,aAAejB,EAAYK,qBAAuBL,EAAYI,oBAC/E,MACJ,KAAK8xB,EAAcI,MACfxxB,EAAMD,EAAWI,aAAejB,EAAYO,sBAAwBP,EAAYM,qBAChF,MACJ,KAAK4xB,EAAcM,cACf1xB,EAAMD,EAAWI,aAAejB,EAAYG,uBAAyBH,EAAYE,sBACjF,MACJ,KAAKgyB,EAAcC,QACfrxB,EAAMd,EAAYC,+BAK1B9H,EAAIoF,UAAU2D,QAAQ,2DAE1B,OAAIJ,EACO,CACHA,MACAD,mBAGJ,IAELM,OAAOC,UAIX,MAAMC,EAAepO,GACjB,IAAIuN,EAAkBvN,EAAUc,eAAeQ,aAG3CwD,+CAA2B,CACtCC,GAAI,qFACJC,OAA+CwI,EAC/C9N,MAAO0O,K,wRC/EJ,MAAM0sC,EAOTt2C,YAAY6E,EAA0B0xC,GAc/B,KAAAr2C,YAAc,IAAMtB,YAAcyB,KAAKm2C,oBAAqBn2C,KAAKvD,aACjE,KAAAqD,mBAAqB,IAAM,eAC3B,KAAAC,cAAgB,IAAiB,UAfpCC,KAAKuH,UAAY/C,EAAQ/H,YAAYiC,UACrCsB,KAAK7C,UAA4C,EAAhCqH,EAAQ/H,YAAYS,UACrC8C,KAAKk2C,qBAAuBA,EAC5Bl2C,KAAKvD,YAAc+H,EAAQ/H,YAC3BuD,KAAKm2C,oBAAL,GACAD,EAAqB5qC,QAAQ8qC,IAErBp2C,KAAKm2C,qBAAL,UAA6BC,EAAa74C,WAAa64C,EAAa74C,UAAUiK,WAA9E,OAERxH,KAAKm2C,qBAAL,UAA6Bn2C,KAAKuH,UAAUC,WAA5C,KACAxH,KAAKm2C,qBAAL,UAA6Bn2C,KAAK7C,UAAUqK,WAA5C,MAWD,MAAM6uC,EAA+Bl7C,IACxC,MAAMgB,EAAYH,YAAoCb,GACtD,GAAIgB,EACE,OAAO,IAAI85C,EAAsB96C,EAAUc,eAAgB,CAAC,CAACsB,WAAWpB,KAE1E,MAAM,IAAIZ,MAAM,wFAQjB6E,eAAek2C,EAAuBz7C,EAA8BwF,GACvE,MAAMk2C,QAA4BC,YAAsB,CAAEh2C,cAAeH,GAAMxF,EAAM0M,UAAW1M,EAAMsC,UAAUtC,EAAMq7C,sBAChHE,EAAeG,EAAoB,GAAGE,cAAgBF,EAAoB,GAAGE,aAAa,GAC1F3E,EAAc4E,+BAAqBN,EAA+B/1C,GACxE,OAAGyxC,GAII,GAGI7xC,+CAA2B,CACtCC,GAAI,+DACJC,OAAiCm2C,EACjCz7C,MAAOw7C,K,g7BCtDL,MAAOM,EAKTh3C,YAAYlD,GACRuD,KAAKH,YAAc,IAAMtB,wBAAc,kCAAmCyB,KAAKvD,aAC/EuD,KAAKF,mBAAqB,IAAM,kCAChCE,KAAKD,cAAgB,IAAM,UAC3BC,KAAKvD,YAAcA,GAUrB,MAAOm6C,EAAbj3C,cAKW,KAAAo2B,yBAAqD,GAGrD,KAAA4Z,oBAA8B,GAKzC,MAOMkH,EAAkB,SAAC91B,GAAgK,IAA5I+1B,EAA4I,wDAAvHC,EAAuH,uCAA1CC,EAA0C,uCAG9K,MAFP,OAAKF,EAGM/1B,EAASk2B,gBAAiBF,SAA1B,UAA0BA,EAA6BG,+BAAvD,aAA0B,EAAsDl2C,KAAKm2C,GAAgBA,IAAiBp2B,EAASk2B,eAF/Hl2B,EAASk2B,eAAiBD,GAUlC52C,eAAeg3C,EAAkCv8C,EAA8CwF,GAAmB,MAErH,IAAKxF,EACD,MAAM,IAAIU,MAAM,2EAEpB,MAAM87C,EAAgB,GAChBC,EAAa,GACnB,IAAIC,EAAwD,GAE5D,IAAIR,EACJ,MACM9iC,SADkB0Y,YAAatsB,IACd4T,KACjB7J,QAA6BsX,YAA6B,CAAElhB,cAAeH,IAC3EwH,QAAiBs7B,sCAA4B,IAAIC,0BAA2B/iC,GAQlF,MAAMiE,QAJNlE,eAA0BoE,GACtB,MAAMgzC,EAAoBxvC,qCAA2B3H,GACrD,OAAOkE,0BAAgBizC,EAAmBhzC,GAEnBizC,CAAWp3C,GAChCq3C,EAAoCpzC,SAAH,UAAGA,EAActD,KAAK6D,GAdvB,oEAc+BA,EAAKC,aAAnC,aAAG,EAAyEC,UAC/G2yC,IACAX,QAAoCh8B,YAA2C,CAAEva,cAAeH,KAEpG,MAAMs3C,EAAyBvtC,EAAqButC,uBAC9CC,EAAwBxtC,EAAqBwtC,sBACnD,IAAK3jC,IAAS7J,IAAyBvC,GAAgC,IAApBA,EAASzG,OAGxD,OAFAuF,QAAQC,IAAI,2GACZvG,EAAI8B,MAAM,2GACH,GAEX,GAAI8R,GAAQA,EAAK5M,IAAM4M,EAAK6J,WAAa7J,EAAK6J,UAAU1c,OAAS,GAAKgJ,EAClE,IAAK,MAAM2W,KAAY9M,EAAK6J,UACpBiD,EAASk2B,cAA0C,KAA1Bl2B,EAASk2B,cAAuBJ,EAAgB91B,EAAU22B,EAAmCX,EAA6BY,GACnJL,EAAW5rC,KAAKqV,GACTA,EAASk2B,eAAiBW,GACjCP,EAAc3rC,KAAKqV,GAI/B,GAAIs2B,GAAiBA,EAAcj2C,OAAS,EAAG,CAC3C,IAAI4O,EAAuBqnC,EAAch4C,IAAIiR,GAAKA,EAAE/S,UAAY+S,EAAE/S,UAAY,GAC9EyS,EAAaq6B,kBAAgBwN,OAAO7nC,GACpC,MAAM8nC,QAAsChkB,YAA8B,CAAEtzB,cAAeH,EAAKwe,YAAa,OAAS,CAAEX,WAAYlO,EAAYgkB,sBAAsB,IAC0B,MAAhM,GAAI8jB,GAAiCA,EAA8BzjB,yCAA2CyjB,EAA8BzjB,wCAAwCjzB,OAAS,EAKzL02C,WAA+BzjB,wCAAwC/oB,QAASxO,IAC5EA,EAAQyyC,eAAiBzyC,EAAQ4xC,oBAKrC6I,EAAwBpjB,yCAA+B9zB,EAAKy3C,aAAN,EAAMA,EAA+BzjB,yCAE3FkjB,EAAqB,UAAGA,SAAH,aAAG,EAAuBl4C,IAAKvC,GAChD,OAAWA,GAAX,IAAoBS,UAAWT,EAAQi5B,yBAAyBx4B,UAAWu4B,kBAAmBh5B,EAAQi5B,yBAAyBD,kBAAmB5S,oBAAqBpmB,EAAQi5B,yBAAyB7S,uBAKpN,GAAIo0B,GAAcA,EAAWl2C,OAAS,EAClC,IAAK,MAAM22C,KAAaT,EAAY,CAChC,MAAMU,EAAmB,CACrBz6C,UAAWw6C,EAAUx6C,UACrBq4B,iBAAkBmiB,EAAUE,YAC5BC,WAAY73C,EAAIpE,eAAe8F,SAAW1B,EAAIpE,eAAe8F,QAAQo2C,yBAA2B93C,EAAIpE,eAAe8F,QAAQo2C,8BAA2B/4C,GAEpJg5C,QAAiCC,YAA8C,CAAE73C,cAAeH,EAAKwe,YAAa,MAAOtd,oBAAqB,IAAM,CAACy2C,IAC3J,GAAII,GAA4BA,EAAyB/jB,yCAA2C+jB,EAAyB/jB,wCAAwCjzB,OAAS,EAAG,CAK7Kg3C,WAA0B/jB,wCAAwC/oB,QAASxO,IACvEA,EAAQyyC,eAAiBzyC,EAAQ4xC,oBAErC,MAAM4J,EAA0BnkB,yCAA+B9zB,EAAK+3C,aAAN,EAAMA,EAA0B/jB,yCAC9F,GAAIikB,GAA2BA,EAAwBl3C,OACnD,IAAK,MAAMyD,KAAQyzC,EACff,EAAsB7rC,KAAK7G,IAM/C,OAAI0yC,GAAyBA,EAAsBn2C,OAAS,EACjDm2C,GAEPl3C,EAAI8B,MAAM,+EACH,IAMAlC,+CAA2B,CACtCC,GAAI,yEACJC,OAAkDi3C,EAClDv8C,MA1HiBM,GACV,IAAIw7C,EAAsCx7C,EAAUc,eAAeQ,gB,kCC1C9E,oEAGO,MAAMwpC,EAITtmC,YAAY4lC,EAAkCa,GAC1CpmC,KAAKulC,gBAAkBA,EACvBvlC,KAAKomC,YAAcA,GAYpB,MAAMmB,EAKT5nC,YAAY0O,EAA0Bk4B,EAAyCgS,GAC3Ev4C,KAAKqO,YAAcA,EACnBrO,KAAKumC,mBAAqBA,EAC1BvmC,KAAKu4C,WAAaA,K,uQCxBnB,MAAMC,EAGT74C,YAAYlD,GAGL,KAAAoD,YAAc,IAAMtB,YAAc,oBAAqByB,KAAKvD,aAC5D,KAAAqD,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,UAJpCC,KAAKvD,YAAcA,GAOpB,MAAMg8C,EAAmCt9C,IAC5C,MAAM,eAAEc,GAAmBd,EAG3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,0BAGpB,OAAO,IAAIi9C,EAAuBv8C,EAAeQ,cAG9C2D,eAAes4C,EAAqB79C,EAA+BwF,GACtE,OAAO0+B,YAAgB,CAAEv+B,cAAeH,IACnC6B,KAAK88B,GACKuT,YAAc,CAAE/xC,cAAeH,GAAO2+B,EAAgBC,mBACxD/8B,KAAMswC,GACIA,GAEVltC,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAI8B,MAAM,iDACJ,IAAI5G,MAAM,oDAG3B+J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,0DACd,IAAIpK,MAAM,4DAGb0E,+CAA2B,CACtCC,GAAI,yBACJC,OAAiDu4C,EACjD79C,MAAO49C,K,kCCpDX,sFAGM,SAAUE,EAAmB59C,GAC/B,OAAO,IAAI2V,eAAqB,qBAAsB3V,EAAQ,UAOnDkF,+CAA2B,CACtCE,OAAyBwQ,mBACzB9V,MAN+BM,GACxBw9C,EAAmB,O,kCCR9B,2FAGM,SAAUC,EAAwB79C,GACpC,OAAO,IAAI2V,eAAqB,0BAA2B3V,EAAQ,UAOxDkF,+CAA2B,CACtCE,OAAyBwQ,mBACzB9V,MANoCM,GAC7By9C,EAAwB,O,4GCF5B,MAAMC,EAAiB,GAE9BA,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,mCAEhBq4B,EAAe,yFAA2F,CAC9Ft4B,EAAGngB,SAAY,+DAIfogB,GAAI,oDAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,sCAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,8EAIfogB,GAAI,4CAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,8DAIfogB,GAAI,0CAEhBq4B,EAAe,2EAA6E,CAChFt4B,EAAGngB,SAAY,kCAIfogB,GAAI,6CAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,iCAIfogB,GAAI,0CAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,kCAIfogB,GAAI,gCAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,sEAIfogB,GAAI,sCAEhBq4B,EAAe,+FAAiG,CACpGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,uDAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,sEAIfogB,GAAI,iCAEhBq4B,EAAe,2FAA6F,CAChGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qDAEhBq4B,EAAe,6FAA+F,CAClGt4B,EAAGngB,SAAY,8EAIfogB,GAAI,sDAEhBq4B,EAAe,+EAAiF,CACpFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+CAEhBq4B,EAAe,+FAAiG,CACpGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,uDAEhBq4B,EAAe,6FAA+F,CAClGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,sDAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,sEAIfogB,GAAI,qCAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,wCAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,sEAIfogB,GAAI,qCAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,qEAIfogB,GAAI,0CAEhBq4B,EAAe,+EAAiF,CACpFt4B,EAAGngB,SAAY,8EAIfogB,GAAI,+CAEhBq4B,EAAe,yFAA2F,CAC9Ft4B,EAAGngB,SAAY,8EAIfogB,GAAI,oDAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,oCAEhBq4B,EAAe,+FAAiG,CACpGt4B,EAAGngB,SAAY,sEAIfogB,GAAI,uDAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,8EAIfogB,GAAI,8CAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,wDAIfogB,GAAI,wCAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,kCAIfogB,GAAI,0CAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,iCAIfogB,GAAI,0CAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,+DAAiE,CACpEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,8EAIfogB,GAAI,oDAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,oCAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,wDAIfogB,GAAI,wCAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,0DAA4D,CAC/Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,gEAAkE,CACrEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,0DAA4D,CAC/Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,0EAA4E,CAC/Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,iCAIfogB,GAAI,0CAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,0EAA4E,CAC/Et4B,EAAGngB,SAAY,8EAIfogB,GAAI,sDAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,sEAIfogB,GAAI,qCAEhBq4B,EAAe,gEAAkE,CACrEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,qEAIfogB,GAAI,0CAEhBq4B,EAAe,wEAA0E,CAC7Et4B,EAAGngB,SAAY,8EAIfogB,GAAI,oDAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,oCAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,iDAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,+CAAiD,CACpDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,+CAAiD,CACpDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,gDAAkD,CACrDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,sEAIfogB,GAAI,iCAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,8EAIfogB,GAAI,oDAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,+DAAiE,CACpEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,0DAA4D,CAC/Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,8DAIfogB,GAAI,8BAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,+DAAiE,CACpEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,0DAA4D,CAC/Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,oEAAsE,CACzEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,+CAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,sEAIfogB,GAAI,sCAEhBq4B,EAAe,iDAAmD,CACtDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,+CAAiD,CACpDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,iCAIfogB,GAAI,0CAEhBq4B,EAAe,+CAAiD,CACpDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,gDAAkD,CACrDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,oCAEhBq4B,EAAe,2EAA6E,CAChFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,mEAAqE,CACxEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,gEAAkE,CACrEt4B,EAAGngB,SAAY,kCAIfogB,GAAI,0CAEhBq4B,EAAe,mDAAqD,CACxDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,+DAAiE,CACpEt4B,EAAGngB,SAAY,kCAIfogB,GAAI,0CAEhBq4B,EAAe,iFAAmF,CACtFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,+DAAiE,CACpEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,oEAAsE,CACzEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,0EAA4E,CAC/Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,wEAA0E,CAC7Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,gEAAkE,CACrEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,oDAAsD,CACzDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,gDAAkD,CACrDt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,kCAIfogB,GAAI,0CAEhBq4B,EAAe,sFAAwF,CAC3Ft4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,oEAAsE,CACzEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,8EAAgF,CACnFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,mEAAqE,CACxEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,0DAA4D,CAC/Dt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,sDAAwD,CAC3Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,mEAAqE,CACxEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,mEAAqE,CACxEt4B,EAAGngB,SAAY,sEAIfogB,GAAI,sCAEhBq4B,EAAe,6DAA+D,CAClEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,kEAAoE,CACvEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,iCAIfogB,GAAI,0CAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,gEAAkE,CACrEt4B,EAAGngB,SAAY,8EAIfogB,GAAI,mCAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,oCAEhBq4B,EAAe,2EAA6E,CAChFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,kDAEhBq4B,EAAe,yDAA2D,CAC9Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gCAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qCAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,mCAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,mEAAqE,CACxEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0CAEhBq4B,EAAe,8DAAgE,CACnEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qCAEhBq4B,EAAe,uDAAyD,CAC5Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8BAEhBq4B,EAAe,wDAA0D,CAC7Dt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+BAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,4CAEhBq4B,EAAe,8EAAgF,CACnFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,uDAEhBq4B,EAAe,oEAAsE,CACzEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,kDAEhBq4B,EAAe,iFAAmF,CACtFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,6DAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sEAEhBq4B,EAAe,qHAAuH,CAC1Ht4B,EAAGngB,SAAY,+DAIfogB,GAAI,+EAEhBq4B,EAAe,2GAA6G,CAChHt4B,EAAGngB,SAAY,sEAIfogB,GAAI,0EAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sEAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sEAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sEAEhBq4B,EAAe,yFAA2F,CAC9Ft4B,EAAGngB,SAAY,+DAIfogB,GAAI,iEAEhBq4B,EAAe,mHAAqH,CACxHt4B,EAAGngB,SAAY,8DAIfogB,GAAI,8EAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,sEAIfogB,GAAI,sEAEhBq4B,EAAe,yFAA2F,CAC9Ft4B,EAAGngB,SAAY,8DAIfogB,GAAI,iEAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sEAEhBq4B,EAAe,qGAAuG,CAC1Gt4B,EAAGngB,SAAY,8DAIfogB,GAAI,uEAEhBq4B,EAAe,yFAA2F,CAC9Ft4B,EAAGngB,SAAY,8DAIfogB,GAAI,iEAEhBq4B,EAAe,qFAAuF,CAC1Ft4B,EAAGngB,SAAY,+DAIfogB,GAAI,+DAEhBq4B,EAAe,yGAA2G,CAC9Gt4B,EAAGngB,SAAY,8DAIfogB,GAAI,yEAEhBq4B,EAAe,iHAAmH,CACtHt4B,EAAGngB,SAAY,8DAIfogB,GAAI,6EAEhBq4B,EAAe,uFAAyF,CAC5Ft4B,EAAGngB,SAAY,8DAIfogB,GAAI,gEAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,yDAEhBq4B,EAAe,yEAA2E,CAC9Et4B,EAAGngB,SAAY,8DAIfogB,GAAI,yDAEhBq4B,EAAe,oGAAsG,CACzGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,iEAEhBq4B,EAAe,gGAAkG,CACrGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+DAEhBq4B,EAAe,gGAAkG,CACrGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,+DAEhBq4B,EAAe,kGAAoG,CACvGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gEAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,8DAIfogB,GAAI,oDAEhBq4B,EAAe,oGAAsG,CACzGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,2EAEhBq4B,EAAe,uHAAyH,CAC5Ht4B,EAAGngB,SAAY,sEAIfogB,GAAI,oFAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,qEAIfogB,GAAI,4CAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,gDAEhBq4B,EAAe,+DAAiE,CACpEt4B,EAAGngB,SAAY,+DAIfogB,GAAI,6CAEhBq4B,EAAe,qDAAuD,CAC1Dt4B,EAAGngB,SAAY,qEAIfogB,GAAI,wCAEhBq4B,EAAe,mHAAqH,CACxHt4B,EAAGngB,SAAY,+DAIfogB,GAAI,yEAEhBq4B,EAAe,mGAAqG,CACxGt4B,EAAGngB,SAAY,sEAIfogB,GAAI,iEAEhBq4B,EAAe,qFAAuF,CAC1Ft4B,EAAGngB,SAAY,sEAIfogB,GAAI,0DAEhBq4B,EAAe,6FAA+F,CAClGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8DAEhBq4B,EAAe,iFAAmF,CACtFt4B,EAAGngB,SAAY,sEAIfogB,GAAI,wDAEhBq4B,EAAe,uGAAyG,CAC5Gt4B,EAAGngB,SAAY,+DAIfogB,GAAI,mEAEhBq4B,EAAe,+EAAiF,CACpFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,uDAEhBq4B,EAAe,qGAAuG,CAC1Gt4B,EAAGngB,SAAY,+DAIfogB,GAAI,kEAEhBq4B,EAAe,2GAA6G,CAChHt4B,EAAGngB,SAAY,+DAIfogB,GAAI,qEAEhBq4B,EAAe,iEAAmE,CACtEt4B,EAAGngB,SAAY,sEAIfogB,GAAI,gDAEhBq4B,EAAe,+FAAiG,CACpGt4B,EAAGngB,SAAY,sEAIfogB,GAAI,+DAEhBq4B,EAAe,gFAAkF,CACrFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,0DAEhBq4B,EAAe,4FAA8F,CACjGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,kEAEhBq4B,EAAe,gFAAkF,CACrFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,yDAEhBq4B,EAAe,8EAAgF,CACnFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,uDAEhBq4B,EAAe,gFAAkF,CACrFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,yDAEhBq4B,EAAe,yFAA2F,CAC9Ft4B,EAAGngB,SAAY,8DAIfogB,GAAI,kEAEhBq4B,EAAe,uFAAyF,CAC5Ft4B,EAAGngB,SAAY,+DAIfogB,GAAI,gEAEhBq4B,EAAe,uFAAyF,CAC5Ft4B,EAAGngB,SAAY,8DAIfogB,GAAI,gEAEhBq4B,EAAe,2FAA6F,CAChGt4B,EAAGngB,SAAY,8DAIfogB,GAAI,oEAEhBq4B,EAAe,sFAAwF,CAC3Ft4B,EAAGngB,SAAY,sEAIfogB,GAAI,+DAEhBq4B,EAAe,iGAAmG,CACtGt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0EAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,qDAEhBq4B,EAAe,qEAAuE,CAC1Et4B,EAAGngB,SAAY,8DAIfogB,GAAI,iDAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,qEAIfogB,GAAI,4CAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,4CAEhBq4B,EAAe,0EAA4E,CAC/Et4B,EAAGngB,SAAY,+DAIfogB,GAAI,oDAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sCAEhBq4B,EAAe,gFAAkF,CACrFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0DAEhBq4B,EAAe,sFAAwF,CAC3Ft4B,EAAGngB,SAAY,8DAIfogB,GAAI,8DAEhBq4B,EAAe,+GAAiH,CACpHt4B,EAAGngB,SAAY,qEAIfogB,GAAI,2EAEhBq4B,EAAe,6FAA+F,CAClGt4B,EAAGngB,SAAY,qEAIfogB,GAAI,kEAEhBq4B,EAAe,mFAAqF,CACxFt4B,EAAGngB,SAAY,qEAIfogB,GAAI,6DAEhBq4B,EAAe,mFAAqF,CACxFt4B,EAAGngB,SAAY,qEAIfogB,GAAI,6DAEhBq4B,EAAe,6FAA+F,CAClGt4B,EAAGngB,SAAY,qEAIfogB,GAAI,iEAEhBq4B,EAAe,mFAAqF,CACxFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,4DAEhBq4B,EAAe,+FAAiG,CACpGt4B,EAAGngB,SAAY,qEAIfogB,GAAI,oEAEhBq4B,EAAe,wGAA0G,CAC7Gt4B,EAAGngB,SAAY,+DAIfogB,GAAI,0EAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,wDAEhBq4B,EAAe,0FAA4F,CAC/Ft4B,EAAGngB,SAAY,qEAIfogB,GAAI,gEAEhBq4B,EAAe,gFAAkF,CACrFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,2DAEhBq4B,EAAe,gFAAkF,CACrFt4B,EAAGngB,SAAY,+DAIfogB,GAAI,2DAEhBq4B,EAAe,8GAAgH,CACnHt4B,EAAGngB,SAAY,+DAIfogB,GAAI,8EAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,qEAIfogB,GAAI,4CAEhBq4B,EAAe,0EAA4E,CAC/Et4B,EAAGngB,SAAY,8DAIfogB,GAAI,sDAEhBq4B,EAAe,uFAAyF,CAC5Ft4B,EAAGngB,SAAY,qEAIfogB,GAAI,6DAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,8DAIfogB,GAAI,wDAEhBq4B,EAAe,2DAA6D,CAChEt4B,EAAGngB,SAAY,iCAIfogB,GAAI,4CAEhBq4B,EAAe,mFAAqF,CACxFt4B,EAAGngB,SAAY,sEAIfogB,GAAI,4DAEhBq4B,EAAe,4DAA8D,CACjEt4B,EAAGngB,SAAY,8DAIfogB,GAAI,2CAEhBq4B,EAAe,kDAAoD,CACvDt4B,EAAGngB,SAAY,8DAIfogB,GAAI,sCAEhBq4B,EAAe,uEAAyE,CAC5Et4B,EAAGngB,SAAY,iCAIfogB,GAAI,oDAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,qEAIfogB,GAAI,wDAEhBq4B,EAAe,6EAA+E,CAClFt4B,EAAGngB,SAAY,qEAIfogB,GAAI,uD,2FC19DhBle,+BAAqB,CACjBC,SAAU,wDACVC,eA3BoBpC,MAAOqC,EAAwCwR,EAAqBtR,KACxF,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMyO,EAAaxT,MAAMC,QAAQsT,GAAQA,EAAK,GAAKA,EAC7C6kC,EAA+Bn2C,EAAc1G,eAAe+G,cAAc81C,iBAChF,IAAIC,EAAkC,GAGtC,GAAID,EACA,IACIC,QAAwB5xC,YAAiC2xC,EAAkBn2C,GAC7E,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,sEAAuEA,GAK7GuB,OAAOC,UAAUtB,UAAUqC,SAAS5E,iBAAe81C,aAAc,CAC7D1kC,OAAQJ,EAAW7M,GACnBkN,YAAaL,EAAWM,QAAUN,EAAWM,QAAQhN,WAAa,GAClEK,SAAUkxC,EACVrpC,QAASwE,EAAWO,YAAcP,EAAWO,YAAYjN,WAAa,OAQ9EpE,cArDqBhD,MAAOsU,EAAuC/R,KACnE,IACI,MAAMgS,EAAcjU,MAAMC,QAAQ+T,GAA+BA,EAAO,GAA0BA,EAGlG,GAAIC,EAAYC,aAAkD,mBAA5BD,EAAYC,YAA4B,CAC1E,MAAMqkC,EAAwBtkC,EAAYC,cAC1C,GAAIqkC,GAAyBA,EAAsBnkC,UAG/C,YADAnS,EAAc1G,eAAe+G,cAAc81C,iBAAmBG,EAAsBnkC,WAI5FnS,EAAc8C,UAAUE,MAAM,wEAChC,MAAO5J,GACL4G,EAAc8C,UAAUE,MAAM,0CAA2C5J,Q,iMCpB3E,MAAOm9C,EAETv5C,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKnF,MAAQA,GAoBd,MAAMs+C,EAA8B,CAACn6C,EAAqCnE,KAC7E,MAAMsL,EAAYnH,EAAK/C,eAAeyF,KAAKoE,uBAAyBjL,EAAMiD,WAC1E,OAAO,IAAIo7C,EACPltB,YAAsBotB,OAAOjzC,MAWtB5C,uCAAoC,CAC/CpD,OALJC,eAAsCvF,EAA8BwF,GAChE,OAAOxF,EAAMA,MAAM2I,QAAQnD,IAK3BxF,MAAOs+C,K,gTC3CL,MAAOrhB,EAOTn4B,YAAYxD,EAAmBuC,EAAmB2F,EAAiCvG,EAAqBu7C,GAQjG,KAAAx5C,YAAc,IAAM,2BAAN,OAAiCG,KAAK7D,UAAtC,YAAmD6D,KAAKq5C,eACtE,KAAAv5C,mBAAqB,IAAM,QAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKqE,gBAAkBA,EACvBrE,KAAKlC,WAAaA,GAAc,GAChCkC,KAAKq5C,cAAgBA,GAYtB,MAAMthB,EAA4C58B,IACrD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAI27B,GACN37B,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,EACAjE,EAAUc,eAAeyF,KAAKoE,sBAC9B3K,EAAUmB,QAAUnB,EAAUmB,OAAO+8C,eAEzC,MAAM,IAAI99C,MAAM,gGASjB6E,eAAe43B,EAClBn9B,EACAwF,GAEA,OAAOuC,QAAQC,UAEVX,KAAK,KACF,MAAM8C,EAA2CnK,EAAMwJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOwG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IAEV9C,KAA0B9B,UACvB,MAAMu4B,EAAkC,CAAEpxB,WAAYlH,EAAIpE,eAAeQ,YAAYiC,UAAWvB,WAAYkD,EAAIpE,eAAeQ,YAAYS,WACrI8H,EAAsEG,EAE5E,GAAIH,EAAe,CACf,IAkBIs0C,EAlBAC,EAAiD,GA8BrD,OA7BIl5C,EAAIpE,eAAeyF,MACnBrB,EAAIpE,eAAeyF,KAAKC,iBACxBtB,EAAIpE,eAAeyF,KAAKoE,6BAElBC,YAAU,CAAEvF,cAAeH,GAAOA,EAAIpE,eAAeyF,KAAKoE,uBAAuB5D,KAAK5B,IACrFA,GACIA,EAAS+3B,sBAAwB/3B,EAAS+3B,qBAAqBj3B,OAAS,IACvEm4C,EAAuBj5C,EAAS+3B,qBAAqBh5B,IAAIk5B,IAC9C,CACHC,cAAeD,EAAIE,0BAUvC6gB,EADDz+C,EAAMw+C,cACU,CACX,CACI7gB,cAAe39B,EAAMw+C,gBAGvBE,EAAqBn4C,OAAS,EACrBm4C,EAEA,GAEZ3gB,YACL,CAAEp4B,cAAeH,EAAKkB,oBAAqB,IAC3Co3B,EACA,CAAC3zB,EAAcxH,UACf,IAAI+qB,KACJ1tB,EAAMiD,WACNw7C,GACA,GACAp3C,KAAK5B,IACL,GAAIA,GAAYA,EAASc,OAAS,EAChC,OAAOd,EAAS,GAElB,MAAM,IAAI/E,MACR,4FAKR,OAAO,OAEV+J,MAAOC,IAEJ,MADAlF,EAAI8B,MAAMoD,EAAMC,SACV,IAAIjK,MAAM,8DAIb0E,+CAA2B,CACtCE,OAAsC63B,EACtCn9B,MAAOk9B,K,sRCtHJ,MAAMyhB,EAIT75C,YAAYlD,EAAmCqJ,GAKxC,KAAAjG,YAAc,IAAMtB,wBAAc,mBAAD,OAAoByB,KAAK8F,uBAAyB9F,KAAKvD,aACxF,KAAAqD,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK8F,sBAAwBA,EAC7B9F,KAAKvD,YAAcA,GAapB,MAAMg9C,EAAiCt+C,IAC1C,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,2EAGpB,OAAO,IAAIi+C,EAAwBv9C,EAAeQ,cAQ/C2D,eAAes5C,EAAyB7+C,EAAgCwF,GAC3E,MAAM63B,EAAgB,IAAItyB,mBAAiB/K,EAAM4B,YAAa5B,EAAMiL,uBAC9DqyB,QAAiBC,kBAAYF,EAAe73B,GAMlD,OAJK83B,GACD93B,EAAIoF,UAAUF,MAAM,2BAA4B,IAAIhK,MAAM,6BAGvDo+C,YACH,CACIn5C,cAAeH,EACfkB,oBAAqB,IAEzB42B,EAASO,cACTP,EAASyhB,gBAQF35C,+CAA6C,CACxDC,GAAI,iEACJC,OAAmCu5C,EACnC7+C,MAAqD4+C,K,qMC5DnD,MAAOI,EAETl6C,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,6BACpB,KAAAC,mBAAqB,IAAM,6BAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKnF,MAAQA,GAgBd,MAAMs+C,EAA8B,CAACn6C,EAAqCnE,KAC7E,MAAMsL,EAAYnH,EAAK/C,eAAeyF,KAAKoE,uBAAyBjL,EAAMiD,WAC1E,OAAO,IAAI+7C,EACP9tB,YAAuBqtB,OAAOjzC,MAOvB5C,uCAAoC,CAC/CpD,OALJC,eAAsCvF,EAAkCwF,GACpE,OAAOxF,EAAMA,MAAM2I,QAAQnD,IAK3BxF,MAAOs+C,K,kCC5CX,6FAIM,SAAUW,EAA0B/+C,GACtC,OAAO,IAAI2V,eAAmC,sBAAuB3V,EAAQ,wBAOlEkF,+CAA2B,CACtCE,OAAyBwQ,mBACzB9V,MANuCM,GAChC2+C,EAAgD,O,6RCsBpD,MAAMnD,EAGTh3C,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,kCAAmCyB,KAAKvD,aAC1E,KAAAqD,mBAAqB,IAAM,kCAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKvD,YAAcA,GAQ3B,MAOMo6C,EAAkB,SAAC91B,GAAkJ,IAA9H+1B,EAA8H,wDAAhGC,EAAgG,uCAA/BC,EAA+B,uCAG/J,IAAD,EAFP,OAAIF,EAGM/1B,EAASk2B,gBAAiBF,SAA1B,UAA0BA,EAA6BG,+BAAvD,aAA0B,EAAsDl2C,KAAKm2C,GAAgBA,IAAiBp2B,EAASk2B,eAF9Hl2B,EAASk2B,eAAiBD,GAUlC52C,eAAeg3C,EAClBv8C,EACAwF,GAAmB,MAGnB,IAAKxF,EACD,MAAM,IAAIU,MAAM,2EAGpB,MAAM87C,EAA4B,GAC5BC,EAAa,GACnB,IAAIC,EAAwD,GAE5D,IAAIR,EAEJ,MACM9iC,SADkB0Y,YAAatsB,IACd4T,KACjB7J,QAA6BsX,YAA6B,CAAElhB,cAAeH,IAC3EwH,QAAiBs7B,sCAA4B,IAAIC,0BAA2B/iC,GAQlF,MAAMiE,QAHNlE,eAA+BoE,GAC3B,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAE/BD,CAAgBlE,GACrCq3C,EAAoCpzC,SAAH,UAAGA,EAActD,KAAK6D,GAfvB,oEAe+BA,EAAKC,aAAnC,aAAG,EAAyEC,UAC9G2yC,IACDX,QAAoCh8B,YAA2C,CAAEva,cAAeH,KAEpG,MAAMs3C,EAAyBvtC,EAAqButC,uBAC9CC,EAAwBxtC,EAAqBwtC,sBAEnD,IAAK3jC,IAAS7J,IAAyBvC,GAAgC,IAApBA,EAASzG,OAExD,OADAf,EAAI8B,MAAM,2GAC6B,GAG3C,GAAI8R,GAAQA,EAAK5M,IAAM4M,EAAK6J,WAAa7J,EAAK6J,UAAU1c,OAAS,GAAKgJ,EAClE,IAAK,MAAM2W,KAAY9M,EAAK6J,UACpBiD,EAASk2B,cAA0C,KAA1Bl2B,EAASk2B,cAAuBJ,EAAgB91B,EAAU22B,EAAmCX,EAA6BY,GACnJL,EAAW5rC,KAAKqV,GACTA,EAASk2B,eAAiBW,GACjCP,EAAc3rC,KAAKqV,GAK/B,GAAIs2B,GAAiBA,EAAcj2C,OAAS,EAAG,CAC3C,IAAI4O,EAAaqnC,EAAch4C,IAAIiR,GAAKA,EAAE/S,WAC1CyS,EAAaq6B,kBAAgBwN,OAAO7nC,GAEpC,MAAM8nC,QAAsChkB,YACxC,CAAEtzB,cAAeH,EAAKwe,YAAa,OACnC,CAAEX,WAAYlO,EAAYgkB,sBAAsB,IAGhD8jB,GACAA,EAA8BzjB,yCAC9ByjB,EAA8BzjB,wCAAwCjzB,OAAS,IAE/Em2C,EAAwBpjB,yCACpB9zB,EACAy3C,aAFkD,EAElDA,EAA+BzjB,0CAK3C,GAAIijB,GAAcA,EAAWl2C,OAAS,EAClC,IAAK,MAAM22C,KAAaT,EAAY,CAChC,MAAMU,EAAqC,CACvCz6C,UAAWw6C,EAAUx6C,UACrBq4B,iBAAkBmiB,EAAUE,aAG5B53C,EAAIpE,eAAe8F,SAAW1B,EAAIpE,eAAe8F,QAAQo2C,2BACzDH,EAAiBE,WAAa73C,EAAIpE,eAAe8F,QAAQo2C,0BAE7D,MAAMC,QAAiCC,YACnC,CAAE73C,cAAeH,EAAKwe,YAAa,MAAOtd,oBAAqB,IAC/D,CAACy2C,IAGL,GAAII,GACAA,EAAyB/jB,yCACzB+jB,EAAyB/jB,wCAAwCjzB,OAAS,EAAG,CAC7E,MAAMk3C,EAA0BnkB,yCAC5B9zB,EACA+3C,aAF0D,EAE1DA,EAA0B/jB,yCAE9B,GAAIikB,GAA2BA,EAAwBl3C,OACnD,IAAK,MAAMyD,KAAQyzC,EACff,EAAsB7rC,KAAK7G,IAO/C,OAAI0yC,GAAyBA,EAAsBn2C,OAAS,EACjDm2C,GAGXl3C,EAAI8B,MAAM,gFAC6B,IAG5BlC,+CAA2B,CACtCC,GAAI,yEACJC,OAAiDi3C,EACjDv8C,MAlIiBM,GACV,IAAIw7C,EAAsCx7C,EAAUc,eAAeQ,gB,0JChCvE,MAAMoO,EAITlL,YAAY+K,EAAyBjO,GAK9B,KAAAoD,YAAc,IAAMtB,wBAAc,qBAAD,OAAsByB,KAAK0K,iBAAmB1K,KAAKvD,aACpF,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK0K,gBAAkBA,EACvB1K,KAAKvD,YAAcA,GAQpB2D,eAAe0K,EAAuBjQ,EAA+BwF,GACxE,OAAO05C,YAAuB,CAAEv5C,cAAeH,EAAKkB,oBAAqB,IAAM1G,EAAM6P,iBAG1EzK,qCAA2B,CACtCE,OAAsC2K,K,4MClBnC,MAAMkvC,EAGTr6C,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,iBAAkByB,KAAKvD,aACzD,KAAAqD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAepB2D,eAAe65C,EAAyBp/C,EAAgCwF,GAC3E,OAAO65C,YAAwB,CAAE15C,cAAeH,EAAKkB,oBAAqB,KAG/DtB,+CAA2B,CACtCC,GAAI,0DACJC,OAAmC85C,EACnCp/C,MAXiBM,GACV,IAAI6+C,EAAwB7+C,EAAUc,eAAeQ,gB,kNCdzD,MAAMqN,EAITnK,YAAYlB,EAAgBhC,GAKrB,KAAAoD,YAAc,IAAMtB,wBAAc,oBAAD,OAAqByB,KAAKvB,QAAUuB,KAAKvD,aAC1E,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKvB,OAASA,EACduB,KAAKvD,YAAcA,GAmBpB2D,eAAe2J,EAAsBlP,EAA6BwF,GACrE,MAAM2J,EAAe,IAAIC,yBAAuBpP,EAAM4D,OAAQ5D,EAAM4B,aAC9DyN,QAA2BC,kCAAwBH,EAAc3J,GAEjE+J,EAAuB/J,EAAIpE,eAAe8F,QAE1CsI,EAAgBD,GAAwBA,EAAqBE,6BAA+B,KAC5FC,EAAuBL,EAAmBlJ,KAAKwJ,IAAkBA,EAAcC,SAAW,MAAQJ,GAClGK,EAAmBH,GAAwBA,EAAqBI,iBAAoB,MAEpFC,EAAa,IAAIC,IAAuBH,EAAiB7P,EAAM4B,aACrE,OAAOqO,YAAuBF,EAAYvK,GAG/BJ,+CAA2B,CACtCC,GAAI,uDACJC,OAAsC4J,EACtClP,MAzBiBM,IACjB,MAAM,OAAEsD,EAAF,YAAUhC,GAAgBtB,EAAUc,eAC1C,IAAMd,EAAUc,iBAAkBwC,EAC9B,MAAM,IAAIlD,MAAM,oEAEpB,OAAO,IAAIuO,EAAqBrL,EAAQhC,O,6aC3BrC,MAAM8xC,EAIT5uC,YAAYxD,EAA4BuC,GAKjC,KAAAmB,YAAc,8CACd,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OANpCC,KAAK7D,UAAiC,iBAAdA,GAA0BA,EAAYA,EAC9D6D,KAAKtB,UAAYA,GAYlB,MAAM8vC,EACTrzC,IAEA,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIoyC,GAA8CpyC,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAE1G,MAAM,IAAInD,MAAM,gHAOjB6E,eAAequC,EAClB5zC,EACAwF,GAEA,MAAM4E,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAG7E,OAAOwG,6BAAmBD,EAAsB5E,GAC3C6B,KAAKiD,IAEF,GAAIA,GAJa,IAIIA,EAAcg1C,eAAoE,IAA9Bh1C,EAAci1C,iBACnF,OAAOtmB,YAA8B,CAAEtzB,cAAeH,GAAO,CAAE6d,WAAY,CAAC/Y,EAAc3H,UAAWw2B,sBAAsB,IAAO9xB,KAAK5B,IACnI,GAAGA,GAAYA,EAAS+zB,yCAA2C/zB,EAAS+zB,wCAAwCjzB,OAChH,OAAO+yB,YAA+B9zB,EAAKC,EAAS+zB,6CAQnE/uB,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAd,4DACM,IAAIpK,MAAM,8DAOrB,SAAS8+C,EAA2CvL,GACvD,MAAMwL,EAA+C,GACrD,GAAGxL,GAA8BA,EAA2B1tC,OAAS,EACjE,IAAI,MAAMtE,KAAWgyC,OACa1vC,IAA3BtC,EAAQyyC,qBAAsDnwC,IAAtBtC,EAAQS,WAC/C+8C,EAAiB5uC,KAAK,CAACnO,UAAWT,EAAQS,UAAWu4B,kBAAmBh5B,EAAQyyC,iBAI5F,OAAO+K,EASIr6C,+CAA2B,CACtCC,GAAI,4FACJC,OAAwDsuC,EACxD5zC,MAAO2zC,K,gRCpFL,MAAO+L,EAET56C,YAAY9E,GAGL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,iCACpB,KAAAC,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAA0B,OAN7CC,KAAKnF,MAAQA,GAgCd,MAAM2/C,EAAsC,CAC/Cx7C,EAD+C,KAGhB,IAD/B,KAAEkrB,EAAF,YAAQuwB,EAAR,SAAqBhwB,GACU,EAC/B,OAAO,IAAI8vB,EACPtwB,YACIC,EACAuwB,EACAhwB,KAKLrqB,eAAes6C,EAA+B7/C,EAAsCwF,GACvF,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAiBhBkD,uCAAoC,CAC/CpD,OAAyDu6C,EACzD7/C,MAAO2/C,K,gQCnEL,MAAOG,EAETh7C,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,0BACpB,KAAAC,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKnF,MAAQA,GAiBd,MAAM+/C,EAA+B,CACxC57C,EADwC,KAGhB,IADxB,aAAEkqB,EAAF,WAAgBR,GACQ,EACxB,MAAMviB,EAAYnH,EAAK/C,eAAeyF,KAAKoE,sBAC3C,OAAO,IAAI60C,EACP1xB,YACI9iB,EACAuiB,EACAQ,KAKL9oB,eAAey6C,EAClBhgD,EACAwF,GAEA,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAmD06C,EACnDhgD,MAAO+/C,K,oHChDJ,MAAMvpC,EAIT1R,YAAY6E,EAA0B8M,EAA4B5V,GAM3D,KAAAmE,YAAc,cAASG,KAAKtB,UAAd,gBAA+BsB,KAAKtE,UAAY,KAC9D,KAAAoE,mBAAqB,IAAOE,KAAKuR,mBAAqB,oBAAsB,WAC5E,KAAAxR,cAAgB,IAAiB,cAPpCC,KAAKuR,mBAAqBD,EAC1BtR,KAAKtE,SAAWA,GAAY,IAC5BsE,KAAKtB,UAAY8F,GAAWA,EAAQ/H,aAAe+H,EAAQ/H,YAAYiC,UAAY/C,OAAO6I,EAAQ/H,YAAYiC,WAAa,GAuBpHuB,yCAA2B,CACtCC,GAAI,2DACJC,OANGC,eAAiCvF,EAAwBwF,GAC5D,OAAsCy6C,YAAmB,CAAEt6C,cAAeH,GAAOxF,EAAM6D,YAMvF7D,MAfkCM,IAClC,MAAMiY,EAAWjY,EAAUmB,QAAUnB,EAAUmB,OAAO+W,eAAiBC,SAASnY,EAAUmB,OAAO+W,cAAe,IAChH,OAAO,IAAIhC,EAAgBlW,EAAUc,gBAAgB,EAAOmX,O,4PCf1D,MAAO2nC,EAETp7C,YAAY9E,GAIL,KAAAyI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKnF,MAAQA,GAoBd,MAAMmgD,EAA+B,CAACh8C,EAAqCnE,KAC9E,OAAQA,EAAMogD,UACV,IAAK,SACD,OAAO,IAAIF,EACP7vB,YAAwBrwB,EAAMswB,eAAgBtwB,EAAMiD,aAE5D,IAAK,QACD,OAAO,IAAIi9C,EACP1vB,YAAuBxwB,EAAMswB,eAAgBtwB,EAAMiD,aAE3D,IAAK,SAIL,QAEI,OAAO,IAAIi9C,EACPzvB,YAAwBzwB,EAAMswB,eAAgBtwB,EAAMiD,eAK7DsC,eAAe86C,EAA8BrgD,EAA0BwF,GAC1E,OAAOxF,EAAMA,MAAM2I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAkD+6C,EAClDrgD,MAAOmgD,K,kCChEX,0FAIO,SAASG,EAAuBpgD,GACnC,OAAO,IAAI2V,eAA0B,cAAe3V,EAAQ,eAOjDkF,+CAA2B,CACtCE,OAA8BwQ,mBAC9B9V,MANoCM,GAC7BggD,EAAuB,CAAE/sB,WAAY,Q,0MCIzC,MAAMnkB,EAITtK,YAAYlB,EAAgBhC,GAKrB,KAAAoD,YAAc,IAAMtB,wBAAc,qBAAD,OAAsByB,KAAKvB,QAAUuB,KAAKvD,aAC3E,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKvB,OAASA,EACduB,KAAKvD,YAAcA,GAmBpB2D,eAAe+J,EAAwBtP,EAA+BwF,GACzE,OAAO+6C,YAAmC,CAAE56C,cAAeH,EAAKkB,oBAAqB,IAAM1G,EAAM4D,QAGtFwB,+CAA2B,CACtCE,OAAsCgK,EACtCtP,MAdiBM,IACjB,IAAMA,EAAUc,iBAAkBd,EAAUc,eAAewC,OACvD,MAAM,IAAIlD,MAAM,oEAGpB,OAAO,IAAI0O,EAAuB9O,EAAUc,eAAewC,OAAQtD,EAAUc,eAAeQ,iB;;;;;ACRzF,MAAM4+C,EAIT17C,YAAYrD,EAAmCL,GAKxC,KAAA6D,mBAAqB,IAAc,cACnC,KAAAD,YAAc,cAAiBlB,qCAA2B,cAAeqB,KAAK/D,gBAAhE,YAAmF+D,KAAK1D,OAAOoQ,OAC7G,KAAA3M,cAAgB,IAAiB,UANpCC,KAAK1D,OAASA,GAAU,GACxB0D,KAAK/D,eAAiBA,GAoBfgE,+CAA2B,CACtCC,GAAI,+DACJC,OAdWC,MAAOvF,EAAyB2J,KAC3C,MAAM,OAAElI,GAAWzB,EACnB,MAAO,CACH6R,MAAOpQ,GAAUA,EAAOoQ,MACxBC,YAAarQ,GAAUA,EAAOqQ,YAC9B2uC,SAAUh/C,GAAUA,EAAOg/C,SAC3BlsB,gBAAiB9yB,GAAUA,EAAOizB,cAAgBjzB,EAAOizB,aAAapW,IACtEkW,aAAc7qB,EAAQvI,gBAAkBuI,EAAQvI,eAAeozB,aAC/DC,WAAYhzB,GAAUA,EAAOgzB,aAOjCz0B,MAAQmE,GACG,IAAIq8C,EAA4Cr8C,EAAK1C,OAAQ0C,EAAK/C,mB,yPCtC1E,MAAMs/C,EAGT57C,YAAYlD,GAIL,KAAAoD,YAAc,IAAMtB,wBAAc,kCAAmCyB,KAAKvD,aAC1E,KAAAqD,mBAAqB,sCACrB,KAAAC,cAAgB,IAAiB,UALpCC,KAAKvD,YAAcA,GAepB2D,eAAeo7C,EAClB3gD,EACAwF,GAGA,IAAKxF,EACD,MAAM,IAAIU,MAAM,2EAGpB,MAAMsM,QAAiBqD,iCAAuB,IAAID,sBAAuB5K,GAEzE,IAAKwH,EAED,OADAxH,EAAI8B,MAAM,4EAC6B,GAG3C,IAAIs5C,EAA0B,GAI9B,IAAK,MAAM3+C,KAAW+K,EACd/K,EAAQg2B,gBAAkBh2B,EAAQg2B,eAAet1B,UAHhC,IAG4CV,EAAQg2B,eAAeqnB,eACpFsB,EAAc/vC,KAAK5O,EAAQg2B,eAAet1B,UAIlD,GAA6B,IAAzBi+C,EAAcr6C,OAEd,OADAf,EAAI8B,MAAM,+DAC6B,GAG3Cs5C,EAAgBpR,kBAAgBwN,OAAO4D,GAEvC,MAAMlE,QAA8BzjB,YAChC,CAAEtzB,cAAeH,GACjB,CAAE6d,WAAYu9B,EAAeznB,sBAAsB,IAGvD,OAAIujB,GAAyBA,EAClBpjB,yCAA+B9zB,EAAKk3C,aAAN,EAAMA,EAAuBljB,0CAGtEh0B,EAAI8B,MAAM,gFAC6B,IAG5BlC,+CAA2B,CACtCC,GAAI,+FACJC,OAAiDq7C,EACjD3gD,MAxDiBM,GACV,IAAIogD,EAAsCpgD,EAAUc,eAAeQ,gB,0MCnBxE,MAAOwN,EAITtK,YAAYlB,EAAgBhC,GAKrB,KAAAoD,YAAc,IAAMtB,wBAAc,qBAAD,OAAsByB,KAAKvB,QAAUuB,KAAKvD,aAC3E,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKvB,OAASA,EACduB,KAAKvD,YAAcA,GAmBpB2D,eAAe+J,EAAwBtP,EAA+BwF,GACzE,OAAO+6C,YAAmC,CAAE56C,cAAeH,EAAKkB,oBAAqB,IAAM1G,EAAM4D,QAGtFwB,+CAA2B,CACtCE,OAAsCgK,EACtCtP,MAdiBM,IACjB,IAAMA,EAAUc,iBAAkBd,EAAUc,eAAewC,OACvD,MAAM,IAAIlD,MAAM,oEAGpB,OAAO,IAAI0O,EAAuB9O,EAAUc,eAAewC,OAAQtD,EAAUc,eAAeQ,iB,kCCjChG,sGAAO,MAAMwwC,EAAmBjuC,GACpBA,EAAK/C,eAAeQ,YAAYi/C,IAAIx7C,IAAM,GAGzCgtC,EAAoBluC,GACtBA,EAAK/C,eAAeQ,YAAYi/C,IAAI5iC,KAAO,GAGzCw8B,EAAwBt2C,IAEjC,MAAM28C,EAAoB38C,EAAK/C,eAAeQ,YAAYi/C,IAAIE,SAAW58C,EAAK/C,eAAeQ,YAAYi/C,IAAIE,SAAW58C,EAAK/C,eAAeQ,YAAYi/C,IAAI5iC,KAAO,GACnK,OAAI6iC,EAASv6C,OAAS,GAA4C,MAAvCu6C,EAASE,OAAOF,EAASv6C,OAAO,GAChDu6C,EAASG,UAAU,EAAGH,EAASv6C,OAAO,GAE1Cu6C,I,qQCRL,MAAOI,EAKTp8C,YAAYxD,EAAmBuC,EAAmBs9C,GAM3C,KAAAn8C,YAAc,IAAM,uBAAN,OAA6BG,KAAK7D,WAChD,KAAA2D,mBAAqB,IAAM,UAC3B,KAAAC,cAAgB,IAAiB,cAPpCC,KAAK7D,UAAYA,EACjB6D,KAAKtB,UAAYA,EACjBsB,KAAKg8C,cAAgBA,GAYtB,MAAMC,EAA4B9gD,IACrC,GAAIA,EAAUmB,QAAUnB,EAAUmB,OAAOH,UAAW,CAChD,MAAMA,EAAYhB,EAAUmB,OAAOH,UAMnC,OALIhB,EAAUc,eAAeC,QACzBf,EAAUc,eAAeC,MAAMC,UAAYA,EAAUqL,YAEzDrM,EAAUc,eAAeG,UAAUyC,SAAW1C,EAAUqL,WACxDrM,EAAUc,eAAeG,UAAU0C,SAAW,UACvC,IAAIi9C,GACN5/C,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,GAER,MAAM,IAAI7D,MAAM,sFAMb6E,eAAe87C,EAClBrhD,EACAwF,GAEA,IACI,MAAMvD,QAQdsD,eAAuCvF,EAA2BwF,GAC9D,MAAM2E,EAA2CnK,EAAMmhD,cACvD,IAAKh3C,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB7E,EAAMsB,UAAWtB,EAAM6D,WAC7E,OAAOwG,6BAAmBD,EAAsB5E,GAEpD,OAAO2E,EAdmBm3C,CAAwBthD,EAAOwF,GACrD,aAgBRD,eAA8CvF,EAA2BwF,EAAqB8E,GAC1F,GAAIA,EAAe,CACf,MAAMi3C,EAAoC,IAAI91C,oCAAkCzL,EAAMsB,UAAWtB,EAAM6D,UAAWyG,GAClH,OAAOqB,gDAAsC41C,EAAmC/7C,GAEpF,OAAO,KArBUg8C,CAA+BxhD,EAAOwF,EAAKvD,GAC1D,MAAOf,GAEL,MADAsE,EAAI8B,MAAMpG,EAAEyJ,SACN,IAAIjK,MAAM,gDAqBT0E,+CAA2B,CACtCE,OAA0C+7C,EAC1CrhD,MAAOohD,K,2KCnEJ77C,eAAeqyC,EAA2BhpC,EAAuClI,EAA2ClB,EAAqBi8C,GACpJ,OAAO5J,YAA8B,CAAElyC,cAAeH,EAAKkB,oBAAqBA,GAAuBkI,GAAgBvH,KAAMywC,IACzH,IAAKA,EAED,OADAtyC,EAAI8B,MAAM,sDACyB,GAIvC,MAAMpH,GAAU43C,GAAmB,IAAItzC,IAAKuzC,GAA6DA,GAGnG2J,EAAqCD,GAA8BA,EAAcE,iBAavF,OAZID,GACAxhD,EAAOuQ,QAAQmxC,IAEX,MAAMC,EAAQH,EAAUv7C,KAAK27C,IAAW,aAAIA,EAAYC,aAAazqC,iBAAzB,UAA2CsqC,EAAMI,eAAjD,aAA2C,EAAe1qC,iBAGlGuqC,IACAD,EAAMI,QAAUH,EAAMI,WAK7B/hD,EAAOqG,OAKLrG,GAJHsF,EAAI8B,MAAM,8EACyB,MCzBzC,MAAO0wC,UAAkC1kB,IAA/CxuB,c,oBACW,KAAA28C,cAAsC,GAEtC,KAAAx8C,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKlB,UACJkB,KAAKutB,UAAYvtB,KAAKutB,SAASnsB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBwP,SAAW/Q,KAAKuB,oBAAoBwP,QAAQC,SAAWhR,KAAKuB,oBAAoBwP,QAAQC,QAAQ5P,OAAS,EAExJ,UAEA,eAqDJnB,+CAA2B,CACtCC,GAAI,iFACJC,OArCJC,eAAsBvF,EAAiCwF,GACnD,GAAsB,aAAnBxF,EAAMiE,SAAyB,CAC9B,GAAGjE,EAAMiX,SACL,OAAO2gC,EACH,CACI32B,YAAY,CAACjhB,EAAMiX,UACnB+J,QAAU,CACNtU,UAAW1M,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAM0G,oBACNlB,EACAxF,EAAMyhD,eAEV,MAAM,IAAI/gD,MAAM,oFAGpB,GAAGV,EAAMuzB,WACL,OAAOqkB,EACH,CACI3Y,gBAAiBj/B,EAAMuzB,WACvBvS,QAAU,CACNtU,UAAW1M,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAM0G,oBACNlB,GAEJ,MAAM,IAAI9E,MAAM,wFAQxBV,MAhDiBmE,IACjB,MAAMnE,EAAmC8zB,YAA0B3vB,EAAM6zC,GAGzE,OADAh4C,EAAMyhD,cAAgBt9C,EAAK/C,eAAe+b,IAAI1b,OACvCzB,M,wJCzBL,MAAOgQ,EAITlL,YAAY+K,EAAyBjO,GAK9B,KAAAoD,YAAc,IAAMtB,wBAAc,qBAAD,OAAsByB,KAAK0K,iBAAmB1K,KAAKvD,aACpF,KAAAqD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK0K,gBAAkBA,EACvB1K,KAAKvD,YAAcA,GAQpB2D,eAAe0K,EAAuBjQ,EAA+BwF,GACxE,OAAO05C,YAAuB,CAAEv5C,cAAeH,EAAKkB,oBAAqB,IAAM1G,EAAM6P,iBAG1EzK,qCAA2B,CACtCE,OAAsC2K,K,oSCTnC,MAAM+W,EAAbliB,cACuB,KAAAmiB,cAA8C,KAC9C,KAAAC,eAAwC,GACxC,KAAAC,eAAqC,KACrC,KAAAC,kBAAmC,KAEnC,KAAAhe,SAAmB,GACnB,KAAAnF,SAAyB,UACzB,KAAAi+C,eAAuC,KACvC,KAAAC,cAA6C,IARpD/lC,sBAAXE,KAAW,oCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,+BACAF,sBAAXE,KAAW,+BACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,oCAMT,MAAM+K,EAAbviB,cACW,KAAAE,YAAc,oBACd,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,WAGrCK,eAAe+hB,EAClBtnB,EACAwF,GAEA,OAAO,IAAIwhB,EAMR,MAAMO,EACTjnB,GAEO,IAAI+mB,EAMAjiB,+CAA0C,CACrDE,OAAgCgiB,EAChCtnB,MAAOunB,K,kCChEX,6FAIO,SAAS66B,EAA0BliD,GACtC,OAAO,IAAI2V,eAAsC,yBAA0B3V,EAAQ,2BAOxEkF,+CAA2B,CACtCE,OAA0CwQ,mBAC1C9V,MANsC,IAC/BoiD,EAA0B,O,yLCK/B,MAAOC,EAEXv9C,YAAYw9C,GAGL,KAAAt9C,YAAc,cAChBG,KAAKo9C,gBAAgBjhD,UADL,YACkB6D,KAAKo9C,gBAAgB1+C,UADvC,YACoDsB,KAAKo9C,gBAAgBlgD,UADzE,qBAEd,KAAA4C,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,UALtCC,KAAKo9C,gBAAkBD,GAQpB/8C,eAAei9C,EACpBxiD,EACAwF,GAEA,MAAMi9C,QAAmBC,kBACvB1iD,EAAMuiD,gBACN/8C,GAGIm9C,EAAsC,CAC1CC,MAAO,GACPnlC,KAAM,IAIFolC,EAAaJ,EAAWt8C,KAC5B6xB,GAtCgC,iBAuC9BA,EAAU/tB,KAAMoE,eAGhBw0C,GAAcA,EAAWC,YAC3BH,EAAiBC,MAAQC,EAAWC,WAItC,MAAMC,EAAYN,EAAWt8C,KAC3B6xB,GA/C+B,SAgD7BA,EAAU/tB,KAAMoE,eAOpB,OAJI00C,GAAaA,EAAUD,YACzBH,EAAiBllC,KAAOslC,EAAUD,WAG7BH,EAYMv9C,+CAA2B,CACxCE,OAAoCk9C,EACpCxiD,MARAM,IAEA,MAAM0iD,EAAkBt3C,kDAAwCpL,GAChE,OAAO,IAAI+hD,EAAsBW,O,mECtDpBt6C,uCAAoC,CAC/CrD,GAAI,gEACJC,OANJC,eAAiCvF,EAAUwF,GACvC,MAAO,O,oMCJX,EAGI,SAAY5D,GAAZ,WAIO,KAAAoD,YAAc,WAAM,+BAAc,gBAAiBi+C,EAAKrhD,cACxD,KAAAqD,mBAAqB,WAAM,uBAC3B,KAAAC,cAAgB,WAAiB,iBALpCC,KAAKvD,YAAcA,GAWpB,SAAeshD,EAAoBljD,EAA2BwF,GAAmB,yGACpF,MAAM,CAAN,EAAO,IAAI46B,WAaAh7B,+CAA0C,CACrDE,OAAgC49C,EAChCljD,MATgB,SAACM,GACjB,OAAO,IAAI6iD,EAAmB7iD,EAAUc,eAAeQ,iB,gICfpD,MAAMoe,EAGTlb,YAAY4B,GAIL,KAAA1B,YAAc,4BACd,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKuB,oBAAsBA,GAyDpBtB,yCAA4C,CACvDC,GAAI,qFACJC,OA/BGC,eAA2CvF,EAAmCwF,GACjF,IAAKA,EAAIpE,eAAeyF,KAAKC,gBACzB,MAAM,IAAIpG,MAAM,kEAGpB,MAAM0iD,EAAkC,GAElChX,EAAc,IAAIC,yBAClBC,QAAoCC,4BAAkBH,EAAa5mC,GAEzE,IAAK8mC,GAAwC,IAAxBA,EAAa/lC,OAC9B,OAAO68C,EAGX,IAAK,IAAIh/B,EAAI,EAAGA,EAAIkoB,EAAa/lC,SAAU6d,EAAG,CAC1C,MAAMlR,EAAOo5B,EAAaloB,GACpBooB,EAAa,IAAI5B,sCAAoC13B,EAAK1G,GAAIxM,EAAM0G,qBACpE+lC,QAAmB5B,+CAAqC2B,EAAYhnC,GAC1E49C,EAAevyC,KAAK,IAAI67B,IAAcx5B,EAAMu5B,EAAW1B,MAAO0B,EAAWzB,aAI7E,OADAxlC,EAAI8B,MAAM87C,EAAe78C,OAAOoG,YACzBy2C,GAUPpjD,MAhD6CM,IAC7C,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAeyF,KAAKC,gBACrB,MAAM,IAAIpG,MAAM,kEAEpB,MAAMgG,EAA4C8N,2BAAyBC,cAAcnU,GAAWoU,oBAGpG,OAFAhO,EAAoBsS,OAAQ,EAErB,IAAIgH,EAA2BtZ,O,2QC/BnC,MAAMyxC,EAAbrzC,cACW,KAAAE,YAAc,IAAM,6BACpB,KAAAC,mBAAqB,IAAM,6BAC3B,KAAAC,cAAgB,IAAiB,QAGrC,MAAMwJ,EAAc,IAChB,IAAIypC,EAMR5yC,eAAe6yC,EAAoCp4C,EAAwCwF,GAE9F,IAAKxF,EAED,MADAwF,EAAIoF,UAAUC,UAAU,IAAInK,MAAM,4EAC5B,IAAIA,MAAM,2EAGpB,MACM0Y,SADsB8iB,YAAiB12B,IAClBusB,aAAa3Y,KAGxC,OAAIA,GAAQA,EAAK6J,WAAa7J,EAAK6J,UAAU1c,OAClC+O,4BACa8D,EAAK6J,UAAUze,IAAI0hB,IAC/B,GAAIA,EAASxjB,UACT,OAAO,IAAI2S,eAAa6Q,EAASxjB,UAAW8C,EAAIpE,eAAeQ,eAGpE4M,OAAOC,SACVjJ,GAEC6B,KAAK2F,GACEA,GAGO,IAGdvC,MAAMC,IAEH,MADAlF,EAAIoF,UAAUC,UAAUH,GAClB,IAAIhK,MAAM,wFAIJ,GAGb0E,+CAA2B,CACtCC,GAAI,2EACJC,OAAkC8yC,EAClCp4C,MAAO0O,M","file":"static/js/31.9c47470ef4b5f2e71239.chunk.js","sourcesContent":["import { IAny, ICommerceApiSettings, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n CartLine,\n CommerceListLine,\n ProductSearchResult,\n QueryResultSettings,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ProductDetailsCriteria } from '../get-full-products';\nimport { parseSearchData } from './input-data-parser';\n\nexport const wrapInResolvedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'SUCCESS',\n result: input,\n metadata: {}\n };\n};\n\nexport const wrapInRejectedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'FAILED',\n result: input,\n metadata: {}\n };\n};\n\nexport const buildQueryResultSettings = (inputData: ICreateActionContext, IGeneric>): QueryResultSettings => {\n try {\n const searchInputData = parseSearchData(inputData);\n const search = searchInputData.q;\n if (!search) {\n throw new Error('Query string ?q={searchText} is needed for search actions.');\n }\n const top = (searchInputData.maxItems && Number(searchInputData.maxItems)) || searchInputData.top;\n return { Paging: { Top: top, Skip: searchInputData.skip } };\n } catch (e) {\n return {};\n }\n};\n\n/**\n * Utility function to extract the active productId in the following priority:\n * First query param (productId), then UrlToken (itemId), then module config\n * @param inputData The Action Input data\n */\nexport const getSelectedProductIdFromActionInput = (inputData: ICreateActionContext>): string | undefined => {\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.productId) {\n return inputData.requestContext.query.productId;\n } else if (inputData && inputData.requestContext && inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.itemId) {\n return inputData.requestContext.urlTokens.itemId;\n } else if (inputData && inputData.config && inputData.config.productId) {\n return inputData.config.productId;\n }\n return undefined;\n};\n\n/**\n * Generates a Image URL based on data return from retail server\n * @param imageUrl The image url returned by Retail Server\n * @param ctx The request context\n */\nexport const generateImageUrl = (imageUrl: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (imageUrl) {\n // Images hosted in CMS include schema\n if (imageUrl.startsWith('http')) {\n return imageUrl;\n }\n\n // Images hosted in Retail Server must be encoded and joined with the base image url\n return apiSettings.baseImageUrl + encodeURIComponent(imageUrl);\n } else {\n // d365Commerce.telemetry.warning(`Unable to generate a proper Image URL for Product: ${product.RecordId}`);\n return undefined;\n }\n};\n\n/**\n * Generates a Image URL for a product based on data return from retail server\n * @param product The Product returned by Retail Server\n * @param ctx The request context\n */\nexport const generateProductImageUrl = (\n product: SimpleProduct | ProductSearchResult,\n apiSettings: ICommerceApiSettings\n): string | undefined => {\n return generateImageUrl(product.PrimaryImageUrl, apiSettings);\n};\n\n/**\n * Creates a CartLine object from the passed data\n * @param product The product\n * @param quantity The quantity\n * @param catalogId The catalog\n */\nexport const buildCartLine = (product: SimpleProduct, quantity?: number, catalogId?: number): CartLine => {\n return {\n CatalogId: catalogId || 0,\n Description: product.Description,\n // TODO: Investigate this value and what it represents\n EntryMethodTypeValue: 3,\n ItemId: product.ItemId,\n ProductId: product.RecordId,\n Quantity: quantity || 1,\n TrackingId: '',\n UnitOfMeasureSymbol: product.DefaultUnitOfMeasure\n };\n};\n\n/**\n * Creates a CommerceListLine (also know as WishlistLine) object from the passed data\n * @param productId The RecordId of the Product to be added\n * @param customerId The account number of the customer\n * @param wishlistId The Id of the commerce list\n */\nexport const buildWishlistLine = (productId: number, customerId: string, wishlistId: number): CommerceListLine => {\n return {\n CommerceListId: wishlistId,\n ProductId: productId,\n CustomerId: customerId\n };\n};\n\n/**\n * Utility function to prepare the product details criteria before getting full product:\n * @param inputData The Action Input data\n */\nexport const getProductDetailsCriteriaFromActionInput = (inputData: ICreateActionContext>): ProductDetailsCriteria => {\n if (inputData && inputData.config) {\n return {\n getPrice: !inputData.config.hidePrice,\n getRating: !inputData.config.hideRating\n };\n }\n return {\n getPrice: true,\n getRating: true\n };\n};\n\n/**\n * Transforms search text into the expected 'search terms' format, expected by refiner APIs.\n * @param searchText free-form text used for searching for products or categories of products\n */\nexport const ensureSearchTextIsFormedProperly = (searchText: string): string => {\n const prefix = searchText.startsWith(`'`) ? '' : `'`;\n const suffix = searchText.endsWith(`'`) ? '' : `'`;\n return `${prefix}${searchText}${suffix}`;\n};\n\nexport const ensureSafeSearchText = (searchText: string): string => {\n return searchText.replace(/[^0-9a-zA-Z\\s]+/g, '');\n};\n\nexport const buildCacheKey = (base: string, apiSettings: ICommerceApiSettings, locale?:string): string => {\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}${locale?`-${locale}`:''}`;\n};\n\nexport const buildCacheKeyWithUrlTokens = (base: string, requestContext: IRequestContext): string => {\n const urlTokens = requestContext.urlTokens;\n const defaultCacheKey = buildCacheKey(base, requestContext.apiSettings, requestContext.locale);\n return urlTokens\n ? `${defaultCacheKey}-${urlTokens.itemId}-${urlTokens.recordId}-${urlTokens.pageType}`\n : defaultCacheKey;\n};\n\n/**\n * Generates a key from set of arguments as inputs\n *\n * @param args argument list of pivots to generate key from\n * @param handler handler function for null/undefined values\n */\n\ntype TKeyTypes = string | number | boolean | null | undefined;\ninterface IGenerateKeyOptions {\n separator?: string;\n handler?(input: null | undefined): string;\n}\nexport const generateKey = (args: TKeyTypes[], options?: IGenerateKeyOptions): string => {\n const { handler, separator }: IGenerateKeyOptions = { ...{ separator: '-', handler: undefined }, ...(options || {}) };\n return args\n .map(arg => {\n if (arg === null || arg === undefined) {\n if (handler) {\n return handler(arg);\n }\n }\n return arg;\n })\n .join(separator);\n};\n\n/**\n * Gets the fall back image url for a variant image.\n * @param itemId Item id of a product.\n * @param apiSettings Api setting from request context.\n */\nexport const getFallbackImageUrl = (itemId: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (!itemId) {\n return '';\n }\n\n const productUrl = `Products/${itemId}_000_001.png`;\n return generateImageUrl(productUrl, apiSettings);\n};","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { generateProductImageUrl, getSelectedProductIdFromActionInput } from './utilities/utils';\n\nimport { getByIdAsync, getVariantsByDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get selected variant action input class\n */\nexport class SelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public matchingDimensionValues: ProductDimension[];\n\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n }\n\n public getCacheKey = () => `SelectedVariant`;\n public getCacheObjectType = () => 'SimpleProduct';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nconst createInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new SelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n } else {\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * Action method for the getSelectedVariant data aciton\n * @param input The action input class\n * @param ctx The action context\n */\nasync function getSelectedVariantAction(input: SelectedVariantInput, ctx: IActionContext): Promise {\n let product: SimpleProduct | null = null;\n\n const response = await getByIdAsync({ callerContext: ctx }, input.productId, input.channelId);\n\n const baseProduct: SimpleProduct = Array.isArray(response) ? response[0] : response;\n\n // Need to dereference this before editing it. Otherwise we might not\n // properly get the mobx events because if things aren't properly observable\n // they won't fire when you set them, and then if you don't deref the value in\n // the cache will match the value when you try to save it, so it won't detect any\n // changes there either\n product = { ...baseProduct };\n\n if (product) {\n let baseProductHadUnmatchedDimension: boolean = false;\n if (product.Dimensions) {\n product.Dimensions.map(dimension => {\n const matchedTargetDimension = input.matchingDimensionValues.find(\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\n );\n\n if (matchedTargetDimension) {\n dimension.DimensionValue = matchedTargetDimension.DimensionValue;\n } else {\n baseProductHadUnmatchedDimension = true;\n }\n });\n }\n\n if (!baseProductHadUnmatchedDimension && input.matchingDimensionValues.length > 0) {\n const variants = await getVariantsByDimensionValuesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n baseProduct.RecordId,\n input.channelId,\n input.matchingDimensionValues\n );\n\n if (variants && variants.length > 0) {\n product = variants[0];\n }\n }\n\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n }\n\n return product;\n}\n\n/**\n * The complete getSelectedVariant data action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-selected-variant',\n action: >getSelectedVariantAction,\n input: createInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetByCustomerInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { CommerceList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildQueryResultSettings } from './utilities/utils';\n\nconst createWishlistInput = (inputData: ICreateActionContext) => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetByCustomerInput(buildQueryResultSettings(inputData), null);\n }\n\n throw new Error('[get-wishlist-by-customer-id] Unable to create input for getWishlists');\n};\n\n/**\n * Get Org Unit Configuration Data Action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-wishlist-by-customer-id',\n action: >retailAction,\n input: createWishlistInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport {\n getAttributeDefinitionsAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AttributeDefinition, AttributeDefinitionCriteria} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get attribute definitions data action\n */\nexport class GetAttributeDefinitionsInput implements IActionInput {\n public attributeDefinitionCriteria?: AttributeDefinitionCriteria;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, attributeDefinitionCriteria?: AttributeDefinitionCriteria) {\n this.attributeDefinitionCriteria = attributeDefinitionCriteria;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AttributeDefinitions', this.apiSettings);\n public getCacheObjectType = () => 'CustomerAttribute';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetAttributeDefinitionsInput => {\n const { apiSettings, channel } = inputData.requestContext;\n if (!channel || !channel.CustomerAttributeGroupId) {\n throw new Error('[getAttributeDefinitions][createInput]: Customer attribute group id is not found.');\n }\n\n return new GetAttributeDefinitionsInput(apiSettings, {AttributeGroupIdentifier: channel.CustomerAttributeGroupId});\n};\n\nconst getAttributeDefinitionsAction = async (input: GetAttributeDefinitionsInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.channel && ctx.requestContext.channel.CustomerAttributeGroupId) {\n return getAttributeDefinitionsAsync({ callerContext: ctx }, input.attributeDefinitionCriteria || null).then(response => {\n return response;\n });\n }\n\n ctx.trace('[getAttributeDefinitions]Invalid input passed to action');\n return [];\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-custom-attributes',\n action: >getAttributeDefinitionsAction,\n input: createInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrgUnitConfigurationInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Org Unit Configuration Data Action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-org-unit-configuration',\n action: >retailAction,\n input: () => {\n return createGetOrgUnitConfigurationInput();\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetById = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetById = async (\n _inputs: IActionInput | IActionInput[],\n simpleProduct: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n simpleProduct = await Promise.resolve(Array.isArray(simpleProduct) ? simpleProduct[0] : simpleProduct);\n\n // If simple product result is defined run the post hook\n if (simpleProduct) {\n const productInfo = getProductInfoFromSimpleProduct(simpleProduct);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n actionContext.requestContext.telemetryData[TelemetryEvent.ProductPageView] = productInfo ? [productInfo] : [];\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetById',\n postReaderHook: afterGetById,\n preReaderHook: beforeGetById\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { friendsAndFamilyListInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { rsmFriendsAndFamilyListResponseExtensionClass } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * Getfriendsandfamilylist Input Action\r\n */\r\nexport class GetFriendsAndFamilyListInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetFriendsAndFamilyListInput`;\r\n public getCacheObjectType = () => 'IGetFriendsAndFamilyListInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new GetFriendsAndFamilyListInput(\r\n friendsAndFamilyListInput()\r\n );\r\n};\r\n\r\nasync function action(input: GetFriendsAndFamilyListInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n\r\n // TEST DATA: remove when module is done\r\n // return {\r\n // Status: 'SUCCESS',\r\n // Result: {\r\n // Codes: [\r\n // {\r\n // RecipientEmailAddress: '',\r\n // Status: 'SENT',\r\n // Code: 'uam97FAL3h',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: ''\r\n // },\r\n // {\r\n // RecipientEmailAddress: 'fred.wwwww@email.com',\r\n // Status: 'ACTIVATED',\r\n // Code: 'FCuA2fVAVc',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // },\r\n // {\r\n // RecipientEmailAddress: 'fred.awdawdaw@email.com',\r\n // Status: 'ACTIVATED',\r\n // Code: 'xgtU6J0ojU',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // },\r\n // {\r\n // RecipientEmailAddress: 'fred.aiabwdiubw@email.com',\r\n // Status: 'ACTIVATED',\r\n // Code: 'vmh78AqCor',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // },\r\n // {\r\n // RecipientEmailAddress: '',\r\n // Status: 'SENT',\r\n // Code: '1JMiVTfkNs',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: ''\r\n // },\r\n // ]\r\n // }\r\n // };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nexport type OrderBy =\n | 'None'\n | 'MostRecent'\n | 'Oldest'\n | 'HighestRating'\n | 'LowestRating'\n | 'MostHelpful'\n | 'LeastHelpful'\n | 'MostAsked'\n | 'MostAnswered'\n | 'LeastConcerns'\n | 'MostConcerns'\n | 'ReviewerNameAsc'\n | 'ReviewerNameDesc';\n\n/**\n * ReviewsGetRatingsSummary Input Action\n */\nexport class GetProductReviewsInput implements IActionInput {\n /**\n * The Id representing the product to get the reviews for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The market for which to get the reviews from.\n */\n public localeListFilter: string;\n\n /**\n * Number of reviews to be shown on each page.\n */\n public pageSize: number;\n\n /**\n * Order in which reviews to be shown.\n */\n public orderBy: string;\n\n /**\n * Need to set this value if reviews need to be filtered with specific star rating .\n */\n public starFilters?: string;\n\n /**\n * Need to set this value if we need to skip few reviews.\n */\n public skipItems: number;\n\n /**\n * The continuation token\n */\n public pageToken: string | null;\n\n /**\n * Selects which data sources to use to retrieve data\n */\n public dataSources: string | null;\n\n /**\n * The ratings and reviews service endpoint\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n localeListFilter: string,\n serviceEndpoint: string,\n orderBy: string = 'MostHelpful',\n starFilters: string = '',\n skipItems: number = 0,\n pageSize: number = 10,\n pageToken: string | null = null,\n dataSources: string | null = null\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.localeListFilter = localeListFilter;\n // Max page size which Rnr API supports is 25.\n // Hence if config has page size more than 25, we'll default it to 25.\n this.pageSize = pageSize > 25 ? 25 : pageSize;\n this.orderBy = orderBy;\n this.starFilters = starFilters;\n this.skipItems = skipItems;\n this.pageToken = pageToken;\n this.dataSources = dataSources;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => `${this.productId}-${this.tenantId}-${this.localeListFilter}-${this.pageSize}-${this.orderBy}-${this.starFilters}-${this.skipItems}`;\n public getCacheObjectType = () => 'ProductReview';\n public dataCacheType = (): CacheType => 'request';\n}\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { FilterDeliveryModeOption, ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { FeatureStateInput, getFeatureStateAction } from './get-feature-state';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from './index';\n\n/**\n * Input class for the GetDeliveryOptionsForSelectedVariant Data Action\n */\nexport class GetDeliveryOptionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public selectedProduct: SimpleProduct | undefined;\n public customerId: string;\n public featureState?: boolean;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string, featureState?: boolean) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n this.featureState = featureState;\n }\n\n public getCacheKey = () => `DeliveryOptionsForSelectedVariant`;\n public getCacheObjectType = () => 'DeliveryOptions';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * The createInput method for the GetDeliveryOptionsForSelectedVariant Data Action\n * @param inputData The input data for the createInput method\n */\nexport const createDeliveryOptionsForSelectedVariantInput = (inputData: ICreateActionContext>): GetDeliveryOptionsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDeliveryOptionsForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined,\n undefined,\n );\n } else {\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The Action Method for the GetDeliveryOptionsForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's supported delivery options\n * via the getDeliveryOptionsAsync RetailServer API\n */\nexport async function getDeliveryOptionsForSelectedVariantAction(\n input: GetDeliveryOptionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n if(input.featureState === undefined) {\n const featureState = await getFeatureState(ctx);\n input.featureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n }\n\n return Promise.resolve()\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getDeliveryOptionsAsync(\n { callerContext: ctx, queryResultSettings: {} },\n [activeProduct.RecordId],\n {},\n // for giftcard, should not apply filter.\n (input.featureState && !productResult?.IsGiftCard) ? FilterDeliveryModeOption.FilterOutNonPickupDeliveryMode : null\n ).then(response => {\n if(response && response.length > 0) {\n return response[0];\n }\n\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getDeliveryOptionsForSelectedVariantAction]Error executing action`);\n throw new Error('[getDeliveryOptionsForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-selected-variant',\n action: >getDeliveryOptionsForSelectedVariantAction,\n input: createDeliveryOptionsForSelectedVariantInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action\n */\nexport class GetCustomerInput implements IActionInput {\n public customerAccountNumber?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.customerAccountNumber = accountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`Customer-${this.customerAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'Customer';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetCustomerInput => {\n const { user, apiSettings } = inputData.requestContext;\n if (!user.token || !user.isAuthenticated) {\n throw new Error('[getCustomer][createInput]: User is not Authenticated.');\n }\n\n return new GetCustomerInput(apiSettings);\n};\n\nconst getCustomerAction = async (input: GetCustomerInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.user.isAuthenticated) {\n // TO-DO- Need to clean up this code once SDK releases new proxy that handles null.\n return readAsync({ callerContext: ctx }, input.customerAccountNumber || '').then(response => {\n return Array.isArray(response) ? response[0] : response;\n });\n }\n\n ctx.trace('[getCustomer]Invalid input passed to action');\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer',\n action: >getCustomerAction,\n input: createInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipGetDataInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMemberMgmtGetDataResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class GetMembershipInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => true;\r\n\r\n public getCacheKey = () => `IGetMembershipInput`;\r\n public getCacheObjectType = () => 'IGetMembershipInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IGetMembershipData extends IrsmClubMemberMgmtGetDataResponse {}\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n}\r\n\r\nexport const createGetMembershipInput = (\r\n args: Msdyn365.ICreateActionContext\r\n): GetMembershipInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || '';\r\n return new GetMembershipInput(\r\n clubMembershipGetDataInput(\r\n accNumber\r\n ),\r\n );\r\n};\r\n\r\nexport async function getMembershipAction(\r\n input: GetMembershipInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: > getMembershipAction,\r\n input: createGetMembershipInput,\r\n});","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\n/**\r\n * Chains getting the SelectedVariant by product id\r\n */\r\n\r\nexport class AttributesForSelectedVariantInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n public catalogId: number;\r\n public selectedProduct: SimpleProduct | undefined;\r\n constructor(\r\n productId: number,\r\n channelId: number,\r\n selectedProduct?: SimpleProduct,\r\n catalogId?: number\r\n ) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.selectedProduct = selectedProduct;\r\n this.catalogId = catalogId || 0;\r\n }\r\n public getCacheKey = () => `${this.productId}:${this.channelId}:${this.catalogId}:AttributesForSelectedVariant`;\r\n public getCacheObjectType = () => 'ProductAttributeValue';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createAttributesForSelectedVariantInput = (\r\n inputData: ICreateActionContext>\r\n): AttributesForSelectedVariantInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n if (productId) {\r\n return new AttributesForSelectedVariantInput(\r\n +productId,\r\n\r\n +inputData.requestContext.apiSettings.channelId\r\n );\r\n } else {\r\n throw new Error(\r\n 'Unable to create AttributesForSelectedVariantInput, no productId found on module config or query'\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * Calls the Retail API a get a list of dimension values for a given product.\r\n */\r\nexport async function getAttributesForSelectedVariantAction(\r\n input: AttributesForSelectedVariantInput,\r\n ctx: IActionContext\r\n): Promise {\r\n // @ts-ignore: Promise vs. AsyncResult typing conflict\r\n\r\n return Promise.resolve().then(() => {\r\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(\r\n input.productId,\r\n input.channelId\r\n );\r\n\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n return activeProduct;\r\n })\r\n .then((productResult: SimpleProduct | null) => {\r\n const activeProduct: SimpleProduct | undefined = productResult;\r\n\r\n if (activeProduct) {\r\n return getAttributeValuesAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n activeProduct.RecordId,\r\n input.channelId,\r\n input.catalogId\r\n );\r\n }\r\n return null;\r\n })\r\n .then((attributeValues: AttributeValue[] | null) => {\r\n const resultArray = attributeValues;\r\n if (resultArray) {\r\n return resultArray;\r\n }\r\n return [];\r\n })\r\n .catch((error: Error) => {\r\n console.log(error);\r\n console.log(error.message);\r\n ctx.trace(error.message);\r\n\r\n throw new Error(\r\n '[getPriceForSelectedVariantAction]Error executing action'\r\n );\r\n });\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getAttributesForSelectedVariantAction,\r\n input: createAttributesForSelectedVariantInput\r\n});\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, IProductTransaction, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Checkout data action pre-hook\n * @param inputs Data action inputs\n */\nconst beforePurchase = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\n/**\n * Fires a Purchase event after Checkout data action completed\n * @param _inputs Data action inputs\n * @param salesOrder Sales order for transaction\n * @param actionContext Action context\n */\nconst afterPurchase = async (\n _inputs: IActionInput | IActionInput[],\n salesOrder: SalesOrder | SalesOrder[],\n actionContext: IActionContext\n) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const salesObject = Array.isArray(salesOrder) ? salesOrder[0] : salesOrder;\n let saleLineProductUnits: IProductInfo[] = [];\n\n // Collect info on products in the sales order\n if (salesObject && salesObject.SalesLines && Array.isArray(salesObject.SalesLines) && salesObject.SalesLines.length > 0) {\n try {\n saleLineProductUnits = await getProductInfoFromCartLinesAsync(salesObject.SalesLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('Checkout post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Store the purchased product information so that we can avoid \"code triggered\" remove from cart telemetry event.\n actionContext.requestContext.telemetryData[TelemetryEvent.Purchase] = {\n id: salesObject.Id,\n affiliation: salesObject.ChannelId ? salesObject.ChannelId.toString() : '',\n revenue: salesObject.NetAmountWithoutTax,\n tax: salesObject.TaxAmount,\n // shippingCost?: // Confirm if it is delivery mode charge amount;\n products: saleLineProductUnits\n };\n\n // Fire Purchase event\n window._msdyn365.telemetry.logEvent(\n TelemetryEvent.Purchase,\n actionContext.requestContext.telemetryData[TelemetryEvent.Purchase]\n );\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Checkout',\n postReaderHook: afterPurchase,\n preReaderHook: beforePurchase\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { getFeatureStatesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Input class for the getFeatureState data action.\n * The life time of the data action is 'application'.\n */\nexport class FeatureStateInput implements IActionInput {\n // Any additional feature names that needs to be checked in the code for enablement needs to be appended here:\n public readonly featureNames: string[] = [\n 'Dynamics.AX.Application.RetailB2BEcommerceFeature',\n 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature',\n 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n ];\n\n public getCacheKey = () => 'FeatureState';\n public getCacheObjectType = () => 'FeatureState';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * createInput method for the getFeatureState method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetFeatureStateInput = (inputData: ICreateActionContext>): IActionInput => {\n return new FeatureStateInput();\n};\n\n/**\n * The action method for the getFeatureState data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getFeatureStateAction(input: FeatureStateInput, ctx: IActionContext): Promise {\n // tslint:disable-next-line:no-unnecessary-local-variable\n const featureState = await getFeatureStatesAsync({ callerContext: ctx }, input.featureNames);\n return featureState;\n}\n\n/**\n * The getFeatureState data action\n * Gets the feature state via the read RetailServer API\n * Returns address information associated with the retrieved customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-feature-state',\n action: >getFeatureStateAction,\n input: createGetFeatureStateInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n// TODO: import from commerce entities when available\n// tslint:disable-next-line:interface-name\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n// tslint:disable-next-line:interface-name\nexport interface MappedSearchConfiguration {\n key: string;\n sortColumn: SortColumn;\n}\n\nexport const sortOptions = {\n sortByOptionRelevanceDesc: 'Ranking-Desc',\n sortByOptionRatingAsc: 'AverageRating-Asc',\n sortByOptionRatingDesc: 'AverageRating-Desc',\n sortByOptionNameAsc: 'Name-Asc',\n sortByOptionNameDesc: 'Name-Desc',\n sortByOptionPriceAsc: 'Price-Asc',\n sortByOptionPriceDesc: 'Price-Desc'\n};\n\n/**\n * ActionInput class for the get-mapped-search-configuration Data Action\n */\nexport class MappedSearchInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('MappedSearchInput', this.apiSettings);\n public getCacheObjectType = () => 'MappedSearchInput';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Get a mapped search configuration that is easy to use for sorting\n */\nexport async function getMappedSearchConfiguration(input: MappedSearchInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx }).then((searchConfiguration: SearchConfiguration) => {\n return ((searchConfiguration.ProductSortColumns || []).map((sortColumn: SortColumn) => {\n let key = '';\n if (sortColumn.ColumnName) {\n switch(sortColumn.ColumnName.toUpperCase()) {\n case 'NAME':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionNameDesc : sortOptions.sortByOptionNameAsc;\n break;\n case 'PRICE':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionPriceDesc : sortOptions.sortByOptionPriceAsc;\n break;\n case 'AVERAGERATING':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionRatingDesc : sortOptions.sortByOptionRatingAsc;\n break;\n case 'RANKING':\n key = sortOptions.sortByOptionRelevanceDesc;\n break;\n default:\n }\n } else {\n ctx.telemetry.warning('[get-mapped-search-configuration] unknown search option');\n }\n if (key) {\n return {\n key,\n sortColumn\n };\n } else {\n return undefined;\n }\n }).filter(Boolean));\n });\n}\n\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new MappedSearchInput(inputData.requestContext.apiSettings);\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-mapped-search-configuration',\n action: >getMappedSearchConfiguration,\n input: createInput\n});","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { InvoicePaidStatus, InvoiceSearchCriteria, InvoiceType, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoicesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g';\n\nconst getDefaultSearchCriteria = (): InvoiceSearchCriteria => {\n const searchCriteria: InvoiceSearchCriteria = {};\n searchCriteria.InvoiceTypeValues = [InvoiceType.SalesOrderInvoice];\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n return searchCriteria;\n};\n\n/**\n * Input class for get invoice data action\n */\nexport class GetInvoicesInput implements IActionInput {\n public readonly searchCriteria: InvoiceSearchCriteria;\n\n constructor(searchCriteria: InvoiceSearchCriteria) {\n this.searchCriteria = searchCriteria;\n }\n\n public getCacheKey = () => 'BusinessPartnerInvoices';\n public getCacheObjectType = () => 'OrderInvoice';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const CreateGetInvoicesInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new GetInvoicesInput(getDefaultSearchCriteria());\n};\n\nexport async function getInvoices(input: GetInvoicesInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get list of invoices. User is not authenticated.');\n }\n\n return getInvoicesAsync({ callerContext: context }, input.searchCriteria);\n}\n\nexport default createObservableDataAction({\n id: 'get-invoices',\n action: >getInvoices,\n input: CreateGetInvoicesInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\r\n ICommerceApiSettings, ICreateActionContext, IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n CountryRegionInfo, StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getCountryRegionsAction, GetCountryRegionsInput } from './get-country-regions';\r\nimport { getStateProvinceAction, GetStateProvincesInput } from './get-state-provinces';\r\n\r\n/**\r\n * Input class for get country regions data action\r\n */\r\nexport class GetCountryStateInput implements IActionInput {\r\n public locale: string;\r\n public apiSettings: ICommerceApiSettings;\r\n\r\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\r\n this.locale = locale;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`CountryStateInfo-${this.locale}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): GetCountryStateInput => {\r\n const { locale, apiSettings } = inputData.requestContext;\r\n if (!(inputData.requestContext && locale)) {\r\n throw new Error('Unable to create country regions input. Locale is not provided.');\r\n }\r\n return new GetCountryStateInput(locale, apiSettings);\r\n};\r\n\r\nexport async function getCountryStateAction(input: GetCountryStateInput, ctx: IActionContext): Promise {\r\n const countryInput = new GetCountryRegionsInput(input.locale, input.apiSettings);\r\n const countryRegionsInfo = await getCountryRegionsAction(countryInput, ctx);\r\n\r\n const channelConfiguration = ctx.requestContext.channel;\r\n\r\n const marketISOCode = channelConfiguration && channelConfiguration.ChannelCountryRegionISOCode || 'US';\r\n const currentCountryRegion = countryRegionsInfo.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n const countryRegionId = (currentCountryRegion && currentCountryRegion.CountryRegionId) || 'USA';\r\n\r\n const stateInput = new GetStateProvincesInput(countryRegionId, input.apiSettings);\r\n return getStateProvinceAction(stateInput, ctx);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/address/get-country-state',\r\n action: >getCountryStateAction,\r\n input: createInput\r\n});","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchOrgUnitLocationsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildQueryResultSettings } from './utilities/utils';\n\n/**\n * Search Org Unit Locations action createInput method\n */\nexport function createSearchOrgUnitLocationsInputFunc(inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n return createSearchOrgUnitLocationsInput(buildQueryResultSettings(inputData), {});\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >retailAction,\n input: createSearchOrgUnitLocationsInputFunc\n});\n","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\n\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\n\n/**\n * Input class for getActiveWishlistItems data action\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => `ActiveWishlistItems`;\n public getCacheObjectType = () => 'ActiveWishlistItems';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if (ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync({ callerContext: ctx, queryResultSettings: {} }, null);\n\n if (wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n wishlists.forEach((currWishlist) => {\n if (currWishlist.CommerceListLines) {\n currWishlist.CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if (commerceListLine.ProductId) {\n productInputs.push(new FullProductInput(commerceListLine.ProductId, ctx.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(ctx)));\n }\n });\n }\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[getActiveWishlistItems]Unable to hydrate cart with product information`);\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n } else {\n ctx.trace('No productIds found for wishlist');\n }\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n","import { Image, ISubList } from '@msdyn365-commerce-modules/data-types';\nimport { buildCacheKeyWithUrlTokens, getList, ListInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IProductItem } from '@msdyn365-commerce-modules/retail-actions/dist/types/get-list';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** List Page Summary Input */\nexport class ListPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'ListPageSummary';\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ListPageSummary', this.requestContext);\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * List item type enum\n */\nconst enum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Get the url of sub list.\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if (!sitePath) {\n return `/${listName}.l`;\n }\n\n // sitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get sub list item.\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n // @ts-ignore\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount\n ? Number(inputData.requestContext.query.skipCount)\n : 0;\n}\n\n/**\n * Get images.\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get input list data.\n */\nfunction getInputListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\nconst createGetListInput = (inputData: IActionContext): ListInput => {\n const listData: IGeneric = getInputListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // if any elements in product list, then copy it and add to list items\n if (!(productList.length === 0)) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // save the last portion of product items.\n if (!(productList.length === 0)) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nconst action = async (input: ListPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let listData;\n try {\n listData = await getList(createGetListInput(context), context);\n } catch (e) {\n // Do nothing, if there's an error running the action fall back to values defined from data\n }\n if (listData && listData.Title) {\n return {\n title: listData.Title,\n description: listData.Description\n };\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n description: config.description\n };\n } else {\n return {};\n }\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/list-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new ListPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetVariantsByDimensionValues = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetVariantsByDimensionValues = async (\n _inputs: IActionInput | IActionInput[],\n simpleProducts: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n if (!Array.isArray(simpleProducts)) {\n simpleProducts = [simpleProducts];\n }\n\n simpleProducts.forEach(async product => {\n if (product) {\n product = await Promise.resolve(product);\n const productInfo = getProductInfoFromSimpleProduct(product);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n }\n });\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetVariantsByDimensionValues',\n postReaderHook: afterGetVariantsByDimensionValues,\n preReaderHook: beforeGetVariantsByDimensionValues\n});\n","import { IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { QueryResultSettingsProxy } from './QueryResultSettingsProxy';\n\nexport interface ISearchData {\n q: string;\n skip: number;\n top: number;\n itemsPerPage: string;\n maxItems: string;\n channelId: number;\n queryResultSettings: QueryResultSettings;\n}\n\nexport const parseSearchData = (inputData: ICreateActionContext>): ISearchData => {\n // query is of type 'IDictionary | undefined', so that q and skip are not recognized by tsc\n // @ts-ignore:2339\n const { requestContext: {query: {q, top, skip}, apiSettings: {channelId}}, config: {maxItems, itemsPerPage}} = inputData;\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return {\n q,\n skip: (skip && Number(skip) || 0),\n top: (top && Number(top) || 50),\n itemsPerPage, // TODO BUGBUG 21667361\n maxItems, // TODO BUGBUG 21667361\n channelId,\n queryResultSettings\n };\n};","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Chains getting the SelectedVariant with GetActivePrice\n */\nexport class AttributesForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public catalogId: number;\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.catalogId = catalogId || 0;\n }\n\n public getCacheKey = () => `AttributesForSelectedVariant`;\n public getCacheObjectType = () => 'ProductAttributeValue';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createAttributesForSelectedVariantInput = (inputData: ICreateActionContext>): AttributesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new AttributesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n } else {\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * Calls the Retail API a get a list of dimension values for a given product.\n */\nexport async function getAttributesForSelectedVariantAction(\n input: AttributesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\n return Promise.resolve().then(() => {\n const activeProduct:SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n }).then((productResult: SimpleProduct | null) => {\n const activeProduct:SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getAttributeValuesAsync({ callerContext: ctx, queryResultSettings: {} }, activeProduct.RecordId, input.channelId, input.catalogId);\n }\n\n return null;\n }).then((attributeValues: AttributeValue[] | null) => {\n const resultArray = attributeValues;\n if (resultArray) {\n return resultArray;\n }\n\n return [];\n }).catch((error: Error) => {\n ctx.trace(error.message);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-info/get-attributes-for-selected-variant',\n action: >getAttributesForSelectedVariantAction,\n input: createAttributesForSelectedVariantInput\n});\n","import { buildCacheKey, getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { ProductDeliveryOptions, SalesOrder, SimpleProduct, TransactionType } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getSalesOrderDetailsBySalesIdAsync, getSalesOrderDetailsByTransactionIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g';\n\ninterface ISalesOrderWithHydrations {\n salesOrder: SalesOrder;\n products: SimpleProduct[];\n productDeliveryOptions?: ProductDeliveryOptions[];\n}\n\n/**\n * orderTypes Types of orders\n */\nexport const enum orderTypes {\n salesOrder = 'salesOrder',\n transaction = 'transaction'\n}\n\n/**\n * Calls the Retail API and returns the sales order\n */\nconst getSalesOrder = (orderType: string = '', orderId: string = '') => async (ctx: IActionContext): Promise => {\n return orderType === orderTypes.salesOrder\n ? getSalesOrderDetailsBySalesIdAsync({ callerContext: ctx }, orderId)\n : // Local (1) searches the retail server database, and remote (2) searches\n // on the headquarters side. All (3) and none (0) are not supported.\n getSalesOrderDetailsByTransactionIdAsync({ callerContext: ctx }, orderId, 3);\n};\n\n/**\n * Calls the Retail API and returns the products\n */\nconst getProducts = (productIds: number[] = [], channelId?: number) => async (ctx: IActionContext): Promise => {\n const productInputs = productIds.map(productId => new ProductInput(productId, ctx.requestContext.apiSettings, channelId));\n return getSimpleProducts(productInputs, ctx);\n};\n\n/**\n * Action input\n */\nexport class GetSalesOrderWithHydrationsInput implements IActionInput {\n public orderType: string;\n public orderId: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(orderType: string , orderId: string, apiSettings: ICommerceApiSettings) {\n this.orderType = orderType;\n this.orderId = orderId;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`SalesOrderWithHydrations`, this.apiSettings);\n public getCacheObjectType = () => `SalesOrderWithHydrations-${this.orderType}-${this.orderId}`;\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createSalesOrderWithHydrationsInput = (inputData: ICreateActionContext) => {\n const { salesId = '', transactionId = '' } = (inputData.requestContext.query && inputData.requestContext.query) || {};\n if (salesId) {\n return new GetSalesOrderWithHydrationsInput(orderTypes.salesOrder, salesId, inputData.requestContext.apiSettings);\n } else if (transactionId) {\n return new GetSalesOrderWithHydrationsInput(orderTypes.transaction, transactionId, inputData.requestContext.apiSettings);\n }\n throw new Error(`createSalesOrderWithHydrationsInput - No salesId or transactionId provided.`);\n};\n\n/**\n * Get sales order with hydrations action\n */\nexport async function getSalesOrderWithHydrationsAction(\n input: GetSalesOrderWithHydrationsInput,\n ctx: IActionContext\n): Promise {\n if (!ctx) {\n throw new Error(`getSalesOrderWithHydrationsAction - Action context cannot be null/undefined`);\n }\n\n const { orderType, orderId } = input;\n\n if (!orderType || !orderId) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No orderType or orderId provided.`);\n return {};\n }\n\n const salesOrder = await getSalesOrder(orderType, orderId)(ctx);\n\n if (!salesOrder) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No salesOrder found.`);\n return {};\n }\n\n // If it is salesInvoice, return salesOrder and empty products\n // tslint:disable-next-line:prefer-type-cast\n if (salesOrder.TransactionTypeValue === 15 as TransactionType.SalesInvoice) {\n return {\n salesOrder,\n products: []\n };\n }\n\n if (!salesOrder.SalesLines || !salesOrder.SalesLines.length) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No salesLine found.`);\n return {};\n }\n\n const productIds: number[] = salesOrder.SalesLines.map(salesLine => salesLine.ProductId || 0).filter(productId => productId);\n\n if (!productIds || !productIds.length) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No productId in saleLines found.`);\n return {};\n }\n\n const products = await getProducts(productIds, salesOrder.ChannelId)(ctx);\n\n if (!products || !products.length) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No product found.`);\n return {};\n }\n\n const deliveryOptions = await getDeliveryOptionsAsync({ callerContext: ctx, queryResultSettings: {} }, products.map(x => x.RecordId), {}, 4)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getDeliveryOptionsForCartLineItems]Error executing action`);\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n\n return {\n salesOrder,\n products,\n deliveryOptions\n };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-sales-order-with-hydrations',\n action: >getSalesOrderWithHydrationsAction,\n input: createSalesOrderWithHydrationsInput\n});","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { IActiveTabState } from './tab-state';\n\nexport function createTabStateInput(result: IActiveTabState): GenericInput {\n return new GenericInput('activeTabState', result, 'IActiveTabState');\n}\n\nconst createTabStateInputInternal = (): IActionInput => {\n return createTabStateInput({});\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createTabStateInputInternal\n});\n","import { IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings, SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { IQueryResultSettingsModuleConfig } from './IQueryResultSettingsModuleConfig';\n\n/**\n * Wrapper for query result settings, which guarantees some properties that are optional in the real subject\n * and includes some common utilities for data actions\n */\nexport class QueryResultSettingsProxy {\n // real subject\n private queryResultSettings: QueryResultSettings;\n\n get QueryResultSettings(): QueryResultSettings {\n return this.queryResultSettings;\n }\n\n /**\n * Gets the hints for the cache key based on query result settings\n */\n get cacheKeyHint(): string {\n // the factory method guarantees values are defined\n const topHint = `top-${this.queryResultSettings.Paging!.Top!}`;\n const skipHint = `skip-${this.queryResultSettings.Paging!.Skip!}`;\n const sortingHintData = (this.queryResultSettings.Sorting!.Columns || []).map((column: SortColumn) => {\n return `${column.ColumnName}--${column.IsDescending && 'desc' || 'asc'}`;\n }).join(',') || undefined;\n const sortingHint = `sortBy-${sortingHintData}`;\n return `${topHint}|${skipHint}|${sortingHint}`;\n }\n\n /**\n * Factory method for data actions\n * @param inputData input data\n */\n public static fromInputData(inputData: ICreateActionContext>): QueryResultSettingsProxy {\n const { requestContext, config } = inputData;\n return QueryResultSettingsProxy.fromModuleData(requestContext, config as IQueryResultSettingsModuleConfig);\n }\n\n /**\n * Factory method for modules\n * @param requestContext requestContext\n * @param config module config from props\n */\n public static fromModuleData(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig): QueryResultSettingsProxy {\n const sortingCriteria = config && config.sortingCriteria || undefined;\n const query = requestContext && requestContext.query;\n const top = query && query.top || undefined;\n const skip = query && query.skip || undefined;\n\n const queryResultSettings = {\n Paging: {\n Skip: (skip && Number(skip) || 0),\n Top: (top && Number(top) || config?.itemsPerPage || 50)\n },\n Sorting: sortingCriteria || {}\n };\n\n return new QueryResultSettingsProxy(queryResultSettings);\n }\n\n /**\n * Factory method\n */\n public static getDefault(): QueryResultSettingsProxy {\n return new QueryResultSettingsProxy({ Paging: {}, Sorting: {} });\n }\n\n /**\n * private constructor, expect instances to be created with the factory method\n */\n private constructor(\n queryResultSettings: QueryResultSettings\n ) {\n this.queryResultSettings = queryResultSettings;\n }\n}","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionContext, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { Category } from '@msdyn365-commerce/retail-proxy';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport getCategoryAction, { CategoriesInput as RawCategoriesInput } from './get-categories';\nimport { getCategoryUrl } from './utilities/Url-builder';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input for get-categories data action\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n public readonly channelId: number;\n private readonly sitePath: string;\n private _mappedToHierarchy: boolean;\n private apiSettings: ICommerceApiSettings;\n private locale?:string;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? +context.apiSettings.channelId : 0;\n this.sitePath = context && context.sitePath || '';\n this.apiSettings = context.apiSettings;\n this.locale = context.locale || '';\n }\n\n public getCacheKey = () => buildCacheKey(`${this.channelId}|${this.sitePath}|top-${this.maxItems || 250}`, this.apiSettings, this.locale);\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n public dataCacheType = (): CacheType => 'application';\n public getLocale = ():string => this.locale || '';\n}\n\nconst getFriendlyName = (locale?: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n};\n\nexport interface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Creates a hierarchy of categories based on the ParentCategory property\n * @param categoryList Categories that will be converted into a hierarchy\n * @returns Hierarchy of categories in array\n */\nexport const mapCategoryToHierarchy = (categoryList: Category[], ctx: IActionContext, locale?: string ): CategoryHierarchy[] => {\n if (!categoryList || !categoryList.length) {\n return [];\n }\n\n const categoryMap: ICategoryMap = categoryList.reduce((memo: ICategoryMap, category: Category) => {\n const localName = getFriendlyName(locale, category.NameTranslations);\n const categoryHierarchy = { ...category };\n categoryHierarchy.NeutralizedName = category.Name;\n categoryHierarchy.Name = localName || categoryHierarchy.NeutralizedName;\n memo[category.RecordId] = categoryHierarchy;\n return memo;\n }, {});\n\n let zeroCategory = categoryMap[0];\n\n Object.keys(categoryMap).forEach((id: string) => {\n const element = categoryMap[+id];\n const parentId = element.ParentCategory;\n element.Url = getCategoryUrl(element, ctx, categoryMap);\n if (parentId === 0) {\n zeroCategory = element;\n return;\n }\n\n const parent = parentId && categoryMap[parentId];\n if (parent) {\n parent.Children = parent.Children || [];\n parent.Children.push(element);\n }\n });\n\n return (zeroCategory && zeroCategory.Children) || [];\n};\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, true, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a hierarchy\n */\nexport async function getCategoryHierarchyAction(input: CategoriesInput, ctx: IActionContext): Promise {\n const categories = await getCategoryAction(\n new RawCategoriesInput(ctx.requestContext, false, input.maxItems),\n ctx\n );\n return mapCategoryToHierarchy(categories, ctx, input.getLocale());\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories-hierarchy',\n action: >getCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n","import {\n buildCacheKeyWithUrlTokens,\n getFullOrderTemplate,\n GetFullOrderTemplateInput,\n IQueryResultSettingsModuleConfig,\n OrderTemplate,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for getActiveOrderTemplateLines data action\n */\nexport class ActiveOrderTemplateLinesInput implements IActionInput {\n public requestContext: IRequestContext;\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n\n constructor(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig) {\n if (!requestContext.query?.id) {\n throw new Error('Failed to get order template id from the query.');\n }\n if (!config) {\n throw new Error('Failed to get order template module configuration');\n }\n this.orderTemplateId = requestContext.query.id;\n this.queryResultSettings = QueryResultSettingsProxy.fromModuleData(requestContext, config).QueryResultSettings;\n\n this.queryResultSettings.count = true;\n this.requestContext = requestContext;\n }\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ActiveOrderTemplateLines', this.requestContext);\n public getCacheObjectType = (): string => 'ActiveOrderTemplateLines';\n public dataCacheType = (): CacheType => 'instance';\n public shouldCacheOutput = () => false;\n}\n\n/**\n * Calls the Retail API and returns a ProductList object based on the passed GetCartInput\n */\nexport async function getActiveOrderTemplateLines(input: ActiveOrderTemplateLinesInput, context: IActionContext): Promise {\n return getFullOrderTemplate(new GetFullOrderTemplateInput(input.orderTemplateId, input.queryResultSettings), context);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-template/order-template/get-order-template-lines',\n action: >getActiveOrderTemplateLines,\n input: (context: ICreateActionContext) => {\n if (!context.config) {\n throw new Error('Failed to get order template module configuration');\n }\n return new ActiveOrderTemplateLinesInput(context.requestContext, context.config);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { IMSDyn365Window } from '@msdyn365-commerce/core-internal';\nimport { Cart, CartLine, IAddCartLinesParam, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines added before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeAddToCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were added\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const addCartLinesParams = actionInput.queryParams();\n if (addCartLinesParams && addCartLinesParams.cartLines) {\n // Save info on added cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.addedCartLines = addCartLinesParams.cartLines;\n return;\n }\n }\n actionContext.telemetry.debug('AddToCart pre-data action hook failed - No added cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('AddToCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires an AddToCart event after AddCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been added\n * @param actionContext Action context\n */\nconst afterAddToCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const addedCartLines = actionContext.requestContext.telemetryData.addedCartLines;\n let addedProducts: IProductInfo[] = [];\n\n // Collect info on products added to cart\n if (addedCartLines) {\n try {\n addedProducts = await getProductInfoFromCartLinesAsync(addedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('AddCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire AddToCart event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.AddToCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: addedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/AddCartLines',\n postReaderHook: afterAddToCart,\n preReaderHook: beforeAddToCart\n});\n","import { IActionContext } from '@msdyn365-commerce/core';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\nimport { IListMapViewState, ILoadMapApiInput, IStoreInfo, IStoreSelectionStateContext, IStoreSelectorLocation, IStoreSelectorStateManager } from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n @observable public selectedStoreLocationId?: string;\n @observable public preferredStore?: IStoreInfo;\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n @observable public isMapModuleLoaded?: boolean;\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n @observable protected _context?: IStoreSelectionStateContext;\n private preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if(storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(storeId?: string, storeName?: string | undefined, writeToCookie: boolean = false, latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}","import { action } from 'mobx';\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (!searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled) {\n return undefined;\n }\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n const query = encodeURI(searchTerm);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl = actionContext.requestContext.app && actionContext.requestContext.app.config && actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT}/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise((resolve) => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n document.body.removeChild(script);\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n const isScriptAlreadyLoaded = document?.getElementById('msdyn_map-api-script') ? true : false;\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${input.market ? `&setMkt=${input.market}` : ''}`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.onerror = (error: string | Event) => {\n reject(error);\n };\n document?.body?.appendChild(script);\n });\n }\n\n}","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICommerceApiSettings, ICreateActionContext, IDictionary, IGeneric } from '@msdyn365-commerce/core';\nimport { getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey, generateProductImageUrl } from './utilities/utils';\n\n/**\n * Product Input\n */\nexport class ProductInput implements IActionInput {\n public productId: number;\n public channelId: number;\n private apiSettings: ICommerceApiSettings;\n\n constructor(productId: number | string, apiSettings: ICommerceApiSettings, channelId?: number) {\n this.apiSettings = apiSettings;\n this.productId = +productId;\n this.channelId = channelId || apiSettings.channelId;\n }\n\n public getCacheKey = () => buildCacheKey(`RecordId-${this.productId.toString()}-ChannelId-${this.channelId.toString()}`, this.apiSettings);\n public getCacheObjectType = () => 'SimpleProduct';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createSimpleProductsInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n if (!productIds) {\n return [];\n }\n\n productIds = typeof productIds === 'string' ? productIds.split(',') : productIds;\n return !Array.isArray(productIds)\n ? []\n : productIds.map((productId: string) => {\n return new ProductInput(productId, inputData.requestContext.apiSettings);\n });\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput\n */\nexport async function getSimpleProductsAction(inputs: ProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || inputs.length === 0) {\n ctx.trace('[getSimpleProductsAction] Invalid or empty inputs passed.');\n return [];\n }\n\n const productIdMapping: IDictionary = {};\n const productIds = inputs.map((input, idx) => {\n productIdMapping[input.productId] = idx;\n return input.productId;\n });\n\n return getByIdsAsync({ callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getDefault().QueryResultSettings }, inputs[0].channelId, productIds).then(products => {\n const mappedProducts = products.map(product => {\n try {\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n\n return product;\n } catch (e) {\n ctx.trace('[getSimpleProductsAction] Unable to update ImageURL for Product');\n }\n })\n .reduce((memo: SimpleProduct[], product: SimpleProduct | undefined) => {\n if (!product) {\n return memo;\n }\n const idx = productIdMapping[product.RecordId];\n memo[idx] = product;\n return memo;\n }, []);\n\n // NOTE: This is not an ideal fix, but will resolve all current issues\n return inputs.map(input => {\n const foundProduct = mappedProducts.find(product => product && product.RecordId === input.productId);\n return foundProduct || {};\n });\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-simple-products',\n action: >getSimpleProductsAction,\n input: createSimpleProductsInput,\n isBatched: true\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { OrgUnitLocation, SearchArea } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitLocationsByAreaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\ninterface IOrgUnitLocations {\n orgUnitLocations: OrgUnitLocation[];\n}\n\nconst searchArea: SearchArea = {\n Radius: Math.max(),\n DistanceUnitValue: 0 // 0 is miles\n};\n\n/**\n * Calls the Retail API and returns the orgUnitLocations\n */\nconst getOrgUnitLocations = () => async (ctx: IActionContext): Promise => {\n return getOrgUnitLocationsByAreaAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n searchArea\n );\n};\n\n/**\n * Action input\n */\nexport class GetOrgUnitLocationsInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`OrgUnitLocations`, this.apiSettings);\n public getCacheObjectType = () => `OrgUnitLocations`;\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createOrgUnitLocationsInput = (inputData: ICreateActionContext>) => {\n return new GetOrgUnitLocationsInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Get orgUnitLocations action\n */\nexport async function getOrgUnitLocationsAction(\n input: GetOrgUnitLocationsInput,\n ctx: IActionContext\n): Promise {\n if (!ctx) {\n throw new Error(`getOrgUnitLocationsAction - Action context cannot be null/undefined`);\n }\n\n let orgUnitLocations: OrgUnitLocation[] = [];\n\n try {\n orgUnitLocations = await getOrgUnitLocations()(ctx);\n } catch (error) {\n throw error;\n }\n\n return { orgUnitLocations: orgUnitLocations };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-org-unit-locations',\n action: >getOrgUnitLocationsAction,\n input: createOrgUnitLocationsInput\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { OrderTemplate } from '../utilities/order-templates';\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\nimport getFullOrderTemplates, { GetFullOrderTemplatesInput } from './get-full-order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetOrderTemplatesPreviewInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n this.queryResultSettings.count = true;\n this.queryResultSettings.Paging!.Top = 4;\n }\n\n public getCacheKey = () => 'GetOrderTemplatesPreview';\n public getCacheObjectType = () => 'GetOrderTemplatesPreview';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetOrderTemplatesPreviewInput = (inputData: ICreateActionContext): GetOrderTemplatesPreviewInput => {\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrderTemplatesPreviewInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplatesPreview data action\n * @param input The action input\n * @param context The action context\n */\nexport async function getOrderTemplatesPreview(input: GetOrderTemplatesPreviewInput, context: IActionContext): Promise {\n return getFullOrderTemplates(new GetFullOrderTemplatesInput(input.queryResultSettings), context);\n}\n\n/**\n * The GetOrderTemplatesPreview Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates-preview',\n action: >getOrderTemplatesPreview,\n input: createGetOrderTemplatesPreviewInput\n});","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get channel delivery option configuration data action\n */\nexport class GetChannelDeliveryConfigurationInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ChannelDeliveryConfiguration', this.apiSettings);\n public getCacheObjectType = () => 'ChannelDeliveryConfiguration';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetChannelDeliveryConfigurationInput => {\n const { apiSettings } = inputData.requestContext;\n if (!apiSettings) {\n throw new Error('[getChannelDeliveryOptionConfiguration][createInput]: API setting not available.');\n }\n\n return new GetChannelDeliveryConfigurationInput(apiSettings);\n};\n\nconst getChannelDeliveryOptionConfigurationAction = async (input: GetChannelDeliveryConfigurationInput, ctx: IActionContext): Promise => {\n if (input) {\n return getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx }).then(response => {\n return response;\n });\n }\n\n ctx.trace('[get-channel-delivery-option-configuration]Invalid input passed to action');\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-channel-delivery-option-configuration',\n action: >getChannelDeliveryOptionConfigurationAction,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ChannelIdentity } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\ninterface IChannelIdentity {\n channelIdentities: ChannelIdentity[];\n}\n\n/**\n * Calls the Retail API and returns the channels\n */\nconst getChannels = () => async (ctx: IActionContext): Promise => {\n return getChannelsAsync(\n {\n callerContext: ctx\n }\n );\n};\n\n/**\n * Action input\n */\nexport class GetChannelIdentitiesInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ChannelIdentities`, this.apiSettings);\n public getCacheObjectType = () => `ChannelIdentities`;\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createChannelIdentitiesInput = (inputData: ICreateActionContext>) => {\n return new GetChannelIdentitiesInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Get channels action\n */\nexport async function getChannelsAction(\n input: GetChannelIdentitiesInput,\n ctx: IActionContext\n): Promise {\n if (!ctx) {\n throw new Error(`getChannelsAction - Action context cannot be null/undefined`);\n }\n\n let channels: ChannelIdentity[] = [];\n\n try {\n channels = await getChannels()(ctx);\n } catch (error) {\n throw error;\n }\n\n return { channelIdentities: channels };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-channels',\n action: >getChannelsAction,\n input: createChannelIdentitiesInput\n});\n","import { createObservableDataAction, IAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetTenderTypesInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { TenderType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Tender Types Data Action\n */\nexport default createObservableDataAction({\n action: >retailAction,\n input: () => createGetTenderTypesInput({})\n});\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { createObservableDataAction } from '@msdyn365-commerce/action-internal';\r\nimport { IAction, IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n// @ts-ignore\r\nimport { CATEGORY_PAGE_NAME } from '@msdyn365-commerce/runtime-internal/dist/lib/consts';\r\n// @ts-ignore\r\nimport { getProductImageUrls } from '@msdyn365-commerce/runtime-internal/dist/lib/utils/product-list-utils';\r\nimport { ProductListInput } from '@msdyn365-commerce/runtime-internal/dist/types/hydrators/hydrator-action-inputs';\r\n\r\nexport const getProductsByCategoryList = async (input: ProductListInput, context: IActionContext): Promise => {\r\n let categoryId: number;\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n // If the category ID has been provided from the list metadata use it, otherwise grab the category ID from context\r\n if (input.listMetadata.categoryIds && input.listMetadata.categoryIds.length > 0) {\r\n categoryId = input.listMetadata.categoryIds[0];\r\n } else if (urlTokens && urlTokens.pageType && urlTokens.pageType.toLowerCase() === CATEGORY_PAGE_NAME && urlTokens.recordId) {\r\n categoryId = +urlTokens.recordId;\r\n } else if (urlTokens && urlTokens.categories && urlTokens.categories.length > 0) {\r\n categoryId = +urlTokens.categories[0];\r\n } else {\r\n // Unable to determine category from list meta data or context\r\n throw new Error('CategoryId Missing for ProductsByCategory List');\r\n }\r\n context.telemetry.debug(`Category Id input to ProductsByCategory action : ${categoryId}`);\r\n const productSearchCriteria: ProductSearchCriteria = {\r\n Context: {\r\n ChannelId: +input.channelId,\r\n CatalogId: +input.catalogId\r\n },\r\n CategoryIds: [categoryId],\r\n IncludeAttributes: true\r\n };\r\n\r\n return searchByCriteriaAsync(\r\n { callerContext: context, queryResultSettings: { Paging: { Top: input.listMetadata.pageSize || 10 } } },\r\n productSearchCriteria\r\n )\r\n .then((products: ProductSearchResult[]) => {\r\n context.telemetry.debug('Products returned by ProductByCategory action', products);\r\n return getProductImageUrls(products, context.requestContext.apiSettings);\r\n })\r\n .catch(error => {\r\n context.telemetry.error(`Error running ProductByCategory action: ${error}`);\r\n throw new Error(error);\r\n });\r\n};\r\n\r\nexport const getProductsByCategoryListAction = createObservableDataAction({\r\n action: >getProductsByCategoryList,\r\n id: '@msdyn365-commerce/products-by-category'\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipUpdateInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMembershipUpdateResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class MembershipEditInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IEditMembershipInput`;\r\n public getCacheObjectType = () => 'IEditMembershipInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\nexport interface IMembershipEditMembershipInput extends IrsmClubMembershipUpdateResponse { }\r\n\r\nexport interface IInputRequirements {\r\n WineClubId: string;\r\n CreditCard: number;\r\n ShipToAddress: number;\r\n DeliveryPreference: string;\r\n PickupLocationId: string;\r\n}\r\n\r\nexport const createEditMembershipInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { WineClubId, CreditCard, DeliveryPreference, ShipToAddress, PickupLocationId }: IInputRequirements,\r\n): MembershipEditInput => {\r\n return new MembershipEditInput(\r\n clubMembershipUpdateInput(\r\n WineClubId,\r\n CreditCard,\r\n ShipToAddress,\r\n DeliveryPreference,\r\n PickupLocationId\r\n )\r\n );\r\n};\r\n\r\nexport async function getEditMembershipAction(\r\n input: MembershipEditInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getEditMembershipAction,\r\n input: createEditMembershipInput,\r\n});\r\n","import { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport getSelectedVariant, { SelectedVariantInput } from './get-selected-variant';\nimport { getSelectedProductIdFromActionInput } from './utilities/utils';\n\nimport { getDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Input class for the getDimensionsForSelectedVariant data action\n */\nexport class GetDimensionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public matchingDimensionValues: ProductDimension[];\n\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n }\n\n public getCacheKey = () => `DimensionsForSelectedVariant`;\n public getCacheObjectType = () => 'DimensionsForSelectedVariantInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create input method for the getDimensionsForSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nconst createDimensionsForSelectedVariantInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDimensionsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n } else {\n throw new Error('Unable to create DimensionsForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * Action Method for the getDimensionsForSelectedVariant Data Action\n */\nasync function getDimensionsForSelectedVariantAction(\n input: GetDimensionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId, input.matchingDimensionValues);\n\n const activeProduct: SimpleProduct | null = await getSelectedVariant(selectedVariantInput, ctx);\n\n if (activeProduct && activeProduct.Dimensions && activeProduct.Dimensions.length > 0) {\n const results: ProductDimensionFull[] = [];\n\n for (const dimension of activeProduct.Dimensions) {\n const dimensionValues = await getDimensionValuesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n activeProduct.MasterProductId ? activeProduct.MasterProductId : activeProduct.RecordId,\n input.channelId,\n dimension.DimensionTypeValue,\n input.matchingDimensionValues.filter(value => value.DimensionTypeValue !== dimension.DimensionTypeValue),\n // @ts-ignore: KitVariantResolution context should be nullable\n null\n );\n\n const fullDimension: ProductDimensionFull = {\n ...dimension,\n DimensionValues: dimensionValues,\n };\n\n results.push(fullDimension);\n }\n\n return results;\n }\n\n return [];\n}\n\n/**\n * The GetDimensionsForSelectedVariantDataAction\n * Get the currently selected Variant via the getSelectedVariant data action, and the gets the\n * available product dimensions for the variant via the getDimensionValues RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-dimensions/for-selected-variant',\n action: >getDimensionsForSelectedVariantAction,\n input: createDimensionsForSelectedVariantInput\n});\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { createObservableDataAction } from '@msdyn365-commerce/action-internal';\r\nimport { IAction, IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getProductRatingsAsync, searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getElementsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/RecommendationsDataActions.g';\r\nimport {\r\n Cart,\r\n ProductSearchCriteria,\r\n ProductSearchResult,\r\n RecommendationCriteria,\r\n RecommendedElement\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IContext } from '@msdyn365-commerce/retail-proxy/dist/Interfaces';\r\n// @ts-ignore\r\nimport { CATEGORY_PAGE_NAME, PDP_PAGE_NAME, PICKS_FOR_YOU_LIST } from '@msdyn365-commerce/runtime-internal/dist/lib/consts';\r\n// @ts-ignore\r\nimport * as getSimpleProducts from '@msdyn365-commerce/runtime-internal/dist/lib/hydrators/get-simple-products';\r\n// @ts-ignore\r\nimport { ProductInput } from '@msdyn365-commerce/runtime-internal/dist/lib/hydrators/get-simple-products'; // eslint-disable-line\r\n// @ts-ignore\r\nimport { getProductImageUrls, orderProductSearchResults } from '@msdyn365-commerce/runtime-internal/dist/lib/utils/product-list-utils';\r\nimport { ProductListInput } from '@msdyn365-commerce/runtime-internal/dist/types/hydrators/hydrator-action-inputs';\r\nimport * as semver from 'semver';\r\n\r\nconst actionInputError = (missingType: string) => {\r\n throw new Error(`Input ${missingType} is missing and required to run GetProductsByRecommendationId action`);\r\n};\r\n\r\nconst enum CartTokenPrefix {\r\n Auth = 't',\r\n Anon = 'p'\r\n}\r\n\r\nconst MIN_RETAIL_PROXY_VERSION_FOR_PRODUCT_SEARCH_RESULTS = '9.16.8';\r\n\r\n/**\r\n * Constructs the category context for a recommendation call. If page context is selected the category dervided from page context\r\n * (current page) will be used. If instead a spefic category is chosen as context that category will be used instead.\r\n *\r\n * @param recommendationCriteria The criteria that will be used for the recommendation API call\r\n * @param input The ProductListInput provided to the action\r\n * @param context The current action context\r\n */\r\nconst getCategoryIdForReco = (recommendationCriteria: RecommendationCriteria, input: ProductListInput, context: IActionContext) => {\r\n let categoryIds: number[] = [];\r\n\r\n if (input.listMetadata.includePageContext || !input.listMetadata.categoryIds || input.listMetadata.categoryIds.length === 0) {\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n if (urlTokens && urlTokens.pageType && urlTokens.pageType.toLowerCase() === CATEGORY_PAGE_NAME) {\r\n if (urlTokens.recordId) {\r\n categoryIds = [+urlTokens.recordId];\r\n }\r\n }\r\n } else {\r\n // Use category from a specific context if provided\r\n if (input.listMetadata.categoryIds && input.listMetadata.categoryIds.length > 0) {\r\n categoryIds = input.listMetadata.categoryIds;\r\n }\r\n }\r\n\r\n recommendationCriteria.CategoryIds = categoryIds;\r\n};\r\n\r\n/**\r\n * Fetches the current active cart to be used when cart context\r\n * is selected for a reco list\r\n *\r\n * @param ctx The current action context\r\n */\r\nconst getCart = async (ctx: IActionContext): Promise => {\r\n let cart;\r\n if (ctx.requestContext && ctx.requestContext.cookies) {\r\n const cookies = ctx.requestContext && ctx.requestContext.cookies;\r\n const cartCookie = cookies.getCartCookie();\r\n const cartCookieParts = cartCookie.split(':');\r\n if (cartCookieParts && cartCookieParts.length === 2) {\r\n if (\r\n (ctx.requestContext.user.isAuthenticated && cartCookieParts[0] === CartTokenPrefix.Auth) ||\r\n (!ctx.requestContext.user.isAuthenticated && cartCookieParts[0] === CartTokenPrefix.Anon)\r\n ) {\r\n const readCart = await readAsync({ callerContext: ctx }, cartCookieParts[1]);\r\n if (readCart && readCart.Id) {\r\n cart = readCart;\r\n }\r\n }\r\n }\r\n }\r\n return cart;\r\n};\r\n\r\n/**\r\n * Constructs the product context for a recommendation call. If cart context is selected, products currently in the active cart will\r\n * be used as the product ids for the recommendation call. Otherwise, if page context is selected the product derived from page context will be used.\r\n * Finally, if specific context is selected, a product id will be given to us from the ProductListInput which will be used to seed the product id for the reco call.\r\n *\r\n * @param recommendationCriteria The criteria that will be used for the recommendation API call\r\n * @param input The ProductListInput provided to the action\r\n * @param context The current action context\r\n */\r\nconst getProductIdForReco = async (recommendationCriteria: RecommendationCriteria, input: ProductListInput, context: IActionContext) => {\r\n let productIds: number[] = [];\r\n // If include cart is set true, fetch the product ids in the cart to append to the product ID list for the recommendation call\r\n if (input.listMetadata.includeCart) {\r\n const cart = await getCart(context);\r\n if (cart && cart.CartLines) {\r\n const validCartLines = cart.CartLines.filter(element => element.ProductId !== undefined);\r\n const cartProductIds = validCartLines.map(product => product.ProductId);\r\n context.telemetry.debug(`Products in cart: ${cartProductIds}`);\r\n // If the cart isn't empty, assign the products in the cart to the productIds for seeding\r\n if (cartProductIds && cartProductIds.length > 0) {\r\n // @ts-ignore compiler alerts that cartProductIds is of type (number | undefined)[]\r\n // however, we filter on undefined product ids first before mapping on product ids so each element must be defined\r\n productIds = cartProductIds;\r\n }\r\n }\r\n } else if (input.listMetadata.includePageContext || !input.listMetadata.productIds || input.listMetadata.productIds.length === 0) {\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n if (urlTokens && urlTokens.recordId && urlTokens.pageType && urlTokens.pageType.toLowerCase() === PDP_PAGE_NAME) {\r\n productIds = [+urlTokens.recordId];\r\n }\r\n } else {\r\n // Use the product from specfic context\r\n if (input.listMetadata.productIds && input.listMetadata.productIds.length > 0) {\r\n productIds = [input.listMetadata.productIds[0]];\r\n }\r\n }\r\n\r\n recommendationCriteria.ProductIds = productIds;\r\n};\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nexport const getProductsByRecommendationList = async (input: ProductListInput, context: IActionContext): Promise => {\r\n // If the recommendation list is picks for you and the user is not signed do not make the reco API call and return empty list of products\r\n const customerAccountNumber =\r\n context.requestContext && context.requestContext.user && context.requestContext.user.customerAccountNumber;\r\n if (input.listMetadata.recommendationListId === PICKS_FOR_YOU_LIST && !customerAccountNumber) {\r\n return [];\r\n }\r\n\r\n const recommendationCriteria: RecommendationCriteria = {};\r\n const proxyContext: IContext = { callerContext: context, queryResultSettings: { Paging: { Top: input.listMetadata.pageSize || 10 } } };\r\n recommendationCriteria.CatalogId = input.catalogId;\r\n\r\n let reccomendationListId;\r\n if (input.listMetadata.recommendationListId) {\r\n reccomendationListId = input.listMetadata.recommendationListId;\r\n } else {\r\n actionInputError(`recommendationListId (from listmetadata)`);\r\n }\r\n\r\n getCategoryIdForReco(recommendationCriteria, input, context);\r\n await getProductIdForReco(recommendationCriteria, input, context);\r\n\r\n if ((input.listMetadata.personalization || reccomendationListId === PICKS_FOR_YOU_LIST) && customerAccountNumber) {\r\n recommendationCriteria.CustomerAccountNumber = customerAccountNumber;\r\n proxyContext.bypassCache = 'get';\r\n }\r\n\r\n context.telemetry.debug(`Recommendation Criteria: ${JSON.stringify(recommendationCriteria)}`);\r\n\r\n // @ts-ignore\r\n return getElementsAsync(proxyContext, reccomendationListId, recommendationCriteria)\r\n .then(async (recommendedElements: RecommendedElement[]) => {\r\n if (recommendedElements) {\r\n const productInputs: ProductInput[] = [];\r\n const productTypeId: string[] = [];\r\n // Grab all the elements that are products and store the product ids\r\n for (let i = 0; i < recommendedElements.length; i++) {\r\n const element = recommendedElements[i];\r\n // Element type value of 1 indicates product type\r\n if (element.ElementId && element.ElementTypeValue === 1) {\r\n productInputs[i] = new ProductInput(+element.ElementId, context.requestContext.apiSettings);\r\n productTypeId[i] = element.ElementId;\r\n }\r\n }\r\n context.telemetry.debug(`Running recommendation action for list ${input.listMetadata.recommendationListId}`);\r\n context.telemetry.debug(`Number of products returned: ${productTypeId.length}`);\r\n context.telemetry.debug('Product ids returned', productTypeId);\r\n\r\n if (productInputs.length) {\r\n // Check to see if retail proxy version is greater than min version required for new API\r\n if (\r\n semver.gte(\r\n semver.coerce(context.requestContext.apiSettings.retailServerProxyVersion) || '',\r\n MIN_RETAIL_PROXY_VERSION_FOR_PRODUCT_SEARCH_RESULTS\r\n )\r\n ) {\r\n const itemIds: number[] = productInputs.map(value => value.productId);\r\n const productSearchCriteria: ProductSearchCriteria = {\r\n Ids: itemIds,\r\n Context: {\r\n ChannelId: +context.requestContext.apiSettings.channelId,\r\n CatalogId: +context.requestContext.apiSettings.catalogId\r\n },\r\n CategoryIds: recommendationCriteria && recommendationCriteria.CategoryIds && recommendationCriteria.CategoryIds.length > 0 ? recommendationCriteria.CategoryIds : [],\r\n IncludeAttributes: true\r\n };\r\n try {\r\n let productSearchResults = await searchByCriteriaAsync({ callerContext: context }, productSearchCriteria);\r\n // If the ProductSearchResult API finds the products then populate the product image urls and return\r\n // otherwise if the API does not exist or does not return products proceed to the legacy flows for legacy/backward compatibility reasons\r\n context.telemetry.debug('Product search results returned', JSON.stringify(productSearchResults));\r\n if (productSearchResults.length > 0) {\r\n getProductImageUrls(productSearchResults, context.requestContext.apiSettings);\r\n productSearchResults = orderProductSearchResults(itemIds, productSearchResults);\r\n return productSearchResults;\r\n }\r\n } catch (e) {\r\n // In case of an error fall back to legacy flow\r\n context.telemetry.error(`Error while getting productSearchResult: ${e}`);\r\n }\r\n }\r\n\r\n // Get Product Ratings Block (If needed)\r\n const productRatingsPromise = getProductRatingsAsync(\r\n { callerContext: context },\r\n productInputs.map(productInput => productInput.productId)\r\n );\r\n\r\n return getSimpleProducts(productInputs, context).then((products: ProductSearchResult[]) => {\r\n getProductImageUrls(products, context.requestContext.apiSettings);\r\n products = orderProductSearchResults(\r\n productInputs.map(value => value.productId),\r\n products\r\n );\r\n return productRatingsPromise.then(productRatings => {\r\n productRatings.forEach(productRating => {\r\n const unratedProduct: ProductSearchResult = (\r\n products.find(mappedProduct => mappedProduct.RecordId === productRating.ProductId)\r\n );\r\n if (unratedProduct) {\r\n unratedProduct.TotalRatings = productRating.TotalRatings;\r\n unratedProduct.AverageRating = productRating.AverageRating;\r\n }\r\n });\r\n\r\n return products;\r\n });\r\n });\r\n }\r\n }\r\n return [];\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((error: any) => {\r\n context.telemetry.error(`Error running productByRecommendation action: ${error}`);\r\n throw new Error(error);\r\n });\r\n};\r\n\r\nexport const getProductsByRecommendationListAction = createObservableDataAction({\r\n action: >getProductsByRecommendationList,\r\n id: '@msdyn365-commerce/products-by-recommendation'\r\n});\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\n\nexport interface IRatingsReviewsState {\n filterKey: string;\n}\n\nexport function createRatingsReviewsStateInput(result: IRatingsReviewsState): GenericInput {\n return new GenericInput('ratingsReviewsState', result, 'ratingsReviewsStateInput');\n}\n\nconst createInternalRatingsReviewsStateInput = (): IActionInput => {\n return createRatingsReviewsStateInput({filterKey: '1;2;3;4;5'});\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createInternalRatingsReviewsStateInput\n});\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nexport const componentDictionary = {};\n\ncomponentDictionary['__local__|__local__|components|addtocart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-addtocart' */\n 'partner/components/addtocart.component.tsx'),\n cn: '__local__-__local__-addtocart'\n };\ncomponentDictionary['__local__|__local__|components|cartlineitem-variant'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartlineitem-variant' */\n 'partner/components/cartlineitem-variant.component.tsx'),\n cn: '__local__-__local__-cartlineitem-variant'\n };\ncomponentDictionary['__local__|__local__|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartlineitem' */\n 'partner/components/cartlineitem.component.tsx'),\n cn: '__local__-__local__-cartlineitem'\n };\ncomponentDictionary['__local__|__local__|components|elicit-amountselector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-amountselector' */\n 'partner/components/elicit-amountselector.component.tsx'),\n cn: '__local__-__local__-elicit-amountselector'\n };\ncomponentDictionary['__local__|__local__|components|elicit-cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-cartlineitem' */\n 'partner/components/elicit-cartlineitem.component.tsx'),\n cn: '__local__-__local__-elicit-cartlineitem'\n };\ncomponentDictionary['__local__|__local__|components|product'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product' */\n 'partner/components/product.component.tsx'),\n cn: '__local__-__local__-product'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|bottle-count-display'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-bottle-count-display' */\n 'partner/modules/subscriptions-minicart/components/bottle-count-display.component.tsx'),\n cn: '__local__-__local__-bottle-count-display'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|box-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-box-edit' */\n 'partner/modules/subscriptions-minicart/components/box-edit.component.tsx'),\n cn: '__local__-__local__-box-edit'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|cart-display'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cart-display' */\n 'partner/modules/subscriptions-minicart/components/cart-display.component.tsx'),\n cn: '__local__-__local__-cart-display'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|subscription-banner-display'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-banner-display' */\n 'partner/modules/subscriptions-minicart/components/subscription-banner-display.component.tsx'),\n cn: '__local__-__local__-subscription-banner-display'\n };\ncomponentDictionary['__local__|__local__|themes|columbiacrest|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/columbiacrest/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|conn-creek|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/conn-creek/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|enoteca|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/enoteca/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|erath|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/erath/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|fth-old|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/fth-old/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|generazioni|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/generazioni/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|intrinsic-wine-co|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/intrinsic-wine-co/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|north-star|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/north-star/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|patzhall|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/patzhall/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|spring-valley-vineyard|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/spring-valley-vineyard/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|stagsleap|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/stagsleap/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|stemichelle|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/stemichelle/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-cartlineitem' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/cartlineitem.component.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cartlineitem'\n };\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|promocode'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-promocode' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/promocode.component.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-promocode'\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Cart, CartLine, IDataServiceRequest, IRemoveCartLinesParam } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, IProductTransaction } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines removed before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeRemoveFromCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were removed\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const removeCartLinesParams = actionInput.queryParams();\n if (removeCartLinesParams && removeCartLinesParams.cartLineIds) {\n // Save info on removed cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.removedCartLineIds = removeCartLinesParams.cartLineIds;\n return;\n }\n }\n actionContext.telemetry.debug('RemoveFromCart pre-data action hook failed - No removed cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('RemoveFromCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires a RemoveFromCart event after RemoveCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been removed\n * @param actionContext Action context\n */\nconst afterRemoveFromCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const removeCartLineIds = actionContext.requestContext.telemetryData.removedCartLineIds;\n const activeCart = actionContext.requestContext.telemetryData.activeCart;\n const productTransaction = actionContext.requestContext.telemetryData[TelemetryEvent.Purchase];\n const removedCartLines: CartLine[] = [];\n let removedProducts: IProductInfo[] = [];\n\n // Collect info on products removed from cart\n if (removeCartLineIds && activeCart && activeCart.CartLines) {\n activeCart.CartLines.forEach((cartLine: CartLine) => {\n if (\n cartLine.ProductId &&\n removeCartLineIds.indexOf(cartLine.LineId ? cartLine.LineId : '') !== -1 &&\n !(\n productTransaction &&\n productTransaction.products &&\n productTransaction.products.some(product => +product.productSku === cartLine.ProductId)\n )\n ) {\n removedCartLines.push(cartLine);\n }\n });\n\n if (removedCartLines.length > 0) {\n try {\n removedProducts = await getProductInfoFromCartLinesAsync(removedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('RemoveCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n }\n\n // Fire RemoveFromCart event if cart lines were removed\n if (removedCartLines && removedCartLines.length > 0) {\n window._msdyn365.telemetry.logEvent(TelemetryEvent.RemoveFromCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: removedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n } else {\n actionContext.telemetry.debug('No RemoveFromCart event fired, no removed cart lines found');\n }\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/RemoveCartLines',\n postReaderHook: afterRemoveFromCart,\n preReaderHook: beforeRemoveFromCart\n});\n","import {\r\n GenericInput,\r\n getGenericAction\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n createObservableDataAction,\r\n IAction,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\n\r\nexport function createSkuSelectorContainerClasses(\r\n result: string\r\n): GenericInput {\r\n return new GenericInput('SkuSelectorClasses', result, 'String');\r\n}\r\n\r\nconst createSkuSelectorContainerClassesInput = (\r\n inputData: ICreateActionContext>\r\n): IActionInput => {\r\n return createSkuSelectorContainerClasses('');\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createSkuSelectorContainerClassesInput\r\n});\r\n","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\r\nimport skuSelectorContainerClasses, { createSkuSelectorContainerClasses } from './sku-selector-container-classes';\r\n\r\n/**\r\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\r\n */\r\nexport class HideClubPriceInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n\r\n constructor(productId: number | string, channelId: number) {\r\n this.productId = typeof productId === 'string' ? +productId : productId;\r\n this.channelId = channelId;\r\n }\r\n\r\n public getCacheKey = () => `HideClubPrice|${this.productId}|${this.channelId}`;\r\n public getCacheObjectType = () => 'ProductAvailabilities';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * createInput method for the getProductAvailabilitiesForSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method\r\n */\r\nexport const createHideClubPriceInput = (\r\n inputData: ICreateActionContext>\r\n): HideClubPriceInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n\r\n if (productId) {\r\n return new HideClubPriceInput(+productId, +inputData.requestContext.apiSettings.channelId);\r\n } else {\r\n throw new Error('Unable to create HideClubPriceInput, no productId found on module config or query');\r\n }\r\n};\r\n\r\n/**\r\n * The action method for the getProductAvailabilitiesForSelectedVariant data action\r\n */\r\nexport async function hideClubPrice(\r\n input: HideClubPriceInput,\r\n ctx: IActionContext\r\n): Promise {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n const product = await getSelectedVariant(selectedVariantInput, ctx);\r\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx});\r\n\r\n if (\r\n product &&\r\n (product.ItemId === channelConfiguration.GiftCardItemId)\r\n ) {\r\n await skuSelectorContainerClasses(\r\n createSkuSelectorContainerClasses('no-club'),\r\n ctx\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * The complete getProductAvailabilitiesForSelectedVariant data action\r\n * Get the currently selected variant via the getSelectedVariant data action, and\r\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API\r\n */\r\nexport default createObservableDataAction({\r\n action: >hideClubPrice,\r\n input: createHideClubPriceInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue, ProductSearchResult, SortingInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { observable } from 'mobx';\r\n\r\nimport { listPageType } from './base-collection-action';\r\n\r\n/**\r\n * ListPageState class\r\n */\r\nexport class ListPageState {\r\n @observable public activeFilters: ProductRefinerValue[] | null = null;\r\n @observable public activeProducts: ProductSearchResult[] = [];\r\n @observable public sortingCritera: SortingInfo | null = null;\r\n @observable public currentPageNumber: number | null = null;\r\n @observable public totalProductCount: number | undefined;\r\n @observable public pageSize: number = 10;\r\n @observable public pageType: listPageType = 'Unknown';\r\n}\r\n\r\n/**\r\n * ListPageStateInput - action input\r\n */\r\nexport class ListPageStateInput implements IActionInput {\r\n public getCacheKey = () => `ListPageState`;\r\n public getCacheObjectType = () => 'ListPageState';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function listPageStateAction(\r\n input: ListPageStateInput,\r\n ctx: IActionContext\r\n): Promise {\r\n return new ListPageState();\r\n}\r\n\r\n/**\r\n * create new input for create action\r\n */\r\nexport const createListPageInput = (\r\n inputData: ICreateActionContext>\r\n): IActionInput => {\r\n return new ListPageStateInput();\r\n};\r\n\r\n/**\r\n * ListPageState - create action\r\n */\r\nexport default createObservableDataAction({\r\n action: >listPageStateAction,\r\n input: createListPageInput\r\n});\r\n","\r\n // tslint:disable\r\n import * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n import * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g'; \r\n import { jsonLightReadStringPropertyValue } from '@msdyn365-commerce/retail-proxy/dist/externals';\r\n \r\n \r\n /**\r\n * rsmWineClubSignUpEntity entity interface.\r\n */\r\n export interface IrsmWineClubSignUpEntity {\r\n WineClubId: string;\r\n CustomerId?: string;\r\n IsGifted?: boolean;\r\n DeliveryPreference?: string;\r\n AddressFirstName?: string;\r\n AddressLastName?: string;\r\n AddressEmail?: string;\r\n AddressPhone?: string;\r\n AddressLine1?: string;\r\n AddressLine2?: string;\r\n City?: string;\r\n State?: string;\r\n Zipcode?: string;\r\n Country?: string;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n }\r\n \r\n /**\r\n * rsmClubMembershipPauseResumeResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipPauseResumeResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipSkipShipmentResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipSkipShipmentResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipPrimaryCardResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipPrimaryCardResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipPrimaryShipToAddressResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipPrimaryShipToAddressResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipUpdateResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipUpdateResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMemberMgmtGetDataResponse entity interface.\r\n */\r\n export interface IrsmClubMemberMgmtGetDataResponse {\r\n Status?: string;\r\n Result?: IWineClubMemberData[];\r\n }\r\n \r\n /**\r\n * rsmValidateProgramResponse entity interface.\r\n */\r\n export interface IrsmValidateProgramResponse {\r\n Result?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmVerifyEmployeeResponse entity interface.\r\n */\r\n export interface IrsmVerifyEmployeeResponse {\r\n Result?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyValidateProgramResponse entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyValidateProgramResponse {\r\n Status?: string;\r\n Result?: IrsmFriendsAndFamilyValidateProgramData;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyListResponse entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyListResponse {\r\n Status?: string;\r\n Result?: IrsmFriendsAndFamilyListObject;\r\n }\r\n \r\n /**\r\n * rsmInsertMailingListResponse entity interface.\r\n */\r\n export interface IrsmInsertMailingListResponse {\r\n IsSaved?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmUnsubscribeMailingListResponse entity interface.\r\n */\r\n export interface IrsmUnsubscribeMailingListResponse {\r\n IsUnsubscribe?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmOfferSelectionsResponse entity interface.\r\n */\r\n export interface IrsmOfferSelectionsResponse {\r\n result?: string;\r\n }\r\n \r\n /**\r\n * rsmSubscriptionCancelResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionCancelResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionPauseResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionPauseResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionResumeResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionResumeResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionUpdateResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionUpdateResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionCardsResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionCardsResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionCard[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionListResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionListResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmWineClubSignUpResponse entity interface.\r\n */\r\n export interface IrsmWineClubSignUpResponse {\r\n result?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyValidateProgramData entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyValidateProgramData {\r\n Message?: string;\r\n Code?: IrsmFriendsAndFamilyCode;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyCode entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyCode {\r\n RecipientEmailAddress?: string;\r\n Status?: string;\r\n Code?: string;\r\n SentDate?: string;\r\n ActivationDate?: string;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyListObject entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyListObject {\r\n QuantityAvailable?: string;\r\n Codes?: IrsmFriendsAndFamilyCode[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionData entity interface.\r\n */\r\n export interface IrsmSubscriptionData {\r\n SubscriptionID?: string;\r\n SubStatus?: string;\r\n SubscriptionName?: string;\r\n Frequency?: string;\r\n NextOrderDate?: string;\r\n LockoutPeriod?: number;\r\n DeliveryAddress?: string;\r\n ActiveCreditCardID?: string;\r\n Lines?: IrsmSubscriptionLine[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionLine entity interface.\r\n */\r\n export interface IrsmSubscriptionLine {\r\n SubLineID?: string;\r\n Description?: string;\r\n Qty?: number;\r\n }\r\n \r\n /**\r\n * rsmSubscriptionCard entity interface.\r\n */\r\n export interface IrsmSubscriptionCard {\r\n CardID?: string;\r\n CardNumber?: string;\r\n }\r\n \r\n /**\r\n * ShipComplianceResponseObject entity interface.\r\n */\r\n export interface IShipComplianceResponseObject {\r\n message?: string;\r\n isShipCompliant: boolean;\r\n callSucceeded: boolean;\r\n }\r\n \r\n /**\r\n * WineClubMemberData entity interface.\r\n */\r\n export interface IWineClubMemberData {\r\n WineClubMemberNum?: string;\r\n WineClubId?: string;\r\n WineClubName?: string;\r\n WineClubDisplay?: string;\r\n NextClubRunDate?: string;\r\n CustomerName?: string;\r\n MemberStatus?: string;\r\n ShowStatus?: boolean;\r\n ActivationDate?: string;\r\n DeactivationDate?: string;\r\n GiftMembershipEndDate?: string;\r\n ShowMemberSince?: boolean;\r\n GiftCustName?: string;\r\n CanSkip?: boolean;\r\n IsBlackoutPeriod?: boolean;\r\n DeliveryPreference?: string;\r\n PickUpLocationId?: string;\r\n CreditCard?: ICreditCard[];\r\n ShipToAddress?: IShipToAddress[];\r\n MembershipProducts?: IMembershipProducts[];\r\n HasOfferSelections?: boolean;\r\n OfferSelections?: IOfferSelections[];\r\n }\r\n \r\n /**\r\n * CreditCard entity interface.\r\n */\r\n export interface ICreditCard {\r\n RecId?: number;\r\n CreditCardNum?: string;\r\n IsPrimary?: boolean;\r\n }\r\n \r\n /**\r\n * ShipToAddress entity interface.\r\n */\r\n export interface IShipToAddress {\r\n ShipToAddressRecId?: number;\r\n Name?: string;\r\n StreetAddress?: string;\r\n ZipCode?: string;\r\n City?: string;\r\n State?: string;\r\n DateBirth?: string;\r\n Company?: string;\r\n IsPrimary?: boolean;\r\n }\r\n \r\n /**\r\n * MembershipProducts entity interface.\r\n */\r\n export interface IMembershipProducts {\r\n ItemId?: string;\r\n ItemName?: string;\r\n Qty?: number;\r\n OfferId?: string;\r\n }\r\n \r\n /**\r\n * OfferSelections entity interface.\r\n */\r\n export interface IOfferSelections {\r\n OfferId?: string;\r\n OfferName?: string;\r\n EndDate?: Date;\r\n ItemId?: string;\r\n }\r\n \r\n /**\r\n * rsmWineClubSignUpEntity entity class.\r\n */\r\n export class rsmWineClubSignUpEntityExtensionClass implements IrsmWineClubSignUpEntity {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CustomerId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsGifted: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeliveryPreference: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressFirstName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressLastName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressEmail: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressPhone: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressLine1: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressLine2: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public City: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public State: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Zipcode: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Country: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubId = odataObject.WineClubId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CustomerId = odataObject.CustomerId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsGifted = odataObject.IsGifted;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeliveryPreference = odataObject.DeliveryPreference;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressFirstName = odataObject.AddressFirstName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressLastName = odataObject.AddressLastName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressEmail = odataObject.AddressEmail;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressPhone = odataObject.AddressPhone;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressLine1 = odataObject.AddressLine1;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressLine2 = odataObject.AddressLine2;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.City = odataObject.City;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.State = odataObject.State;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Zipcode = odataObject.Zipcode;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Country = odataObject.Country;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i])\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipPauseResumeResponse entity class.\r\n */\r\n export class rsmClubMembershipPauseResumeResponseExtensionClass implements IrsmClubMembershipPauseResumeResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipSkipShipmentResponse entity class.\r\n */\r\n export class rsmClubMembershipSkipShipmentResponseExtensionClass implements IrsmClubMembershipSkipShipmentResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipPrimaryCardResponse entity class.\r\n */\r\n export class rsmClubMembershipPrimaryCardResponseExtensionClass implements IrsmClubMembershipPrimaryCardResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipPrimaryShipToAddressResponse entity class.\r\n */\r\n export class rsmClubMembershipPrimaryShipToAddressResponseExtensionClass implements IrsmClubMembershipPrimaryShipToAddressResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipUpdateResponse entity class.\r\n */\r\n export class rsmClubMembershipUpdateResponseExtensionClass implements IrsmClubMembershipUpdateResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMemberMgmtGetDataResponse entity class.\r\n */\r\n export class rsmClubMemberMgmtGetDataResponseExtensionClass implements IrsmClubMemberMgmtGetDataResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IWineClubMemberData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new WineClubMemberDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmValidateProgramResponse entity class.\r\n */\r\n export class rsmValidateProgramResponseExtensionClass implements IrsmValidateProgramResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmVerifyEmployeeResponse entity class.\r\n */\r\n export class rsmVerifyEmployeeResponseExtensionClass implements IrsmVerifyEmployeeResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyValidateProgramResponse entity class.\r\n */\r\n export class rsmFriendsAndFamilyValidateProgramResponseExtensionClass implements IrsmFriendsAndFamilyValidateProgramResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmFriendsAndFamilyValidateProgramData;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n if (odataObject.Result === null) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n } else if (odataObject.Result['@odata.type'] == null) {\r\n this.Result = new rsmFriendsAndFamilyValidateProgramDataExtensionClass(odataObject.Result);\r\n } else {\r\n var className: string = odataObject.Result['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result = new EntityClasses[className](odataObject.Result)\r\n }\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyListResponse entity class.\r\n */\r\n export class rsmFriendsAndFamilyListResponseExtensionClass implements IrsmFriendsAndFamilyListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmFriendsAndFamilyListObject;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n if (odataObject.Result === null) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n } else if (odataObject.Result['@odata.type'] == null) {\r\n this.Result = new rsmFriendsAndFamilyListObjectExtensionClass(odataObject.Result);\r\n } else {\r\n var className: string = odataObject.Result['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result = new EntityClasses[className](odataObject.Result)\r\n }\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmInsertMailingListResponse entity class.\r\n */\r\n export class rsmInsertMailingListResponseExtensionClass implements IrsmInsertMailingListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsSaved: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsSaved = odataObject.IsSaved;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmUnsubscribeMailingListResponse entity class.\r\n */\r\n export class rsmUnsubscribeMailingListResponseExtensionClass implements IrsmUnsubscribeMailingListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsUnsubscribe: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsUnsubscribe = odataObject.IsUnsubscribe;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmOfferSelectionsResponse entity class.\r\n */\r\n export class rsmOfferSelectionsResponseExtensionClass implements IrsmOfferSelectionsResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionCancelResponse entity class.\r\n */\r\n export class rsmSubscriptionCancelResponseExtensionClass implements IrsmSubscriptionCancelResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionPauseResponse entity class.\r\n */\r\n export class rsmSubscriptionPauseResponseExtensionClass implements IrsmSubscriptionPauseResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionResumeResponse entity class.\r\n */\r\n export class rsmSubscriptionResumeResponseExtensionClass implements IrsmSubscriptionResumeResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionUpdateResponse entity class.\r\n */\r\n export class rsmSubscriptionUpdateResponseExtensionClass implements IrsmSubscriptionUpdateResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionCardsResponse entity class.\r\n */\r\n export class rsmSubscriptionCardsResponseExtensionClass implements IrsmSubscriptionCardsResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionCard[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionCardExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionListResponse entity class.\r\n */\r\n export class rsmSubscriptionListResponseExtensionClass implements IrsmSubscriptionListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmWineClubSignUpResponse entity class.\r\n */\r\n export class rsmWineClubSignUpResponseExtensionClass implements IrsmWineClubSignUpResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyValidateProgramData entity class.\r\n */\r\n export class rsmFriendsAndFamilyValidateProgramDataExtensionClass implements IrsmFriendsAndFamilyValidateProgramData {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Code: \r\n IrsmFriendsAndFamilyCode;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n if (odataObject.Code === null) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Code = undefined;\r\n } else if (odataObject.Code['@odata.type'] == null) {\r\n this.Code = new rsmFriendsAndFamilyCodeExtensionClass(odataObject.Code);\r\n } else {\r\n var className: string = odataObject.Code['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Code = new EntityClasses[className](odataObject.Code)\r\n }\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyCode entity class.\r\n */\r\n export class rsmFriendsAndFamilyCodeExtensionClass implements IrsmFriendsAndFamilyCode {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public RecipientEmailAddress: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Code: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SentDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ActivationDate: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.RecipientEmailAddress = odataObject.RecipientEmailAddress;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Code = odataObject.Code;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SentDate = odataObject.SentDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ActivationDate = odataObject.ActivationDate;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyListObject entity class.\r\n */\r\n export class rsmFriendsAndFamilyListObjectExtensionClass implements IrsmFriendsAndFamilyListObject {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public QuantityAvailable: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Codes: \r\n IrsmFriendsAndFamilyCode[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.QuantityAvailable = odataObject.QuantityAvailable;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Codes = undefined;\r\n if (odataObject.Codes) {\r\n this.Codes = [];\r\n for (var i = 0; i < odataObject.Codes.length; i++) {\r\n if (odataObject.Codes[i]) {\r\n if (odataObject.Codes[i]['@odata.type']) {\r\n var className: string = odataObject.Codes[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Codes[i] = new EntityClasses[className](odataObject.Codes[i])\r\n }\r\n } else {\r\n this.Codes[i] = new rsmFriendsAndFamilyCodeExtensionClass(odataObject.Codes[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Codes[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionData entity class.\r\n */\r\n export class rsmSubscriptionDataExtensionClass implements IrsmSubscriptionData {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubscriptionID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubStatus: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubscriptionName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Frequency: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public NextOrderDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public LockoutPeriod: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeliveryAddress: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ActiveCreditCardID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Lines: \r\n IrsmSubscriptionLine[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubscriptionID = odataObject.SubscriptionID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubStatus = odataObject.SubStatus;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubscriptionName = odataObject.SubscriptionName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Frequency = odataObject.Frequency;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.NextOrderDate = odataObject.NextOrderDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.LockoutPeriod = odataObject.LockoutPeriod;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeliveryAddress = odataObject.DeliveryAddress;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ActiveCreditCardID = odataObject.ActiveCreditCardID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Lines = undefined;\r\n if (odataObject.Lines) {\r\n this.Lines = [];\r\n for (var i = 0; i < odataObject.Lines.length; i++) {\r\n if (odataObject.Lines[i]) {\r\n if (odataObject.Lines[i]['@odata.type']) {\r\n var className: string = odataObject.Lines[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Lines[i] = new EntityClasses[className](odataObject.Lines[i])\r\n }\r\n } else {\r\n this.Lines[i] = new rsmSubscriptionLineExtensionClass(odataObject.Lines[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Lines[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionLine entity class.\r\n */\r\n export class rsmSubscriptionLineExtensionClass implements IrsmSubscriptionLine {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubLineID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Description: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Qty: number;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubLineID = odataObject.SubLineID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Description = odataObject.Description;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Qty = odataObject.Qty;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionCard entity class.\r\n */\r\n export class rsmSubscriptionCardExtensionClass implements IrsmSubscriptionCard {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CardID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CardNumber: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CardID = odataObject.CardID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CardNumber = odataObject.CardNumber;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * ShipComplianceResponseObject entity class.\r\n */\r\n export class ShipComplianceResponseObjectExtensionClass implements IShipComplianceResponseObject {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public message: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public isShipCompliant: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public callSucceeded: boolean;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.message = odataObject.message;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.isShipCompliant = odataObject.isShipCompliant;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.callSucceeded = odataObject.callSucceeded;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * WineClubMemberData entity class.\r\n */\r\n export class WineClubMemberDataExtensionClass implements IWineClubMemberData {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubMemberNum: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubDisplay: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public NextClubRunDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CustomerName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public MemberStatus: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShowStatus: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ActivationDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeactivationDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public GiftMembershipEndDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShowMemberSince: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public GiftCustName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CanSkip: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsBlackoutPeriod: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeliveryPreference: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public PickUpLocationId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CreditCard: \r\n ICreditCard[];\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShipToAddress: \r\n IShipToAddress[];\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public MembershipProducts: \r\n IMembershipProducts[];\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public HasOfferSelections: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferSelections: \r\n IOfferSelections[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubMemberNum = odataObject.WineClubMemberNum;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubId = odataObject.WineClubId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubName = odataObject.WineClubName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubDisplay = odataObject.WineClubDisplay;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.NextClubRunDate = odataObject.NextClubRunDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CustomerName = odataObject.CustomerName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.MemberStatus = odataObject.MemberStatus;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShowStatus = odataObject.ShowStatus;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ActivationDate = odataObject.ActivationDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeactivationDate = odataObject.DeactivationDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.GiftMembershipEndDate = odataObject.GiftMembershipEndDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShowMemberSince = odataObject.ShowMemberSince;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.GiftCustName = odataObject.GiftCustName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CanSkip = odataObject.CanSkip;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsBlackoutPeriod = odataObject.IsBlackoutPeriod;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeliveryPreference = odataObject.DeliveryPreference;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.PickUpLocationId = odataObject.PickUpLocationId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CreditCard = undefined;\r\n if (odataObject.CreditCard) {\r\n this.CreditCard = [];\r\n for (var i = 0; i < odataObject.CreditCard.length; i++) {\r\n if (odataObject.CreditCard[i]) {\r\n if (odataObject.CreditCard[i]['@odata.type']) {\r\n var className: string = odataObject.CreditCard[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.CreditCard[i] = new EntityClasses[className](odataObject.CreditCard[i])\r\n }\r\n } else {\r\n this.CreditCard[i] = new CreditCardExtensionClass(odataObject.CreditCard[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CreditCard[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShipToAddress = undefined;\r\n if (odataObject.ShipToAddress) {\r\n this.ShipToAddress = [];\r\n for (var i = 0; i < odataObject.ShipToAddress.length; i++) {\r\n if (odataObject.ShipToAddress[i]) {\r\n if (odataObject.ShipToAddress[i]['@odata.type']) {\r\n var className: string = odataObject.ShipToAddress[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ShipToAddress[i] = new EntityClasses[className](odataObject.ShipToAddress[i])\r\n }\r\n } else {\r\n this.ShipToAddress[i] = new ShipToAddressExtensionClass(odataObject.ShipToAddress[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShipToAddress[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.MembershipProducts = undefined;\r\n if (odataObject.MembershipProducts) {\r\n this.MembershipProducts = [];\r\n for (var i = 0; i < odataObject.MembershipProducts.length; i++) {\r\n if (odataObject.MembershipProducts[i]) {\r\n if (odataObject.MembershipProducts[i]['@odata.type']) {\r\n var className: string = odataObject.MembershipProducts[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.MembershipProducts[i] = new EntityClasses[className](odataObject.MembershipProducts[i])\r\n }\r\n } else {\r\n this.MembershipProducts[i] = new MembershipProductsExtensionClass(odataObject.MembershipProducts[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.MembershipProducts[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.HasOfferSelections = odataObject.HasOfferSelections;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferSelections = undefined;\r\n if (odataObject.OfferSelections) {\r\n this.OfferSelections = [];\r\n for (var i = 0; i < odataObject.OfferSelections.length; i++) {\r\n if (odataObject.OfferSelections[i]) {\r\n if (odataObject.OfferSelections[i]['@odata.type']) {\r\n var className: string = odataObject.OfferSelections[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.OfferSelections[i] = new EntityClasses[className](odataObject.OfferSelections[i])\r\n }\r\n } else {\r\n this.OfferSelections[i] = new OfferSelectionsExtensionClass(odataObject.OfferSelections[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferSelections[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * CreditCard entity class.\r\n */\r\n export class CreditCardExtensionClass implements ICreditCard {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public RecId: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CreditCardNum: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsPrimary: boolean;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.RecId = (odataObject.RecId) ? parseInt(odataObject.RecId, 10) : 0;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CreditCardNum = odataObject.CreditCardNum;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsPrimary = odataObject.IsPrimary;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * ShipToAddress entity class.\r\n */\r\n export class ShipToAddressExtensionClass implements IShipToAddress {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShipToAddressRecId: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Name: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public StreetAddress: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ZipCode: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public City: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public State: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DateBirth: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Company: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsPrimary: boolean;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShipToAddressRecId = (odataObject.ShipToAddressRecId) ? parseInt(odataObject.ShipToAddressRecId, 10) : 0;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Name = odataObject.Name;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.StreetAddress = odataObject.StreetAddress;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ZipCode = odataObject.ZipCode;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.City = odataObject.City;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.State = odataObject.State;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DateBirth = odataObject.DateBirth;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Company = odataObject.Company;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsPrimary = odataObject.IsPrimary;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * MembershipProducts entity class.\r\n */\r\n export class MembershipProductsExtensionClass implements IMembershipProducts {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ItemId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ItemName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Qty: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferId: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ItemId = odataObject.ItemId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ItemName = odataObject.ItemName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Qty = odataObject.Qty;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferId = odataObject.OfferId;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * OfferSelections entity class.\r\n */\r\n export class OfferSelectionsExtensionClass implements IOfferSelections {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public EndDate: Date;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ItemId: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferId = odataObject.OfferId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferName = odataObject.OfferName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.EndDate = (odataObject.EndDate instanceof Date) ? odataObject.EndDate\r\n : (odataObject.EndDate) ? jsonLightReadStringPropertyValue(odataObject.EndDate, 'Edm.DateTimeOffset', false) : undefined;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ItemId = odataObject.ItemId;\r\n \r\n }\r\n }\r\n","\r\n /*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\n // tslint:disable\r\n import { AsyncResult, callActionOrExecute, DataServiceQuery, IContext, IDataServiceRequest, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\r\n // @ts-ignore\r\n import * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n import * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n import * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n \r\n function clubMembershipPauseResumeQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipPauseResumeInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n pauseResume:\r\n boolean\r\n ): IDataServiceRequest {\r\n const query = clubMembershipPauseResumeQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipPauseResume',\r\n true, \r\n DataServiceEntities.rsmClubMembershipPauseResumeResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipPauseResumeResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n PauseResume: pauseResume\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipPauseResumeAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n pauseResume:\r\n boolean\r\n ): AsyncResult {\r\n const request = clubMembershipPauseResumeInput(customerId, wineClubId, pauseResume);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipSkipShipmentQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipSkipShipmentInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n skipShipment:\r\n boolean\r\n ): IDataServiceRequest {\r\n const query = clubMembershipSkipShipmentQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipSkipShipment',\r\n true, \r\n DataServiceEntities.rsmClubMembershipSkipShipmentResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipSkipShipmentResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n SkipShipment: skipShipment\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipSkipShipmentAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n skipShipment:\r\n boolean\r\n ): AsyncResult {\r\n const request = clubMembershipSkipShipmentInput(customerId, wineClubId, skipShipment);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipPrimaryCardQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipPrimaryCardInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n creditCard:\r\n number\r\n ): IDataServiceRequest {\r\n const query = clubMembershipPrimaryCardQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipPrimaryCard',\r\n true, \r\n DataServiceEntities.rsmClubMembershipPrimaryCardResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipPrimaryCardResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n CreditCard: creditCard\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipPrimaryCardAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n creditCard:\r\n number\r\n ): AsyncResult {\r\n const request = clubMembershipPrimaryCardInput(customerId, wineClubId, creditCard);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipPrimaryShipToAddressQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipPrimaryShipToAddressInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n shipToAddress:\r\n number\r\n ): IDataServiceRequest {\r\n const query = clubMembershipPrimaryShipToAddressQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipPrimaryShipToAddress',\r\n true, \r\n DataServiceEntities.rsmClubMembershipPrimaryShipToAddressResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipPrimaryShipToAddressResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n ShipToAddress: shipToAddress\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipPrimaryShipToAddressAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n shipToAddress:\r\n number\r\n ): AsyncResult {\r\n const request = clubMembershipPrimaryShipToAddressInput(customerId, wineClubId, shipToAddress);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipUpdateQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipUpdateInput (\r\n wineClubId:\r\n string,\r\n creditCard:\r\n number,\r\n shipToAddress:\r\n number,\r\n deliveryPreference:\r\n string,\r\n pickupLocationId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = clubMembershipUpdateQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipUpdate',\r\n true, \r\n DataServiceEntities.rsmClubMembershipUpdateResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipUpdateResponse' },\r\n { \r\n WineClubId: wineClubId,\r\n CreditCard: creditCard,\r\n ShipToAddress: shipToAddress,\r\n DeliveryPreference: deliveryPreference,\r\n PickupLocationId: pickupLocationId\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipUpdateAsync (\r\n context: IContext, wineClubId:\r\n string,\r\n creditCard:\r\n number,\r\n shipToAddress:\r\n number,\r\n deliveryPreference:\r\n string,\r\n pickupLocationId:\r\n string\r\n ): AsyncResult {\r\n const request = clubMembershipUpdateInput(wineClubId, creditCard, shipToAddress, deliveryPreference, pickupLocationId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipGetDataQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipGetDataInput (\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = clubMembershipGetDataQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipGetData',\r\n false, \r\n DataServiceEntities.rsmClubMemberMgmtGetDataResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMemberMgmtGetDataResponse' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipGetDataAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = clubMembershipGetDataInput(customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function validateProgramQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function validateProgramInput (\r\n customerAccount:\r\n string,\r\n programId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = validateProgramQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ValidateProgram',\r\n true, \r\n DataServiceEntities.rsmValidateProgramResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmValidateProgramResponse' },\r\n { \r\n CustomerAccount: customerAccount,\r\n ProgramId: programId\r\n }\r\n );\r\n }\r\n \r\n export function validateProgramAsync (\r\n context: IContext, customerAccount:\r\n string,\r\n programId:\r\n string\r\n ): AsyncResult {\r\n const request = validateProgramInput(customerAccount, programId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function verifyEmployeeQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function verifyEmployeeInput (\r\n customerAccount:\r\n string,\r\n employeeNumber:\r\n string,\r\n lastName:\r\n string,\r\n birthYear:\r\n string\r\n ): IDataServiceRequest {\r\n const query = verifyEmployeeQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'VerifyEmployee',\r\n true, \r\n DataServiceEntities.rsmVerifyEmployeeResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmVerifyEmployeeResponse' },\r\n { \r\n CustomerAccount: customerAccount,\r\n EmployeeNumber: employeeNumber,\r\n LastName: lastName,\r\n BirthYear: birthYear\r\n }\r\n );\r\n }\r\n \r\n export function verifyEmployeeAsync (\r\n context: IContext, customerAccount:\r\n string,\r\n employeeNumber:\r\n string,\r\n lastName:\r\n string,\r\n birthYear:\r\n string\r\n ): AsyncResult {\r\n const request = verifyEmployeeInput(customerAccount, employeeNumber, lastName, birthYear);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function friendsAndFamilyValidateProgramQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function friendsAndFamilyValidateProgramInput (\r\n code:\r\n string,\r\n emailListID:\r\n string,\r\n sourceID:\r\n string\r\n ): IDataServiceRequest {\r\n const query = friendsAndFamilyValidateProgramQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'FriendsAndFamilyValidateProgram',\r\n true, \r\n DataServiceEntities.rsmFriendsAndFamilyValidateProgramResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmFriendsAndFamilyValidateProgramResponse' },\r\n { \r\n Code: code,\r\n EmailListID: emailListID,\r\n SourceID: sourceID\r\n }\r\n );\r\n }\r\n \r\n export function friendsAndFamilyValidateProgramAsync (\r\n context: IContext, code:\r\n string,\r\n emailListID:\r\n string,\r\n sourceID:\r\n string\r\n ): AsyncResult {\r\n const request = friendsAndFamilyValidateProgramInput(code, emailListID, sourceID);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function friendsAndFamilyListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function friendsAndFamilyListInput (\r\n \r\n ): IDataServiceRequest {\r\n const query = friendsAndFamilyListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'FriendsAndFamilyList',\r\n false, \r\n DataServiceEntities.rsmFriendsAndFamilyListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmFriendsAndFamilyListResponse' },\r\n { \r\n \r\n }\r\n );\r\n }\r\n \r\n export function friendsAndFamilyListAsync (\r\n context: IContext\r\n ): AsyncResult {\r\n const request = friendsAndFamilyListInput();\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function insertMailingListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function insertMailingListInput (\r\n mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string,\r\n name:\r\n string,\r\n zipCode:\r\n string\r\n ): IDataServiceRequest {\r\n const query = insertMailingListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'InsertMailingList',\r\n true, \r\n DataServiceEntities.rsmInsertMailingListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmInsertMailingListResponse' },\r\n { \r\n MailingListId: mailingListId,\r\n SourceId: sourceId,\r\n Email: email,\r\n Name: name,\r\n ZipCode: zipCode\r\n }\r\n );\r\n }\r\n \r\n export function insertMailingListAsync (\r\n context: IContext, mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string,\r\n name:\r\n string,\r\n zipCode:\r\n string\r\n ): AsyncResult {\r\n const request = insertMailingListInput(mailingListId, sourceId, email, name, zipCode);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function unsubscribeMailingListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function unsubscribeMailingListInput (\r\n mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string\r\n ): IDataServiceRequest {\r\n const query = unsubscribeMailingListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'UnsubscribeMailingList',\r\n true, \r\n DataServiceEntities.rsmUnsubscribeMailingListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmUnsubscribeMailingListResponse' },\r\n { \r\n MailingListId: mailingListId,\r\n SourceId: sourceId,\r\n Email: email\r\n }\r\n );\r\n }\r\n \r\n export function unsubscribeMailingListAsync (\r\n context: IContext, mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string\r\n ): AsyncResult {\r\n const request = unsubscribeMailingListInput(mailingListId, sourceId, email);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function offerSelectionQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function offerSelectionInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n offerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = offerSelectionQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'OfferSelection',\r\n true, \r\n DataServiceEntities.rsmOfferSelectionsResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmOfferSelectionsResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n OfferId: offerId\r\n }\r\n );\r\n }\r\n \r\n export function offerSelectionAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n offerId:\r\n string\r\n ): AsyncResult {\r\n const request = offerSelectionInput(customerId, wineClubId, offerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function getSalesPickOrdersQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function getSalesPickOrdersInput (\r\n queryResultSettings: IQueryResultSettings, customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = getSalesPickOrdersQuery().resultSettings(queryResultSettings);\r\n return query.createDataServiceRequestForOperation(\r\n 'GetSalesPickOrders',\r\n false, {},\r\n 'true',\r\n { bypassCache: 'get', returnEntity: 'Entities.SalesOrder' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function getSalesPickOrdersAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = getSalesPickOrdersInput(\r\n context.queryResultSettings || {}, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function shipCompliantRequestByCartQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function shipCompliantRequestByCartInput (\r\n cartId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = shipCompliantRequestByCartQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ShipCompliantRequestByCart',\r\n true, \r\n DataServiceEntities.ShipComplianceResponseObjectExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IShipComplianceResponseObject' },\r\n { \r\n CartId: cartId\r\n }\r\n );\r\n }\r\n \r\n export function shipCompliantRequestByCartAsync (\r\n context: IContext, cartId:\r\n string\r\n ): AsyncResult {\r\n const request = shipCompliantRequestByCartInput(cartId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionCancelQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionCancelInput (\r\n subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionCancelQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionCancel',\r\n true, \r\n DataServiceEntities.rsmSubscriptionCancelResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionCancelResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionCancelAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionCancelInput(subscriptionId, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionPauseQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionPauseInput (\r\n subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionPauseQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionPause',\r\n true, \r\n DataServiceEntities.rsmSubscriptionPauseResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionPauseResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionPauseAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionPauseInput(subscriptionId, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionResumeQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionResumeInput (\r\n subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionResumeQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionResume',\r\n true, \r\n DataServiceEntities.rsmSubscriptionResumeResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionResumeResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionResumeAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionResumeInput(subscriptionId, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionUpdateQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionUpdateInput (\r\n subscriptionId:\r\n string,\r\n subscriptionName:\r\n string,\r\n nextOrderDate:\r\n string,\r\n deliveryPostalAddress:\r\n string,\r\n frequency:\r\n string,\r\n customerId:\r\n string,\r\n cardId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionUpdateQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionUpdate',\r\n true, \r\n DataServiceEntities.rsmSubscriptionUpdateResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionUpdateResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n SubscriptionName: subscriptionName,\r\n NextOrderDate: nextOrderDate,\r\n DeliveryPostalAddress: deliveryPostalAddress,\r\n Frequency: frequency,\r\n CustomerId: customerId,\r\n CardId: cardId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionUpdateAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n subscriptionName:\r\n string,\r\n nextOrderDate:\r\n string,\r\n deliveryPostalAddress:\r\n string,\r\n frequency:\r\n string,\r\n customerId:\r\n string,\r\n cardId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionUpdateInput(subscriptionId, subscriptionName, nextOrderDate, deliveryPostalAddress, frequency, customerId, cardId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionCardsQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionCardsInput (\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionCardsQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionCards',\r\n false, \r\n DataServiceEntities.rsmSubscriptionCardsResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionCardsResponse' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionCardsAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionCardsInput(customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionListInput (\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionList',\r\n false, \r\n DataServiceEntities.rsmSubscriptionListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionListResponse' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionListAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionListInput(customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n \r\n // @ts-ignore\r\n function rSMWineClubSignUpEntityControllerQuery(wineClubId?: string): DataServiceQuery {\r\n const key = (wineClubId) ? { WineClubId: wineClubId } :null;\r\n return new DataServiceQuery(\"RSMWineClubSignUpEntityController\", \"rsmWineClubSignUpEntity\", DataServiceEntities.rsmWineClubSignUpEntityExtensionClass, key);\r\n }\r\n\r\n \r\n export function createWineClubSignUpInput(entityData: DataServiceEntities.IrsmWineClubSignUpEntity): IDataServiceRequest {\r\n const query = rSMWineClubSignUpEntityControllerQuery();\r\n return query.createDataServiceRequestForOperation('WineClubSignUp', true, DataServiceEntities.rsmWineClubSignUpResponseExtensionClass, 'false', {bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmWineClubSignUpResponse'}, {entityData: entityData });\r\n }\r\n\r\n \r\n export function wineClubSignUpAsync(context: IContext, entityData: DataServiceEntities.IrsmWineClubSignUpEntity): AsyncResult {\r\n const request = createWineClubSignUpInput(entityData);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n ","import { CacheType, IAction, IActionContext, IActionInput, ICommerceApiSettings, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport Cookie from 'js-cookie';\n\nimport { copyAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\nimport { getCartState } from '@msdyn365-commerce/global-state';\n\n/**\n * Input class for getCheckoutCart data action\n */\nexport class GetCheckoutCartInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCheckoutCart`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCheckoutCart';\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new GetCheckoutCartInput(inputData.requestContext.apiSettings);\n};\n\n// @ts-ignore\nconst CartCookieName: string = msdyn365Commerce.CartCookie || 'cart';\n\n/**\n * Data action to copy the cart for checkout actions\n */\nexport async function getCheckoutCart(input: GetCheckoutCartInput, ctx: IActionContext): Promise {\n const cartId = Cookie.get(CartCookieName) || '';\n if (cartId) {\n const currentCartState = await getCartState(ctx);\n const activeCart = currentCartState.cart;\n\n // check if there is an active cart and it isn't empty\n if (activeCart && Object.keys(activeCart).length > 0) {\n const checkoutCart = await copyAsync({ callerContext: ctx }, activeCart.Id, 2);\n\n if (checkoutCart) {\n return Array.isArray(checkoutCart) ? checkoutCart[0] : checkoutCart;\n }\n } else {\n ctx.trace(`[get-checkout-cart] Can't create a checkout cart since active cart is empty`);\n }\n }\n\n return {};\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-checkout-cart',\n action: >getCheckoutCart,\n input: createInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Refiner Compression:\n * Refiners contains a non-trivial amount of data that is required to successfully make\n * a refiner-based API call. To allow for deep-linking of refiners in the URL, refiner data\n * must be compressed so that URL max length is not exceeded. Refiners will be compressed into\n * the following array style index-based format:\n * [DataTypeValue, LeftValueBoundString, RefinerRecordId, RefinerSourceValue, RightValueBoundString, UnitText]\n */\nconst compressedRefinerKeys = ['DataTypeValue', 'LeftValueBoundString', 'RefinerRecordId', 'RefinerSourceValue', 'RightValueBoundString', 'UnitText'];\n\n/**\n * Hydrates compressed refiner data from URL\n * @param fullUrl The full URL of the page\n */\nexport const hydrateRefinersFromUrl = (requestContext: IRequestContext): ProductRefinerValue[] => {\n const compressedRefinerArray = parseQueryParam<(string | number)[][]>('refiners', requestContext);\n if (!compressedRefinerArray || !compressedRefinerArray.length) {\n return [];\n }\n\n return compressedRefinerArray.map((compressedRefiner) => {\n try {\n const parsedRefiner: ProductRefinerValue = {};\n compressedRefinerKeys.forEach((refinerKey, index) => {\n // @ts-ignore: This line is intentionally not typesafe\n parsedRefiner[refinerKey] = compressedRefiner[index];\n });\n return parsedRefiner;\n } catch(e) {\n return undefined;\n }\n }).filter(Boolean);\n};\n\n/**\n * Compressed a list of refiners for use in URLs\n * @param refiners The uncompressed refiners\n */\nexport const compressRefiners = (refiners: ProductRefinerValue[]) => {\n const compressedRefiners: (string | number)[][] = [];\n\n refiners.forEach((refiner) => {\n const compressedRefiner: (string | number)[] = [];\n compressedRefinerKeys.forEach((refinerKey) => {\n // @ts-ignore: This line is intentionally not typesafe\n compressedRefiner.push(refiner[refinerKey]);\n });\n compressedRefiners.push(compressedRefiner);\n });\n\n return compressedRefiners;\n};\n\n/**\n * Method which creates a URL contiaining serialized active refiners\n * @param fullUrl The Current URL of the page\n * @param refiners The refiners which should be added to the URL\n */\nexport const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\n // Refiner Change flow\n if (refiners !== undefined) {\n if (!refiners.length) {\n fullUrl.searchParams.delete('refiners');\n } else {\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(refiners)));\n }\n\n // Adding or removing a refiner means we want to always load page 1\n fullUrl.searchParams.delete('skip');\n return fullUrl.href;\n }\n\n if (sortingColumns !== undefined) {\n if(!sortingColumns.length) {\n fullUrl.searchParams.delete('sorting');\n } else {\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\n }\n\n // Changing the sort means always load page 1\n fullUrl.searchParams.delete('skip');\n return fullUrl.href;\n }\n\n if (skipCount) {\n fullUrl.searchParams.set('skip', skipCount.toString());\n }\n\n return fullUrl.href;\n};\n\n/**\n * Parses a query param from the query object of the request context\n * @param key The query parameter key\n * @param requestContext The request context\n */\nexport const parseQueryParam = (key: string, requestContext: IRequestContext): T | null => {\n if(requestContext.query && requestContext.query[key]) {\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\n }\n return null;\n};\n\n/**\n * Gets the current URL of the page from the request context\n * @param requestContext The request context\n */\nexport const getCurrentUrl = (requestContext: IRequestContext): URL => {\n if(MsDyn365.isBrowser) {\n return new URL(window.location.href);\n } else {\n // NOTE: Typing on requestURL is incorrect\n if (requestContext.url.requestUrl.href) {\n return new URL(requestContext.url.requestUrl.href);\n } else {\n return new URL((requestContext.url.requestUrl));\n }\n }\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport {\n buildCacheKey,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings, ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { toJS } from 'mobx';\nimport { hydrateRefinersFromUrl } from './url-utils';\n\nexport type listPageType = 'Category' | 'Search' | 'Unknown';\n\n/**\n * Get include attributes from config.\n */\nfunction getIncludeAttributes(inputData: ICreateActionContext, IGeneric>): boolean {\n if (inputData &&\n inputData.config &&\n inputData.config.includeAttributes !== undefined &&\n inputData.config.includeAttributes === true) {\n return true;\n }\n return false;\n}\n\n/**\n * BaseCollection Action Input\n */\nexport class BaseCollectionInput implements IActionInput {\n public pageType: listPageType;\n public category: number | undefined;\n public searchText: string | undefined;\n public refiners: ProductRefinerValue[];\n public queryResultSettings: IQueryResultSettings;\n public apiSettings: ICommerceApiSettings;\n public includeAttributes:boolean | undefined;\n public locale?:string;\n\n constructor(\n pageType: listPageType,\n apiSettings: ICommerceApiSettings,\n queryResultSettings: IQueryResultSettings,\n refiners: ProductRefinerValue[],\n category: number | undefined,\n searchText: string | undefined,\n includeAttributes: boolean |undefined,\n locale?: string\n ) {\n this.pageType = pageType;\n this.apiSettings = apiSettings;\n this.category = category;\n this.searchText = searchText;\n this.queryResultSettings = queryResultSettings;\n this.refiners = refiners;\n this.includeAttributes=includeAttributes;\n this.locale = locale;\n }\n public getCacheKey = () => {\n const queryResultSettings = {\n ...this.queryResultSettings.Paging,\n ...toJS(this.queryResultSettings.Sorting)\n };\n // tslint:disable \n const cacheKey = buildCacheKey(\n `${this.pageType}-${this.locale}-${this.category || this.searchText}-${this.refiners.map(refiner => `${refiner.RefinerRecordId + (refiner.LeftValueBoundString || '') + (refiner.RightValueBoundString || '')}-`)}-${convertToString(queryResultSettings)}`,\n this.apiSettings, this.locale\n ); \n return cacheKey;\n }\n \n public getCacheObjectType = () => 'CollectionActionResult';\n public dataCacheType = (): CacheType => 'request';\n}\n\n\n// TODO: Create a data model here or import one to capture the response of the action\nexport interface IGetFullProductsByCollectionData {\n text: string;\n}\n\nexport type CollectionClassConstructor = new (\n pageType: listPageType,\n apiSettings: ICommerceApiSettings,\n queryResultSettings: IQueryResultSettings,\n refiners: ProductRefinerValue[],\n category: number | undefined,\n searchText: string | undefined,\n includeAttributes: boolean | undefined,\n locale?: string\n) => BaseCollectionInput;\n\n/**\n * TODO: Use this function to create the input required to make the action call\n */\nexport const createBaseCollectionInput = (\n args: ICreateActionContext,\n inputClassConstuctor: CollectionClassConstructor\n): BaseCollectionInput => {\n const pageType =\n args.requestContext.urlTokens.pageType === 'Category' || (args.requestContext.query && args.requestContext.query.categoryId)\n ? 'Category'\n : 'Search';\n\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(args).QueryResultSettings;\n const queryRefiners = hydrateRefinersFromUrl(args.requestContext);\n const includeAttributes=getIncludeAttributes(args);\n \n if(args.requestContext.query && args.requestContext.query.sorting) {\n queryResultSettings.Sorting = { Columns: JSON.parse(decodeURIComponent(args.requestContext.query.sorting)) };\n }\n\n if (pageType === 'Category') {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n +(args.requestContext.urlTokens.itemId || (args.requestContext.query && args.requestContext.query.categoryId) || 0),\n undefined,\n includeAttributes,\n args.requestContext.locale\n );\n } else if (pageType === 'Search' && args.requestContext.query && args.requestContext.query.q) {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n undefined,\n args.requestContext.query.q,\n includeAttributes,\n args.requestContext.locale\n )\n } else if (pageType === 'Search' && args.requestContext.query && args.requestContext.query.productId) {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n undefined,\n args.requestContext.query.productId,\n includeAttributes,\n args.requestContext.locale\n );\n }\n\n throw new Error('[getFullProductsForCollection]Unable to create input');\n};","import { buildCacheKey, getProductUrlSync, getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext,IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** Product Page Summary Input */\nexport class ProductPageSummaryInput implements IActionInput {\n public apiSettings: ICommerceApiSettings;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, apiSettings: ICommerceApiSettings) {\n this.config = config || {};\n this.apiSettings = apiSettings;\n }\n\n public getCacheObjectType = (): string => 'ProductPageSummary';\n public getCacheKey = (): string => `${buildCacheKey('ProductPageSummary', this.apiSettings)}-${this.config.title}`;\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createGetSelectedVariantInput = (inputData: IActionContext): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new SelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n } else {\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n }\n};\n\nconst action = async (input: ProductPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let simpleProductData;\n try {\n simpleProductData = await getSelectedVariant(createGetSelectedVariantInput(context), context);\n } catch (e) {\n // Do nothing, if there's an error we fall back to values defined from data\n }\n if (simpleProductData) {\n let productUrl: string | undefined;\n try {\n productUrl = getProductUrlSync(simpleProductData, context);\n // @ts-ignore - TODO: property exits in new version of SDK. Remove once released.\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (productUrl && canonicalDomain) {\n productUrl = `https://${canonicalDomain}${productUrl}`;\n } else {\n productUrl = undefined;\n }\n } catch (e) {\n productUrl = undefined;\n }\n return {\n title: simpleProductData.Name,\n description: simpleProductData.Description,\n sharingImageUrl: simpleProductData.PrimaryImageUrl,\n canonicalUrl: productUrl,\n faviconUrl: config && config.faviconUrl\n };\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n description: config.description,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n } else {\n return {};\n }\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/product-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new ProductPageSummaryInput(args.config, args.requestContext.apiSettings);\n }\n});","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n \n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n try {\n\n\n isNotRegistered('aad-generic') && (binding.modules['aad-generic'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-aad-generic' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'aad-generic',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic'\n });\n \n\n isNotRegistered('accordion') && (binding.modules['accordion'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion'),\n $type: 'moduleDefinition',\n da: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'accordion',\n p: 'accordion',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion'\n });\n \n\n isNotRegistered('accordion-item') && (binding.modules['accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion-item' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item'),\n $type: 'moduleDefinition',\n da: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'accordion-item',\n p: 'accordion',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item'\n });\n \n\n isNotRegistered('account-address-tile') && (binding.modules['account-address-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-address-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-address-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile'\n });\n \n\n isNotRegistered('account-customer-balance') && (binding.modules['account-customer-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance'),\n $type: 'contentModule',\n da: [{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-customer-balance',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance'\n });\n \n\n isNotRegistered('account-customer-balance-tile') && (binding.modules['account-customer-balance-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile'),\n $type: 'contentModule',\n da: [{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-customer-balance-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile'\n });\n \n\n isNotRegistered('account-generic-tile') && (binding.modules['account-generic-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-generic-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-generic-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile'\n });\n \n\n isNotRegistered('account-invoice-tile') && (binding.modules['account-invoice-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-invoice-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile'),\n $type: 'contentModule',\n da: [{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-invoice-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile'\n });\n \n\n isNotRegistered('account-loyalty') && (binding.modules['account-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-loyalty',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty'\n });\n \n\n isNotRegistered('account-loyalty-tile') && (binding.modules['account-loyalty-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-loyalty-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile'\n });\n \n\n isNotRegistered('account-management-address') && (binding.modules['account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-account-management-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-management-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address'\n });\n \n\n isNotRegistered('account-order-templates-tile') && (binding.modules['account-order-templates-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-order-templates-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 1},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-order-templates-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile'\n });\n \n\n isNotRegistered('account-profile') && (binding.modules['account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile'),\n $type: 'contentModule',\n da: [{name:'attributeDefinitions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-profile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile'\n });\n \n\n isNotRegistered('account-profile-edit') && (binding.modules['account-profile-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile-edit' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-profile-edit',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit'\n });\n \n\n isNotRegistered('account-welcome-tile') && (binding.modules['account-welcome-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-welcome-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile'),\n $type: 'contentModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-welcome-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile'\n });\n \n\n isNotRegistered('account-wishlist-tile') && (binding.modules['account-wishlist-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-wishlist-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile'),\n $type: 'contentModule',\n da: [{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-wishlist-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile'\n });\n \n\n isNotRegistered('back-top-footer') && (binding.modules['back-top-footer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-back-top-footer' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer/back-top-footer'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'back-top-footer',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer'\n });\n \n\n isNotRegistered('breadcrumb') && (binding.modules['breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-breadcrumb-breadcrumb' */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb'),\n $type: 'contentModule',\n da: [{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'categoryPaths', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'breadcrumb',\n p: 'breadcrumb',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb'\n });\n \n\n isNotRegistered('business-account-address') && (binding.modules['business-account-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-business-account-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-account-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address'\n });\n \n\n isNotRegistered('business-organization-list') && (binding.modules['business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-organization-list-business-organization-list' */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list'),\n $type: 'contentModule',\n da: [{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-organization-list',\n p: 'business-organization-list',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list'\n });\n \n\n isNotRegistered('business-sign-up') && (binding.modules['business-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-account-management-business-sign-up' */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-sign-up',\n p: 'business-account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up'\n });\n \n\n isNotRegistered('buybox') && (binding.modules['buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-buybox' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'buybox',\n p: 'buybox',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox'\n });\n \n\n isNotRegistered('carousel') && (binding.modules['carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-carousel-carousel' */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'carousel',\n p: 'carousel',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel'\n });\n \n\n isNotRegistered('cart') && (binding.modules['cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart'\n });\n \n\n isNotRegistered('cart-icon') && (binding.modules['cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart-icon' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart-icon',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon'\n });\n \n\n isNotRegistered('category-page-summary') && (binding.modules['category-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-category-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'category-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary'\n });\n \n\n isNotRegistered('checkout') && (binding.modules['checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout'),\n $type: 'containerModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout'\n });\n \n\n isNotRegistered('checkout-billing-address') && (binding.modules['checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-billing-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address'),\n $type: 'contentModule',\n da: [{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-billing-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address'\n });\n \n\n isNotRegistered('checkout-customer-account-payment') && (binding.modules['checkout-customer-account-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'creditBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-customer-account-payment',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment'\n });\n \n\n isNotRegistered('checkout-delivery-options') && (binding.modules['checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-delivery-options' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-delivery-options',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options'\n });\n \n\n isNotRegistered('checkout-gift-card') && (binding.modules['checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-gift-card' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-gift-card',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card'\n });\n \n\n isNotRegistered('checkout-guest-profile') && (binding.modules['checkout-guest-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-guest-profile' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-guest-profile',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile'\n });\n \n\n isNotRegistered('checkout-loyalty') && (binding.modules['checkout-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-loyalty' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'loyaltyTransactionEstimation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-loyalty',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty'\n });\n \n\n isNotRegistered('checkout-order-confirmation') && (binding.modules['checkout-order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-order-confirmation',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation'\n });\n \n\n isNotRegistered('checkout-payment-instrument') && (binding.modules['checkout-payment-instrument'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-payment-instrument',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument'\n });\n \n\n isNotRegistered('checkout-pickup') && (binding.modules['checkout-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-pickup' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-pickup',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup'\n });\n \n\n isNotRegistered('checkout-section-container') && (binding.modules['checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-section-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-section-container',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container'\n });\n \n\n isNotRegistered('checkout-shipping-address') && (binding.modules['checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-shipping-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-shipping-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address'\n });\n \n\n isNotRegistered('checkout-terms-and-conditions') && (binding.modules['checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-terms-and-conditions',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions'\n });\n \n\n isNotRegistered('content-block') && (binding.modules['content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-content-block-content-block' */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'content-block',\n p: 'content-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block'\n });\n \n\n isNotRegistered('cookie-compliance') && (binding.modules['cookie-compliance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance' */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cookie-compliance',\n p: 'cookie-compliance',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance'\n });\n \n\n isNotRegistered('default-container') && (binding.modules['default-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container/default-container'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container'\n });\n \n\n isNotRegistered('default-container-2-slots') && (binding.modules['default-container-2-slots'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container-2-slots' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots/default-container-2-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-2-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots'\n });\n \n\n isNotRegistered('default-container-3-slots') && (binding.modules['default-container-3-slots'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container-3-slots' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots/default-container-3-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-3-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots'\n });\n \n\n isNotRegistered('default-external-script') && (binding.modules['default-external-script'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-external-script' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script/default-external-script'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-external-script',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script'\n });\n \n\n isNotRegistered('default-inline-script') && (binding.modules['default-inline-script'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-inline-script' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script/default-inline-script'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-inline-script',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script'\n });\n \n\n isNotRegistered('default-metatags') && (binding.modules['default-metatags'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-metatags' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags/default-metatags'),\n $type: 'htmlHeadTagsModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-metatags',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags'\n });\n \n\n isNotRegistered('default-page') && (binding.modules['default-page'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-page' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page/default-page'),\n $type: 'pageModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-page',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page'\n });\n \n\n isNotRegistered('default-page-summary') && (binding.modules['default-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-default-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary'\n });\n \n\n isNotRegistered('fabrikam') && (binding.modules['fabrikam'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-fabrikam' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/fabrikam'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','content-block','promo-banner','text-block'],\n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'fabrikam',\n p: 'fabrikam-design-kit',\n \n pdp: '',\n \n themeSettings: 'fabrikam.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam'\n });\n \n\n isNotRegistered('footer-category') && (binding.modules['footer-category'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-category' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-category',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category'\n });\n \n\n isNotRegistered('footer-item') && (binding.modules['footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-item' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-item',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item'\n });\n \n\n isNotRegistered('gift-card-balance-check') && (binding.modules['gift-card-balance-check'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-gift-card-balance-check' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'gift-card-balance-check',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check'\n });\n \n\n isNotRegistered('header') && (binding.modules['header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-header-header' */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header'),\n $type: 'containerModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'header',\n p: 'header',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header'\n });\n \n\n isNotRegistered('iframe') && (binding.modules['iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-iframe-iframe' */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'iframe',\n p: 'iframe',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe'\n });\n \n\n isNotRegistered('invoices-list') && (binding.modules['invoices-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-invoices-list' */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list'),\n $type: 'contentModule',\n da: [{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'invoices-list',\n p: 'invoice',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list'\n });\n \n\n isNotRegistered('list-page-summary') && (binding.modules['list-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-list-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'list-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary'\n });\n \n\n isNotRegistered('loyalty-sign-up') && (binding.modules['loyalty-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'loyalty-sign-up',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up'\n });\n \n\n isNotRegistered('loyalty-terms') && (binding.modules['loyalty-terms'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-terms' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms'),\n $type: 'containerModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'loyalty-terms',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms'\n });\n \n\n isNotRegistered('map') && (binding.modules['map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-map-map' */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map'),\n $type: 'contentModule',\n da: [{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'map',\n p: 'map',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/map/dist/lib/modules/map'\n });\n \n\n isNotRegistered('media-gallery') && (binding.modules['media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-media-gallery-media-gallery' */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery'),\n $type: 'contentModule',\n da: [{name:'mediaLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'media-gallery',\n p: 'media-gallery',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery'\n });\n \n\n isNotRegistered('navigation-menu') && (binding.modules['navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-navigation-menu-navigation-menu' */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'navigation-menu',\n p: 'navigation-menu',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu'\n });\n \n\n isNotRegistered('order-confirmation') && (binding.modules['order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-confirmation',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation'\n });\n \n\n isNotRegistered('order-details') && (binding.modules['order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-details' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-details',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details'\n });\n \n\n isNotRegistered('order-history') && (binding.modules['order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-history' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-history',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history'\n });\n \n\n isNotRegistered('order-template') && (binding.modules['order-template'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'orderTemplate', path:'@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-template',\n p: 'order-template',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template'\n });\n \n\n isNotRegistered('order-template-list') && (binding.modules['order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template-list' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list'),\n $type: 'contentModule',\n da: [{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-template-list',\n p: 'order-template',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list'\n });\n \n\n isNotRegistered('organization-users-tile') && (binding.modules['organization-users-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-organization-users-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile'),\n $type: 'contentModule',\n da: [{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'organization-users-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile'\n });\n \n\n isNotRegistered('password-reset') && (binding.modules['password-reset'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'password-reset',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset'\n });\n \n\n isNotRegistered('password-reset-verification') && (binding.modules['password-reset-verification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset-verification' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'password-reset-verification',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification'\n });\n \n\n isNotRegistered('place-holder-for-container-preview') && (binding.modules['place-holder-for-container-preview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-place-holder-for-container-preview' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview/place-holder-for-container-preview'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'place-holder-for-container-preview',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview'\n });\n \n\n isNotRegistered('product-collection') && (binding.modules['product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-collection-product-collection' */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-collection',\n p: 'product-collection',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection'\n });\n \n\n isNotRegistered('product-page-summary') && (binding.modules['product-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-product-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary'\n });\n \n\n isNotRegistered('product-specification') && (binding.modules['product-specification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-specification-product-specification' */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-specification',\n p: 'product-specification',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification'\n });\n \n\n isNotRegistered('promo-banner') && (binding.modules['promo-banner'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-promo-banner-promo-banner' */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'promo-banner',\n p: 'promo-banner',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner'\n });\n \n\n isNotRegistered('ratings-histogram') && (binding.modules['ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram'),\n $type: 'contentModule',\n da: [{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'ratings-histogram',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram'\n });\n \n\n isNotRegistered('reviews-list') && (binding.modules['reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-reviews-list' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0},{name:'reviewsList', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'reviews-list',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list'\n });\n \n\n isNotRegistered('script-injector') && (binding.modules['script-injector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-script-injector' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector/script-injector'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'script-injector',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector'\n });\n \n\n isNotRegistered('search') && (binding.modules['search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-search' */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search'),\n $type: 'contentModule',\n da: [{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search',\n p: 'search',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search/dist/lib/modules/search'\n });\n \n\n isNotRegistered('search-result-container') && (binding.modules['search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-result-container-search-result-container' */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container'),\n $type: 'contentModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'featureProduct', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'listPageState', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection', runOn: 0},{name:'refiners', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search-result-container',\n p: 'search-result-container',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container'\n });\n \n\n isNotRegistered('sign-in') && (binding.modules['sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-in' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'sign-in',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in'\n });\n \n\n isNotRegistered('sign-up') && (binding.modules['sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'sign-up',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up'\n });\n \n\n isNotRegistered('site-picker') && (binding.modules['site-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-site-picker-site-picker' */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'site-picker',\n p: 'site-picker',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker'\n });\n \n\n isNotRegistered('social-share') && (binding.modules['social-share'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'social-share',\n p: 'social-share',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share'\n });\n \n\n isNotRegistered('social-share-item') && (binding.modules['social-share-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share-item' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'social-share-item',\n p: 'social-share',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item'\n });\n \n\n isNotRegistered('spacer') && (binding.modules['spacer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-spacer-spacer' */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'spacer',\n p: 'spacer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer'\n });\n \n\n isNotRegistered('starter') && (binding.modules['starter'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-starter-theme-pack-starter' */\n '@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter/starter'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['content-block','promo-banner','text-block'],\n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'starter',\n p: 'starter-theme-pack',\n \n pdp: '',\n \n themeSettings: 'starter.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter'\n });\n \n\n isNotRegistered('store-selector') && (binding.modules['store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-store-selector-store-selector' */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector'),\n $type: 'contentModule',\n da: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'store-selector',\n p: 'store-selector',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector'\n });\n \n\n isNotRegistered('tab') && (binding.modules['tab'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab'),\n $type: 'moduleDefinition',\n da: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tab',\n p: 'tab',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab'\n });\n \n\n isNotRegistered('tab-item') && (binding.modules['tab-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab-item' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item'),\n $type: 'moduleDefinition',\n da: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tab-item',\n p: 'tab',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item'\n });\n \n\n isNotRegistered('text-block') && (binding.modules['text-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-text-block-text-block' */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'text-block',\n p: 'text-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block'\n });\n \n\n isNotRegistered('video-player') && (binding.modules['video-player'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-video-player-video-player' */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'video-player',\n p: 'video-player',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player'\n });\n \n\n isNotRegistered('wishlist-items') && (binding.modules['wishlist-items'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-wishlist-wishlist-items' */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'productAvailability', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'wishlist-items',\n p: 'wishlist',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items'\n });\n \n\n isNotRegistered('write-review') && (binding.modules['write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-write-review' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'write-review',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review'\n });\n \n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n registerActionId(actionPath);\n }\n\n if (isNotRegistered('accordion')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('accordion-item')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-address-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-address-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-invoice-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-loyalty-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-profile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-profile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-welcome-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-wishlist-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-organization-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('category-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-gift-card')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-guest-profile')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-guest-profile')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-terms-and-conditions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('default-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('list-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-sign-up')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-terms')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('map')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('navigation-menu')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template';\n let dataAction = require('@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('organization-users-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-specification')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-specification')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('ratings-histogram')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('ratings-histogram')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tab')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tab-item')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists';\n let dataAction = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items';\n let dataAction = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('write-review')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('write-review')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","import {\r\n CurrentCategoryInput,\r\n FullProductInput,\r\n getFullProducts,\r\n getProductDetailsCriteriaFromActionInput,\r\n getProductsByCategory,\r\n ProductDetailsCriteria,\r\n QueryResultSettingsProxy\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nconst buildCacheKey = (\r\n base: string,\r\n apiSettings: ICommerceApiSettings\r\n): string => {\r\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}`;\r\n};\r\n/**\r\n * Chains getting the SelectedVariant by product id\r\n */\r\nclass ProductsByCategoryInput implements IActionInput {\r\n public categoryId?: number;\r\n public categorySlug?: string;\r\n public categoryName?: string;\r\n public catalogId: number;\r\n public currentCategory: CurrentCategoryInput;\r\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(\r\n category: CurrentCategoryInput,\r\n apiSettings: ICommerceApiSettings,\r\n queryResultSettingsProxy: QueryResultSettingsProxy\r\n ) {\r\n this.apiSettings = apiSettings;\r\n this.currentCategory = category;\r\n this.queryResultSettingsProxy = queryResultSettingsProxy;\r\n this.catalogId = apiSettings.catalogId;\r\n this.categoryId = category.categoryId;\r\n this.categorySlug = category.categorySlug;\r\n }\r\n\r\n public getCacheKey = () =>\r\n buildCacheKey(\r\n `${this.categoryId || this.categorySlug}|${this.catalogId}|${\r\n this.queryResultSettingsProxy.cacheKeyHint\r\n }`,\r\n this.apiSettings\r\n );\r\n public getCacheObjectType = () => 'Products-From-Search';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n/**\r\n * Product by category ID Input action\r\n */\r\nexport class ProductsWithAttributesByCategoryInput implements IActionInput {\r\n public categoryId: number;\r\n public channelId: number;\r\n public catalogId: number;\r\n public categoryInput: CurrentCategoryInput;\r\n public selectedProduct: FullProduct | undefined;\r\n public productsInput: ProductsByCategoryInput;\r\n public criteria: ProductDetailsCriteria;\r\n constructor(\r\n channelId: number,\r\n categoryId: number,\r\n categoryInput: CurrentCategoryInput,\r\n productsInput: ProductsByCategoryInput,\r\n criteria: ProductDetailsCriteria,\r\n catalogId?: number\r\n ) {\r\n this.channelId = channelId;\r\n this.productsInput = productsInput;\r\n this.categoryId = categoryId;\r\n this.categoryInput = categoryInput;\r\n this.criteria = criteria;\r\n this.catalogId = catalogId || 0;\r\n }\r\n public getCacheKey = () =>\r\n `${this.categoryId}:${this.channelId}:${this.catalogId}:ProductsByCategoryWithAttributes`;\r\n public getCacheObjectType = () => 'ProductsByCategoryWithAttributes';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n/**\r\n * Product by category ID Input action\r\n */\r\nexport const createAttributesForSelectedVariantInput = (\r\n inputData: ICreateActionContext>\r\n): ProductsWithAttributesByCategoryInput => {\r\n if (inputData && inputData.requestContext) {\r\n if (inputData.requestContext.query && !inputData.requestContext.query.top) {\r\n inputData.requestContext.query.top = '1000';\r\n }\r\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\r\n // uses eventCategoryId in config if set otherwise looks up categoryId from url\r\n if (inputData.config && inputData.config.eventCategoryId) {\r\n currentCategory.categoryId = inputData.config.eventCategoryId;\r\n }\r\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(\r\n inputData\r\n );\r\n return new ProductsWithAttributesByCategoryInput(\r\n +inputData.requestContext.apiSettings.channelId,\r\n +(currentCategory.categoryId || 0),\r\n currentCategory,\r\n new ProductsByCategoryInput(\r\n currentCategory,\r\n inputData.requestContext.apiSettings,\r\n queryResultSettingsProxy\r\n ),\r\n getProductDetailsCriteriaFromActionInput(inputData)\r\n );\r\n }\r\n\r\n throw new Error('Please specify categoryId query string in request.');\r\n};\r\n/**\r\n * Product by category ID Input action\r\n */\r\nexport async function getAttributesForSelectedVariantAction(\r\n input: ProductsWithAttributesByCategoryInput,\r\n ctx: IActionContext\r\n): Promise {\r\n const productSearchResult = await getProductsByCategory(\r\n input.productsInput,\r\n ctx\r\n );\r\n const fullProductInputs: FullProductInput[] = [];\r\n productSearchResult.forEach((searchResult: SimpleProduct) => {\r\n if (searchResult.RecordId !== undefined) {\r\n fullProductInputs.push(\r\n new FullProductInput(\r\n searchResult.RecordId,\r\n ctx.requestContext.apiSettings,\r\n input.criteria\r\n )\r\n );\r\n }\r\n });\r\n if (!fullProductInputs) {\r\n return {};\r\n }\r\n const products = await getFullProducts(fullProductInputs, ctx);\r\n // @ts-ignore\r\n ctx.isMaxDepthExceeded = () => false;\r\n\r\n return Promise.all(products.map(async (product: FullProduct) => {\r\n const attribute = await getAttributeValuesAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n product.ProductDetails.RecordId,\r\n input.channelId,\r\n input.catalogId\r\n );\r\n\r\n // @ts-ignore\r\n product.ProductAttributes = attribute;\r\n return product;\r\n }));\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getAttributesForSelectedVariantAction,\r\n input: createAttributesForSelectedVariantInput\r\n});\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * CopyCart data action pre-hook\n * @param inputs Data action inputs\n */\nconst beforeCopyCart = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\n/**\n * Fires an CheckOut event after CopyCart data action completed\n * @param _inputs Data action inputs\n * @param cart New checkout cart\n * @param actionContext Action context\n */\nconst afterCopyCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n let cartLineProductUnits: IProductInfo[] = [];\n\n // Collect info on products in the cart\n if (cartObject && cartObject.CartLines && Array.isArray(cartObject.CartLines) && cartObject.CartLines.length > 0) {\n try {\n cartLineProductUnits = await getProductInfoFromCartLinesAsync(cartObject.CartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('CopyCart post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire Checkout event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.CheckOut, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: cartLineProductUnits,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Copy',\n postReaderHook: afterCopyCart,\n preReaderHook: beforeCopyCart\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOption, FeatureState, ItemAvailability, OrgUnitAvailability, OrgUnitLocation, ProductWarehouseInventoryInformation, SearchArea, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionsAsync, getOrgUnitLocationsByAreaAsync, getStoreHoursAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {FeatureStateInput, getFeatureStateAction} from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\nimport { IProductInventoryInformation } from './utilities/product-inventory-information';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Get selected variant action input class\n */\nexport class GetFullAvailableInventoryNearbyInput implements IActionInput {\n public latitude?: number;\n public longitude?: number;\n public radius?: number;\n public productId?: number;\n public DistanceUnitValue?: number;\n public IgnoreLocation?: boolean;\n\n constructor(_productId?: number, _latitude?: number, _longitude?: number, _radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.productId = _productId;\n this.latitude = _latitude;\n this.longitude = _longitude;\n this.radius = _radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => `GetFullAvailableInventoryNearbyInputCache`;\n public getCacheObjectType = () => 'GetFullAvailableInventoryNearbyInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetFullAvailableInventoryNearbyInput = (inputData: ICreateActionContext>): GetFullAvailableInventoryNearbyInput => {\n return new GetFullAvailableInventoryNearbyInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data aciton\n * @param input The action input class\n * @param ctx The action context\n */\nexport async function getFullAvailableInventoryNearbyAction(\n input: GetFullAvailableInventoryNearbyInput,\n ctx: IActionContext\n): Promise {\n // No valid product we want to return undefined so module knows there are no results yet\n if (!input.productId) {\n return undefined;\n }\n\n if (((!input.radius && input.radius !== 0) || !input.latitude || !input.longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.latitude,\n Longitude: input.longitude,\n Radius: input.radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n\n return getEstimatedAvailabilityAsync({callerContext: ctx}, {ProductIds: [input.productId], SearchArea: searchArea, DefaultWarehouseOnly:false, FilterByChannelFulfillmentGroup: true})\n .then(async (productWarehouseInformation: ProductWarehouseInventoryInformation) => {\n const productInventoryInformation = mapProductInventoryInformation(ctx, productWarehouseInformation?.ProductWarehouseInventoryAvailabilities);\n return getOrgUnitLocationsByAreaAsync({callerContext: ctx}, searchArea)\n .then(async (stores: OrgUnitLocation[]) => {\n // Constructing a store mapping based on the InventoryId.\n const storeMap = new Map();\n stores.forEach(store => {\n if(store.InventoryLocationId) {\n storeMap.set(store.InventoryLocationId, store);\n }\n });\n\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n // if mulitple pickup mode is enable then call getchanneldeliveryoption\n if(retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n\n const availabilityPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(_channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId);\n return _getAvailabilityWithHours(store, productInventoryInformation, storeMap,ctx, locationDeliveryOption);\n });\n\n return Promise.all(availabilityPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby`);\n return [];\n });\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.`);\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information along with store hours and product availability\n * @param orgUnitLocation The org unit location\n * @param productWarehouseInventoryInformation The product ware house information\n * @param storeMap a map that contains store information group by the inventory location id\n * @param ctx The action context\n */\nasync function _getAvailabilityWithHours(\n orgUnitLocation: OrgUnitLocation,\n productInventoryInformation: IProductInventoryInformation[],\n storeMap: Map,\n ctx: IActionContext, channelDeleiveryOptions: ChannelDeliveryOption | undefined): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx}, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n const itemAvailabilities: ItemAvailability[] = [];\n if(productInventoryInformation\n && storeMap) {\n productInventoryInformation.forEach(element => {\n if(element.InventLocationId && storeMap.has(element.InventLocationId) && element.InventLocationId === orgUnitLocation.InventoryLocationId) {\n itemAvailabilities.push({AvailableQuantity:element.ProductAvailableQuantity?.AvailableQuantity});\n }\n });\n }\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation,\n ItemAvailabilities: itemAvailabilities\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, ProductInventoryInformation: productInventoryInformation, OrgUnitPickUpDeliveryModes : channelDeleiveryOptions };\n }\n\n return { OrgUnitAvailability: availability, ProductInventoryInformation: productInventoryInformation, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] error getting availability with hours`);\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the channel delivery option information\n * @param channelCollection The org unit channel Id list\n * @param ctx The action context\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number| undefined)[],\n ctx: IActionContext): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if(id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // to get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync({ callerContext: ctx }, channelIdList, 4)\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options`);\n return [];\n });\n}\n\n/**\n * The complete getFullAvailableInventoryNearby data action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-available-inventory-nearby',\n action: >getFullAvailableInventoryNearbyAction,\n input: createGetFullAvailableInventoryNearbyInput\n});","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\n\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from './index';\n\n/**\n * Input class for getActiveWishlistItems data action\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => `ActiveWishlistItems`;\n public getCacheObjectType = () => 'ActiveWishlistItems';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if(ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync({ callerContext: ctx, queryResultSettings: {} }, null);\n\n if(wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n if(wishlists[0].CommerceListLines) {\n wishlists[0].CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if(commerceListLine.ProductId) {\n productInputs.push(new FullProductInput(commerceListLine.ProductId, ctx.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(ctx)));\n }\n });\n }\n\n if(productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getActiveWishlistItems]Unable to hydrate cart with product information`);\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n } else {\n ctx.trace('No productIds found for wishlist');\n }\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings, ICreateActionContext, isEmptyOrNullObject\n} from '@msdyn365-commerce/core';\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport {\n getCardPaymentAcceptPointAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n CardPaymentAcceptPoint\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport get from 'lodash/get';\n\nexport interface IGetCardPaymentAcceptPointInput {\n showBillingAddress?: boolean;\n paymenTenderType?: string;\n apiSettings: ICommerceApiSettings;\n}\n\n/**\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint\n */\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\n public showBillingAddress?: boolean;\n public paymenTenderType?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(input: IGetCardPaymentAcceptPointInput) {\n this.showBillingAddress = input.showBillingAddress;\n this.paymenTenderType = input.paymenTenderType;\n this.apiSettings = input.apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CardPaymentAcceptPoint${this.paymenTenderType ? `-${this.paymenTenderType}` : ''}`, this.apiSettings);\n public getCacheObjectType = () => `CardPaymentAcceptPoint`;\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createCheckoutPaymentInstrumentInput = (inputData: ICreateActionContext) => {\n // @ts-ignore\n const { showBillingAddress, paymenTenderType } = inputData.config;\n const getCardPaymentAcceptPointInput = {\n showBillingAddres: showBillingAddress,\n paymenTenderType: paymenTenderType,\n apiSettings: inputData.requestContext.apiSettings\n };\n\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\n */\nexport async function getCardPaymentAcceptPointAction(\n input: GetCardPaymentAcceptPointInput,\n ctx: IActionContext\n): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\n }\n\n const { showBillingAddress, paymenTenderType } = input;\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n if (\n isEmptyOrNullObject(checkoutState) ||\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\n ) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\n }\n\n if (!checkoutState.checkoutCart.cart.CartLines || !checkoutState.checkoutCart.cart.CartLines.length) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\n throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\n }\n\n const requestUrl =\n typeof ctx.requestContext.url.requestUrl === 'string'\n ? new URL(ctx.requestContext.url.requestUrl)\n : ctx.requestContext.url.requestUrl;\n const origin = get(window, 'location.origin') || requestUrl.origin;\n\n const cardPaymentAcceptSettings = {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\n HostPageOrigin: origin,\n AdaptorPath: `${origin}/Connectors/` || origin,\n CardPaymentEnabled: false,\n CardTokenizationEnabled: true,\n ...(!showBillingAddress && { HideBillingAddress: true }),\n ...(paymenTenderType && { TenderTypeId: paymenTenderType }),\n PaymentAmount: 0\n };\n\n return getCardPaymentAcceptPointAsync(\n { callerContext: ctx, bypassCache: 'get' },\n checkoutState.checkoutCart.cart.Id,\n cardPaymentAcceptSettings,\n []\n )\n .then(cardPaymentAcceptPoint => {\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\n throw new Error(\n '[getCardPaymentAcceptPointAction] Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\n );\n }\n return cardPaymentAcceptPoint;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\n throw error;\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce/checkout-payment-instrument/get-card-payment-accept-point',\n action: >getCardPaymentAcceptPointAction,\n input: createCheckoutPaymentInstrumentInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProjectionDomain, SimpleProduct, AffiliationLoyaltyTier, CustomerAffiliation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput, getCustomer } from './index';\n\nimport * as semver from 'semver';\nimport { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the GetPriceForSelectedVariant Data Action\n */\nexport class PriceForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public selectedProduct: SimpleProduct | undefined;\n public customerId?: string;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n }\n\n public getCacheKey = () => `PriceForSelectedVariant`;\n public getCacheObjectType = () => 'Price';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the GetPriceForSelectedVariantDataAction\n * @param inputData The input data for the createInput method\n */\nexport const createActivePriceForSelectedVariantInput = (inputData: ICreateActionContext>): PriceForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new PriceForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined);\n } else {\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The Action Method for the GetPriceForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's current contextual price\n * via the getActivePrice RetailServer API\n */\nexport async function getPriceForSelectedVariantAction(\n input: PriceForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n let affliations:AffiliationLoyaltyTier[] = [];\n if(ctx.requestContext && ctx.requestContext.user && ctx.requestContext.user.isAuthenticated)\n {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings);\n const customer = await getCustomer(customerInput, ctx);\n if(customer && customer.CustomerAffiliations)\n {\n customer.CustomerAffiliations.forEach((affliation: CustomerAffiliation) => {\n var aff:AffiliationLoyaltyTier = {AffiliationId:affliation.RetailAffiliationId, CustomerId: customer.AccountNumber}\n affliations.push(aff);\n \n });\n }\n }\n return Promise.resolve()\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: +ctx.requestContext.apiSettings.catalogId };\n\n const activeProduct: SimpleProduct | undefined = productResult; \n if (activeProduct) {\n \n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n projectDomain,\n [activeProduct.RecordId],\n new Date(),\n input.customerId || null,\n affliations,\n true\n // @ts-ignore\n ).then(response => {\n if(response && response.length > 0) {\n const productPrice = response[0];\n\n // If RS Verison < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (semver.lt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n\n return productPrice;\n }\n throw new Error('[getPriceForSelectedVariantAction]Invalid response recieved from calculateProductPrice');\n });\n }\n\n return null;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getPriceForSelectedVariantAction]Error executing action`);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-price-for-selected-variant',\n action: >getPriceForSelectedVariantAction,\n input: createActivePriceForSelectedVariantInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getByIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { IProductInfo } from '@msdyn365-commerce/telemetry-internal';\n\n/**\n * Converts cart line products into promise of array of product info\n * @param cartLines Cart Lines with product info to collect\n * @param actionContext Action context\n * @returns Array of product info\n */\nexport const getProductInfoFromCartLinesAsync = async (cartLines: CartLine[], actionContext: IActionContext): Promise => {\n if (actionContext.requestContext.channel === undefined) {\n throw new Error('Unable to make product call, channel ID not provided');\n }\n\n const productPromises: Promise[] = [];\n\n // Call GetById API for all products in cartLines\n for (let i = 0; i < cartLines.length; i++) {\n const cartLine: CartLine = cartLines[i];\n\n if (cartLine.ProductId) {\n // The product id in cartLine actually contains recordId and not master product id so we can use it up here to lookup product.\n productPromises.push(\n getByIdAsync({ callerContext: actionContext }, cartLine.ProductId, actionContext.requestContext.channel.RecordId).then(\n result => {\n // Construct basic IProductInfo object for product\n const productInfo = getProductInfoFromSimpleProduct(result);\n\n // Attach fields from the CartLine\n productInfo.productPrice = cartLine.Price ? cartLine.Price.toString() : '';\n productInfo.productQuantity = cartLine.Quantity ? cartLine.Quantity.toString() : '';\n\n return productInfo;\n },\n reason => {\n throw new Error(`Failed to get product details for product ${cartLine.ProductId}.\\n${reason}`);\n }\n )\n );\n }\n }\n\n // Return promise for array of product results\n return Promise.all(productPromises);\n};\n\n/**\n * Converts a SimpleProduct object into an IProductInfo object\n * @param simpleProduct Simple Product object\n * @returns Populated IProductInfo\n */\nexport const getProductInfoFromSimpleProduct = (simpleProduct: SimpleProduct): IProductInfo => {\n const recordId = simpleProduct.RecordId || '';\n\n return {\n // If master product id is not available then product record id is master product id\n productId: simpleProduct.MasterProductId ? simpleProduct.MasterProductId.toString() : recordId.toString(),\n productSku: recordId ? recordId.toString() : '',\n productName: simpleProduct.Name || simpleProduct.Description || '',\n productPrice: simpleProduct.Price ? simpleProduct.Price.toString() : '',\n productChannelId: '', // Not needed for each product, sent as part of all events\n productChannelName: '',\n productCategoryId: '',\n productCategoryName: '',\n productQuantity: '', // Cannot be deteremined from SimpleProduct, will be added from CartLine later\n productCurrency: '' // Not needed for each product, sent as part of all events with product data\n };\n};\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { generateProductImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport MsDyn365, { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { AsyncResult, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport {\r\n BaseCollectionInput,\r\n createBaseCollectionInput\r\n} from './base-collection-action';\r\nimport { sortColumName } from './get-mapped-search-configuration';\r\nimport { IFullProductsSearchResultsWithCount } from './IFullProductsSearchResultsWithCount';\r\nimport { ListPageStateInput } from './list-page-state';\r\n\r\n/**\r\n * GetFullProductsByCollection Action Input\r\n */\r\nexport class GetFullProductsByCollectionInput extends BaseCollectionInput implements IActionInput {\r\n public getCacheObjectType = () => 'FullProductSearchResult';\r\n public dataCacheType = () => {\r\n if (\r\n this.pageType !== 'Category' ||\r\n (this.refiners && this.refiners.length > 0) ||\r\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\r\n ) {\r\n return 'request';\r\n } else {\r\n return 'application';\r\n }\r\n };\r\n}\r\n\r\n/*export interface IFullProductsSearchResultsWithCount {\r\n products: FullProductSearchResult[];\r\n count: number;\r\n}*/\r\n\r\n/**\r\n * createInput function which creates and actionInput used to fetch products for a list page.\r\n */\r\n\r\ninterface IInputArgs {\r\n itemsPerPage: number;\r\n showSortBy: boolean;\r\n showSortingByRelevance: boolean;\r\n showSortingByName: boolean;\r\n showSortingByPrice: boolean;\r\n showSortingByRating: boolean;\r\n}\r\n\r\nconst createInput = (args: ICreateActionContext): IActionInput => {\r\n const input = createBaseCollectionInput(args, GetFullProductsByCollectionInput);\r\n\r\n // Set Top\r\n if (input.queryResultSettings.Paging && args.config) {\r\n input.queryResultSettings.Paging.Top = args.config.itemsPerPage || 1;\r\n }\r\n\r\n // Set Skip\r\n if (input.queryResultSettings.Paging && args.requestContext.query && args.requestContext.query.skip) {\r\n input.queryResultSettings.Paging.Skip = +args.requestContext.query.skip;\r\n }\r\n\r\n if (args.config!.showSortBy && input.queryResultSettings.Sorting && input.queryResultSettings.Sorting.Columns === undefined) {\r\n\r\n let sortName:string = '';\r\n if(args.config!.showSortingByRelevance) {\r\n sortName = sortColumName.ranking;\r\n } else if(args.config!.showSortingByName) {\r\n sortName = sortColumName.name;\r\n } else if(args.config!.showSortingByPrice) {\r\n sortName = sortColumName.price;\r\n } else if(args.config!.showSortingByRating) {\r\n sortName = sortColumName.averageRating;\r\n }\r\n\r\n if(sortName) {\r\n input.queryResultSettings.Sorting = { Columns : [\r\n {\r\n ColumnName: sortName\r\n }\r\n ]};\r\n }\r\n }\r\n\r\n input.queryResultSettings.count = true;\r\n\r\n return input;\r\n};\r\n\r\n/**\r\n * Action function to fetch products for a list page\r\n */\r\nasync function action(\r\n input: GetFullProductsByCollectionInput,\r\n ctx: IActionContext\r\n): Promise {\r\n let promise: AsyncResult;\r\n const searchCriteriaInput: ProductSearchCriteria = {};\r\n searchCriteriaInput.Context = { ChannelId: ctx.requestContext.apiSettings.channelId, CatalogId: ctx.requestContext.apiSettings.catalogId };\r\n searchCriteriaInput.Refinement = input.refiners;\r\n searchCriteriaInput.IncludeAttributes = true;\r\n\r\n if (input.pageType === 'Category' || (ctx.requestContext.query && ctx.requestContext.query.categoryId)) {\r\n if (input.category) {\r\n searchCriteriaInput.CategoryIds = [input.category || 0];\r\n promise = searchByCriteriaAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: input.queryResultSettings\r\n },\r\n searchCriteriaInput\r\n );\r\n } else {\r\n throw new Error(\r\n '[GetFullProductsForCollection]Category Page Detected, but no global categoryId found'\r\n );\r\n }\r\n } else {\r\n if (input.searchText) {\r\n searchCriteriaInput.SearchCondition = input.searchText;\r\n promise = searchByCriteriaAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: input.queryResultSettings\r\n },\r\n searchCriteriaInput\r\n );\r\n } else {\r\n throw new Error(\r\n '[GetFullProductsForCollection]Search Page Detected, but no q= query parameter found'\r\n );\r\n }\r\n }\r\n\r\n const productSearchResults = await promise;\r\n\r\n const mappedProducts = productSearchResults.map(productSearchResult => {\r\n const newImageUrl = generateProductImageUrl(\r\n productSearchResult,\r\n ctx.requestContext.apiSettings\r\n );\r\n\r\n if (newImageUrl) {\r\n productSearchResult.PrimaryImageUrl = newImageUrl;\r\n }\r\n\r\n return (productSearchResult);\r\n });\r\n\r\n // Update ListPageState For SSR\r\n if (!MsDyn365.isBrowser) {\r\n ctx.update(new ListPageStateInput(), { totalProductCount: promise.metadata.count || 0, activeFilters: input.refiners });\r\n }\r\n\r\n return {\r\n products: mappedProducts,\r\n count: promise.metadata.count || 0\r\n };\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n","import { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard?: TokenizedPaymentCard;\n @computed public get tokenizedPaymentCard(): Readonly {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine?: TenderLine;\n @computed public get tenderLine(): Readonly {\n return this._tenderLine;\n }\n\n @observable private _billingAddress?: Address;\n @computed public get billingAddress(): Readonly
{\n return this._billingAddress;\n }\n\n @observable private _shippingAddress?: Address;\n @computed public get shippingAddress(): Readonly
{\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix?: string;\n @computed public get cardPrefix(): Readonly {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n @computed public get giftCards(): Readonly {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n @computed public get giftCardExtends(): Readonly {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n @computed public get loyaltyCardNumber(): Readonly {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n @computed public get loyaltyAmount(): Readonly {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n @computed public get guestCheckoutEmail(): Readonly {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n @computed public get isTermsAndConditionAccepted(): Readonly {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n @computed public get customerAccountAmount(): Readonly {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine?: TenderLine): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","import msdyn365Commerce, { IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\n\nexport function parameterize(name: string = '', sep = '-', parameterizeFeatureFlags:IParameterizeFeatureFlags = {}, neutralizedName?:string) {\n // if neutralizedName flag enabled, we use neutralizedName to construct string\n const candidateName = (msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlLocalization || parameterizeFeatureFlags.enableUrlLocalization)? name: neutralizedName || name;\n /*\n 1\t‘ ‘ (space)\t-> (single dash)\n 3\tAny character disallowed in URLs -> URL-encode\n 5\t‘ & ‘ (space ampersand space) -> (single dash)\n 6\t‘ - ‘ (space dash space) -> (single dash)\n 7\t‘ ‘ (2+ spaces) -> (single dash)\n 10\t[A-Z] (capital letters) -> [a-z] (lower-case)\n 12\tAny non-ASCII character outside of the set of disallowed characters -> URL-encode\n */\n if (parameterizeFeatureFlags.enableUrlEncoding || msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlEncoding) {\n // replace url reserved characters with dash, and remove front and end dash;\n // &*!() reserved characters that can not be encoded by encodeURIComponent()\n return encodeURIComponent(candidateName.toLowerCase().replace(/[\\s&*!()']+/g, '-').trim().replace(/\\-+/g, '-').replace(/^\\-+|\\-+$/g, ''));\n }\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\-_]+/g, ' ')\n .trim()\n .replace(/\\s+/g, sep);\n}\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getParameterizeFeatureFlags, getUrlSync, IActionContext, IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\nimport { parameterize } from './parameterize';\n\ninterface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Builds slugs for category\n */\nexport function getCategorySlug(category: CategoryHierarchy, categoryMap: ICategoryMap, parameterizeFeatureFlags?:IParameterizeFeatureFlags): string {\n if (!category || !category.Name) {\n // invalid category\n return '';\n }\n const categoryName = parameterize(category.Name, undefined, parameterizeFeatureFlags, category.NeutralizedName);\n if (!category.ParentCategory || category.ParentCategory === 0) {\n // base case assign url\n category.Slug = category.Slug || `/${categoryName}`;\n } else if (category.ParentCategory) {\n category.Slug = category.Slug || `${getCategorySlug(categoryMap[category.ParentCategory], categoryMap, parameterizeFeatureFlags)}/${categoryName}`;\n }\n\n return category.Slug || '';\n}\n\n/**\n * Gets Url for category hierarchy. Returns string and adds url to Url property of category hierarchy\n * @param category Category to generate URL for\n * @param categoryMap Dictionary of all categories\n */\nexport function getCategoryUrl(category: CategoryHierarchy, ctx?: IActionContext, categoryMap?: ICategoryMap): string | undefined {\n if (!category.Url && ctx && categoryMap) {\n if (!category.Slug) {\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = ctx.requestContext? getParameterizeFeatureFlags(ctx):{};\n category.Slug = getCategorySlug(category, categoryMap, parameterizeFeatureFlags);\n }\n category.Url = getUrlSync('category', ctx, { category });\n }\n return category.Url;\n}\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Syncronously creates a product url\n * @param product Simple product to get url from\n * @param category Category to add to product url\n */\nexport function getProductUrlSync(product: SimpleProduct, ctx: IActionContext, category?: CategoryHierarchy): string {\n const selectedProduct = { ...product, RecordId: product.MasterProductId || product.RecordId };\n\n return getProductPageUrlSync(selectedProduct.Name || '', selectedProduct.RecordId, ctx, category)!;\n}\n\n/**\n * Syncronously creates a product detail page url\n * @param name Simple product name\n * @param recordId Record id of product\n */\nexport function getProductPageUrlSync(name: string, recordId: number, ctx: IActionContext, category?: CategoryHierarchy): string {\n return getUrlSync('product', ctx, {\n product: {Name: name || '', RecordId: recordId},\n category\n })!;\n}","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, LoyaltyCard, LoyaltyPointRedemptionEstimate } from '@msdyn365-commerce/retail-proxy';\nimport { getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { getLoyalty, GetLoyaltyCardInput } from './index';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the getLoyaltyCard data action\n */\nexport class GetLoyaltyTransactionEstimationInput implements IActionInput {\n public userAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCardTransactionEstimation-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetLoyaltyCardTransactionEstimation';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the getLoyaltyCard method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetLoyaltyTransactionEstimationInput = (inputData: ICreateActionContext): GetLoyaltyTransactionEstimationInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n }\n\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getLoyaltyTransactionEstimationAction(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n\n if (! ctx.requestContext.user.isAuthenticated) {\n return {};\n }\n\n const promises: [Promise,Promise, Promise] = [ _getCart(ctx), _getLoyalty(input, ctx), _getOrgUnits(ctx) ];\n return Promise.all(promises)\n .then((result) => {\n if(result && result.length >=2 && result[1].CardNumber)\n {\n return getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync({ callerContext: ctx }, result[0].Id, result[1].CardNumber!, result[2].Currency || '')\n .then(points => {\n return points;\n })\n .catch(e => {\n ctx.telemetry.exception(e);\n ctx.telemetry.debug(`Error getting Loyalty Point Redemption Estimate`);\n throw new Error('Error getting Loyalty Point Redemption Estimate');\n });\n }\n return {};\n })\n .catch(e => {\n return {};\n });\n}\n\nasync function _getCart(ctx: IActionContext): Promise {\n const cartState = await getCartState(ctx);\n\n return cartState.cart;\n}\n\nasync function _getLoyalty(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyalty(loyaltyCardInput, ctx);\n}\n\nasync function _getOrgUnits(ctx: IActionContext): Promise {\n return getOrgUnitConfigurationAsync({callerContext: ctx, queryResultSettings: {}});\n}\n\n/**\n * The getLoyaltyTransactionEstimation data action\n * Returns the loyalty card belonging to the customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-transaction-estimation',\n action: >getLoyaltyTransactionEstimationAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyTransactionEstimationInput\n});\n","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\nimport {\n createReadAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\nexport interface IAddressManagementData {\n address: Address;\n}\nexport interface IAddressManagementInput extends IActionInput {\n address: Address;\n userAccountNumber?: string;\n}\n/**\n* The input class for the addAddress data action\n*/\nexport class AddressManagementInput implements IAddressManagementInput {\n public address: Address;\n public userAccountNumber?: string;\n\n constructor(address: Address, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.address = address;\n }\n\n public getCacheKey = () => 'AddAddress';\n public getCacheObjectType = () => 'AddAddress';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n* The createInput method for the addAddress data action\n* @param inputData The input data passed to the createInput method\n*/\nexport const createAddressManagementInput = (\n inputData: ICreateActionContext, IAddressManagementData>\n): IAddressManagementInput => {\n if (inputData.requestContext.user.isAuthenticated) {\n throw new Error('User is not authenticated. Cannot call UpdateAddress API');\n }\n\n const { address } = inputData.data || { address: undefined };\n\n if (!address) {\n throw new Error('address is not provided. Cannot call UpdateAddress API');\n }\n\n return new AddressManagementInput(address);\n};\n\nexport async function doAddressManagementOperation(\n input: IAddressManagementInput,\n ctx: IActionContext,\n operationHandler: (customer: Customer, address: Address) => Customer\n): Promise {\n const { userAccountNumber, address } = input;\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to create customer');\n }\n\n const newCustomer = operationHandler({ ...customer }, address);\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Not able to update customer');\n }\n\n ctx.update(createReadAsync(updatedCustomer.AccountNumber), updatedCustomer);\n\n return updatedCustomer.Addresses || [];\n}\n\nexport function addAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = [...(customer.Addresses || [])];\n customer.Addresses.push(address);\n return customer;\n}\n\nexport async function addAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, addAddressHandler);\n}\n\n/**\n* The addAddress data action\n* Calls the read RetailServer API to get information about a customer\n* Adds the passed address information to the retireved customer, and\n* then updates that customer via the update RetailServer API.\n*/\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-address',\n action: >addAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { createBusinessPartnerUserAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n/**\n * Input class for addOrganizationUser data action\n */\nexport class AddOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => `AddOrganizationUser`;\n public getCacheObjectType = () => 'AddOrganizationUser';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for addOrganizationUser data action\n */\nexport const createAddOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new AddOrganizationUserInput(newUser);\n};\n\n/**\n * The addOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser\n */\nexport async function addOrganizationUser(input: AddOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return getCurrentAsync({ callerContext: ctx })\n .then((businessPartner: BusinessPartner) => {\n // set the new accounts businessPartnerId from the admin account\n user.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n return createBusinessPartnerUserAsync({ callerContext: ctx}, user)\n .then(newUser => {\n return newUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[add-organization-user] Unable to create BusinessPartnerUser account');\n throw new Error('[add-organization-user] Unable to create BusinessPartnerUser account');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[add-organization-user] Unable to get BusinessPartner Admin account');\n throw new Error('[add-organization-user] Unable to get BusinessPartner Admin account');\n });\n}\n\n/**\n * The addOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and adds that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-organization-user',\n action: >addOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createAddOrganizationUserInput),\n});","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IHTTPRequestOptions,\n IHTTPResponse,\n sendCommerceRequest\n} from '@msdyn365-commerce/core';\nimport { Address, CartTenderLine, SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Check Out action Input\n */\nexport class CheckOutInput implements IActionInput {\n public cartId: string;\n public cartVersion: number;\n public receiptEmail?: string;\n public cartTenderLines?: CartTenderLine[];\n public billingAddress?: Address;\n\n constructor(cartId: string, cartVersion: number, receiptEmail?: string, cartTenderLines?: CartTenderLine[], billingAddress?: Address) {\n this.cartId = cartId;\n this.cartVersion = cartVersion;\n this.receiptEmail = receiptEmail;\n this.cartTenderLines = cartTenderLines;\n this.billingAddress = billingAddress;\n }\n\n public getCacheKey = () => `${this.cartId}-${this.cartVersion}`;\n public getCacheObjectType = () => 'CheckOut';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail API to check out and returns sales order\n */\nexport async function checkOutAction(input: CheckOutInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n const requestUrl = `${apiSettings.baseUrl}Commerce/Carts('${input.cartId}')/Checkout?api-version=7.3`;\n const requestOptions: IHTTPRequestOptions = {\n headers: {\n oun: apiSettings.oun,\n 'Content-Type': 'application/json'\n }\n };\n\n if (requestOptions.headers && ctx.requestContext.user.token) {\n requestOptions.headers.Authorization = `id_token ${ctx.requestContext.user.token}`;\n }\n\n if (input.cartTenderLines && input.cartTenderLines.length) {\n input.cartTenderLines = input.cartTenderLines.map((cartTenderLineItem: CartTenderLine) => {\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem['@odata.type'] = '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine';\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem['Amount@odata.type'] = '#Decimal';\n\n if (cartTenderLineItem.TokenizedPaymentCard) {\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem.TokenizedPaymentCard['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard';\n\n // Force the House prop to be set, so that call succeeds\n // @ts-ignore: House prop not yet typed\n if (!cartTenderLineItem.TokenizedPaymentCard.House) {\n // @ts-ignore: House prop not yet typed\n cartTenderLineItem.TokenizedPaymentCard.House = 'N/A';\n }\n\n if (cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo) {\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo';\n }\n\n if (input.billingAddress) {\n const { Phone, ThreeLetterISORegionName = '', Street, City, State, ZipCode } = input.billingAddress;\n cartTenderLineItem.TokenizedPaymentCard = {\n ...cartTenderLineItem.TokenizedPaymentCard,\n Phone,\n Country: ThreeLetterISORegionName.toUpperCase(),\n Address1: Street,\n City,\n State,\n Zip: ZipCode\n };\n }\n }\n\n return cartTenderLineItem;\n });\n }\n\n const requestBody = {\n receiptEmail: input.receiptEmail,\n cartVersion: input.cartVersion || null,\n ...(input.cartTenderLines && { cartTenderLines: input.cartTenderLines })\n };\n\n // Perform check-out operation\n return sendCommerceRequest(requestUrl, 'post', requestBody, requestOptions).then((response: IHTTPResponse) => {\n if (response.status >= 200 && response.status < 300 && response.data) {\n return response.data;\n } else if (response.data) {\n throw response.data;\n }\n throw new Error('[checkOutAction] Invalid response recieved from RetailServer');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/checkout',\n action: >checkOutAction\n});\n","import { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\nexport function deleteAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId)];\n return customer;\n}\n\nexport async function deleteAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, deleteAddressHandler);\n}\n\n/**\n * The deleteAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Removes all address information from the retireved customer, and\n * then updates that customer via the update RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-address',\n action: >deleteAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser, NullResult } from '@msdyn365-commerce/retail-proxy';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n/**\n * Input class for DeleteOrganizationUser data action\n */\nexport class DeleteOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => `DeleteOrganizationUser`;\n public getCacheObjectType = () => 'DeleteOrganizationUser';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for DeleteOrganizationUser data action\n */\nexport const createDeleteOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new DeleteOrganizationUserInput(newUser);\n};\n\n/**\n * The DeleteOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser\n */\nexport async function deleteOrganizationUser(input: DeleteOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return deleteAsync({ callerContext: ctx}, user)\n .catch(error => {\n console.log(error);\n ctx.telemetry.debug('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n throw new Error('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n });\n}\n\n/**\n * The DeleteOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and Deletes that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-organization-user',\n action: >deleteOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createDeleteOrganizationUserInput),\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n/**\n * Input class for edit organization user data action\n */\nexport class EditOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => `EditOrganizationUser`;\n public getCacheObjectType = () => 'EditOrganizationUser';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for edit organization user data action\n */\nexport const createEditOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n \n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new EditOrganizationUserInput(newUser);\n};\n\nexport async function editOrganizationUser(input: EditOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return updateAsync({ callerContext: ctx}, user)\n .then(updatedUser => {\n return updatedUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n throw new Error('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n });\n}\n\n/**\n * The EditOrganizationUser data action\n * Takes in an instance of a BusinessPartnerUser and updates the\n * same user with the new information.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/Edit-organization-user',\n action: >editOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createEditOrganizationUserInput),\n});","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core';\n\n/**\n * Generic input type for use with generic data actions\n */\nexport class GenericInput implements IActionInput {\n public result: T;\n public cacheKey: string;\n public cacheObjectType: string;\n\n constructor(cacheKey: string, result: T, cacheObjectType: string) {\n this.cacheKey = cacheKey;\n this.cacheObjectType = cacheObjectType;\n this.result = result;\n }\n\n public getCacheKey = () => `Generic-${this.cacheKey}`;\n public getCacheObjectType = () => `${this.cacheObjectType}`;\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Generic data action that is just used for passing data around the app\n *\n * Note that this doesn't actually expose a data action, its just a base action\n * that others can use to create a data action with their own input\n */\nexport async function getGenericAction(input: GenericInput, ctx: IActionContext): Promise {\n return input.result;\n}\n","import { IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { LoyaltyCard, retailAction } from '@msdyn365-commerce/retail-proxy';\nimport { createGetCustomerLoyaltyCardsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createCustomerLoyaltyCardsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetCustomerLoyaltyCardsInput({}, null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-loyalty-cards',\n action: >retailAction,\n input: createCustomerLoyaltyCardsInput\n});\n","import { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductDetailsCriteria } from './get-full-products';\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getRefinedFullProducts, IRefinableProductsInput } from './utilities/refiner-utils';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Input for refining products returned by the search text.\n */\nexport class FullProductsRefineSearchByTextInput implements IActionInput, IRefinableProductsInput {\n public readonly searchText: string;\n public readonly channelId?: number;\n public readonly refinementCriteria: ProductRefinerValue[];\n public readonly itemsPerPage?: number;\n public readonly skipCount?: number;\n public readonly catalogId: number;\n public productDetailsCriteria?: ProductDetailsCriteria;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n searchText?: string,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.searchText = searchText || '';\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId || 0;\n this.productDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => `FullProductsRefineSearchByTextInputCache`;\n public getCacheObjectType = () => 'FullProductsRefineSearchByTextInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls\n */\nexport const createFullProductsRefineSearchByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByTextInput(queryResultSettingsProxy);\n }\n\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n\n return new FullProductsRefineSearchByTextInput(\n queryResultSettingsProxy,\n searchInputData.q,\n searchInputData.channelId,\n refinementCriteria,\n catalogId,\n productDetailsCriteria\n );\n};\n\n/**\n * Calls the refine-search-by-text action.\n * Based on search result calls get-full-products to get all the product details.\n */\nexport function getFullProductsByRefineSearchTextAction(\n input: FullProductsRefineSearchByTextInput,\n ctx: IActionContext\n): Promise {\n return getRefinedFullProducts(\n input,\n ctx,\n // @ts-ignore: Promise.then typing conflict\n () => {\n return refineSearchByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId,\n input.searchText,\n input.refinementCriteria);\n }\n );\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-text',\n action: >getFullProductsByRefineSearchTextAction,\n input: createFullProductsRefineSearchByTextInput,\n isBatched: false\n});\n","import { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from '../get-full-products';\n\n/**\n * Common refinable products input includes both product detail criteria and refinement criteria.\n */\nexport interface IRefinableProductsInput {\n refinementCriteria: ProductRefinerValue[];\n productDetailsCriteria?: ProductDetailsCriteria;\n}\n\n/**\n * If refinement criteria is set, then gets refined products.\n * @param input refinable products input\n * @param ctx action context\n * @param getRefinedProducts callback function to get a promise (e.g. refineSearchByCategoryAsync, refineSearchByTextAsync)\n * that is executed to get refined products or full set of products.\n */\nexport async function getRefinedFullProducts(\n input: IRefinableProductsInput,\n ctx: IActionContext,\n getRefinedProducts: () => Promise\n): Promise {\n\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n if (!input.refinementCriteria.length) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] No refiners specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let fullProductInputs: FullProductInput[] = [];\n\n const searchResults = await getRefinedProducts();\n if (!searchResults) {\n ctx.telemetry.error('[getFullProductsByRefineSearchCategoryAction] no searchResults returned');\n } else {\n fullProductInputs = searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.productDetailsCriteria || new ProductDetailsCriteria());\n }\n );\n }\n\n if (fullProductInputs.length) {\n const productResult = await getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria: input.refinementCriteria\n };\n } else {\n return {\n productSearchResult: [],\n refinementCriteria: input.refinementCriteria\n };\n }\n}","import { Image, ISubList, List } from '@msdyn365-commerce-modules/data-types';\nimport { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\nimport GetProducts, { ProductInput } from './get-simple-products';\n\n/**\n * List Input action\n */\nexport class ListInput implements IActionInput {\n public DocumentId: string;\n public Title: string;\n public Description: string;\n public ShortDescription: string;\n public BackgroundColor: string;\n public ForegroundColor: string;\n public Images: Image[];\n public Items: (IProductItem[] | ISubList)[];\n public ProductItems: IProductItem[];\n public ItemsCount: number;\n public ItemsPerPage: number;\n public SkipCount: number;\n\n constructor(\n documentId: string,\n title: string,\n description: string,\n shortDescription: string,\n backgroundColor: string,\n foregroundColor: string,\n images: Image[],\n items: (IProductItem[] | ISubList)[],\n productItems: IProductItem[],\n itemsCount: number,\n itemsPerPage: number,\n skipCount: number\n ) {\n this.DocumentId = documentId;\n this.Title = title;\n this.Description = description;\n this.ShortDescription = shortDescription;\n this.BackgroundColor = backgroundColor;\n this.ForegroundColor = foregroundColor;\n this.Images = images;\n this.Items = items;\n this.ProductItems = productItems;\n this.ItemsCount = itemsCount;\n this.ItemsPerPage = itemsPerPage;\n this.SkipCount = skipCount;\n }\n\n public shouldCacheOutput = () => true;\n public getCacheObjectType = () => 'LIST';\n public getCacheKey = () => `${this.DocumentId}-${this.ItemsCount}-${this.ItemsPerPage}-${this.SkipCount}`;\n}\n\nexport interface IProductItem {\n RecordId: string;\n CatalogId: string;\n}\n\n/**\n * List item type enum\n */\nconst enum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Calls to getSimpleProducts to get product array by ID's in list.\n */\nexport async function getListData(input: ListInput, ctx: IActionContext): Promise {\n ctx.trace(`List Title: ${input.Title}`);\n\n // @ts-ignore\n const { apiSettings } = ctx.requestContext;\n\n const sublists: (SimpleProduct | ISubList)[] = [];\n const result: List = {\n Title: input.Title,\n Description: input.Description,\n ShortDescription: input.ShortDescription,\n BackgroundColor: input.BackgroundColor,\n ForegroundColor: input.ForegroundColor,\n Items: sublists,\n ItemsCount: input.ItemsCount\n };\n\n if (input && input.Items && input.Items.length) {\n // get all products\n let products: SimpleProduct[] = [];\n if (input.ProductItems && input.ProductItems.length) {\n const inputArray = input.ProductItems.map(item => new ProductInput(+item.RecordId, apiSettings));\n products = await GetProducts(inputArray, ctx);\n }\n\n // build map from recordId to product, which will be used later when build the output.\n const productMap: { [recordId: string]: SimpleProduct } = {};\n products.forEach(item => {\n if (item) {\n productMap[`${item.RecordId}`] = item;\n }\n });\n\n for (const listitem of input.Items) {\n if (isSublist(listitem)) {\n result.Items.push(listitem);\n } else {\n listitem.forEach(item => {\n if (productMap[item.RecordId]) {\n result.Items.push(productMap[item.RecordId]);\n }\n });\n }\n }\n }\n\n return result;\n}\n\n/**\n * Check if an item is sublist.\n */\nfunction isSublist(listItem: IProductItem[] | ISubList): listItem is ISubList {\n return (listItem).Images !== undefined;\n}\n\n/**\n * Get images.\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get the url of sub list.\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if(!sitePath) {\n return `/${listName}.l`;\n }\n\n // sitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get input list data.\n */\nfunction getInutListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\n/**\n * Get sub list item.\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n // @ts-ignore\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount\n ? Number(inputData.requestContext.query.skipCount)\n : 0;\n}\n\n/**\n * Creates the input required to make the list call to get products.\n */\nconst createListInput = (inputData: ICreateActionContext, IGeneric>): IActionInput => {\n const listData: IGeneric = getInutListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // if any elements in product list, then copy it and add to list items\n if (!(productList.length === 0)) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // save the last portion of product items.\n if (!(productList.length === 0)) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-list',\n action: >getListData,\n input: createListInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { AsyncResult, MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport {\n generateImageUrl,\n getSelectedProductIdFromActionInput,\n getSelectedVariant,\n SelectedVariantInput\n} from './';\n\n/**\n * The action input class for the getMediaLocationsForSelectedVariant data action\n */\nexport class MediaLocationsForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public catalogId: number;\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.catalogId = catalogId || 0;\n this.selectedProduct = selectedProduct;\n }\n\n public getCacheKey = () => `MediaLocationsForSelectedVariant`;\n public getCacheObjectType = () => 'MediaLocations';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the getMediaLocationsForSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nexport const createMediaLocationsForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): MediaLocationsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new MediaLocationsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n } else {\n throw new Error('Unable to create MediaLocationsForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The action method for the getMediaLocationsForSelectedVariant data action\n */\nexport async function getMediaLocationsForSelectedVariantAction(\n input: MediaLocationsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n return AsyncResult.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n // @ts-ignore: Typing issues that will auto-resolve when SDK 1.4 publishes\n return >getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then(productResult => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getMediaLocationsAsync({ callerContext: ctx, queryResultSettings: {} }, activeProduct.RecordId, input.channelId, input.catalogId).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : activeProduct.Name;\n return mediaLocation;\n }\n );\n });\n }\n\n return [];\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[getMediaLocationsForSelectedVariantAction]Error executing action`);\n throw new Error('[getMediaLocationsForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The getMediaLocationsForSelectedVariant data action\n * Gets the currently selected variant for the page via the getSelectedVariant data action,\n * and then gets the media location information for the variant via the MediaLocations RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-for-selected-variant',\n action: >getMediaLocationsForSelectedVariantAction,\n input: createMediaLocationsForSelectedVariantInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrderShipmentsHistoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): IDataServiceRequest => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetOrderShipmentsHistoryInput({\n Paging: {\n Top: 100,\n Skip: 0\n }\n },\n //@ts-ignore\n null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-order-history',\n action: >retailAction,\n input: createInput\n});\n","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getOrderHistoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetOrganizationWideOrderHistory data action.\n */\nexport class GetOrganizationWideOrderHistoryInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetOrganizationWideOrderHistoryInput|${convertToString(this.queryResultSettings)}`;\n public getCacheObjectType = () => 'GetOrganizationWideOrderHistoryInput';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the GetOrganizationWideOrderHistory method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n */\nexport const getOrganizationWideOrderHistoryInput = (\n inputData: ICreateActionContext): GetOrganizationWideOrderHistoryInput => {\n\n if (!inputData?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrganizationWideOrderHistoryInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrganizationWideOrderHistory data action.\n * @param {GetOrganizationWideOrderHistory} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function getOrganizationWideOrderHistory(input: GetOrganizationWideOrderHistoryInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n if (!businessPartner) {\n throw new Error('Unable to get order history. Failed to retrieve business partner id.');\n }\n\n return getOrderHistoryAsync({ callerContext: context, queryResultSettings: input.queryResultSettings }, businessPartner.BusinessPartnerId);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-organization-wide-order-history',\n action: >getOrganizationWideOrderHistory,\n input: getOrganizationWideOrderHistoryInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport getProducts, { ProductInput } from './get-simple-products';\n\nimport { searchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Product by category ID Input action\n */\nexport class ProductsByCategoryInput implements IActionInput {\n public categoryId?: number;\n public categorySlug?: string;\n public categoryName?: string;\n public catalogId: number;\n public currentCategory: CurrentCategoryInput;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n private apiSettings: ICommerceApiSettings;\n\n constructor(category: CurrentCategoryInput, apiSettings: ICommerceApiSettings, queryResultSettingsProxy: QueryResultSettingsProxy) {\n this.apiSettings = apiSettings;\n this.currentCategory = category;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = apiSettings.catalogId;\n this.categoryId = category.categoryId;\n this.categorySlug = category.categorySlug;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n public getCacheObjectType = () => 'Products-From-Search';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * createInput method for the getProductsByCategory data aciton\n */\nexport const createGetProductsByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new ProductsByCategoryInput(\n currentCategory,\n inputData.requestContext.apiSettings,\n queryResultSettingsProxy\n );\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Action method for the getProductsByCategory data action\n */\nexport async function getProductsByCategoryAction(input: ProductsByCategoryInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getProductsByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n const productInputs = await searchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n +apiSettings.channelId,\n input.catalogId,\n categoryId || 0\n ).then(productSearchResults => {\n return productSearchResults.map(\n (product: ProductSearchResult): ProductInput => {\n return new ProductInput(product.RecordId, apiSettings);\n }\n );\n });\n\n if (productInputs.length > 0) {\n return await getProducts(productInputs, ctx);\n } else {\n return [];\n }\n}\n\n/**\n * The getProductsByCategory data action\n * Retrieves the current category of the request via the getCurrentCategory data action\n * Then calls the searchByCategory RetailServer API to get a list of products associated with\n * the current category, and finally fully hydrates the data for those prodcuts via the\n * getProducts data action, returning a list of SimpleProducts within the current category.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-by-category',\n action: >getProductsByCategoryAction,\n input: createGetProductsByCategoryInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { getAvailablePromotionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { buildCacheKey } from './index';\nimport {ActiveCartProductsInput, getActiveCartProductsAction} from './index';\n\n/**\n * Input class for promotion options for items in cart\n */\nexport class PromotionOptionsForCartLineItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCartLineItemsPromotionOptions`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCartLineItemsPromotionOptions';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new PromotionOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the promotion options for items in the cart\n */\nexport async function getPromotionOptionsForCartLineItems(input: PromotionOptionsForCartLineItems, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getPromotionOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n if(cartState.hasInvoiceLine) {\n ctx.trace('[getPromotionOptionsForCartLineItems] cart has invoice line');\n return [];\n }\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if(!cart || !cart.CartLines || !products || products.length === 0) {\n console.log('[getPromotionOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n ctx.trace('[getPromotionOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n const cartLineIds = cart.CartLines.map(c => c.LineId || '');\n\n return getAvailablePromotionsAsync({ callerContext: ctx, queryResultSettings: {}, bypassCache: 'get' }, cart.Id, cartLineIds || null)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getPromotionOptionsForCartLineItems]Error executing action`);\n throw new Error('[getPromotionOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-promotion-options-for-cartlines',\n action: >getPromotionOptionsForCartLineItems,\n input: createInput\n});\n","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * ReviewsGetRatingsSummary Input Action\n */\nexport class GetRatingsSummaryInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The ratings and reviews service endpoint\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n // RnR does not use RS endpoint, so shouldn't use buildCacheKey\n public getCacheKey = () => `${this.productId}-${this.tenantId}`;\n public getCacheObjectType = () => 'RatingsSummary';\n public dataCacheType = (): CacheType => 'application';\n}\n","import { IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\n\nimport { getRefinersByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Action Input class for the getRefinersByCategory data action\n */\nexport class RefinersByCategoryInput implements IActionInput {\n public readonly catalogId: number;\n public readonly currentCategory: CurrentCategoryInput;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n constructor(category: CurrentCategoryInput, queryResultSettingsProxy: QueryResultSettingsProxy, catalogId?: number) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.currentCategory = category;\n }\n\n public getCacheKey = () => `${this.currentCategory.getCacheKey()}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`;\n public getCacheObjectType = () => 'ProductRefiner';\n public shouldCacheOutput = () => true;\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createRefinersByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n\n return new RefinersByCategoryInput(\n currentCategory,\n QueryResultSettingsProxy.fromInputData(inputData),\n Number.isNaN(catalogId) ? 0 : catalogId\n );\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Calls the Retail API and returns all refiners by category\n */\nexport async function getRefinersByCategoryAction(input: RefinersByCategoryInput, ctx: IActionContext): Promise {\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getRefinersByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n return getRefinersByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n categoryId || 0\n );\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-category',\n action: >getRefinersByCategoryAction,\n input: createRefinersByCategoryInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\n\nimport { getRefinersByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the getRefinersByText data action\n */\nexport class RefinersByTextInput implements IActionInput {\n public readonly catalogId: number;\n public readonly searchText: string;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n private apiSettings: ICommerceApiSettings;\n\n constructor(\n searchText: string,\n catalogId: number,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings) {\n this.catalogId = catalogId;\n this.searchText = searchText;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.searchText}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n public getCacheObjectType = () => 'ProductRefiner';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createRefinersByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n\n return new RefinersByTextInput(\n searchInputData.q,\n Number.isNaN(catalogId) ? 0 : catalogId,\n QueryResultSettingsProxy.fromInputData(inputData),\n inputData.requestContext.apiSettings\n );\n};\n\n/**\n * Calls the Retail API and returns all refiners by text\n */\nexport async function getRefinersByTextAction(input: RefinersByTextInput, ctx: IActionContext): Promise {\n return getRefinersByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n input.searchText);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-text',\n action: >getRefinersByTextAction,\n input: createRefinersByTextInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getRelatedProductsAsync, getRelationTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductRelationType, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * GetRelatedProducts Input Action\n */\nexport class GetRelatedProductsInput implements IActionInput {\n public readonly productId: number;\n public readonly catalogId: number;\n public readonly relationType: string;\n public ProductDetailsCriteria: ProductDetailsCriteria;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n productId: number,\n catalogId: number,\n relationType: string,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n criteria: ProductDetailsCriteria\n ) {\n this.productId = productId;\n this.catalogId = catalogId;\n this.relationType = relationType;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () =>\n `${this.productId}|${this.catalogId}|${this.relationType.toLowerCase()}|${this.queryResultSettingsProxy.cacheKeyHint}|${\n this.ProductDetailsCriteria.getPrice\n }`;\n public getCacheObjectType = () => 'GetRelatedProducts';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make GetRelatedProducts retail api call\n */\nexport const createGetRelatedProductsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext && inputData.config) {\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const relationType = inputData.config.relationType;\n\n // @ts-ignore: URLTokens not properly types\n let productId = inputData.requestContext.urlTokens ? Number(inputData.requestContext.urlTokens.recordId) : 0;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (!relationType) {\n throw new Error('Input relation type is invalid.');\n }\n\n // Query string may override the product id from url\n if (inputData.requestContext.query && inputData.requestContext.query.productId) {\n productId = Number(inputData.requestContext.query.productId);\n }\n\n if (Number.isNaN(productId) || productId <= 0) {\n throw new Error('No valid product id available in url or query string.');\n }\n\n if (Number.isNaN(catalogId)) {\n throw new Error('Failed to cast catalog id into a number.');\n }\n\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new GetRelatedProductsInput(productId, catalogId, relationType, queryResultSettingsProxy, productDetailsCriteria);\n }\n\n throw new Error('Invalid input data or request context');\n};\n\nexport function searchProductRelationType(productRelationTypes: ProductRelationType[], _productRelationType: string): number | undefined {\n let foundProductRelationTypeId;\n _productRelationType = _productRelationType.toLowerCase();\n productRelationTypes.forEach((productRelationType: ProductRelationType) => {\n if (productRelationType.Name && productRelationType.Name.toLowerCase() === _productRelationType) {\n return (foundProductRelationTypeId = productRelationType.RecordId);\n }\n });\n\n return foundProductRelationTypeId;\n}\n\nasync function getRelatedProductsAction(input: GetRelatedProductsInput, ctx: IActionContext): Promise {\n const apiSettings = ctx.requestContext.apiSettings;\n const querySettings = input.queryResultSettingsProxy.QueryResultSettings;\n\n const productRelationTypes = await getRelationTypesAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId\n );\n if (!productRelationTypes) {\n ctx.trace(`[getProductRelationType] Unable to get product relation types for product ${input.productId}`);\n return [];\n }\n const productRelationTypeId = searchProductRelationType(productRelationTypes, input.relationType);\n if (!productRelationTypeId) {\n ctx.trace(`[getRelatedProducts] Unable to find relation type ${input.relationType} for product ${input.productId}`);\n return [];\n }\n\n const productInputs = await getRelatedProductsAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId,\n productRelationTypeId\n )\n .then(response => {\n if (response && response.length) {\n return response.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria);\n }\n );\n }\n\n ctx.trace('[getRelatedProductsAction] Invalid response from server');\n return [];\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.trace(error.stack || '');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getRelatedProductsAction] Unable to Fetch Products.`);\n ctx.trace(`[getRelatedProductsAction] Unable to Fetch Products.`);\n return [];\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx);\n } else {\n return [];\n }\n}\n\n/**\n * The getRelatedProducts data action\n * Uses a productId URL Token and finds the relation types for said product\n * using the getRelationTypes RetailServer API, and then finds and retusn all products that\n * share that relation type via the getRelatedProducts RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-related-products',\n action: >getRelatedProductsAction,\n input: createGetRelatedProductsInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { buildCacheKey } from '.';\n\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n// TODO: import from commerce entities when available\n// tslint:disable-next-line:interface-name\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n/**\n * Action Input class for the getSearchConfiguration data action\n */\nexport class SearchConfigurationInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('SearchConfig', this.apiSettings);\n public getCacheObjectType = () => 'SearchConfiguration';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createSearchConfigurationInput = (inputData: ICreateActionContext>): IActionInput => {\n return new SearchConfigurationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API\n */\nexport async function getSearchConfigurationAction(input: SearchConfigurationInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-search-configurations',\n action: >getSearchConfigurationAction,\n input: createSearchConfigurationInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { issueLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { getLoyaltyAction, GetLoyaltyCardInput} from './get-loyalty-card';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the issueLoyalty data action\n */\nexport class IssueLoyaltyInput implements IActionInput {\n public userAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`IssueLoyalty-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetIssueLoyalty';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the issueLoyalty method\n * @param inputData The input data passed to the createInput method\n */\nexport const createIssueLoyaltyInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create issue loyalty input. User is not authenticated.');\n }\n\n return new IssueLoyaltyInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the issueLoyalty data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function issueLoyaltyAction(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const promises: [Promise,Promise] = [ getCartState(ctx), _getLoyalty(input, ctx)];\n return Promise.all(promises)\n .then((result) => {\n const cartState = result[0];\n const card = result[1];\n if (card && card.CardNumber) {\n updateCart(cartState, card);\n return card;\n }\n //@ts-ignore\n //TO-DO: Remove after SDK bug fix https://msdyneng.visualstudio.com/FinOps/_workitems/edit/473891\n return issueLoyaltyCardAsync({ callerContext: ctx }, { CustomerAccount: input.userAccountNumber || null }) \n .then((issuedCard: LoyaltyCard) => {\n updateCart(cartState, issuedCard);\n return issuedCard;\n })\n //@ts-ignore\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Issuing loyalty card failed');\n throw new Error('Issuing loyalty card failed');\n });\n })\n .catch((error: Error) => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to issue loyalty card');\n throw new Error('Unable to issue loyalty card');\n });\n}\n\nasync function _getLoyalty(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyaltyAction(loyaltyCardInput, ctx);\n}\n\nfunction updateCart(cartState: ICartState, card: LoyaltyCard): void {\n cartState.updateLoyaltyCardId({loyaltyCardNumber: card.CardNumber});\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/issue-loyalty',\n action: >issueLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createIssueLoyaltyInput\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { addProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the AddItemToOrderTemplate data action.\n */\nexport class AddItemToOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n public readonly productId: number;\n public readonly quantity: number;\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'AddItemToOrderTemplateInput';\n public getCacheObjectType = () => 'AddItemToOrderTemplateInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the AddItemToOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n */\nexport const addItemToOrderTemplateInput = (\n inputData: ICreateActionContext, orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string): AddItemToOrderTemplateInput => {\n\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddItemToOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the AddItemToOrderTemplate data action.\n * @param {AddItemToOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function addItemToOrderTemplateAction(input: AddItemToOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const productListLineToAdd: ProductListLine = {\n ProductListId: input.orderTemplateId,\n ProductId: input.productId,\n Quantity: input.quantity,\n UnitOfMeasure: input.unitOfMeasure\n };\n\n const productListLine: ProductListLine[] = await addProductListLinesAsync({\n callerContext: ctx\n }, input.orderTemplateId, [productListLineToAdd]);\n\n if (productListLine && productListLine.length === 1 && productListLine[0] && productListLine[0].ProductListId) {\n return productListLine[0];\n } else {\n ctx.telemetry.error('Product list line was not returned when adding it to order template');\n throw Error('Product list line was not returned when adding it to order template');\n }\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The AddItemToOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-item-to-order-template',\n action: >addItemToOrderTemplateAction,\n input: addItemToOrderTemplateInput\n});","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput, QueryResultSettingsProxy } from '..';\nimport { IOrderTemplateLinesState, OrderTemplateLine } from '../utilities/order-templates';\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetPaginatedOrderTemplateLinesInput implements IActionInput {\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n public searchText: string;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings, searchText?: string) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n this.searchText = searchText || '';\n }\n\n public getCacheKey = () => `GetPaginatedOrderTemplateLines|${this.orderTemplateId}|${convertToString(this.queryResultSettings)}|${this.searchText}`;\n public getCacheObjectType = () => 'GetPaginatedOrderTemplateLines';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetPaginatedOrderTemplateLinesInput = (\n inputData: ICreateActionContext, orderTemplateId: string, searchText?: string): GetPaginatedOrderTemplateLinesInput => {\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n return new GetPaginatedOrderTemplateLinesInput(orderTemplateId, queryResultSettings, searchText);\n};\n\n/**\n * The action method for the GetPaginatedOrderTemplateLines data action\n * @param input The action input\n * @param context The action context\n */\nexport async function getPaginatedOrderTemplateLinesAction(input: GetPaginatedOrderTemplateLinesInput, context: IActionContext): Promise {\n if (!context.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplateLinesState: IOrderTemplateLinesState = {\n lines: [],\n totalCount: 0\n };\n const promise = getProductListLinesAsync({\n callerContext: context, queryResultSettings: input.queryResultSettings\n }, input.orderTemplateId, input.searchText); // tslint:disable-line:align\n const productListLines = await promise;\n const productInputs: FullProductInput[] = [];\n if (productListLines && productListLines.length > 0) {\n orderTemplateLinesState.totalCount = promise.metadata.count || orderTemplateLinesState.lines.length;\n productListLines.forEach((listLine) => {\n if (listLine.ProductId) {\n orderTemplateLinesState.lines.push(new OrderTemplateLine(listLine));\n productInputs.push(new FullProductInput(listLine.ProductId, context.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(context)));\n }\n });\n if (productInputs.length > 0) {\n const fullProductsInfo = await getFullProducts(productInputs, context)\n .then((products: FullProduct[]) => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n context.trace(error);\n context.telemetry.error(error.message);\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to retrieve product info.');\n });\n if (fullProductsInfo) {\n orderTemplateLinesState.lines.forEach(line => {\n const fullProduct = fullProductsInfo.find(product => product.ProductDetails.RecordId === line.productListLine.ProductId);\n if (!fullProduct) {\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to find product info for an order template line.');\n return;\n }\n line.fullProduct = fullProduct;\n });\n }\n return orderTemplateLinesState;\n }\n context.trace(orderTemplateLinesState.lines.length.toString());\n return orderTemplateLinesState;\n }\n return orderTemplateLinesState;\n}\n\n/**\n * The GetPaginatedOrderTemplateLines Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-paginated-order-template-lines',\n action: >getPaginatedOrderTemplateLinesAction,\n input: createGetPaginatedOrderTemplateLinesInput\n});","import { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines'\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n\n/**\n * Input class for the AddOrderTemplateToCart data action.\n */\nexport class AddOrderTemplateToCartInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n constructor(orderTemplateId: string) {\n this.orderTemplateId = orderTemplateId;\n }\n\n public getCacheKey = () => 'AddOrderTemplateToCartInput';\n public getCacheObjectType = () => 'AddOrderTemplateToCartInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the AddOrderTemplateToCart method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of template.\n */\nexport const addOrderTemplateToCartInput = (inputData: ICreateActionContext, orderTemplateId: string): AddOrderTemplateToCartInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddOrderTemplateToCartInput(orderTemplateId);\n};\n\n/**\n * The action method for the AddOrderTemplateToCart data action.\n * @param {AddOrderTemplateToCartInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function addOrderTemplateToCartAction(input: AddOrderTemplateToCartInput, context: IActionContext): Promise {\n const cartState = await getCartState(context);\n const chunkCount = 1000;\n const queryResultSettings: QueryResultSettings = {\n Paging: {\n Top: chunkCount,\n Skip: 0\n }\n };\n const getPaginatedOrderTemplateLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, queryResultSettings);\n let orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n let addedCartLines: CartLine[] = [];\n for (let skip = chunkCount; orderTemplateLines.lines.length !== 0; skip += chunkCount) {\n const cartLines: CartLine[] = orderTemplateLines.lines.map(productLine => {\n // tslint:disable-next-line:no-unnecessary-local-variable\n const cartLine: CartLine = {\n ItemId: productLine.fullProduct?.ProductDetails.ItemId,\n ProductId: productLine.productListLine.ProductId,\n Quantity: productLine.productListLine.Quantity,\n TrackingId: '',\n UnitOfMeasureSymbol: productLine.productListLine.UnitOfMeasure\n };\n return cartLine;\n });\n await addCartLinesAsync({ callerContext: context }, cartState.cart.Id, cartLines, cartState.cart.Version!).catch(error => {\n context.telemetry.trace(error);\n context.telemetry.trace('Unable to add order template to cart.');\n throw error;\n });\n addedCartLines = addedCartLines.concat(cartLines);\n getPaginatedOrderTemplateLinesInput.queryResultSettings.Paging!.Skip = skip;\n orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n }\n await cartState.refreshCart({});\n return addedCartLines;\n}\n\n/**\n * The AddOrderTemplateToCart Data Action.\n * Returns created order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-order-template-to-cart',\n action: >addOrderTemplateToCartAction,\n input: addOrderTemplateToCartInput\n});","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductList, ProductListType } from '@msdyn365-commerce/retail-proxy';\nimport { createProductListAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\n\n/**\n * Input class for the CreateOrderTemplate data action.\n */\nexport class CreateOrderTemplateInput implements IActionInput {\n public readonly templateName: string;\n\n constructor(templateName: string) {\n this.templateName = templateName;\n }\n\n public getCacheKey = () => 'CreateOrderTemplateInput';\n public getCacheObjectType = () => 'CreateOrderTemplateInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the CreateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} templateName The name of template.\n */\nexport const createOrderTemplateInput = (inputData: ICreateActionContext, templateName: string): CreateOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new CreateOrderTemplateInput(templateName);\n};\n\n/**\n * The action method for the CreateOrderTemplate data action.\n * @param {CreateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function createOrderTemplateAction(input: CreateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const orderTemplate: ProductList = {\n Id: '',\n Name: input.templateName,\n ProductListTypeValue: ProductListType.OrderTemplate\n };\n const createdProductList = await createProductListAsync({\n callerContext: ctx\n }, orderTemplate);\n if (createdProductList && createdProductList.Id !== '') {\n return createdProductList;\n } else {\n ctx.telemetry.error('Created product list was null');\n throw Error('Created product list was null');\n }\n } catch (error) {\n ctx.telemetry.error('Not able to create order template', error);\n throw error;\n }\n}\n\n/**\n * The CreateOrderTemplate Data Action.\n * Returns created order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/create-order-template',\n action: >createOrderTemplateAction,\n input: createOrderTemplateInput\n});","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getOrderTemplates, GetOrderTemplatesInput, QueryResultSettingsProxy } from '..';\nimport { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetFullOrderTemplateInput implements IActionInput {\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetFullOrderTemplate|${this.orderTemplateId}`;\n public getCacheObjectType = () => 'GetFullOrderTemplate';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullOrderTemplateInput = (inputData: ICreateActionContext, orderTemplateId: string): GetFullOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplateInput(orderTemplateId, queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplate data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getFullOrderTemplateAction(input: GetFullOrderTemplateInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order template. User is not authenticated.');\n }\n\n const inputParams = new GetOrderTemplatesInput(input.orderTemplateId);\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length !== 1) {\n throw new Error('Unable to get full order template. Order template was not found.');\n }\n\n const inputLines = new GetPaginatedOrderTemplateLinesInput(productLists[0].Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n return new OrderTemplate(productLists[0], linesState.lines, linesState.totalCount);\n}\n\n/**\n * The GetFullOrderTemplate Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-template',\n action: >getFullOrderTemplateAction,\n input: createGetFullOrderTemplateInput\n});","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateHeaderInput implements IActionInput {\n public readonly orderTemplate: ProductList;\n\n constructor(orderTemplate: ProductList) {\n this.orderTemplate = orderTemplate;\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateHeaderInput';\n public getCacheObjectType = () => 'UpdateOrderTemplateHeaderInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the UpdateOrderTemplateHeader method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {ProductList} orderTemplate The template header.\n */\nexport const updateOrderTemplateHeaderInput = (inputData: ICreateActionContext, orderTemplate: ProductList): UpdateOrderTemplateHeaderInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to update order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateHeaderInput(orderTemplate);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateHeaderInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateHeaderAction(input: UpdateOrderTemplateHeaderInput, ctx: IActionContext): Promise {\n try {\n const { orderTemplate } = input;\n const updatedProductList = await updateAsync({\n callerContext: ctx\n }, orderTemplate);\n if (updatedProductList) {\n return updatedProductList;\n } else {\n ctx.telemetry.error(`Updated product list ${orderTemplate.Id} came back as null.`);\n throw Error('Updated product list was null.');\n }\n } catch (error) {\n ctx.telemetry.error('Not able to update order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns updated order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-header',\n action: >updateOrderTemplateHeaderAction,\n input: updateOrderTemplateHeaderInput\n});","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { updateProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport getPaginatedOrderTemplateLines, { GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n public readonly productId: number;\n public readonly quantity: number;\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateInput';\n public getCacheObjectType = () => 'UpdateOrderTemplateInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the UpdateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n */\nexport const updateOrderTemplateInput = (\n inputData: ICreateActionContext, orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string): UpdateOrderTemplateInput => {\n\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateAction(input: UpdateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw Error('User token was not found when updating the order template');\n }\n const getLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, {}, input.productId.toString());\n const linesState = await getPaginatedOrderTemplateLines(getLinesInput, ctx);\n if (!linesState) {\n throw Error('Order template was not found when updating the order template');\n }\n\n const linesToUpdate = linesState.lines.filter(line => line.productListLine.ProductId === input.productId);\n if (linesToUpdate.length !== 1) {\n throw Error('Unable to find the line to update when updating the order template');\n }\n\n const lineToUpdate = linesToUpdate[0].productListLine;\n\n lineToUpdate.UnitOfMeasure = input.unitOfMeasure;\n lineToUpdate.Quantity = input.quantity;\n\n const updatedLines: ProductListLine[] = await updateProductListLinesAsync({\n callerContext: ctx\n }, input.orderTemplateId, [lineToUpdate]);\n\n if (!updatedLines || updatedLines.length !== 1) {\n throw Error('Server returned invalid lines when updating order template');\n }\n const updatedLine = updatedLines.filter(line => line.ProductId === input.productId);\n if (updatedLine.length !== 1 || updatedLine[0].Quantity !== input.quantity || updatedLine[0].UnitOfMeasure !== input.unitOfMeasure) {\n throw Error('Server did not update the line when updating order template');\n }\n return updatedLine[0];\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-line',\n action: >updateOrderTemplateAction,\n input: updateOrderTemplateInput\n});","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport {\n createObservableDataAction,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { createRefineSearchByCategoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist/retail-action';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the refineSearchByCategory data action\n */\nexport class RefineSearchByCriteriaInput implements IActionInput {\n public readonly categoryId?: number;\n public readonly channelId?: number;\n public readonly refinementCriteria: ProductRefinerValue[];\n public readonly catalogId: number;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n private apiSettings: ICommerceApiSettings;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number\n ) {\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`RefineSearchByCriteriaInputCache`, this.apiSettings);\n public getCacheObjectType = () => 'RefineSearchByCriteriaInput';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the refineSearchByCategory data action\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n return createRefineSearchByCategoryInput(\n QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings,\n +inputData.requestContext.apiSettings.channelId,\n inputData.config ? Number(inputData.config.catalogId) : 0,\n +inputData.requestContext.query.categoryId,\n !Array.isArray(refinementCriteria) ? [] : refinementCriteria.map((refinementCriterion: ProductRefinerValue) => refinementCriterion)\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * The RefineSearchByCategory data action\n * Uses categoryId query string parameter to call the RefinerSearchByCategory\n * RetailServer API to get information about products\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/regin-search-by-category',\n action: >retailAction,\n input: createInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchByTextInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * createInput method for the searchByText data action\n */\nexport function createSearchByTextInputFunc (inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n const { requestContext: {query, apiSettings: {channelId}}} = inputData;\n\n const search = query && query.q;\n\n if (!search) {\n throw new Error('Unable to preform search without search text. Query string ?q={searchText} must be present or should be configued in module data.');\n }\n\n const querySettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return createSearchByTextInput(querySettingsProxy.QueryResultSettings, Number(channelId), 0, search);\n}\n\n/**\n * The searchByText data action\n * Queries RetailServers product searchByText API using a\n * query string parameter and returns a list of ProductSearchResults\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-by-text',\n action: >retailAction,\n input: createSearchByTextInputFunc\n});\n","import { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\n// TODO: Centralize this logic in a common utility area\nexport function updateAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n if (address.IsPrimary) {\n customer.Addresses.forEach(cur => cur.IsPrimary = false)\n }\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId), address];\n return customer;\n}\n\nexport async function updateAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, updateAddressHandler);\n}\n\n/**\n * The updateAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-address',\n action: >updateAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput)\n});\n","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './index';\n\nexport interface IUpdateCustomerAttributesInput extends IActionInput {\n phone?: string,\n vatNumber?: string;\n customerAttributes: CustomerAttribute[];\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n}\n\n/**\n * Input class for the updateCustomerAttributes\n */\nexport class updateCustomerAttributesInput implements IUpdateCustomerAttributesInput {\n public userAccountNumber: string;\n public customerAttributes: CustomerAttribute[];\n public apiSettings: ICommerceApiSettings;\n public phone?: string;\n public vatNumber?: string;\n\n constructor(userAccountNumber: string, customerAttributes: CustomerAttribute[], apiSettings: ICommerceApiSettings, phone?: string, vatNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.customerAttributes = customerAttributes;\n this.phone = phone;\n this.vatNumber = vatNumber;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'Customer';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerAttributes data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function updateCustomerAttributesAction(input: IUpdateCustomerAttributesInput, ctx: IActionContext): Promise {\n const { customerAttributes, phone, vatNumber, userAccountNumber } = input;\n\n const customer = await readAsync({ callerContext: ctx }, userAccountNumber);\n\n if (!customer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to find customer');\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n newCustomer.Phone = phone;\n newCustomer.VatNumber = vatNumber;\n newCustomer.Attributes = customerAttributes;\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to update customer attributes');\n throw new Error('Unable to update customer attributes');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerAttributes data action\n * Returns the updated customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-attributes',\n action: >updateCustomerAttributesAction\n});","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './index';\n\nexport interface IUpdateCustomerPersonalizationInput extends IActionInput {\n isOptOut: boolean;\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n preferenceType?: string;\n}\n\n/**\n * Input class for the updateCustomerPersonalization\n */\nexport class updateCustomerPersonalizationInput implements IUpdateCustomerPersonalizationInput {\n public userAccountNumber: string;\n public isOptOut: boolean;\n public apiSettings: ICommerceApiSettings;\n public preferenceType: string | undefined;\n\n constructor(userAccountNumber: string, isOptOut: boolean, apiSettings: ICommerceApiSettings, preferenceType?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.isOptOut = isOptOut;\n this.preferenceType = preferenceType;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'Customer';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerPersonalization data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function updateCustomerPersonalizationAction(input: IUpdateCustomerPersonalizationInput, ctx: IActionContext): Promise {\n const { userAccountNumber, isOptOut, preferenceType } = input;\n\n const customer = await readAsync({ callerContext: ctx }, userAccountNumber);\n\n if (!customer) {\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n\n switch (preferenceType) {\n case 'web-tracking':\n newCustomer.OptOutWebActivityTracking = isOptOut;\n break;\n case undefined:\n case 'personalization':\n default:\n newCustomer.OptOutPersonalization = isOptOut;\n }\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Unable to update customer');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerPersonalization data action\n * Returns the updated customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-personalization',\n action: >updateCustomerPersonalizationAction\n});\n","import { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\nexport function updatePrimaryAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = setPrimaryAddress({ ...address }, [...(customer.Addresses || [])]);\n return customer;\n}\n\nexport async function updatePrimaryAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, updatePrimaryAddressHandler);\n}\n\n/**\n * The updatePrimaryAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-primary-address',\n action: >updatePrimaryAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n\nconst setPrimaryAddress = (primaryAddresses: Address, addresses: Address[]): Address[] => {\n return addresses.map(addr => {\n if (addr.RecordId === primaryAddresses.RecordId) {\n addr.IsPrimary = true;\n } else {\n addr.IsPrimary = false;\n }\n return addr;\n });\n};\n","import { IPromiseQueue, PromiseBodyWrapper, PromiseRejectType, PromiseResolveType } from './base-promise-queue';\n\n/**\n * Represents an inner node which is stored in a promise queue.\n * Used internally in the PromiseQueue implementation.\n * @author Bohdan Yevchenko \n */\nclass PromiseQueueElement {\n /**\n * The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n */\n public readonly body: PromiseBodyWrapper;\n\n /**\n * Method that resolves the promise after the promise from the body is resolved.\n */\n public readonly resolve: PromiseResolveType;\n\n /**\n * Method that rejects the promise after the promise from the body is rejected.\n */\n public readonly reject: PromiseRejectType;\n\n /**\n * Initializes queue element with the given data.\n * @param {PromiseBodyWrapper} body The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n * @param {PromiseResolveType} resolve Method that resolves the promise after the promise from the body is resolved.\n * @param {PromiseRejectType} reject Method that rejects the promise after the promise from the body is rejected.\n */\n public constructor(\n body: PromiseBodyWrapper,\n resolve: PromiseResolveType,\n reject: PromiseRejectType) {\n\n this.body = body;\n this.resolve = resolve;\n this.reject = reject;\n }\n}\n\n/**\n * Represents a FIFO basic queue over promises.\n * @author Bohdan Yevchenko \n */\nexport class PromiseQueue implements IPromiseQueue {\n /**\n * A list of promises waiting for execution.\n */\n protected readonly _queue: PromiseQueueElement[];\n\n /**\n * Defines whether the queue is processing some element.\n */\n protected _isBusy: boolean;\n\n /**\n * Defines whether the queue can start processing new element.\n */\n private get _canProcess(): boolean {\n return !this._isBusy && this._queue.length !== 0;\n }\n\n /**\n * Creates a new instance of PromiseQueue.\n */\n public constructor() {\n this._queue = [];\n this._isBusy = false;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n // tslint:disable-next-line:promise-must-complete\n return new Promise(async (resolve, reject) => {\n this._queue.push(new PromiseQueueElement(promiseBody, resolve, reject));\n await this._dequeue();\n });\n }\n\n /**\n * If the queue is free, starts processing the first element in the queue and waits until all the elements are processed.\n * Otherwise (if busy or has no elements to process), does nothing.\n */\n private async _dequeue(): Promise {\n // Skip if queue is not able to process any elements.\n if (!this._canProcess) {\n return;\n }\n\n // Lock queue to prevent parallel execution.\n this._isBusy = true;\n\n // Retrieve an element from the waiting queue and start processing.\n const element: PromiseQueueElement = this._queue.shift()!;\n await this._processElement(element);\n\n // Continue executing the subsequent queue elements.\n await this._processNext();\n }\n\n /**\n * Executes the given wrapper over the promise and calls initial resolve/reject correspondingly.\n * @param {PromiseQueueElement} element The queue element which should be processed now.\n */\n private async _processElement(element: PromiseQueueElement): Promise {\n try {\n await element.body().then(element.resolve).catch(element.reject);\n } catch (error) {\n element.reject(error);\n }\n }\n\n /**\n * Unlocks the queue and tries to process the next element in the queue.\n */\n private async _processNext(): Promise {\n this._isBusy = false;\n await this._dequeue();\n }\n}","import { PromiseBodyWrapper } from './base-promise-queue';\nimport { PromiseQueue } from './promise-queue';\n\nexport enum FinitePromiseQueueError {\n InvalidMaxQueueLengthPassed = 'Invalid maxQueueLength value passed to FinitePromiseQueue. maxQueueLength should be more or equal to 2.',\n ProcessWasDiscardedFromTheQueue = 'The process was discarded from FinitePromiseQueue.'\n}\n\n/**\n * Represents a FIFO queue over promises with a limited number of elements waiting for execution.\n * @remark\n * In case the queue reaches the limit,\n * before adding a new element the queue discards the oldest added element which is waiting to be processed.\n * Does not discard elements which are in progress under execution.\n * The discarded element will not be processed and executed.\n * @author Bohdan Yevchenko \n */\nexport class FinitePromiseQueue extends PromiseQueue {\n /**\n * @see constructor\n */\n private readonly _maxQueueLength: number;\n\n /**\n * Initializes the queue with the given limit.\n * @param {number} maxQueueLength\n * Defines the limit of maximum number of elements in the queue.\n * @remarks Includes both the number of elements waiting for the execution\n * and the element processed by the queue at the moment (in case there is some).\n * Value can't be less than 2.\n */\n public constructor(maxQueueLength: number) {\n if (maxQueueLength < 2) {\n throw new Error(FinitePromiseQueueError.InvalidMaxQueueLengthPassed);\n }\n\n super();\n this._maxQueueLength = maxQueueLength;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @remarks In case the queue has reached the limit, also discards the oldest added element.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n let totalElementsCount = this._queue.length;\n\n // If queue hasn't finished processing an element,\n // consider this element as pending.\n if (this._isBusy) {\n ++totalElementsCount;\n }\n\n // Discards the oldest added element from the queue to meet the given limitations.\n // The very first element in the queue is considered as oldest added.\n // Can't discard the element which is under execution as the promise can't be cancelled.\n if (totalElementsCount === this._maxQueueLength) {\n const element = this._queue.shift();\n if (element) {\n element.reject(FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue);\n }\n }\n\n return super.enqueue(promiseBody);\n }\n}","/**\n * Namespace which extends Object functionality.\n */\nexport namespace ObjectExtensions {\n // tslint:disable:no-any\n\n /**\n * @description Verifies whether the value is null or undefined.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is null or undefined, false otherwise.\n */\n export function isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n }\n\n /**\n * @description Verifies whether the value is of type string.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a string, false otherwise.\n */\n export function isString(value: any): value is string {\n return typeof value === 'string';\n }\n\n /**\n * @description Verifies whether the value is of type number.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a number, false otherwise.\n */\n export function isNumber(value: any): value is number {\n return typeof value === 'number';\n }\n\n /**\n * Verifies whether the object is a function.\n * @param {any} object The object.\n * @return {boolean} True if the object is a function, false otherwise.\n */\n export function isFunction(value: any): boolean {\n return typeof value === 'function';\n }\n\n // tslint:enable:no-any\n}","import { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends Array functionality.\n */\nexport namespace ArrayExtensions {\n /**\n * @description Remove duplicate elements in the array.\n * @param {T[]} value The array to examine.\n * @returns {T[]} An array with only unique elements.\n */\n export function unique(value: T[]): T[] {\n if (!hasElements(value)) {\n return [];\n }\n\n return Array.from(new Set(value));\n }\n\n /**\n * @description Verifies whether the object array has elements.\n * @param {ReadonlyArray} value The array to examine.\n * @returns {boolean} True if the object has elements, false otherwise.\n */\n export function hasElements(value: ReadonlyArray | null | undefined): boolean {\n return !ObjectExtensions.isNullOrUndefined(value) && value.length > 0;\n }\n\n /**\n * @description Checks if all elements satisfy given condition.\n * @param {T[]} value The array to examine.\n * @param {(value: T, index: number, array: T[]) => boolean} predicate The function which checks an element.\n * @returns {boolean} True if the array is empty or all the inner elements satisfy given condition,\n * false if at least one element does not pass the condition.\n */\n export function all(value: T[], predicate: (value: T, index: number, array: T[]) => boolean): boolean {\n if (!hasElements(value)) {\n return true;\n }\n\n return value.filter(predicate).length === value.length;\n }\n}","import { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends enum functionality.\n */\nexport namespace EnumExtensions {\n // tslint:disable:no-any\n\n /**\n * @description Returns a list of numeric values and enum names for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of numeric values and enum names.\n */\n export function getValues(enumClass: any): (number | string)[] {\n if (ObjectExtensions.isNullOrUndefined(enumClass)) {\n return [];\n }\n\n return Object.keys(enumClass).map(item => enumClass[item]);\n }\n\n /**\n * @description Returns a list of enum names for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of string values.\n */\n export function getNames(enumClass: any): string[] {\n return getValues(enumClass).filter(ObjectExtensions.isString);\n }\n\n /**\n * @description Returns a list of numeric values for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of numeric values.\n */\n export function getNumericValues(enumClass: any): number[] {\n return getValues(enumClass).filter(ObjectExtensions.isNumber);\n }\n\n /**\n * @description Returns a list of enum values for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of enum values.\n */\n export function getEnumValues(enumClass: any): T[] {\n return getNumericValues(enumClass).map(value => value);\n }\n\n // tslint:enable:no-any\n}","import { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends string functionality.\n */\nexport namespace StringExtensions {\n /**\n * Checks if string is null, undefined, empty, or whitespace.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrWhitespace(value: string | null | undefined): boolean {\n return isNullOrEmpty(value) || value!.trim() === '';\n }\n\n /**\n * Checks if string is null, undefined, or empty.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrEmpty(value: string | null | undefined): boolean {\n if (ObjectExtensions.isNullOrUndefined(value)) {\n return true;\n }\n\n if (!ObjectExtensions.isString(value)) {\n throw new Error('StringExtensions has received a non-string input.');\n }\n\n return value === '';\n }\n}","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from 'uuid';\n\n/**\n * Namespace which provides functionality for GUID.\n */\nexport namespace Guid {\n export function generateGuid(): string {\n return uuidv4();\n }\n}","import { Guid as _guid } from './guid';\n\nexport namespace Random {\n export import Guid = _guid;\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, sendRequest } from '@msdyn365-commerce/core';\nimport { GetRatingsSummaryInput, getSelectedProductIdFromActionInput } from './index';\nimport { getRnrEndpointId, getRnrPartnerId } from './utilities/getRnrKeys';\n\nexport const createInput = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n return new GetRatingsSummaryInput(productId, getRnrPartnerId(input), getRnrEndpointId(input));\n }\n throw new Error('[GetRatingsSummary] Not all necessary parameters found while creating Input for getRatingsSummaryApi');\n};\n\n/**\n * This function gets the ratings summary\n */\nasync function getRatingsSummary(input: GetRatingsSummaryInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n ctx.trace(`[GetRatingsSummary] Failed to get ratings summary for product`);\n return {};\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/ratings/product/${input.productId}/summary?` +\n `tenantId=${input.tenantId}`;\n return sendRequest(requestUrl, 'get').then((response) => {\n return response.data;\n }).catch((error) => {\n ctx.trace(`[GetRatingsSummary] Failed to get ratings summary for product`);\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetRatingsSummaryInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0;\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-ratings-summary',\n action: >getRatingsSummary,\n input: createInput\n});","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * Global Data Bus for all modules to get wine club offer data and\r\n * state\r\n */\r\nexport class WineClubOffersBusInput implements Msdyn365.IActionInput {\r\n public getCacheKey = () => `WineClubOffer`;\r\n public getCacheObjectType = () => 'WineClubOffer';\r\n public dataCacheType = (): Msdyn365.CacheType => 'request';\r\n}\r\n\r\nexport interface IWineClubOffersBusData {\r\n offerTaken: boolean;\r\n wineClubId: string;\r\n offerAcceptedText: Msdyn365.RichText;\r\n offerIdUsed: string;\r\n}\r\n\r\nconst createInput = (): Msdyn365.IActionInput => {\r\n return new WineClubOffersBusInput();\r\n};\r\n\r\nasync function action(input: WineClubOffersBusInput, ctx: Msdyn365.IActionContext): Promise {\r\n return { offerTaken: false, wineClubId: '', offerAcceptedText: 'TESTING', offerIdUsed: '' };\r\n}\r\n\r\nexport const IWineClubOffersBusAction = Msdyn365.createObservableDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n\r\nexport default IWineClubOffersBusAction;\r\n","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n \n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n try {\n\n\n isNotRegistered('acclaim-ratings') && (binding.modules['acclaim-ratings'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-acclaim-ratings' */\n 'partner/modules/acclaim-ratings/acclaim-ratings.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'acclaim-ratings',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/acclaim-ratings'\n });\n \n\n isNotRegistered('add-to-cart-by-url') && (binding.modules['add-to-cart-by-url'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-add-to-cart-by-url' */\n 'partner/modules/add-to-cart-by-url/add-to-cart-by-url.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'add-to-cart-by-url',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/add-to-cart-by-url'\n });\n \n\n isNotRegistered('age-gate') && (binding.modules['age-gate'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-age-gate' */\n 'partner/modules/age-gate/age-gate.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'age-gate',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/age-gate'\n });\n \n\n isNotRegistered('all-purpose-tasting-tours') && (binding.modules['all-purpose-tasting-tours'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-all-purpose-tasting-tours' */\n 'partner/modules/all-purpose-tasting-tours/all-purpose-tasting-tours.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'all-purpose-tasting-tours',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/all-purpose-tasting-tours'\n });\n \n\n isNotRegistered('blend') && (binding.modules['blend'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-blend' */\n 'partner/themes/blend/blend.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['checkout','content-block','header','smwe-buybox','smwe-checkout','smwe-navigation-menu','wine-club-signup'],\n iNM: false,\n ns: '__local__',\n n: 'blend',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'blend.theme.settings.json',\n md: 'src/themes/blend'\n });\n \n\n isNotRegistered('cart-affiliations-maintainer') && (binding.modules['cart-affiliations-maintainer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cart-affiliations-maintainer' */\n 'partner/modules/cart-affiliations-maintainer/cart-affiliations-maintainer.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'cart-affiliations-maintainer',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/cart-affiliations-maintainer'\n });\n \n\n isNotRegistered('cartmanager') && (binding.modules['cartmanager'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartmanager' */\n 'partner/modules/cartmanager/cartmanager.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'cartmanager',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/cartmanager'\n });\n \n\n isNotRegistered('checkout-club-info-collector') && (binding.modules['checkout-club-info-collector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-club-info-collector' */\n 'partner/modules/checkout-club-info-collector/checkout-club-info-collector.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-club-info-collector',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-club-info-collector'\n });\n \n\n isNotRegistered('checkout-date-of-birth') && (binding.modules['checkout-date-of-birth'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-date-of-birth' */\n 'partner/modules/checkout-date-of-birth/checkout-date-of-birth.tsx'),\n $type: 'contentModule',\n da: [{name:'checkoutState', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-date-of-birth',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-date-of-birth'\n });\n \n\n isNotRegistered('checkout-terms-and-conditions') && (binding.modules['checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-terms-and-conditions' */\n 'partner/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx'),\n $type: 'contentModule',\n da: [{name:'checkoutState', path:'@msdyn365-commerce-modules/checkout-utilities/dist/lib/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-terms-and-conditions',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-terms-and-conditions'\n });\n \n\n isNotRegistered('clear-wineclub') && (binding.modules['clear-wineclub'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-clear-wineclub' */\n 'partner/modules/clear-wineclub/clear-wineclub.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'clear-wineclub',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/clear-wineclub'\n });\n \n\n isNotRegistered('clickable-container') && (binding.modules['clickable-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-clickable-container' */\n 'partner/modules/clickable-container/clickable-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'clickable-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/clickable-container'\n });\n \n\n isNotRegistered('colsolare') && (binding.modules['colsolare'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-colsolare' */\n 'partner/themes/colsolare/colsolare.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'colsolare',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'colsolare.theme.settings.json',\n md: 'src/themes/colsolare'\n });\n \n\n isNotRegistered('columbiacrest') && (binding.modules['columbiacrest'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-columbiacrest' */\n 'partner/themes/columbiacrest/columbiacrest.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'columbiacrest',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'columbiacrest.theme.settings.json',\n md: 'src/themes/columbiacrest'\n });\n \n\n isNotRegistered('conditional-container') && (binding.modules['conditional-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-conditional-container' */\n 'partner/modules/conditional-container/conditional-container.tsx'),\n $type: 'containerModule',\n da: [{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'conditional-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/conditional-container'\n });\n \n\n isNotRegistered('conn-creek') && (binding.modules['conn-creek'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-conn-creek' */\n 'partner/themes/conn-creek/conn-creek.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'conn-creek',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'conn-creek.theme.settings.json',\n md: 'src/themes/conn-creek'\n });\n \n\n isNotRegistered('container-with-header') && (binding.modules['container-with-header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-container-with-header' */\n 'partner/modules/container-with-header/container-with-header.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'container-with-header',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/container-with-header'\n });\n \n\n isNotRegistered('content-block-with-title') && (binding.modules['content-block-with-title'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block-with-title' */\n 'partner/modules/content-block-with-title/content-block-with-title.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'content-block-with-title',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/content-block-with-title'\n });\n \n\n isNotRegistered('content-with-media') && (binding.modules['content-with-media'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-with-media' */\n 'partner/modules/content-with-media/content-with-media.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'content-with-media',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/content-with-media'\n });\n \n\n isNotRegistered('cookbook-tagline') && (binding.modules['cookbook-tagline'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cookbook-tagline' */\n 'partner/modules/cookbook-tagline/cookbook-tagline.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'cookbook-tagline',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/cookbook-tagline'\n });\n \n\n isNotRegistered('copyright') && (binding.modules['copyright'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-copyright' */\n 'partner/modules/copyright/copyright.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'copyright',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/copyright'\n });\n \n\n isNotRegistered('element-scroller') && (binding.modules['element-scroller'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-element-scroller' */\n 'partner/modules/element-scroller/element-scroller.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'element-scroller',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/element-scroller'\n });\n \n\n isNotRegistered('elicit') && (binding.modules['elicit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit' */\n 'partner/themes/elicit/elicit.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['checkout','content-block','header','smwe-buybox','smwe-checkout','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'elicit',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'elicit.theme.settings.json',\n md: 'src/themes/elicit'\n });\n \n\n isNotRegistered('elicit-cart') && (binding.modules['elicit-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-cart' */\n 'partner/modules/elicit-cart/elicit-cart.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'elicit-cart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/elicit-cart'\n });\n \n\n isNotRegistered('elicit-subscriptions') && (binding.modules['elicit-subscriptions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-subscriptions' */\n 'partner/modules/elicit-subscriptions/elicit-subscriptions.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'checkoutState', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 0},{name:'listPageState', path:'dataActions/search-result-container/list-page-state', runOn: 0},{name:'products', path:'dataActions/search-result-container/smwe-get-full-products-by-collection', runOn: 0},{name:'refiners', path:'dataActions/search-result-container/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'dataActions/search-result-container/get-mapped-search-configuration', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'elicit-subscriptions',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/elicit-subscriptions'\n });\n \n\n isNotRegistered('emp') && (binding.modules['emp'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-emp' */\n 'partner/themes/emp/emp.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['carousel','content-block','header','smwe-search-result-container'],\n iNM: false,\n ns: '__local__',\n n: 'emp',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'emp.theme.settings.json',\n md: 'src/themes/emp'\n });\n \n\n isNotRegistered('employee-route-switcher') && (binding.modules['employee-route-switcher'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-employee-route-switcher' */\n 'partner/modules/employee-route-switcher/employee-route-switcher.tsx'),\n $type: 'contentModule',\n da: [{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'employee-route-switcher',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/employee-route-switcher'\n });\n \n\n isNotRegistered('enoteca') && (binding.modules['enoteca'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-enoteca' */\n 'partner/themes/enoteca/enoteca.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'enoteca',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'enoteca.theme.settings.json',\n md: 'src/themes/enoteca'\n });\n \n\n isNotRegistered('erath') && (binding.modules['erath'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-erath' */\n 'partner/themes/erath/erath.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'erath',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'erath.theme.settings.json',\n md: 'src/themes/erath'\n });\n \n\n isNotRegistered('event-description') && (binding.modules['event-description'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-description' */\n 'partner/modules/event-description/event-description.tsx'),\n $type: 'contentModule',\n da: [{name:'eventDescription', path:'dataActions/get-event-description', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'event-description',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/event-description'\n });\n \n\n isNotRegistered('event-list') && (binding.modules['event-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-list' */\n 'partner/modules/event-list/event-list.tsx'),\n $type: 'contentModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'products', path:'dataActions/get-products-with-attributes-by-category', runOn: 0},{name:'refineSearchProducts', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-products-by-refine-search-category', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'event-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/event-list'\n });\n \n\n isNotRegistered('event-schedule') && (binding.modules['event-schedule'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-schedule' */\n 'partner/modules/event-schedule/event-schedule.tsx'),\n $type: 'contentModule',\n da: [{name:'eventDescription', path:'dataActions/get-event-description', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'event-schedule',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/event-schedule'\n });\n \n\n isNotRegistered('family-and-friends') && (binding.modules['family-and-friends'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-family-and-friends' */\n 'partner/modules/family-and-friends/family-and-friends.tsx'),\n $type: 'contentModule',\n da: [{name:'codeList', path:'modules/family-and-friends/actions/get-friends-and-family-list.action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'family-and-friends',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/family-and-friends'\n });\n \n\n isNotRegistered('fth') && (binding.modules['fth'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-fth' */\n 'partner/themes/fth/fth.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['carousel','container-with-header','content-block','header','order-confirmation','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'fth',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'fth.theme.settings.json',\n md: 'src/themes/fth'\n });\n \n\n isNotRegistered('fth-old') && (binding.modules['fth-old'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-fth-old' */\n 'partner/themes/fth-old/fth-old.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'fth-old',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'fth-old.theme.settings.json',\n md: 'src/themes/fth-old'\n });\n \n\n isNotRegistered('generazioni') && (binding.modules['generazioni'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-generazioni' */\n 'partner/themes/generazioni/generazioni.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'generazioni',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'generazioni.theme.settings.json',\n md: 'src/themes/generazioni'\n });\n \n\n isNotRegistered('gift-card-balance') && (binding.modules['gift-card-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-gift-card-balance' */\n 'partner/modules/gift-card-balance/gift-card-balance.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'gift-card-balance',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/gift-card-balance'\n });\n \n\n isNotRegistered('h3-theme') && (binding.modules['h3-theme'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-h3-theme' */\n 'partner/themes/h3-theme/h3-theme.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'h3-theme',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'h3-theme.settings.json',\n md: 'src/themes/h3-theme'\n });\n \n\n isNotRegistered('h3theme') && (binding.modules['h3theme'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-h3theme' */\n 'partner/themes/h3theme/h3theme.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header'],\n iNM: false,\n ns: '__local__',\n n: 'h3theme',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'h3theme.theme.settings.json',\n md: 'src/themes/h3theme'\n });\n \n\n isNotRegistered('home-carousel') && (binding.modules['home-carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-home-carousel' */\n 'partner/modules/home-carousel/home-carousel.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'home-carousel',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/home-carousel'\n });\n \n\n isNotRegistered('ie-only-message') && (binding.modules['ie-only-message'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-ie-only-message' */\n 'partner/modules/ie-only-message/ie-only-message.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'ie-only-message',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/ie-only-message'\n });\n \n\n isNotRegistered('iframe-module') && (binding.modules['iframe-module'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-iframe-module' */\n 'partner/modules/iframe-module/iframe-module.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'iframe-module',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/iframe-module'\n });\n \n\n isNotRegistered('instagram-integration') && (binding.modules['instagram-integration'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-instagram-integration' */\n 'partner/modules/instagram-integration/instagram-integration.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'instagram-integration',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/instagram-integration'\n });\n \n\n isNotRegistered('intrinsic-wine-co') && (binding.modules['intrinsic-wine-co'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-intrinsic-wine-co' */\n 'partner/themes/intrinsic-wine-co/intrinsic-wine-co.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'intrinsic-wine-co',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'intrinsic-wine-co.theme.settings.json',\n md: 'src/themes/intrinsic-wine-co'\n });\n \n\n isNotRegistered('lightbox') && (binding.modules['lightbox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-lightbox' */\n 'partner/modules/lightbox/lightbox.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'lightbox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/lightbox'\n });\n \n\n isNotRegistered('link-list') && (binding.modules['link-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-link-list' */\n 'partner/modules/link-list/link-list.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'link-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/link-list'\n });\n \n\n isNotRegistered('logo-14hands') && (binding.modules['logo-14hands'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-logo-14hands' */\n 'partner/modules/logo-14hands/logo-14hands.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'logo-14hands',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/logo-14hands'\n });\n \n\n isNotRegistered('mailing-list') && (binding.modules['mailing-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list' */\n 'partner/modules/mailing-list/mailing-list.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list'\n });\n \n\n isNotRegistered('mailing-list-form') && (binding.modules['mailing-list-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list-form' */\n 'partner/modules/mailing-list-form/mailing-list-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list-form'\n });\n \n\n isNotRegistered('mailing-list-popup-modal') && (binding.modules['mailing-list-popup-modal'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list-popup-modal' */\n 'partner/modules/mailing-list-popup-modal/mailing-list-popup-modal.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list-popup-modal',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list-popup-modal'\n });\n \n\n isNotRegistered('mailing-list-redirect-form') && (binding.modules['mailing-list-redirect-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list-redirect-form' */\n 'partner/modules/mailing-list-redirect-form/mailing-list-redirect-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list-redirect-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list-redirect-form'\n });\n \n\n isNotRegistered('multi-carousel') && (binding.modules['multi-carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-multi-carousel' */\n 'partner/modules/multi-carousel/multi-carousel.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'multi-carousel',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/multi-carousel'\n });\n \n\n isNotRegistered('north-star') && (binding.modules['north-star'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-north-star' */\n 'partner/themes/north-star/north-star.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'north-star',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'north-star.theme.settings.json',\n md: 'src/themes/north-star'\n });\n \n\n isNotRegistered('notification') && (binding.modules['notification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-notification' */\n 'partner/modules/notification/notification.tsx'),\n $type: 'contentModule',\n da: [{name:'notification', path:'dataActions/get-notification-message', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'notification',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/notification'\n });\n \n\n isNotRegistered('offer-container') && (binding.modules['offer-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-offer-container' */\n 'partner/modules/offer-container/offer-container.tsx'),\n $type: 'containerModule',\n da: [{name:'offerOptionBus', path:'dataActions/wine-club-offers-bus', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'offer-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/offer-container'\n });\n \n\n isNotRegistered('offer-option-container') && (binding.modules['offer-option-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-offer-option-container' */\n 'partner/modules/offer-option-container/offer-option-container.tsx'),\n $type: 'containerModule',\n da: [{name:'offerOptionBus', path:'dataActions/wine-club-offers-bus', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'offer-option-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/offer-option-container'\n });\n \n\n isNotRegistered('overflow-container') && (binding.modules['overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/modules/overflow-container/overflow-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'overflow-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/overflow-container'\n });\n \n\n isNotRegistered('page-tos') && (binding.modules['page-tos'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-page-tos' */\n 'partner/modules/page-tos/page-tos.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'page-tos',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/page-tos'\n });\n \n\n isNotRegistered('patzhall') && (binding.modules['patzhall'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-patzhall' */\n 'partner/themes/patzhall/patzhall.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'patzhall',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'patzhall.theme.settings.json',\n md: 'src/themes/patzhall'\n });\n \n\n isNotRegistered('pdp-attributes') && (binding.modules['pdp-attributes'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-pdp-attributes' */\n 'partner/modules/pdp-attributes/pdp-attributes.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'pdp-attributes',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/pdp-attributes'\n });\n \n\n isNotRegistered('pdp-dynamic-image') && (binding.modules['pdp-dynamic-image'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-pdp-dynamic-image' */\n 'partner/modules/pdp-dynamic-image/pdp-dynamic-image.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'pdp-dynamic-image',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/pdp-dynamic-image'\n });\n \n\n isNotRegistered('product-apellation') && (binding.modules['product-apellation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-apellation' */\n 'partner/modules/product-apellation/product-apellation.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-apellation',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-apellation'\n });\n \n\n isNotRegistered('product-attributes') && (binding.modules['product-attributes'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-attributes' */\n 'partner/modules/product-attributes/product-attributes.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-attributes',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-attributes'\n });\n \n\n isNotRegistered('product-container') && (binding.modules['product-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-container' */\n 'partner/modules/product-container/product-container.tsx'),\n $type: 'containerModule',\n da: [{name:'productAttributes', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-container'\n });\n \n\n isNotRegistered('product-data-entry') && (binding.modules['product-data-entry'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-data-entry' */\n 'partner/modules/product-data-entry/product-data-entry.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'product-data-entry',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-data-entry'\n });\n \n\n isNotRegistered('product-description') && (binding.modules['product-description'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-description' */\n 'partner/modules/product-description/product-description.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-description',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-description'\n });\n \n\n isNotRegistered('product-link') && (binding.modules['product-link'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-link' */\n 'partner/modules/product-link/product-link.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-link',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-link'\n });\n \n\n isNotRegistered('product-price') && (binding.modules['product-price'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-price' */\n 'partner/modules/product-price/product-price.tsx'),\n $type: 'contentModule',\n da: [{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'hideClubPrice', path:'dataActions/hide-club-price', runOn: 0},{name:'keyedInPrice', path:'dataActions/get-keyed-in-price', runOn: 0},{name:'keyedInPriceError', path:'dataActions/get-keyed-in-price-error', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productPrice', path:'modules/product-price/data-actions/get-price-for-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-price',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-price'\n });\n \n\n isNotRegistered('product-skutitle') && (binding.modules['product-skutitle'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-skutitle' */\n 'partner/modules/product-skutitle/product-skutitle.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-skutitle',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-skutitle'\n });\n \n\n isNotRegistered('promo-banner-cookie') && (binding.modules['promo-banner-cookie'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-promo-banner-cookie' */\n 'partner/modules/promo-banner-cookie/promo-banner-cookie.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'promo-banner-cookie',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/promo-banner-cookie'\n });\n \n\n isNotRegistered('reset-subscription') && (binding.modules['reset-subscription'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-reset-subscription' */\n 'partner/modules/reset-subscription/reset-subscription.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'reset-subscription',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/reset-subscription'\n });\n \n\n isNotRegistered('scroll-anim-container') && (binding.modules['scroll-anim-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-scroll-anim-container' */\n 'partner/modules/scroll-anim-container/scroll-anim-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'scroll-anim-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/scroll-anim-container'\n });\n \n\n isNotRegistered('scroll-event-manager') && (binding.modules['scroll-event-manager'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-scroll-event-manager' */\n 'partner/modules/scroll-event-manager/scroll-event-manager.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'scroll-event-manager',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/scroll-event-manager'\n });\n \n\n isNotRegistered('shipping-map') && (binding.modules['shipping-map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-map' */\n 'partner/modules/shipping-map/shipping-map.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'shipping-map',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/shipping-map'\n });\n \n\n isNotRegistered('shipping-popup') && (binding.modules['shipping-popup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-popup' */\n 'partner/modules/shipping-popup/shipping-popup.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'shipping-popup',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/shipping-popup'\n });\n \n\n isNotRegistered('shipping-service') && (binding.modules['shipping-service'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-service' */\n 'partner/modules/shipping-service/shipping-service.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'shipping-service',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/shipping-service'\n });\n \n\n isNotRegistered('single-product-container') && (binding.modules['single-product-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-single-product-container' */\n 'partner/modules/single-product-container/single-product-container.tsx'),\n $type: 'containerModule',\n da: [{name:'productAttributes', path:'modules/single-product-container/data-actions/get-single-product', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'single-product-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/single-product-container'\n });\n \n\n isNotRegistered('smart-sticky-nav') && (binding.modules['smart-sticky-nav'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smart-sticky-nav' */\n 'partner/modules/smart-sticky-nav/smart-sticky-nav.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smart-sticky-nav',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smart-sticky-nav'\n });\n \n\n isNotRegistered('smwe') && (binding.modules['smwe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe' */\n 'partner/themes/smwe/smwe.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'smwe',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'smwe.theme.settings.json',\n md: 'src/themes/smwe'\n });\n \n\n isNotRegistered('smwe-account-management-address') && (binding.modules['smwe-account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-account-management-address' */\n 'partner/modules/smwe-account-management-address/smwe-account-management-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-account-management-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-account-management-address'\n });\n \n\n isNotRegistered('smwe-breadcrumb') && (binding.modules['smwe-breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-breadcrumb' */\n 'partner/modules/smwe-breadcrumb/smwe-breadcrumb.tsx'),\n $type: 'contentModule',\n da: [{name:'breadcrumbData', path:'modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action', runOn: 1},{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-breadcrumb',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-breadcrumb'\n });\n \n\n isNotRegistered('smwe-buybox') && (binding.modules['smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/modules/smwe-buybox/smwe-buybox.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 1},{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'keyedInPrice', path:'dataActions/get-keyed-in-price', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailability', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-buybox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-buybox'\n });\n \n\n isNotRegistered('smwe-cart') && (binding.modules['smwe-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-cart' */\n 'partner/modules/smwe-cart/smwe-cart.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-cart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-cart'\n });\n \n\n isNotRegistered('smwe-checkout') && (binding.modules['smwe-checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout' */\n 'partner/modules/smwe-checkout/smwe-checkout.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'products', path:'modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout'\n });\n \n\n isNotRegistered('smwe-checkout-billing-address') && (binding.modules['smwe-checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-billing-address' */\n 'partner/modules/smwe-checkout-billing-address/smwe-checkout-billing-address.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0},{name:'countryStates', path:'dataActions/get-country-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-billing-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-billing-address'\n });\n \n\n isNotRegistered('smwe-checkout-delivery-options') && (binding.modules['smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/modules/smwe-checkout-delivery-options/smwe-checkout-delivery-options.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-delivery-options',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-delivery-options'\n });\n \n\n isNotRegistered('smwe-checkout-gift-card') && (binding.modules['smwe-checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-gift-card' */\n 'partner/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-gift-card',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-gift-card'\n });\n \n\n isNotRegistered('smwe-checkout-section-container') && (binding.modules['smwe-checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-section-container' */\n 'partner/modules/smwe-checkout-section-container/smwe-checkout-section-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-section-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-section-container'\n });\n \n\n isNotRegistered('smwe-checkout-shipping-address') && (binding.modules['smwe-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-shipping-address' */\n 'partner/modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'cart', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-checkout-cart', runOn: 1},{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0},{name:'countryStates', path:'dataActions/get-country-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-shipping-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-shipping-address'\n });\n \n\n isNotRegistered('smwe-footer-item') && (binding.modules['smwe-footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-footer-item' */\n 'partner/modules/smwe-footer-item/smwe-footer-item.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-footer-item',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-footer-item'\n });\n \n\n isNotRegistered('smwe-iframe') && (binding.modules['smwe-iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-iframe' */\n 'partner/modules/smwe-iframe/smwe-iframe.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-iframe',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-iframe'\n });\n \n\n isNotRegistered('smwe-media-gallery') && (binding.modules['smwe-media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-media-gallery' */\n 'partner/modules/smwe-media-gallery/smwe-media-gallery.tsx'),\n $type: 'containerModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-media-gallery',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-media-gallery'\n });\n \n\n isNotRegistered('smwe-minicart') && (binding.modules['smwe-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-minicart' */\n 'partner/modules/smwe-minicart/smwe-minicart.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-minicart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-minicart'\n });\n \n\n isNotRegistered('smwe-navigation-menu') && (binding.modules['smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/modules/smwe-navigation-menu/smwe-navigation-menu.tsx'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-navigation-menu',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-navigation-menu'\n });\n \n\n isNotRegistered('smwe-order-details') && (binding.modules['smwe-order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-order-details' */\n 'partner/modules/smwe-order-details/smwe-order-details.tsx'),\n $type: 'contentModule',\n da: [{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-order-details',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-order-details'\n });\n \n\n isNotRegistered('smwe-product-collection') && (binding.modules['smwe-product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-product-collection' */\n 'partner/modules/smwe-product-collection/smwe-product-collection.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-product-collection',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-product-collection'\n });\n \n\n isNotRegistered('smwe-search-result-container') && (binding.modules['smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/modules/smwe-search-result-container/smwe-search-result-container.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'listPageState', path:'dataActions/search-result-container/list-page-state', runOn: 0},{name:'products', path:'dataActions/search-result-container/smwe-get-full-products-by-collection', runOn: 0},{name:'refiners', path:'dataActions/search-result-container/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'dataActions/search-result-container/get-mapped-search-configuration', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-search-result-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-search-result-container'\n });\n \n\n isNotRegistered('smwe-sign-up') && (binding.modules['smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/modules/smwe-sign-up/smwe-sign-up.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-sign-up',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-sign-up'\n });\n \n\n isNotRegistered('smwe-sku-selector-container') && (binding.modules['smwe-sku-selector-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sku-selector-container' */\n 'partner/modules/smwe-sku-selector-container/smwe-sku-selector-container.tsx'),\n $type: 'containerModule',\n da: [{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-sku-selector-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-sku-selector-container'\n });\n \n\n isNotRegistered('sort-and-filter-container') && (binding.modules['sort-and-filter-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sort-and-filter-container' */\n 'partner/modules/sort-and-filter-container/sort-and-filter-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'sort-and-filter-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/sort-and-filter-container'\n });\n \n\n isNotRegistered('spring-valley-vineyard') && (binding.modules['spring-valley-vineyard'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-spring-valley-vineyard' */\n 'partner/themes/spring-valley-vineyard/spring-valley-vineyard.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'spring-valley-vineyard',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'spring-valley-vineyard.theme.settings.json',\n md: 'src/themes/spring-valley-vineyard'\n });\n \n\n isNotRegistered('stagsleap') && (binding.modules['stagsleap'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stagsleap' */\n 'partner/themes/stagsleap/stagsleap.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header'],\n iNM: false,\n ns: '__local__',\n n: 'stagsleap',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'stagsleap.theme.settings.json',\n md: 'src/themes/stagsleap'\n });\n \n\n isNotRegistered('stemichelle') && (binding.modules['stemichelle'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stemichelle' */\n 'partner/themes/stemichelle/stemichelle.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','content-block','header'],\n iNM: false,\n ns: '__local__',\n n: 'stemichelle',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'stemichelle.theme.settings.json',\n md: 'src/themes/stemichelle'\n });\n \n\n isNotRegistered('stemichelle-new') && (binding.modules['stemichelle-new'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stemichelle-new' */\n 'partner/themes/stemichelle-new/stemichelle-new.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['carousel','container-with-header','content-block','header','order-confirmation','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'stemichelle-new',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'stemichelle-new.theme.settings.json',\n md: 'src/themes/stemichelle-new'\n });\n \n\n isNotRegistered('subscription-box') && (binding.modules['subscription-box'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-box' */\n 'partner/modules/subscription-box/subscription-box.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscription-box',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscription-box'\n });\n \n\n isNotRegistered('subscription-management') && (binding.modules['subscription-management'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-management' */\n 'partner/modules/subscription-management/subscription-management.tsx'),\n $type: 'contentModule',\n da: [{name:'addresses', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'creditCards', path:'modules/subscription-management/actions/get-subscription-cards.action', runOn: 1},{name:'subscriptions', path:'modules/subscription-management/actions/get-subscriptions.action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscription-management',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscription-management'\n });\n \n\n isNotRegistered('subscription-restriction-button') && (binding.modules['subscription-restriction-button'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-restriction-button' */\n 'partner/modules/subscription-restriction-button/subscription-restriction-button.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscription-restriction-button',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscription-restriction-button'\n });\n \n\n isNotRegistered('subscriptions-minicart') && (binding.modules['subscriptions-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscriptions-minicart' */\n 'partner/modules/subscriptions-minicart/subscriptions-minicart.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscriptions-minicart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscriptions-minicart'\n });\n \n\n isNotRegistered('tasting-notes') && (binding.modules['tasting-notes'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-tasting-notes' */\n 'partner/modules/tasting-notes/tasting-notes.tsx'),\n $type: 'contentModule',\n da: [{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'tasting-notes',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/tasting-notes'\n });\n \n\n isNotRegistered('timeline') && (binding.modules['timeline'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-timeline' */\n 'partner/modules/timeline/timeline.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'timeline',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/timeline'\n });\n \n\n isNotRegistered('validation-form') && (binding.modules['validation-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-validation-form' */\n 'partner/modules/validation-form/validation-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'validation-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/validation-form'\n });\n \n\n isNotRegistered('video-background') && (binding.modules['video-background'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-video-background' */\n 'partner/modules/video-background/video-background.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'video-background',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/video-background'\n });\n \n\n isNotRegistered('vineyard-map') && (binding.modules['vineyard-map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-vineyard-map' */\n 'partner/modules/vineyard-map/vineyard-map.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'vineyard-map',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/vineyard-map'\n });\n \n\n isNotRegistered('wine-club') && (binding.modules['wine-club'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club' */\n 'partner/modules/wine-club/wine-club.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club'\n });\n \n\n isNotRegistered('wine-club-content') && (binding.modules['wine-club-content'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-content' */\n 'partner/modules/wine-club-content/wine-club-content.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club-content',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club-content'\n });\n \n\n isNotRegistered('wine-club-management') && (binding.modules['wine-club-management'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-management' */\n 'partner/modules/wine-club-management/wine-club-management.tsx'),\n $type: 'contentModule',\n da: [{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0},{name:'wineClubMember', path:'modules/wine-club-management/actions/get-membership.action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club-management',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club-management'\n });\n \n\n isNotRegistered('wine-club-signup') && (binding.modules['wine-club-signup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-signup' */\n 'partner/modules/wine-club-signup/wine-club-signup.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club-signup',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club-signup'\n });\n \n\n isNotRegistered('wine-finder-by-zip') && (binding.modules['wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/modules/wine-finder-by-zip/wine-finder-by-zip.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-finder-by-zip',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-finder-by-zip'\n });\n \n\n isNotRegistered('wine-finder-form') && (binding.modules['wine-finder-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-form' */\n 'partner/modules/wine-finder-form/wine-finder-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-finder-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-finder-form'\n });\n \n\n isNotRegistered('youtube-modal') && (binding.modules['youtube-modal'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-youtube-modal' */\n 'partner/modules/youtube-modal/youtube-modal.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'youtube-modal',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/youtube-modal'\n });\n \n\n { \n const actionPath = 'actions/get-availabilities-cartlines.overide.action';\n binding.dataActions[actionPath] = require('partner/actions/get-availabilities-cartlines.overide.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/get-product-availabilities-for-selected-variant.override.action';\n binding.dataActions[actionPath] = require('partner/actions/get-product-availabilities-for-selected-variant.override.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/get-ratings-summary.override.action';\n binding.dataActions[actionPath] = require('partner/actions/get-ratings-summary.override.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/products-by-category.action';\n binding.dataActions[actionPath] = require('partner/actions/products-by-category.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/products-by-recommendation.action';\n binding.dataActions[actionPath] = require('partner/actions/products-by-recommendation.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/family-and-friends/actions/get-friends-and-family-list.action';\n binding.dataActions[actionPath] = require('partner/modules/family-and-friends/actions/get-friends-and-family-list.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/family-and-friends/actions/validate-friends-and-family.action';\n binding.dataActions[actionPath] = require('partner/modules/family-and-friends/actions/validate-friends-and-family.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/get-subscription-cards.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/get-subscription-cards.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/get-subscriptions.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/get-subscriptions.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/subscription-state.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/subscription-state.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/subscription-update.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/subscription-update.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/get-membership.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/get-membership.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/membership-edit.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/membership-edit.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/membership-state.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/membership-state.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/wine-shipment-state.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/wine-shipment-state.action');\n registerActionId(actionPath);\n }\n\n if (isNotRegistered('cart-affiliations-maintainer')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-affiliations-maintainer')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cartmanager')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-club-info-collector')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-club-info-collector')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-date-of-birth')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-terms-and-conditions')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout-utilities/dist/lib/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/checkout-utilities/dist/lib/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('clear-wineclub')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('conditional-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cookbook-tagline')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cookbook-tagline')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-mapped-search-configuration';\n let dataAction = require('partner/dataActions/search-result-container/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-refiners-for-collection';\n let dataAction = require('partner/dataActions/search-result-container/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/list-page-state';\n let dataAction = require('partner/dataActions/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/smwe-get-full-products-by-collection';\n let dataAction = require('partner/dataActions/search-result-container/smwe-get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('employee-route-switcher')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-description')){\n const sanitizedActionPath = 'dataActions/get-event-description';\n let dataAction = require('partner/dataActions/get-event-description');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-products-by-refine-search-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-products-by-refine-search-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = 'dataActions/get-products-with-attributes-by-category';\n let dataAction = require('partner/dataActions/get-products-with-attributes-by-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-schedule')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-schedule')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-schedule')){\n const sanitizedActionPath = 'dataActions/get-event-description';\n let dataAction = require('partner/dataActions/get-event-description');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('family-and-friends')){\n const sanitizedActionPath = 'modules/family-and-friends/actions/get-friends-and-family-list.action';\n let dataAction = require('partner/modules/family-and-friends/actions/get-friends-and-family-list.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('notification')){\n const sanitizedActionPath = 'dataActions/get-notification-message';\n let dataAction = require('partner/dataActions/get-notification-message');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('offer-container')){\n const sanitizedActionPath = 'dataActions/wine-club-offers-bus';\n let dataAction = require('partner/dataActions/wine-club-offers-bus');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('offer-option-container')){\n const sanitizedActionPath = 'dataActions/wine-club-offers-bus';\n let dataAction = require('partner/dataActions/wine-club-offers-bus');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('pdp-attributes')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('pdp-attributes')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('pdp-dynamic-image')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-apellation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-apellation')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-attributes')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-attributes')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-container')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-description')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-description')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-link')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'dataActions/get-keyed-in-price';\n let dataAction = require('partner/dataActions/get-keyed-in-price');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'dataActions/get-keyed-in-price-error';\n let dataAction = require('partner/dataActions/get-keyed-in-price-error');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'dataActions/hide-club-price';\n let dataAction = require('partner/dataActions/hide-club-price');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'modules/product-price/data-actions/get-price-for-selected-variant';\n let dataAction = require('partner/modules/product-price/data-actions/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-skutitle')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-skutitle')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reset-subscription')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('single-product-container')){\n const sanitizedActionPath = 'modules/single-product-container/data-actions/get-single-product';\n let dataAction = require('partner/modules/single-product-container/data-actions/get-single-product');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-account-management-address')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-breadcrumb')){\n const sanitizedActionPath = 'modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action';\n let dataAction = require('partner/modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = 'dataActions/get-keyed-in-price';\n let dataAction = require('partner/dataActions/get-keyed-in-price');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = 'modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart';\n let dataAction = require('partner/modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-billing-address')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-billing-address')){\n const sanitizedActionPath = 'dataActions/get-country-state';\n let dataAction = require('partner/dataActions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-gift-card')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-checkout-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = 'dataActions/get-country-state';\n let dataAction = require('partner/dataActions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-media-gallery')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-navigation-menu')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-product-collection')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-mapped-search-configuration';\n let dataAction = require('partner/dataActions/search-result-container/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-refiners-for-collection';\n let dataAction = require('partner/dataActions/search-result-container/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/list-page-state';\n let dataAction = require('partner/dataActions/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/smwe-get-full-products-by-collection';\n let dataAction = require('partner/dataActions/search-result-container/smwe-get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-sku-selector-container')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-box')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-management')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-management')){\n const sanitizedActionPath = 'modules/subscription-management/actions/get-subscription-cards.action';\n let dataAction = require('partner/modules/subscription-management/actions/get-subscription-cards.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-management')){\n const sanitizedActionPath = 'modules/subscription-management/actions/get-subscriptions.action';\n let dataAction = require('partner/modules/subscription-management/actions/get-subscriptions.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-restriction-button')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tasting-notes')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club-management')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club-management')){\n const sanitizedActionPath = 'modules/wine-club-management/actions/get-membership.action';\n let dataAction = require('partner/modules/wine-club-management/actions/get-membership.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club-signup')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionUpdateInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionUpdateResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class SubscriptionUpdateInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `ISubscriptionUpdateInput`;\r\n public getCacheObjectType = () => 'ISubscriptionUpdateInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface ISubscriptionUpdateData extends IrsmSubscriptionUpdateResponse { }\r\n\r\nexport interface IInputRequirements {\r\n subscriptionId: string;\r\n subscriptionName: string;\r\n nextOrderDate: string;\r\n addressId: string;\r\n customerId?: string;\r\n frequency: string;\r\n cardId: string;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createSubscriptionUpdateInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n {\r\n subscriptionId,\r\n subscriptionName,\r\n nextOrderDate,\r\n addressId,\r\n customerId,\r\n cardId,\r\n frequency\r\n }: IInputRequirements\r\n): SubscriptionUpdateInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || customerId;\r\n return new SubscriptionUpdateInput(\r\n subscriptionUpdateInput(subscriptionId, subscriptionName, nextOrderDate, addressId, frequency, accNumber!, cardId)\r\n );\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nexport async function subscriptionUpdateAction(input: SubscriptionUpdateInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >subscriptionUpdateAction,\r\n input: createSubscriptionUpdateInput\r\n});\r\n","import { FullProduct, IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Refine search for full products input\n */\nexport class FullProductsRefineSearchByCategoryInput implements IActionInput {\n public readonly categoryId?: number;\n public readonly channelId?: number;\n public readonly refinementCriteria: ProductRefinerValue[];\n public readonly catalogId: number;\n public ProductDetailsCriteria?: ProductDetailsCriteria;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId || 0;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => `FullProductsRefineSearchByCategoryInputCache`;\n public getCacheObjectType = () => 'FullProductsRefineSearchByCategoryInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls\n */\nexport const createFullProductsRefineSearchByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByCategoryInput(queryResultSettingsProxy);\n }\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n const categoryId = Number(inputData.requestContext.query.categoryId);\n const channelId = inputData.requestContext.apiSettings.channelId;\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n return new FullProductsRefineSearchByCategoryInput(\n queryResultSettingsProxy,\n categoryId,\n +channelId,\n refinementCriteria,\n catalogId,\n productDetailsCriteria\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * Calls the refine-search-by-category action.\n * Based on search result calls get-full-products to get all the product details.\n */\nexport async function getFullProductsByRefineSearchCategoryAction(\n input: FullProductsRefineSearchByCategoryInput,\n ctx: IActionContext\n): Promise {\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n const hasSortingColumn = input.queryResultSettingsProxy.QueryResultSettings &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns.length > 0;\n if (!input.refinementCriteria.length && !hasSortingColumn) {\n ctx.telemetry.trace('[getFullProductsByRefineSearchCategoryAction] No refiners or sorting specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let refinementCriteria: ProductRefinerValue[] = [];\n const fullProductInputs = await refineSearchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId,\n input.categoryId || 0,\n input.refinementCriteria\n ).then(searchResults => {\n refinementCriteria = input.refinementCriteria;\n return searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria || new ProductDetailsCriteria());\n }\n );\n });\n\n if (fullProductInputs.length > 0) {\n const productResult = await >getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria: refinementCriteria\n };\n } else {\n return {\n productSearchResult: [],\n refinementCriteria: refinementCriteria\n };\n }\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-category',\n action: >getFullProductsByRefineSearchCategoryAction,\n input: createFullProductsRefineSearchByCategoryInput,\n isBatched: false\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ProductAvailableQuantity, ProductDeliveryOptions } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { buildCacheKey, } from './index';\nimport {ActiveCartProductsInput, getActiveCartProductsAction} from './index';\n\n/**\n * Input class for delivery options for items in cart\n */\nexport class ProductDeliveryOptionsForCartLineItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCartLineItemsDeliveryOptions`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCartLineItemsDeliveryOptions';\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductDeliveryOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the delivery options for items in the cart\n */\nexport async function getDeliveryOptionsForCartLineItems(input: ProductDeliveryOptionsForCartLineItems, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getDeliveryOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if(!cart || !products || products.length === 0) {\n console.log('[getDeliveryOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n ctx.trace('[getDeliveryOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n return getDeliveryOptionsAsync({ callerContext: ctx, queryResultSettings: {} }, products.map(x => x.RecordId), {}, null)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getDeliveryOptionsForCartLineItems]Error executing action`);\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-cartlines',\n action: >getDeliveryOptionsForCartLineItems,\n input: createInput\n});\n","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * These are the get user review API inputs\n */\nexport class GetUserReviewInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The user's authorization token\n */\n public authorization: string;\n\n /**\n * The ratings and reviews service endpoint\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n authorization: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.authorization = authorization;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'GetUserReview';\n public getCacheObjectType = () => 'GetUserReview';\n public dataCacheType = (): CacheType => 'none';\n}\n","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext, } from '@msdyn365-commerce/core';\r\nimport { ProductAvailableQuantity } from '@msdyn365-commerce/retail-proxy';\r\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n/**\r\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\r\n */\r\n// tslint:disable-next-line: no-unnecessary-class\r\nexport class ProductAvailabilitiesForSelectedVariantInput implements IActionInput {\r\n public channelId: number;\r\n public productId: number;\r\n\r\n constructor(productId: string | number, channelId: number) {\r\n this.productId = typeof productId === 'string' ? +productId : productId;\r\n this.channelId = channelId;\r\n }\r\n\r\n public getCacheKey = () => `ProductAvailabilitiesForSelectedVariant`;\r\n public getCacheObjectType = () => 'ProductAvailabilities';\r\n public dataCacheType = ():CacheType => 'none';\r\n}\r\n/**\r\n * createInput method for the getProductAvailabilitiesForSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method\r\n */\r\nexport const createProductAvailabilitiesForSelectedVariantInput = (inputData: ICreateActionContext): IActionInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n if (productId) {\r\n return new ProductAvailabilitiesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\r\n } else {\r\n throw new Error('Unable to create ProductAvailabilitiesForSelectedVariantInput, no productId found on module config or query');\r\n }\r\n};\r\n/**\r\n * The action method for the getProductAvailabilitiesForSelectedVariant data action\r\n */\r\nexport async function getProductAvailabilitiesForSelectedVariantAction(input: ProductAvailabilitiesForSelectedVariantInput, ctx: IActionContext): Promise {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n return getSelectedVariant(selectedVariantInput, ctx)\r\n .then(productResult => {\r\n if (productResult) {\r\n return getEstimatedAvailabilityAsync({ callerContext: ctx, queryResultSettings: {} }, { ProductIds: [productResult.RecordId], DefaultWarehouseOnly: true}).then(response => {\r\n if (response && response.ProductWarehouseInventoryAvailabilities && response.ProductWarehouseInventoryAvailabilities.length) {\r\n // translate data to support deprecated retail service call getProductAvailabilitiesAsync\r\n const formattedResponse = response.ProductWarehouseInventoryAvailabilities?.map((product) => {\r\n return {ProductId: product.ProductId, AvailableQuantity: product.PhysicalAvailable, ExtensionProperties: product.ExtensionProperties};\r\n });\r\n return formattedResponse[0];\r\n }\r\n return null;\r\n });\r\n }\r\n return null;\r\n })\r\n .catch((error) => {\r\n ctx.trace(error.message);\r\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\r\n });\r\n}\r\n/**\r\n * The complete getProductAvailabilitiesForSelectedVariant data action\r\n * Get the currently selected variant via the getSelectedVariant data action, and\r\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API\r\n */\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-product-availabilities-for-selected-variant',\r\n action: >getProductAvailabilitiesForSelectedVariantAction,\r\n input: <(args: ICreateActionContext) => IActionInput>createProductAvailabilitiesForSelectedVariantInput\r\n});","import { CacheType, IAction, IActionContext, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address } from '@msdyn365-commerce/retail-proxy';\n\nimport { buildCacheKey } from './utilities/utils';\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the getAddress data action\n */\nexport class AddressInput implements IActionInput {\n public userAccountNumber?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetAddress-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetAddress';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the getAddress method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetAddressInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create address input. User is not authenticated.');\n }\n\n return new AddressInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getAddress data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getAddressAction(input: AddressInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, input.userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to get customer');\n }\n\n return customer.Addresses || [];\n}\n\n/**\n * The getAddress data action\n * Gets a customers information via the read RetailServer API\n * Returns address information associated with the retrieved customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-address',\n action: >getAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetAddressInput\n});","import { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductAvailableQuantity, ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInventoryInformation } from './product-inventory-information';\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity\n */\nexport function mapProductInventoryInformation(ctx: IActionContext,productsWarehouseInventory?: ProductWarehouseInventoryAvailability[]): IProductInventoryInformation[] {\n const productInventoryInformation: IProductInventoryInformation[] = [];\n\n if(ctx.requestContext.app.config.enableStockCheck === undefined || ctx.requestContext.app.config.enableStockCheck === false) {\n return productInventoryInformation;\n }\n\n if(productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for(const product of productsWarehouseInventory) {\n switch(ctx.requestContext.app.config.inventoryLevel){\n case 'physicalAvailable':\n // Inventory level is enabled with Physical inventory\n const physicalProductMap = mapInventoryWithPhysicalBufferEnabled(ctx, product);\n if(physicalProductMap){\n productInventoryInformation.push(physicalProductMap);\n }\n break;\n case 'totalAvailable':\n // Inventory level is enabled with Total available inventory\n const totalAvailableProductMap = mapInventoryWithTotalAvailableBufferEnabled(ctx, product);\n if(totalAvailableProductMap){\n productInventoryInformation.push(totalAvailableProductMap);\n }\n break;\n default:\n // when inventory level is inventoryThreshold or not defined\n const productMap = mapInventoryWithThresholdEnabled(ctx, product);\n if(productMap){\n productInventoryInformation.push(productMap);\n }\n break;\n }\n }\n }\n return productInventoryInformation;\n}\n\nexport function mapInventoryWithThresholdEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability) : IProductInventoryInformation | null {\n if(productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable!==undefined) {\n const productQty = productWarehouseInventoryAvailability.TotalAvailable - ctx.requestContext.app.config.outOfStockThreshold;\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId, \n AvailableQuantity: productQty > 0? productQty : 0\n }\n\n return {\n ProductAvailableQuantity:productAvailableQuantity,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity && productAvailableQuantity.AvailableQuantity > 0 ? true : false,\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function mapInventoryWithPhysicalBufferEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(ctx, productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode);\n\n if(productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS, \n //if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n const productQuantity = productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode === 'OOS' \n ? 0 \n :productWarehouseInventoryAvailability.PhysicalAvailable;\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId, \n AvailableQuantity: productQuantity\n }\n return {\n ProductAvailableQuantity:productAvailableQuantity,\n StockLevelCode: shouldRenderLabel? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode: undefined,\n StockLevelLabel: shouldRenderLabel? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelLabel: undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && (productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function mapInventoryWithTotalAvailableBufferEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(ctx, productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode);\n if(productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS, \n //if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n const productQuantity = productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode === 'OOS' \n ? 0 \n :productWarehouseInventoryAvailability.TotalAvailable;\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId, \n AvailableQuantity: productQuantity\n }\n return {\n ProductAvailableQuantity:productAvailableQuantity,\n StockLevelCode: shouldRenderLabel? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode: undefined,\n StockLevelLabel: shouldRenderLabel? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelLabel: undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && (productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function displayLabelEnabled(ctx: IActionContext, inventoryCode?:string) : boolean {\n if(!inventoryCode){\n return false;\n }\n\n switch(ctx.requestContext.app.config.inventoryRanges) {\n case 'lowAndOutofStock':\n if(inventoryCode !== 'AVAIL'){\n return true;\n }\n break;\n case 'outOfStock':\n if(inventoryCode == 'OOS'){\n return true;\n }\n break;\n case 'all':\n return true;\n }\n return false;\n}","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOption, FeatureState, OrgUnitAvailability, OrgUnitLocation, SearchArea, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionsAsync, getOrgUnitLocationsByAreaAsync, getStoreHoursAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport {FeatureStateInput, getFeatureStateAction} from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\n\n/**\n * Get selected variant action input class\n */\nexport class GetOrgUnitLocationsByAreaInput implements IActionInput {\n public Latitude?: number;\n public Longitude?: number;\n public Radius?: number;\n public DistanceUnitValue?: number;\n public IgnoreLocation?: boolean;\n\n constructor(_Latitude?: number, _Longitude?: number, _Radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.Latitude = _Latitude;\n this.Longitude = _Longitude;\n this.Radius = _Radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => `GetOrgUnitLocationsByAreaInput`;\n public getCacheObjectType = () => 'GetOrgUnitLocationsByAreaInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetOrgUnitLocationsByAreaInput = (inputData: ICreateActionContext>): GetOrgUnitLocationsByAreaInput => {\n return new GetOrgUnitLocationsByAreaInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data action\n * @param input The action input class\n * @param ctx The action context\n */\nexport async function getOrgUnitLocationsByArea(\n input: GetOrgUnitLocationsByAreaInput,\n ctx: IActionContext\n): Promise {\n\n if ((input.Radius === undefined || !input.Latitude || !input.Longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.Latitude,\n Longitude: input.Longitude,\n Radius: input.Radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n\n return getOrgUnitLocationsByAreaAsync({ callerContext: ctx }, searchArea)\n .then(async (stores: OrgUnitLocation[]) => {\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n // if mulitple pickup mode is enable then call getchanneldeliveryoption\n if(retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n const locationPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(_channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId);\n return _getLocationWithHours(store, locationDeliveryOption, ctx);\n });\n return Promise.all(locationPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetOrgUnitLocationsByArea] error getting Locations');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[GetOrgUnitLocationsByArea] error getting Locations`);\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information\n * @param orgUnitLocation The org unit location\n * @param storeMap a map that contains store information group by the inventory location id\n * @param ctx The action context\n */\nasync function _getLocationWithHours(\n orgUnitLocation: OrgUnitLocation,channelDeleiveryOptions: ChannelDeliveryOption | undefined,\n ctx: IActionContext): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions};\n }\n\n return { OrgUnitAvailability: availability, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] error getting availability with hours`);\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the store information\n * @param channelCollection The org unit channel Id list\n * @param ctx The action context\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number| undefined)[],\n ctx: IActionContext): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if(id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // to get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync({ callerContext: ctx }, channelIdList, 4)\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options`);\n return [];\n });\n}\n\n/**\n * The complete getOrgUnitLocationsByArea data action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-store-location-information',\n action: >getOrgUnitLocationsByArea,\n input: createGetOrgUnitLocationsByAreaInput\n});","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\n\nimport { getActivePricesAsync, getProductRatingsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport getSimpleProducts, { ProductInput } from './get-simple-products';\nimport { buildCacheKey, generateKey, getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\nimport * as semver from 'semver';\n\n/**\n * Full Product Input\n */\nexport class FullProductInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public ProductDetailsCriteria: ProductDetailsCriteria;\n\n private apiSettings: ICommerceApiSettings;\n\n constructor(productId: number | string, apiSettings: ICommerceApiSettings, criteria: ProductDetailsCriteria) {\n this.productId = typeof productId === 'string' ? parseInt(productId, 10) : productId;\n this.ProductDetailsCriteria = criteria;\n this.apiSettings = apiSettings;\n this.channelId = apiSettings.channelId;\n }\n\n public getCacheKey = () => {\n const { getPrice, getRating } = this.ProductDetailsCriteria;\n return buildCacheKey(generateKey([this.productId, getPrice, getRating]), this.apiSettings);\n };\n public getCacheObjectType = () => 'FullProduct';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Class to define criteria to get full product like price, ratings etc.\n */\nexport class ProductDetailsCriteria {\n public getPrice: boolean;\n public getRating: boolean;\n constructor(getPrice?: boolean, getRating?: boolean) {\n this.getPrice = getPrice || false;\n this.getRating = getRating || false;\n }\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (typeof productIds === 'string') {\n productIds = productIds.split(',');\n }\n if (Array.isArray(productIds) && productIds.length) {\n return productIds.map((productId: string) => {\n return new FullProductInput(+productId, inputData.requestContext.apiSettings, productDetailsCriteria);\n });\n }\n return [];\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput\n */\nexport async function getFullProductsAction(inputs: FullProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || !inputs.length) {\n ctx.trace('[getFullProductsAction] Invalid or empty inputs passed.');\n return {};\n }\n\n const { apiSettings } = ctx.requestContext;\n const productInputs = inputs.map(\n (input: FullProductInput): ProductInput => {\n return new ProductInput(input.productId, apiSettings);\n }\n );\n\n return getSimpleProducts(productInputs, ctx)\n .then(result => {\n return result.map(product => {\n return { ProductDetails: product };\n });\n })\n .then((productCollection: FullProduct[]) => {\n const validProductIds = new Set(productCollection.map(input => input.ProductDetails && input.ProductDetails.RecordId));\n\n const ratingsAndPricePromises = [\n _getActivePrices(inputs, validProductIds, productCollection, ctx),\n _getProductRatings(inputs, validProductIds, productCollection, ctx)\n ];\n return Promise.all(ratingsAndPricePromises).then(() => {\n return productCollection;\n });\n })\n .catch(e => {\n ctx.telemetry.exception(e);\n ctx.telemetry.debug(`Unable to get Simple products`);\n return [];\n });\n}\n\nasync function _getActivePrices(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: 0 };\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getPrice && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n projectDomain,\n validInputs,\n new Date(),\n null,\n [],\n true\n // @ts-ignore\n ).then(result => {\n // @ts-ignore\n result.forEach(productPrice => {\n const fullProduct: FullProduct | undefined = productCollection.find(x=> {\n return x.ProductDetails && x.ProductDetails.RecordId === productPrice.ProductId;\n });\n if (fullProduct) {\n // If RS Verison < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (semver.lt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n fullProduct.ProductPrice = productPrice;\n }\n });\n })\n .catch((error: Error) => {\n const telemetry = ctx.telemetry;\n telemetry.debug('[getActivePricesAsync] Unable to get active price.');\n telemetry.exception(error);\n });\n }\n\nasync function _getProductRatings(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getRating && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n return getProductRatingsAsync({ callerContext: ctx, queryResultSettings: {} }, validInputs)\n .then(result => {\n result.forEach(productRating => {\n const fullProduct: FullProduct | undefined = productCollection.find(x=> {\n return x.ProductDetails && x.ProductDetails.RecordId === productRating.ProductId;\n });\n if (fullProduct) {\n fullProduct.ProductRating = productRating;\n }\n });\n })\n .catch(err => {\n const telemetry = ctx.telemetry;\n telemetry.debug(`[getProductRatingsAsync] Unable to get product ratings.`);\n telemetry.exception(err);\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products',\n action: >getFullProductsAction,\n input: createInput,\n isBatched: true\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetByIds = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetByIds = async (\n _inputs: IActionInput | IActionInput[],\n simpleProducts: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n if (!Array.isArray(simpleProducts)) {\n simpleProducts = [simpleProducts];\n }\n\n simpleProducts.forEach(async product => {\n if (product) {\n product = await Promise.resolve(product);\n const productInfo = getProductInfoFromSimpleProduct(product);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n }\n });\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetByIds',\n postReaderHook: afterGetByIds,\n preReaderHook: beforeGetByIds\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n buildCacheKey,\r\n QueryResultSettingsProxy\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n IActionInput,\r\n ICommerceApiSettings,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport { IQueryResultSettings, ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\r\nimport { hydrateRefinersFromUrl } from './url-utils';\r\n\r\nexport type listPageType = 'Category' | 'Search' | 'Unknown';\r\n\r\n/**\r\n * BaseCollection Action Input\r\n */\r\nexport class BaseCollectionInput implements IActionInput {\r\n public pageType: listPageType;\r\n public category: number | undefined;\r\n public searchText: string | undefined;\r\n public refiners: ProductRefinerValue[];\r\n public queryResultSettings: IQueryResultSettings;\r\n public apiSettings: ICommerceApiSettings;\r\n\r\n constructor(\r\n pageType: listPageType,\r\n apiSettings: ICommerceApiSettings,\r\n queryResultSettings: IQueryResultSettings,\r\n refiners: ProductRefinerValue[],\r\n category: number | undefined,\r\n searchText: string | undefined\r\n ) {\r\n this.pageType = pageType;\r\n this.apiSettings = apiSettings;\r\n this.category = category;\r\n this.searchText = searchText;\r\n this.queryResultSettings = queryResultSettings;\r\n this.refiners = refiners;\r\n }\r\n\r\n public getCacheKey = () =>\r\n // tslint:disable\r\n buildCacheKey(\r\n `${this.pageType}-${this.category || this.searchText}-${this.refiners.map(refiner => `${refiner.RefinerRecordId}${refiner.LeftValueBoundString || ''}${refiner.RightValueBoundString || ''}-`)}-${JSON.stringify(this.queryResultSettings)}`,\r\n this.apiSettings\r\n );\r\n public getCacheObjectType = () => 'CollectionActionResult';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetFullProductsByCollectionData {\r\n text: string;\r\n}\r\n\r\nexport type CollectionClassConstructor = new (\r\n pageType: listPageType,\r\n apiSettings: ICommerceApiSettings,\r\n queryResultSettings: IQueryResultSettings,\r\n refiners: ProductRefinerValue[],\r\n category: number | undefined,\r\n searchText: string | undefined\r\n) => BaseCollectionInput;\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createBaseCollectionInput = (\r\n args: ICreateActionContext,\r\n inputClassConstuctor: CollectionClassConstructor\r\n): BaseCollectionInput => {\r\n const pageType =\r\n args.requestContext.urlTokens.pageType === 'Category' || (args.requestContext.query && args.requestContext.query.categoryId)\r\n ? 'Category'\r\n : 'Search';\r\n\r\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(args).QueryResultSettings;\r\n const queryRefiners = hydrateRefinersFromUrl(args.requestContext);\r\n\r\n if(args.requestContext.query && args.requestContext.query.sorting) {\r\n queryResultSettings.Sorting = { Columns: JSON.parse(decodeURIComponent(args.requestContext.query.sorting)) };\r\n }\r\n\r\n if (pageType === 'Category') {\r\n return new inputClassConstuctor(\r\n pageType,\r\n args.requestContext.apiSettings,\r\n queryResultSettings,\r\n queryRefiners,\r\n +(args.requestContext.urlTokens.itemId || (args.requestContext.query && args.requestContext.query.categoryId) || 0),\r\n undefined\r\n );\r\n } else if (pageType === 'Search' && args.requestContext.query) {\r\n return new inputClassConstuctor(\r\n pageType,\r\n args.requestContext.apiSettings,\r\n queryResultSettings,\r\n queryRefiners,\r\n undefined,\r\n args.requestContext.query.q\r\n );\r\n }\r\n\r\n throw new Error('[getFullProductsForCollection]Unable to create input');\r\n};","module.exports = React;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipPauseResumeInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMembershipPauseResumeResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class MembershipStateInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IPauseMembershipInput`;\r\n public getCacheObjectType = () => 'IPauseMembershipInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\nexport interface IMembershipStateInput extends IrsmClubMembershipPauseResumeResponse { }\r\n\r\nexport interface IInputRequirements {\r\n wineClubId: string;\r\n pauseResume: boolean;\r\n}\r\n\r\nexport const createMembershipStateInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { pauseResume, wineClubId }: IInputRequirements,\r\n): MembershipStateInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber;\r\n return new MembershipStateInput(\r\n clubMembershipPauseResumeInput(\r\n accNumber!,\r\n wineClubId,\r\n pauseResume\r\n )\r\n );\r\n};\r\n\r\nexport async function getMembershipStateAction(\r\n input: MembershipStateInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getMembershipStateAction,\r\n input: createMembershipStateInput,\r\n});","import { buildCacheKeyWithUrlTokens, CurrentCategoryInput, getCategoryUrl, getCurrentCategory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n getFriendlyName,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** Category Page Summary Input */\nexport class CategoryPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'CategoryPageSummary';\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('CategoryPageSummary', this.requestContext);\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createGetCurrentCategoryInput = (inputData: IActionContext): CurrentCategoryInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\nconst action = async (input: CategoryPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let currentCategory;\n try {\n currentCategory = await getCurrentCategory(createGetCurrentCategoryInput(context), context);\n } catch (e) {\n // Do nothing, if the action fails fallback to values defined in data\n }\n if (currentCategory) {\n let categoryUrl: string | undefined;\n try {\n // reset category's name neutralizedName\n const localName = getFriendlyName(context.requestContext.locale, currentCategory.NameTranslations);\n const neutralizedName = currentCategory.NeutralizedName || currentCategory.Name;\n currentCategory.Name = localName;\n currentCategory.NeutralizedName = neutralizedName;\n categoryUrl = getCategoryUrl(currentCategory);\n // @ts-ignore - TODO: property exits in new version of SDK. Remove once released.\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (categoryUrl && canonicalDomain) {\n categoryUrl = `https://${canonicalDomain}${categoryUrl}`;\n } else {\n categoryUrl = undefined;\n }\n } catch (e) {\n categoryUrl = undefined;\n }\n return {\n title: currentCategory.Name,\n sharingImageUrl: currentCategory.OfflineImage,\n canonicalUrl: categoryUrl,\n faviconUrl: config && config.faviconUrl\n };\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n } else {\n return {};\n }\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/category-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new CategoryPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getRnrEndpointId, getRnrPartnerId, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Reviews } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, sendRequest } from '@msdyn365-commerce/core';\nimport { GetProductReviewsInput } from './inputs/get-product-reviews-input';\n\n/**\n * TODO: Use this function to create the input required to make the API call\n */\nexport const createInputForProductReviews = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n // Task #211227597 Remove these hardcoded values.\n return new GetProductReviewsInput(productId, getRnrPartnerId(input), input.requestContext.locale, getRnrEndpointId(input));\n }\n throw new Error('[GetProductReviews] Not all necessary parameters found while creating Input for GetProductReviewsApi');\n};\n\nexport async function getReviewsForGivenProduct(input: GetProductReviewsInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[GetProductReviews] Invalid input. ProductId = ${input.productId}, TenantId = ${input.tenantId}, localeListFilter = ${input.localeListFilter}`\n );\n }\n let requestUrl =\n `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}` +\n `?tenantId=${input.tenantId}` +\n `&localeListFilter=${input.localeListFilter}` +\n `&pageSize=${input.pageSize}` +\n `&orderBy=${input.orderBy}` +\n `&skipItems=${input.skipItems}`;\n\n if (input.starFilters !== undefined && input.starFilters.length > 0) {\n requestUrl = `${requestUrl}&starFilters=${input.starFilters}`;\n }\n\n if (input.pageToken !== null) {\n requestUrl = `${requestUrl}&pageToken=${input.pageToken}`;\n }\n return sendRequest(requestUrl, 'get')\n .then(response => {\n if (response.data && response.data.items && response.data.items.length > 0) {\n return {\n items: response.data.items.filter(i => !i.isTakenDown),\n pagingInfo: response.data.pagingInfo\n };\n }\n ctx.trace(`[GetProductReviews] No reviews found for this product.`);\n return response.data;\n })\n .catch(error => {\n ctx.trace(`[GetProductReviews] Failed to get reviews for product`);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetProductReviews] Failed to get reviews for product`);\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetProductReviewsInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0 && input.localeListFilter.length > 0 && input.pageSize > 0;\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/get-product-reviews',\n action: >getReviewsForGivenProduct,\n input: createInputForProductReviews\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\r\n\r\n/**\r\n * Refiner Compression:\r\n * Refiners contains a non-trivial amount of data that is required to successfully make\r\n * a refiner-based API call. To allow for deep-linking of refiners in the URL, refiner data\r\n * must be compressed so that URL max length is not exceeded. Refiners will be compressed into\r\n * the following array style index-based format:\r\n * [DataTypeValue, LeftValueBoundString, RefinerRecordId, RefinerSourceValue, RightValueBoundString, UnitText]\r\n */\r\nconst compressedRefinerKeys = ['DataTypeValue', 'LeftValueBoundString', 'RefinerRecordId', 'RefinerSourceValue', 'RightValueBoundString', 'UnitText'];\r\n\r\n/**\r\n * Hydrates compressed refiner data from URL\r\n * @param fullUrl The full URL of the page\r\n */\r\nexport const hydrateRefinersFromUrl = (requestContext: IRequestContext): ProductRefinerValue[] => {\r\n const compressedRefinerArray = parseQueryParam<(string | number)[][]>('refiners', requestContext);\r\n if (!compressedRefinerArray || !compressedRefinerArray.length) {\r\n return [];\r\n }\r\n\r\n return compressedRefinerArray.map((compressedRefiner) => {\r\n try {\r\n const parsedRefiner: ProductRefinerValue = {};\r\n compressedRefinerKeys.forEach((refinerKey, index) => {\r\n // @ts-ignore: This line is intentionally not typesafe\r\n parsedRefiner[refinerKey] = compressedRefiner[index];\r\n });\r\n return parsedRefiner;\r\n } catch(e) {\r\n return undefined;\r\n }\r\n }).filter(Boolean);\r\n};\r\n\r\n/**\r\n * Compressed a list of refiners for use in URLs\r\n * @param refiners The uncompressed refiners\r\n */\r\nexport const compressRefiners = (refiners: ProductRefinerValue[]) => {\r\n const compressedRefiners: (string | number)[][] = [];\r\n\r\n refiners.forEach((refiner) => {\r\n const compressedRefiner: (string | number)[] = [];\r\n compressedRefinerKeys.forEach((refinerKey) => {\r\n // @ts-ignore: This line is intentionally not typesafe\r\n compressedRefiner.push(refiner[refinerKey]);\r\n });\r\n compressedRefiners.push(compressedRefiner);\r\n });\r\n\r\n return compressedRefiners;\r\n};\r\n\r\n/**\r\n * Method which creates a URL contiaining serialized active refiners\r\n * @param fullUrl The Current URL of the page\r\n * @param refiners The refiners which should be added to the URL\r\n */\r\nexport const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\r\n // Refiner Change flow\r\n if (refiners !== undefined) {\r\n if (!refiners.length) {\r\n fullUrl.searchParams.delete('refiners');\r\n } else {\r\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(refiners)));\r\n }\r\n\r\n // Adding or removing a refiner means we want to always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (sortingColumns !== undefined) {\r\n if(!sortingColumns.length) {\r\n fullUrl.searchParams.delete('sorting');\r\n } else {\r\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\r\n }\r\n\r\n // Changing the sort means always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (skipCount) {\r\n fullUrl.searchParams.set('skip', skipCount.toString());\r\n }\r\n\r\n return fullUrl.href;\r\n};\r\n\r\n/**\r\n * Parses a query param from the query object of the request context\r\n * @param key The query parameter key\r\n * @param requestContext The request context\r\n */\r\nexport const parseQueryParam = (key: string, requestContext: IRequestContext): T | null => {\r\n if(requestContext.query && requestContext.query[key]) {\r\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Gets the current URL of the page from the request context\r\n * @param requestContext The request context\r\n */\r\nexport const getCurrentUrl = (requestContext: IRequestContext): URL => {\r\n if(MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n } else {\r\n // NOTE: Typing on requestURL is incorrect\r\n if (requestContext.url.requestUrl.href) {\r\n return new URL(requestContext.url.requestUrl.href);\r\n } else {\r\n return new URL((requestContext.url.requestUrl));\r\n }\r\n }\r\n};\r\n","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\n/**\n * Input class for get customer data action\n */\nexport class OrganizationUsersCountInput implements IActionInput {\n public getCacheKey = () => 'OrganizationUsersCount';\n public getCacheObjectType = () => 'BusinessPartner';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createGetOrganizationUsersCountInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersCountInput();\n};\n\nexport async function getOrganizationUsersCount(input: OrganizationUsersCountInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n if (!businessPartner) {\n return 0;\n }\n\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then((users) => {\n return users.length;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users-count] Unable to load users');\n throw new Error('[get-organization-users-count] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users-count] Unable to get BusinessPartner');\n throw new Error('[get-organization-users-count] Unable to get BusinessPartner');\n });\n}\nexport default createObservableDataAction({\n id: 'get-organization-users-count',\n action: >getOrganizationUsersCount,\n input: createGetOrganizationUsersCountInput\n});\n","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings, ProductRefiner, ProductSearchCriteria } from '@msdyn365-commerce/retail-proxy';\nimport { getProductSearchRefinersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Uses Bulk refiner API to get refiners and child refiner values\n * @param searchCriteria product search criteria\n * @param maxItems max items\n * @param ctx action context\n */\nexport async function getProductRefinerHierarchy(searchCriteria: ProductSearchCriteria, queryResultSettings: IQueryResultSettings, ctx: IActionContext): Promise {\n return getProductSearchRefinersAsync({ callerContext: ctx, queryResultSettings: queryResultSettings }, searchCriteria).then((productRefiners: ProductRefiner[]) => {\n if (!productRefiners) {\n ctx.trace('[getRefinersByCriteriaAction] returned no refiners');\n return [];\n }\n\n const result = (productRefiners || []).map((productRefiner: ProductRefiner) => productRefiner);\n\n if (!result.length) {\n ctx.trace('[getRefinersByCriteriaAction] returned no IProductRefinerHierarchy objects');\n return [];\n }\n\n return result;\n });\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { BaseCollectionInput, createBaseCollectionInput } from './base-collection-action';\nimport { getProductRefinerHierarchy } from './get-product-refiner-hierarchy';\n\n/**\n * Refiners-by-Collection Input action\n */\nexport class RefinersByCollectionInput extends BaseCollectionInput implements IActionInput {\n public getCacheObjectType = () => 'ProductRefiner';\n public dataCacheType = () => {\n if (\n this.pageType !== 'Category' ||\n (this.refiners && this.refiners.length > 0) ||\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\n ) {\n return 'request';\n } else {\n return 'application';\n }\n }\n}\n\n/**\n * Create input method which creates an ActionInput for fetching list page refiners\n */\nconst createInput = (args: ICreateActionContext): IActionInput => {\n return createBaseCollectionInput(args, RefinersByCollectionInput);\n};\n\n/**\n * Action method which fetches refiners for the given list page\n */\nasync function action(input:RefinersByCollectionInput, ctx: IActionContext): Promise {\n let searchProductId;\n if(input.pageType === 'Category') {\n if(input.category) {\n return getProductRefinerHierarchy(\n {\n CategoryIds:[input.category],\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.apiSettings.catalogId\n }\n },\n input.queryResultSettings,\n ctx);\n } else {\n throw new Error('[GetRefinersForCollection]Category Page Detected, but no global categoryId found');\n }\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.q)) {\n return getProductRefinerHierarchy(\n {\n SearchCondition: input.searchText,\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.apiSettings.catalogId\n }\n },\n input.queryResultSettings,\n ctx);\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.productId)) {\n searchProductId = Number(input.searchText);\n if (Number.isNaN(searchProductId)) {\n throw new Error('Failed to cast search product id into a number.');\n } else {\n return getProductRefinerHierarchy(\n {\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.apiSettings.catalogId\n },\n RecommendationListId: 'looks',\n Ids: [searchProductId || 0]\n },\n input.queryResultSettings,\n ctx);\n }\n } else {\n throw new Error(\n '[GetFullProductsForCollection]Search Page Detected, but no q= or productId= query parameter found'\n );\n }\n }\n }\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-refiners-for-collection',\n action: >action,\n input: createInput\n});","import { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for ActiveCheckoutCartWithProducts data action\r\n */\r\nexport class ActiveCheckoutCartProductsInput implements IActionInput {\r\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\r\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createInput = () => {\r\n return new ActiveCheckoutCartProductsInput();\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\r\n */\r\nexport async function getActiveCheckoutCartProductsAction(input: ActiveCheckoutCartProductsInput, ctx: IActionContext): Promise {\r\n // If no cart ID is provided in input, we need to create a cart object\r\n if (!input) {\r\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing'));\r\n throw new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing');\r\n }\r\n\r\n const checkoutState = await getCheckoutState(ctx);\r\n const cart = checkoutState.checkoutCart.cart;\r\n\r\n // If there are cart lines, make call to get products\r\n if (cart && cart.CartLines && cart.CartLines.length) {\r\n return getSimpleProducts(\r\n cart.CartLines.map(cartLine => {\r\n if (cartLine.ProductId) {\r\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\r\n }\r\n return undefined;\r\n }).filter(Boolean),\r\n ctx\r\n )\r\n .then(products => {\r\n if (products) {\r\n return products;\r\n } else {\r\n return [];\r\n }\r\n })\r\n .catch(error => {\r\n ctx.telemetry.exception(error);\r\n throw new Error('[getActiveCheckoutCartWithProdcuts]Unable to hydrate cart with product information');\r\n });\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/checkout/get-products-in-active-checkout-cart',\r\n action: >getActiveCheckoutCartProductsAction,\r\n input: createInput\r\n});\r\n","module.exports = ReactDOM;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\n\nconst beforeRead = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterRead = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n try {\n const activeCart = await Promise.resolve(Array.isArray(cart) ? cart[0] : cart);\n actionContext.requestContext.telemetryData.activeCart = activeCart;\n } catch (e) {\n actionContext.telemetry.debug('ReadCart post-data action hook failed.', e);\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Read',\n postReaderHook: afterRead,\n preReaderHook: beforeRead\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { searchAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList, ProductListSearchCriteria } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetOrderTemplatesInput implements IActionInput {\n public readonly productListId: string;\n public readonly queryResultSettings?: QueryResultSettings;\n\n constructor(productListId?: string, queryResultSettings?: QueryResultSettings) {\n this.productListId = productListId || '';\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = (): string => `${this.productListId}|${this.queryResultSettings?.Paging?.Top}|${this.queryResultSettings?.Paging?.Skip}`;\n public getCacheObjectType = () => 'ProductList';\n public dataCacheType = (): CacheType => 'instance';\n public shouldCacheOutput = () => false;\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n * @param productListId? The product list identifier.\n * @param queryResultSettings? The query result setting required for pagination/ordering.\n */\nexport const createGetOrderTemplatesInput = (inputData: ICreateActionContext, productListId?: string, queryResultSettings?: QueryResultSettings): GetOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get order template. User is not authenticated.');\n }\n\n return new GetOrderTemplatesInput(productListId || '', queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplates data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getOrderTemplatesAction(input: GetOrderTemplatesInput, ctx: IActionContext): Promise {\n try {\n\n const productListSearchCriteria: ProductListSearchCriteria = {\n ProductListId: input.productListId,\n CustomerId: ctx.requestContext.user.customerAccountNumber\n };\n return searchAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n productListSearchCriteria\n );\n } catch (error) {\n ctx.telemetry.error('Not able to get order template(s)', error);\n throw error;\n }\n}\n\n/**\n * The GetOrderTemplates Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates',\n action: >getOrderTemplatesAction,\n input: createGetOrderTemplatesInput\n});","import { SimpleText } from '@msdyn365-commerce-modules/data-types';\r\nimport { CurrentCategoryInput, getCurrentCategory, getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CommerceEntityInput, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext, IUrlTokens } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\n/**\r\n * Calls the Retail API and returns the products\r\n */\r\nconst getProducts = async (productIds: number[] = [], ctx: IActionContext): Promise => {\r\n const productInputs = productIds.map(productId => new ProductInput(productId,ctx.requestContext.apiSettings));\r\n return getSimpleProducts(productInputs, ctx);\r\n};\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nexport class GetInput extends CommerceEntityInput implements IActionInput {\r\n public itemId: number;\r\n public dataSource: string;\r\n constructor(Id: number, dataSource: string) {\r\n super({\r\n dataCacheType: 'none',\r\n cacheObjectType: 'BreadCrumbData',\r\n cacheKey: 'BreadcrumbData'\r\n });\r\n this.itemId = Id;\r\n this.dataSource = dataSource;\r\n }\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nconst createInput = (inputData: ICreateActionContext) => {\r\n if(!(inputData && inputData.requestContext && inputData.requestContext.urlTokens)) {\r\n throw new Error('No url tokens found');\r\n }\r\n const token: IUrlTokens=inputData.requestContext.urlTokens;\r\n return new GetInput(parseInt(token.itemId || '0',10), token.pageType || '');\r\n};\r\n\r\n/**\r\n * Get breadcrumb data by product id action\r\n */\r\nexport async function getbreadcrumbByProductIdAction(\r\n ctx: IActionContext,\r\n productId: number\r\n): Promise {\r\n if (!ctx) {\r\n throw new Error(`getbreadcrumbByProductIdAction - Action context cannot be null/undefined`);\r\n }\r\n let productName:SimpleText = {text:''};\r\n const prodIds: number[] = [productId];\r\n const response = await getProducts(prodIds, ctx);\r\n if (response && response.length) {\r\n productName = {text:response[0].Name || ''};\r\n }\r\n return productName;\r\n}\r\n\r\n/**\r\n * Get breadcrumb data by category id action\r\n */\r\nexport async function getbreadcrumbByCategoryIdAction(\r\n ctx: IActionContext,\r\n categoryId: number\r\n): Promise {\r\n if (!ctx) {\r\n throw new Error(`getbreadcrumbByCategoryIdAction - Action context cannot be null/undefined`);\r\n }\r\n let categoryName:SimpleText = {text:''};\r\n const input= new CurrentCategoryInput(ctx.requestContext);\r\n input.categoryId=categoryId;\r\n const response = await getCurrentCategory(input,ctx);\r\n if (response) {\r\n categoryName = {text:response.Name || ''};\r\n }\r\n return categoryName;\r\n}\r\n\r\n/**\r\n * Get breadcrumb data action\r\n */\r\nexport async function getbreadcrumbDataAction(\r\n input: IActionInput,\r\n ctx: IActionContext,\r\n): Promise {\r\n if (!ctx) {\r\n throw new Error(`getbreadcrumbDataAction - Action context cannot be null/undefined`);\r\n }\r\n let breadcrumbData: SimpleText= {text:''};\r\n const dataSource = (input).dataSource;\r\n switch (dataSource.toUpperCase()) {\r\n case 'CATEGORY':\r\n breadcrumbData = await getbreadcrumbByCategoryIdAction(ctx, (input).itemId);\r\n return breadcrumbData;\r\n case 'PRODUCT':\r\n breadcrumbData = await getbreadcrumbByProductIdAction(ctx, (input).itemId);\r\n return breadcrumbData;\r\n default:\r\n return breadcrumbData;\r\n }\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getbreadcrumbDataAction,\r\n input: createInput\r\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { getCustomerLoyaltyCardsAsync, getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the getLoyaltyCard data action\n */\nexport class GetLoyaltyCardInput implements IActionInput {\n public userAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCard-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetLoyaltyCard';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the getLoyaltyCard method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetLoyaltyCardInput = (inputData: ICreateActionContext): GetLoyaltyCardInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get loyalty card input. User is not authenticated.');\n }\n\n return new GetLoyaltyCardInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getLoyaltyAction(input: GetLoyaltyCardInput, ctx: IActionContext): Promise {\n return getCustomerLoyaltyCardsAsync({ callerContext: ctx, queryResultSettings: {} }, input.userAccountNumber || null)\n .then(cards => {\n if (!cards || cards.length < 1) {\n return {};\n }\n\n const firstCard = cards[0];\n\n return getLoyaltyCardAsync({ callerContext: ctx }, firstCard.CardNumber!)\n .then(card => {\n card.LoyaltyEnrollmentDate = firstCard.LoyaltyEnrollmentDate;\n card.LoyaltyEnrollmentDateLocal = firstCard.LoyaltyEnrollmentDateLocal;\n return card;\n })\n\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`Unable to get loyalty card`);\n throw new Error('Unable to get loyalty card');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error.message);\n ctx.telemetry.debug(`Unable to get customers loyalty card`);\n throw new Error('Unable to get customers loyalty card');\n });\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-card',\n action: >getLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyCardInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { generateProductImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport MsDyn365, {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { AsyncResult, ProductSearchCriteria,ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n BaseCollectionInput,\n createBaseCollectionInput\n} from './base-collection-action';\n\nimport { ListPageStateInput } from '../list-page-state';\n\n/**\n * GetFullProductsByCollection Action Input\n */\nexport class GetFullProductsByCollectionInput extends BaseCollectionInput implements IActionInput {\n public getCacheObjectType = () => 'FullProductSearchResult';\n public dataCacheType = () => {\n if (\n this.pageType !== 'Category' ||\n (this.refiners && this.refiners.length > 0) ||\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\n ) {\n return 'request';\n } else {\n return 'application';\n }\n }\n}\n\nexport interface IFullProductsSearchResultsWithCount {\n products: ProductSearchResult[];\n count: number;\n}\n\n/**\n * createInput function which creates and actionInput used to fetch products for a list page.\n */\nconst createInput = (args: ICreateActionContext<{ itemsPerPage: number ;includedAttributes:boolean | undefined}>): IActionInput => {\n const input = createBaseCollectionInput(args, GetFullProductsByCollectionInput);\n\n // Set Top\n if (input.queryResultSettings.Paging && args.config) {\n input.queryResultSettings.Paging.Top = args.config.itemsPerPage || 1;\n }\n\n // Set Skip\n if (input.queryResultSettings.Paging && args.requestContext.query && args.requestContext.query.skip) {\n input.queryResultSettings.Paging.Skip = +args.requestContext.query.skip;\n }\n\n input.queryResultSettings.count = true;\n\n return input;\n};\n\n/**\n * Action function to fetch products for a list page\n */\nasync function action(\n input: GetFullProductsByCollectionInput,\n ctx: IActionContext\n): Promise {\n let productSearchResults: ProductSearchResult[];\n let promise: AsyncResult;\n let searchProductId;\n const searchCriteriaInput: ProductSearchCriteria = {};\n searchCriteriaInput.Context = { ChannelId: ctx.requestContext.apiSettings.channelId, CatalogId: ctx.requestContext.apiSettings.catalogId };\n searchCriteriaInput.Refinement = input.refiners;\n searchCriteriaInput.IncludeAttributes = input.includeAttributes;\n searchCriteriaInput.SkipVariantExpansion = true;\n\n if (input.pageType === 'Category' || (ctx.requestContext.query && ctx.requestContext.query.categoryId)) {\n if (input.category) {\n searchCriteriaInput.CategoryIds = [input.category || 0];\n promise = searchByCriteriaAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n } else {\n throw new Error(\n '[GetFullProductsForCollection]Category Page Detected, but no global categoryId found'\n );\n }\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.q)) {\n searchCriteriaInput.SearchCondition = input.searchText;\n promise = searchByCriteriaAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.productId)) {\n searchProductId = Number(input.searchText);\n if (Number.isNaN(searchProductId)) {\n throw new Error('Failed to cast search product id into a number.');\n } else {\n searchCriteriaInput.RecommendationListId = 'looks';\n searchCriteriaInput.Ids = [searchProductId || 0];\n promise = searchByCriteriaAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n }\n } else {\n throw new Error(\n '[GetFullProductsForCollection]Search Page Detected, but no q= or productId= query parameter found'\n );\n }\n }\n }\n\n productSearchResults = await promise;\n\n const mappedProducts = productSearchResults.map(productSearchResult => {\n const newImageUrl = generateProductImageUrl(\n productSearchResult,\n ctx.requestContext.apiSettings\n );\n\n if (newImageUrl) {\n productSearchResult.PrimaryImageUrl = newImageUrl;\n }\n\n return (productSearchResult);\n });\n\n // Update ListPageState For SSR\n if (!MsDyn365.isBrowser) {\n ctx.update(new ListPageStateInput(), { totalProductCount: promise.metadata.count || 0, activeFilters: input.refiners });\n\n }\n\n return {\n products: mappedProducts,\n count: promise.metadata.count || 0\n };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-full-products-by-collection',\n action: >action,\n input: createInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getSimpleProducts, ProductInput } from './index';\n\n/**\n * Input class for activeCartWithProducts data action\n */\nexport class ActiveCartProductsInput implements IActionInput {\n public getCacheKey = () => `ActiveCartProducts`;\n public getCacheObjectType = () => 'ActiveCartProducts';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\n */\nexport async function getActiveCartProductsAction(input: ActiveCartProductsInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveCartWithProducts]No valid Input was provided, failing');\n }\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n if (cart && cart.CartLines && cart.CartLines.length) {\n ctx.trace('Getting cart product information...');\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then((products: SimpleProduct[]) => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch((error: Error) => {\n ctx.trace(error.toString());\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[getActiveCartWithProducts]Unable to hydrate cart with product information`);\n throw new Error('[getActiveCartWithProducts]Unable to hydrate cart with product information');\n });\n }\n\n ctx.trace('[getActiveCartWithProducts]No Products Found in cart');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-in-active-cart',\n action: >getActiveCartProductsAction,\n input: createInput\n});\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\nconst { log, error } = console;\nconst detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\nconst handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n}\n\nconst handleMissingImplementationDetails = (functionName, connectorName, connectorType) => {\n error('----ERROR: CONNECTOR MISSING IMPLEMENTATION DETAILS-----');\n error('Missing function ' + functionName + ' from ' + connectorType + ' implementation for experimentation connector ' + connectorName);\n throw new Error('Connector missing implementation details');\n}\n\nconst verifySegmentationRegistration = (connectorName) => {\n const segmentationProvider = connectorDictionary[connectorName].provider;\n try {\n if (!segmentationProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!segmentationProvider.__proto__.getSegmentations) {\n handleMissingImplementationDetails('getSegmentations', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst isServer = ()=>{\n return ! (typeof window != 'undefined' && window.document);\n}\n\nconst verifyGeoLookupRegistration = (connectorName) => {\n const geoLookupProvider = connectorDictionary[connectorName].provider;\n try {\n if (!geoLookupProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!geoLookupProvider.__proto__.getGeoInformation) {\n handleMissingImplementationDetails('getGeoInformation', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst verifyExperimentationReigstration = (connectorName) => {\n const connectorImpl = connectorDictionary[connectorName].provider;\n const connectorListenerImpl = connectorDictionary[connectorName].listener;\n try {\n if (!connectorImpl.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getConfigForClientSideInit) {\n handleMissingImplementationDetails('getConfigForClientSideInit', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getExperiments) {\n handleMissingImplementationDetails('getExperiments', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getVariantsForUser) {\n handleMissingImplementationDetails('getVariantsForUser', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.activateExperiment) {\n handleMissingImplementationDetails('activateExperiment', connectorName, 'provider');\n }\n if (!connectorListenerImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'listener');\n }\n if (!connectorListenerImpl.__proto__.logEvent) {\n handleMissingImplementationDetails('logEvent', connectorName, 'listener');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nexport const connectorDictionary = {};\n\n\nexport const validateConnectorRegistration = () => {\n \n};","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport getCategoriesHierarchy, { CategoriesInput } from './get-categories-hierarchy';\n\n/**\n * Action Input Class for get-current-category-hierarchy\n */\nexport class CurrentCategoryHierarchyInput extends CategoriesInput {\n public activeCategoryId: number;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number, activeCategoryId?: number) {\n super(context, mappedToHierarchy, maxItems);\n this.activeCategoryId = activeCategoryId || 0;\n }\n\n // @ts-ignore: Overriding cache object type\n public getCacheObjectType = () => 'CurrentCategoryHierarchy';\n public getCacheKey = () => `${this.activeCategoryId}-${this.channelId}`;\n}\n\n/**\n * Creates the input required for the data action\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && parseInt(inputData.config.topCategories, 10);\n const activeCategoryId =\n (inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.pageType === 'Category' && inputData.requestContext.urlTokens.itemId) ||\n (inputData.requestContext.query && inputData.requestContext.query.categoryId) ||\n 0;\n\n return new CurrentCategoryHierarchyInput(inputData.requestContext, true, topItems, +activeCategoryId);\n};\n\n/**\n * Get the hierarchy of categories that are currently active as a parent -> child array.\n * Return will be as follows: [ParentCategory, Child, SubChild, SubSubChild]\n */\nexport async function getCurrentCategoryHierarchyAction(input: CurrentCategoryHierarchyInput, ctx: IActionContext): Promise {\n\n const fullCategoryHierarchy = await getCategoriesHierarchy(\n new CategoriesInput(\n ctx.requestContext,\n true,\n input.maxItems),\n ctx);\n const categoryArray: CategoryHierarchy[] = [];\n\n const findCategory = (category: CategoryHierarchy) => {\n if(category.RecordId === input.activeCategoryId) {\n categoryArray.push(category);\n return true;\n } else if (category.Children && category.Children.length) {\n category.Children.forEach((childCategory) => {\n if(findCategory(childCategory)) {\n categoryArray.push(category);\n }\n });\n } else {\n return false;\n }\n };\n\n fullCategoryHierarchy.forEach((categoryHierarchy: CategoryHierarchy) => {\n findCategory(categoryHierarchy);\n });\n\n return categoryArray.reverse();\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category-hierarchy',\n action: >getCurrentCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getRnrAuthEndpointId, getRnrPartnerId, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext, sendRequest } from '@msdyn365-commerce/core';\nimport { GetUserReviewInput } from './inputs/get-user-review-input';\n\n/**\n * This method builds the input for the getUserReviewApi call\n */\nconst createInput = (input: ICreateActionContext): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n const userInfo = input.requestContext.user;\n if (productId && userInfo && userInfo.isAuthenticated) {\n // Task #211227597 Remove these hardcoded values.\n return new GetUserReviewInput(productId, getRnrPartnerId(input), userInfo.token, getRnrAuthEndpointId(input));\n }\n throw new Error('[GetUserReview] Not all necessary parameters found while creating Input for GetUserReviewAPI');\n};\n\n/**\n * This method gets the user's review from the RnR service endpoint\n */\nasync function getUserReview(input:GetUserReviewInput, ctx: IActionContext):Promise {\n if (!inputIsValid(input)) {\n const errorMessage = `[GettUserReview] Failed to get user's review due to bad input ${input}`;\n ctx.trace(errorMessage);\n throw new Error(errorMessage);\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}/user?tenantId=${input.tenantId}`;\n\n return sendRequest(requestUrl, 'get', null, {headers: {Authorization: `id_token ${input.authorization}`}}).then((response) => {\n return response.data;\n }).catch((error) => {\n ctx.trace(`[GettUserReview] Failed to get user's review for product`);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GettUserReview] Failed to get user's review for product`);\n ctx.trace(error);\n throw (error);\n });\n}\n\nfunction inputIsValid(input:GetUserReviewInput): boolean {\n return input.productId.length > 0 && input.authorization.length > 0 && input.tenantId.length > 0;\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/get-user-review',\n action: >getUserReview,\n input: createInput\n});\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, getParameterizeFeatureFlags, IAction, IActionInput, ICommerceApiSettings, IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '.';\nimport getCategoryHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport { parameterize } from './utilities/Url-builder';\n\n/**\n * Input class for GetCurrentCategory data action\n */\nexport class CurrentCategoryInput implements IActionInput {\n public categoryId?: number;\n public categorySlug?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(context: IRequestContext) {\n let categoryId;\n let categorySlug;\n if (context.query && context.query.categoryId) {\n categoryId = Number(context.query.categoryId);\n\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n // @ts-ignore: RecordId URLToken not typed yet\n } else if (context.urlTokens && context.urlTokens.recordId) {\n // @ts-ignore: RecordId URLToken not typed yet\n categoryId = Number(context.urlTokens.recordId);\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n } else if (context.urlTokens && context.urlTokens.categories && context.urlTokens.categories.length) {\n const categories: string[] = (context.urlTokens.categories);\n\n if (!categories.length) {\n throw new Error('Failed to get category name from urlTokens');\n }\n // TODO: fix getParameterizeFeatureFlags to take requestContext as input.\n const tempActionContext = {\n requestContext:context\n }\n categorySlug = `/${categories\n .map(category => {\n // @ts-ignore TODO: fix getParameterizeFeatureFlags to take requestContext as an input\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = getParameterizeFeatureFlags(tempActionContext);\n return parameterize(category,undefined, parameterizeFeatureFlags);\n })\n .join('/')}`;\n }\n this.categoryId = categoryId;\n this.categorySlug = categorySlug;\n this.apiSettings = context.apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}`, this.apiSettings);\n public getCacheObjectType = () => 'Current-Category';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates a current category input from an ICreateActionContext\n */\nexport const createGetCurrentCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Rescrusive Search Method to find a given category amongts a complete CategoryHierarcy\n * @param categories The current Category Hierarchy\n * @param categorySlug The category slug being searched for\n * @param categoryId The category Id being search for\n */\nexport function searchCategory(categories: CategoryHierarchy[], categorySlug?: string, categoryId?: number): CategoryHierarchy | undefined {\n let foundCategory;\n categories.forEach((cat: CategoryHierarchy) => {\n if ((categoryId && cat.RecordId === categoryId) || (categorySlug && cat.Slug === categorySlug)) {\n return (foundCategory = cat);\n } else if (cat.Children && cat.Children.length) {\n const matchingChild = searchCategory(cat.Children, categorySlug, categoryId);\n if (matchingChild) {\n foundCategory = matchingChild;\n }\n }\n });\n return foundCategory;\n}\n\n/**\n * Action method for the getCurrentCategory Data Action\n * @param input The action input class\n * @param ctx The action context\n */\nexport async function getCurrentCategoryAction(input: CurrentCategoryInput, ctx: IActionContext): Promise {\n if (input.categorySlug || input.categoryId) {\n const categoryInput = new CategoriesInput(ctx.requestContext, true);\n const categories = await getCategoryHierarchy(categoryInput, ctx);\n if (!categories) {\n ctx.trace('[getCurrentCategory] Unable to get categories from server');\n return;\n }\n\n const category = searchCategory(categories, input.categorySlug, input.categoryId);\n if (!category) {\n ctx.trace('[getCurrentCategory] Unable to find category');\n return;\n }\n return category;\n }\n}\n\n/**\n * The getCurrentCategory data action\n * First makes a call to the getCategories RetailServer API\n * to get a list of every available category, then returns a CategoryHierarchy\n * based on the categoryId query param set in the URL of the request\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category',\n action: >getCurrentCategoryAction,\n input: createGetCurrentCategoryInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { MediaLocation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { generateImageUrl, buildCacheKey } from './utilities/utils';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n/**\n * Product Input\n */\nexport class MediaLocationsByIdInput implements IActionInput {\n public productId?: number;\n public channelId: number;\n public catalogId: number;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, productId?: number, catalogId?: number) {\n this.productId = productId;\n this.channelId = +apiSettings.channelId;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`MediaLocationID-${this.productId && this.productId.toString()}`, this.apiSettings);\n public getCacheObjectType = () => 'MediaLocations';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createMediaLocationsByIdInput = (inputData: ICreateActionContext>): MediaLocationsByIdInput => {\n const productId = inputData.config && +inputData.config.productId || undefined;\n return new MediaLocationsByIdInput(inputData.requestContext.apiSettings, productId, undefined);\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed MediaLocationsByIdInput\n */\nexport async function getMediaLocationsByIdAction(input: MediaLocationsByIdInput, ctx: IActionContext): Promise {\n if (input.productId) {\n return getMediaLocationsAsync({ callerContext: ctx, queryResultSettings: {} }, input.productId, input.channelId, input.catalogId).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : '';\n return mediaLocation;\n }\n );\n });\n }\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-by-id',\n action: >getMediaLocationsByIdAction,\n input: createMediaLocationsByIdInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\r\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { IMappedSearchConfiguration } from './IMappedSearchConfiguration';\r\n\r\n// TODO: import from commerce entities when available\r\n// tslint:disable-next-line:interface-name\r\ninterface SearchConfiguration {\r\n ProductSortColumns?: SortColumn[];\r\n}\r\n\r\nexport const sortOptions = {\r\n sortByOptionRelevanceDesc: 'Ranking-Desc',\r\n sortByOptionRatingAsc: 'AverageRating-Asc',\r\n sortByOptionRatingDesc: 'AverageRating-Desc',\r\n sortByOptionNameAsc: 'Name-Asc',\r\n sortByOptionNameDesc: 'Name-Desc',\r\n sortByOptionPriceAsc: 'Price-Asc',\r\n sortByOptionPriceDesc: 'Price-Desc'\r\n};\r\n\r\nexport const sortColumName = {\r\n name: 'NAME',\r\n price: 'PRICE',\r\n averageRating : 'AVERAGERATING',\r\n ranking: 'RANKING'\r\n};\r\n\r\n/**\r\n * ActionInput class for the get-mapped-search-configuration Data Action\r\n */\r\nexport class MappedSearchInput implements IActionInput {\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(apiSettings: ICommerceApiSettings) {\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey('MappedSearchInput', this.apiSettings);\r\n public getCacheObjectType = () => 'MappedSearchInput';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Get a mapped search configuration that is easy to use for sorting\r\n */\r\nexport async function getMappedSearchConfiguration(input: MappedSearchInput, ctx: IActionContext): Promise {\r\n return getSearchConfigurationAsync({ callerContext: ctx }).then((searchConfiguration: SearchConfiguration) => {\r\n return ((searchConfiguration.ProductSortColumns || []).map((sortColumn: SortColumn) => {\r\n let key = '';\r\n if (sortColumn.ColumnName) {\r\n switch(sortColumn.ColumnName.toUpperCase()) {\r\n case sortColumName.name:\r\n key = sortColumn.IsDescending ? sortOptions.sortByOptionNameDesc : sortOptions.sortByOptionNameAsc;\r\n break;\r\n case sortColumName.price:\r\n key = sortColumn.IsDescending ? sortOptions.sortByOptionPriceDesc : sortOptions.sortByOptionPriceAsc;\r\n break;\r\n case sortColumName.averageRating:\r\n key = sortColumn.IsDescending ? sortOptions.sortByOptionRatingDesc : sortOptions.sortByOptionRatingAsc;\r\n break;\r\n case sortColumName.ranking:\r\n key = sortOptions.sortByOptionRelevanceDesc;\r\n break;\r\n default:\r\n }\r\n } else {\r\n ctx.telemetry.warning('[get-mapped-search-configuration] unknown search option');\r\n }\r\n if (key) {\r\n return {\r\n key,\r\n sortColumn\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n }).filter(Boolean));\r\n });\r\n}\r\n\r\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new MappedSearchInput(inputData.requestContext.apiSettings);\r\n};\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/search-result-container/get-mapped-search-configuration',\r\n action: >getMappedSearchConfiguration,\r\n input: createInput\r\n});","import { CacheType, IAction, IActionInput, IRequestContext, ICommerceApiSettings, getCategoriesUrlSync } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCategoryPathsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { CategoryPathLookup} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getSelectedProductIdFromActionInput, buildCacheKey } from './utilities/utils';\nimport { ICategoryPath, ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\n\n/**\n * Category path input\n */\nexport class GetCategoryPathsInput implements IActionInput {\n public readonly ChannelId: number;\n public readonly CatalogId: number; \n public readonly categoryPathLooksups: CategoryPathLookup[];\n private constructedCacheKey: string;\n public readonly apiSettings: ICommerceApiSettings;\n\n constructor(context: IRequestContext, categoryPathLooksups: CategoryPathLookup[]) {\n this.ChannelId = context.apiSettings.channelId;\n this.CatalogId = context.apiSettings.catalogId | 0;\n this.categoryPathLooksups = categoryPathLooksups;\n this.apiSettings = context.apiSettings;\n this.constructedCacheKey = ``;\n categoryPathLooksups.forEach(categoryPath=>\n {\n this.constructedCacheKey+=`${categoryPath.ProductId && categoryPath.ProductId.toString()}|`;\n })\n this.constructedCacheKey+=`${this.ChannelId.toString()}|`\n this.constructedCacheKey+=`${this.CatalogId.toString()}|`\n }\n \n public getCacheKey = () => buildCacheKey(this.constructedCacheKey, this.apiSettings);;\n public getCacheObjectType = () => 'CategoryPath';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the getCategoryPath retail api call\n */\nexport const createGetCategoryPathsInput = (inputData: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n if (productId) {\n return new GetCategoryPathsInput(inputData.requestContext, [{ProductId:+productId}]);\n } else {\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n }\n \n};\n\n/**\n * Calls the Retail API and returns the category path for a product\n */\nexport async function getCategoryPathsAction(input: GetCategoryPathsInput, ctx: IActionContext): Promise {\n const categoryPathResults = await getCategoryPathsAsync({ callerContext: ctx },input.ChannelId, input.CatalogId,input.categoryPathLooksups); \n const categoryPath = categoryPathResults[0].CategoryPath && categoryPathResults[0].CategoryPath[0];\n const categoryUrl = getCategoriesUrlSync(categoryPath as ICategoryPath, ctx);\n if(categoryUrl)\n {\n return categoryUrl;\n }\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-category-paths',\n action: >getCategoryPathsAction,\n input: createGetCategoryPathsInput,\n});\n","import { ActiveCartProductsInput, ArrayExtensions, buildCacheKey, createGetFeatureStateInput, getActiveCartProductsAction, getFeatureState, mapProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\r\n// tslint:disable-next-line: no-duplicate-imports\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { CartLine, ChannelDeliveryOptionConfiguration, CommerceProperty, FeatureState, ProductAvailableQuantity } from '@msdyn365-commerce/retail-proxy';\r\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\r\nimport { getEstimatedAvailabilityAsync, getEstimatedProductWarehouseAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\n/**\r\n * GetAvailabilitiesCartlines.overide Input Action\r\n */\r\n\r\nexport class ProductAvailabilitiesForCartLineItems implements IActionInput {\r\n public getCacheKey: () => string;\r\n public getCacheObjectType: () => string;\r\n public dataCacheType: () => CacheType;\r\n private apiSettings: ICommerceApiSettings;\r\n constructor(apiSettings: ICommerceApiSettings) {\r\n this.getCacheKey = () => buildCacheKey(`ActiveCartLineItemsAvailability`, this.apiSettings);\r\n this.getCacheObjectType = () => 'ActiveCartLineItemsAvailability';\r\n this.dataCacheType = () => 'request';\r\n this.apiSettings = apiSettings;\r\n }\r\n}\r\n\r\n//===========================================================\r\n// JC: Addition here to support legacy inventory query method\r\n//===========================================================\r\n/**\r\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\r\n */\r\nexport class ProductAvailableQuantityMerge {\r\n public ProductId?: number;\r\n public AvailableQuantity?: number;\r\n public UnitOfMeasure?: string;\r\n public ExtensionProperties?: CommerceProperty[];\r\n public ProductAvailableQuantity: ProductAvailableQuantity = {};\r\n public StockLevelCode?: string;\r\n public StockLevelLabel?: string;\r\n public IsProductAvailable: boolean = false;\r\n public InventLocationId?: string;\r\n}\r\n//===========================================================\r\n\r\nconst createInput = (inputData: ICreateActionContext): IActionInput => {\r\n return new ProductAvailabilitiesForCartLineItems(inputData.requestContext.apiSettings);\r\n};\r\n\r\n/**\r\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\r\n */\r\nconst getDeliveryMode = (cartLine: CartLine, featureSate = false, channelDeliveryOptionConfig: ChannelDeliveryOptionConfiguration | undefined, pickupDeliveryMode: string | undefined) => {\r\n if (!featureSate) {\r\n return cartLine.DeliveryMode === pickupDeliveryMode;\r\n } else {\r\n return cartLine.DeliveryMode === channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode);\r\n }\r\n};\r\n\r\n/**\r\n * Calls the Retail API to get the product availabilites for items in the cart\r\n */\r\n// tslint:disable-next-line:cyclomatic-complexity tslint:disable: max-func-body-length\r\nexport async function getAvailabilitiesForCartLineItems(input: ProductAvailabilitiesForCartLineItems, ctx: IActionContext): Promise {\r\n // If no input is provided fail out\r\n if (!input) {\r\n throw new Error('[getAvailabilitiesForCartLineItems]No valid Input was provided, failing');\r\n }\r\n const shippingItems = [];\r\n const bopisItems = [];\r\n let productAvailabilities:ProductAvailableQuantityMerge[] = [];\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n let channelDeliveryOptionConfig;\r\n const cartState = await getCartState(ctx);\r\n const cart = cartState.cart;\r\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx });\r\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\r\n /**\r\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\r\n */\r\n async function getFeature(context: IActionContext): Promise {\r\n const featureStateInput = createGetFeatureStateInput(ctx);\r\n return getFeatureState(featureStateInput, context);\r\n }\r\n const featureState = await getFeature(ctx);\r\n const retailMultiplePickUpOptionEnabled = featureState?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled) {\r\n channelDeliveryOptionConfig = await getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx });\r\n }\r\n const PickupDeliveryModeCode = channelConfiguration.PickupDeliveryModeCode;\r\n const EmailDeliveryModeCode = channelConfiguration.EmailDeliveryModeCode;\r\n if (!cart || !channelConfiguration || !products || products.length === 0) {\r\n console.log('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\r\n ctx.trace('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\r\n return [];\r\n }\r\n if (cart && cart.Id && cart.CartLines && cart.CartLines.length > 0 && channelConfiguration) {\r\n for (const cartLine of cart.CartLines) {\r\n if (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && getDeliveryMode(cartLine, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, PickupDeliveryModeCode)) {\r\n bopisItems.push(cartLine);\r\n } else if (cartLine.DeliveryMode !== EmailDeliveryModeCode) {\r\n shippingItems.push(cartLine);\r\n }\r\n }\r\n }\r\n if (shippingItems && shippingItems.length > 0) {\r\n let productIds: number[] = shippingItems.map(x => x.ProductId ? x.ProductId : 0);\r\n productIds = ArrayExtensions.unique(productIds);\r\n const shippingProductAvailabilities = await getEstimatedAvailabilityAsync({ callerContext: ctx, bypassCache: 'get' }, { ProductIds: productIds, DefaultWarehouseOnly: true });\r\n if (shippingProductAvailabilities && shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities && shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities.length > 0) {\r\n //===========================================================\r\n // JC: Map below is using total available for product\r\n // availability. Need to change to physical before.\r\n //===========================================================\r\n shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities.forEach((product) => {\r\n product.TotalAvailable = product.PhysicalAvailable;\r\n });\r\n //===========================================================\r\n // JC: Addition here to support legacy inventory query method\r\n //===========================================================\r\n productAvailabilities = mapProductInventoryInformation(ctx, shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities);\r\n // translate data to support deprecated retail service call getProductAvailabilitiesAsync\r\n productAvailabilities = productAvailabilities?.map((product) => {\r\n return {...product, ProductId: product.ProductAvailableQuantity.ProductId, AvailableQuantity: product.ProductAvailableQuantity.AvailableQuantity, ExtensionProperties: product.ProductAvailableQuantity.ExtensionProperties};\r\n });\r\n //===========================================================\r\n }\r\n }\r\n if (bopisItems && bopisItems.length > 0) {\r\n for (const bopisItem of bopisItems) {\r\n const productWarehouse = {\r\n ProductId: bopisItem.ProductId,\r\n InventLocationId: bopisItem.WarehouseId,\r\n DataAreaId: ctx.requestContext.channel && ctx.requestContext.channel.InventLocationDataAreaId ? ctx.requestContext.channel.InventLocationDataAreaId : undefined\r\n };\r\n const getProductWarehouseAvail = await getEstimatedProductWarehouseAvailabilityAsync({ callerContext: ctx, bypassCache: 'get', queryResultSettings: {} }, [productWarehouse]);\r\n if (getProductWarehouseAvail && getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities && getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities.length > 0) {\r\n //===========================================================\r\n // JC: Map below is using total available for product\r\n // availability. Need to change to physical before.\r\n //===========================================================\r\n getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities.forEach((product) => {\r\n product.TotalAvailable = product.PhysicalAvailable;\r\n });\r\n const productWarehouseMapping = mapProductInventoryInformation(ctx, getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities);\r\n if (productWarehouseMapping && productWarehouseMapping.length) {\r\n for (const item of productWarehouseMapping) {\r\n productAvailabilities.push(item);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (productAvailabilities && productAvailabilities.length > 0) {\r\n return productAvailabilities;\r\n } else {\r\n ctx.trace('[getAvailabilitiesForCartLineItems] unable to get availabilites for product');\r\n return [];\r\n }\r\n}\r\n//===========================================================\r\n// JC: Changed type from ProductAvailableQuantity to ProductAvailableQuantityMerge\r\n//===========================================================\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-availabilities-cartlines',\r\n action: >getAvailabilitiesForCartLineItems,\r\n input: createInput\r\n});\r\n//===========================================================","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * OrderTemplateLine state information\n */\nexport class OrderTemplateLine {\n public productListLine: ProductListLine;\n public fullProduct?: FullProduct;\n\n constructor(productListLine: ProductListLine, fullProduct?: FullProduct) {\n this.productListLine = productListLine;\n this.fullProduct = fullProduct;\n }\n}\n\nexport interface IOrderTemplateLinesState {\n lines: OrderTemplateLine[];\n totalCount: number;\n}\n\n/**\n * Order template class\n */\nexport class OrderTemplate {\n public productList: ProductList;\n public orderTemplateLines: OrderTemplateLine[];\n public totalLines: number;\n\n constructor(productList: ProductList, orderTemplateLines: OrderTemplateLine[], totalLines: number) {\n this.productList = productList;\n this.orderTemplateLines = orderTemplateLines;\n this.totalLines = totalLines;\n }\n}","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action\n */\nexport class OrganizationUsersInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n public getCacheKey = () => buildCacheKey('OrganizationUsers', this.apiSettings);\n public getCacheObjectType = () => 'BusinessPartner';\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const createGetOrganizationUsersInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersInput(requestContext.apiSettings);\n};\n\nexport async function getOrganizationUsers(input: OrganizationUsersInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then((users) => {\n return users;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users] Unable to load users');\n throw new Error('[get-organization-users] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users] Unable to get BusinessPartner');\n throw new Error('[get-organization-users] Unable to get BusinessPartner');\n });\n}\nexport default createObservableDataAction({\n id: 'get-organization-users',\n action: >getOrganizationUsers,\n input: createGetOrganizationUsersInput\n});\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\n\r\nexport function createKeyedInPrice(result: number): GenericInput {\r\n return new GenericInput('buyboxKeyedInPrice', result, 'Number');\r\n}\r\n\r\nconst createKeyedInPriceIternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createKeyedInPrice(25);\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createKeyedInPriceIternal\r\n});\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\n\r\nexport function createKeyedInPriceError(result: string): GenericInput {\r\n return new GenericInput('buyboxKeyedInPriceError', result, 'String');\r\n}\r\n\r\nconst createKeyedInPriceErrorIternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createKeyedInPriceError('');\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createKeyedInPriceErrorIternal\r\n});\r\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nexport const viewDictionary = {};\n\nviewDictionary['__local__|__local__|modules|cartmanager|cartmanager'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartmanager' */\n 'partner/modules/cartmanager/cartmanager.view.tsx'),\n cn: '__local__-__local__-cartmanager'\n };\nviewDictionary['__local__|__local__|modules|checkout-club-info-collector|checkout-club-info-collector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-club-info-collector' */\n 'partner/modules/checkout-club-info-collector/checkout-club-info-collector.view.tsx'),\n cn: '__local__-__local__-checkout-club-info-collector'\n };\nviewDictionary['__local__|__local__|modules|clear-wineclub|clear-wineclub'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-clear-wineclub' */\n 'partner/modules/clear-wineclub/clear-wineclub.view.tsx'),\n cn: '__local__-__local__-clear-wineclub'\n };\nviewDictionary['__local__|__local__|modules|elicit-cart|elicit-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-cart' */\n 'partner/modules/elicit-cart/elicit-cart.view.tsx'),\n cn: '__local__-__local__-elicit-cart'\n };\nviewDictionary['__local__|__local__|modules|elicit-subscriptions|elicit-subscriptions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-subscriptions' */\n 'partner/modules/elicit-subscriptions/elicit-subscriptions.view.tsx'),\n cn: '__local__-__local__-elicit-subscriptions'\n };\nviewDictionary['__local__|__local__|modules|family-and-friends|family-and-friends'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-family-and-friends' */\n 'partner/modules/family-and-friends/family-and-friends.view.tsx'),\n cn: '__local__-__local__-family-and-friends'\n };\nviewDictionary['__local__|__local__|modules|instagram-integration|instagram-integration'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-instagram-integration' */\n 'partner/modules/instagram-integration/instagram-integration.view.tsx'),\n cn: '__local__-__local__-instagram-integration'\n };\nviewDictionary['__local__|__local__|modules|overflow-container|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/modules/overflow-container/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|modules|page-tos|page-tos'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-page-tos' */\n 'partner/modules/page-tos/page-tos.view.tsx'),\n cn: '__local__-__local__-page-tos'\n };\nviewDictionary['__local__|__local__|modules|shipping-popup|shipping-popup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-popup' */\n 'partner/modules/shipping-popup/shipping-popup.view.tsx'),\n cn: '__local__-__local__-shipping-popup'\n };\nviewDictionary['__local__|__local__|modules|smwe-account-management-address|smwe-account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-account-management-address' */\n 'partner/modules/smwe-account-management-address/smwe-account-management-address.view.tsx'),\n cn: '__local__-__local__-smwe-account-management-address'\n };\nviewDictionary['__local__|__local__|modules|smwe-buybox|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/modules/smwe-buybox/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|modules|smwe-cart|smwe-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-cart' */\n 'partner/modules/smwe-cart/smwe-cart.view.tsx'),\n cn: '__local__-__local__-smwe-cart'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-billing-address|smwe-checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-billing-address' */\n 'partner/modules/smwe-checkout-billing-address/smwe-checkout-billing-address.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-billing-address'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-delivery-options|smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/modules/smwe-checkout-delivery-options/smwe-checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-gift-card|smwe-checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-gift-card' */\n 'partner/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-gift-card'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-section-container|smwe-checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-section-container' */\n 'partner/modules/smwe-checkout-section-container/smwe-checkout-section-container.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-section-container'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-shipping-address|smwe-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-shipping-address' */\n 'partner/modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-shipping-address'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout|smwe-checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout' */\n 'partner/modules/smwe-checkout/smwe-checkout.view.tsx'),\n cn: '__local__-__local__-smwe-checkout'\n };\nviewDictionary['__local__|__local__|modules|smwe-footer-item|smwe-footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-footer-item' */\n 'partner/modules/smwe-footer-item/smwe-footer-item.view.tsx'),\n cn: '__local__-__local__-smwe-footer-item'\n };\nviewDictionary['__local__|__local__|modules|smwe-iframe|smwe-iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-iframe' */\n 'partner/modules/smwe-iframe/smwe-iframe.view.tsx'),\n cn: '__local__-__local__-smwe-iframe'\n };\nviewDictionary['__local__|__local__|modules|smwe-media-gallery|smwe-media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-media-gallery' */\n 'partner/modules/smwe-media-gallery/smwe-media-gallery.view.tsx'),\n cn: '__local__-__local__-smwe-media-gallery'\n };\nviewDictionary['__local__|__local__|modules|smwe-minicart|smwe-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-minicart' */\n 'partner/modules/smwe-minicart/smwe-minicart.view.tsx'),\n cn: '__local__-__local__-smwe-minicart'\n };\nviewDictionary['__local__|__local__|modules|smwe-navigation-menu|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/modules/smwe-navigation-menu/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|modules|smwe-order-details|smwe-order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-order-details' */\n 'partner/modules/smwe-order-details/smwe-order-details.view.tsx'),\n cn: '__local__-__local__-smwe-order-details'\n };\nviewDictionary['__local__|__local__|modules|smwe-product-collection|smwe-product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-product-collection' */\n 'partner/modules/smwe-product-collection/smwe-product-collection.view.tsx'),\n cn: '__local__-__local__-smwe-product-collection'\n };\nviewDictionary['__local__|__local__|modules|smwe-search-result-container|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/modules/smwe-search-result-container/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|modules|smwe-sign-up|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/modules/smwe-sign-up/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|modules|subscription-restriction-button|subscription-restriction-button'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-restriction-button' */\n 'partner/modules/subscription-restriction-button/subscription-restriction-button.view.tsx'),\n cn: '__local__-__local__-subscription-restriction-button'\n };\nviewDictionary['__local__|__local__|modules|subscriptions-minicart|subscriptions-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscriptions-minicart' */\n 'partner/modules/subscriptions-minicart/subscriptions-minicart.view.tsx'),\n cn: '__local__-__local__-subscriptions-minicart'\n };\nviewDictionary['__local__|__local__|modules|wine-club-signup|wine-club-signup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-signup' */\n 'partner/modules/wine-club-signup/wine-club-signup.view.tsx'),\n cn: '__local__-__local__-wine-club-signup'\n };\nviewDictionary['__local__|__local__|modules|wine-finder-by-zip|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/modules/wine-finder-by-zip/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|blend|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/blend/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|blend|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/blend/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|blend|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/blend/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|blend|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/blend/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|blend|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/blend/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|blend|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/blend/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/blend/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/blend/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/blend/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/blend/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|blend|views|wine-club-signup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-signup' */\n 'partner/themes/blend/views/wine-club-signup.view.tsx'),\n cn: '__local__-__local__-wine-club-signup'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/colsolare/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/colsolare/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/colsolare/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/colsolare/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/colsolare/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/colsolare/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/colsolare/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/colsolare/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/columbiacrest/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/columbiacrest/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/columbiacrest/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/columbiacrest/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/columbiacrest/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/columbiacrest/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/columbiacrest/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/columbiacrest/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/conn-creek/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/conn-creek/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/conn-creek/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/conn-creek/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/conn-creek/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/conn-creek/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/conn-creek/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/conn-creek/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/elicit/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/elicit/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/elicit/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/elicit/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-history' */\n 'partner/themes/elicit/views/order-history.view.tsx'),\n cn: '__local__-__local__-order-history'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/elicit/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/elicit/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/elicit/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/elicit/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/themes/elicit/views/smwe-checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout' */\n 'partner/themes/elicit/views/smwe-checkout.view.tsx'),\n cn: '__local__-__local__-smwe-checkout'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/elicit/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-order-details' */\n 'partner/themes/elicit/views/smwe-order-details.view.tsx'),\n cn: '__local__-__local__-smwe-order-details'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/elicit/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/elicit/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|emp|views|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carousel' */\n 'partner/themes/emp/views/carousel.view.tsx'),\n cn: '__local__-__local__-carousel'\n };\nviewDictionary['__local__|__local__|themes|emp|views|checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-delivery-options' */\n 'partner/themes/emp/views/checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|themes|emp|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/emp/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|emp|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/emp/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|emp|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/emp/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|emp|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/emp/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|emp|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/emp/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|emp|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/emp/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/emp/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-cart' */\n 'partner/themes/emp/views/smwe-cart.view.tsx'),\n cn: '__local__-__local__-smwe-cart'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/emp/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/enoteca/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/enoteca/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/enoteca/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/enoteca/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/enoteca/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/enoteca/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/enoteca/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/enoteca/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|erath|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/erath/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|erath|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/erath/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|erath|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/erath/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|erath|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/erath/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|erath|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/erath/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|erath|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/erath/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|erath|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/erath/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|erath|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/erath/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/fth-old/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-buybox' */\n 'partner/themes/fth-old/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/fth-old/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/fth-old/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/fth-old/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/fth-old/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/fth-old/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search-result-container' */\n 'partner/themes/fth-old/views/search-result-container.view.tsx'),\n cn: '__local__-__local__-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/fth-old/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|fth-old|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/fth-old/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|fth|views|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-accordion-item' */\n 'partner/themes/fth/views/accordion-item.view.tsx'),\n cn: '__local__-__local__-accordion-item'\n };\nviewDictionary['__local__|__local__|themes|fth|views|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carousel' */\n 'partner/themes/fth/views/carousel.view.tsx'),\n cn: '__local__-__local__-carousel'\n };\nviewDictionary['__local__|__local__|themes|fth|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/fth/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|fth|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/fth/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|fth|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/fth/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|fth|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/fth/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|fth|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/fth/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|fth|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/fth/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/fth/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/fth/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/fth/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/generazioni/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/generazioni/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/generazioni/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/generazioni/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/generazioni/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/generazioni/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/generazioni/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/generazioni/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|h3-theme|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/h3-theme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|h3-theme|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/h3-theme/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|h3-theme|views|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/themes/h3-theme/views/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|h3theme|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/h3theme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|h3theme|views|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/themes/h3theme/views/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/intrinsic-wine-co/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/intrinsic-wine-co/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/intrinsic-wine-co/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/intrinsic-wine-co/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/intrinsic-wine-co/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/intrinsic-wine-co/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/intrinsic-wine-co/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/intrinsic-wine-co/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/north-star/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/north-star/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/north-star/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/north-star/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/north-star/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/north-star/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/north-star/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/north-star/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/patzhall/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/patzhall/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/patzhall/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/patzhall/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/patzhall/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/patzhall/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/patzhall/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/patzhall/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/patzhall/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|smwe|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/smwe/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|smwe|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/smwe/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|smwe|views|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/themes/smwe/views/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/spring-valley-vineyard/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/spring-valley-vineyard/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/spring-valley-vineyard/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/spring-valley-vineyard/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/spring-valley-vineyard/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/spring-valley-vineyard/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/spring-valley-vineyard/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/spring-valley-vineyard/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/stagsleap/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/stagsleap/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/stagsleap/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/stagsleap/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/stagsleap/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/stagsleap/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/stagsleap/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/stagsleap/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/stagsleap/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-accordion-item' */\n 'partner/themes/stemichelle-new/views/accordion-item.view.tsx'),\n cn: '__local__-__local__-accordion-item'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carousel' */\n 'partner/themes/stemichelle-new/views/carousel.view.tsx'),\n cn: '__local__-__local__-carousel'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/stemichelle-new/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/stemichelle-new/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/stemichelle-new/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/stemichelle-new/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/stemichelle-new/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/stemichelle-new/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/stemichelle-new/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/stemichelle-new/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/stemichelle-new/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/stemichelle/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/stemichelle/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/stemichelle/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/stemichelle/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/stemichelle/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/stemichelle/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/stemichelle/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/stemichelle/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/stemichelle/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/stemichelle/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion-item|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion-item' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item.view.js'),\n cn: '@msdyn365-commerce-modules-accordion-accordion-item'\n };\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion|accordion'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion.view.js'),\n cn: '@msdyn365-commerce-modules-accordion-accordion'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|aad-generic|aad-generic'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-aad-generic' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-aad-generic'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-address-tile|account-address-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-address-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-address-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance-tile|account-customer-balance-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance|account-customer-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-customer-balance'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-generic-tile|account-generic-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-generic-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-generic-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-invoice-tile|account-invoice-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-invoice-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-invoice-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty-tile|account-loyalty-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-loyalty-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty|account-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-loyalty'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-order-templates-tile|account-order-templates-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-order-templates-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-order-templates-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile-edit|account-profile-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile-edit' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-profile-edit'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile|account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-welcome-tile|account-welcome-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-welcome-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-welcome-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-wishlist-tile|account-wishlist-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-wishlist-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-wishlist-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-sign-up|loyalty-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-loyalty-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-terms|loyalty-terms'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-terms' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-loyalty-terms'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|organization-users-tile|organization-users-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-organization-users-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-organization-users-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset-verification|password-reset-verification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset-verification' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-password-reset-verification'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset|password-reset'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-password-reset'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-in|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-in' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-sign-in'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-up|sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|account-management-address|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-account-management-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-account-management-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|business-account-address|business-account-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-business-account-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-business-account-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-billing-address|checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-billing-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-checkout-billing-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-shipping-address|checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-shipping-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-checkout-shipping-address'\n };\nviewDictionary['@msdyn365-commerce-modules|breadcrumb|modules|breadcrumb|breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-breadcrumb-breadcrumb' */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb.view.js'),\n cn: '@msdyn365-commerce-modules-breadcrumb-breadcrumb'\n };\nviewDictionary['@msdyn365-commerce-modules|business-account-management|modules|business-sign-up|business-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-account-management-business-sign-up' */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-business-account-management-business-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|business-organization-list|modules|business-organization-list|business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-organization-list-business-organization-list' */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list.view.js'),\n cn: '@msdyn365-commerce-modules-business-organization-list-business-organization-list'\n };\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|buybox|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-buybox' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-buybox-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|carousel|modules|carousel|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-carousel-carousel' */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel.view.js'),\n cn: '@msdyn365-commerce-modules-carousel-carousel'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart-icon|cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart-icon' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-customer-account-payment|checkout-customer-account-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-delivery-options|checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-delivery-options' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-delivery-options'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-gift-card|checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-gift-card' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-gift-card'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-guest-profile|checkout-guest-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-guest-profile' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-guest-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-loyalty|checkout-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-loyalty' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-loyalty'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-payment-instrument|checkout-payment-instrument'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-pickup|checkout-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-pickup' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-pickup'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-section-container|checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-section-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-section-container'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-terms-and-conditions|checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|gift-card-balance-check|gift-card-balance-check'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-gift-card-balance-check' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-gift-card-balance-check'\n };\nviewDictionary['@msdyn365-commerce-modules|content-block|modules|content-block|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-content-block-content-block' */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block.view.js'),\n cn: '@msdyn365-commerce-modules-content-block-content-block'\n };\nviewDictionary['@msdyn365-commerce-modules|cookie-compliance|modules|cookie-compliance|cookie-compliance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance' */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance.view.js'),\n cn: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-cart' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/cart.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-header' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/header.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-header'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-order-details' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-details.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-order-details'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-order-history' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-history.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-order-history'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-ratings-histogram' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-reviews-list' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/reviews-list.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-search-result-container' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/search-result-container.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-category|footer-category'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-category' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-category'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-item|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-item' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-item'\n };\nviewDictionary['@msdyn365-commerce-modules|header|modules|header|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-header-header' */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header.view.js'),\n cn: '@msdyn365-commerce-modules-header-header'\n };\nviewDictionary['@msdyn365-commerce-modules|iframe|modules|iframe|iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-iframe-iframe' */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe.view.js'),\n cn: '@msdyn365-commerce-modules-iframe-iframe'\n };\nviewDictionary['@msdyn365-commerce-modules|invoice|modules|invoices-list|invoices-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-invoices-list' */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list.view.js'),\n cn: '@msdyn365-commerce-modules-invoice-invoices-list'\n };\nviewDictionary['@msdyn365-commerce-modules|map|modules|map|map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-map-map' */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map.view.js'),\n cn: '@msdyn365-commerce-modules-map-map'\n };\nviewDictionary['@msdyn365-commerce-modules|media-gallery|modules|media-gallery|media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-media-gallery-media-gallery' */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery.view.js'),\n cn: '@msdyn365-commerce-modules-media-gallery-media-gallery'\n };\nviewDictionary['@msdyn365-commerce-modules|navigation-menu|modules|navigation-menu|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-navigation-menu-navigation-menu' */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-navigation-menu-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|checkout-order-confirmation|checkout-order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-confirmation|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-confirmation'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-details|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-details' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-details'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-history|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-history' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-history'\n };\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template-list|order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template-list' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list.view.js'),\n cn: '@msdyn365-commerce-modules-order-template-order-template-list'\n };\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template|order-template'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template.view.js'),\n cn: '@msdyn365-commerce-modules-order-template-order-template'\n };\nviewDictionary['@msdyn365-commerce-modules|product-collection|modules|product-collection|product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-collection-product-collection' */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection.view.js'),\n cn: '@msdyn365-commerce-modules-product-collection-product-collection'\n };\nviewDictionary['@msdyn365-commerce-modules|product-specification|modules|product-specification|product-specification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-specification-product-specification' */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification.view.js'),\n cn: '@msdyn365-commerce-modules-product-specification-product-specification'\n };\nviewDictionary['@msdyn365-commerce-modules|promo-banner|modules|promo-banner|promo-banner'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-promo-banner-promo-banner' */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.view.js'),\n cn: '@msdyn365-commerce-modules-promo-banner-promo-banner'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|ratings-histogram|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|reviews-list|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-reviews-list' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|write-review|write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-write-review' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-write-review'\n };\nviewDictionary['@msdyn365-commerce-modules|search-result-container|modules|search-result-container|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-result-container-search-result-container' */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container.view.js'),\n cn: '@msdyn365-commerce-modules-search-result-container-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-modules|search|modules|search|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-search' */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search.view.js'),\n cn: '@msdyn365-commerce-modules-search-search'\n };\nviewDictionary['@msdyn365-commerce-modules|site-picker|modules|site-picker|site-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-site-picker-site-picker' */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker.view.js'),\n cn: '@msdyn365-commerce-modules-site-picker-site-picker'\n };\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share-item|social-share-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share-item' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item.view.js'),\n cn: '@msdyn365-commerce-modules-social-share-social-share-item'\n };\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share|social-share'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share.view.js'),\n cn: '@msdyn365-commerce-modules-social-share-social-share'\n };\nviewDictionary['@msdyn365-commerce-modules|spacer|modules|spacer|spacer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-spacer-spacer' */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer.view.js'),\n cn: '@msdyn365-commerce-modules-spacer-spacer'\n };\nviewDictionary['@msdyn365-commerce-modules|store-selector|modules|store-selector|store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-store-selector-store-selector' */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.view.js'),\n cn: '@msdyn365-commerce-modules-store-selector-store-selector'\n };\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab-item|tab-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab-item' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item.view.js'),\n cn: '@msdyn365-commerce-modules-tab-tab-item'\n };\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab|tab'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab.view.js'),\n cn: '@msdyn365-commerce-modules-tab-tab'\n };\nviewDictionary['@msdyn365-commerce-modules|text-block|modules|text-block|text-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-text-block-text-block' */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block.view.js'),\n cn: '@msdyn365-commerce-modules-text-block-text-block'\n };\nviewDictionary['@msdyn365-commerce-modules|video-player|modules|video-player|video-player'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-video-player-video-player' */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player.view.js'),\n cn: '@msdyn365-commerce-modules-video-player-video-player'\n };\nviewDictionary['@msdyn365-commerce-modules|wishlist|modules|wishlist-items|wishlist-items'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-wishlist-wishlist-items' */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items.view.js'),\n cn: '@msdyn365-commerce-modules-wishlist-wishlist-items'\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { IMSDyn365Window } from '@msdyn365-commerce/core-internal';\nimport { Cart, CartLine, IDataServiceRequest, IUpdateCartLinesParam } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines updated before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeUpdateCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were updated\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const updateCartLinesParams = actionInput.queryParams();\n if (updateCartLinesParams && updateCartLinesParams.cartLines) {\n // Save info on updated cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.updatedCartLines = updateCartLinesParams.cartLines;\n return;\n }\n }\n actionContext.telemetry.debug('UpdateCart pre-data action hook failed - No updated cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('UpdateCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires an UpdateInCart event after UpdateCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been added\n * @param actionContext Action context\n */\nconst afterUpdateCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const updatedCartLines = actionContext.requestContext.telemetryData.updatedCartLines;\n let updatedProducts: IProductInfo[] = [];\n\n // Collect info on products updated in cart\n if (updatedCartLines) {\n try {\n updatedProducts = await getProductInfoFromCartLinesAsync(updatedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('UpdateCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire UpdateInCart event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.UpdateInCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: updatedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/UpdateCartLines',\n postReaderHook: afterUpdateCart,\n preReaderHook: beforeUpdateCart\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionListInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionListResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class GetSubscriptionsInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetSubscriptionsInput`;\r\n public getCacheObjectType = () => 'IGetSubscriptionsInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetSubscriptionsData extends IrsmSubscriptionListResponse {}\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createGetSubscriptionsInput = (args: Msdyn365.ICreateActionContext, input: IInputRequirements): GetSubscriptionsInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || input.customerId;\r\n return new GetSubscriptionsInput(\r\n subscriptionListInput(String(accNumber))\r\n );\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function getSubscriptionsAction(input: GetSubscriptionsInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getSubscriptionsAction,\r\n input: createGetSubscriptionsInput\r\n});\r\n","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { AffiliationLoyaltyTier, ProductPrice, ProjectionDomain, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for the GetPriceForSelectedVariant Data Action\r\n */\r\nexport class PriceForSelectedVariantInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n public selectedProduct: SimpleProduct | undefined;\r\n public customerId: string;\r\n public affiliationId?: number;\r\n\r\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string, affiliationId?: number) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.selectedProduct = selectedProduct;\r\n this.customerId = customerId || '';\r\n this.affiliationId = affiliationId;\r\n }\r\n\r\n public getCacheKey = () => `PriceForSelectedVariant|${this.productId}|${this.affiliationId}`;\r\n public getCacheObjectType = () => 'Price';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * The createInput method for the GetPriceForSelectedVariantDataAction\r\n * @param inputData The input data for the createInput method\r\n */\r\nexport const createActivePriceForSelectedVariantInput = (inputData: ICreateActionContext>): PriceForSelectedVariantInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n\r\n if (productId) {\r\n return new PriceForSelectedVariantInput(\r\n +productId,\r\n +inputData.requestContext.apiSettings.channelId,\r\n undefined,\r\n inputData.requestContext.user.customerAccountNumber,\r\n inputData.config && inputData.config.affiliationId);\r\n } else {\r\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\r\n }\r\n};\r\n\r\n/**\r\n * The Action Method for the GetPriceForSelectedVariant Data Action\r\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's current contextual price\r\n * via the getActivePrice RetailServer API\r\n */\r\nexport async function getPriceForSelectedVariantAction(\r\n input: PriceForSelectedVariantInput,\r\n ctx: IActionContext\r\n): Promise {\r\n return Promise.resolve()\r\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\r\n .then(() => {\r\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\r\n\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n\r\n return activeProduct;\r\n })\r\n .then(async (productResult: SimpleProduct | null) => {\r\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: +ctx.requestContext.apiSettings.catalogId };\r\n const activeProduct: SimpleProduct | undefined = productResult;\r\n\r\n if (activeProduct) {\r\n let customerAffiliations: AffiliationLoyaltyTier[] = [];\r\n if (ctx.requestContext.user &&\r\n ctx.requestContext.user.isAuthenticated &&\r\n ctx.requestContext.user.customerAccountNumber\r\n ) {\r\n await readAsync({ callerContext: ctx }, ctx.requestContext.user.customerAccountNumber).then(response => {\r\n if(response) {\r\n if(response.CustomerAffiliations && response.CustomerAffiliations.length > 0) {\r\n customerAffiliations = response.CustomerAffiliations.map(aff => {\r\n return {\r\n AffiliationId: aff.RetailAffiliationId\r\n };\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n let affiliations: AffiliationLoyaltyTier[];\r\n if(input.affiliationId) {\r\n affiliations = [\r\n {\r\n AffiliationId: input.affiliationId\r\n }\r\n ];\r\n } else if(customerAffiliations.length > 0) {\r\n affiliations = customerAffiliations;\r\n } else {\r\n affiliations = [];\r\n }\r\n return getActivePricesAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n projectDomain,\r\n [activeProduct.RecordId],\r\n new Date(),\r\n input.customerId,\r\n affiliations,\r\n true\r\n ).then(response => {\r\n if (response && response.length > 0) {\r\n return response[0];\r\n }\r\n throw new Error(\r\n '[getPriceForSelectedVariantAction]Invalid response recieved from calculateProductPrice'\r\n );\r\n });\r\n }\r\n\r\n return null;\r\n })\r\n .catch((error: Error) => {\r\n ctx.trace(error.message);\r\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\r\n });\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getPriceForSelectedVariantAction,\r\n input: createActivePriceForSelectedVariantInput\r\n});\r\n","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings, ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport {\n getCustomerBalanceAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the GetCustomerBalance data action\n */\nexport class GetCustomerBalanceInput implements IActionInput {\n public customerAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, customerAccountNumber?: string) {\n this.customerAccountNumber = customerAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CustomerBalance-${this.customerAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetCustomerBalance';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the GetCustomerBalance method\n * @param inputData The input data passed to the createInput method\n */\n\nexport const createGetCustomerBalanceInput = (inputData: ICreateActionContext): GetCustomerBalanceInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get customer balance input. User is not authenticated.');\n }\n\n return new GetCustomerBalanceInput(requestContext.apiSettings);\n};\n\n/**\n * The action method for the GetCustomerBalance data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getCustomerBalanceAction(input: GetCustomerBalanceInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(input.apiSettings, input.customerAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n ctx.telemetry.error('Not able to get customer', new Error('Not able to get customer'));\n }\n\n return getCustomerBalanceAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n customer.AccountNumber,\n customer.InvoiceAccount!\n );\n}\n\n/**\n * The GetCustomerBalance data action\n * Returns the customer's balance\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-balance',\n action: >getCustomerBalanceAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetCustomerBalanceInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionCardsInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionCardsResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class GetSubscriptionCardsInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetSubscriptionCardsInput`;\r\n public getCacheObjectType = () => 'IGetSubscriptionCardsInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IGetSubscriptionCardsData extends IrsmSubscriptionCardsResponse { }\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n}\r\n\r\nexport const createGetSubscriptionsInput = (args: Msdyn365.ICreateActionContext, input: IInputRequirements): GetSubscriptionCardsInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || input.customerId;\r\n return new GetSubscriptionCardsInput(\r\n subscriptionCardsInput(String(accNumber))\r\n );\r\n};\r\nasync function getSubscriptionsAction(input: GetSubscriptionCardsInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getSubscriptionsAction,\r\n input: createGetSubscriptionsInput\r\n});\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { INotificationMessage } from '../models/notification-message';\r\n\r\nexport function createNotificationMessage(result: INotificationMessage): GenericInput {\r\n return new GenericInput('notificationMessage', result, 'INotificationMessage');\r\n}\r\n\r\nconst createNotificationMessageInternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createNotificationMessage({});\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createNotificationMessageInternal\r\n});\r\n","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, ChannelDeliveryOptionConfiguration, FeatureState, ProductWarehouse } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport {\n getEstimatedAvailabilityAsync,\n getEstimatedProductWarehouseAvailabilityAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {FeatureStateInput, getFeatureStateAction} from './get-feature-state';\nimport {\n ActiveCartProductsInput,\n ArrayExtensions,\n buildCacheKey,\n getActiveCartProductsAction,\n IProductInventoryInformation,\n mapProductInventoryInformation\n} from './index';\n/**\n * Input class for availabilities for items in cart\n */\nexport class ProductAvailabilitiesForCartLineItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCartLineItemsAvailability`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCartLineItemsAvailability';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nconst getDeliveryMode = (cartLine: CartLine, featureSate: boolean = false, channelDeliveryOptionConfig: ChannelDeliveryOptionConfiguration, pickupDeliveryMode?: string) => {\n if(!featureSate) {\n return cartLine.DeliveryMode === pickupDeliveryMode;\n } else {\n return cartLine.DeliveryMode === channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode);\n }\n};\n\n/**\n * Calls the Retail API to get the product availabilities for items in the cart\n */\n// tslint:disable-next-line:cyclomatic-complexity tslint:disable: max-func-body-length\nexport async function getAvailabilitiesForCartLineItems(\n input: ProductAvailabilitiesForCartLineItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForCartLineItems]No valid Input was provided, failing');\n }\n\n const shippingItems: CartLine[] = [];\n const bopisItems = [];\n let productAvailabilities: IProductInventoryInformation[] = [];\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n let channelDeliveryOptionConfig: any;\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx });\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n /**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\n async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n }\n const featureState = await getFeatureState(ctx);\n const retailMultiplePickUpOptionEnabled = featureState?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled) {\n channelDeliveryOptionConfig = await getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx });\n }\n const PickupDeliveryModeCode = channelConfiguration.PickupDeliveryModeCode;\n const EmailDeliveryModeCode = channelConfiguration.EmailDeliveryModeCode;\n\n if (!cart || !channelConfiguration || !products || products.length === 0) {\n ctx.trace('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n if (cart && cart.Id && cart.CartLines && cart.CartLines.length > 0 && channelConfiguration) {\n for (const cartLine of cart.CartLines) {\n if (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && getDeliveryMode(cartLine, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, PickupDeliveryModeCode)) {\n bopisItems.push(cartLine);\n } else if (cartLine.DeliveryMode !== EmailDeliveryModeCode) {\n shippingItems.push(cartLine);\n }\n }\n }\n\n if (shippingItems && shippingItems.length > 0) {\n let productIds = shippingItems.map(x => x.ProductId!);\n productIds = ArrayExtensions.unique(productIds);\n\n const shippingProductAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get' },\n { ProductIds: productIds, DefaultWarehouseOnly: true }\n );\n\n if (shippingProductAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities.length > 0) {\n\n productAvailabilities = mapProductInventoryInformation(\n ctx,\n shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities\n );\n }\n }\n\n if (bopisItems && bopisItems.length > 0) {\n for (const bopisItem of bopisItems) {\n const productWarehouse: ProductWarehouse = {\n ProductId: bopisItem.ProductId,\n InventLocationId: bopisItem.WarehouseId\n };\n\n if (ctx.requestContext.channel && ctx.requestContext.channel.InventLocationDataAreaId) {\n productWarehouse.DataAreaId = ctx.requestContext.channel.InventLocationDataAreaId;\n }\n const getProductWarehouseAvail = await getEstimatedProductWarehouseAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get', queryResultSettings: {} },\n [productWarehouse]\n );\n\n if (getProductWarehouseAvail &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities.length > 0) {\n const productWarehouseMapping = mapProductInventoryInformation(\n ctx,\n getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities\n );\n if (productWarehouseMapping && productWarehouseMapping.length) {\n for (const item of productWarehouseMapping) {\n productAvailabilities.push(item);\n }\n }\n }\n }\n }\n\n if (productAvailabilities && productAvailabilities.length > 0) {\n return productAvailabilities;\n }\n\n ctx.trace('[getAvailabilitiesForCartLineItems] unable to get availabilities for product');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-availabilities-cartlines',\n action: >getAvailabilitiesForCartLineItems,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport {\n getStateProvincesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for get state provinces data action\n */\nexport class GetStateProvincesInput implements IActionInput {\n public countryRegionId: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\n this.countryRegionId = countryRegionId;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\n public getCacheObjectType = () => 'StateProvinceInfo';\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\n}\n\nexport default createObservableDataAction({\n action: >getStateProvinceAction\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICommerceApiSettings, ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n getAddressPurposesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for get Address Purposes data action\n */\nexport class GetAddressPurposesInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AddressPurpose', this.apiSettings);\n public getCacheObjectType = () => 'AddressPurpose';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetAddressPurposesInput => {\n return new GetAddressPurposesInput(inputData.requestContext.apiSettings);\n};\n\nexport async function getAddressPurposesAction(input: GetAddressPurposesInput, ctx: IActionContext): Promise {\n return getAddressPurposesAsync({ callerContext: ctx, queryResultSettings: {} });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-address-purposes',\n action: >getAddressPurposesAction,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICommerceApiSettings, ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getCountryRegionsAction, GetCountryRegionsInput } from './get-country-regions';\nimport { getStateProvinceAction, GetStateProvincesInput } from './get-state-provinces';\n\n/**\n * Input class for get country regions data action\n */\nexport class GetCountryStateInput implements IActionInput {\n public locale: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryStateInfo-${this.locale}`, this.apiSettings);\n public getCacheObjectType = () => 'StateProvinceInfo';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryStateInput => {\n const { locale, apiSettings } = inputData.requestContext;\n if (!(inputData.requestContext && locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n return new GetCountryStateInput(locale, apiSettings);\n};\n\nexport async function getCountryStateAction(input: GetCountryStateInput, ctx: IActionContext): Promise {\n const countryInput = new GetCountryRegionsInput(input.locale, input.apiSettings);\n const countryRegionsInfo = await getCountryRegionsAction(countryInput, ctx);\n\n const channelConfiguration = ctx.requestContext.channel;\n\n const marketISOCode = channelConfiguration && channelConfiguration.ChannelCountryRegionISOCode || 'US';\n const currentCountryRegion = countryRegionsInfo.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n const countryRegionId = (currentCountryRegion && currentCountryRegion.CountryRegionId) || 'USA';\n\n const stateInput = new GetStateProvincesInput(countryRegionId, input.apiSettings);\n return getStateProvinceAction(stateInput, ctx);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-country-state',\n action: >getCountryStateAction,\n input: createInput\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductAvailableQuantity, ReleasedProductType, ProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, IProductInventoryInformation, SelectedVariantInput } from './index';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\n */\nexport class ProductAvailabilitiesForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n\n constructor(productId: number | string, channelId: number) {\n this.productId = typeof productId === 'string' ? +productId : productId;\n this.channelId = channelId;\n }\n\n public getCacheKey = () => `ProductAvailabilitiesForSelectedVariant`;\n public getCacheObjectType = () => 'ProductAvailabilities';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the getProductAvailabilitiesForSelectedVariant data action.\n * @param inputData The input data passed to the createInput method\n */\nexport const createProductAvailabilitiesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): ProductAvailabilitiesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new ProductAvailabilitiesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n } else {\n throw new Error('Unable to create ProductAvailabilitiesForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The action method for the getProductAvailabilitiesForSelectedVariant data action\n */\nexport async function getProductAvailabilitiesForSelectedVariantAction(\n input: ProductAvailabilitiesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n // tslint:disable-next-line:prefer-type-cast\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\n return getSelectedVariant(selectedVariantInput, ctx)\n .then(productResult => {\n // don't get availability if it is service item\n if (productResult && productResult.ItemTypeValue !== PRODUCTASSERVICE && productResult.ProductTypeValue !== ProductType.Master) {\n return getEstimatedAvailabilityAsync({ callerContext: ctx }, { ProductIds: [productResult.RecordId], DefaultWarehouseOnly: true}).then(response => {\n if(response && response.ProductWarehouseInventoryAvailabilities && response.ProductWarehouseInventoryAvailabilities.length) {\n return mapProductInventoryInformation(ctx, response.ProductWarehouseInventoryAvailabilities);\n }\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getPriceForSelectedVariantAction]Error executing action`);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity\n */\nexport function mergeProductWarehouseToProductAvailabities(productsWarehouseInventory: ProductWarehouseInventoryAvailability[]): ProductAvailableQuantity[] {\n const productAvailable: ProductAvailableQuantity[] = [];\n if(productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for(const product of productsWarehouseInventory) {\n if(product.TotalAvailable !== undefined && product.ProductId !== undefined) {\n productAvailable.push({ProductId: product.ProductId, AvailableQuantity: product.TotalAvailable});\n }\n }\n }\n return productAvailable;\n}\n\n\n/**\n * The complete getProductAvailabilitiesForSelectedVariant data action\n * Get the currently selected variant via the getSelectedVariant data action, and\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-availabilities-for-selected-variant',\n action: >getProductAvailabilitiesForSelectedVariantAction,\n input: createProductAvailabilitiesForSelectedVariantInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { friendsAndFamilyValidateProgramInput } from '../../../dataActions/DataActionExtension.g';\r\n\r\n/**\r\n * Getfriendsandfamilylist Input Action\r\n */\r\nexport class ValidateFriendsAndFamilyInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IVaildateFriendsAndFamilyInput`;\r\n public getCacheObjectType = () => 'IVaildateFriendsAndFamilyInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\n/**\r\n * TODO: Delete this later it's only used when using static data\r\n */\r\nexport interface IValidateFamilyAndFriendsData {\r\n Status: string;\r\n Result: {\r\n Message: string;\r\n Code: {\r\n RecipientEmailAddress: string;\r\n Status: string;\r\n Code: string;\r\n SentDate: string;\r\n ActivationDate: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface IInputRequirements {\r\n code: string;\r\n emailListId: string;\r\n sourceId: string;\r\n}\r\n\r\nexport const createValidateFriendsAndFamilyInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { code, emailListId, sourceId }: IInputRequirements\r\n): ValidateFriendsAndFamilyInput => {\r\n return new ValidateFriendsAndFamilyInput(\r\n friendsAndFamilyValidateProgramInput(\r\n code,\r\n emailListId,\r\n sourceId\r\n )\r\n );\r\n};\r\n\r\nexport async function validateFriendsAndFamilyAction(input: ValidateFriendsAndFamilyInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n // DEBUG return: delete when module is finished\r\n // return {\r\n // Status: 'SUCCESS',\r\n // Result: {\r\n // Message: '12',\r\n // Code: {\r\n // RecipientEmailAddress: 'fred.flintstone@email.com',\r\n // Status: 'SENT',\r\n // Code: '8180fc21-c645-45a2-8f3a-3f62e80ada85',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // }\r\n // }\r\n // };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >validateFriendsAndFamilyAction,\r\n input: createValidateFriendsAndFamilyInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipSkipShipmentInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMembershipSkipShipmentResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class WineShipmentStateInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IWineShipmentStateInput`;\r\n public getCacheObjectType = () => 'IWineShipmentStateInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IWineShipmentStateInput extends IrsmClubMembershipSkipShipmentResponse { }\r\n\r\nexport interface IInputRequirements {\r\n wineClubId: string;\r\n skipShipment: boolean;\r\n}\r\n\r\nexport const createWineShipmentStateInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { skipShipment, wineClubId }: IInputRequirements,\r\n): WineShipmentStateInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber;\r\n return new WineShipmentStateInput(\r\n clubMembershipSkipShipmentInput(\r\n accNumber!,\r\n wineClubId,\r\n skipShipment\r\n )\r\n );\r\n};\r\n\r\nexport async function getWineShipmentStateAction(\r\n input: WineShipmentStateInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getWineShipmentStateAction,\r\n input: createWineShipmentStateInput,\r\n});\r\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { getCategoriesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CategoriesDataActions.g';\n\n/**\n * Input for get-categories data action\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n public readonly channelId: number;\n private _mappedToHierarchy: boolean;\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? Number(context.apiSettings.channelId) : 0;\n }\n\n public getCacheKey = () => `${this.channelId}|top-${this.maxItems || 250}`;\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createCategoriesInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, false, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a flat list\n */\nexport async function getCategoryAction(input: CategoriesInput, ctx: IActionContext): Promise {\n return (getCategoriesAsync({ callerContext: ctx }, input.channelId));\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories',\n action: >getCategoryAction,\n input: createCategoriesInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionCancelInput, subscriptionPauseInput, subscriptionResumeInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionListResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class SubscriptionState implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetSubscriptionsInput`;\r\n public getCacheObjectType = () => 'IGetSubscriptionsInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface ISubscriptionStateData extends IrsmSubscriptionListResponse { }\r\n\r\nexport type state = 'pause' | 'resume' | 'cancel';\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n subscriptionId: string;\r\n newState: state;\r\n}\r\n\r\nexport const createSubscriptionStateInput = (args: Msdyn365.ICreateActionContext, input: IInputRequirements): SubscriptionState => {\r\n switch (input.newState) {\r\n case 'cancel':\r\n return new SubscriptionState(\r\n subscriptionCancelInput(input.subscriptionId, input.customerId)\r\n );\r\n case 'pause':\r\n return new SubscriptionState(\r\n subscriptionPauseInput(input.subscriptionId, input.customerId)\r\n );\r\n case 'resume':\r\n return new SubscriptionState(\r\n subscriptionResumeInput(input.subscriptionId, input.customerId)\r\n );\r\n default:\r\n // this can't happen but typescript really wants something returned.\r\n return new SubscriptionState(\r\n subscriptionResumeInput(input.subscriptionId, input.customerId)\r\n );\r\n }\r\n};\r\n\r\nexport async function createSubscriptionStateAction(input: SubscriptionState, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >createSubscriptionStateAction,\r\n input: createSubscriptionStateInput\r\n});\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SearchState } from './search-state';\n\nexport function createSearchStateInput(result: SearchState): GenericInput {\n return new GenericInput('searchState', result, 'SearchState');\n}\n\nconst createsearchStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createSearchStateInput({ searchText: '' });\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createsearchStateInputInternal\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICommerceApiSettings, ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n getCountryRegionsByLanguageIdAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { CountryRegionInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for get country regions data action\n */\nexport class GetCountryRegionsInput implements IActionInput {\n public locale: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\n public getCacheObjectType = () => 'CountryRegionInfo';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryRegionsInput => {\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\n};\n\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\n}\n\nexport default createObservableDataAction({\n action: >getCountryRegionsAction,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { buildCacheKeyWithUrlTokens } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from './default-page-summary.props.autogenerated';\n\nexport interface IPageSummaryData {\n title?: string;\n description?: string;\n keywords?: string;\n sharingImageUrl?: string;\n canonicalUrl?: string;\n faviconUrl?: string;\n}\n\n/** Page Summary Input */\nexport class PageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'PageSummary';\n public getCacheKey = (): string => `${buildCacheKeyWithUrlTokens('PageSummary', this.requestContext)}-${this.config.title}`;\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst action = async (input: PageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n return {\n title: config && config.title,\n description: config && config.description,\n keywords: config && config.keywords,\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\n canonicalUrl: context.requestContext && context.requestContext.canonicalUrl,\n faviconUrl: config && config.faviconUrl\n };\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/default-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new PageSummaryInput(args.config, args.requestContext);\n }\n});\n","import { ArrayExtensions, buildCacheKey, IProductInventoryInformation, mapProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ActiveWishlistInput, getActiveWishlistItems } from './get-items-in-wishlists';\n\n/**\n * Input class for availabilities for items in wishlist\n */\nexport class ProductAvailabilitiesForWishlistItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveWishlistItemsAvailability`, this.apiSettings);\n public getCacheObjectType = () => `ActiveWishlistItemsAvailability`;\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForWishlistItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get wishlist which will be cached the then finds the quantities for each item\n */\nexport async function getAvailabilitiesForWishlistItems(\n input: ProductAvailabilitiesForWishlistItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForWishlistItems]No valid Input was provided, failing');\n }\n\n const products = await getActiveWishlistItems(new ActiveWishlistInput(), ctx);\n\n if (!products) {\n ctx.trace('[getAvailabilitiesForWishlistItems] Not able to get products in wishlist');\n return [];\n }\n\n let validProducts: number[] = [];\n // tslint:disable-next-line:prefer-type-cast\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\n\n for (const product of products) {\n if (product.ProductDetails && product.ProductDetails.RecordId && product.ProductDetails.ItemTypeValue !== PRODUCTASSERVICE) {\n validProducts.push(product.ProductDetails.RecordId);\n }\n }\n\n if (validProducts.length === 0) {\n ctx.trace('[getAvailabilitiesForWishlistItems] No products in wishlist');\n return [];\n }\n\n validProducts = ArrayExtensions.unique(validProducts);\n\n const productAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n { ProductIds: validProducts, DefaultWarehouseOnly: true }\n );\n\n if (productAvailabilities && productAvailabilities) {\n return mapProductInventoryInformation(ctx, productAvailabilities?.ProductWarehouseInventoryAvailabilities);\n }\n\n ctx.trace('[getAvailabilitiesForWishlistItems] unable to get availabilities for product');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-product-availabilities-wishlist-items',\n action: >getAvailabilitiesForWishlistItems,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\r\n ICommerceApiSettings, ICreateActionContext, IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n getCountryRegionsByLanguageIdAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { CountryRegionInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get country regions data action\r\n */\r\nexport class GetCountryRegionsInput implements IActionInput {\r\n public locale: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\r\n this.locale = locale;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\r\n public getCacheObjectType = () => 'CountryRegionInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): GetCountryRegionsInput => {\r\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\r\n throw new Error('Unable to create country regions input. Locale is not provided.');\r\n }\r\n\r\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\r\n};\r\n\r\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\r\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getCountryRegionsAction,\r\n input: createInput\r\n});\r\n","import { IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\n\nexport const getRnrPartnerId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.id || '';\n};\n\nexport const getRnrEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.url || '';\n};\n\nexport const getRnrAuthEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n // @ts-ignore\n const endpoint = (args.requestContext.apiSettings.rnr.proxyUrl ? args.requestContext.apiSettings.rnr.proxyUrl : args.requestContext.apiSettings.rnr.url || '');\n if (endpoint.length > 0 && endpoint.charAt(endpoint.length-1) === '/') {\n return endpoint.substring(0, endpoint.length-1);\n }\n return endpoint;\n};","import { getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariantAction } from '../../../dataActions/get-attributes-for-selected-variant';\r\n\r\n/**\r\n * Input class for the GetSingleProduct Data Action\r\n */\r\nexport class SingleProductInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n public singleProduct: SimpleProduct | undefined;\r\n\r\n constructor(productId: number, channelId: number, singleProduct?: SimpleProduct) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.singleProduct = singleProduct;\r\n }\r\n\r\n public getCacheKey = () => `ProductForSinglePLP|${this.productId}`;\r\n public getCacheObjectType = () => 'Product';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * The createInput method for the singleProductAction\r\n * @param inputData The input data for the createInput method\r\n */\r\nexport const createSingleProductInput = (inputData: ICreateActionContext>): SingleProductInput => {\r\n if (inputData.config && inputData.config.productId) {\r\n const productId = inputData.config.productId;\r\n if (inputData.requestContext.query) {\r\n inputData.requestContext.query.productId = productId.toString();\r\n }\r\n inputData.requestContext.urlTokens.recordId = productId.toString();\r\n inputData.requestContext.urlTokens.pageType = 'product';\r\n return new SingleProductInput(\r\n +productId,\r\n +inputData.requestContext.apiSettings.channelId,\r\n undefined);\r\n }\r\n throw new Error('Unable to create SingleProductInput, no productId found on module config or query');\r\n};\r\n\r\n/**\r\n * The Action Method for the singleProductAction Data Action\r\n */\r\nexport async function singleProductAction(\r\n input: SingleProductInput,\r\n ctx: IActionContext\r\n): Promise {\r\n try {\r\n const product = await getSimpleProductVariant(input, ctx);\r\n return await getAttributesFromSimpleProduct(input, ctx, product);\r\n } catch (e) {\r\n ctx.trace(e.message);\r\n throw new Error('[singleProductAction]Error executing action');\r\n }\r\n}\r\n\r\nasync function getSimpleProductVariant(input: SingleProductInput, ctx: IActionContext): Promise {\r\n const activeProduct: SimpleProduct | undefined = input.singleProduct;\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n return activeProduct;\r\n}\r\n\r\nasync function getAttributesFromSimpleProduct(input: SingleProductInput, ctx: IActionContext, productResult: SimpleProduct | undefined | null): Promise {\r\n if (productResult) {\r\n const attributesForSelectedVariantInput = new AttributesForSelectedVariantInput(input.productId, input.channelId, productResult);\r\n return getAttributesForSelectedVariantAction(attributesForSelectedVariantInput, ctx);\r\n }\r\n return null;\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >singleProductAction,\r\n input: createSingleProductInput\r\n});","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { IDictionary, IQueryResultSettings, ProductRefiner, ProductSearchCriteria } from '@msdyn365-commerce/retail-proxy';\r\nimport { getProductSearchRefinersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { IRemapper } from '../../Utilities/refiners';\r\n\r\n/**\r\n * Uses Bulk refiner API to get refiners and child refiner values\r\n * @param searchCriteria product search criteria\r\n * @param maxItems max items\r\n * @param ctx action context\r\n */\r\nexport async function getProductRefinerHierarchy(searchCriteria: ProductSearchCriteria, queryResultSettings: IQueryResultSettings, ctx: IActionContext, configuration?: IDictionary): Promise {\r\n return getProductSearchRefinersAsync({ callerContext: ctx, queryResultSettings: queryResultSettings }, searchCriteria).then((productRefiners: ProductRefiner[]) => {\r\n if (!productRefiners) {\r\n ctx.trace('[getRefinersByCriteriaAction] returned no refiners');\r\n return [];\r\n }\r\n\r\n // @FIXME/dg: This is a crime against nature\r\n const result = (productRefiners || []).map((productRefiner: ProductRefiner) => productRefiner);\r\n\r\n // Selectively remap refiner labels if any are defined in global config\r\n const remappers: IRemapper[] | undefined = configuration && configuration.refinerRemappers;\r\n if (remappers) {\r\n result.forEach(entry => {\r\n // Are there any remap rules for this refiner?\r\n const remap = remappers.find(remapRecord => remapRecord.originalName.toLowerCase() === entry.KeyName?.toLowerCase());\r\n\r\n // If so, change the name\r\n if (remap) {\r\n entry.KeyName = remap.newName;\r\n }\r\n });\r\n }\r\n\r\n if (!result.length) {\r\n ctx.trace('[getRefinersByCriteriaAction] returned no IProductRefinerHierarchy objects');\r\n return [];\r\n }\r\n\r\n return result;\r\n });\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { IDictionary } from '@msdyn365-commerce/retail-proxy';\r\nimport { BaseCollectionInput, createBaseCollectionInput } from './base-collection-action';\r\nimport { getProductRefinerHierarchy } from './get-product-refiner-hierarchy';\r\n\r\n/**\r\n * Refiners-by-Collection Input action\r\n */\r\nexport class RefinersByCollectionInput extends BaseCollectionInput implements IActionInput {\r\n public configuration: IDictionary = {};\r\n\r\n public getCacheObjectType = () => 'ProductRefiner';\r\n public dataCacheType = () => {\r\n if (\r\n this.pageType !== 'Category' ||\r\n (this.refiners && this.refiners.length > 0) ||\r\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\r\n ) {\r\n return 'request';\r\n } else {\r\n return 'application';\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Create input method which creates an ActionInput for fetching list page refiners\r\n */\r\nconst createInput = (args: ICreateActionContext): IActionInput => {\r\n const input = createBaseCollectionInput(args, RefinersByCollectionInput);\r\n\r\n input.configuration = args.requestContext.app.config;\r\n return input;\r\n};\r\n\r\n/**\r\n * Action method which fetches refiners for the given list page\r\n */\r\nasync function action(input:RefinersByCollectionInput, ctx: IActionContext): Promise {\r\n if(input.pageType === 'Category') {\r\n if(input.category) {\r\n return getProductRefinerHierarchy(\r\n {\r\n CategoryIds:[input.category],\r\n Context: {\r\n ChannelId: input.apiSettings.channelId,\r\n CatalogId: input.apiSettings.catalogId\r\n }\r\n },\r\n input.queryResultSettings,\r\n ctx,\r\n input.configuration);\r\n } else {\r\n throw new Error('[GetRefinersForCollection]Category Page Detected, but no global categoryId found');\r\n }\r\n } else {\r\n if(input.searchText) {\r\n return getProductRefinerHierarchy(\r\n {\r\n SearchCondition: input.searchText,\r\n Context: {\r\n ChannelId: input.apiSettings.channelId,\r\n CatalogId: input.apiSettings.catalogId\r\n }\r\n },\r\n input.queryResultSettings,\r\n ctx);\r\n } else {\r\n throw new Error('[GetFullProductsForCollection]Search Page Detected, but no q= query parameter found');\r\n }\r\n }\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/search-result-container/get-refiners-for-collection',\r\n action: >action,\r\n input: createInput\r\n});","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n getStateProvincesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get state provinces data action\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getStateProvinceAction\r\n});\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductRefinerValue, ProductSearchResult, SimpleProduct, SortingInfo } from '@msdyn365-commerce/retail-proxy';\nimport { observable } from 'mobx';\n\nimport { listPageType } from './actions';\n\n/**\n * ListPageState class\n */\nexport class ListPageState {\n @observable public activeFilters: ProductRefinerValue[] | null = null;\n @observable public activeProducts: ProductSearchResult[] = [];\n @observable public sortingCritera: SortingInfo | null = null;\n @observable public currentPageNumber: number | null = null;\n @observable public totalProductCount: number | undefined;\n @observable public pageSize: number = 10;\n @observable public pageType: listPageType = 'Unknown';\n @observable public featureProduct: SimpleProduct | null = null;\n @observable public productPrices: ProductPrice[] | undefined = [];\n}\n\n/**\n * ListPageStateInput - action input\n */\nexport class ListPageStateInput implements IActionInput {\n public getCacheKey = () => `ListPageState`;\n public getCacheObjectType = () => 'ListPageState';\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function listPageStateAction(\n input: ListPageStateInput,\n ctx: IActionContext\n): Promise {\n return new ListPageState();\n}\n\n/**\n * create new input for create action\n */\nexport const createListPageInput = (\n inputData: ICreateActionContext>\n): IActionInput => {\n return new ListPageStateInput();\n};\n\n/**\n * ListPageState - create action\n */\nexport default createObservableDataAction({\n action: >listPageStateAction,\n input: createListPageInput\n});\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { IAccordionExpandedState } from './accordion-state';\n\nexport function createAccordionStateInput(result: IAccordionExpandedState): GenericInput {\n return new GenericInput('accordionExpandedState', result, 'IAccordionExpandedState');\n}\n\nconst createAccordionStateInputInternal = (): IActionInput => {\n return createAccordionStateInput({});\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createAccordionStateInputInternal\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput, createAttributesForSelectedVariantInput } from './get-attributes-for-selected-variant';\r\n\r\nconst AttributeEventIntro: string = 'INTRODUCTION';\r\nconst AttributeEventBody: string = 'BODY';\r\n\r\nexport interface IEventDescription {\r\n intro: string;\r\n body: string;\r\n}\r\n\r\n/**\r\n * Event Description Action Input\r\n */\r\nexport class EventDescriptionInput implements IActionInput {\r\n public attributesInput: AttributesForSelectedVariantInput;\r\n constructor(attrib: AttributesForSelectedVariantInput) {\r\n this.attributesInput = attrib;\r\n }\r\n public getCacheKey = () =>\r\n `${this.attributesInput.productId}:${this.attributesInput.channelId}:${this.attributesInput.catalogId}:EventDescription`;\r\n public getCacheObjectType = () => 'ProductAttributeValue';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getEventDescription(\r\n input: EventDescriptionInput,\r\n ctx: IActionContext\r\n): Promise {\r\n const attributes = await getAttributesForSelectedVariant(\r\n input.attributesInput,\r\n ctx\r\n );\r\n\r\n const eventDescription: IEventDescription = {\r\n intro: '',\r\n body: ''\r\n };\r\n\r\n // Event Intro\r\n const eventIntro = attributes.find(\r\n attribute =>\r\n attribute.Name!.toUpperCase() === AttributeEventIntro\r\n );\r\n\r\n if (eventIntro && eventIntro.TextValue) {\r\n eventDescription.intro = eventIntro.TextValue;\r\n }\r\n\r\n // Event Body\r\n const eventBody = attributes.find(\r\n attribute =>\r\n attribute.Name!.toUpperCase() === AttributeEventBody\r\n );\r\n\r\n if (eventBody && eventBody.TextValue) {\r\n eventDescription.body = eventBody.TextValue;\r\n }\r\n\r\n return eventDescription;\r\n}\r\n\r\n// ===========================================================================\r\n// ===========================================================================\r\nconst createEventDescriptionInput = (\r\n inputData: ICreateActionContext>\r\n): IActionInput => {\r\n const selectedVariant = createAttributesForSelectedVariantInput(inputData);\r\n return new EventDescriptionInput(selectedVariant);\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getEventDescription,\r\n input: createEventDescriptionInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * This function gets the ratings summary\r\n */\r\nasync function getRatingsSummary(input:{}, ctx: Msdyn365.IActionContext): Promise {\r\n return {};\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-ratings-summary',\r\n action: getRatingsSummary\r\n});","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input\n */\nexport class CheckoutStateInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CheckoutState`, this.apiSettings);\n public getCacheObjectType = () => 'CheckoutState';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action\n */\nexport default createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getOrderTemplates, GetOrderTemplatesInput, QueryResultSettingsProxy } from '..';\nimport { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetFullOrderTemplatesInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetFullOrderTemplates`;\n public getCacheObjectType = () => 'GetFullOrderTemplates';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullOrderTemplatesInput = (inputData: ICreateActionContext): GetFullOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplatesInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplates data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getFullOrderTemplatesAction(input: GetFullOrderTemplatesInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplates: OrderTemplate[] = [];\n\n const inputParams = new GetOrderTemplatesInput();\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length === 0) {\n return orderTemplates;\n }\n\n for (let i = 0; i < productLists.length; ++i) {\n const list = productLists[i];\n const inputLines = new GetPaginatedOrderTemplateLinesInput(list.Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n orderTemplates.push(new OrderTemplate(list, linesState.lines, linesState.totalCount));\n }\n\n ctx.trace(orderTemplates.length.toString());\n return orderTemplates;\n}\n\n/**\n * The GetFullOrderTemplates Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-templates',\n action: >getFullOrderTemplatesAction,\n input: createGetFullOrderTemplatesInput\n});","import { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for ActiveCheckoutCartWithProducts data action\n */\nexport class ActiveCheckoutCartProductsInput implements IActionInput {\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createInput = () => {\n return new ActiveCheckoutCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\n */\nexport async function getActiveCheckoutCartProductsAction(input: ActiveCheckoutCartProductsInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing'));\n throw new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing');\n }\n\n const checkoutState = await getCheckoutState(ctx);\n const cart = checkoutState.checkoutCart.cart;\n\n // If there are cart lines, make call to get products\n if (cart && cart.CartLines && cart.CartLines.length) {\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then(products => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCheckoutCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/checkout/get-products-in-active-checkout-cart',\n action: >getActiveCheckoutCartProductsAction,\n input: createInput\n});\n"],"sourceRoot":""}