@zengenti/contensis-react-base 3.0.0-beta.65 → 3.0.0-beta.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/contensis-react-base.js +1 -1
- package/cjs/{sagas-2ac68031.js → sagas-24f5607f.js} +24 -9
- package/cjs/sagas-24f5607f.js.map +1 -0
- package/cjs/search.js +9 -9
- package/cjs/search.js.map +1 -1
- package/esm/contensis-react-base.js +1 -1
- package/esm/{sagas-f53dd366.js → sagas-489c29ca.js} +24 -9
- package/esm/sagas-489c29ca.js.map +1 -0
- package/esm/search.js +10 -10
- package/esm/search.js.map +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/cjs/sagas-2ac68031.js.map +0 -1
- package/esm/sagas-f53dd366.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sagas-489c29ca.js","sources":["../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/types.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/actions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/models/Enums.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/getIn.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/selectors.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/ContensisDeliveryApi.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/performance.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/schema.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/expressions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/queries.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-searchuri.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/searchresult-to-state.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filter-to-filterexpression.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpressions.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-queryparams.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/entry-to-filteritem.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/queryParams-to-customapi.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts"],"sourcesContent":["const ACTION_PREFIX = '@SEARCH/';\nexport const APPLY_CONFIG = `${ACTION_PREFIX}APPLY_CONFIG`;\nexport const CLEAR_FILTERS = `${ACTION_PREFIX}CLEAR_FILTERS`;\nexport const DO_SEARCH = `${ACTION_PREFIX}DO_SEARCH`;\nexport const EXECUTE_SEARCH = `${ACTION_PREFIX}EXECUTE_SEARCH`;\nexport const EXECUTE_SEARCH_ERROR = `${ACTION_PREFIX}EXECUTE_SEARCH_ERROR`;\nexport const EXECUTE_SEARCH_PRELOAD = `${ACTION_PREFIX}EXECUTE_SEARCH_PRELOAD`;\nexport const LOAD_FILTERS = `${ACTION_PREFIX}LOAD_FILTERS`;\nexport const LOAD_FILTERS_COMPLETE = `${ACTION_PREFIX}LOAD_FILTERS_COMPLETE`;\nexport const LOAD_FILTERS_ERROR = `${ACTION_PREFIX}LOAD_FILTERS_ERROR`;\nexport const SET_FEATURED_ENTRIES = `${ACTION_PREFIX}SET_FEATURED_ENTRIES`;\nexport const SET_ROUTE_FILTERS = `${ACTION_PREFIX}SET_ROUTE_FILTERS`;\nexport const SET_SEARCH_FILTERS = `${ACTION_PREFIX}SET_SEARCH_FILTERS`;\nexport const SET_SEARCH_ENTRIES = `${ACTION_PREFIX}SET_SEARCH_ENTRIES`;\nexport const SET_SELECTED_FILTER = `${ACTION_PREFIX}SET_SELECTED_FILTER`;\nexport const UPDATE_CURRENT_FACET = `${ACTION_PREFIX}UPDATE_CURRENT_FACET`;\nexport const UPDATE_CURRENT_TAB = `${ACTION_PREFIX}UPDATE_CURRENT_TAB`;\nexport const UPDATE_SORT_ORDER = `${ACTION_PREFIX}UPDATE_SORT_ORDER`;\nexport const UPDATE_PAGE_INDEX = `${ACTION_PREFIX}UPDATE_PAGE_INDEX`;\nexport const UPDATE_SEARCH_TERM = `${ACTION_PREFIX}UPDATE_SEARCH_TERM`;\nexport const UPDATE_SELECTED_FILTERS = `${ACTION_PREFIX}UPDATE_SELECTED_FILTERS`;\n","import {\n CLEAR_FILTERS,\n SET_ROUTE_FILTERS,\n UPDATE_PAGE_INDEX,\n UPDATE_SELECTED_FILTERS,\n UPDATE_CURRENT_FACET,\n UPDATE_CURRENT_TAB,\n UPDATE_SEARCH_TERM,\n UPDATE_SORT_ORDER,\n DO_SEARCH,\n} from './types';\nimport { Mappers } from '../models/Search';\nimport {\n ClearFiltersActionCreator,\n InitListingActionCreator,\n TriggerSearchActionCreator,\n} from '../models/SearchActions';\n\nexport const withMappers = <T>(action: T, mappers: Mappers) => {\n return { ...action, mappers };\n};\n\nexport const triggerSearch: TriggerSearchActionCreator = ({\n config,\n context,\n debug,\n defaultLang,\n excludeIds,\n facet,\n mapper,\n mappers,\n params,\n}) => {\n return {\n type: DO_SEARCH,\n config,\n context,\n debug,\n defaultLang,\n excludeIds,\n facet,\n mapper,\n mappers,\n params,\n };\n};\n\nexport const initListing: InitListingActionCreator = ({\n context,\n facet,\n mapper,\n params,\n}) => {\n return {\n type: SET_ROUTE_FILTERS,\n context,\n facet,\n mapper,\n params,\n };\n};\n\nexport const navigate = (path: string, state?: any) => {\n return {\n type: '@ROUTING/_SET_ROUTE',\n path,\n state,\n };\n};\n\nexport const clearFilters: ClearFiltersActionCreator = () => {\n return {\n type: CLEAR_FILTERS,\n };\n};\n\nexport const updatePageIndex = (pageIndex: number, scrollYPos?: number) => {\n return {\n type: UPDATE_PAGE_INDEX,\n pageIndex,\n scrollYPos,\n };\n};\n\nexport const updateCurrentFacet = (facet: string) => {\n return {\n type: UPDATE_CURRENT_FACET,\n facet,\n };\n};\n\nexport const updateCurrentTab = (id: number) => {\n return {\n type: UPDATE_CURRENT_TAB,\n id,\n };\n};\n\nexport const updateSearchTerm = (term: string) => {\n return {\n type: UPDATE_SEARCH_TERM,\n term,\n };\n};\n\nexport const updateSelectedFilters = (\n filter: string,\n key: string,\n isUnknownItem = false,\n scrollYPos?: number\n) => {\n return {\n type: UPDATE_SELECTED_FILTERS,\n filter,\n key,\n isUnknownItem,\n scrollYPos,\n };\n};\n\nexport const updateSortOrder = (orderBy: string, facet?: string) => {\n return {\n type: UPDATE_SORT_ORDER,\n orderBy,\n facet,\n };\n};\n","export enum Context {\n facets = 'facets',\n listings = 'listings',\n minilist = 'minilist',\n}\n// export type Context = 'facets' | 'listings' | 'minilist';\n","import { jpath } from 'jsonpath-mapper';\n\n// Find a fromJS function from global that is dynamically loaded in createStore\n// or replace with a stub function for non-immutable gets\nexport const makeFromJS = (\n returnType: 'immutable' | 'js' = (globalThis as any).STATE_TYPE || 'immutable'\n) =>\n returnType === 'immutable'\n ? (globalThis as any).immutable?.fromJSOrdered ||\n (globalThis as any).immutable?.fromJS ||\n ((v: any) => v)\n : (v: any) => v;\n\nconst getImmutableOrJS = <\n S extends Record<string, unknown>,\n T extends keyof S | any\n>(\n state: S,\n stateKey: T | T[],\n fallbackValue?: any,\n returnType: 'immutable' | 'js' = (globalThis as any).STATE_TYPE || 'immutable'\n) => {\n // Find a fromJS function from global that is dynamically loaded in createStore\n // or replace with a stub function for non-immutable gets\n const fromJS = makeFromJS(returnType);\n\n if (\n state &&\n 'get' in state &&\n typeof state.get === 'function' &&\n 'getIn' in state &&\n typeof state.getIn === 'function' &&\n 'toJS' in state &&\n typeof state.toJS === 'function'\n ) {\n if (Array.isArray(stateKey))\n return fromJS(state.getIn(stateKey, fallbackValue));\n return fromJS(state.get(stateKey, fallbackValue)) as S[T | any];\n }\n\n if (Array.isArray(stateKey) && state && typeof state === 'object') {\n const result = jpath(stateKey.join('.'), state);\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n }\n\n const result =\n state && typeof state === 'object' ? state[stateKey as string] : undefined;\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n};\n\nexport default getImmutableOrJS;\n","import { Context } from '../models/Enums';\nimport { QueryParams as QueryParams2 } from '../models/Queries';\nimport { CustomApi, SearchQueryParams } from '../models/Search';\nimport {\n AppState,\n Facet,\n Facets,\n Filters,\n Paging,\n SelectedFilters,\n Tab,\n TabAndFacets,\n} from '../models/SearchState';\nimport getIn, { makeFromJS } from './getIn';\n\ntype StateType = 'immutable' | 'js';\n\nexport const getSearchContext = (state: AppState): Context =>\n getIn(state, ['search', 'context'], Context.facets);\n\nexport const getCurrent = (state: AppState, context = Context.facets) =>\n context === Context.facets\n ? getCurrentFacet(state)\n : getCurrentListing(state);\n\nexport const getCurrentFacet = (state: AppState): string =>\n getIn(state, ['search', 'currentFacet']);\n\nexport const getCurrentListing = (state: AppState): string =>\n getIn(state, ['search', 'currentListing']);\n\nexport const getCurrentTab = (state: AppState): number =>\n getIn(state, ['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);\n\nexport const getFacets = (state: AppState, returnType?: StateType): Facets =>\n getIn(state, ['search', Context.facets], {}, returnType);\n\nexport const getTabFacets = (state: AppState) =>\n Object.fromEntries(\n Object.entries(getFacets(state, 'js')).filter(\n ([key]) =>\n getIn(getFacets(state), [key, 'tabId'], 0) === getCurrentTab(state)\n )\n );\n\nexport const getFacetTitles = (state: AppState) =>\n Object.entries(getFacets(state, 'js')).map(([key, facet = {}]) => ({\n isSelected: getCurrentFacet(state) === key,\n key,\n title: facet.title as string | undefined,\n totalCount: facet.pagingInfo?.totalCount as number,\n }));\n\nexport const getFacet = (\n state: AppState,\n facetName = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n const currentFacet = facetName || getCurrentFacet(state);\n return getIn(\n state,\n ['search', context, currentFacet],\n {},\n returnType\n ) as Facet;\n};\n\nexport const getListing = (state: AppState, listing = '') => {\n const currentListing = listing || getCurrentListing(state);\n return getIn(\n state,\n ['search', Context.listings, currentListing],\n {}\n ) as Facet;\n};\n\nexport const getFilters = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n): Filters => {\n return getIn(\n state,\n ['search', context, facet || getCurrent(state, context), 'filters'],\n {},\n returnType\n );\n};\n\nexport const getRenderableFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n): Filters =>\n Object.fromEntries(\n Object.entries(getFilters(state, facet, context, 'js')).filter(\n ([, f = {}]) => (typeof f.renderable !== 'boolean' ? true : f.renderable)\n )\n );\n\nexport const getFiltersToLoad = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n) => {\n const filters = getFilters(state, facet, context, returnType);\n const loadedFilters = Object.entries(filters).map(([key, f = {}]) => [\n key,\n (f.items || []).filter(i => {\n const title = i?.title;\n return typeof title !== 'undefined' && !!title;\n }).length > 0 && (f.isError || false) === false,\n ]);\n return loadedFilters\n .map(([filterKey, isLoaded]) => (!isLoaded ? filterKey : null))\n .filter(f => !!f) as string[];\n};\n\n// We lowercase the filter key unless it's an ISO date string where the T must be uppercase\nexport const getSelectedFilters = (\n state: AppState,\n facet = '',\n context = Context.facets,\n returnType?: StateType\n): SelectedFilters => {\n const filters = getFilters(state, facet, context, 'js');\n const isoDateRegex = RegExp(/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d/);\n\n const selectedFilters = Object.fromEntries(\n Object.entries(filters).map(([key, filter = {}]) => [\n key,\n (filter.items || [])\n .filter(item => !!(item.isSelected || false))\n .map(item => {\n const key = item?.key || '';\n const isIsoDate = isoDateRegex.test(key);\n return isIsoDate\n ? key\n : typeof key.toLowerCase !== 'undefined'\n ? key.toLowerCase()\n : key;\n }),\n ])\n );\n const fromJS = makeFromJS(returnType);\n return fromJS(selectedFilters);\n};\n\nexport const getResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'results'],\n [],\n returnType\n ) as any[];\n};\n\nexport const getIsInternalPaging = (\n state: AppState,\n current: string,\n context = Context.facets\n): boolean => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'queryParams',\n 'internalPaging',\n ],\n false\n );\n};\n\nexport const getIsLoaded = (\n state: AppState,\n context = Context.facets,\n facet?: string\n) => {\n return !!getIn(\n state,\n ['search', context, facet || getCurrent(state, context), 'queryDuration'],\n 0\n );\n};\n\nexport const getIsLoading = (\n state: AppState,\n context = Context.facets,\n facet?: string\n): boolean => {\n return getIn(state, [\n 'search',\n context,\n facet || getCurrent(state, context),\n 'entries',\n 'isLoading',\n ]);\n};\n\nexport const getIsSsr = (state: AppState): boolean =>\n getIn(state, ['search', 'config', 'ssr'], false);\n\nexport const getFeaturedResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n [],\n returnType\n ) as any[];\n};\n\nexport const getPaging = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n): Paging => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'pagingInfo'],\n {},\n returnType\n );\n};\n\nexport const getPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pageIndex',\n ]);\n};\n\nexport const getPrevPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'prevPageIndex',\n ]);\n};\nexport const getPageIsLoading = (\n state: AppState,\n current = '',\n context = Context.facets\n): boolean => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'isLoading',\n ]);\n};\n\nexport const getPagesLoaded = (\n state: AppState,\n current = '',\n context = Context.facets\n): number[] => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pagesLoaded',\n ],\n [],\n 'js'\n );\n};\n\nexport const getTotalCount = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'totalCount',\n ]);\n};\n\nexport const getSearchTerm = (state: AppState): string =>\n getIn(state, ['search', 'term']);\n\nexport const getSearchTabs = (state: AppState, returnType?: StateType): Tab[] =>\n getIn(state, ['search', 'tabs'], [], returnType);\n\nexport const getQueryParams = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'queryParams'],\n {},\n 'js'\n ) as Record<string, any>;\n};\n\nexport const getQueryParameter = <\n K extends keyof SearchQueryParams,\n K2 extends keyof QueryParams2\n>(\n {\n state,\n facet,\n context = Context.facets,\n }: { state: AppState; facet?: string; context?: Context },\n key: K | K2,\n ifnull: any = null\n): SearchQueryParams[K] | QueryParams2[K2] => {\n return getIn(getQueryParams(state, facet, context), key, ifnull, 'js');\n};\n\nexport const getCustomApi = (\n state: AppState,\n current: string,\n context = Context.facets,\n returnType?: StateType\n): CustomApi => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'customApi'],\n null,\n returnType\n );\n};\n\nexport const getCustomEnv = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'env',\n ]);\n};\n\nexport const getTabsAndFacets = (state: AppState, returnType?: StateType) => {\n const tabs = getSearchTabs(state, 'js');\n const facets = getFacets(state, 'js');\n\n const tabsAndFacets = (tabs || []).map((tab = {} as Tab) => {\n const fieldsToCount = tab.totalCount;\n let countFields: string[][];\n\n if (typeof fieldsToCount === 'string') countFields = [[fieldsToCount]];\n\n const thisTabFacets = Object.entries(facets).filter(\n ([key]) => getIn(facets, [key, 'tabId'], 0) === tab.id\n ) as [string, Facet][];\n\n const thisTabTotal = thisTabFacets\n .map(([facetName, facet = {}]) => {\n if (!countFields || countFields.find((f = []) => f?.[0] === facetName))\n return getIn(facet, ['pagingInfo', 'totalCount']);\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n return {\n ...tab,\n [Context.facets]: Object.fromEntries(thisTabFacets),\n totalCount: thisTabTotal,\n } as TabAndFacets;\n });\n\n const fromJS = makeFromJS(returnType);\n return fromJS(tabsAndFacets);\n};\n\nexport const getSearchTotalCount = (state: AppState): number => {\n const tabsAndFacets = getTabsAndFacets(state, 'js');\n const wholeSearchTotal = tabsAndFacets\n .map((t = {} as TabAndFacets) => t.totalCount)\n .reduce((a: number, b: number) => a + b, 0);\n return wholeSearchTotal;\n};\n\nexport const getFacetsTotalCount = (state: AppState) => {\n const facets = getFacets(state);\n const wholeSearchTotal = Object.entries(facets)\n .map(([, t = {}]) => t.pagingInfo?.totalCount || 0)\n .reduce((a, b) => a + b, 0);\n return wholeSearchTotal;\n};\n\n// An exported copy of the relevant selectors scoped by default to a facets context\nexport const selectFacets = {\n getCurrent: getCurrentFacet,\n getCurrentTab,\n getCustomApi,\n getCustomEnv,\n getFacet,\n getFacetTitles,\n getFacets,\n getFacetsTotalCount,\n getFeaturedResults,\n getFilters,\n getFiltersToLoad,\n getIsLoaded,\n getIsLoading,\n getPageIndex,\n getPageIsLoading,\n getPagesLoaded,\n getPaging,\n getQueryParams: (state: AppState, facet: string) =>\n getQueryParams(state, facet, Context.facets),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: keyof SearchQueryParams | keyof QueryParams2,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.facets }, key, ifnull),\n getRenderableFilters,\n getResults,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n getSearchTabs,\n getSearchTerm,\n getSearchTotalCount,\n getSelectedFilters,\n};\n\n// An exported copy of the relevant selectors pre-scoped to a listing context\nexport const selectListing = {\n getCurrent: getCurrentListing,\n getFeaturedResults: (state: AppState, listing = '') =>\n getFeaturedResults(state, listing, Context.listings, 'js'),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings, 'js'),\n getFiltersToLoad: (state: AppState, listing = '') =>\n getFiltersToLoad(state, listing, Context.listings),\n getListing,\n getIsLoaded: (state: AppState) => getIsLoaded(state, Context.listings),\n getIsLoading: (state: AppState) => getIsLoading(state, Context.listings),\n getPageIndex: (state: AppState, listing = '') =>\n getPageIndex(state, listing, Context.listings),\n getPaging: (state: AppState, listing = '') =>\n getPaging(state, listing, Context.listings, 'js'),\n getPageIsLoading: (state: AppState, listing = '') =>\n getPageIsLoading(state, listing, Context.listings),\n getPagesLoaded: (state: AppState, listing = '') =>\n getPagesLoaded(state, listing, Context.listings),\n getQueryParams: (state: AppState, listing = '') =>\n getQueryParams(state, listing, Context.listings),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: keyof SearchQueryParams | keyof QueryParams2,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.listings }, key, ifnull),\n getRenderableFilters: (state: AppState, listing = '') =>\n getRenderableFilters(state, listing, Context.listings),\n getResults: (state: AppState, listing = '') =>\n getResults(state, listing, Context.listings, 'js'),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings, 'js'),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n getIn(state, ['routing', 'currentPath']);\n\nexport const selectCurrentProject = (state: AppState) =>\n getIn(state, ['routing', 'currentProject']);\n\nexport const selectVersionStatus = (state: AppState) =>\n getIn(state, ['version', 'contensisVersionStatus']);\n","import { Client } from 'contensis-delivery-api';\n\nconst getClientConfig = (project, env) => {\n let config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */\n if (project) {\n config.projectId = project;\n }\n\n if (\n typeof window != 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = env || '';\n config.responseHandler = {\n 404: () => null,\n };\n }\n return config;\n};\nexport * from 'contensis-delivery-api';\n\n// This should only be executed on the client as it relies on the window.\nexport const GetClientSideDeliveryApiStatus = () => {\n if (typeof window != 'undefined') {\n const currentHostname = window.location.hostname;\n return GetDeliveryApiStatusFromHostname(currentHostname);\n }\n return null;\n};\n\nexport const GetDeliveryApiStatusFromHostname = currentHostname => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n};\n\nclass DeliveryApi {\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return client.entries.search(query, linkDepth || 1);\n }\n\n getClient(deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n return Client.create(baseConfig);\n }\n getEntry(id, linkDepth = 1, deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n const client = Client.create(baseConfig);\n // return client.entries.get(id, linkDepth);\n return client.entries.get({ id, linkDepth });\n }\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nclass CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nclass LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n\nclass CachedSearch {\n cache = new LruCache();\n taxonomyLookup = {};\n\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n project + JSON.stringify(query) + linkDepth.toString(),\n () => client.entries.search(query, linkDepth)\n );\n }\n\n getTaxonomyNodeByPath(path, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`[TAXONOMY NODE] ${path}`, () =>\n client.taxonomy\n .getNodeByPath({ path: path, order: 'defined', childDepth: 2 })\n .then(node => this.extendTaxonomyNode(node))\n );\n }\n\n request(key, execute) {\n if (!this.cache.get(key) || typeof window == 'undefined') {\n let promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key);\n }\n\n extendTaxonomyNode(node) {\n let id = this.getTaxonomyId(node);\n this.taxonomyLookup[id] = node.key;\n return {\n ...node,\n id,\n children: node.children\n ? node.children.map(n => this.extendTaxonomyNode(n))\n : null,\n };\n }\n\n getTaxonomyId(node) {\n if (node.key) {\n let parts = node.key.split('/');\n return parts[parts.length - 1];\n }\n return '';\n }\n\n fetch(uri, opts = {}) {\n return this.request(`[FETCH] ${uri} ${JSON.stringify(opts)}`, () =>\n fetch(uri, opts)\n );\n }\n}\n\nexport const cachedSearch = new CachedSearch();\n","export const now = () => {\n if (typeof window == 'undefined') {\n return Date.now();\n }\n return window.performance.now();\n};\n","// eslint-disable-next-line import/default\nimport { stringify } from 'query-string';\nimport { now } from './performance';\nimport { cachedSearch } from './ContensisDeliveryApi';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { PagedList, Query } from 'contensis-core-api';\nimport { CustomApi } from '../models/Search';\nimport { TimedSearchResponse } from '../models/SearchUtil';\n\nexport function fixFreeTextForElastic(s: string): string {\n const illegalChars = [\n '>',\n '<',\n '=',\n '|',\n '!',\n '{',\n '}',\n '[',\n ']',\n '^',\n '~',\n '*',\n '?',\n ':',\n '\\\\',\n '/',\n ];\n\n const illegalRegEx = new RegExp(\n illegalChars.map(c => '\\\\' + c).join('|'),\n 'g'\n );\n s = s.replace(illegalRegEx, '');\n // s = s.replace(encodedRegEx, ''); // (m) => '\\\\\\\\' + m);\n\n return s;\n}\n\nexport const timedSearch = async (\n query: Query,\n linkDepth = 0,\n projectId?: string,\n env?: string\n): Promise<null | TimedSearchResponse> => {\n if (!query) return null;\n\n let duration = 0;\n\n const start = now();\n const payload = (await cachedSearch.search(\n query,\n linkDepth,\n projectId,\n env\n )) as PagedList<Entry>;\n const end = now();\n\n duration = end - start;\n\n return { duration, payload };\n};\n\nexport const getItemsFromResult = (result?: {\n duration: number;\n payload: PagedList<Entry> | any[];\n}): Entry[] => {\n const { payload } = result || {};\n if (payload) {\n if (Array.isArray(payload)) return payload;\n if (Array.isArray(payload.items)) return payload.items;\n return payload as any;\n }\n return [];\n};\n\nexport const extractQuotedPhrases = (searchTerm: string): string[] => {\n const pattern = new RegExp(\n /(?=[\"'])(?:\"[^\"\\\\]*(?:\\\\[\\s\\S][^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\[\\s\\S][^'\\\\]*)*')/gm\n );\n\n return (searchTerm.match(pattern) || []).map(match =>\n match.replace(/\"/g, '')\n );\n};\n\nexport const buildUrl = (\n route: string,\n params: { [key: string]: string }\n): string => {\n const qs = stringify(params) as string;\n const path = qs ? `${route}${route.includes('?') ? '&' : '?'}${qs}` : route;\n return path;\n};\n\nexport const callCustomApi = async <T>(\n customApi: CustomApi,\n filters: { [key: string]: string }\n): Promise<T> => {\n const apiUri = customApi.uri || '';\n let uri = buildUrl(apiUri, filters);\n if (!uri) throw new Error('uri is required to use customApi');\n if (typeof window == 'undefined' && uri.startsWith('/'))\n uri = `http://localhost:3001${uri}`;\n\n const response = await cachedSearch.fetch(uri);\n return (await response.clone().json()) as T;\n};\n\nexport const removeEmptyAttributes = (obj: any) => {\n Object.entries(obj).forEach(\n ([key, val]) =>\n (val && typeof val === 'object' && removeEmptyAttributes(val)) ||\n ((typeof val === 'undefined' || val === null || val === '') &&\n delete obj[key])\n );\n return obj;\n};\n\nexport const toArray = (obj: string | null, seperator = ',') =>\n typeof obj === 'undefined' || obj === null\n ? obj\n : Array.isArray(obj)\n ? (obj as string[])\n : obj.split(seperator);\n\n// assumes array elements are primitive types\nexport const areArraysEqualSets = (a1: any[], a2: any[]) => {\n const superSet = {} as { [key: string]: any };\n for (const ai of a1) {\n const e = ai + typeof ai;\n superSet[e] = 1;\n }\n\n for (const ai of a2) {\n const e = ai + typeof ai;\n if (!superSet[e]) {\n return false;\n }\n superSet[e] = 2;\n }\n\n for (const e in superSet) {\n if (superSet[e] === 1) {\n return false;\n }\n }\n\n return true;\n};\n","export const DataFormats = {\n asset: 'asset',\n entry: 'entry',\n webpage: 'webpage',\n};\n\nexport const FilterExpressionTypes = {\n contentType: 'contentType',\n field: 'field',\n};\n\nconst sys = {\n allUris: 'sys.allUris',\n contentTypeId: 'sys.contentTypeId',\n dataFormat: 'sys.dataFormat',\n filename: 'sys.properties.filename',\n id: 'sys.id',\n includeInSearch: 'sys.metadata.includeInSearch',\n language: 'sys.language',\n uri: 'sys.uri',\n versionStatus: 'sys.versionStatus',\n};\n\nexport const Fields = {\n entryDescription: 'entryDescription',\n entryTitle: 'entryTitle',\n keywords: 'keywords',\n searchContent: 'searchContent',\n sys,\n contentTypeId: 'sys.contentTypeId',\n wildcard: '*',\n};\n","import {\n ContensisQueryOrderBy,\n IExpression,\n ILogicalExpression,\n Op,\n OrderBy,\n VersionStatus,\n} from 'contensis-core-api';\nimport { Fields, DataFormats } from '../search/schema';\nimport { fixFreeTextForElastic, extractQuotedPhrases } from './util';\nimport { CustomWhereClause, WeightedSearchField } from '../models/Search';\nimport { FieldOperators, FilterExpression } from '../models/Queries';\n\nexport const fieldExpression = (\n field: string | string[],\n value: any,\n operator: FieldOperators = 'equalTo',\n weight?: number\n): IExpression[] => {\n if (!field || !value || (Array.isArray(value) && value.length === 0))\n return [];\n if (Array.isArray(field))\n // If an array of fieldIds have been provided, call self for each fieldId\n // to generate expressions that are combined with an 'or' operator\n return [\n Op.or(\n ...field\n .map(fieldId => fieldExpression(fieldId, value, operator, weight))\n .flat()\n ),\n ];\n\n if (operator === 'between') return between(field, value);\n if (Array.isArray(value)) return equalToOrIn(field, value, operator);\n else\n return !weight\n ? equalToOrIn(field, value, operator)\n : [equalToOrIn(field, value, operator)[0].weight(weight)];\n};\n\nexport const contentTypeIdExpression = (\n contentTypeIds: string[],\n webpageTemplates?: string[],\n assetTypes?: string[]\n) => {\n const expressions: ILogicalExpression[] = [];\n if (!contentTypeIds && !webpageTemplates && !assetTypes) return expressions;\n\n if (contentTypeIds && contentTypeIds.length > 0) {\n expressions.push(\n ...dataFormatExpression(contentTypeIds, DataFormats.entry)\n );\n }\n\n if (webpageTemplates && webpageTemplates.length > 0) {\n expressions.push(\n ...dataFormatExpression(webpageTemplates, DataFormats.webpage)\n );\n }\n\n if (assetTypes && assetTypes.length > 0) {\n expressions.push(...dataFormatExpression(assetTypes, DataFormats.asset));\n }\n\n if (expressions.length > 1) return [Op.or(...expressions)];\n\n return expressions;\n};\n\nexport const filterExpressions = (\n filters: FilterExpression[],\n isOptional = false\n) => {\n if (!filters) return [];\n const expressions: IExpression[] = [];\n filters.map(selectedFilter => {\n if (selectedFilter.logicOperator === 'and')\n // using 'and' logic operator we loop through each filter\n // and loop through all values to add an expression for each filter value\n selectedFilter.values.forEach(value =>\n expressions.push(\n ...fieldExpression(\n selectedFilter.key,\n value,\n selectedFilter.fieldOperator || 'equalTo'\n )\n )\n );\n else if (selectedFilter.logicOperator === 'not') {\n const fieldExpressions = fieldExpression(\n selectedFilter.key,\n selectedFilter.values,\n selectedFilter.fieldOperator || 'in'\n );\n fieldExpressions.forEach(expr => {\n expressions.push(Op.not(expr));\n });\n }\n // using 'or' logic operator we loop over each filter\n // and simply add the array of values to an expression with an 'in' operator\n else\n expressions.push(\n ...fieldExpression(\n selectedFilter.key,\n selectedFilter.values,\n selectedFilter.fieldOperator || 'in'\n )\n );\n\n if (isOptional)\n expressions.push(\n Op.not(fieldExpression(selectedFilter.key, true, 'exists')[0])\n );\n });\n\n return expressions;\n};\n\nexport const dataFormatExpression = (\n contentTypeIds: string[],\n dataFormat = DataFormats.entry\n) => {\n if (contentTypeIds && contentTypeIds.length > 0) {\n /**\n * We have an array of contentTypeIds some may be prefixed with a \"!\"\n * to indicate this is a \"not\" expression\n */\n const withContentTypeIds = contentTypeIds.filter(c => !c.startsWith('!'));\n const notContentTypeIds = contentTypeIds\n .filter(c => c.startsWith('!'))\n .map(id => id.substring(1));\n\n const andExpr = Op.and();\n\n const dataFormatExpr = fieldExpression(\n Fields.sys.dataFormat,\n dataFormat\n )[0];\n\n const withExpr = fieldExpression(\n Fields.sys.contentTypeId,\n withContentTypeIds\n )[0];\n\n const notExpr = Op.not(\n fieldExpression(Fields.sys.contentTypeId, notContentTypeIds)[0]\n );\n\n andExpr.add(dataFormatExpr);\n if (withContentTypeIds.length > 0 && withExpr) andExpr.add(withExpr);\n if (notContentTypeIds.length > 0 && notExpr) andExpr.add(notExpr);\n\n return [andExpr];\n }\n return [];\n};\n\nexport const featuredResultsExpression = ({\n contentTypeId,\n fieldId,\n fieldValue = true,\n}: {\n contentTypeId?: string | string[];\n fieldId?: string | string[];\n fieldValue?: boolean;\n} = {}) => {\n const expressions = [] as IExpression[];\n\n if (contentTypeId) {\n expressions.push(\n ...contentTypeIdExpression(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId]\n )\n );\n }\n\n if (fieldId && fieldValue) {\n expressions.push(...fieldExpression(fieldId, fieldValue));\n }\n\n return expressions;\n};\n\nexport const languagesExpression = (languages: string[]) =>\n fieldExpression(Fields.sys.language, languages);\n\nexport const includeInSearchExpressions = (\n webpageTemplates: string[],\n includeInSearchFields: string[]\n) => {\n const expressions = [] as IExpression[];\n // Or include this expression if we have explicity specified non-default includeInSearch fields\n if (Array.isArray(includeInSearchFields))\n expressions.push(\n ...includeInSearchFields.map(includeInSearchField =>\n Op.or(\n Op.and(\n Op.exists(includeInSearchField, true),\n Op.equalTo(includeInSearchField, true)\n ),\n Op.exists(includeInSearchField, false)\n )\n )\n );\n\n // If webpageTemplates have been specified, include this expression\n // with the default includeInSearch field from classic Contensis.\n if (Array.isArray(webpageTemplates) && webpageTemplates.length > 0)\n expressions.push(\n Op.or(\n Op.and(\n Op.exists(Fields.sys.includeInSearch, true),\n Op.equalTo(Fields.sys.includeInSearch, true)\n ),\n Op.exists(Fields.sys.includeInSearch, false)\n )\n );\n return expressions;\n};\n\nexport const defaultExpressions = (versionStatus: VersionStatus) => {\n return [Op.equalTo(Fields.sys.versionStatus, versionStatus)];\n};\n\nexport const includeIdsExpression = (includeIds: string[]) => {\n if (Array.isArray(includeIds) && includeIds.length > 0) {\n return fieldExpression(Fields.sys.id, includeIds);\n } else return [];\n};\n\nexport const excludeIdsExpression = (excludeIds: string[]) => {\n if (Array.isArray(excludeIds) && excludeIds.length > 0) {\n const [expr] = fieldExpression(Fields.sys.id, excludeIds);\n return [Op.not(expr)];\n } else return [];\n};\n\nexport const orderByExpression = (orderBy: string[]) => {\n let expression: ContensisQueryOrderBy | undefined;\n if (orderBy && orderBy.length > 0) {\n expression = OrderBy;\n for (const ob of orderBy) {\n expression = ob.startsWith('-')\n ? expression?.desc(ob.substring(1))\n : expression?.asc(ob);\n }\n }\n return expression as ContensisQueryOrderBy;\n};\n\nconst equalToOrIn = (\n field: string,\n value: string | string[],\n operator: FieldOperators = 'equalTo'\n) => {\n if (value.length === 0) return [];\n if (Array.isArray(value)) {\n if (operator === 'equalTo' || operator === 'in')\n return [Op.in(field, ...value)];\n const expressions = value.map(innerValue => {\n switch (operator) {\n case 'between':\n return between(field, innerValue)?.[0];\n case 'distanceWithin':\n return distanceWithin(field, innerValue)?.[0];\n case 'exists':\n return Op.exists(field, innerValue as any);\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return Op[operator](field, innerValue, false, undefined);\n default:\n return Op[operator](field, innerValue);\n }\n });\n return expressions?.length > 1\n ? [Op.or(...expressions)]\n : expressions || [];\n }\n switch (operator) {\n case 'between':\n return between(field, value);\n case 'distanceWithin':\n return distanceWithin(field, value);\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return [Op.freeText(field, value, false, undefined)];\n default:\n return [Op[operator](field, value)];\n }\n};\n\nconst between = (field: string, value: string | string[]) => {\n const handle = (betweenValue: string) => {\n const valArr = betweenValue.split('--');\n if (valArr.length > 1) {\n const [minimum, maximum] = valArr;\n return Op.between(field, minimum, maximum);\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `[search] You have supplied only one value to a \"between\" operator which must have two values. Your supplied value \"${\n valArr.length && valArr[0]\n }\" has been discarded.`\n );\n return false;\n }\n };\n\n if (value.length === 0) return [];\n if (Array.isArray(value))\n return [\n Op.or(...(value.map(handle).filter(bc => bc !== false) as IExpression[])),\n ];\n\n const op = handle(value);\n return op ? [op] : [];\n};\n\nconst distanceWithin = (field: string, value: string | string[]) => {\n const handle = (distanceValue: string) => {\n const valArr = distanceValue.split(' ');\n if (valArr.length > 1) {\n const [lat, lon] = valArr;\n return Op.distanceWithin(\n field,\n Number(lat),\n Number(lon),\n valArr?.[2] || '10mi'\n );\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `[search] You have supplied only one value to a \"distanceWithin\" operator which must be made up of \"lat,lon,distance\". Your supplied value \"${\n valArr.length && valArr[0]\n }\" has been discarded.`\n );\n return false;\n }\n };\n\n if (value.length === 0) return [];\n if (Array.isArray(value))\n return [\n Op.or(...(value.map(handle).filter(bc => bc !== false) as IExpression[])),\n ];\n\n const op = handle(value);\n return op ? [op] : [];\n};\n\n/**\n * Accept HTTP style objects and map them to\n * their equivalent JS client \"Op\" expressions\n * @param {array} where the where array as you'd provide it to the HTTP API\n * @returns {array} array of constructed Delivery API Operators\n */\nexport const customWhereExpressions = (where?: CustomWhereClause) => {\n if (!where || !Array.isArray(where)) return [];\n\n // Map each clause inside the where array\n return where.map(clause => {\n let expression: IExpression | undefined;\n // Map through each property in the clause so we can\n // capture the values required and reconstruct them as\n // a Delivery API expression\n let operator: 'field' | 'not' | 'and' | 'or' | FieldOperators;\n Object.keys(clause).map((key: string, idx) => {\n // The clause may contain only one key\n if (idx === 0) operator = key as 'not' | 'and' | 'or';\n\n const field: string = (clause as any).field;\n const value = (clause as any)[\n Object.keys(clause).find(k => !['field', 'weight'].includes(k)) || ''\n ];\n const weight: number = (clause as any).weight;\n\n if (idx === 0) {\n if (operator === 'and' || operator === 'or') {\n // These are array expressions so we can call ourself recursively\n // to map these inner values to expressions\n const recurseExpr = customWhereExpressions(\n (clause as any)[operator]\n ) as unknown as IExpression[];\n expression = Op[operator](...recurseExpr);\n }\n\n if (['not'].includes(operator)) {\n // A 'not' expression is an object with only one inner field and inner operator\n Object.keys(value).map((notKey, notIdx) => {\n const innerOperator = notKey as Exclude<\n FieldOperators,\n 'distanceWithin' // these are not handled\n >;\n const innerValue = value[notKey];\n const innerField = value.field;\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n if (notIdx === 1)\n expression = Op.not(\n makeJsExpression(innerOperator, innerField, innerValue)\n );\n });\n }\n }\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n operator = Object.keys(clause).find(\n clauseKey => !['field', 'weight'].includes(clauseKey)\n ) as FieldOperators;\n\n if (idx === 1) {\n expression = makeJsExpression(operator, field, value);\n\n if (typeof weight === 'number') expression = expression.weight(weight);\n }\n });\n return expression;\n }) as IExpression[];\n};\n\nconst makeJsExpression = (\n operator: FieldOperators,\n field: string,\n value: any\n) =>\n operator === 'freeText' || operator === 'contains'\n ? Op[operator](field, value)\n : operator === 'in'\n ? Op[operator](field, ...value)\n : operator === 'exists'\n ? Op[operator](field, value)\n : operator === 'between'\n ? Op[operator](field, value[0], value[1])\n : operator === 'distanceWithin'\n ? Op[operator](field, value?.lat, value?.lon, value?.distance)\n : Op[operator](field, value);\n\nexport const termExpressions = (\n searchTerm: string,\n weightedSearchFields: WeightedSearchField[]\n) => {\n if (searchTerm && weightedSearchFields && weightedSearchFields.length > 0) {\n // Extract any phrases in quotes to array\n const quotedPhrases = extractQuotedPhrases(searchTerm);\n\n // Modify the search term to remove any quoted phrases to leave any remaining terms\n let modifiedSearchTerm = searchTerm;\n quotedPhrases.forEach(\n qp =>\n (modifiedSearchTerm = modifiedSearchTerm\n .replace(qp, '')\n .replace('\"\"', '')\n .trim())\n );\n\n // Push to the operators array to include in the query\n const operators = [] as IExpression[];\n\n // Helper functions to generate Op expressions\n const containsOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'contains',\n f.weight\n );\n const freeTextOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'freeText',\n f.weight\n );\n\n // For each weighted search field\n weightedSearchFields.forEach(wsf => {\n // Push to field operators\n const fieldOperators: IExpression[] = [];\n\n // Add operator expressions for modified search term\n if (modifiedSearchTerm) {\n if (\n [Fields.keywords, Fields.sys.filename, Fields.sys.uri].includes(\n wsf.fieldId\n )\n ) {\n fieldOperators.push(...containsOp(wsf, modifiedSearchTerm));\n } else {\n if ([Fields.entryTitle].includes(wsf.fieldId)) {\n fieldOperators.push(\n Op.or(\n ...containsOp(wsf, modifiedSearchTerm),\n ...freeTextOp(wsf, modifiedSearchTerm)\n )\n );\n } else {\n fieldOperators.push(...freeTextOp(wsf, modifiedSearchTerm));\n }\n }\n }\n\n // Add operator expressions for any quoted phrases\n quotedPhrases.forEach(qp => fieldOperators.push(...containsOp(wsf, qp)));\n\n // If we are using multiple operators for a field we will\n // wrap each field inside an And operator so we will match\n // all terms/phrases rather than any terms/phrases\n if (fieldOperators.length > 1) {\n operators.push(Op.and(...fieldOperators));\n } else {\n operators.push(...fieldOperators);\n }\n });\n\n // Wrap operators in an Or operator\n return [\n Op.or()\n .addRange(operators)\n .add(Op.freeText(Fields.searchContent, searchTerm)),\n ];\n } else if (searchTerm) {\n // Searching without weightedSearchFields defined will fall back\n // to a default set of search fields with arbritary weights set.\n return [\n Op.or(\n Op.equalTo(Fields.entryTitle, searchTerm).weight(10),\n Op.freeText(Fields.entryTitle, searchTerm).weight(2),\n Op.freeText(Fields.entryDescription, searchTerm).weight(2),\n Op.contains(Fields.keywords, searchTerm).weight(2),\n Op.contains(Fields.sys.uri, searchTerm).weight(2),\n Op.contains(Fields.sys.allUris, searchTerm),\n Op.freeText(Fields.searchContent, searchTerm)\n ),\n ];\n } else {\n return [];\n }\n};\n","import { Query, OrderBy } from 'contensis-core-api';\n// import { Query, OrderBy } from 'contensis-delivery-api';\nimport {\n contentTypeIdExpression,\n customWhereExpressions,\n defaultExpressions,\n excludeIdsExpression,\n featuredResultsExpression,\n filterExpressions,\n includeInSearchExpressions,\n languagesExpression,\n orderByExpression,\n termExpressions,\n} from './expressions';\nimport { Fields } from './schema';\nimport { FilterQuery, SearchQuery } from '../models/Queries';\n\nexport const filterQuery: FilterQuery = (\n contentTypeIds,\n versionStatus,\n customWhere\n) => {\n const query = new Query(\n ...[\n ...contentTypeIdExpression(contentTypeIds),\n ...defaultExpressions(versionStatus),\n ...customWhereExpressions(customWhere),\n ]\n );\n query.orderBy = OrderBy.asc(Fields.entryTitle);\n query.pageSize = 100;\n\n return query;\n};\n\nexport const searchQuery: SearchQuery = (\n {\n assetTypes,\n contentTypeIds,\n customWhere,\n dynamicOrderBy,\n excludeIds,\n featuredResults,\n fields,\n filters,\n includeInSearchFields,\n languages,\n pageSize,\n pageIndex,\n orderBy,\n searchTerm,\n versionStatus,\n webpageTemplates,\n weightedSearchFields,\n },\n isFeatured = false\n) => {\n let expressions = [\n ...termExpressions(searchTerm, weightedSearchFields),\n ...defaultExpressions(versionStatus),\n ...includeInSearchExpressions(webpageTemplates, includeInSearchFields),\n ...languagesExpression(languages),\n ...customWhereExpressions(customWhere),\n ...excludeIdsExpression(excludeIds),\n ];\n if (isFeatured)\n expressions = [\n ...expressions,\n ...featuredResultsExpression(featuredResults),\n ];\n\n if (!isFeatured || (featuredResults && !featuredResults.contentTypeId))\n expressions = [\n ...expressions,\n ...filterExpressions(filters),\n ...contentTypeIdExpression(contentTypeIds, webpageTemplates, assetTypes),\n ];\n\n const query = new Query(...expressions);\n\n if (!searchTerm) query.orderBy = orderByExpression(orderBy);\n if (dynamicOrderBy && dynamicOrderBy.length)\n query.orderBy = orderByExpression(dynamicOrderBy);\n\n if (fields && fields.length > 0 && !isFeatured) {\n query.fields = fields;\n }\n\n query.pageIndex = isFeatured ? 0 : pageIndex;\n query.pageSize =\n isFeatured && typeof featuredResults.count === 'number'\n ? featuredResults.count\n : pageSize;\n return query;\n};\n","import merge from 'deepmerge';\n// eslint-disable-next-line import/default\nimport { parse, stringify } from 'query-string';\nimport mapJson from 'jsonpath-mapper';\n\nimport getIn from '../redux/getIn';\nimport {\n getSelectedFilters,\n getSearchTerm,\n getCurrentFacet,\n getSearchContext,\n selectCurrentPath,\n} from '../redux/selectors';\nimport { removeEmptyAttributes } from '../search/util';\n\nimport { Context } from '../models/Enums';\nimport { NavigateMapper, SearchUriMapping } from '../models/Search';\nimport { AppState } from '../models/SearchState';\n\nconst searchUriTemplate: SearchUriMapping = {\n path: ({ state, facet, pageIndex }) => {\n const currentFacet =\n getSearchContext(state) !== Context.listings &&\n (facet || getCurrentFacet(state));\n const currentPath = selectCurrentPath(state) || '/search';\n const newPath = currentFacet\n ? `${currentPath}/${currentFacet}`\n : currentPath;\n if (pageIndex) return `${newPath}/${pageIndex + 1}`;\n return newPath;\n },\n search: ({ state, facet, orderBy, term }) => {\n const searchContext = getSearchContext(state);\n // Lose stateFilters and currentSearch if a new\n // term is passed via an argument\n const stateFilters = term\n ? {}\n : Object.fromEntries(\n Object.entries(\n getSelectedFilters(state, facet, searchContext, 'js')\n ).map(([key, f]) => [key, f?.join(',')])\n );\n const currentSearch =\n !term && getIn(state, ['routing', 'location', 'search']);\n const currentQs = removeEmptyAttributes(parse(currentSearch));\n\n if (orderBy) currentQs.orderBy = orderBy;\n\n const searchTerm = getSearchTerm(state);\n // Merge the stateFilters with any current qs to build the new qs\n const mergedSearch = removeEmptyAttributes({\n ...merge(currentQs, stateFilters),\n term: searchTerm,\n });\n\n return stringify(mergedSearch);\n },\n hash: (state: AppState) =>\n getIn(state, ['routing', 'location', 'hash'], '').replace('#', ''),\n};\n\nconst mapStateToSearchUri: NavigateMapper = params =>\n mapJson(params, searchUriTemplate);\n\nexport default mapStateToSearchUri;\n","import { default as mapSearchResultToState } from 'jsonpath-mapper';\n// eslint-disable-next-line import/default\nimport MappingTemplate from 'jsonpath-mapper/dist/models/Template';\nimport { Context } from '../models/Enums';\nimport { QueryParams } from '../models/Queries';\nimport { Mappers } from '../models/Search';\nimport {\n LoadFiltersSearchResults,\n SearchResults,\n} from '../models/SearchActions';\nimport { AppState } from '../models/SearchState';\nimport {\n SET_SEARCH_ENTRIES,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n} from '../redux/types';\nimport { getItemsFromResult } from '../search/util';\n\nconst mapEntriesToSearchResults = (\n {\n mappers,\n mapper,\n context,\n facet,\n }: {\n mappers?: Mappers;\n mapper?: Mappers['results'];\n context: Context;\n facet: string;\n },\n items: any[],\n state: AppState\n) => {\n const mapperFunc = mapper || (mappers && mappers.results);\n return items && typeof mapperFunc === 'function'\n ? mapperFunc(items, facet, context, state)\n : [];\n};\n\nexport const facetTemplate = {\n type: () => SET_SEARCH_ENTRIES,\n context: 'action.context',\n facet: 'action.facet',\n mappers: 'action.mappers',\n nextFacet: {\n entries: {\n isLoading: () => false,\n isError: () => false,\n },\n featuredEntries: {\n isLoading: () => false,\n isError: () => false,\n },\n featuredResults: ({ action, featuredResult, state }: SearchResults) =>\n mapEntriesToSearchResults(\n action,\n getItemsFromResult(featuredResult),\n state\n ),\n queryDuration: 'result.duration',\n pagingInfo: {\n isLoading: () => false,\n pageCount: {\n $path: 'result.payload.pageCount',\n $default: 0,\n },\n totalCount: {\n $path: 'result.payload.totalCount',\n $default: 0,\n },\n pageSize: {\n $path: 'result.payload.pageSize',\n $default: 0,\n },\n pageIndex: 'pageIndex',\n pagesLoaded: {\n $path: 'action.queryParams',\n $formatting: ({ pageIndex, pagesLoaded }: QueryParams) => {\n const loaded = [...(pagesLoaded || [])];\n if (isNaN(loaded.find(l => l === pageIndex) as any)) {\n loaded.push(pageIndex);\n }\n return loaded.sort((a, b) => a - b);\n },\n },\n prevPageIndex: 'action.queryParams.prevPageIndex',\n },\n preloaded: { $path: 'preload', $default: false },\n results: ({\n action,\n pageIndex,\n result,\n prevResults,\n state,\n }: SearchResults) => {\n const { loadMorePaging, pagesLoaded, prevPageIndex } = action.queryParams;\n\n const results = mapEntriesToSearchResults(\n action,\n getItemsFromResult(result),\n state\n );\n\n if (!loadMorePaging) return results;\n\n // add a _pageIndex property to the returned results to help us later\n const nextResults = results.map((r, idx) => ({\n _pageIndex: pageIndex,\n _pagePosition: idx,\n ...r,\n }));\n\n const loadedPages = pagesLoaded || [];\n\n // if pageIndex is found in loadedPages, we have already loaded this page\n if (!isNaN(loadedPages.find(l => l === pageIndex) as any))\n return prevResults;\n\n // Determine where we put the results depending on if we\n // are paging forwards, backwards, or doing a new search\n const firstResultSet = (\n pageIndex > prevPageIndex ? prevResults || [] : nextResults\n ) as any[];\n const secondResultSet = (\n pageIndex > prevPageIndex ? nextResults : prevResults || []\n ) as any[];\n const onlyResultSet = loadedPages.length === 0 ? nextResults : false;\n return onlyResultSet || [...firstResultSet, ...secondResultSet];\n },\n },\n preload: 'action.preload',\n ogState: 'action.ogState',\n debug: 'action.debug',\n} as any;\n\nexport const filterTemplate = {\n type: ({ type }) => type || LOAD_FILTERS_COMPLETE,\n context: 'context',\n facetKey: 'facetKey',\n filterKey: 'filterKey',\n nextFilter: {\n isLoading: () => false,\n isError: ({ type }) => type === LOAD_FILTERS_ERROR,\n items: ({ payload, selectedKeys, mapper }) => {\n if (payload && (payload.items || payload.children)) {\n const items = (payload.items || payload.children).map((item: any) => {\n item.isSelected = selectedKeys?.includes(item?.sys?.id || item.key);\n return item;\n });\n return mapper(items);\n }\n return [];\n },\n },\n error: { $path: 'error', $disable: e => !e },\n} as MappingTemplate<LoadFiltersSearchResults>;\n\nexport default mapSearchResultToState;\n","import { FilterExpressionTypes } from '../search/schema';\nimport mapJson from 'jsonpath-mapper';\nimport { FilterExpression } from '../models/Queries';\nimport { Filter } from '../models/SearchState';\n\nconst filterExpressionMapper = {\n // Expression type: so we can identify how to build the query\n expressionType: ({ contentTypeId }: Filter) =>\n contentTypeId\n ? FilterExpressionTypes.contentType\n : FilterExpressionTypes.field,\n // Key: so we can target the query to a specific field\n key: 'fieldId',\n // Value: so we can filter a specific field by an array of values\n // e.g. taxonomy key or contentTypeId array\n values: 'selectedValues',\n fieldOperator: 'fieldOperator',\n logicOperator: 'logicOperator',\n};\n\nconst mapFilterToFilterExpression = (\n filter: Filter & { selectedValues: string[] }\n) => mapJson(filter, filterExpressionMapper) as FilterExpression;\n\nexport default mapFilterToFilterExpression;\n","import mapFilterToFilterExpression from './filter-to-filterexpression.mapper';\n\nimport { FilterExpression } from '../models/Queries';\nimport { Filters, SelectedFilters } from '../models/SearchState';\n\nexport const mapFiltersToFilterExpression = (\n filters: Filters,\n selectedFilters: SelectedFilters\n) => {\n if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];\n const filterExpressions: FilterExpression[] = [];\n\n // Iterate through the keys in selectedFilters and locate\n // the items that are selected and queryable\n Object.entries(selectedFilters).map(([fkey, selectedValues]) => {\n const filter = filters[fkey];\n if (selectedValues && filter) {\n // Where we have a value for a selectedFilter\n // and a filter is found for the current key\n // map the filter to a filterExpression object\n const expr = mapFilterToFilterExpression({\n ...filter,\n selectedValues,\n });\n filterExpressions.push(expr);\n }\n });\n return filterExpressions;\n};\n","import mapJson from 'jsonpath-mapper';\n\nimport {\n getFacet,\n getSelectedFilters,\n getQueryParameter,\n getSearchTerm,\n getPageIndex,\n getFilters,\n getCustomEnv,\n getPrevPageIndex,\n getPagesLoaded,\n selectCurrentProject,\n selectVersionStatus,\n} from '../redux/selectors';\nimport { mapFiltersToFilterExpression } from './filters-to-filterexpressions.mapper';\nimport { UPDATE_PAGE_INDEX } from '../redux/types';\nimport { QueryParams } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\nimport { WeightedSearchField } from '../models/Search';\n\ntype QueryParamsMapperParams = {\n context: Context;\n facet: string;\n action: EnsureSearchAction | SetSearchEntriesAction;\n state: AppState;\n};\n\nconst queryParamsTemplate = {\n assetTypes: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'assetTypes', []),\n contentTypeIds: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'contentTypeIds', []),\n customWhere: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'customWhere', []),\n dynamicOrderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'dynamicOrderBy', []),\n env: ({ state, facet, context }: QueryParamsMapperParams) =>\n getCustomEnv(state, facet, context),\n excludeIds: ({\n action: { excludeIds },\n }: {\n action: { excludeIds: string | string[] };\n }) => {\n // Exclude current route entry id from minilist searches or any supplied ids\n if (excludeIds)\n return Array.isArray(excludeIds)\n ? excludeIds\n : excludeIds.split(',').map(id => id.trim());\n return null;\n },\n featuredResults: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'featuredResults', null),\n fields: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'fields', []),\n filters: ({ state, facet, context }: QueryParamsMapperParams) => {\n const stateFilters = getFilters(state, facet, context, 'js');\n const selectedFilters = getSelectedFilters(state, facet, context, 'js');\n // Use another mapping function to map the filter parameters for the query\n const filterParams = mapFiltersToFilterExpression(\n stateFilters,\n selectedFilters\n );\n return filterParams;\n },\n includeInSearchFields: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'includeInSearch', []),\n internalPageIndex: ({ action, state }: QueryParamsMapperParams) =>\n getPageIndex(state, '', action.context),\n internalPaging: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'internalPaging', false),\n languages: ({ action }: QueryParamsMapperParams) =>\n action.defaultLang ? [action.defaultLang] : [],\n linkDepth: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'linkDepth', 0),\n loadMorePaging: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'loadMorePaging', false),\n orderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'orderBy', []),\n pageIndex: (root: QueryParamsMapperParams) => {\n const { action, state } = root;\n if (getQueryParameter(root, 'internalPaging', false)) return 0;\n if (action.type === UPDATE_PAGE_INDEX) return action.params.pageIndex;\n return !action.preload\n ? getPageIndex(state, action.facet, action.context)\n : 0;\n },\n pageSize: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'pageSize'),\n pagesLoaded: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPagesLoaded(state, facet, context),\n prevPageIndex: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPrevPageIndex(state, facet, context),\n projectId: ({ state, facet, context }: QueryParamsMapperParams) =>\n getFacet(state, facet, context)?.projectId || selectCurrentProject(state),\n searchTerm: (root: QueryParamsMapperParams) =>\n root.context !== Context.minilist ||\n getQueryParameter(root, 'useSearchTerm', false)\n ? getSearchTerm(root.state)\n : '',\n selectedFilters: ({ state, facet, context }: QueryParamsMapperParams) =>\n Object.fromEntries(\n Object.entries(getSelectedFilters(state, facet, context, 'js')).map(\n ([key, f]) => [key, f?.join(',')]\n )\n ),\n versionStatus: ({ state }: QueryParamsMapperParams) =>\n selectVersionStatus(state),\n weightedSearchFields: (root: QueryParamsMapperParams) => {\n const wsf = getQueryParameter(\n root,\n 'weightedSearchFields',\n []\n ) as WeightedSearchField[];\n const deduped = wsf.filter(\n (v, i, a) => a.findIndex(t => t.fieldId === v.fieldId) === i\n );\n return deduped;\n // return wsf;\n },\n webpageTemplates: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'webpageTemplates', []),\n};\n\nconst mapStateToQueryParams = (sourceJson: QueryParamsMapperParams) =>\n mapJson(sourceJson, queryParamsTemplate) as QueryParams;\n\nexport default mapStateToQueryParams;\n","import { areArraysEqualSets } from '../search/util';\nimport {\n getSelectedFilters,\n getIsLoaded,\n getQueryParams,\n getPageIndex,\n getIsInternalPaging,\n getSearchTerm,\n} from './selectors';\nimport { Context } from '../models/Enums';\nimport mapStateToQueryParams from '../transformations/state-to-queryparams.mapper';\nimport { QueryParams, SearchQueryOptions } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\n\n/**\n * 1, Generates all the parameters required to run the search query.\n * 2, Tells us if we should run the search.\n * @param {object} action\n * @param {AppState} state\n * @returns [queryParams, runSearch]\n */\nexport const generateQueryParams = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState\n): [SearchQueryOptions, boolean] => {\n const { context, facet } = action;\n // Map parameters using state and some additional\n // inputs from the action\n const queryParams = mapStateToQueryParams({\n context,\n facet,\n action,\n state,\n });\n\n return [queryParams, runSearch(action, state, queryParams)];\n};\n\n/**\n * Checks if we have already loaded everything we're asking for and tells us to run the search or not\n * @param action\n * @param state\n */\nexport const runSearch = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState,\n queryParams: SearchQueryOptions\n) => {\n const {\n context,\n defaultLang,\n facet,\n ogState = state,\n preload,\n ssr,\n } = action as EnsureSearchAction & SetSearchEntriesAction;\n\n let willRun = false;\n\n const facetIsLoaded = defaultLang\n ? false\n : getIsLoaded(state, context, facet);\n const stateParams = {\n ...getQueryParams(ogState, facet, context),\n } as QueryParams;\n stateParams.pageIndex = getPageIndex(ogState, facet, context);\n stateParams.searchTerm = getSearchTerm(ogState);\n\n if (\n (context === Context.facets && ssr) ||\n // context === Context.minilist ||\n preload ||\n !facetIsLoaded ||\n filterParamsChanged(action) ||\n defaultLang\n ) {\n willRun = true;\n } else {\n // Don't execute the search if the inbound query params\n // are the same as what we already have in state\n Object.entries(stateParams).forEach(([param, value]) => {\n const queryParam = queryParams[param as keyof SearchQueryOptions];\n if (JSON.stringify(value) !== JSON.stringify(queryParam)) {\n willRun = true;\n }\n });\n }\n\n const internalPaging = getIsInternalPaging(ogState, facet, context);\n if (internalPaging && facetIsLoaded) {\n willRun = false;\n }\n\n return willRun;\n};\n\n/**\n * This will tell us if filter parameters have been\n * changed by some external event such as a route change\n * @param action\n * @returns true or false\n */\nexport const filterParamsChanged = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state?: AppState\n) => {\n const {\n context,\n facet,\n params,\n ogState = state,\n } = action as EnsureSearchAction & SetSearchEntriesAction;\n const selectedFilters = getSelectedFilters(\n ogState as AppState,\n facet,\n context,\n 'js'\n ) as { [key: string]: string[] };\n\n const paramsChanged = Object.entries(selectedFilters).map(\n ([filterKey, selectedValues]) => {\n const inboundValues =\n (params && params[filterKey] && params[filterKey].split(',')) || [];\n\n if (!areArraysEqualSets(selectedValues, inboundValues)) return true;\n }\n );\n\n return paramsChanged.filter(f => f === true).length > 0;\n};\n\n/* eslint-disable no-console */\nexport const debugExecuteSearch = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState\n) => {\n const [queryParams, runSearch] = generateQueryParams(action, state);\n\n console.log(\n 'runSearch',\n runSearch,\n 'action',\n action,\n 'filterParamsChanged',\n filterParamsChanged(action, state),\n 'getIsLoaded(state, context, facet)',\n getIsLoaded(state, action.context, action.facet)\n );\n const stateParams = {\n ...getQueryParams(action.ogState || state, action.facet, action.context),\n pageIndex: getPageIndex(\n action.ogState || state,\n action.facet,\n action.context\n ),\n searchTerm: getSearchTerm(action.ogState || state),\n } as QueryParams;\n console.log(stateParams, queryParams);\n\n console.log(\n 'getSelectedFilters',\n getSelectedFilters(\n action.ogState || state,\n action.facet,\n action.context,\n 'js'\n ),\n 'params',\n action.params\n );\n};\n\nexport const scrollTop = (scrollYPos: number) => {\n if (typeof window !== 'undefined') window.scrollTo(0, scrollYPos);\n};\n","import { default as mapEntry } from 'jsonpath-mapper';\nimport { FilterItemsMapper } from '../models/Search';\nimport { Fields } from '../search/schema';\n\n// *** FILTER ITEM MAPPING ***\n\n// Base mapping, fields that are the same across all mappings\n// to save repeating these elements in every mapper, spread this\n// into your discrete mappings\nconst base = {\n contentTypeId: Fields.sys.contentTypeId,\n title: 'entryTitle',\n key: 'sys.id',\n path: 'sys.slug',\n isSelected: 'isSelected',\n};\n\nconst mapEntriesToFilterItems: FilterItemsMapper = entries => {\n if (!entries) return [];\n return entries.map(entry => {\n const template = base;\n if (template) {\n return mapEntry(entry, template);\n }\n return entry as any;\n });\n};\n\nexport default mapEntriesToFilterItems;\n","import mapJson from 'jsonpath-mapper';\nimport { QueryParams } from '../models';\n\nconst mapQueryParamsToCustomApi = (queryParams: QueryParams) => {\n const customApiMapping = {\n fields: ({ fields }: QueryParams) => JSON.stringify(fields),\n orderBy: 'orderBy',\n linkDepth: 'linkDepth',\n pageSize: 'pageSize',\n pageIndex: 'pageIndex',\n term: { $path: 'searchTerm', $disable: (t: string) => !t },\n versionStatus: 'versionStatus',\n };\n\n Object.keys(queryParams.selectedFilters).forEach(k => {\n customApiMapping[k] = {\n $path: `selectedFilters.${k}`,\n $disable: (f: string) => !f,\n };\n });\n\n return mapJson(queryParams, customApiMapping);\n};\nexport default mapQueryParamsToCustomApi;\n","import * as log from 'loglevel';\nimport { takeEvery, put, select, call, all } from 'redux-saga/effects';\nimport { PagedList, Query, VersionStatus } from 'contensis-core-api/lib/models';\nimport { Entry, TaxonomyNode } from 'contensis-delivery-api/lib/models';\n\nimport { cachedSearch } from '../search/ContensisDeliveryApi';\nimport { callCustomApi, timedSearch, getItemsFromResult } from '../search/util';\n\nimport {\n CLEAR_FILTERS,\n DO_SEARCH,\n EXECUTE_SEARCH,\n EXECUTE_SEARCH_PRELOAD,\n LOAD_FILTERS,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n SET_ROUTE_FILTERS,\n SET_SEARCH_ENTRIES,\n UPDATE_SEARCH_TERM,\n UPDATE_PAGE_INDEX,\n UPDATE_CURRENT_FACET,\n UPDATE_SELECTED_FILTERS,\n UPDATE_CURRENT_TAB,\n UPDATE_SORT_ORDER,\n SET_SEARCH_FILTERS,\n APPLY_CONFIG,\n} from './types';\nimport {\n navigate,\n updateCurrentFacet as updateCurrentFacetAction,\n withMappers,\n} from './actions';\nimport {\n getCurrentFacet,\n getPageIndex,\n getFacets,\n getSearchTabs,\n getCustomApi,\n getSelectedFilters,\n getFacet,\n getIsSsr,\n getFiltersToLoad,\n getResults,\n selectVersionStatus,\n} from './selectors';\nimport { searchQuery, filterQuery } from '../search/queries';\nimport mapStateToSearchUri from '../transformations/state-to-searchuri';\nimport mapSearchResultToState, {\n facetTemplate,\n filterTemplate,\n} from '../transformations/searchresult-to-state.mapper';\nimport { generateQueryParams, debugExecuteSearch, scrollTop } from './util';\nimport mapEntriesToFilterItems from '../transformations/entry-to-filteritem.mapper';\nimport { AppState, Facet, Filter } from '../models/SearchState';\nimport {\n ApplySearchFilterAction,\n ClearFiltersAction,\n EnsureSearchAction,\n ExecuteSearchAction,\n InitListingAction,\n LoadFiltersCompleteAction,\n LoadFiltersSearchResults,\n SearchResults,\n SetRouteFiltersOptions,\n SetSearchEntriesAction,\n SetSearchEntriesParams,\n TriggerSearchAction,\n UpdateCurrentFacetAction,\n UpdateCurrentTabAction,\n UpdatePageIndexAction,\n UpdateSearchTermAction,\n UpdateSortOrderAction,\n WithMappers,\n} from '../models/SearchActions';\nimport { Mappers } from '../models/Search';\nimport { Context } from '../models/Enums';\nimport { TimedSearchResponse } from '../models/SearchUtil';\nimport mapQueryParamsToCustomApi from '../transformations/queryParams-to-customapi.mapper';\n\nexport const searchSagas = [\n takeEvery(CLEAR_FILTERS, clearFilters),\n takeEvery(DO_SEARCH, doSearch),\n takeEvery(SET_ROUTE_FILTERS, loadFilters),\n takeEvery(SET_SEARCH_ENTRIES, preloadOtherFacets),\n takeEvery(UPDATE_CURRENT_FACET, updateCurrentFacet),\n takeEvery(UPDATE_CURRENT_TAB, updateCurrentTab),\n takeEvery(UPDATE_PAGE_INDEX, updatePageIndex),\n takeEvery(UPDATE_SEARCH_TERM, updateSearchTerm),\n takeEvery(UPDATE_SORT_ORDER, updateSortOrder),\n takeEvery(UPDATE_SELECTED_FILTERS, applySearchFilter),\n];\n\nconst toJS = (obj: any) =>\n obj && 'toJS' in obj && typeof obj.toJS === 'function' ? obj.toJS() : obj;\n\nexport function* setRouteFilters(\n action: InitListingAction | SetRouteFiltersOptions\n) {\n const { mappers, params, listingType, defaultLang, debug } = action;\n const context = listingType ? Context.listings : Context.facets;\n const state: AppState = toJS(yield select());\n const ssr = getIsSsr(state);\n\n // Get current facet from params or state\n let currentFacet = (params && params.facet) || listingType;\n\n // Pick the default facet from initialState\n if (!currentFacet) {\n const tabs = getSearchTabs(state, 'js');\n currentFacet =\n tabs?.[0].defaultFacet || Object.keys(getFacets(state, 'js'))?.[0] || '';\n }\n\n const nextAction = {\n type: SET_ROUTE_FILTERS,\n context,\n facet: currentFacet,\n mappers,\n params,\n defaultLang,\n ssr,\n debug,\n } as InitListingAction;\n yield put(nextAction);\n\n // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\n\n // Using call instead of triggering from the put\n // to allow this exported saga to continue during SSR\n yield call(ensureSearch, { ...nextAction, ogState });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = toJS(yield select());\n if (action.config) {\n // If the action contains a config object, we can add this to the\n // state at runtime\n yield put({ ...action, type: APPLY_CONFIG });\n }\n\n const nextAction = {\n ...action,\n type: SET_SEARCH_FILTERS,\n ssr: getIsSsr(state),\n facet: action.facet || action.params?.facet,\n } as InitListingAction;\n\n if (\n nextAction.facet &&\n (action.config ||\n Object.keys(getFacet(state, nextAction.facet, action.context, 'js'))\n .length > 0)\n ) {\n yield put(nextAction);\n\n // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\n\n yield call(ensureSearch, { ...nextAction, ogState });\n }\n}\n\nfunction* loadFilters(action: InitListingAction) {\n const { facet: facetKey, context, mappers = {} as Mappers } = action;\n const filtersToLoad = (yield select(\n getFiltersToLoad,\n facetKey,\n context,\n 'js'\n )) as string[];\n if (filtersToLoad.length > 0) {\n yield put({\n type: LOAD_FILTERS,\n filtersToLoad,\n facetKey,\n context,\n });\n const selectedKeys = (yield select(\n getSelectedFilters,\n facetKey,\n context,\n 'js'\n )) as {\n [k: string]: string[];\n };\n const facet = (yield select(getFacet, facetKey, context, 'js')) as Facet;\n const filters = facet.filters || {};\n const projectId = facet.projectId;\n\n const filtersToLoadSagas =\n filters &&\n filtersToLoad.map((filterKey = '') => {\n return call(loadFilter, {\n facetKey,\n filterKey,\n filter: filters[filterKey],\n projectId,\n selectedKeys: selectedKeys[filterKey],\n context,\n mapper:\n ('filterItems' in mappers && mappers.filterItems) ||\n mapEntriesToFilterItems,\n } as LoadFilterAction);\n });\n if (filtersToLoadSagas) yield all(filtersToLoadSagas);\n }\n}\n\ntype LoadFilterAction = {\n facetKey: string;\n filterKey: string;\n filter: Filter;\n projectId: string;\n selectedKeys: string[];\n context: Context;\n mapper: Mappers['filterItems'];\n};\n\nfunction* loadFilter(action: LoadFilterAction) {\n const {\n facetKey,\n filterKey,\n filter,\n projectId,\n selectedKeys,\n context,\n mapper,\n } = action;\n const { contentTypeId, customWhere, path } = filter as Filter;\n const createStateFrom: LoadFiltersSearchResults = {\n type: LOAD_FILTERS_COMPLETE,\n context,\n error: undefined,\n facetKey,\n filterKey,\n payload: {} as TaxonomyNode | PagedList<Entry>,\n selectedKeys,\n mapper,\n };\n\n try {\n if (contentTypeId) {\n const versionStatus = (yield select(\n selectVersionStatus\n )) as VersionStatus;\n const query = filterQuery(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId],\n versionStatus,\n customWhere\n );\n const payload = (yield cachedSearch.search(\n query,\n 0,\n projectId\n )) as PagedList<Entry>;\n\n if (!payload) throw new Error('No payload returned by search');\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n if (path) {\n const payload = (yield cachedSearch.getTaxonomyNodeByPath(\n path,\n projectId\n )) as TaxonomyNode;\n\n if (!payload)\n throw new Error(`No payload returned for taxonomy path: '${path}'`);\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n } catch (error) {\n createStateFrom.type = LOAD_FILTERS_ERROR;\n createStateFrom.error = error;\n }\n\n const nextAction = mapSearchResultToState<\n LoadFiltersSearchResults,\n LoadFiltersCompleteAction\n >(createStateFrom, filterTemplate);\n yield put(nextAction);\n}\n\nfunction* ensureSearch(action: EnsureSearchAction) {\n const { context, facet, debug } = action;\n try {\n const state = (yield select()) as AppState;\n const nextAction = {\n ...action,\n ogState: action.ogState || { search: state.search },\n };\n\n const [queryParams, runSearch] = generateQueryParams(nextAction, state);\n\n if (debug && (debug === true || debug.executeSearch))\n debugExecuteSearch(nextAction, state);\n\n if (runSearch) {\n yield put({ type: EXECUTE_SEARCH, facet, context });\n yield call(executeSearch, {\n ...nextAction,\n context,\n facet,\n queryParams,\n debug,\n } as ExecuteSearchAction);\n }\n } catch (error: any) {\n // eslint-disable-next-line import/namespace\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* executeSearch(action: ExecuteSearchAction) {\n const { context, facet, queryParams, mappers } = action;\n try {\n const state = (yield select()) as AppState;\n let result = {} as TimedSearchResponse;\n let featuredResult: TimedSearchResponse | undefined;\n let featuredQuery: Query;\n const customApi = getCustomApi(state, facet, context, 'js');\n\n if (customApi) {\n const apiParams =\n (typeof mappers === 'object' &&\n typeof mappers.customApi === 'function' &&\n mappers.customApi(queryParams)) ||\n (mapQueryParamsToCustomApi(queryParams) as { [key: string]: string });\n\n result.payload = (yield callCustomApi<any>(\n customApi,\n apiParams\n )) as any[];\n result.duration = 1;\n } else {\n if (queryParams.featuredResults) {\n featuredQuery = searchQuery(queryParams, true);\n featuredResult = (yield timedSearch(\n featuredQuery,\n queryParams.linkDepth,\n queryParams.projectId,\n queryParams.env\n )) as TimedSearchResponse;\n // eslint-disable-next-line require-atomic-updates\n queryParams.excludeIds = getItemsFromResult(featuredResult)\n .map(fi => fi?.sys?.id)\n .filter(fi => typeof fi === 'string') as string[];\n }\n const query = searchQuery(queryParams);\n\n result = yield timedSearch(\n query,\n queryParams.linkDepth,\n queryParams.projectId,\n queryParams.env\n );\n }\n\n const createStateFrom: SearchResults = {\n action,\n featuredResult,\n pageIndex:\n (queryParams.internalPaging && queryParams.internalPageIndex) ||\n queryParams.pageIndex,\n prevResults: getResults(state, facet, action.context, 'js'),\n result,\n state,\n };\n\n const nextAction = mapSearchResultToState<\n SearchResults,\n SetSearchEntriesParams\n >(createStateFrom, facetTemplate);\n yield put(nextAction);\n } catch (error: any) {\n // eslint-disable-next-line import/namespace\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* preloadOtherFacets(action: SetSearchEntriesAction) {\n const { preload, context, facet, debug } = action;\n const state = (yield select()) as AppState;\n const currentFacet = getCurrentFacet(state);\n\n if (!preload && facet === currentFacet && context !== Context.listings) {\n const allFacets = getFacets(state, 'js');\n const otherFacets = Object.keys(allFacets).filter(f => f !== currentFacet);\n\n yield all(\n otherFacets.map((preloadFacet = '') => {\n const preloadAction = {\n ...action,\n facet: preloadFacet,\n preload: true,\n };\n const [queryParams, runSearch] = generateQueryParams(\n preloadAction,\n state\n );\n\n if (debug && (debug === true || debug.preloadOtherFacets))\n debugExecuteSearch(preloadAction, state);\n\n return (\n runSearch &&\n call(executeSearch, {\n ...action,\n type: EXECUTE_SEARCH_PRELOAD,\n preload: true,\n facet: preloadFacet,\n queryParams,\n } as ExecuteSearchAction & SetSearchEntriesParams)\n );\n })\n );\n }\n}\n\nfunction* updateCurrentTab(action: WithMappers<UpdateCurrentTabAction>) {\n const { id, mappers } = action;\n const state = (yield select()) as AppState;\n const facets = getFacets(state, 'js');\n const tabs = getSearchTabs(state, 'js');\n let nextFacet = tabs?.[id].currentFacet;\n if (!nextFacet) {\n Object.entries(facets).map(([facetName, facet]) => {\n if (facet.tabId === id && tabs?.[id].defaultFacet === facetName)\n nextFacet = facetName;\n });\n }\n // If the next Tab does not have a defaultFacet,\n // take the first facet for that tab\n if (!nextFacet)\n nextFacet = Object.entries(facets).filter(([, f]) => f.tabId === id)[0][0];\n\n yield put(withMappers(updateCurrentFacetAction(nextFacet), mappers));\n}\n\nfunction* clearFilters(action: WithMappers<ClearFiltersAction>) {\n const { mappers } = action;\n const uri = (yield buildUri({}, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateCurrentFacet(action: WithMappers<UpdateCurrentFacetAction>) {\n const { facet, mappers } = action;\n const pageIndex = (yield select(getPageIndex, facet)) as number;\n const uri = (yield buildUri({ facet, pageIndex }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateSearchTerm(action: WithMappers<UpdateSearchTermAction>) {\n const { term, mappers } = action;\n const uri = (yield buildUri({ term }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateSortOrder(action: WithMappers<UpdateSortOrderAction>) {\n const { orderBy, facet, mappers } = action;\n const uri = (yield buildUri({ orderBy, facet }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updatePageIndex(action: WithMappers<UpdatePageIndexAction>) {\n const { pageIndex, mappers, scrollYPos } = action;\n const uri = (yield buildUri({ pageIndex }, mappers)) as string;\n yield put(navigate(uri));\n if (typeof scrollYPos !== 'undefined') scrollTop(scrollYPos);\n}\n\nfunction* applySearchFilter(action: WithMappers<ApplySearchFilterAction>) {\n const { mappers, scrollYPos } = action;\n const uri = (yield buildUri({}, mappers)) as string;\n yield put(navigate(uri));\n if (typeof scrollYPos !== 'undefined') scrollTop(scrollYPos);\n}\n\nfunction* buildUri(\n {\n facet,\n orderBy,\n pageIndex = 0,\n term,\n }: { facet?: string; orderBy?: string; pageIndex?: number; term?: string },\n mappers: Mappers\n) {\n const state = (yield select()) as AppState;\n const mapUri = mappers?.navigate || mapStateToSearchUri;\n const uri = mapUri({ state, facet, orderBy, pageIndex, term });\n // return uri;\n return `${uri.path}${(uri.search && `?${uri.search}`) || ''}${\n (uri.hash && `#${uri.hash}`) || ''\n }`;\n}\n"],"names":["ACTION_PREFIX","APPLY_CONFIG","CLEAR_FILTERS","DO_SEARCH","EXECUTE_SEARCH","EXECUTE_SEARCH_ERROR","EXECUTE_SEARCH_PRELOAD","LOAD_FILTERS","LOAD_FILTERS_COMPLETE","LOAD_FILTERS_ERROR","SET_FEATURED_ENTRIES","SET_ROUTE_FILTERS","SET_SEARCH_FILTERS","SET_SEARCH_ENTRIES","SET_SELECTED_FILTER","UPDATE_CURRENT_FACET","UPDATE_CURRENT_TAB","UPDATE_SORT_ORDER","UPDATE_PAGE_INDEX","UPDATE_SEARCH_TERM","UPDATE_SELECTED_FILTERS","withMappers","action","mappers","triggerSearch","config","context","debug","defaultLang","excludeIds","facet","mapper","params","type","initListing","navigate","path","state","clearFilters","updatePageIndex","pageIndex","scrollYPos","updateCurrentFacet","updateCurrentTab","id","updateSearchTerm","term","updateSelectedFilters","filter","key","isUnknownItem","updateSortOrder","orderBy","Context","makeFromJS","returnType","globalThis","STATE_TYPE","immutable","fromJSOrdered","fromJS","v","getImmutableOrJS","stateKey","fallbackValue","get","getIn","toJS","Array","isArray","result","jpath","join","undefined","getSearchContext","facets","getCurrent","getCurrentFacet","getCurrentListing","getCurrentTab","getFacets","getTabFacets","Object","fromEntries","entries","getFacetTitles","map","isSelected","title","totalCount","pagingInfo","getFacet","facetName","currentFacet","getListing","listing","currentListing","listings","getFilters","getRenderableFilters","f","renderable","getFiltersToLoad","filters","loadedFilters","items","i","length","isError","filterKey","isLoaded","getSelectedFilters","isoDateRegex","RegExp","selectedFilters","item","isIsoDate","test","toLowerCase","getResults","current","getIsInternalPaging","getIsLoaded","getIsLoading","getIsSsr","getFeaturedResults","getPaging","getPageIndex","getPrevPageIndex","getPageIsLoading","getPagesLoaded","getTotalCount","getSearchTerm","getSearchTabs","getQueryParams","getQueryParameter","ifnull","getCustomApi","getCustomEnv","getTabsAndFacets","tabs","tabsAndFacets","tab","fieldsToCount","countFields","thisTabFacets","thisTabTotal","find","reduce","a","b","getSearchTotalCount","wholeSearchTotal","t","getFacetsTotalCount","selectFacets","selectListing","selectCurrentPath","selectCurrentProject","selectVersionStatus","getClientConfig","project","env","DELIVERY_API_CONFIG","projectId","window","PROXY_DELIVERY_API","rootUrl","responseHandler","CacheNode","constructor","value","next","prev","LruCache","limit","head","tail","size","node","remove","setHead","set","CachedSearch","cache","taxonomyLookup","search","query","linkDepth","client","Client","create","request","JSON","stringify","toString","getTaxonomyNodeByPath","taxonomy","getNodeByPath","order","childDepth","then","extendTaxonomyNode","execute","promise","catch","getTaxonomyId","children","n","parts","split","fetch","uri","opts","cachedSearch","now","Date","performance","fixFreeTextForElastic","s","illegalChars","illegalRegEx","c","replace","timedSearch","duration","start","payload","end","getItemsFromResult","extractQuotedPhrases","searchTerm","pattern","match","buildUrl","route","qs","includes","callCustomApi","customApi","apiUri","Error","startsWith","response","clone","json","removeEmptyAttributes","obj","forEach","val","toArray","seperator","areArraysEqualSets","a1","a2","superSet","ai","e","DataFormats","asset","entry","webpage","FilterExpressionTypes","contentType","field","sys","allUris","contentTypeId","dataFormat","filename","includeInSearch","language","versionStatus","Fields","entryDescription","entryTitle","keywords","searchContent","wildcard","fieldExpression","operator","weight","Op","or","fieldId","flat","between","equalToOrIn","contentTypeIdExpression","contentTypeIds","webpageTemplates","assetTypes","expressions","push","dataFormatExpression","filterExpressions","isOptional","selectedFilter","logicOperator","values","fieldOperator","fieldExpressions","expr","not","withContentTypeIds","notContentTypeIds","substring","andExpr","and","dataFormatExpr","withExpr","notExpr","add","featuredResultsExpression","fieldValue","languagesExpression","languages","includeInSearchExpressions","includeInSearchFields","includeInSearchField","exists","equalTo","defaultExpressions","includeIdsExpression","includeIds","excludeIdsExpression","orderByExpression","expression","OrderBy","ob","desc","asc","in","innerValue","distanceWithin","freeText","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","distanceValue","lat","lon","Number","customWhereExpressions","where","clause","keys","idx","k","recurseExpr","notKey","notIdx","innerOperator","innerField","makeJsExpression","clauseKey","distance","termExpressions","weightedSearchFields","quotedPhrases","modifiedSearchTerm","qp","trim","operators","containsOp","freeTextOp","wsf","fieldOperators","addRange","contains","filterQuery","customWhere","Query","pageSize","searchQuery","dynamicOrderBy","featuredResults","fields","isFeatured","count","searchUriTemplate","currentPath","newPath","searchContext","stateFilters","currentSearch","currentQs","parse","mergedSearch","merge","hash","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","results","facetTemplate","nextFacet","isLoading","featuredEntries","featuredResult","queryDuration","pageCount","$path","$default","pagesLoaded","$formatting","loaded","isNaN","l","sort","prevPageIndex","preloaded","prevResults","loadMorePaging","queryParams","nextResults","r","_pageIndex","_pagePosition","loadedPages","firstResultSet","secondResultSet","onlyResultSet","preload","ogState","filterTemplate","facetKey","nextFilter","selectedKeys","error","$disable","filterExpressionMapper","expressionType","mapFilterToFilterExpression","mapFiltersToFilterExpression","fkey","selectedValues","queryParamsTemplate","root","filterParams","internalPageIndex","internalPaging","minilist","deduped","findIndex","mapStateToQueryParams","sourceJson","generateQueryParams","runSearch","ssr","willRun","facetIsLoaded","stateParams","filterParamsChanged","param","queryParam","paramsChanged","inboundValues","debugExecuteSearch","scrollTop","scrollTo","base","mapEntriesToFilterItems","template","mapEntry","mapQueryParamsToCustomApi","customApiMapping","searchSagas","takeEvery","doSearch","loadFilters","preloadOtherFacets","applySearchFilter","setRouteFilters","listingType","select","defaultFacet","nextAction","put","call","ensureSearch","filtersToLoad","filtersToLoadSagas","loadFilter","filterItems","all","createStateFrom","mapSearchResultToState","executeSearch","stack","featuredQuery","apiParams","fi","allFacets","otherFacets","preloadFacet","preloadAction","tabId","updateCurrentFacetAction","buildUri","mapUri"],"mappings":";;;;;;;;AAAA,MAAMA,aAAa,GAAG,UAAtB,CAAA;AACaC,MAAAA,YAAY,GAAI,CAAA,EAAED,aAAc,CAAtC,YAAA,EAAA;AACME,MAAAA,aAAa,GAAI,CAAA,EAAEF,aAAc,CAAvC,aAAA,EAAA;AACA,MAAMG,SAAS,GAAI,CAAA,EAAEH,aAAc,CAAnC,SAAA,CAAA,CAAA;AACMI,MAAAA,cAAc,GAAI,CAAA,EAAEJ,aAAc,CAAxC,cAAA,EAAA;AACMK,MAAAA,oBAAoB,GAAI,CAAA,EAAEL,aAAc,CAA9C,oBAAA,EAAA;AACA,MAAMM,sBAAsB,GAAI,CAAA,EAAEN,aAAc,CAAhD,sBAAA,CAAA,CAAA;AACMO,MAAAA,YAAY,GAAI,CAAA,EAAEP,aAAc,CAAtC,YAAA,EAAA;AACMQ,MAAAA,qBAAqB,GAAI,CAAA,EAAER,aAAc,CAA/C,qBAAA,EAAA;AACMS,MAAAA,kBAAkB,GAAI,CAAA,EAAET,aAAc,CAA5C,kBAAA,EAAA;AACA,MAAMU,oBAAoB,GAAI,CAAA,EAAEV,aAAc,CAA9C,oBAAA,CAAA,CAAA;AACMW,MAAAA,iBAAiB,GAAI,CAAA,EAAEX,aAAc,CAA3C,iBAAA,EAAA;AACMY,MAAAA,kBAAkB,GAAI,CAAA,EAAEZ,aAAc,CAA5C,kBAAA,EAAA;AACMa,MAAAA,kBAAkB,GAAI,CAAA,EAAEb,aAAc,CAA5C,kBAAA,EAAA;AACA,MAAMc,mBAAmB,GAAI,CAAA,EAAEd,aAAc,CAA7C,mBAAA,CAAA,CAAA;AACA,MAAMe,oBAAoB,GAAI,CAAA,EAAEf,aAAc,CAA9C,oBAAA,CAAA,CAAA;AACA,MAAMgB,kBAAkB,GAAI,CAAA,EAAEhB,aAAc,CAA5C,kBAAA,CAAA,CAAA;AACMiB,MAAAA,iBAAiB,GAAI,CAAA,EAAEjB,aAAc,CAA3C,iBAAA,EAAA;AACMkB,MAAAA,iBAAiB,GAAI,CAAA,EAAElB,aAAc,CAA3C,iBAAA,EAAA;AACMmB,MAAAA,kBAAkB,GAAI,CAAA,EAAEnB,aAAc,CAA5C,kBAAA,EAAA;AACMoB,MAAAA,uBAAuB,GAAI,CAAA,EAAEpB,aAAc,CAAjD,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MCFMqB,WAAW,GAAG,CAAIC,MAAJ,EAAeC,OAAf,KAAoC;AAC7D,EAAO,OAAA,EAAE,GAAGD,MAAL;AAAaC,IAAAA,OAAAA;AAAb,GAAP,CAAA;AACD,EAFM;AAIA,MAAMC,aAAyC,GAAG,CAAC;AACxDC,EAAAA,MADwD;AAExDC,EAAAA,OAFwD;AAGxDC,EAAAA,KAHwD;AAIxDC,EAAAA,WAJwD;AAKxDC,EAAAA,UALwD;AAMxDC,EAAAA,KANwD;AAOxDC,EAAAA,MAPwD;AAQxDR,EAAAA,OARwD;AASxDS,EAAAA,MAAAA;AATwD,CAAD,KAUnD;AACJ,EAAO,OAAA;AACLC,IAAAA,IAAI,EAAE9B,SADD;AAELsB,IAAAA,MAFK;AAGLC,IAAAA,OAHK;AAILC,IAAAA,KAJK;AAKLC,IAAAA,WALK;AAMLC,IAAAA,UANK;AAOLC,IAAAA,KAPK;AAQLC,IAAAA,MARK;AASLR,IAAAA,OATK;AAULS,IAAAA,MAAAA;AAVK,GAAP,CAAA;AAYD,EAvBM;AAyBA,MAAME,WAAqC,GAAG,CAAC;AACpDR,EAAAA,OADoD;AAEpDI,EAAAA,KAFoD;AAGpDC,EAAAA,MAHoD;AAIpDC,EAAAA,MAAAA;AAJoD,CAAD,KAK/C;AACJ,EAAO,OAAA;AACLC,IAAAA,IAAI,EAAEtB,iBADD;AAELe,IAAAA,OAFK;AAGLI,IAAAA,KAHK;AAILC,IAAAA,MAJK;AAKLC,IAAAA,MAAAA;AALK,GAAP,CAAA;AAOD,CAbM,CAAA;AAeA,MAAMG,QAAQ,GAAG,CAACC,IAAD,EAAeC,KAAf,KAA+B;AACrD,EAAO,OAAA;AACLJ,IAAAA,IAAI,EAAE,qBADD;AAELG,IAAAA,IAFK;AAGLC,IAAAA,KAAAA;AAHK,GAAP,CAAA;AAKD,CANM,CAAA;AAQA,MAAMC,cAAuC,GAAG,MAAM;AAC3D,EAAO,OAAA;AACLL,IAAAA,IAAI,EAAE/B,aAAAA;AADD,GAAP,CAAA;AAGD,EAJM;MAMMqC,iBAAe,GAAG,CAACC,SAAD,EAAoBC,UAApB,KAA4C;AACzE,EAAO,OAAA;AACLR,IAAAA,IAAI,EAAEf,iBADD;AAELsB,IAAAA,SAFK;AAGLC,IAAAA,UAAAA;AAHK,GAAP,CAAA;AAKD,EANM;AAQMC,MAAAA,oBAAkB,GAAIZ,KAAD,IAAmB;AACnD,EAAO,OAAA;AACLG,IAAAA,IAAI,EAAElB,oBADD;AAELe,IAAAA,KAAAA;AAFK,GAAP,CAAA;AAID,EALM;AAOMa,MAAAA,kBAAgB,GAAIC,EAAD,IAAgB;AAC9C,EAAO,OAAA;AACLX,IAAAA,IAAI,EAAEjB,kBADD;AAEL4B,IAAAA,EAAAA;AAFK,GAAP,CAAA;AAID,EALM;AAOMC,MAAAA,kBAAgB,GAAIC,IAAD,IAAkB;AAChD,EAAO,OAAA;AACLb,IAAAA,IAAI,EAAEd,kBADD;AAEL2B,IAAAA,IAAAA;AAFK,GAAP,CAAA;AAID,EALM;AAOMC,MAAAA,qBAAqB,GAAG,CACnCC,MADmC,EAEnCC,GAFmC,EAGnCC,aAAa,GAAG,KAHmB,EAInCT,UAJmC,KAKhC;AACH,EAAO,OAAA;AACLR,IAAAA,IAAI,EAAEb,uBADD;AAEL4B,IAAAA,MAFK;AAGLC,IAAAA,GAHK;AAILC,IAAAA,aAJK;AAKLT,IAAAA,UAAAA;AALK,GAAP,CAAA;AAOD,EAbM;MAeMU,iBAAe,GAAG,CAACC,OAAD,EAAkBtB,KAAlB,KAAqC;AAClE,EAAO,OAAA;AACLG,IAAAA,IAAI,EAAEhB,iBADD;AAELmC,IAAAA,OAFK;AAGLtB,IAAAA,KAAAA;AAHK,GAAP,CAAA;AAKD;;;;;;;;;;;;;;;;;AC9HWuB,IAAAA;;WAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,EAAAA;AAAAA,CAAAA,EAAAA,YAAAA;;ACGZ;;AACO,MAAMC,UAAU,GAAG,CACxBC,UAA8B,GAAIC,UAAD,CAAoBC,UAApB,IAAkC,WAD3C,KAAA;AAAA,EAAA,IAAA,UAAA,EAAA,WAAA,CAAA;;AAAA,EAGxBF,OAAAA,UAAU,KAAK,WAAf,GACI,CAAA,CAAA,UAAA,GAACC,UAAD,CAAoBE,SAApB,MAA+BC,IAAAA,IAAAA,UAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAAA,aAA/B,MACCH,CAAAA,WAAAA,GAAAA,UAAD,CAAoBE,SADpB,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GACA,WAA+BE,CAAAA,MAD/B,CAEEC,KAAAA,CAAD,IAAYA,CAFb,CADJ,GAIKA,CAAD,IAAYA,CAPQ,CAAA;AAAA,CAAnB,CAAA;;AASP,MAAMC,gBAAgB,GAAG,CAIvBzB,KAJuB,EAKvB0B,QALuB,EAMvBC,aANuB,EAOvBT,UAA8B,GAAIC,UAAD,CAAoBC,UAApB,IAAkC,WAP5C,KAQpB;AACH;AACA;AACA,EAAA,MAAMG,MAAM,GAAGN,UAAU,CAACC,UAAD,CAAzB,CAAA;;AAEA,EAAA,IACElB,KAAK,IACL,KAASA,IAAAA,KADT,IAEA,OAAOA,KAAK,CAAC4B,GAAb,KAAqB,UAFrB,IAGA,WAAW5B,KAHX,IAIA,OAAOA,KAAK,CAAC6B,KAAb,KAAuB,UAJvB,IAKA,MAAU7B,IAAAA,KALV,IAMA,OAAOA,KAAK,CAAC8B,IAAb,KAAsB,UAPxB,EAQE;AACA,IAAA,IAAIC,KAAK,CAACC,OAAN,CAAcN,QAAd,CAAJ,EACE,OAAOH,MAAM,CAACvB,KAAK,CAAC6B,KAAN,CAAYH,QAAZ,EAAsBC,aAAtB,CAAD,CAAb,CAAA;AACF,IAAOJ,OAAAA,MAAM,CAACvB,KAAK,CAAC4B,GAAN,CAAUF,QAAV,EAAoBC,aAApB,CAAD,CAAb,CAAA;AACD,GAAA;;AAED,EAAA,IAAII,KAAK,CAACC,OAAN,CAAcN,QAAd,CAAA,IAA2B1B,KAA3B,IAAoC,OAAOA,KAAP,KAAiB,QAAzD,EAAmE;AACjE,IAAA,MAAMiC,MAAM,GAAGC,KAAK,CAACR,QAAQ,CAACS,IAAT,CAAc,GAAd,CAAD,EAAqBnC,KAArB,CAApB,CAAA;AACA,IAAA,IAAI,OAAOiC,MAAP,KAAkB,WAAtB,EAAmC,OAAON,aAAP,CAAA;AACnC,IAAA,OAAOM,MAAP,CAAA;AACD,GAAA;;AAED,EAAA,MAAMA,MAAM,GACVjC,KAAK,IAAI,OAAOA,KAAP,KAAiB,QAA1B,GAAqCA,KAAK,CAAC0B,QAAD,CAA1C,GAAiEU,SADnE,CAAA;AAEA,EAAA,IAAI,OAAOH,MAAP,KAAkB,WAAtB,EAAmC,OAAON,aAAP,CAAA;AACnC,EAAA,OAAOM,MAAP,CAAA;AACD,CArCD;;ACIO,MAAMI,gBAAgB,GAAIrC,KAAD,IAC9B6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAW,SAAX,CAAR,EAA+BgB,OAAO,CAACsB,MAAvC,CADA,CAAA;AAGA,MAAMC,UAAU,GAAG,CAACvC,KAAD,EAAkBX,OAAO,GAAG2B,OAAO,CAACsB,MAApC,KACxBjD,OAAO,KAAK2B,OAAO,CAACsB,MAApB,GACIE,eAAe,CAACxC,KAAD,CADnB,GAEIyC,iBAAiB,CAACzC,KAAD,CAHhB,CAAA;AAKMwC,MAAAA,eAAe,GAAIxC,KAAD,IAC7B6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAW,cAAX,CAAR,EADA;AAGA,MAAMyC,iBAAiB,GAAIzC,KAAD,IAC/B6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAW,gBAAX,CAAR,CADA,CAAA;AAGA,MAAM0C,aAAa,GAAI1C,KAAD,IAC3B6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAWgB,OAAO,CAACsB,MAAnB,EAA2BE,eAAe,CAACxC,KAAD,CAA1C,EAAmD,OAAnD,CAAR,EAAqE,CAArE,EADA;AAGA,MAAM2C,SAAS,GAAG,CAAC3C,KAAD,EAAkBkB,UAAlB,KACvBW,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAWgB,OAAO,CAACsB,MAAnB,CAAR,EAAoC,EAApC,EAAwCpB,UAAxC,CADA,CAAA;AAGA,MAAM0B,YAAY,GAAI5C,KAAD,IAC1B6C,MAAM,CAACC,WAAP,CACED,MAAM,CAACE,OAAP,CAAeJ,SAAS,CAAC3C,KAAD,EAAQ,IAAR,CAAxB,CAAA,CAAuCW,MAAvC,CACE,CAAC,CAACC,GAAD,CAAD,KACEiB,gBAAK,CAACc,SAAS,CAAC3C,KAAD,CAAV,EAAmB,CAACY,GAAD,EAAM,OAAN,CAAnB,EAAmC,CAAnC,CAAL,KAA+C8B,aAAa,CAAC1C,KAAD,CAFhE,CADF,EADK;AAQA,MAAMgD,cAAc,GAAIhD,KAAD,IAC5B6C,MAAM,CAACE,OAAP,CAAeJ,SAAS,CAAC3C,KAAD,EAAQ,IAAR,CAAxB,CAAuCiD,CAAAA,GAAvC,CAA2C,CAAC,CAACrC,GAAD,EAAMnB,KAAK,GAAG,EAAd,CAAD,KAAA;AAAA,EAAA,IAAA,iBAAA,CAAA;;AAAA,EAAwB,OAAA;AACjEyD,IAAAA,UAAU,EAAEV,eAAe,CAACxC,KAAD,CAAf,KAA2BY,GAD0B;AAEjEA,IAAAA,GAFiE;AAGjEuC,IAAAA,KAAK,EAAE1D,KAAK,CAAC0D,KAHoD;AAIjEC,IAAAA,UAAU,EAAE3D,CAAAA,iBAAAA,GAAAA,KAAK,CAAC4D,UAAR,sDAAE,iBAAkBD,CAAAA,UAAAA;AAJmC,GAAxB,CAAA;AAAA,CAA3C,EADK;MAQME,QAAQ,GAAG,CACtBtD,KADsB,EAEtBuD,SAAS,GAAG,EAFU,EAGtBlE,OAAO,GAAG2B,OAAO,CAACsB,MAHI,EAItBpB,UAJsB,KAKnB;AACH,EAAA,MAAMsC,YAAY,GAAGD,SAAS,IAAIf,eAAe,CAACxC,KAAD,CAAjD,CAAA;AACA,EAAA,OAAO6B,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWX,OAAX,EAAoBmE,YAApB,CAFU,EAGV,EAHU,EAIVtC,UAJU,CAAZ,CAAA;AAMD,EAbM;AAeA,MAAMuC,UAAU,GAAG,CAACzD,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KAAmC;AAC3D,EAAA,MAAMC,cAAc,GAAGD,OAAO,IAAIjB,iBAAiB,CAACzC,KAAD,CAAnD,CAAA;AACA,EAAA,OAAO6B,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWgB,OAAO,CAAC4C,QAAnB,EAA6BD,cAA7B,CAFU,EAGV,EAHU,CAAZ,CAAA;AAKD,CAPM,CAAA;AASME,MAAAA,UAAU,GAAG,CACxB7D,KADwB,EAExBP,KAFwB,EAGxBJ,OAAO,GAAG2B,OAAO,CAACsB,MAHM,EAIxBpB,UAJwB,KAKZ;AACZ,EAAOW,OAAAA,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWX,OAAX,EAAoBI,KAAK,IAAI8C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAAvC,EAAyD,SAAzD,CAFU,EAGV,EAHU,EAIV6B,UAJU,CAAZ,CAAA;AAMD,EAZM;AAcA,MAAM4C,oBAAoB,GAAG,CAClC9D,KADkC,EAElCP,KAAK,GAAG,EAF0B,EAGlCJ,OAAO,GAAG2B,OAAO,CAACsB,MAHgB,KAKlCO,MAAM,CAACC,WAAP,CACED,MAAM,CAACE,OAAP,CAAec,UAAU,CAAC7D,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB,IAAxB,CAAzB,CAAA,CAAwDsB,MAAxD,CACE,CAAC,GAAGoD,CAAC,GAAG,EAAP,CAAD,KAAiB,OAAOA,CAAC,CAACC,UAAT,KAAwB,SAAxB,GAAoC,IAApC,GAA2CD,CAAC,CAACC,UADhE,CADF,EALK;AAWA,MAAMC,gBAAgB,GAAG,CAC9BjE,KAD8B,EAE9BP,KAF8B,EAG9BJ,OAAO,GAAG2B,OAAO,CAACsB,MAHY,EAI9BpB,UAJ8B,KAK3B;AACH,EAAMgD,MAAAA,OAAO,GAAGL,UAAU,CAAC7D,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB6B,UAAxB,CAA1B,CAAA;AACA,EAAA,MAAMiD,aAAa,GAAGtB,MAAM,CAACE,OAAP,CAAemB,OAAf,CAAwBjB,CAAAA,GAAxB,CAA4B,CAAC,CAACrC,GAAD,EAAMmD,CAAC,GAAG,EAAV,CAAD,KAAmB,CACnEnD,GADmE,EAEnE,CAACmD,CAAC,CAACK,KAAF,IAAW,EAAZ,EAAgBzD,MAAhB,CAAuB0D,CAAC,IAAI;AAC1B,IAAMlB,MAAAA,KAAK,GAAGkB,CAAH,KAAA,IAAA,IAAGA,CAAH,KAAGA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAC,CAAElB,KAAjB,CAAA;AACA,IAAA,OAAO,OAAOA,KAAP,KAAiB,WAAjB,IAAgC,CAAC,CAACA,KAAzC,CAAA;AACD,GAHD,CAGGmB,CAAAA,MAHH,GAGY,CAHZ,IAGiB,CAACP,CAAC,CAACQ,OAAF,IAAa,KAAd,MAAyB,KALyB,CAA/C,CAAtB,CAAA;AAOA,EAAOJ,OAAAA,aAAa,CACjBlB,GADI,CACA,CAAC,CAACuB,SAAD,EAAYC,QAAZ,CAAD,KAA4B,CAACA,QAAD,GAAYD,SAAZ,GAAwB,IADpD,CAEJ7D,CAAAA,MAFI,CAEGoD,CAAC,IAAI,CAAC,CAACA,CAFV,CAAP,CAAA;AAGD,CAjBM;;MAoBMW,kBAAkB,GAAG,CAChC1E,KADgC,EAEhCP,KAAK,GAAG,EAFwB,EAGhCJ,OAAO,GAAG2B,OAAO,CAACsB,MAHc,EAIhCpB,UAJgC,KAKZ;AACpB,EAAMgD,MAAAA,OAAO,GAAGL,UAAU,CAAC7D,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB,IAAxB,CAA1B,CAAA;AACA,EAAA,MAAMsF,YAAY,GAAGC,MAAM,CAAC,8CAAD,CAA3B,CAAA;AAEA,EAAMC,MAAAA,eAAe,GAAGhC,MAAM,CAACC,WAAP,CACtBD,MAAM,CAACE,OAAP,CAAemB,OAAf,EAAwBjB,GAAxB,CAA4B,CAAC,CAACrC,GAAD,EAAMD,MAAM,GAAG,EAAf,CAAD,KAAwB,CAClDC,GADkD,EAElD,CAACD,MAAM,CAACyD,KAAP,IAAgB,EAAjB,EACGzD,MADH,CACUmE,IAAI,IAAI,CAAC,EAAEA,IAAI,CAAC5B,UAAL,IAAmB,KAArB,CADnB,CAEGD,CAAAA,GAFH,CAEO6B,IAAI,IAAI;AACX,IAAA,MAAMlE,GAAG,GAAG,CAAAkE,IAAI,KAAJ,IAAA,IAAAA,IAAI,KAAA,KAAA,CAAJ,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAElE,GAAN,KAAa,EAAzB,CAAA;AACA,IAAA,MAAMmE,SAAS,GAAGJ,YAAY,CAACK,IAAb,CAAkBpE,GAAlB,CAAlB,CAAA;AACA,IAAA,OAAOmE,SAAS,GACZnE,GADY,GAEZ,OAAOA,GAAG,CAACqE,WAAX,KAA2B,WAA3B,GACArE,GAAG,CAACqE,WAAJ,EADA,GAEArE,GAJJ,CAAA;AAKD,GAVH,CAFkD,CAApD,CADsB,CAAxB,CAAA;AAgBA,EAAA,MAAMW,MAAM,GAAGN,UAAU,CAACC,UAAD,CAAzB,CAAA;AACA,EAAOK,OAAAA,MAAM,CAACsD,eAAD,CAAb,CAAA;AACD,EA3BM;MA6BMK,UAAU,GAAG,CACxBlF,KADwB,EAExBmF,OAAO,GAAG,EAFc,EAGxB9F,OAAO,GAAG2B,OAAO,CAACsB,MAHM,EAIxBpB,UAJwB,KAKrB;AACH,EAAOW,OAAAA,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWX,OAAX,EAAoB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAAzC,EAA2D,SAA3D,CAFU,EAGV,EAHU,EAIV6B,UAJU,CAAZ,CAAA;AAMD,EAZM;AAcA,MAAMkE,mBAAmB,GAAG,CACjCpF,KADiC,EAEjCmF,OAFiC,EAGjC9F,OAAO,GAAG2B,OAAO,CAACsB,MAHe,KAIrB;AACZ,EAAOT,OAAAA,gBAAK,CACV7B,KADU,EAEV,CACE,QADF,EAEEX,OAFF,EAGE8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHvB,EAIE,aAJF,EAKE,gBALF,CAFU,EASV,KATU,CAAZ,CAAA;AAWD,CAhBM,CAAA;AAkBA,MAAMgG,WAAW,GAAG,CACzBrF,KADyB,EAEzBX,OAAO,GAAG2B,OAAO,CAACsB,MAFO,EAGzB7C,KAHyB,KAItB;AACH,EAAO,OAAA,CAAC,CAACoC,gBAAK,CACZ7B,KADY,EAEZ,CAAC,QAAD,EAAWX,OAAX,EAAoBI,KAAK,IAAI8C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAAvC,EAAyD,eAAzD,CAFY,EAGZ,CAHY,CAAd,CAAA;AAKD,CAVM,CAAA;AAYMiG,MAAAA,YAAY,GAAG,CAC1BtF,KAD0B,EAE1BX,OAAO,GAAG2B,OAAO,CAACsB,MAFQ,EAG1B7C,KAH0B,KAId;AACZ,EAAOoC,OAAAA,gBAAK,CAAC7B,KAAD,EAAQ,CAClB,QADkB,EAElBX,OAFkB,EAGlBI,KAAK,IAAI8C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHD,EAIlB,SAJkB,EAKlB,WALkB,CAAR,CAAZ,CAAA;AAOD,EAZM;AAcA,MAAMkG,QAAQ,GAAIvF,KAAD,IACtB6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAW,QAAX,EAAqB,KAArB,CAAR,EAAqC,KAArC,CADA,CAAA;MAGMwF,kBAAkB,GAAG,CAChCxF,KADgC,EAEhCmF,OAAO,GAAG,EAFsB,EAGhC9F,OAAO,GAAG2B,OAAO,CAACsB,MAHc,EAIhCpB,UAJgC,KAK7B;AACH,EAAOW,OAAAA,gBAAK,CACV7B,KADU,EAEV,CACE,QADF,EAEEX,OAFF,EAGE8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHvB,EAIE,iBAJF,CAFU,EAQV,EARU,EASV6B,UATU,CAAZ,CAAA;AAWD,EAjBM;MAmBMuE,SAAS,GAAG,CACvBzF,KADuB,EAEvBmF,OAAO,GAAG,EAFa,EAGvB9F,OAAO,GAAG2B,OAAO,CAACsB,MAHK,EAIvBpB,UAJuB,KAKZ;AACX,EAAOW,OAAAA,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWX,OAAX,EAAoB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAAzC,EAA2D,YAA3D,CAFU,EAGV,EAHU,EAIV6B,UAJU,CAAZ,CAAA;AAMD,EAZM;AAcMwE,MAAAA,YAAY,GAAG,CAC1B1F,KAD0B,EAE1BmF,OAAO,GAAG,EAFgB,EAG1B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHQ,KAIf;AACX,EAAOT,OAAAA,gBAAK,CAAC7B,KAAD,EAAQ,CAClB,QADkB,EAElBX,OAFkB,EAGlB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHH,EAIlB,YAJkB,EAKlB,WALkB,CAAR,CAAZ,CAAA;AAOD,EAZM;AAcA,MAAMsG,gBAAgB,GAAG,CAC9B3F,KAD8B,EAE9BmF,OAAO,GAAG,EAFoB,EAG9B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHY,KAInB;AACX,EAAOT,OAAAA,gBAAK,CAAC7B,KAAD,EAAQ,CAClB,QADkB,EAElBX,OAFkB,EAGlB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHH,EAIlB,YAJkB,EAKlB,eALkB,CAAR,CAAZ,CAAA;AAOD,CAZM,CAAA;AAaMuG,MAAAA,gBAAgB,GAAG,CAC9B5F,KAD8B,EAE9BmF,OAAO,GAAG,EAFoB,EAG9B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHY,KAIlB;AACZ,EAAOT,OAAAA,gBAAK,CAAC7B,KAAD,EAAQ,CAClB,QADkB,EAElBX,OAFkB,EAGlB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHH,EAIlB,YAJkB,EAKlB,WALkB,CAAR,CAAZ,CAAA;AAOD,EAZM;AAcA,MAAMwG,cAAc,GAAG,CAC5B7F,KAD4B,EAE5BmF,OAAO,GAAG,EAFkB,EAG5B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHU,KAIf;AACb,EAAOT,OAAAA,gBAAK,CACV7B,KADU,EAEV,CACE,QADF,EAEEX,OAFF,EAGE8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHvB,EAIE,YAJF,EAKE,aALF,CAFU,EASV,EATU,EAUV,IAVU,CAAZ,CAAA;AAYD,CAjBM,CAAA;AAmBMyG,MAAAA,aAAa,GAAG,CAC3B9F,KAD2B,EAE3BmF,OAAO,GAAG,EAFiB,EAG3B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHS,KAIhB;AACX,EAAOT,OAAAA,gBAAK,CAAC7B,KAAD,EAAQ,CAClB,QADkB,EAElBX,OAFkB,EAGlB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHH,EAIlB,YAJkB,EAKlB,YALkB,CAAR,CAAZ,CAAA;AAOD,EAZM;AAcM0G,MAAAA,aAAa,GAAI/F,KAAD,IAC3B6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAW,MAAX,CAAR,EADA;AAGA,MAAMgG,aAAa,GAAG,CAAChG,KAAD,EAAkBkB,UAAlB,KAC3BW,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,QAAD,EAAW,MAAX,CAAR,EAA4B,EAA5B,EAAgCkB,UAAhC,CADA,CAAA;AAGA,MAAM+E,cAAc,GAAG,CAC5BjG,KAD4B,EAE5BmF,OAAO,GAAG,EAFkB,EAG5B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHU,KAIzB;AACH,EAAOT,OAAAA,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWX,OAAX,EAAoB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAAzC,EAA2D,aAA3D,CAFU,EAGV,EAHU,EAIV,IAJU,CAAZ,CAAA;AAMD,CAXM,CAAA;AAaA,MAAM6G,iBAAiB,GAAG,CAI/B;AACElG,EAAAA,KADF;AAEEP,EAAAA,KAFF;AAGEJ,EAAAA,OAAO,GAAG2B,OAAO,CAACsB,MAAAA;AAHpB,CAJ+B,EAS/B1B,GAT+B,EAU/BuF,MAAW,GAAG,IAViB,KAWa;AAC5C,EAAA,OAAOtE,gBAAK,CAACoE,cAAc,CAACjG,KAAD,EAAQP,KAAR,EAAeJ,OAAf,CAAf,EAAwCuB,GAAxC,EAA6CuF,MAA7C,EAAqD,IAArD,CAAZ,CAAA;AACD,EAbM;AAeA,MAAMC,YAAY,GAAG,CAC1BpG,KAD0B,EAE1BmF,OAF0B,EAG1B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHQ,EAI1BpB,UAJ0B,KAKZ;AACd,EAAOW,OAAAA,gBAAK,CACV7B,KADU,EAEV,CAAC,QAAD,EAAWX,OAAX,EAAoB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAAzC,EAA2D,WAA3D,CAFU,EAGV,IAHU,EAIV6B,UAJU,CAAZ,CAAA;AAMD,CAZM,CAAA;AAcA,MAAMmF,YAAY,GAAG,CAC1BrG,KAD0B,EAE1BmF,OAF0B,EAG1B9F,OAAO,GAAG2B,OAAO,CAACsB,MAHQ,KAIvB;AACH,EAAOT,OAAAA,gBAAK,CAAC7B,KAAD,EAAQ,CAClB,QADkB,EAElBX,OAFkB,EAGlB8F,OAAO,IAAI5C,UAAU,CAACvC,KAAD,EAAQX,OAAR,CAHH,EAIlB,KAJkB,CAAR,CAAZ,CAAA;AAMD,CAXM,CAAA;MAaMiH,gBAAgB,GAAG,CAACtG,KAAD,EAAkBkB,UAAlB,KAA6C;AAC3E,EAAA,MAAMqF,IAAI,GAAGP,aAAa,CAAChG,KAAD,EAAQ,IAAR,CAA1B,CAAA;AACA,EAAA,MAAMsC,MAAM,GAAGK,SAAS,CAAC3C,KAAD,EAAQ,IAAR,CAAxB,CAAA;AAEA,EAAA,MAAMwG,aAAa,GAAG,CAACD,IAAI,IAAI,EAAT,EAAatD,GAAb,CAAiB,CAACwD,GAAG,GAAG,EAAP,KAAqB;AAC1D,IAAA,MAAMC,aAAa,GAAGD,GAAG,CAACrD,UAA1B,CAAA;AACA,IAAA,IAAIuD,WAAJ,CAAA;AAEA,IAAI,IAAA,OAAOD,aAAP,KAAyB,QAA7B,EAAuCC,WAAW,GAAG,CAAC,CAACD,aAAD,CAAD,CAAd,CAAA;AAEvC,IAAA,MAAME,aAAa,GAAG/D,MAAM,CAACE,OAAP,CAAeT,MAAf,CAAA,CAAuB3B,MAAvB,CACpB,CAAC,CAACC,GAAD,CAAD,KAAWiB,gBAAK,CAACS,MAAD,EAAS,CAAC1B,GAAD,EAAM,OAAN,CAAT,EAAyB,CAAzB,CAAL,KAAqC6F,GAAG,CAAClG,EADhC,CAAtB,CAAA;AAIA,IAAA,MAAMsG,YAAY,GAAGD,aAAa,CAC/B3D,GADkB,CACd,CAAC,CAACM,SAAD,EAAY9D,KAAK,GAAG,EAApB,CAAD,KAA6B;AAChC,MAAA,IAAI,CAACkH,WAAD,IAAgBA,WAAW,CAACG,IAAZ,CAAiB,CAAC/C,CAAC,GAAG,EAAL,KAAY,CAAAA,CAAC,KAAA,IAAD,IAAAA,CAAC,KAAA,KAAA,CAAD,GAAAA,KAAAA,CAAAA,GAAAA,CAAC,CAAG,CAAH,CAAD,MAAWR,SAAxC,CAApB,EACE,OAAO1B,gBAAK,CAACpC,KAAD,EAAQ,CAAC,YAAD,EAAe,YAAf,CAAR,CAAZ,CAAA;AACF,MAAA,OAAO,CAAP,CAAA;AACD,KALkB,CAMlBsH,CAAAA,MANkB,CAMX,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,GAAGC,CANH,EAMM,CANN,CAArB,CAAA;AAQA,IAAO,OAAA,EACL,GAAGR,GADE;AAEL,MAACzF,CAAAA,OAAO,CAACsB,MAAT,GAAkBO,MAAM,CAACC,WAAP,CAAmB8D,aAAnB,CAFb;AAGLxD,MAAAA,UAAU,EAAEyD,YAAAA;AAHP,KAAP,CAAA;AAKD,GAvBqB,CAAtB,CAAA;AAyBA,EAAA,MAAMtF,MAAM,GAAGN,UAAU,CAACC,UAAD,CAAzB,CAAA;AACA,EAAOK,OAAAA,MAAM,CAACiF,aAAD,CAAb,CAAA;AACD,EA/BM;AAiCMU,MAAAA,mBAAmB,GAAIlH,KAAD,IAA6B;AAC9D,EAAA,MAAMwG,aAAa,GAAGF,gBAAgB,CAACtG,KAAD,EAAQ,IAAR,CAAtC,CAAA;AACA,EAAMmH,MAAAA,gBAAgB,GAAGX,aAAa,CACnCvD,GADsB,CAClB,CAACmE,CAAC,GAAG,EAAL,KAA4BA,CAAC,CAAChE,UADZ,CAAA,CAEtB2D,MAFsB,CAEf,CAACC,CAAD,EAAYC,CAAZ,KAA0BD,CAAC,GAAGC,CAFf,EAEkB,CAFlB,CAAzB,CAAA;AAGA,EAAA,OAAOE,gBAAP,CAAA;AACD,EANM;AAQME,MAAAA,mBAAmB,GAAIrH,KAAD,IAAqB;AACtD,EAAA,MAAMsC,MAAM,GAAGK,SAAS,CAAC3C,KAAD,CAAxB,CAAA;AACA,EAAA,MAAMmH,gBAAgB,GAAGtE,MAAM,CAACE,OAAP,CAAeT,MAAf,CACtBW,CAAAA,GADsB,CAClB,CAAC,GAAGmE,CAAC,GAAG,EAAP,CAAD,KAAA;AAAA,IAAA,IAAA,aAAA,CAAA;;AAAA,IAAA,OAAgB,kBAAAA,CAAC,CAAC/D,UAAF,MAAcD,IAAAA,IAAAA,aAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAAA,UAAd,KAA4B,CAA5C,CAAA;AAAA,GADkB,CAEtB2D,CAAAA,MAFsB,CAEf,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,GAAGC,CAFC,EAEE,CAFF,CAAzB,CAAA;AAGA,EAAA,OAAOE,gBAAP,CAAA;AACD;;AAGM,MAAMG,YAAY,GAAG;AAC1B/E,EAAAA,UAAU,EAAEC,eADc;AAE1BE,EAAAA,aAF0B;AAG1B0D,EAAAA,YAH0B;AAI1BC,EAAAA,YAJ0B;AAK1B/C,EAAAA,QAL0B;AAM1BN,EAAAA,cAN0B;AAO1BL,EAAAA,SAP0B;AAQ1B0E,EAAAA,mBAR0B;AAS1B7B,EAAAA,kBAT0B;AAU1B3B,EAAAA,UAV0B;AAW1BI,EAAAA,gBAX0B;AAY1BoB,EAAAA,WAZ0B;AAa1BC,EAAAA,YAb0B;AAc1BI,EAAAA,YAd0B;AAe1BE,EAAAA,gBAf0B;AAgB1BC,EAAAA,cAhB0B;AAiB1BJ,EAAAA,SAjB0B;AAkB1BQ,EAAAA,cAAc,EAAE,CAACjG,KAAD,EAAkBP,KAAlB,KACdwG,cAAc,CAACjG,KAAD,EAAQP,KAAR,EAAeuB,OAAO,CAACsB,MAAvB,CAnBU;AAoB1B4D,EAAAA,iBAAiB,EAAE,CACjB;AAAElG,IAAAA,KAAF;AAASP,IAAAA,KAAAA;AAAT,GADiB,EAEjBmB,GAFiB,EAGjBuF,MAHiB,KAKjBD,iBAAiB,CAAC;AAAElG,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAO,EAAE2B,OAAO,CAACsB,MAAAA;AAAjC,GAAD,EAA4C1B,GAA5C,EAAiDuF,MAAjD,CAzBO;AA0B1BrC,EAAAA,oBA1B0B;AA2B1BoB,EAAAA,UA3B0B;AA4B1BtC,EAAAA,YA5B0B;AA6B1B0D,EAAAA,gBA7B0B;AA8B1BR,EAAAA,aA9B0B;AA+B1BE,EAAAA,aA/B0B;AAgC1BD,EAAAA,aAhC0B;AAiC1BmB,EAAAA,mBAjC0B;AAkC1BxC,EAAAA,kBAAAA;AAlC0B;;AAsCrB,MAAM6C,aAAa,GAAG;AAC3BhF,EAAAA,UAAU,EAAEE,iBADe;AAE3B+C,EAAAA,kBAAkB,EAAE,CAACxF,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KAClB8B,kBAAkB,CAACxF,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,EAAmC,IAAnC,CAHO;AAI3BC,EAAAA,UAAU,EAAE,CAAC7D,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACVG,UAAU,CAAC7D,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,EAAmC,IAAnC,CALe;AAM3BK,EAAAA,gBAAgB,EAAE,CAACjE,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KAChBO,gBAAgB,CAACjE,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CAPS;AAQ3BH,EAAAA,UAR2B;AAS3B4B,EAAAA,WAAW,EAAGrF,KAAD,IAAqBqF,WAAW,CAACrF,KAAD,EAAQgB,OAAO,CAAC4C,QAAhB,CATlB;AAU3B0B,EAAAA,YAAY,EAAGtF,KAAD,IAAqBsF,YAAY,CAACtF,KAAD,EAAQgB,OAAO,CAAC4C,QAAhB,CAVpB;AAW3B8B,EAAAA,YAAY,EAAE,CAAC1F,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACZgC,YAAY,CAAC1F,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CAZa;AAa3B6B,EAAAA,SAAS,EAAE,CAACzF,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACT+B,SAAS,CAACzF,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,EAAmC,IAAnC,CAdgB;AAe3BgC,EAAAA,gBAAgB,EAAE,CAAC5F,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KAChBkC,gBAAgB,CAAC5F,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CAhBS;AAiB3BiC,EAAAA,cAAc,EAAE,CAAC7F,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACdmC,cAAc,CAAC7F,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CAlBW;AAmB3BqC,EAAAA,cAAc,EAAE,CAACjG,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACduC,cAAc,CAACjG,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CApBW;AAqB3BsC,EAAAA,iBAAiB,EAAE,CACjB;AAAElG,IAAAA,KAAF;AAASP,IAAAA,KAAAA;AAAT,GADiB,EAEjBmB,GAFiB,EAGjBuF,MAHiB,KAKjBD,iBAAiB,CAAC;AAAElG,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAO,EAAE2B,OAAO,CAAC4C,QAAAA;AAAjC,GAAD,EAA8ChD,GAA9C,EAAmDuF,MAAnD,CA1BQ;AA2B3BrC,EAAAA,oBAAoB,EAAE,CAAC9D,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACpBI,oBAAoB,CAAC9D,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CA5BK;AA6B3BsB,EAAAA,UAAU,EAAE,CAAClF,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACVwB,UAAU,CAAClF,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,EAAmC,IAAnC,CA9Be;AA+B3BmC,EAAAA,aA/B2B;AAgC3BD,EAAAA,aAAa,EAAE,CAAC9F,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KACboC,aAAa,CAAC9F,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,CAjCY;AAkC3Bc,EAAAA,kBAAkB,EAAE,CAAC1E,KAAD,EAAkB0D,OAAO,GAAG,EAA5B,KAClBgB,kBAAkB,CAAC1E,KAAD,EAAQ0D,OAAR,EAAiB1C,OAAO,CAAC4C,QAAzB,EAAmC,IAAnC,CAAA;AAnCO,EAAtB;AAsCA,MAAM4D,iBAAiB,GAAIxH,KAAD,IAC/B6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,SAAD,EAAY,aAAZ,CAAR,CADA,CAAA;AAGA,MAAMyH,oBAAoB,GAAIzH,KAAD,IAClC6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,SAAD,EAAY,gBAAZ,CAAR,CADA,CAAA;AAGA,MAAM0H,mBAAmB,GAAI1H,KAAD,IACjC6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,SAAD,EAAY,wBAAZ,CAAR,CADA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9fP,MAAM2H,eAAe,GAAG,CAACC,OAAD,EAAUC,GAAV,KAAkB;AACxC,EAAIzI,IAAAA,MAAM,GAAG0I,mBAAb,CAAA;AAAkC;;AAClC,EAAA,IAAIF,OAAJ,EAAa;AACXxI,IAAAA,MAAM,CAAC2I,SAAP,GAAmBH,OAAnB,CAAA;AACD,GAAA;;AAED,EAAA,IACE,OAAOI,MAAP,IAAiB,WAAjB,IACAC,kBAAAA;AAAmB;AAFrB,IAGE;AACA;AACA7I,IAAAA,MAAM,CAAC8I,OAAP,GAAiBL,GAAG,IAAI,EAAxB,CAAA;AACAzI,IAAAA,MAAM,CAAC+I,eAAP,GAAyB;AACvB,MAAA,GAAA,EAAK,MAAM,IAAA;AADY,KAAzB,CAAA;AAGD,GAAA;;AACD,EAAA,OAAO/I,MAAP,CAAA;AACD,CAjBD,CAAA;;AAyEA,MAAMgJ,SAAN,CAAgB;AACdC,EAAAA,WAAW,CAACzH,GAAD,EAAM0H,KAAN,EAAa;AACtB,IAAK1H,IAAAA,CAAAA,GAAL,GAAWA,GAAX,CAAA;AACA,IAAK0H,IAAAA,CAAAA,KAAL,GAAaA,KAAb,CAAA;AACA,IAAKC,IAAAA,CAAAA,IAAL,GAAY,IAAZ,CAAA;AACA,IAAKC,IAAAA,CAAAA,IAAL,GAAY,IAAZ,CAAA;AACD,GAAA;;AANa,CAAA;;AAShB,MAAMC,QAAN,CAAe;AACbJ,EAAAA,WAAW,CAACK,KAAK,GAAG,GAAT,EAAc;AACvB,IAAKzF,IAAAA,CAAAA,GAAL,GAAW,EAAX,CAAA;AACA,IAAK0F,IAAAA,CAAAA,IAAL,GAAY,IAAZ,CAAA;AACA,IAAKC,IAAAA,CAAAA,IAAL,GAAY,IAAZ,CAAA;AACA,IAAA,IAAA,CAAKF,KAAL,GAAaA,KAAK,IAAI,GAAtB,CAAA;AACA,IAAKG,IAAAA,CAAAA,IAAL,GAAY,CAAZ,CAAA;AACD,GAAA;;AAEDjH,EAAAA,GAAG,CAAChB,GAAD,EAAM;AACP,IAAA,IAAI,IAAKqC,CAAAA,GAAL,CAASrC,GAAT,CAAJ,EAAmB;AACjB,MAAA,IAAI0H,KAAK,GAAG,IAAA,CAAKrF,GAAL,CAASrC,GAAT,EAAc0H,KAA1B,CAAA;AACA,MAAIQ,IAAAA,IAAI,GAAG,IAAIV,SAAJ,CAAcxH,GAAd,EAAmB0H,KAAnB,CAAX,CAAA;AACA,MAAKS,IAAAA,CAAAA,MAAL,CAAYnI,GAAZ,CAAA,CAAA;AACA,MAAKoI,IAAAA,CAAAA,OAAL,CAAaF,IAAb,CAAA,CAAA;AACA,MAAA,OAAOR,KAAP,CAAA;AACD,KAAA;AACF,GAAA;;AAEDW,EAAAA,GAAG,CAACrI,GAAD,EAAM0H,KAAN,EAAa;AACd,IAAIQ,IAAAA,IAAI,GAAG,IAAIV,SAAJ,CAAcxH,GAAd,EAAmB0H,KAAnB,CAAX,CAAA;;AACA,IAAA,IAAI,IAAKrF,CAAAA,GAAL,CAASrC,GAAT,CAAJ,EAAmB;AACjB,MAAKmI,IAAAA,CAAAA,MAAL,CAAYnI,GAAZ,CAAA,CAAA;AACD,KAFD,MAEO;AACL,MAAA,IAAI,IAAKiI,CAAAA,IAAL,IAAa,IAAA,CAAKH,KAAtB,EAA6B;AAC3B,QAAA,OAAO,KAAKzF,GAAL,CAAS,KAAK2F,IAAL,CAAUhI,GAAnB,CAAP,CAAA;AACA,QAAA,IAAA,CAAKiI,IAAL,EAAA,CAAA;AACA,QAAA,IAAA,CAAKD,IAAL,GAAY,IAAKA,CAAAA,IAAL,CAAUJ,IAAtB,CAAA;AACA,QAAA,IAAA,CAAKI,IAAL,CAAUL,IAAV,GAAiB,IAAjB,CAAA;AACD,OAAA;AACF,KAAA;;AACD,IAAKS,IAAAA,CAAAA,OAAL,CAAaF,IAAb,CAAA,CAAA;AACD,GAAA;;AAEDE,EAAAA,OAAO,CAACF,IAAD,EAAO;AACZA,IAAAA,IAAI,CAACP,IAAL,GAAY,KAAKI,IAAjB,CAAA;AACAG,IAAAA,IAAI,CAACN,IAAL,GAAY,IAAZ,CAAA;;AACA,IAAI,IAAA,IAAA,CAAKG,IAAT,EAAe;AACb,MAAA,IAAA,CAAKA,IAAL,CAAUH,IAAV,GAAiBM,IAAjB,CAAA;AACD,KAAA;;AACD,IAAKH,IAAAA,CAAAA,IAAL,GAAYG,IAAZ,CAAA;;AACA,IAAI,IAAA,CAAC,IAAKF,CAAAA,IAAV,EAAgB;AACd,MAAKA,IAAAA,CAAAA,IAAL,GAAYE,IAAZ,CAAA;AACD,KAAA;;AACD,IAAA,IAAA,CAAKD,IAAL,EAAA,CAAA;AACA,IAAA,IAAA,CAAK5F,GAAL,CAAS6F,IAAI,CAAClI,GAAd,IAAqBkI,IAArB,CAAA;AACD,GAAA;;AAEDC,EAAAA,MAAM,CAACnI,GAAD,EAAM;AACV,IAAA,IAAIkI,IAAI,GAAG,IAAA,CAAK7F,GAAL,CAASrC,GAAT,CAAX,CAAA;;AACA,IAAIkI,IAAAA,IAAI,CAACN,IAAT,EAAe;AACbM,MAAAA,IAAI,CAACN,IAAL,CAAUD,IAAV,GAAiBO,IAAI,CAACP,IAAtB,CAAA;AACD,KAFD,MAEO;AACL,MAAA,IAAA,CAAKI,IAAL,GAAYG,IAAI,CAACP,IAAjB,CAAA;AACD,KAAA;;AACD,IAAIO,IAAAA,IAAI,CAACP,IAAT,EAAe;AACbO,MAAAA,IAAI,CAACP,IAAL,CAAUC,IAAV,GAAiBM,IAAI,CAACN,IAAtB,CAAA;AACD,KAFD,MAEO;AACL,MAAA,IAAA,CAAKI,IAAL,GAAYE,IAAI,CAACN,IAAjB,CAAA;AACD,KAAA;;AACD,IAAA,OAAO,IAAKvF,CAAAA,GAAL,CAASrC,GAAT,CAAP,CAAA;AACA,IAAA,IAAA,CAAKiI,IAAL,EAAA,CAAA;AACD,GAAA;;AA9DY,CAAA;;AAiEf,MAAMK,YAAN,CAAmB;AAAA,EAAA,WAAA,GAAA;AAAA,IAAA,IAAA,CACjBC,KADiB,GACT,IAAIV,QAAJ,EADS,CAAA;AAAA,IAEjBW,IAAAA,CAAAA,cAFiB,GAEA,EAFA,CAAA;AAAA,GAAA;;AAIjBC,EAAAA,MAAM,CAACC,KAAD,EAAQC,SAAR,EAAmB3B,OAAnB,EAA4BC,GAA5B,EAAiC;AACrC,IAAA,MAAM2B,MAAM,GAAGC,MAAM,CAACC,MAAP,CAAc/B,eAAe,CAACC,OAAD,EAAUC,GAAV,CAA7B,CAAf,CAAA;AACA,IAAA,OAAO,IAAK8B,CAAAA,OAAL,CACL/B,OAAO,GAAGgC,IAAI,CAACC,SAAL,CAAeP,KAAf,CAAV,GAAkCC,SAAS,CAACO,QAAV,EAD7B,EAEL,MAAMN,MAAM,CAACzG,OAAP,CAAesG,MAAf,CAAsBC,KAAtB,EAA6BC,SAA7B,CAFD,CAAP,CAAA;AAID,GAAA;;AAEDQ,EAAAA,qBAAqB,CAAChK,IAAD,EAAO6H,OAAP,EAAgBC,GAAhB,EAAqB;AACxC,IAAA,MAAM2B,MAAM,GAAGC,MAAM,CAACC,MAAP,CAAc/B,eAAe,CAACC,OAAD,EAAUC,GAAV,CAA7B,CAAf,CAAA;AACA,IAAA,OAAO,IAAK8B,CAAAA,OAAL,CAAc,CAAA,gBAAA,EAAkB5J,IAAK,CAAA,CAArC,EAAwC,MAC7CyJ,MAAM,CAACQ,QAAP,CACGC,aADH,CACiB;AAAElK,MAAAA,IAAI,EAAEA,IAAR;AAAcmK,MAAAA,KAAK,EAAE,SAArB;AAAgCC,MAAAA,UAAU,EAAE,CAAA;AAA5C,KADjB,CAAA,CAEGC,IAFH,CAEQtB,IAAI,IAAI,IAAKuB,CAAAA,kBAAL,CAAwBvB,IAAxB,CAFhB,CADK,CAAP,CAAA;AAKD,GAAA;;AAEDa,EAAAA,OAAO,CAAC/I,GAAD,EAAM0J,OAAN,EAAe;AACpB,IAAA,IAAI,CAAC,IAAA,CAAKnB,KAAL,CAAWvH,GAAX,CAAehB,GAAf,CAAD,IAAwB,OAAOoH,MAAP,IAAiB,WAA7C,EAA0D;AACxD,MAAIuC,IAAAA,OAAO,GAAGD,OAAO,EAArB,CAAA;AACA,MAAA,IAAA,CAAKnB,KAAL,CAAWF,GAAX,CAAerI,GAAf,EAAoB2J,OAApB,CAAA,CAAA;AACAA,MAAAA,OAAO,CAACC,KAAR,CAAc,MAAM;AAClB,QAAA,IAAA,CAAKrB,KAAL,CAAWJ,MAAX,CAAkBnI,GAAlB,CAAA,CAAA;AACD,OAFD,CAAA,CAAA;AAGD,KAAA;;AACD,IAAA,OAAO,KAAKuI,KAAL,CAAWvH,GAAX,CAAehB,GAAf,CAAP,CAAA;AACD,GAAA;;AAEDyJ,EAAAA,kBAAkB,CAACvB,IAAD,EAAO;AACvB,IAAA,IAAIvI,EAAE,GAAG,IAAA,CAAKkK,aAAL,CAAmB3B,IAAnB,CAAT,CAAA;AACA,IAAA,IAAA,CAAKM,cAAL,CAAoB7I,EAApB,CAA0BuI,GAAAA,IAAI,CAAClI,GAA/B,CAAA;AACA,IAAO,OAAA,EACL,GAAGkI,IADE;AAELvI,MAAAA,EAFK;AAGLmK,MAAAA,QAAQ,EAAE5B,IAAI,CAAC4B,QAAL,GACN5B,IAAI,CAAC4B,QAAL,CAAczH,GAAd,CAAkB0H,CAAC,IAAI,IAAKN,CAAAA,kBAAL,CAAwBM,CAAxB,CAAvB,CADM,GAEN,IAAA;AALC,KAAP,CAAA;AAOD,GAAA;;AAEDF,EAAAA,aAAa,CAAC3B,IAAD,EAAO;AAClB,IAAIA,IAAAA,IAAI,CAAClI,GAAT,EAAc;AACZ,MAAIgK,IAAAA,KAAK,GAAG9B,IAAI,CAAClI,GAAL,CAASiK,KAAT,CAAe,GAAf,CAAZ,CAAA;AACA,MAAA,OAAOD,KAAK,CAACA,KAAK,CAACtG,MAAN,GAAe,CAAhB,CAAZ,CAAA;AACD,KAAA;;AACD,IAAA,OAAO,EAAP,CAAA;AACD,GAAA;;AAEDwG,EAAAA,KAAK,CAACC,GAAD,EAAMC,IAAI,GAAG,EAAb,EAAiB;AACpB,IAAO,OAAA,IAAA,CAAKrB,OAAL,CAAc,CAAA,QAAA,EAAUoB,GAAI,CAAGnB,CAAAA,EAAAA,IAAI,CAACC,SAAL,CAAemB,IAAf,CAAqB,CAAA,CAApD,EAAuD,MAC5DF,KAAK,CAACC,GAAD,EAAMC,IAAN,CADA,CAAP,CAAA;AAGD,GAAA;;AAxDgB,CAAA;;AA2DZ,MAAMC,YAAY,GAAG,IAAI/B,YAAJ,EAArB;;AChNA,MAAMgC,GAAG,GAAG,MAAM;AACvB,EAAA,IAAI,OAAOlD,MAAP,IAAiB,WAArB,EAAkC;AAChC,IAAOmD,OAAAA,IAAI,CAACD,GAAL,EAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAOlD,MAAM,CAACoD,WAAP,CAAmBF,GAAnB,EAAP,CAAA;AACD,CALM;;ACAP;AAUO,SAASG,qBAAT,CAA+BC,CAA/B,EAAkD;AACvD,EAAA,MAAMC,YAAY,GAAG,CACnB,GADmB,EAEnB,GAFmB,EAGnB,GAHmB,EAInB,GAJmB,EAKnB,GALmB,EAMnB,GANmB,EAOnB,GAPmB,EAQnB,GARmB,EASnB,GATmB,EAUnB,GAVmB,EAWnB,GAXmB,EAYnB,GAZmB,EAanB,GAbmB,EAcnB,GAdmB,EAenB,IAfmB,EAgBnB,GAhBmB,CAArB,CAAA;AAmBA,EAAMC,MAAAA,YAAY,GAAG,IAAI5G,MAAJ,CACnB2G,YAAY,CAACtI,GAAb,CAAiBwI,CAAC,IAAI,IAAOA,GAAAA,CAA7B,EAAgCtJ,IAAhC,CAAqC,GAArC,CADmB,EAEnB,GAFmB,CAArB,CAAA;AAIAmJ,EAAAA,CAAC,GAAGA,CAAC,CAACI,OAAF,CAAUF,YAAV,EAAwB,EAAxB,CAAJ,CAxBuD;;AA2BvD,EAAA,OAAOF,CAAP,CAAA;AACD,CAAA;AAEM,MAAMK,WAAW,GAAG,OACzBrC,KADyB,EAEzBC,SAAS,GAAG,CAFa,EAGzBxB,SAHyB,EAIzBF,GAJyB,KAKe;AACxC,EAAA,IAAI,CAACyB,KAAL,EAAY,OAAO,IAAP,CAAA;AAEZ,EAAIsC,IAAAA,QAAQ,GAAG,CAAf,CAAA;AAEA,EAAMC,MAAAA,KAAK,GAAGX,GAAG,EAAjB,CAAA;AACA,EAAA,MAAMY,OAAO,GAAI,MAAMb,YAAY,CAAC5B,MAAb,CACrBC,KADqB,EAErBC,SAFqB,EAGrBxB,SAHqB,EAIrBF,GAJqB,CAAvB,CAAA;AAMA,EAAMkE,MAAAA,GAAG,GAAGb,GAAG,EAAf,CAAA;AAEAU,EAAAA,QAAQ,GAAGG,GAAG,GAAGF,KAAjB,CAAA;AAEA,EAAO,OAAA;AAAED,IAAAA,QAAF;AAAYE,IAAAA,OAAAA;AAAZ,GAAP,CAAA;AACD,CAtBM,CAAA;AAwBA,MAAME,kBAAkB,GAAI/J,MAAD,IAGnB;AACb,EAAM,MAAA;AAAE6J,IAAAA,OAAAA;AAAF,GAAc7J,GAAAA,MAAM,IAAI,EAA9B,CAAA;;AACA,EAAA,IAAI6J,OAAJ,EAAa;AACX,IAAI/J,IAAAA,KAAK,CAACC,OAAN,CAAc8J,OAAd,CAAJ,EAA4B,OAAOA,OAAP,CAAA;AAC5B,IAAA,IAAI/J,KAAK,CAACC,OAAN,CAAc8J,OAAO,CAAC1H,KAAtB,CAAJ,EAAkC,OAAO0H,OAAO,CAAC1H,KAAf,CAAA;AAClC,IAAA,OAAO0H,OAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,EAAP,CAAA;AACD,CAXM,CAAA;AAaA,MAAMG,oBAAoB,GAAIC,UAAD,IAAkC;AACpE,EAAA,MAAMC,OAAO,GAAG,IAAIvH,MAAJ,CACd,2EADc,CAAhB,CAAA;AAIA,EAAO,OAAA,CAACsH,UAAU,CAACE,KAAX,CAAiBD,OAAjB,CAAA,IAA6B,EAA9B,EAAkClJ,GAAlC,CAAsCmJ,KAAK,IAChDA,KAAK,CAACV,OAAN,CAAc,IAAd,EAAoB,EAApB,CADK,CAAP,CAAA;AAGD,CARM,CAAA;AAUA,MAAMW,QAAQ,GAAG,CACtBC,KADsB,EAEtB3M,MAFsB,KAGX;AACX,EAAA,MAAM4M,EAAE,GAAG1C,SAAS,CAAClK,MAAD,CAApB,CAAA;AACA,EAAMI,MAAAA,IAAI,GAAGwM,EAAE,GAAI,GAAED,KAAM,CAAA,EAAEA,KAAK,CAACE,QAAN,CAAe,GAAf,CAAA,GAAsB,GAAtB,GAA4B,GAAI,GAAED,EAAG,CAAA,CAAnD,GAAuDD,KAAtE,CAAA;AACA,EAAA,OAAOvM,IAAP,CAAA;AACD,CAPM,CAAA;AASA,MAAM0M,aAAa,GAAG,OAC3BC,SAD2B,EAE3BxI,OAF2B,KAGZ;AACf,EAAA,MAAMyI,MAAM,GAAGD,SAAS,CAAC3B,GAAV,IAAiB,EAAhC,CAAA;AACA,EAAA,IAAIA,GAAG,GAAGsB,QAAQ,CAACM,MAAD,EAASzI,OAAT,CAAlB,CAAA;AACA,EAAI,IAAA,CAAC6G,GAAL,EAAU,MAAM,IAAI6B,KAAJ,CAAU,kCAAV,CAAN,CAAA;AACV,EAAA,IAAI,OAAO5E,MAAP,IAAiB,WAAjB,IAAgC+C,GAAG,CAAC8B,UAAJ,CAAe,GAAf,CAApC,EACE9B,GAAG,GAAI,CAAA,qBAAA,EAAuBA,GAAI,CAAlC,CAAA,CAAA;AAEF,EAAM+B,MAAAA,QAAQ,GAAG,MAAM7B,YAAY,CAACH,KAAb,CAAmBC,GAAnB,CAAvB,CAAA;AACA,EAAA,OAAQ,MAAM+B,QAAQ,CAACC,KAAT,EAAA,CAAiBC,IAAjB,EAAd,CAAA;AACD,CAZM,CAAA;AAcA,MAAMC,qBAAqB,GAAIC,GAAD,IAAc;AACjDrK,EAAAA,MAAM,CAACE,OAAP,CAAemK,GAAf,CAAoBC,CAAAA,OAApB,CACE,CAAC,CAACvM,GAAD,EAAMwM,GAAN,CAAD,KACGA,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAtB,IAAkCH,qBAAqB,CAACG,GAAD,CAAxD,IACC,CAAC,OAAOA,GAAP,KAAe,WAAf,IAA8BA,GAAG,KAAK,IAAtC,IAA8CA,GAAG,KAAK,EAAvD,KACC,OAAOF,GAAG,CAACtM,GAAD,CAJhB,CAAA,CAAA;AAMA,EAAA,OAAOsM,GAAP,CAAA;AACD,CARM,CAAA;MAUMG,OAAO,GAAG,CAACH,GAAD,EAAqBI,SAAS,GAAG,GAAjC,KACrB,OAAOJ,GAAP,KAAe,WAAf,IAA8BA,GAAG,KAAK,IAAtC,GACIA,GADJ,GAEInL,KAAK,CAACC,OAAN,CAAckL,GAAd,CACCA,GAAAA,GADD,GAEAA,GAAG,CAACrC,KAAJ,CAAUyC,SAAV;;AAGC,MAAMC,kBAAkB,GAAG,CAACC,EAAD,EAAYC,EAAZ,KAA0B;AAC1D,EAAMC,MAAAA,QAAQ,GAAG,EAAjB,CAAA;;AACA,EAAA,KAAK,MAAMC,EAAX,IAAiBH,EAAjB,EAAqB;AACnB,IAAA,MAAMI,CAAC,GAAGD,EAAE,GAAG,OAAOA,EAAtB,CAAA;AACAD,IAAAA,QAAQ,CAACE,CAAD,CAAR,GAAc,CAAd,CAAA;AACD,GAAA;;AAED,EAAA,KAAK,MAAMD,EAAX,IAAiBF,EAAjB,EAAqB;AACnB,IAAA,MAAMG,CAAC,GAAGD,EAAE,GAAG,OAAOA,EAAtB,CAAA;;AACA,IAAA,IAAI,CAACD,QAAQ,CAACE,CAAD,CAAb,EAAkB;AAChB,MAAA,OAAO,KAAP,CAAA;AACD,KAAA;;AACDF,IAAAA,QAAQ,CAACE,CAAD,CAAR,GAAc,CAAd,CAAA;AACD,GAAA;;AAED,EAAA,KAAK,MAAMA,CAAX,IAAgBF,QAAhB,EAA0B;AACxB,IAAA,IAAIA,QAAQ,CAACE,CAAD,CAAR,KAAgB,CAApB,EAAuB;AACrB,MAAA,OAAO,KAAP,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAO,IAAP,CAAA;AACD,CAtBM;;AChIA,MAAMC,WAAW,GAAG;AACzBC,EAAAA,KAAK,EAAE,OADkB;AAEzBC,EAAAA,KAAK,EAAE,OAFkB;AAGzBC,EAAAA,OAAO,EAAE,SAAA;AAHgB,CAApB,CAAA;AAMA,MAAMC,qBAAqB,GAAG;AACnCC,EAAAA,WAAW,EAAE,aADsB;AAEnCC,EAAAA,KAAK,EAAE,OAAA;AAF4B,CAA9B,CAAA;AAKP,MAAMC,GAAG,GAAG;AACVC,EAAAA,OAAO,EAAE,aADC;AAEVC,EAAAA,aAAa,EAAE,mBAFL;AAGVC,EAAAA,UAAU,EAAE,gBAHF;AAIVC,EAAAA,QAAQ,EAAE,yBAJA;AAKVjO,EAAAA,EAAE,EAAE,QALM;AAMVkO,EAAAA,eAAe,EAAE,8BANP;AAOVC,EAAAA,QAAQ,EAAE,cAPA;AAQV3D,EAAAA,GAAG,EAAE,SARK;AASV4D,EAAAA,aAAa,EAAE,mBAAA;AATL,CAAZ,CAAA;AAYO,MAAMC,MAAM,GAAG;AACpBC,EAAAA,gBAAgB,EAAE,kBADE;AAEpBC,EAAAA,UAAU,EAAE,YAFQ;AAGpBC,EAAAA,QAAQ,EAAE,UAHU;AAIpBC,EAAAA,aAAa,EAAE,eAJK;AAKpBZ,EAAAA,GALoB;AAMpBE,EAAAA,aAAa,EAAE,mBANK;AAOpBW,EAAAA,QAAQ,EAAE,GAAA;AAPU,CAAf;;ACVA,MAAMC,eAAe,GAAG,CAC7Bf,KAD6B,EAE7B7F,KAF6B,EAG7B6G,QAAwB,GAAG,SAHE,EAI7BC,MAJ6B,KAKX;AAClB,EAAA,IAAI,CAACjB,KAAD,IAAU,CAAC7F,KAAX,IAAqBvG,KAAK,CAACC,OAAN,CAAcsG,KAAd,CAAA,IAAwBA,KAAK,CAAChE,MAAN,KAAiB,CAAlE,EACE,OAAO,EAAP,CAAA;AACF,EAAA,IAAIvC,KAAK,CAACC,OAAN,CAAcmM,KAAd,CAAJ;AAEE;AACA,IAAO,OAAA,CACLkB,EAAE,CAACC,EAAH,CACE,GAAGnB,KAAK,CACLlL,GADA,CACIsM,OAAO,IAAIL,eAAe,CAACK,OAAD,EAAUjH,KAAV,EAAiB6G,QAAjB,EAA2BC,MAA3B,CAD9B,CAEAI,CAAAA,IAFA,EADL,CADK,CAAP,CAAA;AAQF,EAAIL,IAAAA,QAAQ,KAAK,SAAjB,EAA4B,OAAOM,OAAO,CAACtB,KAAD,EAAQ7F,KAAR,CAAd,CAAA;AAC5B,EAAIvG,IAAAA,KAAK,CAACC,OAAN,CAAcsG,KAAd,CAAJ,EAA0B,OAAOoH,WAAW,CAACvB,KAAD,EAAQ7F,KAAR,EAAe6G,QAAf,CAAlB,CAA1B,KAEE,OAAO,CAACC,MAAD,GACHM,WAAW,CAACvB,KAAD,EAAQ7F,KAAR,EAAe6G,QAAf,CADR,GAEH,CAACO,WAAW,CAACvB,KAAD,EAAQ7F,KAAR,EAAe6G,QAAf,CAAX,CAAoC,CAApC,EAAuCC,MAAvC,CAA8CA,MAA9C,CAAD,CAFJ,CAAA;AAGH,CAzBM,CAAA;AA2BA,MAAMO,uBAAuB,GAAG,CACrCC,cADqC,EAErCC,gBAFqC,EAGrCC,UAHqC,KAIlC;AACH,EAAMC,MAAAA,WAAiC,GAAG,EAA1C,CAAA;AACA,EAAI,IAAA,CAACH,cAAD,IAAmB,CAACC,gBAApB,IAAwC,CAACC,UAA7C,EAAyD,OAAOC,WAAP,CAAA;;AAEzD,EAAA,IAAIH,cAAc,IAAIA,cAAc,CAACtL,MAAf,GAAwB,CAA9C,EAAiD;AAC/CyL,IAAAA,WAAW,CAACC,IAAZ,CACE,GAAGC,oBAAoB,CAACL,cAAD,EAAiB/B,WAAW,CAACE,KAA7B,CADzB,CAAA,CAAA;AAGD,GAAA;;AAED,EAAA,IAAI8B,gBAAgB,IAAIA,gBAAgB,CAACvL,MAAjB,GAA0B,CAAlD,EAAqD;AACnDyL,IAAAA,WAAW,CAACC,IAAZ,CACE,GAAGC,oBAAoB,CAACJ,gBAAD,EAAmBhC,WAAW,CAACG,OAA/B,CADzB,CAAA,CAAA;AAGD,GAAA;;AAED,EAAA,IAAI8B,UAAU,IAAIA,UAAU,CAACxL,MAAX,GAAoB,CAAtC,EAAyC;AACvCyL,IAAAA,WAAW,CAACC,IAAZ,CAAiB,GAAGC,oBAAoB,CAACH,UAAD,EAAajC,WAAW,CAACC,KAAzB,CAAxC,CAAA,CAAA;AACD,GAAA;;AAED,EAAA,IAAIiC,WAAW,CAACzL,MAAZ,GAAqB,CAAzB,EAA4B,OAAO,CAAC+K,EAAE,CAACC,EAAH,CAAM,GAAGS,WAAT,CAAD,CAAP,CAAA;AAE5B,EAAA,OAAOA,WAAP,CAAA;AACD,EA3BM;AA6BA,MAAMG,iBAAiB,GAAG,CAC/BhM,OAD+B,EAE/BiM,UAAU,GAAG,KAFkB,KAG5B;AACH,EAAA,IAAI,CAACjM,OAAL,EAAc,OAAO,EAAP,CAAA;AACd,EAAM6L,MAAAA,WAA0B,GAAG,EAAnC,CAAA;AACA7L,EAAAA,OAAO,CAACjB,GAAR,CAAYmN,cAAc,IAAI;AAC5B,IAAA,IAAIA,cAAc,CAACC,aAAf,KAAiC,KAArC;AAEE;AACAD,MAAAA,cAAc,CAACE,MAAf,CAAsBnD,OAAtB,CAA8B7E,KAAK,IACjCyH,WAAW,CAACC,IAAZ,CACE,GAAGd,eAAe,CAChBkB,cAAc,CAACxP,GADC,EAEhB0H,KAFgB,EAGhB8H,cAAc,CAACG,aAAf,IAAgC,SAHhB,CADpB,CADF,CAHF,CAAA,KAYK,IAAIH,cAAc,CAACC,aAAf,KAAiC,KAArC,EAA4C;AAC/C,MAAA,MAAMG,gBAAgB,GAAGtB,eAAe,CACtCkB,cAAc,CAACxP,GADuB,EAEtCwP,cAAc,CAACE,MAFuB,EAGtCF,cAAc,CAACG,aAAf,IAAgC,IAHM,CAAxC,CAAA;AAKAC,MAAAA,gBAAgB,CAACrD,OAAjB,CAAyBsD,IAAI,IAAI;AAC/BV,QAAAA,WAAW,CAACC,IAAZ,CAAiBX,EAAE,CAACqB,GAAH,CAAOD,IAAP,CAAjB,CAAA,CAAA;AACD,OAFD,CAAA,CAAA;AAGD,KATI;AAWL;AAXK,SAaHV,WAAW,CAACC,IAAZ,CACE,GAAGd,eAAe,CAChBkB,cAAc,CAACxP,GADC,EAEhBwP,cAAc,CAACE,MAFC,EAGhBF,cAAc,CAACG,aAAf,IAAgC,IAHhB,CADpB,CAAA,CAAA;AAQF,IAAIJ,IAAAA,UAAJ,EACEJ,WAAW,CAACC,IAAZ,CACEX,EAAE,CAACqB,GAAH,CAAOxB,eAAe,CAACkB,cAAc,CAACxP,GAAhB,EAAqB,IAArB,EAA2B,QAA3B,CAAf,CAAoD,CAApD,CAAP,CADF,CAAA,CAAA;AAGH,GAtCD,CAAA,CAAA;AAwCA,EAAA,OAAOmP,WAAP,CAAA;AACD,EA/CM;AAiDA,MAAME,oBAAoB,GAAG,CAClCL,cADkC,EAElCrB,UAAU,GAAGV,WAAW,CAACE,KAFS,KAG/B;AACH,EAAA,IAAI6B,cAAc,IAAIA,cAAc,CAACtL,MAAf,GAAwB,CAA9C,EAAiD;AAC/C;AACJ;AACA;AACA;AACI,IAAA,MAAMqM,kBAAkB,GAAGf,cAAc,CAACjP,MAAf,CAAsB8K,CAAC,IAAI,CAACA,CAAC,CAACoB,UAAF,CAAa,GAAb,CAA5B,CAA3B,CAAA;AACA,IAAM+D,MAAAA,iBAAiB,GAAGhB,cAAc,CACrCjP,MADuB,CAChB8K,CAAC,IAAIA,CAAC,CAACoB,UAAF,CAAa,GAAb,CADW,CAAA,CAEvB5J,GAFuB,CAEnB1C,EAAE,IAAIA,EAAE,CAACsQ,SAAH,CAAa,CAAb,CAFa,CAA1B,CAAA;AAIA,IAAA,MAAMC,OAAO,GAAGzB,EAAE,CAAC0B,GAAH,EAAhB,CAAA;AAEA,IAAA,MAAMC,cAAc,GAAG9B,eAAe,CACpCN,MAAM,CAACR,GAAP,CAAWG,UADyB,EAEpCA,UAFoC,CAAf,CAGrB,CAHqB,CAAvB,CAAA;AAKA,IAAA,MAAM0C,QAAQ,GAAG/B,eAAe,CAC9BN,MAAM,CAACR,GAAP,CAAWE,aADmB,EAE9BqC,kBAF8B,CAAf,CAGf,CAHe,CAAjB,CAAA;AAKA,IAAA,MAAMO,OAAO,GAAG7B,EAAE,CAACqB,GAAH,CACdxB,eAAe,CAACN,MAAM,CAACR,GAAP,CAAWE,aAAZ,EAA2BsC,iBAA3B,CAAf,CAA6D,CAA7D,CADc,CAAhB,CAAA;AAIAE,IAAAA,OAAO,CAACK,GAAR,CAAYH,cAAZ,CAAA,CAAA;AACA,IAAA,IAAIL,kBAAkB,CAACrM,MAAnB,GAA4B,CAA5B,IAAiC2M,QAArC,EAA+CH,OAAO,CAACK,GAAR,CAAYF,QAAZ,CAAA,CAAA;AAC/C,IAAA,IAAIL,iBAAiB,CAACtM,MAAlB,GAA2B,CAA3B,IAAgC4M,OAApC,EAA6CJ,OAAO,CAACK,GAAR,CAAYD,OAAZ,CAAA,CAAA;AAE7C,IAAO,OAAA,CAACJ,OAAD,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,EAAP,CAAA;AACD,CArCM,CAAA;AAuCA,MAAMM,yBAAyB,GAAG,CAAC;AACxC9C,EAAAA,aADwC;AAExCiB,EAAAA,OAFwC;AAGxC8B,EAAAA,UAAU,GAAG,IAAA;AAH2B,CAAA,GAQtC,EARqC,KAQ9B;AACT,EAAMtB,MAAAA,WAAW,GAAG,EAApB,CAAA;;AAEA,EAAA,IAAIzB,aAAJ,EAAmB;AACjByB,IAAAA,WAAW,CAACC,IAAZ,CACE,GAAGL,uBAAuB,CACxB5N,KAAK,CAACC,OAAN,CAAcsM,aAAd,CAA+BA,GAAAA,aAA/B,GAA+C,CAACA,aAAD,CADvB,CAD5B,CAAA,CAAA;AAKD,GAAA;;AAED,EAAIiB,IAAAA,OAAO,IAAI8B,UAAf,EAA2B;AACzBtB,IAAAA,WAAW,CAACC,IAAZ,CAAiB,GAAGd,eAAe,CAACK,OAAD,EAAU8B,UAAV,CAAnC,CAAA,CAAA;AACD,GAAA;;AAED,EAAA,OAAOtB,WAAP,CAAA;AACD,CAxBM,CAAA;AA0BA,MAAMuB,mBAAmB,GAAIC,SAAD,IACjCrC,eAAe,CAACN,MAAM,CAACR,GAAP,CAAWM,QAAZ,EAAsB6C,SAAtB,CADV,CAAA;AAGA,MAAMC,0BAA0B,GAAG,CACxC3B,gBADwC,EAExC4B,qBAFwC,KAGrC;AACH,EAAA,MAAM1B,WAAW,GAAG,EAApB,CADG;;AAGH,EAAIhO,IAAAA,KAAK,CAACC,OAAN,CAAcyP,qBAAd,CAAJ,EACE1B,WAAW,CAACC,IAAZ,CACE,GAAGyB,qBAAqB,CAACxO,GAAtB,CAA0ByO,oBAAoB,IAC/CrC,EAAE,CAACC,EAAH,CACED,EAAE,CAAC0B,GAAH,CACE1B,EAAE,CAACsC,MAAH,CAAUD,oBAAV,EAAgC,IAAhC,CADF,EAEErC,EAAE,CAACuC,OAAH,CAAWF,oBAAX,EAAiC,IAAjC,CAFF,CADF,EAKErC,EAAE,CAACsC,MAAH,CAAUD,oBAAV,EAAgC,KAAhC,CALF,CADC,CADL,CAAA,CAJC;AAiBH;;AACA,EAAA,IAAI3P,KAAK,CAACC,OAAN,CAAc6N,gBAAd,CAAA,IAAmCA,gBAAgB,CAACvL,MAAjB,GAA0B,CAAjE,EACEyL,WAAW,CAACC,IAAZ,CACEX,EAAE,CAACC,EAAH,CACED,EAAE,CAAC0B,GAAH,CACE1B,EAAE,CAACsC,MAAH,CAAU/C,MAAM,CAACR,GAAP,CAAWK,eAArB,EAAsC,IAAtC,CADF,EAEEY,EAAE,CAACuC,OAAH,CAAWhD,MAAM,CAACR,GAAP,CAAWK,eAAtB,EAAuC,IAAvC,CAFF,CADF,EAKEY,EAAE,CAACsC,MAAH,CAAU/C,MAAM,CAACR,GAAP,CAAWK,eAArB,EAAsC,KAAtC,CALF,CADF,CAAA,CAAA;AASF,EAAA,OAAOsB,WAAP,CAAA;AACD,CAhCM,CAAA;AAkCM8B,MAAAA,kBAAkB,GAAIlD,aAAD,IAAkC;AAClE,EAAA,OAAO,CAACU,EAAE,CAACuC,OAAH,CAAWhD,MAAM,CAACR,GAAP,CAAWO,aAAtB,EAAqCA,aAArC,CAAD,CAAP,CAAA;AACD,EAFM;AAIA,MAAMmD,oBAAoB,GAAIC,UAAD,IAA0B;AAC5D,EAAIhQ,IAAAA,KAAK,CAACC,OAAN,CAAc+P,UAAd,CAA6BA,IAAAA,UAAU,CAACzN,MAAX,GAAoB,CAArD,EAAwD;AACtD,IAAO4K,OAAAA,eAAe,CAACN,MAAM,CAACR,GAAP,CAAW7N,EAAZ,EAAgBwR,UAAhB,CAAtB,CAAA;AACD,GAFD,MAEO,OAAO,EAAP,CAAA;AACR,CAJM,CAAA;AAMA,MAAMC,oBAAoB,GAAIxS,UAAD,IAA0B;AAC5D,EAAIuC,IAAAA,KAAK,CAACC,OAAN,CAAcxC,UAAd,CAA6BA,IAAAA,UAAU,CAAC8E,MAAX,GAAoB,CAArD,EAAwD;AACtD,IAAA,MAAM,CAACmM,IAAD,CAASvB,GAAAA,eAAe,CAACN,MAAM,CAACR,GAAP,CAAW7N,EAAZ,EAAgBf,UAAhB,CAA9B,CAAA;AACA,IAAA,OAAO,CAAC6P,EAAE,CAACqB,GAAH,CAAOD,IAAP,CAAD,CAAP,CAAA;AACD,GAHD,MAGO,OAAO,EAAP,CAAA;AACR,CALM,CAAA;AAOMwB,MAAAA,iBAAiB,GAAIlR,OAAD,IAAuB;AACtD,EAAA,IAAImR,UAAJ,CAAA;;AACA,EAAA,IAAInR,OAAO,IAAIA,OAAO,CAACuD,MAAR,GAAiB,CAAhC,EAAmC;AACjC4N,IAAAA,UAAU,GAAGC,OAAb,CAAA;;AACA,IAAA,KAAK,MAAMC,EAAX,IAAiBrR,OAAjB,EAA0B;AAAA,MAAA,IAAA,WAAA,EAAA,YAAA,CAAA;;AACxBmR,MAAAA,UAAU,GAAGE,EAAE,CAACvF,UAAH,CAAc,GAAd,CACTqF,GAAAA,CAAAA,WAAAA,GAAAA,UADS,MACT,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAYG,IAAZ,CAAiBD,EAAE,CAACvB,SAAH,CAAa,CAAb,CAAjB,CADS,GAAA,CAAA,YAAA,GAETqB,UAFS,MAAA,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAET,YAAYI,CAAAA,GAAZ,CAAgBF,EAAhB,CAFJ,CAAA;AAGD,KAAA;AACF,GAAA;;AACD,EAAA,OAAOF,UAAP,CAAA;AACD,EAXM;;AAaP,MAAMxC,WAAW,GAAG,CAClBvB,KADkB,EAElB7F,KAFkB,EAGlB6G,QAAwB,GAAG,SAHT,KAIf;AACH,EAAA,IAAI7G,KAAK,CAAChE,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP,CAAA;;AACxB,EAAA,IAAIvC,KAAK,CAACC,OAAN,CAAcsG,KAAd,CAAJ,EAA0B;AACxB,IAAA,IAAI6G,QAAQ,KAAK,SAAb,IAA0BA,QAAQ,KAAK,IAA3C,EACE,OAAO,CAACE,EAAE,CAACkD,EAAH,CAAMpE,KAAN,EAAa,GAAG7F,KAAhB,CAAD,CAAP,CAAA;AACF,IAAA,MAAMyH,WAAW,GAAGzH,KAAK,CAACrF,GAAN,CAAUuP,UAAU,IAAI;AAAA,MAAA,IAAA,QAAA,EAAA,eAAA,CAAA;;AAC1C,MAAA,QAAQrD,QAAR;AACE,QAAA,KAAK,SAAL;AACE,UAAOM,OAAAA,CAAAA,QAAAA,GAAAA,OAAO,CAACtB,KAAD,EAAQqE,UAAR,CAAd,MAAA,IAAA,IAAA,QAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAO,QAA6B,CAAA,CAA7B,CAAP,CAAA;;AACF,QAAA,KAAK,gBAAL;AACE,UAAOC,OAAAA,CAAAA,eAAAA,GAAAA,cAAc,CAACtE,KAAD,EAAQqE,UAAR,CAArB,MAAA,IAAA,IAAA,eAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAO,eAAoC,CAAA,CAApC,CAAP,CAAA;;AACF,QAAA,KAAK,QAAL;AACE,UAAA,OAAOnD,EAAE,CAACsC,MAAH,CAAUxD,KAAV,EAAiBqE,UAAjB,CAAP,CAAA;;AACF,QAAA,KAAK,UAAL;AACE;AACA,UAAA,OAAOnD,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoBqE,UAApB,EAAgC,KAAhC,EAAuCpQ,SAAvC,CAAP,CAAA;;AACF,QAAA;AACE,UAAOiN,OAAAA,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoBqE,UAApB,CAAP,CAAA;AAXJ,OAAA;AAaD,KAdmB,CAApB,CAAA;AAeA,IAAO,OAAA,CAAAzC,WAAW,KAAA,IAAX,IAAAA,WAAW,WAAX,GAAAA,KAAAA,CAAAA,GAAAA,WAAW,CAAEzL,MAAb,IAAsB,CAAtB,GACH,CAAC+K,EAAE,CAACC,EAAH,CAAM,GAAGS,WAAT,CAAD,CADG,GAEHA,WAAW,IAAI,EAFnB,CAAA;AAGD,GAAA;;AACD,EAAA,QAAQZ,QAAR;AACE,IAAA,KAAK,SAAL;AACE,MAAA,OAAOM,OAAO,CAACtB,KAAD,EAAQ7F,KAAR,CAAd,CAAA;;AACF,IAAA,KAAK,gBAAL;AACE,MAAA,OAAOmK,cAAc,CAACtE,KAAD,EAAQ7F,KAAR,CAArB,CAAA;;AACF,IAAA,KAAK,UAAL;AACE;AACA,MAAA,OAAO,CAAC+G,EAAE,CAACqD,QAAH,CAAYvE,KAAZ,EAAmB7F,KAAnB,EAA0B,KAA1B,EAAiClG,SAAjC,CAAD,CAAP,CAAA;;AACF,IAAA;AACE,MAAO,OAAA,CAACiN,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB7F,KAApB,CAAD,CAAP,CAAA;AATJ,GAAA;AAWD,CAvCD,CAAA;;AAyCA,MAAMmH,OAAO,GAAG,CAACtB,KAAD,EAAgB7F,KAAhB,KAA6C;AAC3D,EAAMqK,MAAAA,MAAM,GAAIC,YAAD,IAA0B;AACvC,IAAA,MAAMC,MAAM,GAAGD,YAAY,CAAC/H,KAAb,CAAmB,IAAnB,CAAf,CAAA;;AACA,IAAA,IAAIgI,MAAM,CAACvO,MAAP,GAAgB,CAApB,EAAuB;AACrB,MAAA,MAAM,CAACwO,OAAD,EAAUC,OAAV,IAAqBF,MAA3B,CAAA;AACA,MAAOxD,OAAAA,EAAE,CAACI,OAAH,CAAWtB,KAAX,EAAkB2E,OAAlB,EAA2BC,OAA3B,CAAP,CAAA;AACD,KAHD,MAGO;AACL;AACAC,MAAAA,OAAO,CAACC,GAAR,CACG,CACCJ,mHAAAA,EAAAA,MAAM,CAACvO,MAAP,IAAiBuO,MAAM,CAAC,CAAD,CACxB,CAHH,qBAAA,CAAA,CAAA,CAAA;AAKA,MAAA,OAAO,KAAP,CAAA;AACD,KAAA;AACF,GAdD,CAAA;;AAgBA,EAAA,IAAIvK,KAAK,CAAChE,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP,CAAA;AACxB,EAAA,IAAIvC,KAAK,CAACC,OAAN,CAAcsG,KAAd,CAAJ,EACE,OAAO,CACL+G,EAAE,CAACC,EAAH,CAAM,GAAIhH,KAAK,CAACrF,GAAN,CAAU0P,MAAV,CAAA,CAAkBhS,MAAlB,CAAyBuS,EAAE,IAAIA,EAAE,KAAK,KAAtC,CAAV,CADK,CAAP,CAAA;AAIF,EAAA,MAAMC,EAAE,GAAGR,MAAM,CAACrK,KAAD,CAAjB,CAAA;AACA,EAAA,OAAO6K,EAAE,GAAG,CAACA,EAAD,CAAH,GAAU,EAAnB,CAAA;AACD,CAzBD,CAAA;;AA2BA,MAAMV,cAAc,GAAG,CAACtE,KAAD,EAAgB7F,KAAhB,KAA6C;AAClE,EAAMqK,MAAAA,MAAM,GAAIS,aAAD,IAA2B;AACxC,IAAA,MAAMP,MAAM,GAAGO,aAAa,CAACvI,KAAd,CAAoB,GAApB,CAAf,CAAA;;AACA,IAAA,IAAIgI,MAAM,CAACvO,MAAP,GAAgB,CAApB,EAAuB;AACrB,MAAA,MAAM,CAAC+O,GAAD,EAAMC,GAAN,IAAaT,MAAnB,CAAA;AACA,MAAA,OAAOxD,EAAE,CAACoD,cAAH,CACLtE,KADK,EAELoF,MAAM,CAACF,GAAD,CAFD,EAGLE,MAAM,CAACD,GAAD,CAHD,EAIL,CAAAT,MAAM,KAAN,IAAA,IAAAA,MAAM,KAAA,KAAA,CAAN,GAAAA,KAAAA,CAAAA,GAAAA,MAAM,CAAG,CAAH,CAAN,KAAe,MAJV,CAAP,CAAA;AAMD,KARD,MAQO;AACL;AACAG,MAAAA,OAAO,CAACC,GAAR,CACG,CACCJ,2IAAAA,EAAAA,MAAM,CAACvO,MAAP,IAAiBuO,MAAM,CAAC,CAAD,CACxB,CAHH,qBAAA,CAAA,CAAA,CAAA;AAKA,MAAA,OAAO,KAAP,CAAA;AACD,KAAA;AACF,GAnBD,CAAA;;AAqBA,EAAA,IAAIvK,KAAK,CAAChE,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP,CAAA;AACxB,EAAA,IAAIvC,KAAK,CAACC,OAAN,CAAcsG,KAAd,CAAJ,EACE,OAAO,CACL+G,EAAE,CAACC,EAAH,CAAM,GAAIhH,KAAK,CAACrF,GAAN,CAAU0P,MAAV,CAAA,CAAkBhS,MAAlB,CAAyBuS,EAAE,IAAIA,EAAE,KAAK,KAAtC,CAAV,CADK,CAAP,CAAA;AAIF,EAAA,MAAMC,EAAE,GAAGR,MAAM,CAACrK,KAAD,CAAjB,CAAA;AACA,EAAA,OAAO6K,EAAE,GAAG,CAACA,EAAD,CAAH,GAAU,EAAnB,CAAA;AACD,CA9BD,CAAA;AAgCA;AACA;AACA;AACA;AACA;AACA;;;AACaK,MAAAA,sBAAsB,GAAIC,KAAD,IAA+B;AACnE,EAAA,IAAI,CAACA,KAAD,IAAU,CAAC1R,KAAK,CAACC,OAAN,CAAcyR,KAAd,CAAf,EAAqC,OAAO,EAAP,CAD8B;;AAInE,EAAA,OAAOA,KAAK,CAACxQ,GAAN,CAAUyQ,MAAM,IAAI;AACzB,IAAIxB,IAAAA,UAAJ,CADyB;AAGzB;AACA;;AACA,IAAA,IAAI/C,QAAJ,CAAA;AACAtM,IAAAA,MAAM,CAAC8Q,IAAP,CAAYD,MAAZ,CAAA,CAAoBzQ,GAApB,CAAwB,CAACrC,GAAD,EAAcgT,GAAd,KAAsB;AAC5C;AACA,MAAA,IAAIA,GAAG,KAAK,CAAZ,EAAezE,QAAQ,GAAGvO,GAAX,CAAA;AAEf,MAAA,MAAMuN,KAAa,GAAIuF,MAAD,CAAgBvF,KAAtC,CAAA;AACA,MAAM7F,MAAAA,KAAK,GAAIoL,MAAD,CACZ7Q,MAAM,CAAC8Q,IAAP,CAAYD,MAAZ,CAAoB5M,CAAAA,IAApB,CAAyB+M,CAAC,IAAI,CAAC,CAAC,OAAD,EAAU,QAAV,CAAA,CAAoBrH,QAApB,CAA6BqH,CAA7B,CAA/B,CAAmE,IAAA,EADvD,CAAd,CAAA;AAGA,MAAA,MAAMzE,MAAc,GAAIsE,MAAD,CAAgBtE,MAAvC,CAAA;;AAEA,MAAIwE,IAAAA,GAAG,KAAK,CAAZ,EAAe;AACb,QAAA,IAAIzE,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,IAAvC,EAA6C;AAC3C;AACA;AACA,UAAM2E,MAAAA,WAAW,GAAGN,sBAAsB,CACvCE,MAAD,CAAgBvE,QAAhB,CADwC,CAA1C,CAAA;AAGA+C,UAAAA,UAAU,GAAG7C,EAAE,CAACF,QAAD,CAAF,CAAa,GAAG2E,WAAhB,CAAb,CAAA;AACD,SAAA;;AAED,QAAA,IAAI,CAAC,KAAD,CAAA,CAAQtH,QAAR,CAAiB2C,QAAjB,CAAJ,EAAgC;AAC9B;AACAtM,UAAAA,MAAM,CAAC8Q,IAAP,CAAYrL,KAAZ,CAAA,CAAmBrF,GAAnB,CAAuB,CAAC8Q,MAAD,EAASC,MAAT,KAAoB;AACzC,YAAMC,MAAAA,aAAa,GAAGF,MAAtB,CAAA;AAIA,YAAA,MAAMvB,UAAU,GAAGlK,KAAK,CAACyL,MAAD,CAAxB,CAAA;AACA,YAAA,MAAMG,UAAU,GAAG5L,KAAK,CAAC6F,KAAzB,CANyC;AAQzC;;AACA,YAAA,IAAI6F,MAAM,KAAK,CAAf,EACE9B,UAAU,GAAG7C,EAAE,CAACqB,GAAH,CACXyD,gBAAgB,CAACF,aAAD,EAAgBC,UAAhB,EAA4B1B,UAA5B,CADL,CAAb,CAAA;AAGH,WAbD,CAAA,CAAA;AAcD,SAAA;AACF,OArC2C;AAuC5C;;;AACArD,MAAAA,QAAQ,GAAGtM,MAAM,CAAC8Q,IAAP,CAAYD,MAAZ,CAAoB5M,CAAAA,IAApB,CACTsN,SAAS,IAAI,CAAC,CAAC,OAAD,EAAU,QAAV,EAAoB5H,QAApB,CAA6B4H,SAA7B,CADL,CAAX,CAAA;;AAIA,MAAIR,IAAAA,GAAG,KAAK,CAAZ,EAAe;AACb1B,QAAAA,UAAU,GAAGiC,gBAAgB,CAAChF,QAAD,EAAWhB,KAAX,EAAkB7F,KAAlB,CAA7B,CAAA;AAEA,QAAA,IAAI,OAAO8G,MAAP,KAAkB,QAAtB,EAAgC8C,UAAU,GAAGA,UAAU,CAAC9C,MAAX,CAAkBA,MAAlB,CAAb,CAAA;AACjC,OAAA;AACF,KAjDD,CAAA,CAAA;AAkDA,IAAA,OAAO8C,UAAP,CAAA;AACD,GAzDM,CAAP,CAAA;AA0DD,EA9DM;;AAgEP,MAAMiC,gBAAgB,GAAG,CACvBhF,QADuB,EAEvBhB,KAFuB,EAGvB7F,KAHuB,KAKvB6G,QAAQ,KAAK,UAAb,IAA2BA,QAAQ,KAAK,UAAxC,GACIE,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB7F,KAApB,CADJ,GAEI6G,QAAQ,KAAK,IAAb,GACAE,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB,GAAG7F,KAAvB,CADA,GAEA6G,QAAQ,KAAK,QAAb,GACAE,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB7F,KAApB,CADA,GAEA6G,QAAQ,KAAK,SAAb,GACAE,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB7F,KAAK,CAAC,CAAD,CAAzB,EAA8BA,KAAK,CAAC,CAAD,CAAnC,CADA,GAEA6G,QAAQ,KAAK,gBAAb,GACAE,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB7F,KAApB,KAAoBA,IAAAA,IAAAA,KAApB,KAAoBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAE+K,GAA3B,EAAgC/K,KAAhC,KAAgCA,IAAAA,IAAAA,KAAhC,KAAgCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAEgL,GAAvC,EAA4ChL,KAA5C,KAA4CA,IAAAA,IAAAA,KAA5C,KAA4CA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAE+L,QAAnD,CADA,GAEAhF,EAAE,CAACF,QAAD,CAAF,CAAahB,KAAb,EAAoB7F,KAApB,CAfN,CAAA;;MAiBagM,eAAe,GAAG,CAC7BpI,UAD6B,EAE7BqI,oBAF6B,KAG1B;AACH,EAAIrI,IAAAA,UAAU,IAAIqI,oBAAd,IAAsCA,oBAAoB,CAACjQ,MAArB,GAA8B,CAAxE,EAA2E;AACzE;AACA,IAAA,MAAMkQ,aAAa,GAAGvI,oBAAoB,CAACC,UAAD,CAA1C,CAFyE;;AAKzE,IAAIuI,IAAAA,kBAAkB,GAAGvI,UAAzB,CAAA;AACAsI,IAAAA,aAAa,CAACrH,OAAd,CACEuH,EAAE,IACCD,kBAAkB,GAAGA,kBAAkB,CACrC/I,OADmB,CACXgJ,EADW,EACP,EADO,CAEnBhJ,CAAAA,OAFmB,CAEX,IAFW,EAEL,EAFK,CAGnBiJ,CAAAA,IAHmB,EAF1B,CAAA,CANyE;;AAezE,IAAA,MAAMC,SAAS,GAAG,EAAlB,CAfyE;;AAkBzE,IAAMC,MAAAA,UAAU,GAAG,CAAC9Q,CAAD,EAAyBtD,IAAzB,KACjByO,eAAe,CACbnL,CAAC,CAACwL,OADW,EAEblE,qBAAqB,CAAC5K,IAAD,CAFR,EAGb,UAHa,EAIbsD,CAAC,CAACqL,MAJW,CADjB,CAAA;;AAOA,IAAM0F,MAAAA,UAAU,GAAG,CAAC/Q,CAAD,EAAyBtD,IAAzB,KACjByO,eAAe,CACbnL,CAAC,CAACwL,OADW,EAEblE,qBAAqB,CAAC5K,IAAD,CAFR,EAGb,UAHa,EAIbsD,CAAC,CAACqL,MAJW,CADjB,CAzByE;;;AAkCzEmF,IAAAA,oBAAoB,CAACpH,OAArB,CAA6B4H,GAAG,IAAI;AAClC;AACA,MAAA,MAAMC,cAA6B,GAAG,EAAtC,CAFkC;;AAKlC,MAAA,IAAIP,kBAAJ,EAAwB;AACtB,QACE,IAAA,CAAC7F,MAAM,CAACG,QAAR,EAAkBH,MAAM,CAACR,GAAP,CAAWI,QAA7B,EAAuCI,MAAM,CAACR,GAAP,CAAWrD,GAAlD,CAAuDyB,CAAAA,QAAvD,CACEuI,GAAG,CAACxF,OADN,CADF,EAIE;AACAyF,UAAAA,cAAc,CAAChF,IAAf,CAAoB,GAAG6E,UAAU,CAACE,GAAD,EAAMN,kBAAN,CAAjC,CAAA,CAAA;AACD,SAND,MAMO;AACL,UAAI,IAAA,CAAC7F,MAAM,CAACE,UAAR,CAAA,CAAoBtC,QAApB,CAA6BuI,GAAG,CAACxF,OAAjC,CAAJ,EAA+C;AAC7CyF,YAAAA,cAAc,CAAChF,IAAf,CACEX,EAAE,CAACC,EAAH,CACE,GAAGuF,UAAU,CAACE,GAAD,EAAMN,kBAAN,CADf,EAEE,GAAGK,UAAU,CAACC,GAAD,EAAMN,kBAAN,CAFf,CADF,CAAA,CAAA;AAMD,WAPD,MAOO;AACLO,YAAAA,cAAc,CAAChF,IAAf,CAAoB,GAAG8E,UAAU,CAACC,GAAD,EAAMN,kBAAN,CAAjC,CAAA,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAxBiC;;;AA2BlCD,MAAAA,aAAa,CAACrH,OAAd,CAAsBuH,EAAE,IAAIM,cAAc,CAAChF,IAAf,CAAoB,GAAG6E,UAAU,CAACE,GAAD,EAAML,EAAN,CAAjC,CAA5B,EA3BkC;AA8BlC;AACA;;AACA,MAAA,IAAIM,cAAc,CAAC1Q,MAAf,GAAwB,CAA5B,EAA+B;AAC7BsQ,QAAAA,SAAS,CAAC5E,IAAV,CAAeX,EAAE,CAAC0B,GAAH,CAAO,GAAGiE,cAAV,CAAf,CAAA,CAAA;AACD,OAFD,MAEO;AACLJ,QAAAA,SAAS,CAAC5E,IAAV,CAAe,GAAGgF,cAAlB,CAAA,CAAA;AACD,OAAA;AACF,KArCD,EAlCyE;;AA0EzE,IAAO,OAAA,CACL3F,EAAE,CAACC,EAAH,GACG2F,QADH,CACYL,SADZ,CAAA,CAEGzD,GAFH,CAEO9B,EAAE,CAACqD,QAAH,CAAY9D,MAAM,CAACI,aAAnB,EAAkC9C,UAAlC,CAFP,CADK,CAAP,CAAA;AAKD,GA/ED,MA+EO,IAAIA,UAAJ,EAAgB;AACrB;AACA;AACA,IAAO,OAAA,CACLmD,EAAE,CAACC,EAAH,CACED,EAAE,CAACuC,OAAH,CAAWhD,MAAM,CAACE,UAAlB,EAA8B5C,UAA9B,CAA0CkD,CAAAA,MAA1C,CAAiD,EAAjD,CADF,EAEEC,EAAE,CAACqD,QAAH,CAAY9D,MAAM,CAACE,UAAnB,EAA+B5C,UAA/B,CAAA,CAA2CkD,MAA3C,CAAkD,CAAlD,CAFF,EAGEC,EAAE,CAACqD,QAAH,CAAY9D,MAAM,CAACC,gBAAnB,EAAqC3C,UAArC,CAAiDkD,CAAAA,MAAjD,CAAwD,CAAxD,CAHF,EAIEC,EAAE,CAAC6F,QAAH,CAAYtG,MAAM,CAACG,QAAnB,EAA6B7C,UAA7B,EAAyCkD,MAAzC,CAAgD,CAAhD,CAJF,EAKEC,EAAE,CAAC6F,QAAH,CAAYtG,MAAM,CAACR,GAAP,CAAWrD,GAAvB,EAA4BmB,UAA5B,CAAwCkD,CAAAA,MAAxC,CAA+C,CAA/C,CALF,EAMEC,EAAE,CAAC6F,QAAH,CAAYtG,MAAM,CAACR,GAAP,CAAWC,OAAvB,EAAgCnC,UAAhC,CANF,EAOEmD,EAAE,CAACqD,QAAH,CAAY9D,MAAM,CAACI,aAAnB,EAAkC9C,UAAlC,CAPF,CADK,CAAP,CAAA;AAWD,GAdM,MAcA;AACL,IAAA,OAAO,EAAP,CAAA;AACD,GAAA;AACF;;;;;;;;;;;;;;;;;;;ACxgBM,MAAMiJ,WAAwB,GAAG,CACtCvF,cADsC,EAEtCjB,aAFsC,EAGtCyG,WAHsC,KAInC;AACH,EAAM9L,MAAAA,KAAK,GAAG,IAAI+L,KAAJ,CACZ,GAAG,CACD,GAAG1F,uBAAuB,CAACC,cAAD,CADzB,EAED,GAAGiC,kBAAkB,CAAClD,aAAD,CAFpB,EAGD,GAAG6E,sBAAsB,CAAC4B,WAAD,CAHxB,CADS,CAAd,CAAA;AAOA9L,EAAAA,KAAK,CAACvI,OAAN,GAAgBoR,OAAO,CAACG,GAAR,CAAY1D,MAAM,CAACE,UAAnB,CAAhB,CAAA;AACAxF,EAAAA,KAAK,CAACgM,QAAN,GAAiB,GAAjB,CAAA;AAEA,EAAA,OAAOhM,KAAP,CAAA;AACD,CAhBM,CAAA;AAkBA,MAAMiM,WAAwB,GAAG,CACtC;AACEzF,EAAAA,UADF;AAEEF,EAAAA,cAFF;AAGEwF,EAAAA,WAHF;AAIEI,EAAAA,cAJF;AAKEhW,EAAAA,UALF;AAMEiW,EAAAA,eANF;AAOEC,EAAAA,MAPF;AAQExR,EAAAA,OARF;AASEuN,EAAAA,qBATF;AAUEF,EAAAA,SAVF;AAWE+D,EAAAA,QAXF;AAYEnV,EAAAA,SAZF;AAaEY,EAAAA,OAbF;AAcEmL,EAAAA,UAdF;AAeEyC,EAAAA,aAfF;AAgBEkB,EAAAA,gBAhBF;AAiBE0E,EAAAA,oBAAAA;AAjBF,CADsC,EAoBtCoB,UAAU,GAAG,KApByB,KAqBnC;AACH,EAAA,IAAI5F,WAAW,GAAG,CAChB,GAAGuE,eAAe,CAACpI,UAAD,EAAaqI,oBAAb,CADF,EAEhB,GAAG1C,kBAAkB,CAAClD,aAAD,CAFL,EAGhB,GAAG6C,0BAA0B,CAAC3B,gBAAD,EAAmB4B,qBAAnB,CAHb,EAIhB,GAAGH,mBAAmB,CAACC,SAAD,CAJN,EAKhB,GAAGiC,sBAAsB,CAAC4B,WAAD,CALT,EAMhB,GAAGpD,oBAAoB,CAACxS,UAAD,CANP,CAAlB,CAAA;AAQA,EAAA,IAAImW,UAAJ,EACE5F,WAAW,GAAG,CACZ,GAAGA,WADS,EAEZ,GAAGqB,yBAAyB,CAACqE,eAAD,CAFhB,CAAd,CAAA;AAKF,EAAA,IAAI,CAACE,UAAD,IAAgBF,eAAe,IAAI,CAACA,eAAe,CAACnH,aAAxD,EACEyB,WAAW,GAAG,CACZ,GAAGA,WADS,EAEZ,GAAGG,iBAAiB,CAAChM,OAAD,CAFR,EAGZ,GAAGyL,uBAAuB,CAACC,cAAD,EAAiBC,gBAAjB,EAAmCC,UAAnC,CAHd,CAAd,CAAA;AAMF,EAAA,MAAMxG,KAAK,GAAG,IAAI+L,KAAJ,CAAU,GAAGtF,WAAb,CAAd,CAAA;AAEA,EAAI,IAAA,CAAC7D,UAAL,EAAiB5C,KAAK,CAACvI,OAAN,GAAgBkR,iBAAiB,CAAClR,OAAD,CAAjC,CAAA;AACjB,EAAA,IAAIyU,cAAc,IAAIA,cAAc,CAAClR,MAArC,EACEgF,KAAK,CAACvI,OAAN,GAAgBkR,iBAAiB,CAACuD,cAAD,CAAjC,CAAA;;AAEF,EAAIE,IAAAA,MAAM,IAAIA,MAAM,CAACpR,MAAP,GAAgB,CAA1B,IAA+B,CAACqR,UAApC,EAAgD;AAC9CrM,IAAAA,KAAK,CAACoM,MAAN,GAAeA,MAAf,CAAA;AACD,GAAA;;AAEDpM,EAAAA,KAAK,CAACnJ,SAAN,GAAkBwV,UAAU,GAAG,CAAH,GAAOxV,SAAnC,CAAA;AACAmJ,EAAAA,KAAK,CAACgM,QAAN,GACEK,UAAU,IAAI,OAAOF,eAAe,CAACG,KAAvB,KAAiC,QAA/C,GACIH,eAAe,CAACG,KADpB,GAEIN,QAHN,CAAA;AAIA,EAAA,OAAOhM,KAAP,CAAA;AACD,CA3DM;;;;;;;;AChBP,MAAMuM,iBAAmC,GAAG;AAC1C9V,EAAAA,IAAI,EAAE,CAAC;AAAEC,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBU,IAAAA,SAAAA;AAAhB,GAAD,KAAiC;AACrC,IAAA,MAAMqD,YAAY,GAChBnB,gBAAgB,CAACrC,KAAD,CAAhB,KAA4BgB,OAAO,CAAC4C,QAApC,KACCnE,KAAK,IAAI+C,eAAe,CAACxC,KAAD,CADzB,CADF,CAAA;AAGA,IAAA,MAAM8V,WAAW,GAAGtO,iBAAiB,CAACxH,KAAD,CAAjB,IAA4B,SAAhD,CAAA;AACA,IAAM+V,MAAAA,OAAO,GAAGvS,YAAY,GACvB,CAAA,EAAEsS,WAAY,CAAGtS,CAAAA,EAAAA,YAAa,CADP,CAAA,GAExBsS,WAFJ,CAAA;AAGA,IAAI3V,IAAAA,SAAJ,EAAe,OAAQ,CAAA,EAAE4V,OAAQ,CAAG5V,CAAAA,EAAAA,SAAS,GAAG,CAAE,CAAnC,CAAA,CAAA;AACf,IAAA,OAAO4V,OAAP,CAAA;AACD,GAXyC;AAY1C1M,EAAAA,MAAM,EAAE,CAAC;AAAErJ,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBsB,IAAAA,OAAhB;AAAyBN,IAAAA,IAAAA;AAAzB,GAAD,KAAqC;AAC3C,IAAA,MAAMuV,aAAa,GAAG3T,gBAAgB,CAACrC,KAAD,CAAtC,CAD2C;AAG3C;;AACA,IAAMiW,MAAAA,YAAY,GAAGxV,IAAI,GACrB,EADqB,GAErBoC,MAAM,CAACC,WAAP,CACED,MAAM,CAACE,OAAP,CACE2B,kBAAkB,CAAC1E,KAAD,EAAQP,KAAR,EAAeuW,aAAf,EAA8B,IAA9B,CADpB,EAEE/S,GAFF,CAEM,CAAC,CAACrC,GAAD,EAAMmD,CAAN,CAAD,KAAc,CAACnD,GAAD,EAAMmD,CAAN,KAAMA,IAAAA,IAAAA,CAAN,KAAMA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAC,CAAE5B,IAAH,CAAQ,GAAR,CAAN,CAFpB,CADF,CAFJ,CAAA;AAOA,IAAA,MAAM+T,aAAa,GACjB,CAACzV,IAAD,IAASoB,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,SAAD,EAAY,UAAZ,EAAwB,QAAxB,CAAR,CADhB,CAAA;AAEA,IAAMmW,MAAAA,SAAS,GAAGlJ,qBAAqB,CAACmJ,KAAK,CAACF,aAAD,CAAN,CAAvC,CAAA;AAEA,IAAA,IAAInV,OAAJ,EAAaoV,SAAS,CAACpV,OAAV,GAAoBA,OAApB,CAAA;AAEb,IAAA,MAAMmL,UAAU,GAAGnG,aAAa,CAAC/F,KAAD,CAAhC,CAjB2C;;AAmB3C,IAAMqW,MAAAA,YAAY,GAAGpJ,qBAAqB,CAAC,EACzC,GAAGqJ,KAAK,CAACH,SAAD,EAAYF,YAAZ,CADiC;AAEzCxV,MAAAA,IAAI,EAAEyL,UAAAA;AAFmC,KAAD,CAA1C,CAAA;AAKA,IAAOrC,OAAAA,SAAS,CAACwM,YAAD,CAAhB,CAAA;AACD,GArCyC;AAsC1CE,EAAAA,IAAI,EAAGvW,KAAD,IACJ6B,gBAAK,CAAC7B,KAAD,EAAQ,CAAC,SAAD,EAAY,UAAZ,EAAwB,MAAxB,CAAR,EAAyC,EAAzC,CAAL,CAAkD0L,OAAlD,CAA0D,GAA1D,EAA+D,EAA/D,CAAA;AAvCwC,CAA5C,CAAA;;AA0CM8K,MAAAA,mBAAmC,GAAG7W,MAAM,IAChD8W,OAAO,CAAC9W,MAAD,EAASkW,iBAAT;;AC5CT,MAAMa,yBAAyB,GAAG,CAChC;AACExX,EAAAA,OADF;AAEEQ,EAAAA,MAFF;AAGEL,EAAAA,OAHF;AAIEI,EAAAA,KAAAA;AAJF,CADgC,EAYhC2E,KAZgC,EAahCpE,KAbgC,KAc7B;AACH,EAAM2W,MAAAA,UAAU,GAAGjX,MAAM,IAAKR,OAAO,IAAIA,OAAO,CAAC0X,OAAjD,CAAA;AACA,EAAA,OAAOxS,KAAK,IAAI,OAAOuS,UAAP,KAAsB,UAA/B,GACHA,UAAU,CAACvS,KAAD,EAAQ3E,KAAR,EAAeJ,OAAf,EAAwBW,KAAxB,CADP,GAEH,EAFJ,CAAA;AAGD,CAnBD,CAAA;;AAqBO,MAAM6W,aAAa,GAAG;AAC3BjX,EAAAA,IAAI,EAAE,MAAMpB,kBADe;AAE3Ba,EAAAA,OAAO,EAAE,gBAFkB;AAG3BI,EAAAA,KAAK,EAAE,cAHoB;AAI3BP,EAAAA,OAAO,EAAE,gBAJkB;AAK3B4X,EAAAA,SAAS,EAAE;AACT/T,IAAAA,OAAO,EAAE;AACPgU,MAAAA,SAAS,EAAE,MAAM,KADV;AAEPxS,MAAAA,OAAO,EAAE,MAAM,KAAA;AAFR,KADA;AAKTyS,IAAAA,eAAe,EAAE;AACfD,MAAAA,SAAS,EAAE,MAAM,KADF;AAEfxS,MAAAA,OAAO,EAAE,MAAM,KAAA;AAFA,KALR;AASTkR,IAAAA,eAAe,EAAE,CAAC;AAAExW,MAAAA,MAAF;AAAUgY,MAAAA,cAAV;AAA0BjX,MAAAA,KAAAA;AAA1B,KAAD,KACf0W,yBAAyB,CACvBzX,MADuB,EAEvB+M,kBAAkB,CAACiL,cAAD,CAFK,EAGvBjX,KAHuB,CAVlB;AAeTkX,IAAAA,aAAa,EAAE,iBAfN;AAgBT7T,IAAAA,UAAU,EAAE;AACV0T,MAAAA,SAAS,EAAE,MAAM,KADP;AAEVI,MAAAA,SAAS,EAAE;AACTC,QAAAA,KAAK,EAAE,0BADE;AAETC,QAAAA,QAAQ,EAAE,CAAA;AAFD,OAFD;AAMVjU,MAAAA,UAAU,EAAE;AACVgU,QAAAA,KAAK,EAAE,2BADG;AAEVC,QAAAA,QAAQ,EAAE,CAAA;AAFA,OANF;AAUV/B,MAAAA,QAAQ,EAAE;AACR8B,QAAAA,KAAK,EAAE,yBADC;AAERC,QAAAA,QAAQ,EAAE,CAAA;AAFF,OAVA;AAcVlX,MAAAA,SAAS,EAAE,WAdD;AAeVmX,MAAAA,WAAW,EAAE;AACXF,QAAAA,KAAK,EAAE,oBADI;AAEXG,QAAAA,WAAW,EAAE,CAAC;AAAEpX,UAAAA,SAAF;AAAamX,UAAAA,WAAAA;AAAb,SAAD,KAA6C;AACxD,UAAME,MAAAA,MAAM,GAAG,CAAC,IAAIF,WAAW,IAAI,EAAnB,CAAD,CAAf,CAAA;;AACA,UAAA,IAAIG,KAAK,CAACD,MAAM,CAAC1Q,IAAP,CAAY4Q,CAAC,IAAIA,CAAC,KAAKvX,SAAvB,CAAD,CAAT,EAAqD;AACnDqX,YAAAA,MAAM,CAACxH,IAAP,CAAY7P,SAAZ,CAAA,CAAA;AACD,WAAA;;AACD,UAAA,OAAOqX,MAAM,CAACG,IAAP,CAAY,CAAC3Q,CAAD,EAAIC,CAAJ,KAAUD,CAAC,GAAGC,CAA1B,CAAP,CAAA;AACD,SAAA;AARU,OAfH;AAyBV2Q,MAAAA,aAAa,EAAE,kCAAA;AAzBL,KAhBH;AA2CTC,IAAAA,SAAS,EAAE;AAAET,MAAAA,KAAK,EAAE,SAAT;AAAoBC,MAAAA,QAAQ,EAAE,KAAA;AAA9B,KA3CF;AA4CTT,IAAAA,OAAO,EAAE,CAAC;AACR3X,MAAAA,MADQ;AAERkB,MAAAA,SAFQ;AAGR8B,MAAAA,MAHQ;AAIR6V,MAAAA,WAJQ;AAKR9X,MAAAA,KAAAA;AALQ,KAAD,KAMY;AACnB,MAAM,MAAA;AAAE+X,QAAAA,cAAF;AAAkBT,QAAAA,WAAlB;AAA+BM,QAAAA,aAAAA;AAA/B,OAAiD3Y,GAAAA,MAAM,CAAC+Y,WAA9D,CAAA;AAEA,MAAA,MAAMpB,OAAO,GAAGF,yBAAyB,CACvCzX,MADuC,EAEvC+M,kBAAkB,CAAC/J,MAAD,CAFqB,EAGvCjC,KAHuC,CAAzC,CAAA;AAMA,MAAA,IAAI,CAAC+X,cAAL,EAAqB,OAAOnB,OAAP,CATF;;AAYnB,MAAMqB,MAAAA,WAAW,GAAGrB,OAAO,CAAC3T,GAAR,CAAY,CAACiV,CAAD,EAAItE,GAAJ,MAAa;AAC3CuE,QAAAA,UAAU,EAAEhY,SAD+B;AAE3CiY,QAAAA,aAAa,EAAExE,GAF4B;AAG3C,QAAGsE,GAAAA,CAAAA;AAHwC,OAAb,CAAZ,CAApB,CAAA;AAMA,MAAA,MAAMG,WAAW,GAAGf,WAAW,IAAI,EAAnC,CAlBmB;;AAqBnB,MAAA,IAAI,CAACG,KAAK,CAACY,WAAW,CAACvR,IAAZ,CAAiB4Q,CAAC,IAAIA,CAAC,KAAKvX,SAA5B,CAAD,CAAV,EACE,OAAO2X,WAAP,CAtBiB;AAyBnB;;AACA,MAAMQ,MAAAA,cAAc,GAClBnY,SAAS,GAAGyX,aAAZ,GAA4BE,WAAW,IAAI,EAA3C,GAAgDG,WADlD,CAAA;AAGA,MAAMM,MAAAA,eAAe,GACnBpY,SAAS,GAAGyX,aAAZ,GAA4BK,WAA5B,GAA0CH,WAAW,IAAI,EAD3D,CAAA;AAGA,MAAMU,MAAAA,aAAa,GAAGH,WAAW,CAAC/T,MAAZ,KAAuB,CAAvB,GAA2B2T,WAA3B,GAAyC,KAA/D,CAAA;AACA,MAAOO,OAAAA,aAAa,IAAI,CAAC,GAAGF,cAAJ,EAAoB,GAAGC,eAAvB,CAAxB,CAAA;AACD,KAAA;AApFQ,GALgB;AA2F3BE,EAAAA,OAAO,EAAE,gBA3FkB;AA4F3BC,EAAAA,OAAO,EAAE,gBA5FkB;AA6F3BpZ,EAAAA,KAAK,EAAE,cAAA;AA7FoB,CAAtB,CAAA;AAgGA,MAAMqZ,cAAc,GAAG;AAC5B/Y,EAAAA,IAAI,EAAE,CAAC;AAAEA,IAAAA,IAAAA;AAAF,GAAD,KAAcA,IAAI,IAAIzB,qBADA;AAE5BkB,EAAAA,OAAO,EAAE,SAFmB;AAG5BuZ,EAAAA,QAAQ,EAAE,UAHkB;AAI5BpU,EAAAA,SAAS,EAAE,WAJiB;AAK5BqU,EAAAA,UAAU,EAAE;AACV9B,IAAAA,SAAS,EAAE,MAAM,KADP;AAEVxS,IAAAA,OAAO,EAAE,CAAC;AAAE3E,MAAAA,IAAAA;AAAF,KAAD,KAAcA,IAAI,KAAKxB,kBAFtB;AAGVgG,IAAAA,KAAK,EAAE,CAAC;AAAE0H,MAAAA,OAAF;AAAWgN,MAAAA,YAAX;AAAyBpZ,MAAAA,MAAAA;AAAzB,KAAD,KAAuC;AAC5C,MAAIoM,IAAAA,OAAO,KAAKA,OAAO,CAAC1H,KAAR,IAAiB0H,OAAO,CAACpB,QAA9B,CAAX,EAAoD;AAClD,QAAA,MAAMtG,KAAK,GAAG,CAAC0H,OAAO,CAAC1H,KAAR,IAAiB0H,OAAO,CAACpB,QAA1B,EAAoCzH,GAApC,CAAyC6B,IAAD,IAAe;AAAA,UAAA,IAAA,SAAA,CAAA;;AACnEA,UAAAA,IAAI,CAAC5B,UAAL,GAAkB4V,YAAlB,KAAA,IAAA,IAAkBA,YAAlB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAkBA,YAAY,CAAEtM,QAAd,CAAuB,CAAA1H,IAAI,KAAJ,IAAA,IAAAA,IAAI,KAAA,KAAA,CAAJ,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,SAAAA,GAAAA,IAAI,CAAEsJ,GAAN,MAAW7N,IAAAA,IAAAA,SAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAAA,EAAX,KAAiBuE,IAAI,CAAClE,GAA7C,CAAlB,CAAA;AACA,UAAA,OAAOkE,IAAP,CAAA;AACD,SAHa,CAAd,CAAA;AAIA,QAAOpF,OAAAA,MAAM,CAAC0E,KAAD,CAAb,CAAA;AACD,OAAA;;AACD,MAAA,OAAO,EAAP,CAAA;AACD,KAAA;AAZS,GALgB;AAmB5B2U,EAAAA,KAAK,EAAE;AAAE3B,IAAAA,KAAK,EAAE,OAAT;AAAkB4B,IAAAA,QAAQ,EAAEpL,CAAC,IAAI,CAACA,CAAAA;AAAlC,GAAA;AAnBqB,CAAvB;;AClIP,MAAMqL,sBAAsB,GAAG;AAC7B;AACAC,EAAAA,cAAc,EAAE,CAAC;AAAE5K,IAAAA,aAAAA;AAAF,GAAD,KACdA,aAAa,GACTL,qBAAqB,CAACC,WADb,GAETD,qBAAqB,CAACE,KALC;AAM7B;AACAvN,EAAAA,GAAG,EAAE,SAPwB;AAQ7B;AACA;AACA0P,EAAAA,MAAM,EAAE,gBAVqB;AAW7BC,EAAAA,aAAa,EAAE,eAXc;AAY7BF,EAAAA,aAAa,EAAE,eAAA;AAZc,CAA/B,CAAA;;AAeA,MAAM8I,2BAA2B,GAC/BxY,MADkC,IAE/B8V,OAAO,CAAC9V,MAAD,EAASsY,sBAAT,CAFZ;;ACfO,MAAMG,4BAA4B,GAAG,CAC1ClV,OAD0C,EAE1CW,eAF0C,KAGvC;AACH,EAAA,IAAI,CAACA,eAAD,IAAoBhC,MAAM,CAAC8Q,IAAP,CAAY9O,eAAZ,CAAA,CAA6BP,MAA7B,KAAwC,CAAhE,EAAmE,OAAO,EAAP,CAAA;AACnE,EAAA,MAAM4L,iBAAqC,GAAG,EAA9C,CAFG;AAKH;;AACArN,EAAAA,MAAM,CAACE,OAAP,CAAe8B,eAAf,CAAgC5B,CAAAA,GAAhC,CAAoC,CAAC,CAACoW,IAAD,EAAOC,cAAP,CAAD,KAA4B;AAC9D,IAAA,MAAM3Y,MAAM,GAAGuD,OAAO,CAACmV,IAAD,CAAtB,CAAA;;AACA,IAAIC,IAAAA,cAAc,IAAI3Y,MAAtB,EAA8B;AAC5B;AACA;AACA;AACA,MAAA,MAAM8P,IAAI,GAAG0I,2BAA2B,CAAC,EACvC,GAAGxY,MADoC;AAEvC2Y,QAAAA,cAAAA;AAFuC,OAAD,CAAxC,CAAA;AAIApJ,MAAAA,iBAAiB,CAACF,IAAlB,CAAuBS,IAAvB,CAAA,CAAA;AACD,KAAA;AACF,GAZD,CAAA,CAAA;AAaA,EAAA,OAAOP,iBAAP,CAAA;AACD,CAvBM;;AC4BP,MAAMqJ,mBAAmB,GAAG;AAC1BzJ,EAAAA,UAAU,EAAG0J,IAAD,IACVtT,iBAAiB,CAACsT,IAAD,EAAO,YAAP,EAAqB,EAArB,CAFO;AAG1B5J,EAAAA,cAAc,EAAG4J,IAAD,IACdtT,iBAAiB,CAACsT,IAAD,EAAO,gBAAP,EAAyB,EAAzB,CAJO;AAK1BpE,EAAAA,WAAW,EAAGoE,IAAD,IACXtT,iBAAiB,CAACsT,IAAD,EAAO,aAAP,EAAsB,EAAtB,CANO;AAO1BhE,EAAAA,cAAc,EAAGgE,IAAD,IACdtT,iBAAiB,CAACsT,IAAD,EAAO,gBAAP,EAAyB,EAAzB,CARO;AAS1B3R,EAAAA,GAAG,EAAE,CAAC;AAAE7H,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAAA;AAAhB,GAAD,KACHgH,YAAY,CAACrG,KAAD,EAAQP,KAAR,EAAeJ,OAAf,CAVY;AAW1BG,EAAAA,UAAU,EAAE,CAAC;AACXP,IAAAA,MAAM,EAAE;AAAEO,MAAAA,UAAAA;AAAF,KAAA;AADG,GAAD,KAIN;AACJ;AACA,IAAIA,IAAAA,UAAJ,EACE,OAAOuC,KAAK,CAACC,OAAN,CAAcxC,UAAd,CACHA,GAAAA,UADG,GAEHA,UAAU,CAACqL,KAAX,CAAiB,GAAjB,CAAA,CAAsB5H,GAAtB,CAA0B1C,EAAE,IAAIA,EAAE,CAACoU,IAAH,EAAhC,CAFJ,CAAA;AAGF,IAAA,OAAO,IAAP,CAAA;AACD,GAtByB;AAuB1Bc,EAAAA,eAAe,EAAG+D,IAAD,IACftT,iBAAiB,CAACsT,IAAD,EAAO,iBAAP,EAA0B,IAA1B,CAxBO;AAyB1B9D,EAAAA,MAAM,EAAG8D,IAAD,IACNtT,iBAAiB,CAACsT,IAAD,EAAO,QAAP,EAAiB,EAAjB,CA1BO;AA2B1BtV,EAAAA,OAAO,EAAE,CAAC;AAAElE,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAAA;AAAhB,GAAD,KAAwD;AAC/D,IAAM4W,MAAAA,YAAY,GAAGpS,UAAU,CAAC7D,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB,IAAxB,CAA/B,CAAA;AACA,IAAA,MAAMwF,eAAe,GAAGH,kBAAkB,CAAC1E,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB,IAAxB,CAA1C,CAF+D;;AAI/D,IAAA,MAAMoa,YAAY,GAAGL,4BAA4B,CAC/CnD,YAD+C,EAE/CpR,eAF+C,CAAjD,CAAA;AAIA,IAAA,OAAO4U,YAAP,CAAA;AACD,GApCyB;AAqC1BhI,EAAAA,qBAAqB,EAAG+H,IAAD,IACrBtT,iBAAiB,CAACsT,IAAD,EAAO,iBAAP,EAA0B,EAA1B,CAtCO;AAuC1BE,EAAAA,iBAAiB,EAAE,CAAC;AAAEza,IAAAA,MAAF;AAAUe,IAAAA,KAAAA;AAAV,GAAD,KACjB0F,YAAY,CAAC1F,KAAD,EAAQ,EAAR,EAAYf,MAAM,CAACI,OAAnB,CAxCY;AAyC1Bsa,EAAAA,cAAc,EAAGH,IAAD,IACdtT,iBAAiB,CAACsT,IAAD,EAAO,gBAAP,EAAyB,KAAzB,CA1CO;AA2C1BjI,EAAAA,SAAS,EAAE,CAAC;AAAEtS,IAAAA,MAAAA;AAAF,GAAD,KACTA,MAAM,CAACM,WAAP,GAAqB,CAACN,MAAM,CAACM,WAAR,CAArB,GAA4C,EA5CpB;AA6C1BgK,EAAAA,SAAS,EAAGiQ,IAAD,IACTtT,iBAAiB,CAACsT,IAAD,EAAO,WAAP,EAAoB,CAApB,CA9CO;AA+C1BzB,EAAAA,cAAc,EAAGyB,IAAD,IACdtT,iBAAiB,CAACsT,IAAD,EAAO,gBAAP,EAAyB,KAAzB,CAhDO;AAiD1BzY,EAAAA,OAAO,EAAGyY,IAAD,IACPtT,iBAAiB,CAACsT,IAAD,EAAO,SAAP,EAAkB,EAAlB,CAlDO;AAmD1BrZ,EAAAA,SAAS,EAAGqZ,IAAD,IAAmC;AAC5C,IAAM,MAAA;AAAEva,MAAAA,MAAF;AAAUe,MAAAA,KAAAA;AAAV,KAAA,GAAoBwZ,IAA1B,CAAA;AACA,IAAItT,IAAAA,iBAAiB,CAACsT,IAAD,EAAO,gBAAP,EAAyB,KAAzB,CAArB,EAAsD,OAAO,CAAP,CAAA;AACtD,IAAIva,IAAAA,MAAM,CAACW,IAAP,KAAgBf,iBAApB,EAAuC,OAAOI,MAAM,CAACU,MAAP,CAAcQ,SAArB,CAAA;AACvC,IAAA,OAAO,CAAClB,MAAM,CAACwZ,OAAR,GACH/S,YAAY,CAAC1F,KAAD,EAAQf,MAAM,CAACQ,KAAf,EAAsBR,MAAM,CAACI,OAA7B,CADT,GAEH,CAFJ,CAAA;AAGD,GA1DyB;AA2D1BiW,EAAAA,QAAQ,EAAGkE,IAAD,IACRtT,iBAAiB,CAACsT,IAAD,EAAO,UAAP,CA5DO;AA6D1BlC,EAAAA,WAAW,EAAE,CAAC;AAAEtX,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAAA;AAAhB,GAAD,KACXwG,cAAc,CAAC7F,KAAD,EAAQP,KAAR,EAAeJ,OAAf,CA9DU;AA+D1BuY,EAAAA,aAAa,EAAE,CAAC;AAAE5X,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAAA;AAAhB,GAAD,KACbsG,gBAAgB,CAAC3F,KAAD,EAAQP,KAAR,EAAeJ,OAAf,CAhEQ;AAiE1B0I,EAAAA,SAAS,EAAE,CAAC;AAAE/H,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAAA;AAAhB,GAAD,KAAA;AAAA,IAAA,IAAA,SAAA,CAAA;;AAAA,IAAA,OACT,CAAAiE,CAAAA,SAAAA,GAAAA,QAAQ,CAACtD,KAAD,EAAQP,KAAR,EAAeJ,OAAf,CAAR,wDAAiC0I,SAAjC,KAA8CN,oBAAoB,CAACzH,KAAD,CADzD,CAAA;AAAA,GAjEe;AAmE1BkM,EAAAA,UAAU,EAAGsN,IAAD,IACVA,IAAI,CAACna,OAAL,KAAiB2B,OAAO,CAAC4Y,QAAzB,IACA1T,iBAAiB,CAACsT,IAAD,EAAO,eAAP,EAAwB,KAAxB,CADjB,GAEIzT,aAAa,CAACyT,IAAI,CAACxZ,KAAN,CAFjB,GAGI,EAvEoB;AAwE1B6E,EAAAA,eAAe,EAAE,CAAC;AAAE7E,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBJ,IAAAA,OAAAA;AAAhB,GAAD,KACfwD,MAAM,CAACC,WAAP,CACED,MAAM,CAACE,OAAP,CAAe2B,kBAAkB,CAAC1E,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB,IAAxB,CAAjC,EAAgE4D,GAAhE,CACE,CAAC,CAACrC,GAAD,EAAMmD,CAAN,CAAD,KAAc,CAACnD,GAAD,EAAMmD,CAAN,KAAA,IAAA,IAAMA,CAAN,KAAMA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAC,CAAE5B,IAAH,CAAQ,GAAR,CAAN,CADhB,CADF,CAzEwB;AA8E1BwM,EAAAA,aAAa,EAAE,CAAC;AAAE3O,IAAAA,KAAAA;AAAF,GAAD,KACb0H,mBAAmB,CAAC1H,KAAD,CA/EK;AAgF1BuU,EAAAA,oBAAoB,EAAGiF,IAAD,IAAmC;AACvD,IAAMzE,MAAAA,GAAG,GAAG7O,iBAAiB,CAC3BsT,IAD2B,EAE3B,sBAF2B,EAG3B,EAH2B,CAA7B,CAAA;AAKA,IAAA,MAAMK,OAAO,GAAG9E,GAAG,CAACpU,MAAJ,CACd,CAACa,CAAD,EAAI6C,CAAJ,EAAO2C,CAAP,KAAaA,CAAC,CAAC8S,SAAF,CAAY1S,CAAC,IAAIA,CAAC,CAACmI,OAAF,KAAc/N,CAAC,CAAC+N,OAAjC,CAA8ClL,KAAAA,CAD7C,CAAhB,CAAA;AAGA,IAAOwV,OAAAA,OAAP,CATuD;AAWxD,GA3FyB;AA4F1BhK,EAAAA,gBAAgB,EAAG2J,IAAD,IAChBtT,iBAAiB,CAACsT,IAAD,EAAO,kBAAP,EAA2B,EAA3B,CAAA;AA7FO,CAA5B,CAAA;;AAgGA,MAAMO,qBAAqB,GAAIC,UAAD,IAC5BvD,OAAO,CAACuD,UAAD,EAAaT,mBAAb,CADT;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMU,mBAAmB,GAAG,CACjChb,MADiC,EAEjCe,KAFiC,KAGC;AAClC,EAAM,MAAA;AAAEX,IAAAA,OAAF;AAAWI,IAAAA,KAAAA;AAAX,GAAqBR,GAAAA,MAA3B,CADkC;AAGlC;;AACA,EAAM+Y,MAAAA,WAAW,GAAG+B,qBAAqB,CAAC;AACxC1a,IAAAA,OADwC;AAExCI,IAAAA,KAFwC;AAGxCR,IAAAA,MAHwC;AAIxCe,IAAAA,KAAAA;AAJwC,GAAD,CAAzC,CAAA;AAOA,EAAO,OAAA,CAACgY,WAAD,EAAckC,SAAS,CAACjb,MAAD,EAASe,KAAT,EAAgBgY,WAAhB,CAAvB,CAAP,CAAA;AACD,CAfM,CAAA;AAiBP;AACA;AACA;AACA;AACA;;AACO,MAAMkC,SAAS,GAAG,CACvBjb,MADuB,EAEvBe,KAFuB,EAGvBgY,WAHuB,KAIpB;AACH,EAAM,MAAA;AACJ3Y,IAAAA,OADI;AAEJE,IAAAA,WAFI;AAGJE,IAAAA,KAHI;AAIJiZ,IAAAA,OAAO,GAAG1Y,KAJN;AAKJyY,IAAAA,OALI;AAMJ0B,IAAAA,GAAAA;AANI,GAAA,GAOFlb,MAPJ,CAAA;AASA,EAAImb,IAAAA,OAAO,GAAG,KAAd,CAAA;AAEA,EAAA,MAAMC,aAAa,GAAG9a,WAAW,GAC7B,KAD6B,GAE7B8F,WAAW,CAACrF,KAAD,EAAQX,OAAR,EAAiBI,KAAjB,CAFf,CAAA;AAGA,EAAM6a,MAAAA,WAAW,GAAG,EAClB,GAAGrU,cAAc,CAACyS,OAAD,EAAUjZ,KAAV,EAAiBJ,OAAjB,CAAA;AADC,GAApB,CAAA;AAGAib,EAAAA,WAAW,CAACna,SAAZ,GAAwBuF,YAAY,CAACgT,OAAD,EAAUjZ,KAAV,EAAiBJ,OAAjB,CAApC,CAAA;AACAib,EAAAA,WAAW,CAACpO,UAAZ,GAAyBnG,aAAa,CAAC2S,OAAD,CAAtC,CAAA;;AAEA,EAAA,IACGrZ,OAAO,KAAK2B,OAAO,CAACsB,MAApB,IAA8B6X,GAA/B;AAEA1B,EAAAA,OAFA,IAGA,CAAC4B,aAHD,IAIAE,mBAAmB,CAACtb,MAAD,CAJnB,IAKAM,WANF,EAOE;AACA6a,IAAAA,OAAO,GAAG,IAAV,CAAA;AACD,GATD,MASO;AACL;AACA;AACAvX,IAAAA,MAAM,CAACE,OAAP,CAAeuX,WAAf,CAA4BnN,CAAAA,OAA5B,CAAoC,CAAC,CAACqN,KAAD,EAAQlS,KAAR,CAAD,KAAoB;AACtD,MAAA,MAAMmS,UAAU,GAAGzC,WAAW,CAACwC,KAAD,CAA9B,CAAA;;AACA,MAAA,IAAI5Q,IAAI,CAACC,SAAL,CAAevB,KAAf,CAAA,KAA0BsB,IAAI,CAACC,SAAL,CAAe4Q,UAAf,CAA9B,EAA0D;AACxDL,QAAAA,OAAO,GAAG,IAAV,CAAA;AACD,OAAA;AACF,KALD,CAAA,CAAA;AAMD,GAAA;;AAED,EAAMT,MAAAA,cAAc,GAAGvU,mBAAmB,CAACsT,OAAD,EAAUjZ,KAAV,EAAiBJ,OAAjB,CAA1C,CAAA;;AACA,EAAIsa,IAAAA,cAAc,IAAIU,aAAtB,EAAqC;AACnCD,IAAAA,OAAO,GAAG,KAAV,CAAA;AACD,GAAA;;AAED,EAAA,OAAOA,OAAP,CAAA;AACD,CAnDM,CAAA;AAqDP;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMG,mBAAmB,GAAG,CACjCtb,MADiC,EAEjCe,KAFiC,KAG9B;AACH,EAAM,MAAA;AACJX,IAAAA,OADI;AAEJI,IAAAA,KAFI;AAGJE,IAAAA,MAHI;AAIJ+Y,IAAAA,OAAO,GAAG1Y,KAAAA;AAJN,GAAA,GAKFf,MALJ,CAAA;AAMA,EAAM4F,MAAAA,eAAe,GAAGH,kBAAkB,CACxCgU,OADwC,EAExCjZ,KAFwC,EAGxCJ,OAHwC,EAIxC,IAJwC,CAA1C,CAAA;AAOA,EAAA,MAAMqb,aAAa,GAAG7X,MAAM,CAACE,OAAP,CAAe8B,eAAf,CAAA,CAAgC5B,GAAhC,CACpB,CAAC,CAACuB,SAAD,EAAY8U,cAAZ,CAAD,KAAiC;AAC/B,IAAA,MAAMqB,aAAa,GAChBhb,MAAM,IAAIA,MAAM,CAAC6E,SAAD,CAAhB,IAA+B7E,MAAM,CAAC6E,SAAD,CAAN,CAAkBqG,KAAlB,CAAwB,GAAxB,CAAhC,IAAiE,EADnE,CAAA;AAGA,IAAI,IAAA,CAAC0C,kBAAkB,CAAC+L,cAAD,EAAiBqB,aAAjB,CAAvB,EAAwD,OAAO,IAAP,CAAA;AACzD,GANmB,CAAtB,CAAA;AASA,EAAA,OAAOD,aAAa,CAAC/Z,MAAd,CAAqBoD,CAAC,IAAIA,CAAC,KAAK,IAAhC,CAAA,CAAsCO,MAAtC,GAA+C,CAAtD,CAAA;AACD,CA3BM,CAAA;AA6BP;;AACO,MAAMsW,kBAAkB,GAAG,CAChC3b,MADgC,EAEhCe,KAFgC,KAG7B;AACH,EAAM,MAAA,CAACgY,WAAD,EAAckC,SAAd,CAAA,GAA2BD,mBAAmB,CAAChb,MAAD,EAASe,KAAT,CAApD,CAAA;AAEAgT,EAAAA,OAAO,CAACC,GAAR,CACE,WADF,EAEEiH,SAFF,EAGE,QAHF,EAIEjb,MAJF,EAKE,qBALF,EAMEsb,mBAAmB,CAACtb,MAAD,EAASe,KAAT,CANrB,EAOE,oCAPF,EAQEqF,WAAW,CAACrF,KAAD,EAAQf,MAAM,CAACI,OAAf,EAAwBJ,MAAM,CAACQ,KAA/B,CARb,CAAA,CAAA;AAUA,EAAA,MAAM6a,WAAW,GAAG,EAClB,GAAGrU,cAAc,CAAChH,MAAM,CAACyZ,OAAP,IAAkB1Y,KAAnB,EAA0Bf,MAAM,CAACQ,KAAjC,EAAwCR,MAAM,CAACI,OAA/C,CADC;AAElBc,IAAAA,SAAS,EAAEuF,YAAY,CACrBzG,MAAM,CAACyZ,OAAP,IAAkB1Y,KADG,EAErBf,MAAM,CAACQ,KAFc,EAGrBR,MAAM,CAACI,OAHc,CAFL;AAOlB6M,IAAAA,UAAU,EAAEnG,aAAa,CAAC9G,MAAM,CAACyZ,OAAP,IAAkB1Y,KAAnB,CAAA;AAPP,GAApB,CAAA;AASAgT,EAAAA,OAAO,CAACC,GAAR,CAAYqH,WAAZ,EAAyBtC,WAAzB,CAAA,CAAA;AAEAhF,EAAAA,OAAO,CAACC,GAAR,CACE,oBADF,EAEEvO,kBAAkB,CAChBzF,MAAM,CAACyZ,OAAP,IAAkB1Y,KADF,EAEhBf,MAAM,CAACQ,KAFS,EAGhBR,MAAM,CAACI,OAHS,EAIhB,IAJgB,CAFpB,EAQE,QARF,EASEJ,MAAM,CAACU,MATT,CAAA,CAAA;AAWD,CAtCM,CAAA;AAwCA,MAAMkb,SAAS,GAAIza,UAAD,IAAwB;AAC/C,EAAI,IAAA,OAAO4H,MAAP,KAAkB,WAAtB,EAAmCA,MAAM,CAAC8S,QAAP,CAAgB,CAAhB,EAAmB1a,UAAnB,CAAA,CAAA;AACpC,CAFM;;AC1KP;AACA;AACA;;AACA,MAAM2a,IAAI,GAAG;AACXzM,EAAAA,aAAa,EAAEM,MAAM,CAACR,GAAP,CAAWE,aADf;AAEXnL,EAAAA,KAAK,EAAE,YAFI;AAGXvC,EAAAA,GAAG,EAAE,QAHM;AAIXb,EAAAA,IAAI,EAAE,UAJK;AAKXmD,EAAAA,UAAU,EAAE,YAAA;AALD,CAAb,CAAA;;AAQA,MAAM8X,uBAA0C,GAAGjY,OAAO,IAAI;AAC5D,EAAA,IAAI,CAACA,OAAL,EAAc,OAAO,EAAP,CAAA;AACd,EAAA,OAAOA,OAAO,CAACE,GAAR,CAAY8K,KAAK,IAAI;AAC1B,IAAMkN,MAAAA,QAAQ,GAAGF,IAAjB,CAAA;;AACA,IAAA,IAAIE,QAAJ,EAAc;AACZ,MAAA,OAAOC,OAAQ,CAACnN,KAAD,EAAQkN,QAAR,CAAf,CAAA;AACD,KAAA;;AACD,IAAA,OAAOlN,KAAP,CAAA;AACD,GANM,CAAP,CAAA;AAOD,CATD;;ACdA,MAAMoN,yBAAyB,GAAInD,WAAD,IAA8B;AAC9D,EAAA,MAAMoD,gBAAgB,GAAG;AACvB1F,IAAAA,MAAM,EAAE,CAAC;AAAEA,MAAAA,MAAAA;AAAF,KAAD,KAA6B9L,IAAI,CAACC,SAAL,CAAe6L,MAAf,CADd;AAEvB3U,IAAAA,OAAO,EAAE,SAFc;AAGvBwI,IAAAA,SAAS,EAAE,WAHY;AAIvB+L,IAAAA,QAAQ,EAAE,UAJa;AAKvBnV,IAAAA,SAAS,EAAE,WALY;AAMvBM,IAAAA,IAAI,EAAE;AAAE2W,MAAAA,KAAK,EAAE,YAAT;AAAuB4B,MAAAA,QAAQ,EAAG5R,CAAD,IAAe,CAACA,CAAAA;AAAjD,KANiB;AAOvBuH,IAAAA,aAAa,EAAE,eAAA;AAPQ,GAAzB,CAAA;AAUA9L,EAAAA,MAAM,CAAC8Q,IAAP,CAAYqE,WAAW,CAACnT,eAAxB,CAAyCsI,CAAAA,OAAzC,CAAiD0G,CAAC,IAAI;AACpDuH,IAAAA,gBAAgB,CAACvH,CAAD,CAAhB,GAAsB;AACpBuD,MAAAA,KAAK,EAAG,CAAkBvD,gBAAAA,EAAAA,CAAE,CADR,CAAA;AAEpBmF,MAAAA,QAAQ,EAAGjV,CAAD,IAAe,CAACA,CAAAA;AAFN,KAAtB,CAAA;AAID,GALD,CAAA,CAAA;AAOA,EAAA,OAAO0S,OAAO,CAACuB,WAAD,EAAcoD,gBAAd,CAAd,CAAA;AACD,CAnBD;;AC4EaC,MAAAA,WAAW,GAAG,CACzBC,SAAS,CAACzd,aAAD,EAAgBoC,YAAhB,CADgB,EAEzBqb,SAAS,CAACxd,SAAD,EAAYyd,QAAZ,CAFgB,EAGzBD,SAAS,CAAChd,iBAAD,EAAoBkd,WAApB,CAHgB,EAIzBF,SAAS,CAAC9c,kBAAD,EAAqBid,kBAArB,CAJgB,EAKzBH,SAAS,CAAC5c,oBAAD,EAAuB2B,kBAAvB,CALgB,EAMzBib,SAAS,CAAC3c,kBAAD,EAAqB2B,gBAArB,CANgB,EAOzBgb,SAAS,CAACzc,iBAAD,EAAoBqB,eAApB,CAPgB,EAQzBob,SAAS,CAACxc,kBAAD,EAAqB0B,gBAArB,CARgB,EASzB8a,SAAS,CAAC1c,iBAAD,EAAoBkC,eAApB,CATgB,EAUzBwa,SAAS,CAACvc,uBAAD,EAA0B2c,iBAA1B,CAVgB,EAApB;;AAaP,MAAM5Z,IAAI,GAAIoL,GAAD,IACXA,GAAG,IAAI,MAAA,IAAUA,GAAjB,IAAwB,OAAOA,GAAG,CAACpL,IAAX,KAAoB,UAA5C,GAAyDoL,GAAG,CAACpL,IAAJ,EAAzD,GAAsEoL,GADxE,CAAA;;AAGO,UAAUyO,eAAV,CACL1c,MADK,EAEL;AACA,EAAM,MAAA;AAAEC,IAAAA,OAAF;AAAWS,IAAAA,MAAX;AAAmBic,IAAAA,WAAnB;AAAgCrc,IAAAA,WAAhC;AAA6CD,IAAAA,KAAAA;AAA7C,GAAA,GAAuDL,MAA7D,CAAA;AACA,EAAMI,MAAAA,OAAO,GAAGuc,WAAW,GAAG5a,OAAO,CAAC4C,QAAX,GAAsB5C,OAAO,CAACsB,MAAzD,CAAA;AACA,EAAA,MAAMtC,KAAe,GAAG8B,IAAI,CAAC,MAAM+Z,MAAM,EAAb,CAA5B,CAAA;AACA,EAAA,MAAM1B,GAAG,GAAG5U,QAAQ,CAACvF,KAAD,CAApB,CAJA;;AAOA,EAAIwD,IAAAA,YAAY,GAAI7D,MAAM,IAAIA,MAAM,CAACF,KAAlB,IAA4Bmc,WAA/C,CAPA;;AAUA,EAAI,IAAA,CAACpY,YAAL,EAAmB;AAAA,IAAA,IAAA,YAAA,CAAA;;AACjB,IAAA,MAAM+C,IAAI,GAAGP,aAAa,CAAChG,KAAD,EAAQ,IAAR,CAA1B,CAAA;AACAwD,IAAAA,YAAY,GACV,CAAA+C,IAAI,SAAJ,IAAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,IAAI,CAAG,CAAH,CAAJ,CAAUuV,YAAV,MAAA,CAAA,YAAA,GAA0BjZ,MAAM,CAAC8Q,IAAP,CAAYhR,SAAS,CAAC3C,KAAD,EAAQ,IAAR,CAArB,CAA1B,MAA0B,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAsC,CAAtC,CAA1B,KAAsE,EADxE,CAAA;AAED,GAAA;;AAED,EAAA,MAAM+b,UAAU,GAAG;AACjBnc,IAAAA,IAAI,EAAEtB,iBADW;AAEjBe,IAAAA,OAFiB;AAGjBI,IAAAA,KAAK,EAAE+D,YAHU;AAIjBtE,IAAAA,OAJiB;AAKjBS,IAAAA,MALiB;AAMjBJ,IAAAA,WANiB;AAOjB4a,IAAAA,GAPiB;AAQjB7a,IAAAA,KAAAA;AARiB,GAAnB,CAAA;AAUA,EAAA,MAAM0c,GAAG,CAACD,UAAD,CAAT,CA1BA;;AA6BA,EAAA,MAAMrD,OAAO,GAAG;AAAErP,IAAAA,MAAM,EAAErJ,KAAK,CAACqJ,MAAAA;AAAhB,GAAhB,CA7BA;AAgCA;;AACA,EAAA,MAAM4S,IAAI,CAACC,YAAD,EAAe,EAAE,GAAGH,UAAL;AAAiBrD,IAAAA,OAAAA;AAAjB,GAAf,CAAV,CAAA;AACD,CAAA;AAEM,UAAU6C,QAAV,CAAmBtc,MAAnB,EAAgD;AAAA,EAAA,IAAA,cAAA,CAAA;;AACrD,EAAA,MAAMe,KAAe,GAAG8B,IAAI,CAAC,MAAM+Z,MAAM,EAAb,CAA5B,CAAA;;AACA,EAAI5c,IAAAA,MAAM,CAACG,MAAX,EAAmB;AACjB;AACA;AACA,IAAA,MAAM4c,GAAG,CAAC,EAAE,GAAG/c,MAAL;AAAaW,MAAAA,IAAI,EAAEhC,YAAAA;AAAnB,KAAD,CAAT,CAAA;AACD,GAAA;;AAED,EAAA,MAAMme,UAAU,GAAG,EACjB,GAAG9c,MADc;AAEjBW,IAAAA,IAAI,EAAErB,kBAFW;AAGjB4b,IAAAA,GAAG,EAAE5U,QAAQ,CAACvF,KAAD,CAHI;AAIjBP,IAAAA,KAAK,EAAER,MAAM,CAACQ,KAAP,KAAgBR,CAAAA,cAAAA,GAAAA,MAAM,CAACU,MAAvB,MAAgB,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAeF,KAA/B,CAAA;AAJU,GAAnB,CAAA;;AAOA,EAAA,IACEsc,UAAU,CAACtc,KAAX,KACCR,MAAM,CAACG,MAAP,IACCyD,MAAM,CAAC8Q,IAAP,CAAYrQ,QAAQ,CAACtD,KAAD,EAAQ+b,UAAU,CAACtc,KAAnB,EAA0BR,MAAM,CAACI,OAAjC,EAA0C,IAA1C,CAApB,CACGiF,CAAAA,MADH,GACY,CAHd,CADF,EAKE;AACA,IAAA,MAAM0X,GAAG,CAACD,UAAD,CAAT,CADA;;AAIA,IAAA,MAAMrD,OAAO,GAAG;AAAErP,MAAAA,MAAM,EAAErJ,KAAK,CAACqJ,MAAAA;AAAhB,KAAhB,CAAA;AAEA,IAAA,MAAM4S,IAAI,CAACC,YAAD,EAAe,EAAE,GAAGH,UAAL;AAAiBrD,MAAAA,OAAAA;AAAjB,KAAf,CAAV,CAAA;AACD,GAAA;AACF,CAAA;;AAED,UAAU8C,WAAV,CAAsBvc,MAAtB,EAAiD;AAC/C,EAAM,MAAA;AAAEQ,IAAAA,KAAK,EAAEmZ,QAAT;AAAmBvZ,IAAAA,OAAnB;AAA4BH,IAAAA,OAAO,GAAG,EAAA;AAAtC,GAAA,GAAwDD,MAA9D,CAAA;AACA,EAAA,MAAMkd,aAAa,GAAI,MAAMN,MAAM,CACjC5X,gBADiC,EAEjC2U,QAFiC,EAGjCvZ,OAHiC,EAIjC,IAJiC,CAAnC,CAAA;;AAMA,EAAA,IAAI8c,aAAa,CAAC7X,MAAd,GAAuB,CAA3B,EAA8B;AAC5B,IAAA,MAAM0X,GAAG,CAAC;AACRpc,MAAAA,IAAI,EAAE1B,YADE;AAERie,MAAAA,aAFQ;AAGRvD,MAAAA,QAHQ;AAIRvZ,MAAAA,OAAAA;AAJQ,KAAD,CAAT,CAAA;AAMA,IAAA,MAAMyZ,YAAY,GAAI,MAAM+C,MAAM,CAChCnX,kBADgC,EAEhCkU,QAFgC,EAGhCvZ,OAHgC,EAIhC,IAJgC,CAAlC,CAAA;AAQA,IAAA,MAAMI,KAAK,GAAI,MAAMoc,MAAM,CAACvY,QAAD,EAAWsV,QAAX,EAAqBvZ,OAArB,EAA8B,IAA9B,CAA3B,CAAA;AACA,IAAA,MAAM6E,OAAO,GAAGzE,KAAK,CAACyE,OAAN,IAAiB,EAAjC,CAAA;AACA,IAAA,MAAM6D,SAAS,GAAGtI,KAAK,CAACsI,SAAxB,CAAA;AAEA,IAAA,MAAMqU,kBAAkB,GACtBlY,OAAO,IACPiY,aAAa,CAAClZ,GAAd,CAAkB,CAACuB,SAAS,GAAG,EAAb,KAAoB;AACpC,MAAOyX,OAAAA,IAAI,CAACI,UAAD,EAAa;AACtBzD,QAAAA,QADsB;AAEtBpU,QAAAA,SAFsB;AAGtB7D,QAAAA,MAAM,EAAEuD,OAAO,CAACM,SAAD,CAHO;AAItBuD,QAAAA,SAJsB;AAKtB+Q,QAAAA,YAAY,EAAEA,YAAY,CAACtU,SAAD,CALJ;AAMtBnF,QAAAA,OANsB;AAOtBK,QAAAA,MAAM,EACH,aAAiBR,IAAAA,OAAjB,IAA4BA,OAAO,CAACod,WAArC,IACAtB,uBAAAA;AAToB,OAAb,CAAX,CAAA;AAWD,KAZD,CAFF,CAAA;AAeA,IAAA,IAAIoB,kBAAJ,EAAwB,MAAMG,GAAG,CAACH,kBAAD,CAAT,CAAA;AACzB,GAAA;AACF,CAAA;;AAYD,UAAUC,UAAV,CAAqBpd,MAArB,EAA+C;AAC7C,EAAM,MAAA;AACJ2Z,IAAAA,QADI;AAEJpU,IAAAA,SAFI;AAGJ7D,IAAAA,MAHI;AAIJoH,IAAAA,SAJI;AAKJ+Q,IAAAA,YALI;AAMJzZ,IAAAA,OANI;AAOJK,IAAAA,MAAAA;AAPI,GAAA,GAQFT,MARJ,CAAA;AASA,EAAM,MAAA;AAAEqP,IAAAA,aAAF;AAAiB8G,IAAAA,WAAjB;AAA8BrV,IAAAA,IAAAA;AAA9B,GAAA,GAAuCY,MAA7C,CAAA;AACA,EAAA,MAAM6b,eAAyC,GAAG;AAChD5c,IAAAA,IAAI,EAAEzB,qBAD0C;AAEhDkB,IAAAA,OAFgD;AAGhD0Z,IAAAA,KAAK,EAAE3W,SAHyC;AAIhDwW,IAAAA,QAJgD;AAKhDpU,IAAAA,SALgD;AAMhDsH,IAAAA,OAAO,EAAE,EANuC;AAOhDgN,IAAAA,YAPgD;AAQhDpZ,IAAAA,MAAAA;AARgD,GAAlD,CAAA;;AAWA,EAAI,IAAA;AACF,IAAA,IAAI4O,aAAJ,EAAmB;AACjB,MAAA,MAAMK,aAAa,GAAI,MAAMkN,MAAM,CACjCnU,mBADiC,CAAnC,CAAA;AAGA,MAAA,MAAM4B,KAAK,GAAG6L,WAAW,CACvBpT,KAAK,CAACC,OAAN,CAAcsM,aAAd,IAA+BA,aAA/B,GAA+C,CAACA,aAAD,CADxB,EAEvBK,aAFuB,EAGvByG,WAHuB,CAAzB,CAAA;AAKA,MAAA,MAAMtJ,OAAO,GAAI,MAAMb,YAAY,CAAC5B,MAAb,CACrBC,KADqB,EAErB,CAFqB,EAGrBvB,SAHqB,CAAvB,CAAA;AAMA,MAAI,IAAA,CAAC+D,OAAL,EAAc,MAAM,IAAIc,KAAJ,CAAU,+BAAV,CAAN,CAAA;AACd,MAAA,IAAKd,OAAD,CAAiBlM,IAAjB,KAA0B,OAA9B,EAAuC,MAAMkM,OAAN,CAAA;AAEvC0Q,MAAAA,eAAe,CAAC1Q,OAAhB,GAA0BA,OAA1B,CAAA;AACD,KAAA;;AACD,IAAA,IAAI/L,IAAJ,EAAU;AACR,MAAM+L,MAAAA,OAAO,GAAI,MAAMb,YAAY,CAAClB,qBAAb,CACrBhK,IADqB,EAErBgI,SAFqB,CAAvB,CAAA;AAKA,MAAI,IAAA,CAAC+D,OAAL,EACE,MAAM,IAAIc,KAAJ,CAAW,CAAA,wCAAA,EAA0C7M,IAAK,CAAA,CAAA,CAA1D,CAAN,CAAA;AACF,MAAA,IAAK+L,OAAD,CAAiBlM,IAAjB,KAA0B,OAA9B,EAAuC,MAAMkM,OAAN,CAAA;AAEvC0Q,MAAAA,eAAe,CAAC1Q,OAAhB,GAA0BA,OAA1B,CAAA;AACD,KAAA;AACF,GAjCD,CAiCE,OAAOiN,KAAP,EAAc;AACdyD,IAAAA,eAAe,CAAC5c,IAAhB,GAAuBxB,kBAAvB,CAAA;AACAoe,IAAAA,eAAe,CAACzD,KAAhB,GAAwBA,KAAxB,CAAA;AACD,GAAA;;AAED,EAAA,MAAMgD,UAAU,GAAGU,OAAsB,CAGvCD,eAHuC,EAGtB7D,cAHsB,CAAzC,CAAA;AAIA,EAAMqD,MAAAA,GAAG,CAACD,UAAD,CAAT,CAAA;AACD,CAAA;;AAED,UAAUG,YAAV,CAAuBjd,MAAvB,EAAmD;AACjD,EAAM,MAAA;AAAEI,IAAAA,OAAF;AAAWI,IAAAA,KAAX;AAAkBH,IAAAA,KAAAA;AAAlB,GAAA,GAA4BL,MAAlC,CAAA;;AACA,EAAI,IAAA;AACF,IAAA,MAAMe,KAAK,GAAI,MAAM6b,MAAM,EAA3B,CAAA;AACA,IAAA,MAAME,UAAU,GAAG,EACjB,GAAG9c,MADc;AAEjByZ,MAAAA,OAAO,EAAEzZ,MAAM,CAACyZ,OAAP,IAAkB;AAAErP,QAAAA,MAAM,EAAErJ,KAAK,CAACqJ,MAAAA;AAAhB,OAAA;AAFV,KAAnB,CAAA;AAKA,IAAM,MAAA,CAAC2O,WAAD,EAAckC,SAAd,CAAA,GAA2BD,mBAAmB,CAAC8B,UAAD,EAAa/b,KAAb,CAApD,CAAA;AAEA,IAAA,IAAIV,KAAK,KAAKA,KAAK,KAAK,IAAV,IAAkBA,KAAK,CAACod,aAA7B,CAAT,EACE9B,kBAAkB,CAACmB,UAAD,EAAa/b,KAAb,CAAlB,CAAA;;AAEF,IAAA,IAAIka,SAAJ,EAAe;AACb,MAAA,MAAM8B,GAAG,CAAC;AAAEpc,QAAAA,IAAI,EAAE7B,cAAR;AAAwB0B,QAAAA,KAAxB;AAA+BJ,QAAAA,OAAAA;AAA/B,OAAD,CAAT,CAAA;AACA,MAAA,MAAM4c,IAAI,CAACS,aAAD,EAAgB,EACxB,GAAGX,UADqB;AAExB1c,QAAAA,OAFwB;AAGxBI,QAAAA,KAHwB;AAIxBuY,QAAAA,WAJwB;AAKxB1Y,QAAAA,KAAAA;AALwB,OAAhB,CAAV,CAAA;AAOD,KAAA;AACF,GAtBD,CAsBE,OAAOyZ,KAAP,EAAmB;AACnB;AACA9F,IAAAA,GAAG,CAAC8F,KAAJ,CAAU,GAAG,CAAC,4BAAD,EAA+BA,KAA/B,EAAsCA,KAAK,CAAC4D,KAA5C,CAAb,CAAA,CAAA;AACD,GAAA;AACF,CAAA;;AAED,UAAUD,aAAV,CAAwBzd,MAAxB,EAAqD;AACnD,EAAM,MAAA;AAAEI,IAAAA,OAAF;AAAWI,IAAAA,KAAX;AAAkBuY,IAAAA,WAAlB;AAA+B9Y,IAAAA,OAAAA;AAA/B,GAAA,GAA2CD,MAAjD,CAAA;;AACA,EAAI,IAAA;AACF,IAAA,MAAMe,KAAK,GAAI,MAAM6b,MAAM,EAA3B,CAAA;AACA,IAAI5Z,IAAAA,MAAM,GAAG,EAAb,CAAA;AACA,IAAA,IAAIgV,cAAJ,CAAA;AACA,IAAA,IAAI2F,aAAJ,CAAA;AACA,IAAMlQ,MAAAA,SAAS,GAAGtG,YAAY,CAACpG,KAAD,EAAQP,KAAR,EAAeJ,OAAf,EAAwB,IAAxB,CAA9B,CAAA;;AAEA,IAAA,IAAIqN,SAAJ,EAAe;AACb,MAAMmQ,MAAAA,SAAS,GACZ,OAAO3d,OAAP,KAAmB,QAAnB,IACC,OAAOA,OAAO,CAACwN,SAAf,KAA6B,UAD9B,IAECxN,OAAO,CAACwN,SAAR,CAAkBsL,WAAlB,CAFF,IAGCmD,yBAAyB,CAACnD,WAAD,CAJ5B,CAAA;AAMA/V,MAAAA,MAAM,CAAC6J,OAAP,GAAkB,MAAMW,aAAa,CACnCC,SADmC,EAEnCmQ,SAFmC,CAArC,CAAA;AAIA5a,MAAAA,MAAM,CAAC2J,QAAP,GAAkB,CAAlB,CAAA;AACD,KAZD,MAYO;AACL,MAAIoM,IAAAA,WAAW,CAACvC,eAAhB,EAAiC;AAC/BmH,QAAAA,aAAa,GAAGrH,WAAW,CAACyC,WAAD,EAAc,IAAd,CAA3B,CAAA;AACAf,QAAAA,cAAc,GAAI,MAAMtL,WAAW,CACjCiR,aADiC,EAEjC5E,WAAW,CAACzO,SAFqB,EAGjCyO,WAAW,CAACjQ,SAHqB,EAIjCiQ,WAAW,CAACnQ,GAJqB,CAAnC,CAF+B;;AAS/BmQ,QAAAA,WAAW,CAACxY,UAAZ,GAAyBwM,kBAAkB,CAACiL,cAAD,CAAlB,CACtBhU,GADsB,CAClB6Z,EAAE,IAAA;AAAA,UAAA,IAAA,OAAA,CAAA;;AAAA,UAAIA,OAAAA,EAAJ,aAAIA,EAAJ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,OAAA,GAAIA,EAAE,CAAE1O,GAAR,MAAI,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS7N,EAAb,CAAA;AAAA,SADgB,CAAA,CAEtBI,MAFsB,CAEfmc,EAAE,IAAI,OAAOA,EAAP,KAAc,QAFL,CAAzB,CAAA;AAGD,OAAA;;AACD,MAAA,MAAMxT,KAAK,GAAGiM,WAAW,CAACyC,WAAD,CAAzB,CAAA;AAEA/V,MAAAA,MAAM,GAAG,MAAM0J,WAAW,CACxBrC,KADwB,EAExB0O,WAAW,CAACzO,SAFY,EAGxByO,WAAW,CAACjQ,SAHY,EAIxBiQ,WAAW,CAACnQ,GAJY,CAA1B,CAAA;AAMD,KAAA;;AAED,IAAA,MAAM2U,eAA8B,GAAG;AACrCvd,MAAAA,MADqC;AAErCgY,MAAAA,cAFqC;AAGrC9W,MAAAA,SAAS,EACN6X,WAAW,CAAC2B,cAAZ,IAA8B3B,WAAW,CAAC0B,iBAA3C,IACA1B,WAAW,CAAC7X,SALuB;AAMrC2X,MAAAA,WAAW,EAAE5S,UAAU,CAAClF,KAAD,EAAQP,KAAR,EAAeR,MAAM,CAACI,OAAtB,EAA+B,IAA/B,CANc;AAOrC4C,MAAAA,MAPqC;AAQrCjC,MAAAA,KAAAA;AARqC,KAAvC,CAAA;AAWA,IAAA,MAAM+b,UAAU,GAAGU,OAAsB,CAGvCD,eAHuC,EAGtB3F,aAHsB,CAAzC,CAAA;AAIA,IAAMmF,MAAAA,GAAG,CAACD,UAAD,CAAT,CAAA;AACD,GA3DD,CA2DE,OAAOhD,KAAP,EAAmB;AACnB;AACA9F,IAAAA,GAAG,CAAC8F,KAAJ,CAAU,GAAG,CAAC,4BAAD,EAA+BA,KAA/B,EAAsCA,KAAK,CAAC4D,KAA5C,CAAb,CAAA,CAAA;AACD,GAAA;AACF,CAAA;;AAED,UAAUlB,kBAAV,CAA6Bxc,MAA7B,EAA6D;AAC3D,EAAM,MAAA;AAAEwZ,IAAAA,OAAF;AAAWpZ,IAAAA,OAAX;AAAoBI,IAAAA,KAApB;AAA2BH,IAAAA,KAAAA;AAA3B,GAAA,GAAqCL,MAA3C,CAAA;AACA,EAAA,MAAMe,KAAK,GAAI,MAAM6b,MAAM,EAA3B,CAAA;AACA,EAAA,MAAMrY,YAAY,GAAGhB,eAAe,CAACxC,KAAD,CAApC,CAAA;;AAEA,EAAA,IAAI,CAACyY,OAAD,IAAYhZ,KAAK,KAAK+D,YAAtB,IAAsCnE,OAAO,KAAK2B,OAAO,CAAC4C,QAA9D,EAAwE;AACtE,IAAA,MAAMmZ,SAAS,GAAGpa,SAAS,CAAC3C,KAAD,EAAQ,IAAR,CAA3B,CAAA;AACA,IAAA,MAAMgd,WAAW,GAAGna,MAAM,CAAC8Q,IAAP,CAAYoJ,SAAZ,CAAuBpc,CAAAA,MAAvB,CAA8BoD,CAAC,IAAIA,CAAC,KAAKP,YAAzC,CAApB,CAAA;AAEA,IAAM+Y,MAAAA,GAAG,CACPS,WAAW,CAAC/Z,GAAZ,CAAgB,CAACga,YAAY,GAAG,EAAhB,KAAuB;AACrC,MAAA,MAAMC,aAAa,GAAG,EACpB,GAAGje,MADiB;AAEpBQ,QAAAA,KAAK,EAAEwd,YAFa;AAGpBxE,QAAAA,OAAO,EAAE,IAAA;AAHW,OAAtB,CAAA;AAKA,MAAM,MAAA,CAACT,WAAD,EAAckC,SAAd,CAAA,GAA2BD,mBAAmB,CAClDiD,aADkD,EAElDld,KAFkD,CAApD,CAAA;AAKA,MAAA,IAAIV,KAAK,KAAKA,KAAK,KAAK,IAAV,IAAkBA,KAAK,CAACmc,kBAA7B,CAAT,EACEb,kBAAkB,CAACsC,aAAD,EAAgBld,KAAhB,CAAlB,CAAA;AAEF,MACEka,OAAAA,SAAS,IACT+B,IAAI,CAACS,aAAD,EAAgB,EAClB,GAAGzd,MADe;AAElBW,QAAAA,IAAI,EAAE3B,sBAFY;AAGlBwa,QAAAA,OAAO,EAAE,IAHS;AAIlBhZ,QAAAA,KAAK,EAAEwd,YAJW;AAKlBjF,QAAAA,WAAAA;AALkB,OAAhB,CAFN,CAAA;AAUD,KAxBD,CADO,CAAT,CAAA;AA2BD,GAAA;AACF,CAAA;;AAED,UAAU1X,gBAAV,CAA2BrB,MAA3B,EAAwE;AACtE,EAAM,MAAA;AAAEsB,IAAAA,EAAF;AAAMrB,IAAAA,OAAAA;AAAN,GAAA,GAAkBD,MAAxB,CAAA;AACA,EAAA,MAAMe,KAAK,GAAI,MAAM6b,MAAM,EAA3B,CAAA;AACA,EAAA,MAAMvZ,MAAM,GAAGK,SAAS,CAAC3C,KAAD,EAAQ,IAAR,CAAxB,CAAA;AACA,EAAA,MAAMuG,IAAI,GAAGP,aAAa,CAAChG,KAAD,EAAQ,IAAR,CAA1B,CAAA;AACA,EAAI8W,IAAAA,SAAS,GAAGvQ,IAAH,KAAGA,IAAAA,IAAAA,IAAH,KAAGA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAGhG,EAAH,CAAJ,CAAWiD,YAA3B,CAAA;;AACA,EAAI,IAAA,CAACsT,SAAL,EAAgB;AACdjU,IAAAA,MAAM,CAACE,OAAP,CAAeT,MAAf,CAAuBW,CAAAA,GAAvB,CAA2B,CAAC,CAACM,SAAD,EAAY9D,KAAZ,CAAD,KAAwB;AACjD,MAAIA,IAAAA,KAAK,CAAC0d,KAAN,KAAgB5c,EAAhB,IAAsB,CAAAgG,IAAI,KAAJ,IAAA,IAAAA,IAAI,KAAA,KAAA,CAAJ,YAAAA,IAAI,CAAGhG,EAAH,CAAJ,CAAWub,YAAX,MAA4BvY,SAAtD,EACEuT,SAAS,GAAGvT,SAAZ,CAAA;AACH,KAHD,CAAA,CAAA;AAID,GAXqE;AAatE;;;AACA,EAAI,IAAA,CAACuT,SAAL,EACEA,SAAS,GAAGjU,MAAM,CAACE,OAAP,CAAeT,MAAf,CAAA,CAAuB3B,MAAvB,CAA8B,CAAC,GAAGoD,CAAH,CAAD,KAAWA,CAAC,CAACoZ,KAAF,KAAY5c,EAArD,CAAyD,CAAA,CAAzD,CAA4D,CAAA,CAA5D,CAAZ,CAAA;AAEF,EAAMyb,MAAAA,GAAG,CAAChd,WAAW,CAACoe,oBAAwB,CAACtG,SAAD,CAAzB,EAAsC5X,OAAtC,CAAZ,CAAT,CAAA;AACD,CAAA;;AAED,UAAUe,YAAV,CAAuBhB,MAAvB,EAAgE;AAC9D,EAAM,MAAA;AAAEC,IAAAA,OAAAA;AAAF,GAAA,GAAcD,MAApB,CAAA;AACA,EAAM8L,MAAAA,GAAG,GAAI,MAAMsS,QAAQ,CAAC,EAAD,EAAKne,OAAL,CAA3B,CAAA;AACA,EAAA,MAAM8c,GAAG,CAAClc,QAAQ,CAACiL,GAAD,CAAT,CAAT,CAAA;AACD,CAAA;;AAED,UAAU1K,kBAAV,CAA6BpB,MAA7B,EAA4E;AAC1E,EAAM,MAAA;AAAEQ,IAAAA,KAAF;AAASP,IAAAA,OAAAA;AAAT,GAAA,GAAqBD,MAA3B,CAAA;AACA,EAAMkB,MAAAA,SAAS,GAAI,MAAM0b,MAAM,CAACnW,YAAD,EAAejG,KAAf,CAA/B,CAAA;AACA,EAAA,MAAMsL,GAAG,GAAI,MAAMsS,QAAQ,CAAC;AAAE5d,IAAAA,KAAF;AAASU,IAAAA,SAAAA;AAAT,GAAD,EAAuBjB,OAAvB,CAA3B,CAAA;AACA,EAAA,MAAM8c,GAAG,CAAClc,QAAQ,CAACiL,GAAD,CAAT,CAAT,CAAA;AACD,CAAA;;AAED,UAAUvK,gBAAV,CAA2BvB,MAA3B,EAAwE;AACtE,EAAM,MAAA;AAAEwB,IAAAA,IAAF;AAAQvB,IAAAA,OAAAA;AAAR,GAAA,GAAoBD,MAA1B,CAAA;AACA,EAAA,MAAM8L,GAAG,GAAI,MAAMsS,QAAQ,CAAC;AAAE5c,IAAAA,IAAAA;AAAF,GAAD,EAAWvB,OAAX,CAA3B,CAAA;AACA,EAAA,MAAM8c,GAAG,CAAClc,QAAQ,CAACiL,GAAD,CAAT,CAAT,CAAA;AACD,CAAA;;AAED,UAAUjK,eAAV,CAA0B7B,MAA1B,EAAsE;AACpE,EAAM,MAAA;AAAE8B,IAAAA,OAAF;AAAWtB,IAAAA,KAAX;AAAkBP,IAAAA,OAAAA;AAAlB,GAAA,GAA8BD,MAApC,CAAA;AACA,EAAA,MAAM8L,GAAG,GAAI,MAAMsS,QAAQ,CAAC;AAAEtc,IAAAA,OAAF;AAAWtB,IAAAA,KAAAA;AAAX,GAAD,EAAqBP,OAArB,CAA3B,CAAA;AACA,EAAA,MAAM8c,GAAG,CAAClc,QAAQ,CAACiL,GAAD,CAAT,CAAT,CAAA;AACD,CAAA;;AAED,UAAU7K,eAAV,CAA0BjB,MAA1B,EAAsE;AACpE,EAAM,MAAA;AAAEkB,IAAAA,SAAF;AAAajB,IAAAA,OAAb;AAAsBkB,IAAAA,UAAAA;AAAtB,GAAA,GAAqCnB,MAA3C,CAAA;AACA,EAAA,MAAM8L,GAAG,GAAI,MAAMsS,QAAQ,CAAC;AAAEld,IAAAA,SAAAA;AAAF,GAAD,EAAgBjB,OAAhB,CAA3B,CAAA;AACA,EAAA,MAAM8c,GAAG,CAAClc,QAAQ,CAACiL,GAAD,CAAT,CAAT,CAAA;AACA,EAAI,IAAA,OAAO3K,UAAP,KAAsB,WAA1B,EAAuCya,SAAS,CAACza,UAAD,CAAT,CAAA;AACxC,CAAA;;AAED,UAAUsb,iBAAV,CAA4Bzc,MAA5B,EAA0E;AACxE,EAAM,MAAA;AAAEC,IAAAA,OAAF;AAAWkB,IAAAA,UAAAA;AAAX,GAAA,GAA0BnB,MAAhC,CAAA;AACA,EAAM8L,MAAAA,GAAG,GAAI,MAAMsS,QAAQ,CAAC,EAAD,EAAKne,OAAL,CAA3B,CAAA;AACA,EAAA,MAAM8c,GAAG,CAAClc,QAAQ,CAACiL,GAAD,CAAT,CAAT,CAAA;AACA,EAAI,IAAA,OAAO3K,UAAP,KAAsB,WAA1B,EAAuCya,SAAS,CAACza,UAAD,CAAT,CAAA;AACxC,CAAA;;AAED,UAAUid,QAAV,CACE;AACE5d,EAAAA,KADF;AAEEsB,EAAAA,OAFF;AAGEZ,EAAAA,SAAS,GAAG,CAHd;AAIEM,EAAAA,IAAAA;AAJF,CADF,EAOEvB,OAPF,EAQE;AACA,EAAA,MAAMc,KAAK,GAAI,MAAM6b,MAAM,EAA3B,CAAA;AACA,EAAA,MAAMyB,MAAM,GAAG,CAAApe,OAAO,KAAP,IAAA,IAAAA,OAAO,KAAA,KAAA,CAAP,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEY,QAAT,KAAqB0W,mBAApC,CAAA;AACA,EAAMzL,MAAAA,GAAG,GAAGuS,MAAM,CAAC;AAAEtd,IAAAA,KAAF;AAASP,IAAAA,KAAT;AAAgBsB,IAAAA,OAAhB;AAAyBZ,IAAAA,SAAzB;AAAoCM,IAAAA,IAAAA;AAApC,GAAD,CAAlB,CAHA;;AAKA,EAAA,OAAQ,CAAEsK,EAAAA,GAAG,CAAChL,IAAK,CAAGgL,EAAAA,GAAG,CAAC1B,MAAJ,IAAe,CAAA,CAAA,EAAG0B,GAAG,CAAC1B,MAAO,CAAA,CAA9B,IAAoC,EAAG,CACzD0B,EAAAA,GAAG,CAACwL,IAAJ,IAAa,CAAA,CAAA,EAAGxL,GAAG,CAACwL,IAAK,CAAA,CAA1B,IAAgC,EACjC,CAFD,CAAA,CAAA;AAGD;;;;"}
|
package/esm/search.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useMemo, useEffect } from 'react';
|
|
2
2
|
import { connect, useDispatch, useSelector } from 'react-redux';
|
|
3
|
-
import { g as getCurrentFacet, b as getPageIndex$2, e as getCurrentTab$1, h as getFacet$1, i as getTabFacets$1, j as getFacetsTotalCount$1, k as getFacetTitles$1, l as getFeaturedResults$2, m as getRenderableFilters$2, n as getIsLoading$2, p as getPaging, q as getPageIsLoading$2, r as getResults, s as getSearchTerm$2, u as getSearchTotalCount$1, v as getSelectedFilters, w as getQueryParameter$2, x as getTabsAndFacets$1, y as getTotalCount$1, z as withMappers, A as clearFilters, B as updateCurrentFacet, C as updateCurrentTab, D as updatePageIndex, E as updateSearchTerm, F as updateSelectedFilters, G as updateSortOrder, H as selectListing, I as mapStateToSearchUri, J as Context$1, K as selectFacets, L as triggerSearch, M as getFilters, U as UPDATE_SORT_ORDER, N as toArray, O as UPDATE_SELECTED_FILTERS, P as UPDATE_SEARCH_TERM, Q as UPDATE_PAGE_INDEX, S as SET_SEARCH_FILTERS, R as SET_SEARCH_ENTRIES, T as SET_ROUTE_FILTERS, V as LOAD_FILTERS_COMPLETE, W as LOAD_FILTERS_ERROR, X as LOAD_FILTERS, Y as EXECUTE_SEARCH_ERROR, Z as EXECUTE_SEARCH, _ as CLEAR_FILTERS, $ as APPLY_CONFIG } from './sagas-
|
|
4
|
-
export { a0 as actions, a5 as doSearch, a1 as expressions, a2 as queries, a7 as sagas, a3 as selectors, a6 as setRouteFilters, a4 as types } from './sagas-
|
|
3
|
+
import { g as getCurrentFacet, b as getPageIndex$2, e as getCurrentTab$1, h as getFacet$1, i as getTabFacets$1, j as getFacetsTotalCount$1, k as getFacetTitles$1, l as getFeaturedResults$2, m as getRenderableFilters$2, n as getIsLoading$2, p as getPaging, q as getPageIsLoading$2, r as getResults, s as getSearchTerm$2, u as getSearchTotalCount$1, v as getSelectedFilters, w as getQueryParameter$2, x as getTabsAndFacets$1, y as getTotalCount$1, z as withMappers, A as clearFilters, B as updateCurrentFacet, C as updateCurrentTab, D as updatePageIndex, E as updateSearchTerm, F as updateSelectedFilters, G as updateSortOrder, H as selectListing, I as mapStateToSearchUri, J as Context$1, K as selectFacets, L as triggerSearch, M as getFilters, U as UPDATE_SORT_ORDER, N as toArray, O as UPDATE_SELECTED_FILTERS, P as UPDATE_SEARCH_TERM, Q as UPDATE_PAGE_INDEX, S as SET_SEARCH_FILTERS, R as SET_SEARCH_ENTRIES, T as SET_ROUTE_FILTERS, V as LOAD_FILTERS_COMPLETE, W as LOAD_FILTERS_ERROR, X as LOAD_FILTERS, Y as EXECUTE_SEARCH_ERROR, Z as EXECUTE_SEARCH, _ as CLEAR_FILTERS, $ as APPLY_CONFIG } from './sagas-489c29ca.js';
|
|
4
|
+
export { a0 as actions, a5 as doSearch, a1 as expressions, a2 as queries, a7 as sagas, a3 as selectors, a6 as setRouteFilters, a4 as types } from './sagas-489c29ca.js';
|
|
5
5
|
import 'jsonpath-mapper';
|
|
6
6
|
import { createSelector } from 'reselect';
|
|
7
7
|
import merge from 'deepmerge';
|
|
@@ -66,9 +66,9 @@ const withSearch = mappers => SearchComponent => {
|
|
|
66
66
|
clearFilters: () => withMappers(clearFilters(), mappers),
|
|
67
67
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
68
68
|
updateCurrentTab: id => withMappers(updateCurrentTab(id), mappers),
|
|
69
|
-
updatePageIndex: pageIndex => withMappers(updatePageIndex(pageIndex), mappers),
|
|
69
|
+
updatePageIndex: (pageIndex, scrollYPos) => withMappers(updatePageIndex(pageIndex, scrollYPos), mappers),
|
|
70
70
|
updateSearchTerm: term => withMappers(updateSearchTerm(term), mappers),
|
|
71
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false) => withMappers(updateSelectedFilters(filter, key, isUnknownItem), mappers),
|
|
71
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), mappers),
|
|
72
72
|
updateSortOrder: orderBy => withMappers(updateSortOrder(orderBy), mappers)
|
|
73
73
|
};
|
|
74
74
|
const connector = connect(mapStateToProps, mapDispatchToProps);
|
|
@@ -118,9 +118,9 @@ const withListing = mappers => ListingComponent => {
|
|
|
118
118
|
const mapDispatchToProps = {
|
|
119
119
|
clearFilters: () => withMappers(clearFilters(), mappers),
|
|
120
120
|
updateCurrentFacet: facet => withMappers(updateCurrentFacet(facet), mappers),
|
|
121
|
-
updatePageIndex: pageIndex => withMappers(updatePageIndex(pageIndex), mappers),
|
|
121
|
+
updatePageIndex: (pageIndex, scrollYPos) => withMappers(updatePageIndex(pageIndex, scrollYPos), mappers),
|
|
122
122
|
updateSearchTerm: term => withMappers(updateSearchTerm(term), mappers),
|
|
123
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false) => withMappers(updateSelectedFilters(filter, key, isUnknownItem), mappers),
|
|
123
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), mappers),
|
|
124
124
|
updateSortOrder: orderBy => withMappers(updateSortOrder(orderBy), mappers)
|
|
125
125
|
};
|
|
126
126
|
return connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));
|
|
@@ -187,9 +187,9 @@ const useFacets = ({
|
|
|
187
187
|
clearFilters: () => dispatch(withMappers(clearFilters(), m)),
|
|
188
188
|
updateCurrentFacet: facet => dispatch(withMappers(updateCurrentFacet(facet), m)),
|
|
189
189
|
updateCurrentTab: id => withMappers(updateCurrentTab(id), m),
|
|
190
|
-
updatePageIndex: pageIndex => dispatch(withMappers(updatePageIndex(pageIndex), m)),
|
|
190
|
+
updatePageIndex: (pageIndex, scrollYPos) => dispatch(withMappers(updatePageIndex(pageIndex, scrollYPos), m)),
|
|
191
191
|
updateSearchTerm: term => dispatch(withMappers(updateSearchTerm(term), m)),
|
|
192
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem), m)),
|
|
192
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), m)),
|
|
193
193
|
updateSortOrder: orderBy => dispatch(withMappers(updateSortOrder(orderBy), m))
|
|
194
194
|
};
|
|
195
195
|
const {
|
|
@@ -280,9 +280,9 @@ const useListing = ({
|
|
|
280
280
|
const dispatchProps = {
|
|
281
281
|
clearFilters: () => dispatch(withMappers(clearFilters(), m)),
|
|
282
282
|
updateCurrentFacet: facet => dispatch(withMappers(updateCurrentFacet(facet), m)),
|
|
283
|
-
updatePageIndex: pageIndex => dispatch(withMappers(updatePageIndex(pageIndex), m)),
|
|
283
|
+
updatePageIndex: (pageIndex, scrollYPos) => dispatch(withMappers(updatePageIndex(pageIndex, scrollYPos), m)),
|
|
284
284
|
updateSearchTerm: term => dispatch(withMappers(updateSearchTerm(term), m)),
|
|
285
|
-
updateSelectedFilters: (filter, key, isUnknownItem = false) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem), m)),
|
|
285
|
+
updateSelectedFilters: (filter, key, isUnknownItem = false, scrollYPos) => dispatch(withMappers(updateSelectedFilters(filter, key, isUnknownItem, scrollYPos), m)),
|
|
286
286
|
updateSortOrder: orderBy => dispatch(withMappers(updateSortOrder(orderBy), m))
|
|
287
287
|
};
|
|
288
288
|
const {
|