{"version":3,"sources":["webpack:///./src/views/homeComponents/refinitiv.vue?3f23","webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/chart.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./public/img/Logo Refinitiv.jpg","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","webpack:///./src/common/dates.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","webpack:///./node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.js","webpack:///./src/views/homeComponents/fxRates.vue?2e42","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","webpack:///./src/views/homeComponents/homeRegionalMap.vue?6218","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/data.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/trendlines.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/segments.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/series.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/striplines.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/categories.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/multilevellabels.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/axes.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/rows.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/rangecolorsettings.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/annotations.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/selecteddataindexes.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/indicators.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-charts/src/chart/chart.component.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack:///./src/views/homeComponents/contractData.vue?704f","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack:///./src/views/Home.vue?fcf1","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./src/common/orderGridFutureEletricity.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./src/common/orderGridFutureGas.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./src/views/homeComponents/homeBarChart.vue?43c4","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./src/views/Home.vue?be65","webpack:///./src/views/homeComponents/contractData.vue?d32c","webpack:///src/views/homeComponents/contractData.vue","webpack:///./src/views/homeComponents/contractData.vue?e943","webpack:///./src/views/homeComponents/contractData.vue","webpack:///./src/views/homeComponents/gasData.vue?ac3b","webpack:///src/views/homeComponents/gasData.vue","webpack:///./src/views/homeComponents/gasData.vue?ec03","webpack:///./src/views/homeComponents/gasData.vue","webpack:///./src/views/homeComponents/clientCard.vue?228e","webpack:///src/views/homeComponents/clientCard.vue","webpack:///./src/views/homeComponents/clientCard.vue?62c3","webpack:///./src/views/homeComponents/clientCard.vue","webpack:///./src/views/homeComponents/triggersCard.vue?fe4d","webpack:///src/views/homeComponents/triggersCard.vue","webpack:///./src/views/homeComponents/triggersCard.vue?f887","webpack:///./src/views/homeComponents/triggersCard.vue","webpack:///./src/views/homeComponents/homeRegionalMap.vue?a642","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/model/constants.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/utils/helper.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/model/theme.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/model/base.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/layers/bing-map.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/layers/color-mapping.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/layers/layer-panel.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/user-interaction/annotation.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/maps.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/initialshapeselection.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/markersettings.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/colormapping.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/bubblesettings.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/navigationlinesettings.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/layers.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/annotations.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-maps/src/maps/maps.component.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/layers/legend.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/layers/marker.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/user-interaction/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-maps/src/maps/user-interaction/zoom.js","webpack:///src/views/homeComponents/homeRegionalMap.vue","webpack:///./src/views/homeComponents/homeRegionalMap.vue?8348","webpack:///./src/views/homeComponents/homeRegionalMap.vue","webpack:///./src/views/homeComponents/fxRates.vue?fbcb","webpack:///src/views/homeComponents/fxRates.vue","webpack:///./src/views/homeComponents/fxRates.vue?1332","webpack:///./src/views/homeComponents/fxRates.vue","webpack:///./src/views/homeComponents/powerRates.vue?6a6e","webpack:///src/views/homeComponents/powerRates.vue","webpack:///./src/views/homeComponents/powerRates.vue?aaa0","webpack:///./src/views/homeComponents/powerRates.vue","webpack:///./src/views/homeComponents/gasRates.vue?889c","webpack:///src/views/homeComponents/gasRates.vue","webpack:///./src/views/homeComponents/gasRates.vue?ac9e","webpack:///./src/views/homeComponents/gasRates.vue","webpack:///./src/views/homeComponents/refinitiv.vue?ddb4","webpack:///src/views/homeComponents/refinitiv.vue","webpack:///./src/views/homeComponents/refinitiv.vue?c474","webpack:///./src/views/homeComponents/refinitiv.vue","webpack:///./node_modules/@syncfusion/ej2-layouts/src/dashboard-layout/dashboard-layout.js","webpack:///./node_modules/@syncfusion/ej2-vue-layouts/src/dashboard-layout/panels.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-layouts/src/dashboard-layout/dashboardlayout.component.js","webpack:///./src/views/homeComponents/homeBarChart.vue?c3e9","webpack:///src/views/homeComponents/homeBarChart.vue","webpack:///./src/views/homeComponents/homeBarChart.vue?e3ab","webpack:///./src/views/homeComponents/homeBarChart.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?358f","webpack:///./src/views/Home.vue","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/stacked-column.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/utils/print.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/base.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./node_modules/@syncfusion/ej2-vue-dropdowns/src/auto-complete/autocomplete.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./src/common/unitConversions.js","webpack:///./src/views/homeComponents/triggersCard.vue?0d4e","webpack:///./src/views/homeComponents/gasRates.vue?fdb4","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","webpack:///./src/views/homeComponents/powerRates.vue?957b","webpack:///./node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","RTL","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","POPUP_CONTAINER","Animation","_super","apply","effect","duration","delay","Tooltip","options","element","_this","call","mouseMoveEvent","mouseMoveTarget","containerElement","isBodyContainer","initialize","formatPosition","_a","_b","position","indexOf","split","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","createElement","className","tipClass","appendChild","tooltipEle","renderPopup","elePos","mouseTrail","top","left","getTooltipPosition","classList","remove","popupObj","height","width","X","Y","enableRtl","open","openPopupHandler","bind","close","closePopupHandler","getScalingFactor","x","y","scalingFactors","elementsWithTransform","closest","contains","computedStyle","window","getComputedStyle","transformValue","getPropertyValue","matrixValues","match","map","parseFloat","style","display","parentWithZoomStyle","zoom","pos","getBoundingClientRect","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","reposition","findTarget","dataBind","needTemplateReposition","trigger","tooltipEventArgs","isReact","opensOn","clearTemplate","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","Math","round","showTipPointer","clientHeight","clientWidth","offsetWidth","offsetHeight","offsetX","offsetY","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","cssClass","getAttribute","setAttribute","removeAttribute","content","innerHTML","HTMLElement","enableHtmlSanitizer","setProperties","sanitize","enableHtmlParse","tempFunction","tempArr","id","undefined","root","templateFunction","renderReactTemplates","renderCloseIcon","isSticky","tipClose","add","touchStartEvent","onStickyClose","existingCloseIcon","querySelector","addDescribedBy","describedby","push","join","trim","removeDescribedBy","index","splice","orgdescribedby","tapHoldHandler","evt","clearTimeout","autoCloseTimer","targetHover","originalEvent","touchEndHandler","e","setTimeout","targetClick","hideTooltip","animation","closeDelay","targetList","slice","ctrlId","document","_i","targetList_1","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showAnimation","showTimer","hideTimer","openDelay","type","cancel","event","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","attrs","role","styles","tooltipBeforeRender","tooltipAfterRender","stop","appendContainer","ctrlObj","container","body","tagName","isDevice","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","name","timingFunction","show","onMouseMove","wireMouseEvents","tooltip","viewContainerRef","checkCollision","horizontal","vertical","affectedPos","checkCollideTarget","offsetLeft","pageXOffset","scrollLeft","offsetTop","pageYOffset","scrollTop","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","parseInt","toString","positionString","newPos","offsetType","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","destroy","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","preventDefault","touches","pageX","pageY","colpos","keyDown","keyCode","touchEnd","scrollHandler","render","wireEvents","renderComplete","preRender","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHoldThreshold","tapHold","touchEndEvent","targetsList","targetList_2","unwireEvents","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","getModuleName","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","keys","prop","refresh","target_2","currentTarget","currentTarget_1","DataLabelSettings","color","right","bottom","size","fontStyle","fontWeight","fontFamily","MarkerSettings","ParetoOptions","Points","symbolLocations","regions","percentage","regionData","isSelect","marker","visible","isPointInRange","verticalError","verticalNegativeError","horizontalError","horizontalNegativeError","verticalPositiveError","horizontalPositiveError","Trendline","clipRect","setDataSource","series","chart","points","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","rangeColorPoints","isAdvancedColor","currentViewData","seriesType","isRectTypeSeries","processJsonData","point","xName","Series","textMappingName","dataLabel","processInternalData","category","paretoSeriesModule","performCumulativeCalculation","len","xMin","Infinity","xMax","yMin","yMax","sizeMax","getSeriesType","xAxis","valueType","dataPoint","pushCategoryData","pushData","setEmptyPoint","rangeColorsInterior","option","skeleton","dateParser","intl","getDateParser","dateFormatter","getDateFormat","Date","parse","parseJson","val","xValue","isBlazor","stockChart","drawType","chartAreaType","isArea","isRange","findSplinePoint","maximum","minimum","calculateBinValues","histogramValues","binWidth","rangeColorSettings","visibleSeries","interior","yValue","min","max","xData","getObjectValueByMappingString","enableComplexProperty","getObjectValue","high","low","volume","pointColorMapping","errorBar","errorBarColor","errorBarColorMapping","yName","text","tooltipMappingName","isAdvancedColorSupported","rangeColorName","colorName","colorValue","getPointFillColor","pointFill","value","rangeMap","start","end","colors","mappingName","data","findVisibility","isEmpty","mode","emptyPointSettings","yData","isNaN","getAverage","yValues","yAxisMin","yAxis","yAxisMax","setXYMinMax","setHiloMinMax","filter","sort","a","seriesMinY","isLogAxis","isNegativeValue","rangePadding","pointX","shared","isIndexed","labels","indexLabels","member","previous","next","refreshDataManager","dataSource","isAngular","query","dataManager","dataModule","getData","generateQuery","requiresCount","then","dataManagerSuccess","result","count","isRemoteData","allowServerDataBinding","localData","argsData","fill","findCurrentData","recordsCount","refreshChart","refreshTechnicalIndicator","trendlines","trendline","refreshBound","initialRender","stockChartDataManagerSuccess","parent","propName","defaultValue","isArray","isRectSeries","drawPoints","lowDrawPoints","delayedAnimation","refreshAxisLabel","item","_c","findSeriesCollection","column","row","isStack","seriesCollection","axes","rowAxis","rowSeries","_d","_e","axis","_f","_g","rectSeriesInChart","toLowerCase","calculateStackedValue","isStacking100","columns","columnItem","rows","calculateStackingValues","startValues","endValues","stackingGroup","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","groupingValues","visiblePoints","k","stackingSeies","stackedValues","seriesCollection_2","seriesCollection_1","j","pointsLength","toFixed","abs","isColumnBarType","startFromZero","findPercentageOfStacking","values","stackingSeies_1","seriesCollection_3","isStack100","renderSeries","replace","createSeriesElements","requireInvertedAxis","errorBarModule","dataLabelModule","appendSeriesElement","seriesElements","enableCanvas","performAnimation","elementId","explodeValue","border","svgRenderer","renderer","markerHeight","markerWidth","markerMaxValue","radius","clipRectElement","redraw","columnIndex","rowIndex","transform","symbolElement","seriesElement","createGroup","checkTabindex","errorBarElement","textElement","dataLabelElements","shapeElement","hasChildNodes","enable","animateSeries","isStockChartRendered","doAnimation","doErrorBarAnimation","markerRender","doMarkerAnimation","info","isIE","doDataLabelAnimation","setPointColor","setBorderColor","ChartAnnotationSettings","LabelBorder","MultiLevelCategories","StripLineSettings","MultiLevelLabels","ScrollbarSettingsRange","ScrollbarSettings","NiceInterval","calculateDateTimeNiceInterval","isChart","interval","oneDay","startDate","endDate","totalDays","getTime","actualIntervalType","intervalType","calculateNumericNiceInterval","getSkeleton","currentValue","previousValue","isIntervalInDecimal","findCustomFormats","labelFormat","commonXvalues","addEventListener","isDestroyed","cancelEvent","isPointer","on","mouseLeaveHandler","longPress","touchMoveEvent","mouseMoveHandler","mouseUpHandler","control","lierIndex","isTouch","isSelected","mouseX","mouseY","chartAxisLayoutPanel","seriesClipRect","crosshair","startMove","fadeOutMode","removeTooltip","fadeOutDuration","findData","previousPoints","scaleX","scaleY","onPanning","disableTrackTooltip","markerMove","svgElement","getElement","isStockSvg","firstChild","childNodes","isTooltip","tooltipDiv","getTooltipElement","getElementById","renderGroupedTooltip","renderSeriesTooltip","findHeader","header","parseTemplate","findShapes","enableMarker","currentPoints","shape","isFirst","dataEditingModule","isPointDragging","triggerTooltipRender","getTooltipText","isRemove","mergeXvalues","getClosestX","findMouseValue","textCollection","headerText","tooltipTemplate","template","textStyle","pointY","seriesIndex","seriesName","pointIndex","pointText","borderWidth","padding","chartTooltipSuccess","removeHighlight","removeText","formattedText","concat","location_1","getSymbolLocation","location","createTooltip","findMarkerHeight","availableSize","getTemplateText","pointData","getBoxLocation","getWaterfallRegion","getRangeArea","inverted","getFormat","formatPointValue","valueY","rect","valueX","lastData","dataCollection","stopAnimation","pointXValue","pointYValue","tempData","extraPoints","closestXValue","Number","MAX_VALUE","closetYValue","argument","enableTooltip","commonXValue","showNearestPoint","collection","dataCollection_1","data_1","triggerSharedTooltip","toolbarHeight","titleHeight","enablePeriodSelector","title","titleStyle","themeStyle","tooltipLabelFont","sharedTooltip","location_2","findSharedLocation","outliers","format","textValue","dataValue","RegExp","source","getPrototypeOf","isXPoint","isYPoint","customLabelFormat","getNumberFormat","useGrouping","useGroupingSeparator","tooltipFormat","getIndicatorTooltipFormat","textX","toolTip","removeHighlightedMarker","fadeOut","data_2","Data","serviceLocator","dataState","isPending","resolver","group","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","json","toIndex","fromIndex","gObj","isQueryInvokedFromData","isVue","skipPage","isAutoCompleteCall","getQuery","clone","columnQueryMode","select","getColumns","isPrimaryKey","field","selectQueryFields","filterQuery","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","groupQuery","aggregates","cols","types","aggregate","fName","queries","args","notify","allowPaging","enableVirtualization","enableInfiniteScrolling","pageSettings","currentPage","pageCount","pageSize","infiniteScrollModule","page","pagerModule","pagerObj","isAllPage","isManualRefresh","offline","adaptor","allowGrouping","groupSettings","enableLazyLoading","lazyLoad","getColumnByField","log","moduleName","columnName","isGrpFmt","enableGroupByFormat","formatGroupColumn","allowSorting","sortSettings","sortGrp","col","setSortDirection","direction","fn","sortComparer","isRemote","isForeignColumn","sortByForeignKey","sortBy","getSortDirection","fcolumn","isForeignKey","sSettings","searchSettings","fields","getSearchColumnFieldNames","predicateList","needForeignKeySearch","getForeignKeyColumns","some","foreignKeyValue","fGeneratePredicate","operator","ignoreCase","ignoreAccent","predList","or","where","search","skipFoerign","foreignColEmpty","actualFilter","foreignColumn","allowFiltering","filterSettings","colType","foreignCols","defaultFltrCols","columns_1","gridColumn","getColumnByUid","uid","grabColumnByFieldFromAllCols","excelPredicate","getPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","columnData","and","fPredicate","predicate","predicates","requestType","getKey","foreignKeyData","getPrimaryKeyFieldNames","def","eventPromise","promise","crud","fromTable","changes","addedRecords","deletedRecords","changedRecords","saveChanges","insert","executeQuery","ready","deferred_1","resolve","catch","reject","date","getDay","getHours","getMinutes","getSeconds","getMilliseconds","getFormatter","formatVal","toView","pr","update","previousData","original","deff","endEdit","setState","url","records","getDataModule","off","getState","state","getForeignKeyDataState","setForeignKeyDataState","getStateEventArgument","adaptr","dm","processQuery","JSON","pvtData","dataArgs","disablePageWiseAggregates","isDataChanged","action","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","axisPadding","CartesianAxisLayoutPanel","chartModule","measureAxis","chartAreaWidth","chartArea","crossAt","initialClipRect","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","delayRedraw","calculateAxisSize","calculateFixedChartArea","refreshAxis","margin","legendSettings","legendModule","legendBounds","farSizes","calculateRowSize","nearSizes","insideNearSizes","insideFarSizes","arrangeAxis","measureDefinition","computedHeight","calculateColumnSize","computedWidth","definition","ele","scrollbarSettings","scrollBarHeight","scrollBarModule","zoomModule","zoomSettings","enableScrollbar","enableScrollbarOnZooming","isZoomed","zoomFactor","zoomPosition","getModule","baseModule","calculateRangeAndInterval","computeSize","axisOffset","nearCount","farCount","len_1","plotOffset","len_2","span","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","isAxisOpposedPosition","labelPosition","orientation","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","measure","actualIndex","axisCollections","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","isRTLEnabled","setIsInversedAndOpposedPosition","position1","position2","rangeOffset","crossesAt","crossesInAxis","crossInAxis","updateCrossAt","primaryXAxis","primaryYAxis","logBase","axisCollection","actualLength","rowTop","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","isInside","axisElement","axisLineElement","axisVisibility","yAxisName","xAxisName","paretoOptions","showAxis","findAxisPosition","updateCrossValue","internalVisibility","lineStyle","drawAxisLine","updatedRect","majorGridLines","majorTickLines","minorTickLines","minorGridLines","drawXAxisGridLine","tickPosition","drawXAxisLabels","placeNextToAxisLine","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","svgObject","zoomingScrollBar","isScrollUI","scrollElement","visibleRange","isRow","x1","x2","y1","y2","definitionName","optionsLine","htmlObject","drawLine","plotX","plotY","plotBottom","plotTop","plotLeft","plotRight","dashArray","axisLine","drawPath","tempInterval","minorGridDirection","isCategoryAxis","majorGrid","majorTick","isOpposed","tickSize","axisLineSize","ticksbwtLabel","labelPlacement","isTickInside","ticks","visibleLabels","chartThemeStyle","isBorder","renderGridLine","majorGridLine","majorTickLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","minorGridLine","minorTickLine","startIndex","endIndex","label","elementSize","isAxisBreakLabel","RotatedWidth","labelSpace","labelPadding","isLabelInside","tickSpace","angle","isVerticalAngle","textHeight","textPadding","maxLineWidth","intervalLength","labelHeight","yAxisLabelX","labelElement","pixel","isInverse","isAxisInverse","previousEnd","isLabelOnAxisLineLeft","sizeWidth","breakLabelSizeWidth","breakLabelSize","LabelMaxWidth","breakLabelMaxWidth","cos","PI","originalText","floor","labelIntersectAction","isInversed","opposedPosition","labelStyle","textAlignment","edgeLabelPlacement","previousYValue","currentYValue","axisLabelFont","createZoomingLabel","getAxisLabelXvalue","textWidth","anchor","lineBreakAlignment","startY","gap","delta","dateTimeInterval","endY","length_1","maxLabelSize","labelBorder","endX","createAxisBorderElement","multiLevelLabels","multiLevelLabelModule","renderYAxisMultiLevelLabels","isRotated","labelRotation","titleRotation","titlePadding","multiLevelLabelHeight","titleSize","titleCollection","axisTitleFont","minorDirection","labelIndex","isFirstLabel","logStart","logEnd","coor","range","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","pow","findLogNumeric","ceil","tempValue","labelWidth","isLeft","islabelInside","isHorizontalAngle","newPoints","isRotatedLabelIntersect","textPoints","rotatedLabelSize","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","getAnchor","isRtlEnabled","i_1","breakLabelWidth","getLabelText","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","index_1","rotateAngle","textRect","textRectCoordinates","rectPoints","newRect","interSectPoint","calculateIntersection","rectPoint1","rectPoint2","trimValue","sqrt","p1","p2","p3","p4","c2x","c3x","c2y","c3y","u1","u4","px","py","point1","point2","point3","point4","str","findAxisLabel","axisRect","startX","length_2","renderXAxisMultiLevelLabels","borderElement","pointerEvents","enableTrim","gridDirection","gridModel","gridId","gridIndex","themeColor","findParentNode","parentNode","zoomElement","replaceChild","MarkerExplode","removeEventListener","highlightMode","explodeSeries","chartSeries","tooltipModule","isPointMouseDown","previousPoint","_loop_1","this_1","markerExplode","allowHighlight","drawTrackBall","animationDuration","maxPointCount","svg","seriesMarker","highlightModule","generateStyle","selectionModule","selectionMode","symbolId","borderColor","markerShadow","g","markerElement","trackElement","createSvg","cssText","opacity","symbol","imageUrl","selectionId","seletionElem","hasAttribute","endAnimate","rectElements","getElementsByClassName","trackballAnimate","elements","delays","durations","isLabel","centerX","centerY","clipX","clipY","animate","progress","timeStamp","visibility","point_1","trackballElements","markerShapes","Marker","renderMarker","previousLocation","previousPath","circlePath","shapeOption","offset","isBoxPlot","isFilled","parentElement","markerFill","markerBorder","markerOpacity","markerShape","imageURL","markerClipRect","getRangeLowPoint","region","markerElements","animated","incFactor","lowPoint","TechnicalIndicator","targetSeries","RangeColorSetting","CrosshairSettings","ZoomSettings","Chart","rotatedDataLabelCollections","isScrolling","checkResize","clickCount","singleClickTimer","isCrosshair","chartid","isLegendClicked","previousTargetId","currentPointIndex","currentSeriesIndex","currentLegendIndex","previousPageX","previousPageY","allowPan","mergePersistChartData","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","isIdHasSpecialCharacter","regex","numberRegex","childElementId","test","blazor","markerIndex","unWireEvents","initPrivateVariable","setCulture","dragY","refreshDefinition","description","elementid","svgId","loadEventData","theme","cartesianChartRendering","applyZoomkit","beforeRenderData","setTheme","createChartSvg","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","processData","getLocalizedLabel","localeObject","getConstant","getLegendOptions","calculateStackValues","calculateBounds","rangeFound","enableSelector","renderElements","removeSelection","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderBorder","renderTitle","renderAreaBorder","renderSeriesElements","renderLegend","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","legendCollections","calTotalPage","bounds","canvasClip","canvasRestore","chartObject","mainObject","svgRect","initializeModuleElements","dataLabelCollections","indicators","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","indicator","createIndicatorElements","getTrendLineElements","childElementCount","calculateStockEvents","enablePan","performedUI","showToolbar","applyZoomToolkit","annotationModule","renderAnnotations","selectedDataIndexes","invokeSelection","invokeHighlight","redrawSelection","check","prevPointCount","initializeDataModule","techIndicator","subTitleHeight","elementSpacing","subTitleCollection","chartTitleFont","subTitle","subTitleStyle","chartSubTitleFont","marginTotal","stockLegendModule","calculateLegendBounds","print","exportChart","trendIndex","trendLine","initSeriesCollection","isTransposed","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","targetIndicator","palettes","zOrder","isSecondaryAxis","initSeries","positionY","positionX","rotation","alignment","subtitleSize","borderOptions","cornerRadius","background","drawRectangle","renderSubTitle","titleWidth","titleText","subTitleElementSize","reduce","subTitleOptions","backGroundImage","backgroundImage","fillColor","image","drawImage","previousRect","areaBorder","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","desiredIntervals","removeAxis","highlightElement","removeSvg","keyEntity","startEvent","moveEvent","stopEvent","chartOnMouseDown","mouseMove","mouseEnd","chartOnMouseClick","chartOnDoubleClick","chartRightClick","mouseLeave","chartKeyDown","documentKeyHandler","chartKeyUp","resizeBound","touchObject","chartResize","longPressBound","setStyle","crosshairModule","buttons","which","pointerType","stopPropagation","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","touchAction","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","overflow","isOrientation","changedTouches","setMouseXY","export","fileName","exportModule","afterExport","getDataUrl","arg","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","resizeTo","touchArg","clientX","clientY","chartOnMouseMove","chartOnMouseLeave","isChartDrag","actionKey","code","removeLegendHighlightStyles","ctrlKey","enableDeferredZooming","enableMouseWheelZooming","chartKeyboardNavigations","groupElement","markerGroup","targetId","titleElement","legendElement","pagingElement","firstElementChild","children","previousElement","setTabIndex","blur","focusChild","legendElement_1","getActualIndex","currentLegend","currentPoint","seriesIndexes","currentElement","totalLength","focus","altKey","pointRegion","highlightChart","completeSelection","legendID","legendItemsId","legendSelection","click","calculateSelectedElements","toolkit","zoomInOutCalculation","performZoomRedraw","yArrowPadding","xArrowPadding","doPan","reset","timeInterval","pointDoubleClick","observers","pointClick","triggerPointEvent","axisLabelClick","triggerAxisLabelClickEvent","clickEvt","axisIndex","currentAxis","labelID","pointMove","titleTooltip","axisTooltip","pointMouseMove","textContent","isTitleOrLegendEnabled","texts","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","threshold","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","locale","setAnnotationValue","annotationIndex","annotation","annotations","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","innerText","tabColor","requiredModules","modules","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","dragSettings","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableHighlight","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","striplines","striplines_1","stripline","clearRect","removeLength","pinchTarget","containerCollection","querySelectorAll","removeChild","definitions","definitions_1","axisChange","getVisibleSeries","visibleSeries_1","refreshLiveData","removeStyles","mousemove","createEvent","initMouseEvent","dispatchEvent","isPoint","showCrosshair","hideCrosshair","removeCrosshair","refreshBounds","crosshairTooltip","textOverflow","seriesRefresh","blazorProp","isClosed","boxPlotMode","showMean","binInterval","currentMode","styleId","highlightDataIndexes","isMultiSelect","highlightSearch","ignoreRegex","replaceQuery","findTextNode","pattern","nodeType","nodeValue","revertHighlightSearch","contentElement","parent_1","createTextNode","icon","AutoComplete","_this_1","isFiltered","searchList","getLocaleName","getNgDirective","filterType","queryString","dataType","typeOfData","typeof","virtualGroupDataSource","mapping","suggestionCount","queryElements","take","takeValue","getTakeValue","skip","virtualItemStartIndex","searchLists","isTyped","isDataFetched","isSelectCustom","checkAndResetCache","list","renderList","filterInput","beforePopupOpen","resetList","activeIndex","eventArgs","preventDefaultAction","updateData","filterAction","isNoDataElement","minLength","isFiltering","isPreventScrollAction","previousStartIndex","virtualListInfo","getTransformValues","virualElement","GetVirtualTrackHeight","totalItemCount","getFilteringSkeletonCount","hidePopup","clearAll","property","onActionComplete","ulElement","isUpdated","fixedHeaderElement","li","postBackAction","autofill","liCollections","items","listData","searchItem","inputElement","setAutoFill","setSelection","isValidLI","getFormattedValue","getIndexByValue","setHoverList","selectedLI","setScrollPosition","isPopupOpen","preventAutoFill","isKeyNavigate","listOption","fieldsSettings","itemCreated","highlight","itemTemplate","isHtmlElement","charCodeAt","itemCreated_1","isEditTextBox","isPopupButton","showPopupButton","isSelectFocusItem","setInputValue","oldValue","typedString","allowCustom","setOldText","setOldValue","checkFields_1_1","listLength_1","getItems","_this_2","addItem","updateValues","showPopup","enabled","refreshPopup","viewPortInfo","previousEndIndex","setUpdateInitial","button","appendSpan","inputWrapper","calculateWidth","floatLabelType","dropDownClick","atcProps","getPropObject","newProperty","oldProperty","renderHightSearch","isHighlight","iconCss","groupBy","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","frozenContent","frozenHeader","table","gridChkBox","editedRow","addedRow","leftRight","frozenRight","frozenLeft","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","tbody","colGroup","change","beforeOpen","initialFrozenColumnIndex","Row","innerPadding","findTickSize","findLabelSize","Column","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","intervalDivs","crossAxis","diff","isHorizontal","legendLabelFont","labelSize","findDifference","calculateVisibleRangeOnZooming","baseRange","actualRange","doubleRange","triggerRangeRender","getRangePadding","getMaxLabelWidth","isAxisLabelBreak","isIntersect","rotatedLabel","width1","findMultiRows","result1","height_1","getMultilevelLabelsHeight","currentX","currentLabel","isBreakLabels","width2","isMultiRows","store","isPolar","VisibleLabels","disableHtmlEncode","allowResizing","allowReordering","showColumnMenu","allowEditing","showInColumnChooser","edit","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","setFormatter","getFormatFunction","setParser","getParserFunction","toJSON","commands","textAlign","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","params","ddEditedData","foreignKeyField","a_1","xObj","yObj","z","obj","fnDescending","fnAscending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","Scroll","previousValues","oneTimeReady","widthService","setWidth","uiupdate","setWidthToColumns","toolbarModule","toolbar","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","enableAdaptiveUI","refreshOverflow","setHeight","mHdrHeight","getContent","enableColumnVirtualization","isFrozenGrid","getScrollBarWidth","frozenRows","getHeaderContent","getRowHeight","isInitialLoad","loadingIndicator","indicatorType","ensureOverflow","setPadding","scrollWidth","getThreshold","cssProps","getCssProperties","removePadding","rtl","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","setScrollLeft","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","userAgent","contentScrollHandler","headerScrollHandler","onContentScroll","scrollTarget","isHeader","isPreventScrollEvent","errorFreeze","errorFixed","getVisibleFrozenLeftCount","widthVal","getVisibleFrozenRightCount","isEdit","isDown","scrollDown","isFooter","cont","hdr","isFrozen","pageXY","getPointXY","mHdr","mCont","scrollBar","getScrollbleParent","node","scrollingElement","overflowY","defaultView","scrollHeight","addStickyListener","isAdd","eventElement","makeStickyHeader","resizeFrozenRowBorder","div","insertBefore","frzCols","enableStickyHeader","sLeft","sHeight","getContentTable","setLastRowCell","css","module","properties","contentRect","getClientRects","headerEle","toolbarEle","groupHeaderEle","parentTop","top_1","colMenuEle","elemTop","showDropArea","setSticky","ccDlg","topStyle","gridElement","SummaryModelGenerator","footerTemplate","groupFooterTemplate","groupCaptionTemplate","columnSelector","detailTemplate","childGrid","isRowDragable","generateRows","input","buildSummaryData","getGeneratedRow","level","parentUid","summaryRow","raw","tmp","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","attributes","class","cells","isAggregateRow","cell","isDataCell","cellType","indent","sColumn","scolumn","opt","dummy","summaryRows","single","setTemplate","helper","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","prev","cur","CaptionSummary","exports","AriaService","setOptions","props","setStateAndProperties","config","setExpand","expand","setSort","setBusy","isBusy","busy","invalid","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","attribute","datarole","selected","multiselectable","haspopup","colcount","rowcount","LegendSettings","BaseLegend","maxItemHeight","rowHeights","pageHeights","columnHeights","pageXCollections","chartRowCount","legendTitleCollections","legendRegions","pagingRegions","legend","isChartControl","isAccChartControl","isBulletChartControl","isStockChartControl","bulletChart","fivePixel","rowCount","pageButtonSize","maxColumns","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTop","isTitle","currentPageNumber","getPosition","isVertical","itemPadding","library","get3DLegendBounds","getLegendBounds","containerPadding","getLocation","accumulation","setBounds","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","isBulletChart","labelIns","ticklIns","categoryFieldValue","categoryField","marginBottom","legendHeight","legendWidth","alignLegend","axisTextSize","legendSize","titlePlusArrowWidth","pagingLegendBounds","requireLegendBounds","firstLegend","findFirstLegendPosition","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","maxHeight","totalPages","textSize","shapeHeight","isRtlEnable","getLinearLegend","legendSeriesGroup","previousLegend","startPadding","shapeWidth","xLocation","textOptions","shapePadding","legendIndex","leftSpace","bottomSapce","rightSpace","legendOption","isReverse","accessbilityText","generateId","getRenderPoint","renderSymbol","renderText","toggleVisibility","renderPagingElements","xmlns","nextLegend","defElement","createDefs","gradientLegendCount","linerGradientEle","createElementNS","fillColors","numberItems","colorMap","diffValue","colorsLength","calculatedValue","full","offsetValue","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startLabel","endLabel","startTextSize","endTextSize","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","hiddenColor","fontcolor","isCanvas","translatePage","gradientLegend","legendCollection","legendCollection_1","legendTitleFont","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","createClipPath","pagingClipRect","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","seriesBorder","isLineShapemarker","symbolOption","markerVisibility","textOption","pageTextElement","paginggroup","grayColor","pageUp","pageDown","iconSize","cursor","clipPathHeight","translateX","totalNoOfPages","getPageHeight","sum","pagingText","pageNumber","translate","changePage","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","prefix","move","clearTooltip","LegendOptions","dates","addDays","days","setDate","getDate","getTradePeriodName","Error","yearSuffix","getFullYear","ToString","Substring","numOfDays","getDateDiffInDays","tradeablePeriod","toLocaleString","month","getQuarter","getBusinessDatesCount","setHours","curDate","dayOfWeek","getMonth","SvgRenderer","rootID","svgLink","rootId","getOptionValue","svgObj","setElementAttributes","setSVGSize","path","line","rectangle","drawCircle","circle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","polygon","img","setAttributeNS","href","preserveAspectRatio","createText","createTSpan","tSpan","createTitle","defs","clipPath","createForeignObject","foreignObject","createPattern","createRadialGradient","colorStop","newOptions","cx","cy","fx","fy","drawGradient","createLinearGradient","gradientType","gradient","stop_1","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","ctx","getContext","setCanvasSize","setAttributes","lineWidth","dashArrayString","setLineDash","strokeStyle","save","beginPath","stroke","moveTo","lineTo","restore","canvasTranslate","canvasCtx","rx","globalAlpha","drawCornerRadius","fillStyle","fillRect","arcTo","closePath","dataSplit","flag","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","counterClockWise","transX","transY","dy","isTSpan","fontSize","font","baseline","textBaseline","txtlngth","rotate","fillText","circumference","ry","scale","imageObj","Image","src","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","dataUrl","img_1","onload","clip","getTooltipThemeColor","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","measureText","themeFontStyle","breakText","textArray","whiteSpace","lineHeight","Size","withInAreaBounds","areaBounds","findDirection","rX","rY","arrowLocation","arrowPadding","tipX","tipY","controlName","Rect","Side","isRight","isBottom","CustomizeOption","TextOption","baseLine","removeElement","drawSymbol","temp","calculateShapes","functionName","renderOption","locX","locY","eq","sin","PathOption","renderOptions","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","removeSVG","createTooltipElement","highlightPadding","areaMargin","markerPoint","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","createTemplate","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","enableRTL","pathElement","shapes","marginX","palette","tipLocation","marginY","isFixed","sharedTooltipLocation","tooltipLocation","clipBounds","wrapPadding","wrapHeader","isWrap","wrappedText","headerSize","xLength","pathElement_1","pointRect","enableAnimation","updateDiv","animateTooltipDiv","tooltipPlacement","enableShadow","shadowId","shadow","changeText","revert","findFormattedText","isRender","lines","tspanElement","tspanOption","subWidth","tspanStyle","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isColumn","subStringLength","markerPadding","spaceWidth","labelColor","contentWidth","withoutHeader","isTextWrap","reverse","isRTLText","textFont","getTooltipTextContent","width_1","renderContentRTL","contentWidthIndex","tooltipText","characterCollection","isRtlText","isValidHTMLElement","firstElement","elem","templateElement","sharedTemplateElement","controlInstance","outerHTML","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","getCurrentPosition","symbolLocation","boundsX","boundsY","outOfBounds","currenDiff","transition","model","tooltipElement","tooltipGroup_1","Node","ELEMENT_NODE","opacity_1","progressAnimation","endAnimation","tooltipGroup","ColumnBase","getSideBySideInfo","enableSideBySidePlacement","getSideBySidePositions","columnWidthInPixel","seriesSpacing","columnSpacing","pointSpacing","columnWidth","minimumPointDelta","groupName","mainColumnWidth_1","mainWidth","mainDoubleRange","difference","getRectangle","drawCylinder","cylinderSeriesOption","canvasRender","gradientColor","cx1","cx2","cy1","cy2","xl","yl","xPos","yPos","step","rxt","ryt","gx1","gx2","gy1","gy2","ini","stacking","isLastSeries","AEx","AEy","LX","LY","GX","GY","X1","Y1","X2","Y2","Int32Array","optiong","gradientElement","linearGradientElement","stopElement","findRectPosition","vSeries","updateSymbolLocation","updateYRegion","updateXRegion","getRegion","triggerEvent","calculateRoundedRectPath","topLeft","topRight","bottomLeft","bottomRight","previousDirection","columnFacet","visiblePoints_1","animateRect","isPlot","elementHeight","elementWidth","lastElementChild","halfValue","ChartData","insideRegion","getRectPoint","fromCenterX","fromCenterY","clickAngle","startAngle","endAngle","distanceFromCenter","arcAngle","currentXPosition","atan2","innerRadius","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","isBar","heightValue","getClosest","xvalues","leftSideNearest","rightSideNearest","isDataExist","binarySearch","middle","first","last","found","getDistinctValues","commonXValues","second","intial","legendClick","load","legendRender","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelRender","axisRangeCalculated","tooltipRender","chartMouseMove","chartMouseClick","chartDoubleClick","chartMouseLeave","chartMouseDown","chartMouseUp","zoomComplete","resized","beforeResize","beforePrint","annotationRender","stockEventRender","regSub","regSup","beforeExport","onZooming","Category","calculateRange","getActualRange","applyRangePadding","calculateVisibleLabels","initializeDoubleRange","forEach","calculateVisibleRange","getCloneProperties","Print","scrollModule","isAsyncPrint","defered","isContentReady","actionBeginFunction","actionBegin","onEmpty","hierarchyPrint","isPrintGrid","hierarchyPrintMode","contentReady","removeColGroup","printGridObj","printModule","renderPrintGrid","printGrid","getFrozenColumns","freeze","isPrinting","getInjectedModules","injectedModues","setInjectedModules","printgrid","registeredTemplate","appendTo","isVue3","selectedRows","contentDiv","headerDiv","overflowX","waitingPop","printGridElement","printWind","outerHeight","outerWidth","screen","availWidth","availHeight","depth","groupCaption","colSpan","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","dataQuery","dataManagerDeferred_1","ValueFormatter","cultureName","culture","getNumberParser","fromView","TrendlinesDirective","inject","custom","default","h","slots","$slots","updated","methods","getTag","TrendlinesPlugin","install","Vue","component","TrendlineDirective","TrendlinePlugin","SegmentsDirective","SegmentsPlugin","SegmentDirective","SegmentPlugin","SeriesCollectionDirective","SeriesCollectionPlugin","SeriesDirective","SeriesPlugin","StripLinesDirective","StripLinesPlugin","StripLineDirective","StripLinePlugin","CategoriesDirective","CategoriesPlugin","CategoryDirective","CategoryPlugin","MultiLevelLabelsDirective","MultiLevelLabelsPlugin","MultiLevelLabelDirective","MultiLevelLabelPlugin","AxesDirective","AxesPlugin","AxisDirective","AxisPlugin","RowsDirective","RowsPlugin","RowDirective","RowPlugin","ColumnsDirective","ColumnsPlugin","ColumnDirective","ColumnPlugin","RangeColorSettingsDirective","RangeColorSettingsPlugin","RangeColorSettingDirective","RangeColorSettingPlugin","AnnotationsDirective","AnnotationsPlugin","AnnotationDirective","AnnotationPlugin","SelectedDataIndexesDirective","SelectedDataIndexesPlugin","SelectedDataIndexDirective","SelectedDataIndexPlugin","IndicatorsDirective","IndicatorsPlugin","IndicatorDirective","IndicatorPlugin","modelProps","testProp","watch","emitProbs","modelProps_1","props_1","ChartComponent","mixins","emits","provide","ej2Instances","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","templateCollection","created","_trigger","bindProperties","_setProperties","templateNames","templateNames_1","tempName","elementCollection","elementCollection_1","__vue__","$destroy","muteOnChange","referModels","vueInstance","$emit","eventName","eventProp","successHandler","propKey","$props","isLazyUpdate","ChartPlugin","SPINNER_CLASS","inputObject","ComboBox","wireEvent","preventBlur","onBlurHandler","targetFocus","readonly","onInput","onFilterUp","onFilterDown","pasteHandler","bindCommonEvent","activeElement","inputValue","customValue","setValue","showClearButton","valueMuteChange","setHiddenValue","dataItem","itemData","detachChangeEvent","getElementByText","getElementByValue","isExistItem","executeLocal","getItemData","updateIconState","clearButton","clearIconHide","getAriaAttributes","ariaAttributes","hiddenElement","incrementalSearch","setSearchBox","searchBoxContainer","inlineSearch","getFocusElement","isDropDownClick","sortedData","activeItem","updatingincrementalindex","incrementalEndIndex","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","itemCount","incrementalLiCollections","skeletonCount","removeFocus","fixedHead","selectedLiOffsetTop","removeFillSelection","checkCustomValue","getDataByValue","showSpinner","spinnerElement","disableIcon","hideSpinner","isHover","getTextByValue","currentFillValue","updateSelectedItem","isAndroidAutoFill","setAutoFillSelection","isAndroid","getSelectionPoints","prevEnd","prevSelectPoints","curEnd","prevStart","curStart","focusItem","isCustomFilter","selection","substr","setSelectionRange","getValueByText","unWireEvent","unBindCommonEvent","selectCurrentItem","onChangeEvent","preventFocus","onFocus","previousValue_1","value_1","initial","updateCustomValueCallback","changeData","checkData","setReadonly","setReadOnly","comboProps","itemIndex","isEscape","isEscapeKey","focusIn","focusOut","RowRenderer","isSpan","rowTemplate","cloneNode","refreshRow","isChanged","refreshMergeCells","tr","tempCells","state_1","attr","cells_1","rowArgs","cellArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isDataRow","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","getService","_loop_2","isColumnSelected","cellRenderer","getCellRenderer","isExpand","DetailExpand","td","Filter","CommandColumn","isReactChild","parentDetails","parentInstObj","requireTemplateRef","isTemplate","thisRef_1","renderTemplates","ariaAttr","rowSpan","requestTypeAction","isRowSpanned","rowsObject","getRowsObject","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","emptyColspan","getFrozenLeftColumnsCount","freezeCells","oldColspan","colspan","tabindex","rowHeight","eventArg_1","isSelectable","cellTemplate","thisRef_2","disableRowSelection","isDraggable","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","vFTable","summarycell","lastSummaryCell","firstSummaryCell","thisRef","eventArg","isPartialSelection","selRowIndex","chkBox","isDrag","cellIdx","isDetail","classes","isAltRow","isCaptionRow","rowindex","dataUID","ariaSelected","ColumnSeries","sideBySideInfo","origin","pointColumn","RowModelGenerator","getInfiniteIndex","enableImmutableMode","generateRow","ensureColumns","generateCell","RowDragIcon","pid","tIndex","parentGid","expandedRows","enableAltRow","refreshForeignKeyRow","getFrozenMode","generateCells","foreignKeyColumns","dummies","rowId","oIndex","refreshRows","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","HeaderRender","frzIdx","notfrzIdx","isFirstCol","isReplaceDragEle","draggable","currentStateTarget","parentEle","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","colIndex","getColumnIndexByField","isReactCompiler","dragStart","drag","cloneElement","dragStop","drop","droppedElement","ariaService","setVisible","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","renderPanel","isRendered","innerDiv","toggleStackClass","setPanel","renderTable","getPanel","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","getTable","headerTable","getColGroup","colgroup","setColGroup","getRows","tHead","createTable","createHeader","tableEle","tableName","cellspacing","findHeaderRow","createHeaderContent","thead","caption","bodyCell","rowBody","updateColGroup","colHeader","rowRenderer","Header","headerRow","colDepth","getHeaderCells","RowDragHIcon","indexes","getColumnIndexesInView","HeaderIndent","DetailHeader","getHeaderTable","enablePersistence","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","getColumnIndexByUid","frozenColumns","lockColsCount","displayVal","idx","clen","getNormalizedColumnIndex","refreshUI","freezeReorder","appendContent","updateDefaultCursor","rows_1","gCells","isXaxis","firstHeaderCell","tabIndex","stackedHdr","cnt","dragTarget","distance","abort","droppableDestroy","droppable","accept","toolbarItems","toolbarLeft","toolbarItem","cls","btnObj","onclick","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","localizer","getGui","fltrMenuEle","prepareHeader","clean","hValueAccer","elementDesc","innerDIV","headerValueAccessor","getValue","checkAllWrap","checked","buildAttributeFromCell","appendHtml","matchFlColumns","customAttributes","extendPrepareHeader","gridObj","headerTempID","isReactChild_1","copied","headerTextAlign","clipMode","titleElem","matchFilteredColumns","handler","innerHtml","StackedHeaderCellRenderer","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","valueAccessor","getVisibleColumns","gCaptionTemp","includes","tempObj","getTemplate","tempID","tempValue_1","captionTemplate","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","infiniteScrollSettings","enableCache","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","locator","emptyGrid","counter","l10n","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","filterModule","filterObjIndex","prevFilterObject","iconClass","flIcon","checkboxPrevFilterObject","Columns","headerCell","getColumnHeaderByField","allowSelection","searchString","pageSizes","checkAll","dataLength","totalRecordsCount","getCurrentViewRecords","prevPageMoving","lazyLoadRender","contentModule","getGroupCache","refreshContentRows","resetTemplates","gridColumns","detailTemplateID","toolbarTemplate","guid","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","showMaskRow","virtualInfo","sentinelInfo","isFActon","isNeedForeignAction","deffered","getFData","deffered_1","validateGroupRecords","dataManagerFailure","deferred","isComplex","foreignKey","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","isTrigger","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","renderEmpty","dynamicColumnChange","updateColumnType","record","cFormat","equalTo","fmtr","validationRules","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","prevCurrentView","totalDataRecordsCount","removeMaskRow","updatesOnInitialRender","destroyTemplate","agg","immutableModeRendering","alert","setRowElements","setRowObjects","preventAdjustColumns","setRowCount","error","focusModule","setFirstFocusableTabIndex","dataRowCount","isEmptyCol","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","GroupCaption","GroupCaptionEmpty","Expand","Promise","group0","groupN","addWhere","groups","curDm","curFilter","newQuery","rPredicate","updateGroupInfo","current","untouched","uGroup","itemGroup","uGroupItem","GroupGuid","l","context","customAggregate","CellRendererFactory","cellRenderMap","ServiceLocator","services","register","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","Search","instance","arg1","refreshSearch","onSearchComplete","actionCompleteFunc","cancelBeginEvent","ShowHide","colName","isShowHide","evtHandlers","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","finalized","getKeyBy","columnModel","batchActionPrevent","changedStateColumns","closeEdit","groupModule","visibleRows","showHideArgs","currentViewCols","emptyVcRows","getSelectedRecords","clearSelection","colsInCurrentView","col1","col2","isModeChg","AggregateColumn","setPropertiesSilent","AggregateRow","Clipboard","copyContent","initialEnd","keyDownHandler","clickHandler","grid","isMacLike","navigator","platform","selectedRowCellIndexes","getSelectedRowCellIndexes","metaKey","copy","clipBoardTextArea","editSettings","cellSelectionMode","x_1","scrollX","y_1","scrollY","scrollTo","paste","cellIndexes","isAvail","cIdx","rIdx","getRowByIndex","getCellFromIndex","getColumnByIndex","editModule","updateCell","selectCellsByRange","cellIndex","setCopyData","withHeader","getSelection","getDataRows","selectedIndexes","headerTextArray","getCopyData","leftCols","m","checkBoxSelection","status","headers","colIndexes","getColumnHeaderByIndex","rowIndexes","isCell","splitKey","isElement","colIdx","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","stringify","SortDescriptor","SortSettings","Predicate","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","Grid","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","tablesCount","movableCount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","media","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","vRows","vcRows","vGroupOffsets","rowUid","isAutoFitColumns","enableDeepCompare","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","mediaBindInstance","commandDelIndex","asyncTimeOut","isExportGrid","enableLogger","needsID","Grid_1","Inject","mergePersistGridData","ignoreOnPersist","selectedRowIndex","scrollPosition","currentObject","settings","assign","pagerTemplate","persistData","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","sortedColumns","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","isInitial","mediaCol","ignoreCollectionWatch","mergeCells","isPersistSelection","filterOperators","endsWith","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","wildCard","isNull","notNull","like","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","Item","Items","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","keyConfigs","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","home","escape","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","enter","ctrlEnter","shiftEnter","tab","shiftTab","space","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","renderModule","searchModule","updateColumnModel","getMediaColumns","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","refreshMaskRow","refreshing","axisDirection","dialogElement","headerModule","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","paddingRight","paddingLeft","contentHeight","maskTableHeight","innerHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","footerContent","translateMaskRow","maskElement","footer","gridContentScrollHeight","maskTable","zIndex","maskColgroup","createMaskRow","frzTd","maskTHead","maskTBody","rowCountElement","altRow","altNumber","rowsQuery","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","displayAsCheckBox","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","hideAtMedia","pushMediaColumn","updateFrozenColumnsWidth","matchMedia","mediaQueryUpdate","updateMediaColumns","mediaColumn","matches","invokedFromMedia","showHider","refreshMediaCol","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","keyboardModule","clipboardModule","enableBoxSelection","enableAutoFill","setCSSClass","oldCSSClass","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","isCancel","refreshHeader","updateAutoFillPosition","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","parentID","ej2_instances","childGridObject","currentParent","currentParentInstance","currentChildObject","oldProperties","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","case","pending_1","deepWatch","pKeyField","setRowData","gResult","names","scrollRefresh","isSelectedRowIndexUpdating","selectRow","setWidthToTable","enableVerticalRendering","fn_1","refreshFilter","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","getFrozenLeftCount","frozenName","frozenCount","leftrightColumnWidth","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","movable","isLeftRightFrozen","stackedHeader","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getRowElements","getFrozenRightRowByIndex","getRowInfo","row_1","rowObj","getRowObjectFromUID","rowData","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","hdrTbody","freezeRows","addMovableRows","dataRows","generateDataRows","fRows","mrows","includAdd","dRows","isCollapseStateEnabled","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","setCellValue","rowIdx","rowuID","pkName","fieldIdx","rowObjects","selectedRow","Idx","sRow","refreshTD","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","findIndex","filterElement","selectRowEle","fRowTr","setFrozenRowData","fTr","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","rowObject","getMovableRowsObject","getFrozenRightRowsObject","getColumnHeaderByUid","getStackedColumns","getUidByColumnField","getColumnFieldNames","columnNames","getRowTemplate","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","getFrozenRightColumnsCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","minWidth","tWidth_1","gWidth","this_2","isPercentageWidthGrid","refreshSplitFrozenColumn","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","arr","stackedcol","stockCol","pushallcol","text1","isTrue","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","changedProperties","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","message","sortColumn","isMultiSort","sortModule","changeDataSource","clearSorting","removeSortColumn","clearGridActions","filterByColumn","fieldName","filterOperator","filterValue","matchCase","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","deleteRecord","fieldname","startEdit","addRecord","deleteRow","editCell","saveCell","updateRow","getBatchChanges","enableToolbarItems","isEnable","enableItems","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","contentTable","headerRows","disValue","autoFitColumns","fieldNames","resizeModule","resizeSettings","tableWidth","percentageWidth","unit","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","setProperty","tableWidthUnitFormat","removeProperty","indentWidthUnitFormat_1","createColumnchooser","columnChooserModule","renderColumnChooser","localeObj","valueFormatterService","gCols","sCols","_loop_3","sLen","this_3","isFromGroup","showGroupedColumn","parentKeyFieldValue","initForeignColumn","rendererFactory","createGridPopUpElement","dataReady","popup","gridLines","getTooltipStatus","headerDivTag","htable","ctable","prevElement","elemNames","innerElement","tag","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","keyPressHandler","allowKeyboard","keyAction","keyActionHandler","tapEvent","refreshFrozenPosition","dataBoundFunction","checkEdit","dataRow","filterClear","ariaOwns","keyPress","editFormValidate","persistedData","getLocalData","mergeColumns","storedColumn","storedColumns","_loop_4","localCol","tCol","this_4","presskey","stopImmediatePropagation","collapse","currentInfo","elementToFocus","focusContent","addOutline","injectedModules","refreshColumns","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","pdfExportModule","currentGridId","shift","currentGridInstance","exportPromise","exportedGridResults","groupColumn","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","isOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","getRowIndexByPrimaryKey","isDetailRow","pKvalue","getFilteredRecords","getUserAgent","timer","getRowUid","getRowElementByUID","rowEle","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","containerHeight","pagesize","nonContentHeight","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","isExcel","exportGrid","serverPdfExport","serverCsvExport","include","sorted","setHeaderText","form","gridInput","method","submit","isExpanded","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","callBack","portals","batchUpdate","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","keyField","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","_loop_5","this_5","_loop_6","isRowExist","this_6","renderRowElement","modelData","addRowObject","updateVisibleExpandCollapseRows","getHeight","isInteger","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomFilter","showCustomSort","showResponsiveCustomColumnChooser","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols","gridCols_1","CheckBoxFilterBase","isExecuteLocal","existingPredicate","foreignKeyQuery","filterState","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","closeDialog","dlg","keyupHandler","searchHandler","searchBoxKeyUp","dialogObj","foreignKeyFilter","fColl","mPredicate","filterCollection","ejpredicate","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","shiftKey","sIcon","updateDataSource","updateModel","actualPredicate","filteredColumns","allowCaseSensitive","infiniteUnloadParentExistPred","getAndSetChkElem","sBox","hideSearchbox","searchBox","inputargs","placeholder","createInput","spinner","cBox","showDialog","columnType","filterModel","animationSettings","btnClick","buttonModel","isPrimary","dialogCreated","dialogOpen","isStringTemplate","renderResponsiveFilter","dialogLabel","isResponsiveFilter","responsiveCnt","showMask","marginTop","getListHeight","getAllData","openDialog","isBlanks","filterTemplateCol","filterItemTemplate","clearFilter","fltrBtnHandler","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","defaults","isNotEqual","itemsCnt","coll","infiniteFltrBtnHandler","generateNullValuePredicates","notifyFilterPrevEvent","addCurrSelection","existingPredicate_1","initiateFilter","isClearFilter","pred","dummyDefaults","parentCurrentViewDataCount","unshift","infiniteSearchPred","arg2","arg3","arg4","arg5","arg6","firstVal","foreignQuery","parsed","predicte","parseDate","parentTotalDataCount","addDistinct","filterChoiceCount","itemsCount","filterargs","filterObj","emptyValPredicte","generatePredicate","colData","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","isGrid","customQuery","distincts","queryGenerate","processDataOperation","filteredColumn","distinct","parentFilteredLocalRecords","defObj","dataSuccess","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","listDiv","listHeight","maskItemHeight","maskList","wrapperElem","removeMask","backgroundColor","minHeight","borderStyle","liHeight","insertAdjacentHTML","maskLists","maskParent","infiniteRemoveElements","infiniteAppendElements","removeElem","appendElem","infiniteQuery","existQuery","allPromise","runArray","executeQueryOperations","all","args1","filteredData","getDistinct","processDataSource","f","filterColumn","updateResult","createFilterItems","result_1","res","selectAll","updateAllCBoxes","previousSibling","updateInfiniteManualSelectPred","updateIndeterminatenBtn","setFocus","predmdl","focusNextOrPrev","focusableElements","nextIndex","nextElement","from","prevElem","cBoxes","cBoxes_1","createCheckbox","dummyData","checkboxUid","btn","disabled","indeterminate","nullCounter","selectAllValue","checkBox","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","args_1","updateInfiniteUnLoadedCheckboxExistPred","checkbox","getCheckedState","lastChild","selectAllParent","addCurrSelectionParent","updatePredArr","checkState","checkboxFilter","ejValue","lookup","currentFilterValue","enableCaseSensitivity","foreignDataObj","operate","updateDateFilter","getCaseValue","orderGrid","orderGridEletricity","germany","netherlands","france","italy","belgium","austria","spain","czechRep","slovakia","hungary","switzerland","uk","poland","restOfWorld","restOfWorldMap","states","has","priceAreaName","set","_toConsumableArray","output","CellRenderer","formatter","rowChkBox","evaluate","fData","CSPTemplate","literals_1","templateID","invokeFormatter","refreshCell","parentRow","newTD","cloneAttributes","arialabelText","elements_1","localeStr","fromFormatter","checkWrap","rowID","isCheckBoxType","colindex","orderGridGas","nordics","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","closeCustomDialog","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","isFilter","filterClearBtn","getHeaderTitle","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","filterParent","isColMenu","sortColumns","sortBtnParent","filteredCols","isSort","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","txt","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","closeCustomFilter","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","renderResponsiveDialog","setFilterModel","createOptions","setTopToChildDialog","dialogEle","child","colMenu","outerDiv","customFilterDlg","getDialogOptions","isModal","showCloseIcon","closeOnEscape","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","sortField","closeResponsiveDialog","keyHandler","primaryKeyValue","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","removeCustomFilterElement","custommenu","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","BaseTooltip","isStockChart","enable3D","highlightPoint","accumulationSelectionModule","isSelectedElement","highlightColor","highlightPoints","clipLocation","crosshairEnabled","templatePoint","customTemplate","tooltip3DModule","accumulationTooltipModule","svgTooltip","findPalette","isNegative","enableTextWrap","updatePreviousPoint","animationComplete","findColor","toolTipInterval","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","links","updateLinksHtml","refreshAriaAttrLabel","updateStyles","link","frag","createDocumentFragment","auxiliaryClickHandler","numericContainer","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","isLastSet","numItems","isPagerResized","focusedItem","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","classList_1","isPageAvailable","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","regx","Pager","hasParent","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","Container","Information","ExternalMsg","Page","Of","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","compile","resizePager","onFocusIn","onFocusOut","focusedTabIndexElement","getFocusedTabindexElement","dropDownPage","getDropDownPage","focusablePagerElements","getFocusablePagerElements","addFocus","focusedElement","getFocusedElement","setTabIndexForFocusLastElement","onKeyPress","checkPagerHasFocus","changePagerFocus","setPagerFocus","setPagerContainerFocus","setPagerFocusForActiveElement","currentActivePage","getActiveElement","offsetParent","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","tabindexElements","currentItemPagerFocus","incrementNumber","decrementNumber","lastRow","lastCell","checkFirstPagerFocus","selectedClass","getClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","actionClass","pagingItem","mPrev","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","currentClass","previousElements","targetChildrens","pagerElements","element_1","tabindexElement","addFocusClass","removeFocusClass","setPageSize","newPageNo","oldPageNo","enableQueryString","updateQueryString","tempId","getPagerTemplate","updatedUrl","getUpdatedURL","history","pushState","uri","hash","calculateActualWidth","actualWidth","marginLeft","marginRight","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","showFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","totalWidth","numericItemWidth","numToHide","hideIndex","innerWidth","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","showItems","showItem","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","isPageSizeAll","beforeValueChange","pageSizeValue","pageSizeNum","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","onSelect","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainerDiv","isForceCancel","previousPage","keyActions","appendToElement","enableAfterRender","handlers","complete","updateLayout","inboundChange","Selection","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isKeyAction","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","factory","initializeSelection","onActionBegin","fDataUpdate","getRowObj","currentIndex","hidePopUp","mouseDownHandler","isEditing","formObj","validate","getCurrentBatchRecordChanges","currentRecords","newRowPosition","primaryKey","selectedGroupedData","enableSimpleMultiRowSelection","addRowsToSelection","selectData","isRemoved","selectedIndex","isAvailable","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","toggle","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","getCollectionFromIndexes","selectedDataUpdate","selectedData","selectableRowIndex","currentRow","isSingleSel","prevRow","isDragged","selectRowFn","selectableRowIndex_1","checkboxOnly","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","chkState","ensureCheckboxFieldSelection","updatePersistDelete","pKey","isPresent","nextElementSibling","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","onClick","checkSelectAllClicked","clearColumnSelection","prevCIdxs","prevECIdxs","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","cancl_1","isSingleDeSel","rowDeselectObj","rowInString","rowidx","rowidxex","dataTxt","isHeaderCheckBxClick","isCellType","selectedCell","getColIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","currentCell","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","cellSelectArgs","cellLen","addRowCellIndex","prvRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","stopTimer","gBRect","isCellDrag","elementFromPoint","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","scrollElem","cliRect","timer1","setInterval","timer2","clearInterval","isAutoFillSel","nextEle","findNextCell","e_1","colInd","rowInd","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","strCell","fixedCells","isRtl","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastCell","isLastRow","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","endCell","startCellIndex","trIdx","mUPTarget","closeRowCell","updateStartCellsIndex","rindex","isFrozenRow","isFrozenRight","clientRect","colWidth","enableDrag","isUpdate","postion","clearSelAfterRefresh","isInfiniteScroll","pkValue","onCellFocused","columnPositionChanged","rowsRemoved","actionCompleteFunction","actionComplete","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyUpHandler","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","proxy_1","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","rowObj_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","checkSelectAll","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rIndex","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","isInteraction","checkToSelectAll","checkedLen","spanEle","getRecord","dataLen","targetHeadCell","targetRowCell","isCheckBox","allowColumnSelection","popUpClickHandler","chkSelect","isEqualNode","headerSelectionHandler","find","checkboxColumnIndexCheck","byKey","keyArgs","isJump","isContent","headerAction","thLen","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","writeText","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","lastIndex","firstIndex","applyUpDown","selectColumn","cIndex","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","fWidth","editTableCol","movableScrollbar","movableWidth","placeHolder","getHeightFromDirection","sibling","isWidUndefCount","isAutoResize","_vm","_h","$createElement","_self","directives","rawName","expression","ref","_v","staticClass","staticRenderFns","toContracts","powerContractCounts","volumeInGigs","gasContractCounts","toClients","staticStyle","clientsCount","toTriggerHitAlerts","totalAlerts","defaultDeadlineAlerts","hitTriggerAlerts","triggerStatusAlerts","shapeData","shapePropertyPath","shapeDataPath","shapeSettings","tooltipSettings","_m","rightClick","doubleClick","resize","shapeSelected","layerRendering","shapeRendering","markerRendering","markerClusterRendering","markerClick","markerDragStart","markerClusterClick","markerMouseMove","markerClusterMouseMove","legendRendering","annotationRendering","itemSelection","zoomIn","pan","stringToNumber","containerSize","calculateSize","maps","containerWidth","containerElementWidth","containerElementHeight","getMousePosition","elementRect","ownerDocument","clientTop","documentElement","clientLeft","MapLocation","degreesToRadians","deg","radiansToDegrees","radian","convertGeoToPoint","latitude","longitude","factor","layer","mapModel","lat","lng","mapSize","mapAreaRect","longitudeMinMax","baseMapBounds","latitudeMinMax","latRadian","lngRadian","projectionType","geometryType","pixelOrigin","Point","sinY","calculateBound","aitoff","tan","epsilon","roundTo","xToCoordinate","yToCoordinate","calculatePolygonPath","currentLayer","markerData","dataIndex","convertTileLatLongToPoint","tileTranslatePoint","center","zoomLevel","isMapCoordinates","sinLatitude","pixelX","pixelY","mapObject","totalSize","baseSize","cosy","sincia","sinci","acos","MinMax","Coordinate","GeoLocation","measureObject","fillOpacity","strokeOpacity","ColorValue","RectOption","CircleOption","PolygonOption","PolylineOption","LineOption","Line","PatternOptions","patternUnits","patternContentUnits","patternTransform","renderTextElement","isMinus","convertElement","markerId","mapObj","templateType","childElement","elementLength","templateHtml","regExp","convertStringToValue","formatValue","formatFunction","stringTemplate","templateValue","templateSplitValue","getValueFromObject","drawSymbols","markerID","shapeCustom","markerCollection","markerEle","rectOptions","borderOpacity","pathOptions","circleOptions","splits","markerColorChoose","colorValuePath","markerShapeChoose","shapeValuePath","shapeImage","imageUrlValuePath","clusterTemplate","markerTemplate","layerIndex","layerElement","zoomCheck","bounds1","bounds2","tempElement1","tempElement","colloideBounds","clusterColloideBounds","tempX","tempY","markerClusterSettings","postionY","indexCollection","clusters","clusterGroup","cluster","containerRect","getTranslate","isTileMap","mapLayerPanel","calculateFactor","isClusteringCompleted","clusterargs","o","otherMarkerElement","markerSetting","markerSettings","longitudeValuePath","latitudeValuePath","tileZoomLevel","clusterID","allowDeepClustering","clusterElement","getElementByID","polygonElement","insertAdjacentElement","markerCluster","layerGroupElement","mergeSeparateCluster","sameMarkerData","clusterIndex","targetClusterIndex","layers","clusterId","clusterEle","clusterEleLabel","markerDataLength","clusterSeparate","isDom","getElementFunction","getQueryConnect","area","totalMarker","numberOfMarker","percent","newAngle","connectorLine","connectorLineSettings","groupEle","transPoint","selectedMarkerElementId","markerSelectionClass","elementAnimate","animationDelay","getTemplateFunction","baseLayerIndex","layerType","staticMapOffset","markerElementOffset","staticMapOffsetWidth","elementClass","maintainStyleClass","idClass","styleClass","shapeSelectionClass","appendShape","tempGroup","drawBalloon","balloon","checkShapeDataFields","dataPath","propertyPath","shapePath","checkPropertyPath","shapeDataPathValue","propertiesShapePathValue","shapeDataValue","shapePropertiesValue","isCustomPath","layerData","customPath","textTrim","textLength","substring","findPosition","calculateCenterFromPixel","minLatOfGivenLocation","minLongOfGivenLocation","maxLatOfGivenLocation","maxLongOfGivenLocation","scaleFactor","zoomFactorValue","centerPosition","centerLatitude","centerLongitude","checkMethodeZoom","centerLatOfGivenLocation","centerLongOfGivenLocation","zoomNotApplied","mapScaleValue","shouldZoomInitially","markerZoomFactor","markerCenterLatitude","markerCenterLongitude","scaleOfGivenLocation","baseMapRectBounds","currentShapeDataLength","totalRect","availSize","mapWidth","mapHeight","markerZoomedState","zoomPersistence","markerZoomCenterPoint","leftPosition","topPosition","previousProjection","isMarkerZoomCompleted","zoomTranslatePoint","widthDiff","translateType","previousTranslate","heightBeforeRefresh","widthBeforeRefresh","cscaleFactor","cmapWidth","cmapHeight","xdiff","translatePoint","ydiff","actxdiff","actydiff","isDragZoom","getZoomTranslate","checkZoomMethod","previousCenterLatitude","previousCenterLongitude","centerPositionChanged","isReset","isZoomByPosition","zoomFact","maxZoomFact","maxZoom","mapScale","previousPositions","translatePointX","translatePointY","fixInitialScaleForTile","tileZoomScale","previousTileWidth","previousTileHeight","Internalize","getShapeData","shapeIndex","layersCollection","triggerShapeEvent","shapeDataCollection","shapeSelectionItem","elementSelector","targetEle","createStyle","styleEle","customizeStyle","triggerItemSelectionEvent","removeClass","timeout","areaWidth","areaHeight","demo","size1","wordWrap","getHexColor","fontColor","fontOpacity","colorArray","exec","divElment","renderLegendShape","renderPath","shapeX","shapeY","getElementOffset","changeBorderWidth","childNode","changeNavaigationLineWidth","polygonSettings","polygons","currentStroke","borderWidthValue","borderWidthValuePath","circleRadius","navigationLineSettings","targetTouches","calculateScale","startTouches","endTouches","startDistance","getDistance","endDistance","getTouches","posTop","posLeft","touch","getTouchCenter","zoomAnimate","preScale","previousScale","diffScale","currentLocation","currentScale","slope","intercept","slopeValue","slopeFactor","slopeIntersection","horizontalDifference","verticalDifference","processTemplate","process","clearAnimation","markerStyle","startAnimation","timestamp","requestAnimationFrame","cancelAnimationFrame","Theme","FabricTheme","BootstrapTheme","HighContrastTheme","DarkTheme","MapAjax","async","contentType","sendData","dataOptions","smoothTranslate","diffx","diffy","compareZoomFactor","shouldZoomPreviousFactor","shouldZoomCurrentFactor","calculateZoomLevel","minLat","maxLat","minLong","maxLong","isZoomToCoordinates","applyMethodeZoom","maxLatSin","maxLatRad","maxLatValue","minLatSin","minLatRad","minLatValue","latiRatio","longiRatio","latRatio","lngDiff","lngRatio","WORLD_PX_HEIGHT","WORLD_PX_WIDTH","latZoom","LN2","lngZoom","processResult","resultValue","getShapeColor","themePalette","getThemeStyle","areaBackgroundColor","titleFontColor","titleFontSize","subTitleFontColor","legendTitleFontColor","legendTextColor","dataLabelFontColor","tooltipFontColor","tooltipFillColor","zoomFillColor","labelFontFamily","titleFontWeight","zoomSelectionColor","shapeFill","rectangleZoomFillColor","rectangleZoomFillOpacity","rectangleZoomBorderColor","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","subTitleFontSize","mapsTitleFont","mapsSubTitleFont","dataLabelFont","Annotation","Arrow","Font","ZoomToolbarButtonSettings","ZoomToolbarTooltipSettings","ZoomToolbarSettings","Border","CenterPosition","TooltipSettings","Margin","ConnectorLineSettings","MarkerClusterSettings","MarkerClusterData","ColorMappingSettings","InitialMarkerSelectionSettings","InitialShapeSelectionSettings","HighlightSettings","PolygonSetting","PolygonSettings","NavigationLineSettings","BubbleSettings","CommonTitleSettings","SubTitleSettings","TitleSettings","ToggleLegendSettings","ShapeSettings","MarkerBase","LayerSettings","isBaseLayer","Tile","MapsAreaSettings","BingMap","getBingMap","tile","language","subDomains","quadKey","digit","mask","subDomain","ColorMapping","getShapeColorMapping","valuePath","equalValue","shapeColor","getColorByValue","colorMapping","gradientFill","colorMapping_1","to","getColor","minOpacity","maxOpacity","deSaturationColor","rangeValue","ratio","rgbToHex","componentToHex","hex","rbg","getGradientColor","midColor","previousColor","nextColor","previousOffset","nextOffset","charAt","_colorNameToHex","splitColorValueOffset","splitColor","getPercentageColor","prevColor","getPercentage","LayerPanel","horizontalPan","horizontalPanXCount","ajaxModule","ajaxResponse","measureLayerPanel","layerCollection","areaRect","secondaryEle","tileSvgObject","layerGroup","staticMapSize","processLayers","renderTileLayer","bing","currentFactor","defaultState","centerTileMap","markerModule","calculateZoomCenterPositionAndFactor","previousZoomFactor","initialCheck","panTileMap","resetToInitial","applyZoomReset","initialZoomLevel","initialTileTranslate","generateTiles","polygonModule","polygonRender","layerObject","navigationLineModule","navigationLineElement","renderNavigation","translateLayerElements","itemName","removeItem","urlTemplate","bingMapCalculation","bing_1","bingType","bingMapType","ajax","onSuccess","resource","arrangeTemplate","applyTransform","send","featureData","bbox","calculateRectBounds","calculatePathCollection","proxy","bubbleCalculation","bubbleSettings","bubbleDataSource","bubbledata","renderData","groupElements","rectBounds","geometryData","coords","generatePoints","labelTemplateEle","borderValue","currentShapeData","shapeID","getShapeColor_1","borderColorValuePath","shapeRenderingSuccess","pathEle","drawingType","generateMultiPolygonPath","lineData","multilineData","multiPointData","pathAttributeCalculate","layerFeatures","highlightSettings","selectedElementId","toggledShapeElementId","styleProperty","toggleLegendSettings","applyShapeSettings","bubbleG","bubbleModule","bubble_1","bubbleCollection","bubbleData","renderBubble","dataLabelSettings","intersect_1","renderLabel","intersect","bubbleIndex","coordinates","newData","calculatePolygonBox","multiPolygonDatas","lineExtraSpace_1","calculateBox","extraSpaces_1","multiLineData_1","multiPoints","pointExtraSpace","extraSpace_1","extraSpace","horFactor","verFactor","divide","exp","baseTranslatePoint","baseScale","calculateRectBox","multiPoint","isFirstItem","currentCoords","zoomType","xcount","ycount","userLang","tiles","xLeft","xRight","baseLayer","tileI","animateToZoomX","animateToZoomY","proxTiles","proxTiles_1","baseTile","subtile","arrangeTiles","timeOut","element1","tileAnimation","renderGoogleMap","staticMapZoom","animateElement","isAddLayer","imgElement","mapId","isNewTile","currentTiles","isExistingElement","translateY","tileParent","animatedTiles","tileElement","scaleValue","apikey","centerPoint","diffX","diffY","mouseDownLatLong","mouseMoveLatLong","panLatLng","pointToLatLong","eleWidth","eleHeight","mapType","staticMapString","factorX","factorY","Annotations","renderAnnotationElements","secondaryID","annotationGroup","createAnnotationTemplate","annotationArgs","annotationXValue","annotationYValue","horizontalAlignment","verticalAlignment","Maps","isResize","isTileMapSubLayer","markerNullCount","baseTileTranslatePoint","dataLabelShape","zoomShapeCollection","zoomLabelPositions","mouseDownEvent","mouseClickEvent","selectedBubbleElementId","selectedNavigationElementId","selectedPolygonElementId","selectedLegendElementId","legendSelectionCollection","shapeSelections","toggledLegendId","checkInitialRender","markerDragId","markerClusterExpandCheck","markerClusterExpand","mouseMoveId","markerDragArgument","mergePersistMapsData","get","mapSelect","enumerable","configurable","windowData","unWireEVents","wireEVents","createSVG","findBaseAndSubLayers","createSecondaryElement","addTabIndex","titleSettings","renderArea","processRequestJsonData","queryModule","serverProcess","request","response","processResponseJsonData","processAjaxRequest","localAjax","fetchApiModule","reader_1","FileReader","map_1","readAsText","processType","renderMap","createTile","createZoomingToolbars","initialShapeSelection","checkSelection","enableMultiSelect","shapeSelection","shapeValue","initialMarkerSelection","markerSelectionValues","markerInitialSelection","tileElement1","titleTextSize","subTitleTextSize","subtitleSettings","legendBorderRect","legendTotalRect","annotationsModule","outline","getElementsByTagName","zoomingChange","removeToolbarOpacity","triggerZoomEvent","loadedArgs","minMaxLatitudeLongitude","getMinMaxLatitudeLongitude","isResized","minLatitude","maxLatitude","minLongitude","maxLongitude","markerSelection","markerSelectionProperties","mapsArea","mapBorder","layerCollectionEle","tileSvgElement","tileSvgParentElement","tileRect","tileSvgRect","markerTemplateElements","templateGroupEle","toolBarGroup","alignToolBar","secondaryElement","minPosition","getGeoLocation","maxPosition","MinMaxLatitudeLongitude","templateElements","offSetLetValue","offSetTopValue","layerOffset","elementOffset","currentTemplate","elementOffset_1","mainLayer","ele1","baseIndex","mainLayers","subLayers","subLayer","borderRect","trimmedTitle","titleBounds","mapsOnClick","mapsOnRightClick","mapsOnDoubleClick","mouseDownOnMap","mouseMoveOnMap","mouseEndOnMap","mouseLeaveOnMap","resizeEvent","mapsOnResize","removeShapeHighlightCollection","removeTileMap","keyboardHighlightSelection","selectionsettings","selectionType","selectElement","handleHighlight","performZoomingByToolBar","enablePanning","panning","initialMapAreaRect","drawLegendItem","outlineColor","SelectedElement","latLongValue","getClickLocation","eventArgs_1","isShapeSelected","mouseArgs","removeToolbarClass","mergeCluster","mapsTooltipModule","tooltipTargetID","triggerShapeSelection","shapeSelectedEventArgs","removedSelectionList","getMarkerClickLocation","isDragEnd","getTileGeoLocation","immediateParent","zoomScaleValue","dataObject","location_3","layerX","layerY","legendTooltip","cancelable","markerObject","dragEventArgs","Latitude","Longitude","renderTooltip","bubbleClick","isSingleClick","doubleClickArgs","bubbleMove","legendText","isExportInitialTileMap","zoomByPosition","panByDirection","mouseLocation","xDiff","yDiff","addLayer","mapsLayer","removeLayer","addMarker","layerEle","markerCollection_1","newMarker","propertyName","subLayerIndex","popertyNameArray","removeShapeSelection","indexValue","propertyName_1","shapeName","shapeHighLightAndSelection","shapeToggled","selectedElementIdIndex","zoomToCoordinates","centerLongtitude","isTwoCoordinates","zoomArgs","selectedElements","legendSelectedElements","ImageNotFound","isMarker","isLayer","isStaticMapType","newLayerLength","layerPropLength","collectionProp","isVisible","findVisibleLayers","annotationEnable","isBubbleVisible","minZoom","isMarkersVisible","isDataLabelVisible","isNavigationVisible","isPolygonVisible","allowPrint","allowImageExport","getBubbleVisible","bubble","allowDownload","imageExportModule","getBingUrlTemplate","fetchApi","isLayerVisible","isBubblevisible","istooltipVisible","isSelection","bubbles","markers","polygonSetting","layers_1","navigationLine","navigationLine_1","navigation","markers_1","bubbles_1","xx","yy","atan","minVal","maxVal","latLong","InitialShapeSelectionsDirective","InitialShapeSelectionsPlugin","InitialShapeSelectionDirective","InitialShapeSelectionPlugin","MarkersDirective","MarkersPlugin","MarkerDirective","MarkerPlugin","ColorMappingsDirective","ColorMappingsPlugin","ColorMappingDirective","ColorMappingPlugin","BubblesDirective","BubblesPlugin","BubbleDirective","BubblePlugin","NavigationLinesDirective","NavigationLinesPlugin","NavigationLineDirective","NavigationLinePlugin","LayersDirective","LayersPlugin","LayerDirective","LayerPlugin","MapsComponent","MapsPlugin","Legend","legendItemRect","heightIncrement","widthIncrement","textMaxWidth","shapeHighlightCollection","legendHighlightCollection","shapePreviousColor","selectedNonLegendShapes","legendRenderingCollections","defsElement","drawLegend","spacing","leftPadding","getLegends","getMarkersLegendCollections","legendItem","shapeBorder","defaultSize","legendTitle","titleTextStyle","legendItemStartX_1","legendItemStartY_1","legendMode","textY","shapeLocation","textLocation","labelAction","labelDisplayMode","arrangement","legendtitleSize","itemTextStyle","legendLength","rectWidth","rectHeight","position_1","textX_1","textY_1","textPadding_1","itemStartX","itemStartY","maxTextHeight","maxTextWidth","itemTextSize","Collection","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","ImageSrc","Shape","Text","Fill","legendShape","idIndex","legendObj","legendRect","getRangeLegendCollection","getEqualLegendCollection","getDataLegendCollection","legendTextTrim","legendRectSize","legendWithoutTextSize","itemId","textId","renderLegendBorder","legendToggle","shapeSize","pagingArrowPadding","strokeColor","strokeWidth","shapeId","legendTextStyle","useMarkerShape","legendShapeData","trimmedText","pagingGroup","pagingFont","pagingTextSize","leftPageX","rightPageX","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","rightPageOptions","rightRectPageOptions","pageTextOptions","pagingTextElement","legendHighLightAndSelection","textEle","multiSelectEnable","selectLength","interactProcess","updateLegendElement","toggleLegendCheck","collectionIndex","getIndexofLegend","removeLegendHighlightCollection","removeAllSelections","removeLegendSelectionCollection","idIndex_1","shapeMatch","pushCollection","legendHighlightColor","shapeItemCount","shapeOldFillColor","shapeOldOpacity","shapeOldColor","shapeOldFillOpacity","setColor","legendSelectionClass","legendSelectionColor","removeLegend","isLineStringShape","oldElement","legendOldFill","legendOldOpacity","legendOldBorderColor","legendOldBorderWidth","shapeOpacity","shapeOldBorderColor","shapeOldBorderWidth","Elements","dataCount","shapeFillColor","shapeElements","shapesOfLegend","removeFill","legendIndexOnShape","shapeDataOnLegend","selectionIndex","oldShapeElement","shapeMatched","selectionEle","isTargetSelected","selectedLegendIndex","multiSelection","legendSelectionIndex","addId","selectEle","IsSelected","SelectionIndex","targetCollection","selectedElement","currentCollection","legendType","currentCollectionLength","legendShapeElements","legendTextId","legendShapeId","trimTitle","legendBorder","getLegendAlignment","changeNextPage","areaX","areaY","locationX","locationY","showLegend","showLegendPath","legendFill","removeDuplicateLegend","getMarkerLegendData","getOverallLegendItemsCollection","legendData","rangeData","colorMapProcess_1","getLegendData","legendGradientColor","newColllection","isDuplicate","removeDuplicates","equalValues","equalData","outOfRangeValues","outOfRange","range_1","outfill","legendOutFill","eqaulColorProcess_1","equalIndex","colorMapping_2","interactiveHandler","hoverId","markerVisible","currentData","renderInteractivePointer","invertedPointer","markerToggleSelection","mapElement","bubbleToggleSelection","legendToggleFill","legendToggleOpacity","legendToggleBorderColor","legendToggleBorderWidth","legendToggleBorderOpacity","selectedItem","setToggleAttributes","removeCollections","toggledLegendIdIndex","toggledShapeIdIndex","LegendInteractive","mapdata","mapLegendElement","toggleLegendIdIndex","legendHighlightIndex","shapeHighlightIndex","dataPathValue","dataPathValueCase","shapeDataValueCase","textColor","legendFillColor","offsetColor","legendLinearGradient","trackElements","markerCount","nullCount","markerTemplateCount","markerSVGObject","markerTemplateEle","allowAnimation","MarkerArgs","isMarkersClustered","allowClustering","calculateIndividualLayerMarkerZoomLevel","minLong_1","maxLat_1","minLat_1","maxLong_1","centerLat","centerLong","markerFactor","ancestor","getMarker","isCluster","dataIndex_1","marker_1","el","clusterCollection","markerClusterCollection","markCollection","allowClusterExpand","isClusterSame","indexes_1","MapsTooltip","tooltipId","tooltipArgs","keyString","templateData","istooltipRender","isShape","propertyValue","markerIdex","tooltipDisplayMode","setTooltipContent","tooltipTextStyle","tooltipOption","isTooltipRemoved","touchCancelEvent","mouseEnter","rectZoomingStart","browserName","handled","isPan","isZoomFinal","isZoomSelection","pinchFactor","wheelEvent","selectionColor","toolbarSettings","buttonSettings","performZooming","newZoomFactor","prevLevel","isToolbarPerform","prevTilePoint","getTileTranslatePosition","markerLineAnimation","minBounds","maxBounds","mapTotalWidth","mapTotalHeight","calculateInitalZoomTranslatePoint","currentHeight","currentLevel","tileDefaultSize","prevSize","performRectZooming","isZoomCancelled","zoomRect","zoomingRect","zoomCalculationFactor","setInteraction","newInteraction","lastScale","interaction","updateInteraction","fingers","performPinchZooming","touchStartList","touchMoveList","touchCenter","newScale","newTileFactor","drawZoomRectangle","down","mouseDownPoints","mouseMovePoints","rectSVGObject","rectOption","animateTransform","templateCount","factor_1","elementCount","currentEle","markerAnimation_1","markerTranslates","markerTranslate","mapsTooltip","x_2","bubleIndex","currentY","labelAnimate","zoomshapewidth","dataLabelTranslate","labelX","labelY","zoomtext","zoomtextSize","rectElement","rectX","rectY","polygonIndex","markerCounts","markerTemplateCounts","mapsAreaRect","currentLayers","markerDatas","lati","long","polygonsElement","markerTemplateElement","datalabelTemplateElemement","trimmedLable","zoomtrimLabel","labelCollection","xpositionEnds","xpositionStart","textLocations","rightWidth","leftWidth","heightTop","heightBottom","smartLabelMode","intersectionAction","templateOffset","lineElement","xDifference","yDifference","panArgs","distanceX","distanceY","location_4","layerRect","panningXDirection","panningYDirection","toAlignSublayer","toolBarZooming","tileZoomFactor","xSpacing","ySpacing","toolbarProperties","toolBarOrientation","toolbarCollection","toolbarsCollection","toolbars","shadowElement","toolBarLength","toolWidth","toolHeight","outerElement","toolbar_1","pathStroke","currentToolbarEle","fillColor_1","zoomPath","zoomElements","performToolBarAction","zoomInPath","zoomOutPath","panPath","panColor","panElements","resetPath","stateColor","zoomColor","applySelection","panningStyle","toolBarSize","toolbarShapeOpacity","toolbarButtonOpacity","removePanColor","removeZoomColor","removeZoomOpacity","setOpacity","circleId","pathId","circleOpacity","pathOpacity","zoomOpacity","zoomStrokeOpacity","zoomInOpacity","zoomInStrokeOpacity","zoomOutOpacity","zoomOutStrokeOpacity","panOpacity","panStrokeOpacity","resetOpacity","resetStrokeOpacity","zoomClassStyle","zoomInClassStyle","zoomOutClassStyle","panClassStyle","resetClassStyle","mapMouseWheel","mouseWheelZoom","prevScale","staticMaxZoomLevel","wheelDelta","doubleClickZoom","firstMove","pinchZooming","zoomRectElement","mouseCancelHandler","zoomOnClick","previousTouchMoveList","fxRates","customiseCell","valueAccessCurrency","powerRates","valueAccessPower","gasRates","preventSelect","dragging","dragRestrict","resizeicon","responsive","east","west","north","south","northEast","southEast","northWest","southWest","panelContent","panelContainer","disable","panelTransition","Panel","DashboardLayout","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","createPanelElement","idValue","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","maxRow","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","createSubElement","templateParser","sanitizedValue","renderTemplate","appendElement","compilerFn","compilerFn_1","eleVal","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","headerHeight","contentHeightValue","minSizeX","minSizeY","maxSizeX","maxSizeY","panelProp","resizeEvents","downResizeHandler","touchDownResizeHandler","refreshListener","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","downTarget","shadowEle","elementX","elementY","originalWidth","getCellInstance","originalHeight","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","resizingPanel","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","upTarget","allowFloating","moveItemsUpwards","checkForChanges","pixelsToRows","canOccupy","collisions","getPanelBase","allowPushing","pixels","isCeil","sortItem","moveItemUpwards","availableRow","availableColumn","rowValue","columnValue","oldRow","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","widthValue","entirePanelsY","setXYDimensions","renderCell","dashBoardCell","checkMinMaxValues","ignore","w","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","eleOccupiedValues","checkingElement","occupiedItems","leftWardsSpaceChecking","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","collisionValue","replacable","isRightAdjudtable","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapCollision","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","checkForAdjustment","swappingAvailable","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","proxy_2","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","resizableHandles","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","dragArea","isDragScroll","handle","onDraggingStart","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","dragArgs","eleRowValue","startCol","endCol","dragCol","intDestroy","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","resizePanel","dragStartArgs","panelHeaderElement","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","mergePanels","sortedPanels","_loop_7","localPanel","PanelsDirective","PanelsPlugin","PanelDirective","PanelPlugin","DashboardLayoutComponent","DashboardLayoutPlugin","powerData","gasData","StackedColumnsDirective","StackedColumnsPlugin","StackedColumnDirective","StackedColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","GridComponent","GridPlugin","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","matrix","generate","selector","validator","passiveFocus","firstHeaderCellIndex","active","skipAction","onBlur","isGantt","setLastContentCellTabIndex","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","focusableToolbarItems","getFocusableToolbarItems","force","beforeArgs","byClick","clickArgs","returnVal","clearOutline","handleFilterNavigation","inputSelector","buttonSelector","allowToPaging","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","parentCell","lastColumn","skipOn","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","focusOutFromHeader","addBatchRow","clearIndicator","cellColIndex","cellCol","currentCellIndex","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentTable","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","th","inputTarget","filterCell","lastIndexOf","focusVirtualElement","virtualData","isKeyFocus","empty","preventScroll","setFocusedElement","getFocusInfo","cellElem","focusHeader","resetFocus","isFocused","getInfo","focusedColumnUid","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","matrixcs","hdrLen","handlerInstance","bool","focusElement","cellPosition","gridPosition","passiveHandler","restoreFocus","filterfocus","restoreFocusWithAction","internalCellFocus","groupSortFocus","groupTextFocus","groupCancelFocus","forgetPrevious","toFrozen","focusEle","getFocusable","Matrix","allow","emptyTable","inValid","vector","columnsCount","rowColumns","currentColumnCount","indexesByKey","navigators","getCurrentFromAction","editNextRow","isLastCellPrimaryKey","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","isDirty","nextRowFocusValidate","previousRowFocusValidate","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","searchBlur","PrintUtils","printWindow","htmlContent","getHTMLContent","Element","childIndex","actualBackgroundColor","isSVG","Connector","titleBorder","Location","Offset","ChartArea","ContainerPadding","Indexes","CornerRadius","Index","EmptyPointSettings","DragSettings","CenterLabel","StockTooltipSettings","Periods","PeriodSelectorSettings","Double","isStacking","actualDesiredIntervalsCount","niceInterval","isAutoIntervalOnBothAxis","minInterval","currentInterval","enableAutoIntervalOnZooming","POSITIVE_INFINITY","NEGATIVE_INFINITY","paddingInterval","maxPointLength","yAxisRange","findMinMax","findAdditional","findNormal","updateActualRange","remaining","startValue","isLazyLoad","duplicateTempInterval","isPolarRadar","intervalDigits","formatDigits","labelValue","rowDataBound","queryCellInfo","headerCellInfo","actionFailure","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","rowDragStartHelper","rowDragStart","rowDrag","rowDrop","printComplete","detailDataBound","toolbarClick","batchAdd","batchCancel","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","beforeDataBound","beforeOpenColumnChooser","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","initialLoad","uiUpdate","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","reorderComplete","rowDragAndDropComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","scroll","columnWidthChanged","rowsAdded","columnDragStop","headerDrop","dataSourceModified","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","saveComplete","deleteComplete","preventBatch","dialogDestroy","crudAction","addDeleteAction","destroyForm","doubleTap","beforeExcelExport","excelExportComplete","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","exportDetailTemplate","freezeRender","columnMenuClick","columnMenuOpen","filterOpen","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","showEmptyGrid","columnDataStateChange","dataStateChange","dataSourceChanged","rtlUpdated","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","columnChooserOpened","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","columnChooserCancelBtnClick","getFilterBarOperator","resetColumns","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshFrozenColumns","setReorderDestinationElement","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","pagerRefresh","closeInline","resetVirtualFocus","beforeCheckboxRendererQuery","createVirtualValidationForm","validateVirtualForm","destroyChildGrid","stickyScrollComplete","captionActionComplete","refreshInfinitePersistSelection","refreshInfiniteEditrowindex","afterFilterColumnMenuClose","beforeCheckboxfilterRenderer","commandColumnDestroy","batchCnfrmDlgCancel","refreshResizePosition","renderResponsiveChangeAction","renderResponsiveColumnChooserDiv","ContentRender","movableRows","freezeRowElements","isLoaded","infiniteCache","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","setRowsInLazyGroup","maxBlock","maxBlocks","startIdx","generator","getModelGenerator","pressedKey","renderHorizontalScrollbar","scrollbarHeight","setScrollbarHeight","virtualTable","virtualTrack","createContentTable","initializeContentDrop","showConfirmDialog","currentMovableRows","initialPageRecords","refFrag","refHdrfrag","hdrfrag","trElement","tbdy","isGroupFrozenHdr","checkCache","isFrozenLeft","templatetoclear","rootNodes","templates","updateVirtualCells","blockLoad","offsets","offsets_1","bSize","isEndBlock","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","isTR","nodeName","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","headerCellHeight","boxSizing","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","setDisplayNone","isFreeze","getHeaderColGroup","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","trs","prevLen","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","isDate","updateCellIndex","AutoCompleteComponent","AutoCompletePlugin","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","getGroupedRecords","ensureRowVisibility","parentid","childId","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","childRow","getSeriesColor","getThemeColor","canvas","darkBackground","axisLabel","axisTitle","chartTitle","legendLabel","crosshairLine","crosshairFill","crosshairLabel","selectionRectFill","selectionRectStroke","selectionCircleStroke","bearFillColor","bullFillColor","toolkitSelectionColor","toolkitFill","toolkitIconRectOverFill","toolkitIconRectSelectionFill","toolkitIconRect","datalabelFont","crosshairLabelFont","stripLineLabelFont","histogram","stockEventFont","doesImplementInterface","checkFor","getObject","getUpdateUsingRaf","updateFunction","isExportColumns","exportProperties","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","total","gLen","dataRowCnt","agrCnt","gLevel","childLevels","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","array","getActualProperties","templateCompiler","validSelector","setStyleAndAttributes","copyAttr","literals","extend","exclude","moved","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","getPopupLeftPosition","parentsUntil","isID","getElementIndex","inArray","getActualPropFromColl","getUid","appendChildren","calculateAggregate","Global","divNode","isComplexField","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","isIdentity","isActionPrevent","inst","wrap","clName","addRemoveActiveClasses","distinctStringValues","getFilterMenuPostion","elementVisible","dlgWidth","leftPos","getZIndexCalcualtion","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","padZero","String","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","setSeconds","predicateSt","predicateEnd","dateOnlyString","isGroupAdaptive","object","newCase","toUpperCase","getCustomDateFormat","formatvalue","getDatePattern","getExpandedState","printMode","getPrintGridModel","printGridModel","extendObjWithFn","deep","obj1","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","getColumnModelByFieldName","transformV","replacedTv","rootElement","getScrollWidth","resetColspanGroupCaption","gridWidth","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","newColspan","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","startRowIndex","compareChanges","newArray","isChildColumn","uids","pushuid","frozenDirection","addFixedColumnBorder","addStickyColumnPosition","getCellsByTableName","getCellByColAndRowIndex","setValidationRuels","rules","mRules","frRules","numberFormat","currencyCode","getNumberPattern","currency","patternRegex","mtch_1","'","addBiggerDialog","dialogs","performComplexDataOperation","returnObj","duplicateMap","setDisplayValue","addRemoveEventListener","isOn","evt_1","createEditElement","classNames","complexFieldName","registerEventHandlers","evts","eventHandlers","removeEventHandlers","clearReactVueTemplates","generateExpandPredicates","filterCols","getPredicates","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","capitalizeFirstLetter","string","isDescending","sortData","isBreakLabel","getVisiblePoints","tempPoint","tempPoints","rotateTextSize","labelText","box","angleInRadians","rotatedTextWidth","rotatedTextHeight","inside","withIn","logWithIn","withInRange","nextPoint","mX2","mX1","mX3","xStart","xEnd","values_1","subtractThickness","thickness","degreeToLocation","degree","ChartLocation","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","coordinatesAfterRotation","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","i2","normal","getAccumulationLegend","cartesianlarge","cartesiansmall","subArray","valueToCoefficient","TransformToVisible","isInverted","CoefficientToVector","valueToPolarCoefficient","coefficient","Mean","verticalStandardMean","verticalSquareRoot","horizontalStandardMean","horizontalSquareRoot","verticalMean","horizontalMean","PolarArc","createZoomingLabels","chartRect","findCrosshairDirection","withInBounds","getValueXByPoint","actualValue","getValueYByPoint","findClipRect","firstToLowerCase","getMinPointsDelta","xValues","seriesMin","minDelta","stackingGroups","getAnimationFunction","linear","currentTime","endValue","markerAnimate","animateRectElement","currentRect","pathAnimation","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","endPath","directions","appendClipElement","clipElement","redrawElement","triggerLabelRender","isLineBreakLabels","text_1","lineBreakLabelTrim","maximumLabelWidth","setRange","isZoomSet","getActualDesiredIntervalsCount","desiredIntervalsCount","maximumLabels","templateAnimate","chartRenderer","drawElement","dir","xVal","yVal","sizeBullet","targetWidth","lx","ly","calculateLegendShapes","getRectLocation","startLocation","endLocation","outerRect","minMax","accReactTemplate","datalabelGroup","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","calculateTemplateLabelSize","dataLabelId","templateId","elementData","reactCallback","getFontStyle","measureElementRect","isReactCallback","findlElement","getPoint","yLength","appendChildElement","isAnimate","forceAnimate","isRect","scatterElement","existChild","animateRedrawElement","median","upperQuartile","lowerQuartile","liers","isCollide","isOverlap","calculateRect","convertToHexCode","convertHexToColor","colorNameToHex","isRGBValue","checkColorFormat","getSaturationColor","colorCode","rgb","applyZLight","RGB","breakLabels","isDiv","isDataLabelWrap","dx","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","selectorObject","getTitle","textWrap","titlePositionX","maximumWidth","wrapAnyWhere","textWrapAnyWhere","getUnicodeText","regexp","digitSpecific","convertedText","unicodeSub","unicodeSup","blazorTemplatesReset","StackValues","ImageOption","Thickness","LabelLocation","PointData","ControlPoints","AccPointData","Point3D","controlPoint1","controlPoint2","rbgColorValue","getTextAnchor","CellMergeRender","spannedCell","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","merge","getIndexFromAllColumns","vColumnIndices","DoubleRange","mStart","mEnd","isValDiff","makechanges","Cell","_calorificValue","_correctionFactor","_kWhConversionFactor","unitConversions","kWhToMWh","kWh","kWhToMW","numberOfDays","isPeakload","kWhToTherms","kWhToThermsPerDay","kWhToMmbtu","kWhToM3","MWhTokWh","MWh","MWhToMW","MWhToTherms","MWhToThermsPerDay","MWhToMmbtu","MWhToM3","calorificValue","correctionFactor","kWhConversionFactor","MWTokWh","MW","MWToMWh","MWToTherms","MWToThermsPerDay","MWToMmbtu","MWToM3","thermsTokWh","therms","thermsToMWh","thermsToMW","thermsToThermsPerDay","thermsToMmbtu","thermsToM3","therm","thermsPerDayTokWh","thermsPerDay","thermsPerDayToMWh","thermsPerDayToMW","thermsPerDayToTherms","thermsPerDayToMmbtu","thermsPerDayToM3","mmbtuTokWh","mmbtu","mmbtuToMWh","mmbtuToMW","mmbtuToTherms","mmbtuToThermsPerDay","mmbtuToM3","m3TokWh","m3b","m3ToMWh","m3ToMW","m3ToTherms","m3ToThermsPerDay","m3ToMmbtu","percentageToUnit","unitToPercentage","part","convert","inputUnit","outputUnit","thermsTom3","kWhTom3","MWhTom3","MWTom3","thermsPerDayTom3","DataLabel","errorHeight","initPrivateVariables","commonId","calculateErrorHeight","chartBackground","positiveHeight","negativeHeight","rgbValue","contrast","labelLocation","yAxisInversed","isDataLabelOverlap","showZero","labelLength","shapeRect","enableRotation","argsFont","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","visibleAxisLabelRect","rectRegion","actualRect","isDataLabelOverlapWithChartBound","textAnchor","loc1","loc2","loc3","loc4","clipWidth","clipHeight","vAxis","hAxis","labelRegion","getLabelLocation","alignmentValue","calculateAlignment","calculateRectPosition","calculatePathPosition","calculatePolarRectPosition","dataLabelOutRegion","columnRadius","chartWidth","alignmentSign","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","intersectY","textNode","legendItemsId_1","visibleSeriesCollection","visibleSeriesCollection_1","legendImageUrl","extraHeight","extraWidth","verticalArrowSpace","titleSpace","legendEventArgs","rowWidth","columnHeight","columnCount","titlePlusArrowSpace","getLegendHeight","prevLegend","previousBound","isWithinBounds","availwidth","LegendClick","changeDetection","legendClickArgs","changeSeriesVisiblity","refreshLegendToggle","points_1","redrawSeriesElements","refreshSeries","series_1","legendRegion","legendItemsId_2","checkWithinBounds","cRender","canvasRect","canvasPageUp","canvasPageDown"],"mappings":"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GAC5C,EAAW,CACP,gBAAS,IACV02C,EAAM12C,UAAW,oCAAgC,GACpD,EAAW,CACP,gBAAS,IACV02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,gBAAS,IACV02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,eAAS,OACV02C,EAAM12C,UAAW,uBAAmB,GACvC,EAAW,CACP,eAAW,GAAI,IAChB02C,EAAM12C,UAAW,kBAAc,GAClC,EAAW,CACP,gBAAS,IACV02C,EAAM12C,UAAW,uBAAmB,GACvC,EAAW,CACP,eAAS,OACV02C,EAAM12C,UAAW,mBAAe,GACnC,EAAW,CACP,eAAS,IACV02C,EAAM12C,UAAW,gBAAY,GAChC,EAAW,CACP,gBAAS,IACV02C,EAAM12C,UAAW,iCAA6B,GACjD,EAAW,CACP,kBACD02C,EAAM12C,UAAW,eAAW,GAC/B,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,wBAAoB,GACxC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,mBAAe,GACnC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,cAAU,GAC9B,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,mBAAe,GACnC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,YAAQ,GAC5B,EAAW,CACP,kBACD02C,EAAM12C,UAAW,yBAAqB,GACzC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,kBAAc,GAClC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,mBAAe,GACnC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,uBAAmB,GACvC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,sBAAkB,GACtC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,2BAAuB,GAC3C,EAAW,CACP,kBACD02C,EAAM12C,UAAW,4BAAwB,GAC5C,EAAW,CACP,kBACD02C,EAAM12C,UAAW,mBAAe,GACnC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,4BAAwB,GAC5C,EAAW,CACP,kBACD02C,EAAM12C,UAAW,qBAAiB,GACrC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,2BAAuB,GAC3C,EAAW,CACP,kBACD02C,EAAM12C,UAAW,sBAAkB,GACtC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,uBAAmB,GACvC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,wBAAoB,GACxC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,kBAAc,GAClC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,wBAAoB,GACxC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,iBAAa,GACjC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,uBAAmB,GACvC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,sBAAkB,GACtC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,yBAAqB,GACzC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,oBAAgB,GACpC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,iBAAa,GACjC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,mBAAe,GACnC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,iBAAa,GACjC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,qBAAiB,GACrC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,iBAAa,GACjC,EAAW,CACP,kBACD02C,EAAM12C,UAAW,YAAQ,GAC5B,EAAW,CACP,kBACD02C,EAAM12C,UAAW,eAAW,GAC/B,EAAW,CACP,eAAS,QACV02C,EAAM12C,UAAW,oBAAgB,GACpC02C,EAAQ,EAAW,CACf,QACDA,GACIA,EA9/Fe,CA+/FxB,S,4GCvpGK,SAASgY,EAAgBxrD,EAASkc,EAAOqY,EAAYnpB,GACxD,GAAc,KAAV8Q,EAAJ,C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B,GACpCE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,uBAAmB,GACtCE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,wBAAoB,GACvCE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,iBAAa,GAChCE,EAAW,CACP,eAAS,KACV44D,EAAK94D,UAAW,eAAW,GAC9BE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,mBAAe,GAClCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,gBAAY,GAC/BE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,YAAQ,GAC3BE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,wBAAoB,GACvCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,qBAAiB,GACpCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,kBAAc,GACjCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,oBAAgB,GACnCE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,gCAA4B,GAC/CE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,uBAAmB,GACtCE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,mCAA+B,GAClDE,EAAW,CACP,eAAS,SACV44D,EAAK94D,UAAW,oBAAgB,GACnCE,EAAW,CACP,eAAS,WACV44D,EAAK94D,UAAW,iBAAa,GAChCE,EAAW,CACP,eAAS,SACV44D,EAAK94D,UAAW,0BAAsB,GACzCE,EAAW,CACP,eAAS,SACV44D,EAAK94D,UAAW,oBAAgB,GACnCE,EAAW,CACP,eAAS,iBACV44D,EAAK94D,UAAW,sBAAkB,GACrCE,EAAW,CACP,eAAS,YACV44D,EAAK94D,UAAW,oBAAgB,GACnCE,EAAW,CACP,eAAS,YACV44D,EAAK94D,UAAW,qBAAiB,GACpCE,EAAW,CACP,eAAS,KACV44D,EAAK94D,UAAW,YAAQ,GAC3BE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,eAAW,GAC9BE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,6BAAyB,GAC5CE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,qBAAiB,GACpCE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,qBAAiB,GACpCE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,iBAAa,GAChCE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,2BAAuB,GAC1CE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,qBAAiB,GACpCE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,eAAW,GAC9BE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,eAAW,GAC9BE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,gBAAY,GAC/BE,EAAW,CACP,eAAS,KACV44D,EAAK94D,UAAW,yBAAqB,GACxCE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,kBAAc,GACjCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,oBAAgB,GACnCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,oBAAgB,GACnCE,EAAW,CACP,eAAQ,GAAIy4D,IACbG,EAAK94D,UAAW,sBAAkB,GACrCE,EAAW,CACP,eAAQ,GAAI04D,IACbE,EAAK94D,UAAW,sBAAkB,GACrCE,EAAW,CACP,eAAQ,GAAIs4D,IACbM,EAAK94D,UAAW,sBAAkB,GACrCE,EAAW,CACP,eAAQ,GAAIu4D,IACbK,EAAK94D,UAAW,sBAAkB,GACrCE,EAAW,CACP,eAAQ,GAAIw4D,IACbI,EAAK94D,UAAW,iBAAa,GAChCE,EAAW,CACP,eAAS,OAAQuP,SAAW,WAAa,SAC1CqpD,EAAK94D,UAAW,4BAAwB,GAC3CE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,kBAAc,GACjCE,EAAW,CACP,eAAS,MACV44D,EAAK94D,UAAW,mBAAe,GAClCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,kBAAc,GACjCE,EAAW,CACP,gBAAS,IACV44D,EAAK94D,UAAW,qBAAiB,GACpCE,EAAW,CACP,eAAS,OACV44D,EAAK94D,UAAW,mBAAe,GAClCE,EAAW,CACP,eAAS,IACV44D,EAAK94D,UAAW,gBAAY,GAC/BE,EAAW,CACP,eAAW,GAAI,SAChB44D,EAAK94D,UAAW,kBAAc,GACjCE,EAAW,CACP,eAAW,GAAI,SAChB44D,EAAK94D,UAAW,wBAAoB,GACvCE,EAAW,CACP,eAAQ,CAAEuV,MAAO,KAAMrQ,MAAO,EAAGkJ,KAAM,aAAe,SACvDwqD,EAAK94D,UAAW,cAAU,GAC7BE,EAAW,CACP,eAAQ,GAAI,SACb44D,EAAK94D,UAAW,yBAAqB,GACjC84D,EAnnBc,CAonBvB,QAGE+B,EAA+B,WAC/B,SAASA,EAAcv+C,EAAMQ,EAAOotB,EAAYL,EAAcj0B,EAAM4zB,EAAgBj9B,QACnE,IAATqJ,IAAmBA,EAAO,IAAI,OAAK,EAAG,SACnB,IAAnB4zB,IAA6BA,EAAiB,IAAI,OAAK,EAAG,SAChD,IAAVj9B,IAAoBA,EAAQ,GAChCzM,KAAKwc,KAAOA,EACZxc,KAAK+pC,aAAeA,EACpB/pC,KAAKgd,MAAQA,EACbhd,KAAKoqC,WAAaA,EAClBpqC,KAAK8V,KAAOA,EACZ9V,KAAK0pC,eAAiBA,EACtB1pC,KAAKyM,MAAQA,EAEjB,OAAOsuD,EAbuB,I,oCCp4BlC,kGAAI17D,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAS5D63D,EAAwB,WACxB,SAASA,EAAOt1D,EAAS2d,GACrB,IAAIzd,EAAQrD,KAMZA,KAAKg7D,mBAAoB,EAOzBh7D,KAAKi2B,cAAe,EAOpBj2B,KAAKi7D,eAAgB,EAOrBj7D,KAAKq4B,gBAAiB,EAOtBr4B,KAAKs1B,eAAgB,EAOrBt1B,KAAKk7D,iBAAkB,EAOvBl7D,KAAKm7D,gBAAiB,EAMtBn7D,KAAK+1B,qBAAsB,EAO3B/1B,KAAKo7D,cAAe,EAcpBp7D,KAAKoe,OAAS,GAOdpe,KAAKq7D,qBAAsB,EAM3Br7D,KAAKs7D,KAAO,GAOZt7D,KAAKo9B,gBAAiB,EAQtBp9B,KAAKu7D,SAAU,EACfv7D,KAAKw7D,cAAgB,aAIrBx7D,KAAKy7D,gBAAkB,WAAc,OAAOp4D,EAAMq4D,gBAIlD17D,KAAK27D,kBAAoB,WAAc,OAAOt4D,EAAMu4D,kBACpD,gBAAM57D,KAAMmD,GACZnD,KAAK8gB,OAASA,EACI,SAAd9gB,KAAKwO,KACLxO,KAAKwO,KAAO,KAEPxO,KAAKwO,OACVxO,KAAKwO,KAA8B,kBAAfxO,KAAS,KAAiBA,KAAKwO,KAAK+T,mBAAgBhX,GAExEvL,KAAK67D,WACL77D,KAAK67D,SAAW77D,KAAK67D,SAASt5C,eAE9B,eAAkBviB,KAAK64B,OACvB74B,KAAK64B,IAAM,eAAO,gBAEtB,IAAIijC,EAAiB,IAAI,OA+DzB,GA9DI34D,EAAQqtB,SAAWrtB,EAAQqtB,OAAOzW,UAAa5W,EAAQqtB,OAAOA,QAC7B,kBAA1BrtB,EAAQqtB,OAAOA,UACtBxwB,KAAK+7D,aAAaD,EAAeE,kBAAkB,eAAO,GAAI74D,EAAQqtB,UACtExwB,KAAKi8D,UAAUH,EAAeI,kBAAkB/4D,EAAQqtB,UAE5DxwB,KAAKm8D,OAAS,WAKV,IAJA,IAAI/lC,EAAM,GACNs6B,EAAO,CAAC,SAAU,aAAc,aAAc,WAAY,iBAAkB,OAC5E,eAAgB,iBAAkB,mBAAoB,UACtDt7C,EAAO3V,OAAO2V,KAAK/R,GACdrC,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7B,GAAyC,YAArCoU,EAAKzD,SAAS3Q,EAAE4Q,WAAY,KAAoB,CAChDwkB,EAAIhhB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAQ,GACxC,IAAK,IAAIiS,EAAI,EAAGA,EAAIxgB,EAAM+R,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAMjR,OAAQkjB,IAChEuS,EAAIhhB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAMvF,KAAKhJ,EAAM+R,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAMD,SAASkS,EAAEjS,WAAY,KAAKuqD,eAG9GzL,EAAK1sD,QAAQoR,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAQ,IACtDwkB,EAAIhhB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAQvO,EAAM+R,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OAGlF,OAAOwkB,GAENp2B,KAAKszB,QACNtzB,KAAKq4B,gBAAiB,EACtBr4B,KAAKs1B,eAAgB,EACrBt1B,KAAKi2B,cAAe,EAChBj2B,KAAK0iB,UACL1iB,KAAKi7D,cAAgBj7D,KAAK0iB,QAAQ6U,MAAK,SAAUnB,GAC7C,OAAOA,EAAI6kC,mBAInBj7D,KAAKo8D,WAAap8D,KAAKq8D,YACvBr8D,KAAKq8D,UAAY,UAEjBr8D,KAAK2sB,UAAY3sB,KAAKs8D,oBACtBt8D,KAAKu8D,WAAa,gBAAiBv8D,KAAK2sB,UAAY3sB,KAAKs8D,mBAEzDt8D,KAAKw8D,iBACLx8D,KAAKy8D,iBAAmB,gBAAiBz8D,KAAKw8D,kBAE7C,eAAkBx8D,KAAKoe,SAAWpe,KAAKoe,OAAOg2C,eAC/Cp0D,KAAK08D,eAAiB,gBAAiB18D,KAAKoe,OAAOg2C,eAEnDp0D,KAAK28D,eACL38D,KAAK07D,eAAiB,gBAAiB17D,KAAK28D,eAE5C38D,KAAK48D,iBACL58D,KAAK47D,iBAAmB,gBAAiB57D,KAAK48D,iBAE9C58D,KAAK02B,oBACJ,eAAkB12B,KAAK67D,WAA+B,iBAAlB77D,KAAK67D,UAAiD,gBAAlB77D,KAAK67D,YAC9E77D,KAAK67D,SAAW,eACZ77D,KAAKs7D,KAAKuB,QAAU78D,KAAKs7D,KAAKuB,OAAOz9C,aACrCpf,KAAKs7D,KAAKuB,OAAOC,cAAe,GAEpC98D,KAAKs7D,KAAKuB,OAAS,eAAO,CACtBz9C,WAAYpf,KAAKof,WACjBE,MAAO,IAAI,OAAS4X,OAAQ,CAAEla,MAAOhd,KAAK+8D,iBAAmB/8D,KAAKszB,MAAO9W,KAAMxc,KAAKw3B,kBACrFx3B,KAAKs7D,KAAKuB,SAEb78D,KAAKw2B,aAAc,CACnB,IAAIwmC,EAAMh9D,KAAKw2B,aACfx2B,KAAKw2B,aAAe,SAAUxwB,EAAGC,EAAGg3D,EAAMC,GAItC,GAHmB,kBAARF,IACPA,EAAM,eAAUA,EAAKz2D,SAEG,eAAxBlD,EAAMm4D,cAAgC,CACtC,IAAI2B,EAAIn3D,EACRA,EAAIC,EACJA,EAAIk3D,EACJ,IAAIC,EAAMH,EACVA,EAAOC,EACPA,EAAOE,EAEX,OAAOJ,EAAIh3D,EAAGC,EAAGg3D,EAAMC,KAG1Bl9D,KAAKw2B,cAAgBx2B,KAAK02B,oBAC3B12B,KAAKw2B,aAAe,SAAUxwB,EAAGC,GAG7B,OAFAD,EAAI,eAAU3C,EAAMm0B,gBAAiB,eAAen0B,EAAO,GAAI2C,GAAG,IAClEC,EAAI,eAAU5C,EAAMm0B,gBAAiB,eAAen0B,EAAO,GAAI4C,GAAG,IACnC,eAAxB5C,EAAMm4D,cAAiC,OAAS6B,aAAar3D,EAAGC,GAAK,OAASq3D,YAAYt3D,EAAGC,KA+GhH,OAxGAwyD,EAAOv4D,UAAU22B,iBAAmB,WAChC,OAAO72B,KAAKw7D,eAOhB/C,EAAOv4D,UAAUm2B,iBAAmB,SAAUC,GAC1Ct2B,KAAKw7D,cAAgBllC,GAKzBmiC,EAAOv4D,UAAUq9D,mBAAqB,WAClC,OAAOv9D,KAAKw9D,aAOhB/E,EAAOv4D,UAAU+K,cAAgB,SAAUyW,GAGvC,IADA,IAAItM,EAAO3V,OAAO2V,KAAKsM,GACd1gB,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7BhB,KAAKoV,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAQ8P,EAAOtM,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAExE5R,KAAK8gB,QAAU9gB,KAAK8gB,OAAO3Y,UACc,aAArCiN,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAC5B5R,KAAKu8D,WAAa,gBAAiB76C,EAAOtM,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OACtE5R,KAAK8gB,OAAO28C,gCAAgCz9D,KAAK64B,KAAK,IAEZ,mBAArCzjB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MACjC5R,KAAKy8D,iBAAmB,gBAAiB/6C,EAAOtM,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OAC5E5R,KAAK8gB,OAAO48C,gCAAgC19D,KAAK64B,MAEP,iBAArCzjB,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OACjC5R,KAAK07D,eAAiB,gBAAiBh6C,EAAOtM,EAAKzD,SAAS3Q,EAAE4Q,WAAY,UAU1F6mD,EAAOv4D,UAAUw2B,gBAAkB,WAC/B,SAAU12B,KAAKof,aAAcpf,KAAKw3B,kBAMtCihC,EAAOv4D,UAAUk7B,aAAe,WAC5B,OAAOp7B,KAAK29D,UAOhBlF,EAAOv4D,UAAU67D,aAAe,SAAU/+C,GACtChd,KAAK29D,SAAW3gD,GAKpBy7C,EAAOv4D,UAAU09D,UAAY,WACzB,OAAO59D,KAAK69D,UAOhBpF,EAAOv4D,UAAU+7D,UAAY,SAAUj/C,GACnChd,KAAK69D,SAAW7gD,GAKpBy7C,EAAOv4D,UAAU49D,kBAAoB,WACjC,OAAO99D,KAAKu8D,YAKhB9D,EAAOv4D,UAAU69D,kBAAoB,WACjC,OAAO/9D,KAAKy8D,kBAKhBhE,EAAOv4D,UAAU89D,sBAAwB,WACrC,OAAOh+D,KAAK08D,gBAKhBjE,EAAOv4D,UAAU+9D,aAAe,WAC5B,OAAOj+D,KAAKg7D,kBAAoB,cAAgB,aAE7CvC,EApUgB,GA4VvByF,GAlBoC,WACpC,SAASC,KAET/9D,EAAW,CACP,kBACD+9D,EAAmBj+D,UAAW,aAAS,GAC1CE,EAAW,CACP,kBACD+9D,EAAmBj+D,UAAW,YAAQ,GACzCE,EAAW,CACP,kBACD+9D,EAAmBj+D,UAAW,oBAAgB,GAXd,GAkBP,SAAU2C,GAEtC,SAASq7D,IACL,OAAkB,OAAXr7D,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPAX,EAAU6+D,EAAYr7D,GAItBzC,EAAW,CACP,eAAS,OACV89D,EAAWh+D,UAAW,eAAW,GAC7Bg+D,EARoB,CAS7BzF,KAKiC,SAAU51D,GAEzC,SAASu7D,IACL,OAAkB,OAAXv7D,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAF/DX,EAAU++D,EAAev7D,IADK,CAMhCq7D,I,oCC1YF,kGAYIG,EAAwB,WAOxB,SAASA,EAAOv9C,GAEZ9gB,KAAKs+D,eAAiB,CAAEv5D,IAAK,EAAGC,KAAM,GACtChF,KAAKu+D,cAAe,EACpBv+D,KAAK8gB,OAASA,EACd9gB,KAAKw+D,aAAe,IAAI,OAAmB19C,GAC3C9gB,KAAK+oB,mBAykBT,OAjkBAs1C,EAAOn+D,UAAU4U,cAAgB,WAC7B,MAAO,UAOXupD,EAAOn+D,UAAUu+D,SAAW,SAAUC,GAKlC,GAJA1+D,KAAK8gB,OAAO1d,QAAQ2D,MAAMzB,MAAQ,eAAWtF,KAAK8gB,OAAOxb,OACrDo5D,GACA1+D,KAAKw+D,aAAaG,oBAElB3+D,KAAK8gB,OAAO89C,eAAiB5+D,KAAK8gB,OAAO89C,cAAcC,SACvD7+D,KAAK8gB,OAAO89C,cAAcC,QAAQz7D,QAAS,CAC3C,IAAI07D,EAAc9+D,KAAK8gB,OAAO89C,cAAcC,QAAQz7D,QAChD27D,EAAkBD,EAAY5yD,cAAc,mBAC5C8yD,EAAoBF,EAAY5yD,cAAc,qBAC9C+yD,EAAmBH,EAAY5yD,cAAc,oBAC7CgzD,EAAYJ,EAAY5yD,cAAc,oBACtCizD,EAAgBJ,EAAkBA,EAAgBx1D,YAAc,EAChE61D,EAAkBJ,EAAoBA,EAAkBz1D,YAAc,EACtE81D,EAAiBJ,EAAmBA,EAAiB11D,YAAc,EACnE+1D,EAAiBJ,EAAYA,EAAU31D,YAAc,EACrDg2D,EAAYT,EAAcA,EAAYv1D,YAAc,IACnDvJ,KAAK8gB,OAAO0+C,kBAAoBL,EAAgBI,GAAaH,EAAkBG,GAAaF,EAAiBE,GAC9GD,EAAiBC,IACjBv/D,KAAK8gB,OAAO89C,cAAcC,QAAQY,oBAQ9CpB,EAAOn+D,UAAUw/D,UAAY,WACzB,IAAIC,EAAa,EACb90D,EAAU7K,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,IAAM,QACvD7G,EAASrF,KAAK8gB,OAAOzb,OAKzB,GAJIrF,KAAK8gB,OAAO++C,4BAA8B7/D,KAAK8gB,OAAOg/C,gBAAyC,SAAvB9/D,KAAK8gB,OAAOzb,QACjFrF,KAAK8gB,OAAOzb,OAAOuM,WAAW5N,QAAQ,KAAO,IAChDqB,EAASsM,SAAStM,EAAQ,IAAMg5D,EAAO0B,sBAEtC//D,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAOk/C,YAAqC,SAAvBhgE,KAAK8gB,OAAOzb,OAAmB,CAC9F,IAAI2yD,EAAQh4D,KAAK8gB,OAAOm/C,mBACnB/zD,cAAc,OAAiB,yBAEpC,GADAyzD,EAAa3H,EAAQA,EAAMvuD,aAAe,EACtCuuD,GAAS2H,EAAY,CACrB,IAAI7zD,EAAMksD,EAAMhkB,uBAAuB,QAAmBrzC,OACtD25D,EAAWxuD,EAAM9L,KAAK8gB,OAAOo/C,eACjCP,GAAcrF,OAERt6D,KAAK8gB,OAAOq/C,eAAgE,YAA/CngE,KAAK8gB,OAAOs/C,iBAAiBC,eAC7DrgE,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,qBAChD7G,EAASsM,SAAStM,EAAQ,IAAOrF,KAAK8gB,OAAOk/C,WAAahgE,KAAK8gB,OAAOo/C,gBAE1Er1D,EAAQ9D,MAAM1B,OAAS,eAAWA,EAASs6D,QAG3C90D,EAAQ9D,MAAM1B,OAAS,eAAWA,GAEtCrF,KAAKsgE,eAAez1D,GAChB7K,KAAK8gB,OAAOg/C,gBACZ9/D,KAAKsV,WAOb+oD,EAAOn+D,UAAUqgE,WAAa,WAC1B,IAAI11D,EAAU7K,KAAK8gB,OAAOm/C,mBACtBO,EAAcnC,EAAO0B,oBAAsB//D,KAAKygE,eAChDC,EAAW1gE,KAAK2gE,mBACpB91D,EAAQqB,cAAc,IAAM,QAAwBnF,MAAM25D,EAASt7C,QAAUo7C,EAAc,EAAI,MAAQ,MACvG31D,EAAQ9D,MAAM25D,EAASvzC,SAAWqzC,EAAc,EAAIA,EAAc,KAAO,OAO7EnC,EAAOn+D,UAAU0gE,cAAgB,SAAUC,GACvC,IAAIH,EAAW1gE,KAAK2gE,iBAAiBE,GACjCC,EAAO9gE,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,IAAM,QAC9D40D,EAAK/5D,MAAM25D,EAASt7C,QAAU,GAC9B07C,EAAKprB,cAAc3uC,MAAM25D,EAASvzC,SAAW,GAC7C,IAAI4zC,EAAY/gE,KAAK8gB,OAAOkgD,mBACxBD,GAAaA,EAAU77D,UAAUmB,SAAS,oBAC1C06D,EAAU77D,UAAUC,OAAO,oBAUnCk5D,EAAOn+D,UAAUoV,QAAU,WACvB,GAA2B,SAAvBtV,KAAK8gB,OAAOzb,OAAhB,CAGA,IAAIwF,EAAU7K,KAAK8gB,OAAO8+C,aAC1B5/D,KAAK8gB,OAAO1d,QAAQ2D,MAAM1B,OAAS,OACnC,IAAIA,EAASrF,KAAKw+D,aAAayC,kBAAkBp2D,GACjDA,EAAQ9D,MAAM1B,OAAS,eAAiBA,EAAS,QAErDg5D,EAAOn+D,UAAUugE,aAAe,WAG5B,IAAIS,EAAU,OAAQl6C,KAAKhX,KAC3B,MAAgB,YAAZkxD,EACO,GAEJ,GAMX7C,EAAOn+D,UAAU6oB,iBAAmB,WAC5B/oB,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOqI,GAAG,QAASnpB,KAAK4T,WAAY5T,MACzCA,KAAK8gB,OAAOqI,GAAG,QAAcnpB,KAAK4T,WAAY5T,MAC9CA,KAAK8gB,OAAOqI,GAAG,QAAUnpB,KAAKiV,kBAAmBjV,MACjDA,KAAK8gB,OAAOqI,GAAG,QAAiBnpB,KAAK4T,WAAY5T,MACjDA,KAAK8gB,OAAOqI,GAAG,QAAiBnpB,KAAKmhE,cAAenhE,QAMxDq+D,EAAOn+D,UAAU0xC,oBAAsB,WAC/B5xC,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOmb,IAAI,QAASj8B,KAAK4T,YAC9B5T,KAAK8gB,OAAOmb,IAAI,QAAcj8B,KAAK4T,YACnC5T,KAAK8gB,OAAOmb,IAAI,QAAUj8B,KAAKiV,mBAC/BjV,KAAK8gB,OAAOmb,IAAI,QAAiBj8B,KAAK4T,YACtC5T,KAAK8gB,OAAOmb,IAAI,QAAiBj8B,KAAKmhE,eACtCnhE,KAAKyU,iBAET4pD,EAAOn+D,UAAUuU,aAAe,WACxBzU,KAAK8gB,OAAOk/C,YAAchgE,KAAKyrB,SAC/B,OAAatmB,OAAOnF,KAAKyrB,OAAQ,yBAA0BzrB,KAAKohE,WAChE,OAAaj8D,OAAOnF,KAAKyrB,OAAQ,wBAAyBzrB,KAAKqhE,gBAEnE,IAAIC,EAAathE,KAAK8gB,OAAO8+C,aAAe5/D,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,uBAAyB,KACxGlM,KAAK8gB,OAAOg/C,gBAAkB9/D,KAAK8gB,OAAO++C,6BACtCyB,GACA,OAAan8D,OAAOm8D,EAAY,SAAUthE,KAAKuhE,yBAE/CvhE,KAAK6K,UACL,OAAa1F,OAAOnF,KAAK6K,QAAS,SAAU7K,KAAKuhE,yBACjD,OAAap8D,OAAOnF,KAAK6K,QAAS,yBAA0B7K,KAAKohE,WAC3D,iBAAiB9oB,KAAK,OAAQkpB,UAAUj/C,gBAAkB,OAAQ5S,UACpE,OAAaxK,OAAOnF,KAAK6K,QAAS,wBAAyB7K,KAAKqhE,gBAGpErhE,KAAKyrB,SACL,OAAatmB,OAAOnF,KAAKyrB,OAAQ,SAAUzrB,KAAKuhE,yBAChD,OAAap8D,OAAOnF,KAAKyrB,OAAQ,yBAA0BzrB,KAAKohE,WAChE,OAAaj8D,OAAOnF,KAAKyrB,OAAQ,wBAAyBzrB,KAAKqhE,iBAGnErhE,KAAK6K,SACL,OAAa1F,OAAOnF,KAAK6K,QAAS,SAAU7K,KAAKyhE,sBAEjDzhE,KAAKyrB,QACL,OAAatmB,OAAOnF,KAAKyrB,OAAQ,SAAUzrB,KAAK0hE,qBAEpD1hE,KAAKyhE,qBAAuB,KAC5BzhE,KAAK0hE,oBAAsB,KACvB1hE,KAAK8gB,OAAOiT,WAAWpzB,QAAUX,KAAK8gB,OAAOkgD,oBAC7C,OAAa77D,OAAOnF,KAAK8gB,OAAOkgD,mBAAmBh2C,WAAY,SAAUhrB,KAAK2hE,kBAGtFtD,EAAOn+D,UAAUihE,cAAgB,WAC7BnhE,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,IAAM,QAAwB4E,WAAa9Q,KAAKs+D,eAAet5D,MAEhHq5D,EAAOn+D,UAAUyhE,gBAAkB,SAAUC,GACzC,IAAIv+D,EAAQrD,KACRoD,EAAUw+D,EACVC,EAAWz+D,EAAQ8B,UAAUmB,SAAS,QAC1C,OAAO,SAAU8G,GACb,GAAoD,OAAhD9J,EAAMwH,QAAQqB,cAAc,UAA4B7I,EAAMyd,OAAOghD,qBAAzE,CAGA,IAAIxhE,EAAS6M,EAAE7M,OASf,GARI+C,EAAMyd,OAAOk/C,aACT38D,EAAMwH,QAAQoG,UAAY,GAAK5N,EAAMyd,OAAOk/C,WAC5C,eAAS,CAAC38D,EAAMyd,OAAO1d,SAAU,gBAGjC,gBAAY,CAACC,EAAMyd,OAAO1d,SAAU,iBAGxCC,EAAMyd,OAAO1d,QAAQ0pD,iBAAiB,+CAA+CnsD,OAAQ,CAC7F,IAAIohE,EAAc1+D,EAAMyd,OAAO8+C,aAAa9S,iBAAiB,gDACzDkV,EAAa3+D,EAAMyd,OAAO8+C,aAAa9S,iBAAiB,+CAClC,IAAtBxsD,EAAOwQ,YAAoBzN,EAAMyd,OAAOmhD,4BACxC,eAAS,CAAC5+D,EAAMyd,OAAO1d,SAAU,iBAGjC,gBAAY,CAACC,EAAMyd,OAAO1d,SAAU,iBAExC,IAAI8+D,EAAW/4D,KAAKC,OAAO/F,EAAMyd,OAAOrb,UAAYnF,EAAOkgE,YAAclgE,EAAOwQ,WAAaxQ,EAAOkgE,YAAclgE,EAAOwQ,aAC5F,SAAxBzN,EAAMyd,OAAOzb,OAAoB,EAAI,IACtC68D,IAAa5hE,EAAOkJ,aAAenG,EAAMyd,OAAOqhD,6BAChD,gBAAY,CAAC9+D,EAAMyd,OAAO1d,SAAU,kBAGpC,eAAS,CAACC,EAAMyd,OAAO1d,SAAU,kBAErC,IAAIwf,EAAO,GAAGlV,MAAMpK,KAAKD,EAAMyd,OAAO8+C,aAAa9S,iBAAiB,6BACpE,IAAsB,IAAhBlqC,EAAKjiB,QAAgBohE,EAAYphE,QAClC0C,EAAMyd,OAAO1d,QAAQ8I,cAAc,qDACpC81D,EAAWrhE,SAAWL,EAAOwQ,aAAezN,EAAMi7D,eAAet5D,KAEjE,YADA1E,EAAOwQ,WAAazN,EAAMi7D,eAAet5D,MAG7C,GAAoB,IAAhB4d,EAAKjiB,SAAiBohE,EAAYphE,QAAUqhE,EAAWrhE,SAAWL,EAAO2Q,YAAc5N,EAAMi7D,eAAev5D,IAE5G,YADAzE,EAAO2Q,UAAY5N,EAAMi7D,eAAev5D,KAIhD,IAAIC,EAAO1E,EAAOwQ,WAIlB,GAHK,eAAkBzN,EAAMyd,OAAOgU,wBAAyBzxB,EAAMyd,OAAO2T,yBAA4BpxB,EAAMyd,OAAOshD,QAC/G/+D,EAAMyd,OAAOwT,OAAO,QAAuB,CAAEh0B,OAAQ6M,EAAE7M,OAAQgtC,OAAQjqC,EAAMi7D,eAAet5D,OAASA,IAErG3B,EAAMyd,OAAOyU,cAAc7S,QAAQ/hB,QAAU0C,EAAMyd,OAAOyU,cAAcC,kBAAmB,CAC3F,IAAI6sC,EAASh/D,EAAMi7D,eAAev5D,IAAM1B,EAAMyd,OAAO8+C,aAAa5Z,kBAAkB/0C,UACpF5N,EAAMyd,OAAOwT,OAAO,QAAuB,CAAEguC,WAAYD,IAE7Dh/D,EAAMyd,OAAOwT,OAAO,QAAmB,IACvC,IAAIiuC,EAAWjiE,EAAO4E,UAAUmB,SAAS,oBACrChD,EAAMi7D,eAAet5D,OAASA,GAIlC3B,EAAMyd,OAAOwT,OAAO,QAAmBnnB,GACvC/J,EAAQ0N,WAAa9L,EACjBu9D,IACAl/D,EAAMooB,OAAO3a,WAAa9L,GAE9B3B,EAAMi7D,eAAet5D,KAAOA,EAC5B3B,EAAMyd,OAAOwT,OAAO,QAAQ,CAAEtvB,KAAMA,KAThC3B,EAAMi7D,eAAev5D,IAAO88D,EAAsCvhE,EAAO2Q,UAAlC5N,EAAMi7D,eAAev5D,OAYxEs5D,EAAOn+D,UAAUqhE,wBAA0B,SAAUiB,EAAMC,GACvD,IAAIp/D,EAAQrD,KACR6K,EAAU23D,EACV/2C,EAASg3C,EACb,OAAO,SAAUt1D,GACb,GAAoD,OAAhD9J,EAAMwH,QAAQqB,cAAc,QAAhC,CAGA,IAAI5L,EAAS6M,EAAE7M,OACX0E,EAAO1E,EAAOwQ,WACdzN,EAAMi7D,eAAet5D,OAASA,IAGlC6F,EAAQiG,WAAa9L,EACrBymB,EAAO3a,WAAa9L,EACpB3B,EAAMi7D,eAAet5D,KAAOA,EAC5B3B,EAAMyd,OAAOwT,OAAO,QAAQ,CAAEtvB,KAAMA,IAChC3B,EAAMyd,OAAOkI,gBAKzBq1C,EAAOn+D,UAAUmhE,cAAgB,SAAUO,GACvC,IAAIv+D,EAAQrD,KACRoD,EAAUw+D,EACd,OAAO,SAAUz0D,GACb,GAAsB,UAAlBA,EAAEg2C,YAAN,CAGA,IAAIuf,EAAWr/D,EAAMyd,OAAOg/C,eACxB6C,EAASt/D,EAAMu/D,WAAWz1D,GAC1BnI,EAAO5B,EAAQ0N,YAAczN,EAAMs/D,OAAO38D,EAAI28D,EAAO38D,GACrD68D,EAAOx/D,EAAMyd,OAAOm/C,mBAAmB/zD,cAAc,IAAM,QAC3D42D,EAAQz/D,EAAMyd,OAAO8+C,aAAa1zD,cAAc,IAAM,QAC1D,KAAI7I,EAAMi7D,eAAet5D,OAASA,GAASA,EAAO,GAAM69D,EAAKrC,YAAcqC,EAAKt5D,YAAevE,GAA/F,CAMA,GAHAmI,EAAE+F,iBACF2vD,EAAK/xD,WAAa9L,EAClB89D,EAAMhyD,WAAa9L,EACf09D,GAAYr/D,EAAMyd,OAAO++C,2BAA4B,CACrD,IAAIkD,EAAY1/D,EAAMyd,OAAO8+C,aAAa1zD,cAAc,uBACxD62D,EAAUjyD,WAAa9L,EAE3B3B,EAAMs/D,OAAO38D,EAAI28D,EAAO38D,EACxB3C,EAAMi7D,eAAet5D,KAAOA,MAGpCq5D,EAAOn+D,UAAUkhE,UAAY,WACzB,IAAI/9D,EAAQrD,KACZ,OAAO,SAAUmN,GACS,UAAlBA,EAAEg2C,cAGN9/C,EAAMs/D,OAASt/D,EAAMu/D,WAAWz1D,MAGxCkxD,EAAOn+D,UAAU0iE,WAAa,SAAUz1D,GACpC,IAAIw1D,EAAS,CAAE38D,EAAG,EAAGC,EAAG,GASxB,OARIkH,EAAEgG,SAAWhG,EAAEgG,QAAQxS,QACvBgiE,EAAO38D,EAAImH,EAAEgG,QAAQ,GAAGC,MACxBuvD,EAAO18D,EAAIkH,EAAEgG,QAAQ,GAAGE,QAGxBsvD,EAAO38D,EAAImH,EAAEiG,MACbuvD,EAAO18D,EAAIkH,EAAEkG,OAEVsvD,GAEXtE,EAAOn+D,UAAU8iE,mBAAqB,SAAUC,GAC5C,GAAa,OAATA,EACA,OAAO,KAGX,IAAIniD,EAAS,eAAkBmiD,EAAKvzD,SAAWuzD,EAAKC,iBAAmBD,EACnEE,EAAYv1D,SAASw1D,YAAY58D,iBAAiBsa,EAAQ,MAAMqiD,UACpE,OAAIriD,EAAOuiD,aAAeviD,EAAOxX,cAA8B,WAAd65D,GAC5B,YAAdA,GAA4C,SAAjBF,EAAKvzD,SAAuC,SAAjBuzD,EAAKvzD,QACvDuzD,EAGAjjE,KAAKgjE,mBAAmBC,EAAKzxB,aAQ5C6sB,EAAOn+D,UAAUojE,kBAAoB,SAAUC,GAC3CvjE,KAAK01C,cAAgB11C,KAAKgjE,mBAAmBhjE,KAAK8gB,OAAO1d,QAAQsyC,eAC7D6tB,GAASvjE,KAAK01C,eACd11C,KAAKwjE,aAA8C,SAA/BxjE,KAAK01C,cAAchmC,SAAqD,SAA/B1P,KAAK01C,cAAchmC,QAAqB9B,SACjG5N,KAAK01C,cACT,OAAa5pC,IAAI9L,KAAKwjE,aAAc,SAAUxjE,KAAKyjE,iBAAkBzjE,OAEhEA,KAAKwjE,eACV,OAAar+D,OAAOnF,KAAKwjE,aAAc,SAAUxjE,KAAKyjE,kBACtDzjE,KAAKwjE,aAAe,OAO5BnF,EAAOn+D,UAAUwjE,sBAAwB,WACrC,IAAIC,EACC3jE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,uBAKnCy3D,EAAM3jE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,wBAJxCy3D,EAAM3jE,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,uBACpDxE,KAAK8gB,OAAO1d,QAAQwgE,aAAaD,EAAK3jE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,oBAK5E,IAAIs0D,EAAqC,SAAvBxgE,KAAK8gB,OAAOzb,OAAoBg5D,EAAO0B,oBAAsB,EAC/E4D,EAAI58D,MAAMzB,MAAStF,KAAK8gB,OAAO1d,QAAQoG,YAAcg3D,EAAe,GAAM,MAE9EnC,EAAOn+D,UAAU0T,WAAa,WAC1B,IAAIvQ,EAAQrD,KACZ,GAAIA,KAAKu+D,aAAc,CACnB,IAAIsF,EAAU7jE,KAAK8gB,OAAOg/C,eAC1B9/D,KAAK6K,QAAU7K,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,IAAM,QAC5DlM,KAAKyrB,OAASzrB,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,IAAM,QACjE,IAAIo1D,EAAathE,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,uBACpDlM,KAAK8gB,OAAOk/C,YAAchgE,KAAKyrB,QAAUzrB,KAAK6K,UAC9C,OAAaiB,IAAI9L,KAAKyrB,OAAQ,yBAA0BzrB,KAAKohE,YAAaphE,MAC1E,OAAa8L,IAAI9L,KAAKyrB,OAAQ,wBAAyBzrB,KAAKqhE,cAAcrhE,KAAK6K,SAAU7K,OAEzF6jE,GAAWvC,GAActhE,KAAK8gB,OAAO++C,6BACrC,OAAa/zD,IAAIw1D,EAAY,SAAUthE,KAAKuhE,wBAAwBvhE,KAAK6K,QAAS7K,KAAKyrB,QAASzrB,MAChG,OAAa8L,IAAI9L,KAAK6K,QAAS,SAAU7K,KAAKuhE,wBAAwBD,EAAYthE,KAAKyrB,QAASzrB,MAChG,OAAa8L,IAAI9L,KAAKyrB,OAAQ,SAAUzrB,KAAKuhE,wBAAwBD,EAAYthE,KAAK6K,SAAU7K,MAChG,OAAa8L,IAAI9L,KAAKyrB,OAAQ,yBAA0BzrB,KAAKohE,YAAaphE,MAC1E,OAAa8L,IAAI9L,KAAKyrB,OAAQ,wBAAyBzrB,KAAKqhE,cAAcrhE,KAAK6K,SAAU7K,MACzF,OAAa8L,IAAI9L,KAAK6K,QAAS,yBAA0B7K,KAAKohE,YAAaphE,MACrE,iBAAiBs4C,KAAK,OAAQkpB,UAAUj/C,gBAAkB,OAAQ5S,UACpE,OAAa7D,IAAI9L,KAAK6K,QAAS,wBAAyB7K,KAAKqhE,cAAcrhE,KAAKyrB,QAASzrB,OAGjGA,KAAKyhE,qBAAuBzhE,KAAK2hE,gBAAgB3hE,KAAKyrB,QACtDzrB,KAAK0hE,oBAAsB1hE,KAAK2hE,gBAAgB3hE,KAAK6K,SACrD,OAAaiB,IAAI9L,KAAK6K,QAAS,SAAU7K,KAAKyhE,qBAAsBzhE,MACpE,OAAa8L,IAAI9L,KAAKyrB,OAAQ,SAAUzrB,KAAK0hE,oBAAqB1hE,MAC9DA,KAAK8gB,OAAOiT,WAAWpzB,QACvB,OAAamL,IAAI9L,KAAK8gB,OAAOkgD,mBAAmBh2C,WAAY,SAAUhrB,KAAK2hE,gBAAgB3hE,KAAK6K,SAAU7K,MAE1GA,KAAK8gB,OAAOgjD,oBACZ9jE,KAAKsjE,mBAAkB,GAE3BtjE,KAAKsV,UACLtV,KAAKu+D,cAAe,EAExB,IACIwF,EACAC,EACA16D,EAHA+tD,EAAQr3D,KAAK8gB,OAAOmjD,kBAIxB,gBAAkB,WACdF,EAAQ1gE,EAAMooB,OAAO3a,WACrBkzD,EAAU3M,EAAMgM,aAChB/5D,EAAejG,EAAMyd,OAAO8+C,aAAat2D,gBAC1C,WACC,IAAI+qB,EAAO,CAAE5lB,QAAQ,GACrBpL,EAAMyd,OAAOwT,OAAO,OAAkBD,GAClC2vC,EAAU16D,GAAwC,SAAxBjG,EAAMyd,OAAOzb,QACvChC,EAAM6gE,iBAEN7gE,EAAMyd,OAAOk/C,YACb38D,EAAMqgE,wBAELrgE,EAAMyd,OAAO0T,sBAAyBnxB,EAAMyd,OAAO2T,yBAC/CJ,EAAK5lB,SACNpL,EAAMooB,OAAO3a,WAAazN,EAAMi7D,eAAet5D,KAC/C3B,EAAMwH,QAAQiG,WAAazN,EAAMi7D,eAAet5D,KAChD3B,EAAMwH,QAAQoG,UAAY5N,EAAMi7D,eAAev5D,KAGlD1B,EAAMyd,OAAO++C,6BACdx8D,EAAMwH,QAAQiG,WAAaizD,EACvB1gE,EAAMyd,OAAOg/C,iBACbz8D,EAAMi7D,eAAet5D,KAAO++D,OAIxC/jE,KAAK8gB,OAAOghD,sBAAuB,GAMvCzD,EAAOn+D,UAAUgkE,eAAiB,WAC9B,IAAI7M,EAAQr3D,KAAK8gB,OAAOmjD,kBACpB5M,EAAMnrD,cAAc,yBACpB,gBAAYmrD,EAAMnrD,cAAc,wBAAwB4gD,iBAAiB,MAAO,iBAEpF,eAASuK,EAAMvK,iBAAiB,oBAAqB,kBAOzDuR,EAAOn+D,UAAUygE,iBAAmB,SAAUE,GAC1C,IAAIsD,EAAM,GACN1+D,EAAY,eAAkBo7D,GAAO7gE,KAAK8gB,OAAOrb,UAAYo7D,EAGjE,OAFAsD,EAAI/+C,OAAS3f,EAAY,kBAAoB,mBAC7C0+D,EAAIh3C,QAAU1nB,EAAY,cAAgB,eACnC0+D,GAEX9F,EAAOn+D,UAAUogE,eAAiB,SAAUz1D,GACxCA,EAAQ9D,MAAMo8D,UAAmC,SAAvBnjE,KAAK8gB,OAAOzb,OAAoB,OAAS,UAEvEg5D,EAAOn+D,UAAU+U,kBAAoB,SAAU9H,GAC3C,GAAIA,EAAEi3D,SAAWpkE,KAAK8U,gBAAtB,CAGA9U,KAAKugE,aACLvgE,KAAKu+D,cAAe,EACO,SAAvBv+D,KAAK8gB,OAAOzb,QACZrF,KAAK4gE,gBAET5gE,KAAK4T,aACL5T,KAAK0/D,YACL,IAAIp6D,EAAQ,QACZtF,KAAKy+D,UAAU,eAAkBtxD,EAAEk3D,WAAW,GAAK/+D,OAEvD+4D,EAAOn+D,UAAUujE,iBAAmB,WAChC,GAAIzjE,KAAK8gB,OAAOgjD,oBAAsB9jE,KAAK8gB,OAAO1d,SAAWpD,KAAK8gB,OAAO8+C,aAAc,CACnF,IAAI0E,EAActkE,KAAK8gB,OAAO8+C,aAAa2E,iBAAiB,GAC5D,GAAID,EAAa,CACb,IAAIE,EAAYxkE,KAAK8gB,OAAOm/C,mBACxBwE,EAAazkE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,cAC/Cw4D,EAAiB1kE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,oBACnD7G,EAASm/D,EAAU/6D,cAAgBg7D,EAAaA,EAAWh7D,aAAe,IACzEi7D,EAAiBA,EAAej7D,aAAe,GAChDk7D,EAAY3kE,KAAK01C,cAAc6uB,iBAAiB,GAAGx/D,IACnD6/D,EAAQN,EAAYv/D,KAAO4/D,EAAY,EAAI,EAAIA,GAC/C3/D,EAAOs/D,EAAYt/D,KACnB6/D,EAAaj3D,SAAS6B,KAAKvD,cAAc,IAAMlM,KAAK8gB,OAAO1d,QAAQkI,GAAK,eAC5E,GAAIs5D,EAAQv/D,GAAUi/D,EAAYzuD,OAAS,EAAG,CAC1C2uD,EAAUt/D,UAAU4G,IAAI,YACxB,IAAIg5D,EAAU,EACVJ,GAAkB1kE,KAAK8gB,OAAOyU,cAAcwvC,eAC5C/kE,KAAKglE,UAAUN,EAAgBI,EAASR,EAAYh/D,MAAON,GAAM,GACjE8/D,GAAWJ,EAAeH,iBAAiB,GAAGl/D,QAE9Co/D,IACAzkE,KAAKglE,UAAUP,EAAYK,EAASR,EAAYh/D,MAAON,GAAM,GAC7D8/D,GAAWL,EAAWF,iBAAiB,GAAGl/D,QAE9CrF,KAAKglE,UAAUR,EAAWM,EAASR,EAAYh/D,MAAON,GAAM,GACvD,eAAkB6/D,KACnBA,EAAW99D,MAAMhD,SAAW,QAC5B8gE,EAAW99D,MAAMhC,IAAMM,EAAS,WAIpC,GAAIm/D,EAAUt/D,UAAUmB,SAAS,YAAa,CAC1CrG,KAAKglE,UAAUR,EAAW,KAAM,KAAM,MAAM,GACxCC,GACAzkE,KAAKglE,UAAUP,EAAY,KAAM,KAAM,MAAM,GAE7CC,GACA1kE,KAAKglE,UAAUN,EAAgB,KAAM,KAAM,MAAM,GAErD,IAAIO,EAAQjlE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,YAI9C,GAHI+4D,GACAA,EAAM//D,UAAUC,OAAO,aAEtB,eAAkB0/D,GAAa,CAChCA,EAAW99D,MAAMhD,SAAW,WAC5B,IAAImhE,EAAWZ,EAAYv/D,IAAM4/D,EACjCE,EAAW99D,MAAMhC,IAAMmgE,EAAW,MAI9CllE,KAAK8gB,OAAOwT,OAAO,QAA6B,OAI5D+pC,EAAOn+D,UAAU8kE,UAAY,SAAU1lC,EAAKv6B,EAAKO,EAAON,EAAMu+D,GACtDA,GACAjkC,EAAIv4B,MAAMzB,MAAQA,EAAQ,KAC1Bg6B,EAAIp6B,UAAU4G,IAAI,aAGlBwzB,EAAIp6B,UAAUC,OAAO,YAEzBm6B,EAAIv4B,MAAMhC,IAAa,MAAPA,EAAcA,EAAM,KAAO,GAC3Cu6B,EAAIv4B,MAAM/B,KAAgB,OAATA,EAAgB2M,SAAS2tB,EAAIv4B,MAAM/B,KAAM,MAAQA,EAAOA,EAAO,KAAOs6B,EAAIv4B,MAAM/B,KAAO,IAM5Gq5D,EAAOn+D,UAAUsS,QAAU,WACvB,IAAI2yD,EAAcnlE,KAAK8gB,OAAO1d,QAC9B,GAAK+hE,IAAiBA,EAAYj5D,cAAc,IAAM,SAAyBi5D,EAAYj5D,cAAc,IAAM,SAA/G,CAGAlM,KAAK4xC,sBAEL,IAAI4wB,EAAOxiE,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,IAAM,QACxD,OAAa/G,OAAOq9D,EAAM,SAAUxiE,KAAK2hE,iBACrC3hE,KAAK8gB,OAAOgjD,oBACZ9jE,KAAKsjE,mBAAkB,GAG3BtjE,KAAK4gE,gBACL,gBAAY,CAAC5gE,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,IAAM,SAA0B,QAC1F,gBAAY,CAACs2D,GAAO,QAEpBA,EAAKz7D,MAAM1B,OAAS,GAEpBrF,KAAK8gB,OAAO1d,QAAQ2D,MAAMzB,MAAQ,KAQtC+4D,EAAO0B,kBAAoB,WACvB,OAAO,kBAEJ1B,EAtlBgB,I,oCCZ3B,kLAAIh/D,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAwBxCqlE,EAAuC,WAMvC,SAASA,EAAsBtkD,GAC3B9gB,KAAK8gB,OAASA,EAgJlB,OA9IAskD,EAAsBllE,UAAUuf,QAAU,WAItC,IAHA,IAAIpc,EAAQrD,KACR4iB,EAAO,GACPjB,EAAM3hB,KAAK8gB,OAAOiT,WAAWrmB,QACxB1M,EAAI,EAAGA,EAAI2gB,EAAIhhB,OAAQK,IAAK,CACjC,IAAI0hB,EAAUf,EAAIhQ,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAAQtE,QAAO,SAAUsD,GACnE,QAASA,EAAO2jD,gBAAkB3jD,EAAO4jD,qBAAuB5jD,EAAO6jD,uBAChEliE,EAAMmiE,eAAe9jD,MAE5BgB,EAAQ/hB,QACRiiB,EAAKvW,KAAK,CAAEqW,QAASA,IAG7B,OAAOE,GAEXwiD,EAAsBllE,UAAUslE,eAAiB,SAAU9jD,GACvD,YAAiCnW,IAA1BmW,EAAO2jD,gBAElBD,EAAsBllE,UAAUkzB,WAAa,SAAUlW,GACnD,IAAIwF,EAAU,GAId,IAHI1iB,KAAK8gB,OAAO2kD,gBAAmB,eAAkBzlE,KAAK8gB,OAAO4kD,YAC7DhjD,EAAQrW,KAAK,IAAI,OAAO,KAExBrM,KAAK8gB,OAAOwU,cACZ,IAAK,IAAIt0B,EAAI,EAAGA,EAAIhB,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAAQK,IAC1D0hB,EAAQrW,KAAK,IAAI,OAAO,KAOhC,OAJIrM,KAAK8gB,OAAO6kD,kBAAoBzoD,GAChCwF,EAAQrW,KAAK,IAAI,OAAO,KAE5BqW,EAAQrW,KAAKvJ,MAAM4f,EAAS1iB,KAAK8gB,OAAOsS,cACjC1Q,GAEX0iD,EAAsBllE,UAAU0lE,aAAe,SAAUC,EAAOxxC,EAAMnX,EAAOC,EAAKuF,GAC9E,GAAqB,IAAjBmjD,EAAMllE,cACO4K,IAAT8oB,IAAuBA,EAAKtU,OAC5B,MAAO,GAMf,IAHA,IAAIzC,EAAOtd,KAAK8lE,iBAAiBD,EAAOxxC,GACpCzR,EAAO,GACPjB,EAAM3hB,KAAKyf,UACNze,EAAI,EAAGA,EAAI2gB,EAAIhhB,OAAQK,IAC5B4hB,EAAKvW,KAAKrM,KAAK+lE,gBAAgBpkD,EAAIhQ,SAAS3Q,EAAE4Q,WAAY,KAAM0L,EAAK3L,SAAS3Q,EAAE4Q,WAAY,KAAMyiB,EAAOA,EAAK2xC,WAAQz6D,EAAW2R,EAAOC,EAAKkX,EAAOA,EAAK4xC,eAAY16D,EAAWmX,IAEpL,OAAOE,GAEXwiD,EAAsBllE,UAAU6lE,gBAAkB,SAAUG,EAAY5oD,EAAM6oD,EAAKjpD,EAAOC,EAAK8oD,EAAWvjD,GACtG,IAAI0jD,EAAM,GACNC,EAAUrmE,KAAKsmE,mBACfC,GAAqB,eAAkBvmE,KAAK8gB,OAAO4kD,WACnDc,EAAexmE,KAAK8gB,OAAO2lD,iBAC3BzmE,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAUX,KAAK8gB,OAAO4lD,oBACxDL,EAAQh6D,KAAK,mBAERrM,KAAK8gB,OAAO6kD,kBAAoBzoD,IACrCmpD,EAAU,CAAC,oBAGf,IADA,IAAIjiD,EAAS1B,GAAoB1iB,KAAKozB,WAAWlW,GACxClc,EAAI,EAAGA,EAAIojB,EAAOzjB,OAAQK,IAC/BolE,EAAI/5D,KAAKrM,KAAK2mE,iBAAiBviD,EAAOzS,SAAS3Q,EAAE4Q,WAAY,KAAMs0D,EAAYllE,GAAKwlE,EAAexmE,KAAK4mE,cAC9F,IAAN5lE,GAAWhB,KAAK8gB,OAAO4kD,UAAY,OAASmB,mBAAqB,OAASC,OAAQT,EAAQ10D,SAAS3Q,EAAE4Q,WAAY,KAAM20D,IAE/H,IAAI5kD,EAAM,IAAI,OAAI,CAAErE,KAAMA,EAAMypD,WAAY,CAAEC,MAAO,kBAMrD,OALArlD,EAAIslD,MAAQb,EACZzkD,EAAIkX,IAAM,eAAO,YACjBlX,EAAIskD,UAAYA,EAChBtkD,EAAIulD,gBAAiB,EACrBvlD,EAAIhL,QAAUyvD,EAAI7uC,MAAK,SAAU4vC,GAAQ,OAAOA,EAAKC,YAAcD,EAAKxwD,WACjEgL,GAEXyjD,EAAsBllE,UAAUymE,iBAAmB,SAAUjlD,EAAQwkD,EAAYmB,EAAUC,EAAQf,GAE/F,IAAIgB,EAAUrB,EAAWxjD,QAAQtE,QAAO,SAAUopD,GAAW,OAAOA,EAAQ3xC,aAAenU,EAAO4R,SAAU,GACxGtkB,EAAQ,CACR,MAAS,CAAE,UAAa0S,EAAO26C,WAC/B,eAAgB36C,EAAOmX,IAAKpsB,MAAOiV,EAAOjV,OAE1C66D,IACAt4D,EAAMg4D,MAAQM,GAEd,eAAkBA,IAAWf,IAC7Bv3D,EAAMg4D,MAAQ,yBAElB,IAAIS,EAAM,CACN,QAAW/lD,EAAO/K,QAClB,YAAe,eAAkB4wD,GACjC,WAAcA,IAAY,eAAkBA,EAAQlC,gBAC7CkC,EAAQjC,qBAAuBiC,EAAQhC,sBAC9C,OAAUgC,GAAW,GACrB,WAAcv4D,EACd,SAAYq4D,GAGhB,OADAI,EAAI/lD,OAAO+K,WAAa/K,EAAO+K,WACxB,IAAI,OAAKg7C,IAEpBrC,EAAsBllE,UAAU4lE,iBAAmB,SAAUxoD,EAAM+W,GAI/D,IAHA,IAAIqzC,EAAQ,GACRC,EAAc3nE,KAAKyf,UACnBmoD,EAAS,GACJ5mE,EAAI,EAAGA,EAAI2mE,EAAYhnE,OAAQK,IAAK,CACzC4mE,EAAS,GAET,IADA,IAAIlmD,EAASimD,EAAYh2D,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAC5CmB,EAAI,EAAGA,EAAInC,EAAO/gB,OAAQkjB,IAC/B+jD,EAAS5nE,KAAK6nE,YAAYnmD,EAAO/P,SAASkS,EAAEjS,WAAY,KAAOyiB,GAAQA,EAAKN,WAAcM,EAAO/W,EAAMsqD,GAE3GF,EAAMr7D,KAAKu7D,GAEf,OAAOF,GAEXtC,EAAsBllE,UAAUomE,iBAAmB,WAC/C,OAAOtmE,KAAK8gB,OAAOyU,cAAc7S,QAAQ7b,KAAI,WAAc,MAAO,sBAEtEu+D,EAAsBllE,UAAU2nE,YAAc,SAAUnmD,EAAQpE,EAAMsqD,GAClE,IAAI3zC,EAAQvS,EAAOlT,KACfs5D,EAAS,GACTnK,EAAWj8C,EAAO0Z,gBAAkB,WAAe,OAAO,SAAU9c,GAAK,OAAOA,GAA5C,GACpC0T,EAAQ1U,EACN2W,aAAiBr0B,QACnBq0B,EAAQ,CAACvS,EAAOlT,OAEpB,IAAK,IAAIxN,EAAI,EAAGA,EAAIizB,EAAMtzB,OAAQK,IAAK,CACnC,IAAIT,EAAMmhB,EAAO4R,MAAQ,MAAQW,EAAMtiB,SAAS3Q,EAAE4Q,WAAY,KAAK2Q,cAC/DwlD,EAAOrmD,EAAOmU,WACdrb,EAA4C,WAAtCyZ,EAAMtiB,SAAS3Q,EAAE4Q,WAAY,MAAqBogB,EAAM+B,YAAcxzB,KAAOyxB,EAAM+B,WAAa/B,EAAM+B,WAAW,GAAKxzB,GAC5H,eAAmB0zB,EAAMtiB,SAAS3Q,EAAE4Q,WAAY,KAAMogB,EAAM+B,WAAa/B,EAAQ1U,EAAMoE,EAAQ1hB,KAAK8gB,QACxG8mD,EAAO,GAAKG,GAAQH,EAAO,GAAKG,IAAS,GACzCH,EAAO,GAAKG,GAAM,GAAKxnE,GAAOia,EAC9BotD,EAAO,GAAKG,GAAM9zC,EAAMtiB,SAAS3Q,EAAE4Q,WAAY,MAAS,eAAkB4I,GAAuB,IAAhBmjD,EAASnjD,GACtFwX,EAAMsB,QACNs0C,EAAO,GAAKG,GAAMz0C,MAAQtB,EAAMsB,MAChCs0C,EAAO,GAAKG,GAAMxnE,IAAMyxB,EAAMzxB,KAKtC,OAFAunE,EAAOt3C,OAAS9O,EAAO0Z,eACvB1Z,EAAOmmD,YAAYC,GACZF,GAEXxC,EAAsBllE,UAAU0mE,YAAc,WAC1C,OAAO,OAASoB,SAEb5C,EAvJ+B,GA0JtC6C,EAA4C,SAAUplE,GAEtD,SAASolE,IACL,OAAkB,OAAXplE,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAe/D,OAjBAX,EAAU4oE,EAA4BplE,GAItColE,EAA2B/nE,UAAUslE,eAAiB,SAAU9jD,GAC5D,YAAsCnW,IAA/BmW,EAAO4jD,qBAElB2C,EAA2B/nE,UAAUomE,iBAAmB,SAAUN,GAK9D,YAJc,IAAVA,IAAoBA,EAAQhmE,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAC9DX,KAAK8gB,OAAO4lD,qBAAuB1mE,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,SACrEqlE,GAAS,GAENhmE,KAAK8gB,OAAOyU,cAAc7S,QAAQ7b,KAAI,SAAUqhE,EAAGC,GAAQ,OAAOA,GAAQnC,EAAQ,EAAI,GAAK,sBAEtGiC,EAA2B/nE,UAAU0mE,YAAc,WAC/C,OAAO,OAASwB,cAEbH,EAlBoC,CAmB7C7C,GAEEiD,EAA8C,SAAUxlE,GAExD,SAASwlE,IACL,OAAkB,OAAXxlE,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAkB/D,OApBAX,EAAUgpE,EAA8BxlE,GAIxCwlE,EAA6BnoE,UAAUslE,eAAiB,SAAU9jD,GAC9D,YAAuCnW,IAAhCmW,EAAO6jD,sBAElB8C,EAA6BnoE,UAAUuf,QAAU,WAC7C,IAAI6oD,EAAU,CAAE5lD,QAAS,IACzB,MAAO,CAAC7f,EAAO3C,UAAUuf,QAAQnc,KAAKtD,MAAM2gD,QAAO,SAAU4nB,EAAMC,GAE3D,OADAD,EAAK7lD,QAAU6lD,EAAK7lD,QAAQ8K,OAAOg7C,EAAI9lD,SAChC6lD,IACRD,KAEXD,EAA6BnoE,UAAUsd,QAAU,WAC7C,OAAoD,KAA5Cxd,KAAKyf,UAAU,GAAGiD,SAAW,IAAI/hB,QAE7C0nE,EAA6BnoE,UAAU0mE,YAAc,WACjD,OAAO,OAAS6B,gBAEbJ,EArBsC,CAsB/CjD,I,uBC7NFhB,EAAOsE,QAAU,IAA0B,mC,oCCA3C,kCAKA,IAAIC,EAA6B,WAC7B,SAASA,KAwBT,OAtBAA,EAAYzoE,UAAU0oE,WAAa,SAAUtoE,EAAQ6C,GAEjD,IADA,IAAI0lE,EAAQppE,OAAO2V,KAAKjS,GACfnC,EAAI,EAAGA,EAAI6nE,EAAMloE,OAAQK,IAC9B8nE,EAAsBxoE,EAAQyoE,EAAOF,EAAMl3D,SAAS3Q,EAAE4Q,WAAY,MAAOzO,EAAQ0lE,EAAMl3D,SAAS3Q,EAAE4Q,WAAY,QAGtH+2D,EAAYzoE,UAAU8oE,UAAY,SAAU1oE,EAAQ2oE,GAChDH,EAAsBxoE,EAAQyoE,EAAOE,OAAQA,IAEjDN,EAAYzoE,UAAUgpE,QAAU,SAAU5oE,EAAQg2B,GAC9CwyC,EAAsBxoE,EAAQyoE,EAAO1qD,KAAMiY,EAAgC,mBAAdA,IAEjEqyC,EAAYzoE,UAAUipE,QAAU,SAAU7oE,EAAQ8oE,GAC9CN,EAAsBxoE,EAAQyoE,EAAOM,KAAMD,GAC3CN,EAAsBxoE,EAAQyoE,EAAOO,QAAS,MAAM,IAExDX,EAAYzoE,UAAUqpE,WAAa,SAAUjpE,EAAQkpE,EAAWrkE,GAC5D2jE,EAAsBxoE,EAAQyoE,EAAOU,QAASD,EAAWrkE,IAE7DwjE,EAAYzoE,UAAUwpE,cAAgB,SAAUppE,EAAQqpE,GACpDb,EAAsBxoE,EAAQyoE,EAAOa,WAAY,QAASD,IAEvDhB,EAzBqB,GAoChC,SAASG,EAAsBxoE,EAAQupE,EAAW7sD,EAAO7X,GACjDA,GAAU7E,EACVA,EAAOsK,gBAAgBi/D,GAGvBvpE,GACAA,EAAOqK,aAAak/D,EAAW7sD,GAGvC,IAAI+rD,EAAS,CACTE,OAAQ,gBACRh6D,KAAM,OACN66D,SAAU,YACVC,SAAU,gBACVC,gBAAiB,uBACjB3rD,KAAM,YACNgrD,KAAM,YACNC,QAAS,eACTG,QAAS,eACTG,WAAY,kBACZK,SAAU,gBACVjE,MAAO,aACPkE,SAAU,gBACVC,SAAU,kB,2DChEd,0JAAI9qE,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAe5DwpE,EAAgC,SAAUvnE,GAE1C,SAASunE,IACL,OAAkB,OAAXvnE,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAkG/D,OApGAX,EAAU+qE,EAAgBvnE,GAI1BzC,EAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,eAAW,GACxCE,EAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,cAAU,GACvCE,EAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,aAAS,GACtCE,EAAW,CACP,eAAQ,CAAE4F,EAAG,EAAGC,EAAG,GAAK,SACzBmkE,EAAelqE,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,SACVgqE,EAAelqE,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,YAAQ,GACrCE,EAAW,CACP,eAAS,IACVgqE,EAAelqE,UAAW,eAAW,GACxCE,EAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,mBAAe,GAC5CE,EAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,iBAAa,GAC1CE,EAAW,CACP,eAAQ,CAAE6V,WAAY,KAAMH,KAAM,OAAQC,UAAW,SAAUC,WAAY,MAAOL,MAAO,MAAQ,SAClGy0D,EAAelqE,UAAW,iBAAa,GAC1CE,EAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,mBAAe,GAC5CE,EAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,kBAAc,GAC3CE,EAAW,CACP,eAAQ,GAAI,SACbgqE,EAAelqE,UAAW,cAAU,GACvCE,EAAW,CACP,eAAQ,CAAE4E,KAAM,EAAG4Q,MAAO,EAAG7Q,IAAK,EAAG8Q,OAAQ,GAAK,SACnDu0D,EAAelqE,UAAW,cAAU,GACvCE,EAAW,CACP,eAAQ,CAAE4E,KAAM,EAAG4Q,MAAO,EAAG7Q,IAAK,EAAG8Q,OAAQ,GAAK,SACnDu0D,EAAelqE,UAAW,wBAAoB,GACjDE,EAAW,CACP,eAAS,IACVgqE,EAAelqE,UAAW,oBAAgB,GAC7CE,EAAW,CACP,eAAS,gBACVgqE,EAAelqE,UAAW,kBAAc,GAC3CE,EAAW,CACP,eAAS,IACVgqE,EAAelqE,UAAW,eAAW,GACxCE,EAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,wBAAoB,GACjDE,EAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,uBAAmB,GAChDE,EAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,mBAAe,GAC5CE,EAAW,CACP,eAAS,IACVgqE,EAAelqE,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,aAAS,GACtCE,EAAW,CACP,eAAQ,CAAE6V,WAAY,KAAMH,KAAM,OAAQC,UAAW,SAAUC,WAAY,MAAOL,MAAO,MAAQ,SAClGy0D,EAAelqE,UAAW,kBAAc,GAC3CE,EAAW,CACP,eAAS,QACVgqE,EAAelqE,UAAW,qBAAiB,GAC9CE,EAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,aACVgqE,EAAelqE,UAAW,oBAAgB,GAC7CE,EAAW,CACP,eAAS,MACVgqE,EAAelqE,UAAW,yBAAqB,GAClDE,EAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,yBAAqB,GAClDE,EAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,mBAAe,GAC5CE,EAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,kBAAc,GAC3CE,EAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,eAAW,GACjCkqE,EArGwB,CAsGjC,QAOEC,EAA4B,WAM5B,SAASA,EAAW9yD,GAChBvX,KAAKsqE,cAAgB,EACrBtqE,KAAKuqE,WAAa,GAClBvqE,KAAKwqE,YAAc,GACnBxqE,KAAKyqE,cAAgB,GACrBzqE,KAAK0qE,iBAAmB,GACxB1qE,KAAK2qE,cAAgB,EACrB3qE,KAAK4qE,uBAAyB,GAC9B5qE,KAAK6qE,cAAgB,GACrB7qE,KAAK8qE,cAAgB,GACrB9qE,KAAKuX,MAAQA,EACbvX,KAAK+qE,OAASxzD,EAAMinB,eACpBx+B,KAAKknD,SAAW3vC,EAAMnU,QAAQkI,GAAK,gBACnCtL,KAAKgrE,eAA4C,UAA1BzzD,EAAMzC,iBAAyD,YAA1ByC,EAAMzC,gBAClE9U,KAAKirE,kBAA+C,sBAA1B1zD,EAAMzC,gBAChC9U,KAAKkrE,qBAAkD,gBAA1B3zD,EAAMzC,gBACnC9U,KAAKmrE,oBAAiD,eAA1B5zD,EAAMzC,gBAClC9U,KAAKorE,YAAcprE,KAAKuX,MACxBvX,KAAKqrE,UAAY,EACjBrrE,KAAKsrE,SAAW,EAChBtrE,KAAKurE,eAAiB,EACtBvrE,KAAKwrE,WAAa,EAClBxrE,KAAK4P,SAAW,EAChB5P,KAAK20B,YAAc,EACnB30B,KAAKyrE,qBAAuB,EAC5BzrE,KAAK0rE,oBAAsB,EAC3B1rE,KAAK2rE,WAAc,GAAK3rE,KAAKqrE,UAAYrrE,KAAKurE,eAAiBvrE,KAAKqrE,WACpErrE,KAAK4rE,YAAc5rE,KAAK2rE,WACxB3rE,KAAK6rE,OAAQ,EACb7rE,KAAK8rE,SAAU,EACf9rE,KAAK+rE,kBAAoB,EAikC7B,OAxjCA1B,EAAWnqE,UAAUu+C,sBAAwB,SAAUjwB,EAAMV,EAAeud,GACxE,IAAI0/B,EAAS/qE,KAAK+qE,OACd/pD,EAAgBhhB,KAAyB,qBAAI,MAAQ,MACzDA,KAAKgsE,YAAYjB,EAAOhnE,SAAU+pB,GAClC9tB,KAAK0+B,aAAe,IAAI,OAAKlQ,EAAKxoB,EAAGwoB,EAAKvoB,EAAG,EAAG,GAChDjG,KAAKisE,WAAgC,SAAlBjsE,KAAK+D,UAAyC,UAAlB/D,KAAK+D,SACpD/D,KAAKksE,YAAclsE,KAAK+qE,OAAOmB,YAAclsE,KAAK+qE,OAAOmB,YAAclsE,KAAKisE,WAAajsE,KAAK+qE,OAAO59C,QAAU,GAC3GntB,KAAKisE,YACLjsE,KAAK0+B,aAAar5B,OAAS,gBAAe0lE,EAAO1lE,OAAQyoB,EAAczoB,QAAUmpB,EAAKvoB,EAAIjG,KAAKuX,MAAMgnB,OAAOx5B,OAASypB,EAAKnpB,OAC1HrF,KAAK0+B,aAAap5B,MAAQ,gBAAeylE,EAAOzlE,OAAS0b,EAAc8M,EAAcxoB,SAGrFtF,KAAK0+B,aAAap5B,MAAQ,gBAAeylE,EAAOzlE,MAAOwoB,EAAcxoB,QAAUkpB,EAAKlpB,MACpFtF,KAAK0+B,aAAar5B,OAAS,gBAAe0lE,EAAO1lE,QAAU2b,EAAc8M,EAAczoB,SAExD,YAA/BrF,KAAKuX,MAAMzC,gBACX9U,KAAKmsE,QAAQC,kBAAkBt+C,EAAe9tB,KAAK0+B,aAAcqsC,GAGjE/qE,KAAKmsE,QAAQE,gBAAgBv+C,EAAe9tB,KAAK0+B,aAAcqsC,GAE9D/qE,KAAKkrE,uBACNlrE,KAAK0+B,aAAap5B,OAAUtF,KAAK+qE,OAAOuB,iBAAiBtnE,KAAOhF,KAAK+qE,OAAOuB,iBAAiB12D,MAC7F5V,KAAK0+B,aAAar5B,QAAWrF,KAAK+qE,OAAOuB,iBAAiBvnE,IAAM/E,KAAK+qE,OAAOuB,iBAAiBz2D,QAEjG7V,KAAKusE,YAAYvsE,KAAK+D,SAAUgnE,EAAO9qB,UAAWjgD,KAAK0+B,aAAclQ,EAAMV,EAAeud,IAW9Fg/B,EAAWnqE,UAAU8rE,YAAc,SAAUjoE,EAAU+pB,GACnD,IAAIvW,EAAQvX,KAAKuX,MACbi1D,EAAexsE,KAAKuX,MACpBvX,KAAKgrE,gBAAkBhrE,KAAKkrE,sBAAwBlrE,KAAKmrE,oBACzDnrE,KAAK+D,SAAyB,SAAbA,EAAuBA,EAAW,UAGlC,SAAbA,KAAyBwT,GAASi1D,GAAcjxD,eAAmE,YAAjDhE,GAASi1D,GAAcjxD,cAAc,GAAG/M,MAAuE,aAAjD+I,GAASi1D,GAAcjxD,cAAc,GAAG/M,QACxKzK,EAAW,OAEf/D,KAAK+D,SAAyB,SAAbA,EAAuBA,EACnC+pB,EAAcxoB,MAAQwoB,EAAczoB,OAAS,QAAU,WAwBpEglE,EAAWnqE,UAAUusE,UAAY,SAAUrtC,EAAeF,EAAgB6rC,EAAQrsC,GAC9E,IAAI5O,EAAci7C,EAAO/6C,OAAkC,QAAzB+6C,EAAO2B,cAA0B1sE,KAAK2sE,gBAAgBtnE,OAASrF,KAAKqrE,UAAY,EAC9GrrE,KAAKisE,YAAcjsE,KAAK4sE,WAAa7B,EAAO8B,cAAgB7sE,KAAKkrE,uBACjEp7C,EAAci7C,EAAO/6C,OAAkC,QAAzB+6C,EAAO2B,cAA0B1sE,KAAK2sE,gBAAgBtnE,OAASrF,KAAKqrE,UAAY,EAC9Gv7C,GAAgB9vB,KAAKurE,eAAiBvrE,KAAKqrE,WAE/CjsC,EAAgBj2B,KAAKuS,IAAI0jB,EAAeV,EAAap5B,OACrD45B,EAAiB/1B,KAAKuS,IAAIwjB,EAAgBR,EAAar5B,QACnC,aAAhB0lE,EAAOttD,MACPihB,EAAap5B,MAAQylE,EAAOzlE,MAAQo5B,EAAap5B,MAAQtF,KAAKisE,WAAa7sC,EAAgB,IAAOV,EAAap5B,MAC/Go5B,EAAar5B,OAAS0lE,EAAO1lE,OAASq5B,EAAar5B,OAASrF,KAAKisE,WAAa,IAAOvtC,EAAar5B,OAAS65B,IAG3GR,EAAap5B,MAASylE,EAAOzlE,MAAwBo5B,EAAap5B,MAA7B85B,EACrCV,EAAar5B,OAAU0lE,EAAO1lE,OAA0Bq5B,EAAar5B,OAA9B65B,GAEtCl/B,KAAKkrE,sBACFlrE,KAAK6rE,OAA4C,SAAnCd,EAAO96C,WAAWg+B,eAChCjuD,KAAK8sE,qBAAqB/B,EAAQrsC,GAClCA,EAAar5B,QAA6C,SAAnC0lE,EAAO96C,WAAWg+B,cAA2BjuD,KAAK4qE,uBAAuBjqE,OAAS,EACpGX,KAAK2sE,gBAAgBtnE,OAAUrF,KAAK2sE,gBAAgBtnE,OAASrF,KAAK4qE,uBAAuBjqE,OAAW,GAGjHX,KAAKsrE,SAAWniE,KAAKwS,IAAI,EAAGxS,KAAKgkC,MAAMzO,EAAar5B,OAAS0lE,EAAO59C,QAAU2C,IACzE9vB,KAAKsqE,cAAgBS,EAAO59C,YA0CrCk9C,EAAWnqE,UAAUqsE,YAAc,SAAUxoE,EAAUk8C,EAAWvhB,EAAclQ,EAAMV,EAAeud,GACjG,IAAIle,EAAUntB,KAAK+qE,OAAO3lD,OAAO9f,MAC7BynE,EAAgB/sE,KAAKkrE,qBACrBE,EAAcprE,KAAKorE,YACnB4B,EAAyC,WAA9B5B,EAAYnqC,cACvBgsC,EAAwC,WAA7B7B,EAAY7mC,aACvB0nC,EAAyC,aAA5Bb,EAAYlqC,YACzBgsC,EAAsBH,GAA+C,KAA9B3B,EAAY+B,cACnD9hC,EAAa/lC,MAAQtF,KAAKuX,MAAM6N,OAAO9f,MAAkB,EAAV6nB,EAAc,EAC7DigD,EAAeptE,KAAKuX,MAAMgnB,OAAO1oB,OACjCw3D,EAAe3uC,EAAar5B,OAAS8nB,EAAUntB,KAAK+qE,OAAOxsC,OAAOx5B,IAAM/E,KAAK+qE,OAAOxsC,OAAO1oB,OAC3Fy3D,EAAc5uC,EAAap5B,MAAQ6nB,EAAUntB,KAAK+qE,OAAOxsC,OAAOv5B,KAAOhF,KAAK+qE,OAAOxsC,OAAO3oB,MAC9F,GAAiB,WAAb7R,EACA26B,EAAa14B,EAAIhG,KAAKutE,YAAY7uC,EAAa14B,EAAG8nB,EAAcxoB,MAAOo5B,EAAap5B,MAAO26C,GAC3FvhB,EAAaz4B,EAAIuoB,EAAKvoB,GAAKuoB,EAAKnpB,OAASgoE,GAAgBlgD,EAAUntB,KAAK+qE,OAAOxsC,OAAOx5B,IACtF25B,EAAaz4B,IAAM8mE,GAAkB3B,EAAYjhC,iBAAoB6iC,GAAaC,GAC1EhB,EACHA,GAA4C,KAA9Bb,EAAY+B,cAAwB9hC,EAAahmC,OAAmB,EAAV8nB,EAAc,EADrEi+C,EAAYjnC,eAAe9+B,OAAS+nE,EAAeptE,KAAK+qE,OAAO3lD,OAAO9f,MAAkB,EAAV6nB,EAEpG,gBAAkBqB,EAAM,IAAI,OAAU,EAAG,EAAG,EAAG6+C,SAE9C,GAAiB,QAAbtpE,EAAoB,CACzB,IAAIypE,OAAe,EACfxtE,KAAKgrE,iBACLwC,EAAe,eAAY,MAAOxtE,KAAKuX,MAAMoqB,aAAa,GAAGyI,WAAYpqC,KAAKuX,MAAM2Y,WAAWopC,kBAEnG56B,EAAa14B,EAAIhG,KAAKutE,YAAY7uC,EAAa14B,EAAG8nB,EAAcxoB,MAAOo5B,EAAap5B,MAAO26C,GAC3FvhB,EAAaz4B,EAAIuoB,EAAKvoB,EAAIknB,EAAUntB,KAAK+qE,OAAOxsC,OAAOx5B,IACvD25B,EAAaz4B,IAAM8mE,IAAiB3B,EAAYjhC,iBAAoB6iC,GAAaC,GAC5EhB,EAA0E,EAA5Db,EAAYjnC,eAAe9+B,OAASrF,KAAKuX,MAAMgnB,OAAOx5B,IACzEsoE,GAAgB,EAA6B,GAAVlgD,EAAentB,KAAKgrE,eAA4B,GAAV79C,EAAcqgD,EAAanoE,OAAS,EAAI,EACjH,gBAAkBmpB,EAAM,IAAI,OAAU,EAAG,EAAG6+C,EAAc,QAExC,UAAbtpE,GACL26B,EAAa14B,EAAIwoB,EAAKxoB,GAAKwoB,EAAKlpB,MAAQo5B,EAAap5B,OAAStF,KAAK+qE,OAAOxsC,OAAO3oB,MACjF8oB,EAAaz4B,EAAIuoB,EAAKvoB,EAAIjG,KAAKutE,YAAY,EAAGz/C,EAAczoB,QAAUmpB,EAAKvoB,EAAImnE,GAAe1uC,EAAar5B,OAAQ46C,GACnHqtB,GAAgBP,GAAiB3B,EAAYjhC,kBAAoB6iC,IAAaC,GAC1EhB,EAAejsE,KAAKuX,MAAMgnB,OAAOv5B,KAAOhF,KAAKuX,MAAMgnB,OAAO3oB,MAAQw1D,EAAYjnC,eAAe9+B,OAAU,EAC3G,gBAAkBmpB,EAAM,IAAI,OAAU,EAAG8+C,EAAa,EAAG,KAEvC,SAAbvpE,GACL26B,EAAa14B,EAAI04B,EAAa14B,EAAIhG,KAAK+qE,OAAOxsC,OAAOv5B,KACrD05B,EAAaz4B,EAAIuoB,EAAKvoB,EAAIjG,KAAKutE,YAAY,EAAGz/C,EAAczoB,QAAUmpB,EAAKvoB,EAAImnE,GAAe1uC,EAAar5B,OAAQ46C,GACnHqtB,IAAgBP,GAAkB3B,EAAYjhC,iBAAoB6iC,GAAaC,IAC3EhB,EAC6B,aAA5Bb,EAAYlqC,aAA4D,KAA9BkqC,EAAY+B,cAAwBD,EAAqB,EADrFxuC,EAAa14B,EAAIhG,KAAKuX,MAAMgnB,OAAOv5B,KAAOmoB,EAAUi+C,EAAYjnC,eAAe9+B,OAElG,gBAAkBmpB,EAAM,IAAI,OAAU8+C,EAAa,EAAG,EAAG,MAGzD5uC,EAAa14B,EAAIhG,KAAK+qE,OAAOp9C,SAAS3nB,EACtC04B,EAAaz4B,EAAIjG,KAAK+qE,OAAOp9C,SAAS1nB,EACtC,gBAAkBuoB,EAAM,IAAI,OAAU,EAAG,EAAG,EAAG,MAuBvD67C,EAAWnqE,UAAUqtE,YAAc,SAAUrwD,EAAOpH,EAAM23D,EAAYxtB,GAClE,OAAQA,GACJ,IAAK,MACD/iC,EAASpH,EAAO23D,EAAcvwD,EAC9B,MACJ,IAAK,SACDA,GAAUpH,EAAO23D,GAAc,EAC/B,MAER,OAAOvwD,GAwBXmtD,EAAWnqE,UAAU86C,aAAe,SAAUzjC,EAAOwzD,EAAQrsC,EAAc9Y,GACvE,IAAIkK,EAAc,EACd49C,EAAsB,EACtBC,EAAqB,IAAI,OAAK,EAAG,EAAG,EAAG,GACvCC,EAAsB,IAAI,OAAK,EAAG,EAAG,EAAG,GACxCC,EAAc7tE,KAAK8tE,wBAAwB9tE,KAAKu7C,mBAChDpuB,EAAU49C,EAAO59C,QACrBntB,KAAKksE,YAAclsE,KAAKkrE,qBAAuBH,EAAO59C,QAAUntB,KAAKksE,YACrE,IAAIU,EAAW7B,EAAO8B,YAClBH,EAAgB3B,EAAO2B,cACvBqB,EAAgB/tE,KAAK4sE,WAAa7B,EAAO8B,aAAe7sE,KAAKisE,WAAajsE,KAAKurE,eAAiB,EAChGyC,EAAcz2D,EAAM+N,SAASY,YAAY,CAAE5a,GAAItL,KAAKknD,SAAW,OAC/D+mB,EAAuBjuE,KAAKkuE,qBAAqB32D,EAAOmnB,EAAcsvC,EAAajD,EAAQ/qE,KAAKknD,SAAUthC,GAC9G5lB,KAAK6qE,cAAgB,GACrB7qE,KAAK2qE,cAAgB,EACrB,IAAIwD,EAAY,EAEhB,GADAr+C,EAAe9vB,KAAK8rE,UAAe9rE,KAAK6rE,OAAS7rE,KAAKisE,YAAajsE,KAAK2sE,gBAAgBtnE,OAA1D,EAC1BrF,KAAKgrE,gBAAmBhrE,KAAKirE,oBAAsBjrE,KAAKisE,WAAa,CAGrE,IAFA,IAAIr3C,EAAY,EACZ21C,EAAavqE,KAAKuqE,WAAW,GAAKp9C,EAC7BnsB,EAAI,EAAGA,EAAIhB,KAAKuqE,WAAW5pE,OAAQK,IACnCupE,EAAavqE,KAAKuqE,WAAWvpE,GAAKmsB,EAAYntB,KAAK0+B,aAAar5B,OAASrF,KAAKurE,eAAiBvrE,KAAKsqE,cAAgB,IACrHtqE,KAAKwqE,YAAY51C,EAAY,GAAK21C,EAAaz6C,EAC/C8E,IACA21C,EAAa,GAEjBA,GAAevqE,KAAKuqE,WAAWvpE,IAAMhB,KAAKisE,WAAajsE,KAAKksE,YAAc/+C,GAE9EntB,KAAKwqE,YAAY51C,EAAY,GAAK21C,EAAaz6C,EAC/C9vB,KAAKouE,WAAax5C,EAEtB,IAAS5zB,EAAI,EAAGA,EAAIhB,KAAKu7C,kBAAkB56C,OAAQK,IAC/C,GAAuC,KAAnChB,KAAKu7C,kBAAkBv6C,GAAGwb,KAAa,CACvC2xD,EAAYhlE,KAAKwS,IAAI3b,KAAKu7C,kBAAkBv6C,GAAGqtE,SAAShpE,OAAQ8oE,GAChE,MAiBR,GAXKnuE,KAAKgrE,gBAAmBhrE,KAAKirE,oBAC9BjrE,KAAKsqE,cAAgBnhE,KAAKwS,IAAIwyD,EAAWpD,EAAOuD,cAG/C1B,IAAY5sE,KAAK4sE,UAAa5sE,KAAKisE,YAI/BjsE,KAAK8rE,SAAY9rE,KAAK4sE,UAAa5sE,KAAKisE,aAC7CyB,EAAsBhB,KAAqB1sE,KAAKuuE,YAAwB,QAAT,QAAqBvuE,KAAKqrE,UAAYrrE,KAAK2sE,gBAAgBrnE,MAAS,IAJnIooE,EAAuB1tE,KAAK8rE,SAAgC,SAAlBY,EAA2B1sE,KAAK2sE,gBAAgBrnE,MAApD,EACtCooE,GAAwB1tE,KAAKurE,eAAkB,EAAIvrE,KAAKqrE,WAK1B,aAA9B9zD,EAAMinB,eAAe/gB,MAAuBzd,KAAKu7C,kBAAkB56C,OAAS,EAC5EX,KAAKwuE,gBAAgB9vC,EAAcnnB,EAAOwzD,EAAQkD,GAClDjuE,KAAKouE,WAAa,OAEjB,GAAIP,IAAgB7tE,KAAKu7C,kBAAkB56C,OAAQ,CACpD,IAAI8tE,OAAoB,EACpB1uD,EAAQ,EACR2uD,EAAiB1uE,KAAKu7C,kBAAkBsyB,GAExCc,EAAe3uE,KAAKkrE,qBAAuB,EAAIwC,EAAsBvgD,EAAW49C,EAAO6D,WAAa,EAAK7D,EAAOuB,iBAAiBtnE,KACjI6pE,EAAY7uE,KAAKkrE,qBAAuBxsC,EAAa14B,EAAI0nE,EAAsBvgD,EAAW49C,EAAO6D,WAAa,EAC5G5uE,KAAKuuE,YAA+C7vC,EAAa14B,GAAqC,sBAA/BhG,KAAKuX,MAAMzC,iBAA2C9U,KAAKisE,WAAcjsE,KAAK4P,SAAW8uB,EAAap5B,OAASqpE,EAAlKjwC,EAAa14B,EAAI2oE,EACvCzxD,EAAQ,IAAI,OAAc2xD,EAAW7uE,KAAKkrE,qBAAuBxsC,EAAaz4B,EAAI6pB,EAAci+C,EAAgB5gD,EAAWntB,KAAKsqE,cAAgB,EAChJ5rC,EAAaz4B,EAAI6pB,EAAci+C,EAAgB5gD,EAAWntB,KAAKsqE,cAAgB,EAAKS,EAAOuB,iBAAiBvnE,KAC5G8lC,EAAStzB,EAAM02B,cAAgB12B,EAAM9R,UAAY,MAAQ,QACzDqpE,EAAc,IAAI,OAAW,GAAI5xD,EAAMlX,EAAGkX,EAAMjX,EAAG4kC,GACnDhC,EAAckiC,EAAOgE,aAAe/uE,KAAKksE,YAAcnB,EAAO6D,WAElE5uE,KAAKouE,WAAapuE,KAAKouE,WAAcpuE,KAAKirE,mBAAqBjrE,KAAKgrE,gBAAkBhrE,KAAKkrE,sBAAwBlrE,KAAKmrE,oBAAuBnrE,KAAKouE,WAAa,EACjKpuE,KAAK0qE,iBAAmB,GACxB1qE,KAAKu7C,kBAAkBsyB,GAAalgD,SAAWzQ,EAC/C,IAAI8xD,OAAc,EAClB,IAAKjE,EAAO8B,aAAe7sE,KAAK4sE,SAAU,CACtC,IAAI5mE,EAAIkX,EAAMlX,EAAIhG,KAAKqrE,UACnBplE,EAAIiX,EAAMjX,EAAIjG,KAAKqrE,UACnB4D,EAAYjvE,KAAK8rE,UAAY9rE,KAAKisE,YAAgC,SAAlBS,EAChD1sE,KAAK2sE,gBAAgBrnE,MAAQtF,KAAKqrE,UAAY,EAC9C6D,EAAclvE,KAAKisE,WAAcjsE,KAAmB,eAAImJ,KAAK6a,IAAI/d,EAAIy4B,EAAaz4B,GAAK,EACvFkpE,EAAanvE,KAAK8rE,UAAY9rE,KAAKisE,YAAgC,UAAlBS,EACjD1sE,KAAK2sE,gBAAgBrnE,MAAQtF,KAAKqrE,UAAY,EAClD8D,GAAcnvE,KAAKisE,WAAa,EAAKjsE,KAAKqrE,UAAYrrE,KAAKurE,eAAiBvrE,KAAKqrE,UACjFsC,EAAqB,IAAI,OAAK3nE,EAAGC,EAAGy4B,EAAap5B,MAAQ6pE,EAAaF,EAAWvwC,EAAar5B,OAAS6pE,GACvGtB,EAAsBD,OAGtBC,EAAsBlvC,EAE1B,IAAI0wC,OAAe,EACnB,IAASpuE,EAAI,EAAGA,EAAIhB,KAAKu7C,kBAAkB56C,OAAQK,IAC/CouE,EAAepvE,KAAKu7C,kBAAkBv6C,GACtCguE,EAAehvE,KAAKqvE,UAAqBrvE,KAAKu7C,kBAAkB56C,OAAS,EAAKof,EAA9CA,EACG,sBAA/B/f,KAAKuX,MAAMzC,kBACXs6D,EAAahvD,MAAQpgB,KAAKuX,OAASvX,KAAKuX,OAASvX,KAAKuX,OAASvX,KAAKuX,OAAOgE,cAAc,GAAG/D,OAAO43D,EAAapiD,YAAYrX,OAE7F,eAA/B3V,KAAKuX,MAAMzC,kBACXs6D,EAAa5gE,KAAOxO,KAAKuX,MAAMgE,cAAcwE,GAAOvR,MAExDxO,KAAKsvE,iBAAoBtvE,KAAyB,qBAAI,yBAAgCovE,EAAa5yD,KAC7F,6BAA+B4yD,EAAa5yD,KAAO,UACrD4yD,EAAaz7D,QAAUy7D,EAAa5yD,MAA8B,KAAtB4yD,EAAa5yD,OACzDiyD,EAAoBl3D,EAAM+N,SAASY,YAAY,CAC3C5a,GAAItL,KAAKknD,SAAWlnD,KAAKuvE,WAAWH,EAAc,MAAOJ,KAEzDP,IACAA,EAAkB9jE,aAAa,WAAkB,IAAN3J,EAAU,IAAM,IAC3DytE,EAAkB9jE,aAAa,aAAcogE,EAAOjyB,aAAgBs2B,EAAa5yD,KAAO,eAAiB4yD,EAAaz4D,QAAU,oCAAsC,oCAAsCy4D,EAAa5yD,KAAO,WAChOiyD,EAAkB9jE,aAAa,OAAQ,UACvC8jE,EAAkB9jE,aAAa,eAAgBykE,EAAaz4D,QAAU,OAAS,UAEnF3W,KAAKmsE,QAAQqD,eAAeJ,EAAclyD,EAAO2rB,EAAa6lC,EAAgBd,EAAqB7tD,EAAO8tD,GAC1G7tE,KAAKyvE,aAAaL,EAAcX,EAAmBO,GACnDhvE,KAAK0vE,WAAWn4D,EAAO63D,EAAcX,EAAmBK,EAAa/uD,EAAOivD,GACxEP,IACAA,EAAkB1nE,MAAMwsC,QACpB,2CAA8Cw3B,EAAO4E,mBAA6C,SAAxBp4D,EAAMw7B,eACpD,SAAxBx7B,EAAMs6B,eACkB,SAAxBt6B,EAAMw7B,gBAA6B/yC,KAAKkrE,qBAAwB,OAAS,YAEjF+C,GACAA,EAAqBvpE,YAAY+pE,GAErCC,EAAiBU,GAErBrvD,IAEJ/f,KAAKouE,WAAcpuE,KAAK4sE,WAAa5sE,KAAKkrE,uBAAyBlrE,KAAK+qE,OAAO8B,cAAgB7sE,KAAKisE,YAChGjsE,KAAKouE,WAAapuE,KAAK2qE,cAAiB3qE,KAAK2qE,cAAgB3qE,KAAKouE,WAClEpuE,KAAK4sE,UAAY5sE,KAAKouE,WAAa,EACnCpuE,KAAK4vE,qBAAqBr4D,EAAOmnB,EAAcowC,EAAad,GAG5DhuE,KAAKouE,WAAa,EAG1B,eAAmB72D,EAAMyN,aAAczN,EAAM2tB,UAAW8oC,EAAapoD,IAGzEykD,EAAWnqE,UAAUsuE,gBAAkB,SAAU9vC,EAAcnnB,EAAOwzD,EAAQkD,GAC1E,IAAI4B,EAAQ,6BACRnB,EAAiB1uE,KAAKu7C,kBAAkB,GACxCu0B,EAAa9vE,KAAKu7C,kBAAkB,GACpCw0B,EAAa/vE,KAAKuX,MAAM+N,SAAS0qD,aACjCC,EAAsB,EACtBC,EAAmBtiE,SAASuiE,gBAAgBN,EAAO,kBACnDr8B,EAAU,EACV48B,EAAa,GACbC,EAAc,GACdtF,EAAO/6C,QACFhwB,KAAKisE,YAcNvtC,EAAaz4B,GAAKjG,KAAK2sE,gBAAgBtnE,OACvCq5B,EAAar5B,QAAUrF,KAAK2sE,gBAAgBtnE,QAdf,SAAzB0lE,EAAO2B,eACPhuC,EAAa14B,GAAKhG,KAAK2sE,gBAAgBrnE,MACvCo5B,EAAap5B,OAAStF,KAAK2sE,gBAAgBrnE,OAEb,UAAzBylE,EAAO2B,cACZhuC,EAAap5B,OAAStF,KAAK2sE,gBAAgBrnE,MAEb,QAAzBylE,EAAO2B,gBACZhuC,EAAaz4B,GAAKjG,KAAK2sE,gBAAgBtnE,OACvCq5B,EAAar5B,QAAUrF,KAAK2sE,gBAAgBtnE,SAQxD,IAAK,IAAIwI,EAAK,EAAGhK,EAAK7D,KAAKuX,MAAM+D,mBAAoBzN,EAAKhK,EAAGlD,OAAQkN,IAAM,CACvE,IAAIyiE,EAAWzsE,EAAGgK,GAIlB,GAHIwiE,EAAYrsE,QAAQssE,EAASpzD,OAAS,GACtCmzD,EAAYhkE,KAAKikE,EAASpzD,OAE1BozD,EAASlzD,OAAOzc,OAAS,EAAG,CAC5B,IAAI4vE,EAAaD,EAASnzD,IAAMmzD,EAASpzD,MACrCszD,EAAeF,EAASlzD,OAAOzc,OAAS,EAC5C,GAAI4vE,EAAY,EAAG,CACfA,GAAwBC,EACxB,IAAK,IAAI/jE,EAAQ,EAAGA,EAAQ+jE,EAAc/jE,IAAS,CAC/C,IAAIgkE,EAAkBH,EAASpzD,MAASqzD,EAAY9jE,EACpD4jE,EAAYhkE,KAAKokE,SAIrB,IAAShkE,EAAQ,EAAGA,EAAQ+jE,EAAc/jE,IACtC4jE,EAAYhkE,KAAKikE,EAASpzD,OAIlCmzD,EAAYrsE,QAAQssE,EAASnzD,KAAO,GACpCkzD,EAAYhkE,KAAKikE,EAASnzD,KAE9B,IAAK,IAAIrZ,EAAK,EAAG0d,EAAK8uD,EAASlzD,OAAQtZ,EAAK0d,EAAG7gB,OAAQmD,IAAM,CACzD,IAAIi9C,EAAYv/B,EAAG1d,GACfssE,EAAWpsE,QAAQ+8C,GAAa,GAChCqvB,EAAW/jE,KAAK00C,GAGpBuvB,EAASlzD,OAAOzc,OAAS,GAAK2vE,EAASlzD,OAAOzc,OAAS,GACvDyvE,EAAW/jE,KAAKikE,EAASlzD,OAAO,IAGxC,IAAIooB,EAAKxlC,KAAKuuE,cAAgBvuE,KAAKisE,WAAa,OAAS,KACrDxmC,EAAKzlC,KAAKisE,YAAcjsE,KAAKuuE,YAAc,KAAO,OAClD5oC,EAAK3lC,KAAKisE,WAAa,OAAS,KACpCiE,EAAiBvlE,aAAa,KAAM3K,KAAKuvE,WAAWb,EAAgB,iBAAkBuB,IACtFC,EAAiBvlE,aAAa,KAAM66B,GACpC0qC,EAAiBvlE,aAAa,KAAM,MACpCulE,EAAiBvlE,aAAa,KAAM86B,GACpCyqC,EAAiBvlE,aAAa,KAAMg7B,GAEpC,IADA,IAAI+qC,EAAOL,EAAYA,EAAY1vE,OAAS,GAAK0vE,EAAY,GACpD7wE,EAAI,EAAGA,EAAI4wE,EAAWzvE,OAAQnB,IAAK,CACxC,IAAImxE,EAAcN,EAAY7wE,GAAK6wE,EAAY,GAC/CM,GAA4BD,EAC5B,IAAIE,EAAUhjE,SAASuiE,gBAAgBN,EAAO,QAC9Ce,EAAQjmE,aAAa,SAAUgmE,EAAY/+D,YAC3Cg/D,EAAQjmE,aAAa,aAAcylE,EAAW5wE,IAC9CoxE,EAAQjmE,aAAa,eAAgB6oC,EAAQ5hC,YAC7Cs+D,EAAiBxrE,YAAYksE,GAEjC,IAWIC,EACAC,EACAC,EACAC,EAdAC,EAAavC,EAAelyD,KAAK5K,WACjCs/D,EAAWpB,EAAWtzD,KAAK5K,WAC3Bu/D,EAAgB,eAAYF,EAAYlG,EAAOn+C,UAAW5sB,KAAKuX,MAAM2Y,WAAWopC,iBAChF8X,EAAc,eAAYF,EAAUnG,EAAOn+C,UAAW5sB,KAAKuX,MAAM2Y,WAAWopC,iBAC5E1uB,EAAYumC,EAAc7rE,MAAQ8rE,EAAY9rE,MAAQ6rE,EAAc7rE,MAAQ8rE,EAAY9rE,MACxFsjC,EAAauoC,EAAc9rE,OAAS+rE,EAAY/rE,OAAS8rE,EAAc9rE,OAAS+rE,EAAY/rE,OAC5FgsE,EAAe,EAAIzmC,EAAc,EAAImgC,EAAO59C,QAC5CmkD,EAAiB5yC,EAAap5B,MAC9BisE,EAAkB7yC,EAAar5B,OAC/BoV,EAASikB,EAAa14B,EAAI4kC,EAAa,EAAImgC,EAAO59C,QAClD1R,EAASijB,EAAaz4B,EAAI8kE,EAAO59C,QAKrC,GAAIntB,KAAKisE,YAUL,GATAoF,EAAe,EAAIzoC,EAAe,EAAImiC,EAAO59C,QAC7CmkD,EAAiB5yC,EAAap5B,MAAS,EAAIylE,EAAO59C,QAClDokD,EAAkB7yC,EAAar5B,OAASgsE,EACxC52D,EAASikB,EAAa14B,EAAI+kE,EAAO59C,QACjC1R,EAASijB,EAAaz4B,EAAI2iC,EAAc,EAAImiC,EAAO59C,QACnD0jD,EAAcnyC,EAAaz4B,EAAI8kE,EAAO59C,QAAUyb,EAChDkoC,EAAYr1D,EAAS81D,EAAkB3oC,EACvCmoC,EAAeryC,EAAa14B,EAA0B,GAArB04B,EAAap5B,MAA6B,GAAZslC,EAC/DomC,EAAYD,EACRO,EAAiB,GAAI,CACrB,IAAIE,EAAYF,EAAiB,GACjCA,EAAiB,GACjB72D,GAAmB+2D,EAAY,QAYnC,GARAF,EAAiB5yC,EAAap5B,MAAQ+rE,EACtCE,EAAkB7yC,EAAar5B,OAAU,EAAI0lE,EAAO59C,QACpD4jD,EAAcryC,EAAa14B,GAAOhG,KAAKuuE,YACnC+C,EAAkB,EAAIvG,EAAO59C,QAAWyd,EADUmgC,EAAO59C,SAAWyd,EAAYumC,EAAc7rE,QAElG0rE,EAAYtyC,EAAa14B,GAAOhG,KAAKuuE,YACjCxD,EAAO59C,SAAWyd,EAAYwmC,EAAY9rE,OADMgsE,EAAkB,EAAIvG,EAAO59C,QAAWyd,GAE5FimC,EAAcnyC,EAAaz4B,EAA2B,GAAtBy4B,EAAar5B,OAA8B,IAAbujC,EAC9DkoC,EAAYD,EACRU,EAAkB,GAAI,CACtB,IAAIE,EAAaF,EAAkB,GACnCA,EAAkB,GAClB91D,GAAmBg2D,EAAa,EAGxC,IAAI5mC,EAAStzB,EAAM9R,UAAY,MAAQ,GACnCqpE,EAAc,IAAI,OAAW,GAAIiC,EAAaF,EAAahmC,EAAQomC,GACnES,EAAc,UAClB5C,EAAYxjE,GAAKtL,KAAKknD,SAAWlnD,KAAKuvE,WAAWb,EAAgB,SAAU,GAC3E,IAAIiD,EAAYjD,EAAe/3D,QAAUo0D,EAAOn+C,UAAUjX,OAAS4B,EAAM2Y,WAAWopC,gBAAgB3jD,MAAQ+7D,EACxGE,GAAW5xE,KAAKmrE,qBAA8BnrE,KAAKuX,MAAMyN,aAC7D,gBAAYzN,EAAM+N,SAAUwpD,EAAa/D,EAAOn+C,UAAW+kD,EAAW1D,GAAsB,GAAO,GAAO,GAAO,EAEjH,KAAMjuE,KAAK+rE,mBAAqB6F,EAC5B,IAAI,OAAK,GAAI5xE,KAAK6xE,cAAcD,EAAU,KAAM5xE,KAAK+rE,kBAAoB,EAAG/rE,KAAK+rE,mBAAoB,EAAG,GAAK,KAAM,KAAM,KAAM,KAAM,KAAM/rE,KAAKuX,MAAM2Y,WAAWopC,iBACrKwV,EAAc,IAAI,OAAW,GAAIkC,EAAWF,EAAWjmC,EAAQqmC,GAC/DpC,EAAYxjE,GAAKtL,KAAKknD,SAAWlnD,KAAKuvE,WAAWb,EAAgB,SAAU,GAC3E,gBAAYn3D,EAAM+N,SAAUwpD,EAAa/D,EAAOn+C,UAAW+kD,EAAW1D,GAAsB,GAAO,GAAO,GAAO,EAEjH,KAAMjuE,KAAK+rE,mBAAqB6F,EAC5B,IAAI,OAAK,GAAI5xE,KAAK6xE,cAAcD,EAAU,KAAM5xE,KAAK+rE,kBAAoB,EAAG/rE,KAAK+rE,mBAAoB,EAAG,GAAK,KAAM,KAAM,KAAM,KAAM,KAAM/rE,KAAKuX,MAAM2Y,WAAWopC,iBACrK,IAAIwY,GAAiBv6D,EAAM+N,SAASg7B,cAAc,CAC9Ch7C,MAAOgsE,EACPjsE,OAAQksE,EACRvrE,EAAGyU,EACHxU,EAAGwV,EACH2E,KAAM,QAAUpgB,KAAKuvE,WAAWb,EAAgB,iBAAkBuB,GAAuB,MAE7FF,EAAWrrE,YAAYwrE,GACvBjC,EAAqBvpE,YAAYqrE,GACjC9B,EAAqBvpE,YAAYotE,KASrCzH,EAAWnqE,UAAU4tE,wBAA0B,SAAUiE,GAErD,IADA,IAAIhyD,EAAQ,EACHlS,EAAK,EAAGmkE,EAAqBD,EAAkBlkE,EAAKmkE,EAAmBrxE,OAAQkN,IAAM,CAC1F,IAAIk9D,EAASiH,EAAmBnkE,GAChC,GAAIk9D,EAAOp3D,QAAUo3D,EAAOvuD,MAAwB,KAAhBuuD,EAAOvuD,KACvC,MAEJuD,IAEJ,OAAOA,GAQXsqD,EAAWnqE,UAAU4sE,qBAAuB,SAAU/B,EAAQrsC,GAC1D,GAAIqsC,EAAO/6C,MAAO,CACdhwB,KAAK6rE,MAAiC,QAAzBd,EAAO2B,cACpB,IAAIv/C,EAA6C,SAAnC49C,EAAO96C,WAAWg+B,aAA0B,EAAI8c,EAAO59C,QAAU,EAC3EntB,KAAK6rE,OAAS7rE,KAAKisE,WACnBjsE,KAAK4qE,uBAAyB,eAASG,EAAO/6C,MAAO+6C,EAAO96C,WAAayO,EAAap5B,MAAQ6nB,EAAUntB,KAAKuX,MAAM9R,UAAWzF,KAAKuX,MAAM2Y,WAAW+hD,iBAGpJjyE,KAAK4qE,uBAAuB,GAAK,gBAASG,EAAOmH,kBAAmBnH,EAAO/6C,MAAO+6C,EAAO96C,WAAYjwB,KAAKuX,MAAM9R,UAAWzF,KAAKuX,MAAM2Y,WAAW+hD,iBAErJ,IAAIz1D,EAAOxc,KAAK6rE,MAAQd,EAAO/6C,MAAQhwB,KAAK4qE,uBAAuB,GACnE5qE,KAAK2sE,gBAAkB,eAAYnwD,EAAMuuD,EAAO96C,WAAYjwB,KAAKuX,MAAM2Y,WAAW+hD,iBAClFjyE,KAAK2sE,gBAAgBtnE,QAAUrF,KAAK4qE,uBAAuBjqE,YAG3DX,KAAK2sE,gBAAkB,IAAI,OAAK,EAAG,IAW3CtC,EAAWnqE,UAAUiyE,kBAAoB,SAAU56D,EAAOwzD,EAAQrsC,EAAcsvC,GAC5E,IAAI7gD,EAAU49C,EAAO59C,QACjB8yB,EAAY8qB,EAAO96C,WAAWoa,cAClCrqC,KAAK6rE,MAAiC,QAAzBd,EAAO2B,cACpB,IAAI7hC,EAAS,eAAckgC,EAAO96C,WAAWoa,cAAe9yB,EAAM9R,WAC9DO,EAAI,gBAAe04B,EAAcqsC,EAAO96C,YAC5C4a,EAAS7qC,KAAK6rE,OAAS7rE,KAAKisE,WAAaphC,EAAUtzB,EAAe,UAAI,MAAQ,GAC9EvR,EAAkB,SAAdi6C,EAAwBj6C,EAAImnB,EAAyB,QAAd8yB,EAAuBj6C,EAAImnB,EAAWnnB,EACjFA,EAAKhG,KAAK6rE,OAAS7rE,KAAKisE,WAAcjmE,EAAM04B,EAAc,GAA8B,SAAzBqsC,EAAO2B,cAA2B,EAC5FhuC,EAAap5B,MAAQtF,KAAK2sE,gBAAgBrnE,MAAQ,GACvD,IAAI8sE,EAAc1zC,EAAar5B,OAAS,EAAMrF,KAAK2sE,gBAAgBtnE,OAAS,EACxEY,EAAIy4B,EAAaz4B,GAAMjG,KAAK6rE,OAAU7rE,KAAKisE,WAC1CjsE,KAAK2sE,gBAAgBtnE,OAASrF,KAAK4qE,uBAAuBjqE,OADHyxE,GAExDC,EAAyB,IAAI,OAAWryE,KAAKknD,SAAW,SAAUlhD,EAAGC,EAAG4kC,EAAQ7qC,KAAK4qE,wBACzF,gBAAYrzD,EAAM+N,SAAU+sD,EAAwBtH,EAAO96C,WAAY86C,EAAO96C,WAAWta,OAAS3V,KAAKuX,MAAM2Y,WAAW+hD,gBAAgBt8D,MAAOq4D,EAAa,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAMhuE,KAAKuX,MAAM2Y,WAAW+hD,kBAYlP5H,EAAWnqE,UAAUguE,qBAAuB,SAAU32D,EAAOmnB,EAAcsvC,EAAajD,EAAQz/D,EAAIsa,GAChG,IAAIuH,EAAU49C,EAAO59C,QACjBhqB,EAAU,IAAI,OAAWmI,EAAK,WAAYy/D,EAAO1qB,WAAY0qB,EAAO3lD,OAAQ2lD,EAAOv3B,QAAS9U,GAC5F4zC,EAAmB/6D,EAAM+N,SAASY,YAAY,CAAE5a,GAAIA,EAAK,iBACzDsmE,GAAW5xE,KAAKmrE,qBAA8B5zD,EAAMyN,aACpDutD,EAAWh7D,EAAM+N,SAASktD,eAAe,CAAElnE,GAAIA,EAAK,cAiCxD,OAhCAnI,EAAQmC,MAAStF,KAAKuuE,aAA8C,sBAA/BvuE,KAAKuX,MAAMzC,iBAA2C9U,KAAKisE,WAAcjsE,KAAK4P,SAAW8uB,EAAap5B,MACvI0oE,EACAA,EAAYtpE,YAAY6S,EAAM+N,SAASg7B,cAAcn9C,IAGrDoU,EAAM+N,SAASg7B,cAAcn9C,GAE7B4nE,EAAO/6C,OACPhwB,KAAKmyE,kBAAkB56D,EAAOwzD,EAAQrsC,EAAcsvC,GAEnD4D,GACD5D,EAAYtpE,YAAY4tE,GAE5BtyE,KAAKiuE,qBAAuB12D,EAAM+N,SAASY,YAAY,CAAE5a,GAAIA,EAAK,iBAC7DsmE,GACDU,EAAiB5tE,YAAY1E,KAAKiuE,sBAEtC9qE,EAAQ8C,GAAMjG,KAAK6rE,MAAQ7rE,KAAK2sE,gBAAgBtnE,OAAS,EACzDlC,EAAQmI,IAAM,iBACdnI,EAAQmC,MAAWtF,KAAKgrE,gBAA4C,gBAA1BzzD,EAAMzC,iBAAsC9U,KAAKmrE,sBAAwBnrE,KAAKisE,WAClHvtC,EAAap5B,MADmHtF,KAAK4P,SAAWud,EAAU49C,EAAOuB,iBAAiBtnE,KAAO+lE,EAAOuB,iBAAiB12D,MAElNg8D,EAKD5xE,KAAKyyE,eAAiBtvE,GAJtBnD,KAAKoX,SAAWG,EAAM+N,SAASg7B,cAAcn9C,GAC7CovE,EAAS7tE,YAAY1E,KAAKoX,WAK9B,eAAmBw6D,EAAUr6D,EAAM2tB,UAAWqtC,EAAU3sD,GACnDgsD,IACDU,EAAiBvrE,MAAMwsC,QAAU,kBAAoBg/B,EAASjnE,GAAK,KAEhEtL,KAAKiuE,sBAehB5D,EAAWnqE,UAAUuvE,aAAe,SAAUL,EAAcp9C,EAAOg9C,GAC/D,IAQI/7B,EAKAy/B,EAbAjpD,EAAUzpB,KAAKkrE,qBAAuBlrE,KAAKuX,MAAQ,KACnDo7D,EAAcvD,EAAaz4D,QAAUy4D,EAAahvD,KAAO,UACzDwyD,GAAgD,UAA/B5yE,KAAKuX,MAAMzC,iBAA8D,eAA/B9U,KAAKuX,MAAMzC,mBAA+D,eAAvBs6D,EAAatjD,OAC1HsjD,EAAa5gE,KAAK+T,cAAcve,QAAQ,SAAW,IAA4D,IAArDorE,EAAa5gE,KAAK+T,cAAcve,QAAQ,SAC1E,mBAAvBorE,EAAatjD,OAAuD,iBAAvBsjD,EAAatjD,OAAqD,UAAvBsjD,EAAatjD,OACvG+mD,GAAiD,UAA/B7yE,KAAKuX,MAAMzC,iBAA8D,eAA/B9U,KAAKuX,MAAMzC,mBAChD,YAAtBs6D,EAAa5gE,MAA4C,WAAtB4gE,EAAa5gE,MACjDojE,GAAW5xE,KAAKmrE,qBAA8BnrE,KAAKuX,MAAMyN,aAEzD8G,EAAgC,eAAvBsjD,EAAatjD,MAA0BsjD,EAAa5gE,KAAO4gE,EAAatjD,MACjFgnD,EAAcF,EAAsC,WAArB5yE,KAAK+qE,OAAOttD,KAC3Czd,KAAKuX,MAAMgE,cAAcyzD,GAAa1pE,MAAQtF,KAAKuX,MAAMgE,cAAc,GAAGjW,MACzEtF,KAAKkrE,sBAA+C,aAAvBkE,EAAatjD,MAAwB,EAAI,EAG3E,GADAA,EAAkB,YAAVA,EAAsBsjD,EAAat5B,YAAchqB,EACrD+mD,GAAkB7D,EAAchvE,KAAKuX,MAAMgE,cAAc5a,OAAQ,CACjE,IAAI2W,EAAStX,KAAKuX,MAAMgE,cAAcyzD,GAClC+D,EAAez7D,EAAO8N,OACtB4tD,EAA8B,mBAAVlnD,GAAwC,iBAAVA,EACtDmnB,EAAc+/B,EAAoBL,EAAcI,EAAap9D,MAAQo9D,EAAap9D,MAAQg9D,EAC1FG,EAAcE,EAAoB17D,EAAOhS,MAAQytE,EAAaztE,MAAQytE,EAAaztE,MAAQ,EAE/F,IAAI2tE,EAAe,IAAI,OAAWjzE,KAAKknD,SAAWlnD,KAAKuvE,WAAWH,EAAc,UAAWJ,GAAc2D,EAAaG,EAAcD,EAAiB5/B,EAAc0/B,EAAc3yE,KAAK+qE,OAAOv3B,QAAS47B,EAAa9oC,UAAW,IAC1N+nC,EAAW,eAAYe,EAAa5yD,KAAMxc,KAAK+qE,OAAOn+C,UAAW5sB,KAAKuX,MAAM2Y,WAAWopC,iBACvFtzD,EAAIhG,KAAK+qE,OAAO7gC,aAAelqC,KAAKuuE,YAAca,EAAazhD,SAAS3nB,EAAIqoE,EAAS/oE,MAAQtF,KAAK+qE,OAAOgE,aACvGK,EAAazhD,SAAS3nB,EACxBC,EAAImpE,EAAazhD,SAAS1nB,EACzB2rE,GAIDc,GAAiB1yE,KAAK6xE,cAAcD,EAAU,KAAM5xE,KAAK+rE,kBAAoB,EAAG/rE,KAAK+rE,mBACrF,eAAW,CAAE/lE,EAAGA,EAAGC,EAAGA,GAAK6lB,EAAO,IAAI,OAAK9rB,KAAK+qE,OAAO6D,WAAY5uE,KAAK+qE,OAAOuD,aAAc,GAAI2E,EAAcjzE,KAAKsvE,iBAAkBtvE,KAAKuX,MAAM+N,SAAUtlB,KAAK+rE,kBAAoB,IAAI,OAAK,EAAG2G,EAAe,EAAG,GAAK,KAAM1yE,KAAKkrE,qBAAsBzhD,GACxPzpB,KAAK6qE,cAAcx+D,KAAK,CACpBmiB,KAAM,IAAI,OAAK4gD,EAAazhD,SAAS3nB,EAAGopE,EAAazhD,SAAS1nB,EAAGjG,KAAK+qE,OAAO6D,WAAY5uE,KAAK+qE,OAAOuD,YAAcoE,GAAgBjmE,MAAOuiE,KAN9Ih9C,EAAMttB,YAAY,eAAW,CAAEsB,EAAGA,EAAGC,EAAGA,GAAK6lB,EAAO,IAAI,OAAK9rB,KAAK+qE,OAAO6D,WAAY5uE,KAAK+qE,OAAOuD,aAAcc,EAAatzC,IAAKm3C,EAAcjzE,KAAKsvE,iBAAkBtvE,KAAKuX,MAAM+N,SAAU,KAAMtlB,KAAKkrE,qBAAsBzhD,KASlN,SAAVqC,GAAoBsjD,EAAa8D,kBAAiD,UAA7B9D,EAAat5B,aAC3C,aAAtBs5B,EAAa5gE,MAAiC,aAAVsd,KACrCmnD,EAAa3nE,GAAKtL,KAAKknD,SAAWlnD,KAAKuvE,WAAWH,EAAc,iBAAkBJ,GAClFljD,EAA8B,aAAtBsjD,EAAa5gE,KAAsB,SAAW4gE,EAAat5B,YACnEm9B,EAAa7yD,KAA6B,aAAtBgvD,EAAa5gE,KAAsB,UAAYykE,EAAa7yD,KAC3EwxD,EAID,eAAW,CAAE5rE,EAAGA,EAAGC,EAAGA,GAAK6lB,EAAO,IAAI,OAAK9rB,KAAK+qE,OAAO6D,WAAa,EAAG5uE,KAAK+qE,OAAOuD,YAAc,GAAI,GAAI2E,EAAcjzE,KAAKsvE,iBAAkBtvE,KAAKuX,MAAM+N,SAAUtlB,KAAK+rE,kBACpK,IAAI,OAAK,GAAI/rE,KAAK6xE,cAAcD,EAAU,KAAM5xE,KAAK+rE,kBAAoB,EAAG/rE,KAAK+rE,mBAAoB,EAAG,GAAK,KAAM/rE,KAAKkrE,qBAAsBzhD,GAJlJuI,EAAMttB,YAAY,eAAW,CAAEsB,EAAGA,EAAGC,EAAGA,GAAK6lB,EAAO,IAAI,OAAK9rB,KAAK+qE,OAAO6D,WAAa,EAAG5uE,KAAK+qE,OAAOuD,YAAc,GAAI,GAAI2E,EAAcjzE,KAAKsvE,iBAAkB,KAAM,KAAMtvE,KAAKkrE,qBAAsBzhD,MAqCnN4gD,EAAWnqE,UAAUwvE,WAAa,SAAUn4D,EAAO63D,EAAcp9C,EAAO88C,EAAa9tE,EAAGguE,GACpF,IAAIjE,EAASxzD,EAAMinB,eACfkzC,EAAc,UACdC,EAAYvC,EAAaz4D,QAAUo0D,EAAOn+C,UAAUjX,OAAS4B,EAAM2Y,WAAWopC,gBAAgB3jD,MAAQ+7D,EACtGE,GAAW5xE,KAAKmrE,qBAA8BnrE,KAAKuX,MAAMyN,aAG7D,GAFA8pD,EAAYxjE,GAAKtL,KAAKknD,SAAWlnD,KAAKuvE,WAAWH,EAAc,SAAUJ,GACzEF,EAAYtyD,KAAO4yD,EAAa5iD,eAAe7rB,OAAS,EAAIyuE,EAAa5iD,eAAiB4iD,EAAa5yD,KACnGuuD,EAAO7gC,aAAelqC,KAAKuuE,YAC3BO,EAAY9oE,EAAIopE,EAAazhD,SAAS3nB,EAAK+kE,EAAO6D,WAAa,OAE9D,GAAI5uE,KAAKuuE,YAAa,CACvB,IAAI3jC,EAAY,eAAYwkC,EAAa5yD,KAAMuuD,EAAOn+C,UAAW5sB,KAAKuX,MAAM2Y,WAAWopC,iBAAiBh0D,MACxGwpE,EAAY9oE,EAAIopE,EAAazhD,SAAS3nB,IAAMopE,EAAa5iD,eAAe7rB,OAAS,EAAIiqC,EAAYwkC,EAAa5iD,eAAe7rB,OAASiqC,GAAamgC,EAAO6D,WAAa,EAAI7D,EAAOgE,mBAGlLD,EAAY9oE,EAAIopE,EAAazhD,SAAS3nB,EAAK+kE,EAAO6D,WAAa,EAAK7D,EAAOgE,aAE/ED,EAAY7oE,EAAImpE,EAAazhD,SAAS1nB,EAAIjG,KAAKsqE,cAAgB,EACjD,gBAAY/yD,EAAM+N,SAAUwpD,EAAa/D,EAAOn+C,UAAW+kD,EAAW3/C,GAAO,GAAO,GAAO,GAAO,EAAO,KAAMhyB,KAAK+rE,mBAAqB6F,EACnJ,IAAI,OAAK,GAAI5xE,KAAK6xE,cAAcD,EAAU,KAAM5xE,KAAK+rE,kBAAoB,EAAG/rE,KAAK+rE,mBAAoB,EAAG,GAAK,KAAM,KAAM,KAAM,KAAM,KAAM/rE,KAAKuX,MAAM2Y,WAAWopC,iBACrK,GAAIsY,EAAU,CACV,IAAIvD,EAAW,eAAYe,EAAa5yD,KAAMuuD,EAAOn+C,UAAW5sB,KAAKuX,MAAM2Y,WAAWopC,iBACtFt5D,KAAK6qE,cAAc7pE,GAAGwtB,KAAKvoB,EAAI6oE,EAAY7oE,EAAIjG,KAAK6qE,cAAc7pE,GAAGwtB,KAAKvoB,EAAI6oE,EAAY7oE,EAAIjG,KAAK6qE,cAAc7pE,GAAGwtB,KAAKvoB,EACzHjG,KAAK6qE,cAAc7pE,GAAGwtB,KAAKlpB,OAAS+oE,EAAS/oE,MAC7CtF,KAAK6qE,cAAc7pE,GAAGwtB,KAAKnpB,OAASgpE,EAAShpE,OAC7CrF,KAAK6qE,cAAc7pE,GAAGwtB,KAAKvoB,GAAuB,GAAlBooE,EAAShpE,OACzCrF,KAAK6qE,cAAc7pE,GAAGwtB,KAAKxoB,GAAMhG,KAAgB,YAAIA,KAAK6qE,cAAc7pE,GAAGwtB,KAAKlpB,MAAQ,IAwBhG+kE,EAAWnqE,UAAU0vE,qBAAuB,SAAUr4D,EAAOkkC,EAAQ03B,EAAYnF,GAC7E,IAkDIoF,EAlDAC,EAAc97D,EAAM+N,SAASY,YAAY,CAAE5a,GAAItL,KAAKknD,SAAW,gBAC/D0qB,GAAW5xE,KAAKmrE,qBAA8B5zD,EAAMyN,aACpD8K,EAAc9vB,KAAKkrE,qBAAuB,EAAIlrE,KAAK2sE,gBAAgBtnE,OACnEiuE,EAAatzE,KAAKuX,MAAM2hC,MAAMl1C,QAAQ,SAAW,GAAKhE,KAAKuX,MAAM2hC,MAAMl1C,QAAQ,aAAe,EAAK,UAAY,UAC/G+mE,EAASxzD,EAAMinB,eACfrR,EAAU,EACVomD,EAASvzE,KAAKknD,UAAalnD,KAAKuuE,YAA0B,YAAZ,WAC9CiF,EAAWxzE,KAAKknD,UAAalnD,KAAKuuE,YAA4B,UAAd,aAChD0E,EAAe,IAAI,OAAWM,EAAQ,cAAe,EAAGD,EAAW,EAAG,GAAI,IAC1EG,EAAWzzE,KAAKurE,eAEhBD,EAAYP,EAAO8B,cAAe7sE,KAAK4sE,UAAa5sE,KAAKisE,YAAejsE,KAAKkrE,qBAC5ElrE,KAAKsrE,SAAW,EADmF,EAEpG9qB,EAAaxgD,KAAK8rE,SAAoC,SAAzBf,EAAO2B,cAA2B1sE,KAAK2sE,gBAAgBrnE,MAAQ,EAChGtF,KAAK8qE,cAAgB,GACrB9qE,KAAKyrE,qBAA4C,IAArBzrE,KAAK20B,YAAoB,EAAI,EACzD30B,KAAK0rE,oBAAsB1rE,KAAK20B,cAAgB30B,KAAKouE,WAAa,EAAI,EACjEwD,GACD5D,EAAYtpE,YAAY2uE,GAEvBrzE,KAAKgrE,gBAAmBhrE,KAAKirE,oBAC1BjrE,KAAKkrE,sBAAwBlrE,KAAKmrE,sBAAwBnrE,KAAKisE,WAC/DjsE,KAAKouE,WAAajlE,KAAKgkC,KAAKntC,KAAKouE,WAAajlE,KAAKwS,IAAI,EAAG3b,KAAKsrE,SAAW,IAG1EtrE,KAAKouE,WAAajlE,KAAKgkC,KAAKntC,KAAKouE,WAAapuE,KAAKwrE,aAGvD6H,IACAA,EAAYtsE,MAAM2sE,OAAS,YAE1B1zE,KAAKgrE,iBAAkBhrE,KAAKirE,oBAAyBF,EAAO8B,aAAe7sE,KAAK4sE,SAIjF5sE,KAAK2zE,eAAkBrI,GAAYtrE,KAAKsqE,cAAgBS,EAAO59C,SAH/DntB,KAAK2zE,eAAiB3zE,KAAKwqE,YAAY,GAMtCoH,GAKD5xE,KAAKyyE,eAAeptE,OAASrF,KAAK0+B,aAAar5B,OAASrF,KAAK2zE,gBACxD3zE,KAAKyyE,eAAexsE,EAAIjG,KAAK0+B,aAAaz4B,GAAK8kE,EAAO3lD,OAAO9f,MAClEtF,KAAKyyE,eAAexsE,EAAIjG,KAAKyyE,eAAexsE,EAAIjG,KAAK2zE,eACrD3zE,KAAKyyE,eAAezsE,GAAK+kE,EAAO3lD,OAAO9f,MACvCtF,KAAKyyE,eAAentE,OAAUylE,EAAO3lD,OAAO9f,MAAQylE,EAAO3lD,OAAO9f,MAAQ,EAC1EtF,KAAKuX,MAAM+N,SAASonC,UAAU,IAAI,OAAK1sD,KAAKyyE,eAAezsE,EAAGhG,KAAKyyE,eAAexsE,EAAGjG,KAAKyyE,eAAentE,MAAOtF,KAAKyyE,eAAeptE,UATpIrF,KAAKoX,SAASzM,aAAa,SAAU3K,KAAK2zE,eAAe/hE,YAY7D,IAAI5L,EAAKy1C,EAAOz1C,EAAIytE,EAAW,EAC3BxtE,EAAIw1C,EAAOx1C,EAAIjG,KAAK2zE,gBAAmB7jD,EAAc2rB,EAAOp2C,OAASrF,KAAK2zE,gBAAkB,GAC5F3zE,KAAK4sE,UAAa7B,EAAO8B,aAAgB7sE,KAAKisE,YAAejsE,KAAKkrE,uBAClEllE,EAAKy1C,EAAOz1C,EAAIhG,KAAKurE,eAAiB/qB,EACtCv6C,EAAI8kE,EAAO/6C,OAAShwB,KAAK6rE,MAASpwB,EAAOx1C,EAAIknB,EAAU2C,EAAe2jD,EAAW,EAAK,GACjFh4B,EAAOx1C,EAAIknB,EAAUsmD,EAAW,IAEzC,IAAI39D,EAAO,eAAY9V,KAAKouE,WAAa,IAAMpuE,KAAKouE,WAAYrD,EAAOn+C,UAAW5sB,KAAKuX,MAAM2Y,WAAWopC,iBACpGsa,EAAc5zE,KAAgB,YAAI+qE,EAAO3lD,OAAO9f,MAASmuE,EAAW,EAAKh4B,EAAOn2C,OAAS,GAAKmuE,EAAWtmD,GAAWA,EAAUrX,EAAKxQ,OAClIssE,EAcD,eAAW,CAAE5rE,EAAGA,EAAGC,EAAGA,GAAK,YAAa,IAAI,OAAKwtE,EAAUA,GAAW,GAAIR,EAAc,YAAajzE,KAAKuX,MAAM+N,SAAU,IAAI,OAAKsuD,EAAY,EAAG,EAAG,KAbjJ5zE,KAAKisE,YAAelB,EAAO8B,aAAgB7sE,KAAKkrE,sBAOhD+H,EAAaz/B,QAAUxzC,KAAKkrE,qBAAuB+H,EAAaz/B,QAC3Du3B,EAAO8B,YAAc,EAAK7sE,KAAKuuE,YAA0CvuE,KAAK0rE,oBAAjC1rE,KAAKyrE,qBACvD4H,EAAY3uE,YAAY,eAAW,CAAEsB,EAAGA,EAAGC,EAAGA,GAAK,YAAa,IAAI,OAAKwtE,EAAUA,GAAW,GAAIR,EAAc,gBARhHjtE,EAAIy1C,EAAOz1C,EAAKy1C,EAAOn2C,MAAQ,EAC/BW,EAAIw1C,EAAOx1C,EAAKwtE,EAAW,EAAMtmD,EAAU,EAAK2C,EAChDmjD,EAAaz/B,QAAUxzC,KAAKyrE,qBAC5B4H,EAAY3uE,YAAY,eAAW,CAAEsB,EAAGA,EAAGC,EAAGA,GAAK,UAAW,IAAI,OAAKwtE,EAAUA,GAAW,GAAIR,EAAc,aAWtHjzE,KAAK8qE,cAAcz+D,KAAK,IAAI,OAAMrM,KAAKuuE,YAAsGvoE,EAAxFA,EAAIy1C,EAAOn2C,OAAS,GAAKmuE,EAAWtmD,GAAWA,EAAUrX,EAAKxQ,OAAoB,GAAXmuE,EAAoBxtE,EAAe,GAAXwtE,EAAgBA,EAAUA,IAE9KN,EAAWntE,EAAIA,EAAKytE,EAAW,EAAKtmD,EACpCgmD,EAAWltE,EAAIA,EAAK6P,EAAKzQ,OAAS,EAClC8tE,EAAW7nE,GAAKtL,KAAKknD,SAAW,cAChCisB,EAAW32D,KAAQxc,KAAKuuE,YAAuCvuE,KAAKouE,WAAa,KAA3C,KAAOpuE,KAAKouE,WAClD,IAAIz4D,EAAS3V,KAAKuX,MAAM2hC,MAAMl1C,QAAQ,SAAW,GAAKhE,KAAKuX,MAAM2hC,MAAMl1C,QAAQ,aAAe,EAAK,UAAY+mE,EAAOn+C,UAAUjX,OAAS3V,KAAKuX,MAAM2Y,WAAWopC,gBAAgB3jD,MAC3Ki8D,GAAY5xE,KAAK6zE,iBACjBV,EAAW32D,KAAQxc,KAAKuuE,YAAmEvuE,KAAK6zE,eAAiB,IAAM7zE,KAAK+rE,kBAAtF/rE,KAAK+rE,kBAAoB,IAAM/rE,KAAK6zE,iBAE1E9I,EAAO8B,aAAe7sE,KAAKkrE,wBAC3BkI,EAAkB,gBAAY77D,EAAM+N,SAAU6tD,EAAYpI,EAAOn+C,UAAWjX,EAAO09D,GAAa,GAAO,GAAO,GAAO,EAAO,KAAM,IAAI,OAAKO,EAAY,EAAG,EAAG,GAAI,KAAM,KAAM,KAAM,KAAM5zE,KAAKuX,MAAM2Y,WAAWopC,kBAGnNtzD,EAAImtE,EAAWntE,EAAImnB,EAAWsmD,EAAW,EAAK39D,EAAKxQ,OAC/CtF,KAAK4sE,UAAa7B,EAAO8B,aAAgB7sE,KAAKisE,aAC9CjmE,EAAKy1C,EAAOz1C,EAAIy1C,EAAOn2C,OAAStF,KAAKkrE,qBAAuBlrE,KAAKqrE,UAAY,GAAKrrE,KAAKurE,gBAAkBR,EAAO/6C,OAAkC,UAAzB+6C,EAAO2B,cAC5H1sE,KAAK2sE,gBAAgBrnE,MAAQtF,KAAKqrE,UAAY,IAEtD4H,EAAa3nE,GAAKkoE,EAClBP,EAAaz/B,QAAWu3B,EAAO8B,YAAyF,EAA1E7sE,KAAKuuE,YAAyCvuE,KAAKyrE,qBAAhCzrE,KAAK0rE,oBACjEkG,EAWD,eAAW,CAAE5rE,EAAGA,EAAGC,EAAGA,GAAK,aAAc,IAAI,OAAKwtE,EAAUA,GAAW,GAAIR,EAAc,aAAcjzE,KAAKuX,MAAM+N,SAAU,IAAI,OAAKsuD,EAAY,EAAG,EAAG,KAVnJ5zE,KAAKisE,YAAelB,EAAO8B,aAAgB7sE,KAAKkrE,qBAMhDmI,EAAY3uE,YAAY,eAAW,CAAEsB,EAAGA,EAAGC,EAAGA,GAAK,aAAc,IAAI,OAAKwtE,EAAUA,GAAW,GAAIR,EAAc,gBALjHjtE,EAAIy1C,EAAOz1C,EAAKy1C,EAAOn2C,MAAQ,EAC/BW,EAAIw1C,EAAOx1C,EAAIw1C,EAAOp2C,OAAUouE,EAAW,EAC3CJ,EAAY3uE,YAAY,eAAW,CAAEsB,EAAGA,EAAGC,EAAGA,GAAK,YAAa,IAAI,OAAKwtE,EAAUA,GAAW,GAAIR,EAAc,eASxHjzE,KAAK8qE,cAAcz+D,KAAK,IAAI,OAAMrM,KAAKuuE,YAAwGvoE,EAA1FA,GAAKy1C,EAAOn2C,OAAS,GAAKmuE,EAAWtmD,GAAWA,EAAUrX,EAAKxQ,OAAoB,GAAXmuE,GAAqBxtE,EAAe,GAAXwtE,EAAgBA,EAAUA,IAC3K7B,IAAa7G,EAAO8B,cAAe7sE,KAAKkrE,sBAKV,IAA3BlrE,KAAK+rE,mBAA2B/rE,KAAKw7C,eAAiBuvB,EAAO8B,aAAe7sE,KAAKkrE,wBACjFlrE,KAAK6zE,eAAiB7zE,KAAKouE,WAC3BpuE,KAAKw7C,cAAe,GAEnBuvB,EAAO8B,aAAgB7sE,KAAKkrE,sBAC7BlrE,KAAK6xE,cAAcD,EAAU,KAAM5xE,KAAK20B,YAAc,EAAG30B,KAAK20B,YAAao2C,IAR/EsI,EAAY1oE,aAAa,YAAa,aAAeipE,EAAf,SAWtC7I,EAAO8B,aAAe7sE,KAAKkrE,uBAC3BlrE,KAAK6xE,cAAcD,EAAUwB,EAAiBpzE,KAAK20B,YAAc,EAAG30B,KAAK20B,YAAao2C,IAG9FV,EAAWnqE,UAAU4zE,cAAgB,SAAUtJ,EAAa51C,GAExD,IADA,IAAIm/C,EAAM,EACD/yE,EAAI,EAAGA,EAAI4zB,EAAW5zB,IAC3B+yE,GAAOvJ,EAAYxpE,GAEvB,OAAO+yE,GAsBX1J,EAAWnqE,UAAU2xE,cAAgB,SAAUD,EAAUoC,EAAYj/C,EAAMk/C,EAAYlJ,GACnF,IAAIj1D,EAAQ9V,KAAKgrE,gBAAkBhrE,KAAKirE,kBAAsBl2C,EAAO/0B,KAAK8zE,cAAc9zE,KAAKwqE,YAAaz1C,GAAQ,EAAO/0B,KAAmB,eAAI+0B,EAC3I68C,IAAa5xE,KAAKgrE,iBAAkBhrE,KAAKirE,oBAC1CjrE,KAAKoX,SAASzM,aAAa,SAAU3K,KAAKwqE,YAAYz1C,GAAMnjB,YACxD5R,KAAKirE,mBAAqBjrE,KAAK4sE,WAAa7B,EAAO8B,aAAe7sE,KAAKisE,YACvEjsE,KAAKoX,SAASzM,aAAa,SAAU3K,KAAK0+B,aAAar5B,OAAOuM,aAGtE,IAAIsiE,EAAY,gBAAkBp+D,EAAO,IACzC,IAAK9V,KAAKgrE,iBAAmBhrE,KAAKkrE,uBAAyBlrE,KAAKmrE,qBAAuBnrE,KAAKisE,WAAY,CACpG,IAAI74D,EAAQpT,KAAK0qE,iBAAiB31C,EAAO/0B,KAAKwrE,YAC9C11D,EAAS9V,KAAKuuE,YAA8CvuE,KAAK0+B,aAAa14B,EAAIhG,KAAK4P,SAAYwD,EAAtEA,EAAQpT,KAAK0+B,aAAa14B,EACvD8P,EAAOA,EAAO,EAAI,EAAIA,EACtBo+D,GAAel0E,KAAKuuE,YAA+B,aAAhB,eAAgCz4D,EAAO,MAS9E,OAPK9V,KAAKuX,MAAMyN,cACZhlB,KAAKiuE,qBAAqBtjE,aAAa,YAAaupE,GAEnDl0E,KAAKuX,MAAMyN,eAAiB+lD,EAAO8B,cAAe7sE,KAAKkrE,uBACxD8I,EAAWnrB,YAAc,EAAe,IAAM7oD,KAAKouE,YAEvDpuE,KAAK20B,YAAcs/C,EACZn+D,GAUXu0D,EAAWnqE,UAAUi0E,WAAa,SAAUzlE,EAAO6kE,GAC/C,IAAIxI,EAAS/qE,KAAKuX,MAAMinB,eACpB41C,EAAgBxmE,SAASyd,eAAerrB,KAAKknD,SAAW,WACxDmtB,EAAezmE,SAASyd,eAAerrB,KAAKknD,SAAW,aACvD0qB,GAAW5xE,KAAKmrE,qBAA8BnrE,KAAKuX,MAAMyN,aACzDsvD,EAAYvJ,EAAO8B,aAAe7sE,KAAKkrE,qBACvCt9D,SAASyd,eAAerrB,KAAKknD,SAAW,eAAiB,KACzDnyB,EAAQg2C,EAAO8B,aAAe7sE,KAAKkrE,qBAAwBv5D,SAAS2iE,EAASzrB,YAAY5kD,MAAM,KAAK,GAAI,IACxGjE,KAAK20B,YACL4+C,GAAUx+C,EAAO,EACjB/0B,KAAK6xE,cAAcD,EAAU0C,EAAWv/C,EAAO,EAAKA,EAAO,EAAIg2C,IAEzDwI,GAAUx+C,EAAO/0B,KAAKouE,YAC5BpuE,KAAK6xE,cAAcD,EAAU0C,EAAUv/C,EAAOA,EAAO,EAAIg2C,IAEzD/qE,KAAK4sE,UAAa7B,EAAO8B,aAAgB7sE,KAAKkrE,uBAE9ClrE,KAAK20B,cAAgB30B,KAAKouE,WAAapuE,KAAKu0E,UAAUF,GAAgBr0E,KAAKw0E,UAAUH,GAEhE,IAArBr0E,KAAK20B,YAAoB30B,KAAKu0E,UAAUH,GAAiBp0E,KAAKw0E,UAAUJ,KAQhF/J,EAAWnqE,UAAUq0E,UAAY,SAAUE,GACvCA,EAAa9pE,aAAa,UAAW,MAOzC0/D,EAAWnqE,UAAUs0E,UAAY,SAAUC,GACvCA,EAAa9pE,aAAa,UAAW,MAgBzC0/D,EAAWnqE,UAAUqvE,WAAa,SAAUz1D,EAAQ46D,EAAQ30D,GACxD,OAAI/f,KAAKgrE,gBAAkBhrE,KAAKmrE,oBACrBuJ,EAAS30D,EAGT20D,EAAS56D,EAAOkT,YAU/Bq9C,EAAWnqE,UAAUy0E,KAAO,SAAUjmE,GAClC,IAAIrL,EAAQrD,KACRgG,EAAIhG,KAAKuX,MAAMsS,OACf5jB,EAAIjG,KAAKuX,MAAMuS,OACnB,GAAIpb,EAAMpO,OAAOuoD,YAAY7kD,QAAQ,QAAU,EAAG,CAC9C,IAAI4hD,EAAWl3C,EAAMpO,OAAOgL,GAAGrH,MAAMjE,KAAKknD,SAAW,UACrD,GAAwB,IAApBtB,EAASjlD,OAAc,CACvB,IAAI8L,EAAQkF,SAASi0C,EAAS,GAAI,IAC9BxiD,EAAUpD,KAAKuX,MAAMnU,QACpBwa,MAAMnR,KACHzM,KAAKuX,MAAMoS,SACX,gBAAc3pB,KAAKuX,MAAMnU,QAAQkI,GAAK,uBAEtCtL,KAAKgrE,eACL,gBAAYhrE,KAAKuX,MAAMD,OAAO7K,GAAOuD,KAAMhK,EAAGC,EAAG7C,EAAQoG,YAAapG,EAAQkI,GAAK,sBAAuB,eAAWtL,KAAKuX,MAAMnU,QAAQkI,GAAK,uBAG7I,gBAAYtL,KAAKuX,MAAMgE,cAAc,GAAG/D,OAAO/K,GAAOzG,EAAE4L,WAAY5L,EAAI,GAAIC,EAAI,GAAI7C,EAAQoG,YAAapG,EAAQkI,GAAK,sBAAuB,eAAWtL,KAAKuX,MAAMnU,QAAQkI,GAAK,8BAM5L,gBAActL,KAAKuX,MAAMnU,QAAQkI,GAAK,uBAEtCtL,KAAKuX,MAAMoS,UACX7c,aAAa9M,KAAK40E,cAClB50E,KAAK40E,cAAgBxnE,YAAW,WAAc,gBAAc/J,EAAMkU,MAAMnU,QAAQkI,GAAK,yBAA2B,OAGjH++D,EArmCoB,GA6mC3BwK,EAA+B,WAC/B,SAASA,EAAcr4D,EAAM4D,EAAM0L,EAAOnV,EAASnI,EAAMstB,EAAKga,EAAao9B,EAAkBlmD,EAAYF,EAAawZ,GAClHtmC,KAAK2tB,SAAW,CAAE3nB,EAAG,EAAGC,EAAG,GAC3BjG,KAAKwsB,eAAiB,GACtBxsB,KAAKwc,KAAOA,EACZxc,KAAKogB,KAAOA,EACZpgB,KAAK8rB,MAAQA,EACb9rB,KAAK87B,IAAMA,EACX97B,KAAK2W,QAAUA,EACf3W,KAAKwO,KAAOA,EACZxO,KAAKkzE,iBAAmBA,EACxBlzE,KAAK81C,YAAcA,EACnB91C,KAAKgtB,WAAaA,EAClBhtB,KAAK8sB,YAAcA,EACnB9sB,KAAKsmC,UAAYA,EAErB,OAAOuuC,EAhBuB,I,kCC1vClC,IAAMC,EAAQ,CACVC,QAAS,SAAUj6C,EAAMk6C,GAErB,OADAl6C,EAAKm6C,QAAQn6C,EAAKo6C,UAAYF,GACvBl6C,GAGXq6C,mBAAoB,SAAUltD,EAAWC,GACrC,GAAI7N,KAAKC,MAAM2N,IAAc5N,KAAKC,MAAM4N,GACpC,MAAM,IAAIktD,MAAM,6EAGpBntD,EAAY,IAAI5N,KAAK4N,GACrBC,EAAU,IAAI7N,KAAK6N,GAEnB,IAAImtD,EAAaptD,EAAUqtD,cAAcC,WAAWC,UAAU,GAC1DC,EAAYz1E,KAAK01E,kBAAkBztD,EAAWC,GAC9CytD,EAAkB,KAgDtB,OA7CI1tD,EAAUqtD,gBAAkBptD,EAAQotD,eAEhCG,GAAa,IAAMA,GAAa,KAChCxtD,EAAYjoB,KAAK+0E,QAAQ9sD,EAAW,GACpC0tD,EAAkB1tD,EAAU2tD,eAAe,UAAW,CAAEC,MAAO,UAAa,IAAMR,GAIlFI,GAAa,IAAMA,GAAa,KAChCxtD,EAAYjoB,KAAK+0E,QAAQ9sD,EAAW,GAGhC0tD,EAD+B,IAA/B31E,KAAK81E,WAAW7tD,GACE,MAAQotD,EACY,IAA/Br1E,KAAK81E,WAAW7tD,GACL,MAAQotD,EACY,IAA/Br1E,KAAK81E,WAAW7tD,GACL,MAAQotD,EAER,MAAQA,GAK9BI,GAAa,KAAOA,GAAa,MACjCxtD,EAAYjoB,KAAK+0E,QAAQ9sD,EAAW,GAE4B,QAA5DA,EAAU2tD,eAAe,UAAW,CAAEC,MAAO,YAC7CF,EAAkB,OAASN,IAK/BI,GAAa,KAAOA,GAAa,MACjCE,EAAkB,OAASN,IAExBptD,EAAUqtD,cAAgB,IAAMptD,EAAQotD,eAC3CG,GAAa,KAAOA,GAAa,MACjCxtD,EAAYjoB,KAAK+0E,QAAQ9sD,EAAW,GAE4B,QAA5DA,EAAU2tD,eAAe,UAAW,CAAEC,MAAO,YAC7CF,EAAkB,OAASN,IAKhCM,GAGXD,kBAAmB,SAAUztD,EAAWC,GACpC,IAAIpI,EAAS3W,KAAKC,MAAMD,KAAK6a,KAAKiE,EAAYC,GAAW,QAA0B,EACnF,OAAOpI,GAEXi2D,sBAAuB,SAAU9tD,EAAWC,GACxC,QAAiB3c,GAAb0c,QAAqC1c,GAAX2c,EAC1B,OAAO,EAEX,IAAInI,EAAQ,EAEZkI,EAAU+tD,SAAS,EAAG,EAAG,EAAG,GAC5B9tD,EAAQ8tD,SAAS,EAAG,EAAG,EAAG,GAE1B,IAAMC,EAAU,IAAI57D,KAAK4N,EAAUG,WACnC,MAAO6tD,GAAW/tD,EAAS,CACvB,IAAMguD,EAAYD,EAAQl7C,SACR,IAAdm7C,GAAiC,IAAdA,GAAiBn2D,IACxCk2D,EAAQhB,QAAQgB,EAAQf,UAAY,GAExC,OAAOn1D,GAEX+1D,WAAY,SAAUh7C,GAGlB,OAFAA,EAAO,IAAIzgB,KAAKygB,GAET3xB,KAAK6gC,OAAOlP,EAAKq7C,WAAa,GAAK,KAInCrB,U,sWCxFX,EAA6B,WAE7B,SAASsB,EAAYC,GAEjBr2E,KAAKs2E,QAAU,6BACft2E,KAAKu2E,OAASF,EAwYlB,OApYAD,EAAYl2E,UAAUs2E,eAAiB,SAAUrzE,EAAS5C,GACtD,OAAO4C,EAAQ5C,IAQnB61E,EAAYl2E,UAAUozC,UAAY,SAAUnwC,GAUxC,OATI,eAAkBA,EAAQmI,MAC1BnI,EAAQmI,GAAKtL,KAAKu2E,OAAS,QAE/Bv2E,KAAKy2E,OAAS7oE,SAASyd,eAAeloB,EAAQmI,IAC1C,eAAkBsC,SAASyd,eAAeloB,EAAQmI,OAClDtL,KAAKy2E,OAAS7oE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,QAEzDt2E,KAAKy2E,OAASz2E,KAAK02E,qBAAqBvzE,EAASnD,KAAKy2E,QACtDz2E,KAAK22E,WAAWxzE,EAAQmC,MAAOnC,EAAQkC,QAChCrF,KAAKy2E,QAGhBL,EAAYl2E,UAAUy2E,WAAa,SAAUrxE,EAAOD,GAChD,IAAIjC,EAAUwK,SAASyd,eAAerrB,KAAKu2E,QACvCzgE,EAAQ,eAAkB1S,GAA6C,KAAlCA,EAAQgE,wBAC7C,eAAkBpH,KAAKsF,QAAUtF,KAAKsF,OAAS,EAC/CtF,KAAKy2E,OAAO9rE,aAAa,QAASrF,EAAQA,EAAMsM,WAAakE,EAAKxQ,MAAMsM,YAGxE5R,KAAKy2E,OAAO9rE,aAAa,QAAS3K,KAAKsF,MAAMsM,YAE7C,eAAkB5R,KAAKqF,SAAWrF,KAAKqF,QAAU,EACjDrF,KAAKy2E,OAAO9rE,aAAa,SAAUtF,EAASA,EAAOuM,WAAa,OAGhE5R,KAAKy2E,OAAO9rE,aAAa,SAAU3K,KAAKqF,OAAOuM,aASvDwkE,EAAYl2E,UAAUsmC,SAAW,SAAUrjC,GACvC,IAAIyzE,EAAOhpE,SAASyd,eAAeloB,EAAQmI,IAK3C,OAJa,OAATsrE,IACAA,EAAOhpE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,SAElDM,EAAO52E,KAAK02E,qBAAqBvzE,EAASyzE,GACnCA,GAQXR,EAAYl2E,UAAU6lC,SAAW,SAAU5iC,GACvC,IAAI0zE,EAAOjpE,SAASyd,eAAeloB,EAAQmI,IAK3C,OAJa,OAATurE,IACAA,EAAOjpE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,SAElDO,EAAO72E,KAAK02E,qBAAqBvzE,EAAS0zE,GACnCA,GAQXT,EAAYl2E,UAAUogD,cAAgB,SAAUn9C,GAC5C,IAAI2zE,EAAYlpE,SAASyd,eAAeloB,EAAQmI,IAKhD,OAJkB,OAAdwrE,IACAA,EAAYlpE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,SAEvDQ,EAAY92E,KAAK02E,qBAAqBvzE,EAAS2zE,GACxCA,GAQXV,EAAYl2E,UAAU62E,WAAa,SAAU5zE,GACzC,IAAI6zE,EAASppE,SAASyd,eAAeloB,EAAQmI,IAK7C,OAJe,OAAX0rE,IACAA,EAASppE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,WAEpDU,EAASh3E,KAAK02E,qBAAqBvzE,EAAS6zE,GACrCA,GAQXZ,EAAYl2E,UAAU+2E,aAAe,SAAU9zE,GAC3C,IAAI+zE,EAAWtpE,SAASyd,eAAeloB,EAAQmI,IAK/C,OAJiB,OAAb4rE,IACAA,EAAWtpE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,aAEtDY,EAAWl3E,KAAK02E,qBAAqBvzE,EAAS+zE,GACvCA,GAQXd,EAAYl2E,UAAUi3E,YAAc,SAAUh0E,GAC1C,IAAIi0E,EAAUxpE,SAASyd,eAAeloB,EAAQmI,IAK9C,OAJgB,OAAZ8rE,IACAA,EAAUxpE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,YAErDc,EAAUp3E,KAAK02E,qBAAqBvzE,EAASi0E,GACtCA,GAQXhB,EAAYl2E,UAAUm3E,YAAc,SAAUl0E,GAC1C,IAAIm0E,EAAU1pE,SAASyd,eAAeloB,EAAQmI,IAK9C,OAJgB,OAAZgsE,IACAA,EAAU1pE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,YAErDgB,EAAUt3E,KAAK02E,qBAAqBvzE,EAASm0E,GACtCA,GAQXlB,EAAYl2E,UAAU+gD,UAAY,SAAU99C,GACxC,IAAIo0E,EAAM3pE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,SAcjD,OAbAiB,EAAIC,eAAe,KAAM,SAAUr0E,EAAQkC,OAAOuM,YAClD2lE,EAAIC,eAAe,KAAM,QAASr0E,EAAQmC,MAAMsM,YAChD2lE,EAAIC,eAAe,+BAAgC,OAAQr0E,EAAQs0E,MACnEF,EAAIC,eAAe,KAAM,IAAKr0E,EAAQ6C,EAAE4L,YACxC2lE,EAAIC,eAAe,KAAM,IAAKr0E,EAAQ8C,EAAE2L,YACxC2lE,EAAIC,eAAe,KAAM,KAAMr0E,EAAQmI,IACvCisE,EAAIC,eAAe,KAAM,aAAcr0E,EAAQ0xC,YAC1C,eAAkB70C,KAAKw2E,eAAerzE,EAAS,eAChDo0E,EAAIC,eAAe,KAAM,YAAax3E,KAAKw2E,eAAerzE,EAAS,cAElE,eAAkBA,EAAQu0E,sBAC3BH,EAAIC,eAAe,KAAM,sBAAuBr0E,EAAQu0E,qBAErDH,GASXnB,EAAYl2E,UAAUy3E,WAAa,SAAUx0E,EAAS+kC,GAClD,IAAI1rB,EAAO5O,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,QAKlD,OAJA95D,EAAOxc,KAAK02E,qBAAqBvzE,EAASqZ,GACrC,eAAkB0rB,KACnB1rB,EAAKqsC,YAAc3gB,GAEhB1rB,GASX45D,EAAYl2E,UAAU03E,YAAc,SAAUz0E,EAAS+kC,GACnD,IAAI2vC,EAAQjqE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,SAKnD,OAJAuB,EAAQ73E,KAAK02E,qBAAqBvzE,EAAS00E,GACtC,eAAkB3vC,KACnB2vC,EAAMhvB,YAAc3gB,GAEjB2vC,GAQXzB,EAAYl2E,UAAU43E,YAAc,SAAUt7D,GAC1C,IAAIwT,EAAQpiB,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,SAEnD,OADAtmD,EAAM64B,YAAcrsC,EACbwT,GAOXomD,EAAYl2E,UAAU8vE,WAAa,WAC/B,IAAI+H,EAAOnqE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,QAClD,OAAOyB,GAQX3B,EAAYl2E,UAAUsyE,eAAiB,SAAUrvE,GAC7C,IAAI60E,EAAWpqE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,YAEtD,OADA0B,EAAWh4E,KAAK02E,qBAAqBvzE,EAAS60E,GACvCA,GAQX5B,EAAYl2E,UAAU+3E,oBAAsB,SAAU90E,GAClD,IAAI+0E,EAAgBtqE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,iBAE3D,OADA4B,EAAgBl4E,KAAK02E,qBAAqBvzE,EAAS+0E,GAC5CA,GAQX9B,EAAYl2E,UAAUgmB,YAAc,SAAU/iB,GAC1C,IAAI6uB,EAAQpkB,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,KAEnD,OADAtkD,EAAQhyB,KAAK02E,qBAAqBvzE,EAAS6uB,GACpCA,GASXokD,EAAYl2E,UAAUi4E,cAAgB,SAAUh1E,EAASC,GACrD,IAAI4rD,EAAUphD,SAASuiE,gBAAgBnwE,KAAKs2E,QAASlzE,GAErD,OADA4rD,EAAUhvD,KAAK02E,qBAAqBvzE,EAAS6rD,GACtCA,GAUXonB,EAAYl2E,UAAUk4E,qBAAuB,SAAUh7D,EAAQpN,EAAM7M,GACjE,IAAIyZ,EACJ,GAAK,eAAkBQ,EAAO,GAAGi7D,WAa7Bz7D,EAAYQ,EAAO,GAAGzH,MAAM/D,eAba,CACzC,IAAI0mE,EAAa,CACb,GAAMt4E,KAAKu2E,OAAS,IAAMvmE,EAAO,iBACjC,GAAM7M,EAAQo1E,GAAK,IACnB,GAAMp1E,EAAQq1E,GAAK,IACnB,EAAKr1E,EAAQvC,EAAI,IACjB,GAAMuC,EAAQs1E,GAAK,IACnB,GAAMt1E,EAAQu1E,GAAK,KAEvB14E,KAAK24E,aAAa,iBAAkBL,EAAYl7D,GAChDR,EAAY,QAAU5c,KAAKu2E,OAAS,IAAMvmE,EAAO,kBAKrD,OAAO4M,GAUXw5D,EAAYl2E,UAAU04E,qBAAuB,SAAUx7D,EAAQpN,EAAM7M,GACjE,IAAIyZ,EACJ,GAAK,eAAkBQ,EAAO,GAAGi7D,WAY7Bz7D,EAAYQ,EAAO,GAAGzH,MAAM/D,eAZa,CACzC,IAAI0mE,EAAa,CACb,GAAMt4E,KAAKu2E,OAAS,IAAMvmE,EAAO,iBACjC,GAAM7M,EAAQqiC,GAAK,IACnB,GAAMriC,EAAQuiC,GAAK,IACnB,GAAMviC,EAAQsiC,GAAK,IACnB,GAAMtiC,EAAQwiC,GAAK,KAEvB3lC,KAAK24E,aAAa,iBAAkBL,EAAYl7D,GAChDR,EAAY,QAAU5c,KAAKu2E,OAAS,IAAMvmE,EAAO,kBAKrD,OAAO4M,GAUXw5D,EAAYl2E,UAAUy4E,aAAe,SAAUE,EAAc11E,EAASia,GAClE,IAAI26D,EAAO/3E,KAAKgwE,aACZ8I,EAAWlrE,SAASuiE,gBAAgBnwE,KAAKs2E,QAASuC,GACtDC,EAAW94E,KAAK02E,qBAAqBvzE,EAAS21E,GAC9C,IAAK,IAAI93E,EAAI,EAAGA,EAAIoc,EAAOzc,OAAQK,IAAK,CACpC,IAAI+3E,EAASnrE,SAASuiE,gBAAgBnwE,KAAKs2E,QAAS,QACpDyC,EAAOpuE,aAAa,SAAUyS,EAAOpc,GAAGq3E,WACxCU,EAAOpuE,aAAa,aAAcyS,EAAOpc,GAAG2U,OAC5CojE,EAAOpuE,aAAa,eAAgByS,EAAOpc,GAAGwyC,QAAWp2B,EAAOpc,GAAU,QAAI,KACzE,eAAkBoc,EAAOpc,GAAG+F,SAC7BgyE,EAAOhyE,MAAMwsC,QAAUn2B,EAAOpc,GAAG+F,OAErC+xE,EAASp0E,YAAYq0E,GAGzB,OADAhB,EAAKrzE,YAAYo0E,GACVf,GAQX3B,EAAYl2E,UAAU84E,aAAe,SAAU71E,GAC3C,IAAI40E,EAAO/3E,KAAKgwE,aACZgI,EAAWh4E,KAAKwyE,eAAe,CAAE,GAAMrvE,EAAQmI,KACnDnI,EAAQmI,GAAKnI,EAAQmI,GAAK,QAC1B,IAAIkjB,EAAOxuB,KAAKsgD,cAAcn9C,GAG9B,OAFA60E,EAAStzE,YAAY8pB,GACrBupD,EAAKrzE,YAAYszE,GACVD,GAQX3B,EAAYl2E,UAAU+4E,qBAAuB,SAAU91E,GACnD,IAAI40E,EAAO/3E,KAAKgwE,aACZgI,EAAWh4E,KAAKwyE,eAAe,CAAE,GAAMrvE,EAAQmI,KACnDnI,EAAQmI,GAAKnI,EAAQmI,GAAK,UAC1B,IAAI0rE,EAASh3E,KAAK+2E,WAAW5zE,GAG7B,OAFA60E,EAAStzE,YAAYsyE,GACrBe,EAAKrzE,YAAYszE,GACVD,GASX3B,EAAYl2E,UAAUw2E,qBAAuB,SAAUvzE,EAASC,GAE5D,IADA,IAAIgS,EAAO3V,OAAO2V,KAAKjS,GACdnC,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IACb,UAAZoU,EAAKpU,GACLoC,EAAQ2D,MAAMwsC,QAAUpwC,EAAQiS,EAAKpU,IAGrCoC,EAAQuH,aAAayK,EAAKpU,GAAImC,EAAQiS,EAAKpU,KAGnD,OAAOoC,GAMXgzE,EAAYl2E,UAAUg5E,aAAe,WACjC,OAAO,MAEJ9C,EA7YqB,GCI5B,EAAgC,WAEhC,SAAS+C,EAAe9C,GACpBr2E,KAAKu2E,OAASF,EAggBlB,OA5fA8C,EAAej5E,UAAUs2E,eAAiB,SAAUrzE,EAAS5C,GACzD,OAAO4C,EAAQ5C,IASnB44E,EAAej5E,UAAUg5E,aAAe,SAAU/1E,GAC9C,IAAIi2E,EAAYxrE,SAASrJ,cAAc,UAKvC,OAJA60E,EAAUzuE,aAAa,KAAM3K,KAAKu2E,OAAS,WAC3Cv2E,KAAKq5E,IAAMD,EAAUE,WAAW,MAChCt5E,KAAKo5E,UAAYA,EACjBp5E,KAAKu5E,cAAcp2E,EAAQmC,MAAOnC,EAAQkC,QACnCrF,KAAKo5E,WAShBD,EAAej5E,UAAUq5E,cAAgB,SAAUj0E,EAAOD,GACtD,IAAIjC,EAAUwK,SAASyd,eAAerrB,KAAKu2E,QACvCzgE,EAAQ,eAAkB1S,GAA6C,KAAlCA,EAAQgE,wBAC7C,eAAkBpH,KAAKsF,OACvBtF,KAAKo5E,UAAUzuE,aAAa,QAASrF,EAAQA,EAAMsM,WAAakE,EAAKxQ,MAAMsM,YAG3E5R,KAAKo5E,UAAUzuE,aAAa,QAAS3K,KAAKsF,MAAMsM,YAEhD,eAAkB5R,KAAKqF,QACvBrF,KAAKo5E,UAAUzuE,aAAa,SAAUtF,EAASA,EAAOuM,WAAa,OAGnE5R,KAAKo5E,UAAUzuE,aAAa,SAAU3K,KAAKqF,OAAOuM,aAI1DunE,EAAej5E,UAAUs5E,cAAgB,SAAUr2E,GAC/CnD,KAAKq5E,IAAII,UAAYz5E,KAAKw2E,eAAerzE,EAAS,gBAClD,IAAImjC,EAAYtmC,KAAKw2E,eAAerzE,EAAS,oBAC7C,IAAK,eAAkBmjC,GAAY,CAC/B,IAAIozC,EAAkBpzC,EAAUriC,MAAM,KACtCjE,KAAKq5E,IAAIM,YAAY,CAAChoE,SAAS+nE,EAAgB,GAAI,IAAK/nE,SAAS+nE,EAAgB,GAAI,MAEzF15E,KAAKq5E,IAAIO,YAAc55E,KAAKw2E,eAAerzE,EAAS,WAQxDg2E,EAAej5E,UAAU6lC,SAAW,SAAU5iC,GAC1CnD,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIS,YACT95E,KAAKq5E,IAAII,UAAYz5E,KAAKw2E,eAAerzE,EAAS,gBAClDnD,KAAKq5E,IAAIO,YAAcz2E,EAAQ42E,OAC/B/5E,KAAKq5E,IAAIW,OAAO72E,EAAQqiC,GAAIriC,EAAQuiC,IACpC1lC,KAAKq5E,IAAIY,OAAO92E,EAAQsiC,GAAItiC,EAAQwiC,IACpC3lC,KAAKq5E,IAAIU,SACT/5E,KAAKq5E,IAAIa,WASbf,EAAej5E,UAAUogD,cAAgB,SAAUn9C,EAASg3E,GACxD,IAAIC,EAAYp6E,KAAKq5E,IACjBj5B,EAAej9C,EAAQk3E,GAsB3B,OArBAr6E,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIS,YACLK,GACAn6E,KAAKq5E,IAAInF,UAAUiG,EAAgB,GAAIA,EAAgB,IAE3Dn6E,KAAKq5E,IAAIiB,YAAct6E,KAAKw2E,eAAerzE,EAAS,WACpDnD,KAAKw5E,cAAcr2E,GACnBnD,KAAKq5E,IAAI7qD,KAAKrrB,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQmC,MAAOnC,EAAQkC,QACtC,OAAjB+6C,GAAyBA,GAAgB,EACzCpgD,KAAKu6E,iBAAiBp3E,IAGD,SAAjBA,EAAQid,OACRjd,EAAQid,KAAO,eAEnBpgB,KAAKq5E,IAAImB,UAAYr3E,EAAQid,KAC7BpgB,KAAKq5E,IAAIoB,SAASt3E,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQmC,MAAOnC,EAAQkC,QAC/DrF,KAAKq5E,IAAIU,UAEb/5E,KAAKq5E,IAAIa,UACTl6E,KAAKq5E,IAAMe,EACHp6E,KAAc,WAG1Bm5E,EAAej5E,UAAUq6E,iBAAmB,SAAUp3E,GAClD,IAAIi9C,EAAej9C,EAAQk3E,GACvBr0E,EAAI7C,EAAQ6C,EACZC,EAAI9C,EAAQ8C,EACZX,EAAQnC,EAAQmC,MAChBD,EAASlC,EAAQkC,OACA,SAAjBlC,EAAQid,OACRjd,EAAQid,KAAO,eAEnBpgB,KAAKq5E,IAAImB,UAAYr3E,EAAQid,KACzB9a,EAAQ,EAAI86C,IACZA,EAAe96C,EAAQ,GAEvBD,EAAS,EAAI+6C,IACbA,EAAe/6C,EAAS,GAE5BrF,KAAKq5E,IAAIS,YACT95E,KAAKq5E,IAAIW,OAAOh0E,EAAIV,EAAQ86C,EAAcn6C,GAC1CjG,KAAKq5E,IAAIqB,MAAM10E,EAAIV,EAAOW,EAAGD,EAAIV,EAAOW,EAAIZ,EAAQ+6C,GACpDpgD,KAAKq5E,IAAIqB,MAAM10E,EAAIV,EAAOW,EAAIZ,EAAQW,EAAGC,EAAIZ,EAAQ+6C,GACrDpgD,KAAKq5E,IAAIqB,MAAM10E,EAAGC,EAAIZ,EAAQW,EAAGC,EAAGm6C,GACpCpgD,KAAKq5E,IAAIqB,MAAM10E,EAAGC,EAAGD,EAAIV,EAAOW,EAAGm6C,GACnCpgD,KAAKq5E,IAAIsB,YACT36E,KAAKq5E,IAAIj5D,OACTpgB,KAAKq5E,IAAIU,UASbZ,EAAej5E,UAAUsmC,SAAW,SAAUrjC,EAASg3E,GACnD,IAAIvD,EAAOzzE,EAAQ5D,EACfq7E,EAAYhE,EAAK3yE,MAAM,KACvBipB,EAAcltB,KAAKw2E,eAAerzE,EAAS,gBAC3Ci3E,EAAYp6E,KAAKq5E,IACjBwB,GAAO,EACX76E,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIS,YACLK,GACAn6E,KAAKq5E,IAAInF,UAAUiG,EAAgB,GAAIA,EAAgB,IAE3Dn6E,KAAKq5E,IAAIiB,YAAcn3E,EAAQqwC,QAAUrwC,EAAQqwC,QAAUxzC,KAAKw2E,eAAerzE,EAAS,gBACxFnD,KAAKw5E,cAAcr2E,GACnB,IAAK,IAAInC,EAAI,EAAGA,EAAI45E,EAAUj6E,OAAQK,GAAQ,EAAG,CAC7C,IAAIwkC,EAAK1+B,WAAW8zE,EAAU55E,EAAI,IAC9B0kC,EAAK5+B,WAAW8zE,EAAU55E,EAAI,IAClC,OAAQ45E,EAAU55E,IACd,IAAK,IACImC,EAAQ23E,QAAW33E,EAAQo1E,IAC5Bv4E,KAAKq5E,IAAIW,OAAOx0C,EAAIE,GAExB,MACJ,IAAK,IACIviC,EAAQ23E,QACT96E,KAAKq5E,IAAIY,OAAOz0C,EAAIE,GAExB,MACJ,IAAK,IACD,IAAIq1C,EAAKj0E,WAAW8zE,EAAU55E,EAAI,IAC9Bg6E,EAAKl0E,WAAW8zE,EAAU55E,EAAI,IAClChB,KAAKq5E,IAAI4B,iBAAiBz1C,EAAIE,EAAIq1C,EAAIC,GACtCh6E,GAAQ,EACR,MACJ,IAAK,IACD,IAAIk6E,EAAKp0E,WAAW8zE,EAAU55E,EAAI,IAC9Bm6E,EAAKr0E,WAAW8zE,EAAU55E,EAAI,IAC9Bo6E,EAAKt0E,WAAW8zE,EAAU55E,EAAI,IAC9Bq6E,EAAKv0E,WAAW8zE,EAAU55E,EAAI,IAClChB,KAAKq5E,IAAIiC,cAAc91C,EAAIE,EAAIw1C,EAAIC,EAAIC,EAAIC,GAC3Cr6E,GAAQ,EACR,MACJ,IAAK,IACImC,EAAQ23E,OAUJD,IACL76E,KAAKq5E,IAAIkC,IAAIp4E,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQuiB,OAAQviB,EAAQ+Z,MAAO/Z,EAAQga,IAAKha,EAAQq4E,kBACvFx7E,KAAKq5E,IAAIkC,IAAIp4E,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQ23E,OAAQ33E,EAAQga,IAAKha,EAAQ+Z,OAAQ/Z,EAAQq4E,kBACxFX,GAAO,GAZH13E,EAAQo1E,GACRv4E,KAAKq5E,IAAIkC,IAAIp4E,EAAQo1E,GAAIp1E,EAAQq1E,GAAIr1E,EAAQuiB,OAAQ,EAAG,EAAIvc,KAAK2gC,GAAI3mC,EAAQq4E,mBAG7Ex7E,KAAKq5E,IAAIW,OAAO72E,EAAQ6C,EAAG7C,EAAQ8C,GACnCjG,KAAKq5E,IAAIkC,IAAIp4E,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQuiB,OAAQviB,EAAQ+Z,MAAO/Z,EAAQga,IAAKha,EAAQq4E,kBACvFx7E,KAAKq5E,IAAIY,OAAO92E,EAAQ6C,EAAG7C,EAAQ8C,IAQ3CjF,GAAQ,EACR,MACJ,IAAK,IACL,IAAK,IACDhB,KAAKq5E,IAAIsB,YAET35E,GAAQ,EACR,OAYZ,MATqB,SAAjBmC,EAAQid,WAAoC7U,IAAjBpI,EAAQid,OACnCpgB,KAAKq5E,IAAImB,UAAYr3E,EAAQid,KAC7BpgB,KAAKq5E,IAAIj5D,QAET8M,EAAc,GACdltB,KAAKq5E,IAAIU,SAEb/5E,KAAKq5E,IAAIa,UACTl6E,KAAKq5E,IAAMe,EACJp6E,KAAKo5E,WAahBD,EAAej5E,UAAUy3E,WAAa,SAAUx0E,EAAS+kC,EAAOuzC,EAAQC,EAAQC,EAAIC,GAChF,IAAI5lE,EAAahW,KAAKw2E,eAAerzE,EAAS,eACzC,eAAkB6S,IAA4C,YAA7BA,EAAWuM,gBAC7CvM,EAAa,UAEjB,IAAI6lE,EAAW77E,KAAKw2E,eAAerzE,EAAS,aACxC8S,EAAajW,KAAKw2E,eAAerzE,EAAS,eAC1C4S,EAAY/V,KAAKw2E,eAAerzE,EAAS,cAAcof,cACvDu5D,EAAQ/lE,EAAY,IAAMC,EAAa,IAAM6lE,EAAW,IAAM5lE,EAC9D40B,EAAS7qC,KAAKw2E,eAAerzE,EAAS,eACtCqwC,OAA8BjoC,IAApBpI,EAAQqwC,QAAwBrwC,EAAQqwC,QAAU,EAYhE,GAXe,WAAX3I,IACAA,EAAS,UAEb7qC,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAImB,UAAYr3E,EAAQid,KAC7BpgB,KAAKq5E,IAAIyC,KAAOA,EAChB97E,KAAKq5E,IAAIhd,UAAYxxB,EACrB7qC,KAAKq5E,IAAIiB,YAAc9mC,EACnBrwC,EAAQ44E,WACR/7E,KAAKq5E,IAAI2C,aAAe74E,EAAQ44E,WAE/BH,EAAS,CACV,IAAIK,EAAW,EACfj8E,KAAKq5E,IAAInF,UAAU/wE,EAAQ6C,EAAKi2E,EAAW,GAAMR,GAAkB,GAAIt4E,EAAQ8C,GAAKy1E,GAAkB,IACtG17E,KAAKq5E,IAAI6C,OAAO/4E,EAAQ0oC,cAAgB1iC,KAAK2gC,GAAK,KAItD,OAFA9pC,KAAKq5E,IAAI8C,SAASj0C,EAAO0zC,EAAUz4E,EAAQ6C,EAAI,EAAG41E,EAAUD,EAAK,GACjE37E,KAAKq5E,IAAIa,UACFl6E,KAAKo5E,WAShBD,EAAej5E,UAAU62E,WAAa,SAAU5zE,EAASg3E,GACrD,IAAIC,EAAYp6E,KAAKq5E,IAcrB,OAbAr5E,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIS,YACT95E,KAAKq5E,IAAIkC,IAAIp4E,EAAQo1E,GAAIp1E,EAAQq1E,GAAIr1E,EAAQvC,EAAG,EAAG,EAAIuI,KAAK2gC,IAC5D9pC,KAAKq5E,IAAImB,UAAYr3E,EAAQid,KAC7BpgB,KAAKq5E,IAAIiB,YAAcn3E,EAAQqwC,QAC/BxzC,KAAKq5E,IAAIj5D,OACL+5D,GACAn6E,KAAKq5E,IAAInF,UAAUiG,EAAgB,GAAIA,EAAgB,IAE3Dn6E,KAAKw5E,cAAcr2E,GACnBnD,KAAKq5E,IAAIU,SACT/5E,KAAKq5E,IAAIa,UACTl6E,KAAKq5E,IAAMe,EACJp6E,KAAKo5E,WAQhBD,EAAej5E,UAAU+2E,aAAe,SAAU9zE,GAC9CnD,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIS,YAET,IADA,IAAItiE,EAASrU,EAAQqU,OAAOvT,MAAM,KACzBjD,EAAI,EAAGA,EAAIwW,EAAO7W,OAAS,EAAGK,IAAK,CACxC,IAAIsX,EAAQd,EAAOxW,GAAGiD,MAAM,KACxB+B,EAAIc,WAAWwR,EAAM,IACrBrS,EAAIa,WAAWwR,EAAM,IACf,IAANtX,EACAhB,KAAKq5E,IAAIW,OAAOh0E,EAAGC,GAGnBjG,KAAKq5E,IAAIY,OAAOj0E,EAAGC,GAG3BjG,KAAKq5E,IAAII,UAAYz5E,KAAKw2E,eAAerzE,EAAS,gBAClDnD,KAAKq5E,IAAIO,YAAcz2E,EAAQ42E,OAC/B/5E,KAAKq5E,IAAIU,SACT/5E,KAAKq5E,IAAIa,WASbf,EAAej5E,UAAUi3E,YAAc,SAAUh0E,EAASg3E,GACtD,IAAIC,EAAYp6E,KAAKq5E,IACjB+C,EAAgBjzE,KAAKwS,IAAIxY,EAAQk3E,GAAIl3E,EAAQk5E,IAC7C7xD,EAASrnB,EAAQk3E,GAAK+B,EACtB3xD,EAAStnB,EAAQk5E,GAAKD,EAC1Bp8E,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIS,YACT95E,KAAKq5E,IAAInF,UAAU/wE,EAAQo1E,GAAIp1E,EAAQq1E,IACnC2B,GACAn6E,KAAKq5E,IAAInF,UAAUiG,EAAgB,GAAIA,EAAgB,IAE3Dn6E,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAIiD,MAAM9xD,EAAQC,GACvBzqB,KAAKq5E,IAAIkC,IAAI,EAAG,EAAGa,EAAe,EAAG,EAAIjzE,KAAK2gC,IAAI,GAClD9pC,KAAKq5E,IAAImB,UAAYr3E,EAAQid,KAC7BpgB,KAAKq5E,IAAIj5D,OACTpgB,KAAKq5E,IAAIa,UACTl6E,KAAKq5E,IAAII,UAAYz5E,KAAKw2E,eAAerzE,EAAS,gBAClDnD,KAAKq5E,IAAIO,YAAcz2E,EAAQ42E,OAC/B/5E,KAAKq5E,IAAIU,SACT/5E,KAAKq5E,IAAIa,UACTl6E,KAAKq5E,IAAMe,GAQfjB,EAAej5E,UAAU+gD,UAAY,SAAU99C,GAC3CnD,KAAKq5E,IAAIQ,OACT,IAAI0C,EAAW,IAAIC,MACd,eAAkBr5E,EAAQs0E,QAC3B8E,EAASE,IAAMt5E,EAAQs0E,KACvBz3E,KAAKq5E,IAAIp4B,UAAUs7B,EAAUp5E,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQmC,MAAOnC,EAAQkC,SAE9ErF,KAAKq5E,IAAIa,WAQbf,EAAej5E,UAAU04E,qBAAuB,SAAUx7D,GACtD,IAAIs/D,EACC,eAAkBt/D,EAAO,GAAGi7D,aAC7BqE,EAAa18E,KAAKq5E,IAAIT,qBAAqB,EAAG,EAAG,EAAG54E,KAAKo5E,UAAU/zE,SAEvE,IAAIsQ,EAAQ3V,KAAK28E,kBAAkBv/D,EAAQs/D,GAC3C,OAAO/mE,GAQXwjE,EAAej5E,UAAUk4E,qBAAuB,SAAUh7D,GACtD,IAAIs/D,EACC,eAAkBt/D,EAAO,GAAGi7D,aAC7BqE,EAAa18E,KAAKq5E,IAAIjB,qBAAqB,EAAG,EAAG,EAAG,EAAG,EAAGp4E,KAAKo5E,UAAU/zE,SAE7E,IAAIuX,EAAY5c,KAAK28E,kBAAkBv/D,EAAQs/D,GAC/C,OAAO9/D,GAGXu8D,EAAej5E,UAAUy8E,kBAAoB,SAAUv/D,EAAQs/D,GAC3D,IAAI9/D,EACJ,GAAK,eAAkBQ,EAAO,GAAGi7D,WAU7Bz7D,EAAYQ,EAAO,GAAGzH,MAAM/D,eAVa,CACzC,IAAK,IAAI5Q,EAAI,EAAGA,GAAKoc,EAAOzc,OAAS,EAAGK,IAAK,CACzC,IAAI2U,EAAQyH,EAAOpc,GAAG2U,MAClBinE,EAAgBx/D,EAAOpc,GAAY,UAAE0M,MAAM,GAAI,GAC/CmvE,EAAYlrE,SAASirE,EAAc,IAAM,IAC7CF,EAAWI,aAAaD,EAAWlnE,GAEvCiH,EAAY8/D,EAAW9qE,WAK3B,OAAOgL,GASXu8D,EAAej5E,UAAUw2E,qBAAuB,SAAUvzE,EAASC,GAG/D,IAFA,IAAIgS,EAAO3V,OAAO2V,KAAKjS,GACnBihB,EAAS3kB,OAAO2V,KAAKjS,GAAS0D,KAAI,SAAUtG,GAAO,OAAO4C,EAAQ5C,MAC7DS,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAC7BoC,EAAQuH,aAAayK,EAAKpU,GAAIojB,EAAOpjB,IAEzC,OAAO,MAQXm4E,EAAej5E,UAAU68E,uBAAyB,SAAU55E,GACxDnD,KAAK02E,qBAAqBvzE,EAASnD,KAAKo5E,WACxC,IAAIC,EAAMr5E,KAAKq5E,IACf,IAAK,eAAkBr5E,KAAKg9E,SAAU,CAClC,IAAIC,EAAQ,IAAIT,MAChBS,EAAMC,OAAS,WACX7D,EAAIp4B,UAAUg8B,EAAO,EAAG,IAE5BA,EAAMR,IAAMz8E,KAAKg9E,UAQzB7D,EAAej5E,UAAUwsD,UAAY,SAAUl+B,GAC3CxuB,KAAKq5E,IAAIa,UACTl6E,KAAKq5E,IAAI3sB,UAAUl+B,EAAKxoB,EAAGwoB,EAAKvoB,EAAGuoB,EAAKlpB,MAAOkpB,EAAKnpB,SAMxD8zE,EAAej5E,UAAUgmB,YAAc,WACnC,OAAO,MAOXizD,EAAej5E,UAAU84E,aAAe,WACpC,OAAO,MAOXG,EAAej5E,UAAU+4E,qBAAuB,WAC5C,OAAO,MAOXE,EAAej5E,UAAUw7C,WAAa,SAAUv4C,GAC5CnD,KAAKq5E,IAAIQ,OACT75E,KAAKq5E,IAAImB,UAAY,cACrBx6E,KAAKq5E,IAAI7qD,KAAKrrB,EAAQ6C,EAAG7C,EAAQ8C,EAAG9C,EAAQmC,MAAOnC,EAAQkC,QAC3DrF,KAAKq5E,IAAIj5D,OACTpgB,KAAKq5E,IAAI8D,QAKbhE,EAAej5E,UAAUy7C,cAAgB,WACrC37C,KAAKq5E,IAAIa,WAMbf,EAAej5E,UAAUm3E,YAAc,WACnC,OAAO,MAQX8B,EAAej5E,UAAU8vE,WAAa,WAClC,OAAO,MAMXmJ,EAAej5E,UAAUsyE,eAAiB,WACtC,OAAO,MAQX2G,EAAej5E,UAAUozC,UAAY,WACjC,OAAO,MAEJ6lC,EAngBwB,GCV5B,SAASiE,EAAqBlkC,GACjC,IAAInyC,EACJ,OAAQmyC,GACJ,IAAK,eACL,IAAK,eACDnyC,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,WAAYN,MAAO,YAEhD,MACJ,IAAK,eACL,IAAK,aACL,IAAK,gBACD5O,EAAQ,CACJs2E,YAAuB,iBAAVnkC,EAA2B,UAAsB,eAAVA,EAAyB,UAAY,UACzFokC,iBAA4B,iBAAVpkC,EAA2B,sBAAkC,eAAVA,EAAyB,UAAY,UAC1GqkC,kBAA6B,iBAAVrkC,EAA2B,sBAAkC,eAAVA,EAAyB,UAAY,UAC3GskC,kBAAmB,UACnB5wD,UAAqB,iBAAVssB,EAA2B,CAAEjjC,WAAY,SAAUN,MAAO,uBAAoC,eAAVujC,EAAyB,CAAEjjC,WAAY,WAAYN,MAAO,WAAc,CAAEM,WAAY,YAAaN,MAAO,YAE7M,MACJ,IAAK,aACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,2BACnB5wD,UAAW,CAAE3W,WAAY,YAAaN,MAAO,YAEjD,MACJ,IAAK,WACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,QAASN,MAAO,YAE7C,MACJ,IAAK,eACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,QAASN,MAAO,YAE7C,MACJ,IAAK,aACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,YAAaN,MAAO,YAEjD,MACJ,IAAK,iBACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,YAAaN,MAAO,YAEjD,MACJ,IAAK,SACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,WAAYN,MAAO,YAEhD,MACJ,IAAK,aACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,WAAYN,MAAO,YAEhD,MACJ,IAAK,YACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,SAAUN,MAAO,YAE9C,MACJ,IAAK,gBACD5O,EAAQ,CACJs2E,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,UACnB5wD,UAAW,CAAE3W,WAAY,SAAUN,MAAO,YAE9C,MACJ,QACI5O,EAAQ,CACJs2E,YAAuB,aAAVnkC,EAAuB,UAAsB,WAAVA,EAAqB,UAAY,UACjFokC,iBAA4B,aAAVpkC,EAAuB,yBAAqC,WAAVA,EAAqB,UAAY,UACrGqkC,kBAA6B,aAAVrkC,EAAuB,yBAAqC,WAAVA,EAAqB,UAAY,UACtGskC,kBAA6B,WAAVtkC,EAAqB,UAAY,UACpDtsB,UAAqB,aAAVssB,EAAuB,CAAEjjC,WAAY,SAAUN,MAAO,0BAAuC,WAAVujC,EAAqB,CAAEjjC,WAAY,WAAYN,MAAO,WAAc,CAAEM,WAAY,YAAaN,MAAO,YAExM,MAER,OAAO5O,ECpHX,IAAI1H,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAuBrC,SAAS09E,EAAYjhE,EAAMs/D,EAAM4B,GACpC,IAAIC,EAAYnhE,GAAQ,GACpBspB,EAAal4B,SAASyd,eAAe,oBAKzC,GAJmB,OAAfya,IACAA,EAAa,eAAc,OAAQ,CAAEx6B,GAAI,qBACzCsC,SAAS6B,KAAK/K,YAAYohC,IAER,kBAAX,IAAwBtpB,EAAKxY,QAAQ,MAAQ,GAAKwY,EAAKxY,QAAQ,MAAQ,GAAI,CAElF,IADA,IAAI45E,EAAYphE,EAAKvY,MAAM,KAClBjD,EAAI,EAAGA,EAAI48E,EAAUj9E,OAAQK,KACK,IAAnC48E,EAAU58E,GAAGgD,QAAQ,WACrB45E,EAAU58E,GAAK48E,EAAU58E,GAAGyjB,QAAQ,QAAS,MAGrDjI,EAAOohE,EAAUtxE,KAAK,KAc1B,OAZAw5B,EAAWh7B,UAAa6yE,EAAU35E,QAAQ,SAAW,GAAK25E,EAAU35E,QAAQ,UAAY,EAAK25E,EAAYnhE,EACzGspB,EAAW/+B,MAAMhD,SAAW,QAC5B+hC,EAAW/+B,MAAM80E,SAAWC,EAAKhmE,KACjCgwB,EAAW/+B,MAAMiP,WAAa8lE,EAAK9lE,WACnC8vB,EAAW/+B,MAAMgP,UAAY+lE,EAAK/lE,UAClC+vB,EAAW/+B,MAAMkP,WAAa6lE,EAAK7lE,YAAcynE,EAAeznE,WAChE6vB,EAAW/+B,MAAM8tC,WAAa,SAC9B/O,EAAW/+B,MAAMhC,IAAM,OACvB+gC,EAAW/+B,MAAM/B,KAAO,IACxB8gC,EAAW/+B,MAAM82E,WAAa,SAE9B/3C,EAAW/+B,MAAM+2E,WAAa,SACvB,IAAIC,EAAKj4C,EAAWv8B,YAAau8B,EAAWx8B,cAGhD,SAAS00E,EAAiBh4E,EAAGC,EAAGg4E,EAAY34E,EAAOD,GAGtD,YAFc,IAAVC,IAAoBA,EAAQ,QACjB,IAAXD,IAAqBA,EAAS,GAC1BW,GAAKi4E,EAAWj4E,EAAIV,GAASU,GAAKi4E,EAAWj4E,EAAIi4E,EAAW34E,MAAQA,GAASW,GAAKg4E,EAAWh4E,EAAIZ,GAClGY,GAAKg4E,EAAWh4E,EAAIg4E,EAAW54E,OAASA,EAG5C,SAAS64E,EAAcC,EAAIC,EAAI5vD,EAAM6vD,EAAeC,EAAcv5E,EAAK8Q,EAAQ7Q,EAAMu5E,EAAMC,EAAMC,QAChF,IAAhBA,IAA0BA,EAAc,IAC5C,IAAInoD,EAAY,GACZsa,EAASpiB,EAAKxoB,EACd+kC,EAASvc,EAAKvoB,EACdX,EAAQkpB,EAAKxoB,EAAIwoB,EAAKlpB,MACtBD,EAASmpB,EAAKvoB,EAAIuoB,EAAKnpB,OAgF3B,OA/EIN,GACAuxB,EAAYA,EAAU9I,OAAO,KAAY,EAAW,KAAOud,EAASqzC,GAAM,MAAQxtC,EAAS,IACrF7F,EAAS,KAAO6F,EAASutC,GAAM,IAAMpzC,EADd,QAEXzlC,EAAQ64E,GAAM,IAAM,EAAW,MAAQ74E,EAAQ,IAC3DylC,EAAS,IAAM,EAAU,KAAOA,EAASqzC,IAC/C9nD,EAAYA,EAAU9I,OAAO,MAAa,EAAU,KAAOnoB,EAAS+4E,GAAM,MAAQ94E,EAAQ,IACpF,EAAW,KAAOA,EAAQ64E,GAAM,IAAM,GACvB,IAAjBG,IACoB,mBAAhBG,EACKJ,EAAcr4E,EAAIs4E,EAAgBh5E,EAAQ,GAC3CgxB,EAAYA,EAAU9I,OAAO,OAAc6wD,EAAcr4E,EAAIs4E,GAAgB,IAAM,GACnFhoD,EAAYA,EAAU9I,OAAO,OAAc+wD,EAAOD,GAAgB,KAAOj5E,EAASi5E,GAArD,MACTD,EAAe,EAAI,IAAMh5E,KAG7CixB,EAAYA,EAAU9I,OAAO,MAAc6wD,EAAe,EAAI,IAAM,GACpE/nD,EAAYA,EAAU9I,OAAO,OAAc+wD,EAAOD,GAAgB,KAAOj5E,EAASi5E,GAArD,OACTD,EAAcr4E,EAAIs4E,GAAgB,IAAMj5E,KAIhEixB,EAAYA,EAAU9I,OAAO,OAAc6wD,EAAcr4E,EAAIs4E,GAAgB,IAAM,GACnFhoD,EAAYA,EAAU9I,OAAO,MAAa,EAAS,KAAOnoB,EAASi5E,GAAtC,OACTD,EAAcr4E,EAAIs4E,GAAgB,IAAMj5E,KAIhEixB,EADC+nD,EAAcr4E,EAAIs4E,EAAgB1tC,GAKd,IAAjB0tC,EAJQhoD,EAAU9I,OAAO,OAAcojB,EAASutC,GAAM,IAAM94E,EAAS,MAAQurC,EAAS,IACpFvrC,EAAS,IAAM,EAAW,KAAOA,EAAS+4E,GAAM,MAQtC9nD,EAAU9I,OAAO,MAAa,EAAW,KAAOnoB,EAAS+4E,GAAM,OAI9EvoE,GACLygB,EAAYA,EAAU9I,OAAO,KAAY,EAAW,KAAOud,EAASqzC,GAAM,MAAQxtC,EAAS,IACrF,EAAW,KAAOA,EAASutC,GAAM,IAAM,EADhB,OACyCE,EAAcr4E,EAAIs4E,GAAgB,IAAM,GAC9GhoD,EAAYA,EAAU9I,OAAO,MAAa,EAAS,IAAO6wD,EAAe,GACzE/nD,EAAYA,EAAU9I,OAAO,OAAc6wD,EAAcr4E,EAAIs4E,GAAgB,IAAM,GACnFhoD,EAAYA,EAAU9I,OAAO,OAAcloB,EAAQ64E,GAAM,IAAM,EACzD,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAU,KAAOpzC,EAASqzC,IACzE9nD,EAAYA,EAAU9I,OAAO,MAAa,EAAU,KAAOnoB,EAAS+4E,GAAM,MAAQ,EAAU,IACtF,EAAW,KAAO94E,EAAQ64E,GAAM,IAAM,EADf,OAEXvtC,EAASutC,GAAM,IAAM,EAAW,MAAQ,EAAW,IAC/D,EAAW,IAAM,EAAW,KAAO94E,EAAS+4E,GAAM,OAEnDp5E,GACLsxB,EAAYA,EAAU9I,OAAO,KAAY,EAAW,KAAOud,EAASqzC,GAAM,MAAQxtC,EAAS,IACrF,EAAW,KAAOA,EAASutC,GAAM,IAAM,GAC7C7nD,EAAYA,EAAU9I,OAAO,OAAcloB,EAAQ64E,GAAM,IAAM,EAAW,MAAQ,EAAU,IACtF,EAAW,IAAM,EAAU,KAAwB,mBAAhBM,EAAmC,EAAK1zC,EAASqzC,GAAlD,MAAsE,EAAU,KAAuB,mBAAhBK,EAAmC,EAAKJ,EAAcp4E,EAAIq4E,IACzLhoD,EAA6B,mBAAhBmoD,EAAoCnoD,EAAU9I,OAAO,OAAcloB,EAAQg5E,GAAtB,MAC9DhoD,EAAU9I,OAAO,OAAcloB,EAAQg5E,GAAgB,IAAM,GACjEhoD,EAA6B,mBAAhBmoD,EAAoCnoD,EAAU9I,OAAO,MAAa,EAAU,KAAO6wD,EAAcp4E,EAAIm4E,IAC9G9nD,EAAU9I,OAAO,MAAa,EAAU,KAAO6wD,EAAcp4E,EAAIq4E,IACrEhoD,EAAYA,EAAU9I,OAAO,MAAa,EAAU,KAAOnoB,EAAS+4E,GAAM,MAAQ94E,EAAQ,IAAM,EAAW,KAAOA,EAAQ64E,GAAM,IAAM,GACtI7nD,EAAYA,EAAU9I,OAAO,OAAcojB,EAASutC,GAAM,IAAM,EAAW,MAAQvtC,EAAS,IACtF,EAAW,IAAM,EAAW,KAAOvrC,EAAS+4E,GAAM,QAGxD9nD,EAAYA,EAAU9I,OAAO,MAAaojB,EAASutC,GAAM,IAAM,EAAW,MAAQ,EAAW,IACvF,EAAW,IAAM,EAAW,KAAwB,mBAAhBM,EAAmC,EAAK1zC,EAASqzC,GAAlD,MAAsE,EAAW,KAAuB,mBAAhBK,EAAmC,EAAKJ,EAAcp4E,EAAIq4E,IAC3LhoD,EAA6B,mBAAhBmoD,EAAoCnoD,EAAU9I,OAAO,OAAcojB,EAAS0tC,GAAvB,MAC9DhoD,EAAU9I,OAAO,OAAcojB,EAAS0tC,GAAgB,IAAM,GAClEhoD,EAA6B,mBAAhBmoD,EAAoCnoD,EAAU9I,OAAO,MAAa,EAAW,KAAO6wD,EAAcp4E,EAAIm4E,IAC/G9nD,EAAU9I,OAAO,MAAa,EAAW,KAAO6wD,EAAcp4E,EAAIq4E,IACtEhoD,EAAYA,EAAU9I,OAAO,MAAa,EAAW,KAAOnoB,EAAS+4E,GAAM,MAAQxtC,EAAS,IACtF,EAAW,KAAOA,EAASutC,GAAM,IAAM,GAC7C7nD,EAAYA,EAAU9I,OAAO,OAAcloB,EAAQ64E,GAAM,IAAM,EAAW,MAAQ74E,EAAQ,IACpF,EAAW,IAAM,EAAU,KAAOD,EAAS+4E,GADpB,MAEZ,EAAU,KAAOrzC,EAASqzC,GAAM,MAAQ94E,EAAQ,IAC3D,EAAW,KAAOA,EAAQ64E,GAAM,IAAM,EAAW,OAEpD7nD,EAGX,IAAIynD,EAAsB,WACtB,SAASA,EAAKz4E,EAAOD,GACjBrF,KAAKsF,MAAQA,EACbtF,KAAKqF,OAASA,EAElB,OAAO04E,EALc,GASrBW,EAAsB,WACtB,SAASA,EAAK14E,EAAGC,EAAGX,EAAOD,GACvBrF,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EACTjG,KAAKsF,MAAQA,EACbtF,KAAKqF,OAASA,EAElB,OAAOq5E,EAPc,GAUrBC,EAAsB,WACtB,SAASA,EAAK9oE,EAAQD,GAClB5V,KAAK4+E,QAAUhpE,EACf5V,KAAK6+E,SAAWhpE,EAEpB,OAAO8oE,EALc,GASrBG,EAAiC,WACjC,SAASA,EAAgBxzE,GACrBtL,KAAKsL,GAAKA,EAEd,OAAOwzE,EAJyB,GAQhCC,EAA4B,SAAUl8E,GAEtC,SAASk8E,EAAWzzE,EAAItF,EAAGC,EAAG4kC,EAAQruB,EAAMuJ,EAAWi5D,EAAUnzC,QAC3C,IAAd9lB,IAAwBA,EAAY,IACxC,IAAI1iB,EAAQR,EAAOS,KAAKtD,KAAMsL,IAAOtL,KAWrC,OAVAqD,EAAM0iB,UAAY,GAClB1iB,EAAM27E,SAAW,OACjB37E,EAAMwoC,cAAgB,EACtBxoC,EAAM2C,EAAIA,EACV3C,EAAM4C,EAAIA,EACV5C,EAAMwnC,OAASA,EACfxnC,EAAMmZ,KAAOA,EACbnZ,EAAM0iB,UAAYA,EAClB1iB,EAAM27E,SAAWA,EACjB37E,EAAMwoC,cAAgBA,EACfxoC,EAEX,OAhBAhE,EAAU0/E,EAAYl8E,GAgBfk8E,EAjBoB,CAkB7BD,GAGK,SAASh0D,EAAWxf,GACvB,OAAOsC,SAASyd,eAAe/f,GAG5B,SAAS2zE,EAAc3zE,GAC1B,IAAIlI,EAAU0nB,EAAWxf,GACrBlI,GACA,gBAAOA,GAIR,SAAS87E,EAAWvxD,EAAU7B,EAAOhW,EAAMgmB,EAAK34B,EAAS+kC,GAC5D,IAAI5iB,EAAW,IAAI,EAAY,IAC3B65D,EAAOC,EAAgBzxD,EAAU7X,EAAMgW,EAAO3oB,EAAS24B,GACvDgK,EAAaxgB,EAAS,OAAS65D,EAAKE,cAAcF,EAAKG,cAE3D,OADAx5C,EAAWn7B,aAAa,aAAcu9B,GAC/BpC,EAGJ,SAASs5C,EAAgBzxD,EAAU7X,EAAMgW,EAAO3oB,EAAS24B,GAC5D,IAAI86C,EACAyI,EAAe,OACf/5E,EAAQwQ,EAAKxQ,MACbD,EAASyQ,EAAKzQ,OACdk6E,EAAO5xD,EAAS3nB,EAChBw5E,EAAO7xD,EAAS1nB,EAChBD,EAAI2nB,EAAS3nB,GAAMV,EAAQ,EAC3BW,EAAI0nB,EAAS1nB,GAAMZ,EAAS,EAChC,OAAQymB,GACJ,IAAK,SACL,IAAK,SACDuzD,EAAe,UACf,gBAAMl8E,EAAS,CAAE,GAAMmC,EAAQ,EAAG,GAAMD,EAAS,EAAG,GAAMk6E,EAAM,GAAMC,IACtE,MACJ,IAAK,OACD5I,EAAO,KAAY5wE,EAAI,IAAMw5E,EAAtB,OAAgDD,EAAQj6E,EAAQ,GAAM,IAAMk6E,EAA5E,MACSD,EAAO,KAAOC,EAAQn6E,EAAS,GADxC,MACgEk6E,EAAO,KACzEC,GAASn6E,EAAS,GACvB,gBAAMlC,EAAS,CAAE,EAAKyzE,EAAMmD,OAAQ52E,EAAQid,OAC5C,MACJ,IAAK,QACDw2D,EAAO,KAAY5wE,EAAI,KAAOw5E,GAASn6E,EAAS,GAAzC,OAAkEk6E,EAAQj6E,EAAQ,GAAM,KAAOk6E,EAAQn6E,EAAS,GAAhH,MACSW,EAAI,KAAOw5E,EAAQn6E,EAAS,GADrC,OAC8Dk6E,EAAQj6E,EAAQ,GAAM,KACtFk6E,GAASn6E,EAAS,GACvB,gBAAMlC,EAAS,CAAE,EAAKyzE,EAAMmD,OAAQ52E,EAAQid,OAC5C,MACJ,IAAK,iBACDw2D,EAAO,KAAY5wE,EAAI,IAAMw5E,EAAtB,OAAgDD,EAAQj6E,EAAQ,GAAM,IAAMk6E,EACnF,gBAAMr8E,EAAS,CAAE,EAAKyzE,EAAMmD,OAAQ52E,EAAQid,OAC5C,MACJ,IAAK,eACDw2D,EAAO,KAAY2I,EAAO,KAAOC,EAAQn6E,EAAS,GAA3C,MAAmEk6E,EAAO,KAAOC,GAASn6E,EAAS,GAC1G,gBAAMlC,EAAS,CAAE,EAAKyzE,EAAMmD,OAAQ52E,EAAQid,OAC5C,MACJ,IAAK,UACDw2D,EAAO,KAAY5wE,EAAI,IAAMw5E,EAAtB,MACSD,EAAO,KAAOC,GAASn6E,EAAS,GADzC,OAEUk6E,EAAQj6E,EAAQ,GAAM,IAAMk6E,EAFtC,MAGSD,EAAO,KAAOC,EAAQn6E,EAAS,GAHxC,MAISW,EAAI,IAAMw5E,EAAO,KACjC,gBAAMr8E,EAAS,CAAE,EAAKyzE,IACtB,MACJ,IAAK,YACDA,EAAO,KAAY5wE,EAAI,KAAOw5E,GAASn6E,EAAS,GAAzC,OACUk6E,EAAQj6E,EAAQ,GAAM,KAAOk6E,GAASn6E,EAAS,GADzD,OAEUk6E,EAAQj6E,EAAQ,GAAM,KAAOk6E,EAAQn6E,EAAS,GAFxD,MAGSW,EAAI,KAAOw5E,EAAQn6E,EAAS,GAHrC,MAISW,EAAI,KAAOw5E,GAASn6E,EAAS,GAAM,KACnD,gBAAMlC,EAAS,CAAE,EAAKyzE,IACtB,MACJ,IAAK,WACDA,EAAO,KAAY5wE,EAAI,KAAOw5E,EAAQn6E,EAAS,GAAxC,MACSk6E,EAAO,KAAOC,GAASn6E,EAAS,GADzC,OAEUk6E,EAAQj6E,EAAQ,GAAM,KAAOk6E,EAAQn6E,EAAS,GAFxD,MAGSW,EAAI,KAAOw5E,EAAQn6E,EAAS,GAAM,KAClD,gBAAMlC,EAAS,CAAE,EAAKyzE,IACtB,MACJ,IAAK,mBACDA,EAAO,MAAa2I,EAAQj6E,EAAQ,GAAM,KAAOk6E,EAAQn6E,EAAS,GAA3D,MACSk6E,EAAO,KAAOC,EAAQn6E,EAAS,GADxC,OAEUk6E,EAAQj6E,EAAQ,GAAM,KAAOk6E,EAAQn6E,EAAS,GAFxD,OAGUk6E,EAAQj6E,EAAQ,GAAM,KAAOk6E,EAAQn6E,EAAS,GAAM,KACrE,gBAAMlC,EAAS,CAAE,EAAKyzE,IACtB,MACJ,IAAK,WAID,IAHA,IAAI6I,EAAK,GACLhlE,OAAS,EACTgB,OAAS,EACJza,EAAI,EAAGA,GAAK,EAAGA,IACpByZ,EAAUnV,EAAQ,EAAK6D,KAAK0gC,IAAK1gC,KAAK2gC,GAAK,KAAQ9oC,EAAIy+E,IACvDhkE,EAAUpW,EAAS,EAAK8D,KAAKu2E,IAAKv2E,KAAK2gC,GAAK,KAAQ9oC,EAAIy+E,IAEpD7I,EADM,IAAN51E,EACO,MAAau+E,EAAO9kE,GAAU,KAAO+kE,EAAO/jE,GAAU,IAGtDm7D,EAAKppD,OAAO,MAAa+xD,EAAO9kE,GAAU,KAAO+kE,EAAO/jE,GAAU,KAGjFm7D,EAAOA,EAAKppD,OAAO,KACnB,gBAAMrqB,EAAS,CAAE,EAAKyzE,IACtB,MACJ,IAAK,QACDyI,EAAe,QACf,gBAAMl8E,EAAS,CAAE,KAAQ24B,EAAK,OAAUz2B,EAAQ,MAASC,EAAOU,EAAGA,EAAGC,EAAGA,IACzE,MAER,MAAO,CAAEq5E,aAAcn8E,EAASk8E,aAAcA,GAGlD,IAAIM,EAA4B,SAAU98E,GAEtC,SAAS88E,EAAWr0E,EAAI8U,EAAM9a,EAAOqQ,EAAO69B,EAASlN,EAAW/mC,GAC5D,IAAI8D,EAAQR,EAAOS,KAAKtD,KAAMsL,IAAOtL,KAOrC,OANAqD,EAAMmwC,QAAUA,EAChBnwC,EAAM+c,KAAOA,EACb/c,EAAM02E,OAASpkE,EACftS,EAAM,gBAAkBiC,EACxBjC,EAAM,oBAAsBijC,EAC5BjjC,EAAM9D,EAAIA,EACH8D,EAEX,OAXAhE,EAAUsgF,EAAY98E,GAWf88E,EAZoB,CAa7Bb,GAGK,SAAS,EAAY37E,EAAS24E,EAAMnmE,EAAOmL,EAAQoP,GACtD,IAAI0vD,EAAgB,GAChBt6D,EAAW,IAAI,EAAY,IAC/Bs6D,EAAgB,CACZ,GAAMz8E,EAAQmI,GACd,EAAKnI,EAAQ6C,EACb,EAAK7C,EAAQ8C,EACb,KAAQ0P,EACR,YAAammE,EAAKhmE,KAClB,aAAcgmE,EAAK/lE,UACnB,cAAe+lE,EAAK7lE,YAAcia,EAAWja,WAC7C,cAAe6lE,EAAK9lE,WACpB,cAAe7S,EAAQ0nC,OACvB,UAAa1nC,EAAQ4iB,UACrB,QAAW+1D,EAAKtoC,QAChB,oBAAqBrwC,EAAQ67E,UAEjC,IAAIxiE,EAA+B,kBAAjBrZ,EAAQqZ,KAAoBrZ,EAAQqZ,KAAOrZ,EAAQqZ,KAAK,GACtEspB,EAAaxgB,EAASqyD,WAAWiI,EAAepjE,GAIpD,OAHIsE,GACAA,EAAOpc,YAAYohC,GAEhBA,EAEX,IAAI+5C,EAAiC,WACjC,SAASA,EAAgB75E,EAAGC,GACxBjG,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EAEb,OAAO45E,EALyB,GCpWhC,EAAwC,WACxC,IAAIvgF,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAqB5D,EAA2B,SAAUiC,GAErC,SAASi9E,IACL,OAAkB,OAAXj9E,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAoB/D,OAtBA,EAAU8/E,EAAWj9E,GAIrBzC,EAAW,CACP,eAAS,OACV0/E,EAAU5/E,UAAW,YAAQ,GAChCE,EAAW,CACP,eAAS,KACV0/E,EAAU5/E,UAAW,aAAS,GACjCE,EAAW,CACP,eAAS,aACV0/E,EAAU5/E,UAAW,kBAAc,GACtCE,EAAW,CACP,eAAS,WACV0/E,EAAU5/E,UAAW,kBAAc,GACtCE,EAAW,CACP,eAAS,WACV0/E,EAAU5/E,UAAW,iBAAa,GACrCE,EAAW,CACP,eAAS,IACV0/E,EAAU5/E,UAAW,eAAW,GAC5B4/E,EAvBmB,CAwB5B,QAOE,EAA+B,SAAUj9E,GAEzC,SAASk9E,IACL,OAAkB,OAAXl9E,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,EAAU+/E,EAAel9E,GAIzBzC,EAAW,CACP,eAAS,KACV2/E,EAAc7/E,UAAW,aAAS,GACrCE,EAAW,CACP,eAAS,IACV2/E,EAAc7/E,UAAW,aAAS,GACrCE,EAAW,CACP,eAAS,KACV2/E,EAAc7/E,UAAW,iBAAa,GAClC6/E,EAduB,CAehC,QAOE,EAA4B,SAAUl9E,GAEtC,SAASm9E,IACL,OAAkB,OAAXn9E,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAc/D,OAhBA,EAAUggF,EAAYn9E,GAItBzC,EAAW,CACP,eAAS,IACV4/E,EAAW9/E,UAAW,SAAK,GAC9BE,EAAW,CACP,eAAS,IACV4/E,EAAW9/E,UAAW,SAAK,GAC9BE,EAAW,CACP,eAAS,IACV4/E,EAAW9/E,UAAW,aAAS,GAClCE,EAAW,CACP,eAAS,IACV4/E,EAAW9/E,UAAW,cAAU,GAC5B8/E,EAjBoB,CAkB7B,QAOE,EAA8B,SAAUn9E,GAExC,SAASo9E,IACL,OAAkB,OAAXp9E,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,EAAUigF,EAAcp9E,GAIxBzC,EAAW,CACP,eAAS,IACV6/E,EAAa//E,UAAW,SAAK,GAChCE,EAAW,CACP,eAAS,IACV6/E,EAAa//E,UAAW,SAAK,GACzB+/E,EAXsB,CAY/B,QAcE,EAAyB,SAAUp9E,GAOnC,SAASK,EAAQC,EAASC,GACtB,OAAOP,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAo/BlD,OA3/BA,EAAUkD,EAASL,GAcnBK,EAAQhD,UAAU4T,UAAY,WAC1B9T,KAAKigB,wBAAyB,EAC9BjgB,KAAK04C,sBACA14C,KAAK4xE,UACN5xE,KAAKkgF,YAETlgF,KAAKmgF,wBAETj9E,EAAQhD,UAAUw4C,oBAAsB,WACpC14C,KAAKslB,SAAW,IAAI,EAAYtlB,KAAKoD,QAAQkI,IAC7CtL,KAAKkwB,WAAaktD,EAAqBp9E,KAAKk5C,OAC5Cl5C,KAAKutB,cAAgB,GACrBvtB,KAAKmtB,QAAU,EACfntB,KAAKogF,iBAAmB,EACxBpgF,KAAKqgF,WAAa,GAClBrgF,KAAK+rB,SAAU,EACf/rB,KAAKsgF,YAAc,IAEvBp9E,EAAQhD,UAAUggF,UAAY,WAC1B,IAAIh7C,EAAYt3B,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,QACtDi1E,EAAiB3yE,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,mBAC3DtL,KAAKwgF,gBACL,gBAAoBxgF,KAAKoD,QAAQkI,GAAbtL,kCAEpBklC,GAAaA,EAAUsM,YACvB,gBAAOtM,GAEPq7C,GAAkBA,EAAe/uC,YACjC,gBAAO+uC,IAMfr9E,EAAQhD,UAAUyT,OAAS,WAEvB,GADA3T,KAAKygF,WAAY,EACZzgF,KAAK2sB,SAUN3sB,KAAK0gF,mBACL1gF,KAAK2gF,eAAe3gF,KAAKi+E,WAAYj+E,KAAK2tB,cAX1B,CAChB3tB,KAAK0vE,WAAW1vE,KAAK+rB,SACrB,IAAI5L,EAAW,CACX1R,QAAQ,EAAOuB,KAAM,gBAAiBK,QAASrQ,MAEnDA,KAAKiI,QAAQ,gBAAiBkY,GAC9B,IAAIygE,EAAa5gF,KAAK6gF,qBAAqB7gF,KAAKi+E,WAAYj+E,KAAK2tB,UACjE3tB,KAAK8gF,WAAWF,EAAW/B,SAAU+B,EAAWhC,QAAS5+E,KAAK+gF,YAMlE/gF,KAAKiI,QAAQ,SAAU,CAAEoI,QAASrQ,OAClC,IAAIoD,EAAUwK,SAASyd,eAAe,oBAClCjoB,GACA,gBAAOA,GAEXpD,KAAKigB,wBAAyB,GAElC/c,EAAQhD,UAAUigF,qBAAuB,WAErC,GADAngF,KAAKghF,aAAe,IACfhhF,KAAK2sB,UAAY3sB,KAAK4e,OAAQ,CAE3B5e,KAAKihF,WACLjhF,KAAKoD,QAAQuH,aAAa,MAAO,OAErC,IAAIu6B,EAAYllC,KAAKslB,SAASguB,UAAU,CAAEhoC,GAAItL,KAAKoD,QAAQkI,GAAK,SAChEtL,KAAKoD,QAAQsB,YAAYwgC,GAEzB,IAAIwgB,EAAe93C,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,UACxDo6C,IACDA,EAAe1lD,KAAKslB,SAASY,YAAY,CAAE5a,GAAItL,KAAKoD,QAAQkI,GAAK,WACjEo6C,EAAa/6C,aAAa,YAAa,mBAE3Cu6B,EAAUxgC,YAAYghD,GACtB,IAAIw7B,EAAclhF,KAAKslB,SAASkhB,SAAS,CACrC,GAAMxmC,KAAKoD,QAAQkI,GAAK,QAAS,eAAiC,WAAftL,KAAKk5C,OAAqC,WAAfl5C,KAAKk5C,OAAwBl5C,KAAKolB,OAAO9f,MAAatF,KAAKolB,OAAO9f,MAAhB,EAChI,KAAQtF,KAAKogB,MAAQpgB,KAAKkwB,WAAWmtD,YAAa,QAA4B,iBAAfr9E,KAAKk5C,OAA2C,aAAfl5C,KAAKk5C,OAAuC,eAAfl5C,KAAKk5C,OAAyC,mBAAfl5C,KAAKk5C,OAAgD,MAAjBl5C,KAAKwzC,QAC7LxzC,KAAKwzC,QAAT,EACJ,OAAUxzC,KAAKolB,OAAOzP,QAAyB,WAAf3V,KAAKk5C,OAAqC,WAAfl5C,KAAKk5C,MAAqB,UAAYl5C,KAAKolB,OAAOzP,SAEjH+vC,EAAahhD,YAAYw8E,KAGjCh+E,EAAQhD,UAAU4gF,WAAa,SAAUjC,EAAUD,EAAS9oE,GACxD,GAAI9V,KAAKmhF,OAAOxgF,QAAU,EACtB,OAAO,KAEX,IAAI20C,EACAv1B,EAAQ,EACR4lC,EAAc3lD,KAAKslB,SAASY,YAAY,CAAE5a,GAAItL,KAAKoD,QAAQkI,GAAK,qBAChEo6C,EAAe56B,EAAW9qB,KAAKoD,QAAQkI,GAAK,UAChD,IAAKo6C,EACD,OAAO,KAIX,IAFA,IAAI1/C,GAAMhG,KAAc,UAAIA,KAAKmoC,YAAY7iC,MAASwQ,EAAO,EACzC,EAAf9V,KAAKohF,QAAgBtrE,EAAO,IAAO8oE,EAAU5+E,KAAKs+E,aAAe,GAC7DzwE,EAAK,EAAGhK,EAAK7D,KAAKmhF,OAAQtzE,EAAKhK,EAAGlD,OAAQkN,IAAM,CACrD,IAAIie,EAAQjoB,EAAGgK,GACf,GAAc,SAAVie,EAAkB,CAElB,GADAwpB,EAAc,IAAIqqC,EAAW3/E,KAAKoD,QAAQkI,GAAK,cAAgByU,EAAO/f,KAAKqhF,QAAQthE,GAAQ,EAAG,UAAW,EAAG,MACxG/f,KAAKsgF,YAAYvgE,GAAQ,CACzB,IAAIoN,EAAU,EACVntB,KAAKyrB,OAAOznB,QAAQ,QAAU,IAC9BmpB,EAAUntB,KAAKyrB,OAAOxnB,MAAM,YAAYtD,OAASof,GAErD4lC,EAAYjhD,YAAYw6E,EAAW,IAAIW,EAAgB75E,EAAGhG,KAAKsgF,YAAYvgE,GAAS/f,KAAKmtB,SAAW0xD,EAAW7+E,KAAKs+E,aAAenxD,IAAWrB,EAAO,IAAIiyD,EAAKjoE,EAAMA,GAAO,GAAIw/B,EAAa,OAEhMv1B,KAGR2lC,EAAahhD,YAAYihD,IAE7BziD,EAAQhD,UAAU2gF,qBAAuB,SAAU5C,EAAYtwD,GAC3D,IAMIa,EANArD,EAAaL,EAAW9qB,KAAKoD,QAAQkI,IACrC+yE,EAAgB,IAAIwB,EAAgB,EAAG,GACvCyB,EAAc,IAAIzB,EAAgB,EAAG,GACrC36C,EAAYpa,EAAW9qB,KAAKoD,QAAQkI,GAAK,QACzCo6C,EAAe56B,EAAW9qB,KAAKoD,QAAQkI,GAAK,UAC5C41E,EAAcp2D,EAAW9qB,KAAKoD,QAAQkI,GAAK,SAE3CugE,GAAQ,EACRv+B,GAAS,EACTuxC,GAAW,EACX74E,EAAI,EACJC,EAAI,EACR,IAAK,eAAkBy/C,GAAe,CAIlC,GAHoB,KAAhB1lD,KAAKyrB,SACLzrB,KAAKmoC,YAAY9iC,QAAUrF,KAAKuhF,SAEhCvhF,KAAKwhF,QAAS,CACd,IAAIl8E,EAAQtF,KAAKmoC,YAAY7iC,MAAS,EAAItF,KAAKohF,QAC3C/7E,EAASrF,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKuhF,QACjD/yD,EAAO,IAAIkwD,EAAK/wD,EAAS3nB,EAAG2nB,EAAS1nB,EAAGX,EAAOD,QAE1CrF,KAAK6K,QAAQlK,OAAS,GAC3B6tB,EAAOxuB,KAAKyhF,sBAAsBxD,EAAYj+E,KAAK2tB,SAAS3nB,EAAGhG,KAAK2tB,SAAS1nB,GAC7E4lE,GAAQ,IAGRr9C,EAAOxuB,KAAK0hF,gBAAgBzD,EAAYtwD,EAAU0wD,EAAeiD,GAC5DthF,KAAKouB,UAMNkf,EAAU9e,EAAKxoB,EAAK2nB,EAAS3nB,EAAIhG,KAAK2hF,WAAW37E,EACjDA,EAAKsnC,EAAS,EAAIttC,KAAKs+E,aACnBt+E,KAAKsyC,iBACL9jB,EAAKxoB,GAAKsnC,EAASttC,KAAKogF,kBAAqB,EAAIpgF,KAAKogF,oBAR1DvU,EAASr9C,EAAKvoB,EAAK0nB,EAAS1nB,EAAIjG,KAAK2hF,WAAW17E,EAChD44E,GAAYhT,EACZ5lE,EAAK4lE,EAAQ,EAAI7rE,KAAKs+E,eAU9B,GAAoB,KAAhBt+E,KAAKyrB,OAAe,CACpB,IAAIm2D,EAAc,EACdz0D,EAAU,EACV00D,EAAa7hF,KAAK8hF,OAAS9hF,KAAK+hF,YAAc/hF,KAAKyrB,OACvD,GAAIzrB,KAAK8hF,QAAkC,kBAAjB,IAA8BD,EAAW79E,QAAQ,MAAQ,GAAK69E,EAAW79E,QAAQ,MAAQ,GAAI,CACnH,IAAI45E,EAAYiE,EAAW59E,MAAM,QACjC29E,EAAchE,EAAUj9E,OAExBX,KAAKyrB,OAAOznB,QAAQ,QAAU,IAC9BmpB,EAAU,GAAKntB,KAAKyrB,OAAOxnB,MAAM,YAAYtD,OAAS,IAE1D,IAAIJ,EAAM,aACNu7E,EAAO,eAAO,GAAI97E,KAAK4sB,UAAW,MAAM,GAAMrsB,GAC9CyhF,EAAavE,EAAYz9E,KAAK8hF,OAAS9hF,KAAK+hF,YAAc/hF,KAAKyrB,OAAQqwD,EAAM97E,KAAKkwB,WAAWtD,WAAWvnB,OACvGrF,KAAKuhF,QAAUK,GAAgB/C,EAAW7+E,KAAKs+E,aAAe,IAAMt+E,KAAK8hF,OAAS,EAAI30D,GACvF80D,EAA0B,EAAfjiF,KAAKohF,SAAiB9zC,GAAWu+B,GAAUgT,EAA+B,EAApB7+E,KAAKs+E,cACtEhoD,EAAY,KAAO2rD,EAAU,IAAMD,EACnC,MAAQxzD,EAAKlpB,OAAUgoC,GAAWu+B,GAAUgT,EAA+B,EAApB7+E,KAAKs+E,cAAoC,EAAft+E,KAAKohF,SACtF,IAAMY,EACNE,EAAgBliF,KAAKslB,SAASkhB,SAAS,CACvC,GAAMxmC,KAAKoD,QAAQkI,GAAK,eAAgB,eAAgB,EACxD,KAAQ,KAAM,QAA2B,cAAhBtL,KAAKk5C,MAA6C,GAAM,GAAK,OAAUl5C,KAAKkwB,WAAWstD,kBAAmB,EAAKlnD,IAE5IovB,EAAahhD,YAAYw9E,GAE7B,IAAIhlE,EAAQld,KAAKolB,OAAO9f,MAAQ,EAC5B68E,EAAY,IAAIzD,EAAKxhE,EAAQlX,EAAGkX,EAAQjX,EAAGuoB,EAAKlpB,MAAQ4X,EAAOsR,EAAKnpB,OAAS6X,GAkBjF,GAjBAwoC,EAAa/6C,aAAa,UAAW,MACjC3K,KAAKoiF,iBAAoBpiF,KAAK+rB,SAAY/rB,KAAKiqB,UAI/CjqB,KAAKqiF,UAAUl3D,EAAYqD,EAAKxoB,EAAGwoB,EAAKvoB,GAHxCjG,KAAKsiF,kBAAkBn3D,EAAYqD,GAMvC0W,EAAUv6B,aAAa,UAAW6jB,EAAKnpB,OAASrF,KAAKolB,OAAO9f,OAAatF,KAAKouB,SAAa,EAAIpuB,KAAKs+E,cAAgB,GAAG1sE,YACvHszB,EAAUv6B,aAAa,SAAU6jB,EAAKlpB,MAAQtF,KAAKolB,OAAO9f,OAAYtF,KAAKouB,SAAiBpuB,KAAKs+E,aAAT,GAAyB,GAAG1sE,YACpHszB,EAAUv6B,aAAa,UAAW,KAC7B,eAAkB3K,KAAKuiF,oBACxB1W,EAAQ7rE,KAAKuiF,iBAAiBv+E,QAAQ,QAAU,EAChD66E,EAAW7+E,KAAKuiF,iBAAiBv+E,QAAQ,WAAa,EACtDspC,EAASttC,KAAKuiF,iBAAiBv+E,QAAQ,SAAW,GAEtDk9E,EAAYv2E,aAAa,IAAKuzE,EAAcl+E,KAAKq6E,GAAIr6E,KAAKq8E,GAAI8F,EAAW9D,EAAer+E,KAAKs+E,aAAczS,EAAOgT,EAAUvxC,EAAQg0C,EAAYt7E,EAAGs7E,EAAYr7E,EAAGjG,KAAKy+E,cACnKz+E,KAAKwiF,cAA+B,eAAfxiF,KAAKk5C,MAAwB,CAElD,IAAIupC,EAAWziF,KAAKoD,QAAQkI,GAAK,UACd,aAAftL,KAAKk5C,OAAuC,iBAAfl5C,KAAKk5C,OAChB,eAAfl5C,KAAKk5C,OAAyC,mBAAfl5C,KAAKk5C,MACvCgoC,EAAYv2E,aAAa,aAAc,mEAGvCu2E,EAAYv2E,aAAa,SAAU,OAAQsc,KAAO,GAAK,QAAUw7D,EAAW,KAEhF,IAAIC,EAAS,eAAiBD,EAAW,sEACzCC,GAAU,yGACVA,GAAU,oGACV,IAAI3S,EAAa/vE,KAAKslB,SAAS0qD,aAC/BD,EAAWplE,aAAa,KAAM3K,KAAKoD,QAAQkI,GAAK,0BAChDo6C,EAAahhD,YAAYqrE,GACzBA,EAAWjlE,UAAY43E,EAE3B,IAAIzvC,EAA+B,WAAfjzC,KAAKk5C,OAAqC,WAAfl5C,KAAKk5C,OAAwBl5C,KAAKolB,OAAOzP,MAAqB3V,KAAKolB,OAAOzP,MAAxB,UACjGurE,EAAYv2E,aAAa,SAAUsoC,GAC9B,eAAkBjzC,KAAKolB,OAAOkhB,YAC/B46C,EAAYv2E,aAAa,mBAAoB3K,KAAKolB,OAAOkhB,WAE7DtmC,KAAK2iF,WAAW,IAAI9C,EAAgB75E,EAAGC,GAAI44E,GAAWvxC,IAAWu+B,IAAUgT,GACvE7+E,KAAK4iF,SACL5iF,KAAKouB,UAAYpuB,KAAKouB,SACtBpuB,KAAK4iF,QAAS,GAGtB,OAAO,IAAIjE,EAAKE,GAAWvxC,IAAWu+B,IAAUgT,IAEpD37E,EAAQhD,UAAUyiF,WAAa,SAAUrqE,EAAOumE,EAAUD,GACtD,IAAIx7E,EAAUwK,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,SACpDuzE,GACAz7E,EAAQuH,aAAa,YAAa,eAAiB3K,KAAKs+E,aAAe,KAEvEM,GACAx7E,EAAQuH,aAAa,YAAa,aAAe3K,KAAKs+E,aAAe,QAG7Ep7E,EAAQhD,UAAU2iF,kBAAoB,WAClC7iF,KAAKutB,cAAgB,GACgD,KAAjEvtB,KAAKyrB,OAAOhH,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAIlY,SACtDvM,KAAKutB,cAAgBvtB,KAAKutB,cAAcC,OAAOxtB,KAAKyrB,SAExDzrB,KAAKutB,cAAgBvtB,KAAKutB,cAAcC,OAAOxtB,KAAK6K,UAGxD3H,EAAQhD,UAAUwvE,WAAa,SAAUoT,GACrC,IAGIC,EAIAC,EACAx2D,EAEAqqD,EACAoM,EAXA59E,EAAS,EACTC,EAAQ,EACR49E,EAAW,EAEX3iF,EAAM,aACNu7E,EAAO,eAAO,GAAI97E,KAAK4sB,UAAW,MAAM,GAAMrsB,GAC9CmlD,EAAe56B,EAAW9qB,KAAKoD,QAAQkI,GAAK,UAG5C63E,EAAa,GAGjBnjF,KAAK6iF,oBACL7iF,KAAK8hF,QAAS,EACd,IAAI7zC,EAAqD,QAAtCrgC,SAAS6B,KAAK/E,aAAa,OAC1CmgC,EAASoD,IAAiBjuC,KAAKihF,UAAY,MAAQ,QACvDjhF,KAAKivE,UAAYjvE,KAAKi+E,WAAWj4E,EAAIhG,KAAK2tB,SAAS3nB,EACnDhG,KAAKmvE,WAAcnvE,KAAKi+E,WAAWj4E,EAAIhG,KAAKi+E,WAAW34E,MAAStF,KAAKivE,UACrE,IAMIxjD,EANAurC,EAAgBh3D,KAAKyrB,OAAOhH,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAIlY,OACtE62E,EAAYpjF,KAAKyrB,OAAOznB,QAAQ,QAAU,GAAKhE,KAAKyrB,OAAOznB,QAAQ,SAAW,EAC9Eq/E,EAAc5F,EAAYz9E,KAAKutB,cAAc,GAAIuuD,EAAM97E,KAAKkwB,WAAWtD,WAAWtnB,MAC/E,EAAItF,KAAKohF,QAAWphF,KAAKs+E,aAC5BgF,EAAetjF,KAAK2tB,SAAS3nB,EAAIq9E,EAAerjF,KAAK2tB,SAAS3nB,EAC9Du9E,EAAgBvjF,KAAKi+E,WAAWj4E,EAAIhG,KAAKi+E,WAAW34E,MAAUtF,KAAK2tB,SAAS3nB,EAAIq9E,EAEhFG,EAAiC,KAAlBxsB,EAAwBh3D,KAAKuhF,QAAU,EACtDh8C,GAAQ,EACRk+C,GAAW,EACfzjF,KAAKsgF,YAAc,GACnB,IAGIoD,EAHA3C,EAAc/gF,KAAKmhF,OAAOxgF,OAAS,EAAK,GAAK,EAC7CgjF,EAAiB3jF,KAAKmhF,OAAOxgF,OAAS,EAAK,EAAI,EAC/CijF,EAAa,EAEb/H,EAAW,OACX7lE,EAAa,MACb6tE,EAAa7jF,KAAKkwB,WAAWqtD,kBAC7B5B,EAAM,GAAK70E,WAAW+0E,GAAc/0E,WAAWg1E,EAAKhmE,MACpDguE,EAAe,GACfl7C,EAAa,EACZk6C,IAAY9iF,KAAK4xE,WAClBqN,EAAcj/E,KAAKoD,QAAQkI,GAAK,SAChC2zE,EAAcj/E,KAAKoD,QAAQkI,GAAK,gBAChC2zE,EAAcj/E,KAAKoD,QAAQkI,GAAK,oBAChC2zE,EAAcj/E,KAAKoD,QAAQkI,GAAK,2BAGX,UAArBtL,KAAKy+E,aAA2B33E,WAAW+0E,GAAY/0E,WAAWg1E,EAAKhmE,QACvE8yB,EAAc9hC,WAAWg1E,EAAKhmE,MAAQhP,WAAW+0E,IAOrD,IALA,IAAI14E,EAAU,IAAI47E,EAAW/+E,KAAKoD,QAAQkI,GAAK,QAAwB,EAAftL,KAAKohF,QAAcx4C,EAA4B,EAAf5oC,KAAKuhF,QAA6B,EAAfvhF,KAAKmtB,SAAgC,IAAjBntB,KAAKuhF,QAAqC,mBAArBvhF,KAAKy+E,YAAmC,EAAI,EAAI,GAAK5zC,EAAQ,IAC7M6K,EAAgB,EAAYvyC,EAAS24E,EAAMA,EAAKnmE,OAAS3V,KAAKkwB,WAAWotD,iBAAkB53B,EAAc1lD,KAAKkwB,WAAWtD,WACzHm3D,EAA8C,IAA9B/jF,KAAKutB,cAAc5sB,QAAgBX,KAAKutB,cAAc,GAAGvpB,QAAQ,WAAa,EAC9F69D,EAA2B,KAAhB7hE,KAAKyrB,OAChB3V,EAAO+rD,GAAYuhB,EAAY,GAAK,GAC/B5/D,EAAI,EAAGM,EAAe9jB,KAAKutB,cAAc5sB,OAAQ6iB,EAAIM,EAAcN,IAiBxE,GAhBAgJ,EAAiBxsB,KAAKutB,cAAc/J,GAAGiB,QAAQ,gBAAiB,OAC3DA,QAAQ,kBAAmB,QAC3BxgB,MAAM,YACPjE,KAAKgkF,YAAchkF,KAAKyrB,SAAWzrB,KAAKutB,cAAc/J,KAAgD,IAA1CxjB,KAAKutB,cAAc/J,GAAGxf,QAAQ,SAC1F0/E,EAAkBv6E,KAAKC,MAAMpJ,KAAKivE,UAAYjvE,KAAKmvE,WAAcnvE,KAAKivE,UAAYn5D,EAAS9V,KAAKmvE,WAAar5D,GAC7G0W,EAAiBxsB,KAAKutB,cAAc/J,GAAG5c,MAAM,IAAI+pB,OAAO,OAAS+yD,EAAkB,IAAK,OAElF,IAANlgE,IAAYugE,GAAiB/jF,KAAKgkF,aACjChkF,KAAKivE,UAAYoU,GAAeC,KAChCtjF,KAAKmvE,WAAakU,GAAeE,KAClCG,EAAkBv6E,KAAKC,MAAMpJ,KAAKivE,UAAYjvE,KAAKmvE,WAAcnvE,KAAKivE,UAAYn5D,EAAS9V,KAAKmvE,WAAar5D,GAC7G2V,EAA2B,KAAlBurC,EAAuBA,EAAgBh3D,KAAKutB,cAAc/J,GACnEgJ,EAAiBf,EAAO7kB,MAAM,IAAI+pB,OAAO,OAAS+yD,EAAkB,IAAK,MACzE1jF,KAAK+hF,YAAcqB,EAAY,MAAQ52D,EAAelgB,KAAK,QAAU,OAASkgB,EAAelgB,KAAK,QAClGtM,KAAK8hF,OAASt1D,EAAe7rB,OAAS,GAEhB,KAAtB6rB,EAAe,GAAnB,CAGW,IAANhJ,GAA+B,KAAlBwzC,GACdh3D,KAAKsgF,YAAYj0E,MAAwB,KAAlB2qD,EAAwBh3D,KAAY,QAAI,GAAKmD,EAAQ8C,EAAIZ,GAAyB,IAAfujC,EAAqBA,EAAa5oC,KAAK+gF,YAAej6E,WAAWg1E,EAAKhmE,MAAQ9V,KAAK+gF,YAAe,IAEhM,IAAK,IAAI//E,EAAI,EAAG+X,EAAMyT,EAAe7rB,OAAQK,EAAI+X,EAAK/X,IAAK,CACvD+hF,EAAQv2D,EAAexrB,GAAGyjB,QAAQ,OAAQ,WAAWA,QAAQ,SAAU,YAAYA,QAAQ,KAAOzkB,KAAc,UAAI,cAAqB,cACpIiE,MAAM,QACPjE,KAAKihF,WAAa8B,EAAMpiF,OAAS,GAAK6rB,EAAexrB,GAAG4F,MAAM,QAC9Dm8E,EAAM,GAAKA,EAAM,GAAGx2E,OACpBw2E,EAAMkB,WAEVf,EAAW,EACXO,GAAW,EACXp+E,GAAUs2E,EACV,IAAK,IAAI93D,EAAI,EAAG2c,EAAQuiD,EAAMpiF,OAAQkjB,EAAI2c,EAAO3c,IAQ7C,GAPAgzD,EAAOkM,EAAMl/D,GACT7jB,KAAKihF,WAAsB,KAATpK,GAAe72E,KAAKkkF,UAAUrN,KAChDA,EAAOA,EAAKrpD,OAAO,MAElB,KAAK8qB,KAAKu+B,IAAkB,KAATA,IACpBA,EAAO,MAEL4M,GAAqB,MAAT5M,GAA4E,KAA1DA,EAAKpyD,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAIlY,OAAgB,CAC/F22E,GAAqB,MAATrM,EAAe+M,EAAa,EACpCH,IAAal+C,GACTvlC,KAAKyrB,OAAOznB,QAAQ,QAAU,GAAW,IAANwf,IACnCggE,GAAexjF,KAAKyrB,OAAOxnB,MAAM,YAAYtD,QAEjDsiF,EAAc,CACVj9E,EAAmB,EAAfhG,KAAKohF,SAAgBL,EAAa4C,GACtChI,GAAIA,GAAM,EAAa6H,EAAc,GAAIpjE,KAAM,IAEnDojE,EAAc,MAIVP,EADA19C,GAASk+C,EACK,CACVz9E,EAAsB,KAAlBgxD,EAAyC,EAAfh3D,KAAKohF,SAAgBL,EAAa4C,GAC1C,EAAf3jF,KAAKohF,SAAgBphF,KAAK8hF,OAAUf,EAAa4C,EAAiB,IAI/D,GAGtBF,GAAW,EACXT,EAAehjF,KAAKslB,SAASsyD,YAAYqL,EAAa,IACtDvtC,EAAchxC,YAAYs+E,GACtBnM,EAAK7yE,QAAQ,QAAU,GAAOo/E,GAAmB,IAANv/D,GAAiB,IAANL,IAAaq+C,GAAY7hE,KAAK8hF,SACpF9rE,EAAa,MACb6tE,EAAa7jF,KAAKkwB,WAAWotD,iBAC7B6F,EAAa,eAAiBntE,EAC9B8lE,EAAK9lE,WAAaA,EAClB,EAAerL,aAAa,OAAQ3K,KAAK4sB,UAAUjX,OAASkuE,KAG5DV,EAA4B,QAAfntE,EAAuB,eAAiBA,EAAa,GAClE8lE,EAAK9lE,WAAaA,EAClB,EAAerL,aAAa,OAAQ3K,KAAK4sB,UAAUjX,OAASkuE,KAE5DhN,EAAK7yE,QAAQ,SAAW,GAAOo/E,GAAav/D,IAAM2c,EAAQ,GAAW,IAANhd,IAAaq+C,GAAY7hE,KAAK8hF,WAC7F9rE,EAAa,SACb6tE,EAAa7jF,KAAKkwB,WAAWqtD,mBAGd,KAAf4F,IACAH,EAAaj8E,MAAMiP,WAAamtE,EAAWl/E,MAAM,gBAAgB,GACjE++E,EAAaj8E,MAAM4O,MAAQqtE,EAAat4E,aAAa,SAGzDs4E,EAAaj8E,MAAMkP,WAAa,UAChC+sE,EAAaj8E,MAAMgP,UAAY,UAC/BitE,EAAaj8E,MAAM80E,SAAY77E,KAAKyrB,SAAWzrB,KAAKutB,cAAc/J,GAAMs4D,EAAKhmE,KAAO9V,KAAK4sB,UAAU9W,KACnGktE,EAAaj8E,MAAMiP,WAAchW,KAAKyrB,SAAWzrB,KAAKutB,cAAc/J,KAAuE,KAAhExjB,KAAKyrB,OAAOznB,QAAQ,QAAUhE,KAAKyrB,OAAOznB,QAAQ,SAAoBhE,KAAK4sB,UAAU5W,YAAc,MAAS6gE,EAAK7yE,QAAQ,QAAU,GAAK6yE,EAAK7yE,QAAQ,SAAW,EAAI,OAAUhE,KAAK4sB,UAAU5W,YAAc8lE,EAAK9lE,WAC3R,IAAImuE,EAAW,eAAO,GAAInkF,KAAK4sB,UAAW,MAAM,GAAMrsB,GACtD4jF,EAASnuE,WAAagtE,EAAaj8E,MAAMiP,WACzCuvB,GAAQ,EACR,EAAesjB,YAAcguB,EAAO72E,KAAKokF,sBAAsBvN,GAC/DqM,GAAYzF,EAAY5G,EAAMsN,EAAUnkF,KAAKkwB,WAAWtD,WAAWtnB,MAG3E49E,GAAYU,EACZt+E,EAAQ6D,KAAKwS,IAAIrW,EAAO49E,GACxBY,EAAaz3E,KAAK62E,IAG1BljF,KAAKmoC,YAAc,IAAI41C,EAAKz4E,GAASA,EAAQ,EAAK,EAAItF,KAAKohF,QAAW,GAAI/7E,GAC1ErF,KAAKmoC,YAAY7iC,OAAUy7E,EAAa4C,EACxC,IAAIvgF,EAAWsyC,EAAczqB,WAAW,GACxC,GAAsB,KAAlB+rC,GAAwB5zD,IAAYpD,KAAK8hF,OAAQ,CACjDhG,EAAK9lE,WAAa,MAClB,IAAIquE,IAAWrkF,KAAKmoC,YAAY7iC,MAAS,EAAItF,KAAKmtB,SAAY,EAAIswD,EAAYzmB,EAAe8kB,EAAM97E,KAAKkwB,WAAWtD,WAAWtnB,MAAQ,EACtIlC,EAAQuH,aAAa,IAAK05E,GAAQzyE,YAEtC5R,KAAKskF,iBAAiB5uC,EAAemsB,EAAUkf,EAAa4C,EAAeG,IAE/E5gF,EAAQhD,UAAUokF,iBAAmB,SAAUj+D,EAAaw7C,EAAUkf,EAAY+C,GAC9E,GAAI9jF,KAAKihF,UAGL,IAFA,IAAI+B,OAAe,EACfuB,EAAoB1iB,EAAW,EAAI,EAC9B7gE,EAAI,EAAGA,EAAIqlB,EAAY4E,WAAWtqB,OAAQK,IAC/CgiF,EAAgB38D,EAAY4E,WAAWjqB,GACjC6gE,KAAY7gE,EAAI,IAAO,eAAkBgiF,EAAat4E,aAAa,QACrEs4E,EAAar4E,aAAa,KAAM3K,KAAKmoC,YAAY7iC,OAASy7E,EAAa+C,EAAaS,KAAqB3yE,YACzG2yE,MAKhBrhF,EAAQhD,UAAUkkF,sBAAwB,SAAUI,GAChD,IAAIC,EAAsBD,EAAY59E,MAAM,yBAC5C,GAAI,eAAkB69E,GAClB,OAAOD,EAGX,IADA,IAAIE,EAAY1kF,KAAKkkF,UAAUM,GACtBxjF,EAAI,EAAGA,EAAIyjF,EAAoB9jF,OAAQK,IACxChB,KAAK2kF,mBAAmBF,EAAoBzjF,GAAGyjB,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIlY,UAClGi4E,EAAcA,EAAY//D,QAAQggE,EAAoBzjF,GAAI0jF,EAAY,IAAW,KAGzF,OAAOF,GAEXthF,EAAQhD,UAAUykF,mBAAqB,SAAUvhF,GAC7C,MAAsD,gCAA/CwK,SAASrJ,cAAcnB,GAASwO,YAE3C1O,EAAQhD,UAAUgkF,UAAY,SAAU15E,GACpC,MAAO,8DAA8D8tC,KAAK9tC,IAE9EtH,EAAQhD,UAAUygF,eAAiB,SAAU1C,EAAYtwD,GACrD,IAAIxN,EAAW,CAAE1R,QAAQ,EAAOuB,KAAM,gBAAiBK,QAASrQ,MAChEA,KAAKiI,QAAQ,gBAAiBkY,GAC9B,IAAIW,EAASlT,SAASyd,eAAerrB,KAAKoD,QAAQkI,IAC9CtL,KAAK4xE,UACL5xE,KAAKkgF,YAET,IAAI0E,EAAe9jE,EAAOklC,kBAI1B,GAHI4+B,GACA,gBAAOA,GAENzkE,EAAS1R,OAsDV,gBAAOqc,EAAW9qB,KAAKoD,QAAQkI,GAAK,iBAtDlB,CAClB,IAAIu5E,EAAO,eAAc,MAAO,CAAEv5E,GAAItL,KAAKoD,QAAQkI,GAAK,oBACpDw5E,OAAkB,EACtB,GAAyB,UAArB9kF,KAAKy+E,aAA2Bz+E,KAAK4e,OACrC,IAAK,IAAI5d,EAAI,EAAGA,EAAIhB,KAAKsd,KAAK3c,OAAQK,IAAK,CACvC,IAAI+jF,EAAwB/kF,KAAKu8D,WAAWv8D,KAAKsd,KAAKtc,GAAIhB,KAAKglF,gBAAiBH,EAAKv5E,GAAIu5E,EAAKv5E,GAAK,kBAAmB,IAC5G,IAANtK,EACA8jF,EAAkBC,EAGlBD,EAAgBA,EAAgBnkF,OAAS,GAAGskF,WAAaF,EAAsB,GAAGE,eAK1FH,EAAkB9kF,KAAKu8D,WAAWv8D,KAAKsd,KAAMtd,KAAKglF,gBAAiBH,EAAKv5E,GAAIu5E,EAAKv5E,GAAK,kBAAmB,IAE7G,MAAOw5E,GAAmBA,EAAgBnkF,OAAS,EAC3C,kBAAyC,IAA3BmkF,EAAgBnkF,QAC9BkkF,EAAKngF,YAAYogF,EAAgB,IACjCA,EAAkB,MAGlBD,EAAKngF,YAAYogF,EAAgB,IAGzChkE,EAAOpc,YAAYmgF,GACnB,IAAIzhF,EAAUpD,KAAK4xE,SAAWiT,EAAO7kF,KAAKoD,QACtCorB,EAAOprB,EAAQgE,wBACnBpH,KAAKmtB,QAAU,EACfntB,KAAKmoC,YAAc,IAAI41C,EAAKvvD,EAAKlpB,MAAOkpB,EAAKnpB,QAC7C,IAAI6/E,EAAcllF,KAAK4e,OAAS5e,KAAKyhF,sBAAsBxD,EAAYj+E,KAAK2tB,SAAS3nB,EAAGhG,KAAK2tB,SAAS1nB,GAChGjG,KAAK0hF,gBAAgBzD,EAAYtwD,EAAU,IAAIkyD,EAAgB,EAAG,GAAI,IAAIA,EAAgB,EAAG,IAOnG,IANI7/E,KAAKoiF,iBAAoBpiF,KAAK+rB,SAAY/rB,KAAKiqB,UAI/CjqB,KAAKqiF,UAAUj/E,EAAS8hF,EAAYl/E,EAAGk/E,EAAYj/E,GAHnDjG,KAAKsiF,kBAAkBtiF,KAAKoD,QAAS8hF,GAKrCllF,KAAKwgF,eAAgB,CAErB,IAAI2E,EAAkB,WAClB,IAAIC,EAAQt6D,EAAWu6D,EAAajiF,QAAQkI,IAAIlE,wBAChDi+E,EAAal9C,YAAc,IAAI41C,EAAKqH,EAAM9/E,MAAO8/E,EAAM//E,QACvD,IAAIigF,EAAeD,EAAa3D,gBAAgBzD,EAAYtwD,EAAU,IAAIkyD,EAAgB,EAAG,GAAI,IAAIA,EAAgB,EAAG,IACxHwF,EAAahD,UAAUv3D,EAAWu6D,EAAajiF,QAAQkI,IAAKg6E,EAAat/E,EAAGs/E,EAAar/E,IAGzFo/E,EAAerlF,KACnBmlF,EAAgBv/E,KAAKy/E,EAAcpH,EAAYtwD,GAC/C,gBAAqB3tB,KAAKoD,QAAQkI,GAAbtL,iCAAyDA,KAAKwgF,eAAexwE,KAAMhQ,KAAKwgF,eAAe1/D,YAAQvV,EAAW45E,MAO3JjiF,EAAQhD,UAAUuhF,sBAAwB,SAAUhmC,EAAQz1C,EAAGC,GAC3D,IAAIX,EAAQtF,KAAKmoC,YAAY7iC,MAAS,EAAItF,KAAKohF,QAC3C/7E,EAASrF,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKuhF,QAC7C2D,EAAc,IAAIxG,EAAK14E,EAAI,EAAIhG,KAAKmtB,QAASlnB,EAAIZ,EAASrF,KAAKmtB,QAAS7nB,EAAOD,GAanF,OAZI6/E,EAAYj/E,EAAIw1C,EAAOx1C,IACvBi/E,EAAYj/E,GAAMi/E,EAAY7/E,OAAS,EAAIrF,KAAKmtB,SAEhD+3D,EAAYj/E,EAAIi/E,EAAY7/E,OAASo2C,EAAOx1C,EAAIw1C,EAAOp2C,SACvD6/E,EAAYj/E,EAAIkD,KAAKwS,IAAK8/B,EAAOx1C,EAAIw1C,EAAOp2C,QAAW6/E,EAAY7/E,OAAS,EAAIrF,KAAKmtB,SAAUsuB,EAAOx1C,IAEtGi/E,EAAYl/E,EAAIk/E,EAAY5/E,MAAQm2C,EAAOz1C,EAAIy1C,EAAOn2C,QACtD4/E,EAAYl/E,EAAKy1C,EAAOz1C,EAAIhG,KAAK2tB,SAAS3nB,GAAMk/E,EAAY5/E,MAAQ,EAAItF,KAAKmtB,UAE7E+3D,EAAYl/E,EAAIy1C,EAAOz1C,IACvBk/E,EAAYl/E,EAAIy1C,EAAOz1C,GAEpBk/E,GAEXhiF,EAAQhD,UAAUqlF,mBAAqB,SAAU9pC,EAAQ+pC,EAAgBnH,EAAeiD,GACpF,IAAIv9E,EAAW/D,KAAKuiF,iBAChB/tC,EAAQx0C,KAAK2hF,WAAW37E,EACxByuC,EAAQz0C,KAAK2hF,WAAW17E,EACxBsf,EAAevlB,KAAKu1C,OACpBjwC,EAAQtF,KAAKmoC,YAAY7iC,MAAS,EAAItF,KAAKohF,QAC3C/7E,EAASrF,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKuhF,QAC7C5zD,EAAW,IAAIkyD,EAAgB2F,EAAex/E,EAAGw/E,EAAev/E,GA+BpE,MA9BiB,QAAblC,GAAmC,WAAbA,GACtB4pB,EAAW,IAAIkyD,EAAgBlyD,EAAS3nB,EAAIwuC,EAAQx0C,KAAKmoC,YAAY7iC,MAAQ,EAAItF,KAAKmtB,QAASQ,EAAS1nB,EAAIwuC,EAAQz0C,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKmtB,QAAWntB,KAAKs+E,aAAe/4D,GACvL84D,EAAcr4E,EAAIs7E,EAAYt7E,EAAIV,EAAQ,EACzB,WAAbvB,IACA4pB,EAAS1nB,EAAIu/E,EAAev/E,EAAIwuC,EAAQlvB,GAExCk2B,EAAOz1C,EAAIy1C,EAAOn2C,MAAQqoB,EAAS3nB,EAAIV,GACvCqoB,EAAS3nB,EAAKy1C,EAAOn2C,MAAQA,EAAWm2C,EAAOz1C,EAAIy1C,EAAOn2C,MAASA,EAAQ,EAAKm2C,EAAOz1C,EACvFq4E,EAAcr4E,EAAIs7E,EAAYt7E,EAAKy1C,EAAOn2C,MAAQA,EAAUm2C,EAAOz1C,EAAIw/E,EAAex/E,EAAI2nB,EAAS3nB,EAAKw/E,EAAex/E,GAElHy1C,EAAOz1C,EAAI2nB,EAAS3nB,IACzB2nB,EAAS3nB,EAAIy1C,EAAOz1C,EACpBq4E,EAAcr4E,EAAIs7E,EAAYt7E,EAAIw/E,EAAex/E,KAIrD2nB,EAAW,IAAIkyD,EAAgBlyD,EAAS3nB,EAAIwuC,EAAQjvB,EAAcoI,EAAS1nB,EAAIwuC,EAAQz0C,KAAKmoC,YAAY9iC,OAAS,EAAKrF,KAAY,SAClIq+E,EAAcp4E,EAAIq7E,EAAYr7E,EAAIZ,EAAS,EAC1B,SAAbtB,IACA4pB,EAAS3nB,EAAIw/E,EAAex/E,EAAIwuC,EAAQjvB,GAAgBjgB,EAAQtF,KAAKs+E,eAErE7iC,EAAOx1C,EAAIw1C,EAAOp2C,OAASsoB,EAAS1nB,EAAIZ,GACxCsoB,EAAS1nB,EAAKw1C,EAAOp2C,OAASA,EAAYo2C,EAAOx1C,EAAIw1C,EAAOp2C,OAAUA,EAAS,EAAKo2C,EAAOx1C,EAC3Fo4E,EAAcp4E,EAAIq7E,EAAYr7E,EAAKw1C,EAAOp2C,OAASA,EAAWo2C,EAAOx1C,EAAIu/E,EAAev/E,EAAI0nB,EAAS1nB,EAAKu/E,EAAev/E,GAEpHw1C,EAAOx1C,EAAI0nB,EAAS1nB,IACzB0nB,EAAS1nB,EAAIw1C,EAAOx1C,EACpBo4E,EAAcp4E,EAAIq7E,EAAYr7E,EAAIu/E,EAAev/E,IAGlD,IAAIy4E,EAAK/wD,EAAS3nB,EAAG2nB,EAAS1nB,EAAGX,EAAOD,IAGnDnC,EAAQhD,UAAUwhF,gBAAkB,SAAUjmC,EAAQ+pC,EAAgBnH,EAAeiD,GACjF,IAAK,eAAkBthF,KAAKuiF,kBAAmB,CAC3C,IAAI2C,EAAcllF,KAAKulF,mBAAmB9pC,EAAQ+pC,EAAgBnH,EAAeiD,GACjF,OAAO4D,EAEX,IAAIv3D,EAAW,IAAIkyD,EAAgB2F,EAAex/E,EAAGw/E,EAAev/E,GAChEX,EAAQtF,KAAKmoC,YAAY7iC,MAAS,EAAItF,KAAKohF,QAC3C/7E,EAASrF,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKuhF,QAC7Ch8D,EAAevlB,KAAKu1C,OACpBf,EAAQx0C,KAAK2hF,WAAW37E,EACxByuC,EAAQz0C,KAAK2hF,WAAW17E,EACxBw/E,EAAUhqC,EAAOz1C,EACjB0/E,EAAUjqC,EAAOx1C,EAoJrB,OAnJAjG,KAAK2lF,aAAc,EACd3lF,KAAKouB,UA6ENT,EAAW,IAAIkyD,EAAgBlyD,EAAS3nB,EAAIwuC,EAAQjvB,EAAcoI,EAAS1nB,EAAIwuC,EAAQz0C,KAAKmoC,YAAY9iC,OAAS,EAAKrF,KAAY,SAClIq+E,EAAcp4E,EAAIq7E,EAAYr7E,EAAIZ,EAAS,GACtCsoB,EAAS3nB,EAAIV,EAAQtF,KAAKs+E,aAAemH,EAAUhqC,EAAOn2C,OAAWtF,KAAe,cACrF2tB,EAAS3nB,GAAKw/E,EAAex/E,EAAIy1C,EAAOn2C,MAAQm2C,EAAOz1C,EAAIy1C,EAAOn2C,MAAQkgF,EAAex/E,GACnFwuC,EAAQjvB,GAAgBjgB,EAAQtF,KAAKs+E,eAE3C3wD,EAAS3nB,EAAIy/E,IACb93D,EAAS3nB,GAAKw/E,EAAex/E,EAAI,EAAI,EAAIw/E,EAAex/E,GAAKwuC,EAAQjvB,GAEpEoI,EAAS3nB,EAAIV,EAAQtF,KAAKs+E,aAAemH,EAAUhqC,EAAOn2C,QAC3DqoB,EAAS3nB,GAAKw/E,EAAex/E,EAAIy1C,EAAOn2C,MAAQm2C,EAAOz1C,EAAIy1C,EAAOn2C,MAAQkgF,EAAex/E,GACnFwuC,EAAQjvB,GAAgBjgB,EAAQtF,KAAKs+E,eAE3C3wD,EAAS1nB,GAAKy/E,IACdrH,EAAcp4E,GAAMy/E,EAAU/3D,EAAS1nB,EACvCq7E,EAAYr7E,GAAMy/E,EAAU/3D,EAAS1nB,EACrC0nB,EAAS1nB,EAAIy/E,GAEb/3D,EAAS1nB,EAAIZ,GAAUqgF,EAAUjqC,EAAOp2C,SACxCg5E,EAAcp4E,GAAO0nB,EAAS1nB,EAAIZ,GAAWqgF,EAAUjqC,EAAOp2C,QAC9Di8E,EAAYr7E,GAAO0nB,EAAS1nB,EAAIZ,GAAWqgF,EAAUjqC,EAAOp2C,QAC5DsoB,EAAS1nB,GAAO0nB,EAAS1nB,EAAIZ,GAAWqgF,EAAUjqC,EAAOp2C,SAEzDg5E,EAAcp4E,EAAIjG,KAAKs+E,aAAej5E,EAASrF,KAAKq8E,KACpDgC,EAAcp4E,EAAIZ,EAASrF,KAAKq8E,GAAKr8E,KAAKs+E,aAC1CgD,EAAYr7E,EAAIZ,GAEhBg5E,EAAcp4E,EAAIjG,KAAKs+E,aAAet+E,KAAKq8E,KAC3CgC,EAAcp4E,EAAIq7E,EAAYr7E,EAAIjG,KAAKq8E,GAAKr8E,KAAKs+E,cAE5B,UAArBt+E,KAAKy+E,eACA9wD,EAAS1nB,EAAIo4E,EAAcp4E,EAAKjG,KAAKqgF,WAAargF,KAAKs+E,cACtD7iC,EAAOx1C,EAAIw1C,EAAOp2C,QAAWsoB,EAAS1nB,EAAIo4E,EAAcp4E,GAAMjG,KAAKqgF,WAAargF,KAAKs+E,gBACvFt+E,KAAK2lF,aAAc,GAElB3H,EAAiBrwD,EAAS3nB,EAAG2nB,EAAS1nB,EAAGw1C,KAAWz7C,KAAK2lF,cAC1D3lF,KAAKouB,UAAYpuB,KAAKouB,SACtBT,EAAW,IAAIkyD,EAAgB2F,EAAex/E,EAAIwuC,EAAQx0C,KAAKmtB,QAAUntB,KAAKmoC,YAAY7iC,MAAQ,EAAGkgF,EAAev/E,EAAIwuC,EAAQz0C,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKmtB,QAAW5H,EAAevlB,KAAKs+E,cACnMt+E,KAAK4iF,QAAS,EACdtB,EAAYt7E,EAAIq4E,EAAcr4E,EAAIV,EAAQ,EAC1Cg8E,EAAYr7E,EAAIo4E,EAAcp4E,EAAI,GAC9B0nB,EAAS1nB,EAAIy/E,GAAY1lF,KAAe,cACxC2tB,EAAS1nB,GAAKu/E,EAAev/E,EAAI,EAAI,EAAIu/E,EAAev/E,GAAKsf,EAAekvB,GAE5E9mB,EAAS1nB,EAAIjG,KAAKs+E,aAAej5E,EAASqgF,EAAUjqC,EAAOp2C,SAC3DsoB,EAAS1nB,EAAIkD,KAAKuS,IAAI8pE,EAAev/E,EAAGy/E,EAAUjqC,EAAOp2C,QAAUovC,EAC7Dz0C,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKmtB,QAAW5H,EAAevlB,KAAKs+E,cAE7EgD,EAAYt7E,EAAIV,EAAQ,EACpBqoB,EAAS3nB,EAAIy/E,IACbnE,EAAYt7E,GAAMy/E,EAAU93D,EAAS3nB,EACrCq4E,EAAcr4E,GAAMy/E,EAAU93D,EAAS3nB,EACvC2nB,EAAS3nB,EAAIy/E,GAEb93D,EAAS3nB,EAAIV,EAAQm2C,EAAOn2C,MAAQmgF,IACpCpH,EAAcr4E,GAAO2nB,EAAS3nB,EAAIV,GAAUm2C,EAAOn2C,MAAQmgF,GAC3DnE,EAAYt7E,GAAO2nB,EAAS3nB,EAAIV,GAAUm2C,EAAOn2C,MAAQmgF,GACzD93D,EAAS3nB,GAAO2nB,EAAS3nB,EAAIV,GAAUm2C,EAAOn2C,MAAQmgF,IAErDzlF,KAAiB,aAAIq+E,EAAcr4E,EAAIV,EAAQtF,KAAKq6E,KACrDiH,EAAYt7E,EAAIV,EAAQtF,KAAKq6E,GAAMr6E,KAAiB,aACpDq+E,EAAcr4E,EAAIV,EAAQtF,KAAKq6E,GAAMr6E,KAAiB,cAEtDq+E,EAAcr4E,EAAKhG,KAAiB,aAAIA,KAAKq6E,KAC7CgE,EAAcr4E,EAAIs7E,EAAYt7E,EAAIhG,KAAKq6E,GAAMr6E,KAAiB,kBA5I1E2tB,EAAW,IAAIkyD,EAAgBlyD,EAAS3nB,EAAIwuC,EAAQx0C,KAAKmoC,YAAY7iC,MAAQ,EAAItF,KAAKmtB,QAASQ,EAAS1nB,EAAIwuC,EAAQz0C,KAAKmoC,YAAY9iC,OAAU,GAAKrF,KAAKsyC,eAAiBtyC,KAAKogF,iBAAmBpgF,KAAKmtB,SACnMntB,KAAKs+E,aAAe/4D,GACxB84D,EAAcr4E,EAAIs7E,EAAYt7E,EAAIV,EAAQ,GACrCqoB,EAAS1nB,EAAIy/E,GAAY1lF,KAAe,aAA6B,gBAArBA,KAAKy+E,cACtD9wD,EAAS1nB,GAAKu/E,EAAev/E,EAAI,EAAI,EAAIu/E,EAAev/E,GAAKwuC,EAAQlvB,GAErEoI,EAAS1nB,EAAIZ,EAASrF,KAAKs+E,aAAeoH,EAAUjqC,EAAOp2C,SAC3DsoB,EAAS1nB,EAAIkD,KAAKuS,IAAI8pE,EAAev/E,EAAGy/E,EAAUjqC,EAAOp2C,QAAUovC,EAC7Dz0C,KAAKmoC,YAAY9iC,OAAU,EAAIrF,KAAKmtB,QAAWntB,KAAKs+E,aAAe/4D,IAEvEoI,EAAS3nB,EAAIV,EAAQmgF,EAAUhqC,EAAOn2C,OAAUqoB,EAAS1nB,EAAIy/E,GAAY1lF,KAAe,aAA6B,gBAArBA,KAAKy+E,cACvG9wD,EAAS1nB,GAAKu/E,EAAev/E,EAAI,EAAI,EAAIu/E,EAAev/E,GAAKwuC,EAAQlvB,GAEzE+7D,EAAYt7E,EAAIV,EAAQ,EACpBqoB,EAAS3nB,EAAIy/E,GAAkC,gBAArBzlF,KAAKy+E,cAC/BJ,EAAcr4E,GAAMy/E,EAAU93D,EAAS3nB,EACvCs7E,EAAYt7E,GAAMy/E,EAAU93D,EAAS3nB,EACrC2nB,EAAS3nB,EAAIy/E,GAEb93D,EAAS3nB,EAAIV,EAAQmgF,EAAUhqC,EAAOn2C,OAAgC,gBAArBtF,KAAKy+E,cACtDJ,EAAcr4E,GAAO2nB,EAAS3nB,EAAIV,GAAUmgF,EAAUhqC,EAAOn2C,OAC7Dg8E,EAAYt7E,GAAO2nB,EAAS3nB,EAAIV,GAAUmgF,EAAUhqC,EAAOn2C,OAC3DqoB,EAAS3nB,GAAO2nB,EAAS3nB,EAAIV,GAAUmgF,EAAUhqC,EAAOn2C,QAExDqoB,EAAS3nB,EAAIy/E,GAAkC,gBAArBzlF,KAAKy+E,cAC/BJ,EAAcr4E,GAAMy/E,EAAU93D,EAAS3nB,EACvCs7E,EAAYt7E,GAAMy/E,EAAU93D,EAAS3nB,EACrC2nB,EAAS3nB,EAAIy/E,GAEbpH,EAAcr4E,EAAIhG,KAAKs+E,aAAeh5E,EAAQtF,KAAKq6E,KACnDgE,EAAcr4E,EAAIV,EAAQtF,KAAKq6E,GAAKr6E,KAAKs+E,aACzCgD,EAAYt7E,EAAIV,EAAQtF,KAAKq6E,GAAKr6E,KAAKs+E,cAEvCD,EAAcr4E,EAAIhG,KAAKs+E,aAAet+E,KAAKq6E,KAC3CgE,EAAcr4E,EAAIs7E,EAAYt7E,EAAIhG,KAAKq6E,GAAKr6E,KAAKs+E,cAE5B,UAArBt+E,KAAKy+E,eACChjC,EAAOz1C,EAAIy1C,EAAOn2C,OAAUqoB,EAAS3nB,EAAIq4E,EAAcr4E,GAAMhG,KAAKqgF,WAAargF,KAAKs+E,cACrF3wD,EAAS3nB,EAAIq4E,EAAcr4E,EAAKhG,KAAKqgF,WAAargF,KAAKs+E,gBACxDt+E,KAAK2lF,aAAc,GAElB3H,EAAiBrwD,EAAS3nB,EAAG2nB,EAAS1nB,EAAGw1C,KAAWz7C,KAAK2lF,cAC1D3lF,KAAKouB,UAAYpuB,KAAKouB,SACtBpuB,KAAK4iF,QAAS,EACdj1D,EAAW,IAAIkyD,EAAgB2F,EAAex/E,EAAIuf,EAAeivB,EAAOgxC,EAAev/E,EAAIwuC,EAAQz0C,KAAKmoC,YAAY9iC,OAAS,EAAKrF,KAAY,SAC9IshF,EAAYt7E,EAAIq4E,EAAcr4E,EAAI,EAClCs7E,EAAYr7E,EAAIo4E,EAAcp4E,EAAIZ,EAAS,GACtCsoB,EAAS3nB,EAAIhG,KAAKs+E,aAAeh5E,EAAQmgF,EAAUhqC,EAAOn2C,OAAWtF,KAAe,cACrF2tB,EAAS3nB,GAAKw/E,EAAex/E,EAAIy/E,EAAUhqC,EAAOn2C,MAAQm2C,EAAOn2C,MAAQkgF,EAAex/E,GAClFwuC,EAAQjvB,GAAgBvlB,KAAKs+E,aAAeh5E,IAElDqoB,EAAS3nB,EAAIy/E,IACb93D,EAAS3nB,GAAKw/E,EAAex/E,EAAI,EAAI,EAAIw/E,EAAex/E,GAAKuf,EAAeivB,GAE5E7mB,EAAS1nB,GAAKy/E,IACdpE,EAAYr7E,GAAMy/E,EAAU/3D,EAAS1nB,EACrCo4E,EAAcp4E,GAAMy/E,EAAU/3D,EAAS1nB,EACvC0nB,EAAS1nB,EAAIy/E,GAEb/3D,EAAS1nB,EAAIZ,GAAUo2C,EAAOp2C,OAASqgF,IACvCrH,EAAcp4E,GAAO0nB,EAAS1nB,EAAIZ,GAAWo2C,EAAOp2C,OAASqgF,GAC7DpE,EAAYr7E,GAAO0nB,EAAS1nB,EAAIZ,GAAWo2C,EAAOp2C,OAASqgF,GAC3D/3D,EAAS1nB,GAAO0nB,EAAS1nB,EAAIZ,GAAWo2C,EAAOp2C,OAASqgF,IAEvD1lF,KAAiB,aAAIq+E,EAAcp4E,EAAIZ,EAASrF,KAAKq8E,KACtDgC,EAAcp4E,EAAIZ,EAASrF,KAAKs+E,aAAet+E,KAAKq8E,GACpDiF,EAAYr7E,EAAIZ,GAEhBg5E,EAAcp4E,EAAIjG,KAAKs+E,aAAet+E,KAAKq8E,KAC3CgC,EAAcp4E,EAAKjG,KAAiB,aAAIA,KAAKq8E,GAC7CiF,EAAYr7E,EAAI,MA2EzB,IAAIy4E,EAAK/wD,EAAS3nB,EAAG2nB,EAAS1nB,EAAGX,EAAOD,IAEnDnC,EAAQhD,UAAUoiF,kBAAoB,SAAUn3D,EAAYqD,GACxD,IAGIo3D,EAHAviF,EAAQrD,KACRgG,EAAIc,WAAWqkB,EAAWpkB,MAAM/B,MAChCiB,EAAIa,WAAWqkB,EAAWpkB,MAAMhC,KAEpC,IAAI,OAAU,IAAI2vC,QAAQvpB,EAAY,CAClCnoB,SAA6B,IAAlBhD,KAAKgD,UAAoC,WAAlB,OAA8B,IAAMhD,KAAKgD,SAC3E2xC,SAAU,SAAUtgB,GAChBuxD,EAAcvxD,EAAKugB,UAAYvgB,EAAKrxB,SACpCmoB,EAAWpkB,MAAMwG,UAAY,KACF,UAAtBlK,EAAMo7E,aAA2Bp7E,EAAMub,SAAYvb,EAAM49E,WAC1D91D,EAAWpkB,MAAM8+E,WAAa,iBAAa,iBAAmB,iBAC9D16D,EAAWpkB,MAAMgf,UAAY,cAAgB/f,EAAI4/E,GAAcp3D,EAAKxoB,EAAIA,IAAM,OAASC,EAAI2/E,GAAcp3D,EAAKvoB,EAAIA,IAAM,MACxHklB,EAAWpkB,MAAM/B,KAAO,GACxBmmB,EAAWpkB,MAAMhC,IAAM,KAGvBomB,EAAWpkB,MAAM/B,KAAQgB,EAAI4/E,GAAcp3D,EAAKxoB,EAAIA,GAAM,KAC1DmlB,EAAWpkB,MAAMhC,IAAOkB,EAAI2/E,GAAcp3D,EAAKvoB,EAAIA,GAAM,KACzDklB,EAAWpkB,MAAMgf,UAAkC,mBAAtB1iB,EAAMo7E,YAAmCtzD,EAAWpkB,MAAMgf,UAAY,KAG3G5I,IAAK,SAAU2oE,GACXziF,EAAMg/E,UAAUl3D,EAAYqD,EAAKxoB,EAAGwoB,EAAKvoB,GACzC5C,EAAM4E,QAAQ,oBAAqB,CAAEoI,QAAShN,QAI1DH,EAAQhD,UAAUmiF,UAAY,SAAUl3D,EAAYnlB,EAAGC,GACzB,UAArBjG,KAAKy+E,cAA2Bz+E,KAAK4e,QAAW5e,KAAKiqB,WAAejqB,KAAKihF,WAM1E91D,EAAWpkB,MAAM/B,KAAOgB,EAAI,KAC5BmlB,EAAWpkB,MAAMhC,IAAMkB,EAAI,KAC3BklB,EAAWpkB,MAAMgf,UAAiC,mBAArB/lB,KAAKy+E,YAAmCtzD,EAAWpkB,MAAMgf,UAAY,KAPlGoF,EAAWpkB,MAAMgf,UAAY,aAAe/f,EAAI,MAAQC,EAAI,MAC5DklB,EAAWpkB,MAAM/B,KAAO,GACxBmmB,EAAWpkB,MAAMhC,IAAM,KAQ/B7B,EAAQhD,UAAUwgF,iBAAmB,WACjC,GAAI1gF,KAAK2sB,SACL,IACiC,oBAAlB3sB,KAAK2sB,UAA2B/e,SAASk/C,iBAAiB9sD,KAAK2sB,UAAUhsB,OAChFX,KAAKu8D,WAAa,eAAiB3uD,SAAS1B,cAAclM,KAAK2sB,UAAU7hB,UAAUyB,QAGnFvM,KAAKu8D,WAAa,eAAiBv8D,KAAK2sB,UAGhD,MAAOxf,GACHnN,KAAKu8D,WAAa,eAAiBv8D,KAAK2sB,YAKpDzpB,EAAQhD,UAAUuxB,QAAU,WACxB,IAAIpuB,EAAQrD,KACR+lF,EAAkB/lF,KAAK4xE,WAAa5xE,KAAK2sB,SAAY7B,EAAW9qB,KAAKoD,QAAQkI,GAAK,QAClFwf,EAAW9qB,KAAKoD,QAAQkI,IACxB6f,EAAaL,EAAW9qB,KAAKoD,QAAQkI,IACzC,GAAIy6E,EAAgB,CAChB,IAAIC,EAAiBD,EAAe/6D,WAQpC,GAPIg7D,EAAe/2B,WAAag3B,KAAKC,eACjCF,EAAiBD,EAAe//B,mBAEhChmD,KAAK4xE,WAAa5xE,KAAK2sB,WACvBq5D,EAAiBp4E,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,UAAYsC,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,UAC7G06E,IAEHA,EACD,OAAO,KAEX,IAAIG,EAAYr/E,WAAWk/E,EAAet7E,aAAa,YACvDy7E,EAAa,eAAkBA,GAAyB,EAAZA,EAC5C,IAAI,OAAU,IAAIzxC,QAAQsxC,EAAgB,CACtChjF,SAAU,IACV2xC,SAAU,SAAUtgB,GAEhBhxB,EAAM+iF,kBAAkBJ,EAAgBG,EAAY9xD,EAAKugB,UAAYvgB,EAAKrxB,WAE9Ema,IAAK,WACD9Z,EAAMo9E,WAAY,EAClBp9E,EAAMgjF,aAAaL,GACnB76D,EAAWpkB,MAAM8+E,WAAa,QAK9C3iF,EAAQhD,UAAUkmF,kBAAoB,SAAUE,EAAc9yC,EAASoB,GACnE0xC,EAAav/E,MAAMwG,UAAY,GAC/B+4E,EAAa37E,aAAa,WAAY6oC,EAAUoB,GAAWhjC,aAK/D1O,EAAQhD,UAAUmmF,aAAe,SAAUC,GACvCA,EAAa37E,aAAa,UAAW,KACjC3K,KAAK2sB,WACL25D,EAAav/E,MAAMC,QAAU,QAEjChH,KAAKiI,QAAQ,oBAAqB,CAAEoI,QAASrQ,QAOjDkD,EAAQhD,UAAU6U,eAAiB,WAC/B,IAAI8sC,EAAY,GAChB,OAAO7hD,KAAKgV,aAAa6sC,IAO7B3+C,EAAQhD,UAAU4U,cAAgB,WAC9B,MAAO,WAOX5R,EAAQhD,UAAUsS,QAAU,WACxB3P,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC9BA,KAAKoD,QAAQ8B,UAAUC,OAAO,cAQlCjC,EAAQhD,UAAU+U,kBAAoB,SAAUC,EAASC,GACjDnV,KAAKwgF,gBACL,gBAAoBxgF,KAAKoD,QAAQkI,GAAbtL,kCAExBA,KAAK+rB,SAAU,EACf/rB,KAAK2T,UAETvT,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,iBAAa,GACnCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,oBAAgB,GACtCE,EAAW,CACP,eAAS,OACV8C,EAAQhD,UAAW,YAAQ,GAC9BE,EAAW,CACP,eAAS,KACV8C,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,eAAS,MACV8C,EAAQhD,UAAW,eAAW,GACjCE,EAAW,CACP,eAAQ,CAAE0V,KAAM,OAAQE,WAAY,KAAML,MAAO,KAAMI,UAAW,SAAUE,WAAY,MAAQ,IACjG/S,EAAQhD,UAAW,iBAAa,GACnCE,EAAW,CACP,eAAS,OACV8C,EAAQhD,UAAW,gBAAY,GAClCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,uBAAmB,GACzCE,EAAW,CACP,eAAS,MACV8C,EAAQhD,UAAW,gBAAY,GAClCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,gBAAY,GAClCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,kBAAc,GACpCE,EAAW,CACP,eAAQ,CAAEuV,MAAO,KAAMrQ,MAAO,MAAQ,IACvCpC,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,eAAS,KACV8C,EAAQhD,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,KACV8C,EAAQhD,UAAW,kBAAc,GACpCE,EAAW,CACP,eAAQ,CAAE4F,EAAG,EAAGC,EAAG,GAAK,IACzB/C,EAAQhD,UAAW,kBAAc,GACpCE,EAAW,CACP,eAAS,KACV8C,EAAQhD,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,KACV8C,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,eAAQ,CAAE4F,EAAG,EAAGC,EAAG,GAAK,IACzB/C,EAAQhD,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAS,IACV8C,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,eAAS,IACV8C,EAAQhD,UAAW,UAAM,GAC5BE,EAAW,CACP,eAAS,IACV8C,EAAQhD,UAAW,UAAM,GAC5BE,EAAW,CACP,eAAS,IACV8C,EAAQhD,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,IACV8C,EAAQhD,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,IACV8C,EAAQhD,UAAW,oBAAgB,GACtCE,EAAW,CACP,eAAS,OACV8C,EAAQhD,UAAW,YAAQ,GAC9BE,EAAW,CACP,eAAS,aACV8C,EAAQhD,UAAW,aAAS,GAC/BE,EAAW,CACP,eAAQ,CAAE4F,EAAG,EAAGC,EAAG,EAAGX,MAAO,EAAGD,OAAQ,GAAK,IAC9CnC,EAAQhD,UAAW,kBAAc,GACpCE,EAAW,CACP,eAAS,OACV8C,EAAQhD,UAAW,qBAAiB,GACvCE,EAAW,CACP,kBACD8C,EAAQhD,UAAW,sBAAkB,GACxCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,gBAAY,GAClCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,kBAAc,GACpCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,OACV8C,EAAQhD,UAAW,wBAAoB,GAC1CE,EAAW,CACP,eAAS,OACV8C,EAAQhD,UAAW,uBAAmB,GACzCE,EAAW,CACP,eAAS,KACV8C,EAAQhD,UAAW,mBAAe,GACrCE,EAAW,CACP,kBACD8C,EAAQhD,UAAW,qBAAiB,GACvCE,EAAW,CACP,kBACD8C,EAAQhD,UAAW,cAAU,GAChCE,EAAW,CACP,kBACD8C,EAAQhD,UAAW,yBAAqB,GAC3CE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,iBAAa,GACnCE,EAAW,CACP,gBAAS,IACV8C,EAAQhD,UAAW,sBAAkB,GACxCgD,EAAU9C,EAAW,CACjB,QACD8C,GACIA,EA5/BiB,CA6/B1B,S,kCC3oCF,kGAcIqjF,EAA4B,WAC5B,SAASA,KAqmBT,OAnmBAA,EAAWrmF,UAAUsmF,kBAAoB,SAAUlvE,GAI/C,GAHIA,EAAOC,MAAMkvE,4BAA8BnvE,EAAOvT,UAClD/D,KAAK0mF,uBAAuBpvE,GAE5BA,EAAOqvE,mBACP,OAAO,IAAI,OAAY,EAAG,GAE9B,IAAI5iF,EAA2B,cAAhBuT,EAAO9I,MAAyB8I,EAAOC,MAAMkvE,0BAAgCnvE,EAAOvT,SAAX,EACpF02C,EAA4B,cAAhBnjC,EAAO9I,MAAyB8I,EAAOC,MAAMkvE,0BAAgCnvE,EAAOmjC,UAAX,EACzFnjC,EAAO4J,cAAe,EACtB,IAMIwE,EANAnK,EAAgBjE,EAAOC,MAAMgE,cAC7BqrE,EAAgBtvE,EAAOC,MAAMkvE,0BAA4BnvE,EAAOuvE,cAAgB,EAChFC,EAAuC,OAAvBxvE,EAAOyvE,aAAwBnpE,OAAOtG,EAAOyvE,aAAkC,cAAhBzvE,EAAO9I,KAAwB,EAAI,GAClHrF,KAAKuS,IAAIpE,EAAOyvE,YAAa,GAC7BC,EAAoB,eAAkB1vE,EAAOiC,MAAOgC,GACpDjW,EAAQ0hF,EAAoBF,EAE5Bn5D,EAAW,EAAa8sB,EAAY,GACpCmf,EAAc,IAAI,OAAYjsC,EAAUA,EAAY,EAAI8sB,GAC5D,IAAM78B,MAAMg8C,EAAY18C,SAAUU,MAAMg8C,EAAYz8C,KAAO,CACvD,GAAI7F,EAAO2vE,YAAkD,IAArC3vE,EAAO9I,KAAKxK,QAAQ,YAAoB,CAC5D,IAAIkjF,EAAoB,GACxB5vE,EAAOC,MAAMD,OAAO8G,QAAO,SAAU9G,GAAcA,EAAOyvE,YAAcG,IACpEA,EAAoB5vE,EAAOyvE,gBAE/B,IAAII,EAAYH,EAAoBE,EAChCE,EAAkB,IAAI,OAAYxtB,EAAY18C,MAAQiqE,EAAWvtB,EAAYz8C,IAAMgqE,GACnFE,GAAeD,EAAqB,OAAKxtB,EAAYz8C,IAAM7X,EAAQs0D,EAAY18C,MAAQ5X,IAAU,EACrGs0D,EAAc,IAAI,OAAYwtB,EAAgBlqE,MAAQmqE,EAAYD,EAAgBjqE,IAAMkqE,QAGxFztB,EAAc,IAAI,OAAYA,EAAY18C,MAAQ5X,EAAOs0D,EAAYz8C,IAAM7X,GAE/EogB,EAASkhE,EAAgBhtB,EAAY3uB,MACrC2uB,EAAc,IAAI,OAAYA,EAAY18C,MAAQwI,EAAS,EAAGk0C,EAAYz8C,IAAMuI,EAAS,GAE7F,OAAOk0C,GAQX2sB,EAAWrmF,UAAUonF,aAAe,SAAU9hD,EAAIE,EAAID,EAAIE,EAAIruB,GAC1D,IAAI+4B,EAAS,eAAS7K,EAAIE,EAAIpuB,EAAOiC,MAAOjC,EAAO0G,MAAO1G,EAAOC,MAAMoN,qBACnE2rB,EAAS,eAAS7K,EAAIE,EAAIruB,EAAOiC,MAAOjC,EAAO0G,MAAO1G,EAAOC,MAAMoN,qBACvE,OAAO,IAAI,OAAKxb,KAAKuS,IAAI20B,EAAOrqC,EAAGsqC,EAAOtqC,GAAImD,KAAKuS,IAAI20B,EAAOpqC,EAAGqqC,EAAOrqC,GAAIkD,KAAK6a,IAAIssB,EAAOtqC,EAAIqqC,EAAOrqC,GAAImD,KAAK6a,IAAIssB,EAAOrqC,EAAIoqC,EAAOpqC,KAQ1IsgF,EAAWrmF,UAAUqnF,aAAe,SAAUpkF,EAASC,EAASokF,EAAsBh5D,EAAMlX,GACxF,IAAIhS,EAAQkpB,EAAKlpB,MACbD,EAASmpB,EAAKnpB,OAClB,GAAIiS,EAAOC,MAAMyN,aAAc,CAC3B,IAAIq0D,EAAM/hE,EAAOC,MAAMkwE,aAAapO,IAChCe,EAAYf,EAChBA,EAAIQ,OACJ,IAAI6N,EAAgB,eAAevkF,EAAQid,MACvCpa,EAAIwoB,EAAKxoB,EAAIsR,EAAOF,SAASpR,EAC7BC,EAAIuoB,EAAKvoB,EAAIqR,EAAOF,SAASnR,EAC7Bs1E,EAAM,EAAIpyE,KAAK2gC,GAAK,GACpBuwC,OAAK,EAAQgC,OAAK,EAAQsL,OAAM,EAAQC,OAAM,EAAQC,OAAM,EAAQC,OAAM,EAAQtiD,OAAK,EAAQC,OAAK,EAAQC,OAAK,EAAQC,OAAK,EAAQ4yC,OAAK,EAAQC,OAAK,EAAQuP,OAAK,EAAQC,OAAK,EAAQC,OAAO,EAAQC,OAAO,EAAQC,OAAO,EAAQC,OAAM,EAAQC,OAAM,EAC3PC,EAAM,EACNC,EAAM,EACNC,EAAM,EACNC,EAAM,EACNC,EAAM,EACVrP,EAAImB,UAAY,eAAYkN,EAAe,IAC3CrO,EAAII,UAAY,EAChBJ,EAAIO,YAAc,eAAY8N,EAAe,IAC7CrO,EAAIiB,YAAcn3E,EAAQqwC,QACtBg0C,EAAqB/D,UACrB6E,EAAMtiF,EACNuiF,EAAMjjF,EAAQU,EACdq0E,EAAK/0E,EAAQ,EACb+2E,EAAKhC,EAAK,EACVuN,EAAMD,EAAM3hF,EAAIq0E,EAChB10C,EAAKkiD,EAAM5hF,EAAIo2E,EACf52C,EAAKz/B,EACLw/B,EAAKx/B,EAAIV,EACTwiF,EAAMpiD,EAAKz/B,EAAIZ,EAASg3E,EACxB8L,EAAOh/E,KAAK2gC,GACZs+C,GAAO/N,EACPgO,EAAMhM,EACFmL,EAAqBmB,WAChBnB,EAAqBoB,eACtBjjD,EAAKkiD,EAAM5hF,EAAIo2E,MAKvBoM,EAAMpjF,EAASY,EACfuiF,EAAMviF,EACNo2E,EAAKh3E,EAAS,EACdg1E,EAAKgC,EAAK,EACV52C,EAAKkiD,EAAM3hF,EAAIq0E,EACf70C,EAAKoiD,EAAM5hF,EAAIV,EAAQ+0E,EACvB30C,EAAKz/B,EAAIZ,EACTsgC,EAAK1/B,EACL6hF,EAAMD,EAAM5hF,EAAIo2E,EAChBqM,EAAMv/E,KAAK2gC,GAAK,EAChBq+C,EAAiB,IAAVh/E,KAAK2gC,GACR09C,EAAqBmB,WAChBnB,EAAqBoB,eACtBpjD,EAAKoiD,EAAM5hF,EAAIV,EAAQ+0E,IAG/BgC,GAAMA,EACNhC,GAAMA,EACN+N,EAAM/N,EACNgO,GAAOhM,GAEX,IAAI1mE,EAAQ,eAAY+xE,EAAe,IACnC5O,EAAWO,EAAIT,qBAAqB0P,EAAKE,EAAKD,EAAKE,GACvD3P,EAASgE,aAAa,EAAG4K,GACzB5O,EAASgE,aAAa,GAAKnnE,GAC3BmjE,EAASgE,aAAa,GAAKnnE,GAC3BmjE,EAASgE,aAAa,EAAG4K,GACzB,IAAK,IAAI7jE,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACzB,IAAI7iB,EAAI,EAyBR,IAxBI6iB,EAAI,GACJw1D,EAAIS,YAEJj2D,EAAI,IAAM,GACV00D,EAAKqP,EACLpP,EAAKsP,EACLC,EAAKtiD,EACLuiD,EAAKriD,IAGL4yC,EAAKoP,EACLnP,EAAKqP,EACLE,EAAKviD,EACLwiD,EAAKtiD,GAEC,IAAN7hB,IACAw2D,EAAK+N,EACL/L,EAAKgM,EACLhP,EAAImB,UAAY1B,GAEhBj1D,EAAI,IACJ7iB,EAAI0nF,EACJnN,EAAM4M,GAEHnnF,GAAKu6E,EAAKv6E,GAAK,GAClBinF,EAAO1P,EAAM8B,EAAKlxE,KAAK0gC,IAAI7oC,GAC3BknF,EAAO1P,EAAM6D,EAAKlzE,KAAKu2E,IAAI1+E,GACjB,IAANA,EACAq4E,EAAIW,OAAOiO,EAAMC,GAGjB7O,EAAIY,OAAOgO,EAAMC,GAGrBrkE,EAAI,GACJw1D,EAAIY,OAAO8N,EAAIC,GAET,IAANnkE,IACAw1D,EAAIU,SACJV,EAAIj5D,QAGRjd,EAAQmI,GAAGtH,QAAQ,WAAa,IAChCq1E,EAAI8D,OACJ9D,EAAIa,UACJb,EAAMe,OAGT,CACD,IAAI7iE,EAAQD,EAAOC,MAGfjM,GAFAtF,EAAIwoB,EAAKxoB,EACTC,EAAIuoB,EAAKvoB,EACJ9C,EAAQmI,IAEby1C,GADA2mC,EAAgBvkF,EAAQid,KACZsnE,GACZl3D,EAAS,eAAiBk3D,GACzBl3D,IACDk3D,EAAgB,eAAeA,IAEnC,IAAImB,EAAM,EACNC,EAAM,EACNC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EACL3jF,OAAI,EAAQC,QAAI,EAAQ2jF,QAAK,EAAQC,QAAK,EAAQC,QAAK,EAAQC,QAAK,EAAQjP,OAAK,EAAQgC,OAAK,EAC9Fr7E,EAAI,EACJwmF,EAAqB/D,UACrBpJ,EAAK/0E,EAAQ,EACb+2E,EAAKhC,EAAK,EACV90E,EAAI4jF,GAAKnjF,EACTR,GAAI62E,EAAKp2E,EAAIA,EAAIo2E,EAAKmL,EAAqBmB,SAAW1iF,EAAIo2E,EAAMp2E,EAAIo2E,EACpE+M,GAAK5jF,GACLqjF,EAAM,EAAIxO,EACV2O,EAAK3M,EAAKp2E,GAAcZ,EAAS,EAAIg3E,EAAvBh3E,EAAqCmiF,EAAqBmB,SAAWtjF,EAAU,EAAIg3E,EAAMh3E,EACvGgkF,GAAK9jF,EACL+jF,GAAKjN,EAAKp2E,EAAIT,GAAIH,EAAUA,EAASG,GAAIH,EAASG,GAAIgiF,EAAqBmB,SAAWtjF,GAAUY,EAAIo2E,GAAMh3E,EAASG,GACnHyjF,EAAK,IACDzB,EAAqBmB,WAChBnB,EAAqBoB,eACtBpjF,GAAI4jF,GAAKnjF,EAAIo2E,EACb2M,EAAK3jF,EAASg1E,EAAK,EAAIh1E,EAASA,EAASg1E,EAAK,MAKtDgC,EAAKh3E,EAAS,EACdg1E,EAAKgC,EAAK,EACV72E,GAAI4jF,GAAKnjF,EACTV,EAAI4jF,GAAKhgF,KAAK6a,IAAIhe,EAAIq0E,GACtByO,EAAM,EAAIzM,EACV0M,EAAKzjF,EACL+jF,GAAK9jF,EAAID,EACTgkF,GAAK9jF,GACL0jF,EAAK,IACD1B,EAAqBmB,WAChBnB,EAAqBoB,eACtBS,GAAM9jF,EAAID,EAAa,EAAL+0E,EAClB0O,EAAKzjF,EAAa,EAAL+0E,KAIzB,gBAAOr6E,KAAKoD,SACZ,MAAOpC,IACHmC,EAAQ5D,EAAI,IAAMgG,EAAEqM,WAAa,IAAMpM,GAAEoM,WAAa,IAAMyoE,EAAGzoE,WAAa,IAAMyqE,EAAGzqE,WAAa,UAAYi3E,EAAIj3E,WAAa,IAAMk3E,EAAIl3E,WAAa,IAAMyoE,EAAGzoE,WAAa,IAAMyqE,EAAGzqE,WAAa,YAAc,EAAIi3E,GAAKj3E,WAAa,MAAQ,EAAIk3E,GAAKl3E,WACvPzO,EAAQmI,GAAKA,aAAuBtK,EACpCmC,EAAQid,KAAO,eAAYsnE,EAAe,IACtC1mF,EAAI,IAAM,GAAqB,mBAAhBsW,EAAO9I,MAA6C,gBAAhB8I,EAAO9I,MAA0C,QAAhB8I,EAAO9I,OAC3FrL,EAAQid,KAAOjd,EAAQid,KAAO,MAElCpgB,KAAKoD,QAAUmU,EAAM+N,SAASkhB,SAASxmC,KAAKmD,QAAS,IAAIomF,WAAW,CAACjyE,EAAOF,SAASpR,EAAGsR,EAAOF,SAASnR,KACxG,eAAmBqR,EAAOC,MAAMyN,aAAc1N,EAAO2O,cAAejmB,KAAKoD,QAASmU,EAAMqO,QACxFrgB,EAAI8jF,GACJ7jF,GAAI8jF,GAERnmF,EAAQ5D,EAAI,IAAM4pF,GAAGv3E,WAAa,IAAMw3E,GAAGx3E,WAAa,IAAMyoE,EAAGzoE,WAAa,IAAMyqE,EAAGzqE,WAAa,UAAYi3E,EAAIj3E,WAAa,IAAMk3E,EAAIl3E,WAAa,IAAMm3E,EAAGn3E,WAAa,IAAMo3E,EAAGp3E,WAAa,IAAMyoE,EAAGzoE,WAAa,IAAMyqE,EAAGzqE,WAAa,YAAc,EAAIi3E,GAAKj3E,WAAa,MAAQ,EAAIk3E,GAAKl3E,WAAa,KAClTzO,EAAQmI,GAAKA,cACbnI,EAAQid,KAAO,eAAYsnE,EAAe,IAC1C,IAAI8B,QAAU,EACd,IAAkC,IAA9BzoC,EAAU/8C,QAAQ,OAAe,CACjC,IAAK4J,SAASyd,eAAe/f,GAAK,CAC9Bk+E,GAAU,CAAE,GAAMl+E,EAAIk6B,GAAI,KAAME,GAAI,KAAMD,GAAIwjD,EAAGr3E,WAAa,IAAK+zB,GAAIujD,EAAGt3E,WAAa,KACvF,IAAI63E,GAAkB,CAAC,CAAEpR,UAAW,KAAM1iE,MAAO+xE,GAAiB,CAAErP,UAAW,MAAO1iE,MAAO,eAAY+xE,EAAe,KAAQ,CAAErP,UAAW,MAAO1iE,MAAO,eAAY+xE,EAAe,KAAQ,CAAErP,UAAW,OAAQ1iE,MAAO+xE,IAC1N1nF,KAAK24E,aAAa6Q,GAASC,GAAiBnyE,GAEhDnU,EAAQid,KAAO,QAAUopE,GAAQl+E,GAAK,IAE1CtL,KAAKoD,QAAUmU,EAAM+N,SAASkhB,SAASxmC,KAAKmD,QAAS,IAAIomF,WAAW,CAACjyE,EAAOF,SAASpR,EAAGsR,EAAOF,SAASnR,KACxG,eAAmBqR,EAAOC,MAAMyN,aAAc1N,EAAO2O,cAAejmB,KAAKoD,QAASmU,EAAMqO,UAShG2gE,EAAWrmF,UAAUy4E,aAAe,SAAU6Q,EAASC,EAAiBnyE,GACpE,IAAIC,EAAQD,EAAOC,MACfw4D,EAAax4D,EAAM+N,SAAS0qD,aAC5BH,EAAQ,6BACR6Z,EAAwB97E,SAASuiE,gBAAgBN,EAAO,kBAC5D6Z,EAAsB/+E,aAAa,KAAM6+E,EAAQl+E,IACjDo+E,EAAsB/+E,aAAa,KAAM6+E,EAAQhkD,IACjDkkD,EAAsB/+E,aAAa,KAAM6+E,EAAQ9jD,IACjDgkD,EAAsB/+E,aAAa,KAAM6+E,EAAQ/jD,IACjDikD,EAAsB/+E,aAAa,KAAM6+E,EAAQ7jD,IACjD,IAAK,IAAI3kC,EAAI,EAAGA,EAAIyoF,EAAgB9oF,OAAQK,IAAK,CAC7C,IAAI2oF,EAAc/7E,SAASuiE,gBAAgBN,EAAO,QAClD8Z,EAAYh/E,aAAa,SAAU8+E,EAAgBzoF,GAAGq3E,WACtDsR,EAAYh/E,aAAa,aAAc8+E,EAAgBzoF,GAAG2U,OAC1Dg0E,EAAYh/E,aAAa,eAAgB,KACzC++E,EAAsBhlF,YAAYilF,GAEtCryE,EAAO2O,cAAcvhB,YAAYqrE,GACjCA,EAAWrrE,YAAYglF,IAQ3BnD,EAAWrmF,UAAUwmF,uBAAyB,SAAUpvE,GAEpD,IADA,IAAIC,EAAQD,EAAOC,MACV1J,EAAK,EAAGhK,EAAK0T,EAAMmL,QAAS7U,EAAKhK,EAAGlD,OAAQkN,IAEjD,IADA,IAAI8U,EAAa9e,EAAGgK,GACX/J,EAAK,EAAG0d,EAAKjK,EAAMqL,KAAM9e,EAAK0d,EAAG7gB,OAAQmD,IAAM,CACpD,IAAIyd,EAAOC,EAAG1d,GACd9D,KAAK4pF,iBAAiBtyE,EAAOmK,qBAAqBkB,EAAYpB,GAAM,MAIhFglE,EAAWrmF,UAAU0pF,iBAAmB,SAAU/nE,GAG9C,IAFA,IAAIyB,EAAiB,GACjBumE,EAAU,CAAEpvC,UAAW,EAAG12C,SAAU,MAC/B/C,EAAI,EAAGA,EAAI6gB,EAAiBlhB,OAAQK,IAAK,CAC9C,IAAIgc,EAAQ6E,EAAiB7gB,GAC7B,IAAwC,IAApCgc,EAAMxO,KAAKxK,QAAQ,aAA0C,KAApBgZ,EAAMiqE,UAAkB,CACjE,IAAIA,GAAgD,IAApCjqE,EAAMxO,KAAKxK,QAAQ,YAAqBgZ,EAAMgG,cAAgBhG,EAAMxO,KAAOwO,EAAMiqE,UAC7FA,OACkC17E,IAA9B+X,EAAe2jE,IACfjqE,EAAMjZ,SAAW8lF,EAAQpvC,UACzBn3B,EAAe2jE,GAAa4C,EAAQpvC,aAGpCz9B,EAAMjZ,SAAWuf,EAAe2jE,GAIX,OAArB4C,EAAQ9lF,UACRiZ,EAAMjZ,SAAW8lF,EAAQpvC,UACzBovC,EAAQ9lF,SAAW8lF,EAAQpvC,aAG3Bz9B,EAAMjZ,SAAW8lF,EAAQ9lF,cAKjCiZ,EAAMjZ,SAAW8lF,EAAQpvC,YAGjC,IAASz5C,EAAI,EAAGA,EAAI6gB,EAAiBlhB,OAAQK,IAAK,CAC1Cgc,EAAQ6E,EAAiB7gB,GAC7Bgc,EAAMy9B,UAAYovC,EAAQpvC,YASlC8rC,EAAWrmF,UAAU4pF,qBAAuB,SAAUxxE,EAAOkW,EAAMlX,GAC1DA,EAAOC,MAAMoN,oBAId3kB,KAAK+pF,cAAczxE,EAAOkW,EAAMlX,GAHhCtX,KAAKgqF,cAAc1xE,EAAOkW,EAAMlX,GAKhB,cAAhBA,EAAO9I,OACP8J,EAAM4C,SAAW5C,EAAMtS,EAAIsR,EAAO8D,gBAAgBC,SAAW,EAC7D/C,EAAM2C,SAAW3C,EAAMtS,EAAIsR,EAAO8D,gBAAgBC,SAAW,IASrEkrE,EAAWrmF,UAAU8pF,cAAgB,SAAU1xE,EAAOkW,EAAMlX,GACxDgB,EAAMjC,gBAAgBhK,KAAK,CACvBrG,EAAGwoB,EAAKxoB,EAAKwoB,EAAU,MAAI,EAC3BvoB,EAA0B,YAAtBqR,EAAOa,aAAsE,IAA1Cb,EAAOa,WAAWnU,QAAQ,YAC5DsU,EAAMmD,QAAU,KAAOnE,EAAO0G,MAAMqrB,cAAkB7a,EAAKvoB,EAAKuoB,EAAKvoB,EAAIuoB,EAAKnpB,SAEvFrF,KAAKiqF,UAAU3xE,EAAOkW,EAAMlX,GACR,gBAAhBA,EAAO9I,MACP8J,EAAMjC,gBAAgBhK,KAAK,CACvBrG,EAAGwoB,EAAKxoB,EAAKwoB,EAAU,MAAI,EAC3BvoB,EAAGuoB,EAAKvoB,EAAIuoB,EAAKnpB,UAU7BkhF,EAAWrmF,UAAU6pF,cAAgB,SAAUzxE,EAAOkW,EAAMlX,GACxDgB,EAAMjC,gBAAgBhK,KAAK,CACvBrG,EAA0B,YAAtBsR,EAAOa,aAAsE,IAA1Cb,EAAOa,WAAWnU,QAAQ,YAC5DsU,EAAMmD,QAAU,KAAOnE,EAAO0G,MAAMqrB,cAAkB7a,EAAKxoB,EAAIwoB,EAAKlpB,MAAQkpB,EAAKxoB,EACtFC,EAAGuoB,EAAKvoB,EAAIuoB,EAAKnpB,OAAS,IAE9BrF,KAAKiqF,UAAU3xE,EAAOkW,EAAMlX,GACR,gBAAhBA,EAAO9I,MACP8J,EAAMjC,gBAAgBhK,KAAK,CACvBrG,EAAGwoB,EAAKxoB,EACRC,EAAGuoB,EAAKvoB,EAAIuoB,EAAKnpB,OAAS,KAUtCkhF,EAAWrmF,UAAUg1C,aAAe,SAAU59B,GACtCA,EAAOZ,QAAUY,EAAOZ,OAAOC,SAC/BW,EAAOC,MAAMuP,aAAanT,OAAO2D,IAUzCivE,EAAWrmF,UAAU+pF,UAAY,SAAU3xE,EAAOkW,EAAMlX,GACpD,GAAgB,IAAZgB,EAAMrS,EAAS,CACf,IAAIuf,EAAelO,EAAOZ,QAAUY,EAAOZ,OAAOpR,MAASgS,EAAOZ,OAAOpR,MAAQ,EAC7EigB,EAAgBjO,EAAOZ,QAAUY,EAAOZ,OAAOrR,OAAUiS,EAAOZ,OAAOrR,OAAS,EACpFiT,EAAMhC,QAAQjK,KAAK,IAAI,OAAKiM,EAAMjC,gBAAgB,GAAGrQ,EAAIwf,EAAalN,EAAMjC,gBAAgB,GAAGpQ,EAAIsf,EAAc,EAAIC,EAAa,EAAID,SAGtIjN,EAAMhC,QAAQjK,KAAKmiB,IAS3B+3D,EAAWrmF,UAAUgqF,aAAe,SAAU5yE,EAAQgB,EAAO8H,EAAMgF,GAC/D,IAAIjF,EAAW,CACX1R,QAAQ,EAAOuB,KAAM,OAAasH,OAAQA,EAAQgB,MAAOA,EACzD8H,KAAM9I,EAAO6P,cAAc7O,EAAO8H,GAClCgF,OAAQ9N,EAAO8P,eAAe9O,EAAO8M,IAIzC,OAFA9N,EAAOC,MAAMtP,QAAQ,OAAakY,GAClC7H,EAAM3C,MAAQwK,EAASC,KAChBD,GAQXomE,EAAWrmF,UAAUogD,cAAgB,SAAUhpC,EAAQgB,EAAOkW,EAAMrO,GAChE,IAKImW,EALA/e,EAAQD,EAAOC,MACfqmC,EAAQrmC,EAAMoN,oBAAsB6J,EAAKnpB,OAASmpB,EAAKlpB,MAC3D,GAAIs4C,GAAS,EACT,OAAO,KAKPtnB,EAFY,IAAZhe,EAAMrS,EAEMjG,KAAKmqF,yBAAyB37D,EAAM,EAAG,EAAG,EAAG,GAG7CxuB,KAAKmqF,yBAAyB37D,EAAMlX,EAAO8oC,aAAagqC,QAAS9yE,EAAO8oC,aAAaiqC,SAAU/yE,EAAO8oC,aAAakqC,WAAYhzE,EAAO8oC,aAAamqC,YAAahzE,EAAMoN,qBAEtL,IAAI3U,EAA2B,cAApBsH,EAAOsB,SAA2BrB,EAAMnU,QAAQkI,GAAK,cAAgBgM,EAAO7K,MAAQ,IAAM6K,EAAOtH,KACxG,UAAYsI,EAAM7L,MAAQ8K,EAAMnU,QAAQkI,GAAK,WAAagM,EAAO7K,MAAQ,UAAY6L,EAAM7L,MAC3Fy5C,EAAkB,gBAAc3uC,EAAMqO,OAAQ5V,GAC9Cw6E,EAAoBtkC,EAAkBA,EAAgBx7C,aAAa,KAAO,GAG9E,OAFA1K,KAAKmD,QAAU,IAAI,OAAW6M,EAAMmQ,EAASC,KAAMD,EAASiF,OAAO9f,MAAO6a,EAASiF,OAAOzP,MAAO2B,EAAOk8B,QAASl8B,EAAOgvB,UAAmC,aAAvBhvB,EAAOmzE,YAA8B,GAAKn0D,GAC9Kt2B,KAAKoD,QAAUmU,EAAM+N,SAASkhB,SAASxmC,KAAKmD,QAAS,IAAIomF,WAAW,CAACjyE,EAAOF,SAASpR,EAAGsR,EAAOF,SAASnR,KAChGqR,EAAOa,YACX,IAAK,KACDnY,KAAKoD,QAAQuH,aAAa,OAAQ,OAClC3K,KAAKoD,QAAQuH,aAAa,aAAc2N,EAAMtS,EAAI,IAAMsS,EAAMmD,OAAS,KAAOnE,EAAOtH,MACrF,MACJ,IAAK,UACDhQ,KAAKoD,QAAQuH,aAAa,OAAQ,OAClC3K,KAAKoD,QAAQuH,aAAa,aAAc2N,EAAMtS,EAAI,IAAMsS,EAAM0D,KAAO,KAAO1D,EAAM2D,IAAM,KAAO3E,EAAOtH,MACtG,MAER,eAAmBsH,EAAOC,MAAMyN,aAAc1N,EAAO2O,cAAejmB,KAAKoD,QAASmU,EAAMqO,QACnFtO,EAAOC,MAAMyN,cACd,gBAAchlB,KAAKoD,QAAiC,aAAvBkU,EAAOmzE,YAA8B,GAAKn0D,EAAW/e,EAAMqO,OAAQ4kE,EAAmBjzE,EAAMvU,WASjIujF,EAAWrmF,UAAUw0C,QAAU,SAAUp9B,GAIrC,IAHA,IAAIy8B,EAAez8B,EAAO2O,cAAcgF,WACpClL,EAA4B,cAApBzI,EAAOsB,SAA2B,EAAI,EAC9C2K,EAAgB,eAAiBjM,GAC5BzJ,EAAK,EAAG68E,EAAkBnnE,EAAe1V,EAAK68E,EAAgB/pF,OAAQkN,IAAM,CACjF,IAAIyK,EAAQoyE,EAAgB78E,GAC5B,GAAKyK,EAAMjC,gBAAgB1V,QAA4B,kBAAhB2W,EAAO9I,MAA4B8J,EAAMhC,QAAQ3V,OAGxF,GAAqB,WAAhB2W,EAAO9I,MAAqC,QAAhB8I,EAAO9I,MAAkC,mBAAhB8I,EAAO9I,MAA6C,sBAAhB8I,EAAO9I,MAAgD,gBAAhB8I,EAAO9I,MAA0C,mBAAhB8I,EAAO9I,MAAqD,aAAvB8I,EAAOmzE,YAM9MzqF,KAAK2qF,YAAY52C,EAAah0B,GAAQzI,EAAQgB,GAC9CyH,SANA,IAAK,IAAI8D,EAAI,EAAGA,EAAIkwB,EAAapzC,OAAQkjB,IACrC7jB,KAAK2qF,YAAY52C,EAAalwB,GAAIvM,EAAQgB,KAe1DiuE,EAAWrmF,UAAUyqF,YAAc,SAAUvnF,EAASkU,EAAQgB,GAC1D,IAIItS,EACAC,EAGAquC,EACAC,EA6BAv3B,EAtCAlD,EAASxC,EAAO/J,UAChBvK,EAAWsU,EAAOC,MAAM6+B,SAAW9+B,EAAOC,MAAMvU,SAAW8W,EAAO9W,SAClED,EAAS,eAAqB,UAC9B6nF,EAAStyE,EAAMmD,OAAS,EAGxBovE,GAAiBvyE,EAAMhC,QAAQ,GAAGjR,OAClCylF,GAAgBxyE,EAAMhC,QAAQ,GAAGhR,MAGhCgS,EAAOC,MAAMoN,qBAed1e,GAAKqS,EAAMhC,QAAQ,GAAGrQ,EAClBqR,EAAO9I,KAAKxK,QAAQ,aAAe,GACnCgC,EAAK,eAAD,CAAoB,EAAGsR,EAAO0G,OAAU1G,EAAO0G,MAAMwQ,KAAKlpB,MAC9DgvC,EAAUtuC,EACVuuC,EAAUtuC,IAGVD,GAAKsS,EAAMhC,QAAQ,GAAGtQ,EACtBuuC,EAAUq2C,EAAS3kF,EAAIA,EAAI4kF,EAC3Bv2C,GAAqD,IAA1Ch9B,EAAOa,WAAWnU,QAAQ,aAA2D,IAAtCsT,EAAO9I,KAAKxK,QAAQ,aAAuBgC,EAAI8kF,EAAe,EACnHF,IAAWtzE,EAAO0G,MAAMqrB,cAAiBrjC,EAAI8kF,EAAe9kF,KAxBrEA,GAAKsS,EAAMhC,QAAQ,GAAGtQ,EAClBsR,EAAO9I,KAAKxK,QAAQ,aAAe,GACnCiC,GAAK,EAAI,gBAAmB,EAAGqR,EAAO0G,QAAW1G,EAAO0G,MAAMwQ,KAAW,OACzE8lB,EAAUtuC,EACVuuC,EAAUtuC,IAGVA,GAAKqS,EAAMhC,QAAQ,GAAGrQ,EACtBsuC,GAAqD,IAA1Cj9B,EAAOa,WAAWnU,QAAQ,aAA2D,IAAtCsT,EAAO9I,KAAKxK,QAAQ,aAAuBiC,EAAI4kF,EAAgB,EACpHD,IAAWtzE,EAAO0G,MAAMqrB,cAAiBpjC,EAAIA,EAAI4kF,EACtDv2C,EAAUs2C,EAAS5kF,EAAIA,EAAI8kF,IAkB9B,eAAkB1nF,KACnBA,EAAQ2D,MAAM8tC,WAAa,SAC3B,IAAI,OAAU,IAAIH,QAAQtxC,EAAS,CAC/BJ,SAAwB,IAAbA,GAAoC,WAAlB,OAA8B,IAAOA,EAClEC,MAAO6W,EAAO7W,MACd0xC,SAAU,SAAUtgB,GACZA,EAAKugB,WAAavgB,EAAKpxB,QACvBG,EAAQ2D,MAAM8tC,WAAa,UACtBv9B,EAAOC,MAAMoN,qBAOdmmE,EAAeA,GAA8B,EAC7C9tE,EAAQja,EAAOsxB,EAAKugB,UAAYvgB,EAAKpxB,MAAO,EAAG6nF,EAAcz2D,EAAKrxB,UAClEI,EAAQuH,aAAa,YAAa,aAAe2pC,EAAU,IAAMC,EAC7D,WAAcv3B,EAAQ8tE,EAAgB,mBAAsBx2C,EAAW,KAAQC,EAAW,OAT9Fs2C,EAAgBA,GAAgC,EAChD7tE,EAAQja,EAAOsxB,EAAKugB,UAAYvgB,EAAKpxB,MAAO,EAAG4nF,EAAex2D,EAAKrxB,UACnEI,EAAQuH,aAAa,YAAa,aAAe2pC,EAAU,IAAMC,EAC7D,aAAgBv3B,EAAQ6tE,EAAiB,gBAAmBv2C,EAAW,KAAQC,EAAW,QAU1Gp3B,IAAK,WACD/Z,EAAQuH,aAAa,YAAa,kBAClC,IAAIsb,EAAgB3O,EAAO2O,cAC3B,IAAI7iB,IAAY6iB,EAAc8kE,kBAAoBzyE,EAAM7L,QAAU6K,EAAOE,OAAO7W,OAAS,GACpE,cAAhB2W,EAAO9I,MAAwBpL,IAAY6iB,EAAcggC,SAAShgC,EAAc+2B,kBAAoB,MACrG1lC,EAAOC,MAAMtP,QAAQ,oBAAqB,CAAEqP,OAAQA,EAAOC,MAAMmD,SAAW,GAAKpD,IAC7D,cAAhBA,EAAO9I,MAEP,IADA,IAAIulC,EAAe9tB,EAAcgF,WACxBjqB,EAAI,EAAGA,EAAI+yC,EAAapzC,OAAQK,KACY,IAA7C+yC,EAAa/yC,GAAGsK,GAAGtH,QAAQ,eAC3B+vC,EAAa/yC,GAAG+F,MAAM8tC,WAAa,UACnCd,EAAa/yC,GAAG2J,aAAa,YAAa,wBAY1E47E,EAAWrmF,UAAUiqF,yBAA2B,SAAU37D,EAAM47D,EAASC,EAAUC,EAAYC,EAAan8D,QACvF,IAAbA,IAAuBA,GAAW,GACtC,IAAI48D,EAAY58D,EAAWI,EAAKlpB,MAAQ,EAAIkpB,EAAKnpB,OAAS,EAK1D,OAJA+kF,EAAUjhF,KAAKuS,IAAI0uE,EAASY,GAC5BX,EAAWlhF,KAAKuS,IAAI2uE,EAAUW,GAC9BV,EAAanhF,KAAKuS,IAAI4uE,EAAYU,GAClCT,EAAcphF,KAAKuS,IAAI6uE,EAAaS,GAC7B,KAAYx8D,EAAKxoB,EAAI,KAAOokF,EAAU57D,EAAKvoB,GAC9C,MAAQuoB,EAAKxoB,EAAI,IAAMwoB,EAAKvoB,EAAI,KAAOuoB,EAAKxoB,EAAIokF,GAAW,IAC3D57D,EAAKvoB,EAFF,OAEyBuoB,EAAKxoB,EAAIwoB,EAAKlpB,MAAQ+kF,GAAY,IAAM77D,EAAKvoB,EACzE,OAASuoB,EAAKxoB,EAAIwoB,EAAKlpB,OAAS,IAAMkpB,EAAKvoB,EAAI,KAC9CuoB,EAAKxoB,EAAIwoB,EAAKlpB,OAAS,KAAOkpB,EAAKvoB,EAAIokF,GAJrC,OAKF77D,EAAKxoB,EAAIwoB,EAAKlpB,OAAS,KAAOkpB,EAAKvoB,EAAIuoB,EAAKnpB,OAASklF,GACpD,OAAS/7D,EAAKxoB,EAAIwoB,EAAKlpB,OAAS,KAAOkpB,EAAKvoB,EAAIuoB,EAAKnpB,QAAU,KAAOmpB,EAAKxoB,EAAIwoB,EAAKlpB,MAAQilF,GAAe,KAC5G/7D,EAAKvoB,EAAIuoB,EAAKnpB,QAPZ,OAOoCmpB,EAAKxoB,EAAIskF,GAAc,KAAO97D,EAAKvoB,EAAIuoB,EAAKnpB,QAAU,MAAQmpB,EAAKxoB,EAAI,KAC7GwoB,EAAKvoB,EAAIuoB,EAAKnpB,QAAU,IAAMmpB,EAAKxoB,EAAI,KAAOwoB,EAAKvoB,EAAIuoB,EAAKnpB,OAASilF,GARnE,MAQmG97D,EAAKxoB,EAAI,KAC9GokF,EAAU57D,EAAKvoB,GATb,MAWJsgF,EAtmBoB,I,oCCd/B,W,oCCAA,8DAOI0E,EAA2B,WAM3B,SAASA,EAAU1zE,GAEfvX,KAAK6rB,cAAgB,GAErB7rB,KAAKuqB,eAAiB,GACtBvqB,KAAKkrF,cAAe,EACpBlrF,KAAK8oB,cAAgB,GACrB9oB,KAAKuX,MAAQA,EACbvX,KAAK0pB,UAAY,EAiUrB,OA1TAuhE,EAAU/qF,UAAUuf,QAAU,WAQ1B,IAPA,IAGIna,EACAD,EACAwkB,EACAC,EANAvS,EAAQvX,KAAKuX,MACbe,EAAQ,KACRhB,EAAS,KAKJyB,EAAMxB,EAAMgE,cAAc5a,OAAQK,EAAI+X,EAAM,EAAG/X,GAAK,EAAGA,IAAK,CAQjE,GAPAsW,EAASC,EAAMgE,cAAcva,GAC7BsE,EAAyB,YAAhBgS,EAAO9I,MAA0C,YAApB8I,EAAOsD,UAA2BtD,EAAOZ,OAAc,SACtFY,EAAOZ,OAAOrR,OAAS,GAAK,EAAI,EACvCA,EAA0B,YAAhBiS,EAAO9I,MAA0C,YAApB8I,EAAOsD,UAA2BtD,EAAOZ,OAAc,SACvFY,EAAOZ,OAAOpR,MAAQ,GAAK,EAAI,EACtCukB,EAAStS,EAAMsS,OACfC,EAASvS,EAAMuS,OACXxS,EAAO2zC,aAAaxkC,QAAUnP,EAAO4J,aACrC,GAAsB,QAAhB5J,EAAO9I,MAAkB+I,EAAMwnC,eAAkBxnC,EAAMwnC,cAAgC,QAAhBznC,EAAO9I,KAI/E,CACD,IAAI+W,EAAejO,EAAOZ,OAAOrR,OAAS,EAC1CykB,EAASxS,EAAO0G,MAAMqrB,cAAgBvf,EAASvE,EAAeuE,EAASvE,MAN0B,CACjG,IAAIC,EAAclO,EAAOZ,OAAOpR,MAAQ,EACxCukB,EAASvS,EAAO0G,MAAMqrB,cAAgBxf,EAASrE,EAAcqE,EAASrE,EAU9E,GAHIlO,EAAOX,SAAW,gBAAakT,EAAQC,EAAQxS,EAAOF,SAAU9R,EAAOD,KACvEiT,EAAQtY,KAAKmrF,aAAa7zE,EAAQA,EAAOF,SAAUyS,EAAQC,IAE3DxR,EACA,OAAO,IAAI,OAAUA,EAAOhB,GAGpC,OAAO,IAAI,OAAUgB,EAAOhB,IAEhC2zE,EAAU/qF,UAAU0pB,WAAa,SAAUrS,GACvC,OAASA,EAAMw7B,cAAc/uC,QAAQ,SAAW,GAAKuT,EAAMw7B,cAAc/uC,QAAQ,UAAY,IAAMuT,EAAMu7B,iBAChE,OAArCv7B,EAAMu7B,gBAAgB7D,YAE9Bg8C,EAAU/qF,UAAUirF,aAAe,SAAU7zE,EAAQkX,EAAMxoB,EAAGC,GAC1D,IACImlF,EACAC,EACAC,EAEAC,EACAC,EACAC,EAPAl0E,EAAQvX,KAAKuX,MAIbm0E,EAAW,EAIf,GAAIn0E,EAAMu/B,YACN,OAAO,KAEX,IAAK,IAAIjpC,EAAK,EAAGhK,EAAKyT,EAAOE,OAAQ3J,EAAKhK,EAAGlD,OAAQkN,IAAM,CACvD,IAAIyK,EAAQzU,EAAGgK,GACf,GAAKyK,EAAM9B,YACF8B,EAAMhC,SAAYgC,EAAMhC,QAAQ3V,OADzC,CAKA,GAAI2X,EAAM9B,YAA2C,eAA7BxW,KAAKuX,MAAMsD,eAAkCvD,EAAOsD,SAAS5W,QAAQ,WAAa,IACtGonF,EAAcplF,GAAKsR,EAAOF,SAAS9R,MAAQ,EAAIgS,EAAOF,SAASpR,GAC/DqlF,EAAcplF,GAAKqR,EAAOF,SAAS/R,OAAS,EAAIiS,EAAOF,SAASnR,GAChEylF,EAAW,EAAIviF,KAAK2gC,IAAMxxB,EAAM9B,WAAWm1E,iBAAmB,EAAI,EAAIrzE,EAAM9B,WAAWm1E,iBACjFrzE,EAAM9B,WAAWm1E,kBACvBL,GAAcniF,KAAKyiF,MAAMP,EAAaD,GAAe,GAAMjiF,KAAK2gC,GAAK4hD,IAAa,EAAIviF,KAAK2gC,IAC3FwhD,EAAaA,EAAa,EAAI,EAAIniF,KAAK2gC,GAAKwhD,EAAaA,EACzDA,GAA0B,EAAIniF,KAAK2gC,GAAKxyB,EAAOC,MAAMkrB,aAAa8oD,WAClEA,EAAajzE,EAAM9B,WAAW+0E,WAC9BA,GAAcG,EACdH,EAAaA,EAAa,EAAI,EAAIpiF,KAAK2gC,GAAKyhD,EAAaA,EACzDC,EAAWlzE,EAAM9B,WAAWg1E,SAC5BA,GAAYE,EACZF,EAAWA,EAAW,EAAI,EAAIriF,KAAK2gC,GAAK0hD,EAAWA,EACnDC,EAAqBtiF,KAAKqmC,KAAKrmC,KAAK8jC,IAAI9jC,KAAK6a,IAAIonE,GAAc,GAAKjiF,KAAK8jC,IAAI9jC,KAAK6a,IAAIqnE,GAAc,IAChGC,GAAcC,GAAcD,GAAcE,IACvCC,GAAsBnzE,EAAM9B,WAAWq1E,aAAeJ,GAAsBnzE,EAAM9B,WAAWkP,QAC3F+lE,GAAsBnzE,EAAM9B,WAAWq1E,aAAeJ,GAAsBnzE,EAAM9B,WAAWkP,SAC3F+lE,GAAsBn0E,EAAOC,MAAMmO,QAC1C,OAAOpN,EAGf,IAAKhB,EAAO2zC,aAAaxkC,QAAUnP,EAAO4J,cAAkB5J,EAAO4J,cAAgB5J,EAAOZ,OAAOC,UACzF3W,KAAK8rF,yBAAyB9lF,EAAGC,EAAGqS,EAAOkW,EAAMlX,GAEjD,OADAtX,KAAKkrF,cAAe,EACb5yE,EAGf,IAAKtY,KAAKkrF,cAAgBlrF,KAAK+rF,yBAAyBzzE,EAAMhC,QAASkY,EAAMxoB,EAAGC,GAC5E,OAAOqS,EAEN,GAAItY,KAAKkrF,cAAgBlrF,KAAK+rF,yBAAyBzzE,EAAMhC,QAASkY,EAAMxoB,EAAGC,GAChF,OAAOqS,GAGf,OAAO,MAKX2yE,EAAU/qF,UAAU6rF,yBAA2B,SAAUC,EAAYx9D,EAAMxoB,EAAGC,GAC1E,IAAI5C,EAAQrD,KACZ,OAAOgsF,EAAWz0D,MAAK,SAAU2e,EAAQzpC,GAErC,OADApJ,EAAMqmB,UAAYjd,EACX,gBAAazG,EAAGC,EAAG,IAAI,QAAoC,cAA9B5C,EAAMkU,MAAMsD,cAAgC2T,EAAKxoB,EAAI,GAAKkwC,EAAOlwC,GAAkC,cAA9B3C,EAAMkU,MAAMsD,cAAgC2T,EAAKvoB,EAAI,GAAKiwC,EAAOjwC,EAAGiwC,EAAO5wC,MAAO4wC,EAAO7wC,aAY1M4lF,EAAU/qF,UAAU4rF,yBAA2B,SAAU9lF,EAAGC,EAAGqS,EAAOkW,EAAMlX,GACxE,IAOIhS,EAPAjC,EAAQrD,KACRisF,EAAwB,QAAhB30E,EAAO9I,KACf07B,EAAa5yB,EAAO0G,MAAMqrB,cAC1B0V,EAAeznC,EAAOC,MAAMwnC,aAC5BmtC,EAAc,GACdzwE,EAAS,EACThB,EAAS,EAETpV,EAASC,EAAQ,EAAI4mF,EAyCzB,OAxCIhiD,GAAc6U,EACVktC,GACAxwE,EAASnD,EAAMhC,QAAQ,GAAGjR,OAAS6mF,EACnC5mF,EAAQgT,EAAMhC,QAAQ,GAAGhR,QAGzBmV,GAAUyxE,EACV7mF,EAASiT,EAAMhC,QAAQ,GAAGjR,QAGzB6kC,GAAc5xB,EAAMmD,OAAS,EAC9BwwE,GACAxxE,GAAUyxE,EACV7mF,EAASiT,EAAMhC,QAAQ,GAAGjR,SAG1BoW,EAASnD,EAAMhC,QAAQ,GAAGjR,OAAS6mF,EACnC5mF,EAAQgT,EAAMhC,QAAQ,GAAGhR,OAGxBy5C,EACDktC,GACAxwE,GAAUywE,EACV5mF,EAAQgT,EAAMhC,QAAQ,GAAGhR,QAGzBmV,EAASnC,EAAMhC,QAAQ,GAAGhR,MAAQ4mF,EAClC7mF,EAASiT,EAAMhC,QAAQ,GAAGjR,QAI1B4mF,GACAxxE,EAASnC,EAAMhC,QAAQ,GAAGhR,MAAQ4mF,EAClC7mF,EAASiT,EAAMhC,QAAQ,GAAGjR,SAG1BoW,GAAUywE,EACV5mF,EAAQgT,EAAMhC,QAAQ,GAAGhR,OAG1BgT,EAAMhC,QAAQihB,MAAK,SAAU2e,GAChC,OAAO,gBAAalwC,EAAGC,EAAG,IAAI,QAAoC,cAA9B5C,EAAMkU,MAAMsD,cAAgC2T,EAAKxoB,EAAI,GAAKkwC,EAAOlwC,EAAIyU,GAAuC,cAA9BpX,EAAMkU,MAAMsD,cAAgC2T,EAAKvoB,EAAI,GAAKiwC,EAAOjwC,EAAIwV,EAAQnW,EAAOD,QAM9M4lF,EAAU/qF,UAAUisF,WAAa,SAAU70E,EAAQ0F,EAAOovE,GACtD,IAAIhmF,EACAkX,EACA1B,EAAQwwE,GAAoB90E,EAAOsE,MACnCqmE,EAAUrmE,EAAMjb,OAChB0rF,EAAkB,GAClBC,EAAmB,GACvB,GAA+B,aAA3Bh1E,EAAOiC,MAAMC,WAAqD,IAAzBlC,EAAOE,OAAO7W,OAAc,CACrE0rF,EAAkB/0E,EAAOiC,MAAM+rB,aAAa5pB,IAC5C4wE,EAAmBh1E,EAAOiC,MAAM+rB,aAAa3pB,IAC7C,IAAK,IAAIlP,EAAQ,EAAGA,EAAQ6K,EAAOC,MAAMgE,cAAc5a,OAAQ8L,IAAS,CACpE,IAAI8O,EAAgBjE,EAAOC,MAAMgE,cAAc9O,GAC3C8O,EAAcvC,MAAQqzE,GAAmB9wE,EAAcvC,KAAO1B,EAAO0B,OACrEqzE,EAAkB9wE,EAAcvC,KAAO,IAEvCuC,EAAcrC,MAAQozE,GAAoB/wE,EAAcrC,KAAO5B,EAAO4B,OACtEozE,EAAmB/wE,EAAcrC,KAAO,IAExCqC,EAAc/D,OAAO7W,OAAS,IAC1B4a,EAAcrC,MAAQmzE,GAAmB9wE,EAAcrC,KAAO5B,EAAO0B,OACrEqzE,EAAkB9wE,EAAcrC,KAAO,IAEvCqC,EAAcvC,MAAQszE,GAAoB/wE,EAAcvC,KAAO1B,EAAO4B,OACtEozE,EAAmB/wE,EAAcvC,KAAO,KAIhDqzE,IAAoB/0E,EAAOiC,MAAM+rB,aAAa5pB,MAC9C2wE,EAAkBljF,KAAK6a,IAAI1M,EAAO0B,KAAOqzE,GAAmB,GAE5DC,IAAqBh1E,EAAOiC,MAAM+rB,aAAa3pB,MAC/C2wE,EAAmBnjF,KAAK6a,IAAI1M,EAAO4B,KAAOozE,GAAoB,GAGtE,GAAItvE,GAAS1F,EAAO0B,KAAOqzE,GAAmBrvE,GAAS1F,EAAO4B,KAAOozE,EACjE,IAAK,IAAItrF,EAAI,EAAGA,EAAIihF,EAASjhF,IACzBsc,EAAO1B,EAAM5a,IACE,MAAXoF,GAAmB+C,KAAK6a,IAAI1G,EAAON,GAAS7T,KAAK6a,IAAI5d,EAAU4W,MAC/D5W,EAAUkX,GAItB,IAAIivE,GAAiD,IAAnCj1E,EAAOsE,MAAM5X,QAAQoC,GACvC,OAAImmF,EACOnmF,EAGA,MAGf6kF,EAAU/qF,UAAUssF,aAAe,SAAUlsF,EAAQ2wD,GACjD,IAIIw7B,EAJAC,EAAQ,EACRC,EAAO17B,EAAKtwD,OACZoD,GAAY,EACZ6oF,GAAQ,EAEZ,OAAiB,IAAVA,GAAmBF,GAASC,EAC/BF,EAAStjF,KAAK6gC,OAAO0iD,EAAQC,GAAQ,GACjC17B,EAAKw7B,GAAQhyE,SAAWna,GACxBssF,GAAQ,EACR7oF,EAAW0oF,GAENx7B,EAAKw7B,GAAQhyE,OAASna,EAC3BqsF,EAAOF,EAAS,EAGhBC,EAAQD,EAAS,EAGzB,OAAqB,IAAd1oF,EAAkBktD,EAAKltD,GAAY,MAE9CknF,EAAU/qF,UAAUosB,YAAc,SAAU/U,EAAOD,EAAQ80E,GACvD,IAAIpvE,EACAwR,EAAOlX,EAAOF,SACdG,EAAMsS,QAAU2E,EAAKxoB,EAAIwoB,EAAKlpB,OAASiS,EAAMsS,QAAU2E,EAAKxoB,IAKxDgX,EAJCzF,EAAMoN,oBAIC,eAAiBpN,EAAMuS,OAAS0E,EAAKvoB,EAAGuoB,EAAKnpB,OAAQiS,EAAOiC,OAH5D,eAAiBhC,EAAMsS,OAAS2E,EAAKxoB,EAAGwoB,EAAKlpB,MAAOgS,EAAOiC,QAM3E,IAAInT,EAAUpG,KAAKmsF,WAAW70E,EAAQ0F,EAAOovE,GACzC9zE,GAAUlS,GAAuB,IAAZA,IAAkBkR,EAAOE,OAAO7W,OAAS,EAAKX,KAAKwsF,aAAapmF,EAAS,gBAAKkR,EAAOE,OAAQ,CAAC,YAAc,KACrI,OAAIc,GAASA,EAAM3B,SACoB,cAA7B3W,KAAKuX,MAAMsD,gBAAsD,aAAnBvD,EAAOsB,UAA0C,aAAftB,EAAOtH,MACxFsI,EAAMjC,iBAAmBiC,EAAMjC,gBAAgB1V,OAAS,GAAK2X,EAAMjC,gBAAgB,GAAGrQ,GAAK,GAAKsS,EAAMjC,gBAAgB,GAAGrQ,GAAKwoB,EAAKlpB,OAGjI,IAAI,OAAUgT,EAAOhB,GAEzB,MAQX2zE,EAAU/qF,UAAUmsB,aAAe,SAAU9Q,GACzC,GAAIA,EAAc5a,UAAYX,KAAK8oB,cAAcnoB,QAAWX,KAAK8oB,cAAcnoB,SAAW4a,EAAc,GAAGK,MAAMjb,QAAU,CACvHX,KAAK8oB,cAAgBvN,EAAc,GAAGK,MACtC,IAAK,IAAInP,EAAQ,EAAGA,EAAQ8O,EAAc5a,OAAQ8L,IAC9CzM,KAAK8oB,cAAgB9oB,KAAK6sF,kBAAkB7sF,KAAK8oB,cAAevN,EAAc9O,GAAOmP,OAG7F,OAAO5b,KAAK8oB,eAEhBmiE,EAAU/qF,UAAUqvB,aAAe,SAAUhU,GAEzC,IADA,IAAIuxE,EAAgB,GACXjpE,EAAI,EAAGA,EAAItI,EAAc5a,OAAQkjB,IACtC,IAAK,IAAI7iB,EAAI,EAAIua,EAAcsI,GAAGrM,QAAUxW,EAAIua,EAAcsI,GAAGrM,OAAO7W,OAASK,IAAK,CAClF,IAAIsX,EAAQiD,EAAcsI,GAAGrM,OAAOxW,GAChCsX,IAA0B,IAAhBA,EAAM7L,OAAe6L,EAAM7L,QAAU8O,EAAcsI,GAAGrM,OAAO7W,OAAS,GAC/E2X,EAAMjC,iBAAmBiC,EAAMjC,gBAAgB1V,OAAS,IACzDmsF,EAAczgF,KAAKiM,EAAMmC,QAIrC,OAAOqyE,GAEX7B,EAAU/qF,UAAU2sF,kBAAoB,SAAUH,EAAOK,QACvC,IAAVL,IAAoBA,EAAQ,SACjB,IAAXK,IAAqBA,EAAS,IAClC,IAEItgF,EAFAugF,EAAS,GACTltE,EAAS,GAEb,IAAKrT,EAAQ,EAAGA,EAAQigF,EAAM/rF,OAAQ8L,IAAS,CAC3C,IAAI0yE,EAAOuN,EAAMjgF,GACZugF,EAAO7N,KACR6N,EAAO7N,IAAQ,EACfr/D,EAAOzT,KAAK8yE,IAGpB,IAAK1yE,EAAQ,EAAGA,EAAQsgF,EAAOpsF,OAAQ8L,IAAS,CACxC0yE,EAAO4N,EAAOtgF,GACbugF,EAAO7N,KACR6N,EAAO7N,IAAQ,EACfr/D,EAAOzT,KAAK8yE,IAGpB,OAAOr/D,GAEJmrE,EA/UmB,I,oCCP9B,8hCAIO,IAEIgC,EAAc,cAEdC,EAAO,OAIPC,EAAe,eAEfC,EAAa,aAEbC,EAAc,cAEdC,EAAsB,sBAEtBC,EAAe,eAEfC,EAAkB,kBAElBrlC,EAAiB,iBAEjBslC,EAAsB,sBAItBC,EAAgB,gBAEhBC,EAAiB,iBAEjBC,EAAkB,kBAElBC,EAAmB,mBAEnB5lC,EAAa,aAEbF,EAAmB,mBAEnBU,EAAY,YAEZqlC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAe,eAEfC,EAAe,eAMfC,EAAU,UAEVC,EAAe,eAEfC,EAAc,cAEdC,EAAmB,mBAQnBC,EAAmB,mBAUnBC,EAAS,SAETC,EAAS,WAETC,EAAe,eAEfpqC,EAAc,cAIdqqC,EAAY,a,kCC1FvB,sFAAIrvF,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAqBxC4uF,EAA0B,SAAU9rF,GAOpC,SAAS8rF,EAASp3E,GACd,OAAO1U,EAAOS,KAAKtD,KAAMuX,IAAUvX,KAwGvC,OA/GAX,EAAUsvF,EAAU9rF,GAcpB8rF,EAASzuF,UAAUigC,0BAA4B,SAAUrqB,EAAMqM,GAC3DniB,KAAK4uF,eAAezsE,GACpBniB,KAAK6uF,eAAe1sE,EAAMrM,GAC1B9V,KAAK8uF,kBAAkB3sE,EAAMrM,GAC7B9V,KAAK+uF,uBAAuB5sE,IAOhCwsE,EAASzuF,UAAU2uF,eAAiB,SAAU1sE,EAAMrM,GAChD9V,KAAKgvF,sBAAsB7sE,GAE3BA,EAAKw3C,YAAc,GACdx3C,EAAK4F,SAIN5F,EAAKw3C,YAAY5xC,SAAW5e,KAAKgkC,KAAKhrB,EAAK4F,UAH3C5F,EAAKw3C,YAAY5xC,SAAW5e,KAAKwS,IAAI,EAAGxS,KAAK6gC,MAAM7nB,EAAKy3C,YAAY3uB,MAAQ,eAA+Bn1B,EAAMqM,KAKrHA,EAAKw3C,YAAYj+C,IAAMyG,EAAKy3C,YAAY18C,MACxCiF,EAAKw3C,YAAYh+C,IAAMwG,EAAKy3C,YAAYz8C,IACxCgF,EAAKw3C,YAAY1uB,MAAQ9oB,EAAKy3C,YAAY3uB,OAO9C0jD,EAASzuF,UAAU4uF,kBAAoB,SAAU3sE,EAAMrM,GACnD,IAAI2tE,EACJthE,EAAK7K,OAAO23E,SAAQ,SAAU7rF,GACrBqgF,IACDA,EAAWrgF,EAAQoL,KAAKxK,QAAQ,WAAa,KAAOme,EAAK4d,WAAa,GAAK5d,EAAK6d,aAAe,IAAM,eAAkB7d,EAAKjH,UAAY,eAAkBiH,EAAKlH,aAGvK,IAAImsB,EAAkC,iBAAxBjlB,EAAK+kB,iBAAqCu8C,GAAczjF,KAAKuX,MAAMoD,YAA2C,eAA7B3a,KAAKuX,MAAMsD,cAAwC,EAAN,GACxIusB,EAAQ,GACRjlB,EAAKw3C,YAAYj+C,KAAO0rB,EACxBjlB,EAAKw3C,YAAYh+C,KAAOyrB,GAGxBjlB,EAAKw3C,YAAYh+C,KAAOwG,EAAKw3C,YAAYh+C,IAAM,EAAI,GAEvDwG,EAAKy3C,YAAc,IAAI,OAAYz3C,EAAKw3C,YAAYj+C,IAAKyG,EAAKw3C,YAAYh+C,KAC1EwG,EAAKw3C,YAAY1uB,MAAQ9oB,EAAKy3C,YAAY3uB,MAC1CjrC,KAAKkvF,sBAAsBp5E,EAAMqM,IAOrCwsE,EAASzuF,UAAU6uF,uBAAyB,SAAU5sE;;AAElDA,EAAKklB,cAAgB,GACrBllB,EAAKmjB,aAAavd,SAAW5F,EAAKmjB,aAAavd,SAAW,EAAI,EAAI5F,EAAKmjB,aAAavd,SACpF,IACIqiB,EAIArmC,EALA0iC,EAAet9B,KAAKgkC,KAAKhrB,EAAKmjB,aAAa5pB,KAQ/C,KANIyG,EAAK4d,WAAa,GAAK5d,EAAK6d,aAAe,KAC3CyG,EAAetkB,EAAKmjB,aAAa5pB,IAAOyG,EAAKmjB,aAAa5pB,IAAMyG,EAAKmjB,aAAavd,UAGtF5F,EAAK8uD,WAAa9uD,EAAKrD,OAAO3V,KAAKC,MAAM+Y,EAAKmjB,aAAa5pB,MAC3DyG,EAAK+uD,SAAW/uD,EAAKrD,OAAO3V,KAAK6gC,MAAM7nB,EAAKmjB,aAAa3pB,MAClD8qB,GAAgBtkB,EAAKmjB,aAAa3pB,IAAK8qB,GAAgBtkB,EAAKmjB,aAAavd,SAC5EqiB,EAAc,cAAD,CAAQ,GAAI,eAAS,aAAcjoB,EAAKioB,YAAa,MAAM,GACpE,gBAAO3D,EAActkB,EAAKmjB,eAAiBnjB,EAAKrD,OAAOne,OAAS,IAChEoD,EAAWoF,KAAKC,MAAMq9B,GACtB,gBAAmBzmC,KAAKuX,MAAOxT,EAAUoe,EAAKrD,OAAO/a,GAAYoe,EAAKrD,OAAO/a,GAAU6N,WAAa,GAAIw4B,EAAYjoB,IAGxHA,EAAK43C,kBACL53C,EAAK43C,iBAAiB/5D,KAAKuX,QAMnCo3E,EAASzuF,UAAU4U,cAAgB,WAI/B,MAAO,YAQX65E,EAASzuF,UAAUsS,QAAU,aAKtBm8E,EAhHkB,CAiH3B,S,2DCtIF,W,oCCAA,8GAUO,SAASQ,IACZ,MAAO,CAAC,aAAc,gBAAiB,iBAAkB,oBAAqB,kBAAmB,eAC7F,gBAAiB,YAAa,UAAW,kBAAmB,aAAc,iBAAkB,eAC5F,6BAA8B,iBAAkB,YAChD,gBAAiB,SAAU,SAAU,eAAgB,YAAa,QAAS,cAAe,YAC1F,YAAa,cAAe,eAAgB,mBAAoB,cAAe,qBAAsB,iBACrG,gBAAiB,mBAMzB,IAAIC,EAAuB,WAQvB,SAASA,EAAMtuE,EAAQuuE,GACnBrvF,KAAKsvF,cAAe,EACpBtvF,KAAKuvF,QAAU,IAAI,OACnBvvF,KAAK8gB,OAASA,EACV9gB,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOqI,GAAG,QAAqBnpB,KAAKwvF,iBAAkBxvF,MAC3DA,KAAKyvF,oBAAsBzvF,KAAK0vF,YAAY9pF,KAAK5F,MACjDA,KAAK8gB,OAAOiI,iBAAiB,OAAoB/oB,KAAKyvF,qBACtDzvF,KAAK8gB,OAAOqI,GAAG,QAAgBnpB,KAAK2vF,QAAQ/pF,KAAK5F,OACjDA,KAAK8gB,OAAOqI,GAAG,QAAuBnpB,KAAK4vF,eAAgB5vF,MAC3DA,KAAKqvF,aAAeA,GA2NxB,OAzNAD,EAAMlvF,UAAUsvF,eAAiB,WAC7B,IAAInsF,EAAQrD,KACZ,OAAIA,KAAK6vF,eAAqD,SAAnC7vF,KAAK8gB,OAAOgvE,oBAAkC9vF,KAAK8gB,OAAO4kD,UAG9E,WACHriE,EAAMksF,QAAQx1D,QAAQna,MAAK,WACvBvc,EAAM0sF,kBAEN1sF,EAAMwsF,eACNxsF,EAAMusF,kBAPH5vF,KAAK+vF,cAWpBX,EAAMlvF,UAAU0vF,eAAiB,WAC7B5vF,KAAKgwF,eAAehwF,KAAK8gB,QACzB,IAAImvE,EAAe1pF,OAAO0pF,aACtBA,IAAiBA,EAAa7sF,QAAQ8I,cAAc,oBACpD+jF,EAAaC,YAAYX,QAAQ50D,WAUzCy0D,EAAMlvF,UAAUw+C,MAAQ,WACpB1+C,KAAKmwF,mBAETf,EAAMlvF,UAAUyvF,QAAU,WAClB3vF,KAAK6vF,eACL7vF,KAAK+vF,gBAGbX,EAAMlvF,UAAUwvF,YAAc,WACtB1vF,KAAK6vF,gBACL7vF,KAAKsvF,cAAe,IAG5BF,EAAMlvF,UAAUiwF,gBAAkB,WAC9B,IAAIx9D,EAAO3yB,KAAK8gB,OACZ1d,EAAU,eAAc,MAAO,CAC/BkI,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,SAAU9G,UAAWmuB,EAAKvvB,QAAQoB,UAAY,kBAE/EpB,EAAQ8B,UAAUC,OAAO,eACzByI,SAAS6B,KAAK/K,YAAYtB,GAE1B,IADA,IAAIgtF,EAAY,IAAI,OAAK,eAAkBz9D,EAAMA,EAAKm9D,qBAC7C9uF,EAAI,EAAGA,EAAIovF,EAAU1tE,QAAQ/hB,OAAQK,IAC1CovF,EAAU1tE,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAO,eAAO,GAAIw+E,EAAU1tE,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MAChG+gB,EAAKmtC,iBAAmBntC,EAAK09D,qBAC7BD,EAAU1tE,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,YAAS/kF,GAI3DvL,KAAK8gB,OAAOzB,YAEZ+wE,EAAU9/E,iBAAmBtQ,KAAK8gB,OAAOxQ,kBAG7C8/E,EAAUlD,KAAO,aACjBkD,EAAU9wE,MAAQqT,EAAKK,WAAWC,QAClC1sB,OAAO0pF,aAAeG,EACtBA,EAAUG,YAAa,EACvB,IAAI5lC,EAAUylC,EAAUI,qBACpBC,EAAiB99D,EAAK69D,qBACrB7lC,GAAWA,EAAQhqD,SAAW8vF,EAAe9vF,QAC9CyvF,EAAUM,mBAAmBD,GAEjC99D,EAAK2B,OAAO,QAAsB,CAAElxB,QAASA,EAASutF,UAAWP,IACjEpwF,KAAK8gB,OAAO6U,IAAI,kBAAmB31B,KAAK8U,iBACxCs7E,EAAUQ,mBAAqB5wF,KAAK8gB,OAAO8vE,mBAC3CR,EAAUv9D,MAAQ7yB,KAAK8gB,OAAO+R,MAC9Bu9D,EAAUS,SAASztF,GACduvB,EAAKm+D,SACNV,EAAUnoF,QAAU0qB,EAAK1qB,UAGjCmnF,EAAMlvF,UAAU6vF,aAAe,WAC3B,GAAI/vF,KAAK6vF,cAAe,CACpB,IAAIl9D,EAAO3yB,KAAK8gB,OAChB,GAAI9gB,KAAKsvF,aAEL,YADAtvF,KAAKowF,YAGT,IAAI/7D,EAAO,CACPoF,YAAa,QACbr2B,QAASuvB,EAAKvvB,QACd2tF,aAAcp+D,EAAKsxC,kBAAkBnX,iBAAiB,4BACtDr+C,QAAQ,EACRqhF,mBAAoBn9D,EAAKm9D,oBAK7B,GAHK9vF,KAAKsvF,cACN38D,EAAK1qB,QAAQ,OAAoBosB,GAEjCA,EAAK5lB,OAEL,YADA,eAAOkkB,EAAKvvB,SAGXpD,KAAKsvF,cACNtvF,KAAKowF,cAIjBhB,EAAMlvF,UAAUkwF,UAAY,WACxB,IAAIz9D,EAAO3yB,KAAK8gB,OAEhB,GAAoB,SAAhB6R,EAAKttB,OAAmB,CACxB,IAAIq7D,EAAW1gE,KAAKqvF,aAAa1uB,mBAC7BqwB,EAAar+D,EAAKvvB,QAAQ8I,cAAc,IAAM,QAC9C+kF,EAAYt+D,EAAKvvB,QAAQ8I,cAAc,IAAM,QACjD8kF,EAAWjqF,MAAM1B,OAAS,OAC1B2rF,EAAWjqF,MAAMo8D,UAAY,OAC7B8tB,EAAUlqF,MAAM25D,EAASvzC,SAAW,GACpC8jE,EAAUjrC,kBAAkBj/C,MAAM25D,EAASt7C,QAAU,GAGrDuN,EAAK2C,gBACA3C,EAAK4C,cAAc7S,QAAQ/hB,OAI5BX,KAAKgwF,eAAer9D,GAHpBA,EAAKvvB,QAAQ8I,cAAc,oBAAoBnF,MAAMC,QAAU,QAOvE,IAAK,IAAI6G,EAAK,EAAGhK,EAAK,GAAG6J,MAAMpK,KAAKqvB,EAAKvvB,QAAQ4wC,uBAAuB,SAAoBnmC,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9G,IAAIzK,EAAUS,EAAGgK,GACjBzK,EAAQ2D,MAAMmqF,UAAY,SAI9B,IADA,IAAIC,EAAa,GAAGzjF,MAAMpK,KAAKqvB,EAAKvvB,QAAQ4wC,uBAAuB,gBAC1DlwC,EAAK,EAAG0d,EAAK,GAAG9T,MAAMpK,KAAK6tF,GAAartF,EAAK0d,EAAG7gB,OAAQmD,IAAM,CAC/DV,EAAUoe,EAAG1d,GACjB,eAAUV,EAAS,CAAC,eAAgB,CAAC,gBAEzCpD,KAAKoxF,iBAAiBz+D,GACtBA,EAAK49D,YAAa,SACXhqF,OAAO0pF,aACd,IAAI57D,EAAO,CACPjxB,QAASuvB,EAAKvvB,SAElBuvB,EAAK1qB,QAAQ,QAAsBosB,GACnC1B,EAAKngB,UACLxS,KAAK8gB,OAAO6U,IAAI,qBAAsB31B,KAAK8U,kBAE/Cs6E,EAAMlvF,UAAUkxF,iBAAmB,SAAUz+D,GACzC,eAAUA,EAAKvvB,QAAS,CAAC,uBAAwB,CAAC,iBAC9CuvB,EAAK49D,YACL,eAAO59D,EAAKvvB,SAEhBpD,KAAKqxF,UAAY9qF,OAAOb,KAAK,GAAI,QAAS,UAAYa,OAAO+qF,YAAc,UAAY/qF,OAAOgrF,WAAa,cAC3GvxF,KAAKqxF,UAAUrX,OAAO,EAAG,GACzBh6E,KAAKqxF,UAAUzsC,SAAS4sC,OAAOC,WAAYD,OAAOE,aAClD1xF,KAAKqxF,UAAY,gBAAY1+D,EAAKvvB,QAASpD,KAAKqxF,YAEpDjC,EAAMlvF,UAAU8vF,eAAiB,SAAUr9D,GACvC,IAAIg/D,EAAQh/D,EAAK4C,cAAc7S,QAAQ/hB,OACnCyC,EAAUuvB,EAAKvvB,QACfkI,EAAK,IAAMqnB,EAAKvvB,QAAQkI,GAC5B,GAAKqmF,EAAL,CAKA,IAFA,IAAIC,EAAe,gBAAU,kBAAmBxuF,GAC5CyuF,EAAUD,EAAaD,EAAQ,GAAGjnF,aAAa,WAC1C1J,EAAI,EAAGA,EAAI4wF,EAAajxF,OAAQK,IACrC4wF,EAAajgF,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,UAAWknF,GAErE,IAAIC,EAAY,gBAAU,WAAaxmF,EAAK,WAAYlI,GACpD2uF,EAAmB,gBAAU,sBAAuB3uF,GACpD4uF,EAAkB,gBAAU,6BAA8B5uF,GAC9DpD,KAAKiyF,aAAaH,EAAWH,GAC7B3xF,KAAKiyF,aAAaF,EAAkBJ,GACpC3xF,KAAKiyF,aAAaD,EAAiBL,KAEvCvC,EAAMlvF,UAAU+xF,aAAe,SAAUH,EAAWH,GAChD,IAAK,IAAI3wF,EAAI,EAAGA,EAAI8wF,EAAUnxF,OAAQK,IAClC,IAAK,IAAI6iB,EAAI,EAAGA,EAAI8tE,EAAO9tE,IACvBiuE,EAAUngF,SAAS3Q,EAAE4Q,WAAY,KAAKq0C,SAASt0C,SAASkS,EAAEjS,WAAY,KAAK7K,MAAMC,QAAU,QAUvGooF,EAAMlvF,UAAU2vF,YAAc,WAC1B,OAAO7vF,KAAK8gB,OAAO1d,QAAQkI,GAAGtH,QAAQ,UAAY,GAAKhE,KAAK8gB,OAAOyvE,YAQvEnB,EAAMlvF,UAAUsS,QAAU,WAClBxS,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOmb,IAAI,QAAqBj8B,KAAK+vF,aAAanqF,KAAK5F,OAC5DA,KAAK8gB,OAAO8wB,oBAAoB,OAAoB5xC,KAAKyvF,qBACzDzvF,KAAK8gB,OAAOmb,IAAI,QAAgBj8B,KAAK2vF,QAAQ/pF,KAAK5F,OAClDA,KAAK8gB,OAAOmb,IAAI,QAAuBj8B,KAAK4vF,kBAQhDR,EAAMlvF,UAAU4U,cAAgB,WAC5B,MAAO,SAEXs6E,EAAM8C,cAAgB/C,IAAqB3hE,OAAO,CAAC,OAAoB,QAAsB,UACtF4hE,EA/Oe,I,oCCtB1B,8DAIIz9D,EAAsB,WAUtB,SAASA,EAAKvS,EAAYE,GACtBtf,KAAKkyB,gBAAgB9S,EAAYE,GAiDrC,OArCAqS,EAAKzxB,UAAUgyB,gBAAkB,SAAU9S,EAAYE,GACnDtf,KAAKuf,YAAcH,aAAsB,OAAcA,EAAa,IAAI,OAAYA,GACpFpf,KAAKsf,MAAQA,aAAiB,OAAQA,EAAQ,IAAI,QAQtDqS,EAAKzxB,UAAUwf,cAAgB,WAC3B,IAAIJ,EAAQtf,KAAKsf,MAAM2T,QACvB,OAAO3T,GASXqS,EAAKzxB,UAAUuf,QAAU,SAAU0yE,GAC/B,IAAI9uF,EAAQrD,KACZ,GAAIA,KAAKuf,YAAYkb,MAAO,CACxB,IAAI23D,EAAwB,IAAI,OAC5B33D,EAAQz6B,KAAKuf,YAAYkb,MAM7B,OALAA,EAAM7a,MAAK,WACPvc,EAAMkc,YAAYib,aAAa23D,GAAWvyE,MAAK,SAAUE,GACrDsyE,EAAsBz3D,QAAQ7a,SAEnC8a,OAAM,SAAUztB,GAAKilF,EAAsBv3D,OAAO1tB,MAC9CilF,EAAsBr4D,QAG7B,OAAO/5B,KAAKuf,YAAYib,aAAa23D,IAGtCxgE,EA5Dc,I,oCCJzB,kDAOI0gE,EAAgC,WAChC,SAASA,EAAeC,GACpBtyF,KAAKia,KAAO,IAAI,OACX,eAAkBq4E,KACnBtyF,KAAKia,KAAKs4E,QAAUD,GAuC5B,OApCAD,EAAenyF,UAAU87D,kBAAoB,SAAUxrC,GACnD,OAAIA,EAAOhiB,KACAxO,KAAKia,KAAKG,cAAcoW,GAGxBxwB,KAAKia,KAAKgX,gBAAgBT,IAGzC6hE,EAAenyF,UAAUg8D,kBAAoB,SAAU1rC,GACnD,OAAIA,EAAOhiB,KACAxO,KAAKia,KAAKC,cAAcsW,GAGxBxwB,KAAKia,KAAKu4E,gBAAgBhiE,IAGzC6hE,EAAenyF,UAAUuyF,SAAW,SAAUz1E,EAAOwT,EAAQhiB,GACzD,MAAc,SAATA,GAA4B,aAATA,GAAgC,WAATA,GAAwB,eAAkBgiB,GAI9ExT,EAHAwT,EAAOxT,IAMtBq1E,EAAenyF,UAAUo7B,OAAS,SAAUte,EAAOwT,GAC/C,IAAI1Q,EAAS9C,EAIb,OAHK,eAAkBwT,IAAY,eAAkBxT,KACjD8C,EAAS0Q,EAAOxT,IAEb8C,GAEXuyE,EAAenyF,UAAUy4C,WAAa,SAAU25C,GACvC,eAAkBA,IACnB,gBAAWA,IAGZD,EA3CwB,I,+GCLxBK,EAAsB,eAAmB,CAChDC,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,mBAIRC,EAAmB,CAC1BpjF,KAAM,eACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUH,EAAiBpjF,KAAM0iF,KAGlCc,EAAqB,eAAmB,CAC/C7/E,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,kBAIRM,EAAkB,CACzBzjF,KAAM,cACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUE,EAAgBzjF,KAAMwjF,KC3CjCE,EAAoB,eAAmB,CAC9Cf,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,iBAIRQ,EAAiB,CACxB3jF,KAAM,aACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUI,EAAe3jF,KAAM0jF,KAGhCE,EAAmB,eAAmB,CAC7CjgF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,gBAIRU,EAAgB,CACvB7jF,KAAM,YACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUM,EAAc7jF,KAAM4jF,KC3C/BE,EAA4B,eAAmB,CACtDnB,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,0BAIRY,EAAyB,CAChC/jF,KAAM,sBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUQ,EAAuB/jF,KAAM8jF,KAGxCE,EAAkB,eAAmB,CAC5CrgF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,eAIRc,EAAe,CACtBjkF,KAAM,WACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUU,EAAajkF,KAAMgkF,KC3C9BE,EAAsB,eAAmB,CAChDvB,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,mBAIRgB,EAAmB,CAC1BnkF,KAAM,eACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUY,EAAiBnkF,KAAMkkF,KAGlCE,EAAqB,eAAmB,CAC/CzgF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,kBAIRkB,EAAkB,CACzBrkF,KAAM,cACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUc,EAAgBrkF,KAAMokF,KC3CjCE,EAAsB,eAAmB,CAChD3B,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,mBAIRoB,EAAmB,CAC1BvkF,KAAM,eACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUgB,EAAiBvkF,KAAMskF,KAGlCE,EAAoB,eAAmB,CAC9C7gF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,iBAIRsB,EAAiB,CACxBzkF,KAAM,aACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUkB,EAAezkF,KAAMwkF,KC3ChCE,EAA4B,eAAmB,CACtD/B,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,yBAIRwB,EAAyB,CAChC3kF,KAAM,qBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUoB,EAAuB3kF,KAAM0kF,KAGxCE,EAA2B,eAAmB,CACrDjhF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,wBAIR0B,EAAwB,CAC/B7kF,KAAM,oBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUsB,EAAsB7kF,KAAM4kF,KC3CvCE,EAAgB,eAAmB,CAC1CnC,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,aAIR4B,EAAa,CACpB/kF,KAAM,SACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUwB,EAAW/kF,KAAM8kF,KAG5BE,EAAgB,eAAmB,CAC1CrhF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,aAIR8B,EAAa,CACpBjlF,KAAM,SACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU0B,EAAWjlF,KAAMglF,KC3C5BE,EAAgB,eAAmB,CAC1CvC,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,aAIRgC,EAAa,CACpBnlF,KAAM,SACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU4B,EAAWnlF,KAAMklF,KAG5BE,EAAe,eAAmB,CACzCzhF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,YAIRkC,EAAY,CACnBrlF,KAAM,QACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU8B,EAAUrlF,KAAMolF,KC3C3BE,EAAmB,eAAmB,CAC7C3C,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,gBAIRoC,EAAgB,CACvBvlF,KAAM,YACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUgC,EAAcvlF,KAAMslF,KAG/BE,EAAkB,eAAmB,CAC5C7hF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,eAIRsC,EAAe,CACtBzlF,KAAM,WACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUkC,EAAazlF,KAAMwlF,KC3C9BE,EAA8B,eAAmB,CACxD/C,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,2BAIRwC,EAA2B,CAClC3lF,KAAM,uBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUoC,EAAyB3lF,KAAM0lF,KAG1CE,EAA6B,eAAmB,CACvDjiF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,0BAIR0C,EAA0B,CACjC7lF,KAAM,sBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUsC,EAAwB7lF,KAAM4lF,KC3CzCE,EAAuB,eAAmB,CACjDnD,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,oBAIR4C,EAAoB,CAC3B/lF,KAAM,gBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUwC,EAAkB/lF,KAAM8lF,KAenCE,EAAsB,eAAmB,CAChDriF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,mBAIR8C,EAAmB,CAC1BjmF,KAAM,eACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU0C,EAAiBjmF,KAAMgmF,KCvDlCE,EAA+B,eAAmB,CACzDvD,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,4BAIRgD,EAA4B,CACnCnmF,KAAM,wBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU4C,EAA0BnmF,KAAMkmF,KAG3CE,EAA6B,eAAmB,CACvDziF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,0BAIRkD,EAA0B,CACjCrmF,KAAM,sBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU8C,EAAwBrmF,KAAMomF,KC3CzCE,GAAsB,eAAmB,CAChD3D,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,mBAIRoD,GAAmB,CAC1BvmF,KAAM,eACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUgD,GAAiBvmF,KAAMsmF,MAGlCE,GAAqB,eAAmB,CAC/C7iF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,kBAIRsD,GAAkB,CACzBzmF,KAAM,cACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUkD,GAAgBzmF,KAAMwmF,MC5BjCnyB,GAAa,CAAC,eAAgB,UAAW,cAAe,sBAAuB,cAAe,OAAQ,aAAc,kBAAmB,SAAU,YAAa,UAAW,YAAa,eAAgB,aAAc,cAAe,kBAAmB,+BAAgC,eAAgB,eAAgB,oBAAqB,YAAa,4BAA6B,SAAU,iBAAkB,gBAAiB,mBAAoB,aAAc,gBAAiB,eAAgB,iBAAkB,SAAU,SAAU,WAAY,eAAgB,eAAgB,qBAAsB,OAAQ,sBAAuB,gBAAiB,mBAAoB,SAAU,WAAY,gBAAiB,WAAY,QAAS,QAAS,aAAc,UAAW,uBAAwB,QAAS,eAAgB,cAAe,oBAAqB,mBAAoB,iBAAkB,kBAAmB,uBAAwB,sBAAuB,eAAgB,cAAe,eAAgB,mBAAoB,kBAAmB,iBAAkB,kBAAmB,iBAAkB,eAAgB,OAAQ,eAAgB,UAAW,YAAa,cAAe,eAAgB,OAAQ,SAAU,uBAAwB,YAAa,aAAc,mBAAoB,YAAa,cAAe,UAAW,gBAAiB,YAAa,cAAe,oBAAqB,eAAgB,sBAAuB,aAAc,gBAAiB,gBACh6CqyB,GAAa,CAAC,cACdC,GAAW,eAAS,CAAE9tB,MAAOxE,KAC7BwE,GAAQ8tB,GAAS,GAAIC,GAAQD,GAAS,GAAIE,GAAYp3F,OAAO2V,KAAKwhF,IAC7EC,GAAUxqF,KAAK,eAAgB,qBAC/B,IAAK,IAAI,GAAK,EAAGyqF,GAAeJ,GAAY,GAAKI,GAAan2F,OAAQ,KAAM,CACxE,IAAIo2F,GAAUD,GAAa,IAC3BD,GAAUxqF,KAAK,UAAY0qF,IAQxB,IAAIC,GAAiB,eAAmB,CAC3ChnF,KAAM,iBACNinF,OAAQ,CAAC,QACTpuB,MAAOA,GACP+tB,MAAOA,GACPM,MAAOL,GACP/Q,MAAO,CAAEp3E,MAAO,gBAChByoF,QAAS,WAAc,MAAO,CAAEvE,OAAQ5yF,KAAK4yF,SAC7Ct1E,KAAM,WACF,MAAO,CACH85E,aAAc,IAAI,OAAM,IACxBC,SAAUhzB,GACVizB,OAAQZ,GACRa,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,sBAAuB,CAAE,WAAY,CAAE,eAAgB,cAAe,aAAc,cAAiB,SAAU,CAAE,SAAU,CAAE,eAAgB,cAAe,qBAAsB,CAAE,oBAAqB,CAAE,eAAgB,iBAAsB,SAAU,QAAS,YAAa,WAAY,uBAAwB,sBAAuB,gBAAiB,eAAgB,wBAAyB,sBAAuB,eAAgB,eAC1bC,cAAe,CAAE,sBAAuB,WAAY,eAAgB,eAAgB,qBAAsB,qBAAsB,uBAAwB,uBAAwB,wBAAyB,yBACzM5G,QAAS,OACT6G,mBAAoB,KAG5BC,QAAS,WACL53F,KAAKo3F,aAAaS,SAAW73F,KAAKo3F,aAAanvF,QAC/CjI,KAAKo3F,aAAanvF,QAAUjI,KAAKiI,QACjCjI,KAAK83F,iBACL93F,KAAKo3F,aAAaW,eAAiB/3F,KAAKo3F,aAAansF,cACrDjL,KAAKo3F,aAAansF,cAAgBjL,KAAKiL,cACvCjL,KAAKo3F,aAAa/uF,cAAgBrI,KAAKqI,cACvCrI,KAAKizF,QAAUjzF,KAAKizF,SAExBt/E,OAAQ,SAAUpP,GACd,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAOC,IAEpBG,QAAS,CACL7qF,cAAe,SAAU2vF,GAIrB,GAHKA,IACDA,EAAgBv4F,OAAO2V,KAAKpV,KAAK23F,oBAAsB,KAEvDK,EAAcr3F,QAAUX,KAAK23F,mBAC7B,IAAK,IAAI9pF,EAAK,EAAGoqF,EAAkBD,EAAenqF,EAAKoqF,EAAgBt3F,OAAQkN,IAAM,CACjF,IAAIqqF,EAAWD,EAAgBpqF,GAC3BsqF,EAAoBn4F,KAAK23F,mBAAmBO,GAChD,GAAIC,GAAqBA,EAAkBx3F,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGu0F,EAAsBD,EAAmBt0F,EAAKu0F,EAAoBz3F,OAAQkD,IAAM,CAC7F,IAAIy7B,EAAM84D,EAAoBv0F,GAC1B2O,EAAU,eAAS,mBAAoB8sB,GACvC9sB,GACA8sB,EAAI+4D,QAAQC,WAEZh5D,EAAIx0B,YACJw0B,EAAIx0B,UAAY,WAGjB9K,KAAK23F,mBAAmBO,MAK/CjtF,cAAe,SAAUoK,EAAMkjF,GAC3B,IAAIl1F,EAAQrD,KACRA,KAAK8wF,SACL9wF,KAAKs3F,OAAUt3F,KAAKs3F,OAAyCt3F,KAAKs3F,OAArCt3F,KAAKo3F,aAAaoB,aAE/Cx4F,KAAKo3F,cAAgBp3F,KAAKo3F,aAAaW,gBACvC/3F,KAAKo3F,aAAaW,eAAe1iF,EAAMkjF,GAEvCljF,GAAQrV,KAAKs3F,QAAUt3F,KAAKs3F,OAAO32F,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAMi0F,OAAOzwF,KAAI,SAAUi/E,GAClBvlF,IAAQulF,GAAY,cAAcxtC,KAAK/3C,KACpC8C,EAAMytF,OACNztF,EAAM+zF,aAAaqB,YAAYC,MAAM,UAAYn4F,EAAK8U,EAAK9U,KAG3D8C,EAAMq1F,MAAM,UAAYn4F,EAAK8U,EAAK9U,IAClC8C,EAAMq1F,MAAM,eAAgBrjF,EAAK9U,aAOzD0H,QAAS,SAAU0wF,EAAWC,EAAWC,GAIrC,GAHK,SACD74F,KAAKs3F,OAAUt3F,KAAKs3F,OAAyCt3F,KAAKs3F,OAArCt3F,KAAKo3F,aAAaoB,aAEhC,WAAdG,GAAwC,UAAdA,IAA0B34F,KAAKs3F,QAAkC,IAAvBt3F,KAAKs3F,OAAO32F,QAiBhF,GAAmB,gBAAdg4F,GAAyD,iBAA1BC,EAAUn/D,aAAmCz5B,KAAKs3F,QAAkC,IAAvBt3F,KAAKs3F,OAAO32F,OAAe,CACzHJ,EAAMP,KAAKs3F,OAAO1lF,WAAWhL,MAAM,6BAA+B,GAClEkyF,EAAUv4F,EAAI,GACdq4F,GAAar4F,IAAQ,gBAAYq4F,EAAUE,MACtC,QAKD94F,KAAK04F,MAAM,UAAYI,EAASF,EAAUE,IAC1C94F,KAAK04F,MAAM,eAAgBE,EAAUE,MALrC94F,KAAKo3F,aAAaqB,YAAYC,MAAM,UAAYI,EAASF,EAAUE,IACnE94F,KAAKo3F,aAAaqB,YAAYC,MAAM,eAAgBE,EAAUE,WAvB0B,CAChG,IAAIv4F,EAAMP,KAAKs3F,OAAO1lF,WAAWhL,MAAM,kBAAoB,GACvDkyF,EAAUv4F,EAAI,GACdq4F,GAAar4F,IAAQ,gBAAYq4F,EAAUE,MACtC,QAMiB,WAAdH,GAA2B34F,KAAK+4F,SAAW/4F,KAAK+4F,OAAOC,gBACvDh5F,KAAK04F,MAAM,UAAYI,EAASF,EAAUE,IAC1C94F,KAAK04F,MAAM,eAAgBE,EAAUE,MAPzC94F,KAAKo3F,aAAaqB,YAAYC,MAAM,UAAYI,EAASF,EAAUE,IACnE94F,KAAKo3F,aAAaqB,YAAYC,MAAM,eAAgBE,EAAUE,IAC9D94F,KAAKo3F,aAAaqB,YAAYC,MAAM,oBAAqBE,EAAUE,MAwB1E94F,KAAKo3F,cAAgBp3F,KAAKo3F,aAAaS,UACxC73F,KAAKo3F,aAAaS,SAASc,EAAWC,EAAWC,IAGzDjG,OAAQ,WACJ5yF,KAAKizF,WAET1xC,QAAS,SAAU3e,GACf,OAAO5iC,KAAKo3F,aAAa71C,QAAQ3e,IAErCwe,UAAW,SAAUv/B,GACjB,OAAO7hB,KAAKo3F,aAAah2C,UAAUv/B,IAEvCy/B,YAAa,WACT,OAAOthD,KAAKo3F,aAAa91C,eAE7B/H,eAAgB,WACZ,OAAOv5C,KAAKo3F,aAAa79C,kBAE7B2K,OAAQ,SAAU11C,EAAM21C,GACpB,OAAOnkD,KAAKo3F,aAAalzC,OAAO11C,EAAM21C,IAE1CrK,kBAAmB,SAAUv5C,GACzB,OAAOP,KAAKo3F,aAAat9C,kBAAkBv5C,IAE/CstD,cAAe,WACX,OAAO7tD,KAAKo3F,aAAavpC,iBAE7BvgD,YAAa,WACT,OAAOtN,KAAKo3F,aAAa9pF,eAE7BsyC,gBAAiB,SAAUz9B,GACvB,OAAOniB,KAAKo3F,aAAax3C,gBAAgBz9B,IAE7Cu8B,MAAO,SAAUpzC,GACb,OAAOtL,KAAKo3F,aAAa14C,MAAMpzC,IAEnCuuC,YAAa,SAAUlmC,GACnB,OAAO3T,KAAKo3F,aAAav9C,YAAYlmC,IAEzC05C,gBAAiB,WACb,OAAOrtD,KAAKo3F,aAAa/pC,mBAE7B3L,WAAY,SAAUj1C,GAClB,OAAOzM,KAAKo3F,aAAa11C,WAAWj1C,IAExC40C,aAAc,SAAU50C,GACpB,OAAOzM,KAAKo3F,aAAa/1C,aAAa50C,IAE1Co9C,mBAAoB,SAAUC,EAAiBj/C,GAC3C,OAAO7K,KAAKo3F,aAAavtC,mBAAmBC,EAAiBj/C,IAEjE+iD,cAAe,SAAU5nD,EAAGC,GACxB,OAAOjG,KAAKo3F,aAAaxpC,cAAc5nD,EAAGC,IAE9CgI,YAAa,SAAUjI,EAAGC,EAAG0nD,GACzB,OAAO3tD,KAAKo3F,aAAanpF,YAAYjI,EAAGC,EAAG0nD,OAI5CsrC,GAAc,CACrBjpF,KAAM,YACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU0F,GAAYjpF,KAAMgnF,IAChC1D,EAAIC,UAAUU,EAAajkF,KAAMgkF,GACjCV,EAAIC,UAAUQ,EAAuB/jF,KAAM8jF,GAC3CR,EAAIC,UAAUE,EAAgBzjF,KAAMwjF,GACpCF,EAAIC,UAAUH,EAAiBpjF,KAAM0iF,GACrCY,EAAIC,UAAUM,EAAc7jF,KAAM4jF,GAClCN,EAAIC,UAAUI,EAAe3jF,KAAM0jF,GACnCJ,EAAIC,UAAU0B,EAAWjlF,KAAMglF,GAC/B1B,EAAIC,UAAUwB,EAAW/kF,KAAM8kF,GAC/BxB,EAAIC,UAAUc,EAAgBrkF,KAAMokF,GACpCd,EAAIC,UAAUY,EAAiBnkF,KAAMkkF,GACrCZ,EAAIC,UAAUsB,EAAsB7kF,KAAM4kF,GAC1CtB,EAAIC,UAAUoB,EAAuB3kF,KAAM0kF,GAC3CpB,EAAIC,UAAUkB,EAAezkF,KAAMwkF,GACnClB,EAAIC,UAAUgB,EAAiBvkF,KAAMskF,GACrChB,EAAIC,UAAU8B,EAAUrlF,KAAMolF,GAC9B9B,EAAIC,UAAU4B,EAAWnlF,KAAMklF,GAC/B5B,EAAIC,UAAUkC,EAAazlF,KAAMwlF,GACjClC,EAAIC,UAAUgC,EAAcvlF,KAAMslF,GAClChC,EAAIC,UAAUsC,EAAwB7lF,KAAM4lF,GAC5CtC,EAAIC,UAAUoC,EAAyB3lF,KAAM0lF,GAC7CpC,EAAIC,UAAU0C,EAAiBjmF,KAAMgmF,GACrC1C,EAAIC,UAAUwC,EAAkB/lF,KAAM8lF,GACtCxC,EAAIC,UAAU8C,EAAwBrmF,KAAMomF,GAC5C9C,EAAIC,UAAU4C,EAA0BnmF,KAAMkmF,GAC9C5C,EAAIC,UAAUkD,GAAgBzmF,KAAMwmF,IACpClD,EAAIC,UAAUgD,GAAiBvmF,KAAMsmF,O,oCCnP7C,0HAAIj3F,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAW5Ds4F,EAAgB,qBACpB,OAAoB1tF,KAAO,aAC3B,IAAI2tF,EAAc,CACd3pF,UAAW,KACXyzC,QAAS,IAkBTm2C,EAA0B,SAAUv2F,GASpC,SAASu2F,EAASj2F,EAASC,GACvB,OAAOP,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KA04BlD,OAn5BAX,EAAU+5F,EAAUv2F,GAiBpBu2F,EAASl5F,UAAU4T,UAAY,WAC3BjR,EAAO3C,UAAU4T,UAAUxQ,KAAKtD,OAEpCo5F,EAASl5F,UAAU0vD,cAAgB,WAC/B,MAAO,aAEXwpC,EAASl5F,UAAUm5F,UAAY,WACE,aAAzBr5F,KAAK8U,kBACL,OAAahJ,IAAI9L,KAAKg2D,aAAa/S,QAAQ,GAAI,YAAajjD,KAAKs5F,YAAat5F,MAC9E,OAAa8L,IAAI9L,KAAKg2D,aAAaxmD,UAAW,OAAQxP,KAAKu5F,cAAev5F,OAEzE,eAAkBA,KAAKg2D,aAAa/S,QAAQ,KAC7C,OAAan3C,IAAI9L,KAAKg2D,aAAa/S,QAAQ,GAAI,YAAajjD,KAAKm2D,cAAen2D,MAEpF,OAAa8L,IAAI9L,KAAKozD,aAAc,QAASpzD,KAAKw5F,YAAax5F,MAC1DA,KAAKy5F,WACN,OAAa3tF,IAAI9L,KAAKozD,aAAc,QAASpzD,KAAK05F,QAAS15F,MAC3D,OAAa8L,IAAI9L,KAAKozD,aAAc,QAASpzD,KAAK25F,WAAY35F,MAC9D,OAAa8L,IAAI9L,KAAKozD,aAAc,UAAWpzD,KAAK45F,aAAc55F,MAClE,OAAa8L,IAAI9L,KAAKozD,aAAc,QAASpzD,KAAK65F,aAAc75F,MAChE,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAK4H,aAAc5H,OAE1DA,KAAK85F,mBAETV,EAASl5F,UAAUo5F,YAAc,SAAUnsF,IACjCnN,KAAKq4B,gBAAkBzqB,SAASmsF,gBAAkB/5F,KAAKozD,cACxDxlD,SAASmsF,cAAc70F,UAAUmB,SAAS,OAAoBw/D,SAAU,OAAQl2D,WAAa,OAAQA,UACtGxC,EAAE+F,kBAGVkmF,EAASl5F,UAAUq5F,cAAgB,SAAUpsF,GACzC,IAAI6sF,EAAah6F,KAAKozD,cAA4C,KAA5BpzD,KAAKozD,aAAap2C,MACpD,KAAOhd,KAAKozD,cAAgBpzD,KAAKozD,aAAap2C,MAC7C,eAAkBhd,KAAKkzD,WAAc,eAAkB8mC,IAAeA,IAAeh6F,KAAKwc,MAC3Fxc,KAAKi6F,YAAY9sF,GAErBtK,EAAO3C,UAAUq5F,cAAcj2F,KAAKtD,KAAMmN,IAE9CisF,EAASl5F,UAAU+R,cAAgB,WAC/B,OAAOjS,KAAKozD,cAGhBgmC,EAASl5F,UAAU80D,WAAa,SAAUx4C,GACtC,OAAM09E,SAASl6F,KAAKwc,KAAMxc,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBACvEn6F,KAAKi6F,cACLj6F,KAAKu6C,mBAGT6+C,EAASl5F,UAAU+0D,YAAc,SAAUj4C,GACnChd,KAAK+0D,YACL/0D,KAAKo6F,gBAAgBp6F,KAAKgd,OAG1Bhd,KAAKo6F,gBAAgB,MAEzBp6F,KAAKu6C,kBACLv6C,KAAKq6F,kBAETjB,EAASl5F,UAAUk6F,gBAAkB,SAAUp9E,GAC3C,IAAIg9E,EAAa,eAAkBh9E,GAAS,KAAOA,EAAMpL,WACzD,OAAMsoF,SAASF,EAAYh6F,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBACxEn6F,KAAKiL,cAAc,CAAE+R,MAAOA,EAAOR,KAAMQ,EAAOvQ,MAAO,OAAQ,GAC/DzM,KAAKsxD,YAActxD,KAAKyM,MACxB,IAAIyqB,EAASl3B,KAAKk3B,OACdojE,EAAW,GACfA,EAASpjE,EAAO1a,MAAQ,eAAkBQ,GAAS,KAAOA,EAAMpL,WAChE0oF,EAASpjE,EAAOla,OAAS,eAAkBA,GAAS,KAAOA,EAAMpL,WACjE5R,KAAKu6F,SAAWD,EAChBt6F,KAAKuhB,KAAO,KACRvhB,KAAK0oB,gBAAkB1oB,KAAKgd,OAC5Bhd,KAAKw6F,kBAAkB,OAG/BpB,EAASl5F,UAAUq1D,aAAe,WAC9B,GAAK,eAAkBv1D,KAAKgd,OAsCvB,GAAIhd,KAAKwc,MAAQ,eAAkBxc,KAAKgd,OAAQ,CAC7C61C,EAAK7yD,KAAKy6F,iBAAiBz6F,KAAKwc,MAChCq2C,EACA7yD,KAAKszD,aAAaT,EAAI,OAGtB,OAAMqnC,SAASl6F,KAAKwc,KAAMxc,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBACvEn6F,KAAKi6F,oBAITj6F,KAAKszD,aAAatzD,KAAKgzD,cAAchzD,KAAKsxD,aAAc,UAjDxB,CAChC,IAAIuB,EAAK7yD,KAAK06F,kBAAkB16F,KAAKgd,OACjC29E,GAAe,eAAkB9nC,GACrC,GAAI7yD,KAAKw0B,sBAAwBx0B,KAAKgd,MAAO,CACzC,IAAIka,EAAUl3B,KAAKk3B,OAAY,MAAIl3B,KAAKk3B,OAAOla,MAAQ,GACvD,GAAIhd,KAAKof,sBAAsB,QAAepf,KAAKmwD,uBAAwB,CACvE,IAAIrY,EAAU,IAAI,OAAY93C,KAAKmwD,wBAAwByqC,cAAa,IAAI,QAAQ7iE,MAAM,IAAI,OAAUb,EAAQ,QAASl3B,KAAKgd,SAC9H,GAAI86B,GAAWA,EAAQn3C,OAAS,EAAG,CAC/BX,KAAKu6F,SAAWziD,EAAQ,GACxB6iD,GAAc,EACd,IAAIL,EAAWt6F,KAAK66F,eACf76F,KAAKgd,QAAUs9E,EAASt9E,OAAShd,KAAKwc,OAAS89E,EAAS99E,MAAUxc,KAAKgd,QAAUs9E,EAASt9E,OAAShd,KAAKwc,OAAS89E,EAAS99E,OAC3Hxc,KAAKiL,cAAc,CAAE,KAAQqvF,EAAS99E,KAAM,MAAS89E,EAASt9E,aAIrE,CACG86B,EAAU,IAAI,OAAY93C,KAAKof,YAAYw7E,cAAa,IAAI,QAAQ7iE,MAAM,IAAI,OAAUb,EAAQ,QAASl3B,KAAKgd,SAClH,GAAI86B,GAAWA,EAAQn3C,OAAS,EAAG,CAC/BX,KAAKu6F,SAAWziD,EAAQ,GACxB6iD,GAAc,EACVL,EAAWt6F,KAAK66F,eACf76F,KAAKgd,QAAUs9E,EAASt9E,OAAShd,KAAKwc,OAAS89E,EAAS99E,MAAUxc,KAAKgd,QAAUs9E,EAASt9E,OAAShd,KAAKwc,OAAS89E,EAAS99E,OAC3Hxc,KAAKiL,cAAc,CAAE,KAAQqvF,EAAS99E,KAAM,MAAS89E,EAASt9E,UAK1E61C,EACA7yD,KAAKszD,aAAaT,EAAI,OAEf7yD,KAAKw0B,sBAAwBx0B,KAAK+0D,aAAiB/0D,KAAK+0D,aAAe/0D,KAAKw0B,uBAAyBmmE,EAC5G36F,KAAKo6F,gBAAgBp6F,KAAKgd,SAEpBhd,KAAKw0B,sBAAyBx0B,KAAKw0B,uBAAyBmmE,IAClE36F,KAAKo6F,gBAAgB,MAgB7Bp6F,KAAKq6F,iBACL,OAAMH,SAASl6F,KAAKwc,KAAMxc,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,kBAE3Ef,EAASl5F,UAAU46F,gBAAkB,WAC7B96F,KAAKm6F,kBACDn6F,KAAKozD,cAA4C,KAA5BpzD,KAAKozD,aAAap2C,QAAiBhd,KAAKy5F,SAC7D,gBAAY,CAACz5F,KAAKg2D,aAAa+kC,aAAc,OAAoBC,eAGjE,eAAS,CAACh7F,KAAKg2D,aAAa+kC,aAAc,OAAoBC,iBAI1E5B,EAASl5F,UAAU+6F,kBAAoB,WACnC,IAAIC,EAAiB,CACjB,KAAQ,WACR,oBAAqB,OACrB,kBAAmBl7F,KAAKm7F,cAAc7vF,GACtC,gBAAiB,QACjB,gBAAiBtL,KAAKy5F,SAAS7nF,WAC/B,aAAgB,MAChB,eAAkB,MAClB,WAAc,SAElB,OAAOspF,GAEX9B,EAASl5F,UAAU0wD,YAAc,SAAUzjD,GACvCnN,KAAK6wD,SAAU,EACX7wD,KAAK6xD,eACLhvD,EAAO3C,UAAU0wD,YAAYttD,KAAKtD,KAAMmN,GACpCnN,KAAK0yD,WAA+C,KAAlC1yD,KAAKmxD,YAAYn0C,MAAMzQ,QACzCvM,KAAK0zD,aAAa1zD,KAAK0yD,UAAUxmD,cAAc,IAAM,OAAoB2mD,OAIzE7yD,KAAK0yD,WAAyC,KAA5B1yD,KAAKozD,aAAap2C,OAAgBhd,KAAK8zD,iBACzD9zD,KAAK0zD,aAAa1zD,KAAK0yD,UAAUxmD,cAAc,IAAM,OAAoB2mD,KAE7E7yD,KAAKo7F,kBAAkBjuF,KAG/BisF,EAASl5F,UAAU2vD,eAAiB,WAChC,MAAO,gBAEXupC,EAASl5F,UAAUm7F,aAAe,WAC9Br7F,KAAKmxD,YAAcnxD,KAAKozD,aACxB,IAAIkoC,EAAsBt7F,KAAK6xD,eAAkB7xD,KAAKmI,SAAoC,aAAzBnI,KAAK8U,gBAAmC9U,KAAKg2D,aAAemjC,EAC7H,OAAOmC,GAGXlC,EAASl5F,UAAUuyD,iBAAmB,SAAUC,EAAWzB,EAAM9jD,EAAGwlD,GAChE,IAAItvD,EAAQrD,KACZ6C,EAAO3C,UAAUuyD,iBAAiBnvD,KAAKtD,KAAM0yD,EAAWzB,EAAM9jD,GAC1DnN,KAAK+wD,gBACL/wD,KAAKu6C,kBAEJv6C,KAAK8zD,iBAA4C,aAAzB9zD,KAAK8U,kBAAkC9U,KAAK6wD,SAAY7wD,KAAKw0B,sBACtFpnB,YAAW,WACP/J,EAAMk4F,mBAIlBnC,EAASl5F,UAAUs7F,gBAAkB,WACjC,IAAIlB,EAAWt6F,KAAK+wD,eAAiB,CAAEv0C,KAAM,IAAOxc,KAAK66F,cACrD9wB,EAAY,eAAkB/pE,KAAKixD,MAAsEjxD,KAAKixD,KAAnEjxD,KAAKixD,KAAK/kD,cAAc,IAAM,OAAoB69D,UAC7FngD,EAAa0wE,EAAS99E,MAAQ89E,EAAS99E,KAAK5K,aAAe5R,KAAKozD,aAAap2C,QAAU,eAAkB+sD,GAC7G,GAAIngD,EACA,OAAOmgD,EAEX,IAAK,OAAQp6D,WAAa3P,KAAKy7F,kBAAoB,OAAQ9rF,YACtD,eAAkB3P,KAAKgzD,gBAAkBhzD,KAAKgzD,cAAcryD,OAAS,EAAG,CACzE,IAAIq5F,EAAah6F,KAAKozD,aAAap2C,MAC/BoC,EAAapf,KAAK07F,WAClBltF,EAAOxO,KAAKiwD,WAAW7wC,GAAY8wC,OACnCyrC,EAAa,eAAO3B,EAAYh6F,KAAKgzD,cAAehzD,KAAK8vD,YAAY,EAAM1wC,EAAYpf,KAAKk3B,OAAQ1oB,GACxG,GAAIxO,KAAKw0B,sBAAuC,KAAfwlE,GAA8C,iBAAzBh6F,KAAK8U,iBAAsC9U,KAAK6wD,UAAY7wD,KAAKq4B,eAAgB,CACnI,IAAIujE,GAA2B,GAC1B57F,KAAK21D,aAAa1tB,UAAYjoC,KAAK67F,qBAAuB77F,KAAK67F,qBAAuB77F,KAAKoyD,gBAA+C,GAA5BpyD,KAAK67F,uBACpHD,GAA2B,EAC3B57F,KAAK87F,sBAAwB97F,KAAK67F,oBACF,GAA5B77F,KAAK67F,oBACL77F,KAAK67F,oBAAsB,IAAM77F,KAAKoyD,eAAiBpyD,KAAKoyD,eAAiB,IAG7EpyD,KAAK67F,oBAAsB77F,KAAK67F,oBAAsB,IAAM77F,KAAKoyD,eAAiBpyD,KAAKoyD,eAAiBpyD,KAAK67F,oBAAsB,IAEvI77F,KAAK+7F,sBAAsB/7F,KAAK87F,sBAAuB97F,KAAK67F,qBAC5DD,GAA2B,IAEM,IAAjC57F,KAAK21D,aAAa3tB,YAAoB4zD,IACtC57F,KAAKg8F,sBAAsB,EAAGh8F,KAAKi8F,WAEvCN,EAAa,eAAO3B,EAAYh6F,KAAKk8F,yBAA0Bl8F,KAAK8vD,YAAY,EAAM1wC,EAAYpf,KAAKk3B,OAAQ1oB,GAC/G,MAAO,eAAkBmtF,IAAe37F,KAAK67F,oBAAsB77F,KAAKoyD,eAAgB,CASpF,GARApyD,KAAK87F,sBAAwB97F,KAAK67F,oBAClC77F,KAAK67F,oBAAsB77F,KAAK67F,oBAAsB,IAAM77F,KAAKoyD,eAAiBpyD,KAAKoyD,eAAiBpyD,KAAK67F,oBAAsB,IACnI77F,KAAK+7F,sBAAsB/7F,KAAK87F,sBAAuB97F,KAAK67F,qBAC5DD,GAA2B,GACU,IAAjC57F,KAAK21D,aAAa3tB,YAAoB4zD,IACtC57F,KAAKg8F,sBAAsB,EAAGh8F,KAAKi8F,WAEvCN,EAAa,eAAO3B,EAAYh6F,KAAKk8F,yBAA0Bl8F,KAAK8vD,YAAY,EAAM1wC,EAAYpf,KAAKk3B,OAAQ1oB,IAC1G,eAAkBmtF,GACnB,MAEJ,GAAI,eAAkBA,IAAe37F,KAAK67F,qBAAuB77F,KAAKoyD,eAAgB,CAClFpyD,KAAK87F,sBAAwB,EAC7B97F,KAAK67F,oBAAsB,IAAM77F,KAAKoyD,eAAiBpyD,KAAKoyD,eAAiB,IAC7E,OAGR,GAAIupC,EAAWlvF,UACJzM,KAAK21D,aAAa3tB,YAAc2zD,EAAWlvF,UAAckvF,EAAWlvF,OAASzM,KAAK21D,aAAa1tB,WAAY,CAC9G,IAAID,EAAa2zD,EAAWlvF,OAAUzM,KAAKi8F,UAAY,EAAK,GAAK,EAAIN,EAAWlvF,OAAUzM,KAAKi8F,UAAY,EAAK,GAAK,EACjHh0D,EAAWjoC,KAAK21D,aAAa3tB,WAAahoC,KAAKi8F,UAAYj8F,KAAKoyD,eAAiBpyD,KAAKoyD,eAAiBpyD,KAAK21D,aAAa3tB,WAAahoC,KAAKi8F,UAC3Ij0D,GAAchoC,KAAK21D,aAAa3tB,YAChChoC,KAAKg8F,sBAAsBh0D,EAAYC,GAInD,GAAK,eAAkB0zD,EAAWp6E,MAU9BvhB,KAAKg8F,sBAAsB,EAAGh8F,KAAKi8F,WAEnCj8F,KAAKixD,KAAKjd,uBAAuB,yBAAyB,GAAGjtC,MAAQ/G,KAAKiyD,qBAC1EjyD,KAAKixD,KAAKhgD,UAAY,MAbe,CACrC,IAAI49B,EAAU7uC,KAAKyzD,gBAAgBkoC,EAAWp6E,KAAK7W,aAAa,eAAiB1K,KAAKm8F,cACtF,GAAIttD,EAAU7uC,KAAKi8F,UAAY,EAAG,CAC1Bj0D,EAAahoC,KAAK21D,aAAa3tB,YAAehoC,KAAKi8F,UAAY,EAAK,GAAKj8F,KAAKoyD,eAAiBpyD,KAAK21D,aAAa3tB,YAAehoC,KAAKi8F,UAAY,EAAK,GAAKj8F,KAAKoyD,eAChKnqB,EAAWjoC,KAAK21D,aAAa3tB,WAAahoC,KAAKi8F,UAAYj8F,KAAKoyD,eAAiBpyD,KAAKoyD,eAAiBpyD,KAAK21D,aAAa3tB,WAAahoC,KAAKi8F,UAC/Ij8F,KAAKg8F,sBAAsBh0D,EAAYC,GAE3C0zD,EAAWp6E,KAAOvhB,KAAK06F,kBAAkBiB,EAAWp6E,KAAK7W,aAAa,eAQtEixF,GAAcA,EAAWp6E,OACzBo6E,EAAWp6E,KAAOvhB,KAAK06F,kBAAkBiB,EAAWp6E,KAAK7W,aAAa,gBAG9E,IAAIqvF,EAAgB4B,EAAWp6E,KAC/B,GAAK,eAAkBw4E,GAqBf/5F,KAAK+wD,gBAAqD,KAAnC/wD,KAAKozD,aAAap2C,MAAMzQ,SAC/CvM,KAAKo8F,cACAp8F,KAAKw0B,uBACNx0B,KAAKixD,KAAKhgD,UAAY,QAxBK,CACnC,IAAI8O,EAAQ/f,KAAKyzD,gBAAgBsmC,EAAcrvF,aAAa,eAAiB,EACzErF,EAASsM,SAASnL,iBAAiBxG,KAAKgzD,cAAc,GAAI,MAAMtsD,iBAAiB,UAAW,IAChG,IAAKkX,MAAMvY,IAAoC,iBAAzBrF,KAAK8U,gBAAoC,CAC3D9U,KAAKo8F,cACL,IAAIC,EAAYr8F,KAAKk3B,OAAOy/B,QAAU32D,KAAKgzD,cAAc,GAAGvpD,aAAe,EAC3E,GAAKzJ,KAAKw0B,sBAMN,GADAx0B,KAAKixD,KAAKjd,uBAAuB,yBAAyB,GAAGjtC,MAAQ/G,KAAKiyD,qBACtEjyD,KAAKw0B,uBAAyBx0B,KAAKk3B,OAAOy/B,QAAS,CACnD,IAAI2lC,EAAsBt8F,KAAKgyD,iBAAmBhyD,KAAKgyD,gBAAgBhqB,WAAa+xD,EAAchpF,UAAa/Q,KAAKgyD,gBAAgBhqB,WAAa+xD,EAActwF,aAAgBswF,EAAchpF,UAC7L/Q,KAAKixD,KAAKhgD,UAAYqrF,EAAuBt8F,KAAKixD,KAAKnE,iBAAiB,mBAAmBnsD,OAASo5F,EAActwF,mBAPtHzJ,KAAKixD,KAAKhgD,UAAY8O,EAAQ1a,EAASg3F,EAU3C,eAAS,CAACtC,GAAgB,OAAoBlzC,QAWtD,OAAOkzC,EAGP,OAAO,MAGfX,EAASl5F,UAAUg6F,SAAW,SAAU/sF,GAIpC,OAHIA,GAAgB,YAAXA,EAAEqB,MAAmC,UAAbrB,EAAE4vB,QAC/B/8B,KAAKu8F,sBAELv8F,KAAK+yD,UAAqC,aAAzB/yD,KAAK8U,iBAAkC3H,GAAgB,YAAXA,EAAEqB,MAAmC,UAAbrB,EAAE4vB,QACvF/8B,KAAK8zD,iBAAkB,EACvB9zD,KAAKu7F,aAAapuF,IACX,GAGAtK,EAAO3C,UAAUg6F,SAAS52F,KAAKtD,KAAMmN,IAGpDisF,EAASl5F,UAAUs8F,iBAAmB,WAClCx8F,KAAKu6F,SAAWv6F,KAAKy8F,eAAez8F,KAAKgd,OACzC,IAAIs9E,EAAWt6F,KAAK66F,cACd76F,KAAK+0D,aAAe,eAAkBulC,EAASt9E,QAAU,eAAkBs9E,EAAS99E,OACtFxc,KAAKiL,cAAc,CAAE,MAASqvF,EAASt9E,QAAUhd,KAAK+0D,cAS9DqkC,EAASl5F,UAAUw8F,YAAc,WACzB,eAAkB18F,KAAK28F,kBACvB38F,KAAK28F,eAA2C,iBAAzB38F,KAAK8U,gBAAuC9U,KAAKg2D,aAAa/S,QAAQ,IACzFjjD,KAAKg2D,aAAa+kC,aAClB,OAAMhlC,WAAW,sBAAwBmjC,EAAel5F,KAAKg2D,aAAaxmD,UAAWxP,KAAKuE,eACzFvE,KAAKg2D,aAAa/S,QAAQ,IAAMjjD,KAAKg2D,aAAa+kC,YACvD,eAAS,CAAC/6F,KAAK28F,gBAAiB,OAAoBC,aACpD,eAAc,CACVt8F,OAAQN,KAAK28F,eACbr3F,MAAO,OAAQqK,SAAW,OAAS,QACpC3P,KAAKuE,eACR,eAAYvE,KAAK28F,kBASzBvD,EAASl5F,UAAU28F,YAAc,WACxB,eAAkB78F,KAAK28F,kBACxB,eAAY38F,KAAK28F,gBACjB,gBAAY,CAAC38F,KAAK28F,gBAAiB,OAAoBC,aACnD58F,KAAK28F,eAAez3F,UAAUmB,SAAS6yF,GACvC,eAAOl5F,KAAK28F,gBAGZ38F,KAAK28F,eAAe7xF,UAAY,GAEpC9K,KAAK28F,eAAiB,OAG9BvD,EAASl5F,UAAUmzD,YAAc,SAAU0mC,EAAe+C,GAItD,GAHKA,GACD98F,KAAK0zD,aAAaqmC,GAElB/5F,KAAK+yD,WAAa/yD,KAAK8zD,gBAAiB,CACxC,IAAIrrC,EAAezoB,KAAK+8F,eAAehD,EAAcrvF,aAAa,eAAekH,WAC7EorF,EAAmBh9F,KAAKwzD,kBAAkBumC,EAAcrvF,aAAa,eAC5C,aAAzB1K,KAAK8U,kBACA9U,KAAK4pB,YAAc5pB,KAAK0oB,gBAAkBs0E,EAM3Ch9F,KAAKi9F,mBAAmBlD,EAAe,MAAM,IAL7C/5F,KAAKi9F,mBAAmBlD,EAAe,MACvC/5F,KAAK4pB,YAAa,EAClB5pB,KAAK0oB,cAAgB1oB,KAAKwzD,kBAAkBumC,EAAcrvF,aAAa,iBAM1E1K,KAAKk9F,kBAAkBz0E,IACxBzoB,KAAKm9F,qBAAqB10E,EAAcq0E,KAIpD1D,EAASl5F,UAAUg9F,kBAAoB,SAAUlgF,GAC7C,GAAI,OAAQogF,UAAW,CACnB,IAAIvxE,EAAgB7rB,KAAKq9F,qBACrBC,EAAUt9F,KAAKu9F,iBAAiBpgF,IAChCqgF,EAAS3xE,EAAc1O,IACvBsgF,EAAYz9F,KAAKu9F,iBAAiBrgF,MAClCwgF,EAAW7xE,EAAc3O,MAC7B,OAAgB,IAAZogF,IAAmBA,IAAYtgF,EAAMrc,QAAU88F,IAAczgF,EAAMrc,QAClE88F,EAAYC,GAAYJ,EAAUE,GAAYF,IAAYE,GAAUC,IAAcC,GAQvF,OAAO,GAGftE,EAASl5F,UAAUqyD,SAAW,SAAUplD,EAAGqlD,IACnC,eAAkBA,KAAe,eAAkBA,IAAa,eAAkBA,EAASpzC,cAC3Fvc,EAAO3C,UAAUqyD,SAASjvD,KAAKtD,KAAMmN,GAErCnN,KAAK6xD,gBAAkB,eAAkB1kD,IAAMA,EAAE7M,SAAWN,KAAKg2D,aAAa+kC,aAC9E/6F,KAAK4wD,YAAYzjD,IAGzBisF,EAASl5F,UAAUy0D,kBAAoB,SAAUvxD,GAC7C,OAAQ,eAAkBA,IAE9Bg2F,EAASl5F,UAAUq7F,aAAe,SAAUpuF,GACxC,IAAI4mD,EAAiB5mD,IAAmB,SAAbA,EAAE4vB,QAAkC,OAAb5vB,EAAE4vB,QACnC,SAAb5vB,EAAE4vB,QAAkC,QAAb5vB,EAAE4vB,QAAiC,WAAb5vB,EAAE4vB,QAAoC,aAAb5vB,EAAE4vB,QACxEg9D,EAAgBhmC,EAAgB/zD,KAAKgzD,cAAchzD,KAAKsxD,aAAetxD,KAAKw7F,kBAChF,GAAK,eAAkBzB,GASlB,GAAgC,KAA5B/5F,KAAKozD,aAAap2C,OAEvB,GADAhd,KAAKsxD,YAAc,MACd,eAAkBtxD,KAAKixD,MAAO,CAC1BjxD,KAAKw0B,uBACNx0B,KAAKixD,KAAKhgD,UAAY,GAE1B,IAAI0sF,EAAY39F,KAAKixD,KAAK/kD,cAAc,IAAM,OAAoB2mD,IAClE7yD,KAAK0zD,aAAaiqC,SAItB39F,KAAKsxD,YAAc,KACnBtxD,KAAKu6C,kBACDv6C,KAAKgzD,eAAiBhzD,KAAKgzD,cAAcryD,OAAS,IAAMX,KAAK49F,gBAC7D59F,KAAKo8F,kBAvB0B,CACnC,IAAKroC,EAAe,CAChB,IAAI/2C,EAAQhd,KAAKwzD,kBAAkBumC,EAAcrvF,aAAa,eAC9D1K,KAAKsxD,YAActxD,KAAKyzD,gBAAgBz2C,GACxChd,KAAKsxD,YAAe,eAAkBtxD,KAAKsxD,aAAkC,KAAnBtxD,KAAKsxD,YAEnEtxD,KAAK8zD,gBAA8C,KAA5B9zD,KAAKozD,aAAap2C,OAAuBhd,KAAK8zD,gBACrE9zD,KAAKqzD,YAAY0mC,EAAehmC,KAoBxCqlC,EAASl5F,UAAUk7F,kBAAoB,SAAUjuF,GAC7CnN,KAAKw1D,UAAUroD,GACV,eAAkBnN,KAAKkzD,YACxBlzD,KAAKu7F,aAAapuF,GAClBA,EAAE+F,mBAGVkmF,EAASl5F,UAAUi9F,qBAAuB,SAAU10E,EAAcsrC,QACxC,IAAlBA,IAA4BA,GAAgB,GAChD,IAAI8pC,EAAY79F,KAAKq9F,qBACjBrgF,EAAQhd,KAAKozD,aAAap2C,MAAM8gF,OAAO,EAAGD,EAAU3gF,OACxD,GAAIF,GAAUA,EAAMuF,gBAAkBkG,EAAaq1E,OAAO,EAAGD,EAAU3gF,OAAOqF,cAAgB,CAC1F,IAAIy3E,EAAah9E,EAAQyL,EAAaq1E,OAAO9gF,EAAMrc,OAAQ8nB,EAAa9nB,QACxE,OAAMu5F,SAASF,EAAYh6F,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBACxEn6F,KAAKozD,aAAa2qC,kBAAkBF,EAAU3gF,MAAOld,KAAKozD,aAAap2C,MAAMrc,aAExEozD,IACL,OAAMmmC,SAASzxE,EAAczoB,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBAC1En6F,KAAKozD,aAAa2qC,kBAAkB,EAAG/9F,KAAKozD,aAAap2C,MAAMrc,UAGvEy4F,EAASl5F,UAAU89F,eAAiB,SAAUxhF,GAC1C,OAAO3Z,EAAO3C,UAAU89F,eAAe16F,KAAKtD,KAAMwc,GAAM,EAAMxc,KAAK43B,eAEvEwhE,EAASl5F,UAAU+9F,YAAc,WACA,aAAzBj+F,KAAK8U,kBACL,OAAa3P,OAAOnF,KAAKg2D,aAAa/S,QAAQ,GAAI,YAAajjD,KAAKs5F,aACpE,OAAan0F,OAAOnF,KAAKg2D,aAAaxmD,UAAW,OAAQxP,KAAKu5F,gBAE7D,eAAkBv5F,KAAKg2D,aAAa/S,QAAQ,KAC7C,OAAa99C,OAAOnF,KAAKg2D,aAAa/S,QAAQ,GAAI,YAAajjD,KAAKm2D,eAEpEn2D,KAAKozD,eACL,OAAajuD,OAAOnF,KAAKozD,aAAc,QAASpzD,KAAKw5F,aAChDx5F,KAAKy5F,WACN,OAAat0F,OAAOnF,KAAKozD,aAAc,QAASpzD,KAAK05F,SACrD,OAAav0F,OAAOnF,KAAKozD,aAAc,QAASpzD,KAAK25F,YACrD,OAAax0F,OAAOnF,KAAKozD,aAAc,UAAWpzD,KAAK45F,cACvD,OAAaz0F,OAAOnF,KAAKozD,aAAc,QAASpzD,KAAK65F,cACrD,OAAa10F,OAAOoB,OAAQ,SAAUvG,KAAK4H,gBAGnD5H,KAAKk+F,qBAET9E,EAASl5F,UAAUozD,aAAe,SAAUT,EAAI1lD,GAC5CtK,EAAO3C,UAAUozD,aAAahwD,KAAKtD,KAAM6yD,EAAI1lD,GACxC,eAAkB0lD,IAAQ7yD,KAAK+yD,UAAa/yD,KAAKy7F,iBAClDz7F,KAAKo8F,eAGbhD,EAASl5F,UAAUi+F,kBAAoB,SAAUhxF,GAC7C,IAAI0lD,EACA7yD,KAAK6zD,cAEDhB,EADA7yD,KAAK4pB,WACA5pB,KAAKixD,KAAK/kD,cAAc,IAAM,OAAoB69D,UAGlD/pE,KAAKixD,KAAK/kD,cAAc,IAAM,OAAoB26C,OAEvDgM,IACA7yD,KAAKszD,aAAaT,EAAI1lD,GACtBnN,KAAK6wD,SAAU,GAEf7wD,KAAK4pB,aACL5pB,KAAK+wD,gBAAiB,EACtB/wD,KAAKo+F,cAAcjxF,KAGV,UAAbA,EAAE4vB,QAAyD,KAAnC/8B,KAAKozD,aAAap2C,MAAMzQ,OAChDvM,KAAKuyD,SAASplD,GAETnN,KAAK6wD,UAAY7wD,KAAK4pB,YAAc,eAAkBipC,IAC3D7yD,KAAKi6F,YAAY9sF,GAErBnN,KAAKsyD,UAAUnlD,IAEnBisF,EAASl5F,UAAUwzD,aAAe,SAAUb,GACxC7yD,KAAKu6C,kBACDv6C,KAAKuzD,UAAUV,KAAQA,EAAG3tD,UAAUmB,SAAS,OAAoB0jE,YACjE/pE,KAAKo8F,cACLvpC,EAAG3tD,UAAU4G,IAAI,OAAoB+6C,SAG7CuyC,EAASl5F,UAAUs5F,YAAc,SAAUrsF,GACnC,OAAQwC,WAAa3P,KAAKq4B,iBAC1Br4B,KAAKq+F,cAAe,GAExBr+F,KAAKs+F,QAAQnxF,GACb,OAAM8oD,eAAej2D,KAAKozD,aAAcpzD,KAAKg2D,aAAaxmD,YAE9D4pF,EAASl5F,UAAUi2D,cAAgB,SAAUhpD,GACzCA,EAAE+F,iBACE,OAAQvD,WAAa3P,KAAK6xD,gBAC1B7xD,KAAKq+F,cAAe,GAExBx7F,EAAO3C,UAAUi2D,cAAc7yD,KAAKtD,KAAMmN,IAE9CisF,EAASl5F,UAAU+5F,YAAc,SAAU9sF,GACvC,IAAI9J,EAAQrD,KACRgd,EAAQhd,KAAKg+F,eAAeh+F,KAAKozD,aAAap2C,OAClD,GAAKhd,KAAK+0D,aAA2C,KAA5B/0D,KAAKozD,aAAap2C,MAWtC,GAAuC,KAAnChd,KAAKozD,aAAap2C,MAAMzQ,OAAe,CAC5C,IAAIgyF,EAAkBv+F,KAAKgd,MAC3B,GAAI,eAAkBA,GAAQ,CAC1B,IAAIwhF,EAAsC,KAA5Bx+F,KAAKozD,aAAap2C,MAAe,KAAOhd,KAAKozD,aAAap2C,MAEpEu0C,EAAY,CAAE/0C,KAAMgiF,EAASj9E,KAAM,IAClCvhB,KAAKy+F,QAMNz+F,KAAK0+F,0BAA0BF,EAASjtC,EAAWgtC,GALnDv+F,KAAKiI,QAAQ,uBAAwBspD,GAAW,SAAUA,GACtDluD,EAAMq7F,0BAA0BF,EAASjtC,EAAWgtC,EAAiBpxF,WAQ7EnN,KAAK+wD,gBAAiB,EACtB/wD,KAAKiL,cAAc,CAAE+R,MAAOA,IACxBuhF,IAAoBv+F,KAAKgd,OACzBhd,KAAKo+F,cAAcjxF,QAItBnN,KAAK+0D,cACV/0D,KAAK+wD,gBAAiB,OAnC+B,CACrD,IAAIroC,EAAgB1oB,KAAK0oB,cACrBD,EAAezoB,KAAKgd,MACxBhd,KAAKiL,cAAc,CAAE+R,MAAOA,IACxB,eAAkBhd,KAAKgd,QACvB,OAAMk9E,SAAS,GAAIl6F,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBAEhEn6F,KAAK+yD,UAAYrqC,IAAkB1oB,KAAKgd,OAASyL,IAAiBzoB,KAAKgd,OACvEhd,KAAKo+F,cAAc,QA8B/BhF,EAASl5F,UAAUw+F,0BAA4B,SAAU1hF,EAAOu0C,EAAW7oC,EAAevb,GACtF,IAAI+pB,EAASl3B,KAAKk3B,OACd3V,EAAOgwC,EAAUhwC,KACjB+4E,EAAW,GACX/4E,GAAQ,eAAS2V,EAAO1a,KAAM+E,IAAS,eAAS2V,EAAOla,MAAOuE,GAC9D+4E,EAAW/4E,GAGX,gBAAS2V,EAAO1a,KAAMQ,EAAOs9E,GAC7B,gBAASpjE,EAAOla,MAAOA,EAAOs9E,IAElCt6F,KAAKu6F,SAAWD,EAChB,IAAIqE,EAAa,CACbniF,KAAM,eAAS0a,EAAO1a,KAAMxc,KAAKu6F,UACjCv9E,MAAO,eAASka,EAAOla,MAAOhd,KAAKu6F,UACnC9tF,MAAO,MAEXzM,KAAKiL,cAAc0zF,GAAY,GAC/B3+F,KAAKszD,aAAa,KAAM,MACxBtzD,KAAK+wD,gBAAiB,EAClBroC,IAAkB1oB,KAAKgd,OACvBhd,KAAKo+F,cAAcjxF,IAW3BisF,EAASl5F,UAAU+U,kBAAoB,SAAUC,EAASC,GACzB,aAAzBnV,KAAK8U,kBACL9U,KAAK4+F,UAAU1pF,GACflV,KAAK61D,iBAAiB,CAAC,SAAU,QAAS,cAAe3gD,IAE7D,IAAK,IAAIrH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,WACD,OAAMwpF,YAAY7+F,KAAKy5F,SAAUz5F,KAAKozD,cAClCpzD,KAAKy5F,UACL,OAAat0F,OAAOnF,KAAKozD,aAAc,QAASpzD,KAAK05F,SACrD,OAAav0F,OAAOnF,KAAKozD,aAAc,QAASpzD,KAAK25F,YACrD,OAAax0F,OAAOnF,KAAKozD,aAAc,UAAWpzD,KAAK45F,gBAGvD,OAAa9tF,IAAI9L,KAAKozD,aAAc,QAASpzD,KAAK05F,QAAS15F,MAC3D,OAAa8L,IAAI9L,KAAKozD,aAAc,QAASpzD,KAAK25F,WAAY35F,MAC9D,OAAa8L,IAAI9L,KAAKozD,aAAc,UAAWpzD,KAAK45F,aAAc55F,OAEtEA,KAAK8+F,cACL,MACJ,IAAK,iBACD9+F,KAAKq7F,eACDr7F,KAAK6xD,eAA0C,aAAzB7xD,KAAK8U,iBAAkC,eAAkB9U,KAAKixD,OACpFpuD,EAAO3C,UAAUgxD,WAAW5tD,KAAKtD,MAErC,MACJ,IAAK,cACD,MACJ,QAEI,IAAI++F,EAAa/+F,KAAKq2D,cAAchhD,EAAMH,EAASC,GACnDtS,EAAO3C,UAAU+U,kBAAkB3R,KAAKtD,KAAM++F,EAAWzoC,YAAayoC,EAAWxoC,aAC7Ev2D,KAAK6xD,eAA0B,eAATx8C,GAAyB,eAAkBrV,KAAKixD,OAASjxD,KAAKo0D,cAC3D,aAAzBp0D,KAAK8U,iBACLjS,EAAO3C,UAAUgxD,WAAW5tD,KAAKtD,MAErC,SAWhBo5F,EAASl5F,UAAUyT,OAAS,WACxB9Q,EAAO3C,UAAUyT,OAAOrQ,KAAKtD,MAC7BA,KAAKq7F,eACDr7F,KAAK6xD,eAA0C,aAAzB7xD,KAAK8U,iBAAkC,eAAkB9U,KAAKixD,OACpFpuD,EAAO3C,UAAUgxD,WAAW5tD,KAAKtD,MAErCA,KAAK6T,kBAQTulF,EAASl5F,UAAU4U,cAAgB,WAC/B,MAAO,YAWXskF,EAASl5F,UAAUo1D,QAAU,SAAUrC,EAAO+rC,GAC1Cn8F,EAAO3C,UAAUo1D,QAAQhyD,KAAKtD,KAAMizD,EAAO+rC,IAW/C5F,EAASl5F,UAAUke,OAAS,SAAUgB,EAAYE,EAAO4X,GACrDr0B,EAAO3C,UAAUke,OAAO9a,KAAKtD,KAAMof,EAAYE,EAAO4X,IAS1DkiE,EAASl5F,UAAUs1D,UAAY,SAAUroD,GAErCtK,EAAO3C,UAAUs1D,UAAUlyD,KAAKtD,KAAMmN,IAS1CisF,EAASl5F,UAAUoyD,UAAY,SAAUnlD,GAErC,IAAI6sF,EAAah6F,KAAKozD,cAA4C,KAA5BpzD,KAAKozD,aAAap2C,MAAe,KACjEhd,KAAKozD,cAAgBpzD,KAAKozD,aAAap2C,MAC7C,IAAK,eAAkBhd,KAAKkzD,UAAW,CACnC,IAAI+rC,EAAWj/F,KAAKk/F,YAChBl/F,KAAKk/F,cACL,OAAMhF,SAASl6F,KAAK80D,YAAa90D,KAAKozD,aAAcpzD,KAAKk2D,eAAgBl2D,KAAKm6F,iBAC9En6F,KAAKk/F,aAAc,GAEnBl/F,KAAK+yD,UACL/yD,KAAKu8F,sBAET,IAAIjC,EAAWt6F,KAAK+wD,eAAiB,CAAEv0C,KAAM,IAAOxc,KAAK66F,cACrD9wB,EAAY,eAAkB/pE,KAAKixD,MAAsE,KAA9DjxD,KAAKixD,KAAK/kD,cAAc,IAAM,OAAoB69D,UACjG,GAAI/pE,KAAKozD,cAAgBknC,EAAS99E,OAASxc,KAAKozD,aAAap2C,QAAU,eAAkB+sD,GAMrF,OALI/pE,KAAK4pB,aACL5pB,KAAKo+F,cAAcjxF,GACnBnN,KAAK+wD,gBAAiB,QAE1BluD,EAAO3C,UAAUoyD,UAAUhvD,KAAKtD,KAAMmN,GAG1C,GAA6B,aAAzBnN,KAAK8U,iBAAqE,KAAnC9U,KAAKozD,aAAap2C,MAAMzQ,OAAe,CAC9E,IAAI6S,EAAapf,KAAK07F,WAClBltF,EAAOxO,KAAKiwD,WAAW7wC,GAAY8wC,OACnCiD,EAAa,eAAOnzD,KAAKozD,aAAap2C,MAAOhd,KAAKgzD,cAAe,SAAS,EAAM5zC,EAAYpf,KAAKk3B,OAAQ1oB,GAC7GxO,KAAK2zD,WAAaR,EAAW5xC,KACzB,eAAkB4xC,EAAW1mD,SAC7B0mD,EAAW1mD,MAAQ,eAAOzM,KAAKozD,aAAap2C,MAAOhd,KAAKgzD,cAAe,cAAc,EAAM5zC,EAAYpf,KAAKk3B,OAAQ1oB,GAAM/B,OAE9HzM,KAAKsxD,YAAc6B,EAAW1mD,MACzB,eAAkBzM,KAAK2zD,YAGnBsrC,IACLj/F,KAAK+wD,gBAAiB,EACtB/wD,KAAKu6C,mBAJLv6C,KAAKi9F,mBAAmBj9F,KAAK2zD,WAAY,MAAM,GAOlD3zD,KAAKk/F,cAAel/F,KAAK6wD,SAAY7wD,KAAK2O,cAC3C3O,KAAKi6F,YAAY9sF,GAGrB,eAAkBnN,KAAKkzD,WAAalzD,KAAK+0D,cAAgB,eAAkBilC,IAAeA,IAAeh6F,KAAKgd,OAC9Ghd,KAAKi6F,cAETp3F,EAAO3C,UAAUoyD,UAAUhvD,KAAKtD,KAAMmN,IAO1CisF,EAASl5F,UAAUi/F,QAAU,WACpBn/F,KAAKy1D,UAGN,OAAQ9lD,WAAa3P,KAAK6xD,gBAC1B7xD,KAAKq+F,cAAe,GAExBx7F,EAAO3C,UAAUi/F,QAAQ77F,KAAKtD,QAQlCo5F,EAASl5F,UAAUoI,MAAQ,WACvBtI,KAAKgd,MAAQ,MASjBo8E,EAASl5F,UAAUk/F,SAAW,SAAUjyF,GAEpCtK,EAAO3C,UAAUk/F,SAAS97F,KAAKtD,KAAMmN,IASzCisF,EAASl5F,UAAUk1D,SAAW,WAC1B,OAAOvyD,EAAO3C,UAAUk1D,SAAS9xD,KAAKtD,OAS1Co5F,EAASl5F,UAAUu8F,eAAiB,SAAUz/E,GAC1C,OAAOna,EAAO3C,UAAUu8F,eAAen5F,KAAKtD,KAAMgd,IAGtDo8E,EAASl5F,UAAUs2D,kBAAoB,aAGvCp2D,EAAW,CACP,gBAAS,IACVg5F,EAASl5F,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACVg5F,EAASl5F,UAAW,mBAAe,GACtCE,EAAW,CACP,eAAS,KACVg5F,EAASl5F,UAAW,sBAAkB,GACzCE,EAAW,CACP,gBAAS,IACVg5F,EAASl5F,UAAW,sBAAkB,GACzCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,aAAS,GAChCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,aAAS,GAChCE,EAAW,CACP,gBAAS,IACVg5F,EAASl5F,UAAW,uBAAmB,GAC1CE,EAAW,CACP,gBAAS,IACVg5F,EAASl5F,UAAW,iBAAa,GACpCE,EAAW,CACP,kBACDg5F,EAASl5F,UAAW,4BAAwB,GAC/CE,EAAW,CACP,kBACDg5F,EAASl5F,UAAW,iBAAa,GACpCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,qBAAiB,GACxCE,EAAW,CACP,eAAS,UACVg5F,EAASl5F,UAAW,sBAAkB,GACzCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,4BAAwB,GAC/CE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,gBAAY,GACnCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,sBAAkB,GACzCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,sBAAkB,GACzCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,mBAAe,GACtCE,EAAW,CACP,eAAS,SACVg5F,EAASl5F,UAAW,aAAS,GAChCE,EAAW,CACP,eAAS,UACVg5F,EAASl5F,UAAW,mBAAe,GACtCE,EAAW,CACP,eAAS,SACVg5F,EAASl5F,UAAW,kBAAc,GACrCE,EAAW,CACP,gBAAS,IACVg5F,EAASl5F,UAAW,gBAAY,GACnCE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,YAAQ,GAC/BE,EAAW,CACP,eAAS,OACVg5F,EAASl5F,UAAW,aAAS,GAChCk5F,EAAWh5F,EAAW,CAClB,QACDg5F,GACIA,EAp5BkB,CAq5B3B,S,kCCv8BF,8GAYIiG,EAA6B,WAC7B,SAASA,EAAYztE,EAAgBy1C,EAAUvmD,GAC3C9gB,KAAKs/F,QAAS,EACdt/F,KAAKqnE,SAAWA,EAChBrnE,KAAK4xB,eAAiBA,EACtB5xB,KAAK8gB,OAASA,EACd9gB,KAAKoD,QAAUpD,KAAK8gB,OAAOvc,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SAmWpE,OArVAowF,EAAYn/F,UAAUyT,OAAS,SAAUgO,EAAKe,EAASqkD,EAAYw4B,EAAaC,GAC5E,OAAOx/F,KAAKy/F,WAAW99E,EAAKe,EAASqkD,EAAYw4B,EAAaC,IAclEH,EAAYn/F,UAAUoV,QAAU,SAAUqM,EAAKe,EAASg9E,EAAW34B,EAAYw4B,GAC3E,IAAIl8F,EAAQrD,KACR0/F,IACA/9E,EAAIrE,KAAO,eAAgB,GAAIqE,EAAIuY,SACnCl6B,KAAK2/F,kBAAkBh+E,IAE3B,IAAIshD,EAAOjjE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,aAAeyV,EAAIkX,IAAM,KAClE+mE,EAAK5/F,KAAKy/F,WAAW99E,EAAKe,EAASqkD,EAAYw4B,EAAa,KAAMG,GAClEz4B,EAAQ,GAAGv5D,MAAMpK,KAAKs8F,EAAG34B,OACzB44B,EAAY,GAAGnyF,MAAMpK,KAAK2/D,EAAKnW,iBAAiB,oBACpD,GAAI9sD,KAAK8gB,OAAO3Y,SAAW03F,EAAUl/F,OASjC,IARA,IAAIwxC,EAAU,SAAU/b,GACpB,GAAIA,EAAIzJ,SAIJ,OAHAvf,YAAW,WACP/J,EAAMyd,OAAO28C,gCAAgCrnC,EAAIyC,KAAK,KACvD,GACI,SAGNhrB,EAAK,EAAG6qB,EAAYhW,EAAS7U,EAAK6qB,EAAU/3B,OAAQkN,IAAM,CAC/D,IAAIuoB,EAAMsC,EAAU7qB,GAChBiyF,EAAU3tD,EAAQ/b,GACtB,GAAgB,UAAZ0pE,EACA,MAGZ,IAAIC,EAAO,GAAGryF,MAAMpK,KAAKs8F,EAAG74B,YAC5Bg5B,EAAKl5F,KAAI,SAAU0a,GACf0hD,EAAKt4D,aAAa4W,EAAK,QAASA,EAAK,aAEzC0hD,EAAKn4D,UAAY,GACjB,IAAK,IAAIjH,EAAK,EAAGm8F,EAAU/4B,EAAOpjE,EAAKm8F,EAAQr/F,OAAQkD,IAAM,CACzD,IAAIsjE,EAAO64B,EAAQn8F,GACnBo/D,EAAKv+D,YAAYyiE,KAIzBk4B,EAAYn/F,UAAUu/F,WAAa,SAAU99E,EAAKe,EAASqkD,EAAYw4B,EAAaC,EAAWp9B,GAC3F,IAAIw9B,EAAM,eAAkBJ,GAAyBx/F,KAAKoD,QAAQo8F,YAAzBA,EACrCS,EAAU,CAAE3iF,KAAMqE,EAAIrE,MACtB4iF,EAAW,CAAE5iF,KAAMqE,EAAIrE,MACvB6iF,EAAgBngG,KAAK8gB,OAAOsS,aAAahV,QAAO,SAAUgY,GAAO,MAAoB,aAAbA,EAAI5nB,MAAuB4nB,EAAI9C,SAAU,GACjHtW,GAAQ,EACRmjF,IACAnjF,EAAQ,eAAUmjF,EAAc7sE,MAAO2sE,EAAQ3iF,OAEnD,IAAI8iF,EAAWpgG,KAAK8gB,OAAOu/E,wBACvB1+E,EAAI2+E,YACJ3+E,EAAIiI,WAAaw2E,EAASp8F,QAAQ2d,EAAIlV,QAAU,GAAKuQ,GAErD2E,EAAI2+E,WAAatgG,KAAK8gB,OAAOy/E,qBACG,UAA7BvgG,KAAK8gB,OAAO0/E,eAA6BxgG,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,2BAC5F9S,EAAIiI,YAAa,GACoB,IAAjCw2E,EAASp8F,QAAQ2d,EAAIlV,QACrB2zF,EAAS/zF,KAAKsV,EAAIlV,QAG1BzM,KAAKygG,sBAAsBb,EAAIj+E,GAC/B,eAAci+E,EAAI,eAAO,GAAI74B,EAAY,KACzC,gBAAsB64B,EAAIj+E,EAAIolD,YAiE9B,IAhEA,IAAI25B,EAAmB1gG,KAAK4xB,eAAe+uE,WAAW,uBAClDC,EAAU,SAAU5/F,EAAG+X,GACvB,IAAIouD,EAAOxlD,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAC5Cu1D,EAAKv9C,WAAajI,EAAIiI,WACtBu9C,EAAK05B,iBAAmB15B,EAAKzlD,OAAOkI,WACpC,IAAIk3E,EAAeJ,EAAiBK,gBAAgBp/E,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKy1D,UACnF,OAAS11C,MACZ3iB,EAAQ,CAAE,MAAU,eAAkB2S,EAAIlV,OAAgC,GAAvBkV,EAAIlV,MAAMmF,YAC7D+P,EAAIq/E,UAAYr/E,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKy1D,WAAa,OAAS45B,eAC5EjyF,EAAM,SAAWojC,EAAOtxB,OAAOyvE,WAAa,sBAAwB,qBAExE,IAAI2Q,EAAKJ,EAAantF,OAAOgO,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAM+P,EAAIrE,KAAMtO,EAAO2S,EAAIq/E,SAAU5+B,GACnG,GAAIzgD,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKy1D,WAAa,OAAS85B,OAAQ,CACpE,GAAIx/E,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKy1D,WAAa,OAAS11C,MACzDhQ,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKy1D,WAAa,OAAS+5B,cAAe,CAC9E,IAAIC,EAAejvD,EAAOtxB,OAAOwgF,eAAiBlvD,EAAOtxB,OAAOwgF,cAAcC,eAC1EnvD,EAAOtxB,OAAOwgF,cAAcC,cAAcp5F,QAC9C,IAAMiqC,EAAOtxB,OAAO3Y,SAAWiqC,EAAOtxB,OAAO0gF,oBAAwBH,GACjEjvD,EAAOtxB,OAAOwgF,cAAcC,cAAcC,qBAAwBr6B,EAAKs6B,WAAY,CAEnF,IAAIC,EAAYtvD,EAChBsvD,EAAU5gF,OAAO6gF,iBAAgB,WAC7B,GAAsC,kBAA1Bx6B,EAAKzlD,OAAe,SAAgB,CAC5C,IAAIkgF,EAAWV,EAAGx2F,aAAa,cAC/Bw2F,EAAGv2F,aAAa,aAAcu2F,EAAG12C,UAAYo3C,GAEjDF,EAAU5gF,OAAO7Y,QAAQ,QAAe,eAAOi4F,EAAU,CACrD/4B,KAAM+5B,EAAIx/E,OAAQylD,EAAKzlD,OAAQmwE,QAAS,EACxCgQ,QAAS,EAAGloE,eAAgBhY,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK+nB,eAClEF,YAAaioE,EAAU5gF,OAAOghF,6BAKtC1vD,EAAOtxB,OAAO7Y,QAAQ,QAAe,eAAOi4F,EAAU,CAClD/4B,KAAM+5B,EAAIx/E,OAAQylD,EAAKzlD,OAAQmwE,QAAS,EACxCgQ,QAAS,EAAGloE,eAAgBhY,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK+nB,eAClEF,YAAa2Y,EAAOtxB,OAAOghF,qBAGnC,IAAIC,GAAe,EACnB,GAAIpgF,EAAIlV,MAAQ,GAAK2lC,EAAOktD,OAAQ,CAChC,IAAI0C,EAAa5vD,EAAOtxB,OAAOmhF,gBAC3BC,EAAe9vD,EAAOtxB,OAAOyU,cAAc7S,QAAQ/hB,OAAS,IAC3DqhG,EAAWrgF,EAAIlV,MAAQ,GAAG6zF,UAAY0B,EAAWrgF,EAAIlV,OAAOw6D,MAAQ+6B,EAAWrgF,EAAIlV,MAAQ,GAAGw6D,MAC/Fk7B,EAAQ,MACRC,EAAcF,EAAa9jF,QAAO,SAAU+oD,GAC5C,OAAOA,EAAKzlD,OAAOmX,MAAQlX,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK8P,OAAO,GAAKygF,MAC9E,GACHJ,EAAeK,EAAYL,aAAeK,EAAYL,aAAeK,EAAYC,aAAe,EAEpG,GAAInC,EAASrO,QAAU,GAAKlwE,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK0wF,SAAW,GAAKpC,EAAS2B,QAAU,GAC9FE,EAAc,CACjB3vD,EAAOktD,QAAS,EAChB,IAAIiD,EAAY,IAAI,OAAgBnwD,EAAOxgB,eAAgBwgB,EAAOtxB,QAClEogF,EAAKqB,EAAU5uF,OAAOusF,EAAUv+E,EAAK3gB,EAAGkgG,IAG3Cv/E,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK4wF,WACvC5C,EAAGl7F,YAAYw8F,KAIvB9uD,EAASpyC,KACJgB,EAAI,EAAG+X,EAAM4I,EAAIslD,MAAMtmE,OAAQK,EAAI+X,EAAK/X,IAC7C4/F,EAAQ5/F,EAAG+X,GAEf,IAAI0pF,EAAe,EACnB,GAAIziG,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAUX,KAAK8gB,OAAO4hF,4BAA6B,CACrF,GAAI9C,EAAG16F,UAAUmB,SAAS,qBAAsB,CAC5C,IAAIs8F,EAAc,GAAGj1F,MAAMpK,KAAKs8F,EAAG9yC,iBAAiB,qGAIpD,GAHI61C,EAAYhiG,QACZ,gBAAYgiG,EAAa,CAAC,eAAgB,aAAc,gBAAiB,gBAAiB,sBAAuB,uBAEjH/C,EAAG1zF,cAAc,kBACjB,eAA4B0zF,EAAI5/F,KAAK8gB,YAEpC,CACD,IAAK,IAAI+C,EAAI,EAAGA,EAAI+7E,EAAG30E,WAAWtqB,OAAQkjB,IAAK,CAC3C,IAAIq9E,EAAKtB,EAAG30E,WAAWtZ,SAASkS,EAAEjS,WAAY,KAG9C,GAFAsvF,EAAGh8F,UAAU4G,IAAI,gBACjB,eAA6Bo1F,EAAQ,GAAJr9E,EAAQ7jB,KAAK8gB,OAAOrb,UAAW,QAC5Dy7F,EAAGh8F,UAAUmB,SAAS,kBAAmB,CACzC,IAAIu8F,EAAajxF,SAASuvF,EAAGx2F,aAAa,WAAY,IAClDm4F,EAAU,gBAAyB7iG,KAAK8gB,OAAQ+C,GACpDq9E,EAAGv2F,aAAa,UAAWk4F,EAAQjxF,YACnC6wF,EAAeG,EAAaC,GAGpC,GAAIJ,EAAc,CACVvB,EAAKlhG,KAAK8gB,OAAOvc,cAAc,KAAM,CACrCC,UAAW,iBACXwK,MAAO,CAAE6zF,QAASJ,EAAa7wF,WAAYtG,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,cAAew3F,SAAU,QAErGlD,EAAGl7F,YAAYw8F,KAI3B,GAAItB,EAAG9yC,iBAAiB,iBAAiBnsD,SACpCi/F,EAAG9yC,iBAAiB,iBAAiBnsD,QAAUi/F,EAAG9yC,iBAAiB,uBAAuBnsD,QAE3F,IADIugG,EAAKtB,EAAG9yC,iBAAiB,sCACpB9rD,EAAI,EAAGA,EAAIkgG,EAAGvgG,OAAQK,IAC3BkgG,EAAGvvF,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAC7C,eAA6Bo1F,EAAGvvF,SAAS3Q,EAAE4Q,WAAY,KAAU,GAAJ5Q,EAAQhB,KAAK8gB,OAAOrb,UAAW,QAIxG,IAAI4uB,EAAO,CAAE1S,IAAKi+E,EAAImD,UAAW/iG,KAAK8gB,OAAOiiF,WAC7C,GAAIphF,EAAI2+E,UAAW,CACf,IAAI0C,EAAa,eAAO/C,EAAS5rE,GACjC2uE,EAAWC,cAAe,EAC1B,IAAI5B,EAAerhG,KAAK8gB,OAAOwgF,eAAiBthG,KAAK8gB,OAAOwgF,cAAcC,eACtEvhG,KAAK8gB,OAAOwgF,cAAcC,cAAcp5F,QACxC+6F,EAAeF,EAAWrhF,IAAImrC,iBAAiB,mBACnD,IAAM9sD,KAAK8gB,OAAO3Y,SAAWnI,KAAK8gB,OAAO0gF,oBAAwBH,GAC7DrhG,KAAK8gB,OAAOwgF,cAAcC,cAAcC,qBAAwB0B,EAAaviG,OAAQ,CAErF,IAAIwiG,EAAYnjG,KAChBmjG,EAAUriF,OAAO6gF,iBAAgB,WAC7BwB,EAAUriF,OAAO7Y,QAAQ,QAAc+6F,GAClCA,EAAWC,eACZthF,EAAIshF,aAAeD,EAAWC,aAC9BE,EAAUC,oBAAoBD,EAAWxhF,EAAK0S,EAAM2uE,YAK5DhjG,KAAK8gB,OAAO7Y,QAAQ,QAAc+6F,GAEtCrhF,EAAIshF,aAAeD,EAAWC,aAC9B,IAAII,EAAcrjG,KAAK8gB,OAAO6kD,gBAC9B,GAAI3lE,KAAK8gB,OAAOyT,aAAev0B,KAAK8gB,OAAOwiF,kBAAkBC,iBAAkB,CAC3E,IAAIC,EAAexjG,KAAK8gB,OAAO8Y,0BAA0B,GACrD6pE,EAAS9hF,EAAIrE,KAAOqE,EAAIrE,KAAK,GAAKkmF,GAAgB,KAClDE,EAAkBV,EAAWC,aAAejjG,KAAK8gB,OAAO6iF,uBACxD3jG,KAAK8gB,OAAO8iF,uBACXF,EAAgBnsE,MAAK,SAAUja,GAAQ,OAAOA,EAAK,GAAKkmF,KAAkBC,MAC3EC,EAAgBr3F,KAAKsV,EAAIrE,MAMjC,GAHK0lF,EAAWC,cACZjjG,KAAKojG,oBAAoBpjG,KAAM2hB,EAAK0S,EAAM2uE,GAE1ChjG,KAAK8gB,OAAO4kD,WAAa29B,GAAerjG,KAAK8gB,OAAO2kD,eAAgB,CAChEy7B,EAAKtB,EAAG9yC,iBAAiB,2BAA2B,GACpDo0C,GACAA,EAAGh8F,UAAU4G,IAAI,uBAIzB9L,KAAK8gB,OAAO0T,uBACZyrE,EAAQ8C,UAAY/iG,KAAK8gB,OAAOiiF,WAEhC9C,EAAQ8C,UACRnD,EAAG74F,MAAM1B,OAAS46F,EAAQ8C,UAAY,KAEjC/iG,KAAK8gB,OAAOiiF,YAAcnD,EAAG1zF,cAAc,kBAAoB0zF,EAAG1zF,cAAc,sBACrF0zF,EAAG74F,MAAM1B,OAASrF,KAAK8gB,OAAOiiF,UAAY,MAE1CphF,EAAIlX,UACJm1F,EAAG16F,UAAU4G,IAAI6V,EAAIlX,UAErBkX,EAAIkiF,kBACJjE,EAAG16F,UAAU4G,IAAI6V,EAAIkiF,kBAEY,aAAjC7jG,KAAK8gB,OAAOgjF,mBAAmC9jG,KAAK8gB,OAAOijF,eAA4D,WAA1C/jG,KAAK8gB,OAAOkjF,iBAAiBC,UAC7D,SAA1CjkG,KAAK8gB,OAAOkjF,iBAAiBC,UAChCrE,EAAG16F,UAAU4G,IAAI,kBAErB,IAAIo4F,EAAUlkG,KAAK8gB,OAAO++C,2BAC1B,IAAKqkC,GAAWlkG,KAAK8gB,OAAOiT,WAAWpzB,QAAUX,KAAK8gB,OAAO1d,QAAQigE,aAAerjE,KAAK8gB,OAAOzb,OAC5F,IAASrE,EAAI,EAAGA,EAAIhB,KAAK8gB,OAAOiT,WAAWpzB,OAAQK,IAAK,CACpD,IAAIwxD,EAAW,aACX9wC,EAAS,UACb,GAAI1hB,KAAK8gB,OAAOiT,WAAWpiB,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK4gD,GAAU,GAAK9wC,GAAQ,GAAG2jD,eAAgB,CAClG,IAAI8+B,EAAc,GAAGz2F,MAAMpK,KAAKs8F,EAAG5rD,uBAAuB,kBAC1D,GAAImwD,EAAYxjG,OAAQ,CACpB,IAAIyjG,EAAmBD,EAAYA,EAAYxjG,OAAS,GACxD,eAAS,CAACyjG,GAAkB,CAAC,sBAC7B,IAAIC,EAAoBF,EAAY,GACpC,eAAS,CAACE,GAAmB,CAAC,yBAK9C,OAAOzE,GAEXP,EAAYn/F,UAAUkjG,oBAAsB,SAAUkB,EAAS3iF,EAAK0S,EAAMkwE,GACtE,IAAInE,EAAWpgG,KAAK8gB,OAAOu/E,wBAC3BrgG,KAAK8gB,OAAOgyB,gBAAgB0xD,oBAAqB,EACjD7iF,EAAIiI,YAAa,EACjB,IAAI66E,EAAcrE,EAASp8F,QAAQ2d,EAAIlV,OACnCg4F,GAAe,GACfrE,EAAS1zF,OAAO+3F,EAAa,GAKjC,IAHA,IAAIC,EAASrwE,EAAK1S,IAAImrC,iBAAiB,2BACnC63C,EAASJ,EAAS5iF,IAAIzV,cAAc,kBACpC04F,EAAUN,EAAQxjF,OAAOyU,cAAc7S,QAAQ/hB,QAAUgkG,GAAUL,EAAQxjF,OAAO+jF,WAAa,EAAI,GAC9F7jG,EAAI,EAAGA,EAAI0jG,EAAO/jG,OAAQK,IAC/B0jG,EAAO/yF,SAAS3Q,EAAE4Q,WAAY,KAAKo0C,kBAAkB9gD,UAAU4G,IAAI,uBACnE44F,EAAO/yF,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,YAAYhH,UAAUC,OAAO,WAElF,GAAIwc,EAAIslD,MAAMtmE,OACV,IAASK,EAAI4jG,EAAS5jG,EAAI2gB,EAAIslD,MAAMtmE,OAAQK,IAAK,CAC7C,IAAImmE,EAAOo9B,EAAS5iF,IAAIzV,cAAc,6BAA+ByV,EAAIslD,MAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAQ,MAC/G06D,GACA,gBAAY,CAACA,GAAO,CAAC,wBAAyB,aAItDw9B,GACA,gBAAY,CAACA,GAAS,CAAC,wBAAyB,cAIxDtF,EAAYn/F,UAAUy/F,kBAAoB,SAAUh+E,GAChD,IAAK,IAAI9T,EAAK,EAAGhK,EAAK8d,EAAIslD,MAAOp5D,EAAKhK,EAAGlD,OAAQkN,IAAM,CACnD,IAAIs5D,EAAOtjE,EAAGgK,GACds5D,EAAKq7B,WAAY,EAErB,OAAO7gF,GAWX09E,EAAYn/F,UAAUugG,sBAAwB,SAAUb,EAAIj+E,GACxD,IAAIo+E,EAAO,GACP1qF,EAAO,CAAE,SAAY,OAAuB,QAAW,WAAY,aAAgB,iBACnFyvF,EAAU,GACVnjF,EAAI2+E,WACJwE,EAAQz4F,KAAK,QAEbsV,EAAIojF,UACJD,EAAQz4F,KAAK,YAEbsV,EAAIqjF,cACJF,EAAQz4F,KAAK,qBAEbsV,EAAIulD,gBAAkBvlD,EAAIskD,WAC1B6+B,EAAQz4F,KAAK,oBAEZ,eAAkBsV,EAAIlV,SACvBszF,EAAK,QAAyBp+E,EAAIlV,MAAQ,EAC1CszF,EAAK1qF,EAAK4vF,UAAYtjF,EAAIlV,OAE1BkV,EAAIkgF,UACJ9B,EAAK8B,QAAUlgF,EAAIkgF,SAEnBlgF,EAAIkX,MACJknE,EAAK1qF,EAAK6vF,SAAWvjF,EAAIkX,KAEzBlX,EAAIiI,aACJm2E,EAAK1qF,EAAK8vF,eAAgB,IAEV,IAAhBxjF,EAAIhL,SACJmuF,EAAQz4F,KAAK,UAEjB0zF,EAAK/4B,MAAQ89B,EACb,gBAAsBlF,EAAIG,IAEvBV,EAzWqB,I,6DCZhC,8DAAIhgG,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxCqlG,EAA8B,SAAUviG,GAExC,SAASuiG,IACL,OAAkB,OAAXviG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA8D/D,OAhEAX,EAAU+lG,EAAcviG,GAIxBuiG,EAAallG,UAAUyT,OAAS,SAAU2D,GAItC,IAHA,IAEI6I,EAFAklF,EAAiBrlG,KAAKwmF,kBAAkBlvE,GACxCguF,EAASn8F,KAAKwS,IAAIrE,EAAO0G,MAAMsnB,aAAa5pB,IAAK,GAE5C7N,EAAK,EAAGhK,EAAKyT,EAAOE,OAAQ3J,EAAKhK,EAAGlD,OAAQkN,IAAM,CACvD,IAAI03F,EAAc1hG,EAAGgK,GAGrB,GAFA03F,EAAYlvF,gBAAkB,GAC9BkvF,EAAYjvF,QAAU,GAClBivF,EAAY5uF,SAAW,gBAAYW,EAAOE,OAAO+tF,EAAY94F,MAAQ,GAAI84F,EAAajuF,EAAOE,OAAO+tF,EAAY94F,MAAQ,GAAI6K,GAAS,CACrItX,KAAKwuB,KAAOxuB,KAAKsnF,aAAaie,EAAY9qF,OAAS4qF,EAAenoF,MAAOqoF,EAAY9pF,OAAQ8pF,EAAY9qF,OAAS4qF,EAAeloF,IAAKmoF,EAAQhuF,GAC9ItX,KAAKwuB,KAAKlpB,MAAQgS,EAAOqvE,mBAAsBrvE,EAAOqvE,oBAAsBrvE,EAAOC,MAAMkvE,0BAA4BnvE,EAAOqvE,mBAAqBrvE,EAAOuvE,cAAgB,GAAM7mF,KAAKwuB,KAAKlpB,MACxLtF,KAAKwuB,KAAKxoB,EAAIsR,EAAOqvE,mBAAqB3mF,KAAKwuB,KAAKxoB,GAAOsR,EAAOqvE,mBAAqB,EAAKrvE,EAAOmjC,UAC9FnjC,EAAOqvE,mBAAqBrvE,EAAO7K,OAAUzM,KAAKwuB,KAAKxoB,EAC5D,IAAI2P,EAA4B,cAApB2B,EAAOsB,SAA2B2sF,EAAY5vF,MAAQ2B,EAAOkE,SAEzE,GADA2E,EAAWngB,KAAKkqF,aAAa5yE,EAAQiuF,EAAa5vF,EAAO,CAAErQ,MAAOgS,EAAO8N,OAAO9f,MAAOqQ,MAAO2B,EAAO8N,OAAOzP,SACvGwK,EAAS1R,SACVzO,KAAK8pF,qBAAqByb,EAAavlG,KAAKwuB,KAAMlX,GAClDtX,KAAKsgD,cAAchpC,EAAQiuF,EAAavlG,KAAKwuB,KAAMrO,GACxB,aAAvB7I,EAAOmzE,aAA4B,CACnC,IAAIjD,EAAuB,CACvB,UAAY,EACZ,UAAY,EACZ,cAAgB,GAEpBxnF,KAAKunF,aAAavnF,KAAKmD,QAASnD,KAAKoD,QAASokF,EAAsBxnF,KAAKwuB,KAAMlX,KAK/FtX,KAAKk1C,aAAa59B,IAQtB8tF,EAAallG,UAAU0mB,YAAc,SAAUtP,GAC3CtX,KAAK00C,QAAQp9B,IAKjB8tF,EAAallG,UAAU4U,cAAgB,WACnC,MAAO,gBAWXswF,EAAallG,UAAUsS,QAAU,aAK1B4yF,EAjEsB,CAkE/B,S,oCCtFF,8GAYII,EAAmC,WAMnC,SAASA,EAAkB1kF,GACvB9gB,KAAK8gB,OAASA,EA+GlB,OA7GA0kF,EAAkBtlG,UAAU0lE,aAAe,SAAUtoD,EAAM+W,GACvD,IAAIzR,EAAO,GACPolB,EAAahoC,KAAK8gB,OAAO0T,sBAAwBH,EAAOA,EAAK2T,WAAa,EAC9EA,EAAahoC,KAAK8gB,OAAO2T,yBAA2BJ,EAAOr0B,KAAKylG,iBAAiBpxE,GAAQ2T,EACrFhoC,KAAK8gB,OAAO4kF,qBAAuBrxE,GAAQA,EAAK2T,aAChDA,EAAa3T,EAAK2T,YAEtB,IAAK,IAAIhnC,EAAI,EAAG+X,EAAMtZ,OAAO2V,KAAKkI,GAAM3c,OAAQK,EAAI+X,EAAK/X,IAAKgnC,IAC1DplB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAK2lG,YAAYroF,EAAK3L,SAAS3Q,EAAE4Q,WAAY,KAAMo2B,GAE1F,OAAOplB,GAEX4iF,EAAkBtlG,UAAU0lG,cAAgB,WAExC,IAAI5xE,EAAO,GACX,GAAIh0B,KAAK8gB,OAAO2kD,gBAAkBzlE,KAAK8gB,OAAO4kD,UAAW,CACrD,IAAIrxC,EAAO,GACXr0B,KAAK8gB,OAAOwT,OAAO,QAA6BD,GAChDL,EAAK3nB,KAAKrM,KAAK6lG,aAAaxxE,EAAM,KAAM,OAAS4sE,eAKrD,OAHIjhG,KAAK8gB,OAAO6kD,iBACZ3xC,EAAK3nB,KAAKrM,KAAK6lG,aAAa,GAAI,KAAM,OAASC,cAE5C9xE,GAEXwxE,EAAkBtlG,UAAUylG,YAAc,SAAUroF,EAAM7Q,EAAOhC,EAAU68D,EAAQy+B,EAAKC,EAAQ//B,GAC5F,IAAI9iE,EAAU,CACd,eAAyB,IACzBA,EAAQ01B,IAAM,eAAO,YACrB11B,EAAQma,KAAOA,EACfna,EAAQsJ,MAAQA,EAChBtJ,EAAQmkE,OAASA,EACjBnkE,EAAQ6iG,OAASA,EACjB7iG,EAAQm9F,WAAY,EACpBn9F,EAAQ8iG,UAAYF,EACpB5iG,EAAQ8iE,UAAYA,EAChBjmE,KAAK8gB,OAAOyvE,aAC2B,QAAnCvwF,KAAK8gB,OAAOgvE,mBACZ3sF,EAAQ69F,UAAW,EAEqB,aAAnChhG,KAAK8gB,OAAOgvE,oBAAqC9vF,KAAK8gB,OAAOolF,cAAgBlmG,KAAK8gB,OAAOolF,aAAav0F,SAASlF,EAAMmF,WAAY,OACtIzO,EAAQ69F,SAAWhhG,KAAK8gB,OAAOolF,aAAav0F,SAASlF,EAAMmF,WAAY,KAAKovF,WAGpF79F,EAAQsH,SAAWA,EACnBtH,EAAQ4hG,WAAW/kG,KAAK8gB,OAAOqlF,cAAe15F,EAAQ,IAAM,EAC5DtJ,EAAQ4hG,WAAW/kG,KAAK8gB,OAAOqlF,cAAe15F,EAAQ,IAAM,EAC5DtJ,EAAQymB,WAAa5pB,KAAK8gB,OAAOu/E,wBAAwBr8F,QAAQyI,IAAU,EAC3EzM,KAAKomG,qBAAqBjjG,GAC1B,IAAI8jE,EAAQjnE,KAAK4lG,gBACbjkF,EAAM,IAAI,OAAIxe,EAASnD,KAAK8gB,QAGhC,OAFAa,EAAIslD,MAAwC,UAAhCjnE,KAAK8gB,OAAOulF,gBAA8BrmG,KAAKsmG,cAAcnjG,GAASqqB,OAAOy5C,GACnFA,EAAMz5C,OAAOxtB,KAAKsmG,cAAcnjG,IAC/Bwe,GAEX6jF,EAAkBtlG,UAAUkmG,qBAAuB,SAAUjjG,GAEzD,IADA,IAAIojG,EAAoBvmG,KAAK8gB,OAAOwW,uBAC3Bt2B,EAAI,EAAGA,EAAIulG,EAAkB5lG,OAAQK,IAC1C,gBAASulG,EAAkB50F,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,MAAO,eAAeizE,EAAkB50F,SAAS3Q,EAAE4Q,WAAY,KAAMzO,EAAQma,MAAOna,EAAQw2B,iBAG3J6rE,EAAkBtlG,UAAUomG,cAAgB,SAAUnjG,GAGlD,IAFA,IAAIqjG,EAAUxmG,KAAK8gB,OAAOsS,aACtBgzC,EAAM,GACDplE,EAAI,EAAGA,EAAIwlG,EAAQ7lG,OAAQK,IAChColE,EAAI/5D,KAAKrM,KAAK6lG,aAAaW,EAAQ70F,SAAS3Q,EAAE4Q,WAAY,KAAMzO,EAAQ01B,IAAK,eAAkB2tE,EAAQ70F,SAAS3Q,EAAE4Q,WAAY,KAAKwqD,eAAY7wD,EAAY,OAAS61F,cAAe,KAAMpgG,EAAGmC,EAAQw2B,iBAExM,OAAOysC,GAaXo/B,EAAkBtlG,UAAU2lG,aAAe,SAAUnkF,EAAQ+kF,EAAOp/B,EAAUwqB,EAAS6U,EAAQ/sE,GAC3F,IAAI8tC,EAAM,CACN,QAAW/lD,EAAO/K,QAClB,YAAe,eAAkB+K,EAAO4R,OAAS5R,EAAOiL,UACxD,YAAe,eAAkBjL,EAAOiL,UACxC,MAAS85E,EACT,OAAU/kF,EACV,SAAa,eAAkB2lD,GAAuB,OAAS11C,KAApB01C,EAC3C,QAAWwqB,EACX,SAAYnwE,EAAO06C,SACnB,aAAgB16C,EAAOgV,iBAAmBhV,EAAOgV,kBACjD,eAAkBhV,EAAOgV,iBAAmBhV,EAAOgV,mBAAqB,eAAShV,EAAO4R,MAAOqG,IAKnG,OAHI8tC,EAAIL,YAAkC,aAApBK,EAAI/lD,OAAOlT,MAAuBi5D,EAAIrL,YACxDqL,EAAIh7D,MAAQi6F,GAET,IAAI,OAAKj/B,IAEpB+9B,EAAkBtlG,UAAUymG,YAAc,SAAU9gC,GAChD,IAAK,IAAI7kE,EAAI,EAAGA,EAAI6kE,EAAMllE,OAAQK,IAC9BhB,KAAKomG,qBAAqBvgC,EAAMl0D,SAAS3Q,EAAE4Q,WAAY,MACvDi0D,EAAMl0D,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAQjnE,KAAKsmG,cAAczgC,EAAMl0D,SAAS3Q,EAAE4Q,WAAY,MAE9F,OAAOi0D,GAEX2/B,EAAkBtlG,UAAUulG,iBAAmB,SAAUpxE,GACrD,MAA4B,mBAArBA,EAAKoF,aAAyD,WAArBpF,EAAKoF,aAA4C,QAAhBpF,EAAK0I,OAC/E,eAAkB1I,EAAK2T,YAAc3T,EAAK,SAAWA,EAAK2T,WAAc,GAE5Ew9D,EAtH2B,I,oCCZtC,W,oCCKO,IAAIoB,EA4CAC,EAcAC,EAoBAC,EAoBAC,EAvGX,wIAMA,SAAWJ,GAEPA,EAASA,EAAS,QAAU,GAAK,OAEjCA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,WAAa,GAAK,UAEpCA,EAASA,EAAS,gBAAkB,GAAK,eAEzCA,EAASA,EAAS,kBAAoB,GAAK,iBAE3CA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,gBAAkB,GAAK,eAEzCA,EAASA,EAAS,qBAAuB,GAAK,oBAE9CA,EAASA,EAAS,UAAY,GAAK,SAEnCA,EAASA,EAAS,gBAAkB,IAAM,eAE1CA,EAASA,EAAS,iBAAmB,IAAM,gBAE3CA,EAASA,EAAS,gBAAkB,IAAM,eAE1CA,EAASA,EAAS,gBAAkB,IAAM,eAE1CA,EAASA,EAAS,iBAAmB,IAAM,gBAE3CA,EAASA,EAAS,sBAAwB,IAAM,qBAEhDA,EAASA,EAAS,eAAiB,IAAM,cAEzCA,EAASA,EAAS,gBAAkB,IAAM,eApC9C,CAqCGA,IAAaA,EAAW,KAO3B,SAAWC,GAEPA,EAAWA,EAAW,UAAY,GAAK,SAEvCA,EAAWA,EAAW,WAAa,GAAK,UAExCA,EAAWA,EAAW,WAAa,GAAK,UAN5C,CAOGA,IAAeA,EAAa,KAO/B,SAAWC,GACPA,EAAYA,EAAY,OAAS,GAAK,MACtCA,EAAYA,EAAY,QAAU,GAAK,OACvCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,SAAW,GAAK,QACxCA,EAAYA,EAAY,UAAY,GAAK,SACzCA,EAAYA,EAAY,iBAAmB,GAAK,gBAChDA,EAAYA,EAAY,aAAe,GAAK,YAC5CA,EAAYA,EAAY,eAAiB,GAAK,cAC9CA,EAAYA,EAAY,aAAe,IAAM,YAC7CA,EAAYA,EAAY,cAAgB,IAAM,aAZlD,CAaGA,IAAgBA,EAAc,KAOjC,SAAWC,GAEPA,EAAuBA,EAAuB,UAAY,GAAK,SAE/DA,EAAuBA,EAAuB,SAAW,GAAK,QAE9DA,EAAuBA,EAAuB,UAAY,GAAK,SAE/DA,EAAuBA,EAAuB,YAAc,GAAK,WAEjEA,EAAuBA,EAAuB,aAAe,GAAK,YAElEA,EAAuBA,EAAuB,mBAAqB,GAAK,kBAZ5E,CAaGA,IAA2BA,EAAyB,KAOvD,SAAWC,GAEPA,EAAwBA,EAAwB,aAAe,GAAK,YAEpEA,EAAwBA,EAAwB,YAAc,GAAK,WAJvE,CAKGA,IAA4BA,EAA0B,M,oCC7GzD,W,+SCkBI,EAA8B,WAO9B,SAASC,EAAanmF,EAAQ8Q,GAC1B,IAAIvuB,EAAQrD,KACZA,KAAKknG,OAAS,EACdlnG,KAAKmnG,UAAY,EACjBnnG,KAAKonG,YAAa,EAClBpnG,KAAKqnG,kBAAmB,EAExBrnG,KAAK8nE,OAAS,SAAU36D,GACpB,IAAIwlB,EAAOtvB,EAAMyd,OACbxgB,EAAS+C,EAAMikG,UAAUC,mBACzBC,EAAY,gBAAalnG,EAAQ,gBACrC,IAAMqyB,EAAKuoC,kBAAmBvoC,EAAK2C,gBAAoB,eAAkBkyE,IAClEA,EAAUxzD,uBAAuB,oBAAoBrzC,OAAS,EACjE,OAAO,EAEX,IAAI8mG,EAAgBpkG,EAAMyd,OAAOvc,cAAc,MAAO,CAAEC,UAAW,gDAC/DpB,EAAU9C,EAAO4E,UAAUmB,SAAS,gBAAkB/F,EAASknG,EACnE,IAAKpkG,IAAauvB,EAAKuoC,iBAAmB93D,EAAQ8B,UAAUmB,SAAS,uBACjE,OAAO,EAEX,IAEI+vB,EAFA/wB,EAASjC,EAAQqG,aACjBi+F,EAAgBtkG,EAAQ8I,cAAc,qBAAuB9I,EAAQ8I,cAAc,2BAEvF,GAAIw7F,EAAe,CAQf,GANItxE,EADAhzB,EAAQ8I,cAAc,2BAChBymB,EAAKg1E,mCAAmCD,EAAcl9C,UAAUj+C,OAAQomB,EAAKjQ,SAG7EiQ,EAAKiG,eAAe8uE,EAAch9F,aAAa,iBAEzDrH,EAAMqe,OAAS0U,EACX/yB,EAAMqe,OAAOkmF,WACb,OAAO,EAEXH,EAAc98F,aAAa,eAAgBtH,EAAMqe,OAAOmX,KAE5D,GAAIzC,IAAQ,eAAkBA,EAAIomC,gBAAiB,CAC/C,GAAK,eAAkBpmC,EAAIomC,gBAYvBirC,EAAc38F,UAAYsrB,EAAIomC,mBAZU,CACxC,IAAIqrC,EAAWl1E,EAAKm1E,sBAAsB1xE,EAAI9C,OAC1CxT,EAASsW,EAAI2nC,mBAAJ3nC,CAAwB,eAAO,CAAE,MAASyxE,GAAYzxE,GAAMzD,EAAM,kBAC3Eo1E,EAAkBp1E,EAAKxqB,SAA2C,kBAAxBiuB,EAAkB,eAC5DirE,EAAe1uE,EAAK2uE,eAAiB3uE,EAAK2uE,cAAcC,eACxD5uE,EAAK2uE,cAAcC,cAAcp5F,SACjC4/F,GAAmB1G,IACnB1uE,EAAKgvE,kBAET,eAAe8F,EAAe3nF,GAK7B,eAAkB2nF,EAAcz8E,aAAqD,IAAtCy8E,EAAcz8E,WAAWikC,WACzEw4C,EAAcz8E,WAAWjkB,MAAMiqC,cAAgB,aAInDy2D,EAAc38F,UAAY48F,EACtBtxE,EAAI3J,WAAarpB,EAAQ4iD,kBAAkBl7C,UAMnD,OAJA28F,EAAc1gG,MAAMzB,MAAQlC,EAAQoG,YAAc,KAClDi+F,EAAc1gG,MAAM1B,OAASjC,EAAQqG,aAAe,KACpDg+F,EAAc1gG,MAAM+2E,YAAcz4E,EAAS,GAAGuM,WAAa,KAC3D+gB,EAAKvvB,QAAQsB,YAAY+iG,GAClBA,GAEXznG,KAAKgoG,UAAY,SAAU76F,GACvB,IAAIwlB,EAAOtvB,EAAMyd,OACjB6R,EAAKvvB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,OAC3D2rB,EAAK2B,OAAO,QAAwB,CAAEh0B,OAAQ+C,EAAMikG,UAAUC,mBAAoB7lF,OAAQre,EAAMqe,OAAQhT,MAAOvB,EAAEuB,SAErH1O,KAAKioG,KAAO,SAAU96F,GAClB,IAAIwlB,EAAOtvB,EAAMyd,OACbxgB,EAAS6M,EAAE7M,OACf,GAAIA,EAAQ,CACR,IAAI8F,EAAU,eAAW9F,EAAQ,WAC7B4nG,EAAe7kG,EAAMyd,OAAO1d,QAAQ8I,cAAc,sBACtD,KAAK9F,GAAWA,EAAQsE,aAAa,QAAUioB,EAAKvvB,QAAQsH,aAAa,SACrE,eAAUw9F,EAAc,CAAC,mBAAoB,CAAC,iBAC1Cv1E,EAAKuoC,kBACLvoC,EAAKvvB,QAAQ8I,cAAc,qBAAqBnF,MAAMC,QAAU,OAChE2rB,EAAKvvB,QAAQ8I,cAAc,uBAAuBnF,MAAMC,QAAU,SAEjE2rB,EAAK4C,cAAc2lC,iBACpB,OAGRvoC,EAAK2B,OAAO,QAAmB,CAAEh0B,OAAQ6M,EAAE7M,OAAQohB,OAAQre,EAAMqe,OAAQhT,MAAOvB,EAAEuB,UAG1F1O,KAAKmoG,SAAW,SAAUh7F,GACtB,IACIsB,EADAkkB,EAAOtvB,EAAMyd,OAEjB6R,EAAKvvB,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,SACrD,gBAAamG,EAAE7M,OAAQ,kBAAoB,gBAAa6M,EAAE7M,OAAQ,qBAClEqyB,EAAKuoC,iBAAmB,gBAAa/tD,EAAE7M,OAAQ,kBAC/C6M,EAAE26D,OAAOp9D,aAAa,iBAAmB,gBAAayC,EAAE7M,OAAQ,sBAClE,gBAAO6M,EAAE26D,QACTr5D,GAAS,GAEbkkB,EAAK2B,OAAO,QAAuB,CAAEh0B,OAAQ6M,EAAE7M,OAAQoO,MAAOvB,EAAEuB,MAAOgT,OAAQre,EAAMqe,OAAQjT,OAAQA,KAEzGzO,KAAKooG,KAAO,SAAUj7F,GAClB,IAAIwlB,EAAOtvB,EAAMyd,OACb+X,EAAM1rB,EAAEk7F,eAAe39F,aAAa,gBACpCtE,EAAU,eAAW+G,EAAE7M,OAAQ,WACnC,gBAAO6M,EAAEk7F,gBACLjiG,GAAWA,EAAQsE,aAAa,QAAUioB,EAAKvvB,QAAQsH,aAAa,QAClEioB,EAAKuoC,kBAAmBvoC,EAAK2C,eAGnC3C,EAAK2B,OAAO,QAAmB,CAAEh0B,OAAQ6M,EAAE7M,OAAQu4B,IAAKA,EAAKwvE,eAAgBl7F,EAAEk7F,kBAEnFroG,KAAK8gB,OAASA,EACd9gB,KAAK4xB,eAAiBA,EACtB5xB,KAAKsoG,YAActoG,KAAK4xB,eAAe+uE,WAAW,eAClD3gG,KAAKw+D,aAAex+D,KAAK4xB,eAAe+uE,WAAW,gBAC/C3gG,KAAK8gB,OAAOkI,cAGXhpB,KAAK8gB,OAAO++C,4BACb7/D,KAAK8gB,OAAOqI,GAAG,QAAgCnpB,KAAKuoG,WAAYvoG,MAEpEA,KAAK8gB,OAAOqI,GAAG,QAA8BnpB,KAAKwoG,cAAexoG,MACjEA,KAAK8gB,OAAOqI,GAAG,QAAmBnpB,KAAKyoG,oBAAqBzoG,MACvB,aAAjCA,KAAK8gB,OAAOgjF,kBACZ9jG,KAAK8gB,OAAOqI,GAAG,QAAiBnpB,KAAK0oG,8BAA+B1oG,OA4hB5E,OAphBAinG,EAAa/mG,UAAUyoG,YAAc,WACjC,IAAIhlC,EAAM3jE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,IAAM,QAC9C08F,EAAqB,MAAPjlC,EAClBA,EAAMilC,EAAajlC,EAAM3jE,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,iBACvE,IAAIqkG,EAAWD,EAAajlC,EAAIz3D,cAAc,IAAM,QAChDlM,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,SAClDxE,KAAK8oG,iBAAiBnlC,GACtBA,EAAIj/D,YAAYmkG,GAChB7oG,KAAK+oG,SAASplC,GACTilC,GACD5oG,KAAK8gB,OAAO1d,QAAQsB,YAAYi/D,IAQxCsjC,EAAa/mG,UAAU8oG,YAAc,WACjC,IAAI/X,EAAYjxF,KAAKipG,WACrBhY,EAAUvsF,YAAY1E,KAAKkpG,qBAC3BlpG,KAAKmpG,SAASlY,EAAU/kF,cAAc,IAAM,SAC5ClM,KAAKopG,uBACLppG,KAAKqpG,uBACLrpG,KAAK8gB,OAAOwT,OAAO,QAAwB,CAAE1R,KAAM5iB,KAAK4iB,QAO5DqkF,EAAa/mG,UAAU+oG,SAAW,WAC9B,OAAOjpG,KAAKspG,aAQhBrC,EAAa/mG,UAAU6oG,SAAW,SAAUQ,GACxCvpG,KAAKspG,YAAcC,GAOvBtC,EAAa/mG,UAAUspG,SAAW,WAC9B,OAAOxpG,KAAKypG,aAQhBxC,EAAa/mG,UAAUipG,SAAW,SAAU9xC,GACxCr3D,KAAKypG,YAAcpyC,GAOvB4vC,EAAa/mG,UAAUwpG,YAAc,WACjC,OAAO1pG,KAAK2pG,UAQhB1C,EAAa/mG,UAAU0pG,YAAc,SAAU3xC,GAC3C,OAAOj4D,KAAK2pG,SAAW1xC,GAO3BgvC,EAAa/mG,UAAU2pG,QAAU,WAC7B,IAAIxyC,EAAQr3D,KAAKwpG,WACjB,OAAOnyC,EAAMyyC,MAAMlnF,MAQvBqkF,EAAa/mG,UAAUgpG,kBAAoB,WACvC,IAAI7xC,EAAQr3D,KAAK+pG,cACblB,EAAW7oG,KAAKipG,WAAW/8F,cAAc,IAAM,QAEnD,OADA28F,EAASnkG,YAAY2yD,GACdwxC,GAWX5B,EAAa/mG,UAAU8pG,aAAe,SAAUC,EAAUC,QACrC,IAAbD,IAAuBA,EAAW,MACtC,IAAIt3E,EAAO3yB,KAAK8gB,OACZ9gB,KAAKwpG,YACL,gBAAOxpG,KAAKwpG,YAEhB,IAAInyC,EAAQr3D,KAAK8gB,OAAOvc,cAAc,QAAS,CAAEC,UAAW,OAAgBwK,MAAO,CAAEm7F,YAAa,SAAUl7F,KAAM,kBAC9Gm7F,EAAgBpqG,KAAKqqG,oBAAoBH,GACzCI,EAAQF,EAAcE,MACtBtyC,EAAQh4D,KAAK8gB,OAAOvc,cAAc,OAAgB,CAAEC,UAAWxE,KAAK8gB,OAAOk/C,WAAa,GAAK,SAAUhxD,MAAO,CAAEC,KAAM,cAC1HjP,KAAKuqG,QAAUvqG,KAAK8gB,OAAOvc,cAAc,UAAW,CAAEuG,UAAW9K,KAAK8gB,OAAO1d,QAAQkI,GAAK,gBAAiB9G,UAAW,WAKtH,IAJA,IAEIgmG,EAFAvyC,EAAWj4D,KAAK8gB,OAAOvc,cAAc,QACrCkmG,EAAUzqG,KAAK8gB,OAAOvc,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SAE3D2T,EAAO5iB,KAAK4iB,KAAOwnF,EAAcxnF,KAC5B5hB,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,IACxC,IAAK,IAAI6iB,EAAI,EAAG2c,EAAQ5d,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAMtmE,OAAQkjB,EAAI2c,EAAO3c,IAC9E2mF,EAAWxqG,KAAK8gB,OAAOvc,cAAc,MACrCkmG,EAAQ/lG,YAAY8lG,GAY5B,OATI73E,EAAK0F,gBAAkB1F,EAAKsD,cAAgBtD,EAAK2C,gBACjD+hC,EAAMnyD,UAAU4G,IAAI,gBAExB9L,KAAK0qG,eAAezyC,GACpBD,EAAMtzD,YAAY+lG,GAClBpzC,EAAM3yD,YAAY1E,KAAK4pG,YAAY3xC,IACnCZ,EAAM3yD,YAAY4lG,GAClBjzC,EAAM3yD,YAAYszD,GAClBX,EAAM3yD,YAAY1E,KAAKuqG,SAChBlzC,GAOX4vC,EAAa/mG,UAAU6pG,YAAc,SAAUE,GAE3C,YADiB,IAAbA,IAAuBA,EAAW,MAC/BjqG,KAAKgqG,aAAaC,IAE7BhD,EAAa/mG,UAAUmqG,oBAAsB,SAAUH,GACnD,IAAIv3E,EAAO3yB,KAAK8gB,OACZ4B,EAAUiQ,EAAKS,aACfk3E,EAAQtqG,KAAK8gB,OAAOvc,cAAc,QAAS,CAAEyK,MAAO,CAAE,KAAQ,cAC9D27F,EAAY3qG,KAAK8gB,OAAOvc,cAAc,KAAM,CAAEC,UAAW,iBAAkBwK,MAAO,CAAEC,KAAM,SAC1F27F,EAAc,IAAI,OAAY5qG,KAAK4xB,eAAgB,OAASi5E,OAAQl4E,GACxEi4E,EAAYxnG,QAAUunG,EACtB,IACIG,EADAloF,EAAO,GAEX5iB,KAAK+qG,SAAW,gBAAmBp4E,EAAKjQ,SACxC,IAAK,IAAI1hB,EAAI,EAAG+X,EAAM/Y,KAAK+qG,SAAU/pG,EAAI+X,EAAK/X,IAC1C4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAK2lG,YAAY3kG,GACpD4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAQ,GAI7C,GAFArkD,EAAO5iB,KAAK4lG,cAAchjF,GAC1BA,EAAO5iB,KAAKgrG,eAAepoF,EAAMsnF,GAC7Bv3E,EAAKgzC,iBAAmD,UAAhC3lE,KAAK8gB,OAAOulF,gBACpC,IAASrlG,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,IACxC4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAM56D,KAAKrM,KAAK6lG,aAAa,GAAI,OAASoF,eAGnF,IAASjqG,EAAI,EAAG+X,EAAM/Y,KAAK+qG,SAAU/pG,EAAI+X,EAAK/X,IAC1C8pG,EAAYF,EAAYj3F,OAAOiP,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAM8Q,GAC7D1iB,KAAK8gB,OAAOiiF,WAAa+H,EAAU5+F,cAAc,mBACjD4+F,EAAU/jG,MAAM1B,OAASrF,KAAK8gB,OAAOiiF,UAAY,MAErD,eAAqB+H,GACrBR,EAAM5lG,YAAYomG,GAEtB,IAAIV,EAAgB,CAChBE,MAAOA,EACP1nF,KAAMA,GAEV,OAAOwnF,GAEXnD,EAAa/mG,UAAUwqG,eAAiB,SAAUzyC,GAC9C,IACI7hC,EADApC,EAAOh0B,KAAK8gB,OAAOsS,aAEnB83E,EAAUlrG,KAAK8gB,OAAOqqF,yBAE1B,GADAlzC,EAAS3sD,GAAKtL,KAAK8gB,OAAO1d,QAAQkI,GAAK,OACnCtL,KAAK8gB,OAAOwU,cACZ,IAAK,IAAIt0B,EAAI,EAAG+X,EAAM/Y,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAAQK,EAAI+X,EAAK/X,IACjEhB,KAAK8gB,OAAO++C,6BAAsD,IAAxBqrC,EAAQlnG,QAAQhD,KAG9Do1B,EAAMp2B,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,mBACpDyzD,EAASvzD,YAAY0xB,KAGzBp2B,KAAK8gB,OAAO2kD,gBAAkBzlE,KAAK8gB,OAAO4kD,aAC1CtvC,EAAMp2B,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,oBACpDyzD,EAASvzD,YAAY0xB,IAErBp2B,KAAK8gB,OAAO6kD,iBAAmD,UAAhC3lE,KAAK8gB,OAAOulF,kBAC3CjwE,EAAMp2B,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,kBACpDyzD,EAASvzD,YAAY0xB,IAEzB,IAASp1B,EAAI,EAAG+X,EAAMib,EAAKrzB,OAAQK,EAAI+X,EAAK/X,IACxCo1B,EAAMp2B,KAAK8gB,OAAOvc,cAAc,QACiB,IAA7CyvB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACjC,gBAAkByf,EAAK,CAAE,QAAW,SAExC6hC,EAASvzD,YAAY0xB,GAMzB,OAJIp2B,KAAK8gB,OAAO6kD,iBAAmD,UAAhC3lE,KAAK8gB,OAAOulF,kBAC3CjwE,EAAMp2B,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,kBACpDyzD,EAASvzD,YAAY0xB,IAElB6hC,GAEXgvC,EAAa/mG,UAAU0lG,cAAgB,SAAUhjF,GAI7C,IAFA,IAAI+P,EAAO3yB,KAAK8gB,OACZoqF,EAAUlrG,KAAK8gB,OAAOqqF,yBACjBnqG,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,IAAK,CAC7C,GAAI2xB,EAAK2C,cACL,IAAK,IAAI70B,EAAI,EAAGigC,EAAQ/N,EAAK4C,cAAc7S,QAAQ/hB,OAAQF,EAAIigC,EAAOjgC,IAC9DT,KAAK8gB,OAAO++C,6BAAsD,IAAxBqrC,EAAQlnG,QAAQvD,IAG9DmiB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAM56D,KAAKrM,KAAK6lG,aAAa,GAAI,OAASuF,eAGnF,GAAIz4E,EAAK8yC,gBAAkB9yC,EAAK+yC,UAAW,CACvC,IAAIrxC,EAAO,GACXr0B,KAAK8gB,OAAOwT,OAAO,QAA6BD,GAChDzR,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAM56D,KAAKrM,KAAK6lG,aAAaxxE,EAAM,OAASg3E,eAE7E14E,EAAKgzC,iBAAmD,UAAhC3lE,KAAK8gB,OAAOulF,iBACpCzjF,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKq1D,MAAM56D,KAAKrM,KAAK6lG,aAAa,GAAI,OAASoF,eAGnF,OAAOroF,GAEXqkF,EAAa/mG,UAAU8qG,eAAiB,SAAUpoF,EAAMsnF,GACpD,IAAII,EAAQtqG,KAAK8gB,OAAOwqF,kBAAoBtrG,KAAK8gB,OAAOwqF,iBAAiBp/F,cAAc,SACnF8nB,EAAOh0B,KAAK8gB,OAAO++C,2BACnB7/D,KAAK8gB,OAAOsS,WAAWpzB,KAAK8gB,OAAOyqF,mBAAqBvrG,KAAK8gB,OAAO4B,QAGxE,GAFA1iB,KAAKknG,OAAS,EACdlnG,KAAKmnG,UAAY,EACbnnG,KAAK8gB,OAAO0qF,qBACZ,IAAK,IAAIxqG,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IAC7BhB,KAAKyrG,kBAAmB,EACxB7oF,EAAO5iB,KAAK0rG,YAAY13E,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAMgR,EAAM,EAAS,IAAN5hB,GAAS,EAAOA,IAAOgzB,EAAKrzB,OAAS,EAAI2pG,EAAOJ,GAAW,GAG7HlpG,EAAI,EAAb,IAAK,IAAW+X,EAAMib,EAAKrzB,OAAQK,EAAI+X,EAAK/X,IACxChB,KAAKmnG,UAAY,EACjBnnG,KAAKyrG,kBAAmB,EACxB7oF,EAAO5iB,KAAK0rG,YAAY13E,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAMgR,EAAM,EAAS,IAAN5hB,GAAS,EAAOA,IAAO+X,EAAM,EAAIuxF,EAAOJ,GAAW,GAE1H,OAAOtnF,GAEXqkF,EAAa/mG,UAAUwrG,YAAc,SAAU13E,EAAMpR,EAAMnW,EAAOk/F,EAAYvE,EAAYwE,EAAWC,EAAW3B,EAAW4B,GACvH,IAAIC,EAAUH,EAAYE,EAAiB,kBAAoB,aAAe,GAC1EE,GAAgBhsG,KAAK8gB,OAAO0qF,sBACxBx3E,EAAK4zE,aAAe5nG,KAAKyrG,mBAAuBz3E,EAAK4zE,YAAc5nG,KAAKyrG,iBAChF,GAAKz3E,EAAKtR,QAiBL,CACD1iB,KAAKonG,YAAa,EAClB,IAAIvV,EAAU7xF,KAAKisG,WAAWj4E,EAAM,GACpC,GAAI69D,EAAS,CACT,IAAIqa,EAAuBlsG,KAAKmsG,wBAAwBn4E,EAAM,GAC1Do4E,EAA2D,IAArCpsG,KAAK8gB,OAAO0qF,uBAC7BxrG,KAAKyrG,kBAA6C,IAAzBS,GAC1BlsG,KAAKyrG,kBAAqB5Z,EAAUqa,IAA0B,EAClEE,GACAxpF,EAAKjR,SAASlF,EAAMmF,WAAY,KAAKq1D,MAAM56D,KAAK,IAAI,OAAK,CACrDg7D,SAAU,OAASglC,cAAe3qF,OAAQsS,EAC1C69D,QAAS7xF,KAAKssG,WAAWza,EAASqa,GAClC1nG,UAAWmnG,EAAa,GAAMvE,EAAa,cAAgB,MAIvE,GAAIpnG,KAAK8gB,OAAO0qF,uBAAyBxrG,KAAKyrG,iBAC1C,IAAK,IAAIzqG,EAAI,EAAGA,EAAIgzB,EAAKtR,QAAQ/hB,OAAQK,IACrC4hB,EAAO5iB,KAAK0rG,YAAY13E,EAAKtR,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAMgR,EAAMnW,EAAQ,EAAGk/F,EAAkB,IAAN3qG,EAASA,IAAOgzB,EAAKtR,QAAQ/hB,OAAS,GAAMirG,EAAWC,EAAW3B,GAAW,GAGpL,GAAIlqG,KAAKyrG,iBACA,CAAIzqG,EAAI,EAAb,IAAK,IAAW+X,EAAMib,EAAKtR,QAAQ/hB,OAAQK,EAAI+X,EAAK/X,IAAK,CACrD2qG,EAAaA,GAAoB,IAAN3qG,EAC3B,IAAIurG,EAAevsG,KAAKonG,WAAapzE,EAAKtR,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UACtEg1F,EACJa,EAAmBxrG,IAAO+X,EAAM,GAAM6yF,EAC1ChpF,EAAO5iB,KAAK0rG,YAAY13E,EAAKtR,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAMgR,EAAMnW,EAAQ,EAAGk/F,EAAYY,IAAiBC,EAAkBA,EAAkBX,EAAW3B,GAAW,UA3C9K8B,GACAppF,EAAKjR,SAASlF,EAAMmF,WAAY,KAAKq1D,MAAM56D,KAAKrM,KAAK6lG,aAAa7xE,EAAM,OAAS62E,OAAQ7qG,KAAK+qG,SAAWt+F,GAAQk/F,EAAa,GAAMvE,EAAa,cAAgB,IAAO2E,EAASt/F,EAAOzM,KAAK8gB,OAAO2rF,oBAAoBz4E,EAAK6E,OAE7N74B,KAAK8gB,OAAO0qF,qBACPxrG,KAAKknG,OAASlnG,KAAKmnG,UAAYnnG,KAAK8gB,OAAO4rF,gBAC1C14E,EAAK4zE,aAAe5nG,KAAKyrG,mBAAuBz3E,EAAK4zE,YAAc5nG,KAAKyrG,kBAC1EzrG,KAAKknG,SAGLlnG,KAAKmnG,YAITnnG,KAAKknG,SAkCb,OAAOtkF,GAEXqkF,EAAa/mG,UAAUisG,wBAA0B,SAAU/1E,EAAKu2E,GAC5D,GAAIv2E,EAAI1T,QACJ,IAAK,IAAI1hB,EAAI,EAAGA,EAAIo1B,EAAI1T,QAAQ/hB,OAAQK,IACpC2rG,EAAgB3sG,KAAKmsG,wBAAwB/1E,EAAI1T,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAM+6F,QAGrFv2E,EAAIwxE,YACT+E,IAEJ,OAAOA,GAEX1F,EAAa/mG,UAAUosG,WAAa,SAAUza,EAASqa,GAEnD,OADAra,EAAW7xF,KAAKyrG,iBAA0C5Z,EAAUqa,EAAjCA,EAC5Bra,GAGXoV,EAAa/mG,UAAUylG,YAAc,SAAUl5F,GAC3C,OAAO,IAAI,OAAI,KAEnBw6F,EAAa/mG,UAAU2lG,aAAe,SAAUnkF,EAAQ2lD,EAAUw6B,EAASr9F,EAAWshB,EAAU+hF,GAC5F,IAAIpgC,EAAM,CACN,QAAW/lD,EAAO/K,QAClB,YAAc,EACd,YAAe,eAAkB+K,EAAO86C,gBACxC,MAAS,GACT,OAAU96C,EACV,SAAY2lD,EACZ,QAAWw6B,EACX,UAAar9F,EACb,MAASshB,EACT,SAAY+hF,GAKhB,QAHKpgC,EAAIo6B,SAAWp6B,EAAIo6B,QAAU,WACvBp6B,EAAIo6B,QAER,IAAI,OAAKp6B,IAQpBw/B,EAAa/mG,UAAUqoG,WAAa,SAAU7lF,GAI1C,IAHA,IACIkqF,EACAC,EAFAl6E,EAAO3yB,KAAK8gB,OAGPrgB,EAAI,EAAGqsG,EAAOpqF,EAAQ/hB,OAAQF,EAAIqsG,EAAMrsG,IAAK,CAClD,IAAIihB,EAASgB,EAAQ/Q,SAASlR,EAAEmR,WAAY,KAC5Ci7F,EAAMl6E,EAAKo6E,yBAAyBrrF,EAAOmX,KAC3C+zE,EAAalrF,EAAO/K,QAAU,GAAK,OACnC,gBAAkB3W,KAAK0pG,cAAczjD,SAASt0C,SAASk7F,EAAIj7F,WAAY,KAAM,CAAE,QAAWg7F,IAE9F5sG,KAAKgtG,aAET/F,EAAa/mG,UAAUsoG,cAAgB,WACnCxoG,KAAKgtG,aAOT/F,EAAa/mG,UAAU8sG,UAAY,WAC/B,IAAI/b,EAAYjxF,KAAKipG,WACrBjpG,KAAK8oG,iBAAiB7X,GACtB,IAAI55B,EAAQr3D,KAAKitG,cAAgBjtG,KAAKspG,YAAYp9F,cAAc,IAAM,QAAwBA,cAAc,IAAM,QAC5GlM,KAAKwpG,WACPU,OAAY3+F,EAChB,GAAI8rD,EAAO,CACP,gBAAOA,GACPA,EAAMtK,YAAYsK,EAAMrsC,YACxBqsC,EAAMtK,YAAYsK,EAAMpsC,WAAW,IACnC,IAAIgtC,EAAWj4D,KAAK8gB,OAAOvc,cAAc,QACrC6lG,EAAgBpqG,KAAKqqG,oBAAoBH,GAC7ClqG,KAAK4iB,KAAOwnF,EAAcxnF,KAC1By0C,EAAMuM,aAAawmC,EAAcE,MAAOjzC,EAAMrsC,YAC9ChrB,KAAK0qG,eAAezyC,GACpBZ,EAAMuM,aAAa5jE,KAAK4pG,YAAY3xC,GAAWZ,EAAMrsC,YACrDhrB,KAAKktG,cAAc71C,GACnBr3D,KAAK8gB,OAAOwT,OAAO,QAAwB,IAC3Ct0B,KAAKw+D,aAAaG,oBAClB3+D,KAAK8gB,OAAOqsF,sBACZntG,KAAKopG,uBAEL,IADA,IAAIxmF,EAAO,GAAGlV,MAAMpK,KAAK2tF,EAAUnkC,iBAAiB,sBAC3Cj/C,EAAK,EAAGu/F,EAASxqF,EAAM/U,EAAKu/F,EAAOzsG,OAAQkN,IAAM,CACtD,IAAI8T,EAAMyrF,EAAOv/F,GACbw/F,EAAS,GAAG3/F,MAAMpK,KAAKqe,EAAIqyB,uBAAuB,uBAClDq5D,EAAO1sG,QACP0sG,EAAOA,EAAO1sG,OAAS,GAAGuE,UAAU4G,IAAI,0BAGhD9L,KAAK8gB,OAAOwT,OAAO,QAAwB,CAAE1R,KAAM5iB,KAAK4iB,OACpD5iB,KAAK8gB,OAAO++C,4BAA8B,gBAAaxI,EAAO,SAC9Dr3D,KAAK8gB,OAAOwT,OAAO,QAAwB,CAAE1R,KAAM5iB,KAAK4iB,KAAMyR,KAAM,CAAEquC,UAAU,EAAO4qC,SAAS,KAEhGttG,KAAK8gB,OAAOijF,eAA2D,WAA1C/jG,KAAK8gB,OAAOkjF,iBAAiBC,UAC1D,gBAAKrhF,GAAM,GAGnB,IAAI2qF,EAAkBvtG,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,8BAC9D,eAAkBqhG,KACnBA,EAAgBC,SAAW,IAGnCvG,EAAa/mG,UAAU4oG,iBAAmB,SAAUnlC,GAChD,IAAIjiD,EAAS1hB,KAAK8gB,OAAO4B,QACrB+qF,EAAa/rF,EAAO6V,MAAK,SAAU7V,GAAU,OAAQ,eAAkBA,EAAOgB,YAC9E+qF,EACA9pC,EAAIz+D,UAAU4G,IAAI,mBAGlB63D,EAAIz+D,UAAUC,OAAO,oBAG7B8hG,EAAa/mG,UAAUgtG,cAAgB,SAAU71C,GAC7Cr3D,KAAKipG,WAAW/8F,cAAc,IAAM,QAAwBxH,YAAY2yD,IAE5E4vC,EAAa/mG,UAAU+rG,WAAa,SAAU71E,EAAKs3E,GAC/C,GAAIt3E,EAAI1T,QACJ,IAAK,IAAI1hB,EAAI,EAAG+X,EAAMqd,EAAI1T,QAAQ/hB,OAAQK,EAAI+X,EAAK/X,IAC/C0sG,EAAM1tG,KAAKisG,WAAW71E,EAAI1T,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAM87F,QAI/Dt3E,EAAIzf,SACJ+2F,IAGR,OAAOA,GAEXzG,EAAa/mG,UAAUkpG,qBAAuB,WAC1C,IAAIz2E,EAAO3yB,KAAK8gB,QACV9gB,KAAK8gB,OAAOo6C,iBAAoBl7D,KAAK8gB,OAAOwU,eAAiBt1B,KAAK8gB,OAAOyU,cAAcwvC,gBAG7F/kE,KAAKsnG,UAAY,IAAI,OAAU30E,EAAKstC,mBAAoB,CACpD0tC,WAAY,gBACZC,SAAU,EACV9lC,OAAQ9nE,KAAK8nE,OACbkgC,UAAWhoG,KAAKgoG,UAChBC,KAAMjoG,KAAKioG,KACXE,SAAUnoG,KAAKmoG,SACf0F,MAAO,cACPxG,iBAAkBrnG,KAAKqnG,mBAE3BrnG,KAAK8gB,OAAOqI,GAAG,QAAgBnpB,KAAK8tG,iBAAkB9tG,QAE1DinG,EAAa/mG,UAAUmpG,qBAAuB,WAC1C,IAAI12E,EAAO3yB,KAAK8gB,OAChB9gB,KAAK+tG,UAAY,IAAI,OAAUp7E,EAAKstC,mBAAoB,CACpD+tC,OAAQ,eACR5F,KAAMpoG,KAAKooG,OAEfpoG,KAAK8gB,OAAOqI,GAAG,QAAgBnpB,KAAK8tG,iBAAkB9tG,OAE1DinG,EAAa/mG,UAAU4tG,iBAAmB,WAClC9tG,KAAK+tG,YAAc/tG,KAAK+tG,UAAU/kF,aAClChpB,KAAK+tG,UAAUv7F,UAEfxS,KAAKsnG,YAActnG,KAAKsnG,UAAUt+E,aAClChpB,KAAKsnG,UAAU90F,WAGvBy0F,EAAa/mG,UAAUuoG,oBAAsB,WACzC,IAAIplG,EAAQrD,KACR2yB,EAAO3yB,KAAK8gB,OAChB,GAA8B,aAA1B6R,EAAKmxE,mBAAoCnxE,EAAKksC,UAC1ClsC,EAAKsD,cAAiBtD,EAAK0F,gBAA+C,cAA7B1F,EAAK2F,eAAe9pB,MAAwB,CAK7F,IAJA,IAAIm1D,EAAMhxC,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,4BAC7CypG,EAAet7E,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,oBACtD0pG,EAAcv7E,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,mBACrDub,EAAQ/f,KAAK8gB,OAAOuX,gBAAkBr4B,KAAK8gB,OAAOmV,aAAe,EAAI,EAChEj1B,EAAI,EAAGA,EAAI+e,EAAO/e,IAAK,CAC5B,IAAImtG,EAAcx7E,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,8DACrD4pG,EAAgB,IAAVruF,EAAc/f,KAAK8gB,OAAOmV,aAAe,OAC7C,SAAiB,IAANj1B,EAAU,OAAS,SAChC80D,EAASnjC,EAAKpuB,cAAc,SAAU,CAAEC,UAAW,gDACnDm8B,EAAOhO,EAAKpuB,cAAc,OAAQ,CAAEC,UAAW,mBAAqB4pG,EAAM,kBAC9Et4C,EAAOpxD,YAAYi8B,GACnB,IAAI0tE,EAAS,IAAI,OAAO,CACpB5jG,SAAUzK,KAAK8gB,OAAOrW,SAAWzK,KAAK8gB,OAAOrW,SAAW,KAE5D4jG,EAAOxd,SAAS/6B,GAChBA,EAAOw4C,QAAU,SAAUnhG,GACnBA,EAAE7M,OAAO4E,UAAUmB,SAAS,kBACzB8G,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAC/BhD,EAAMyd,OAAOytF,2BAGblrG,EAAMyd,OAAO0tF,8BAGrBL,EAAYzpG,YAAYoxD,GACxBo4C,EAAYxpG,YAAYypG,GAE5BF,EAAavpG,YAAYwpG,GACzBvqC,EAAIj/D,YAAYupG,GAChBt7E,EAAKvvB,QAAQwgE,aAAaD,EAAK3jE,KAAK8gB,OAAO1d,QAAQ8I,cAAc,IAAM,cAGnEymB,EAAK6sC,mBAAqB7sC,EAAKksC,SAC/BlsC,EAAKitC,aAAa16D,UAAU4G,IAAI,wBAI5Cm7F,EAAa/mG,UAAUwoG,8BAAgC,SAAUr0E,GAC7D,IAAIo6E,EAAazuG,KAAK8gB,OAAO1d,QAAQ8I,cAAc,yBAC/B,YAAhBmoB,EAAK+vC,SACDqqC,EACA,gBAAOA,GAGPzuG,KAAKyoG,wBAIVxB,EAhqBsB,G,oCClB7B5nG,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAyBxC,EAAoC,SAAU8C,GAE9C,SAAS6rG,IACL,IAAIrrG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQhE,OAPAqD,EAAMD,QAAUC,EAAMyd,OACjBvc,cAAc,KAAM,CAAEC,UAAW,eAAgBwK,MAAO,CAAE8zF,SAAU,KAAM7zF,KAAM,kBACrF5L,EAAMilG,YAAc,IAAI,OACxBjlG,EAAMsrG,QAAUtrG,EAAMyd,OAAOvc,cAAc,OAAQ,CAAEC,UAAW,iBAChEnB,EAAMurG,QAAUvrG,EAAMyd,OAAOvc,cAAc,MAAO,CAAEC,UAAW,0BAA2BwK,MAAO,CAAE,cAAe,UAClH3L,EAAMwrG,IAAMxrG,EAAMyd,OAAOvc,cAAc,OACvClB,EAAMyrG,UAAYzrG,EAAMyd,OAAOvc,cAAc,QAAS,CAAEC,UAAW,mBAAoBwK,MAAO,CAAE,KAAQ,WAAY,aAAc3L,EAAM0rG,UAAU/0D,YAAY,wBACvJ32C,EAqOX,OA/OAhE,EAAUqvG,EAAoB7rG,GAiB9B6rG,EAAmBxuG,UAAU8uG,OAAS,WAClC,OAAOhvG,KAAK6uG,IAAIrP,aAWpBkP,EAAmBxuG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,EAAMypD,GACxD,IAAI9D,EAAOjjE,KAAKoD,QAAQo8F,YACpByP,EAAcjvG,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,wCAAyCwK,MAAO,CAAE,cAAe,UACjI,OAAOhP,KAAKkvG,cAAc/nC,EAAMlE,EAAMgsC,IAS1CP,EAAmBxuG,UAAUoV,QAAU,SAAU6xD,EAAMlE,GACnDjjE,KAAKmvG,MAAMlsC,GACX,IAAIgsC,EAAcjvG,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,wCAAyCwK,MAAO,CAAE,cAAe,UACjI,OAAOhP,KAAKkvG,cAAc/nC,EAAMlE,EAAMgsC,IAE1CP,EAAmBxuG,UAAUivG,MAAQ,SAAUlsC,GAC3CA,EAAKn4D,UAAY,IAGrB4jG,EAAmBxuG,UAAUgvG,cAAgB,SAAU/nC,EAAMlE,EAAMgsC,GAC/D,IAKIG,EA0EAtvF,EA/EA4B,EAASylD,EAAKzlD,OACdkgF,EAAW,GACXyN,EAAc,GAEdC,EAAWtvG,KAAKgvG,SASpB,GAPA,eAAWM,EAAU,CACjB,eAAgB5tF,EAAOmX,IACvB,MAAS,oBAER,eAAkBnX,EAAO6tF,uBAC1BH,EAAcpvG,KAAKwvG,SAAS9tF,EAAO+K,WAAY/K,IAE/B,aAAhBA,EAAOlT,KAAqB,CAC5B,IAAIwO,EAAQ0E,EAAO+K,WACd,eAAkB2iF,KACnBpyF,EAAQoyF,GAEZ,IAAI3iF,EAAazsB,KAAK2uG,QAAQnP,YAC9B/yE,EAAW/K,EAAOu8C,gBAAkBj+D,KAAK8gB,OAAO5V,SAAS8R,GACzDsyF,EAAS5qG,YAAY+nB,OAEpB,CACD/K,EAAOm6C,SAAW,cAClB,IAAI4zC,EAAe,eAAezvG,KAAK8gB,OAAOvc,eAAe,EAAO,CAAEmrG,SAAS,EAAOxnE,MAAO,MAC7FloC,KAAK8uG,UAAUxjG,GAAK,YAAcoW,EAAOmX,IACzC42E,EAAa7rC,aAAa5jE,KAAK8uG,UAAUtP,YAAaiQ,EAAazkF,YAC/DhrB,KAAK8gB,OAAOrW,UACZ,eAAS,CAACglG,GAAe,CAACzvG,KAAK8gB,OAAOrW,WAE1C6kG,EAAS5qG,YAAY+qG,GACrBH,EAASpqG,UAAU4G,IAAI,sBAK3B,GAHA9L,KAAK2vG,uBAAuB1sC,EAAMkE,GAClCnnE,KAAK4vG,WAAW3sC,EAAMqsC,GACtBrsC,EAAKv+D,YAAY1E,KAAK4uG,QAAQpP,aACzBx/F,KAAK8gB,OAAOuX,gBAAsD,cAApCr4B,KAAK8gB,OAAOwX,eAAe9pB,MACzDkT,EAAO2W,iBAAmB,eAAkB3W,EAAO4R,UAClDtzB,KAAK8gB,OAAOq6C,iBAAkBz5C,EAAOy5C,gBAAiB,CACxD,eAAW8zC,EAAa,CACpB,eAAgB,YAAcvtF,EAAOmX,MAEzCw2E,EAAcA,EAAY1uG,OAAS0uG,EAAc,KAAOrvG,KAAK+uG,UAAU/0D,YAAY,qBAAuBh6C,KAAK+uG,UAAU/0D,YAAY,qBACrIipB,EAAK/9D,UAAU4G,IAAI,eACnB,IAAI+jG,EAAiB,GACrB,GAAI7vG,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,QAAUX,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,SAAWkvG,EAAelvG,OAE1G,IADA,IAAIy3B,EAAgBp4B,KAAK8gB,OAAOwW,uBACvB7qB,EAAQ,EAAGA,EAAQzM,KAAK8gB,OAAO4B,QAAQ/hB,OAAQ8L,IACpD,IAAK,IAAIsT,EAAQ,EAAGA,EAAQ/f,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,OAAQof,IACnE,GAAI/f,KAAK8gB,OAAOwX,eAAe5V,QAAQ/Q,SAASoO,EAAMnO,WAAY,KAAK0hB,QAAU5R,EAAO4R,OAChF8E,EAAcz3B,QACX+gB,EAAO8V,kBAAoBx3B,KAAK8gB,OAAOwX,eAAe5V,QAAQ/Q,SAASoO,EAAMnO,WAAY,KAAK0hB,MAAQ,CAC7G27E,EAAY/pG,UAAU4G,IAAI,cAC1B+jG,EAAexjG,KAAKqV,EAAO4R,OAC3B,MAKhB2vC,EAAKv+D,YAAYuqG,EAAYzP,aAE7Br4B,EAAK3iE,WACLy+D,EAAK/9D,UAAU4G,IAAIq7D,EAAK3iE,WAExBkd,EAAOouF,kBACP,gBAAsB7sC,EAAMvhD,EAAOouF,kBAEnC9vG,KAAK8gB,OAAOmV,cAAgBvU,EAAOuU,eACnC2rE,EAASvjF,KAAO,OAChBgxF,EAAcA,EAAY1uG,OAAS0uG,EAAc,KAAOrvG,KAAK+uG,UAAU/0D,YAAY,mBAAqBh6C,KAAK+uG,UAAU/0D,YAAY,qBAElIh6C,KAAK8gB,OAAOwU,eAAiB5T,EAAO4T,eAAkBt1B,KAAK8gB,OAAOo6C,iBAAmBx5C,EAAOw5C,mBAC7F0mC,EAASn4B,SAAU,EACnB4lC,EAAcA,EAAY1uG,OAAS0uG,EAAc,KAAOrvG,KAAK+uG,UAAU/0D,YAAY,oBAAsBh6C,KAAK+uG,UAAU/0D,YAAY,qBAEpIh6C,KAAK8gB,OAAOq6C,gBAAkC,aAAhBz5C,EAAOlT,OAAwBkT,EAAOiL,WACpE0iF,EAAcA,EAAY1uG,OAAS0uG,EAAc,KAAOrvG,KAAK+uG,UAAU/0D,YAAY,yBAA2Bh6C,KAAK+uG,UAAU/0D,YAAY,0BAE7IipB,EAAOjjE,KAAK+vG,oBAAoBruF,EAAQuhD,GAExC,IAAI+sC,EAAUhwG,KAAK8gB,OACf+mF,EAAWmI,EAAQlI,sBAAsBpmF,EAAO4R,OACpD,IAAK,eAAkB5R,EAAO86C,gBAAiB,CAE3C,IAAIyzC,EAAeD,EAAQ5sG,QAAQkI,GAAKoW,EAAOmX,IAAM,iBACjD4X,EAAM,mBACNra,EAAM1U,EACNqmF,EAAkB/nG,KAAK8gB,OAAO3Y,SAA8C,kBAA3BuZ,EAAqB,eACtEwuF,EAAiBlwG,KAAK8gB,OAAOwgF,eAAiBthG,KAAK8gB,OAAOwgF,cAAcC,eACxEvhG,KAAK8gB,OAAOwgF,cAAcC,cAAcp5F,QAC5C,GAAI4/F,GAAmBmI,EAAgB,CACnC,IAAIC,EAAS,CAAE,MAAStI,GACxB5kC,EAAKjd,kBAAkBl7C,UAAY,GACnC4W,EAAOq8C,mBAAPr8C,CAA2B,eAAOyuF,EAAQ/5E,GAAM45E,EAAS,iBAAkBC,EAAcjwG,KAAK8gB,OAAO,GAAK2vB,GAAM,KAAMwyB,EAAKjd,mBAC3HhmD,KAAK8gB,OAAO6gF,uBAGZ7hF,EAAS4B,EAAOq8C,mBAAPr8C,CAA2B,eAAO,CAAE,MAASmmF,GAAYzxE,GAAM45E,EAAS,iBAAkBC,EAAcjwG,KAAK8gB,OAAO,GAAK2vB,QAAMllC,OAAWA,EAAWvL,KAAK8gB,OAAO,SAC1KmiD,EAAKjd,kBAAkBl7C,UAAY,GACnC,eAAem4D,EAAKjd,kBAAmBlmC,GAI/C,GADA9f,KAAKsoG,YAAY1/B,WAAW3F,EAAM2+B,IAC7B,eAAkBlgF,EAAO0uF,mBAAqB,eAAkB1uF,EAAO26C,WAAY,CACpF,IAAIpc,EAAYv+B,EAAO0uF,iBAAmB1uF,EAAO26C,UACjDizC,EAASvoG,MAAMs1D,UAAYpc,EACT,UAAdA,GAAuC,SAAdA,EACzBgjB,EAAK/9D,UAAU4G,IAAkB,UAAdm0C,EAAwB,eAAiB,eAEzC,WAAdA,GACLgjB,EAAK/9D,UAAU4G,IAAI,iBAa3B,GAVwB,SAApB4V,EAAO2uF,WAAyB3uF,EAAO2uF,UAAqC,SAAzBrwG,KAAK8gB,OAAOuvF,SAC/DptC,EAAK/9D,UAAU4G,IAAI,cAEO,wBAApB4V,EAAO2uF,WAAwC3uF,EAAO2uF,UAAqC,wBAAzBrwG,KAAK8gB,OAAOuvF,WAC/EL,EAAQjM,gBAAwD,WAAtCiM,EAAQhM,iBAAiBC,UACX,SAAtC+L,EAAQhM,iBAAiBC,WACZ,aAAhBviF,EAAOlT,MACPy0D,EAAK/9D,UAAU4G,IAAI,qBAGvBujG,EAAa,CACb,IAAIiB,EAAatwG,KAAK8gB,OAAOvc,cAAc,OAAQ,CAAE+G,GAAI,eAAiBoW,EAAOmX,IAAK/tB,UAAWukG,EAAargG,MAAO,CAAEjI,MAAO,kBAC9Hk8D,EAAKv+D,YAAY4rG,GACjBrtC,EAAKt4D,aAAa,mBAAoB2lG,EAAUhlG,IAEpD23D,EAAKt4D,aAAa,gBAAkB,eAAkBw8D,EAAK06B,SAA0B,EAAf16B,EAAK06B,SAAajwF,YACxFqxD,EAAKt4D,aAAa,eAAgB,KAClC,IAAI02F,EAAerhG,KAAK8gB,OAAOwgF,eAAiBthG,KAAK8gB,OAAOwgF,cAAcC,eACtEvhG,KAAK8gB,OAAOwgF,cAAcC,cAAcp5F,QAC5C,IAAMnI,KAAK8gB,OAAO3Y,SAAWnI,KAAK8gB,OAAO0gF,oBACjCH,GAAgBrhG,KAAK8gB,OAAOwgF,cAAcC,cAAcC,sBACxD,eAAkB9/E,EAAO86C,gBAAiB,CAE9C,IAAIklC,EAAY1hG,KAChB0hG,EAAU5gF,OAAO6gF,iBAAgB,WAC7BD,EAAU5gF,OAAO7Y,QAAQ,QAAgB,CAAEk/D,KAAMA,EAAMlE,KAAMA,YAIjEjjE,KAAK8gB,OAAO7Y,QAAQ,QAAgB,CAAEk/D,KAAMA,EAAMlE,KAAMA,IAK5D,OAHIjjE,KAAK8gB,OAAOg/C,gBACZ,eAAwB9/D,KAAK8gB,OAAQY,EAAQuhD,GAE1CA,GAEXyrC,EAAmBxuG,UAAUsvG,SAAW,SAAUl8E,EAAO5R,GACrD,OAAOA,EAAO6tF,oBAAoBj8E,EAAO5R,IAE7CgtF,EAAmBxuG,UAAU6vG,oBAAsB,SAAUruF,EAAQuhD,GACjE,GAAIjjE,KAAK8gB,OAAOq6C,gBAAkBz5C,EAAOy5C,iBAAmB,eAAkBz5C,EAAO4R,OAAQ,CACzF,IAAIlwB,EAAWpD,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,uBAAwBwK,MAAO,CAAE,cAAe,UACzGuhG,EAAuB,GAC3B,GAAIvwG,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,QAAUX,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,SAAW4vG,EAAqB5vG,OAChH,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK8gB,OAAO4B,QAAQ/hB,OAAQK,IAC5C,IAAK,IAAI6iB,EAAI,EAAGA,EAAI7jB,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,OAAQkjB,IAC3D,GAAI7jB,KAAK8gB,OAAOwX,eAAe5V,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAK0hB,QAAU5R,EAAO4R,MAAO,CACvFlwB,EAAQ8B,UAAU4G,IAAI,cACtBykG,EAAqBlkG,KAAKqV,EAAO4R,OACjC,MAKhB2vC,EAAK/9D,UAAU4G,IAAI,eACnBm3D,EAAKv+D,YAAYtB,GAErB,GAAIpD,KAAK8gB,OAAOm6C,cAAe,CAC3B,IAAIu1C,EAAUxwG,KAAK8gB,OAAOvc,cAAc,OACxCisG,EAAQhsG,UAAYkd,EAAOu5C,cAAgB,uBAAyB,cACpEgI,EAAKv+D,YAAY8rG,GAErB,OAAOvtC,GASXyrC,EAAmBxuG,UAAU0vG,WAAa,SAAU3sC,EAAMwtC,GAEtD,OADAxtC,EAAKv+D,YAAY+rG,GACVxtC,GAEJyrC,EAhP4B,CAiPrC,QC1QE,EAAwC,WACxC,IAAIpvG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxC,EAA2C,SAAU8C,GAErD,SAAS6tG,IACL,IAAIrtG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAMhE,OALAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAC7CC,UAAW,mCAAoCwK,MAAO,CAClD8zF,SAAU,KAAM7zF,KAAM,kBAGvB5L,EAqIX,OA7IA,EAAUqtG,EAA2B7tG,GAmBrC6tG,EAA0BxwG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,EAAMypD,GAC/D,IAAI9D,EAAOjjE,KAAKoD,QAAQo8F,YACpB77B,EAAM3jE,KAAK8gB,OAAOvc,cAAc,MAAO,CACvCC,UAAW,yBACXwK,MAAO,CAAE,eAAgBm4D,EAAKzlD,OAAOmX,OAErCnX,EAASylD,EAAKzlD,OA0BlB,GAzBAuhD,EAAKv+D,YAAYi/D,GACZ,eAAkBjiD,EAAO86C,gBAI1Bx8D,KAAK4vG,WAAWjsC,EAAK3jE,KAAK8gB,OAAO5V,SAASwW,EAAO+K,YAAa/K,EAAOu8C,gBAHrE,eAAe0F,EAAKjiD,EAAOq8C,mBAAPr8C,CAA2BA,EAAQ1hB,KAAK8gB,OAAQ,mBAKpEqmD,EAAKzlD,OAAO6P,SACZ0xC,EAAKt4D,aAAa,QAASw8D,EAAKzlD,OAAO6P,SAEnB,SAApB7P,EAAO2uF,WAAyB3uF,EAAO2uF,UAAqC,SAAzBrwG,KAAK8gB,OAAOuvF,SAC/DptC,EAAK/9D,UAAU4G,IAAI,eAEM,wBAApB4V,EAAO2uF,WAAwC3uF,EAAO2uF,UAAqC,wBAAzBrwG,KAAK8gB,OAAOuvF,WACnFptC,EAAK/9D,UAAU4G,IAAI,qBAElB,eAAkBq7D,EAAKzlD,OAAO26C,aAC/BsH,EAAI58D,MAAMs1D,UAAY8K,EAAKzlD,OAAO26C,WAElC8K,EAAKzlD,OAAOouF,kBACZ,gBAAsB7sC,EAAMkE,EAAKzlD,OAAOouF,kBAE5C7sC,EAAKt4D,aAAa,UAAWw8D,EAAK0qB,QAAQjgF,YAC1CqxD,EAAKt4D,aAAa,eAAgBw8D,EAAK0qB,QAAQjgF,YAC/CqxD,EAAKt4D,aAAa,eAAgB,KAC9B3K,KAAK8gB,OAAOm6C,cAAe,CAC3B,IAAIu1C,EAAUxwG,KAAK8gB,OAAOvc,cAAc,OACxCisG,EAAQhsG,UAAY2iE,EAAKzlD,OAAOu5C,cAAgB,uBAAyB,cACzEgI,EAAKv+D,YAAY8rG,GAMrB,GAJIrpC,EAAK3iE,WACLy+D,EAAK/9D,UAAU4G,IAAIq7D,EAAK3iE,WAE5BxE,KAAK8gB,OAAO7Y,QAAQ,QAAgB,CAAEk/D,KAAMA,EAAMlE,KAAMA,IACxB,SAA5B,eAAgBvhD,GAKhB,GAJAuhD,EAAK/9D,UAAU4G,IAAI,gBACG,SAAlB4V,EAAO0D,QACP69C,EAAK/9D,UAAU4G,IAAI,sBAEF,IAAjB4V,EAAOjV,MACP,eAA6Bw2D,EAAsC,GAA/BjjE,KAAK8gB,OAAO2lD,iBAAwBzmE,KAAK8gB,OAAOrb,UAAW,YAE9F,CAGD,IAFA,IAAIuuB,EAAOh0B,KAAK8gB,OAAOsS,aACnB9tB,EAAuC,GAA/BtF,KAAK8gB,OAAO2lD,iBACfzlE,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IAAK,CAClC,GAAI0gB,EAAOjV,MAAQunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAChD,MAEAunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UACjCrR,GAASwB,WAAWktB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGnE,eAA6BqxD,EAAM39D,EAAOtF,KAAK8gB,OAAOrb,UAAW,aAGpE,GAAgC,UAA5B,eAAgBic,GAAqB,CAC1CuhD,EAAK/9D,UAAU4G,IAAI,iBAGnB,IAFIkoB,EAAOh0B,KAAK8gB,OAAOsS,aACnB9tB,EAAwC,UAAhCtF,KAAK8gB,OAAOulF,iBAA+BrmG,KAAK8gB,OAAO6kD,gBAAkB,GAAK,EACjF3kE,EAAIgzB,EAAKrzB,OAAS,EAAGK,GAAK,EAAGA,IAAK,CACvC,GAAI,eAAc0gB,EAAQsS,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKinB,MAAQnX,EAAOjV,MAAQunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAC/G,MAEAunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UACjCrR,GAASwB,WAAWktB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAGnE,eAA6BqxD,EAAM39D,EAAOtF,KAAK8gB,OAAOrb,UAAW,SAC3C,UAAlBic,EAAO0D,QACP69C,EAAK/9D,UAAU4G,IAAI,4BAGtB,GAAgC,UAA5B,eAAgB4V,GAAqB,CAC1CuhD,EAAK/9D,UAAU4G,IAAI,iBACfkoB,EAAOh0B,KAAK8gB,OAAOsS,aACnB9tB,EAAQ,EACRtF,KAAK8gB,OAAOmhD,4BACZ38D,EAAuC,GAA/BtF,KAAK8gB,OAAO2lD,iBAEiB,UAAhCzmE,KAAK8gB,OAAOulF,kBACjB/gG,EAAmD,GAA3CtF,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAE9C,IAASK,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IACzB0gB,EAAOjV,MAAQunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,QACC,SAA5CunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAqBt8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,UAC5C,UAA5C1uC,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,SAC7Bt8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UACjCrR,GAASwB,WAAWktB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAK3E,eAA6BqxD,EAAM39D,EAAQ,EAAGtF,KAAK8gB,OAAOrb,UAAW,QACrEH,EAAwC,UAAhCtF,KAAK8gB,OAAOulF,iBAA+BrmG,KAAK8gB,OAAO6kD,gBAAkB,GAAK,EACtF,IAAS3kE,EAAIgzB,EAAKrzB,OAAS,EAAGK,GAAK,EAAGA,IAClC,GAAI0gB,EAAOjV,MAAQunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAAO,CACvD,GAAI,eAAciV,EAAQsS,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKinB,MACvDnX,EAAOjV,MAAQunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAChD,MAE4C,UAA5CunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAkE,UAA5Ct8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QACpFt8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UACjCrR,GAASwB,WAAWktB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,aAK3E,eAA6BqxD,EAAM39D,EAAQ,EAAGtF,KAAK8gB,OAAOrb,UAAW,cAGrEw9D,EAAK/9D,UAAU4G,IAAI,cAEvB,OAAOm3D,GAEJytC,EA9ImC,CA+I5C,QCrKE,EAAwC,WACxC,IAAIpxG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAAoC,SAAU8C,GAE9C,SAAS8tG,IACL,IAAIttG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAAEC,UAAW,iBACvDnB,EAeX,OAnBA,EAAUstG,EAAoB9tG,GAc9B8tG,EAAmBzwG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GAClD,IAAI2lD,EAAOjjE,KAAKoD,QAAQo8F,YAExB,OADA,gBAAsBv8B,EAAMkE,EAAKJ,YAC1B9D,GAEJ0tC,EApB4B,CAqBrC,QCzCE,EAAwC,WACxC,IAAIrxG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxC,EAA0C,SAAU8C,GAEpD,SAAS+tG,IACL,IAAIvtG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OAJAqD,EAAMwtG,QAAU,EAChBxtG,EAAMD,QAAUC,EAAMyd,OACjBvc,cAAc,KAAM,CAAEC,UAAW,iBAClCwK,MAAO,CAAE1D,GAAIjI,EAAMyd,OAAO1d,QAAQkI,GAAK,cAAew3F,SAAU,QAC7Dz/F,EAoHX,OA3HA,EAAUutG,EAA0B/tG,GAgBpC+tG,EAAyB1wG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GACxDtd,KAAKoD,QAAQkI,GAAKtL,KAAK8gB,OAAO1d,QAAQkI,GAAK,cAAgBtL,KAAK6wG,UAChE,IAII/wF,EACAgxF,EACAC,EANA9tC,EAAOjjE,KAAKoD,QAAQo8F,YACpB7sE,EAAO3yB,KAAK8gB,OACZY,EAASylD,EAAKzlD,OACdsvF,EAAYtvF,EAAOu8C,aAAev8C,EAAOu8C,eAAiB,YAI9D3gD,EAAKmP,WAAa06C,EAAKzlD,OAAO+K,WAC1B06C,EAAKpwC,eACL+5E,EAAY9wG,KAAKwwB,OAAO22C,EAAKzlD,OAAQylD,EAAKzlD,OAAOuvF,cAAc,aAAc3zF,EAAM6pD,EAAKzlD,UAI5F,IAFA,IAAI1E,EAAQmqD,EAAKpwC,aAAe+5E,EAAY3pC,EAAKzlD,OAAOqU,oBAAsBzY,EAAK/c,IAC/EP,KAAKwwB,OAAO22C,EAAKzlD,OAAQylD,EAAKzlD,OAAOuvF,cAAc,MAAO3zF,EAAM6pD,EAAKzlD,SAChEmC,EAAI,EAAGA,EAAI8O,EAAKoB,WAAWpzB,OAAQkjB,IAgDxC,IA/CA,IAAIsuB,EAAU,SAAUnxC,GACpB,GAAI2xB,EAAKu+E,oBAAoB,GAAG59E,QAAUX,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAAK8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAChH0hB,OAASX,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAAK8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK2zD,qBAAsB,CAChH,IAAI4rC,EAAex+E,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KACrD8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK2zD,qBACzC,GAA4B,kBAAjB4rC,GAA6BA,EAAaC,SAAS,KAC1DL,EAAiBp+E,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAAK8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KACvF2zD,qBAAqBthE,MAAM,KAAK,GAAKqZ,EAAKqV,EAAKu+E,oBAAoB,GAAG59E,OAAOX,EAC7EoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAAK8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAC5EmkB,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAAK8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KACtE2zD,qBAAqBthE,MAAM,KAAK,OAExC,CACD,IAAIi1B,EAAYvG,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAClD8Q,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAChCy/F,EAAUn4E,EAASo4E,YAAY,OAAS7oC,gBACxC8oC,EAAS,GACb,IAAK,eAAkBF,GAAU,CAC7B,IAAIG,EAAcH,EAAQ96E,GAAGjZ,EAAK4b,EAASrD,YAAauc,EAAOtxB,OAAQuwF,EAAQ7+C,SAAU++C,GACrFn/D,EAAOtxB,OAAO3Y,SAAoD,kBAAlC+wB,EAASqsC,qBACzCnzB,EAAOtxB,OAAO6gF,iBAAgB,WACtB6P,GAAeA,EAAY7wG,SACtB,eAAkBgyB,EAAK4C,cAAck8E,iBAItCxuC,EAAKzY,WAAa,IAAMgnD,EAAY,GAAG3oD,YAHvCoa,EAAKv+D,YAAY8sG,EAAY,QASrCA,GAAeA,EAAY7wG,SAKvBowG,EAJC,eAAkBp+E,EAAK4C,cAAck8E,iBAIrBD,EAAY,GAAG3oD,YAHf2oD,IASrC,MAAO,UAGXp/D,EAASpyC,KACJgB,EAAI,EAAGA,EAAI2xB,EAAKoB,WAAWpiB,SAASkS,EAAEjS,WAAY,KAAK8Q,QAAQ/hB,OAAQK,IAAK,CACjF,IAAI8+F,EAAU3tD,EAAQnxC,GACtB,GAAgB,UAAZ8+F,EACA,MAGZ,GAAK,eAAkBntE,EAAK4C,cAAck8E,iBAuBlC9+E,EAAK4C,cAAcC,kBACnBytC,EAAK,GAAK+tC,GAAahxG,KAAK8gB,OAAO5V,SAASi8D,EAAKzlD,OAAO+K,YAAc,KAAOzsB,KAAK8gB,OAAO5V,SAAS8R,IAC7F+zF,EAAiB,MAAQA,EAAiB,IAG/C9tC,EAAK,GAAK+tC,GAAahxG,KAAK8gB,OAAO5V,SAASi8D,EAAKzlD,OAAO+K,YAAc,KAAOzsB,KAAK8gB,OAAO5V,SAAS8R,GAC9F,MAAQM,EAAKyC,MAAQ,KAAOzC,EAAKyC,MAAQ,EAAI/f,KAAK+uG,UAAU/0D,YAAY,QAAUh6C,KAAK+uG,UAAU/0D,YAAY,WAC1G+2D,EAAiB,MAAQA,EAAiB,QA9BG,CACxD,IAAIhJ,EAAkB/nG,KAAK8gB,OAAO3Y,SAA2D,kBAAxCwqB,EAAK4C,cAA6B,gBACnF8rE,EAAerhG,KAAK8gB,OAAOwgF,eAAiBthG,KAAK8gB,OAAOwgF,cAAcC,eACtEvhG,KAAK8gB,OAAOwgF,cAAcC,cAAcp5F,QAC5C,GAAI4/F,GAAmB1G,EAAc,CACjC,IAAIkQ,EAAS5+E,EAAKvvB,QAAQkI,GAAK,kBAC/B,gBAAiBqnB,EAAK4C,cAAck8E,gBAApC,CAAqDn0F,EAAMtd,KAAK8gB,OAAQ,kBAAmBywF,EAAQ,KAAM,KAAMtuC,GAC/GjjE,KAAK8gB,OAAO6gF,uBAGZ7hF,EADK9f,KAAK8gB,OAAO+R,MACR,gBAAiBF,EAAK4C,cAAck8E,gBAApC,CAAqDn0F,EAAMtd,KAAK8gB,QAGhE,gBAAiB6R,EAAK4C,cAAck8E,gBAApC,CAAqDn0F,GAE7DyqF,GAAoB1G,IACrB,eAAep+B,EAAMnjD,GACjBixF,GAAkBA,EAAepwG,QAAUowG,EAAe,GAAGloD,aAC7Doa,EAAKv+D,YAAYqsG,EAAe,KAkB5C,OAHA9tC,EAAKt4D,aAAa,UAAWw8D,EAAK0qB,QAAQjgF,YAC1CqxD,EAAKt4D,aAAa,aAAcs4D,EAAKn4D,UAAY9K,KAAK+uG,UAAU/0D,YAAY,iBAC5EipB,EAAKt4D,aAAa,QAASs4D,EAAKpa,aACzBoa,GAEJ2tC,EA5HkC,CA6H3C,QAOEc,EAA+C,SAAU7uG,GAEzD,SAAS6uG,IACL,IAAIruG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAAEC,UAAW,mBACvDnB,EAmBX,OAvBA,EAAUquG,EAA+B7uG,GAiBzC6uG,EAA8BxxG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GAC7D,IAAI2lD,EAAOjjE,KAAKoD,QAAQo8F,YAGxB,OAFAv8B,EAAKn4D,UAAY,SACjBm4D,EAAKt4D,aAAa,UAAWw8D,EAAK0qB,QAAQjgF,YACnCqxD,GAEJyuC,EAxBuC,CAyBhD,QCnLE,EAAwC,WACxC,IAAIpyG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAAoC,SAAU8C,GAE9C,SAAS8uG,IACL,OAAkB,OAAX9uG,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAgC/D,OAlCA,EAAU2xG,EAAoB9uG,GAe9B8uG,EAAmBzxG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,EAAMyiF,EAAMiB,GAC9D,IAAI/9B,EAAOjjE,KAAKoD,QAAQo8F,YAgBxB,OAfAv8B,EAAKt4D,aAAa,iBAAkB2S,EAAKgW,OACzC2vC,EAAKt4D,aAAa,kBAAmB2S,EAAK/c,KAC1C0iE,EAAKt4D,aAAa,gBAAiBq2F,EAAW,OAAS,SACvD/9B,EAAKt4D,aAAa,WAAY,MAC1B3K,KAAK8gB,OAAO8wF,wBAA0B5xG,KAAK8gB,OAAO8wF,uBAAuBC,aACzE1qC,EAAKE,SAAW,OAASP,OACzB7D,EAAKz+D,UAAYw8F,EAAW,sCAAwC,0CAGpE/9B,EAAKz+D,UAAYw8F,EAAW,qBAAuB,uBACnD/9B,EAAKv+D,YAAY1E,KAAK8gB,OAAOvc,cAAc,IAAK,CAC5CC,UAAWw8F,EAAW,4CAA8C,4CACpEhyF,MAAO,CAAEyoE,KAAM,IAAK,MAASupB,EAAW,WAAa,iBAGtD/9B,GAEJ0uC,EAnC4B,CAoCrC,GCxDE,EAAwC,WACxC,IAAIryG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAmBxC+xG,EAA0C,SAAUjvG,GAEpD,SAASivG,IACL,IAAIzuG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAAEC,UAAW,uBACvDnB,EAeX,OAnBA,EAAUyuG,EAA0BjvG,GAcpCivG,EAAyB5xG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GACxD,IAAI2lD,EAAOjjE,KAAKoD,QAAQo8F,YAExB,OADAv8B,EAAKv+D,YAAY1E,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,8BAA+BsG,UAAW,MAClGm4D,GAEJ6uC,EApBkC,CAqB3C,QCxCE,EAAwC,WACxC,IAAIxyG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAmBxCgyG,EAAgD,SAAUlvG,GAE1D,SAASkvG,IACL,IAAI1uG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAAEC,UAAW,uBACvDnB,EAeX,OAnBA,EAAU0uG,EAAgClvG,GAc1CkvG,EAA+B7xG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GAC9D,IAAI2lD,EAAOjjE,KAAKoD,QAAQo8F,YAExB,OADAv8B,EAAKv+D,YAAY1E,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,iBACxDy+D,GAEJ8uC,EApBwC,CAqBjD,QCxCE,EAAwC,WACxC,IAAIzyG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAA0C,SAAU8C,GAEpD,SAASmvG,IACL,IAAI3uG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OAJAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAC7CC,UAAW,sBACXwK,MAAO,CAAE,gBAAiB,QAAS8zF,SAAU,QAE1Cz/F,EA6BX,OApCA,EAAU2uG,EAA0BnvG,GAiBpCmvG,EAAyB9xG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,EAAMypD,GAC9D,IAAI9D,EAAOjjE,KAAKoD,QAAQo8F,YAgBxB,OAfIz4B,IAAe,eAAkBA,EAAW,WAC5C9D,EAAKz+D,UAAY,GACjBy+D,EAAKz+D,UAAYuiE,EAAW,SAC5B9D,EAAKv+D,YAAY1E,KAAK8gB,OAAOvc,cAAc,IAAK,CAAEC,UAAW,6CAA8CwK,MAAO,CAC1GyoE,KAAM,IAAK,MAASz3E,KAAK+uG,UAAU/0D,YAAY,iBAIvDipB,EAAKv+D,YAAY1E,KAAK8gB,OAAOvc,cAAc,IAAK,CAAEC,UAAW,+CAAgDwK,MAAO,CAC5GyoE,KAAM,IAAK,MAASz3E,KAAK+uG,UAAU/0D,YAAY,iBAGvDmtB,EAAKv9C,YACLq5C,EAAK/9D,UAAU4G,IAAI,wBAAyB,YAEzCm3D,GAEJ+uC,EArCkC,CAsC3C,QC1DE,EAAwC,WACxC,IAAI1yG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAoBxC,EAAqC,SAAU8C,GAE/C,SAASovG,IACL,IAAI5uG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OAJAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAC7CC,UAAW,kCACXwK,MAAO,CAAE8zF,SAAU,KAAM7zF,KAAM,cAE5B5L,EA2BX,OAlCA,EAAU4uG,EAAqBpvG,GAiB/BovG,EAAoB/xG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GACnD,IAAI40F,EAAclyG,KAAKoD,QAAQo8F,YAS/B,GARA0S,EAAYxtG,YAAY1E,KAAK8gB,OAAOvc,cAAc,MAAO,CACrDC,UAAW,6DACXwK,MAAO,CAAE,cAAe,WAExBm4D,EAAKv9C,aACLsoF,EAAYhtG,UAAU4G,IAAI,yBAC1BomG,EAAYhtG,UAAU4G,IAAI,aAE1B9L,KAAK8gB,OAAOqhD,8BAAgCniE,KAAK8gB,OAAOmhD,4BAA6B,CACrFiwC,EAAYhtG,UAAU4G,IAAI,gBAC1B,IAAIxG,EAAwC,UAAhCtF,KAAK8gB,OAAOulF,gBAA8B,EAA+C,GAA3CrmG,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAC5F,eAA6BuxG,EAAa5sG,EAAOtF,KAAK8gB,OAAOrb,UAA2C,UAAhCzF,KAAK8gB,OAAOulF,gBAA8B,QAAU,QAEhI,OAAO6L,GAEJD,EAnC6B,CAoCtC,QCxDE,EAAwC,WACxC,IAAI3yG,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAqBxC,EAA2C,SAAU8C,GAErD,SAASsvG,IACL,IAAI9uG,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMD,QAAUC,EAAMyd,OAAOvc,cAAc,KAAM,CAAEC,UAAW,oBACvDnB,EAoBX,OAxBA,EAAU8uG,EAA2BtvG,GAcrCsvG,EAA0BjyG,UAAUyT,OAAS,SAAUwzD,EAAM7pD,GACzD,IAAI2lD,EAAOjjE,KAAKoD,QAAQo8F,YAExB,GADAv8B,EAAKv+D,YAAY,eAAc,MAAO,CAAEF,UAAW,iBAC/CxE,KAAK8gB,OAAOqhD,8BAAgCniE,KAAK8gB,OAAOmhD,4BAA6B,CACrFgB,EAAK/9D,UAAU4G,IAAI,gBACnB,IAAIxG,EAAwC,UAAhCtF,KAAK8gB,OAAOulF,gBAA8B,EAA+C,GAA3CrmG,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAC5F,eAA6BsiE,EAAM39D,EAAOtF,KAAK8gB,OAAOrb,UAA2C,UAAhCzF,KAAK8gB,OAAOulF,gBAA8B,QAAU,QAEzH,OAAOpjC,GAEJkvC,EAzBmC,CA0B5C,QCjBE,EAAwB,WAOxB,SAASC,EAAOtxF,EAAQuxF,GACpBryG,KAAKsyG,WAAY,EACjBtyG,KAAKuyG,QAAU,EACfvyG,KAAK8gB,OAASA,EACd9gB,KAAKqyG,QAAUA,EACfryG,KAAKsd,KAAO,IAAI,OAAKwD,EAAQuxF,GAC7BryG,KAAKwyG,KAAOH,EAAQ1R,WAAW,gBAC/B3gG,KAAKsoG,YAActoG,KAAKqyG,QAAQ1R,WAAW,eAC3C3gG,KAAKslB,SAAWtlB,KAAKqyG,QAAQ1R,WAAW,mBACxC3gG,KAAK+oB,mBAguBT,OAztBAqpF,EAAOlyG,UAAUyT,OAAS,WACtB,IAAIgf,EAAO3yB,KAAK8gB,OAChB9gB,KAAKyyG,eAAiBzyG,KAAKslB,SAASotF,YAAY,OAAW7H,QAC3D7qG,KAAK2yG,gBAAkB3yG,KAAKslB,SAASotF,YAAY,OAAWE,SAC5D5yG,KAAKyyG,eAAe9J,cACpB3oG,KAAK2yG,gBAAgBhK,cACjBh2E,EAAKS,aAAazyB,SAClBX,KAAK6yG,kBAAmB,EACxB7yG,KAAKyyG,eAAezJ,cACpBhpG,KAAK2yG,gBAAgB3J,cACrBhpG,KAAK8yG,UAAS,IAElB9yG,KAAK8gB,OAAOuuE,aAAa5wB,WACzBz+D,KAAK8gB,OAAOuuE,aAAa3vB,YACE,SAAvB1/D,KAAK8gB,OAAOzb,QACZrF,KAAK8gB,OAAOuuE,aAAa9uB,aAE7BvgE,KAAKmf,sBAQTizF,EAAOlyG,UAAUoV,QAAU,SAAUnI,GACjC,IAAI9J,EAAQrD,UACF,IAANmN,IAAgBA,EAAI,CAAEssB,YAAa,YACvC,IAAI9G,EAAO3yB,KAAK8gB,OAChB6R,EAAK2B,OAAOnnB,EAAEssB,YAAc,SAAUtsB,GACtCwlB,EAAK1qB,QAAQ,OAAoBkF,GAAG,SAAUknB,GAE1C,QADa,IAATA,IAAmBA,EAAO,CAAEoF,YAAa,YACzCpF,EAAK5lB,OAAT,CAEI,GADAkkB,EAAK2B,OAAO,OAAoBD,GACZ,gBAAhBA,EAAK0I,QAAiE,SAArC15B,EAAMyd,OAAOwX,eAAe9pB,KAAiB,CAC9EnL,EAAMyd,OAAOwX,eAAe5V,QAAQrf,EAAMyd,OAAOiyF,aAAaC,gBAAkB3vG,EAAMyd,OAAOiyF,aAAaE,iBAC1G,IAAIC,EAAY7vG,EAAMyd,OAAOq6C,gBAAkB93D,EAAMyd,OAAOiyF,aAAa,UAAU53C,eAAiB,gBAAkB,iBAClH/kC,EAAM/yB,EAAMyd,OAAO1d,QAAQ8I,cAAc,kBAAoB7I,EAAMyd,OAAOiyF,aAAa,UAAUl6E,IAAM,MAAM6c,cAC7Gy9D,EAAS/8E,EAAIlqB,cAAcgnG,GAC1B,eAAkB7vG,EAAMyd,OAAOiyF,aAAaE,mBAC7CE,EAAOjuG,UAAU4G,IAAI,cAM7B,GAHoB,iBAAhBuoB,EAAK0I,QAAmE,aAArC15B,EAAMyd,OAAOwX,eAAe9pB,MAA4D,UAArCnL,EAAMyd,OAAOwX,eAAe9pB,OAClHnL,EAAMyd,OAAOwX,eAAe5V,QAAUrf,EAAMyd,OAAOiyF,aAAaK,0BAE3C,aAArB/+E,EAAKoF,YAA4B,CAEjC,IAAIhtB,EAAQkmB,EAAK4C,cAAc7S,QAAQ1e,QAAQqwB,EAAKwB,YACpD,IAAe,IAAXppB,EAAc,CACdkmB,EAAK1nB,cAAc,CAAEsqB,cAAe,CAAE89E,QAAS1gF,EAAK4C,cAAc7S,QAAQhW,OAAOD,EAAO,MAAQ,GAChGkmB,EAAK1nB,cAAc,CAAEirB,aAAc,CAAEm9E,QAAS1gF,EAAKuD,aAAaxT,QAAQhW,OAAOD,EAAO,MAAQ,GAC9F,IAAIiV,EAASiR,EAAK+C,iBAAiBrB,EAAKwB,YACpCy9E,EAAa3gF,EAAK4gF,uBAAuB7xF,EAAO4R,OACpD5R,EAAO/K,SAAY,eAAkB28F,KAAgBA,EAAWpuG,UAAUmB,SAAS,gBAtB/F,CAmCA,GARIssB,EAAK6gF,iBAAmC,gBAAhBn/E,EAAK0I,QAA4C,iBAAhB1I,EAAK0I,QACxC,cAArB1I,EAAKoF,aAAqD,KAAtBpF,EAAKo/E,cAAwC,QAAhBp/E,EAAK0I,UACvEpK,EAAKmgB,gBAAgB,uBAAwB,GAE7CngB,EAAK4B,aAAe5B,EAAK+B,aAAag/E,WAAa/gF,EAAKqC,YAAYC,SAASC,WAC5D,QAAhBb,EAAK0I,QAAyC,SAArB1I,EAAKoF,aAA2B9G,EAAKqC,YAAYC,SAAS0+E,UACpFhhF,EAAK1nB,cAAc,CAAEypB,aAAc,CAAEG,SAAUlC,EAAK+B,aAAaG,SAAW,KAAO,GAE9D,WAArBR,EAAKoF,aAA4B9G,EAAK4B,YAAa,CACnD,IAAIq/E,EAAav/E,EAAK/W,KAAK3c,OACvBof,EAAQ4S,EAAK+B,aAAam/E,kBAAoBD,EAC9C17F,EAAkBya,EAAKmhF,wBAAwBnzG,UAE5CuX,EAAkB07F,IAAe7zF,IAAW4S,EAAK+B,aAAaC,YAAc,GAAKhC,EAAK+B,aAAaG,WAAc9U,GAAWA,GAASA,GAAS6zF,KACjJjhF,EAAKohF,gBAAiB,EACtBphF,EAAK1nB,cAAc,CACfypB,aAAc,CACVm/E,kBAAmB9zF,EAAO4U,YAAaxrB,KAAKgkC,KAAKptB,EAAQ4S,EAAK+B,aAAaG,aAEhF,GACHlC,EAAKqC,YAAYC,SAAS4+E,kBAAoB9zF,GAG7B,YAArBsU,EAAKoF,aAA6Bp2B,EAAMyd,OAAO1B,YAAc,WAAY/b,EAAMyd,OAAO1B,aAG3D,WAArBiV,EAAKoF,aAAiD,gBAArBpF,EAAKoF,aAAsD,YAArBpF,EAAKoF,cAC/Ep2B,EAAMyd,OAAOyU,cAAcC,mBAAqBnyB,EAAMyd,OAAOyU,cAAc7S,QAAQ/hB,SAClF0C,EAAMyd,OAAO0T,qBAAuBnxB,EAAMyd,OAAOkzF,eACjD3wG,EAAMyd,OAAOmzF,eAAeC,gBAAgB7wG,EAAMyd,OAAO4T,aAAaC,aAL1EtxB,EAAMsvG,gBAAgBwB,mBAAmB9/E,GASzChxB,EAAM8b,mBAAmBkV,QAQrC+9E,EAAOlyG,UAAUk0G,eAAiB,WAC9B,IAAIzhF,EAAO3yB,KAAK8gB,OACZuzF,EAAc1hF,EAAKS,aACvB,GAAIT,EAAK8yC,eAAgB,CACrB,IAAI6uC,EAAmB3hF,EAAKvvB,QAAQkI,GAAK,iBACzC,OAAgB,GAAKgpG,GAAoB,GACzC,gBAAoBA,EAAkB,kBAEtC3hF,EAAK4C,cAAck8E,iBACnB,gBAAoB9+E,EAAKvvB,QAAQkI,GAAK,kBAAmB,mBAEzDqnB,EAAK4sE,aACL,gBAAoB5sE,EAAKvvB,QAAQkI,GAAK,cAAe,eAErDqnB,EAAK4hF,iBACL,gBAAoB5hF,EAAKvvB,QAAQkI,GAAK,kBAAmB,mBAEzDqnB,EAAK+B,aAAa/H,UAClB,gBAAoBgG,EAAKvvB,QAAQkI,GAAK,YAAa,gBAEvD,IAAK,IAAItK,EAAI,EAAGA,EAAIqzG,EAAY1zG,OAAQK,IAChCqzG,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAK+a,WACxC,OAAgBgG,EAAKvvB,QAAQkI,GAAK+oG,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAKinB,KAAO,GACjF,gBAAoBlG,EAAKvvB,QAAQkI,GAAK+oG,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAKinB,IAAK,aAEnFw7E,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAK4qD,gBACxC,gBAAoB7pC,EAAKvvB,QAAQkI,GAAK+oG,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAKinB,IAAM,iBAAkB,kBAEtGw7E,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAKgrD,gBACxC,gBAAoBjqC,EAAKvvB,QAAQkI,GAAK+oG,EAAY1iG,SAAS3Q,EAAE4Q,WAAY,KAAKinB,IAAM,iBAAkB,kBAI9G,IADA,IAAI27E,EAAO,OACFhxF,EAAI,EAAGA,EAAImP,EAAKoB,WAAWpzB,OAAQ6iB,IACxC,IAAK,IAAIK,EAAI,EAAGA,EAAI8O,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/hB,OAAQkjB,IAAK,CACjF,GAAI8O,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAKyzD,eAAgB,CAChG,IAAIksC,EAAS5+E,EAAKvvB,QAAQkI,GAAKqnB,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAK,GAAK4iG,GAAQ,iBAC5H,gBAAoBjD,EAAQ,kBAEhC,GAAI5+E,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAK0zD,oBAAqB,CACjGisC,EAAS5+E,EAAKvvB,QAAQkI,GAAKqnB,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAK,GAAK4iG,GAAQ,sBAC5H,gBAAoBjD,EAAQ,uBAEhC,GAAI5+E,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAK2zD,qBAAsB,CAClGgsC,EAAS5+E,EAAKvvB,QAAQkI,GAAKqnB,EAAKoB,WAAWpiB,SAAS6R,EAAE5R,WAAY,KAAK8Q,QAAQ/Q,SAASkS,EAAEjS,WAAY,KAAK,GAAK4iG,GAAQ,uBAC5H,gBAAoBjD,EAAQ,2BAK5Ca,EAAOlyG,UAAUu0G,gBAAkB,SAAUtnG,GACzCnN,KAAK8gB,OAAO7Y,QAAQ,OAAuBkF,IAQ/CilG,EAAOlyG,UAAUif,mBAAqB,SAAUkV,GAC5C,IAAIhxB,EAAQrD,UACC,IAATq0B,IAAmBA,EAAO,IAC9B,IAaI9U,EAbAoT,EAAO3yB,KAAK8gB,OACZ4zF,EAAmD,YAAxC/hF,EAAKytC,iBAAiBC,eAAoD,kBAArBhsC,EAAKoF,aAC7C,mBAArBpF,EAAKoF,cAA4D,kBAArBpF,EAAKoF,aAAwD,mBAArBpF,EAAKoF,cACzF9G,EAAKgiF,qBACa,kBAArBtgF,EAAKoF,aAAoCpF,EAAKugF,mBAAsBF,GACpE10G,KAAK8gB,OAAO47E,cAEZgY,GACA/hF,EAAKkiF,YAAiC,kBAArBxgF,EAAKoF,YAAkCpF,EAAKygF,YAAYC,aAAa5yF,KAC3D,mBAArBkS,EAAKoF,YAAmCpF,EAAKiC,eAAY/qB,GAEnEvL,KAAK8gB,OAAOwT,OAAO,QAA4BD,GAC/Cr0B,KAAKsyG,WAAY,EAEjB,IAAI0C,EAAWh1G,KAAKi1G,sBAEpB,GADAj1G,KAAKsoG,YAAYn/B,QAAQnpE,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,IAAM,SAAmB,GACrF8oG,EAAU,CACV,IAAIE,EAAW,IAAI,OACnB31F,EAAcvf,KAAKm1G,SAASD,EAAU7gF,GAqB1C,GAnBK9U,EASDA,EAAcA,EAAYK,MAAK,SAAUzS,GACrC,IAAImS,EAAQjc,EAAMia,KAAKoC,gBAAgBC,gBACvC,GAAItc,EAAMivG,UAAW,CACjB,IAAIz4E,EAAM,IAAI,OAEd,OADAA,EAAIc,QAAQ,CAAE7a,OAAQ,GAAIC,MAAO,IAC1B8Z,EAAIE,QAEf,OAAO12B,EAAMia,KAAKmC,QAAQ4U,EAAM/U,OAfhCqT,EAAK4B,cAAgB5B,EAAKqJ,gBAAgBzc,YAAYH,WAAWgW,SAAWzC,EAAK+B,cAC9E/B,EAAK+B,aAAag/E,WAAa/gF,EAAKqC,aAAerC,EAAKqC,YAAYC,UAAYtC,EAAKqC,YAAYC,SAASC,YAC7GvC,EAAKqC,YAAYC,SAASC,eAAY3pB,GAE1CgU,EAAcvf,KAAKsd,KAAKmC,QAAQ4U,EAAMr0B,KAAKsd,KAAKoC,gBAAgBC,kBAchE3f,KAAK8gB,OAAOwW,uBAAuB32B,UAAYq0G,GAAYh1G,KAAK8gB,OAAOmW,eAAe12B,IAAII,QAAS,CACnG,IAAIy0G,EAAa,IAAI,OACrB71F,EAAcA,EAAYK,MAAK,SAAUzS,GAErC,OADA9J,EAAMyd,OAAOwT,OAAO,QAA0B,CAAE/U,YAAaA,EAAaO,OAAQ3S,EAAG4sB,QAASq7E,EAAYr4E,OAAQ1I,IAC3G+gF,EAAWr7E,WAGtB/5B,KAAK8gB,OAAOyU,cAAcsH,2BAA6B78B,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,SACzF4e,EAAcA,EAAYK,MAAK,SAAUzS,GAAK,OAAO9J,EAAMgyG,qBAAqBloG,OAEpFoS,EAAYK,MAAK,SAAUzS,GAAK,OAAO9J,EAAMwc,mBAAmB1S,EAAGknB,MAC9DuG,OAAM,SAAUztB,GAAK,OAAO9J,EAAMiyG,mBAAmBnoG,EAAGknB,OAEjE+9E,EAAOlyG,UAAUi1G,SAAW,SAAUI,EAAUlhF,GAE5C,OADAr0B,KAAK8gB,OAAOwT,OAAO,QAA0B,CAAEkhF,WAAW,EAAMz7E,QAASw7E,EAAUx4E,OAAQ1I,IACpFkhF,EAASx7E,SAEpBq4E,EAAOlyG,UAAU+0G,oBAAsB,WACnC,IAAItiF,EAAO3yB,KAAK8gB,OAChB,SAAW6R,EAAK0F,gBAAkB1F,EAAK2F,eAAe5V,QAAQ/hB,QACzDgyB,EAAKsE,eAAe12B,IAAU,SAAMP,KAAKy1G,WAAWz1G,KAAK8gB,OAAOwW,yBAEzE86E,EAAOlyG,UAAUu1G,WAAa,SAAU/yF,GACpC,IAAIrf,EAAQrD,KACZ,OAAO0iB,EAAQ6U,MAAK,SAAUnB,GAC1B,IAAIs/E,GAAQ,EAIZ,OAHAA,EAAQryG,EAAMyd,OAAOwX,eAAe5V,QAAQ6U,MAAK,SAAUva,GACvD,OAAOoZ,EAAIyC,MAAQ7b,EAAM6b,UAEnB68E,IAASryG,EAAMyd,OAAOmW,eAAe12B,IAAII,YAG3DyxG,EAAOlyG,UAAUy1G,gBAAkB,SAAUthF,GACzC,IAAIhxB,EAAQrD,KACZq0B,EAAKoF,YAAc,YACnB,IAAI9G,EAAO3yB,KAAK8gB,OAChB,GAAI6R,EAAK4B,aAAe5B,EAAK+B,aAAag/E,WAAa/gF,EAAKqC,YAAYC,SAASC,WAAavC,EAAKqC,YAAYC,SAAS0+E,SAAU,CAC9H,IAAIC,EAAav/E,EAAK,WAAW8F,aAAax5B,OAC1CizG,GACAjhF,EAAK1nB,cAAc,CAAEypB,aAAc,CAAEG,SAAUlC,EAAK+B,aAAaG,SAAW++E,KAAgB,GAGhGjhF,EAAK4B,cAAgBF,EAAK6F,QAAQC,aAAax5B,QAC/C0zB,EAAK6F,QAAQE,eAAez5B,QAC5B0zB,EAAK6F,QAAQG,eAAe15B,SAAWgyB,EAAK+B,cACzC/B,EAAK+B,aAAag/E,WAAa/gF,EAAKqC,aAAerC,EAAKqC,YAAYC,WACnEtC,EAAKqJ,gBAAgBzc,YAAYH,WAAWgW,SAAWzC,EAAKqC,YAAYC,SAASC,YACrFvC,EAAKqC,YAAYC,SAASC,eAAY3pB,GAE1C,IAAIwuB,EAAU/5B,KAAKsd,KAAKgd,YAAYjG,EAAK6F,QAASl6B,KAAK8gB,OAAO8Y,0BAA0B,GAAIvF,EAAKqH,UAC7Fpc,EAAQtf,KAAKsd,KAAKoC,gBAAgBC,gBAClC3f,KAAKsd,KAAKiC,YAAYH,WAAWgW,QACjCp1B,KAAKmf,mBAAmB,CAAEsa,YAAa,cAKvCM,EAAQna,MAAK,SAAUzS,GACnB9J,EAAMia,KAAKmC,QAAQ4U,EAAM/U,GACpBM,MAAK,SAAUzS,GAAK,OAAO9J,EAAMuyG,UAAUzoG,EAAGknB,MAC9CuG,OAAM,SAAUztB,GAAK,OAAO9J,EAAMwyG,UAAU1oG,EAAGknB,SAEnDuG,OAAM,SAAUztB,GAAK,OAAO9J,EAAMwyG,UAAU1oG,EAAGknB,OAG5D+9E,EAAOlyG,UAAU01G,UAAY,SAAUzoG,EAAGknB,GACtCr0B,KAAK6f,mBAAmB1S,EAAGknB,IAE/B+9E,EAAOlyG,UAAU21G,UAAY,SAAU1oG,EAAGknB,GACtCr0B,KAAKs1G,mBAAmBnoG,EAAGknB,IAQ/B+9E,EAAOlyG,UAAU41G,eAAiB,WAC9B91G,KAAK8yG,UAAS,IAElBV,EAAOlyG,UAAU4yG,SAAW,SAAUiD,GAClC,IAAIpjF,EAAO3yB,KAAK8gB,OACZk3C,EAAQh4D,KAAK2yG,gBAAgBnJ,WAAWt9F,cAAc,QACrD,eAAkB8rD,IACnB,gBAAOA,GAEXA,EAAQh4D,KAAK8gB,OAAOvc,cAAc,OAAgB,CAAEyK,MAAO,CAAEC,KAAM,cACnE,IAAI+mG,EAAYrjF,EAAK+zC,qBAAuB,eAAkB/zC,EAAKsjF,gBAAgBC,UAAY,EAAI,GAC/FvjF,EAAK8yC,gBAAkB9yC,EAAK+yC,cAC1BswC,EAEN,IACI9U,EADAtB,EAAK5/F,KAAK8gB,OAAOvc,cAAc,KAAM,CAAEC,UAAW,aAAcwK,MAAO,CAAEC,KAAM,SAEnF,GAAI0jB,EAAKwjF,oBAAqB,CAC1B,IAAIC,EAAwBzjF,EAAKvvB,QAAQkI,GAAK,sBAC9C41F,EAAKlhG,KAAK8gB,OAAOvc,cAAc,KAAM,CAAEyK,MAAO,CAAE6zF,SAAUlwE,EAAKu+E,oBAAoBvwG,OAASq1G,EAAYrjF,EAAK4C,cAAc7S,QAAQ/hB,QAAQiR,cACvI+gB,EAAKE,MACLquE,EAAGx8F,YAAYiuB,EAAK0jF,wBAAL1jF,CAA8BA,EAAKvT,WAAYuT,EAAM,sBAAuByjF,OAAuB7qG,OAAWA,OAAWA,EAAWvL,KAAK8gB,OAAO,SAAS,IAGxKogF,EAAGx8F,YAAYiuB,EAAK0jF,wBAAL1jF,CAA8BA,EAAKvT,WAAYuT,EAAM,sBAAuByjF,OAAuB7qG,OAAWA,OAAWA,EAAWvL,KAAK8gB,OAAO,SAAS,IAExK6R,EAAKxqB,SACLnI,KAAK8gB,OAAO6gF,uBAIhBT,EAAKlhG,KAAK8gB,OAAOvc,cAAc,KAAM,CACjCuG,UAAW9K,KAAKwyG,KAAKx4D,YAAY,eACjChrC,MAAO,CAAE6zF,SAAUlwE,EAAKu+E,oBAAoBvwG,OAASq1G,EAAYrjF,EAAK4C,cAAc7S,QAAQ/hB,QAAQiR,cAGxG+gB,EAAKmtC,iBACLohC,EAAGh8F,UAAU4G,IAAI,gBACjBo1F,EAAGn6F,MAAM/B,KAAO,OAEhB2tB,EAAKqtC,YAAcrtC,EAAKvvB,QAAQ8I,cAAc,wBAC9ClM,KAAK8gB,OAAO1d,QAAQ8I,cAAc,uBAAuBhH,UAAU4G,IAAI,qBAE3E8zF,EAAGl7F,YAAYw8F,GACflpC,EAAMtzD,YAAYk7F,GAClB5/F,KAAK2yG,gBAAgB2D,YAAYt+C,GAC7B+9C,IACA/1G,KAAK8gB,OAAO7Y,QAAQ,QAAkB,IACtCjI,KAAK8gB,OAAOwT,OAAO,QAAgB,CAAE1R,KAAM,CAAC,IAAI,OAAI,CAAE09E,WAAW,EAAMr5B,MAAO,CAAC,IAAI,OAAK,CAAEG,YAAY,EAAMzwD,SAAS,YAG7Hy7F,EAAOlyG,UAAUq2G,oBAAsB,WAC/Bv2G,KAAK8gB,OAAOgzF,wBAAwBnzG,QACpCX,KAAKw2G,iBAAiBx2G,KAAK8gB,OAAOgzF,wBAAwB,KAGlE1B,EAAOlyG,UAAUs2G,iBAAmB,SAAUC,GAO1C,IANA,IACIz5F,EADA0F,EAAU1iB,KAAK8gB,OAAOsS,aAEtBsjF,EAAU,eACVC,EAAU,UACVr5F,EAAOm5F,GAAUA,EAAOxjD,MAAQwjD,EAAOxjD,MAAM,GAAKwjD,EAClDG,EAAO52G,KAAKqyG,QAAQ1R,WAAW,kBAC1B3/F,EAAI,EAAG+X,EAAM2J,EAAQ/hB,OAAQK,EAAI+X,EAAK/X,IAAK,CAChDgc,EAAQ,eAAU0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAAS,GAAIhW,GAC9D,eAAkBoF,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK8kG,MAC5Dh0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,OAAS9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK8kG,IAErF,eAAkBh0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKilG,kBACnD,eAAkBn0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKilG,gBAAgB,GAAKF,MAC/Ej0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKilG,gBAAgB,GAAKF,GAAS,GAAK32G,KAAK8gB,OAAO1d,QAAQkI,GAAKoX,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKilG,gBAAgB,GAAKF,GAAS,IAElKj0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8kB,mBAAqBhU,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwnB,aAC7Fpc,EAAQ,eAAU0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4lB,iBAAmB,GAAI9U,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwnB,WAAW,KAE3H,eAAkBpc,GAQnB0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAOkU,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAAQ,MAPvFxO,KAAK82G,cAAe,EACfp0F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,OACrCkU,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAOwO,EAAM+d,OAAU/d,EAAMge,WAAa,GAAKhe,EAAMie,aAAe,GACpGje,EAAMke,aAAe,GAAKle,EAAMme,kBAAoB,EAAI,WAAa,cAAiB,IAMlG,IAAI2gC,EAAiB,IAAI,OACrBp5C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,SAAW9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,OAAOzW,UACtF2I,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,OAAOA,QACkB,kBAAtD9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,OAAOA,UACtD9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKmqD,aAAaD,EAAeE,kBAAkB,eAAO,GAAIt5C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,UACjI9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKqqD,UAAUH,EAAeI,kBAAkBx5C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,UAE3D,kBAAhD9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAW,OAClD,gBAAa5R,KAAKqyG,QAAS3vF,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MAEpD8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,QAAuD,WAA7C9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MACxFkU,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKqqD,UAAU26C,EAAK16C,kBAAkB,CAAE1rC,OAAQ,QAElC,aAA7C9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAAwBkU,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,SAChG9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,OAAS,MAC7C,gBAAaxwB,KAAKqyG,QAAS3vF,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,SAWtEwgG,EAAOlyG,UAAU2f,mBAAqB,SAAU1S,EAAGknB,GAC/C,IAAIhxB,EAAQrD,KACR2yB,EAAO3yB,KAAK8gB,OAChB9gB,KAAK2yG,gBAAkB3yG,KAAKslB,SAASotF,YAAY,OAAWE,SAC5D5yG,KAAKyyG,eAAiBzyG,KAAKslB,SAASotF,YAAY,OAAW7H,QAC3D19F,EAAE4pG,WAAa1iF,EACf,IAAI2iF,EAAmBh3G,KAAK8gB,OAAO2T,0BAA4Bz0B,KAAK8gB,OAAO8wF,uBAAuBC,cAC7Fl/E,EAAK4C,cAAcC,oBAA2C,WAArBnB,EAAKoF,aAAkD,SAArBpF,EAAKoF,aAChC,QAAjDz5B,KAAK8gB,OAAOgU,qBAAqB2E,eAA2B9G,EAAKuD,aAAaxT,QAAQ/hB,QACtFgyB,EAAK2F,eAAe5V,QAAQ/hB,QAAUX,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAUgyB,EAAKsE,eAAe12B,MAE1GoyB,EAAK1qB,QAAQ,OAAwBkF,GAAG,SAAUyvB,GAC9C,IAAIA,EAASnuB,OAAb,CAGAmuB,EAAS9c,OAAS,eAAkB8c,EAAS9c,QAAU,GAAK8c,EAAS9c,OACrE,IAAI/G,EAAMtZ,OAAO2V,KAAKwnB,EAAS9c,QAAQnf,OACvC,IAAI0C,EAAMyd,OAAOkI,YAGjB,GAAM2J,EAAKS,aAAazyB,QAAWoY,GAAU4Z,EAAKjQ,QAAQ/hB,QAAUgyB,EAAKjQ,QAAQ,aAAc,OAI/F,IAAIrf,EAAM4zG,cAAc5iF,IAAUtb,EAAlC,CAgBA,GAZA1V,EAAMyd,OAAOshD,QAAS,EACtB/+D,EAAMyd,OAAOwT,OAAO,QAAkB,IACtCjxB,EAAMyd,OAAOwT,OAAO,QAAuB,IACvCD,GAA6B,mBAArBA,EAAKoF,aACbp2B,EAAMyd,OAAOwT,OAAO,QAA6B,CAAE9lB,KAAM,yBAE7DnL,EAAMsvG,gBAAgBuE,gBAAkB7zG,EAAMyd,OAAO5I,gBAAgBxK,QACrEilB,EAAKza,gBAAkB0kB,EAAS9c,OAChC6S,EAAK2B,OAAO,QAAuC,CAAED,KAAMA,EAAM/W,KAAMsf,EAAS9c,SAC5E8c,EAAS7c,QAAU4S,EAAK4B,cAAgB5B,EAAK6B,sBAAwB7B,EAAK8B,2BAC1E9B,EAAKwkF,sBAAwBv6E,EAAS7c,QAErChH,GAAO6jB,EAAS7c,OAAS4S,EAAK4B,aAAeF,GAA6B,WAArBA,EAAKoF,YAW3D,OAVIp2B,EAAMyd,OAAOyU,cAAcC,mBACF,aAArBnB,EAAKoF,aAAmD,eAArBpF,EAAKoF,aAC5Cp2B,EAAMyd,OAAOwT,OAAO,QAAsBD,GAE9C1B,EAAKohF,gBAAiB,EACtBphF,EAAK+B,aAAam/E,kBAAoBj3E,EAAS7c,MACtB,WAArBsU,EAAKoF,cACL9G,EAAK+B,aAAaC,YAAcxrB,KAAKgkC,KAAKvQ,EAAS7c,MAAQ4S,EAAK+B,aAAaG,gBAEjFlC,EAAK5qB,WA+BT,IA5BM4qB,EAAKS,aAAazyB,SAAUoY,IAAQ1V,EAAMwvG,kBAAsB,gBAAgBlgF,KAClFA,EAAKykF,gBACL/zG,EAAMg0G,uBAAuBz6E,KAE5Bv5B,EAAMyzG,cAAgBnkF,EAAKmhF,0BACxBzwG,EAAMia,KAAKiC,YAAYH,WAAWgW,SAAWzC,EAAKvT,YAAcuT,EAAKvT,WAAWze,OAChF0C,EAAMmzG,iBAAiB7jF,EAAKvT,WAAW,IAGvC/b,EAAMmzG,iBAAiB7jF,EAAKmhF,wBAAwB,KAGvDzwG,EAAMyd,OAAOq/C,gBAAiB98D,EAAMyd,OAAOyU,cAAcsH,2BACzDx5B,EAAMyd,OAAOyU,cAAc7S,QAAQ/hB,SACpCi8B,EAAS9c,OAASzc,EAAMyd,OAAO1B,sBAAsBxf,MAAQyD,EAAMyd,OAAO1B,WAAa/b,EAAMyd,OAAO5I,kBAEnG7U,EAAMyd,OAAO3Y,UAAW9E,EAAMyd,OAAO+R,OAAW,eAAkBwB,IAA8B,mBAArBA,EAAKoF,aAAqCpF,EAAKquC,UAC3H,eAAuBr/D,EAAMyd,OAAQ,CAAC,mBAEtCzd,EAAMyd,OAAOzB,WAAahc,EAAMyd,OAAOwU,eAAiBjyB,EAAMyd,OAAOyU,cAAck8E,kBAC7E,eAAkBp9E,IAA8B,mBAArBA,EAAKoF,cACtCp2B,EAAMyd,OAAOw2F,gBAAgB,CAAC,kCAElCj0G,EAAMyd,OAAOwT,OAAO,QAAkB,eAAO,CAAEvU,MAAO6c,EAAS7c,MAAOD,OAAQ8c,EAAS9c,OAAQiU,WAAY6I,EAAS7I,YAAcM,KAC7H1B,EAAK4C,cAAc7S,QAAQ/hB,QAAW0zB,GAA6B,eAArBA,EAAKoF,cAChDpF,GAA6B,cAArBA,EAAKoF,aACjBp2B,EAAMovG,eAAezF,YAErBj0F,EAAK,CACL,GAAI,gBAAgB4Z,GAAO,CACvB,IAAI9nB,EAAU,UACdwpB,EAAKpjB,UAAY,CAAElM,IAAK1B,EAAMsvG,gBAAgB,GAAK9nG,GAASoG,WAE3D+lG,EASD3zG,EAAMyd,OAAOwT,OAAO,QAA4B,CAAEnnB,EAAGknB,EAAMvU,OAAQ3S,EAAE2S,OAAQC,MAAO5S,EAAE4S,MAAOw3F,IAAKpqG,EAAE4mB,aARhG1wB,EAAMyd,OAAO4kF,oBACbriG,EAAMsvG,gBAAgB6E,uBAAuBnjF,GAG7ChxB,EAAMsvG,gBAAgBwB,mBAAmB9/E,OAOhD,CACD,GAAIA,GAAQA,EAAKugF,kBACb,OAEJ,IAAKjiF,EAAKS,aAAazyB,OAGnB,OAFAgyB,EAAKvvB,QAAQ0H,UAAY,QACzB2sG,MAAMp0G,EAAMmvG,KAAKx4D,YAAY,yBAWjC,GARA32C,EAAMsvG,gBAAgB+E,eAAe,IACrCr0G,EAAMsvG,gBAAgBgF,cAAc,IACpCt0G,EAAMilG,YAAYn/B,QAAQ9lE,EAAMyd,OAAO8+C,aAAa1zD,cAAc,IAAM,SAAmB,GAC3FymB,EAAKykF,gBACL/zG,EAAMyyG,iBACFnjF,EAAKktC,6BAA+B9mD,GACpC1V,EAAMyd,OAAOwT,OAAO,QAAqB,CAAE1R,KAAM+P,EAAKsvE,gBAAiB5tE,KAAM,KAE7EA,EAAM,CACN,IAAI0I,GAAU1I,EAAKoF,aAAe,IAAIlX,cAAgB,YACtDlf,EAAMyd,OAAOwT,OAAOyI,EAAQ1I,GACH,cAArBA,EAAKoF,cACLpF,EAAK5lB,QAAS,EACd4lB,EAAKzR,KAAO,GACZyR,EAAKquC,UAAYruC,EAAKquC,SACtBr/D,EAAMyd,OAAO7Y,QAAQ,OAAuBosB,IAGhDhxB,EAAMyd,OAAOy6C,SACbl4D,EAAMyd,OAAO82F,uBAEjBv0G,EAAMyd,OAAO+7E,cAEjBx5F,EAAMyd,OAAOwT,OAAO,QAAuB,IAC3CjxB,EAAMw0G,YAAYx0G,EAAMyd,OAAOgzF,wBAAwBnzG,QACnD,UAAWwM,IACX9J,EAAMyd,OAAOkb,gBAAgBpJ,wBAAyB,QA5GtDvvB,EAAMyd,OAAOwT,OAAO,QAA4B,CAAEnnB,EAAGknB,EAAMvU,OAAQ3S,EAAE2S,OAAQC,MAAO5S,EAAE4S,MAAOw3F,IAAKpqG,EAAE4mB,kBAJpGpB,EAAKkqE,mBA2HjBuV,EAAOlyG,UAAUo1G,mBAAqB,SAAUnoG,EAAGknB,GAC1C,eAAkBr0B,KAAK8gB,OAAOmzF,iBAC/Bj0G,KAAKsoG,YAAY1/B,WAAW5oE,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,IAAM,QAAmB,CAAEm9D,MAAM,EAAOC,SAAS,IACpHtpE,KAAK63G,YAAY,IAErB73G,KAAK8gB,OAAO7Y,QAAQ,OAAsB,CAAE6vG,MAAO3qG,IACnDnN,KAAK8gB,OAAO+7E,cACZ78F,KAAK8gB,OAAOs2F,gBACa,SAArB/iF,EAAKoF,aAA+C,WAArBpF,EAAKoF,aACnB,cAAdpF,EAAKrkB,OAGZhQ,KAAK8gB,OAAO5I,gBAAkB,GAC9BlY,KAAK81G,iBACA91G,KAAK8gB,OAAOq/C,eACbngE,KAAK8gB,OAAOi3F,YAAYC,4BAE5Bh4G,KAAK8gB,OAAO6U,IAAI,gBAAiB,CAAEmiF,MAAO3qG,MAE9CilG,EAAOlyG,UAAU23G,YAAc,SAAUI,GACrCj4G,KAAKsoG,YAAY1/B,WAAW5oE,KAAK8gB,OAAO1d,QAAS,CAC7C+mE,SAAU8tC,EAAeA,EAAarmG,WAAa,OAG3DwgG,EAAOlyG,UAAU+2G,cAAgB,SAAU5iF,GACvC,OAAOr0B,KAAK8gB,OAAO2T,0BAA4Bz0B,KAAK8gB,OAAO8wF,uBAAuBC,aAAoC,WAArBx9E,EAAKoF,aAE1G24E,EAAOlyG,UAAUm3G,uBAAyB,SAAUlqG,GAChDnN,KAAK6yG,kBAAmB,EACxB,IAAIqF,GAAa,EACbl4G,KAAK8gB,OAAO4B,QAAQ/hB,OAAS,IAC7BX,KAAKm4G,aAAahrG,EAAE2S,OAAO,IAC3Bo4F,GAAa,GAEjB,gBAAel4G,KAAK8gB,OAAO4B,QAAS,KAAM1iB,KAAK8gB,QAC3Co3F,GACAl4G,KAAK8gB,OAAOwT,OAAO,QAAiC,IAExDt0B,KAAKyyG,eAAezJ,cACpBhpG,KAAK2yG,gBAAgB3J,cACrBhpG,KAAK8gB,OAAOs3F,WAAY,EACxBp4G,KAAK8gB,OAAOwT,OAAO,OAAgB,KAEvC89E,EAAOlyG,UAAUm4G,sBAAwB,SAAUj7C,EAAK9pC,EAAOrvB,GAE3D,IADA,IAAImR,EAAO3V,OAAO2V,KAAKgoD,GACdp8D,EAAI,EAAGA,EAAIoU,EAAKzU,OAAQK,IAAK,CAClC,IAAIs3G,EAA6D,kBAA1Cl7C,EAAIhoD,EAAKzD,SAAS3Q,EAAE4Q,WAAY,QAChDwrD,EAAIhoD,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OAAWwrD,EAAIhoD,EAAKzD,SAAS3Q,EAAE4Q,WAAY,gBAAiByI,KAC1C,GAArD5a,OAAO2V,KAAKgoD,EAAIhoD,EAAKzD,SAAS3Q,EAAE4Q,WAAY,OAC5C0mG,EAAU33G,OACVX,KAAKq4G,sBAAsBj7C,EAAIhoD,EAAKzD,SAAS3Q,EAAE4Q,WAAY,MAAO0hB,GAASle,EAAKzD,SAAS3Q,EAAE4Q,WAAY,KAAO,KAAM3N,IAGpHA,EAAMjE,KAAKuyG,SAAWj/E,EAAQle,EAAKzD,SAAS3Q,EAAE4Q,WAAY,KAC1D5R,KAAKuyG,aAIjBH,EAAOlyG,UAAUi4G,aAAe,SAAU1B,GACtC,IAAIziF,EAAO,GACPukF,EAAc,GAClBv4G,KAAKq4G,sBAAsB5B,EAAQ,GAAI8B,GAGvC,IAFA,IAAI71F,EAAUjjB,OAAO2V,KAAKmjG,GAAan6F,QAAO,SAAUjR,GAAK,MAA+B,WAAxBorG,EAAY,GAAKprG,MACjFtG,KAAI,SAAUysB,GAAS,OAAOilF,EAAY,GAAKjlF,MAC1CtyB,EAAI,EAAG+X,EAAM2J,EAAQ/hB,OAAQK,EAAI+X,EAAK/X,IAC3CgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAO,CAAE,MAAS8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACzE5R,KAAK8gB,OAAO++C,6BACZ7rC,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAS,eAAkB0uB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,OAChD,IAAzC0uB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKtM,OAG7CtF,KAAK8gB,OAAO7V,cAAc,CAAE,QAAW+oB,IAAQ,IAEnDo+E,EAAOlyG,UAAUs4G,oBAAsB,WACnCx4G,KAAKslB,SAASmzF,YAAY,OAAW5N,OAAQ,IAAI,EAAa7qG,KAAK8gB,OAAQ9gB,KAAKqyG,UAChFryG,KAAKslB,SAASmzF,YAAY,OAAW7F,QAAS,IAAI,OAAc5yG,KAAK8gB,OAAQ9gB,KAAKqyG,UAClF,IAAIqG,EAAa14G,KAAKqyG,QAAQ1R,WAAW,uBACzC+X,EAAWC,gBAAgB,OAAS9N,OAAQ,IAAI,EAAmB7qG,KAAK8gB,OAAQ9gB,KAAKqyG,UACrFqG,EAAWC,gBAAgB,OAAShnF,KAAM,IAAI,OAAa3xB,KAAK8gB,OAAQ9gB,KAAKqyG,UAC7EqG,EAAWC,gBAAgB,OAAStM,cAAe,IAAI,EAA0BrsG,KAAK8gB,OAAQ9gB,KAAKqyG,UACnGqG,EAAWC,gBAAgB,OAAS7xC,OAAQ,IAAI,EAAmB9mE,KAAK8gB,OAAQ9gB,KAAKqyG,UACrFqG,EAAWC,gBAAgB,OAASC,aAAc,IAAI,EAAyB54G,KAAK8gB,OAAQ9gB,KAAKqyG,UACjGqG,EAAWC,gBAAgB,OAASE,kBAAmB,IAAInH,EAA8B1xG,KAAK8gB,OAAQ9gB,KAAKqyG,UAC3GqG,EAAWC,gBAAgB,OAASG,OAAQ,IAAI,EAAmB94G,KAAK8gB,OAAQ9gB,KAAKqyG,UACrFqG,EAAWC,gBAAgB,OAASvN,aAAc,IAAI0G,EAAyB9xG,KAAK8gB,OAAQ9gB,KAAKqyG,UACjGqG,EAAWC,gBAAgB,OAAStM,cAAe,IAAI,EAA0BrsG,KAAK8gB,OAAQ9gB,KAAKqyG,UACnGqG,EAAWC,gBAAgB,OAAStN,aAAc,IAAI0G,EAA+B/xG,KAAK8gB,OAAQ9gB,KAAKqyG,UACvGqG,EAAWC,gBAAgB,OAAS1N,aAAc,IAAI,EAA0BjrG,KAAK8gB,OAAQ9gB,KAAKqyG,UAClGqG,EAAWC,gBAAgB,OAAS1X,aAAc,IAAI,EAAyBjhG,KAAK8gB,OAAQ9gB,KAAKqyG,UACjGqG,EAAWC,gBAAgB,OAAS9xC,mBAAoB,IAAI,EAAmB7mE,KAAK8gB,OAAQ9gB,KAAKqyG,UACjGqG,EAAWC,gBAAgB,OAAS7S,YAAa,IAAI,EAAoB9lG,KAAK8gB,OAAQ9gB,KAAKqyG,WAE/FD,EAAOlyG,UAAU6oB,iBAAmB,WAChC,IAAI1lB,EAAQrD,KACRA,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOqI,GAAG,QAAoBnpB,KAAKw4G,oBAAqBx4G,MAC7DA,KAAK8gB,OAAOqI,GAAG,oBAAqBnpB,KAAK6f,mBAAoB7f,MAC7DA,KAAK8gB,OAAOqI,GAAG,QAAqBnpB,KAAKsV,QAAStV,MAClDA,KAAK8gB,OAAOqI,GAAG,QAAwBnpB,KAAKy0G,gBAAiBz0G,MAC7DA,KAAK8gB,OAAOqI,GAAG,OAAiBnpB,KAAK21G,gBAAiB31G,MACtDA,KAAK8gB,OAAOqI,GAAG,SAAsB,WAAc9lB,EAAMivG,WAAY,IAAStyG,MAC9EA,KAAK8gB,OAAOqI,GAAG,OAAgBnpB,KAAKu2G,oBAAqBv2G,QAO7DoyG,EAAOlyG,UAAUm1G,qBAAuB,SAAUloG,GAC9C,IAAI9J,EAAQrD,KACRyM,EAAQU,EAAE2S,OAAOnf,OAAS,EAC9B,GAAI8L,EAAQ,EACR,OAAOssG,QAAQp+E,QAAQxtB,GAE3B,IAAI6rG,EAAS7rG,EAAE2S,OAAO,GAClBm5F,EAAS9rG,EAAE2S,OAAOnO,SAASlF,EAAMmF,WAAY,KAC7C2nB,EAAY,GACZ2/E,EAAW,SAAUrzC,GAErB,IADA,IAAIszC,EAAS,CAACH,EAAQC,GACbj4G,EAAI,EAAGA,EAAIm4G,EAAOx4G,OAAQK,IAC/Bu4B,EAAUltB,KAAK,IAAI,OAAU,QAAS,KAAM8sG,EAAOxnG,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAAO+F,IAAIh2B,EAAM21B,aAAa,MAAO,QAASmgF,EAAOxnG,SAAS3Q,EAAE4Q,WAAY,KAAKrR,OAEpKslE,EAAM9tC,MAAM,OAAUD,GAAGyB,KAEzBja,EAAQ,IAAI,OAChB45F,EAAS55F,GACT,IAAI85F,EAAQ,IAAI,OAAYjsG,EAAE2S,QAC1Bu5F,EAAYD,EAAMxe,aAAat7E,GAC/Bg6F,EAAWt5G,KAAKsd,KAAKoC,eAAc,GACnC65F,EAAa,GACjB,GAAIv5G,KAAKsd,KAAKmZ,WAAY,CAEtB,IADA,IAAI0iF,EAAS,CAACH,EAAQC,GACbj4G,EAAI,EAAGA,EAAIm4G,EAAOx4G,OAAQK,IAC/Bu4G,EAAWltG,KAAKrM,KAAKg5B,aAAamgF,EAAOxnG,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,MAAO,QAAS6lF,EAAOxnG,SAAS3Q,EAAE4Q,WAAY,KAAKrR,MAE5H+4G,EAASvhF,MAAM,OAAUD,GAAGyhF,SAG5BL,EAASI,GAEb,IAAI/D,EAAW,IAAI,OAKnB,OAJAv1G,KAAKsd,KAAKmC,QAAQ,GAAI65F,GAAU15F,MAAK,SAAUhf,GAC3CyC,EAAMm2G,gBAAgBH,EAAWz4G,EAAEkf,QACnCy1F,EAAS56E,QAAQxtB,MAClBytB,OAAM,SAAUztB,GAAK,OAAOooG,EAAS16E,OAAO1tB,MACxCooG,EAASx7E,SAEpBq4E,EAAOlyG,UAAU84B,aAAe,SAAUz4B,EAAKm3B,EAAU1a,GACrD,OAAIA,aAAiB3C,KACV,eAAiB,CAAEiZ,MAAO/yB,EAAKm3B,SAAUA,EAAU1a,MAAOA,IAE9D,IAAI,OAAUzc,EAAKm3B,EAAU1a,IAExCo1F,EAAOlyG,UAAUs5G,gBAAkB,SAAUC,EAASC,GAGlD,IAFA,IAAIl9E,EAAK,IAAI,OAAYk9E,GACrBxlE,EAAWulE,EACNz4G,EAAI,EAAGA,EAAIkzC,EAASvzC,OAAQK,IAAK,CACtC,IAAI24G,EAASn9E,EAAGo+D,cAAa,IAAI,QAC5B7iE,MAAM,IAAI,OAAU,QAAS,KAAMmc,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAAO+F,IAAIr5B,KAAKg5B,aAAa,MAAO,QAASkb,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKrR,QAAQ,GACvK2zC,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKmO,MAAQ45F,EAAO55F,MACpD,IAAI65F,EAAY1lE,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKqhD,MACjD4mD,EAAaF,EAAO1mD,MACpB2mD,EAAUE,YACV5lE,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKqhD,MACjCjzD,KAAKw5G,gBAAgBtlE,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKqhD,MAAO0mD,EAAO1mD,QAGhF,IADA,IAAIrwC,EAAO5iB,KAAK8gB,OAAOiT,WACdlQ,EAAI,EAAGA,EAAIjB,EAAKjiB,OAAQkjB,IAE7B,IADA,IAAIlC,EAAMiB,EAAKjR,SAASkS,EAAEjS,WAAY,KAC7B4R,EAAI,EAAGA,EAAI7B,EAAIe,QAAQ/hB,OAAQ6iB,IAIpC,IAHA,IAAIyQ,EAAQtS,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,KAAKpD,gBAAgB5O,MAC/D+hB,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,KAAS,KAC7C,CAAE+P,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,KAAS,MACzCmoG,EAAI,EAAGA,EAAI9lF,EAAMtzB,OAAQo5G,IAAK,CACnC,IAAIx5G,EAAMohB,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,KAAK0hB,MAAQ,MAAQW,EAAMtiB,SAASooG,EAAEnoG,WAAY,KAAK2Q,cAChGjF,EAAOs8F,EAAU5zC,MAAQ6zC,EAAW99E,QAAU49E,EAAO1mD,MACrD+mD,EAAUh6G,KAAK8gB,OACnB,GAA0C,WAAtCmT,EAAMtiB,SAASooG,EAAEnoG,WAAY,KAAmB,CAChD,IAAI+d,EAASiqF,EAAU5zC,MAAQ6zC,EAAaF,EACxCx6B,EAAOx9D,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,KACzCqoG,gBACe,kBAAT96B,IACPA,EAAO,eAASA,EAAM54E,SAE1B2tC,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKmiB,WAAW,GAAKxzB,GAAO4+E,EAAOA,EAAK77E,KAAK02G,EAASrqF,EAAQhO,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,MAAQ,QAGzIsiC,EAASviC,SAAS3Q,EAAE4Q,WAAY,KAAKmiB,WAAW,GAAKxzB,GAAO,OAASwzB,WAAWE,EAAMtiB,SAASooG,EAAEnoG,WAAY,KAAK2Q,eAAejF,EAAMqE,EAAIe,QAAQ/Q,SAAS6R,EAAE5R,WAAY,KAAK0hB,QAMnM,OAAOmmF,GAEJrH,EAhvBgB,GCvBvB,EAAqC,WACrC,SAAS8H,IACLl6G,KAAKm6G,cAAgB,GAkBzB,OAhBAD,EAAoBh6G,UAAUy4G,gBAAkB,SAAU3oG,EAAMxB,GAC5DwB,EAAuB,kBAATA,EAAoBA,EAAO,eAAa,OAAUA,GAC5D,eAAkBhQ,KAAKm6G,cAAc,GAAKnqG,MAC1ChQ,KAAKm6G,cAAc,GAAKnqG,GAAQxB,IAGxC0rG,EAAoBh6G,UAAU6gG,gBAAkB,SAAU/wF,GAEtD,GADAA,EAAuB,kBAATA,EAAoBA,EAAO,eAAa,OAAUA,GAC5D,eAAkBhQ,KAAKm6G,cAAc,GAAKnqG,IAE1C,KAAM,oBAAsBA,EAAO,gBAGnC,OAAOhQ,KAAKm6G,cAAc,GAAKnqG,IAGhCkqG,EApB6B,G,YCApC,EAAgC,WAChC,SAASE,IACLp6G,KAAKq6G,SAAW,GA0BpB,OAxBAD,EAAel6G,UAAUo6G,SAAW,SAAUtqG,EAAMxB,GAC5C,eAAkBxO,KAAKq6G,SAAS,GAAKrqG,MACrChQ,KAAKq6G,SAAS,GAAKrqG,GAAQxB,IAGnC4rG,EAAel6G,UAAUygG,WAAa,SAAU3wF,GAC5C,GAAI,eAAkBhQ,KAAKq6G,SAAS,GAAKrqG,IAErC,KAAM,eAAiBA,EAAO,qBAElC,OAAOhQ,KAAKq6G,SAAS,GAAKrqG,IAE9BoqG,EAAel6G,UAAUq6G,wBAA0B,SAAU/rG,EAAMgsG,EAAcz9E,GACzEy9E,GACAhsG,EAAKisG,yBAA2B,IAAI,OAAyBjsG,EAAKsS,OAAQtS,EAAKojB,gBAC/EpjB,EAAKisG,yBAAyB19E,OAASA,GAGnCvuB,EAAKisG,2BACLjsG,EAAKisG,yBAAyB7oE,sBAC9BpjC,EAAKisG,8BAA2BlvG,IAIrC6uG,EA5BwB,GCA/B,EAAiC,WACjC,SAASM,IACL16G,KAAK26G,YAAc,GAkBvB,OAhBAD,EAAgBx6G,UAAUu4G,YAAc,SAAUzoG,EAAMxB,GACpD,IAAIosG,EAAQ,eAAa,OAAY5qG,GACjC,eAAkBhQ,KAAK26G,YAAY,GAAKC,MACxC56G,KAAK26G,YAAY,GAAKC,GAASpsG,IAGvCksG,EAAgBx6G,UAAUwyG,YAAc,SAAU1iG,GAC9C,IAAI4qG,EAAQ,eAAa,OAAY5qG,GACrC,GAAI,eAAkBhQ,KAAK26G,YAAY,GAAKC,IAExC,KAAM,gBAAkBA,EAAQ,gBAGhC,OAAO56G,KAAK26G,YAAY,GAAKC,IAG9BF,EApByB,G,wBCPhC,GAAwC,WACxC,IAAIp7G,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5D,GAA8B,SAAUiC,GAExC,SAASg4G,IACL,OAAkB,OAAXh4G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAuB/D,OAzBA,GAAU66G,EAAch4G,GAIxBzC,GAAW,CACP,eAAS,KACVy6G,EAAa36G,UAAW,gBAAY,GACvCE,GAAW,CACP,eAAS,IACVy6G,EAAa36G,UAAW,iBAAa,GACxCE,GAAW,CACP,eAAS,IACVy6G,EAAa36G,UAAW,mBAAe,GAC1CE,GAAW,CACP,kBACDy6G,EAAa36G,UAAW,yBAAqB,GAChDE,GAAW,CACP,gBAAS,IACVy6G,EAAa36G,UAAW,yBAAqB,GAChDE,GAAW,CACP,gBAAS,IACVy6G,EAAa36G,UAAW,iBAAa,GACxCE,GAAW,CACP,eAAS,OACVy6G,EAAa36G,UAAW,gBAAY,GAChC26G,EA1BsB,CA2B/B,QClDE,GAAwC,WACxC,IAAIv7G,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5D,GAAuC,SAAUiC,GAEjD,SAASi4G,IACL,OAAkB,OAAXj4G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAU86G,EAAuBj4G,GAIjC,GAAW,CACP,eAAS,eACVi4G,EAAsB56G,UAAW,gBAAY,GAChD,GAAW,CACP,gBAAS,IACV46G,EAAsB56G,UAAW,oBAAgB,GAC7C46G,EAX+B,CAYxC,Q,aC7BE,GAAwB,WAOxB,SAASC,EAAOj6F,GACZ9gB,KAAK8gB,OAASA,EACd9gB,KAAK+oB,mBAyHT,OA/GAgyF,EAAO76G,UAAU83B,OAAS,SAAUy7E,GAChC,IAAI9gF,EAAO3yB,KAAK8gB,OAChB2yF,EAAe,eAAkBA,GAAgB,GAAKA,EAClD,eAAgB9gF,GAChBA,EAAK2B,OAAO,QAAqB,CAAE0mF,SAAUh7G,KAAMwwG,QAASxwG,KAAKg4B,OAAQijF,KAAMxH,IAG/EA,IAAiB9gF,EAAKsE,eAAe12B,KAGrCoyB,EAAKsE,eAAe12B,IAAM,gBAAgB+3C,KAAKm7D,GAAgB3sG,WAAW2sG,GAAc7hG,WAAa6hG,EAAa7hG,WAClH+gB,EAAK5qB,YAEA/H,KAAKk7G,eACVvoF,EAAKrd,WAObylG,EAAO76G,UAAU6oB,iBAAmB,WAC5B/oB,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOqI,GAAG,QAA4BnpB,KAAKiV,kBAAmBjV,MACnEA,KAAK8gB,OAAOqI,GAAG,QAAuBnpB,KAAKm7G,iBAAkBn7G,MAC7DA,KAAK8gB,OAAOqI,GAAG,QAAgBnpB,KAAKwS,QAASxS,MAC7CA,KAAKo7G,mBAAqBp7G,KAAKyyD,iBAAiB7sD,KAAK5F,MACrDA,KAAK8gB,OAAOiI,iBAAiB,OAAuB/oB,KAAKo7G,oBACzDp7G,KAAK8gB,OAAOqI,GAAG,OAAoBnpB,KAAKq7G,iBAAkBr7G,QAM9D+6G,EAAO76G,UAAU0xC,oBAAsB,WAC/B5xC,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOmb,IAAI,QAA4Bj8B,KAAKiV,mBACjDjV,KAAK8gB,OAAOmb,IAAI,QAAuBj8B,KAAKm7G,kBAC5Cn7G,KAAK8gB,OAAOmb,IAAI,QAAgBj8B,KAAKwS,SACrCxS,KAAK8gB,OAAO8wB,oBAAoB,OAAuB5xC,KAAKo7G,oBAC5Dp7G,KAAK8gB,OAAOmb,IAAI,OAAoBj8B,KAAKq7G,oBAQ7CN,EAAO76G,UAAUsS,QAAU,WACvBxS,KAAK4xC,uBAOTmpE,EAAO76G,UAAU+U,kBAAoB,SAAU9H,GACvCA,EAAEi3D,SAAWpkE,KAAK8U,kBAGjB,eAAkB3H,EAAEk3D,WAAW9jE,KAMhCP,KAAK8gB,OAAOwT,OAAO,QAAqB,CACpCmF,YAAa,YAAajrB,KAAM,SANpCxO,KAAK8gB,OAAOwT,OAAO,QAAqB,CACpCmF,YAAa,YAAajrB,KAAM,OAAoBilG,aAAczzG,KAAK8gB,OAAOmW,eAAe12B,QAgBzGw6G,EAAO76G,UAAUi7G,iBAAmB,SAAUhuG,GAC1CnN,KAAK8gB,OAAO7Y,QAAQ,OAAuB,eAAOkF,EAAG,CACjDsmG,aAAczzG,KAAK8gB,OAAOmW,eAAe12B,IAAKk5B,YAAa,YAAajrB,KAAM,WAUtFusG,EAAO76G,UAAUuyD,iBAAmB,SAAUtlD,GAC1CnN,KAAKk7G,cAAkC,cAAlB/tG,EAAEssB,aAE3BshF,EAAO76G,UAAUm7G,iBAAmB,SAAUluG,GACpB,cAAlBA,EAAEssB,aACFz5B,KAAK8gB,OAAO7V,cAAc,CAAEgsB,eAAgB,CAAE12B,IAAK,MAAQ,IASnEw6G,EAAO76G,UAAU4U,cAAgB,WAC7B,MAAO,UAEJimG,EAlIgB,GCAvB,GAA0B,WAO1B,SAASO,EAASx6F,GACd9gB,KAAKu7G,QAAU,GACfv7G,KAAKw7G,YAAa,EAClBx7G,KAAK8gB,OAASA,EACd9gB,KAAK+oB,mBAuKT,OArKAuyF,EAASp7G,UAAU6oB,iBAAmB,WAC9B/oB,KAAK8gB,OAAOkI,cAGhBhpB,KAAKy7G,YAAc,CAAC,CAAE/sG,MAAO,OAAoB8hG,QAASxwG,KAAK07G,cAC3D,CAAEhtG,MAAO,OAA4B8hG,QAASxwG,KAAK27G,mBAEvD,eAAuB37G,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,EAAMz7G,QAMhEs7G,EAASp7G,UAAU0xC,oBAAsB,WACjC5xC,KAAK8gB,OAAOkI,aAGhB,eAAuBhpB,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,IAE1DH,EAASp7G,UAAUw7G,aAAe,WAC1B17G,KAAKw7G,aACLx7G,KAAKw7G,YAAa,EAClBx7G,KAAKuoG,WAAWvoG,KAAKu7G,QAASv7G,KAAK47G,YACnC57G,KAAK47G,WAAa57G,KAAKu7G,QAAU,KAUzCD,EAASp7G,UAAUgQ,KAAO,SAAU2lB,EAAYgmF,GAC5C,IAAIzmG,EAAOpV,KAAK87G,gBAAgBjmF,GAC5BnT,EAAU1iB,KAAKozB,WAAWhe,EAAMymG,GACpC77G,KAAK8gB,OAAOwT,OAAO,QAAuB,CAAE8vC,OAAQ,SACpD,IAAK,IAAIpjE,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAChC0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAAU,EAElD3W,KAAKuoG,WAAW7lF,IASpB44F,EAASp7G,UAAUgS,KAAO,SAAU2jB,EAAYkmF,GAC5C,IAAI3mG,EAAOpV,KAAK87G,gBAAgBjmF,GAC5BnT,EAAU1iB,KAAKozB,WAAWhe,EAAM2mG,GACpC/7G,KAAK8gB,OAAOwT,OAAO,QAAuB,CAAE8vC,OAAQ,SACpD,IAAK,IAAIpjE,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAChC0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAAU,EAElD3W,KAAKuoG,WAAW7lF,IAEpB44F,EAASp7G,UAAU47G,gBAAkB,SAAUv7G,GAC3C,IAAIy7G,EAAY,GAOhB,OALIA,EADe,kBAARz7G,EACK,CAACA,GAGDA,EAETy7G,GAEXV,EAASp7G,UAAUkzB,WAAa,SAAUhe,EAAM6mG,GAC5C,IAAI54G,EAAQrD,KACR0iB,EAAU,gBAAqBtN,GAAM,SAAU7U,GAC/C,OAAO,gBAAqB8C,EAAMyd,OAAOo7F,aAAa,SAAU36F,GAC5D,GAAIA,EAAK,GAAK06F,KAAc17G,EACxB,OAAOghB,KAGZ,MAEP,OAAOmB,GAEX44F,EAASp7G,UAAUi8G,mBAAqB,SAAUz5F,EAAS05F,GAEvD,YAD4B,IAAxBA,IAAkCA,EAAsB,KACxD,eAAgBp8G,KAAK8gB,UACrB9gB,KAAKu7G,QAAU74F,EACf1iB,KAAK47G,WAAaQ,EAClBp8G,KAAK8gB,OAAOu7F,aACL,IAIff,EAASp7G,UAAUy7G,iBAAmB,WAClC,GAAI37G,KAAKw7G,WACL,IAAK,IAAIx6G,EAAI,EAAGA,EAAIhB,KAAKu7G,QAAQ56G,OAAQK,IACrChB,KAAKu7G,QAAQ5pG,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAAW3W,KAAKu7G,QAAQ5pG,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAYzG2kG,EAASp7G,UAAUqoG,WAAa,SAAU7lF,EAAS05F,GAC/C,IAAI/4G,EAAQrD,KAGZ,QAF4B,IAAxBo8G,IAAkCA,EAAsB,IAC5Dp8G,KAAKw7G,YAAa,EACbx7G,KAAKm8G,mBAAmBz5F,EAAS05F,GAAtC,CAGAA,EAAuBA,EAAoBz7G,OAAS,EAAKy7G,EAAsB15F,EAC/E,IAAI2R,EAAO,CACPoF,YAAa,cACbhrB,QAAQ,EACRiU,QAAS05F,GAET3tG,EAAS,SACTzO,KAAK8gB,OAAO2T,yBAA2Bz0B,KAAK8gB,OAAOwU,eAChDt1B,KAAK8gB,OAAOw7F,YAAY/mF,cAAc7S,QAAQ/hB,OAAS,IAC1DX,KAAK8gB,OAAOmzF,cAAcsI,YAAc,IAE5Cv8G,KAAK8gB,OAAO7Y,QAAQ,OAAoBosB,GAAM,SAAUmoF,GACpD,IAAIC,EAAkBp5G,EAAMyd,OAAOsS,aAEnC,GADA1Q,EAAU,eAAkBA,GAAW+5F,EAAkB/5F,EACrD85F,EAAa,GAAK/tG,GAKlB,OAJApL,EAAMyd,OAAOwT,OAAO,QAAqB,CAAEkoF,aAAcA,SACrD95F,EAAQ/hB,OAAS,IACjB+hB,EAAQ,GAAG/L,SAAU,IAW7B,GAPI,gBAAgBtT,EAAMyd,SACtBzd,EAAMyd,OAAOmzF,cAAcyI,cAE3Br5G,EAAMyd,OAAO0yF,gBAAkBnwG,EAAMyd,OAAO67F,qBAAqBh8G,SAChE0C,EAAMyd,OAAOwiF,kBAAkBC,kBAChClgG,EAAMyd,OAAO87F,iBAEbv5G,EAAMyd,OAAO++C,2BAA4B,CACzC,IAAIg9C,EAAoBn6F,EAAQtE,QAAO,SAAU0+F,GAAQ,OAAQL,EAAgBllF,MAAK,SAAUwlF,GAAQ,OAAOD,EAAKxpF,QAAUypF,EAAKzpF,YAC/HupF,EAAkBl8G,QAClB0C,EAAMyd,OAAOwT,OAAO,QAAgC5R,QAIpDrf,EAAMyd,OAAOg/C,gBAAkBp9C,EAAQ/hB,QACvC0C,EAAMyd,OAAOwT,OAAO,QAA8B,CAAE0oF,WAAW,IAEnE35G,EAAMyd,OAAOwT,OAAO,QAAgC5R,GAExD,IAAIm6C,EAAS,CACTpjC,YAAa,cACb/W,QAAS05F,GAEb/4G,EAAMyd,OAAO7Y,QAAQ,OAAuB40D,GACP,QAAjCx5D,EAAMyd,OAAOoS,iBACb7vB,EAAMyd,OAAOxL,aAGjBtV,KAAK8gB,OAAOy6C,UAAYv7D,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAC1DX,KAAK8gB,OAAO82F,yBAGb0D,EAlLkB,G,0BCNzB,GAAwC,WACxC,IAAIh8G,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAS5D,GAAiC,SAAUiC,GAE3C,SAASo6G,IACL,IAAI55G,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAEhE,OADAqD,EAAMk5D,WAAa,GACZl5D,EA6EX,OAjFA,GAAU45G,EAAiBp6G,GAW3Bo6G,EAAgB/8G,UAAU67D,aAAe,SAAU/+C,GAC/Chd,KAAK29D,SAAW3gD,GAMpBigG,EAAgB/8G,UAAUk7B,aAAe,WACrC,OAAOp7B,KAAK29D,UAOhBs/C,EAAgB/8G,UAAU2nE,YAAc,SAAUC,QAC/B,IAAXA,IAAqBA,EAAS,SACNv8D,IAAxBvL,KAAKqlE,iBACLrlE,KAAKu8D,WAAW,eAAa,OAAU,OAASyL,UAAY,CAAEzxC,GAAI,eAAQv2B,KAAKqlE,eAAgByC,GAC3FtV,SAAU,wBAEejnD,IAA7BvL,KAAKslE,sBACLtlE,KAAKu8D,WAAW,eAAa,OAAU,OAAS6L,eAAiB,CAAE7xC,GAAI,eAAQv2B,KAAKslE,oBAAqBwC,GACrGtV,SAAU,6BAEgBjnD,IAA9BvL,KAAKulE,uBACLvlE,KAAKu8D,WAAW,eAAa,OAAU,OAASkM,iBAAmB,CAAElyC,GAAI,eAAQv2B,KAAKulE,qBAAsBuC,GACxGtV,SAAU,0BAQtByqD,EAAgB/8G,UAAUoxG,YAAc,SAAU9iG,GAC9C,OAAOxO,KAAKu8D,WAAW,eAAa,OAAU/tD,KAOlDyuG,EAAgB/8G,UAAUg9G,oBAAsB,SAAU7nG,GACtDrV,KAAKiL,cAAcoK,GAAM,IAE7B,GAAW,CACP,kBACD4nG,EAAgB/8G,UAAW,YAAQ,GACtC,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,aAAS,GACvC,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,kBAAc,GAC5C,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,cAAU,GACxC,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,sBAAkB,GAChD,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,2BAAuB,GACrD,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,4BAAwB,GACtD,GAAW,CACP,kBACD+8G,EAAgB/8G,UAAW,uBAAmB,GAC1C+8G,EAlFyB,CAmFlC,QAKE,GAA8B,SAAUp6G,GAExC,SAASs6G,IACL,OAAkB,OAAXt6G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAUm9G,EAAct6G,GAIxB,GAAW,CACP,eAAW,GAAI,KAChBs6G,EAAaj9G,UAAW,eAAW,GAC/Bi9G,EARsB,CAS/B,QCpHE,GAA2B,WAQ3B,SAASC,EAAUt8F,EAAQ8Q,GACvB5xB,KAAKq9G,YAAc,GACnBr9G,KAAKyW,UAAW,EAChBzW,KAAK8gB,OAASA,EACd9gB,KAAK4xB,eAAiBA,EACtB5xB,KAAK+oB,mBA6ST,OAvSAq0F,EAAUl9G,UAAU6oB,iBAAmB,WAC/B/oB,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOqI,GAAG,QAAqBnpB,KAAKs9G,WAAYt9G,MACrDA,KAAK8gB,OAAOqI,GAAG,QAAmBnpB,KAAKu9G,eAAgBv9G,MACvDA,KAAK8gB,OAAOqI,GAAG,OAAcnpB,KAAKw9G,aAAcx9G,MAChDA,KAAK8gB,OAAOqI,GAAG,QAAgBnpB,KAAKs9G,WAAYt9G,MAChD,OAAa8L,IAAI9L,KAAK8gB,OAAO1d,QAAS,UAAWpD,KAAK65F,aAAc75F,QAMxEo9G,EAAUl9G,UAAU0xC,oBAAsB,WAClC5xC,KAAK8gB,OAAOkI,cAGhBhpB,KAAK8gB,OAAOmb,IAAI,QAAmBj8B,KAAKu9G,gBACxCv9G,KAAK8gB,OAAOmb,IAAI,QAAqBj8B,KAAKs9G,YAC1Ct9G,KAAK8gB,OAAOmb,IAAI,OAAcj8B,KAAKw9G,cACnCx9G,KAAK8gB,OAAOmb,IAAI,QAAgBj8B,KAAKs9G,YACrC,OAAan4G,OAAOnF,KAAK8gB,OAAO1d,QAAS,UAAWpD,KAAK65F,gBAE7DujB,EAAUl9G,UAAUs9G,aAAe,SAAUrwG,GACzC,IAAI7M,EAAS6M,EAAE7M,OAEfA,EAAS,gBAAaA,EAAQ,cAElC88G,EAAUl9G,UAAU25F,aAAe,SAAU1sF,GACzC,IAAI9J,EAAQrD,KACRy9G,EAAOz9G,KAAK8gB,OACZ48F,EAAY,SAASplE,KAAKqlE,UAAUC,UACpCC,EAAyB79G,KAAK8gB,OAAOg9F,4BAIzC,GAHkB,KAAd3wG,EAAEqG,SAAkBkqG,GAAavwG,EAAE4wG,UAAYN,EAAKr7C,QACpDpiE,KAAKg+G,OAELH,EAAuBl9G,QAAwB,KAAdwM,EAAEqG,WAAqBkqG,GAAavwG,EAAEm4C,SAAao4D,GAAavwG,EAAE4wG,WAAcN,EAAKr7C,OAAQ,CAC9H,IAAI9hE,EAAS,eAAQsN,SAASmsF,cAAe,IAAM,QACnD,IAAK/5F,KAAKi+G,oBAAsB39G,IAAWm9G,EAAKS,aAAa9iD,cAA2C,UAA3BqiD,EAAKS,aAAazgG,MAC3D,SAAhCggG,EAAKna,kBAAkB7lF,MAAgE,SAA7CggG,EAAKna,kBAAkB6a,kBACjE,OAEJn+G,KAAK+5F,cAAgBnsF,SAASmsF,cAC9B,IAAIqkB,EAAM73G,OAAO83G,QACbC,EAAM/3G,OAAOg4G,QACjBv+G,KAAKi+G,kBAAkBp3D,QACvBz5C,YAAW,WACP/J,EAAM02F,cAAclzC,QACpBtgD,OAAOi4G,SAASJ,EAAKE,GACrBj7G,EAAMo7G,MAAMp7G,EAAM46G,kBAAkBjhG,MAAO6gG,EAAuB,GAAG/3F,SAAU+3F,EAAuB,GAAGa,YAAY,MACtHhB,EAAY,IAAM,MAW7BN,EAAUl9G,UAAUu+G,MAAQ,SAAUnhG,EAAMwI,EAAU+hF,GASlD,IARA,IAGIzxE,EACApZ,EACA2hG,EAEA3qF,EAPAypF,EAAOz9G,KAAK8gB,OACZ89F,EAAO/W,EACPgX,EAAO/4F,EAIPlD,EAAOtF,EAAKrZ,MAAM,MAEbrD,EAAI,EAAGA,EAAIgiB,EAAKjiB,OAAQC,IAAK,CAGlC,GAFAozB,EAAOpR,EAAKjR,SAAS/Q,EAAEgR,WAAY,KAAK3N,MAAM,MAC9C26G,EAAO/W,EACFjnG,IAAMgiB,EAAKjiB,OAAS,GAA0C,KAArCiiB,EAAKjR,SAAS/Q,EAAEgR,WAAY,MAAgB,gBAAY6rG,EAAKqB,cAAcD,IAAQ,CAC7GD,IACA,MAEJ,IAAK,IAAIn+G,EAAI,EAAGA,EAAIuzB,EAAKrzB,OAAQF,IAAK,CAElC,GADAk+G,EAAUlB,EAAKsB,iBAAiBF,EAAMD,IACjCD,EAAS,CACVC,IACA,MAIJ,GAFAxoF,EAAMqnF,EAAKuB,iBAAiBJ,GAC5B5hG,EAAQoZ,EAAIwnC,YAAcxnC,EAAIwnC,WAAJxnC,CAAgBpC,EAAKriB,SAASlR,EAAEmR,WAAY,MAAQoiB,EAAKriB,SAASlR,EAAEmR,WAAY,KACtGwkB,EAAIglC,eAAiBhlC,EAAI/C,eAAiB+C,EAAIzJ,SAAU,CACxD,IAAI0H,EAAO,CACP3S,OAAQ0U,EACR9Y,KAAMN,EACN8I,SAAU+4F,GAEd7+G,KAAK8gB,OAAO7Y,QAAQ,OAAoBosB,GACxCwqF,EAAOxqF,EAAKvO,SACPuO,EAAK5lB,QACFgvG,EAAKwB,aACY,WAAb7oF,EAAI5nB,KACJxO,KAAK8gB,OAAOm+F,WAAWC,WAAWL,EAAMzoF,EAAI9C,MAAOxsB,WAAWutB,EAAK/W,OAGnEmgG,EAAKwB,WAAWC,WAAWL,EAAMzoF,EAAI9C,MAAOe,EAAK/W,OAKjEshG,IAEJC,IAEJpB,EAAK3qE,gBAAgBqsE,mBAAmB,CAAEr5F,SAAUA,EAAUs5F,UAAWvX,GAAY,CAAE/hF,SAAU+4F,EAAO,EAAGO,UAAWR,EAAO,IAC7H,IAAIz3C,EAAOnnE,KAAK8gB,OAAOi+F,iBAAiBF,EAAO,EAAGD,EAAO,GACrDz3C,GACA,eAAUA,EAAM,CAAC,UAAW,aAAc,IAE9CnnE,KAAKi+G,kBAAkBjhG,MAAQ,IAEnCogG,EAAUl9G,UAAUo9G,WAAa,WAC7Bt9G,KAAKwyG,KAAOxyG,KAAK4xB,eAAe+uE,WAAW,gBAC3C3gG,KAAK8gB,OAAOmb,IAAI,QAAqBj8B,KAAKs9G,YAC1Ct9G,KAAKi+G,kBAAoBj+G,KAAK8gB,OAAOvc,cAAc,WAAY,CAC3DC,UAAW,cACX0K,OAAQ,aACRF,MAAO,CAAE8zF,SAAU,KAAM,aAAc9iG,KAAKwyG,KAAKx4D,YAAY,gBAEjEh6C,KAAK8gB,OAAO1d,QAAQsB,YAAY1E,KAAKi+G,oBAEzCb,EAAUl9G,UAAUq9G,eAAiB,SAAUpwG,GAC1B,cAAbA,EAAE4vB,OACF/8B,KAAKg+G,OAEa,mBAAb7wG,EAAE4vB,QACP/8B,KAAKg+G,MAAK,IAGlBZ,EAAUl9G,UAAUm/G,YAAc,SAAUC,GACxC,GAAyC,KAArC/4G,OAAOg5G,eAAe3tG,WAAmB,CACzC5R,KAAKi+G,kBAAkBjhG,MAAQhd,KAAKq9G,YAAc,GAClD,IAAIz6F,EAAO5iB,KAAK8gB,OAAO0+F,cACvB,GAA2C,SAAvCx/G,KAAK8gB,OAAOwiF,kBAAkB7lF,KAAiB,CAC/C,IAAIgiG,EAAkBz/G,KAAK8gB,OAAOu/E,wBAAwBhiF,MAAK,SAAUC,EAAG9e,GAAK,OAAO8e,EAAI9e,KAC5F,GAAI8/G,EAAY,CAEZ,IADA,IAAII,EAAkB,GACb1+G,EAAI,EAAGA,EAAIhB,KAAK8gB,OAAOowF,oBAAoBvwG,OAAQK,IACxD0+G,EAAgB/tG,SAAS3Q,EAAE4Q,WAAY,KAAO5R,KAAK8gB,OAC9CowF,oBAAoBv/F,SAAS3Q,EAAE4Q,WAAY,KAAK6a,WAEzDzsB,KAAK2/G,YAAYD,GAAiB,EAAO,KAAMJ,GAC/Ct/G,KAAKq9G,aAAe,KAExB,IAASr8G,EAAI,EAAGA,EAAIy+G,EAAgB9+G,OAAQK,IAAK,CACzCA,EAAI,IACJhB,KAAKq9G,aAAe,MAExB,IAAIuC,EAAW,GACX/S,EAAM4S,EAAgB9tG,SAAS3Q,EAAE4Q,WAAY,MAC5C,gBAAgB5R,KAAK8gB,UAAY9gB,KAAK8gB,OAAO0T,sBAC7Cx0B,KAAK8gB,OAAO2T,yBAA2Bz0B,KAAK8gB,OAAO8wF,uBAAuBC,aAC1E7xG,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAUX,KAAK8gB,OAAOyU,cAAcC,qBACvEq3E,EAAMjqF,EAAK/b,KAAI,SAAUg5G,GAAK,OAAOA,EAAEn1G,aAAa,oBAAqB1G,QAAQy7G,EAAgB9tG,SAAS3Q,EAAE4Q,WAAY,KAAKA,aAEjIguG,EAASvzG,KAAKvJ,MAAM88G,EAAU,GAAGlyG,MAAMpK,KAAKsf,EAAKjR,SAASk7F,EAAIj7F,WAAY,KAAKk7C,iBAAiB,6BAChG9sD,KAAK2/G,YAAYC,GAAU,EAAO,KAAMN,QAG3C,CACD,IAAIliD,EAAMp9D,KAAK8/G,oBACf,GAAI1iD,EAAI2iD,OAAQ,CACZ,GAAIT,EAAY,CACZ,IAAIU,EAAU,GACd,IAASh/G,EAAI,EAAGA,EAAIo8D,EAAI6iD,WAAWt/G,OAAQK,IAAK,CAC5C,IAAI2pG,EAAY3qG,KAAK8gB,OAAOo/F,uBAAuB9iD,EAAI6iD,WAAWtuG,SAAS3Q,EAAE4Q,WAAY,MACpF+4F,EAAUzlG,UAAUmB,SAAS,WAC9B25G,EAAQ3zG,KAAKs+F,GAGrB3qG,KAAK2/G,YAAYK,GAAS,EAAO,KAAMV,GACvCt/G,KAAKq9G,aAAe,KAExB,IAASr8G,EAAI,EAAGA,EAAIo8D,EAAI+iD,WAAWx/G,OAAQK,IAAK,CACxCA,EAAI,IACJhB,KAAKq9G,aAAe,MAExB,IAAIp2C,EAAQ,GAAGv5D,MAAMpK,KAAKsf,EAAKw6C,EAAI+iD,WAAWxuG,SAAS3Q,EAAE4Q,WAAY,MACjEk7C,iBAAiB,4CACrB9sD,KAAK2/G,YAAY14C,GAAO,EAAO,KAAMq4C,SAIzCt/G,KAAK2/G,YAAY,GAAGjyG,MAAMpK,KAAKtD,KAAK8gB,OAAO1d,QAAQ4wC,uBAAuB,+BAA+B,EAAM,KAAMsrE,GAG7H,IAAIjrF,EAAO,CACP/W,KAAMtd,KAAKq9G,YACX5uG,QAAQ,GAGZ,GADAzO,KAAK8gB,OAAO7Y,QAAQ,OAAmBosB,GACnCA,EAAK5lB,OACL,OAEJzO,KAAKi+G,kBAAkBjhG,MAAQhd,KAAKq9G,YAAchpF,EAAK/W,KAClD,OAAQkkD,UAAU56D,MAAM,qBAIzB5G,KAAKi+G,kBAAkBlgB,kBAAkB,EAAG/9F,KAAKi+G,kBAAkBjhG,MAAMrc,QAHzEX,KAAKi+G,kBAAkB9qF,SAK3BnzB,KAAKyW,UAAW,IAGxB2mG,EAAUl9G,UAAUy/G,YAAc,SAAU14C,EAAOm5C,EAAQC,EAAUf,GAEjE,IADA,IAAIgB,EAAgC,kBAAbr5C,EAAM,GACpBpjD,EAAI,EAAGA,EAAIojD,EAAMtmE,OAAQkjB,IAAK,CACnC,GAAIy7F,GAAcc,EAAQ,CACtB,IAAIG,EAAS5uG,SAASs1D,EAAMt1D,SAASkS,EAAEjS,WAAY,KAAKlH,aAAa,QAAwB,IAC7F1K,KAAKq9G,aAAer9G,KAAK8gB,OAAOsS,aAAazhB,SAAS4uG,EAAO3uG,WAAY,KAAK6a,WAAa,KAE3F6zF,EACKr5C,EAAMt1D,SAASkS,EAAEjS,WAAY,KAAK1M,UAAUmB,SAAS,YACtDrG,KAAKq9G,aAAep2C,EAAMt1D,SAASkS,EAAEjS,WAAY,KAAK44C,WAI1DxqD,KAAKq9G,aAAep2C,EAAMt1D,SAASkS,EAAEjS,WAAY,KAEjDiS,EAAIojD,EAAMtmE,OAAS,IACnBX,KAAKq9G,aAAegD,KAUhCjD,EAAUl9G,UAAU89G,KAAO,SAAUsB,GAC7B1xG,SAAS4yG,sBAAsB,SAAWxgH,KAAKi+G,oBAC/Cj+G,KAAKq/G,YAAYC,GACjB1xG,SAAS6yG,YAAY,QACrBzgH,KAAKi+G,kBAAkB73D,QAEvBpmD,KAAKyW,WACLlQ,OAAOg5G,eAAemB,kBACtB1gH,KAAKyW,UAAW,IASxB2mG,EAAUl9G,UAAU4U,cAAgB,WAChC,MAAO,aAQXsoG,EAAUl9G,UAAUsS,QAAU,WAC1BxS,KAAK4xC,sBACD5xC,KAAKi+G,mBACL,gBAAOj+G,KAAKi+G,oBAGpBb,EAAUl9G,UAAU4/G,kBAAoB,WACpC,IAAI9P,EAAUhwG,KAAK8gB,OACfs8C,EAAM,CAAE2iD,QAAQ,GACpB,GAAuC,SAAnC/P,EAAQ1M,kBAAkB7lF,KAAiB,CAC3C,IAAIkjG,EAAgB3Q,EAAQ8N,4BACxBrtE,OAAM,EACN0vE,EAAa,GACbn/G,OAAI,EACR,IAAKA,EAAI,EAAGA,EAAI2/G,EAAchgH,OAAQK,IAIlC,GAHI2/G,EAAchvG,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/9G,QACtDw/G,EAAW9zG,KAAKs0G,EAAchvG,SAAS3Q,EAAE4Q,WAAY,KAAKkU,UAE1D66F,EAAchvG,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/9G,SACjD8vC,IACDA,EAAM/T,KAAKkkF,UAAUD,EAAchvG,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAYrgG,SAE3EoyB,IAAQ/T,KAAKkkF,UAAUD,EAAchvG,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAYrgG,SAC7E,MAIZ8hG,EAAW9hG,MAAK,SAAUC,EAAG9e,GAAK,OAAO8e,EAAI9e,KACzCwB,IAAM2/G,EAAchgH,SACpBy8D,EAAM,CAAE2iD,QAAQ,EAAMI,WAAYA,EAAYF,WAAYU,EAAc,GAAGjC,cAGnF,OAAOthD,GAEJggD,EA1TmB,G,aCP1B,GAAwC,WACxC,IAAI99G,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAyC5D,GAAgC,SAAUiC,GAE1C,SAASg+G,IACL,OAAkB,OAAXh+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAU6gH,EAAgBh+G,GAI1B,GAAW,CACP,kBACDg+G,EAAe3gH,UAAW,aAAS,GACtC,GAAW,CACP,kBACD2gH,EAAe3gH,UAAW,iBAAa,GAC1C,GAAW,CACP,gBAAS,IACV2gH,EAAe3gH,UAAW,mBAAe,GACrC2gH,EAdwB,CAejC,QAKE,GAA8B,SAAUh+G,GAExC,SAASi+G,IACL,OAAkB,OAAXj+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAU8gH,EAAcj+G,GAIxB,GAAW,CACP,eAAW,GAAI,KAChBi+G,EAAa5gH,UAAW,eAAW,GACtC,GAAW,CACP,gBAAS,IACV4gH,EAAa5gH,UAAW,mBAAe,GACnC4gH,EAXsB,CAY/B,QAKE,GAA2B,SAAUj+G,GAErC,SAASk+G,IACL,OAAkB,OAAXl+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAyC/D,OA3CA,GAAU+gH,EAAWl+G,GAIrB,GAAW,CACP,kBACDk+G,EAAU7gH,UAAW,aAAS,GACjC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,gBAAY,GACpC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,aAAS,GACjC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,iBAAa,GACrC,GAAW,CACP,gBAAS,IACV6gH,EAAU7gH,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,iBAAa,GACrC,GAAW,CACP,eAAS,KACV6gH,EAAU7gH,UAAW,yBAAqB,GAC7C,GAAW,CACP,eAAS,KACV6gH,EAAU7gH,UAAW,sBAAkB,GAC1C,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,YAAQ,GAChC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,mBAAe,GACvC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,WAAO,GAC/B,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,oBAAgB,GACxC,GAAW,CACP,kBACD6gH,EAAU7gH,UAAW,iBAAa,GAC9B6gH,EA5CmB,CA6C5B,QAKE,GAAwC,SAAUl+G,GAElD,SAASm+G,IACL,OAAkB,OAAXn+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAUghH,EAAwBn+G,GAIlC,GAAW,CACP,gBAAS,IACVm+G,EAAuB9gH,UAAW,mBAAe,GACpD,GAAW,CACP,eAAS,IACV8gH,EAAuB9gH,UAAW,iBAAa,GAClD,GAAW,CACP,eAAS,IACV8gH,EAAuB9gH,UAAW,qBAAiB,GAC/C8gH,EAdgC,CAezC,QAKE,GAAgC,SAAUn+G,GAE1C,SAASo+G,IACL,OAAkB,OAAXp+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAsC/D,OAxCA,GAAUihH,EAAgBp+G,GAI1B,GAAW,CACP,eAAW,GAAI,KAChBo+G,EAAe/gH,UAAW,eAAW,GACxC,GAAW,CACP,eAAS,cACV+gH,EAAe/gH,UAAW,YAAQ,GACrC,GAAW,CACP,eAAS,YACV+gH,EAAe/gH,UAAW,YAAQ,GACrC,GAAW,CACP,gBAAS,IACV+gH,EAAe/gH,UAAW,2BAAuB,GACpD,GAAW,CACP,eAAS,OACV+gH,EAAe/gH,UAAW,0BAAsB,GACnD,GAAW,CACP,kBACD+gH,EAAe/gH,UAAW,iBAAa,GAC1C,GAAW,CACP,gBAAS,IACV+gH,EAAe/gH,UAAW,oBAAgB,GAC7C,GAAW,CACP,gBAAS,IACV+gH,EAAe/gH,UAAW,+BAA2B,GACxD,GAAW,CACP,eAAS,KACV+gH,EAAe/gH,UAAW,kBAAc,GAC3C,GAAW,CACP,eAAS,YACV+gH,EAAe/gH,UAAW,wBAAoB,GACjD,GAAW,CACP,gBAAS,IACV+gH,EAAe/gH,UAAW,6BAAyB,GACtD,GAAW,CACP,gBAAS,IACV+gH,EAAe/gH,UAAW,6BAAyB,GAC/C+gH,EAzCwB,CA0CjC,QAKE,GAAmC,SAAUp+G,GAE7C,SAASq+G,IACL,OAAkB,OAAXr+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA6B/D,OA/BA,GAAUkhH,EAAmBr+G,GAI7B,GAAW,CACP,eAAS,QACVq+G,EAAkBhhH,UAAW,YAAQ,GACxC,GAAW,CACP,eAAS,SACVghH,EAAkBhhH,UAAW,yBAAqB,GACrD,GAAW,CACP,eAAS,WACVghH,EAAkBhhH,UAAW,YAAQ,GACxC,GAAW,CACP,gBAAS,IACVghH,EAAkBhhH,UAAW,oBAAgB,GAChD,GAAW,CACP,gBAAS,IACVghH,EAAkBhhH,UAAW,wBAAoB,GACpD,GAAW,CACP,eAAS,YACVghH,EAAkBhhH,UAAW,oBAAgB,GAChD,GAAW,CACP,gBAAS,IACVghH,EAAkBhhH,UAAW,qCAAiC,GACjE,GAAW,CACP,gBAAS,IACVghH,EAAkBhhH,UAAW,oBAAgB,GAChD,GAAW,CACP,gBAAS,IACVghH,EAAkBhhH,UAAW,4BAAwB,GACjDghH,EAhC2B,CAiCpC,QAKE,GAAgC,SAAUr+G,GAE1C,SAASs+G,IACL,OAAkB,OAAXt+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAiB/D,OAnBA,GAAUmhH,EAAgBt+G,GAI1B,GAAW,CACP,eAAS,KACVs+G,EAAejhH,UAAW,cAAU,GACvC,GAAW,CACP,eAAS,KACVihH,EAAejhH,UAAW,WAAO,GACpC,GAAW,CACP,eAAS,aACVihH,EAAejhH,UAAW,gBAAY,GACzC,GAAW,CACP,gBAAS,IACVihH,EAAejhH,UAAW,kBAAc,GAC3C,GAAW,CACP,gBAAS,IACVihH,EAAejhH,UAAW,oBAAgB,GACtCihH,EApBwB,CAqBjC,QAKE,GAAiC,SAAUt+G,GAE3C,SAASu+G,IACL,OAAkB,OAAXv+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAUohH,EAAiBv+G,GAI3B,GAAW,CACP,kBACDu+G,EAAgBlhH,UAAW,gBAAY,GACnCkhH,EARyB,CASlC,QAKE,GAAkC,SAAUv+G,GAE5C,SAASw+G,IACL,OAAkB,OAAXx+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAUqhH,EAAkBx+G,GAI5B,GAAW,CACP,eAAS,SACVw+G,EAAiBnhH,UAAW,gBAAY,GACpCmhH,EAR0B,CASnC,QAKE,GAAgC,SAAUx+G,GAE1C,SAASy+G,IACL,OAAkB,OAAXz+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAUshH,EAAgBz+G,GAI1B,GAAW,CACP,eAAS,WACVy+G,EAAephH,UAAW,YAAQ,GAC9BohH,EARwB,CASjC,QAKE,GAA+B,SAAUz+G,GAEzC,SAAS0+G,IACL,OAAkB,OAAX1+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA6B/D,OA/BA,GAAUuhH,EAAe1+G,GAIzB,GAAW,CACP,gBAAS,IACV0+G,EAAcrhH,UAAW,oBAAgB,GAC5C,GAAW,CACP,gBAAS,IACVqhH,EAAcrhH,UAAW,uBAAmB,GAC/C,GAAW,CACP,gBAAS,IACVqhH,EAAcrhH,UAAW,wBAAoB,GAChD,GAAW,CACP,gBAAS,IACVqhH,EAAcrhH,UAAW,yBAAqB,GACjD,GAAW,CACP,gBAAS,IACVqhH,EAAcrhH,UAAW,yBAAqB,GACjD,GAAW,CACP,gBAAS,IACVqhH,EAAcrhH,UAAW,iCAA6B,GACzD,GAAW,CACP,eAAS,KACVqhH,EAAcrhH,UAAW,eAAW,GACvC,GAAW,CACP,kBACDqhH,EAAcrhH,UAAW,uBAAmB,GAC/C,GAAW,CACP,gBAAS,IACVqhH,EAAcrhH,UAAW,yBAAqB,GAC1CqhH,EAhCuB,CAiChC,QAKE,GAA8B,SAAU1+G,GAExC,SAAS2+G,IACL,OAAkB,OAAX3+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAyC/D,OA3CA,GAAUwhH,EAAc3+G,GAIxB,GAAW,CACP,gBAAS,IACV2+G,EAAathH,UAAW,mBAAe,GAC1C,GAAW,CACP,gBAAS,IACVshH,EAAathH,UAAW,oBAAgB,GAC3C,GAAW,CACP,gBAAS,IACVshH,EAAathH,UAAW,qBAAiB,GAC5C,GAAW,CACP,eAAS,WACVshH,EAAathH,UAAW,YAAQ,GACnC,GAAW,CACP,gBAAS,IACVshH,EAAathH,UAAW,2BAAuB,GAClD,GAAW,CACP,gBAAS,IACVshH,EAAathH,UAAW,yBAAqB,GAChD,GAAW,CACP,gBAAS,IACVshH,EAAathH,UAAW,+BAA2B,GACtD,GAAW,CACP,kBACDshH,EAAathH,UAAW,gBAAY,GACvC,GAAW,CACP,kBACDshH,EAAathH,UAAW,sBAAkB,GAC7C,GAAW,CACP,kBACDshH,EAAathH,UAAW,sBAAkB,GAC7C,GAAW,CACP,eAAS,QACVshH,EAAathH,UAAW,sBAAkB,GAC7C,GAAW,CACP,eAAS,KACVshH,EAAathH,UAAW,cAAU,GACrC,GAAW,CACP,gBAAS,IACVshH,EAAathH,UAAW,wBAAoB,GACxCshH,EA5CsB,CA6C/B,QAKE,GAAkC,SAAU3+G,GAE5C,SAAS4+G,IACL,OAAkB,OAAX5+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAK/D,OAPA,GAAUyhH,EAAkB5+G,GAI5B,GAAW,CACP,eAAS,YACV4+G,EAAiBvhH,UAAW,qBAAiB,GACzCuhH,EAR0B,CASnC,QAYE,GAAsB,SAAU5+G,GAShC,SAAS6+G,EAAKv+G,EAASC,GACnB,IAAIqsD,EAAU5sD,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KA8FrD,OA7FAyvD,EAAQqS,sBAAuB,EAC/BrS,EAAQkyD,cAAgB,GACxBlyD,EAAQmyD,MAAO,EACfnyD,EAAQoyD,iBAAmB,EAC3BpyD,EAAQqyD,qBAAsB,EAC9BryD,EAAQsyD,WAAa,EACrBtyD,EAAQuyD,gBAAkB,EAC1BvyD,EAAQwyD,UAAY,EACpBxyD,EAAQyyD,YAAc,EACtBzyD,EAAQ0yD,aAAe,EACvB1yD,EAAQ2yD,aAAe,EACvB3yD,EAAQ4yD,WAAa,EACrB5yD,EAAQ6yD,WAAa,EACrB7yD,EAAQ8yD,kBAAoB,EAC5B9yD,EAAQ+yD,mBAAqB,EAC7B/yD,EAAQgzD,yBAA0B,EAClChzD,EAAQizD,mBAAqB,EAC7BjzD,EAAQkzD,eAAiB,EACzBlzD,EAAQmzD,kBAAoB,GAC5BnzD,EAAQozD,mBAAqB,GAC7BpzD,EAAQqzD,eAAiB,GACzBrzD,EAAQszD,aAAe,GACvBtzD,EAAQuzD,YAAc,GACtBvzD,EAAQwzD,aAAe,GACvBxzD,EAAQyzD,aAAe,GACvBzzD,EAAQ0zD,eAAiB,GACzB1zD,EAAQ2zD,iBAAmB,GAC3B3zD,EAAQ4zD,kBAAoB,GAC5B5zD,EAAQ6zD,kBAAoB,GAC5B7zD,EAAQ8zD,oBAAsB,GAC9B9zD,EAAQ+zD,MAAQ,GAEhB/zD,EAAQg0D,WAAa,EACrBh0D,EAAQi0D,iBAAmB,OAAUxjH,UAAUoV,QAC/Cm6C,EAAQk0D,wBAAyB,EACjCl0D,EAAQm0D,eAAgB,EAExBn0D,EAAQo0D,mBAAoB,EAS5Bp0D,EAAQ+xC,oBAAqB,EAE7B/xC,EAAQq0D,MAAQ,GAEhBr0D,EAAQs0D,OAAS,GAEjBt0D,EAAQu0D,cAAgB,GAExBv0D,EAAQw0D,OAAS,EAEjBx0D,EAAQmkB,WAAa,EAErBnkB,EAAQt6B,iBAAkB,EAE1Bs6B,EAAQy0D,kBAAmB,EAE3Bz0D,EAAQ00D,mBAAoB,EAE5B10D,EAAQ0nD,sBAAwB,EAEhC1nD,EAAQm0C,uBAAyB,GAEjCn0C,EAAQk0C,uBAAyB,GAEjCl0C,EAAQ20D,mBAAoB,EAE5B30D,EAAQ+7C,qBAAuB,EAE/B/7C,EAAQskD,gBAAiB,EAEzBtkD,EAAQ40D,oBAAqB,EAE7B50D,EAAQ2oD,WAAY,EAEpB3oD,EAAQ60D,uBAAwB,EAChC70D,EAAQ80D,kBAAoB,GAE5B90D,EAAQ+0D,qBAAkBj5G,EAE1BkkD,EAAQg1D,aAAe,GAEvBh1D,EAAQi1D,cAAe,EAEvBj1D,EAAQk1D,cAAe,EACvBl1D,EAAQm1D,SAAU,EAClBC,EAAOC,OAAO,SACd,gBAAS,mBAAoBr1D,EAAQs1D,qBAAsBt1D,GACpDA,EAyrLX,IAAIo1D,EAkdJ,OAlvMA,GAAUnD,EAAM7+G,GAyGhBgiH,EAASnD,EAMTA,EAAKxhH,UAAU6U,eAAiB,WAW5B,IAVA,IAAI8sC,EAAY,CAAC,eAAgB,eAC7B,iBAAkB,gBAAiB,UAAW,iBAAkB,mBAAoB,kBACpFmjE,EAAkB,CAClBtwF,aAAc,CAAC,WAAY,YAAa,oBAAqB,oBAAqB,aAClF4D,eAAgB,CAAC,OAAQ,OAAQ,sBAAuB,qBAAsB,gBAC9E/C,cAAe,CAAC,eAAgB,mBAAoB,oBAAqB,oBACrE,4BAA6B,oBACjC0B,eAAgB,CAAC,SAAU,WAAY,cACvCf,aAAc,GAAIxT,QAAS,GAAIuiG,iBAAkB,GAAIC,eAAgB,IAEhElkH,EAAI,EAAGA,EAAI6gD,EAAUlhD,OAAQK,IAElC,IADA,IAAImkH,EAAgBnlH,KAAK6hD,EAAUlwC,SAAS3Q,EAAE4Q,WAAY,MACjD/D,EAAK,EAAGhK,EAAKmhH,EAAgBnjE,EAAUlwC,SAAS3Q,EAAE4Q,WAAY,MAAO/D,EAAKhK,EAAGlD,OAAQkN,IAAM,CAChG,IAAI2M,EAAM3W,EAAGgK,UACNs3G,EAAc,GAAK3qG,GAGlC,IAAI2kE,EAAOn/E,KAAK00B,aAAa/H,SACzBy4F,EAAW3lH,OAAO4lH,OAAO,CAAE14F,cAAUphB,GAAavL,KAAK00B,cAC3D10B,KAAKiL,cAAc,CAAEypB,aAAc0wF,IAAY,GAE3CplH,KAAKqf,kBACErf,KAAKu1B,cAAc,cAAc,mBAE5Cv1B,KAAKqkH,oBAAsB,eAAkBrkH,KAAKslH,eAClD,IAAIC,EAAcvlH,KAAKgV,aAAa6sC,GAGpC,OAFAujE,EAASz4F,SAAWwyD,EACpBn/E,KAAKiL,cAAc,CAAEypB,aAAc0wF,IAAY,GACxCG,GAQX7D,EAAKxhH,UAAUwqD,gBAAkB,WAC7B1qD,KAAKwlH,iBACLxlH,KAAKylH,yBACL,IAAI96D,EAAU,GACd,OAAI3qD,KAAKgpB,cAGLhpB,KAAKq4B,gBACLsyB,EAAQt+C,KAAK,CACT2S,OAAQ,SACRqV,KAAM,CAACr0B,KAAMA,KAAKs4B,eAAgBt4B,KAAK4xB,kBAG3C5xB,KAAK0lH,kBACL/6D,EAAQt+C,KAAK,CACT2S,OAAQ,cACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAGtB5xB,KAAK2lH,gBACLh7D,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,QAGXA,KAAKi2B,cACL00B,EAAQt+C,KAAK,CACT2S,OAAQ,OACRqV,KAAM,CAACr0B,KAAMA,KAAKk2B,aAAcl2B,KAAK4lH,cAAe5lH,KAAK4xB,kBAG7D5xB,KAAKu0B,aACLo2B,EAAQt+C,KAAK,CACT2S,OAAQ,QACRqV,KAAM,CAACr0B,KAAMA,KAAK00B,gBAGtB10B,KAAKwzG,gBACL7oD,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,KAAMA,KAAKsjG,kBAAmBtjG,KAAK4xB,kBAGlD+4B,EAAQt+C,KAAK,CACT2S,OAAQ,SACRqV,KAAM,CAACr0B,QAEPA,KAAKk7D,iBACLvQ,EAAQt+C,KAAK,CACT2S,OAAQ,UACRqV,KAAM,CAACr0B,QAGXA,KAAK0mE,qBACL/b,EAAQt+C,KAAK,CACT2S,OAAQ,iBACRqV,KAAM,CAACr0B,QAGXA,KAAKs1B,eACLq1B,EAAQt+C,KAAK,CACT2S,OAAQ,QACRqV,KAAM,CAACr0B,KAAMA,KAAKu1B,cAAev1B,KAAK4lH,cAAe5lH,KAAK4xB,kBAG9D5xB,KAAK+zB,WAAWpzB,QAChBgqD,EAAQt+C,KAAK,CAAE2S,OAAQ,YAAaqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAEtD5xB,KAAK6kG,YACLl6C,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,mBAGtB5xB,KAAK6+D,SAAW7+D,KAAKu0G,kBACrB5pD,EAAQt+C,KAAK,CACT2S,OAAQ,UACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,mBAGtB5xB,KAAKw0B,sBAAwBx0B,KAAK6/D,6BAClClV,EAAQt+C,KAAK,CACT2S,OAAQ,gBACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,mBAGtB5xB,KAAKqwF,oBAAsBrwF,KAAKggE,YAAchgE,KAAK6hH,kBAAoB7hH,KAAKgiH,kBAC5Er3D,EAAQt+C,KAAK,CAAE2S,OAAQ,SAAUqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAEnD5xB,KAAK6lH,gBAAgB7lH,KAAK0iB,UAC1BioC,EAAQt+C,KAAK,CACT2S,OAAQ,gBACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,mBAGtB5xB,KAAKk+G,aAAa4H,aAAe9lH,KAAKk+G,aAAa6H,eAAiB/lH,KAAKk+G,aAAa9iD,eACtFzQ,EAAQt+C,KAAK,CACT2S,OAAQ,OACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAG1B5xB,KAAKgmH,sBAAsBr7D,IAhGhBA,GAmGf+2D,EAAKxhH,UAAU8lH,sBAAwB,SAAUr7D,GACzC3qD,KAAKy0B,yBACLk2B,EAAQt+C,KAAK,CACT2S,OAAQ,iBACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAGtB5xB,KAAKu1B,cAAcC,mBACnBm1B,EAAQt+C,KAAK,CACT2S,OAAQ,gBACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAGtB5xB,KAAKimH,kBACLt7D,EAAQt+C,KAAK,CACT2S,OAAQ,cACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAGtB5xB,KAAKm7D,gBACLxQ,EAAQt+C,KAAK,CACT2S,OAAQ,aACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAGtB5xB,KAAKkmH,mBACLv7D,EAAQt+C,KAAK,CACT2S,OAAQ,gBACRqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAGtB5xB,KAAKmmH,oBAAoBnmH,KAAK0iB,UAC9BioC,EAAQt+C,KAAK,CAAE2S,OAAQ,aAAcqV,KAAM,CAACr0B,KAAMA,KAAK4xB,kBAEvD5xB,KAAK2kH,cACLh6D,EAAQt+C,KAAK,CAAE2S,OAAQ,SAAUqV,KAAM,CAACr0B,SAShD0hH,EAAKxhH,UAAU4T,UAAY,WACvB9T,KAAK4xB,eAAiB,IAAI,EAC1B5xB,KAAKomH,iBACLpmH,KAAKqmH,sBAET3E,EAAKxhH,UAAUkmH,eAAiB,WAC5BpmH,KAAKsmH,WAAY,EACjBtmH,KAAK4lH,cAAgB,GACrB5lH,KAAK2hH,cAAgB,GACrB3hH,KAAKumH,SAAW,GAChBvmH,KAAKmgE,eAAgB,EACrBngE,KAAKigB,wBAAyB,EAC9BjgB,KAAKwmH,uBAAwB,EAC7BxmH,KAAKymH,WAAa,GAClBzmH,KAAKoiE,QAAS,EACdpiE,KAAKwgG,aAAe,OACpBxgG,KAAKugG,qBAAsB,EAC3BvgG,KAAK0mH,oBAAqB,EAC1B1mH,KAAK0jH,iBAAmB,OAAUxjH,UAAUoV,QAC5CtV,KAAK2mH,gBAAkB,CACnBtgH,SAAU,WAAYugH,SAAU,WAAYC,MAAO,QAASC,YAAa,cAAeC,mBAAoB,qBAC5GC,SAAU,WAAYC,gBAAiB,kBAAmBC,SAAU,WAAYC,WAAY,aAAcC,SAAU,WACpHC,OAAQ,SAAUC,QAAS,UAAWC,KAAM,QAEhDvnH,KAAKwnH,cAAgB,CACjBC,YAAa,wBACbC,KAAM,OACNC,MAAO,QACPC,qBAAsB,sBACtBC,cAAe,gDACfC,QAAS,wBACTC,cAAe,wBACfC,aAAc,uCACdC,eAAgB,qBAChBC,qBAAsB,uHAEtBC,IAAK,MACLC,KAAM,OACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRn5B,MAAO,QACPo5B,UAAW,aACXC,YAAa,eACbC,WAAY,cACZC,UAAW,aACX5N,OAAQ,SACR6N,cAAe,UACfC,KAAM,OACNC,KAAM,OACNC,MAAO,QACPC,mBAAoB,yCACpBC,qBAAsB,2CACtBC,WAAY,OACZC,SAAU,KACVC,aAAc,SACdC,cAAe,cACfC,aAAc,iBACdC,iBAAkB,yCAClBC,qBAAsB,mEACtBC,cAAe,0CACfC,WAAY,+CACZC,cAAe,gBACfC,WAAY,cACZC,cAAe,iBACfC,OAAQ,mBACRC,aAAc,SACdC,YAAa,QACbC,WAAY,cACZC,cAAe,sBACfC,KAAM,OACNC,SAAU,YACVC,YAAa,oBACbC,SAAU,WACVC,YAAa,mBACbC,OAAQ,OACRC,QAAS,WACTC,QAAS,QACTC,WAAY,YACZC,MAAO,QACPC,SAAU,YACVC,SAAU,YACVC,gBAAiB,qBACjBC,YAAa,eACbC,mBAAoB,wBACpBC,WAAY,gBACZC,WAAY,kBACZC,KAAM,OACNC,MAAO,uBACPC,QAAS,yBACTC,YAAa,eACbC,YAAa,iBACbC,eAAgB,oCAChBC,YAAa,8BACbC,gBAAiB,2BACjBC,YAAa,0BACbhT,aAAc,wBACdiT,cAAe,WACfC,kBAAmB,sBACnBC,UAAW,aACXC,WAAY,sBACZzwD,QAAS,sBACT0wD,WAAY,sBACZC,QAAS,sBACTC,OAAQ,SACRC,UAAW,aACXC,SAAU,YACVC,aAAc,gBACdC,SAAU,YACVC,cAAe,iBACfC,eAAgB,kBAChBC,WAAY,cACZC,aAAc,gBACdC,WAAY,SACZC,UAAW,aACXC,oBAAqB,kCACrBC,OAAQ,SACRC,WAAY,OACZC,YAAa,QACbC,SAAU,mBACVC,YAAa,eACbC,MAAO,QACPC,aAAc,iBACdC,WAAY,eACZC,WAAY,eACZC,eAAgB,mBAChBC,UAAW,aACXC,QAAS,UACTC,aAAc,gBACdC,wBAAyB,kBACzBC,4BAA6B,gBAC7BC,IAAK,MACLC,GAAI,KACJC,cAAe,mBACfC,sBAAuB,sBACvBC,qBAAsB,cACtBC,sBAAuB,eACvBC,yBAA0B,kBAC1BC,eAAgB,cAChBC,qBAAsB,qBACtBC,uBAAwB,yBACxBC,SAAU,cACVC,SAAU,cACVC,aAAc,iBACdC,aAAc,iBACdC,sBAAuB,2BACvBC,sBAAuB,2BACvBC,KAAM,OACNC,kBAAmB,qCACnBC,gBAAiB,sBACjBC,sBAAuB,qCACvBC,iBAAkB,4BAClBC,aAAc,kBACdC,aAAc,oBACdC,kBAAmB,mCACnBC,WAAY,cACZC,UAAW,YACXC,cAAe,YACfC,eAAgB,aAChBC,SAAU,OACVC,SAAU,WACVC,UAAW,aAEf5vH,KAAK6vH,WAAa,CACdC,UAAW,YACXC,QAAS,UACTC,WAAY,aACZC,UAAW,YACXC,UAAW,kBACXC,QAAS,gBACTC,WAAY,mBACZC,UAAW,kBACXC,KAAM,OACNnzG,IAAK,MACLozG,OAAQ,SACRC,SAAU,YACVC,QAAS,WACTl9C,OAAQ,SACRC,SAAU,WACVk9C,cAAe,kBACfC,gBAAiB,oBACjBC,UAAW,aACXC,YAAa,eACbC,aAAc,gBACdC,WAAY,cACZC,cAAe,iBACfC,YAAa,eACbC,UAAW,SACXC,UAAW,SACX52F,OAAQ,SACR62F,OAAQ,SACRC,GAAI,KACJC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,IAAK,MACLC,SAAU,YACVC,MAAO,QACPC,UAAW,SACXC,eAAgB,eAChBC,UAAW,aACXC,cAAe,iBACfC,eAAgB,oBASxBtQ,EAAKxhH,UAAUyT,OAAS,WAYpB,GAXA3T,KAAK21B,IAAI,CAAC,iBAAkB,kBAAmB,iBAAkB,6BACjE31B,KAAKsoG,YAAY1/B,WAAW5oE,KAAKoD,QAAS,CAAE6L,KAAM,SAClD,eAAc,CAAE3O,OAAQN,KAAKoD,QAASqH,SAAUzK,KAAKyK,SAAWzK,KAAKyK,SAAW,MAAQzK,KAAKuE,eAC7FvE,KAAKiyH,aAAe,IAAI,EAAOjyH,KAAMA,KAAK4xB,gBAC1C5xB,KAAKkyH,aAAe,IAAI,GAAOlyH,MAC/BA,KAAKqvF,aAAe,IAAI,QAAOrvF,MAC/BA,KAAKs0B,OAAO,QAAoB,KAC6B,IAAxDt0B,KAAKg8B,gBAAgBzc,YAAYH,WAAWgW,cAAwE7pB,IAApDvL,KAAKg8B,gBAAgBzc,YAAYH,WAAW0c,MAC1G,eAAkB97B,KAAKof,aAAepf,KAAKof,WAAWU,SACzD9f,KAAK6jH,mBAAoB,GAEzB7jH,KAAKmI,QAAS,CACd,IAAIksB,EAAO,CAAEmtE,mBAAoBxhG,KAAKwhG,oBACtCxhG,KAAKiI,QAAQ,QAAaosB,GACrBA,EAAKmtE,qBACNxhG,KAAKwhG,mBAAqBntE,EAAKmtE,yBAInCxhG,KAAKiI,QAAQ,SAEjB,gBAAejI,KAAK0iB,QAAS1iB,KAAK6/D,2BAA4B7/D,MAC1DA,KAAK6/D,4BAA8B7/D,KAAK2jH,wBAA0B3jH,KAAKk8G,cACvEl8G,KAAKk8G,YAAc,GACnBl8G,KAAKmyH,kBAAkBnyH,KAAK0iB,UAEhC1iB,KAAKyiH,yBAA0B,EAC3BziH,KAAKurG,mBACLvrG,KAAKs0B,OAAO,QAAwB,IAExCt0B,KAAKoyH,kBACL,gBAAepyH,KAAK0iB,SAChB1iB,KAAK8/D,iBAAmB9/D,KAAK4jH,eAC7B5jH,KAAKqyH,4BAA4BryH,KAAK0iB,SAE1C1iB,KAAKsyH,iBAAiBtyH,KAAK0iB,SAC3B1iB,KAAKozB,aACLpzB,KAAKuyH,eACLvyH,KAAKwyH,aACLxyH,KAAK4T,aACL5T,KAAKyyH,cACLzyH,KAAKmtG,sBACLntG,KAAK0yH,sBACuC,YAAxC1yH,KAAKogE,iBAAiBC,eACtBrgE,KAAK08F,cAET18F,KAAKs0B,OAAO,QAAmB,IACa,YAAxCt0B,KAAKogE,iBAAiBC,eACtBrgE,KAAK2yH,iBAEL3yH,KAAK4yH,YACL5yH,KAAKiI,QAAQ,YAGrBy5G,EAAKxhH,UAAUmyH,4BAA8B,SAAU3vG,GACnD,IAAK,IAAI1hB,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAAK,CACrC,IAAI0gB,EAASgB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAC5C8P,EAAO,GAAK,QAAqCA,EAAOjV,MACpDiV,EAAOgB,SACP1iB,KAAKqyH,4BAA4B3wG,EAAOgB,WASpDg/F,EAAKxhH,UAAUw8F,YAAc,WACpB18F,KAAK0kH,cACN,eAAY1kH,KAAKoD,UAQzBs+G,EAAKxhH,UAAU28F,YAAc,WACpB78F,KAAK0kH,cACN,eAAY1kH,KAAKoD,UAGzBs+G,EAAKxhH,UAAU20G,YAAc,SAAUge,EAAeC,GAClD,IAAI,eAAkB9yH,KAAK+yH,gBAAiB,eAAkB/yH,KAAKi0G,eAAnE,CAGA,IAAIp9C,EAAa72D,KAAKigE,mBAAmBj1C,WACrC8rC,EAAc92D,KAAK4/D,aAAa50C,WAChC+rC,EAAa/2D,KAAKghE,mBACtB,GAAI8xD,EAAJ,CACI,IAAIE,EAAeF,EAAc5mH,cAAc,mBAC3C+mH,EAAe9pH,KAAK6gC,MAAMgpF,EAAa5rH,wBAAwB/B,OAASrF,KAAKkgE,gBAC7EgzD,EAAe,6IAEblzH,KAAKmzH,qBAAuBnzH,KAAKmzH,qBAAuB,eAC9DH,EAAaloH,UAAY,GACzB,IAAK,IAAI9J,EAAI,EAAGA,EAAIiyH,EAAcjyH,IAAK,CACnCgyH,EAAaloH,WAAaooH,EAC1B,IAAIE,EAAW,GAAG1lH,MAAMpK,KAAK0vH,EACxBlmE,iBAAiB,yFACtBsmE,EAAS,GAAGluH,UAAU4G,IAAI,iCAC1BsnH,EAAS,GAAGluH,UAAU4G,IAAI,2CAZlC,CAoBA,KAJM9L,KAAKyF,YAAczF,KAAKigE,mBAAmBl5D,MAAMssH,cAC/CrzH,KAAKyF,YAAczF,KAAKigE,mBAAmBl5D,MAAMusH,eACrDx8D,EAAY/vD,MAAMo8D,UAAY,WAE7BnjE,KAAKmgE,gBAAkBngE,KAAKozB,aAAazyB,OAAQ,CAClD,IAAI4yH,EAAgBz8D,EAAY1vD,wBAAwB/B,OACpDmuH,EAAoC,IAAlBD,EAAsBvzH,KAAKu0B,YAAcv0B,KAAK00B,aAAaG,SAAW70B,KAAKkgE,eAC3F35D,OAAOktH,YAAcF,EACvBG,EAAkBvqH,KAAKgkC,KAAKqmF,EAAkBxzH,KAAKkgE,gBAKvD,MAJ8B,aAA1BlgE,KAAK8jG,mBACL9jG,KAAK2zH,gBAAkB3zH,KAAK4zH,qBAAqB/8D,EAAY,SAEjE72D,KAAK6zH,iBAAmB7zH,KAAK4zH,qBAAqB98D,EAAa48D,IAInE,GADA1zH,KAAK8zH,wBAAwB9zH,KAAKw0B,uBAAwBx0B,KAAK6/D,6BAA+BgzD,IACzF7yH,KAAK6zH,iBAAkB,CACxB,IAAIhpH,EAAUisD,GACV92D,KAAKw0B,sBAAwBx0B,KAAK6/D,8BAClCh1D,EAAUA,EAAQqB,cAAc,oBAE/B,eAAkBrB,EAAQqB,cAAc,YACzClM,KAAK6zH,iBAAmB7zH,KAAK+zH,gBAAgBlpH,EAAS7K,KAAKg0H,wBAAyBnB,IAG5F,IAAK7yH,KAAK2zH,kBAAoB3zH,KAAK8/D,gBAAmB9/D,KAAK6/D,4BAAgD,MAAlBgzD,GAAyB,CAC1GhoH,EAAUgsD,EACV72D,KAAK6/D,4BAAgD,MAAlBgzD,IACnChoH,EAAUA,EAAQqB,cAAc,oBAEpClM,KAAK2zH,gBAAkB3zH,KAAK+zH,gBAAgBlpH,EAAS7K,KAAKg0H,wBAAyBnB,GAEvF,GAAI97D,GAAcA,EAAW7qD,cAAc,iBAAkB,CACzD,IAAI+nH,EAAoBl9D,EAAW/rC,WACnC,IAAKhrB,KAAKk0H,uBAAwB,CAC9B,IAAIC,EAAgBF,EACpBj0H,KAAKk0H,uBAAyBl0H,KAAK+zH,gBAAgBI,IAGrDn0H,KAAKw0B,sBAAwBq+F,GAC/B,OAAa/mH,IAAIgrD,EAAa,SAAU92D,KAAKo0H,iBAAkBp0H,SAGvE0hH,EAAKxhH,UAAU8zH,sBAAwB,WACnC,OAAOh0H,KAAKozB,cAEhBsuF,EAAKxhH,UAAU0zH,qBAAuB,SAAUS,EAAa/oD,GACzD,IAAIjU,EAAQr3D,KAAKuE,cAAc,QAAS,CAAEC,UAAW,2BACjDwzD,EAAQh4D,KAAKuE,cAAc,QAAS,CAAEC,UAAW,mBACjDmd,EAAM3hB,KAAKuE,cAAc,KAAM,CAAEC,UAAW,qBAAsBwK,MAAO,CACrEjI,MAAO,WAAa/G,KAAKkgE,eAAiB,SAE9CiH,EAAOnnE,KAAKuE,cAAc,KAAM,CAAEC,UAAW,4BACjD2iE,EAAKr8D,UAAY9K,KAAKmzH,qBACtBxxG,EAAIjd,YAAYyiE,GAChB,IAAK,IAAInmE,EAAI,EAAGA,EAAIsqE,EAAUtqE,IAC1Bg3D,EAAMtzD,YAAYid,EAAI69E,WAAU,IAIpC,OAFAnoC,EAAM3yD,YAAYszD,GAClBq8D,EAAY3vH,YAAY2yD,GACjBA,GAEXqqD,EAAKxhH,UAAU6zH,gBAAkB,SAAU3wH,EAASsf,EAASmwG,GACzD,IAAIn9E,EAAgBtyC,EAChBqoB,IAAS,eAAQiqB,EAAe,iBAChC7qC,IAAU,eAAQ6qC,EAAe,kBACjC4+E,IAAS,eAAQ5+E,EAAe,iBAChCohB,EAAc92D,KAAK4/D,aAAa50C,WAChCupG,EAA0Bz9D,EAAYuM,aACtChM,EAAQ3hB,EAAcxpC,cAAc,SACpCsoH,EAAYn9D,EAAMmoC,YACtBg1B,EAAU5pH,gBAAgB,QAC1B4pH,EAAU5pH,gBAAgB,MAC1B4pH,EAAUztH,MAAMhD,SAAW,WAC3BywH,EAAUztH,MAAM0tH,OAAS,IACzBD,EAAUztH,MAAMzB,MAAQ+xD,EAAMjwD,wBAAwB9B,MAAQ,MAC1DmmB,GAAYzrB,KAAK6/D,4BAAgD,MAAlBgzD,IAC/C2B,EAAUztH,MAAMgf,UAAY,iBACtBsxC,EAAMnrD,cAAc,SAAS9E,wBAAwB/B,OAAS,OAExEmvH,EAAU7pH,aAAa,QAAS,0BAChC,IAAI+pH,EAAer9D,EAAMnrD,cAAc,YAAYszF,WAAU,GAI7D,GAHAk1B,EAAa9pH,gBAAgB,MAC7B8pH,EAAa/pH,aAAa,QAAS,qBACnC6pH,EAAU9vH,YAAYgwH,GAClBjpG,GAAUzrB,KAAK6/D,4BAAgD,MAAlBgzD,EAAuB,CACpE,IAAIlxG,EAAM3hB,KAAK20H,cAAcD,EAAchyG,GAC3C,GAAI1iB,KAAK8/D,eAEL,IADA,IAAI80D,EAAQ,GAAGlnH,MAAMpK,KAAKqe,EAAImrC,iBAAiB,eACtC9rD,EAAI,EAAGA,EAAI4zH,EAAMj0H,OAAQK,IAC1BA,EAAIhB,KAAKgiH,iBACLhiH,KAAKgiH,gBAAkB,IAAMhhH,GAC7B4zH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,sBAEpD8oH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAChD8oH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClEgjH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM/B,KAAQ0d,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK6c,OAChFzuB,KAAK4zE,WAAc,MAEjBghD,EAAMj0H,OAASX,KAAK6hH,kBAAqB7gH,GAAK0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OAC9EgjH,EAAMj0H,OAASX,KAAK6hH,mBAAsB7gH,GAC3C4zH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,uBAEpD8oH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,iBAChD8oH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClEgjH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM6O,MAAS5V,KAAK4zE,WAClDlxD,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK6c,OAAU,MAI9D,IAAI67E,EAAQjzC,EAAMnrD,cAAc,SAC5B0W,EAAO,GAAGlV,MAAMpK,KAAKgnG,EAAMx9C,iBAAiB,OAC5C+nE,EAAYvqB,EAAM9K,YACtBq1B,EAAUjqH,gBAAgB,QAC1BiqH,EAAUlqH,aAAa,QAAS,kBAChC,IAAI2gE,EAAW1oD,EAAKjiB,OACpB,IAASK,EAAI,EAAGA,EAAIsqE,EAAUtqE,IAC1B6zH,EAAUnwH,YAAYid,EAAI69E,WAAU,IACpCq1B,EAAU5pG,WAAWtZ,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAC5C1B,OAASud,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKxK,wBAAwB/B,OAAS,KAEpFmvH,EAAU9vH,YAAYmwH,GAE1B,IAAIC,EAAYz9D,EAAMnrD,cAAc,SAASszF,YAC7Cs1B,EAAUlqH,gBAAgB,QAC1BkqH,EAAUnqH,aAAa,QAAS,kBAChC,IAAIqtD,EAAQX,EAAMnrD,cAAc,SAChC,GAAIrB,GAAW4gB,EAAQ,CACnB,IAAIspG,EAAkBj+D,EAClBwU,EAAWniE,KAAKgkC,KAAK4nF,EAAgB3tH,wBAAwB/B,OAASrF,KAAKkgE,gBAC/E,GAAIlI,EAAM9rD,cAAc,iBAAmB8rD,EAAM/sC,WAAWtqB,QAAWkK,GAAW7K,KAAK0lE,UAAY,CAC3F/jD,EAAM3hB,KAAK20H,cAAcD,EAAchyG,GAA3C,IACIsyG,EAASrzG,EAAI69E,WAAU,GAC3Bw1B,EAAO9vH,UAAU4G,IAAI,YACrB,IAAS9K,EAAI,EAAGA,EAAIsqE,EAAUtqE,IAAK,CAC/B,IAAIi0H,EAAY,EAChBH,EAAUpwH,aAAa1D,EAAIi0H,GAAa,IAAM,EAAID,EAAOx1B,WAAU,GAAQ79E,EAAI69E,WAAU,SAG5F,CACD,IAAI01B,EAAY,gEAEZC,GADAvyG,EAAO,GAAGlV,MAAMpK,KAAK00D,EAAMlL,iBAAiBooE,IAC/Bl9D,EAAM9rD,cAAc,8BACjCkpH,OAAkB,EACtB,GAAID,EAAY,CAEZ,GADAC,EAAkBxyG,EAAK5e,QAAQmxH,GAC3Bn1H,KAAK8/D,gBAAkB9/D,KAAK6/D,2BAE5B,IADI+0D,EAAQ,GAAGlnH,MAAMpK,KAAKsf,EAAKwyG,EAAkB,GAAGtoE,iBAAiB,eAC5D9rD,EAAI,EAAGA,EAAI4zH,EAAMj0H,OAAQK,IAC1BA,EAAIhB,KAAKgiH,iBACT4S,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,gBAChD8oH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClEgjH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM/B,KAAQ0d,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK6c,OAASzuB,KAAK4zE,WAAc,MAE1GghD,EAAMj0H,OAASX,KAAK6hH,kBAAqB7gH,GAAK0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OACnFgjH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,iBAChD8oH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,gBAAiB3J,EAAE4Q,YAClEgjH,EAAMjjH,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAM6O,MAAS5V,KAAK4zE,WAClDlxD,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK6c,OAAU,MAI1D0mG,EAAWjwH,UAAUmB,SAAS,cAC9Buc,EAAKlW,OAAO0oH,EAAiB,GAG7BxyG,EAAKlW,OAAO0oH,EAAiB,GAGrC9pD,GAAYtrE,KAAKw0B,sBAAwBx0B,KAAK6/D,6BAA+BgzD,EAAgBjwG,EAAKjiB,OAC5F2qE,GAAY1oD,EAAKjiB,OAAS2qE,EAAW1oD,EAAKjiB,OAChD,IAASK,EAAI,EAAGA,EAAIsqE,EAAUtqE,IAC1B8zH,EAAUpwH,YAAY1E,KAAKq1H,aAAazyG,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK4tF,WAAU,GAAO58E,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKxK,wBAAwB/B,SAEvJ,GAAI8vH,GAAcA,EAAWjwH,UAAUmB,SAAS,gBAAkB+uH,EAAkB9pD,EAAU,CAC1F,IAAIgqD,EAAiBR,EAAU7pG,WAAWtZ,SAASyjH,EAAgBxjH,WAAY,KAC/E0jH,EAAevuH,MAAM1B,OAASrF,KAAKkgE,eAAiB,KACpDo1D,EAAepwH,UAAU4G,IAAI,SACzBqpH,EAAWjwH,UAAUmB,SAAS,aAC9BivH,EAAepwH,UAAU4G,IAAI,cAM7C,GADA0oH,EAAU9vH,YAAYowH,GAClBR,EAAQ,CACR,IAAIiB,EAAQl+D,EAAMnrD,cAAc,SAC5BspH,EAAYD,EAAM/1B,YACtBg2B,EAAU7qH,aAAa,QAAS,kBAEhC,IADIiY,EAAO,GAAGlV,MAAMpK,KAAKiyH,EAAMzoE,iBAAiB,OACvC9rD,EAAI,EAAGA,EAAI4hB,EAAKjiB,OAAQK,IAC7Bw0H,EAAU9wH,YAAY1E,KAAKq1H,aAAazyG,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK4tF,WAAU,GAAO58E,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKxK,wBAAwB/B,SAEvJmvH,EAAU9vH,YAAY8wH,GAM1B,GAJI/pG,GAAUzrB,KAAK8/D,iBAAmB9/D,KAAK6/D,6BACvC7/D,KAAKigE,mBAAmB/zD,cAAc,IAAM,QAAwBnF,MAAMhD,SAAW,YAEzF2xC,EAAckuB,aAAa4wD,EAAW9+E,EAAc1qB,YAChDngB,KAAa7K,KAAKw0B,uBAAwBq+F,GAAgB,CAC1D,IAAI4C,EAAelB,EAA0BC,EAAUptH,wBAAwB/B,OAC/EowH,EAAeA,EAAe,EAAI,EAAIA,EACtC,IAAIxkH,EAAY6lD,EAAY7lD,WAAawkH,EAAe3+D,EAAY7lD,UAAYwkH,EAC5Ez1H,KAAKw0B,uBACLvjB,GAAa,eAAmB,eAAQykC,EAAe,oBAAoBrwC,QAE/EmvH,EAAUztH,MAAMgf,UAAY,iBAAmB9U,EAAY,MAE/D,OAAOujH,GAEX9S,EAAKxhH,UAAUm1H,aAAe,SAAU1zG,EAAKohF,GACzC,IAAI2R,EAAU/yF,EACd+yF,EAAQ9pG,gBAAgB,QACxB8pG,EAAQ9pG,gBAAgB,iBACxB8pG,EAAQ9pG,gBAAgB,iBACxB8pG,EAAQ9pG,gBAAgB,YACxB8pG,EAAQxvG,UAAU4G,IAAI,gBACtB4oG,EAAQ3tG,MAAM1B,OAAS09F,EAAY,KAEnC,IADA,IAAI2yB,EAAY,GAAGhoH,MAAMpK,KAAKoxG,EAAQzpF,YAC7BjqB,EAAI,EAAGA,EAAI00H,EAAU/0H,OAAQK,IAAK,CACvC,IAAI20H,EAAWD,EAAU/jH,SAAS3Q,EAAE4Q,WAAY,KAC5CgkH,EAAwBD,EAAS3qG,YAAc2qG,EAAS3qG,WAAW9lB,WAChEywH,EAAS3qG,WAAW9lB,UAAUmB,SAAS,sBAC9CsvH,EAAS/qH,gBAAgB,QACzB+qH,EAAS/qH,gBAAgB,YACzB+qH,EAAS/qH,gBAAgB,cACrB5K,KAAK6/D,4BAA8B81D,EAASzwH,UAAUmB,SAAS,mBAC/D,gBAAY,CAACsvH,GAAW,CAAC,gBAAiB,qBAAsB,wBAChE,eAAS,CAACA,GAAW,CAAC,gBAEpB31H,KAAK6/D,6BAA+B81D,EAASzwH,UAAUmB,SAAS,iBAClEsvH,EAASzwH,UAAUmB,SAAS,mBAC5BsvH,EAAS/qH,gBAAgB,iBAE7B+qH,EAAS/qH,gBAAgB,iBACzB+qH,EAAS/qH,gBAAgB,SACzB+qH,EAAS/qH,gBAAgB,kBACzB+qH,EAAS/qH,gBAAgB,mBACzB+qH,EAAS/qH,gBAAgB,gBACzB+qH,EAAS/qH,gBAAgB,iBACzB+qH,EAASzwH,UAAU4G,IAAI,iBACvB6pH,EAAS7qH,UAAY9K,KAAKmzH,qBACtBwC,EAASzwH,UAAUmB,SAAS,uBAAyBsvH,EAASzwH,UAAUmB,SAAS,wBACjFsvH,EAAS3qG,WAAW9lB,UAAU4G,IAAI,uBAE7B6pH,EAASzwH,UAAUmB,SAAS,iBAAmBuvH,EACpDD,EAAS3qG,WAAW9lB,UAAU4G,IAAI,0BAE7B6pH,EAASzwH,UAAUmB,SAAS,iBACjCsvH,EAAS3qG,WAAW9lB,UAAU4G,IAAI,sBAE7B6pH,EAASzwH,UAAUmB,SAAS,kBACjCsvH,EAAS7qH,UAAY,IAG7B,OAAO4pG,GAEXgN,EAAKxhH,UAAUy0H,cAAgB,SAAUkB,EAAaC,GAClD,IAAInsB,EAAWksB,EACXnzG,EAAUozG,EACVn0G,EAAM3hB,KAAKuE,cAAc,KAAM,CAAEC,UAAW,uBAClB,aAA1BxE,KAAK8jG,mBACLniF,EAAI5a,MAAM1B,OAASrF,KAAKkgE,eAAiB,MAG7C,IADA,IAAIghC,EAAKlhG,KAAKuE,cAAc,KAAM,CAAEC,UAAW,4BACtCxD,EAAI,EAAG6mG,EAAW,EAAG7mG,EAAI2oG,EAAS1+E,WAAWtqB,OAAQK,IAAK,CAC/D,IAAIo1B,EAAMuzE,EAAS1+E,WAAWtZ,SAAS3Q,EAAE4Q,WAAY,KACjDmkH,EAAU70B,EAAG1B,YACjBu2B,EAAQjrH,UAAY9K,KAAKmzH,qBACnB/8F,EAAIlxB,UAAUmB,SAAS,mBAAqB+vB,EAAIlxB,UAAUmB,SAAS,oBAClE+vB,EAAIlxB,UAAUmB,SAAS,iBAqBtB+vB,EAAIlxB,UAAUmB,SAAS,kBACvB0vH,EAAQ/qG,WAAW9lB,UAAU4G,IAAI,uBAE5BsqB,EAAIlxB,UAAUmB,SAAS,mBAC5B0vH,EAAQ/qG,WAAW9lB,UAAU4G,IAAI,wBAE5BsqB,EAAIlxB,UAAUmB,SAAS,kBAC5B0vH,EAAQ/qG,WAAW9lB,UAAU4G,IAAI,uBA3BP,aAA1B9L,KAAK8jG,kBAAmCphF,EAAQ/Q,SAASk2F,EAASj2F,WAAY,MAC9EmkH,EAAQprH,aAAa,YAAa+X,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAK6a,WACzE/J,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAK6a,WAAa/J,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAK0hB,OAEjF,SAAtB8C,EAAIrvB,MAAMC,QACV+uH,EAAQ7wH,UAAU4G,IAAI,WAGtBiqH,EAAQhvH,MAAMs1D,UAAY35C,EAAQ/Q,SAASk2F,EAASj2F,WAAY,MACzD8Q,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAKyqD,UAC9C35C,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAKyqD,UAAU95C,cACnDviB,KAAKyF,UAAY,QAAU,OAC7Bid,EAAQ/Q,SAASk2F,EAASj2F,WAAY,OAA6D,aAApD8Q,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAKpD,MACvFkU,EAAQ/Q,SAASk2F,EAASj2F,WAAY,KAAKokH,oBAC9CD,EAAQ/qG,WAAW9lB,UAAU4G,IAAI,2BAGzC+7F,KAaJlmF,EAAIjd,YAAYqxH,GAEpB,OAAOp0G,GAEX+/F,EAAKxhH,UAAUizH,mBAAqB,WAChC,OAAInzH,KAAK8zH,qBACE,0DAEJ,0EAEXpS,EAAKxhH,UAAU+1H,iBAAmB,WAC9Bj2H,KAAK8zH,sBAAuB,EAE5B,IADA,IAAIV,EAAW,GAAG1lH,MAAMpK,KAAKtD,KAAKoD,QAAQ0pD,iBAAiB,iCAClD9rD,EAAI,EAAGA,EAAIoyH,EAASzyH,OAAQK,IAC7BoyH,EAASzhH,SAAS3Q,EAAE4Q,WAAY,MAChCwhH,EAASzhH,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,mBAI/D41G,EAAKxhH,UAAUk0H,iBAAmB,SAAUjnH,GAGxC,IAFA,IAAI7M,EAAS6M,EAAE7M,OACX41H,EAAa51H,EAAOwsD,iBAAiB,mBAChC9rD,EAAI,EAAGA,EAAIk1H,EAAWv1H,OAAQK,IAAK,CACxC,IAAIwzH,EAAY0B,EAAWvkH,SAAS3Q,EAAE4Q,WAAY,KAClD,GAAI4iH,EAAW,CACX,IAAIiB,EAAen1H,EAAO+iE,aAAemxD,EAAUptH,wBAAwB/B,OAC3EowH,EAAeA,EAAe,EAAI,EAAIA,EACtC,IAAIxkH,EAAY3Q,EAAO2Q,WAAawkH,EAAen1H,EAAO2Q,UAAYwkH,EAClEz1H,KAAKw0B,uBACLvjB,GAAa,eAAmB,eAAQujH,EAAW,oBAAoBnvH,QAE3EmvH,EAAUztH,MAAMgf,UAAY,iBAAmB9U,EAAY,SAIvEywG,EAAKxhH,UAAUk3G,cAAgB,WAC3B,IAAK,eAAkBp3G,KAAKi0G,eAAgB,CACxC,IAAIn9C,EAAc92D,KAAK4/D,aAAa50C,WACpC,OAAa7lB,OAAO2xD,EAAa,SAAU92D,KAAKo0H,kBAEhDp0H,KAAK2zH,iBAAmB3zH,KAAK8/D,iBAAmB9/D,KAAK6/D,6BACrD7/D,KAAKigE,mBAAmB/zD,cAAc,IAAM,QAAwBnF,MAAMhD,SAAW,IAIzF,IAFA,IAAImyH,EAAa,CAACl2H,KAAK2zH,gBACnB3zH,KAAK6zH,iBAAkB7zH,KAAKk0H,wBACvBlzH,EAAI,EAAGA,EAAIk1H,EAAWv1H,OAAQK,IAAK,CACxC,IAAIwzH,EAAY0B,EAAWvkH,SAAS3Q,EAAE4Q,WAAY,KAC9C4iH,GACA,gBAAOA,GAGfx0H,KAAK2zH,gBAAkB,KACvB3zH,KAAK6zH,iBAAmB,KACxB7zH,KAAKk0H,uBAAyB,MAElCxS,EAAKxhH,UAAUyyH,eAAiB,WAC5B,IAAI77D,EAAc92D,KAAK4/D,aAAa50C,WACpC,IAAKhrB,KAAKmgE,eAAkBngE,KAAKozB,aAAazyB,SAG1CX,KAAK6zH,kBAAoB/8D,EAAY5qD,cAAc,mBAAoB,CACvE,IAAIrB,EAAUisD,EACV92D,KAAKw0B,uBACL3pB,EAAUA,EAAQqB,cAAc,oBAEpClM,KAAKm2H,4BAA4BtrH,KAGzC62G,EAAKxhH,UAAUi2H,4BAA8B,SAAUtrH,GACnD,IAAIwsD,EAAQxsD,EAAQqB,cAAc,8BAC9By9F,EAAWtyC,EAAMnrD,cAAc,QAAmBszF,WAAU,GAC5Dg1B,EAAY3pH,EAAQqB,cAAc,mBACtCy9F,EAAS/+F,gBAAgB,MACzB++F,EAASh/F,aAAa,QAAS,qBAC/B,IAAK,IAAI3J,EAAI,EAAGA,EAAI2oG,EAAS1+E,WAAWtqB,OAAQK,IAC5C2oG,EAAS1+E,WAAWtZ,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,SAEpE,gBAAO4pH,EAAUtoH,cAAc,uBAC/BsoH,EAAU5wD,aAAa+lC,EAAU6qB,EAAUxpG,YAC3CwpG,EAAUztH,MAAMzB,MAAQ+xD,EAAMjwD,wBAAwB9B,MAAQ,MAElEo8G,EAAKxhH,UAAUwyH,oBAAsB,WAC7B1yH,KAAKq4B,gBAA+C,cAA7Br4B,KAAKs4B,eAAe9pB,MAC3CxO,KAAKigE,mBAAmBjsB,uBAAuB,uBAAuBrzC,OACtEX,KAAKigE,mBAAmB/6D,UAAU4G,IAAI,mBAGtC9L,KAAKigE,mBAAmB/6D,UAAUC,OAAO,oBAGjDu8G,EAAKxhH,UAAUkyH,gBAAkB,WAC7B,IAAKpyH,KAAK6/D,2BAA4B,CAClC,IAAIu2D,EAAOp2H,KAAKozB,aAEhB,GADApzB,KAAKq2H,mBAAqBr2H,KAAK4xB,eAAe+uE,WAAW,oBACpD,eAAkBy1B,GACnB,IAAK,IAAI3pH,EAAQ,EAAGA,EAAQ2pH,EAAKz1H,OAAQ8L,IAChC,eAAkB2pH,EAAKzkH,SAASlF,EAAMmF,WAAY,KAAK0kH,eACpD,eAAkBF,EAAKzkH,SAASlF,EAAMmF,WAAY,KAAK+E,WACpDy/G,EAAKzkH,SAASlF,EAAMmF,WAAY,KAAK+E,SAC5C3W,KAAKu2H,gBAAgBH,EAAKzkH,SAASlF,EAAMmF,WAAY,KAAMnF,GAK3EzM,KAAKw2H,4BAET9U,EAAKxhH,UAAUq2H,gBAAkB,SAAUngG,EAAK3pB,GAC5CzM,KAAKumH,SAASl6G,KAAK+pB,GACnBp2B,KAAKwjH,MAAMptF,EAAIyC,KAAOtyB,OAAOkwH,WAAWrgG,EAAIkgG,aAC5Ct2H,KAAK02H,iBAAiBjqH,EAAOzM,KAAKwjH,MAAMptF,EAAIyC,MAC5C74B,KAAKukH,kBAAkB5yG,SAASlF,EAAMmF,WAAY,KAAO5R,KAAK02H,iBAAiB9wH,KAAK5F,KAAMyM,GAC1FzM,KAAKwjH,MAAMptF,EAAIyC,KAAK45F,YAAYzyH,KAAKukH,kBAAkB5yG,SAASlF,EAAMmF,WAAY,OAOtF8vG,EAAKxhH,UAAUy2H,mBAAqB,SAAUvgG,GAC1C,IAAKp2B,KAAK6/D,2BAA4B,CAElC,IADA,IAAIpzD,EAAQzM,KAAKysG,oBAAoBr2E,EAAIyC,KAChC73B,EAAI,EAAGA,EAAIhB,KAAKumH,SAAS5lH,OAAQK,IACtC,GAAIo1B,EAAIyC,MAAQ74B,KAAKumH,SAAS50G,SAAS3Q,EAAE4Q,WAAY,KAAKinB,IAEtD,YADA74B,KAAKumH,SAAS75G,OAAO1L,EAAG,GAIhChB,KAAKu2H,gBAAgBngG,EAAK3pB,KASlCi1G,EAAKxhH,UAAUw2H,iBAAmB,SAAU7wG,EAAa1Y,GACrD,IAAIipB,EAAMp2B,KAAKozB,aAAazhB,SAASkU,EAAYjU,WAAY,KACzD5R,KAAKumH,SAAShvF,MAAK,SAAUq/F,GAAe,OAAOA,EAAY/9F,MAAQzC,EAAIyC,SAC3EzC,EAAIzf,QAAUxJ,EAAE0pH,QACZ72H,KAAKmgE,gBACLngE,KAAK82H,kBAAmB,EACpB1gG,EAAIzf,QACJ3W,KAAK+2H,UAAU7mH,KAAKkmB,EAAI3J,WAAY,cAGpCzsB,KAAK+2H,UAAU7kH,KAAKkkB,EAAI3J,WAAY,iBAKpDi1F,EAAKxhH,UAAU82H,gBAAkB,WAC7Bh3H,KAAKmgE,eAAgB,EACrB,IAAIg0D,EAAgBn0H,KAAKoD,QAAQ8I,cAAc,IAAM,QACjDlM,KAAK+zB,WAAWpzB,QAAUX,KAAKoD,QAAQigE,aAAe1xD,SAAS3R,KAAKqF,OAAOuM,WAAY,KAAOuiH,GAC9F,eAAS,CAACA,GAAgB,CAAC,oBAE/B,IAAI8C,EAAiBj3H,KAAKozB,aAAahV,QAAO,SAAUgY,GAAO,MAAoB,aAAbA,EAAI5nB,SAC5C,IAA1ByoH,EAAet2H,QAAgBs2H,EAAet2H,QAAkD,oBAAxCX,KAAKsjG,kBAAkB4zB,gBAC/El3H,KAAKugG,qBAAsB,GAED,aAA1BvgG,KAAK8jG,kBACD9jG,KAAKm3H,cACLn3H,KAAKiL,cAAc,CAAEu0D,kBAAkB,EAAM23D,aAAa,IAAS,GACnE,gBAAY,CAACn3H,KAAKoD,SAAU,gBAGhCpD,KAAKw/D,kBAAoBx/D,KAAKqvF,cAC9BrvF,KAAKqvF,aAAa/5E,UAElBtV,KAAK8/D,gBAAkB9/D,KAAKskH,wBAC5BtkH,KAAKw+D,aAAaG,oBAClB3+D,KAAKskH,uBAAwB,IAGrC5C,EAAKxhH,UAAUk3H,oBAAsB,WACjC,IAAK,IAAIp2H,EAAI,EAAGA,EAAIhB,KAAKumH,SAAS5lH,OAAQK,IACtChB,KAAKwjH,MAAMxjH,KAAKumH,SAAS50G,SAAS3Q,EAAE4Q,WAAY,KAAKinB,KAChDw+F,eAAer3H,KAAKukH,kBAAkBvkH,KAAKumH,SAAS50G,SAAS3Q,EAAE4Q,WAAY,KAAKnF,SAS7Fi1G,EAAKxhH,UAAUo3H,iBAAmB,aASlC5V,EAAKxhH,UAAUsS,QAAU,WACrB,IAAI2yD,EAAcnlE,KAAKoD,QACvB,GAAK+hE,EAAL,CAGA,IAAIoyD,KAAepyD,EAAYj5D,cAAc,IAAM,UAC/Ci5D,EAAYj5D,cAAc,IAAM,SAChCqrH,GACAv3H,KAAKyU,eAETzU,KAAKq3H,iBACLr3H,KAAKo3H,sBACLp3H,KAAKs0B,OAAO,QAAgB,IAC5Bt0B,KAAKw3H,0BACDx3H,KAAKmI,SACLnI,KAAKs3G,gBAAgB,CAAC,aAEtBt3G,KAAK6yB,OACL7yB,KAAKs3G,kBAELigB,GACA10H,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAElCA,KAAKy3H,WAAWjlH,UACZxS,KAAKmI,UAAY,OAAQ8e,OACzBjnB,KAAKoD,QAAQ0H,UAAY,IAK7B,IAHA,IAAI6/C,EAAU,CAAC,eAAgB,eAAgB,gBAAiB,wBAC5D,iBAAkB,cAAe,iBAAkB,eAAgB,eAAgB,YACnF,eAAgB,cAAe,kBAAmB,eAC7C3pD,EAAI,EAAGA,EAAI2pD,EAAQhqD,OAAQK,IAC5BhB,KAAK2qD,EAAQh5C,SAAS3Q,EAAE4Q,WAAY,QACpC5R,KAAK2qD,EAAQh5C,SAAS3Q,EAAE4Q,WAAY,MAAQ,MAGpD5R,KAAKoD,QAAQ0H,UAAY,GACzB,eAAU9K,KAAKoD,QAAS,GAAI,CAAC,QAAS,cAAe,eAAgB,YAAa,WAAY,wBAElGs+G,EAAKxhH,UAAUs3H,wBAA0B,WACrC,IAAIryD,EAAcnlE,KAAKoD,QAClB+hE,IAAiBA,EAAYj5D,cAAc,IAAM,SAAyBi5D,EAAYj5D,cAAc,IAAM,WAG/GlM,KAAKqvF,aAAa78E,UAClBxS,KAAK03H,eAAellH,UACpBxS,KAAK+3G,YAAYvlG,UACjBxS,KAAK23H,gBAAgBnlH,UACrBxS,KAAKkwF,YAAY19E,YAQrBkvG,EAAKxhH,UAAU4U,cAAgB,WAC3B,MAAO,QAEX4sG,EAAKxhH,UAAU03H,mBAAqB,WAC5B53H,KAAK63H,gBACL73H,KAAKsjG,kBAAkB6a,kBAAoB,gBAC3Cn+G,KAAKoD,QAAQ8B,UAAU4G,IAAI,gBAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,gBAGtCu8G,EAAKxhH,UAAU43H,YAAc,SAAUC,GAC/B/3H,KAAKyK,UACL,eAAS,CAACzK,KAAKoD,SAAUpD,KAAKyK,SAASxG,MAAM,MAE7C8zH,GACA,gBAAY,CAAC/3H,KAAKoD,SAAU20H,EAAY9zH,MAAM,OAWtDy9G,EAAKxhH,UAAU+U,kBAAoB,SAAUC,EAASC,GAClD,IAGI6iH,EAHAC,GAAiB,EACjBC,GAAqB,EACrBC,GAAgB,EAEhB9jG,EAAO,CAAEoF,YAAa,WACtB2+F,EAAkB,KAClBC,EAAiB,KACrB,IAAIr4H,KAAKgpB,YAAT,CAGAhpB,KAAK21B,IAAI,kBACL31B,KAAKs4H,qBACLt4H,KAAKy3H,WAAW5xH,QAEpB,IAAIw+D,EAAa5kE,OAAO2V,KAAKF,GACzBmvD,EAAWrgE,QAAQ,YAAc,IAC7BhE,KAAK6/D,6BACL7/D,KAAKk8G,YAAc,IAEvBl8G,KAAKu4H,qBACLL,GAAqB,GAEzB,IAAK,IAAIrqH,EAAK,EAAG2qH,EAAen0D,EAAYx2D,EAAK2qH,EAAa73H,OAAQkN,IAAM,CACxE,IAAIwH,EAAOmjH,EAAa3qH,GACxB,OAAQwH,GACJ,IAAK,cACDrV,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,QAAS39C,OAAQzmB,KAAKu0B,cAC7D0jG,GAAiB,EACG,SAAhBj4H,KAAKqF,QACLrF,KAAKqvF,aAAa/5E,UAEtB,MACJ,IAAK,eACD,GAAItV,KAAKqkH,mBAAoB,CACzBrkH,KAAKqkH,oBAAqB,EAC1BrkH,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,QAASC,WAAYnvD,EAAQwf,eAC/E,MAEJ,GAAI10B,KAAKg1B,aAAeh1B,KAAKg1B,YAAYyjG,SAErC,YADAz4H,KAAKg1B,YAAYyjG,UAAW,GAGhCz4H,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,QAASC,WAAYnvD,EAAQwf,gBAC3E,eAAkBxf,EAAQwf,aAAaC,cAAgB,eAAkBzf,EAAQwf,aAAaG,WAC3F,eAAkB3f,EAAQwf,aAAam/E,qBACtC,eAAkB1+F,EAAQuf,eACxBxf,EAAQwf,aAAaC,cAAgBxf,EAAQuf,aAAaC,cACpD30B,KAAK6/D,6BAA+B7/D,KAAKw0B,sBAC1Cx0B,KAAK00B,aAAam/E,mBAAqB7zG,KAAK00B,aAAaG,YACpEojG,GAAiB,GAEjBj4H,KAAKg1B,aAAeh1B,KAAKg1B,YAAYyjG,WACrCz4H,KAAKg1B,YAAYyjG,UAAW,GAEhC,MACJ,IAAK,eACDz4H,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,OAAQ39C,OAAQzmB,KAAKi2B,eAC5DgiG,GAAiB,EACjBD,GAAc,EACd,MACJ,IAAK,iBACDh4H,KAAK0yH,sBACL1yH,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,SAAU39C,OAAQzmB,KAAKq4B,iBAC9D4/F,GAAiB,EACgB,cAA7Bj4H,KAAKs4B,eAAe9pB,KACpBxO,KAAK04H,gBAGe,SAAhB14H,KAAKqF,QACLrF,KAAKqvF,aAAa/5E,UAG1B,MACJ,IAAK,SACL,IAAK,QACDtV,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,SAAUC,WAAY,CAAE/+D,MAAO4P,EAAQ5P,MAAOD,OAAQ6P,EAAQ7P,UACjGrF,KAAKu0B,aACLv0B,KAAKg1B,YAAY1f,UAErB,MACJ,IAAK,kBACDtV,KAAK+yH,aAAa/lB,YAClBgrB,GAAc,EACd,MACJ,IAAK,sBACDh4H,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,iBAAkB39C,OAAQzmB,KAAK0mE,sBACtE1mE,KAAKiyH,aAAa38G,UAClBtV,KAAK+yH,aAAa/lB,YAClB,MACJ,IAAK,iBACDhtG,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,YAAa39C,OAAQzmB,KAAKwzG,iBACjE,MACJ,IAAK,WACDxzG,KAAK83H,YAAY3iH,EAAQ1K,UACzB,MACJ,IAAK,iBACGzK,KAAK8yC,kBACL9yC,KAAK43H,qBACL53H,KAAK8yC,gBAAgB6lF,0BAEzB,MACJ,IAAK,cACD34H,KAAK44H,cAAgB,gBAAiB54H,KAAKu/F,aAC3C04B,GAAiB,EACjB,MACJ,IAAK,sBACDj4H,KAAK64H,sBAAwB,gBAAiB74H,KAAKm2G,qBACnD8hB,GAAiB,EACjB,MACJ,IAAK,iBACDj4H,KAAK84H,iBAAmB,gBAAiB94H,KAAKylE,gBAC9CwyD,GAAiB,EACjB,MACJ,IAAK,gBACDj4H,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,QAAS39C,OAAQzmB,KAAKs1B,gBAC7Dt1B,KAAK+yH,aAAa/lB,YAClBirB,GAAiB,EACjBD,GAAc,EACM,SAAhBh4H,KAAKqF,QACLrF,KAAKqvF,aAAa/5E,UAEtB,MACJ,IAAK,0BACL,IAAK,YAID,GAHA2iH,GAAiB,EACjBG,EAAkBp4H,KAAKshG,cAAgB1zF,SAAS1B,cAAc,IAAMlM,KAAKshG,cAAcy3B,UAAY,KACnGV,EAAiBD,EAAkBA,EAAgBY,cAAc,GAAK,KAClEh5H,KAAK0lE,WAAa2yD,GAAkB,eAAkBA,EAAe3yD,UAAUA,WAAY,CAC3F,IAAIuzD,EAAkBx5H,OAAO4lH,OAAO,GAAIgT,EAAe3yD,UAAW,CAAEA,UAAWxwD,EAAQwwD,YACvF2yD,EAAeptH,cAAc,CAAEy6D,UAAWuzD,IAAmB,GAC7D,OAAQ,eAAkBZ,EAAe/2B,eAAgB,CACrD,IAAI43B,EAAgBtrH,SAAS1B,cAAc,IAAMmsH,EAAe/2B,cAAcy3B,UAC1EI,EAAwBD,EAAgBA,EAAcF,cAAc,GAAK,KAC7E,GAAIG,EAAuB,CACvB,IAAIC,EAAqB35H,OAAO4lH,OAAO,GAAI8T,EAAsBzzD,WACjE0zD,EAAmB1zD,UAAY2yD,EAAe3yD,UAC9CyzD,EAAsBluH,cAAc,CAAEy6D,UAAW0zD,IAAsB,GAE3Ef,EAAiBc,GAGzBn5H,KAAK+yH,aAAa/lB,YAClB,MACJ,IAAK,UACDhtG,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,YACnB,SAAhBpkE,KAAKqF,QACLrF,KAAKqvF,aAAa/5E,UAEtB,MACJ,IAAK,gBACDtV,KAAKs0B,OAAO,QAA4B,CACpC8vC,OAAQ,QAASC,WAAYnvD,EAAQqgB,cACrC8jG,cAAelkH,EAAQogB,gBAE3B,MACJ,IAAK,cACIv1B,KAAK+zB,WAAWpzB,QAAUX,KAAKs1B,eAAiBt1B,KAAKu1B,cAAc7S,QAAQ/hB,SAC5Es3H,GAAiB,GAErBj4H,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,YAAaC,WAAYnvD,IAC5C,SAAhBlV,KAAKqF,QACLrF,KAAKqvF,aAAa/5E,UAEtB,MACJ,IAAK,gBACL,IAAK,aACL,IAAK,uBACL,IAAK,6BACL,IAAK,eACL,IAAK,SACDtV,KAAK21B,IAAI,uBACTwiG,GAAgB,EAChBD,GAAqB,EACrB,MACJ,IAAK,QACIl4H,KAAKg8B,gBAAgBpJ,yBACtBqlG,GAAiB,GAErBj4H,KAAKg8B,gBAAgBpJ,wBAAyB,EAC9C,MACJ,IAAK,UACG5yB,KAAKu7D,QACLv7D,KAAK43G,uBAGL53G,KAAKs5H,uBAET,MACJ,QACIt5H,KAAKu5H,uBAAuBlkH,EAAMH,EAASgjH,IAGnDF,GACAh4H,KAAKmtG,sBAEL+qB,EACIC,GAAiBn4H,KAAKqwF,oBAAsBrwF,KAAKggE,WACjDhgE,KAAKm4H,gBAGLn4H,KAAKsV,UAGJ2iH,IACLj4H,KAAKs0B,OAAO,QAAqBD,GACjC4jG,GAAiB,EACjBj4H,KAAKw5H,kBAAkBtkH,EAAQ+vG,qBAGvCvD,EAAKxhH,UAAUq5H,uBAAyB,SAAUlkH,EAAMH,EAASgjH,GAC7D,OAAQ7iH,GACJ,IAAK,YACDrV,KAAKy5H,YACDz5H,KAAKu0B,cACLv0B,KAAKoD,QAAQ8I,cAAc,gBAAgB8sH,cAAc,GAAGvzH,UAAYyP,EAAQzP,UAChFzF,KAAKoD,QAAQ8I,cAAc,gBAAgB8sH,cAAc,GAAGjxH,YAE5C,SAAhB/H,KAAKqF,SACLrF,KAAKqvF,aAAazuB,eAAe1rD,EAAQzP,WACzCzF,KAAKqvF,aAAa9uB,cAElBvgE,KAAK6+D,SAAW7+D,KAAK4+D,gBACrB5+D,KAAK4+D,cAAc86D,aAAaV,cAAc,GAAGvzH,UAAYyP,EAAQzP,UACrEzF,KAAK4+D,cAAc86D,aAAaV,cAAc,GAAGjxH,YAEjD/H,KAAKimH,kBAAoBjmH,KAAK25H,oBAC9B35H,KAAK25H,kBAAkBC,iBAAiBZ,cAAc,GAAGvzH,UAAYyP,EAAQzP,UAC7EzF,KAAK25H,kBAAkBC,iBAAiBZ,cAAc,GAAGjxH,YAEzD/H,KAAKm7D,gBAAkBn7D,KAAK65H,mBAAqB75H,KAAKw/D,mBACtDx/D,KAAK65H,iBAAiBC,gBAAgBd,cAAc,GAAGvzH,UAAYyP,EAAQzP,UAC3EzF,KAAK65H,iBAAiBC,gBAAgBd,cAAc,GAAGjxH,YAE1B,cAA7B/H,KAAKs4B,eAAe9pB,MAAwBxO,KAAKs4B,eAAeyhG,uBAChE/5H,KAAK04H,gBAET14H,KAAKs0B,OAAO,QAAmB,IAC/B,MACJ,IAAK,eACDt0B,KAAKiyH,aAAa38G,UAClB,MACJ,IAAK,gBACDtV,KAAK+yH,aAAa/lB,YAClBhtG,KAAKg6H,oBACL,MACJ,IAAK,YACGh6H,KAAK+iG,UACL,eAAS,CAAC/iG,KAAKoD,SAAU,qBAGzB,gBAAY,CAACpD,KAAKoD,SAAU,qBAEhCpD,KAAKiyH,aAAa38G,UAClBtV,KAAK+yH,aAAa/lB,YAClB,MACJ,IAAK,YACDhtG,KAAKi6H,kBACL,MACJ,IAAK,iBACDj6H,KAAK+yH,aAAa/lB,YAClBhtG,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,aAAc39C,QAAQ,IAC7D,MACJ,IAAK,kBACDzmB,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,aAAc39C,OAAQzmB,KAAKk6H,kBAClE,MACJ,IAAK,mBACDl6H,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,cAAe39C,OAAQzmB,KAAKimH,mBACnE,MACJ,IAAK,oBACDjmH,KAAKs0B,OAAO,QAAiB,CAAE8vC,OAAQ,gBAAiB39C,OAAQzmB,KAAKkmH,oBACrE,MACJ,IAAK,iBACDlmH,KAAK0yH,sBACL1yH,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,SAAUC,WAAYnvD,EAAQojB,iBAChF,MACJ,IAAK,iBACDt4B,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,SAAUC,WAAYnvD,EAAQ+hB,iBAChF,MACJ,IAAK,eACDj3B,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,SAClD,MACJ,IAAK,oBACDpkE,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,YAAaC,WAAYnvD,EAAQouF,oBACnF,MACJ,IAAK,eACDtjG,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,OAAQC,WAAYnvD,EAAQgpG,eAC9E,MACJ,IAAK,gBACL,IAAK,mBACGl+G,KAAK+jG,cACL/jG,KAAKm6H,gBAGLn6H,KAAKo6H,iBAETp6H,KAAKs0B,OAAO,QAAqB,CAAE+lG,KAAM,WAAYrd,UAAqB,qBAAT3nG,IACjE,MACJ,IAAK,aAED,IAAIilH,EAAYt6H,KAAKg8B,gBAAgBE,WAOrC,IANIl8B,KAAKwzG,iBAAkBxzG,KAAK0mH,oBAAwB4T,GAAaA,EAAUxoG,WAC3E9xB,KAAK48G,kBAEJ,eAAkB58G,KAAKof,aAAepf,KAAKof,WAAWU,SACvD9f,KAAK6jH,mBAAoB,GAEzBpkH,OAAOoxB,eAAe3b,GAASqlH,UAE/B,IADA,IAAIC,EAAYx6H,KAAK45B,0BAA0B,GACtC54B,EAAI,EAAG6nE,EAAQppE,OAAO2V,KAAKF,EAAQkK,YAAape,EAAI6nE,EAAMloE,OAAQK,IACvEhB,KAAKy6H,WAAW,eAASD,EAAWx6H,KAAKof,WAAWypD,EAAMl3D,SAAS3Q,EAAE4Q,WAAY,OAAQ5R,KAAKof,WAAWypD,EAAMl3D,SAAS3Q,EAAE4Q,WAAY,YAGzI,GAAI0oH,EAAUxoG,UAAW,CAC1B,IAAI4oG,EAAW,eAAkB16H,KAAKof,YAAuC,GAAzBpf,KAAKof,WAAWU,OAChE66G,EAASL,EAAUtoG,OAAS,GAChC,GAAI2oG,EAAMh6H,SAAWX,KAAKu1B,cAAcC,qBAAuBklG,EAAQ/5H,SAAU+5H,EAAQ,GAAGpnG,OACxF,IAAStyB,EAAI,EAAGA,EAAI25H,EAAMh6H,OAAQK,IAC9B05H,EAAU,OAAS1oG,MAAM0oG,EAASC,EAAMhpH,SAAS3Q,EAAE4Q,WAAY,KAAM0oH,EAAUvmG,YAAc,IAGrG/zB,KAAKof,WAAa,CACdU,OAAQ46G,EAAS36G,MAAO/f,KAAKof,WAAWW,MACxCgU,WAAY/zB,KAAKof,WAAW2U,YAEhC/zB,KAAKg8B,gBAAgBH,SAAS,IAC9By+F,EAAUvoG,SAAS/xB,KAAKof,iBAGxBpf,KAAKg8B,gBAAgBH,SAAS,CAAEiB,eAAe,IAC/C98B,KAAKs0B,OAAO,QAA2B,IAClC4jG,IACDl4H,KAAKiyH,aAAa38G,UACdtV,KAAKugG,qBACLvgG,KAAKs0B,OAAO,OAAkC,KAI1Dt0B,KAAK46H,gBACL,MACJ,IAAK,cAED,IAAI79F,EAAS7nB,EAAQiiH,YAAc,OAAW,QAC9Cp6F,EAAO,CAAC/8B,KAAKoD,SAAU,eACvB,MACJ,IAAK,mBACIpD,KAAK66H,4BACN76H,KAAK86H,UAAU5lH,EAAQ+vG,kBAE3BjlH,KAAK66H,4BAA6B,EAClC,MACJ,IAAK,iBACD76H,KAAKw+D,aAAau8D,kBAClB,MACJ,IAAK,mBACD/6H,KAAKs0B,OAAO,QAA4B,IACxC,MACJ,IAAK,mBACDt0B,KAAKg7H,0BACLh7H,KAAKs0B,OAAO,QAAsB,IAClCt0B,KAAKsV,UACL,MACJ,IAAK,qBACDtV,KAAKqvF,aAAa/rB,kBAAkBpuD,EAAQ4uD,oBAC5C,QAGZ49C,EAAKxhH,UAAUs5H,kBAAoB,SAAU/sH,GACzC,IAAIgjD,EAAUzvD,KACd,IAAe,IAAXyM,EAAc,CACd,IAAIwuH,EAAO,WACPxrE,EAAQqrE,UAAUruH,GAClBgjD,EAAQxzB,IAAI,QAAqBg/F,IAErCj7H,KAAKmpB,GAAG,QAAqB8xG,EAAMj7H,QAS3C0hH,EAAKxhH,UAAU+K,cAAgB,SAAUoK,EAAMkjF,GAC3C11F,EAAO3C,UAAU+K,cAAc3H,KAAKtD,KAAMqV,EAAMkjF,GAChD,IAAIjgE,EAAiB,iBACjBjjB,EAAK,GAAKijB,IAAmBt4B,KAAK+yG,cAAgBxa,GAClDv4F,KAAK+yG,aAAamoB,iBAO1BxZ,EAAKxhH,UAAUi7H,eAAiB,WAC5B,OAAOn7H,KAAKkiH,aAMhBR,EAAKxhH,UAAUitG,oBAAsB,WAIjC,IAHA,IAAIiuB,EAAc,GAAG1tH,MAAMpK,KAAKtD,KAAKigE,mBAAmBnT,iBAAiB,4CACrEuuE,EAAa,GAAG3tH,MAAMpK,KAAKtD,KAAKigE,mBAAmBjsB,uBAAuB,wBAC1EhgB,EAAOh0B,KAAKozB,aACPpyB,EAAI,EAAGA,EAAIo6H,EAAYz6H,OAAQK,IAAK,CACzC,IAAImmE,EAAOi0D,EAAYzpH,SAAS3Q,EAAE4Q,WAAY,MAC1C5R,KAAKs1B,eAAiBt1B,KAAKk7D,iBAAmBl7D,KAAKi2B,gBAC9CjC,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKspD,iBAAoBlnC,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKqkB,cACnFjC,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0jB,cAIrC6xC,EAAKjiE,UAAU4G,IAAI,kBAHnBq7D,EAAKjiE,UAAU4G,IAAI,oBAO/B,IAAK,IAAIiU,EAAQ,EAAGA,EAAQs7G,EAAW16H,OAAQof,IACvC/f,KAAKk7D,iBACLmgE,EAAW1pH,SAASoO,EAAMnO,WAAY,KAAK1M,UAAU4G,IAAI,mBAIrE41G,EAAKxhH,UAAUiyH,kBAAoB,SAAUzvG,EAAS44G,GAClD,IAAK,IAAIt6H,EAAI,EAAG+X,EAAM2J,EAAQ/hB,OAAQK,EAAI+X,EAAK/X,IACvC0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACpC1iB,KAAKmyH,kBAAkBzvG,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,SAAS,GAGpE1iB,KAAKk8G,YAAY7vG,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OAGzD,eAAkB0pH,IAAiBA,GACnCt7H,KAAKu7H,yBAGb7Z,EAAKxhH,UAAUs7H,mBAAqB,WAChC,OAAOx7H,KAAKqwF,oBAAsBrwF,KAAK0iG,6BAE3Cgf,EAAKxhH,UAAU4/D,aAAe,WAC1B,OAAmC,IAA5B9/D,KAAKqwF,oBAA8D,IAAlCrwF,KAAK4iH,kBAAkBjiH,QAAmD,IAAnCX,KAAK6iH,mBAAmBliH,QACtE,IAA7BX,KAAK+iH,aAAapiH,QAE1B+gH,EAAKxhH,UAAUmmG,cAAgB,WAC3B,OAAOrmG,KAAKy7H,YAEhB/Z,EAAKxhH,UAAUq7H,sBAAwB,WAKnC,IAJA,IAAIvnG,EAAOh0B,KAAKk8G,YACZwf,EAAc,EACdvZ,EAAe,EACfzV,EAAgB1sG,KAAKqwF,mBAChBrvF,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IACzBgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKg2F,aAC7B5mG,EAAI0rG,GACJ14E,EAAKtnB,OAAOgvH,EAAa,EAAG1nG,EAAKtnB,OAAO1L,EAAG,GAAG,IAC9C06H,MAGA1nG,EAAKtnB,OAAOggG,EAAgByV,EAAc,EAAGnuF,EAAKtnB,OAAO1L,EAAG,GAAG,IAC/DmhH,OAKhBT,EAAKxhH,UAAUoyH,iBAAmB,SAAUt+F,GACxC,IAAK,IAAIhzB,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IACzBgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACjC1iB,KAAKsyH,iBAAiBt+F,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,SAElDsR,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKg2F,YACtC5nG,KAAKwrG,wBAQjBkW,EAAKxhH,UAAUy7H,qBAAuB,SAAU53H,GAC5C,IAAIiwB,EAAoB,SAAbjwB,EAAsB/D,KAAK47H,uBAAsC,UAAb73H,EAAuB/D,KAAK67H,wBAA0B,GACjHv2H,EAAQ,EAMZ,OALA0uB,EAAK5V,QAAO,SAAUgY,GACdA,EAAIzf,UACJrR,GAASqM,SAASykB,EAAI9wB,MAAMsM,WAAY,QAGzCtM,GAQXo8G,EAAKxhH,UAAUkzB,WAAa,SAAU0oG,GAClC,IAAIrsE,EAAUzvD,KACV+7H,EAAS/7H,KAAK2hH,cAAc96G,KAAI,SAAUqhE,GAAK,OAAOA,EAAIzY,EAAQl6B,cAAc7S,QAAQ/hB,UAAWyd,QAAO,SAAU8pD,GAAK,OAAOA,GAAK,KACrI8zD,EAAOD,EAAOp7H,SACbX,KAAK6/D,4BAA8B,eAAkB7/D,KAAKk8G,cAA4C,IAA5Bl8G,KAAKk8G,YAAYv7G,QAAgBm7H,KAC5G97H,KAAKk8G,YAAc,GACnBl8G,KAAKmyH,kBAAkBnyH,KAAK0iB,UAEhC,IAAIA,EAAmB,IAATs5G,EAAah8H,KAAKk8G,YAC5Bl8G,KAAKk8G,YAAYxuG,MAAMquH,EAAO,GAAIA,EAAOC,EAAO,GAAK,GACrDh3H,EAAO,GACP4Q,EAAQ,GACRqmH,EAAU,GACVC,EAAoBl8H,KAAK6/D,4BAA8B7/D,KAAKyiH,yBAAoC,IAATuZ,EACvFE,IACAl8H,KAAK6iH,mBAAqB,GAC1B7iH,KAAK4iH,kBAAoB,IAE7B,IAAK,IAAI5hH,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IACmB,SAA/C0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAqB5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,UAC7F19D,EAAKqH,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACrCsqH,GACAl8H,KAAK4iH,kBAAkBv2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OAGX,UAA/C8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QACzC16E,EAAMvJ,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACtCsqH,GACAl8H,KAAK6iH,mBAAmBx2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OAIhEqqH,EAAQ5vH,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MAWpD,OARI5R,KAAK6/D,4BAA8B7/D,KAAK8/D,iBACpC9/D,KAAK4iH,kBAAkBjiH,SACvBqE,EAAOhF,KAAK4iH,mBAEZ5iH,KAAK6iH,mBAAmBliH,SACxBiV,EAAQ5V,KAAK6iH,qBAGd79G,EAAKwoB,OAAOyuG,GAASzuG,OAAO5X,IAQvC8rG,EAAKxhH,UAAUynG,mCAAqC,SAAUw0B,EAAe/lG,GACzE,IAAK,IAAIp1B,EAAI,EAAGA,EAAIo1B,EAAIz1B,OAAQK,IAAK,CACjC,IAAIo7H,EAAmBhmG,EAAIzkB,SAAS3Q,EAAE4Q,WAAY,KAClD,GAAIwqH,EAAiB9oG,QAAU6oG,GAAiBC,EAAiB3vG,aAAe0vG,EAAe,CAC3Fn8H,KAAKq8H,cAAgBD,EACrB,MAEKA,EAAiB15G,SACtB1iB,KAAK2nG,mCAAmCw0B,EAAeC,EAAiB15G,SAGhF,OAAO1iB,KAAKq8H,eAMhB3a,EAAKxhH,UAAUirG,uBAAyB,WACpC,OAAOnrG,KAAK2hH,eAMhBD,EAAKxhH,UAAU8yB,SAAW,WACtB,OAAOhzB,KAAKsf,OAMhBoiG,EAAKxhH,UAAUo8H,mBAAqB,WAChC,OAAOt8H,KAAKwnH,eAOhB9F,EAAKxhH,UAAUq8H,uBAAyB,SAAUrxB,GAC9ClrG,KAAK2hH,cAAgBzW,GAOzBwW,EAAKxhH,UAAUgxG,kBAAoB,WAC/B,OAAOlxG,KAAKw8H,4BAOhB9a,EAAKxhH,UAAU+/D,iBAAmB,WAC9B,OAAOjgE,KAAK+yH,aAAa9pB,YAS7ByY,EAAKxhH,UAAUu8H,qBAAuB,SAAUr5H,GAC5CpD,KAAK+yH,aAAahqB,SAAS3lG,IAO/Bs+G,EAAKxhH,UAAU+jE,gBAAkB,WAC7B,OAAOjkE,KAAKi0G,cAAczK,YAS9BkY,EAAKxhH,UAAUw8H,oBAAsB,SAAUt5H,GAC3CpD,KAAKi0G,cAAc9K,SAAS/lG,IAOhCs+G,EAAKxhH,UAAU0/D,WAAa,WACxB,OAAO5/D,KAAKi0G,cAAchL,YAS9ByY,EAAKxhH,UAAUy8H,eAAiB,SAAUv5H,GACtCpD,KAAKi0G,cAAclL,SAAS3lG,IAOhCs+G,EAAKxhH,UAAUorG,eAAiB,WAC5B,OAAOtrG,KAAK+yH,aAAavpB,YAS7BkY,EAAKxhH,UAAU08H,mBAAqB,SAAUx5H,GAC1CpD,KAAK+yH,aAAa5pB,SAAS/lG,IAO/Bs+G,EAAKxhH,UAAU8gE,iBAAmB,WAE9B,OADAhhE,KAAK68H,cAAgB78H,KAAKoD,QAAQ4wC,uBAAuB,QAAqB,GACvEh0C,KAAK68H,eAOhBnb,EAAKxhH,UAAU48H,sBAAwB,WAEnC,OADA98H,KAAK68H,cAAgB78H,KAAKoD,QAAQ4wC,uBAAuB,QAAqB,GACvEh0C,KAAK68H,cAAc7xG,WAAWA,YAOzC02F,EAAKxhH,UAAU68H,SAAW,WACtB,OAAO/8H,KAAKg9H,WAShBtb,EAAKxhH,UAAU+8H,aAAe,SAAU75H,GACpCpD,KAAKg9H,UAAY55H,GASrBs+G,EAAKxhH,UAAU4+G,cAAgB,SAAUryG,GACrC,OAAIzM,KAAKw0B,sBAAwBx0B,KAAKu1B,cAAcC,kBACzCx1B,KAAKg0G,eAAe8K,cAAcryG,GAGlCzM,KAAKi0G,cAAc6K,cAAcryG,IAWhDi1G,EAAKxhH,UAAUg9H,qBAAuB,SAAUzwH,GAC5C,OAAOzM,KAAKi0G,cAAc6K,cAAcryG,IAS5Ci1G,EAAKxhH,UAAUi9H,oBAAsB,SAAU1wH,GAC3C,OAAOzM,KAAKi0G,cAAc6K,cAAcryG,IAO5Ci1G,EAAKxhH,UAAU2pG,QAAU,WACrB,OAAO7pG,KAAKi0G,cAAcmpB,kBAS9B1b,EAAKxhH,UAAUm9H,yBAA2B,SAAU5wH,GAChD,OAAOzM,KAAKi0G,cAAc6K,cAAcryG,IAS5Ci1G,EAAKxhH,UAAUo9H,WAAa,SAAUh9H,GAClC,IAAIg/B,EAAMh/B,EACN+zB,EAAO,CAAE/zB,OAAQA,GACrB,IAAK,eAAkBA,IAAW,eAAkB,gBAAag/B,EAAK,wBAC/D,eAAkB,gBAAaA,EAAK,wBAAyB,CAChE,IAAI6nC,EAAO,eAAQ7nC,EAAK,IAAM,QAC9B,IAAK6nC,EAAM,CACP,IAAIo2D,EAAQ,eAAQj+F,EAAK,IAAM,QAC/B,IAAK,eAAkBi+F,KAAWA,EAAMr4H,UAAUmB,SAAS,cAAe,CACtE,IAAIm3H,EAASx9H,KAAKy9H,oBAAoBF,EAAM7yH,aAAa,aACrDob,EAAWnU,SAAS4rH,EAAM7yH,aAAa,QAAwB,IACnE2pB,EAAO,CAAE1S,IAAK47G,EAAOG,QAASF,EAAOlgH,KAAMwI,SAAUA,GAEzD,OAAOuO,EAEX,IAAI+qF,EAAYztG,SAASw1D,EAAKz8D,aAAa,QAAwB,IAC/DizH,EAAQ,eAAQx2D,EAAM,IAAM,QAChC,IAAK,eAAkBA,KAAUvpD,MAAMwhG,KAAe,eAAkBue,GAAQ,CACxE73G,EAAWnU,SAASgsH,EAAMjzH,aAAa,QAAwB,IAAnE,IACIkY,EAAO5iB,KAAKi0G,cAAcpK,UAC1Bp9F,EAAQ2yG,EAAYp/G,KAAKymE,iBACzBu7B,EAAap/E,EAAKxE,QAAO,SAAUxd,GAAK,OAAOA,EAAEi4B,MAAQ8kG,EAAMjzH,aAAa,eAC5EgzH,EAAU,GACVh8G,OAAS,EACTjiB,OAAO2V,KAAK4sF,GAAYrhG,SACxB+8H,EAAU17B,EAAW,GAAG1kF,KACxBoE,EAASsgF,EAAW,GAAG/6B,MAAMt1D,SAASlF,EAAMmF,WAAY,KAAK8P,QAEjE2S,EAAO,CAAE8yC,KAAMA,EAAMi4C,UAAWA,EAAWz9F,IAAKg8G,EAAO73G,SAAUA,EAAU43G,QAASA,EAASh8G,OAAQA,EAAQphB,OAAQA,IAG7H,OAAO+zB,GAQXqtF,EAAKxhH,UAAU09H,eAAiB,WAC5B,OAAO59H,KAAKi0G,cAAcmpB,kBAQ9B1b,EAAKxhH,UAAU29H,mBAAqB,WAChC,OAAO79H,KAAKi0G,cAAcmpB,kBAO9B1b,EAAKxhH,UAAUs/G,YAAc,WACzB,OAAOx/G,KAAK89H,kBAOhBpc,EAAKxhH,UAAU49H,eAAiB,SAAUC,GACtC,GAAI,eAAkB/9H,KAAKikE,kBAAkB/3D,cAAc,SACvD,MAAO,GAEX,IAAI8rD,EAAQh4D,KAAKikE,kBAAkB/3D,cAAc,QAC7C0W,EAAO,GAAGlV,MAAMpK,KAAK00D,EAAM/R,UAC/B,GAAIjmD,KAAKggE,WAAY,CACjB,IAAIg+D,EAAWh+H,KAAKsrG,iBAAiBp/F,cAAc,QAC/C+xH,EAAa,GAAGvwH,MAAMpK,KAAK06H,EAAS/3E,UACxCrjC,EAAO5iB,KAAKk+H,eAAeD,EAAYr7G,GAE3C,IAAIu7G,EAAWn+H,KAAKo+H,iBAAiBx7G,EAAMm7G,GAC3C,OAAOI,GAQXzc,EAAKxhH,UAAUg+H,eAAiB,SAAUG,EAAOC,GAC7C,IAAK,IAAIt9H,EAAI,EAAG+X,EAAMulH,EAAM39H,OAAQK,EAAI+X,EAAK/X,IACzCq9H,EAAMhyH,KAAKiyH,EAAM3sH,SAAS3Q,EAAE4Q,WAAY,MAE5C,OAAOysH,GAEX3c,EAAKxhH,UAAUk+H,iBAAmB,SAAUx7G,EAAM27G,GAE9C,IADA,IAAIC,EAAQ,GACHx9H,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,KACpC4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,SAC/Cuc,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUmB,SAAS,iBAAkBk4H,IACvEv+H,KAAKy+H,yBACLD,EAAM7sH,SAASiR,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,iBAAkB,KAAOkY,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAGlH4sH,EAAMnyH,KAAKuW,EAAKjR,SAAS3Q,EAAE4Q,WAAY,OAInD,OAAO4sH,GAQX9c,EAAKxhH,UAAUw+H,mBAAqB,WAChC,OAAO1+H,KAAK2+H,yBAQhBjd,EAAKxhH,UAAUy+H,sBAAwB,SAAUZ,GAC7C,OAAO/9H,KAAK89H,eAAeC,IAQ/Brc,EAAKxhH,UAAU0+H,kBAAoB,WAC/B,OAAO5+H,KAAK6+H,wBAQhBnd,EAAKxhH,UAAU2+H,qBAAuB,SAAUd,GAC5C,OAAO/9H,KAAK89H,eAAeC,IAQ/Brc,EAAKxhH,UAAU4+H,uBAAyB,WACpC,OAAO9+H,KAAK++H,6BAQhBrd,EAAKxhH,UAAU6+H,0BAA4B,SAAUhB,GACjD,OAAO/9H,KAAK89H,eAAeC,IAY/Brc,EAAKxhH,UAAU8+H,aAAe,SAAUz+H,EAAK+yB,EAAOtW,GAChD,IAAIiqD,EAAQ,QACRy2D,EAAU,OACVuB,EAAS,QACTC,EAAS,MACTC,EAASn/H,KAAK45B,0BAA0B,GACxCutC,EAAO,IAAI,OAAannE,KAAMA,KAAK4xB,gBACnCwtG,EAAWp/H,KAAK8nG,sBAAsBx0E,GACtC8C,EAAMp2B,KAAK01B,iBAAiBpC,GAC5B+rG,EAAar/H,KAAKi0G,cAAcpK,UAChCy1B,EAAcD,EAAWjhH,QAAO,SAAUxd,GAC1C,OAAO,eAASu+H,EAAQv+H,EAAE0c,QAAU/c,KACrC,GACCq/F,EAAK0/B,EAAct/H,KAAKoD,QAAQ8I,cAAc,aAAeozH,EAAY,GAAKJ,GAAU,KAAO,KACnG,IAAK,eAAkBt/B,GAAvB,CACyB,kBAAV5iF,IACPA,EAAQhd,KAAKkL,SAAS8R,IAE1B,gBAASsW,EAAOtW,EAAOsiH,EAAY,GAAK5B,IAEpC19H,KAAK2lE,iBACL3gE,EAEJ,IAAIk8F,EAAKlhG,KAAKw0B,qBAAuBorE,EAAG35C,SAASt0C,SAASytH,EAASxtH,WAAY,KACzE5R,KAAK++G,iBAAiBugB,EAAY,GAAKL,GAASG,GACtD,IAAK,eAAkBl+B,GAAK,CACxB,IAAIq+B,EAAM,EACNv/H,KAAKu1B,cAAc7S,QAAQ/hB,SAC3By+H,GAAsBp/H,KAAKu1B,cAAc7S,QAAQ/hB,SAEjDX,KAAK0lE,WAAa1lE,KAAKylE,iBACvB25D,IAEAp/H,KAAK2lE,iBACLy5D,IAEJ,IAAII,EAAOF,EAAY,GAAKr4D,GAAOm4D,EAAWG,GAC9Cp4D,EAAKs4D,UAAUv+B,EAAIs+B,EAAMF,EAAY,GAAK5B,GAAU,CAAEjxH,MAAO6yH,EAAY,GAAKL,KAC1Ej/H,KAAKmI,UACL+4F,EAAKlhG,KAAKw0B,qBAAuBorE,EAAG35C,SAASt0C,SAASytH,EAASxtH,WAAY,KACrE5R,KAAK++G,iBAAiBugB,EAAY,GAAKL,GAASG,IAEtDp/H,KAAK+zB,WAAWpzB,OAAS,IACzBX,KAAKs0B,OAAO,QAA8B,IACtCt0B,KAAKu1B,cAAc7S,QAAQ/hB,OAAS,GACpCX,KAAKs0B,OAAO,QAAwB,KAIvC,eAAkBgrG,IAAiB,eAAkBA,EAAY,cAClEA,EAAY,WAAW,GAAKhsG,GAAStW,GAGzChd,KAAKiI,QAAQ,QAAsB,CAC/Bk/D,KAAM+5B,EAAIx/E,OAAQ0U,EAAK9Y,KAAMgiH,EAAY,GAAK5B,KAE9C19H,KAAKmI,SAA2C,MAAhC+4F,EAAGx2F,aAAa,aAAuBw2F,EAAGh8F,UAAUmB,SAAS,cAC7E66F,EAAGr6C,WAcnB66D,EAAKxhH,UAAUu9D,gCAAkC,SAAUiiE,EAAW/9B,GAClE,IAAIlyC,EAAUzvD,KACVA,KAAKmI,SAELnI,KAAKqI,cAAc,CAAC,uBAAmBkD,GAAW,WAC9C,IAAIo0H,KAAclwE,EAAQiW,YAAajW,EAAQrsD,QAAQ0pD,iBAAiB,gBAAgBnsD,QACpFiiB,EAAO+8G,EAAclwE,EAAQwU,kBAAkBnX,iBAAiB,UAChE2C,EAAQ+vD,cACZ/vD,EAAQmwE,uBAAuBh9G,EAAM+8G,GACjCh+B,GACAlyC,EAAQkyC,sBAYxB+f,EAAKxhH,UAAU0/H,uBAAyB,SAAUh9G,EAAM+8G,EAAaj9D,GAMjE,IALA,IAAIuE,EAAQ,QACRg4D,EAAS,QACT33D,EAAStnE,KAAKymE,iBACdo5D,EAAc,EACdC,GAAa,EACRj8G,EAAI,EAAGA,EAAIjB,EAAKjiB,OAAQkjB,IAAK,CAClC,IAAIk8G,EAAU//H,KAAKy9H,oBAAoB76G,EAAKjR,SAASkS,EAAEjS,WAAY,KAAKlH,aAAa,aACrF,GAAIi1H,IAAgBI,GAAW,gBAAan9G,EAAKjR,SAASkS,EAAEjS,WAAY,KAAM,eAAgB,CAC1F,IAAIo+F,EAAU,gBAAaptF,EAAKjR,SAASkS,EAAEjS,WAAY,KAAM,eAAeonH,cAAc,GAC1F+G,EAAU/vB,EAAQytB,oBAAoB76G,EAAKjR,SAASkS,EAAEjS,WAAY,KAAKlH,aAAa,aACpFm1H,EAAc7vB,EAAQvpC,iBACtBq5D,GAAa,EAEjB,GAAIC,GAAWA,EAAQz/B,YAAc,eAAkBy/B,EAAQtzH,SAC1DmW,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1M,UAAUmB,SAAS,eACrD,IAAK,IAAIrF,EAAI,EAAGA,EAAI++H,EAAQ,GAAK94D,GAAOtmE,OAAQK,IAAK,CACjD,IAAImmE,EAAO44D,EAAQ,GAAK94D,GAAOt1D,SAAS3Q,EAAE4Q,WAAY,KACtD,GAAIu1D,EAAKs6B,WAAY,CACjB,IAAIX,EAAe,IAAI,OAAa9gG,KAAMA,KAAK4xB,gBAC3CsvE,EAAKy+B,EAAc/8G,EAAKjR,SAASkS,EAAEjS,WAAY,KAC9Cq0C,SAASkhB,EAAK16D,OAASqzH,EAAaD,EAAcv4D,IAAWtnE,KAAK++G,iBAAiBl7F,EAAG6+C,EAAWyE,EAAK16D,MAAQzL,EAAIsmE,GACvHw5B,EAAa2+B,UAAUv+B,EAAI/5B,EAAM44D,EAAQziH,KAAM,CAAE7Q,MAAOszH,EAAQ,GAAKd,MAIjFa,GAAa,IAOrBpe,EAAKxhH,UAAU8/H,kCAAoC,WAG/C,IAFA,IAAIL,KAAc3/H,KAAK0lE,YAAa1lE,KAAKoD,QAAQ0pD,iBAAiB,gBAAgBnsD,QAC9EiiB,EAAO5iB,KAAKikE,kBAAkBnX,iBAAiB,yCAC1C9rD,EAAI,EAAGA,EAAI4hB,EAAKjiB,OAAQK,IAAK,CAElC,IAAIgvG,EAAUhwG,KACV+/H,EAAU//H,KAAKy9H,oBAAoB76G,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,aAKrF,GAJIi1H,IAAgBI,GAAW,gBAAan9G,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAM,iBAC1Eo+F,EAAU,gBAAaptF,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAM,eAAeonH,cAAc,GACtF+G,EAAU/vB,EAAQytB,oBAAoB76G,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,cAEpFq1H,EAAS,CACT,IAAI94D,EAAQ84D,EAAQ94D,MAAM7oD,QAAO,SAAU+oD,GAAQ,OAAOA,EAAKC,cAC3D/yC,EAAO,CAAE4yC,MAAOA,EAAO3pD,KAAMyiH,EAAQziH,KAAM2iH,QAASF,EAAQlnG,KAChEm3E,EAAQ17E,OAAO,QAA6BD,MASxDqtF,EAAKxhH,UAAUw9D,gCAAkC,SAAUgiE,GACvD,GAAI1/H,KAAKmI,QA6BL,IA5BA,IAAI8+D,EAAQ,QACR84D,EAAU//H,KAAK+yH,aAAanwG,KAC5Bw8F,EAAYp/G,KAAK+sG,yBAAyB2yB,GAC1CvtF,EAAU,SAAUtuB,GACpB,IAAIsjD,EAAO44D,EAAQpuH,SAASkS,EAAEjS,WAAY,KAAK,GAAKq1D,GAAOt1D,SAASytG,EAAUxtG,WAAY,KAC1F,GAAIu1D,GAAQA,EAAKzlD,OAAOmX,MAAQ6mG,EAAW,CACvC,IAAIQ,EAAqB,IAAI,EAAmB9tF,EAAQA,EAAOxgB,gBAC3DsvE,EAAK,gBAAa9uD,EAAOhvC,QAAQ0pD,iBAAiB,iBAAmB4yE,EAAY,KAAK,GAAI,kBAC9FQ,EAAmB5qH,QAAQ6xD,EAAM+5B,GACjC,IAAIltE,EAAOoe,EAAOlc,aAAaxT,QAC3BmD,EAAcmO,EAAKmsG,WAAU,SAAU/pG,GAAO,OAAOA,EAAI9C,QAAU6zC,EAAKzlD,OAAO4R,SACnF,IAAqB,IAAjBzN,EAAoB,CACpB,IAAI4F,EAAS2mB,EAAOmhE,uBAAuBpsC,EAAKzlD,OAAO4R,OACvD8e,EAAOk2D,YAAYp/B,QAAQz9C,EAASuI,EAAKriB,SAASkU,EAAYjU,WAAY,KAAc,UAAE2Q,eACtFyR,EAAKrzB,OAAS,GACd8qB,EAAOvf,cAAc,oBAAoB03D,aAAaxxB,EAAO7tC,cAAc,OAAQ,CAAEC,UAAW,eAAgBsG,WAAY+a,EAAc,GAAGjU,aAAe6Z,EAAOvf,cAAc,kBAErL,IAAIk0H,EAAgB30G,EAAOvf,cAAc,oBACoB,cAAzD8nB,EAAKriB,SAASkU,EAAYjU,WAAY,KAAK0kB,UAC3C,eAAU8pG,EAAe,CAAC,cAAe,oBAAqB,IAG9D,eAAUA,EAAe,CAAC,eAAgB,qBAAsB,OAK5EhuF,EAASpyC,KACJ6jB,EAAI,EAAGA,EAAIk8G,EAAQp/H,OAAQkjB,IAChCsuB,EAAQtuB,IAapB69F,EAAKxhH,UAAUu6H,WAAa,SAAUl6H,EAAKm9H,GACvC,IAAIwB,EAAS,MACTG,EAAar/H,KAAKi0G,cAAcpK,UAChCs1B,EAASn/H,KAAK45B,0BAA0B,GACxC55B,KAAKu1B,cAAc7S,QAAQ/hB,OAAS,GAAKX,KAAK+zB,WAAWpzB,OAAS,IAClE0+H,EAAaA,EAAWjhH,QAAO,SAAUuD,GAAO,OAAOA,EAAI2+E,cAE/D,IAAIg/B,EAAcD,EAAWjhH,QAAO,SAAUxd,GAC1C,OAAO,eAASu+H,EAAQv+H,EAAE0c,QAAU/c,KACrC,GACC8/H,EAAef,EAAc,GAAG5xH,MAAMpK,KAAKtD,KAAKoD,QAAQ0pD,iBAAiB,aAAewyE,EAAY,GAAKJ,GAAU,WAAQ3zH,EAC/H,IAAK,eAAkB+zH,IAAgBe,EAAa1/H,OAApD,CAEI,GADA2+H,EAAYplG,QAAUwjG,EAClB19H,KAAKggE,WAAY,CACjB,IAAIsgE,EAAStgI,KAAKiiG,gBAAgBq9B,EAAY7yH,OAC9CzM,KAAKugI,iBAAiBD,EAAQ5C,QAG9B19H,KAAKugI,iBAAiBjB,EAAa5B,GAEnC19H,KAAK+zB,WAAWpzB,OAAS,IACzBX,KAAKs0B,OAAO,QAA8B,IACtCt0B,KAAKu1B,cAAc7S,QAAQ/hB,OAAS,GACpCX,KAAKs0B,OAAO,QAAwB,OAQpDotF,EAAKxhH,UAAUqgI,iBAAmB,SAAUC,EAAK9C,GAC7C,IAAI9yB,EAAc,IAAI,OAAY5qG,KAAK4xB,eAAgB,KAAM5xB,MAC7DwgI,EAAItmG,QAAUwjG,EACd,gBAAmB8C,EAAKxgI,KAAKs3B,uBAAwBkpG,EAAItmG,SACzD0wE,EAAYt1F,QAAQkrH,EAAKxgI,KAAKozB,cAAc,IAUhDsuF,EAAKxhH,UAAU6+G,iBAAmB,SAAUj5F,EAAUD,GAClD,IAAIuQ,EAAMp2B,KAAKg/G,iBAAiBn5F,GAChC,OAAO,eAAwB7lB,KAAMo2B,EAAKtQ,EAAUD,IAWxD67F,EAAKxhH,UAAUugI,wBAA0B,SAAU36G,EAAUD,GACzD,OAAO7lB,KAAK++G,iBAAiBj5F,EAAUD,IAU3C67F,EAAKxhH,UAAUwgI,4BAA8B,SAAU56G,EAAUD,GAC7D,OAAO7lB,KAAK++G,iBAAiBj5F,EAAUD,IAS3C67F,EAAKxhH,UAAUggH,uBAAyB,SAAUzzG,GAC9C,OAAOzM,KAAKsrG,iBAAiBt3D,uBAAuB,gBAAgBriC,SAASlF,EAAMmF,WAAY,MASnG8vG,EAAKxhH,UAAUygI,8BAAgC,SAAUl0H,GACrD,OAAOzM,KAAKkgH,uBAAuBzzG,IASvCi1G,EAAKxhH,UAAU0gI,kCAAoC,SAAUn0H,GACzD,OAAOzM,KAAKkgH,uBAAuBzzG,IASvCi1G,EAAKxhH,UAAU2gI,iCAAmC,SAAUp0H,GACxD,OAAOzM,KAAKkgH,uBAAuBzzG,IASvCi1G,EAAKxhH,UAAUu9H,oBAAsB,SAAU5kG,GAC3C,IAAIjW,EAAO5iB,KAAKi0G,cAAcpK,UAC1BloF,EAAM3hB,KAAK8gI,UAAUl+G,EAAMiW,GAC/B,OAAI,eAAkBlX,IAAQ3hB,KAAKw0B,sBAAwBx0B,KAAKu1B,cAAc7S,QAAQ/hB,OAAS,GAC3FghB,EAAM3hB,KAAK8gI,UAAU9gI,KAAK8jH,MAAOjrF,GAC1BlX,GAEJA,GAEX+/F,EAAKxhH,UAAU4gI,UAAY,SAAUl+G,EAAMiW,GACvC,GAAIjW,EACA,IAAK,IAAI/U,EAAK,EAAGu/F,EAASxqF,EAAM/U,EAAKu/F,EAAOzsG,OAAQkN,IAAM,CACtD,IAAI8T,EAAMyrF,EAAOv/F,GACjB,GAAI8T,EAAIkX,MAAQA,EACZ,OAAOlX,EAInB,OAAO,MAMX+/F,EAAKxhH,UAAU+hG,cAAgB,WAC3B,OAAOjiG,KAAKi0G,cAAcpK,WAO9B6X,EAAKxhH,UAAU6gI,qBAAuB,WAClC,OAAO/gI,KAAKi0G,cAAcpK,WAO9B6X,EAAKxhH,UAAU8gI,yBAA2B,WACtC,OAAOhhI,KAAKi0G,cAAcpK,WAS9B6X,EAAKxhH,UAAUqzG,uBAAyB,SAAUjgF,GAC9C,IAAI5R,EAAS1hB,KAAK01B,iBAAiBpC,GACnC,OAAO5R,EAAS1hB,KAAKihI,qBAAqBv/G,EAAOmX,UAAOttB,GAS5Dm2G,EAAKxhH,UAAU+gI,qBAAuB,SAAUpoG,GAC5C,IAAIz1B,EAAUpD,KAAKigE,mBAAmB/zD,cAAc,iBAAmB2sB,EAAM,KAC7E,OAAOz1B,EAAUA,EAAQsyC,mBAAgBnqC,GAO7Cm2G,EAAKxhH,UAAU8+G,iBAAmB,SAAUvyG,GACxC,IAAIiV,EAKJ,OAJA1hB,KAAKozB,aAAamE,MAAK,SAAUnB,EAAKp1B,GAElC,OADA0gB,EAAS0U,EACFp1B,IAAMyL,KAEViV,GASXggG,EAAKxhH,UAAUw1B,iBAAmB,SAAUpC,GACxC,OAAO,gBAAqBtzB,KAAKozB,cAAc,SAAU7R,GACrD,GAAIA,EAAK+R,QAAUA,EACf,OAAO/R,KAGZ,IASPmgG,EAAKxhH,UAAU4nG,sBAAwB,SAAUx0E,GAE7C,IADA,IAAIU,EAAOh0B,KAAKozB,aACPpyB,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IAC7B,GAAIgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,QAAUA,EAC3C,OAAOtyB,EAGf,OAAQ,GASZ0gH,EAAKxhH,UAAU04B,eAAiB,SAAUC,GACtC,OAAO,gBAAqB74B,KAAKozB,aAAa5F,OAAOxtB,KAAKkhI,kBAAkBlhI,KAAK0iB,WAAW,SAAUnB,GAClG,GAAIA,EAAKsX,MAAQA,EACb,OAAOtX,KAGZ,IAQPmgG,EAAKxhH,UAAUghI,kBAAoB,SAAUx+G,EAAS25G,QAC5B,IAAlBA,IAA4BA,EAAgB,IAChD,IAAK,IAAIxuH,EAAK,EAAG6qB,EAAYhW,EAAS7U,EAAK6qB,EAAU/3B,OAAQkN,IAAM,CAC/D,IAAI6T,EAASgX,EAAU7qB,GACnB6T,EAAOgB,UACP25G,EAAchwH,KAAKqV,GACnB1hB,KAAKkhI,kBAAkBx/G,EAAOgB,QAAS25G,IAG/C,OAAOA,GASX3a,EAAKxhH,UAAUusG,oBAAsB,SAAU5zE,GAC3C,IAAIpsB,EAAQ,gBAAqBzM,KAAKozB,cAAc,SAAU7R,EAAM9U,GAChE,GAAI8U,EAAKsX,MAAQA,EACb,OAAOpsB,KAGZ,GACH,OAAQ,eAAkBA,IAAkB,EAATA,GASvCi1G,EAAKxhH,UAAUihI,oBAAsB,SAAU7tG,GAC3C,OAAO,gBAAqBtzB,KAAKozB,cAAc,SAAU7R,GACrD,GAAIA,EAAK+R,QAAUA,EACf,OAAO/R,EAAKsX,OAGjB,IASP6oF,EAAKxhH,UAAU6sG,yBAA2B,SAAUl0E,GAChD,IAAIpsB,EAAQzM,KAAKysG,oBAAoB5zE,GACrC,OAAOpsB,EAAQzM,KAAKymE,kBAQxBi7C,EAAKxhH,UAAUumE,eAAiB,WAC5B,IAAIh6D,EAAQ,EAcZ,OAbIzM,KAAKs1B,gBACL7oB,GAASzM,KAAKu1B,cAAc7S,QAAQ/hB,QAEpCX,KAAK6kG,YACLp4F,IAEAzM,KAAK2lE,iBAAmB,eAAkB3lE,KAAKi2G,gBAAgBC,WAC/DzpG,IAMGA,GAOXi1G,EAAKxhH,UAAUkhI,oBAAsB,WAGjC,IAFA,IACI1/G,EADA2/G,EAAc,GAETrgI,EAAI,EAAG+X,EAAM/Y,KAAKozB,aAAazyB,OAAQK,EAAI+X,EAAK/X,IACrD0gB,EAAS1hB,KAAKozB,aAAazhB,SAAS3Q,EAAE4Q,WAAY,KAC9C8P,EAAO/K,SACP0qH,EAAYh1H,KAAKqV,EAAO4R,OAGhC,OAAO+tG,GAQX3f,EAAKxhH,UAAUohI,eAAiB,WAC5B,OAAOthI,KAAK44H,eAQhBlX,EAAKxhH,UAAUm2G,uBAAyB,WACpC,OAAOr2G,KAAK64H,uBAQhBnX,EAAKxhH,UAAUqhI,kBAAoB,WAC/B,OAAOvhI,KAAK84H,kBAQhBpX,EAAKxhH,UAAUu7D,gBAAkB,WAC7B,OAAOz7D,KAAK07D,gBAQhBgmD,EAAKxhH,UAAUshI,sBAAwB,WACnC,OAAOxhI,KAAKyhI,sBAQhB/f,EAAKxhH,UAAUwhI,sBAAwB,WACnC,OAAO1hI,KAAK2hI,sBAOhBjgB,EAAKxhH,UAAU05B,wBAA0B,WAErC,IADA,IAAIxkB,EAAO,GACFoO,EAAI,EAAGA,EAAIxjB,KAAKk8G,YAAYv7G,OAAQ6iB,IACrCxjB,KAAKk8G,YAAYvqG,SAAS6R,EAAE5R,WAAY,KAAKyhB,cAC7Cje,EAAK/I,KAAKrM,KAAKk8G,YAAYvqG,SAAS6R,EAAE5R,WAAY,KAAK0hB,OAG/D,OAAOle,GAOXssG,EAAKxhH,UAAUoV,QAAU,WAChBtV,KAAKgpB,cACNhpB,KAAKm1B,iBAAkB,EACvBn1B,KAAK+yH,aAAa/lB,YAClBhtG,KAAK0yH,sBACL1yH,KAAKiyH,aAAa38G,YAQ1BosG,EAAKxhH,UAAUw4H,cAAgB,WAC3B14H,KAAK+yH,aAAa/lB,aAOtB0U,EAAKxhH,UAAU0hI,gBAAkB,WAC7B,OAAO5hI,KAAK8yC,gBAAkB9yC,KAAK8yC,gBAAgB+uF,gBAAkB,IAOzEngB,EAAKxhH,UAAUmgG,sBAAwB,WACnC,OAAOrgG,KAAK8yC,gBAAkB9yC,KAAK8yC,gBAAgBgvF,mBAAqB,IAO5EpgB,EAAKxhH,UAAU49G,0BAA4B,WACvC,OAAO99G,KAAK8yC,gBAAkB9yC,KAAK8yC,gBAAgB+qE,uBAAyB,IAQhF6D,EAAKxhH,UAAUy8G,mBAAqB,WAChC,OAAO38G,KAAK8yC,gBAAkB9yC,KAAK8yC,gBAAgB6pE,qBAAuB,IAQ9E+E,EAAKxhH,UAAU6hI,sBAAwB,WACnC,IAAItyE,EAAUzvD,KACV64B,EAAM,GAIV,OAHI74B,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBkvF,uBAAuB5jH,QAAO,SAAUpd,GAAK,OAAO63B,EAAIxsB,KAAKojD,EAAQr8B,aAAazhB,SAAS3Q,EAAE4Q,WAAY,KAAKinB,QAEhIA,GAOX6oF,EAAKxhH,UAAU87B,cAAgB,WAC3B,OAAOh8B,KAAKiyH,aAAa30G,MAU7BokG,EAAKxhH,UAAU+hI,YAAc,SAAU7sH,EAAMymG,GACzCA,EAASA,GAAkB,aAC3B77G,KAAK+2H,UAAU7mH,KAAKkF,EAAMymG,IAU9B6F,EAAKxhH,UAAUgiI,YAAc,SAAU9sH,EAAM2mG,GACzCA,EAASA,GAAkB,aAC3B/7G,KAAK+2H,UAAU7kH,KAAKkD,EAAM2mG,IAM9B2F,EAAKxhH,UAAUmwF,iBAAmB,WAC9B,OAAOrwF,KAAK0sG,cAAgB1sG,KAAKmiI,eAAeniI,KAAK0iB,QAAS,EAAG,IAMrEg/F,EAAKxhH,UAAUkiI,2BAA6B,WACxC,OAAOpiI,KAAK6hH,kBAAoB7hH,KAAK+hH,YAMzCL,EAAKxhH,UAAUwiG,0BAA4B,WACvC,OAAO1iG,KAAKgiH,iBAAmBhiH,KAAKiiH,WAMxCP,EAAKxhH,UAAUmiI,uBAAyB,WACpC,OAAOriI,KAAKmiH,cAAgBniH,KAAKoiH,cAErCV,EAAKxhH,UAAUs2H,yBAA2B,WACtC,GAAIx2H,KAAK8/D,iBAAmB9/D,KAAK6/D,2BAoD7B,IAnDA,IAAIu2D,EAAOp2H,KAAKozB,aACZkvG,GAAc,EACdC,EAAY,EACZC,EAAe,EACfC,EAAc,EACd7hC,EAAU,SAAU5/F,GACpB,IAAIo1B,EAAMggG,EAAKzkH,SAAS3Q,EAAE4Q,WAAY,KAItC,GAHI,eAAkBwkB,EAAI9wB,SAA0B,SAAf8wB,EAAIk6D,QAAoC,UAAfl6D,EAAIk6D,QAAqC,UAAfl6D,EAAIk6D,QAAsBl6D,EAAIssC,YAClHtsC,EAAI9wB,MAAQ6D,KAAKwS,IAAI,IAAKya,EAAIssG,SAAW57H,WAAWsvB,EAAIssG,SAAS9wH,YAAc,IAEjE,SAAdwkB,EAAI9wB,QAAoC,SAAf8wB,EAAIk6D,QAAoC,UAAfl6D,EAAIk6D,QAAqC,UAAfl6D,EAAIk6D,QAAsBl6D,EAAIssC,UAAW,CACrH,IAAIigE,EAAW,EACf,GAAIL,EAAa,CACblM,EAAKh4G,QAAO,SAAU4V,GAClB,GAAIA,EAAKrd,UACc,SAAfqd,EAAK1uB,OACLi9H,IAEe,SAAfvuG,EAAK1uB,OAAkB,CACvB,IAAIA,EAAS,eAAkB0uB,EAAK1uB,OAChC6D,KAAKwS,IAAI,IAAKqY,EAAK0uG,SAAW57H,WAAWktB,EAAK0uG,SAAS9wH,YAAc,GAD5B9K,WAAWktB,EAAK1uB,MAAMsM,YAEnE+wH,GAAYr9H,MAIxB,IAAIs9H,EAASC,EAAOC,yBAA4C,SAAjBD,EAAOv9H,MAAmBu9H,EAAOz/H,QAAQgE,wBAAwB9B,MAC5GwB,WAAW+7H,EAAOv9H,MAAMsM,YAC5B4wH,EAAiC,SAAlBK,EAAOx9H,OAAoBu9H,EAASD,EAAaC,EAASD,EAAY,iBACjFH,EAAe,IACfA,EAAe,GAEnBC,EAAc37H,YAAY07H,EAAeD,GAAW3wH,YACpDwkH,EAAKh4G,QAAO,SAAUgY,GACdA,EAAIzf,SACAyf,EAAIssG,UAAY57H,WAAWsvB,EAAIssG,SAAS9wH,YAAc6wH,IACtDD,GAA8B17H,WAAWsvB,EAAIssG,SAAS9wH,YACtD2wH,QAIZD,GAAc,EAEdlsG,EAAIssG,UAAY57H,WAAWsvB,EAAIssG,SAAS9wH,YAAc6wH,EACtDrsG,EAAI9wB,MAAQwB,WAAWsvB,EAAIssG,SAAS9wH,YAGpCwkB,EAAI9wB,MAAQk9H,EAAeD,IAInCM,EAAS7iI,KACJgB,EAAI,EAAGA,EAAIo1H,EAAKz1H,OAAQK,IAC7B4/F,EAAQ5/F,IAIpB0gH,EAAKxhH,UAAU6iI,yBAA2B,WACtC/iI,KAAKgjI,iBAAiBhjI,KAAK0iB,SAC3B1iB,KAAKw2H,2BACLx2H,KAAKskH,uBAAwB,GAMjC5C,EAAKxhH,UAAUslH,eAAiB,WAC5BxlH,KAAKgiH,gBAAkBhiH,KAAK6hH,iBAAmB7hH,KAAKmiH,aAAe,EACnEniH,KAAKuiH,kBAAoBviH,KAAK0iH,mBAAqB1iH,KAAK2iH,eAAiB,EACzE3iH,KAAK4iH,kBAAoB,GACzB5iH,KAAK6iH,mBAAqB,GAC1B7iH,KAAK8iH,eAAiB,GACtB9iH,KAAK+iH,aAAe,GACpB/iH,KAAKgjI,iBAAiBhjI,KAAK0iB,SAC3B1iB,KAAKiiH,UAAYjiH,KAAKgiH,gBACtBhiH,KAAK+hH,WAAa/hH,KAAK6hH,iBACvB7hH,KAAKoiH,aAAepiH,KAAKmiH,aAIrBniH,KAAKgiH,kBAAoBhiH,KAAK6hH,iBAC9B7hH,KAAKy7H,WAAa,OAEbz7H,KAAK6hH,mBAAqB7hH,KAAKgiH,gBACpChiH,KAAKy7H,WAAa,QAEbz7H,KAAKgiH,iBAAmBhiH,KAAK6hH,iBAClC7hH,KAAKy7H,WAAa,aAEbz7H,KAAK0sG,eAAiB1sG,KAAKggE,WAChChgE,KAAKy7H,WAAa,OAGlBz7H,KAAKy7H,gBAAalwH,GAO1Bm2G,EAAKxhH,UAAU+hE,0BAA4B,WACvC,OAAOjiE,KAAKuiH,mBAMhBb,EAAKxhH,UAAUiiE,2BAA6B,WACxC,OAAOniE,KAAK0iH,oBAMhBhB,EAAKxhH,UAAU+iI,uBAAyB,WACpC,OAAOjjI,KAAK2iH,gBAMhBjB,EAAKxhH,UAAU27H,sBAAwB,WACnC,OAAO77H,KAAK6iH,oBAMhBnB,EAAKxhH,UAAU07H,qBAAuB,WAClC,OAAO57H,KAAK4iH,mBAMhBlB,EAAKxhH,UAAUgjI,kBAAoB,WAC/B,OAAOljI,KAAK8iH,gBAEhBpB,EAAKxhH,UAAUijI,oBAAsB,SAAUzgH,GAC3C,IAAK,IAAI1hB,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAC5B0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACpC1iB,KAAKmjI,oBAAoBzgH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,SAGV,SAA/CA,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAqB5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,WACzC,IAAhDhgD,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAKuiH,oBAETviH,KAAKiiH,aAE+C,UAA/Cv/F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,SACW,IAAhD5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAK0iH,qBAET1iH,KAAK+hH,cAE+C,UAA/Cr/F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,SACW,IAAhD5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAKwiH,qBAETxiH,KAAKqiH,gBAG+C,IAAhD3/F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAK2iH,iBAET3iH,KAAKoiH,iBAKrBV,EAAKxhH,UAAUkjI,mBAAqB,SAAU1gH,EAASjW,EAAO42H,EAAKjtG,EAAKktG,GACpED,EAAI1xH,SAASlF,EAAMmF,WAAY,KAAOwkB,EAAI3J,WAC1C,IAAK,IAAIzrB,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAChC,GAAI0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACpCjW,GAAgB,EAChBzM,KAAKojI,mBAAmB1gH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAASjW,EAAO42H,EAAK3gH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAM0xH,GACtH72H,GAAgB,MAEf,CACD,IAAI82H,EAAW,GACfA,EAAWF,EAAI31H,QAAQA,MAAM,EAAGjB,EAAQ,GACW,SAA/CiW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAqB5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,UAC7F1iE,KAAKgjH,YAAY32G,KAAKk3H,GACtBvjI,KAAKojH,iBAAiB/2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OAEN,UAA/C8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QACzCtwF,KAAKijH,aAAa52G,KAAKk3H,GACvBvjI,KAAKqjH,kBAAkBh3G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,OAEP,UAA/C8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QACzCtwF,KAAKkjH,aAAa72G,KAAKk3H,GACvBvjI,KAAKsjH,kBAAkBj3G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,QAG3D5R,KAAKmjH,eAAe92G,KAAKk3H,GACzBvjI,KAAKujH,oBAAoBl3G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,SAK7E8vG,EAAKxhH,UAAUsjI,WAAa,SAAUhnH,EAAMinH,EAAOrtG,EAAK1T,EAASghH,GAC7D,GAAIttG,EAAI3J,aAAeg3G,EACfC,EACAttG,EAAI1T,QAAQrW,KAAKqW,GAGjB0T,EAAI1T,QAAQrW,KAAK,CAAEogB,WAAYjQ,EAAMkG,QAAS,UAIlD,GAAI0T,EAAI1T,SAAW0T,EAAI1T,QAAQ/hB,OAC3B,IAAK,IAAIK,EAAI,EAAGA,EAAIo1B,EAAI1T,QAAQ/hB,OAAQK,IACpChB,KAAKwjI,WAAWhnH,EAAMinH,EAAOrtG,EAAI1T,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAM8Q,EAASghH,IAK/FhiB,EAAKxhH,UAAUyjI,oBAAsB,SAAUC,EAAWC,EAAavzC,GAGnE,IAFA,IAAIl6D,EAAM,GACN0tG,EAAW,GACN9iI,EAAI,EAAGA,GAAK4iI,EAAUjjI,OAAQK,IAEnC,IADA,IAAI+iI,EAAWH,EAAU5iI,EAAI,GACpB6iB,EAAI,EAAGA,EAAIkgH,EAASpjI,OAAQkjB,IAWjC,GAVKuS,EAAI1T,SAAiB,IAAN1hB,GAKgD,IAA5D8iI,EAAS9/H,QAAQ+/H,EAASpyH,SAASkS,EAAEjS,WAAY,QACjD5R,KAAKwjI,WAAWO,EAASpyH,SAASkS,EAAEjS,WAAY,KAAMmyH,EAASlgH,EAAI,GAAIuS,GACvE0tG,EAASz3H,KAAK03H,EAASpyH,SAASkS,EAAEjS,WAAY,QANlDwkB,EAAM,CAAE3J,WAAYs3G,EAASpyH,SAASkS,EAAEjS,WAAY,KAAM8Q,QAAS,IACnEohH,EAASz3H,KAAK03H,EAASpyH,SAASkS,EAAEjS,WAAY,OAQ9CiS,IAAMkgH,EAASpjI,OAAS,EAAG,CAC3BX,KAAKwjI,WAAW,KAAMO,EAASpyH,SAASkS,EAAEjS,WAAY,KAAMwkB,EAAKytG,EAAY7iI,EAAI,IAAI,GACrF,IAAI+e,EAAQ,EACZ,MAAOA,IAAU6jH,EAAUjjI,OAAS,GAAKK,IAAM4iI,EAAUjjI,OACjDojI,EAASnyH,aAAegyH,EAAUjyH,SAAS3Q,EAAE4Q,WAAY,KAAKA,aAC9D5Q,IACAhB,KAAKwjI,WAAW,KAAMO,EAASpyH,SAASkS,EAAEjS,WAAY,KAAMwkB,EAAKytG,EAAY7iI,EAAI,IAAI,IAEzF+e,IAKD,SAAXuwE,EACAtwF,KAAK4iH,kBAAkBv2G,KAAK+pB,GAEZ,UAAXk6D,EACLtwF,KAAK6iH,mBAAmBx2G,KAAK+pB,GAG7Bp2B,KAAK8iH,eAAez2G,KAAK+pB,IAGjCsrF,EAAKxhH,UAAU8iI,iBAAmB,SAAUtgH,GACxC,GAAI1iB,KAAK0sG,eAAkB1sG,KAAKgkI,mBAA8D,IAAzChkI,KAAKgkI,kBAAkBt3B,cAAsB,CAC9F,IAAI14E,GAAQh0B,KAAK6/D,4BAA+B7/D,KAAK6/D,4BAA8B7/D,KAAKyiH,wBACpFziH,KAAK6/D,4BAA8B7/D,KAAKk8G,aAAel8G,KAAKk8G,YAAYv7G,OAASX,KAAKk8G,YAClFl8G,KAAKozB,aAAepzB,KAAK0iB,QACjC,IAAK1iB,KAAKgkI,mBAAsBhkI,KAAKgkI,oBAAsBhkI,KAAKgkI,kBAAkBt3B,cAC9E,IAAK,IAAI1rG,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IACzBhB,KAAK0sG,cAAgB1rG,EACrBgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,OAAS,OAEO,UAA5Ct8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAkE,UAA5Ct8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,OAC7Ft8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,OAASt8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,OAG3Et8D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,YAAS/kF,EAK1D,IAASvK,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAChC,GAAI0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAAS,CAC7C1iB,KAAKiiH,UAAY,EACjBjiH,KAAK+hH,WAAa,EAClB/hH,KAAKoiH,aAAe,EACpBpiH,KAAKqiH,WAAa,EAClB,IAAIghB,EAAM,GACVrjI,KAAKmjI,oBAAoBzgH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,UACzD1iB,KAAKiiH,WAAcjiH,KAAK+hH,YAAe/hH,KAAKoiH,cAAiBpiH,KAAKqiH,YAI7DriH,KAAK+hH,YAAe/hH,KAAKiiH,WAAcjiH,KAAKoiH,cAAiBpiH,KAAKqiH,YAIlEriH,KAAKoiH,cAAiBpiH,KAAKiiH,WAAcjiH,KAAK+hH,YAAe/hH,KAAKqiH,YAIlEriH,KAAKqiH,YAAeriH,KAAKiiH,WAAcjiH,KAAK+hH,YAAe/hH,KAAKoiH,cAOrEpiH,KAAKgiH,iBAAmBhiH,KAAKiiH,UAC7BjiH,KAAK6hH,kBAAoB7hH,KAAK+hH,WAC9B/hH,KAAKmiH,cAAgBniH,KAAKoiH,aAC1BpiH,KAAKsiH,YAActiH,KAAKqiH,WACxBriH,KAAKiiH,UAAY,EACjBjiH,KAAK+hH,WAAa,EAClB/hH,KAAKoiH,aAAe,EACpBpiH,KAAKqiH,WAAa,EAClBriH,KAAKgjH,YAAc,GACnBhjH,KAAKijH,aAAe,GACpBjjH,KAAKkjH,aAAe,GACpBljH,KAAKmjH,eAAiB,GACtBnjH,KAAKojH,iBAAmB,GACxBpjH,KAAKqjH,kBAAoB,GACzBrjH,KAAKsjH,kBAAoB,GACzBtjH,KAAKujH,oBAAsB,GAC3BvjH,KAAKojI,mBAAmB1gH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAAS,EAAG2gH,EAAK3gH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAM,CAAE6a,WAAY/J,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK6a,WAAY/J,QAAS,KACrL1iB,KAAKojH,iBAAiBziH,QACtBX,KAAK2jI,oBAAoB3jI,KAAKgjH,YAAahjH,KAAKojH,iBAAkB,QAElEpjH,KAAKqjH,kBAAkB1iH,QACvBX,KAAK2jI,oBAAoB3jI,KAAKijH,aAAcjjH,KAAKqjH,kBAAmB,SAEpErjH,KAAKsjH,kBAAkB3iH,QACvBX,KAAK2jI,oBAAoB3jI,KAAKkjH,aAAcljH,KAAKsjH,kBAAmB,SAEpEtjH,KAAKujH,oBAAoB5iH,QACzBX,KAAK2jI,oBAAoB3jI,KAAKmjH,eAAgBnjH,KAAKujH,oBAAqB,WAE5EvjH,KAAKgjH,YAAc,GACnBhjH,KAAKijH,aAAe,GACpBjjH,KAAKmjH,eAAiB,GACtBnjH,KAAKkjH,aAAe,GACpBljH,KAAKojH,iBAAmB,GACxBpjH,KAAKqjH,kBAAoB,GACzBrjH,KAAKujH,oBAAsB,GAC3BvjH,KAAKsjH,kBAAoB,KA1CzBtjH,KAAKsiH,YAActiH,KAAKqiH,WACxBriH,KAAK+iH,aAAa12G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACtD5R,KAAKmiH,cAAgBniH,KAAKoiH,aAC1BpiH,KAAK8iH,eAAez2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,QAPxD5R,KAAKmiH,cAAgBniH,KAAKoiH,aAC1BpiH,KAAK8iH,eAAez2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,QALxD5R,KAAK6hH,kBAAoB7hH,KAAK+hH,WAC9B/hH,KAAK6iH,mBAAmBx2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,QAL5D5R,KAAKgiH,iBAAmBhiH,KAAKiiH,UAC7BjiH,KAAK4iH,kBAAkBv2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,WAyDZ,UAA/C8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,SACgB,IAAhD5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAK0iH,qBAET1iH,KAAK6iH,mBAAmBx2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MAC5D5R,KAAK6hH,oBAE+C,SAA/Cn/F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAAqB5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,WAC9C,IAAhDhgD,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAKuiH,oBAETviH,KAAK4iH,kBAAkBv2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MAC3D5R,KAAKgiH,mBAE+C,UAA/Ct/F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QACzCtwF,KAAK+iH,aAAa12G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACtD5R,KAAKsiH,aACLtiH,KAAK8iH,eAAez2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACxD5R,KAAKmiH,kBAG+C,IAAhDz/F,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpC3W,KAAK2iH,iBAET3iH,KAAK8iH,eAAez2G,KAAKqW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MACxD5R,KAAKmiH,gBAIjB,GAAIniH,KAAK4iH,kBAAkBjiH,OAAQ,CAC3BqzB,EAAOh0B,KAAK4iH,kBAAkB5iH,KAAK4iH,kBAAkBjiH,OAAS,GAClEX,KAAKikI,aAAajkI,KAAK4iH,mBACvB5iH,KAAKkkI,wBAAwBlwG,aAAgB,OAASh0B,KAAKmkI,mBAAmBnkI,KAAK4iH,mBAAqB5uF,GAE5G,GAAIh0B,KAAK6iH,mBAAmBliH,OAAQ,CAC5BqzB,EAAOh0B,KAAK6iH,mBAAmB,GACnC7iH,KAAKikI,aAAajkI,KAAK6iH,oBACvB7iH,KAAKokI,yBAAyBpwG,aAAgB,OAASh0B,KAAKqkI,qBAAqBrkI,KAAK6iH,oBAAsB7uF,GAEhH,IAAKh0B,KAAK4iH,kBAAkBjiH,QAAUX,KAAK6iH,mBAAmBliH,SAAWX,KAAK8hH,oBAAqB,CAC3F9tF,EAAQh0B,KAAK4iH,kBAAkBp1F,OAAOxtB,KAAK8iH,gBAAiBt1F,OAAOxtB,KAAK6iH,oBAC5E7iH,KAAKiL,cAAc,CAAEyX,QAASsR,IAAQ,GACtCh0B,KAAK8hH,qBAAsB,IAGnCJ,EAAKxhH,UAAU+jI,aAAe,SAAUvhH,GACpC,IAAK,IAAI1hB,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAC5B0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,SAAWA,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAAQ/hB,QACxC,UAA/C+hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwT,QACW,SAA/C1C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwT,SACpC1C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwT,YAAS7Z,GAEjDvL,KAAKikI,aAAavhH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,UAGH,UAA/CA,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwT,QACW,SAA/C1C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwT,SACpC1C,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwT,YAAS7Z,IAK7Dm2G,EAAKxhH,UAAUokI,iBAAmB,SAAU5iH,EAAQ2hH,GAChD,GAAI3hH,EAAOgB,SAAWhB,EAAOgB,QAAQ/hB,OACjC,IAAK,IAAIK,EAAI,EAAGA,EAAI0gB,EAAOgB,QAAQ/hB,OAAQK,IACvChB,KAAKskI,iBAAiB5iH,EAAOgB,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAMyxH,GAC9D3hH,EAAOgB,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAC3C,eAAkB+K,EAAOgB,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,YAC3D,eAAkBhB,EAAOgB,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,SAC3D5uE,EAAOgB,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,WAC/C2gE,EAAIh3H,KAAK,aAKbqV,EAAO/K,SAAa,eAAkB+K,EAAO4uE,UAAW5uE,EAAOghD,UAC/D2gE,EAAIh3H,KAAK,SAIrBq1G,EAAKxhH,UAAUikI,mBAAqB,SAAUzhH,GAE1C,IADA,IAAIhB,EACK1gB,EAAI0hB,EAAQ/hB,OAAS,EAAGK,GAAK,EAAGA,IAAK,CAC1C,IAAIqiI,EAAM,GAEV,GADArjI,KAAKskI,iBAAiB5hH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAMyxH,GACvD3gH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UAAoC,IAAzB0sH,EAAIr/H,QAAQ,QAAgB,CAC3E0d,EAASgB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KACxC,OAGR,OAAO8P,GAEXggG,EAAKxhH,UAAUmkI,qBAAuB,SAAU3hH,GAE5C,IADA,IAAIhB,EACK1gB,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAAK,CACrC,IAAIqiI,EAAM,GAEV,GADArjI,KAAKskI,iBAAiB5hH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAMyxH,GACvD3gH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UAAoC,IAAzB0sH,EAAIr/H,QAAQ,QAAgB,CAC3E0d,EAASgB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KACxC,OAGR,OAAO8P,GAEXggG,EAAKxhH,UAAUgkI,wBAA0B,SAAUxhH,GAC/C,IAAI,eAAkBA,GAGtB,GAAIA,EAAQA,SAAWA,EAAQA,QAAQ/hB,OAAQ,CAC3C+hB,EAAQ0C,OAAS,OACjB,IAAI4O,EAAOtR,EAAQA,QAAQA,EAAQA,QAAQ/hB,OAAS,GACpDX,KAAKkkI,wBAAwBlwG,aAAgB,QAAUA,EAAKtR,QAAU1iB,KAAKmkI,mBAAmBzhH,EAAQA,SAAWsR,QAGjHtR,EAAQ0C,OAAS,QAGzBs8F,EAAKxhH,UAAUkkI,yBAA2B,SAAU1hH,GAChD,IAAI,eAAkBA,GAGtB,GAAIA,EAAQA,SAAWA,EAAQA,QAAQ/hB,OAAQ,CAC3C+hB,EAAQ0C,OAAS,QACjB,IAAI4O,EAAOtR,EAAQA,QAAQ,GAC3B1iB,KAAKokI,yBAAyBpwG,aAAgB,QAAUA,EAAKtR,QAAU1iB,KAAKqkI,qBAAqB3hH,EAAQA,SAAWsR,QAGpHtR,EAAQ0C,OAAS,SAOzBs8F,EAAKxhH,UAAUqkI,wBAA0B,WACrC,OAAOvkI,KAAKwkI,+BAAiCxkI,KAAKykI,sBAAsBzkI,KAAK0iB,QAAS,IAO1Fg/F,EAAKxhH,UAAUwkI,gBAAkB,WAC7B,OAAO1kI,KAAK+yG,aAAe/yG,KAAK+yG,aAAa2xB,kBAAoB,IAErEhjB,EAAKxhH,UAAUskI,6BAA+B,WAG1C,IAFA,IAAIG,EAAuB,EACvBjiH,EAAU1iB,KAAKk8G,YACVl7G,EAAI,EAAGA,EAAIhB,KAAK0sG,cAAe1rG,IAChC0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SACpCguH,IAGR,GAAK3kI,KAAKgiH,iBAAmBhiH,KAAKiiH,WAAejiH,KAAK6hH,kBAAoB7hH,KAAK+hH,WAC3E,IAAS/gH,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,KAC5B0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAA2D,SAA/C+L,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAClC,UAA/C5tE,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QACvCq0C,IAIZ,OAAOA,GAEXjjB,EAAKxhH,UAAUukI,sBAAwB,SAAUzwG,EAAM05E,GACnD,IAAM1tG,KAAKgiH,kBAAoBhiH,KAAKiiH,aAAgBjiH,KAAK6hH,mBAAqB7hH,KAAK+hH,YAC/E,IAAK,IAAI/gH,EAAI,EAAG+X,EAAMib,EAAKrzB,OAAQK,EAAI+X,EAAK/X,IACpCgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACjCgrF,EAAM1tG,KAAKykI,sBAAsBzwG,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAASgrF,GAGvE15E,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,UAAY1uC,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAC9E+2F,IAKhB,OAAOA,GAEXgU,EAAKxhH,UAAUiiI,eAAiB,SAAUnuG,EAAM05E,EAAKjhG,GACjD,IAAK,IAAIzL,EAAI,EAAG+X,EAAMib,EAAKrzB,OAAQK,EAAI+X,EAAK/X,IACpCgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACjCgrF,EAAM1tG,KAAKmiI,eAAenuG,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAASgrF,EAAKjhG,IAGrEunB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK8wD,UAAYj2D,EAAQzM,KAAK0sG,cAAgB,GAC1EgB,IAEJjhG,KAGR,OAAOihG,GASXgU,EAAKxhH,UAAU0kI,SAAW,SAAUC,GAC5B7kI,KAAKg1B,aACLh1B,KAAKg1B,YAAY4vG,SAASC,IAUlCnjB,EAAKxhH,UAAU4kI,sBAAwB,SAAUC,GACzC/kI,KAAKg1B,cAAgBh1B,KAAKslH,eAC1BtlH,KAAKg1B,YAAY8vG,sBAAsBC,IAY/CrjB,EAAKxhH,UAAU8kI,WAAa,SAAUnvG,EAAYS,EAAW2uG,GACrDjlI,KAAKklI,YACLllI,KAAKklI,WAAWF,WAAWnvG,EAAYS,EAAW2uG,IAiC1DvjB,EAAKxhH,UAAUilI,iBAAmB,SAAU/lH,EAAYsD,GACpD1iB,KAAK2jH,wBAAyB,EAC9B3jH,KAAKiL,cAAc,CAAEirB,aAAc,CAAExT,QAAS,MAAQ,GACtD1iB,KAAKiL,cAAc,CAAEqtB,eAAgB,CAAE5V,QAAS,MAAQ,GACxD1iB,KAAKiL,cAAc,CAAEgsB,eAAgB,CAAE12B,IAAK,MAAQ,GAChDP,KAAKs1B,eACLt1B,KAAKiL,cAAc,CAAEsqB,cAAe,CAAE7S,QAAS,MAAQ,GAEvDA,GAAWA,EAAQ/hB,QACnBX,KAAKiL,cAAc,CAAEyX,QAASA,IAAW,GAEzCtD,IACI,eAAkBsD,IAClB1iB,KAAKiL,cAAc,CAAEyX,QAAS,KAAM,GAExC1iB,KAAKiL,cAAc,CAAEmU,WAAYA,IAAc,IAEnDpf,KAAKm4H,gBACLn4H,KAAK2jH,wBAAyB,GAOlCjC,EAAKxhH,UAAUklI,aAAe,WACtBplI,KAAKklI,YACLllI,KAAKklI,WAAWE,gBAUxB1jB,EAAKxhH,UAAUmlI,iBAAmB,SAAU/xG,GACpCtzB,KAAKklI,YACLllI,KAAKklI,WAAWG,iBAAiB/xG,IAOzCouF,EAAKxhH,UAAUolI,iBAAmB,WAC9BtlI,KAAKiL,cAAc,CAAEirB,aAAc,CAAExT,QAAS,MAAQ,GACtD1iB,KAAKiL,cAAc,CAAEqtB,eAAgB,CAAE5V,QAAS,MAAQ,GACxD1iB,KAAKiL,cAAc,CAAEgsB,eAAgB,CAAE12B,IAAK,MAAQ,GAChDP,KAAKs1B,cACLt1B,KAAKiL,cAAc,CAAEsqB,cAAe,CAAE7S,QAAS,MAAQ,GAGvD1iB,KAAKm4H,iBAmBbzW,EAAKxhH,UAAUqlI,eAAiB,SAAUC,EAAWC,EAAgBC,EAAansG,EAAWosG,EAAW/tG,EAAcguG,EAAmBC,GACjI7lI,KAAK+yG,cACL/yG,KAAK+yG,aAAawyB,eAAeC,EAAWC,EAAgBC,EAAansG,EAAWosG,EAAW/tG,EAAcguG,EAAmBC,IASxInkB,EAAKxhH,UAAU4lI,eAAiB,SAAU5uG,GAClCl3B,KAAK+yG,cACL/yG,KAAK+yG,aAAa+yB,eAAe5uG,IAWzCwqF,EAAKxhH,UAAU6lI,0BAA4B,SAAUzyG,EAAO0yG,GACpDhmI,KAAK+yG,cACL/yG,KAAK+yG,aAAagzB,0BAA0BzyG,EAAO0yG,IAW3DtkB,EAAKxhH,UAAU46H,UAAY,SAAUruH,EAAOw5H,GACpCjmI,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBgoF,UAAUruH,EAAOw5H,IAU9CvkB,EAAKxhH,UAAUgmI,WAAa,SAAU/lB,GAC9BngH,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBozF,WAAW/lB,IAQxCuB,EAAKxhH,UAAU08G,eAAiB,WACxB58G,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgB8pE,kBAW7B8E,EAAKxhH,UAAUimI,WAAa,SAAU/mB,EAAW6mB,GACzCjmI,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBqzF,WAAW/mB,EAAW6mB,IAWnDvkB,EAAKxhH,UAAUi/G,mBAAqB,SAAUn3E,EAAYC,GACtDjoC,KAAK8yC,gBAAgBqsE,mBAAmBn3E,EAAYC,IAWxDy5E,EAAKxhH,UAAU83B,OAAS,SAAUy7E,GAC1BzzG,KAAKkyH,cACLlyH,KAAKkyH,aAAal6F,OAAOy7E,IAUjCiO,EAAKxhH,UAAUw+C,MAAQ,WACf1+C,KAAKkwF,aACLlwF,KAAKkwF,YAAYxxC,SAWzBgjE,EAAKxhH,UAAUkmI,aAAe,SAAUC,EAAW/oH,GAC3Ctd,KAAKi/G,YACLj/G,KAAKi/G,WAAWmnB,aAAaC,EAAW/oH,IAUhDokG,EAAKxhH,UAAUomI,UAAY,WACnBtmI,KAAKi/G,YACLj/G,KAAKi/G,WAAWqnB,aAQxB5kB,EAAKxhH,UAAU07B,QAAU,WACjB57B,KAAKi/G,YACLj/G,KAAKi/G,WAAWrjF,WAQxB8lF,EAAKxhH,UAAUm8G,UAAY,WACnBr8G,KAAKi/G,YACLj/G,KAAKi/G,WAAW5C,aAWxBqF,EAAKxhH,UAAUqmI,UAAY,SAAUjpH,EAAM7Q,GACnCzM,KAAKi/G,YACLj/G,KAAKi/G,WAAWsnB,UAAUjpH,EAAM7Q,IASxCi1G,EAAKxhH,UAAUsmI,UAAY,SAAU5mC,GAC7B5/F,KAAKi/G,YACLj/G,KAAKi/G,WAAWunB,UAAU5mC,IAWlC8hB,EAAKxhH,UAAUumI,SAAW,SAAUh6H,EAAO6mB,GACnCtzB,KAAKi/G,YACLj/G,KAAKi/G,WAAWwnB,SAASh6H,EAAO6mB,IASxCouF,EAAKxhH,UAAUwmI,SAAW,WAClB1mI,KAAKi/G,YACLj/G,KAAKi/G,WAAWynB,YAYxBhlB,EAAKxhH,UAAUg/G,WAAa,SAAUp5F,EAAUwN,EAAOtW,GAC/Chd,KAAKi/G,YACLj/G,KAAKi/G,WAAWC,WAAWp5F,EAAUwN,EAAOtW,IAapD0kG,EAAKxhH,UAAUymI,UAAY,SAAUl6H,EAAO6Q,GACpCtd,KAAKi/G,YACLj/G,KAAKi/G,WAAW0nB,UAAUl6H,EAAO6Q,IAQzCokG,EAAKxhH,UAAU0mI,gBAAkB,WAC7B,OAAI5mI,KAAKi/G,WACEj/G,KAAKi/G,WAAW2nB,kBAEpB,IAUXllB,EAAKxhH,UAAU2mI,mBAAqB,SAAU5zE,EAAO6zE,GAC7C9mI,KAAK4+D,eACL5+D,KAAK4+D,cAAcmoE,YAAY9zE,EAAO6zE,IAS9CplB,EAAKxhH,UAAU89G,KAAO,SAAUsB,GACxBt/G,KAAK23H,iBACL33H,KAAK23H,gBAAgB3Z,KAAKsB,IAOlCoC,EAAKxhH,UAAU8mI,kBAAoB,WAC/B,IAAIv3E,EAAUzvD,KACd,GAAKA,KAAKsrG,iBAAiBp/F,cAAc,kBAGnClM,KAAKu1B,cAAc7S,QAAQ/hB,QAAWX,KAAK6kG,YAAe7kG,KAAK2lE,mBACjE3lE,KAAKsrG,iBAAiBp/F,cAAc,gBAAgBxB,aAAa,oBAChE1K,KAAKikE,kBAFV,CAKA,IAAIgjE,EAAcjnI,KAAKsrG,iBAAiBp/F,cAAc,gBAAgBwpC,cAAclsC,YAChF09H,EAAY,GAAGx5H,MAAMpK,KAAKtD,KAAKsrG,iBAAiBp/F,cAAc,QAAmB+e,YACjFk8G,EAAa,GAAGz5H,MAAMpK,KAAKtD,KAAKikE,kBAAkB/3D,cAAc,QAAmB+e,YACnFm8G,EAAWH,EAAc,GACzBjmI,EAA6B,UAAzBhB,KAAKqmG,gBAA8BrmG,KAAKu1B,cAAc7S,QAAQ/hB,OAASX,KAAKozB,aAAazyB,OAAS,EACtG0mI,EAAernI,KAAKoD,QAAQoG,YAC5B89H,EAAa,SAAU76H,EAAOnH,GAC9B,GAAI,gBAAkBmqD,GAAU,CAC5B,IAAI83E,GAAYjiI,EAAQ+hI,EAAe,KAAKtjH,QAAQ,GAAK,IACzDmjH,EAAUv1H,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQiiI,EACxDJ,EAAWx1H,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQiiI,OAGzDL,EAAUv1H,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQA,EAAQ,KAChE6hI,EAAWx1H,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQA,EAAQ,KAErEmqD,EAAQn7B,OAAO,QAA2B,CAAE7nB,MAAOA,EAAOnH,MAAOA,KAEjE8hI,GAAY,IACZH,EAAe,GAAKG,GAEpBH,EAAc,IACdA,EAAc,IAEdjnI,KAAK6/D,4BAA8B7/D,KAAKo4G,WAAcp4G,KAAK0iB,QAAQ/hB,SAAWX,KAAKu1B,cAAc7S,QAAQ/hB,UACzGsmI,EAAc,IAElB,MAAOjmI,EAAIhB,KAAKu1B,cAAc7S,QAAQ/hB,OAClC2mI,EAAWtmI,EAAGimI,GACdjmI,IAEAhB,KAAK6kG,aACLyiC,EAAWtmI,EAAGimI,GACdjmI,KAEAhB,KAAK2lE,iBACL2hE,EAAWtmI,EAAGimI,GAElBjnI,KAAKo4G,WAAY,EACjBp4G,KAAKsrG,iBAAiBp/F,cAAc,gBAAgBvB,aAAa,kBAAmB,UAMxF+2G,EAAKxhH,UAAUsnI,iBAAmB,WAS9B,GARI,gBAAkBxnI,QAClBA,KAAKsrG,iBAAiBp/F,cAAc,gBAAgBtB,gBAAgB,mBACpE5K,KAAKw+D,aAAaG,oBAClB3+D,KAAKgnI,oBACDhnI,KAAKu7D,SACLv7D,KAAK43G,yBAGO,SAAf53G,KAAKsF,OAA4C,kBAAhBtF,KAAU,QAA+C,IAA7BA,KAAKsF,MAAMtB,QAAQ,OAC9EhE,KAAKozB,aAAahV,QAAO,SAAUgY,GAAO,QAASA,EAAI9wB,OAAuB,SAAd8wB,EAAI9wB,QAAqB8wB,EAAIssG,YAAa/hI,OAAS,EAAG,CACzH,IAAI8mI,EAAaznI,KAAKw+D,aAAakpE,cAAc1nI,KAAKozB,cACtDpzB,KAAKw+D,aAAampE,yBAAyBF,GAE3CznI,KAAK8/D,gBAAkB9/D,KAAK6/D,4BAA8B7/D,KAAKw+D,cAC/Dx+D,KAAKw+D,aAAaopE,yBAElB5nI,KAAK+jG,eAAoD,YAAnC/jG,KAAKgkG,iBAAiBC,UAC5CjkG,KAAKs0B,OAAO,QAAwB,IAEpCt0B,KAAKggE,YAAchgE,KAAKqvF,cACxBrvF,KAAKqvF,aAAa3rB,yBAO1Bg+C,EAAKxhH,UAAUylE,cAAgB,WAC3B,OAAO3lE,KAAK0mE,sBAAwB1mE,KAAKi2G,gBAAgBC,UAU7DwL,EAAKxhH,UAAU2nI,eAAiB,SAAUC,EAAWC,GAC7C/nI,KAAKgoI,eACLhoI,KAAKgoI,cAAcH,eAAeC,EAAWC,IAYrDrmB,EAAKxhH,UAAU+nI,qBAAuB,SAAUv1G,EAAWD,GACnDzyB,KAAKgoI,eACLhoI,KAAKgoI,cAAcC,qBAAqBv1G,EAAWD,IAY3DivF,EAAKxhH,UAAUgoI,2BAA6B,SAAU1C,EAAW/yG,GACzDzyB,KAAKgoI,eACLhoI,KAAKgoI,cAAcE,2BAA2B1C,EAAW/yG,IAWjEivF,EAAKxhH,UAAUkyB,YAAc,SAAU+1G,EAAa11G,GAC5CzyB,KAAKooI,sBACLpoI,KAAKooI,qBAAqBh2G,YAAY+1G,EAAa11G,IAQ3DivF,EAAKxhH,UAAUmoI,kBAAoB,SAAUl7H,GACzCnN,KAAKs0B,OAAO,oBAAqBnnB,IAOrCu0G,EAAKxhH,UAAUooI,aAAe,SAAU7hH,GACpC,IAAIgjF,EAAczpG,KAAKsrG,iBACnBi9B,EAAevoI,KAAKikE,kBACpBukE,EAAa/+B,EAAY38C,iBAAiB,uCAC1ClqC,EAAO5iB,KAAK6pG,UACZ4+B,EAAWhiH,EAAS,OAAS,GACjC,gBAAkBgjF,EAAYv9F,cAAc,QAAmB+e,WAAW,GAAI,CAAE,QAAWw9G,IAC3F,gBAAkBF,EAAar8H,cAAc,QAAmB+e,WAAW,GAAI,CAAE,QAAWw9G,IAC5F,IAAK,IAAIznI,EAAI,EAAGA,EAAIhB,KAAK6pG,UAAUlpG,OAAQK,IAAK,CAC5C,IAAIs+B,EAAM1c,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKo0C,kBACvCv/B,EACA,eAAS,CAAC6Y,GAAM,UAGhB,gBAAY,CAACA,GAAM,CAAC,WAG5B,IAAK,IAAIzb,EAAI,EAAGA,EAAI4lF,EAAY38C,iBAAiB,uCAAuCnsD,OAAQkjB,IAAK,CAC7Fyb,EAAMkpG,EAAW72H,SAASkS,EAAEjS,WAAY,KACxC6U,EACA,eAAS,CAAC6Y,GAAM,UAGhB,gBAAY,CAACA,GAAM,CAAC,aA4BhCoiF,EAAKxhH,UAAUwoI,eAAiB,SAAUC,GAClC3oI,KAAK4oI,cACL5oI,KAAK4oI,aAAaF,eAAeC,IAOzCjnB,EAAKxhH,UAAU03G,qBAAuB,WAClC,KAAK53G,KAAKw/D,kBAA8C,aAA1Bx/D,KAAK8jG,kBAC3B9jG,KAAKi7D,eAA8C,SAA7Bj7D,KAAK6oI,eAAeprH,MADlD,CAOA,IAHA,IAAIiF,EAAU1iB,KAAKozB,aACfq2E,EAAczpG,KAAKsrG,iBACnBw9B,EAAa,EACR9nI,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAChC,GAAI0hB,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+E,QAAS,CAC7C,GAAI3W,KAAKu1B,cAAc7S,QAAQ/hB,QACxBX,KAAKu1B,cAAc7S,QAAQ1e,QAAQ0e,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,QAAU,EAAG,CACvF,IAAI4zG,EAAY,GAAGx5H,MAAMpK,KAAKmmG,EAAYv9F,cAAc,YACnD4gD,iBAAiB,oEACtB,GAA4D,SAAxDo6E,EAAUv1H,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMC,QAC5C,SAGR,IAAI0b,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAGnC,CACDwjI,EAAa,EACb,MAJAA,GAAchiI,WAAW4b,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKtM,MAAMsM,YAQ/E,GAAIk3H,EAAY,CACZ,IAAIC,EAAkB/oI,KAAK8iI,wBACvBkG,EAAOhpI,KAAKipI,UAAUF,GACtBR,EAAevoI,KAAKikE,kBACxB,GAAIjkE,KAAKu1B,cAAc7S,QAAQ/hB,QAAUX,KAAK6kG,YAAc7kG,KAAK2lE,gBAC7D,KAAIshE,EAAcjnI,KAAKkpI,mBAAmBH,GACtCI,EAAwBlC,EAAYr1H,WAAao3H,EACjDI,EAAkB,GAAG17H,MAAMpK,KAAKmmG,EAAYv9F,cAAc,YACzD4gD,iBAAiB,sDAClBu8E,EAAmB,GAAG37H,MAAMpK,KAAKilI,EAAar8H,cAAc,YAC3D4gD,iBAAiB,sDACtB,IAAS9rD,EAAI,EAAGA,EAAIooI,EAAgBzoI,OAAQK,IACxCooI,EAAgBz3H,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMuiI,YAAY,QAASH,GACvEE,EAAiB13H,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMuiI,YAAY,QAASH,GACxEL,GAAc7B,GAGjB8B,GAAmBD,EAAa,MAC5BC,GAAmBD,EAAaP,EAAa7yF,cAAcnsC,eAC3D,eAAkBg/H,EAAar8H,cAAc,gBAK9C,eAAS,CAACu9F,EAAa8+B,GAAe,CAAC,mBAJvC,eAAS,CAAC9+B,GAAc,CAAC,kBACzB,gBAAY,CAAC8+B,GAAe,CAAC,oBAMrC,IAAIgB,EAAuBT,EAAWl3H,WAAao3H,EACnDv/B,EAAY1iG,MAAMuiI,YAAY,QAASC,GACvChB,EAAaxhI,MAAMuiI,YAAY,QAASC,QAGxCvpI,KAAKs5H,yBAGb5X,EAAKxhH,UAAUo5H,qBAAuB,WAClC,KAAKt5H,KAAKw/D,kBAA8C,aAA1Bx/D,KAAK8jG,kBAC3B9jG,KAAKi7D,eAA8C,SAA7Bj7D,KAAK6oI,eAAeprH,MADlD,CAIA,IAAIgsF,EAAczpG,KAAKsrG,iBACnBi9B,EAAevoI,KAAKikE,kBAIxB,GAHA,gBAAY,CAACwlC,EAAa8+B,GAAe,CAAC,kBAC1C9+B,EAAY1iG,MAAMyiI,eAAe,SACjCjB,EAAaxhI,MAAMyiI,eAAe,SAC9BxpI,KAAKu1B,cAAc7S,QAAQ/hB,QAAUX,KAAK6kG,YAAc7kG,KAAK2lE,gBAAiB,CAC9E,IAAIojE,EAAkB/oI,KAAK8iI,wBACvB2G,EAA0BzpI,KAAKkpI,mBAAmBH,GAAiBn3H,WAAa5R,KAAKipI,UAAUF,GAC/FK,EAAkB,GAAG17H,MAAMpK,KAAKmmG,EAAYv9F,cAAc,YACzD4gD,iBAAiB,sDACtBs8E,EAAgBn6C,SAAQ,SAAU7rF,GAC9BA,EAAQ2D,MAAMuiI,YAAY,QAASG,MAEvChgC,EAAYv9F,cAAc,gBAAgBtB,gBAAgB,mBAC1D5K,KAAKgnI,uBAGbtlB,EAAKxhH,UAAU+oI,UAAY,SAAUF,GACjC,OAAOA,EAAkB,IAAM,MAEnCrnB,EAAKxhH,UAAUgpI,mBAAqB,SAAUH,GAC1C,OAAOA,EAAkBjiI,YAAY,GAAK9G,KAAKoD,QAAQoG,YAAc,KAAKua,QAAQ,IAAM,IAE5F29F,EAAKxhH,UAAU4iI,sBAAwB,WACnC,OAAO9iI,KAAKozB,aAAa,GAAG9tB,MAAMsM,WAAW5N,QAAQ,MAAQ,GASjE09G,EAAKxhH,UAAUwpI,oBAAsB,SAAU1jI,EAAGC,EAAG3F,GAC7CN,KAAK2pI,qBACL3pI,KAAK2pI,oBAAoBC,oBAAoB5jI,EAAGC,EAAG3F,IAG3DohH,EAAKxhH,UAAUmmH,mBAAqB,WAChCrmH,KAAK4xB,eAAe0oF,SAAS,eAAgBt6G,KAAKw+D,aAAe,IAAI,OAAmBx+D,OACxFA,KAAK4xB,eAAe0oF,SAAS,sBAAuB,IAAI,GACxDt6G,KAAK4xB,eAAe0oF,SAAS,kBAAmB,IAAI,GACpDt6G,KAAK4xB,eAAe0oF,SAAS,eAAgBt6G,KAAK6pI,UAAY,IAAI,OAAK7pI,KAAK8U,gBAAiB9U,KAAKwnH,cAAexnH,KAAK4pD,SACtH5pD,KAAK4xB,eAAe0oF,SAAS,iBAAkBt6G,KAAK8pI,sBAAwB,IAAI,OAAe9pI,KAAK4pD,SACpG5pD,KAAK4xB,eAAe0oF,SAAS,kBAAmBt6G,KAAK+2H,UAAY,IAAI,GAAS/2H,OAC9EA,KAAK4xB,eAAe0oF,SAAS,cAAet6G,KAAKsoG,YAAc,IAAI,QACnEtoG,KAAK4xB,eAAe0oF,SAAS,QAASt6G,KAAK+3G,YAAc,IAAI,OAAc/3G,QAE/E0hH,EAAKxhH,UAAUqyH,aAAe,WAC1B,IAEI13C,EACAh3D,EAHAkmH,EAAQ/pI,KAAKu1B,cAAc7S,QAC3BsnH,EAAQhqI,KAAKk2B,aAAaxT,QAG9B,GAAI1iB,KAAKs1B,cAiCL,IAhCA,IAAI20G,EAAU,SAAUjpI,EAAG+X,GACvB8K,EAAI,EACJ,IAAK,IAAIqmH,EAAOF,EAAMrpI,OAAQkjB,EAAIqmH,EAAMrmH,IACpC,GAAImmH,EAAMr4H,SAASkS,EAAEjS,WAAY,KAAK0hB,QAAUy2G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KAAM,CAC/EipE,GAAO,EACP,MAcR,GAXKA,EAIGsvD,EAAOl0G,aACPk0G,EAAOvkB,cAAcv5G,KAAK29H,EAAMr4H,SAASkS,EAAEjS,WAAY,KAAK0hB,OAG5D02G,EAAMr4H,SAASkS,EAAEjS,WAAY,KAAK0kB,UAAY,YAPlD0zG,EAAM39H,KAAK,CAAEinB,MAAOy2G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KAAM0kB,UAAW,YAAa8zG,aAAa,KAU3FD,EAAO50G,cAAc80G,kBAAmB,CACzC,IAAI3oH,EAASyoH,EAAOtqE,2BAChBsqE,EAAOznH,QAAQtE,QAAO,SAAU3d,GAAK,OAAOA,EAAE6yB,QAAUy2G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,QAAS,GAC5Fu4H,EAAOz0G,iBAAiBq0G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,MACvD8P,EACAA,EAAO/K,SAAU,EAGjBwzH,EAAOx0G,IAAI,iBAAkB,CAAEC,WAAY,QAASC,WAAYk0G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,SAIrGu4H,EAASnqI,KACJgB,EAAI,EAAG+X,EAAMgxH,EAAMppI,OAAQK,EAAI+X,EAAK/X,IACzCipI,EAAQjpI,EAAG+X,GAGnB,IAAKgxH,EAAMppI,OACP,IAASK,EAAI,EAAGA,EAAIgpI,EAAMrpI,OAAQK,IAC9BhB,KAAK4lH,cAAcv5G,KAAK29H,EAAMr4H,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OASlE,GANAtzB,KAAK44H,cAAgB,gBAAiB54H,KAAKu/F,aAC3Cv/F,KAAK64H,sBAAwB,gBAAiB74H,KAAKm2G,qBACnDn2G,KAAK84H,iBAAmB,gBAAiB94H,KAAKylE,gBAC9CzlE,KAAK07D,eAAiB,gBAAiB17D,KAAKk+G,aAAavxF,UACzD3sB,KAAKyhI,qBAAuB,gBAAiBzhI,KAAKk+G,aAAa1hD,gBAC/Dx8D,KAAK2hI,qBAAuB,gBAAiB3hI,KAAKk+G,aAAa74C,iBAC1D,eAAkBrlE,KAAKshG,eAAgB,CACxC,IAAItkF,EAAQ,eAAkBhd,KAAKshG,cAAcgpC,qBAAuB,YACpEtqI,KAAKshG,cAAcgpC,oBACvBtqI,KAAKsf,MAAMyY,MAAM/3B,KAAK+vD,YAAa,QAAS/yC,GAAO,GAEvDhd,KAAKuqI,qBAET7oB,EAAKxhH,UAAUqqI,kBAAoB,WAC3BvqI,KAAKmmH,oBAAoBnmH,KAAKozB,eAC9BpzB,KAAKs0B,OAAO,QAA6Bt0B,KAAKs3B,yBAGtDoqF,EAAKxhH,UAAU86H,wBAA0B,WACP,aAA1Bh7H,KAAK8jG,iBACL9jG,KAAKoD,QAAQ8B,UAAU4G,IAAI,oBAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,qBAGtCu8G,EAAKxhH,UAAUsyH,WAAa,WACxB,IAAI3uH,EACJ7D,KAAKy5H,YACyB,aAA1Bz5H,KAAK8jG,kBACL9jG,KAAKoD,QAAQ8B,UAAU4G,IAAI,oBAE3B9L,KAAKm3H,aACLn3H,KAAKoD,QAAQ8B,UAAU4G,IAAI,eAE3B,OAAQ6D,UACR3P,KAAKoD,QAAQ8B,UAAU4G,IAAI,YAE3B9L,KAAK+iG,WACL/iG,KAAKoD,QAAQ8B,UAAU4G,IAAI,qBAE3B9L,KAAKyK,YAC+B,IAAhCzK,KAAKyK,SAASzG,QAAQ,MACrBH,EAAK7D,KAAKoD,QAAQ8B,WAAW4G,IAAIhJ,MAAMe,EAAI7D,KAAKyK,SAASxG,MAAM,MAGhEjE,KAAKoD,QAAQ8B,UAAU4G,IAAI9L,KAAKyK,WAIpCzK,KAAK0mE,qBAAuB1mE,KAAKi2G,gBAAgBC,UAAkC,YAAtB,OAAQlvF,KAAKhX,MAC1EhQ,KAAKoD,QAAQ8B,UAAU4G,IAAI,uBAE/B,eAAU9L,KAAKoD,QAAS,CAAC,eAAgB,aAAc,IACvD,IAAIonI,EAAkBxqI,KAAK4xB,eAAe+uE,WAAW,mBACrD3gG,KAAK+yH,aAAeyX,EAAgB93B,YAAY,OAAW7H,QAC3D7qG,KAAKi0G,cAAgBu2B,EAAgB93B,YAAY,OAAWE,SAC5D5yG,KAAKkwF,YAAc,IAAI,QAAMlwF,KAAMA,KAAKqvF,cACxCrvF,KAAK23H,gBAAkB,IAAI,GAAU33H,KAAMA,KAAK4xB,gBAChD5xB,KAAKiyH,aAAat+G,SAClB3T,KAAKs3H,mBACLt3H,KAAKyqI,yBACLzqI,KAAKw+D,aAAaG,oBAClB3+D,KAAKi6H,kBACLj6H,KAAKm6H,gBACLn6H,KAAK4tB,gBACL5tB,KAAK43H,sBAETlW,EAAKxhH,UAAUwqI,UAAY,WACvB1qI,KAAKqvF,aAAa5wB,WAClBz+D,KAAKqvF,aAAa3vB,YACE,SAAhB1/D,KAAKqF,QACLrF,KAAKqvF,aAAa9uB,cAG1BmhD,EAAKxhH,UAAUu5H,UAAY,WACnBz5H,KAAKyF,UACLzF,KAAKoD,QAAQ8B,UAAU4G,IAAI,SAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,UAGtCu8G,EAAKxhH,UAAUuqI,uBAAyB,WACpC,IAAIE,EAAQ3qI,KAAKuE,cAAc,MAAO,CAAEC,UAAW,cAAe0K,OAAQ,kBACtErE,EAAU7K,KAAKuE,cAAc,MAAO,CAAEC,UAAW,OAAkBwK,MAAO,CAAEw+F,SAAU,QAC1F,eAAO,CAAC3iG,EAAS7K,KAAKuE,cAAc,MAAO,CAAEC,UAAW,qBAAuBmmI,GAC/E9/H,EAAQnG,YAAY1E,KAAKuE,cAAc,SACvC,eAAO,CAACsG,EAAS7K,KAAKuE,cAAc,MAAO,CAAEC,UAAW,uBAAyBmmI,GACjF3qI,KAAKoD,QAAQsB,YAAYimI,IAE7BjpB,EAAKxhH,UAAU+5H,gBAAkB,WAE7B,OADA,eAAUj6H,KAAKoD,QAAS,GAAI,CAAC,kBAAmB,oBAAqB,cAAe,gBAC5EpD,KAAK4qI,WACT,IAAK,aACD5qI,KAAKoD,QAAQ8B,UAAU4G,IAAI,qBAC3B,MACJ,IAAK,WACD9L,KAAKoD,QAAQ8B,UAAU4G,IAAI,mBAC3B,MACJ,IAAK,OACD9L,KAAKoD,QAAQ8B,UAAU4G,IAAI,eAC3B,MACJ,IAAK,OACD9L,KAAKoD,QAAQ8B,UAAU4G,IAAI,eAC3B,MAER9L,KAAKg6H,qBAETtY,EAAKxhH,UAAU85H,kBAAoB,WAC3Bh6H,KAAKi7D,eACgB,aAAnBj7D,KAAK4qI,WAA+C,SAAnB5qI,KAAK4qI,UACxC5qI,KAAKoD,QAAQ8B,UAAU4G,IAAI,kBAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,mBAStCu8G,EAAKxhH,UAAUi6H,cAAgB,WAC3B,GAAIn6H,KAAK+jG,cAAe,CACpB,IAAIykC,EAAa,GAAG96H,MAAMpK,KAAKtD,KAAKoD,QAAQ4wC,uBAAuB,mBACnE,OAAQh0C,KAAKgkG,iBAAiBC,UAC1B,IAAK,SACD,gBAAKjkG,KAAKoD,SAAS,GACnB,gBAAKpD,KAAK4/D,cAAc,GACxB,gBAAK4oE,GAAY,GACjB,MACJ,IAAK,UACD,gBAAKxoI,KAAK4/D,cAAc,GACxB,gBAAK5/D,KAAKoD,SAAS,GACnB,gBAAKolI,GAAY,GACjB,MACJ,QACI,gBAAKxoI,KAAKoD,SAAS,GACnB,gBAAKpD,KAAK4/D,cAAc,GACxB,gBAAK4oE,GAAY,GAEc,YAAnCxoI,KAAKgkG,iBAAiBC,UACtBjkG,KAAKs0B,OAAO,QAAwB,MAUhDotF,EAAKxhH,UAAUk6H,eAAiB,WAC5B,gBAAKp6H,KAAKoD,SAAS,GACnB,IAAIolI,EAAa,GAAG96H,MAAMpK,KAAKtD,KAAKoD,QAAQ4wC,uBAAuB,mBACnE,gBAAKw0F,GAAY,GACjB,gBAAKxoI,KAAK4/D,cAAc,GACe,YAAnC5/D,KAAKgkG,iBAAiBC,UACtBjkG,KAAKs0B,OAAO,QAAwB,KAS5CotF,EAAKxhH,UAAU0tB,cAAgB,WAC3B5tB,KAAKy3H,WAAa,IAAI,OAAQ,CAC1BrvH,QAAS,SACTyC,QAAS,GACTJ,SAAUzK,KAAKyK,SAAWzK,KAAKyK,SAAW,MAC3CzK,KAAKoD,UAKZs+G,EAAKxhH,UAAUi4H,cAAgB,YACvBn4H,KAAKw0B,sBAAwBx0B,KAAKy0B,2BAClCz0B,KAAK00B,aAAaC,YAAc,GAEpC30B,KAAK0jH,oBAEThC,EAAKxhH,UAAU2qI,iBAAmB,SAAUznI,GACxC,IAAIqmG,EAAczpG,KAAKsrG,iBACnBw/B,EAAe9qI,KAAKw/D,kBAA8C,aAA1Bx/D,KAAK8jG,iBAAkC,gBAAkB,eACjGinC,EAAS/qI,KAAK+pG,YAAYN,EAAaqhC,EAAc,UACrDE,EAAShrI,KAAK+pG,YAAYN,EAAaqhC,EAAc,WACrDzzE,EAAQj0D,EAAQ8B,UAAUmB,SAAS,gBAAkB0kI,EAASC,EAC9D1rG,EAAMl8B,EAAQ8B,UAAUmB,SAAS,gBAAkB,KAAO,KAC9DgxD,EAAMnrD,cAAcozB,GAAK96B,UAAYpB,EAAQoB,UAC7C6yD,EAAMnrD,cAAcozB,GAAKx0B,UAAY1H,EAAQ0H,UAC7C,IAAIxF,EAAQ+xD,EAAMnrD,cAAcozB,GAAKl4B,wBAAwB9B,MAG7D,OAFAsI,SAAS6B,KAAKs9C,YAAYg+E,GAC1Bn9H,SAAS6B,KAAKs9C,YAAYi+E,MACrB1lI,EAAQlC,EAAQgE,wBAAwB9B,QAAUlC,EAAQ8B,UAAUmB,SAAS,sBAC7ErG,KAAKw/D,kBAA8C,aAA1Bx/D,KAAK8jG,kBAC3Bx+F,EAAiD,IAAxClC,EAAQgE,wBAAwB9B,OAAiC,SAAhBtF,KAAKqF,OAAoB,GAAK,KAKpGq8G,EAAKxhH,UAAUqpB,iBAAmB,SAAUpc,GACxC,GAAInN,KAAKs4H,oBAAqB,CAC1B,IAAIl1H,EAAU,gBAAa+J,EAAE7M,OAAQ,qBACjCN,KAAKirI,cAAgB7nI,GAAsB,aAAX+J,EAAEqB,MAClCxO,KAAKy3H,WAAW5xH,QAEpB,IAAI6J,EAAUvC,EAAE7M,OAAOoP,QACnBw7H,EAAY,CAAC,IAAK,SAAU,SAChC,GAAI9nI,GAAsB,aAAX+J,EAAEqB,QAAyB,OAAQmB,WAA4C,IAAhCu7H,EAAUlnI,QAAQ0L,KACxE1P,KAAK6qI,iBAAiBznI,GAAU,CAChC,IAAIgzB,EAAMp2B,KAAKozB,aAAazhB,SAASvO,EAAQsH,aAAa,QAAwB,KAC9EsmG,EAAY56E,EAAI4kC,kBAAoB,YAAc,YAClDg2B,EAAahxF,KAAKuE,cAAc,OACpC,GAAInB,EAAQ4wC,uBAAuB,gBAAgBrzC,OAAQ,CACvD,IAAIwqI,EAAe/nI,EAAQ4wC,uBAAuB,gBAAgB,GAClEg9C,EAAW,GAAKggB,GAAahxG,KAAKkL,SAASigI,EAAa3gF,WACxDxqD,KAAKy3H,WAAW5sH,QAAUmmF,OAG1BA,EAAW,GAAKggB,GAAahxG,KAAKkL,SAAS9H,EAAQonD,WACnDxqD,KAAKy3H,WAAW5sH,QAAUmmF,EAE9BhxF,KAAKirI,YAAc7nI,EACfpD,KAAKgL,sBACLhL,KAAKy3H,WAAWzsH,qBAAsB,GAEtCorB,EAAI4kC,oBACJh7D,KAAKy3H,WAAWtsH,iBAAkB,GAEtCnL,KAAKy3H,WAAW,QAAQr0H,MAKxCs+G,EAAKxhH,UAAUo4H,kBAAoB,WAC/B,IAAItkG,EAAOh0B,KAAKozB,aAChB,GAAsB,wBAAlBpzB,KAAKqwG,SACL,OAAO,EAEX,IAAK,IAAIrvG,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IAC7B,GAAkD,wBAA9CgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKy+F,SACjC,OAAO,EAGf,OAAO,GAEXqR,EAAKxhH,UAAUwT,cAAgB,WACvB1T,KAAKs4H,qBACLt4H,KAAKy3H,WAAW5xH,SAYxB67G,EAAKxhH,UAAU6pG,YAAc,SAAU1yC,EAAO+zE,EAAK58H,GAC/C,IAAI68H,EAAarrI,KAAKuE,cAAc,OACpC8mI,EAAW7mI,UAAYxE,KAAKoD,QAAQoB,UACpC6mI,EAAWtkI,MAAMwsC,QAAU,4DAC3B,IAAI+3F,EAAWtrI,KAAKuE,cAAc,OAClC+mI,EAAS9mI,UAAY4mI,EACrB,IAAIG,EAAUvrI,KAAKuE,cAAc,SACjCgnI,EAAQ/mI,UAAY6yD,EAAM7yD,UAC1B+mI,EAAQxkI,MAAMwsC,QAAU,iCACxB,IAAIjU,EAAgB,WAAT9wB,EAAqB,KAAO,KACnCg9H,EAAOxrI,KAAKuE,cAAc,KAAM,CAAEyK,MAAO,CAAEC,KAAM,SACjDw8H,EAAOzrI,KAAKuE,cAAc+6B,GAM9B,OALAksG,EAAK9mI,YAAY+mI,GACjBF,EAAQ7mI,YAAY8mI,GACpBF,EAAS5mI,YAAY6mI,GACrBF,EAAW3mI,YAAY4mI,GACvB19H,SAAS6B,KAAK/K,YAAY2mI,GACnBA,GAEX3pB,EAAKxhH,UAAUwrI,aAAe,SAAUv+H,GACnB,QAAbA,EAAE4vB,QAAiC,aAAb5vB,EAAE4vB,QACxB/8B,KAAKy3H,WAAW5xH,SASxB67G,EAAKxhH,UAAU0T,WAAa,WACxB,OAAa9H,IAAI9L,KAAKoD,QAAS,QAASpD,KAAK2rI,kBAAmB3rI,MAChE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK2rI,kBAAmB3rI,MACnE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK4rI,gBAAiB5rI,MACjE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK6rI,gBAAiB7rI,MACjE,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAK8rI,gBAAiB9rI,MAEhE,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAKwnI,iBAAkBxnI,MACtDA,KAAK+rI,gBACL/rI,KAAKoD,QAAQoqG,UAAsC,IAA3BxtG,KAAKoD,QAAQoqG,SAAkB,EAAIxtG,KAAKoD,QAAQoqG,UAE5ExtG,KAAK03H,eAAiB,IAAI,OAAe13H,KAAKoD,QAAS,CACnD4oI,UAAWhsI,KAAKisI,iBAAiBrmI,KAAK5F,MACtC6vH,WAAY7vH,KAAK6vH,WACjBl3B,UAAW,YAEf,OAAa7sF,IAAI9L,KAAK4/D,aAAa5Z,kBAAmB,SAAUhmD,KAAK0T,cAAe1T,MACpF,OAAa8L,IAAI9L,KAAKoD,QAAS,YAAapD,KAAKupB,iBAAkBvpB,MACnE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKupB,iBAAkBvpB,MAClE,OAAa8L,IAAI9L,KAAK4/D,aAAc,aAAc5/D,KAAKksI,SAAUlsI,MACjE,OAAa8L,IAAI8B,SAAS6B,KAAM,UAAWzP,KAAKu9G,eAAgBv9G,OAQpE0hH,EAAKxhH,UAAUuU,aAAe,WAC1B,OAAatP,OAAOnF,KAAKoD,QAAS,QAASpD,KAAK2rI,mBAChD,OAAaxmI,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK2rI,mBACnD,OAAaxmI,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK4rI,iBACnD,OAAazmI,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK6rI,iBACnD,OAAa1mI,OAAOnF,KAAK4/D,aAAa5Z,kBAAmB,SAAUhmD,KAAK0T,eACxE,OAAavO,OAAOnF,KAAKoD,QAAS,YAAapD,KAAKupB,kBACpD,OAAapkB,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKupB,kBACnD,OAAapkB,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAK8rI,iBAClD,OAAa3mI,OAAOnF,KAAK4/D,aAAc,aAAc5/D,KAAKksI,UAC1D,OAAa/mI,OAAOyI,SAAS6B,KAAM,UAAWzP,KAAKu9G,gBAEnD,OAAap4G,OAAOoB,OAAQ,SAAUvG,KAAKwnI,mBAM/C9lB,EAAKxhH,UAAUuyH,YAAc,WACrBzyH,KAAKgpB,cAGThpB,KAAKmpB,GAAG,QAAkBnpB,KAAK0qI,UAAW1qI,MAC1CA,KAAKmpB,GAAG,QAAqBnpB,KAAKgnI,kBAAmBhnI,MACrDA,KAAKmpB,GAAG,QAAwBnpB,KAAKgnI,kBAAmBhnI,MACxDA,KAAKmpB,GAAG,QAA8BnpB,KAAKmsI,sBAAuBnsI,MAClEA,KAAKmpB,GAAG,QAAiCnpB,KAAK+iI,yBAA0B/iI,MACxEA,KAAKosI,kBAAoBpsI,KAAKg3H,gBAAgBpxH,KAAK5F,MACnDA,KAAK+oB,iBAAiB,QAAkB/oB,KAAKosI,mBAC7CpsI,KAAKmpB,GAAG,QAAmBnpB,KAAK0rI,aAAc1rI,QAMlD0hH,EAAKxhH,UAAUm3H,eAAiB,WACxBr3H,KAAKgpB,cAGThpB,KAAKi8B,IAAI,QAAkBj8B,KAAK0qI,WAChC1qI,KAAKi8B,IAAI,QAAqBj8B,KAAKgnI,mBACnChnI,KAAKi8B,IAAI,QAAwBj8B,KAAKgnI,mBACtChnI,KAAKmpB,GAAG,QAA8BnpB,KAAKmsI,sBAAuBnsI,MAClEA,KAAKmpB,GAAG,QAAiCnpB,KAAK+iI,yBAA0B/iI,MACxEA,KAAK4xC,oBAAoB,QAAkB5xC,KAAKosI,mBAChDpsI,KAAKi8B,IAAI,QAAmBj8B,KAAK0rI,gBASrChqB,EAAKxhH,UAAU4zG,sBAAwB,WACnC,OAAI,gBAAgB9zG,MACT,eAAkBA,KAAKkY,gBAAgB6jB,SAC1C/7B,KAAKkY,gBAAkBlY,KAAKkY,gBAAgB6jB,QAEhD/7B,KAAKu1B,cAAcC,kBACZx1B,KAAKkY,gBAERlY,KAAKs1B,eAAiBt1B,KAAKu1B,cAAc7S,QAAQ/hB,QAAUX,KAAKkY,gBAAgBvX,QACjFX,KAAKkY,gBAAgB6jB,QAAW/7B,KAAKkY,gBAAgB6jB,QACtD/7B,KAAKkY,iBAEfwpG,EAAKxhH,UAAUyrI,kBAAoB,SAAUx+H,GACzC,KAAInN,KAAK2/H,YAAYxyH,IAAO,gBAAaA,EAAE7M,OAAQ,gBAAkB6M,EAAEgG,SACnEnT,KAAKoD,QAAQ4wC,uBAAuB,qBAAqBrzC,QAAUX,KAAKqsI,UAAUl/H,OAG/EnN,KAAK0mE,sBAAwB,gBAAav5D,EAAE7M,OAAQ,SAClC,OAArB6M,EAAE7M,OAAOoP,WAAyB1P,KAAKs1B,eAAiBt1B,KAAKk7D,kBAC7D,gBAAa/tD,EAAE7M,OAAQ,mBAAqB6M,EAAEgG,SAFlD,CAKI,gBAAahG,EAAE7M,OAAQ,iBAAmBN,KAAK0mE,sBAC7C,eAAD,CAAcv5D,EAAE7M,OAAQ,oBAAwB6M,EAAE7M,SACK,IAAxD,CAAC,IAAK,SAAU,SAAS0D,QAAQmJ,EAAE7M,OAAOoP,UAC1CvC,EAAE+F,iBAEN,IAAImhB,EAAOr0B,KAAKs9H,WAAWnwH,EAAE7M,QACzBmO,EAAS,SACb4lB,EAAK,GAAK5lB,IAAU,EACpB,IAAI6xF,GAAY,EACZV,EAAK,eAAQzyF,EAAE7M,OAAQ,MAC3B,GAAIs/F,GAAMA,EAAGl1F,aAAa,YAAa,CACnC,IAAI8yH,EAASx9H,KAAKy9H,oBAAoB79B,EAAGl1F,aAAa,aACtD41F,IAAYk9B,GAASA,EAAOl9B,UAE5BA,GACAtgG,KAAKiI,QAAQ,QAAoBosB,GAErCr0B,KAAKs0B,OAAO,OAAcnnB,KAE9Bu0G,EAAKxhH,UAAUmsI,UAAY,SAAUl/H,GACjC,IAAIyyF,EAAK,gBAAazyF,EAAE7M,OAAQ,QAC5B8hE,EAAoC,UAA3BpiE,KAAKk+G,aAAazgG,MAC3Bzd,KAAKoiE,QAAUw9B,IAAOA,EAAG16F,UAAUmB,SAAS,SAAuBu5F,EAAG16F,UAAUmB,SAAS,SAC7F,OAAQ,gBAAa8G,EAAE7M,OAAQ,sBAAwB8hE,GAAW,gBAAaj1D,EAAE7M,OAAQ,SACrF,gBAAa6M,EAAE7M,OAAQ,QAAkB4E,UAAUmB,SAAS,uBAEpEq7G,EAAKxhH,UAAU2rI,gBAAkB,SAAU1+H,GACvC,IAAIswG,EAAO,gBAAatwG,EAAE7M,OAAQ,UAClC,IAAI,eAAkBm9G,IAASA,EAAKnyG,KAAOtL,KAAKoD,QAAQkI,KAAM,eAAQ6B,EAAE7M,OAAQ,qBAAhF,CAGA,IAAIgsI,GAAU,EACV1sC,EAAK,eAAQzyF,EAAE7M,OAAQ,MAC3B,GAAIs/F,GAAMA,EAAGl1F,aAAa,YAAa,CACnC,IAAI8yH,EAASx9H,KAAKy9H,oBAAoB79B,EAAGl1F,aAAa,aACtD4hI,IAAU9O,GAASA,EAAOl9B,UAE9B,IAAIjsE,EAAOr0B,KAAKs9H,WAAWnwH,EAAE7M,QAC7B+zB,EAAK/zB,OAAS6M,EAAE7M,OACZgsI,GACAtsI,KAAKiI,QAAQ,QAA0BosB,GAE3Cr0B,KAAKs0B,OAAO,QAAiBnnB,KAEjCu0G,EAAKxhH,UAAU0rI,gBAAkB,SAAUz+H,GACvC,IAAInN,KAAK2/H,YAAYxyH,GAArB,CAGK,gBAAaA,EAAE7M,OAAQ,YACxBN,KAAKoD,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,QAE/D,IAAIulI,EAAcvsI,KAAKoD,QAAQ8I,cAAc,0BACzCqgI,IAAgBA,EAAY72F,cAAcxwC,UAAUmB,SAAS,eAC7DkmI,EAAYrnI,UAAU4G,IAAI,UAE9B,IAAI+G,EAAgB1F,EAAE0F,cAClB25H,EAAW35H,EAAgBA,EAAcnI,aAAa,aAAe,KACnEmI,IAAmB,gBAAaA,EAAe,aAC/C,eAAkB25H,IAChB,KAAgBr/H,EAAE7M,OAAOoK,aAAa,eACtC1K,KAAKysI,WAAYzsI,KAAKoiE,QAAW,OAAQzyD,WACd,UAA3B3P,KAAKk+G,aAAazgG,OAAwB,gBAAa5K,EAAe,UAAY,gBAAaA,EAAe,WAC9G,gBAAaA,EAAe,gCAAmC,gBAAaA,EAAe,mBACvF,gBAAaA,EAAe,eAAmBA,GAC/C,eAAkB,gBAAaA,EAAe,oBAClD7S,KAAKi/G,WAAWynB,WAChB1mI,KAAKs0B,OAAO,QAAwB,KAET,WAA3Bt0B,KAAKk+G,aAAazgG,MAClBzd,KAAKi/G,WAAWytB,oBAGxB1sI,KAAKysI,UAAW,IAEpB/qB,EAAKxhH,UAAUy/H,YAAc,SAAUxyH,GACnC,IAAIg4D,EAAc,gBAAah4D,EAAE7M,OAAQ,UACzC,SAAK6kE,GAAeA,EAAY75D,KAAOtL,KAAKoD,QAAQkI,IAAQ,gBAAa6B,EAAE7M,OAAQ,qBAC/E,eAAkB6kE,KAU1Bu8C,EAAKxhH,UAAU6kH,qBAAuB,SAAU4nB,GAC5C,IAAIrvH,EAAOtd,KAAK4sI,eAChB,IAAM,eAAkBtvH,IAAmB,KAATA,IAAkB,eAAkBqvH,GAAgB,CAClF,IAAI50F,EAAW,eAAkB40F,GAAiCjwG,KAAKpiB,MAAMgD,GAA3BqvH,EAC9C3sI,KAAKw0B,sBAAwBujB,EAAQrjB,eACrCqjB,EAAQrjB,aAAaC,YAAc,GAEvC,IAAIvf,EAAO3V,OAAO2V,KAAK2iC,GACvB/3C,KAAKg4C,qBAAsB,EAC3B,IAAK,IAAInqC,EAAK,EAAGoqC,EAAS7iC,EAAMvH,EAAKoqC,EAAOt3C,OAAQkN,IAAM,CACtD,IAAItN,EAAM03C,EAAOpqC,GACc,kBAAnB7N,KAAK,GAAKO,IAAuB,eAAkBP,KAAK,GAAKO,IAarEP,KAAK,GAAKO,GAAOw3C,EAAQ,GAAKx3C,GAZ1BX,MAAMqhB,QAAQjhB,KAAK,GAAKO,KAAiB,YAARA,GACjCP,KAAKwlH,iBACL,gBAAexlH,KAAK,GAAKO,IACzBP,KAAK6sI,aAAa90F,EAAQ,GAAKx3C,GAAMP,KAAK,GAAKO,IAC/CP,KAAK4jH,eAAgB,EACrB5jH,KAAK,GAAKO,GAAOw3C,EAAQ,GAAKx3C,IAG9B,eAAOP,KAAK,GAAKO,GAAMw3C,EAAQ,GAAKx3C,IAOhDP,KAAKg4C,qBAAsB,IAGnC0pE,EAAKxhH,UAAU2sI,aAAe,SAAUC,EAAcpqH,GAsBlD,IArBA,IAAIqqH,EAAgBD,EAChBhtE,EAAe9/D,KAAK8/D,eACpBktE,EAAU,SAAUhsI,GACpB,IAAIisI,EAAWvqH,EAAQtE,QAAO,SAAU8uH,GAAQ,OAAOptE,EACnDotE,EAAKzgI,QAAUsgI,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK,QAC9Ds7H,EAAKzgI,QAAUsgI,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAKnF,SAAU,GAClE,eAAkBwgI,KACfntE,IACAmtE,EAAW,eAAO,GAAIA,EAAU,IAAI,GACpCA,EAAS38C,OAASy8C,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAK0+E,QAE5D28C,EAASvqH,SAAWuqH,EAASvqH,QAAQ/hB,QACrCwsI,EAAON,aAAaE,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAASuqH,EAASvqH,SAChFqqH,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAO,eAAOq7H,EAAUF,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAM,IAAI,IAG5Gm7H,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAO,eAAOq7H,EAAUF,EAAcp7H,SAAS3Q,EAAE4Q,WAAY,KAAM,IAAI,KAIpHu7H,EAASntI,KACJgB,EAAI,EAAGA,EAAI+rI,EAAcpsI,OAAQK,IACtCgsI,EAAQhsI,IAOhB0gH,EAAKxhH,UAAU2kG,SAAW,WACtB,OAAQ,eAAkB7kG,KAAKylE,kBAAoB,eAAkBzlE,KAAK0lE,YAE9Eg8C,EAAKxhH,UAAU2lH,gBAAkB,SAAUnjG,GACvC,IAAI+sC,EAAUzvD,KACd,OAAO0iB,EAAQ6U,MAAK,SAAUnB,GAC1B,OAAIA,EAAI1T,QACG+sC,EAAQo2D,gBAAgBzvF,EAAI1T,YAE7B0T,EAAIgmC,WAAYhmC,EAAIkmC,sBAGtColD,EAAKxhH,UAAUimH,oBAAsB,SAAUzjG,GAC3C,IAAI+sC,EAAUzvD,KACd,OAAO0iB,EAAQ6U,MAAK,SAAUnB,GAC1B,OAAIA,EAAI1T,QACG+sC,EAAQ02D,oBAAoB/vF,EAAI1T,YAEjC0T,EAAIhX,aAAcgX,EAAIoB,qBAGxCkqF,EAAKxhH,UAAU4rI,gBAAkB,SAAU3+H,GACvC,IAAIigI,EAAW,eAAOjgI,EAAG,CAAEsB,QAAQ,IACnCzO,KAAKiI,QAAQ,aAAcmlI,IACH,IAApBA,EAAS3+H,QACTtB,EAAEkgI,4BAGV3rB,EAAKxhH,UAAUq9G,eAAiB,SAAUpwG,GACtC,GAAIA,EAAE25C,OAAQ,CAgBV,GAfkB,KAAd35C,EAAEqG,UACExT,KAAK4hH,MACL5hH,KAAKs0B,OAAO,QAAsB,CAAEh0B,OAAQ6M,EAAE7M,OAAQgtI,UAAU,IAChEttI,KAAK4hH,MAAO,IAGR5hH,KAAK+3G,aAAe/3G,KAAK+3G,YAAYw1B,aAAevtI,KAAK+3G,YAAYw1B,YAAYnqI,UACjF,gBAAY,CAACpD,KAAK+3G,YAAYw1B,YAAYnqI,QAASpD,KAAK+3G,YAAYw1B,YAAYC,gBAAiB,CAAC,YAAa,YAC/GxtI,KAAK+3G,YAAYw1B,YAAYnqI,QAAQoqG,UAAY,GAEhDxtG,KAAKoD,QAAQ8B,UAAUmB,SAAS,gBACjCrG,KAAKoD,QAAQyjD,UAIP,KAAd15C,EAAEqG,QAAgB,CAClB,IAAIukG,EAAc/3G,KAAK+3G,YACvB,GAAIA,EAAa,CACb,IAAK/3G,KAAKkY,gBAAgBvX,OACtB,OAEJo3G,EAAY01B,eACZ11B,EAAY21B,cAGF,KAAdvgI,EAAEqG,UACFxT,KAAK4hH,MAAO,GAEE,KAAdz0G,EAAEqG,SAAkBxT,KAAK4hH,OACzB5hH,KAAKs0B,OAAO,QAAsB,CAAEh0B,OAAQ6M,EAAE7M,OAAQgtI,UAAU,IAChEttI,KAAK4hH,MAAO,GAGF,KAAdz0G,EAAEqG,SACFxT,KAAKs0B,OAAO,QAAwBnnB,IAG5Cu0G,EAAKxhH,UAAU+rI,iBAAmB,SAAU9+H,GACpCnN,KAAK2/H,YAAYxyH,IAChBnN,KAAKoiE,QAAuB,WAAbj1D,EAAE4vB,QAAoC,UAAb5vB,EAAE4vB,QAAmC,eAAb5vB,EAAE4vB,QAC/C,QAAb5vB,EAAE4vB,QAAiC,aAAb5vB,EAAE4vB,SAI/B/8B,KAAKysI,UAAW,EAEhBzsI,KAAK+rI,gBACY,cAAb5+H,EAAE4vB,SACF5vB,EAAE+F,iBACFlT,KAAK0+C,SAET1+C,KAAKs0B,OAAO,QAAmBnnB,MAQvCu0G,EAAKxhH,UAAUwwF,mBAAqB,SAAU/lC,GAC1C3qD,KAAK2tI,gBAAkBhjF,GAE3B+2D,EAAKxhH,UAAUq4H,mBAAqB,WAChC,gBAAev4H,KAAK0iB,QAAS1iB,KAAK6/D,2BAA4B7/D,MAC9D,gBAAeA,KAAK0iB,SACpB1iB,KAAKuqI,oBACLvqI,KAAKs0B,OAAO,OAAgB,KAEhCotF,EAAKxhH,UAAUisI,sBAAwB,SAAU/uE,GACzCA,GAAOA,EAAI4/C,WACXh9G,KAAK4tI,iBACL5tI,KAAKs0B,OAAO,QAA8B,KAG1Ct0B,KAAK4tI,kBAQblsB,EAAKxhH,UAAUo3B,qBAAuB,WAClC,OAAOt3B,KAAKozB,aAAahV,QAAO,SAAUgY,GACtC,OAAOA,EAAIM,sBAOnBgrF,EAAKxhH,UAAUggE,aAAe,WAC1B,OAAOlgE,KAAK+iG,UAAY/iG,KAAK+iG,UAAY,eAAa/iG,KAAKoD,UAO/Ds+G,EAAKxhH,UAAU0tI,eAAiB,WAU5B,GATA5tI,KAAK8hH,qBAAsB,EAC3B9hH,KAAKwlH,iBACLxlH,KAAKw2H,2BACDx2H,KAAK8/D,iBACL9/D,KAAK8hE,sBAAuB,GAEhC9hE,KAAKu4H,qBACLv4H,KAAKsyH,iBAAiBtyH,KAAKozB,cAC3BpzB,KAAKsV,UACDtV,KAAK8/D,gBAAkB9/D,KAAK6/D,2BAA4B,CACxD,IAAI76D,EAAOhF,KAAK4/D,aAAa1zD,cAAc,uBAAuB4E,WAClE9Q,KAAKigE,mBAAmB/zD,cAAc,IAAM,QAAwB4E,WAAa9L,EACjFhF,KAAK4/D,aAAa1zD,cAAc,IAAM,QAAkB4E,WAAa9L,IAY7E08G,EAAKxhH,UAAU2tI,YAAc,SAAUC,EAAuBC,EAE9DC,EAAUC,GACN,GAAIjuI,KAAKkuI,aAAeluI,KAAKkuI,YAAYvtI,OAAQ,CAC7C,IAAIwtI,EAAUnuI,KAAKkuI,YAAYxgI,QAC/B,OAAO1N,KAAKouI,yBAAyBD,EAASL,EAAuBC,EAAkBC,EAAUC,GAGjG,OAAOjuI,KAAKquI,kBACRruI,KAAKquI,kBAAkBC,IAAItuI,KAAM8tI,EAAuBC,EAAkBC,GAAU,EAAOC,GAAU,MAYjHvsB,EAAKxhH,UAAUquI,UAAY,SAAUT,EAErCC,EAAkBC,EAAUC,GACxB,OAAOjuI,KAAKquI,kBACRruI,KAAKquI,kBAAkBC,IAAItuI,KAAM8tI,EAAuBC,EAAkBC,GAAU,EAAMC,GAAU,MAY5GvsB,EAAKxhH,UAAUsuI,UAAY,SAAUC,EAAqBV,EAAkBW,EAAQT,GAChF,GAAIjuI,KAAKkuI,aAAeluI,KAAKkuI,YAAYvtI,OAAQ,CAC7C,IAAIwtI,EAAUnuI,KAAKkuI,YAAYxgI,QAC/B,OAAO1N,KAAK2uI,uBAAuBR,EAASM,EAAqBV,EAAkBW,EAAQT,GAG3F,OAAOjuI,KAAK4uI,gBAAkB5uI,KAAK4uI,gBAAgBN,IAAItuI,KAAMyuI,EAAqBV,EAAkBW,EAAQT,GAAU,MAG9HvsB,EAAKxhH,UAAUyuI,uBAAyB,SAAUR,EAASM,EAAqBV,EAEhFW,EAAQT,GACJ,IAAI5qI,EAAQrD,KACZ,GAAuB,IAAnBmuI,EAAQxtI,OAAc,CACtB,IAAIkuI,EAAgBV,EAAQW,QAExBC,EAAsBnhI,SAASyd,eAAewjH,GAAe7V,cAAc,GAC3EgW,EAAgBD,EAAoBH,gBACpCG,EAAoBH,gBAAgBN,IAAIS,EAAqBN,EAAqBV,EAAkBW,EAAQT,GAC1Gl1B,QAAQp+E,UACd,OAAOq0G,EAAcpvH,MAAK,SAAUqvH,GAEhC,OADAlB,EAAsC,IAAnBI,EAAQxtI,OACpB0C,EAAMsrI,uBAAuBR,EAASM,EAAqBV,EAAkBkB,EAAqBhB,MAGjH,OAAO,MAEXvsB,EAAKxhH,UAAUkuI,yBAA2B,SAAUD,EAASL,EAAuBC,EAEpFC,EAAUC,GACN,IAAI5qI,EAAQrD,KACZ,GAAuB,IAAnBmuI,EAAQxtI,OAAc,CACtB,IAAIkuI,EAAgBV,EAAQW,QAExBC,EAAsBnhI,SAASyd,eAAewjH,GAAe7V,cAAc,GAC3EgW,EAAgBD,EAAoBV,kBACpCU,EAAoBV,kBAAkBC,IAAIS,EAAqBjB,EAAuBC,EAAkBC,GAAU,EAAOC,GAAU,KACvI,OAAOe,EAAcpvH,MAAK,SAAUqvH,GAEhC,OADAlB,EAAsC,IAAnBI,EAAQxtI,OACpB0C,EAAM+qI,yBAAyBD,EAASL,EAAuBC,EAAkBkB,EAAqBhB,MAGrH,OAAO,MASXvsB,EAAKxhH,UAAUgvI,YAAc,SAAUr5G,GAC/B71B,KAAKs8G,aACLt8G,KAAKs8G,YAAY4yB,YAAYr5G,IAQrC6rF,EAAKxhH,UAAUivI,eAAiB,WACxBnvI,KAAKs8G,aACLt8G,KAAKs8G,YAAY8yB,aAQzB1tB,EAAKxhH,UAAUmvI,iBAAmB,WAC1BrvI,KAAKs8G,aACLt8G,KAAKs8G,YAAYgzB,eAmBzB5tB,EAAKxhH,UAAUqvI,cAAgB,WACvBvvI,KAAKs8G,aACLt8G,KAAKs8G,YAAYizB,iBAYzB7tB,EAAKxhH,UAAUsvI,cAAgB,SAAU35G,GACjC71B,KAAKs8G,aACLt8G,KAAKs8G,YAAYkzB,cAAc35G,IAWvC6rF,EAAKxhH,UAAUuvI,kBAAoB,SAAUzpI,EAAGC,GACxCjG,KAAK2pI,qBACL3pI,KAAK2pI,oBAAoB8F,kBAAkBzpI,EAAGC,IAGtDy7G,EAAKxhH,UAAU06H,cAAgB,WAC3B,IAAInrE,EAAUzvD,KACVsV,EAAU,WACVm6C,EAAQ4/B,aAAa/5E,UACrBm6C,EAAQxzB,IAAI,QAAqB3mB,IAErCtV,KAAKmpB,GAAG,QAAqB7T,EAAStV,OAkB1C0hH,EAAKxhH,UAAUwvI,kBAAoB,WAC3B1vI,KAAK2vI,iBACL3vI,KAAK2vI,gBAAgBL,eAmB7B5tB,EAAKxhH,UAAU0vI,gBAAkB,WACzB5vI,KAAK2vI,iBACL3vI,KAAK2vI,gBAAgBP,aAQ7B1tB,EAAKxhH,UAAU2vI,mBAAqB,WAC5B7vI,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgB+8F,sBAQ7BnuB,EAAKxhH,UAAU4vI,kBAAoB,WAC3B9vI,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBg9F,qBAU7BpuB,EAAKxhH,UAAU6vI,YAAc,SAAUC,GAC/BhwI,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBi9F,YAAYC,IAWzCtuB,EAAKxhH,UAAU+vI,kBAAoB,SAAUjoG,EAAYC,GACjDjoC,KAAK8yC,iBACL9yC,KAAK8yC,gBAAgBm9F,kBAAkBjoG,EAAYC,IAO3Dy5E,EAAKxhH,UAAUgwI,kBAAoB,WAC/B,OAAOlwI,KAAK25H,mBAAqB35H,KAAK25H,kBAAkBwW,QAO5DzuB,EAAKxhH,UAAUkwI,qBAAuB,SAAUhsE,GAC5C,OAAOpkE,KAAKwwF,qBAAqBxsF,QAAQogE,IAAW,GAWxDs9C,EAAKxhH,UAAUo3G,gBAAkB,SAAU+4B,EAAe5jI,GACtDzM,KAAKqI,cAAcgoI,EAAe5jI,IAStCi1G,EAAKxhH,UAAUy1B,IAAM,SAAUnnB,EAAM6lB,GAEjCr0B,KAAKswI,aAAetwI,KAAKswI,aAAa36G,IAAInnB,EAAM6lB,QAAQ,GAO5DqtF,EAAKxhH,UAAUqwI,iBAAmB,SAAUntI,GACpCpD,KAAKoD,QAAQ8B,UAAUmB,SAAS,aAChCjD,EAAQ8B,UAAU4G,IAAI,aAO9B41G,EAAKxhH,UAAUswI,mBAAqB,WAChC,IAAIC,EAAkBzwI,KAAKiiG,gBAAgBjiG,KAAK6pG,UAAUlpG,OAAS,GAAG2c,KACtE,OAAOmzH,GAOX/uB,EAAKxhH,UAAUwwI,WAAa,WACxB,IAAI7lI,EAAU7K,KAAK4/D,aAAa1zD,cAAc,IAAM,QAChDrB,EAAQw4D,cAAgBx4D,EAAQvB,eAChCtJ,KAAKqvF,aAAazuB,gBAClB/1D,EAAQ9D,MAAMo8D,UAAY,SAUlCu+C,EAAKxhH,UAAUywI,wBAA0B,SAAU3zH,GAC/C,IAAImiH,EAASn/H,KAAK45B,0BAA0B,GAC5C5c,EAAyB,kBAAVA,EAAqBA,EAAM,GAAKmiH,GAAUniH,EAEzD,IADA,IAAI4F,EAAO5iB,KAAKiiG,gBACPjhG,EAAI,EAAGA,EAAI4hB,EAAKjiB,OAAQK,IAC7B,IAAI4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKg/H,cAAehuH,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKozF,aAArF,CAGA,IAAI6rC,EAAUjuH,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK0L,KAAK,GAAK6hH,GAIzD,GAHIA,EAAOl7H,MAAM,KAAKtD,OAAS,IAC3BkwI,EAAU,gBAA4B1R,EAAQv8G,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK0L,OAE/EuzH,IAAY7zH,EACZ,OAAO4F,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKnF,MAGhD,OAAQ,GAQZi1G,EAAKxhH,UAAU44B,6BAA+B,SAAUxF,EAAOyD,GAC3D,IAAIrV,EACJ1hB,KAAKk8G,YAAc,GACnBl8G,KAAKmyH,kBAAkBnyH,KAAK0iB,SAE5B,IADA,IAAIqnH,EAAQ/pI,KAAKk8G,YACRl7G,EAAI,EAAGA,EAAI+oI,EAAMppI,OAAQK,IAC9B,IAAM+1B,GAAgBzD,IAAUy2G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAC7DyD,GAAgBgzG,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KAAK8kB,mBAC/CpD,IAAUy2G,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KAAK4lB,gBAAkB,CAClE9V,EAASqoH,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KACtC,MAGR,OAAO8P,GAQXggG,EAAKxhH,UAAUi5B,2BAA6B,SAAUN,GAClD,IAAInX,EACJ1hB,KAAKk8G,YAAc,GACnBl8G,KAAKmyH,kBAAkBnyH,KAAK0iB,SAE5B,IADA,IAAIqnH,EAAQ/pI,KAAKk8G,YACRl7G,EAAI,EAAGA,EAAI+oI,EAAMppI,OAAQK,IAC1B63B,IAAQkxG,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,KAAKinB,MAC1CnX,EAASqoH,EAAMp4H,SAAS3Q,EAAE4Q,WAAY,MAG9C,OAAO8P,GAOXggG,EAAKxhH,UAAU4wI,mBAAqB,WAChC,GAAK9wI,KAAKq4B,gBAAkBr4B,KAAKs4B,eAAe5V,QAAQ/hB,QAAWX,KAAKi3B,eAAe12B,IAAII,OAAQ,CAC/F,IAAI2e,EAAQtf,KAAKiyH,aAAa30G,KAAKoC,eAAc,GACjD,OAAI1f,KAAKof,YAAcpf,KAAKiyH,aAAa30G,KAAKmZ,YAAcz2B,KAAKof,sBAAsB,OAC5Epf,KAAKiyH,aAAa30G,KAAKmC,QAAQzf,KAAKof,WAAYE,GAGnDtf,KAAKof,sBAAsB,OACpBpf,KAAKof,WAAWw7E,aAAat7E,GAG7B,IAAI,OAAYtf,KAAKof,WAAYE,GAAOs7E,aAAat7E,GAIxE,MAAO,IAEXoiG,EAAKxhH,UAAU6wI,aAAe,WAC1B,IAAIvvE,EAAY,OAAQA,UAAUj/C,cAClC,MAAO,6BAA6B+1B,KAAKkpB,IAS7CkgD,EAAKxhH,UAAUgsI,SAAW,SAAU/+H,GAC5BnN,KAAK+wI,iBACA,OAAOC,OAMRlkI,aAAa,OAAOkkI,OACpB,OAAOA,MAAQ,KACfhxI,KAAK6rI,gBAAgB1+H,GACrBnN,KAAKs0B,OAAO,QAAkBnnB,IAR9B,OAAO6jI,MAAQ5jI,YAAW,WACtB,OAAO4jI,MAAQ,OAChB,OAeftvB,EAAKxhH,UAAU+wI,UAAY,SAAUv8D,GACjC,MAAO,GAAKA,EAAS10E,KAAKikH,UAO9BvC,EAAKxhH,UAAUgxI,mBAAqB,SAAUr4G,GAC1C,IAAIs4G,EACAvuH,EAAO,GACPwuH,EAAU,GAAG1jI,MAAMpK,KAAKtD,KAAK4/D,aAAa1zD,cAAc,QAAgB+5C,UACxEjmD,KAAKggE,YACLp9C,EAAO,GAAGlV,MAAMpK,KAAKtD,KAAKigE,mBAAmB/zD,cAAc,QAAgB+5C,UAC3ErjC,EAAOA,EAAK4K,OAAO4jH,IAGnBxuH,EAAOwuH,EAEX,IAAK,IAAIvjI,EAAK,EAAGwjI,EAASzuH,EAAM/U,EAAKwjI,EAAO1wI,OAAQkN,IAAM,CACtD,IAAI8T,EAAM0vH,EAAOxjI,GACjB,GAAI8T,EAAIjX,aAAa,cAAgBmuB,EAAK,CACtCs4G,EAASxvH,EACT,OAGR,OAAOwvH,GAOXzvB,EAAKxhH,UAAUoxI,iBAAmB,WAE9B,IADA,IAAIt9G,EAAO,GACFnmB,EAAK,EAAGhK,EAAK7D,KAAKk8G,YAAaruG,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC1D,IAAIuoB,EAAMvyB,EAAGgK,IACO,IAAhBuoB,EAAIzf,SACJqd,EAAK3nB,KAAK+pB,GAGlB,OAAOpC,GAQX0tF,EAAKxhH,UAAUqxI,gCAAkC,SAAUC,GACvD,GAAIxxI,KAAKu0B,cACAv0B,KAAK+jG,eAAoD,WAAnC/jG,KAAKgkG,iBAAiBC,WAA4BjkG,KAAK+jG,eAAgB,CAC9F,IAAI0tC,EAAW,GACuB,IAAlCD,EAAgBxtI,QAAQ,OACxBwtI,EAAkB7/H,SAAS6/H,EAAiB,IAAM,IAAMxxI,KAAKoD,QAAQkG,cAEzE,IAAIooI,EAAmB1xI,KAAK2xI,sBAAwB3xI,KAAKkgE,eACzD,GAAIsxE,EAAkBE,EAAkB,CACpC,IAAIne,EAAgB,EACpBA,EAAgBie,EAAkBxxI,KAAK2xI,sBACvCF,EAAYle,EAAgBvzH,KAAKkgE,eAErC,GAAIuxE,EAAW,EACX,OAAOtoI,KAAK6gC,MAAMynG,GAI9B,OAAO,GAEX/vB,EAAKxhH,UAAUyxI,oBAAsB,WACjC,IAAItsI,EAAS,EAgBb,GAfK,eAAkBrF,KAAKigE,mBAAmB32D,gBAC3CjE,GAAUrF,KAAKigE,mBAAmB32D,cAElCtJ,KAAK6+D,UAAY,eAAkB7+D,KAAKoD,QAAQ8I,cAAc,cAAc5C,gBAC5EjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,cAAc5C,cAEnDtJ,KAAKu0B,cAAgB,eAAkBv0B,KAAKoD,QAAQ8I,cAAc,gBAAgB5C,gBAClFjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,gBAAgB5C,cAErDtJ,KAAKkmH,oBAAsB,eAAkBlmH,KAAKoD,QAAQ8I,cAAc,mBAAmB5C,gBAC3FjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,mBAAmB5C,cAExDtJ,KAAKs1B,eAAiBt1B,KAAKu1B,cAAcwvC,eAAiB,eAAkB/kE,KAAKoD,QAAQ8I,cAAc,oBAAoB5C,gBAC3HjE,GAAUrF,KAAKoD,QAAQ8I,cAAc,oBAAoB5C,cAEzDtJ,KAAK+zB,WAAWpzB,OAAS,IAAM,eAAkBX,KAAKoD,QAAQ8I,cAAc,iBAAiB5C,cAC7F,IAAK,IAAItI,EAAI,EAAGA,EAAIhB,KAAKoD,QAAQ4wC,uBAAuB,gBAAgBrzC,OAAQK,IAC5EqE,GAAUrF,KAAKoD,QAAQ4wC,uBAAuB,gBAAgBriC,SAAS3Q,EAAE4Q,WAAY,KAAKtI,aAGlG,OAAOjE,GAUXq8G,EAAKxhH,UAAU0xI,iBAAmB,SAAUC,EAAYC,GACpD,OAAO,OAAS/9G,WAAW89G,EAAWrjI,KAAK+T,eAAeuvH,EAAaD,EAAWv+G,QAStFouF,EAAKxhH,UAAU6xI,kBAAoB,SAAUj2G,GACzC97B,KAAKgyI,SAAU,EACfhyI,KAAKiyI,WAAWn2G,IASpB4lF,EAAKxhH,UAAUgyI,gBAAkB,SAAUp2G,GACvC97B,KAAKgyI,SAAU,EACfhyI,KAAKiyI,WAAWn2G,IASpB4lF,EAAKxhH,UAAUiyI,gBAAkB,SAAUr2G,GACvC97B,KAAKgyI,SAAU,EACfhyI,KAAKiyI,WAAWn2G,IAOpB4lF,EAAKxhH,UAAU+xI,WAAa,SAAUn2G,GAElC,IAAI2hF,EAAOz9G,KACPsf,EAAQm+F,EAAKzhF,gBAAgBtc,eAAc,GAC3Cyc,GAAQ,IAAI,QAAaM,aAAa,IAAI,OAAY,CAAEX,IAAK,KAAOxc,GACpE8U,EAAUsI,KAAKpiB,MAAM6hB,EAAM7e,MAE3B6zB,EAAYzU,KAAKpiB,MAAMta,KAAKgV,aAAa,CAAC,gBAAiB,cAAe,eAAgB,eAAgB,iBAAkB,mBAAoB,aAChJ,iBAAkB,gBAAiB,UAAW,SAAU,oBACxDo9H,EAAU,CAAC,QAAS,aAAc,OAAQ,SAAU,UAAW,kBAAmB,kBAClF,WAAY,QAAS,QAAS,YAAa,kBAAmB,WAClEjhG,EAAU7Y,eAAe5V,QAAU0R,EAAQ2D,MAC3CoZ,EAAUla,eAAeC,OAAS9C,EAAQ4D,QAAU5D,EAAQ4D,OAAO,GAAG,WAAa,GACnFmZ,EAAUjb,aAAaxT,QAAU0R,EAAQi+G,OACzClhG,EAAUzuB,QAAU1iB,KAAKsyI,cAAcnhG,EAAUzuB,QAAS0vH,GAC1D,IAAIG,EAAOvyI,KAAKuE,cAAc,OAAQ,CAAE+G,GAAI,aAAc4D,OAAQ,kBAC9DsjI,EAAYxyI,KAAKuE,cAAc,QAAS,CAAE+G,GAAI,YAAa0D,MAAO,CAAEgB,KAAM,eAC9EwiI,EAAUx1H,MAAQ0f,KAAKkkF,UAAUzvE,GACjCohG,EAAKE,OAAS,OACdF,EAAKx1G,OAASjB,EACdy2G,EAAK7tI,YAAY8tI,GACjB5kI,SAAS6B,KAAK/K,YAAY6tI,GAC1BA,EAAKG,SACLH,EAAKptI,UAQTu8G,EAAKxhH,UAAUoyI,cAAgB,SAAU5vH,EAAS0vH,GAC9C,IAAK,IAAIpxI,EAAI,EAAGA,EAAI0hB,EAAQ/hB,OAAQK,IAAK,CACrC,IAAI0gB,EAAS1hB,KAAK44B,eAAelW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKinB,KACrEnW,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK6a,WAAa/K,EAAO+K,WACnD,eAAkB/K,EAAOiL,YAC1BjK,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK+a,SAAW,QAE/CjK,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,SACpC9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,OAAS,eAAgBxwB,KAAKquB,UAAU3L,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK4e,QAAS9N,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKpD,KAAMxO,KAAKgyI,QAAS,SAEjLtvH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,SACpC1iB,KAAKsyI,cAAc5vH,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QAAS0vH,GAGpE,IADA,IAAIh9H,EAAO3V,OAAO2V,KAAKsN,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,MAC7CiS,EAAI,EAAGA,EAAIzO,EAAKzU,OAAQkjB,IACzBuuH,EAAQpuI,QAAQoR,EAAKzD,SAASkS,EAAEjS,WAAY,MAAQ,UAC7C8Q,EAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAKwD,EAAKzD,SAASkS,EAAEjS,WAAY,MAInF,OAAO8Q,GAEXg/F,EAAKxhH,UAAUmuB,UAAY,SAAUmC,GACjC,MAA2B,kBAAb,EAAyB,eAAkBA,EAAOA,QAC5CA,EAAOzW,SAAvByW,EAAOA,OAA2BA,GAM1CkxF,EAAKxhH,UAAUu+H,uBAAyB,WACpC,IAAIkU,EAAa,aACjB,OAAiC,IAA1B3yI,KAAK,GAAK2yI,IAOrBjxB,EAAKxhH,UAAU0yI,eAAiB,SAAUryI,EAAKm9H,GAC3C,IAAIrpG,EAAO,CACPoF,YAAa,OAAQnc,KAAMogH,GAE/B19H,KAAK08F,cACL18F,KAAKs0B,OAAO,QAAmBD,GAC/Br0B,KAAKsV,WAMTosG,EAAKxhH,UAAU2yI,kBAAoB,WAC/B7yI,KAAK+H,WACL,IAAI+qI,EAAa9yI,KAAKg8B,gBAAgBI,yBAClC02G,EAAWhhH,WACX9xB,KAAKg8B,gBAAgBK,uBAAuB,IAC5Cy2G,EAAW/gH,aAGX/xB,KAAKg8B,gBAAgBK,uBAAuB,CAAES,eAAe,KACzD98B,KAAKi0G,eAAiBj0G,KAAK+yH,eAC3B/yH,KAAKiyH,aAAat+G,WAS9B+tG,EAAKxhH,UAAU6yI,uBAAyB,SAAUz/G,GAC9C,IAAI7H,EAASzrB,KAAKuzG,uBAAuBjgF,GACzC,GAAI7H,EAAQ,CACR,IAAInrB,EAASmrB,EAAOvf,cAAc,oBAC9B8mI,EAAYhzI,KAAKoD,QAAQ8I,cAAc,mBAC3C,GAAI5L,GAAU0yI,EAAW,CACrB,IAAIC,EAAUjzI,KAAKoD,QAAQgE,wBACvB8rI,EAAU5yI,EAAO8G,wBACjB4rI,IACKA,EAAUxpI,YAAc0pI,EAAQt9H,MAASq9H,EAAQr9H,MAClDo9H,EAAUjsI,MAAM/B,MAASkuI,EAAQt9H,MAAQo9H,EAAUxpI,YAAeypI,EAAQjuI,MAAM4M,WAAa,KAG7FohI,EAAUjsI,MAAM/B,MAAQkuI,EAAQt9H,MAAQq9H,EAAQjuI,MAAM4M,WAAa,SAYvF8vG,EAAKxhH,UAAUyhG,gBAAkB,SAAUwxC,GACvC,IAAI9xC,EAAerhG,KAAKshG,eAAiBthG,KAAKshG,cAAcC,eAAiBvhG,KAAKshG,cAAcC,cAAcp5F,QAC9G,GAAIk5F,GAAgBrhG,KAAK,WACrBA,KAAKshG,cAAcC,cAAc,WAAavhG,KAAKshG,cAAcC,cAAc,WAC1E/zE,OAAOxtB,KAAK,YACjBA,KAAKshG,cAAcC,cAAcI,gBAAgBwxC,GACjDnzI,KAAK,gBAAauL,MAEjB,CACD,IAAI6nI,EAAU,UACdpzI,KAAKs0B,OAAO,sBAAuBt0B,KAAK,GAAKozI,IAC7CpzI,KAAK0L,qBAAqBynI,KASlCzxB,EAAKxhH,UAAUmzI,YAAc,SAAUn5G,GACnCl6B,KAAKszI,kBAAkBp5G,IAQ3BwnF,EAAKxhH,UAAUqzI,iBAAmB,SAAUr5G,GACxCl6B,KAAKwzI,sBAAsBt5G,IAE/BwnF,EAAKxhH,UAAUszI,sBAAwB,SAAUt5G,GAC7C,IAAIu1B,EAAUzvD,KACd,GAAKA,KAAKyzI,gBAUN,IAFA,IAAIC,EAAa,CAAC,OAAuB,OAAyB,QAC9DC,EAAW3zI,KAAK45B,0BAA0B,GACrC54B,EAAI,EAAGA,EAAI0yI,EAAW/yI,OAAQK,IAC/Bk5B,EAAQw5G,EAAW/hI,SAAS3Q,EAAE4Q,WAAY,OAC1C,eAAe5R,KAAMk6B,EAASw5G,EAAW/hI,SAAS3Q,EAAE4Q,WAAY,KAAM+hI,QAX9E3zI,KAAKyzI,gBAAkBh0I,OAAO4lH,OAAO,CAAElrF,aAAc,GAAIE,eAAgB,GAAID,eAAgB,IAAMF,GACnG9sB,YAAW,WACPqiD,EAAQ6jF,kBAAkB7jF,EAAQgkF,iBAClChkF,EAAQgkF,gBAAkB,OAC3BzzI,KAAKykH,eAYhB/C,EAAKxhH,UAAUozI,kBAAoB,SAAUp5G,GACzC,IAAIu1B,EAAUzvD,KACV2zI,EAAW3zI,KAAK45B,0BAA0B,GAC9CM,EAAUz6B,OAAO4lH,OAAO,CAAElrF,aAAc,GAAIE,eAAgB,GAAID,eAAgB,IAAMF,GACtF,IAAIH,EAAU/5B,KAAKg8B,gBAAgB1B,YAAYJ,EAASy5G,EAAU,GAAI3zI,KAAKg8B,gBAAgBtc,gBAAgBC,iBACvG3f,KAAKg8B,gBAAgBvF,WACrBsD,EAAQna,MAAK,WACT6vC,EAAQmkF,gBAIZ5zI,KAAK4zI,cAGblyB,EAAKxhH,UAAU0zI,WAAa,WACxB,IAAInkF,EAAUzvD,KACV6zI,EAAYn3G,KAAKpiB,MAAMoiB,KAAKkkF,UAAU5gH,KAAK8zG,0BAC3Cr0F,EAAUzf,KAAKg8B,gBAAgBvc,QAAQ,GAAIzf,KAAKg8B,gBAAgBtc,gBAAgBC,iBACpFF,EAAQG,MAAK,SAAUzS,GACnBsiD,EAAQqkF,YAAY3mI,EAAE2S,OAAQ+zH,EAAW1mI,EAAE4S,WAGnD2hG,EAAKxhH,UAAU6zI,iBAAmB,SAAUpyH,GACxC,IAAIi+E,EAAK5/F,KAAKkxI,mBAAmBvvH,EAAIkX,KACrC,gBAAO+mE,IAEX8hB,EAAKxhH,UAAU4zI,YAAc,SAAUh0H,EAAQ+zH,EAAW9zH,GAatD,IAZA,IAWmBi0H,EAXfvkF,EAAUzvD,KACVw9H,EAASx9H,KAAKiiG,gBACd0xC,EAAW3zI,KAAK45B,0BAA0B,GAC1Cq6G,EAAU,SAAUjzI,GACf8e,EAAO1B,QAAO,SAAUjR,GAAK,OAAOA,EAAE,GAAKwmI,KAAcnW,EAAO7rH,SAAS3Q,EAAE4Q,WAAY,KAAK0L,KAAK,GAAKq2H,MAAchzI,SACrHuzI,EAAOH,iBAAiBvW,EAAO7rH,SAAS3Q,EAAE4Q,WAAY,MACtD4rH,EAAO9wH,OAAO1L,EAAG,GACjBA,KAEJgzI,EAAUhzI,GAEVkzI,EAASl0I,KACJgB,EAAI,EAAGA,EAAIw8H,EAAO78H,OAAQK,IAC/BizI,EAAQjzI,GACRA,EAAIgzI,EAER,IAAIG,EAAU,SAAUnzI,GACpB,IAAIozI,EACJP,EAAUz1H,QAAO,SAAUjR,GACnBA,EAAE,GAAKwmI,KAAc7zH,EAAOnO,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK+hI,KACzDxmI,IAAM2S,EAAOnO,SAAS3Q,EAAE4Q,WAAY,MACpC69C,EAAQgrE,WAAW36G,EAAOnO,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK+hI,GAAW7zH,EAAOnO,SAAS3Q,EAAE4Q,WAAY,MAExGwiI,GAAa,MAGhBA,GACDC,EAAOC,iBAAiBx0H,EAAOnO,SAAS3Q,EAAE4Q,WAAY,KAAM5Q,IAGhEqzI,EAASr0I,KACb,IAASgB,EAAI,EAAGA,EAAI8e,EAAOnf,OAAQK,IAC/BmzI,EAAQnzI,GAEZhB,KAAKkY,gBAAkB4H,EACvB,IAAI8C,EAAO,GAAGlV,MAAMpK,KAAKtD,KAAKikE,kBAAkBjwB,uBAAuB,SACvE,gBAAch0C,KAAMA,KAAKiiG,gBAAiBr/E,GAC1C,gBAAe5iB,MACXA,KAAKu0B,aACLv0B,KAAKs0B,OAAO,QAA4B,CAAE8vC,OAAQ,QAASC,WAAY,CAAEwvC,kBAAmB9zF,MAGpG2hG,EAAKxhH,UAAUo0I,iBAAmB,SAAUh3H,EAAM7Q,GAC9C,IAAIkV,EAAM,IAAI,OAAY3hB,KAAK4xB,eAAgB,KAAM5xB,MACjD8lF,EAAQ,IAAI,QAAkB9lF,MAC9Bu0I,EAAYzuD,EAAMlgB,aAAa,CAACtoD,IAChCsiF,EAAKj+E,EAAIhO,OAAO4gI,EAAU,GAAIv0I,KAAKozB,cACvCpzB,KAAKw0I,aAAaD,EAAU,GAAI9nI,GAChC,IAAIurD,EAAQh4D,KAAKikE,kBAAkB/3D,cAAc,QACjD,GAAI8rD,EAAM9rD,cAAc,eAAgB,CACpC,IAAI4mG,EAAW96C,EAAM9rD,cAAc,eACnC4mG,EAASthE,WAAWub,YAAY+lD,GAC5B9yG,KAAKggE,YAAchgE,KAAKoD,QAAQ8I,cAAc,uBAC9ClM,KAAKoD,QAAQ8I,cAAc,sBAAsBhH,UAAUC,OAAO,qBAItE6yD,EADAh4D,KAAKggE,YAAcvzD,EAAQzM,KAAKggE,WACxBhgE,KAAKigE,mBAAmB/zD,cAAc,QAGtClM,KAAK4/D,aAAa1zD,cAAc,QAE5C8rD,EAAQh4D,KAAK4/D,aAAa1zD,cAAc,QACxC8rD,EAAMtzD,YAAYk7F,IAEtB8hB,EAAKxhH,UAAUs0I,aAAe,SAAU7yH,EAAKlV,GACzCzM,KAAKiiG,gBAAgBv1F,OAAOD,EAAO,EAAGkV,IAM1C+/F,EAAKxhH,UAAUu0I,gCAAkC,WAE7C,IADA,IAAI7xH,EAAO5iB,KAAKiiG,gBACPjhG,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,KACnC4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK0uF,WAAa19E,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKs1D,iBACG,SAAhFlnE,KAAKkxI,mBAAmBtuH,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKinB,KAAK9xB,MAAMC,QACvE4b,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAAU,EAG3CiM,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAK+E,SAAU,GAWvD+qG,EAAKxhH,UAAUgL,SAAW,SAAU8R,GAChC,OAAIhd,KAAKgL,oBACE,OAAmBE,SAAS8R,GAEhCA,GAOX0kG,EAAKxhH,UAAUw0I,UAAY,SAAUrvI,GAUjC,OAFIA,EAPC6pB,OAAOylH,UAAUtvI,KAAoC,IAAzBA,EAAOrB,QAAQ,KAGtCkrB,OAAOylH,UAAUtvI,IAA2B,SAAhBrF,KAAKqF,OAI9BrF,KAAKqF,OAHLsM,SAAStM,EAAQ,IAHjBsM,SAAStM,EAAQ,IAAM,IAAMrF,KAAKoD,QAAQkG,aAQhDjE,GAOXq8G,EAAKxhH,UAAU00I,sBAAwB,WACnC,OAAO50I,KAAKi0G,cAAchL,YAO9ByY,EAAKxhH,UAAU20I,qBAAuB,WAClC,OAAO70I,KAAK+yH,aAAa9pB,YAO7ByY,EAAKxhH,UAAU40I,sBAAwB,WACnC,OAAO90I,KAAKigE,mBAAmB/zD,cAAc,SAOjDw1G,EAAKxhH,UAAU60I,uBAAyB,WACpC,OAAO/0I,KAAK4/D,aAAa1zD,cAAc,SAO3Cw1G,EAAKxhH,UAAU80I,qBAAuB,WAClC,OAAOh1I,KAAKigE,mBAAmB/zD,cAAc,SAOjDw1G,EAAKxhH,UAAU+0I,0BAA4B,WACvC,OAAOj1I,KAAK4/D,aAAa1zD,cAAc,SAO3Cw1G,EAAKxhH,UAAUg1I,0BAA4B,WACvC,OAAOl1I,KAAKigE,mBAAmB/zD,cAAc,SAOjDw1G,EAAKxhH,UAAUi1I,2BAA6B,WACxC,OAAOn1I,KAAK4/D,aAAa1zD,cAAc,SAO3Cw1G,EAAKxhH,UAAUsuG,2BAA6B,SAAU4mC,GAC9Cp1I,KAAK+yG,cACL/yG,KAAK+yG,aAAasiC,iBAAiBD,GAAsC,aAA1Bp1I,KAAK8jG,mBAQ5D4d,EAAKxhH,UAAUquG,yBAA2B,SAAU6mC,GAC5Cp1I,KAAKklI,YACLllI,KAAKklI,WAAWoQ,eAAeF,GAAsC,aAA1Bp1I,KAAK8jG,mBAQxD4d,EAAKxhH,UAAUq1I,kCAAoC,SAAUH,GACrDp1I,KAAK2pI,qBACL3pI,KAAK2pI,oBAAoB6L,wBAAwBJ,GAAsC,aAA1Bp1I,KAAK8jG,mBAQ1E4d,EAAKxhH,UAAUu1I,yBAA2B,WAClCz1I,KAAKw/D,kBACLx/D,KAAKwuG,4BAA2B,IAQxCkT,EAAKxhH,UAAUw1I,uBAAyB,WAChC11I,KAAKw/D,kBACLx/D,KAAKuuG,0BAAyB,IAQtCmT,EAAKxhH,UAAUs8H,yBAA2B,SAAUmZ,GAGhD,IAFA,IAAI3hH,EAAO,GACP4hH,EAAWD,EAAsB31I,KAAKozB,aAAepzB,KAAKk8G,YACrDruG,EAAK,EAAGgoI,EAAaD,EAAU/nI,EAAKgoI,EAAWl1I,OAAQkN,IAAM,CAClE,IAAIuoB,EAAMy/G,EAAWhoI,GACjBuoB,EAAIzf,SACJqd,EAAK3nB,KAAK+pB,GAGlB,OAAOpC,GAEX0tF,EAAKxhH,UAAUulH,uBAAyB,WAChCzlH,KAAKy0B,yBAA2Bz0B,KAAKu1B,cAAc7S,QAAQ/hB,SAAWX,KAAKu1B,cAAcsH,4BACrF78B,KAAKu1B,cAAcC,mBACvBx1B,KAAKiL,cAAc,CAAEsqB,cAAe,CAAEsH,2BAA2B,KAAU,IAInF,GAAW,CACP,eAAS,KACV6kF,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,KACVwhH,EAAKxhH,UAAW,eAAW,GAC9B,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,0BAAsB,GACzC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,2BAAuB,GAC1C,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,4BAAwB,GAC3C,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,4BAAwB,GAC3C,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,kCAA8B,GACjD,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,+BAA2B,GAC9C,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAS,aACVwhH,EAAKxhH,UAAW,gBAAY,GAC/B,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,8BAA0B,GAC7C,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAU,IACXwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAS,eACVwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,2BAAuB,GAC1C,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,2BAAuB,GAC1C,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,eAAW,GAC9B,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAW,GAAI,KAChBwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAQ,GAAI,KACbwhH,EAAKxhH,UAAW,6BAAyB,GAC5C,GAAW,CACP,gBAAS,IACVwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAS,SACVwhH,EAAKxhH,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,SACVwhH,EAAKxhH,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,YACVwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,eAAS,aACVwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,aACVwhH,EAAKxhH,UAAW,0BAAsB,GACzC,GAAW,CACP,eAAS,KACVwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,OACVwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,QACVwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,IACVwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,IACVwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,KACVwhH,EAAKxhH,UAAW,gBAAY,GAC/B,GAAW,CACP,eAAS,QACVwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAS,KACVwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,KACVwhH,EAAKxhH,UAAW,kCAA8B,GACjD,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iCAA6B,GAChD,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mCAA+B,GAClD,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,4BAAwB,GAC3C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,+BAA2B,GAC9C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDwhH,EAAKxhH,UAAW,6BAAyB,GAC5CwhH,EAAOmD,EAAS,GAAW,CACvB,QACDnD,GACIA,EAnvMc,CAovMvB,S,kCC/pNF,0KAiBIo0B,EAAoC,WAOpC,SAASA,EAAmBh1H,GACxB9gB,KAAK+1I,gBAAiB,EACtB/1I,KAAKg2I,kBAAoB,GACzBh2I,KAAKi2I,gBAAkB,IAAI,OAE3Bj2I,KAAKk2I,aAAc,EACnBl2I,KAAKokB,OAAS,GACdpkB,KAAKs2G,aAAc,EACnBt2G,KAAKm2I,0BAA2B,EAChCn2I,KAAKo2I,mBAAoB,EAEzBp2I,KAAKq2I,qBAAsB,EAC3Br2I,KAAKs2I,yBAA0B,EAC/Bt2I,KAAKu2I,2BAA6B,GAClCv2I,KAAKw2I,+BAAgC,EACrCx2I,KAAKy2I,gBAAkB,EACvBz2I,KAAK02I,yBAA2B,EAChC12I,KAAK22I,4BAA8B,GACnC32I,KAAK42I,mBAAqB,GAC1B52I,KAAK62I,kBAAoB,EACzB72I,KAAK82I,wBAAyB,EAC9B92I,KAAK+2I,+BAAgC,EACrC/2I,KAAKg3I,kCAAmC,EACxCh3I,KAAKi3I,iCAAmC,GACxCj3I,KAAK8gB,OAASA,EACd9gB,KAAKsL,GAAKtL,KAAK8gB,OAAO1d,QAAQkI,GAC9BtL,KAAK87D,eAAiB,IAAI,OAAe97D,KAAK8gB,OAAO8oC,QACrD5pD,KAAKk3I,SAAW,eAAel3I,KAAK8gB,OAAOvc,eAAe,EAAO,CAAEmrG,SAAS,EAAMxnE,MAAO,MACzFloC,KAAKm3I,UAAY,eAAen3I,KAAK8gB,OAAOvc,eAAe,EAAO,CAAEmrG,SAAS,EAAOxnE,MAAO,MAC3FloC,KAAKk3I,SAAStzE,aAAa5jE,KAAK8gB,OAAOvc,cAAc,QAAS,CAC1DC,UAAW,eAAgBwK,MAAO,CAAER,KAAM,cAC1CxO,KAAKk3I,SAASlsH,YAClBhrB,KAAKm3I,UAAUvzE,aAAa5jE,KAAK8gB,OAAOvc,cAAc,QAAS,CAC3DC,UAAW,eAAgBwK,MAAO,CAAE,KAAQ,cAC5ChP,KAAKm3I,UAAUnsH,YACnBhrB,KAAKm3I,UAAUjrI,cAAc,YAAYhH,UAAU4G,IAAI,aACnD9L,KAAK8gB,OAAOrb,WACZ,eAAS,CAACzF,KAAKk3I,SAAUl3I,KAAKm3I,WAAY,CAAC,UAE3Cn3I,KAAK8gB,OAAOrW,YAC+B,IAAvCzK,KAAK8gB,OAAOrW,SAASzG,QAAQ,KAC7B,eAAS,CAAChE,KAAKk3I,SAAUl3I,KAAKm3I,WAAYn3I,KAAK8gB,OAAOrW,SAASxG,MAAM,MAGrE,eAAS,CAACjE,KAAKk3I,SAAUl3I,KAAKm3I,WAAY,CAACn3I,KAAK8gB,OAAOrW,YAwtDnE,OAhtDAqrI,EAAmB51I,UAAUsS,QAAU,WACnCxS,KAAKo3I,eAETtB,EAAmB51I,UAAU0T,WAAa,WACtC,OAAa9H,IAAI9L,KAAKq3I,IAAK,QAASr3I,KAAKw9G,aAAcx9G,MACvD,OAAa8L,IAAI9L,KAAKq3I,IAAK,QAASr3I,KAAKs3I,aAAct3I,MACvDA,KAAKu3I,cAAgB,eAASv3I,KAAKw3I,eAAgB,KACnD,IAAI3yD,EAAO7kF,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,kBAC5C24E,IACA,OAAa/4E,IAAI+4E,EAAM,QAAS7kF,KAAKu3I,cAAev3I,MACpD,OAAa8L,IAAI+4E,EAAM,QAAS7kF,KAAKu3I,cAAev3I,QAG5D81I,EAAmB51I,UAAUu4C,aAAe,WACxC,OAAatzC,OAAOnF,KAAKq3I,IAAK,QAASr3I,KAAKw9G,cAC5C,OAAar4G,OAAOnF,KAAKq3I,IAAK,QAASr3I,KAAKs3I,cAC5C,IAAIzyD,EAAO7kF,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,kBAC5C24E,IACA,OAAa1/E,OAAO0/E,EAAM,QAAS7kF,KAAKu3I,eACxC,OAAapyI,OAAO0/E,EAAM,QAAS7kF,KAAKu3I,iBAGhDzB,EAAmB51I,UAAUw3I,iBAAmB,SAAUrjH,EAAMsjH,EAAOC,GACnE,IAAIv0I,EAAQrD,KACRs5B,EAAa,GACbu+G,EAAmB,GACnBv4H,EAAQtf,KAAKi2I,gBAAgBhjH,QACjCjzB,KAAKmD,QAAQue,OAAOtC,WAChBob,aAAalb,EAAMyY,MAAM6/G,IAAah4H,MAAK,SAAUzS,GACrD9J,EAAMF,QAAQue,OAAO0X,WAAajsB,EAAE2S,OACpCzc,EAAMyd,OAAOwT,OAAO,QAAsB,CAAEiF,UAAWD,EAAY5X,OAAQre,EAAMF,QAAQue,SACzF2S,EAAKyjH,YAAcx+G,EAAWC,UAAUC,WAExC,IADA,IAAIu+G,EAAQz+G,EAAWC,UAAUC,WACxBx4B,EAAI,EAAGA,EAAI+2I,EAAMp3I,OAAQK,IAC9B62I,EAAiBxrI,KAAK,CAClBinB,MAAOykH,EAAMpmI,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,MACzCiG,UAAW,KACXosG,UAAWoS,EAAMpmI,SAAS3Q,EAAE4Q,WAAY,KAAK+lB,WAC7CC,aAAcmgH,EAAMpmI,SAAS3Q,EAAE4Q,WAAY,KAAKgmB,aAChDF,SAAUqgH,EAAMpmI,SAAS3Q,EAAE4Q,WAAY,KAAK8lB,SAC5C1a,MAAO+6H,EAAMpmI,SAAS3Q,EAAE4Q,WAAY,KAAKoL,MACzCxO,KAAMnL,EAAMF,QAAQqL,OAG5B6lB,EAAKwjH,iBAAmBA,EAAiBl3I,OAASk3I,EAC9CF,EAAMv5H,QAAO,SAAUgY,GAAO,OAAOA,EAAI9C,MAAQjwB,EAAMF,QAAQmwB,SACnEjwB,EAAMF,QAAQqtG,QAAQn8E,OAG9ByhH,EAAmB51I,UAAU83I,cAAgB,SAAU3jH,EAAMrX,GACzD,IAAI0a,EAAW13B,KAAKmD,QAAQszB,SACM,WAA7Bz2B,KAAKmD,QAAQue,OAAOlT,KAAoB,WAAa,QAAYxO,KAAKmD,QAAQue,OAAOlT,KAAO,WAAa,QAC1GypI,EAAkB,IAAI,OAAUj4I,KAAKmD,QAAQue,OAAO8V,gBAAiBE,EAAU1a,GAAO,EAAMhd,KAAKmD,QAAQy0B,cAC7G53B,KAAK03I,iBAAiBrjH,EAAM,CAACA,EAAKwjH,kBAAmBI,IAEzDnC,EAAmB51I,UAAUg4I,eAAiB,SAAU/qI,GACpD,IAAI7M,EAAS6M,EAAE7M,OACXA,EAAO4E,UAAUmB,SAAS,mBAC1BrG,KAAKm4I,OAAOn7H,MAAQ1c,EAAO4E,UAAUmB,SAAS,oBAAsB,GAAKrG,KAAKm4I,OAAOn7H,MACjFhd,KAAKm2I,yBACLn2I,KAAK8gB,OAAOwT,OAAO,kBAAmB,CAAE5lB,MAAOvB,IAG/CnN,KAAKo4I,oBAETp4I,KAAKq4I,mBACLr4I,KAAKm4I,OAAOtxF,UAGpBivF,EAAmB51I,UAAUs3I,eAAiB,SAAUrqI,IAChD,eAAkBA,KAAiB,YAAVA,EAAE5M,KAA+B,cAAV4M,EAAE5M,KAAiC,QAAV4M,EAAE5M,KAA6B,QAAV4M,EAAE5M,KAAiB4M,EAAEmrI,YAC9G,eAAkBt4I,KAAK8gB,OAAOs/C,mBAAoE,YAA/CpgE,KAAK8gB,OAAOs/C,iBAAiBC,eACjFrgE,KAAK8gB,OAAO+zF,iBAAYtpG,EAAWvL,KAAKy3I,UAAUr0I,SAElDpD,KAAKm2I,yBACLn2I,KAAK8gB,OAAOwT,OAAO,kBAAmB,CAAE5lB,MAAOvB,IAG/CnN,KAAKo4I,oBAETp4I,KAAKq4I,qBAGbvC,EAAmB51I,UAAUm4I,iBAAmB,WACxCr4I,KAAKm4I,OAAOn7H,MAAMrc,QAClB,eAAUX,KAAKu4I,MAAO,CAAC,oBAAqB,CAAC,kBACxC,eAAkB3qI,SAAS6B,KAAKvD,cAAc,uBAC/C0B,SAAS6B,KAAKvD,cAAc,qBAAqBvB,aAAa,QAAS3K,KAAK6pI,UAAU7vF,YAAY,YAItG,eAAUh6C,KAAKu4I,MAAO,CAAC,iBAAkB,CAAC,qBACrC,eAAkB3qI,SAAS6B,KAAKvD,cAAc,kCAC/C0B,SAAS6B,KAAKvD,cAAc,gCAAgCvB,aAAa,QAAS3K,KAAK6pI,UAAU7vF,YAAY,aAUzH87F,EAAmB51I,UAAU45C,kBAAoB,SAAUv5C,GACvD,OAAOP,KAAK6pI,UAAU7vF,YAAYz5C,IAEtCu1I,EAAmB51I,UAAUs4I,iBAAmB,WAC5C,IAAIp5H,EAAapf,KAAKmD,QAAQic,WAC1BqxB,EAAM,SACV,KAAMrxB,aAAsB,QACxB,IAAK,IAAIpe,EAAI,EAAGA,EAAIoe,EAAWze,OAAQK,IAEnC,UAAWoe,IAAeqxB,EAAK,CAC3B,IAAI2sB,EAAM,GACVA,EAAIp9D,KAAKmD,QAAQmwB,OAASlU,EAAWzN,SAAS3Q,EAAE4Q,WAAY,KAC5DwN,EAAWzN,SAAS3Q,EAAE4Q,WAAY,KAAOwrD,IAKzD04E,EAAmB51I,UAAUu4I,YAAc,SAAUt1I,GACjDnD,KAAKmD,QAAUA,EACfnD,KAAKg2I,kBAAoB7yI,EAAQu1I,iBAAmB,GACpD14I,KAAKmD,QAAQic,WAAajc,EAAQic,WAClCpf,KAAKmD,QAAQoc,YAAcpc,EAAQoc,YAAcpc,EAAQoc,YAAcpc,EAAQic,WAC/Epf,KAAKw4I,mBACLx4I,KAAKmD,QAAQqL,KAAOrL,EAAQqL,KAC5BxO,KAAKmD,QAAQqtB,OAASrtB,EAAQqtB,QAAU,GACxCxwB,KAAKmD,QAAQy0B,aAAez0B,EAAQy0B,eAAgB,EACpD53B,KAAKmD,QAAQw1I,gBAAkBx1I,EAAQw1I,iBAAmB34I,KAAK8gB,OAAOwX,eAAe5V,QACrF1iB,KAAKmD,QAAQmc,MAAQnc,EAAQmc,OAAS,IAAI,OAC1Ctf,KAAKmD,QAAQy1I,mBAAqBz1I,EAAQy1I,qBAAsB,EAChE54I,KAAKmD,QAAQ01B,IAAM11B,EAAQue,OAAOmX,IAClC74B,KAAKmD,QAAQ63D,kBAAoB73D,EAAQue,OAAOs5C,oBAAqB,EACrEh7D,KAAKokB,OAAS,GACdpkB,KAAK6pI,UAAY1mI,EAAQ0mI,UACzB7pI,KAAK0vD,WAAavsD,EAAQw1I,gBAAgBh4I,OAC1CX,KAAKo2I,qBAAoBp2I,KAAK8gB,OAAOwX,iBAAkBt4B,KAAK8gB,OAAOwX,eAAe7D,yBAClFz0B,KAAK64I,8BAAgC74I,KAAKo2I,mBAAqBp2I,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQue,OAAO4R,OAAStzB,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQue,OAAO4R,OAAO5lB,QAAU,IAEnLooI,EAAmB51I,UAAU44I,iBAAmB,SAAU31I,GAOtD,GANAnD,KAAKq3I,IAAMr3I,KAAK8gB,OAAOvc,cAAc,MAAO,CACxC+G,GAAItL,KAAKsL,GAAKtL,KAAKmD,QAAQqL,KAAO,YAClCQ,MAAO,CAAE6pB,IAAK74B,KAAKmD,QAAQue,OAAOmX,KAClCr0B,UAAW,oCAEfxE,KAAK+4I,KAAO/4I,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,uBACrDrB,EAAQ61I,cAAe,CACxBh5I,KAAKm4I,OAASn4I,KAAK8gB,OAAOvc,cAAc,QAAS,CAC7C+G,GAAItL,KAAKsL,GAAK,aACd9G,UAAW,kBAEfxE,KAAKu4I,MAAQv4I,KAAK8gB,OAAOvc,cAAc,OAAQ,CAC3CC,UAAW,yDAA0DwK,MAAO,CACxER,KAAM,OAAQwhB,MAAOhwB,KAAK85C,kBAAkB,aAGpD95C,KAAKi5I,UAAYj5I,KAAK8gB,OAAOvc,cAAc,OAAQ,CAAEC,UAAW,yBAChExE,KAAKi5I,UAAUv0I,YAAY1E,KAAKm4I,QAChCn4I,KAAK+4I,KAAKr0I,YAAY1E,KAAKi5I,WAC3B,IAAIC,EAAY,CACZ91I,QAASpD,KAAKm4I,OAAQjiF,eAAgB,QAASmO,WAAY,CACvD80E,YAAan5I,KAAK85C,kBAAkB,UACpCrvC,SAAUzK,KAAK8gB,OAAOrW,WAG9B,OAAM2uI,YAAYF,EAAWl5I,KAAK8gB,OAAOvc,eACzCvE,KAAKi5I,UAAU/sI,cAAc,kBAAkBxH,YAAY1E,KAAKu4I,OASpE,OAPAv4I,KAAKq5I,QAAUr5I,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,cAC7DxE,KAAKs5I,KAAOt5I,KAAK8gB,OAAOvc,cAAc,MAAO,CACzC+G,GAAItL,KAAKsL,GAAKtL,KAAKmD,QAAQqL,KAAO,gBAClChK,UAAW,4BAEfxE,KAAKq5I,QAAQ30I,YAAY1E,KAAKs5I,MAC9Bt5I,KAAK+4I,KAAKr0I,YAAY1E,KAAKq5I,SACpBr5I,KAAK+4I,MAEhBjD,EAAmB51I,UAAUq5I,WAAa,SAAUp2I,GAChD,IAAIkxB,EAAO,CACPoF,YAAa,QACb5D,WAAY71B,KAAKmD,QAAQmwB,MAAOkmH,WAAYx5I,KAAKmD,QAAQqL,KAAMC,QAAQ,GAEvEgrI,EAAc,cAGlB,GAFAplH,EAAK,GAAKolH,GAAez5I,KACzBA,KAAK8gB,OAAOwT,OAAO,OAAsBD,GACrCA,EAAK5lB,OACLtL,EAAQsL,OAAS4lB,EAAK5lB,WAD1B,CAIAzO,KAAKy3I,UAAY,IAAI,OAAO,CACxB9gI,SAAS,EAAO9L,QAAS7K,KAAK+4I,KAC9BlzI,MAAO7F,KAAKo3I,YAAYxxI,KAAK5F,MAC7ByF,UAAWzF,KAAK8gB,OAAOrb,UACvBH,OAAS,eAAkB,gBAAanC,EAAQ7C,OAAQ,cACjDN,KAAK8gB,OAAO1d,QAAQ8B,UAAUmB,SAAS,YAAc,IAAM,IAClE/F,OAAQN,KAAK8gB,OAAO1d,QAASs2I,kBAAmB,CAAE32I,OAAQ,QAC1DkgD,QAAS,CAAC,CACFoE,MAAOrnD,KAAK25I,SAAS/zI,KAAK5F,MAC1B45I,YAAa,CACT/uI,QAAS7K,KAAK85C,kBAAkB95C,KAAKgyI,QAAU,WAAa,gBAC5DvnI,SAAUzK,KAAK8gB,OAAOrW,SAAW,aAAoBzK,KAAK8gB,OAAOrW,SAAW,YAC5EovI,WAAW,IAGnB,CACIxyF,MAAOrnD,KAAK25I,SAAS/zI,KAAK5F,MAC1B45I,YAAa,CAAEnvI,SAAUzK,KAAK8gB,OAAOrW,SAAW,UAAiBzK,KAAK8gB,OAAOrW,SAAW,SACpFI,QAAS7K,KAAK85C,kBAAkB95C,KAAKgyI,QAAU,eAAiB,kBAE5Ep6C,QAAS53F,KAAK85I,cAAcl0I,KAAK5F,MACjC0F,KAAM1F,KAAK+5I,WAAWn0I,KAAK5F,MAC3ByK,SAAUzK,KAAK8gB,OAAOrW,SAAWzK,KAAK8gB,OAAOrW,SAAW,KAE5D,IAAIuvI,EAAmB,mBACvBh6I,KAAKy3I,UAAU,GAAKuC,IAAoB,EACxCh6I,KAAKi6I,uBAAuB92I,GAC5B,IAAI+2I,EAAcl6I,KAAK8gB,OAAOwX,gBAAsD,aAApCt4B,KAAK8gB,OAAOwX,eAAe9pB,KACvExO,KAAK85C,kBAAkB,4BAA8B95C,KAAK85C,kBAAkB,yBAEhF,GADA95C,KAAKq3I,IAAI1sI,aAAa,aAAcuvI,GAChC/2I,EAAQg3I,mBAAoB,CAC5B,IAAIC,EAAgBxsI,SAAS1B,cAAc,4DAC3CkuI,EAAc11I,YAAY1E,KAAKq3I,UAG/Br3I,KAAK8gB,OAAO1d,QAAQsB,YAAY1E,KAAKq3I,KAEzCr3I,KAAKy3I,UAAU5mD,SAAS7wF,KAAKq3I,KAC7Br3I,KAAKy3I,UAAUr0I,QAAQ2D,MAAMonE,UAAYhrE,EAAQg3I,mBAAqB,OAASn6I,KAAKmD,QAAQkC,OAAS,KACrGrF,KAAKy3I,UAAUvnI,OACf,IAAIrF,EAAU7K,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,kBACnDrB,EAAQnG,YAAY1E,KAAK+4I,MACzB/4I,KAAK4T,aACA,eAAkB5T,KAAK8gB,OAAOs/C,mBAAoE,YAA/CpgE,KAAK8gB,OAAOs/C,iBAAiBC,eAC7ErgE,KAAKo2I,kBAGJp2I,KAAKo2I,mBAAqBp2I,KAAK8gB,OAAOwX,gBAAkE,YAAhDt4B,KAAK8gB,OAAOwX,eAAe8nC,iBACxFpgE,KAAKq6I,YAGDr6I,KAAKo2I,oBACLp2I,KAAKs5I,KAAKvyI,MAAMuzI,UAAYt6I,KAAKu6I,cAAcv6I,KAAKs5I,MAAQ,MAEhE,eAAc,CAAEh5I,OAAQN,KAAKq5I,QAAS5uI,SAAUzK,KAAK8gB,OAAOrW,SAAWzK,KAAK8gB,OAAOrW,SAAW,MAAQzK,KAAK8gB,OAAOvc,eAClH,eAAYvE,KAAKq5I,UAVjBr5I,KAAK8gB,OAAO+zF,iBAAYtpG,EAAWvL,KAAKy3I,UAAUr0I,SAYtDpD,KAAKw6I,eAET1E,EAAmB51I,UAAU+5I,uBAAyB,SAAU92I,GACxDA,EAAQg3I,qBACRn6I,KAAKy3I,UAAUx0F,QAAU,CAAC,IAC1BjjD,KAAKy3I,UAAU1zI,SAAW,CAAEwB,EAAG,GAAIC,EAAG,IACtCxF,KAAKy3I,UAAUn3I,OAASsN,SAAS1B,cAAc,oDAC/ClM,KAAKy3I,UAAUnyI,MAAQ,SAG/BwwI,EAAmB51I,UAAU45I,cAAgB,SAAU3sI,GAC/CnN,KAAKmD,QAAQg3I,mBACbn6I,KAAKy3I,UAAUr0I,QAAQ2D,MAAM/B,KAAO,MAG/B,OAAQ2K,SAIT3P,KAAKy3I,UAAU1zI,SAAW,CAAEwB,EAAG,SAAUC,EAAG,UAH5C,eAAqBxF,KAAKmD,QAAQ7C,OAAQN,KAAKy3I,WAMnDz3I,KAAKmD,QAAQue,OAAOy5C,gBACpBn7D,KAAK8gB,OAAOwT,OAAO,QAA4BnnB,IAGvD2oI,EAAmB51I,UAAUu6I,WAAa,SAAUt3I,GAChDnD,KAAKy4I,YAAYt1I,GACjBnD,KAAK84I,iBAAiB31I,GACtBnD,KAAKu5I,WAAWp2I,IAEpB2yI,EAAmB51I,UAAUk3I,YAAc,WAIvC,GAHIp3I,KAAKo2I,mBAAqBp2I,KAAKu2I,2BAA2B51I,SAAWX,KAAKmD,QAAQszB,WAClFz2B,KAAKmD,QAAQic,WAAWA,WAAWoT,KAAOxyB,KAAKu2I,4BAE/Cv2I,KAAKy3I,YAAcz3I,KAAKy3I,UAAUzuH,YAAa,CAC/ChpB,KAAK06I,UAAW,EAChB,IAAIC,EAAoB36I,KAAKmD,QAAQuf,QAAQtE,QAAO,SAAUgY,GAAO,OAAOA,EAAI4nC,2BAE5E4yB,EAAqB5wF,KAAK8gB,OAAO8vE,mBACjC+pD,EAAkBh6I,SAAW,eAAkBiwF,IAAuBA,EAAmBgqD,oBACzF56I,KAAK8gB,OAAOw2F,gBAAgB,CAAC,wBAE5Bt3G,KAAK8gB,OAAO3Y,SAAWnI,KAAK8gB,OAAO+R,aAA0CtnB,IAAhCvL,KAAK8gB,OAAOw2F,iBAC1D,eAAuBt3G,KAAK8gB,OAAQ,CAAC,uBAEzC9gB,KAAK8gB,OAAOwT,OAAO,QAAwB,CAAEhB,MAAOtzB,KAAKmD,QAAQmwB,QACjEtzB,KAAKy3I,UAAUjlI,UACfxS,KAAKy4C,eACL,gBAAOz4C,KAAKq3I,KACZr3I,KAAKq3I,IAAM,KACXr3I,KAAK8gB,OAAOwT,OAAO,QAA0B,MAQrDwhH,EAAmB51I,UAAU26I,YAAc,SAAUzkH,GAEjD,IAAI/B,EAAO,CAAE2mF,SAAUh7G,KAAMwwG,QAASxwG,KAAK66I,YAAapsI,QAAQ,GAChEzO,KAAK8gB,OAAOwT,OAAO,QAAoBD,GACnCA,EAAK5lB,QAGTzO,KAAKmD,QAAQqtG,QAAQ,CAAEzzE,OAAQ,eAAgBzJ,MAAO8C,EAAMA,EAAI9C,MAAQtzB,KAAKmD,QAAQmwB,SAEzFwiH,EAAmB51I,UAAUy5I,SAAW,SAAUxsI,GAC9C,GAAInN,KAAKk2I,YAAa,CAClB,GAAwC,UAAnC/oI,EAAE7M,OAAOoP,QAAQ6S,eAA6BpV,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAC7D,KAAd8G,EAAEqG,QACGxT,KAAKm2I,0BACNn2I,KAAK86I,qBAGR,CACD,IAAIt+H,EAAOrP,EAAE7M,OAAO0qB,WAAW69B,YAAYtmC,cACvCviB,KAAK85C,kBAAkB95C,KAAKgyI,QAAU,WAAa,gBAAgBzvH,gBAAkB/F,EAChFxc,KAAKm2I,0BACNn2I,KAAK86I,iBAGJ96I,KAAK85C,kBAAkB,eAAev3B,gBAAkB/F,GAC7Dxc,KAAK66I,cAGb76I,KAAKo3I,mBAEAjqI,EAAE7M,QAAU6M,EAAE7M,OAAO0qB,YAC1B7d,EAAE7M,OAAO0qB,WAAW69B,YAAYtmC,gBAAkBviB,KAAK85C,kBAAkB,gBAAgBv3B,cACzFviB,KAAKo3I,cAEqC,UAAnCjqI,EAAE7M,OAAOoP,QAAQ6S,gBACxBviB,KAAK66I,cACL76I,KAAKo3I,eAELp3I,KAAKmD,QAAQue,OAAOy5C,gBACpBn7D,KAAK8gB,OAAOwT,OAAO,OAAmC,KAO9DwhH,EAAmB51I,UAAU46I,eAAiB,WAC1C,IAAIz3I,EAAQrD,KACRA,KAAKo2I,oBACLp2I,KAAKs5I,KAAKxuI,UAAY,GACtB,eAAe9K,KAAKs5I,KAAMt5I,KAAK42I,mBAAmBlpI,UAEtD,IAQIqtI,EARArrC,EAAU,GAAGhiG,MAAMpK,KAAKtD,KAAKs5I,KAAKxsF,iBAAiB,mDACnDlP,EAAQ8xD,EACRsrC,EAAO,QACPC,EAAWj7I,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,mBAChD+uI,IACAj7I,KAAKmD,QAAQu0B,SAAWsjH,EAAOC,EAASjiB,cAAc,GAAGh8G,OAE7Dhd,KAAKk7I,eAA2C,aAA1Bl7I,KAAKmD,QAAQu0B,SAE9B13B,KAAKmD,QAAQ61I,gBACd+B,EAAc/6I,KAAKi5I,UAAU/sI,cAAc,mBAE/C,IAYI8Q,EACAxC,EACA7Z,EACAw6I,EAfAC,EAAUp7I,KAAKmD,QAAQy1I,mBACvByC,EAAW,CACX/nH,MAAOtzB,KAAKmD,QAAQmwB,MAAOiG,UAAWv5B,KAAKk7I,eAAiB,MAAQ,KAAMriH,IAAK74B,KAAKmD,QAAQ01B,IAC5FnB,SAAUsjH,EAAMxsI,KAAMxO,KAAKmD,QAAQqL,KAAMm3H,UAAWyV,EAASxjH,aAAc53B,KAAKmD,QAAQy0B,cAExF0jH,EAAat7I,KAAKu7I,WAAa7rC,EAAQ/uG,QAAUX,KAAKu7I,SAAW7rC,EAAQ/uG,OAAS+uG,EAAQ/uG,OAC1F26I,GAAcP,GAAqC,KAAtBA,EAAY/9H,QACzCg+H,EAAOh7I,KAAKk7I,eAAiB,QAAU,WACvCxrC,EAAU,GAAGhiG,MAAMpK,KAAKtD,KAAKs5I,KAAKxsF,iBAAiB,iCACnDuuF,EAAS9hH,UAAYv5B,KAAKk7I,eAAiB,KAAO,MAClDG,EAAS3jH,SAAWsjH,GAMxB,IAAIQ,EAAO,GACX,GAAK9rC,EAAQ/uG,SAAWX,KAAKu7I,UAAaR,GAAeA,EAAY/9H,OAA+B,KAAtB+9H,EAAY/9H,OACnFhd,KAAKo2I,kBAAmB,CAC3B,GAAKp2I,KAAKo2I,kBAgBDp2I,KAAKo2I,mBACVp2I,KAAKy7I,uBAAuBD,QAhB5B,IAAK,IAAIx6I,EAAI,EAAGA,EAAI0uG,EAAQ/uG,OAAQK,IAChCgc,EAAQhd,KAAKokB,OAAO,gBAAasrF,EAAQ/9F,SAAS3Q,EAAE4Q,WAAY,KAAM,YAAYlH,aAAa,QAC/FywI,EAAO,eAAO,GAAI,CAAEn+H,MAAOA,GAASq+H,GAChCr+H,IAAUA,EAAMpL,WAAWjR,SAC3Bw6I,EAAKzjH,SAAW4jH,EAAa,WAAa,SAEhC,KAAVt+H,GAAgB,eAAkBA,GAClCw+H,EAAOA,EAAKhuH,OAAOsoH,EAAmB4F,4BAA4BL,IAGlEG,EAAKnvI,KAAK8uI,GAEdn7I,KAAK27I,sBAAsBR,GAMR,SAAtBn7I,KAAKmD,QAAQqL,MAAyC,aAAtBxO,KAAKmD,QAAQqL,OAAwBovC,EAAMj9C,SAC5EA,EAASi9C,EAAMj9C,OAAS,EACxB6Z,EAAMxa,KAAKokB,OAAO,gBAAaw5B,EAAMjsC,SAAShR,EAAOiR,WAAY,KAAM,YAAYlH,aAAa,QAC5F,eAAkB8P,IAAQ8gI,GAC1BE,EAAKnvI,KAAK,CACNinB,MAAO+nH,EAAS/nH,MAAOqyG,UAAW0V,EAAS1V,UAAWjuG,SAAU,QAChE6B,UAAW,MAAOvc,MAAO,QAIrC,IAAI4+H,EAAmB57I,KAAKo2I,kBAAoBp2I,KAAK+4I,KAAK7sI,cAAc,kBACpElM,KAAKs5I,KAAKptI,cAAc,kBAC5B,GAAI0vI,GAAoBA,EAAiB12I,UAAUmB,SAAS,WAAY,CACpE,IAAIw1I,EAAsB77I,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQmwB,OAC9D,IAAIuoH,EAcA,OALA,IARA,IAAI1pG,EAAU,SAAUtuB,GACf23H,EAAKjkH,MAAK,SAAUja,GACrB,OAAOA,EACFN,QAAU6+H,EAAoBlqI,SAASkS,EAAEjS,WAAY,KAAKoL,UAE/Dw+H,EAAKnvI,KAAKwvI,EAAoBlqI,SAASkS,EAAEjS,WAAY,OAGpDiS,EAAI,EAAGA,EAAIg4H,EAAoBl7I,OAAQkjB,IAC5CsuB,EAAQtuB,GAOpB,GAAK7jB,KAAKo2I,mBAGL,GAAIoF,EAAK76I,OACVX,KAAK87I,eAAeN,QAEnB,GAAIx7I,KAAK+4I,KAAK7sI,cAAc,gBAAgBhH,UAAUmB,SAAS,aAAem1I,EAAK76I,OAAQ,CAC5F,IAAIo7I,EAAgB/7I,KAAKmD,QAAQw1I,gBAAgBphH,MAAK,SAAUva,GAC5D,OAAO3Z,EAAMF,QAAQmwB,QAAUtW,EAAMsW,SAErCyoH,GACA/7I,KAAK66I,oBAVT76I,KAAK87I,eAAeN,OAcvB,CACGO,EAAgB/7I,KAAKmD,QAAQw1I,gBAAgBphH,MAAK,SAAUva,GAC5D,OAAO3Z,EAAMF,QAAQmwB,QAAUtW,EAAMsW,SAErCyoH,GACA/7I,KAAK66I,gBAIjB/E,EAAmB51I,UAAUu7I,uBAAyB,SAAUD,GAC5D,IAAIx+H,EACJ,GAAIhd,KAAKi3I,iCAAiCt2I,OACtC,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKi3I,iCAAiCt2I,OAAQK,IAAK,CACnE,IAAIg7I,EAAOh8I,KAAKi3I,iCAAiCj2I,GAEjD,GADAgc,EAAQg/H,EAAKh/H,MAAQ,GACP,KAAVA,GAAgB,eAAkBA,GAAQ,CAC1C,IAAIi/H,EAAgB,CAAE1iH,UAAWyiH,EAAKziH,UAAWjG,MAAO0oH,EAAK1oH,MAAO9kB,KAAMwtI,EAAKxtI,KAAMqqB,IAAKmjH,EAAKnjH,IAAKnB,SAAUskH,EAAKtkH,SAC/GiuG,UAAWqW,EAAKrW,UAAW/tG,aAAcokH,EAAKpkH,cAClD4jH,EAAKnvI,KAAKvJ,MAAM04I,EAAM1F,EAAmB4F,4BAA4BO,SAGrET,EAAKnvI,KAAKrM,KAAKi3I,iCAAiCj2I,IAEpDhB,KAAK27I,sBAAsB37I,KAAKi3I,iCAAiCj2I,IAGzE,IAAKhB,KAAK+2I,+BAAuD,KAAtB/2I,KAAKm4I,OAAOn7H,QAAmBhd,KAAKmD,QAAQ+4I,6BAA8BV,EAAK76I,QACtH,IAASK,EAAI,EAAGA,EAAIhB,KAAK64I,8BAA8Bl4I,OAAQK,IAC3Dw6I,EAAKW,QAAQn8I,KAAK64I,8BAA8B73I,IAChDhB,KAAK27I,sBAAsB37I,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQmwB,OAAOtyB,IAGpD,KAAtBhB,KAAKm4I,OAAOn7H,OAAkBhd,KAAK+2I,gCAAiC/2I,KAAK82I,yBACzE92I,KAAKo8I,mBAAmB,aAAe,KACvCZ,EAAKW,QAAQn8I,KAAKo8I,oBAClBp8I,KAAK27I,sBAAsB37I,KAAKo8I,sBAGxCtG,EAAmB51I,UAAUy7I,sBAAwB,SAAUpiH,GAC3D,IAAIlF,EAAO,CACP2mF,SAAUh7G,KAAMwwG,QAASxwG,KAAK86I,eAAgB7/B,KAAM1hF,EAAUjG,MAAO+oH,KAAM9iH,EAAUA,UAAW+iH,KAAM/iH,EAAU7B,SAChH6kH,KAAMhjH,EAAUosG,UAAW6W,KAAMjjH,EAAU3B,aAAc6kH,KAAMljH,EAAUvc,MAAOvO,QAAQ,GAE5FzO,KAAK8gB,OAAOwT,OAAO,QAAoBD,GACnCA,EAAK5lB,QAMbqnI,EAAmB4F,4BAA8B,SAAUL,GACvD,IAAIG,EAAO,GAeX,MAdsB,WAAlBH,EAAS7sI,MACTgtI,EAAKnvI,KAAK,CACNinB,MAAO+nH,EAAS/nH,MAAOsE,aAAcyjH,EAASzjH,aAAc+tG,UAAW0V,EAAS1V,UAChFjuG,SAAU2jH,EAAS3jH,SAAU6B,UAAW8hH,EAAS9hH,UAAWvc,MAAO,KAG3Ew+H,EAAKnvI,KAAK,CACNinB,MAAO+nH,EAAS/nH,MAChBqyG,UAAW0V,EAAS1V,UAAWjuG,SAAU2jH,EAAS3jH,SAAU6B,UAAW8hH,EAAS9hH,UAAWvc,MAAO,OAEtGw+H,EAAKnvI,KAAK,CACNinB,MAAO+nH,EAAS/nH,MAAOqyG,UAAW0V,EAAS1V,UAAWjuG,SAAU2jH,EAAS3jH,SACzE6B,UAAW8hH,EAAS9hH,UAAWvc,WAAOzR,IAEnCiwI,GAIX1F,EAAmB51I,UAAU47I,eAAiB,SAAUnE,GACpD,IACIp+G,EADAmjH,EAAW/E,EAAM,GAErB,IAAK,eAAkB+E,GAAW,CAC9BnjH,EAAYmjH,EAAS5E,YAAc4E,EAAS5E,YACxC,IAAI,OAAU4E,EAASppH,MAAOopH,EAAShlH,SAAUglH,EAAS1/H,OAAQ0/H,EAAS/W,UAAW+W,EAAS9kH,cACnG,IAAK,IAAI/T,EAAI,EAAGA,EAAI8zH,EAAMh3I,OAAQkjB,IAC9B0V,OAA8DhuB,IAAlDosI,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAKkmI,YAC1Cv+G,EAAUo+G,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAK2nB,WAAWo+G,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAKkmI,aACzFv+G,EAAUo+G,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAK2nB,WAAWo+G,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAK0hB,MAAOqkH,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAK8lB,SAAUigH,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAKoL,OAAQ26H,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAK+zH,UAAWgS,EAAMhmI,SAASkS,EAAEjS,WAAY,KAAKgmB,cAE7Q,IAAIvD,EAAO,CACP0I,OAAQ,YAAa86G,iBAAkBF,EAAOrkH,MAAOtzB,KAAKmD,QAAQmwB,MAClEwkH,YAAa,OAAUhgH,GAAGyB,IAE9Bv5B,KAAKmD,QAAQqtG,QAAQn8E,KAG7ByhH,EAAmB51I,UAAUw2B,gBAAkB,SAAUN,GACrD,QAAOA,EAAIM,iBAAkBN,EAAIM,mBAErCo/G,EAAmB51I,UAAUk4I,kBAAoB,WAC7C,IAAI/0I,EAAQrD,KACRwa,EAAMxa,KAAKm4I,OAAOn7H,MAClB0E,EAAS1hB,KAAKmD,QAAQue,OACtBpC,EAAQtf,KAAK02B,gBAAgBhV,GAAU1hB,KAAKi2I,gBAAgBhjH,QAAUjzB,KAAKmD,QAAQmc,MAAM2T,QACzF0pH,EAAe38I,KAAKmD,QAAQmc,MAAM2T,QAClC+oH,EAAO18H,EAAM8U,QAAQhW,QAAO,SAAUjR,GAAK,OAAOA,GAAc,YAATA,EAAEopB,MAAqB,GAClFjX,EAAM8U,QAAU,GAChBuoH,EAAavoH,QAAU,GACvB,IAAIwoH,EAAgC,WAAtB58I,KAAKmD,QAAQqL,MAAqB1H,WAAW0T,GAAQ1T,WAAW0T,GAAOA,EACjFkd,EAAW13B,KAAKmD,QAAQszB,SACD,WAAtBz2B,KAAKmD,QAAQqL,KAAoB,WAAa,QAAYxO,KAAKmD,QAAQqL,KAAO,WAAa,QAC5Fm3H,GAAY,EACZ/tG,EAAe53B,KAAKmD,QAAQy0B,aAC5BtE,EAAQtzB,KAAK02B,gBAAgBhV,GAAUA,EAAO8V,gBAAkB9V,EAAO4R,MAC3EspH,EAAqB,KAAXA,QAA4BrxI,IAAXqxI,OAAwBrxI,EAAYqxI,EAC/D,IAKIC,EALArB,EAAO,GACPH,EAAW,CACX/nH,MAAOA,EAAOiG,UAAW,KAAMV,IAAK74B,KAAKmD,QAAQ01B,IACjDnB,SAAU,QAASlpB,KAAMxO,KAAKmD,QAAQqL,KAAMm3H,UAAWA,EAAW/tG,aAAcA,GAGhFhC,EAAa51B,KAAKmD,QAAQoc,YAAY8V,QAAQvgB,cAsBlD,GArB0B,YAAtB9U,KAAKmD,QAAQqL,YACEjD,IAAXqxI,IACsF,IAAtF58I,KAAK85C,kBAAkB,cAAcv3B,cAAcve,QAAQ44I,EAAOr6H,eAClEq6H,EAAS,YAEOrxI,IAAXqxI,IACkF,IAAvF58I,KAAK85C,kBAAkB,eAAev3B,cAAcve,QAAQ44I,EAAOr6H,iBACnEq6H,EAAS,cAEErxI,IAAXqxI,IACsF,IAAtF58I,KAAK85C,kBAAkB,cAAcv3B,cAAcve,QAAQ44I,EAAOr6H,gBAAyBqT,GAEjFA,IAAVgnH,GAAiE,QAEjDrxI,IAAXqxI,IACkF,IAAvF58I,KAAK85C,kBAAkB,eAAev3B,cAAcve,QAAQ44I,EAAOr6H,gBAAyBqT,IAElFA,IAAVgnH,GAAiE,GAErEllH,EAAW,UAEY,SAAtB13B,KAAKmD,QAAQqL,MAAyC,aAAtBxO,KAAKmD,QAAQqL,MAA6C,aAAtBxO,KAAKmD,QAAQqL,OAAwBxO,KAAKmD,QAAQqtB,OAAQ,CAC/H,IAAIvW,EAAO,IAAI,OACXuW,EAA0C,kBAAzBxwB,KAAKmD,QAAc,OAAiBnD,KAAKmD,QAAQqtB,OAClExwB,KAAKmD,QAAQqtB,OAAOA,OAEpBosH,EADApsH,GACSvW,EAAK6iI,UAAUtiI,EAAK,CAAEgW,OAAQA,KAG9B,IAAInW,KAAKG,GAEI,aAAtBxa,KAAKmD,QAAQqL,OACbouI,EAASA,EAAOtnE,cAAgB,IAAM,gBAAQsnE,EAAOzmE,WAAa,GAAK,IAAM,gBAAQymE,EAAO1nE,YAGpGl1E,KAAKs2I,yBAA0B,EAC/Bt2I,KAAK42I,mBAAqB,GAC1B52I,KAAK82I,wBAAyB,EAC9B92I,KAAK+2I,+BAAgC,EACrC/2I,KAAKg3I,kCAAmC,EACxCh3I,KAAKy2I,gBAAkB,EACvBz2I,KAAK62I,kBAAoB,EACzB72I,KAAKi3I,iCAAmC,GACd,KAAtBj3I,KAAKm4I,OAAOn7H,OACZhd,KAAK64I,8BAAgC74I,KAAKo2I,mBAAqBp2I,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQue,OAAO4R,OAAStzB,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQue,OAAO4R,OAAO5lB,QAAU,GAC/K1N,KAAKmD,QAAQ45I,qBAAuB/8I,KAAKmD,QAAQ45I,sBAGjD/8I,KAAK64I,8BAAgC,GAEzC74I,KAAKg9I,YAAY19H,GACjB,IAAI+U,EAAO,CACPoF,YAAa,QACbggH,YAAaz5I,KAAM61B,WAAYvC,EAAO5R,OAAQA,EAC9CgW,SAAUA,EAAUiuG,UAAWA,EAAW/tG,aAAcA,EAAcqlH,kBAAmB,KACzF39H,MAAOA,EAAOtC,MAAO4/H,GAErB58I,KAAKo2I,mBAAqBp2I,KAAK8gB,OAAOwX,eAAe4kH,aACrD7oH,EAAK4oH,kBAAoBj9I,KAAK8gB,OAAOwX,eAAe4kH,YAExDl9I,KAAK8gB,OAAO7Y,QAAQ,OAAoBosB,GAAM,SAAU8oH,GAIpD,GAFAA,EAAWzlH,SAAWylH,EAAWzlH,SACjCmlH,EAAW,IAAI,OAAUvpH,EAAO6pH,EAAWzlH,SAAUrD,EAAKrX,MAAOmgI,EAAWxX,UAAWwX,EAAWvlH,cACvE,SAAvBv0B,EAAMF,QAAQqL,MAA0C,aAAvBnL,EAAMF,QAAQqL,MAA8C,aAAvBnL,EAAMF,QAAQqL,KAAqB,CACzGkpB,EAAW,QACX,IAAI0lH,EAAY,CACZ9pH,MAAOA,EAAOoE,SAAUA,EAAU1a,MAAO4/H,EAAQjX,UAAWA,EAC5D/tG,aAAcA,GAEb,eAAkBglH,KACnBC,EAAW,eAAiBO,EAAW/5I,EAAMF,QAAQqL,OAG7D,GAAIgM,GAAsB,kBAARA,GAAoBnX,EAAMq3I,UACxCr3I,EAAMy2C,kBAAkB,UAAUv3B,cAAcve,QAAQwW,EAAI+H,gBAAkB,EAAG,CACjFi5H,EAAOA,EAAKhuH,OAAOsoH,EAAmB4F,4BAA4BL,IAClE,IAAIgC,EAAmBvH,EAAmBwH,kBAAkB9B,GAC5D6B,EAAiB7jH,WAAWntB,KAAKwwI,GACjCA,EAAWQ,EACX/9H,EAAMyY,MAAMslH,QAEP7iI,EAAI7Z,QACTk8I,EAAY,eAAkBb,GAA+Ba,EAAvBA,EAASxjH,IAAI2iH,EAAK7uI,GACxDmS,EAAMyY,MAAM8kH,IAEN,eAAkBb,KACxBa,EAAWb,EAAK7uI,EAChBmS,EAAMyY,MAAMikH,EAAK7uI,IAErB9J,EAAM+4I,mBAAqBS,EAC3BM,EAAWF,kBAAqB,eAAkBE,EAAWF,mBAAoD,IAA/BE,EAAWF,kBACzF55I,EAAM+yI,mBAAqB/yI,EAAMyd,OAAOwX,eAAe4kH,aAAeC,EAAWF,oBACjF55I,EAAMyd,OAAOwX,eAAe4kH,WAAa7oH,EAAK4oH,mBAElD,IAAI3jH,EAAa,GAGjB,GAFA,eAAYj2B,EAAMg2I,SAClBh2I,EAAMizG,aAAc,EAChBjzG,EAAMqzB,gBAAgBhV,IAAWlH,EAAI7Z,OAAQ,CAC7C,IAAI48I,EAAW,WAAY77H,EAAOtC,WAAc,IAAI,OAAYsC,EAAOtC,WAAWU,QAC9E4B,EAAOtC,WAEXm+H,EAAQ/iH,aAAalb,GAAOM,MAAK,SAAUzS,GACvC,IAAIisB,EAAa/1B,EAAMF,QAAQue,OAAO0X,WACtC/1B,EAAMF,QAAQue,OAAO0X,WAAajsB,EAAE2S,OACpCzc,EAAMyd,OAAOwT,OAAO,QAAsB,CAAEiF,UAAWD,EAAY5X,OAAQA,IACvE4X,EAAWC,UAAUC,WAAW74B,OAChCg8I,EAAa5kH,MAAMuB,EAAWC,WAG9Bl2B,EAAMizG,aAAc,EAExBjzG,EAAMF,QAAQue,OAAO0X,WAAaA,EAC9B/1B,EAAM+yI,mBACN/yI,EAAMgzI,sBAAsB,eAAkBhzI,EAAMm6I,UACpDn6I,EAAMo6I,0BAA0Bd,GAChCA,EAAah9H,iBAGbg9H,EAAapsF,KAAK4sF,EAAWF,mBAEjC55I,EAAM20B,OAAOmlH,EAAYR,WAIzBt5I,EAAM+yI,mBAAqB/yI,EAAMyd,OAAOwX,eAAe4kH,YACvD75I,EAAMgzI,sBAAsB,eAAkBhzI,EAAMm6I,UACpDn6I,EAAMo6I,0BAA0Bn+H,GAChCA,EAAMK,iBAGNL,EAAMixC,KAAK4sF,EAAWF,mBAE1B55I,EAAM20B,OAAOmlH,EAAY79H,OAIrCw2H,EAAmB51I,UAAU83B,OAAS,SAAU3D,EAAM/U,GAC9Ctf,KAAK8gB,OAAO1B,YAAc,WAAYpf,KAAK8gB,OAAO1B,WAClDpf,KAAK09I,YAAYrpH,EAAM/U,GAGvBtf,KAAK29I,cAAcr+H,IAG3Bw2H,EAAmB51I,UAAU09I,qBAAuB,SAAUl7H,EAASqzH,GAMnE,IALA,IAAIv8G,EAAas8G,EAAmB98G,aAAatW,EAASqzH,GACtD3+G,EAAgB,GAChBkC,EAAa,GACbukH,OAA8CtyI,IAArCvL,KAAK8gB,OAAOwW,qBACrBc,EAAgBylH,EAAS79I,KAAK8gB,OAAOwW,uBAAyB,GACzDzpB,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKokB,GAAa3rB,EAAKhK,EAAGlD,OAAQkN,IAAM,CACjE,IAAIwH,EAAOxR,EAAGgK,GACVuoB,OAAM,EACNynH,IAAW79I,KAAK8gB,OAAO4U,iBAAiBrgB,KACxC+gB,EAAM,eAA2B/gB,EAAM+iB,IAEvChC,GACAp2B,KAAK8gB,OAAOwT,OAAO,QAAsB,CAAEiF,UAAWD,EAAY5X,OAAQ0U,IACtEkD,EAAWC,UAAUC,WAAW74B,QAChCy2B,EAAc/qB,KAAK,OAAUyrB,GAAGwB,EAAWC,UAAUC,cAIzDpC,EAAc/qB,KAAKmtB,EAAW,GAAKnkB,IAG3C,OAAO+hB,EAAcz2B,QAAU,OAAU04B,IAAIjC,IAEjD0+G,EAAmB51I,UAAU8yB,SAAW,WACpC,OAAOhzB,KAAK8gB,OAAOkS,SAAWhzB,KAAK8gB,OAAOkS,WAAWC,QAAU,IAAI,QAEvE6iH,EAAmB51I,UAAUs6I,WAAa,WACtC,IAAIn3I,EAAQrD,KACZA,KAAK89I,aAAc,EACnB,IAAIx+H,EAAQtf,KAAKgzB,WACjB1T,EAAMK,gBACN3f,KAAKg9I,YAAY19H,GACjB,IAAI+U,EAAO,CACPoF,YAAa,QAA4Bna,MAAOA,EAAO29H,kBAAmB,MAE1ExD,EAAc,cAClBplH,EAAK,GAAKolH,GAAez5I,KACrBA,KAAKo2I,mBAAqBp2I,KAAK8gB,OAAOwX,eAAe4kH,aACrD7oH,EAAK4oH,kBAAoBj9I,KAAK8gB,OAAOwX,eAAe4kH,YAExDl9I,KAAK8gB,OAAO7Y,QAAQ,OAAoBosB,GAAM,SAAUA,GACpDA,EAAK4oH,kBAAqB,eAAkB5oH,EAAK4oH,mBAA8C,IAAzB5oH,EAAK4oH,kBACvE55I,EAAM+yI,mBAAqB/yI,EAAMyd,OAAOwX,eAAe4kH,aAAe7oH,EAAK4oH,oBAC3E55I,EAAMyd,OAAOwX,eAAe4kH,WAAa7oH,EAAK4oH,mBAE7C55I,EAAM+yI,mBACP92H,EAAMixC,KAAKl8B,EAAK4oH,mBAEf5oH,EAAK/U,MAAMy+H,UAAUp9I,SAAU0C,EAAM+yI,oBACtC/yI,EAAMy6I,aAAc,EACpBz6I,EAAM26I,cAAc1+H,IAEpBjc,EAAM+yI,oBACN/yI,EAAMgzI,sBAAsB,eAAkBhzI,EAAMm6I,UACpDn6I,EAAMo6I,0BAA0Bn+H,IAEhCjc,EAAMyd,OAAO1B,YAAc,WAAY/b,EAAMyd,OAAO1B,WACpD/b,EAAMq6I,YAAYrpH,EAAM/U,GAGxBjc,EAAM46I,qBAAqB3+H,GAAO,OAI9Cw2H,EAAmB51I,UAAU88I,YAAc,SAAU19H,GACjD,IACIzb,EADAR,EAAQrD,KAERk+I,EAAiB,OAASC,SAASn+I,KAAKmD,QAAQw1I,gBAAiB,SAOrE,GANIuF,EAAel6I,QAAQhE,KAAKmD,QAAQue,OAAO4R,SAAW,IACtD4qH,EAAiBA,EAAe1wH,OAAOxtB,KAAKmD,QAAQue,OAAO4R,QAE1DtzB,KAAKo2I,mBACN92H,EAAM6+H,SAASD,GAEfl+I,KAAKo2I,oBAAsBp2I,KAAKmD,QAAQszB,UAAkC,KAAtBz2B,KAAKm4I,OAAOn7H,MAChEhd,KAAKmD,QAAQic,WAAapf,KAAKmD,QAAQic,sBAAsB,OACzDpf,KAAKmD,QAAQic,WAAa,IAAI,OAAYpf,KAAKmD,QAAQic,YAC3Dpf,KAAKu2I,2BAA6Bv2I,KAAKmD,QAAQic,WAAWA,WAAWoT,KAAK9kB,QAC1E1N,KAAKmD,QAAQic,WAAWA,WAAWoT,KAAO,OAAS2rH,UAAUt6I,EAAK7D,KAAKmD,QAAQi7I,4BAA4B5wH,OAAO1qB,MAAMe,EAAI7D,KAAKu2I,4BAA6Bv2I,KAAKmD,QAAQue,OAAO4R,OAAO,GACrLtzB,KAAK02B,gBAAgB12B,KAAKmD,QAAQue,UAClC1hB,KAAKmD,QAAQue,OAAOtC,WAAapf,KAAKmD,QAAQue,OAAOtC,sBAAsB,OACvEpf,KAAKmD,QAAQue,OAAOtC,WAAa,IAAI,OAAYpf,KAAKmD,QAAQue,OAAOtC,YACzEpf,KAAKmD,QAAQic,WAAWA,WAAWoT,KAAOxyB,KAAKmD,QAAQic,WAAWA,WAAWoT,KAAK3rB,KAAI,SAAU0a,EAAMvgB,GAClG,OAAOvB,OAAO4lH,OAAO,GAAI9jG,EAAMle,EAAMF,QAAQue,OAAOtC,WAAWA,WAAWoT,KAAKxxB,aAItF,GAAIhB,KAAKo2I,mBAAqBp2I,KAAKmD,QAAQszB,SAAU,CACtDnX,EAAM6T,OAAOnzB,KAAKmD,QAAQue,OAAO4R,OACjChU,EAAMsX,OAAO52B,KAAKmD,QAAQue,OAAO4R,MAAO,aACxC,IAAIsC,EAAa51B,KAAKmD,QAAQoc,YAAY8V,QAAQvgB,cAC9C8gB,GAAcA,MAAkC,mBAAjBA,KAAsD,kBAAjBA,KAChD,sBAAjBA,KAAyD,mBAAjBA,KAAsD,iBAAjBA,MAChFtW,EAAM6+H,SAASD,GAGvB,OAAO5+H,GAEXw2H,EAAmB51I,UAAUw9I,YAAc,SAAUrpH,EAAM/U,GACvD,IAAIjc,EAAQrD,KACRq+I,EAAS,eAAahqH,EAAM/U,GAChCtf,KAAK8gB,OAAO7Y,QAAQ,QAAwBo2I,EAAOliH,OACnD,IAAItC,EAAMwkH,EAAOnpC,SACjBr7E,EAAIE,QAAQna,MAAK,SAAUzS,GACvB9J,EAAMi7I,YAAYnxI,OAG1B2oI,EAAmB51I,UAAUq+I,kCAAoC,WAC7D,OAAap5I,OAAOnF,KAAKs5I,KAAM,SAAUt5I,KAAKw+I,wBAElD1I,EAAmB51I,UAAUu+I,gCAAkC,SAAUtxI,GACrE,IAAI9J,EAAQrD,KACZ,OAAa8L,IAAI9L,KAAKs5I,KAAM,SAAUt5I,KAAKw+I,sBAAuBx+I,MAClE,IAAIM,EAASN,KAAKs5I,KACdh5I,EAAO2lD,SAAStlD,OAAS,IAAML,EAAO2Q,WAAa3Q,EAAO+iE,aAAe/iE,EAAOmJ,cAAgBnJ,EAAO2Q,WAAa,IACpHjR,KAAKw+I,wBAET,OAAOxN,MAAQ5jI,YAAW,WAAc/J,EAAMm6G,aAAarwG,GAAI,OAAO6jI,MAAQ,OAAS,IAE3F8E,EAAmB51I,UAAUq6I,cAAgB,SAAUn3I,GACnD,IAAIs7I,EAAU,eAAc,MAAO,CAAEl6I,UAAW,WAAY0K,OAAQ,uBACpEwvI,EAAQ5zI,UAAY,4FACpB1H,EAAQsB,YAAYg6I,GACpB,IAAIlwH,EAAOkwH,EAAQt3I,wBACnBhE,EAAQ2pD,YAAY2xF,GACpB,IAAIC,EAAax1I,KAAKC,MAAMolB,EAAKnpB,QACjC,OAAOs5I,GAEX7I,EAAmB51I,UAAUizH,mBAAqB,WAC9C,MAAO,0EAEX2iB,EAAmB51I,UAAUm6I,SAAW,WACpC,IACIuE,EADA3rB,EAAe,EAEf4rB,EAAW7+I,KAAK8gB,OAAOvc,cAAc,MAAO,CAAE+G,GAAItL,KAAKsL,GAAKtL,KAAKmD,QAAQqL,KAAO,oBAChFhK,UAAW,qDAAsD0K,OAAQ,iBACzE4vI,EAAc9+I,KAAKs5I,KAEvB,GADAt5I,KAAK++I,aACDD,EAAa,CACb,IAAIx4I,EAAgBE,iBAAiBs4I,GACjCz5I,EAASy5I,EAAY74F,SAAStlD,OAASgR,SAASrL,EAAcjB,QAC9D8D,KAAK6gC,MAAMr4B,SAASrL,EAAcjB,OAAOpB,MAAM,MAAM,KAAO,EAC5D+6I,GAAkBh/I,KAAKgyI,SAAY8M,EAAY74F,SAAStlD,QAAWX,KAAKq3I,IAAInyI,UAAUmB,SAAS,iBAC1FG,iBAAiBxG,KAAKq3I,IAAInrI,cAAc,mBAAmB8yI,gBAAhE,GACJH,EAAS93I,MAAMwsC,QAAU,UAAYjtC,EAAchB,MAAQ,iBAAmBgB,EAAc24I,UAAY,aACpG55I,EAAS,eAAiBiB,EAAci4B,OAAS,mBAAqBj4B,EAAc44I,YAAc,mBAChG54I,EAAc4mB,YAAc,mBAAqB5mB,EAAc2sC,YAAc,2CAC/E+rG,EAAkB,IACtB,IAAIG,EAAWn/I,KAAKu6I,cAAcuE,GAClC7rB,EAAe9pH,KAAK6gC,MAAM3kC,EAAS85I,GACnClsB,EAAe6rB,EAAY74F,SAAStlD,OAASsyH,EAAe6rB,EAAY74F,SAAStlD,OAASsyH,EAC1F2rB,EAAiBO,EAAW,KAEhC,IAAIjsB,EAAe,kEAAoE0rB,EAApE,uFAEb5+I,KAAKmzH,qBAAuBnzH,KAAKmzH,qBAAuB,eAE9D,GADA0rB,EAAS/zI,UAAY,IAChBg0I,EAAY74F,SAAStlD,OAAQ,CAC9BX,KAAKq5I,QAAQ+F,mBAAmB,cAAelsB,GAC/C,IAAIE,EAAW,GAAG1lH,MAAMpK,KAAKtD,KAAKq5I,QAAQ3jG,cACrCoX,iBAAiB,yFACtBsmE,EAAS,GAAGluH,UAAU4G,IAAI,iCAC1BsnH,EAAS,GAAGluH,UAAU4G,IAAI,sCAE9B9L,KAAKq5I,QAAQz1E,aAAai7E,EAAU7+I,KAAKs5I,MACzC,IAAK,IAAIt4I,EAAI,EAAGiyH,GAAgBjyH,EAAIiyH,EAAcjyH,IAAK,CACnD69I,EAAS/zI,WAAaooH,EAClBE,EAAW,GAAG1lH,MAAMpK,KAAKu7I,EACxB/xF,iBAAiB,yFACtBsmE,EAAS,GAAGluH,UAAU4G,IAAI,iCAC1BsnH,EAAS,GAAGluH,UAAU4G,IAAI,sCAE1B9L,KAAKs5I,OACLuF,EAAS5tI,UAAYjR,KAAKs5I,KAAKroI,YAGvC6kI,EAAmB51I,UAAU6+I,WAAa,WACtC,IAAIM,EAAYr/I,KAAKy3I,UAAUr0I,QAAQ0pD,iBAAiB,kBACxD,GAAIuyF,EAAU1+I,OACV,IAAK,IAAIK,EAAI,EAAGA,EAAIq+I,EAAU1+I,OAAQK,IAClC,gBAAOq+I,EAAUr+I,IAGzB,IAAIs+I,EAAat/I,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,8BAClDozI,GACA,gBAAOt/I,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,gCAGpD4pI,EAAmB51I,UAAUs+I,sBAAwB,WACjD,IAAIl+I,EAASN,KAAKs5I,KACdh5I,EAAO2Q,WAAa3Q,EAAO+iE,aAAe/iE,EAAOmJ,eAAiBzJ,KAAKw2I,+BACpEx2I,KAAK42I,mBAAmBj2I,QAAWX,KAAKy2I,gBAAkBz2I,KAAK8gB,OAAOwX,eAAe4kH,YACrFl9I,KAAKs5I,KAAKrzF,SAAStlD,SAAmD,EAAxCX,KAAK8gB,OAAOwX,eAAe4kH,cACvDl9I,KAAK62I,mBAAqB72I,KAAK62I,kBAAqB72I,KAAKy2I,gBAAkBz2I,KAAK8gB,OAAOwX,eAAe4kH,aAC3Gl9I,KAAKy9I,4BACLz9I,KAAK22I,4BAA8B,QAE9Br2I,EAAO2Q,WAAa3Q,EAAO+iE,aAAe/iE,EAAOmJ,eAAiBzJ,KAAKw2I,+BACzEx2I,KAAK42I,mBAAmBj2I,OAAUX,KAAKy2I,gBAAkBz2I,KAAK8gB,OAAOwX,eAAe4kH,YACpFl9I,KAAKs5I,KAAKrzF,SAAStlD,SAAmD,EAAxCX,KAAK8gB,OAAOwX,eAAe4kH,YAC5Dl9I,KAAKu/I,uBAAwB,GAAG7xI,MAAMpK,KAAKtD,KAAKs5I,KAAKrzF,UAAWv5C,OAAO,EAAG1M,KAAK8gB,OAAOwX,eAAe4kH,aACrGl9I,KAAKy2I,iBAAwD,SAArCz2I,KAAK22I,4BAAyC32I,KAAK8gB,OAAOwX,eAAe4kH,WACpD,EAAxCl9I,KAAK8gB,OAAOwX,eAAe4kH,WAChC,eAAel9I,KAAKs5I,KAAMt5I,KAAK42I,mBAAmBlpI,MAAM1N,KAAKy2I,gBAAiBz2I,KAAK8gB,OAAOwX,eAAe4kH,WAAal9I,KAAKy2I,kBAC3Hz2I,KAAK22I,4BAA8B,QAET,IAArBr2I,EAAO2Q,YAAoBjR,KAAKq2I,sBAAwBr2I,KAAKs2I,yBAA2Bt2I,KAAKy2I,iBAC/Fz2I,KAAK42I,mBAAmBj2I,QAAUX,KAAK42I,mBAAmBj2I,OAAiD,EAAxCX,KAAK8gB,OAAOwX,eAAe4kH,YAC9Fl9I,KAAKs5I,KAAKrzF,SAAStlD,SAAmD,EAAxCX,KAAK8gB,OAAOwX,eAAe4kH,YAC5Dl9I,KAAKu/I,uBAAwB,GAAG7xI,MAAMpK,KAAKtD,KAAKs5I,KAAKrzF,UAAWv5C,OAAgD,EAAxC1M,KAAK8gB,OAAOwX,eAAe4kH,WAAiBl9I,KAAK8gB,OAAOwX,eAAe4kH,aAC/Il9I,KAAKy2I,iBAAwD,OAArCz2I,KAAK22I,4BAAuC32I,KAAK8gB,OAAOwX,eAAe4kH,WAClD,EAAxCl9I,KAAK8gB,OAAOwX,eAAe4kH,WAChCl9I,KAAKw/I,uBAAuB,GAAG9xI,MAAMpK,KAAKtD,KAAK42I,mBAAmBlpI,MAAM1N,KAAKy2I,gBAAiBz2I,KAAKy2I,gBAAkBz2I,KAAK8gB,OAAOwX,eAAe4kH,cAChJl9I,KAAKs5I,KAAKroI,UAAYjR,KAAK02I,yBAC3B12I,KAAK22I,4BAA8B,MAET,IAArBr2I,EAAO2Q,YAAoBjR,KAAKq2I,sBAAwBr2I,KAAKs2I,yBAA2Bt2I,KAAKy2I,iBAC/Fz2I,KAAK42I,mBAAmBj2I,QAAUX,KAAKs5I,KAAKrzF,SAAStlD,OAAiD,EAAxCX,KAAK8gB,OAAOwX,eAAe4kH,aAC5Fl9I,KAAKu/I,uBAAwB,GAAG7xI,MAAMpK,KAAKtD,KAAKs5I,KAAKrzF,UAAWv5C,OAAgD,EAAxC1M,KAAK8gB,OAAOwX,eAAe4kH,WAAiBl9I,KAAK62I,kBAAoB72I,KAAK8gB,OAAOwX,eAAe4kH,aACxKl9I,KAAKy2I,iBAAmBttI,KAAK6gC,MAAMhqC,KAAK62I,kBAAoB72I,KAAK8gB,OAAOwX,eAAe4kH,YAAc,GACjGl9I,KAAK8gB,OAAOwX,eAAe4kH,WAC/Bl9I,KAAKw/I,uBAAuB,GAAG9xI,MAAMpK,KAAKtD,KAAK42I,mBAAmBlpI,MAAM1N,KAAKy2I,gBAAiBz2I,KAAKy2I,gBAAkBz2I,KAAK8gB,OAAOwX,eAAe4kH,cAChJl9I,KAAKs5I,KAAKroI,UAAYjR,KAAK02I,yBAC3B12I,KAAK22I,4BAA8B,OAG3Cb,EAAmB51I,UAAUq/I,uBAAyB,SAAUE,GAC5D,IAAK,IAAIz+I,EAAI,EAAGA,EAAIy+I,EAAW9+I,OAAQK,IACnC,gBAAOy+I,EAAWz+I,KAG1B80I,EAAmB51I,UAAUs/I,uBAAyB,SAAUE,GAC5D,IAAK,IAAI1+I,EAAI,EAAGA,EAAI0+I,EAAW/+I,OAAQK,IACnChB,KAAKs5I,KAAK11E,aAAa87E,EAAW1+I,GAAIhB,KAAKs5I,KAAKrzF,SAASjlD,KAGjE80I,EAAmB51I,UAAUu9I,0BAA4B,SAAUn+H,GAC/D,IAAIjc,EAAQrD,MACPA,KAAKq2I,qBAAuBr2I,KAAK8gB,OAAOwX,gBAAkE,YAAhDt4B,KAAK8gB,OAAOwX,eAAe8nC,iBACtFhzD,YAAW,WACH/J,EAAMmzI,+BACNnzI,EAAMg3I,aAEX,KAEGr6I,KAAKq2I,sBACX,eAAc,CAAE/1I,OAAQN,KAAKq5I,QAAS5uI,SAAUzK,KAAK8gB,OAAOrW,SAAWzK,KAAK8gB,OAAOrW,SAAW,MAAQzK,KAAK8gB,OAAOvc,eAClH,eAAYvE,KAAKq5I,UAErB,IAAIllH,EAAQ,KACZ,GAAIn0B,KAAK2/I,eAAiB3/I,KAAK2/I,cAAcvrH,SAAWp0B,KAAK2/I,cAAcvrH,QAAQzzB,OAC/E,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK2/I,cAAcvrH,QAAQzzB,OAAQK,IACD,WAA9ChB,KAAK2/I,cAAcvrH,QAAQpzB,GAAG,GAAKmzB,IACc,WAA9Cn0B,KAAK2/I,cAAcvrH,QAAQpzB,GAAG,GAAKmzB,KACtCn0B,KAAK2/I,cAAcvrH,QAAQ1nB,OAAO1L,EAAG,GACrCA,KAIZ,IAAI4+I,IAAatgI,EACjBA,EAAQA,GAAgBtf,KAAK2/I,cACzB3/I,KAAKq2I,qBAAuBr2I,KAAKs2I,wBACjCt2I,KAAKy2I,gBAAkB,EAGvBz2I,KAAKy2I,iBAAmBz2I,KAAK8gB,OAAOwX,eAAe4kH,WAEvD59H,EAAMoxC,KAAK1wD,KAAKy2I,iBACZz2I,KAAKq2I,qBAAuBr2I,KAAKs2I,yBACjCh3H,EAAMixC,KAA6C,EAAxCvwD,KAAK8gB,OAAOwX,eAAe4kH,YACtCl9I,KAAKy2I,iBAA2D,EAAxCz2I,KAAK8gB,OAAOwX,eAAe4kH,YAGnD59H,EAAMixC,KAAKvwD,KAAK8gB,OAAOwX,eAAe4kH,YAErC0C,IACD5/I,KAAKi+I,qBAAqB3+H,GAC1Btf,KAAKw2I,+BAAgC,IAG7CV,EAAmB51I,UAAU+9I,qBAAuB,SAAU3+H,EAAOgnG,GACjE,IAAIjjH,EAAQrD,KACZA,KAAKmD,QAAQic,WAAapf,KAAKmD,QAAQic,sBAAsB,OACzDpf,KAAKmD,QAAQic,WAAa,IAAI,OAAYpf,KAAKmD,QAAQic,YAC3D,IAAIygI,EAAa,GACbC,EAAW,GACf,GAAI9/I,KAAK02B,gBAAgB12B,KAAKmD,QAAQue,SAAW4kG,EAAW,CACxD,IAAIi3B,EAAW,WAAYv9I,KAAKmD,QAAQue,OAAOtC,WAC3C,IAAI,OAAYpf,KAAKmD,QAAQue,OAAOtC,WAAWU,QAC/C9f,KAAKmD,QAAQue,OAAOtC,WACxBpf,KAAKi2I,gBAAgBp5E,OAASv9C,EAAMu9C,OACpCgjF,EAAWxzI,KAAKkxI,EAAQ/iH,aAAax6B,KAAKi2I,kBAC1C6J,EAASzzI,MAAK,SAAUiR,GAAQ,OAAOja,EAAMs2B,eAAiBrc,KAclE,GAZItd,KAAKo2I,oBACLp2I,KAAK2/I,cAAgBrgI,EAAM2T,QACvBjzB,KAAKq2I,qBACLr2I,KAAKs5I,KAAKp0I,UAAU4G,IAAI,6BACxB,OAAaA,IAAI9L,KAAKs5I,KAAM,SAAUt5I,KAAKw+I,sBAAuBx+I,MAClE,OAAa8L,IAAI9L,KAAKs5I,KAAM,UAAWt5I,KAAKy+I,gCAAiCz+I,MAC7E,OAAa8L,IAAI9L,KAAKs5I,KAAM,YAAat5I,KAAKu+I,kCAAmCv+I,OAE5EA,KAAKs2I,0BACVt2I,KAAKs5I,KAAKxuI,UAAY,KAG1B9K,KAAKo2I,mBAAqBp2I,KAAKq2I,sBAAwBr2I,KAAKmD,QAAQszB,SAAU,CAC9E,IAAInD,EAAQtzB,KAAK02B,gBAAgB12B,KAAKmD,QAAQue,QAAU1hB,KAAKmD,QAAQq0B,gBACjEx3B,KAAKmD,QAAQue,OAAO4R,MACxBtzB,KAAKmD,QAAQic,WAAWob,cAAa,IAAI,QAAQ5D,OAAOtD,EAAO,OAASgqC,cAAc19C,MAAK,SAAUzS,GACjG9J,EAAMF,QAAQic,WAAWA,WAAWoT,KAAOrlB,EAAE2S,OAC7Czc,EAAM08I,uBAAuBzgI,EAAOugI,EAAYC,WAIpD9/I,KAAK+/I,uBAAuBzgI,EAAOugI,EAAYC,IAGvDhK,EAAmB51I,UAAU6/I,uBAAyB,SAAUzgI,EAAOugI,EAAYC,GAC/E,IAAIz8I,EAAQrD,KACZ6/I,EAAWxzI,KAAKrM,KAAKmD,QAAQic,WAAWob,aAAalb,IACrDwgI,EAASzzI,KAAKrM,KAAKs+I,YAAY14I,KAAK5F,OACpC,IAAIgB,EAAI,EACR+3G,QAAQinC,IAAIH,GAAYjgI,MAAK,SAAUzS,GACnC9J,EAAMmzI,+BAAgCnzI,EAAM+yI,mBAA4B/yI,EAAMmzI,8BAC9E,IAAK,IAAI3yH,EAAI,EAAGA,EAAI1W,EAAExM,OAAQkjB,IAC1BxgB,EAAMwzI,kBAAoBxzI,EAAM+yI,oBAAsB/yI,EAAMwzI,kBAAoB1pI,EAAE0W,GAAG9D,MAAQ1c,EAAMwzI,kBACnGiJ,EAAS9+I,KAAKmM,EAAEwE,SAASkS,EAAEjS,WAAY,KAAKkO,WAEjD8a,OAAM,WACDv3B,EAAM+yI,mBAAqB/yI,EAAMyd,OAAOwX,gBAAmE,YAAjDj1B,EAAMyd,OAAOwX,eAAe8nC,kBACtF/8D,EAAMyd,OAAO+zF,iBAAYtpG,EAAWlI,EAAMo0I,UAAUr0I,aAIhE0yI,EAAmB51I,UAAUo+I,YAAc,SAAUnxI,GACjD,GAAKnN,KAAKq2I,sBAAuBr2I,KAAK62I,qBAAuB72I,KAAKy2I,iBAAmBz2I,KAAK62I,oBAClF72I,KAAKs2I,yBAA0C,IAAbnpI,EAAExM,QAD5C,CAIAX,KAAKw9I,SAAWrwI,EAChB,IAAI8yI,EAAQ,CAAE7gI,WAAYpf,KAAKw9I,SAAUhjH,cAAc,EAAMlH,MAAOtzB,KAAKmD,QAAQmwB,OAEjF,GADAtzB,KAAK8gB,OAAOwT,OAAO,OAA+B2rH,GAC9CA,EAAMzlH,aAAc,CACpB,IAAIlb,EAAQ,IAAI,OACXtf,KAAK89I,cACN99I,KAAK+1I,gBAAiB,EACtB/1I,KAAKg+I,cAAc1+H,GACnBtf,KAAK+1I,gBAAiB,GAG1B,IAAIj2H,EAAS,IAAI,OAAYmgI,EAAM7gI,YAAYw7E,aAAat7E,GACxD8W,EAAMp2B,KAAKmD,QAAQue,OACvB1hB,KAAKkgJ,aAAepK,EAAmBqK,YAAYrgI,EAAQ9f,KAAKmD,QAAQmwB,MAAO8C,EAAKp2B,KAAK25B,eAAgB35B,MAAM+7B,SAAW,GAE9H,IAAIze,EAAO2iI,EAAMzlH,aAAex6B,KAAKkgJ,aAAeD,EAAM7gI,WAC1Dpf,KAAKogJ,kBAAkB,MAAM,EAAM9iI,EAAM2iI,GACrCjgJ,KAAKm4I,SAAYn4I,KAAKo2I,mBAAqBp2I,KAAKq2I,sBAAyBr2I,KAAKo2I,oBAC9Ep2I,KAAKm4I,OAAOtxF,SAEZ7mD,KAAKq2I,qBAAuBr2I,KAAKs2I,2BACjCt2I,KAAKq2I,qBAAsB,EAC3Br2I,KAAKs2I,yBAA0B,GAEnC,IAAIjiH,EAAO,CACPoF,YAAa,QACb5D,WAAY71B,KAAKmD,QAAQmwB,MAAOkmH,WAAYx5I,KAAKmD,QAAQqL,MAEzDirI,EAAc,cAClBplH,EAAK,GAAKolH,GAAez5I,KACzBA,KAAK8gB,OAAOwT,OAAO,OAAyBD,GACxCr0B,KAAKm2I,0BACL,eAAYn2I,KAAKq5I,WAGzBvD,EAAmB51I,UAAU89I,cAAgB,SAAU1+H,GACnD,GAAItf,KAAK8gB,OAAOmW,gBAAkBj3B,KAAK8gB,OAAOmW,eAAe12B,IAAII,OAAQ,CACrE,IAAIq2B,EAAYh3B,KAAK8gB,OAAOmW,eACxBC,EAASF,EAAUE,OAAOv2B,OAASq2B,EAAUE,OAASl3B,KAAKmD,QAAQuf,QAAQ7b,KAAI,SAAUw5I,GAAK,OAAOA,EAAE/sH,SAC3GhU,EAAM0Y,OAAOhB,EAAUz2B,IAAK22B,EAAQF,EAAUU,SAAUV,EAAUW,WAAYX,EAAUY,cAE5F,GAAK53B,KAAKmD,QAAQw1I,gBAAsB,OAAG,CAEvC,IADA,IAAI3kH,EAAO,GACFhzB,EAAI,EAAGA,EAAIhB,KAAKmD,QAAQw1I,gBAAgBh4I,OAAQK,IAAK,CAC1D,IAAIs/I,EAAetgJ,KAAKmD,QAAQw1I,gBAAgBhnI,SAAS3Q,EAAE4Q,WAAY,KACnE5R,KAAKmD,QAAQ01B,KACbynH,EAAaznH,IAAMynH,EAAaznH,KAAO74B,KAAK8gB,OAAO4U,iBAAiB4qH,EAAahtH,OAAOuF,IACpFynH,EAAaznH,MAAQ74B,KAAKmD,QAAQ01B,KAClC7E,EAAK3nB,KAAKrM,KAAKmD,QAAQw1I,gBAAgBhnI,SAAS3Q,EAAE4Q,WAAY,OAI9D0uI,EAAahtH,QAAUtzB,KAAKmD,QAAQmwB,OACpCU,EAAK3nB,KAAKrM,KAAKmD,QAAQw1I,gBAAgBhnI,SAAS3Q,EAAE4Q,WAAY,MAI1E,IAAI2nB,EAAYv5B,KAAK49I,qBAAqB5pH,EAAMh0B,KAAK+1I,gBACjDx8G,GACAja,EAAMyY,MAAMwB,KAIxBu8G,EAAmB51I,UAAUkgJ,kBAAoB,SAAU9gI,EAAOgnG,EAAWlnG,EAAYiV,GACrF,eAAYr0B,KAAKq5I,SAKjBr5I,KAAK+1I,gBAAiB,EACtB/1I,KAAKugJ,eACLvgJ,KAAK+1I,gBAAiB,EACtB,IAAIkK,EAAQ,CAAE7gI,WAAYpf,KAAKw9I,SAAUrH,0BAA0B,EAAOz0H,OAAQ1hB,KAAKmD,QAAQue,OAC3Fte,QAASpD,KAAKs5I,KAAM9qI,KAAMxO,KAAKmD,QAAQqL,KAAMgiB,OAAQxwB,KAAKmD,QAAQqL,KAAM6/F,OAAQruG,KAAKmD,QAAQg3I,mBAAqB,KAC9Gn6I,KAAKy3I,UAAUppC,OAAO,GAAI4qC,UAAWj5I,KAAKi5I,WAClDj5I,KAAK8gB,OAAOwT,OAAO,OAAqC2rH,GACxDjgJ,KAAKm2I,yBAA2B8J,EAAM9J,yBACjCn2I,KAAKm2I,yBAGDn2I,KAAKo2I,mBAAqBp2I,KAAK8gB,OAAOwX,gBAAkE,YAAhDt4B,KAAK8gB,OAAOwX,eAAe8nC,kBACxFpgE,KAAK++I,aAHL/+I,KAAKwgJ,kBAAkBphI,EAAYknG,EAAWjyF,IAMtDyhH,EAAmB51I,UAAUy9I,cAAgB,SAAUr+H,GACnDtf,KAAKi+I,qBAAqB3+H,IAE9Bw2H,EAAmB51I,UAAUqgJ,aAAe,WACxCvgJ,KAAK8f,OAAS,GACd,IAAIyZ,EAAYv5B,KAAKo2I,mBAAqBp2I,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQmwB,OAC1EtzB,KAAK49I,qBAAqB59I,KAAKg2I,kBAAkBh2I,KAAKmD,QAAQmwB,OAAQtzB,KAAK+1I,gBAC3E/1I,KAAK49I,qBAAqB59I,KAAKmD,QAAQw1I,gBAAiB34I,KAAK+1I,gBAC7Dz2H,EAAQ,IAAI,OACZia,GACAja,EAAMyY,MAAMwB,GAEhBv5B,KAAK8gB,OAAOwT,OAAO,OAAoC,CAAEhV,MAAOA,IAEhE,IADA,IAAIQ,EAAS,IAAI,OAAY9f,KAAKw9I,UAAU5iD,aAAat7E,GAChDzR,EAAK,EAAG4yI,EAAW3gI,EAAQjS,EAAK4yI,EAAS9/I,OAAQkN,IAAM,CAC5D,IAAI6yI,EAAMD,EAAS5yI,GACnB7N,KAAK8f,OAAO,eAAU9f,KAAKmD,QAAQmwB,MAAOotH,KAAQ,IAG1D5K,EAAmB51I,UAAUs9G,aAAe,SAAUrwG,GAClD,IAAItJ,EACC,eAAkB,OAAOmtI,QAC1BlkI,aAAa,OAAOkkI,OAExB,IAAI1wI,EAAS6M,EAAE7M,OACf,GAAK,eAAkBN,KAAK8gB,OAAOs/C,mBAAoE,YAA/CpgE,KAAK8gB,OAAOs/C,iBAAiBC,gBAC9E,gBAAa//D,EAAQ,iBAD5B,CAIA,IAAIukF,EAAO,gBAAavkF,EAAQ,sBAIhC,GAHI,gBAAaA,EAAQ,gBACrBN,KAAKk4I,eAAe/qI,GAEpB03E,IAAS7kF,KAAKm2I,yBAA0B,CACxC,IAAIwK,EAAY97D,EAAK34E,cAAc,gBACnC,GAAIy0I,EACA3gJ,KAAK4gJ,iBAAiBD,EAAUz7I,UAAUmB,SAAS,iBAInD,GADA,gBAAew+E,EAAKnvC,eAChB11C,KAAKo2I,oBAAsBvxD,EAAKnvC,cAAcxpC,cAAc,kBAAmB,CAC/ElM,KAAKg3I,kCAAmC,EACxC,IAAIoE,EAAUp7I,KAAKmD,QAAQy1I,mBACvBj4G,EAAOkkD,EAAKnvC,cAAcxpC,cAAc,YACxC25D,EAAQllC,EAAKkgH,gBACb7F,EAAOn1E,EAAM6pC,QAAU,QAAU,WACjCssC,EAAOn2E,EAAM6pC,QAAU,KAAO,MAC9B2rC,EAAW,CAAE/nH,MAAOtzB,KAAKmD,QAAQmwB,MAAOiG,UAAWyiH,EAAMnjH,IAAK74B,KAAKmD,QAAQ01B,IAC3EnB,SAAUsjH,EAAMxsI,KAAMxO,KAAKmD,QAAQqL,KAAMm3H,UAAWyV,EAASxjH,aAAc53B,KAAKmD,QAAQy0B,cAExF5a,EAAQhd,KAAKokB,OAAO,gBAAayhD,EAAO,YAAYn7D,aAAa,QAErE,GADA1K,KAAK8gJ,+BAA+BzF,EAAUr+H,GAC1Chd,KAAKo2I,oBAAsBp2I,KAAKmD,QAAQszB,UAAYz2B,KAAKmD,QAAQ45I,sBAC9D/8I,KAAK64I,8BAA8Bl4I,OAAQ,CAC9C,IAAI44B,EAAYv5B,KAAK49I,sBAAsB/5I,EAAK7D,KAAKmD,QAAQw1I,iBAAiBnrH,OAAO1qB,MAAMe,EAAI7D,KAAKi3I,mCAAmC,GACnI33H,EAAQ,IAAI,OACZia,GACAja,EAAMyY,MAAMwB,GAEhB,IAAIzZ,EAAS,IAAI,OAAY9f,KAAKu2I,4BAA4B37C,aAAat7E,GACvEtf,KAAKmD,QAAQ45I,uBAAyBj9H,EAAOnf,SAC7CX,KAAKmD,QAAQ45I,qBAAuBj9H,EAAOnf,SAE1CX,KAAKmD,QAAQ45I,sBAAwB/8I,KAAK64I,8BAA8Bl4I,SACzEX,KAAK64I,8BAAgC,KAGzC74I,KAAK64I,8BAA8Bl4I,QAAWX,KAAKmD,QAAQ45I,uBAAyB/8I,KAAK62I,mBACrF72I,KAAKmD,QAAQ45I,uBACjB/8I,KAAK64I,8BAAgC,IAIjD74I,KAAK+gJ,0BACLl8D,EAAK34E,cAAc,iBAAiB26C,QAExC7mD,KAAKghJ,SAAS,gBAAan8D,EAAM,eAErCixD,EAAmB51I,UAAU4gJ,+BAAiC,SAAUzF,EAAUr+H,GAC9E,IAAK,IAAIhc,EAAI,EAAGA,EAAIhB,KAAKi3I,iCAAiCt2I,OAAQK,IAAK,CACnE,IAAIigJ,EAAUjhJ,KAAKi3I,iCAAiCj2I,GACpD,GAAIigJ,EAAQjkI,MAAQ,KAAOA,EAAQ,KAA4B,UAArBikI,EAAQvpH,UAA6C,aAArBupH,EAAQvpH,UAA0B,CACxG13B,KAAKi3I,iCAAiCvqI,OAAO1L,EAAG,GAChD,QAGoB,OAAvBq6I,EAAS9hH,WAAwBv5B,KAAK+2I,+BAAkC/2I,KAAK82I,0BACnD,QAAvBuE,EAAS9hH,WAAyBv5B,KAAK+2I,gCAAiC/2I,KAAK82I,0BACjF92I,KAAKi3I,iCAAiC5qI,KAAK,eAAO,GAAI,CAAE2Q,MAAOA,GAASq+H,IAC7C,OAAvBA,EAAS9hH,UACTv5B,KAAKmD,QAAQ45I,uBAGb/8I,KAAKmD,QAAQ45I,yBAQzBjH,EAAmB51I,UAAUghJ,gBAAkB,SAAU/zI,EAAGg0I,GACxD,IAAIC,EAAuB,YAAVj0I,EAAE5M,IAAqB4gJ,EAAkBn9I,QAAQ4J,SAASmsF,eAAiB,EACtFonD,EAAkBn9I,QAAQ4J,SAASmsF,eAAiB,EACtDsnD,EAAcF,GAAoBC,EAAYD,EAAkBxgJ,QAAUwgJ,EAAkBxgJ,QAEhG,GAAI0gJ,EAAa,CACbA,EAAYx6F,QACZ,IAAIvmD,EAAS+gJ,EAAYn8I,UAAUmB,SAAS,gBAAkB,gBAAag7I,EAAa,YAAcA,EACtGrhJ,KAAKghJ,SAAS1gJ,KAGtBw1I,EAAmB51I,UAAUo3I,aAAe,SAAUnqI,GAIlD,IAHe,QAAVA,EAAE5M,KAAiB4M,EAAEmrI,UAAuB,QAAVnrI,EAAE5M,MAA6B,YAAV4M,EAAE5M,KAA+B,cAAV4M,EAAE5M,OAAyB4M,EAAE25C,SAC5G9mD,KAAKghJ,SAAS,gBAAa7zI,EAAE7M,OAAQ,cAE1B,YAAV6M,EAAE5M,KAA+B,cAAV4M,EAAE5M,OAAyB4M,EAAE25C,QAA8C,aAApC9mD,KAAK8gB,OAAOwX,eAAe9pB,KAAqB,CAC/GrB,EAAE+F,iBACF,IAAIiuI,EAAoBvhJ,MAAM0hJ,KAAKthJ,KAAKq3I,IAAIvqF,iBAAiB,mDAC7D9sD,KAAKkhJ,gBAAgB/zI,EAAGg0I,KAGhCrL,EAAmB51I,UAAU8gJ,SAAW,SAAUn8D,GAC9C,IAAI08D,EAAWvhJ,KAAKq3I,IAAInrI,cAAc,eAClCq1I,GACAA,EAASr8I,UAAUC,OAAO,cAE1B0/E,GAAQA,IAAS08D,GACjB18D,EAAK3/E,UAAU4G,IAAI,eAG3BgqI,EAAmB51I,UAAU0gJ,gBAAkB,SAAUlxC,GACjD1vG,KAAKo2I,oBACLp2I,KAAK+2I,+BAAgC,EACrC/2I,KAAK82I,uBAAyBpnC,EAC9B1vG,KAAK64I,8BAAgC,GACrC74I,KAAKi3I,iCAAmC,IAM5C,IAJA,IAAIuK,EAASxhJ,KAAKo2I,kBACdp2I,KAAK42I,mBAAmB/vI,KAAI,SAAUw8H,GAClC,OAAOA,EAAIn3H,cAAc,eACxB,GAAGwB,MAAMpK,KAAKtD,KAAKs5I,KAAKxsF,iBAAiB,iCACzCj/C,EAAK,EAAG4zI,EAAWD,EAAQ3zI,EAAK4zI,EAAS9gJ,OAAQkN,IAAM,CAC5D,IAAIyrI,EAAOmI,EAAS5zI,GACpB,gBAAqByrI,EAAM5pC,GAC3B,gBAAW4pC,EAAKuH,gBAAiBnxC,KAGzComC,EAAmB51I,UAAU65I,WAAa,WAClC/5I,KAAK8gB,OAAO1d,QAAQ8B,UAAUmB,SAAS,cACvCrG,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,kBAAkBhH,UAAUC,OAAO,iBACnEnF,KAAKmD,QAAQg3I,oBACdn6I,KAAKy3I,UAAUr0I,QAAQ8I,cAAc,UAAU26C,UAI3DivF,EAAmB51I,UAAUwhJ,eAAiB,SAAU1kI,EAAO0yF,EAASpyF,GACpE,IAAIunE,EAAO6qB,EAAU1vG,KAAKk3I,SAAS13C,WAAU,GACzCx/F,KAAKm3I,UAAU33C,WAAU,GAC7B,gBAAW3a,EAAK34E,cAAc,SAAUwjG,GACxC,IAAIxnE,EAAQ28C,EAAK34E,cAAc,YAC3By1I,EAAY,eAAgB,GAAIrkI,EAAM,CAAEoE,OAAQ1hB,KAAKmD,QAAQue,OAAQZ,OAAQ9gB,KAAK8gB,SAClF0pC,EAAYxqD,KAAKmD,QAAQ63D,kBAAoB,cAAgB,YACjE9yB,EAAM,GAAKsiB,IAAc,eAAkBxtC,IAAUA,EAAMpL,WAAWjR,OAClEX,KAAK8gB,OAAO9V,oBAAsB,OAAmBE,SAAS8R,GAASA,EAAQhd,KAAK85C,kBAAkB,UAC1G,IAAI8nG,EAAc,eAAO,QAUzB,GATA15G,EAAMv9B,aAAa,KAAMi3I,EAAc,aACvC/8D,EAAK34E,cAAc,SAASvB,aAAa,kBAAmBu9B,EAAM58B,IAC9D48B,EAAMp9B,YAAc9K,KAAK85C,kBAAkB,YAC3C95C,KAAK06I,UAAW,GAEC,mBAAV19H,IACPkrB,EAAMp9B,WAAsB,IAAVkS,EAAiBhd,KAAK85C,kBAAkB,cAAgB95C,KAAK85C,kBAAkB,gBAErG,eAAS,CAAC5R,GAAQ,CAAC,yBACfloC,KAAKmD,QAAQwpB,UAAYrP,EAAKtd,KAAKmD,QAAQue,OAAO4R,SAAWtzB,KAAK85C,kBAAkB,cACjFx8B,EAAKtd,KAAKmD,QAAQue,OAAO4R,SAAWtzB,KAAK85C,kBAAkB,uBAAwB,CACtF5R,EAAMp9B,UAAY,GAClB,IAAIi9F,EAAkB/nG,KAAK8gB,OAAO3Y,SAAWnI,KAAKmD,QAAQue,OAAOtD,QACL,kBAA7Cpe,KAAKmD,QAAQue,OAAOtD,OAAmB,aAElDijF,EAAerhG,KAAK8gB,OAAOwgF,eAAiBthG,KAAK8gB,OAAOwgF,cAAcC,eAEtEvhG,KAAK8gB,OAAOwgF,cAAcC,cAAcp5F,QACxC4/F,GAAmB1G,GACnBrhG,KAAKmD,QAAQwpB,SAASg1H,EAAW3hJ,KAAK8gB,OAAQ,qBAAsB,KAAM,KAAM,KAAMonB,GACtFloC,KAAK8gB,OAAO6gF,mBAGZ,eAAez5D,EAAOloC,KAAKmD,QAAQwpB,SAASg1H,EAAW3hJ,KAAK8gB,OAAQ,uBAG5E,OAAO+jE,GAEXixD,EAAmB51I,UAAU6gJ,wBAA0B,WACnD,IASIc,EATAn0C,EAAM1tG,KAAKo2I,kBAAoBp2I,KAAK42I,mBAAmBj2I,OAASX,KAAKs5I,KAAKrzF,SAAStlD,OAAS,EAC5F6D,EAAY,GACZs9I,GAAW,EACXj9D,EAAO7kF,KAAKo2I,kBAAoBp2I,KAAK+4I,KAAK7sI,cAAc,gBAAkBlM,KAAKs5I,KAAKptI,cAAc,gBAClG69D,EAAW/pE,KAAKo2I,kBAAoBp2I,KAAK42I,mBAAmBx4H,QAAO,SAAUilH,GAAO,OAAOA,EAAIn3H,cAAc,eAAgBvL,OAC7HX,KAAKs5I,KAAKxsF,iBAAiB,kDAAkDnsD,OAC7EX,KAAKs5I,KAAKptI,cAAc,oBACxBwhG,GAAO,GAGN1tG,KAAKmD,QAAQg3I,qBACd0H,EAAM7hJ,KAAKy3I,UAAUppC,OAAO,GAC5BwzC,EAAIC,UAAW,GAEnB,IAAIj8E,EAAQgf,EAAKg8D,gBACjB,gBAAWh7E,GAAO,GAClBA,EAAMk8E,eAAgB,GAClB/hJ,KAAKo2I,mBAA2C,KAAtBp2I,KAAKm4I,OAAOn7H,OAAiBhd,KAAKmD,QAAQ+4I,4BAA+Bl8I,KAAKg3I,kCACnGh3I,KAAK+2I,gCAAmC/2I,KAAK82I,wBAA2B/sE,IAAe2jC,IAAQ3jC,GAAY2jC,IAAQ3jC,EAGnH/pE,KAAKo2I,mBAAqBp2I,KAAK42I,mBAAmBj2I,OAASX,KAAK62I,mBAClE72I,KAAK64I,8BAA8Bl4I,UAAYopE,GAAY2jC,IAAQ3jC,IAAa/pE,KAAK82I,yBACnF/sE,EAID2jC,GAAO1tG,KAAK64I,8BAA8Bl4I,OAH1CopE,GAAY/pE,KAAK64I,8BAA8Bl4I,QALnDopE,EAAW,EAWX2jC,IAAQ3jC,GACJ/pE,KAAKo2I,oBACLp2I,KAAK82I,wBAAyB,EAC9B92I,KAAK+2I,+BAAgC,EACrC/2I,KAAKi3I,iCAAmC,IAE5CzyI,EAAY,CAAC,WACb,gBAAWqhE,GAAO,IAEbkE,GACLvlE,EAAY,CAAC,UACbqhE,EAAMk8E,eAAgB,IAGlB/hJ,KAAKo2I,oBACLp2I,KAAK82I,wBAAyB,EAC9B92I,KAAK+2I,+BAAgC,EACrC/2I,KAAKi3I,iCAAmC,IAE5CzyI,EAAY,CAAC,aACbs9I,GAAW,EACPD,IACAA,EAAIC,UAAW,IAGnBD,IACA7hJ,KAAKk2I,aAAe2L,EAAIC,SACxBD,EAAI95I,YAER,gBAAY,CAAC88E,GAAO,CAAC,UAAW,SAAU,cAC1C,eAAS,CAACA,GAAOrgF,GACjBxE,KAAK8gB,OAAOwT,OAAO,QAAiC,CAAEwtH,SAAUA,KAEpEhM,EAAmB51I,UAAUsgJ,kBAAoB,SAAUljI,EAAMgpG,EAAW25B,GACxE,IAAIp8I,EAAIC,EAAI0d,EAERqgI,EADAL,EAASxhJ,KAAK8gB,OAAOvc,cAAc,OAEnCu9I,GAAW,EACV9hJ,KAAKmD,QAAQg3I,qBACd0H,EAAM7hJ,KAAKy3I,UAAUppC,OAAO,IAEhC,IAAI2zC,GAAe,EACfzhJ,EAAM,UACL0/I,EAAMzlH,eACPj6B,EAAM0/I,EAAM3sH,OAEhB,IAAK,IAAItyB,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAClC,IAAIwZ,EAAM,eAASja,EAAK+c,EAAK3L,SAAS3Q,EAAE4Q,WAAY,OACxC,KAAR4I,GAAc,eAAkBA,MAChCwnI,GAA4B,GASpC,GANKhiJ,KAAKo2I,oBACNp2I,KAAKu7I,UAA4B,IAAjByG,EAAqB1kI,EAAK3c,OAASqhJ,EAAc1kI,EAAK3c,QAEtEX,KAAKo2I,mBAAqBp2I,KAAK8gB,OAAOwX,gBAAkE,YAAhDt4B,KAAK8gB,OAAOwX,eAAe8nC,kBACnFpgE,KAAK++I,aAELzhI,EAAK3c,SAAWX,KAAKs2G,YAAa,CAClC,IAAI2rC,EAAiBjiJ,KAAK85C,kBAAkB,aACxC+uD,EAAW7oG,KAAKs5I,KAAKptI,cAAc,qBACnC28F,GACAA,EAAS3jG,UAAUC,OAAO,oBAE9B,IAAI+8I,EAAWliJ,KAAK0hJ,eAAeO,GAAgB,GAAQp+I,EAAK,GAAIA,EAAG7D,KAAKmD,QAAQmwB,OAAS2uH,EAAgBp+I,IAS7G,GARI7D,KAAK8gB,OAAOrW,YAC+B,IAAvCzK,KAAK8gB,OAAOrW,SAASzG,QAAQ,KAC7B,eAAS,CAACk+I,GAAWliJ,KAAK8gB,OAAOrW,SAASxG,MAAM,MAGhD,eAAS,CAACi+I,GAAW,CAACliJ,KAAK8gB,OAAOrW,YAGtCzK,KAAKq2I,sBAAwBr2I,KAAKo2I,kBAAmB,CACrD,IAAIuK,EAAY,eAAmB,eAAO,QAASuB,EAAU,YAC7DvB,EAAUz0I,cAAc,YAAYhH,UAAU4G,IAAI,eAC9C9L,KAAKo2I,kBACLp2I,KAAK+4I,KAAKn1E,aAAa+8E,EAAW3gJ,KAAKq5I,SAGvCmI,EAAO98I,YAAYi8I,QAGlB3gJ,KAAK+4I,KAAK7sI,cAAc,4BAC7BlM,KAAK+4I,KAAK7sI,cAAc,0BAA0B20I,gBAAgBiB,UAAW,EAC7E9hJ,KAAK+4I,KAAK7sI,cAAc,0BAA0BwpC,cAAcxwC,UAAUC,OAAO,wBAErF,IAAIo0B,EAAY,IAAI,OAAU,QAAS,QAASv5B,KAAKmD,QAAQmwB,OACzDtzB,KAAKmD,QAAQq0B,kBACb+B,EAAYA,EAAUzB,GAAG,QAAS,QAAS93B,KAAKmD,QAAQq0B,kBAE5D,IAAI2qH,EAAgB,IAAI,OAAYniJ,KAAKmD,QAAQw1I,iBAAiB/9C,cAAa,IAAI,QAAQ7iE,MAAMwB,IAAY54B,OAC7G,GAAIX,KAAKm4I,OAAOn7H,MAAO,CACnB,IAAIolI,EAAoBpiJ,KAAK0hJ,eAAe1hJ,KAAK85C,kBAAkB,wBAAwB,GAAQh2C,EAAK,GACpGA,EAAG9D,KAAKmD,QAAQmwB,OAAStzB,KAAK85C,kBAAkB,uBAChDh2C,IASJ,GARI9D,KAAK8gB,OAAOrW,YAC+B,IAAvCzK,KAAK8gB,OAAOrW,SAASzG,QAAQ,KAC7B,eAAS,CAACo+I,GAAoBpiJ,KAAK8gB,OAAOrW,SAASxG,MAAM,MAGzD,eAAS,CAACm+I,GAAoB,CAACpiJ,KAAK8gB,OAAOrW,YAG9CzK,KAAKo2I,oBAAuB,eAAkBp2I,KAAK+4I,KAAK9yF,SAAS,KAC3B,oCAApCjmD,KAAK+4I,KAAK9yF,SAAS,GAAGuE,YAAsDxqD,KAAKo2I,kBAAmB,CACvG,IAAIiM,EAAmB,eAAmB,eAAO,QAASD,EAAmB,YAE7E,GADAC,EAAiBn2I,cAAc,YAAYhH,UAAU4G,IAAI,iBACrD9L,KAAKo2I,kBAAmB,CACxBp2I,KAAK+4I,KAAKn1E,aAAay+E,EAAkBriJ,KAAKq5I,SAC9C,IAAIiJ,EAAmBtiJ,KAAKq5I,QAAQntI,cAAc,mBAC9Cq2I,EAAep5I,KAAKgkC,KAAKk1G,EAAiBj7I,wBAAwB/B,QACtEi9I,EAAiBv7I,MAAM1B,OAAUsM,SAASnL,iBAAiB87I,GAAkBj9I,OAAOpB,MAAM,MAAM,IAAMs+I,EAChG,KACND,EAAiBv7I,MAAMk4I,UAAYqD,EAAiBv7I,MAAM1B,YAG1Dm8I,EAAO98I,YAAY29I,QAGlBriJ,KAAK+4I,KAAK7sI,cAAc,8BAC7BlM,KAAK+4I,KAAK7sI,cAAc,4BAA4B20I,gBAAgBiB,UAAW,EAC/E9hJ,KAAK+4I,KAAK7sI,cAAc,4BAA4BwpC,cAAcxwC,UAAUC,OAAO,6BAGtF,GAAInF,KAAKo2I,oBAAsB,eAAkBp2I,KAAK+4I,KAAK9yF,SAAS,KAC9B,oCAApCjmD,KAAK+4I,KAAK9yF,SAAS,GAAGuE,UAAiD,CACtE83F,EAAmBtiJ,KAAKq5I,QAAQntI,cAAc,mBAAlD,IACIs2I,EAAiBr5I,KAAKgkC,KAAKntC,KAAK+4I,KAAK9yF,SAAS,GAAG7+C,wBAAwB/B,QAC7Ei9I,EAAiBv7I,MAAM1B,OAAUsM,SAASnL,iBAAiB87I,GAAkBj9I,OAAOpB,MAAM,MAAM,IAAMu+I,EAChG,KACNF,EAAiBv7I,MAAMk4I,UAAYqD,EAAiBv7I,MAAM1B,OAC1D,gBAAOrF,KAAK+4I,KAAK9yF,SAAS,IAE9B,IAAIw8F,OAAW,EACf,IAASzhJ,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAClC,IAAI63B,EAAM,eAAO,QACjB74B,KAAKokB,OAAO,GAAKyU,GAAO,eAASt4B,EAAK+c,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MAClE,IAAIoL,EAAQ,eAAShd,KAAKmD,QAAQmwB,MAAOhW,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MACjE5R,KAAKmD,QAAQw6D,WACb3gD,EAAQhd,KAAK87D,eAAexgC,OAAOte,EAAOhd,KAAKmD,QAAQw6D,WAE3D,IAAI+kF,EAAS,CAAE1lI,MAAOA,EAAO0E,OAAQ1hB,KAAKmD,QAAQue,OAAQpE,KAAMA,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MAG5F,GAFA5R,KAAK8gB,OAAOwT,OAAO,QAAwBouH,GAC3C1lI,EAAQ0lI,EAAO1lI,MACA,KAAVA,GAAgB,eAAkBA,GAAS,CAC5C,GAAIylI,EACA,SAEJA,GAAW,EAEXziJ,KAAKo2I,mBACLp2I,KAAK2iJ,wCAAwC3lI,EAAOhd,KAAK64I,+BAE7D,IAAI+J,EAAW5iJ,KAAK+2I,8BAChB/2I,KAAK0hJ,eAAe1kI,EAAOhd,KAAK82I,uBAAwB,eAAS,UAAWx5H,EAAKtc,KACjFhB,KAAK0hJ,eAAe1kI,EAAOhd,KAAK6iJ,gBAAgBV,EAAeniJ,KAAKokB,OAAO,GAAKyU,IAAO,eAAS,UAAWvb,EAAKtc,KACpHwgJ,EAAO98I,YAAY,eAAmBm0B,EAAK+pH,EAAU,aACjD5iJ,KAAKo2I,oBACLoL,EAAOsB,UAAU/7I,MAAM1B,OAASrF,KAAKu6I,cAAcv6I,KAAKs5I,MAAQ,MAGxE,IAAIroI,EAAYjR,KAAKs5I,KAAKroI,WACrBjR,KAAKo2I,mBAAqBp2I,KAAKs2I,wBAChCt2I,KAAKs5I,KAAKxuI,UAAY,GAEjB9K,KAAKo2I,mBAAqBp2I,KAAKs5I,KAAKrzF,SAAStlD,QAClDX,KAAKu/I,uBAAwB,GAAG7xI,MAAMpK,KAAKtD,KAAKs5I,KAAKrzF,UAAWv5C,OAAO,EAAG1M,KAAK8gB,OAAOwX,eAAe4kH,aAErGl9I,KAAKo2I,qBACJ50H,EAAKxhB,KAAK42I,oBAAoBvqI,KAAKvJ,MAAM0e,EAAI,GAAG9T,MAAMpK,KAAKk+I,EAAOv7F,WACnEjmD,KAAKu7I,UAA4B,IAAjByG,EAAqBhiJ,KAAK42I,mBAAmBj2I,OAASqhJ,EAAchiJ,KAAK42I,mBAAmBj2I,QAE5GX,KAAK64I,8BAA8Bl4I,SAAWX,KAAK42I,mBAAmBj2I,QAAUX,KAAK62I,oBACjF72I,KAAKmD,QAAQ+4I,4BAA+Bl8I,KAAKmD,QAAQ45I,uBAAyB/8I,KAAK62I,mBACxF72I,KAAKmD,QAAQ+4I,8BAChBl8I,KAAK64I,8BAAgC,IAEzC,eAAe74I,KAAKs5I,KAAM,GAAG5rI,MAAMpK,KAAKk+I,EAAOv7F,WAC3CjmD,KAAKo2I,oBAAsBp2I,KAAK02I,2BAChC12I,KAAK02I,yBAA2BvtI,KAAKC,MAAM6H,EAAYjR,KAAKs5I,KAAKroI,YAErEjR,KAAK+gJ,0BACA/gJ,KAAKo2I,kBAQF0L,IADAD,EAAIC,UANJD,IACAA,EAAIC,UAAW,GAEnBA,GAAW,OAWd,CAGD,GAFAN,EAAO98I,YAAY1E,KAAK8gB,OAAOvc,cAAc,OAAQ,CAAEuG,UAAW9K,KAAK85C,kBAAkB,eACzF95C,KAAKs5I,KAAKxuI,UAAY,GAClB9K,KAAKo2I,kBAAmB,CACpBuK,EAAY3gJ,KAAK+4I,KAAK7sI,cAAc,0BACxC,GAAIy0I,EAAW,CACX,IAAIoC,EAAkBpC,EAAUjrG,cAAcA,cAC1CirG,EAAUz7I,UAAUmB,SAAS,WAC7B,gBAAe08I,GAEVpC,EAAUz7I,UAAUmB,SAAS,YAClC,gBAAe08I,GACfpC,EAAUz7I,UAAUC,OAAO,UAC3B,gBAAe49I,IAEnBpC,EAAUE,gBAAgBiB,UAAW,EACrCnB,EAAUjrG,cAAcxwC,UAAU4G,IAAI,uBAE1C,IAAI8vI,EAAmB57I,KAAK+4I,KAAK7sI,cAAc,4BAC/C,GAAI0vI,EAAkB,CAClB,IAAIoH,EAAyBpH,EAAiBlmG,cAAcA,cACxDkmG,EAAiB12I,UAAUmB,SAAS,YACpC,gBAAe28I,GAEnBpH,EAAiBiF,gBAAgBiB,UAAW,EAC5ClG,EAAiBlmG,cAAcxwC,UAAU4G,IAAI,wBAGrD9L,KAAKs5I,KAAK50I,YAAY1E,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,sBACpE,eAAexE,KAAKs5I,KAAKrzF,SAAS,GAAI,GAAGv4C,MAAMpK,KAAKk+I,EAAOv7F,WACvD47F,IACAA,EAAIC,UAAW,GAEnBA,GAAW,EACX9hJ,KAAKk2I,aAAe4L,EAEpBD,GAAOvkI,EAAK3c,SACZX,KAAKk2I,aAAe2L,EAAIC,SACxBD,EAAI95I,YAER,IAAIssB,EAAO,CAAEoF,YAAa,QAA4Bra,WAAYpf,KAAKs2G,YAAc,GAAKh5F,GACtFm8H,EAAc,cAClBplH,EAAK,GAAKolH,GAAez5I,KACzBA,KAAK8gB,OAAOwT,OAAO,OAAyBD,GAC5Cr0B,KAAK8gB,OAAOwT,OAAO,QAAiC,CAAEwtH,SAAUA,IAC5D9hJ,KAAKo2I,mBAAqBp2I,KAAKq2I,sBAC/Br2I,KAAKs5I,KAAKvyI,MAAMuzI,UAAY,OAEhC,eAAYt6I,KAAKq5I,UAErBvD,EAAmB51I,UAAUyiJ,wCAA0C,SAAU3lI,EAAOimI,GACpF,IAAK,IAAIp/H,EAAI,EAAGA,EAAIo/H,EAActiJ,OAAQkjB,IAAK,CAC3C,IAAIm4H,EAAOiH,EAAcp/H,GACrB7G,IAAUg/H,EAAKh/H,OAA4B,UAAlBg/H,EAAKtkH,UAA0C,aAAlBskH,EAAKtkH,WAC3D13B,KAAKi3I,iCAAiC5qI,KAAK42I,EAAcp/H,IACzDo/H,EAAcv2I,OAAOmX,EAAG,GACxBA,OAIZiyH,EAAmB51I,UAAU2iJ,gBAAkB,SAAUV,EAAenlI,GACpE,GAAKhd,KAAK0vD,YAAeyyF,EAGpB,CACD,IAAIe,IAAaljJ,KAAKm4I,OAAOn7H,OAAehd,KAAK8f,OAAO,GAAK9C,GAC7D,OAAIhd,KAAKo2I,kBACE8M,EAG0B,aAA1BljJ,KAAKmD,QAAQu0B,UAA2BwrH,EAAaA,EARhE,OAAO,GAYfpN,EAAmBqK,YAAc,SAAU3tH,EAAMc,EAAO5R,EAAQiY,EAAgBwpH,GAC5E,IAEInmI,EAFAjE,EAAMyZ,EAAK7xB,OACXmf,EAAS,GAETsjI,EAAU,UACVC,EAAS,GACTtsH,KAAerV,IAAUA,EAAOgV,kBAAkBhV,EAAOgV,kBAC7D,MAAO3d,IAAO,CAEV,GADAiE,EAAQwV,EAAK7gB,SAASoH,EAAInH,WAAY,KAClC8P,GAA0B,aAAhBA,EAAOlT,MAAoD,kBAAtBwO,EAAM,GAAKsW,IAAuBtW,EAAM,GAAKsW,GAAQ,CACpG,IAAI+vG,EAAMrmH,EAAM,GAAKsW,GAAOrvB,MAAM,WAClC+Y,EAAM,GAAKsW,GAAS,IAAIjZ,KAAK1I,SAAS0xH,EAAI,GAAI,IAAK1xH,SAAS0xH,EAAI,GAAI,IAAM,EAAG1xH,SAAS0xH,EAAI,GAAI,KAElGrmH,EAAQ,eAAUsW,EAAOtW,GACzB,IAAIsmI,EAAuC,kBAAVtmI,GAAyB,cAAD,CAAmBmmI,IAEtE,cAAD,CAAmBA,EAAeriI,SAAc,cAAD,CAAmBqiI,EAAeriI,OAAOwX,iBAEvF,cAAD,CAAmB6qH,EAAeriI,OAAOwX,eAAeirH,uBAAgDvmI,EAAtBA,EAAMuF,cAC7F,KAAM+gI,KAAsBD,GAAS,CACjC,IAAIjmF,EAAM,GAGV,GAFAA,EAAI,GAAKgmF,GAAWpmI,EACpBqmI,EAAO,GAAKC,IAAsB,EAC9BvsH,EAAc,CACd,IAAIysH,EAAiB,eAAe9hI,EAAQ,GAAI1E,EAAO2c,GAAgB,GACvE,gBAAS,QAAuB6pH,EAAgBhxH,EAAK7gB,SAASoH,EAAInH,WAAY,MAC9EoL,EAAQ,eAAS0E,EAAO8V,gBAAiBgsH,GAE7C,gBAASlwH,EAAO,eAAkBtW,GAAS,KAAOA,EAAOogD,GACzD,gBAAS,UAAW5qC,EAAK7gB,SAASoH,EAAInH,WAAY,KAAMwrD,GACxDt9C,EAAOzT,KAAK+wD,IAGpB,OAAO,OAASprC,MAAM,OAAS3T,KAAKyB,EAAQwT,EAAO,OAASgqC,aAAc,YAE9Ew4E,EAAmB98G,aAAe,SAAUtW,EAASqzH,GAIjD,IAHA,IAAI/hH,EAAO,OAASmqH,SAASz7H,EAAS,SAAS,IAAS,GACpD+M,EAAa,GACbusH,EAAO,GACFh7I,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IAC7ByuB,EAAa,IAAI,OAAY/M,GAASk4E,cAAa,IAAI,QAAQ7iE,MAAM,QAAS,QAAS/D,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,QAC9F,IAAtB7D,EAAW9uB,SACXq7I,EAAKhoH,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAASwiH,EAAmBwH,kBAAkB7tH,EAAYsmH,IAGxG,OAAOiG,GAEXlG,EAAmBwH,kBAAoB,SAAUtpH,EAAM+hH,GACnD,IACIx8G,EADAxgB,EAAMib,EAAOA,EAAKrzB,OAAS,EAE3B8iJ,EAAU,KACV/2D,EAAQopD,EAAmB4N,iBAAiB1vH,EAAK,IACrD04D,EAAM90D,cAAgB,eAAkB80D,EAAM90D,eAAgB80D,EAAM90D,aAEhE2B,EADe,SAAfmzD,EAAMl+E,MAAkC,aAAfk+E,EAAMl+E,MAAsC,aAAfk+E,EAAMl+E,KAChD,eAAiBk+E,EAAOA,EAAMl+E,KAAMunI,GAGpCrpD,EAAMorD,YAAcprD,EAAMorD,YAClC,IAAI,OAAUprD,EAAMp5D,MAAOo5D,EAAMh1D,SAAUg1D,EAAM1vE,OAAQ84H,EAAmB6N,aAAaj3D,GAAQA,EAAM90D,cAE/G,IAAK,IAAI/3B,EAAI,EAAGA,EAAIkZ,EAAKlZ,IACrBm0B,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAOkkI,EAAmB4N,iBAAiB1vH,EAAKriB,SAAS9R,EAAE+R,WAAY,MAC/FmH,EAAM,GAAKlZ,EAAI,IAA6B,OAAtBm0B,EAAKn0B,GAAG05B,WAAgD,OAA1BvF,EAAKn0B,EAAI,GAAG05B,WACtC,QAAtBvF,EAAKn0B,GAAG05B,WAAiD,QAA1BvF,EAAKn0B,EAAI,GAAG05B,WAC1B,SAAjBvF,EAAKn0B,GAAG2O,MAAoC,aAAjBwlB,EAAKn0B,GAAG2O,MAAwC,aAAjBwlB,EAAKn0B,GAAG2O,KAClE+qB,EAAUC,WAAWntB,KAAK,eAAiB2nB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAMoiB,EAAKn0B,GAAG2O,KAAMunI,IAG3Fx8G,EAAUC,WAAWntB,KAAK,IAAI,OAAU2nB,EAAKn0B,GAAGyzB,MAAOU,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAK8lB,SAAU1D,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKoL,OAAQ84H,EAAmB6N,aAAa3vH,EAAKriB,SAAS9R,EAAE+R,WAAY,MAAOoiB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKgmB,eAM3O2B,EAFa,SAAjBvF,EAAKn0B,GAAG2O,MAAoC,aAAjBwlB,EAAKn0B,GAAG2O,MAAwC,aAAjBwlB,EAAKn0B,GAAG2O,KACf,QAA/CwlB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAK2nB,WAAqE,UAA9CvF,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAK8lB,SAC7E6B,EAAU,GAAKkqH,GAAS,eAAiBzvH,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAMoiB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAMunI,GAAiB/hH,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAMwlB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKgmB,cAG3M2B,EAAWvF,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAc,WAAG,eAAiBoiB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAMoiB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAMunI,GAAiB/hH,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKpD,KAAMwlB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKgmB,cAI/O5D,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKkmI,YACzCv+G,EAAUvF,EAAKriB,SAAS9R,EAAE+R,WAAY,KACjC2nB,WAAWvF,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKkmI,aACjDv+G,EAAWvF,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAc,WAAGoiB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAK0hB,MAAOU,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAK8lB,SAAU1D,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKoL,OAAQ84H,EAAmB6N,aAAa3vH,EAAKriB,SAAS9R,EAAE+R,WAAY,MAAOoiB,EAAKriB,SAAS9R,EAAE+R,WAAY,KAAKgmB,cAIxS,OAAO2B,GAAa,MAExBu8G,EAAmB6N,aAAe,SAAUvlI,GACxC,OAAI,eAAkBA,EAAOunH,aACL,WAAhBvnH,EAAO5P,MAAqB,eAAkB4P,EAAO5P,OAAmC,kBAAlB4P,EAAY,OAQ/EA,EAAOunH,WAGtBmQ,EAAmB4N,iBAAmB,SAAUtlI,GAI5C,OAHqB,SAAhBA,EAAO5P,MAAmC,aAAhB4P,EAAO5P,MAAuC,aAAhB4P,EAAO5P,MAAuB4P,EAAOpB,iBAAiB3C,QAC/G+D,EAAO5P,KAAO4P,EAAO5P,MAAQ,QAE1B4P,GAEJ03H,EA3wD4B,I,4wBCjBvC,IAAM8N,EAAY,CACdC,oBAAqB,SAAUvmI,GAmB3B,IAlBA,IAAIwmI,EAAU,GACVC,EAAc,GACdC,EAAS,GACTC,EAAQ,GACRC,EAAU,GACVC,EAAU,GACVC,EAAQ,GACRC,EAAW,GACXC,EAAW,GACXC,EAAU,GAEVC,EAAc,GACdC,EAAK,GACLC,EAAS,GACTC,EAAc,GACZC,EAAiB,IAAItW,IACvBuW,EAAS,CAAC,UAAW,cAAe,SAAU,QAAS,UAAW,UAAW,QAAS,aAAc,WAAY,UAAW,cAAe,SAAU,kBAE/I7jJ,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IACR,WAAjBsc,EAAKtc,GAAGm7B,QACR2nH,EAAUxmI,EAAKtc,IAEE,eAAjBsc,EAAKtc,GAAGm7B,QACR4nH,EAAczmI,EAAKtc,IAGF,UAAjBsc,EAAKtc,GAAGm7B,QACR6nH,EAAS1mI,EAAKtc,IAGG,SAAjBsc,EAAKtc,GAAGm7B,QACR8nH,EAAQ3mI,EAAKtc,IAEI,WAAjBsc,EAAKtc,GAAGm7B,QACR+nH,EAAU5mI,EAAKtc,IAEE,WAAjBsc,EAAKtc,GAAGm7B,QACRgoH,EAAU7mI,EAAKtc,IAEE,SAAjBsc,EAAKtc,GAAGm7B,QACRioH,EAAQ9mI,EAAKtc,IAEI,cAAjBsc,EAAKtc,GAAGm7B,QACRkoH,EAAW/mI,EAAKtc,IAEC,YAAjBsc,EAAKtc,GAAGm7B,QACRmoH,EAAWhnI,EAAKtc,IAEC,WAAjBsc,EAAKtc,GAAGm7B,QACRooH,EAAUjnI,EAAKtc,IAEE,eAAjBsc,EAAKtc,GAAGm7B,QACRqoH,EAAclnI,EAAKtc,IAEF,UAAjBsc,EAAKtc,GAAGm7B,QACRuoH,EAASpnI,EAAKtc,IAEG,kBAAjBsc,EAAKtc,GAAGm7B,MACRsoH,EAAKnnI,EAAKtc,GAGL6jJ,EAAOzzC,SAAS9zF,EAAKtc,GAAGm7B,SACrByoH,EAAeE,IAAIxnI,EAAKtc,GAAG+jJ,gBAC3BH,EAAexzB,OAAO9zG,EAAKtc,GAAG+jJ,eAC9BH,EAAeI,IAAI1nI,EAAKtc,GAAG+jJ,cAAeznI,EAAKtc,KAE/C4jJ,EAAeI,IAAI1nI,EAAKtc,GAAG+jJ,cAAeznI,EAAKtc,KAK/D2jJ,EAAc/kJ,MAAM0hJ,KAAKsD,EAAexgI,UACxCugI,EAAYtmI,MAAK,SAAUC,EAAG9e,GAC1B,IAAIwG,EAAIsY,EAAE6d,MAAM5Z,cACZtc,EAAIzG,EAAE28B,MAAM5Z,cAChB,OAAIvc,EAAIC,GAAa,EACjBD,EAAIC,EAAY,EACb,KACX,IAAIgrD,EAAO,CAACwzF,EAAIX,EAASC,EAAaC,EAAQC,EAAOC,EAASC,EAASC,EAAOC,EAAUC,EAAUC,EAASC,EAAaE,GAAMl3H,OAAAy3H,EAAKN,IAC/HO,EAASj0F,EAAK7yC,QAAO,SAAAg/C,GAAG,OAAI39D,OAAO2V,KAAKgoD,GAAKg0C,SAAS,YAC1D,OAAO8zC,IAKAtB,U,kCCvFf,8GAYIuB,EAA8B,WAC9B,SAASA,EAAarkI,EAAQuxF,GAC1BryG,KAAK+uG,UAAYsD,EAAQ1R,WAAW,gBACpC3gG,KAAKolJ,UAAY/yC,EAAQ1R,WAAW,kBACpC3gG,KAAK8gB,OAASA,EACd9gB,KAAKoD,QAAUpD,KAAK8gB,OAAOvc,cAAc,KAAM,CAAEC,UAAW,OAAkBwK,MAAO,CAAEC,KAAM,WAAY6zF,SAAU,QACnH9iG,KAAKqlJ,UAAYrlJ,KAAK8gB,OAAOvc,cAAc,QAAS,CAAEC,UAAW,gBAAiBwK,MAAO,CAAE,KAAQ,WAAY,aAAchP,KAAK+uG,UAAU/0D,YAAY,gBA8S5J,OAvSAmrG,EAAajlJ,UAAU8uG,OAAS,WAC5B,MAAO,IAWXm2C,EAAajlJ,UAAUswB,OAAS,SAAU9O,EAAQ1E,EAAOM,GACrD,IAAK,eAAkBoE,EAAO8O,QAAS,CAInC,GAHoB,WAAhB9O,EAAOlT,MAAqBoP,MAAMjM,SAASqL,EAAO,OAClDA,EAAQ,MAEQ,aAAhB0E,EAAOlT,MAAwC,kBAAVwO,GAAsBA,EAAO,CAClE,IAAIqmH,EAAMrmH,EAAM/Y,MAAM,WACtB+Y,EAAQ,IAAI3C,KAAK1I,SAAS0xH,EAAI,GAAI,IAAK1xH,SAAS0xH,EAAI,GAAI,IAAM,EAAG1xH,SAAS0xH,EAAI,GAAI,KAEtFrmH,EAAQhd,KAAKolJ,UAAU9pH,OAAOte,EAAO0E,EAAO0Z,gBAEhD,OAAO,eAAkBpe,GAAS,GAAKA,EAAMpL,YAGjDuzI,EAAajlJ,UAAUolJ,SAAW,SAAUriF,EAAMkE,EAAM7pD,EAAMypD,EAAYw+E,EAAOnjF,GAC7E,IAAIv+D,EACAic,EACJ,GAAIqnD,EAAKzlD,OAAOiL,SAAU,CACtB,IAAIo7E,EAAkB/nG,KAAK8gB,OAAO3Y,SAA6C,kBAA1Bg/D,EAAKzlD,OAAe,UAAkBylD,EAAKzlD,OAAOiL,SAASzsB,YAAeinE,EAAKzlD,OAAOiL,SAAkB,UAAE64H,YAC3JnkD,EAAerhG,KAAK8gB,OAAOwgF,eAAiBthG,KAAK8gB,OAAOwgF,cAAcC,eACtEvhG,KAAK8gB,OAAOwgF,cAAcC,cAAcp5F,QACxCs9I,EAAa,CAAC,SACd9D,EAAY,eAAgB,GAAIrkI,GAAOzZ,EAAK,GAAIA,EAAG,SAAkB0hJ,EAAO1hJ,EAAG6d,OAASylD,EAAKzlD,OAAQ7d,IACrG6hJ,EAAa1lJ,KAAK8gB,OAAO1d,QAAQkI,GAAK67D,EAAKzlD,OAAOmX,IAClD4X,EAAM,mBACV,GAAIs3D,GAAmB1G,EAAc,CACjC,IAAI8O,EAAS,CAAE,MAASppC,EAAW0+E,EAAW,KAC9Ct+E,EAAKzlD,OAAOo8C,mBAAZqJ,CAAgC,eAAOgpC,EAAQwxC,GAAY3hJ,KAAK8gB,OAAQ,iBAAkB4kI,EAAY1lJ,KAAK8gB,OAAO,GAAK2vB,GAAM,KAAMwyB,QAGnInjD,EAASqnD,EAAKzlD,OAAOo8C,mBAAZqJ,CAAgC,eAAO,CAAE,MAASJ,EAAW0+E,EAAW,KAAO9D,GAAY3hJ,KAAK8gB,OAAQ,WAAY4kI,EAAY1lJ,KAAK8gB,OAAO,GAAK2vB,QAAMllC,OAAWA,EAAWvL,KAAK8gB,OAAO,SAStM,OAPKinF,GAAoB1G,GACrB,eAAep+B,EAAMnjD,GAEzB9f,KAAK8gB,OAAOwT,OAAO,kBAAmB,CAAE3H,SAAU7M,IAClDA,EAAS,KACTmjD,EAAKt4D,aAAa,aAAcs4D,EAAKzY,UAAYxqD,KAAK+uG,UAAU/0D,YAAY,gBACxEh6C,KAAK+uG,UAAU/0D,YAAY,gBAAkBmtB,EAAKzlD,OAAO+K,aACtD,EAEX,OAAO,GAUX04H,EAAajlJ,UAAUylJ,gBAAkB,SAAUjkI,EAAQ1E,EAAOM,GAC9D,IAAK,eAAkBoE,EAAO0jI,WAC1B,GAAI,eAAuB1jI,EAAO0jI,UAAW,YAAa,CACtD,IAAIA,EAAY1jI,EAAO0jI,UACvBpoI,GAAQ,IAAIooI,GAAY51C,SAAS9tF,EAAQpE,QAGzCN,EADiC,oBAArB0E,EAAO0jI,UACX1jI,EAAO0jI,UAAU1jI,EAAQpE,GAGzBoE,EAAO0jI,UAAU51C,SAAS9tF,EAAQpE,GAGlD,OAAON,GAYXmoI,EAAajlJ,UAAUyT,OAAS,SAAUwzD,EAAM7pD,EAAMypD,EAAYi6B,EAAU5+B,GACxE,OAAOpiE,KAAK4lJ,YAAYz+E,EAAM7pD,EAAMypD,EAAY3E,IAWpD+iF,EAAajlJ,UAAUu/H,UAAY,SAAUv+B,EAAI/5B,EAAM7pD,EAAMypD,GACzD,IAAI3E,EAA2C,UAAlCpiE,KAAK8gB,OAAOo9F,aAAazgG,MAAoByjF,EAAGh8F,UAAUmB,SAAS,qBAChF,GAAIrG,KAAK8gB,OAAO3Y,QAAS,CACrB,IAAIi3G,EAAYle,EAAGke,UACfymC,EAAY3kD,EAAGxrD,cACnB,gBAAOwrD,GACP,IAAI4kD,EAAQ9lJ,KAAK4lJ,YAAYz+E,EAAM7pD,EAAMypD,EAAY3E,GACrDpiE,KAAK+lJ,gBAAgBD,EAAO5kD,GACxB2kD,EAAU5+E,MAAMtmE,SAAWy+G,EAAY,EACvCymC,EAAUjiF,aAAakiF,EAAOD,EAAU5+E,MAAMt1D,SAASytG,EAAUxtG,WAAY,MAG7Ei0I,EAAUnhJ,YAAYohJ,OAGzB,CACD,IAAI7iF,EAAOjjE,KAAK4lJ,YAAYz+E,EAAM7pD,EAAMypD,EAAY3E,GACpD8+B,EAAGp2F,UAAY,GACf,IAAIk7I,EAAgB/iF,EAAKv4D,aAAa,cACtCs7I,GAAgB9kD,EAAGv2F,aAAa,aAAcq7I,GAE9C,IADA,IAAI9xG,EAAW,GAAGxmC,MAAMpK,KAAK2/D,EAAKh4C,YACzBpd,EAAK,EAAGo4I,EAAa/xG,EAAUrmC,EAAKo4I,EAAWtlJ,OAAQkN,IAAM,CAClE,IAAIg3E,EAAOohE,EAAWp4I,GACtBqzF,EAAGx8F,YAAYmgF,MAK3BsgE,EAAajlJ,UAAU6lJ,gBAAkB,SAAUzlJ,EAAQswB,GAEvD,IAIImvE,EAJA/wF,EAAQ4hB,EAAOm2C,WAEf/lE,EAAIgO,EAAMrO,OAGd,MAAOK,IACH++F,EAAO/wF,EAAM2C,SAAS3Q,EAAE4Q,WAAY,KACpCtR,EAAOqK,aAAao1F,EAAK/vF,KAAM+vF,EAAK/iF,QAG5CmoI,EAAajlJ,UAAU0lJ,YAAc,SAAUz+E,EAAM7pD,EAAMypD,EAAY3E,GACnE,IAAIv+D,EAGA0hJ,EAFAtiF,EAAOjjE,KAAKoD,QAAQo8F,YACpB99E,EAASylD,EAAKzlD,OAEdylD,EAAKpwC,eACLwuH,EAAQp+E,EAAKxtC,eAAe,KAAO91B,EAAK,GAAIA,EAAG6d,EAAO8V,iBAAmB9V,EAAO8O,OAAS,KAAO,GAAI3sB,IAGxG,IAAI4sG,EAAYzwG,KAAKgvG,SACjBhyF,EAAQmqD,EAAKpwC,aAAe/2B,KAAKwvG,SAAS9tF,EAAO8V,gBAAiB+tH,EAAO7jI,GACzE1hB,KAAKwvG,SAAS9tF,EAAO4R,MAAOhW,EAAMoE,GAItC,GAHqB,SAAhBA,EAAOlT,MAAmC,aAAhBkT,EAAOlT,MAAyB,eAAkBwO,KAC7EA,EAAQ,IAAI3C,KAAK2C,IAED,aAAhB0E,EAAOlT,OAAwB,eAAkBwO,IAA2B,kBAAVA,EAAoB,CACtF,IAAIqmH,EAAMrmH,EAAM/Y,MAAM,WACtB+Y,EAAQ,IAAI3C,KAAK1I,SAAS0xH,EAAI,GAAI,IAAK1xH,SAAS0xH,EAAI,GAAI,IAAM,EAAG1xH,SAAS0xH,EAAI,GAAI,KAItF,GAFArmH,EAAQhd,KAAKwwB,OAAO9O,EAAQ1E,EAAOM,GACnCmzF,EAAYzzF,EAAMpL,WACE,YAAhB8P,EAAOlT,OAAuBkT,EAAOs0G,kBAAmB,CACxD,IAAIkwB,EAAuB,SAAVlpI,GAA8B,UAAVA,EAAqB,KAAiB,SAAVA,EAAmB,OAAS,QAC7FyzF,EAAYy1C,EAAYlmJ,KAAK+uG,UAAU/0D,YAAYksG,GAAaz1C,EAEpE,IAAI01C,EAAgBnmJ,KAAK2lJ,gBAAgBjkI,EAAQ1E,EAAOM,GAExD,GADAmzF,EAAa,eAAkB/uF,EAAO0jI,WAAgF30C,EAAnE,eAAkB01C,GAAiB,GAAKA,EAAcv0I,WACrG5R,KAAKslJ,SAASriF,EAAMkE,EAAM7pD,EAAMypD,EAAYw+E,EAAOnjF,IAA2B,aAAhB1gD,EAAOlT,KACrExO,KAAK4vG,WAAW3sC,EAAMjjE,KAAK8gB,OAAO5V,SAASulG,GAAY/uF,EAAOu8C,aAAev8C,EAAOu8C,eAAiB,kBAEpG,GAAoB,aAAhBv8C,EAAOlT,KAAqB,CACjCy0D,EAAK/9D,UAAU4G,IAAI,QAEfkR,IADAhd,KAAK8gB,OAAOwiF,kBAAkBC,kBACZ,SAAVvmF,EAKZ,IAAIopI,EAAY,eAAepmJ,KAAK8gB,OAAOvc,eAAe,EAAO,CAAEmrG,QAAS1yF,EAAOkrB,MAAO,MACtFloC,KAAK8gB,OAAOrW,UACZ,eAAS,CAAC27I,GAAY,CAACpmJ,KAAK8gB,OAAOrW,WAEvCzK,KAAKqlJ,UAAU/5I,GAAK,YAAc67D,EAAKk/E,MACvCD,EAAUxiF,aAAa5jE,KAAKqlJ,UAAU7lD,YAAa4mD,EAAUp7H,YAC7Di4C,EAAKv+D,YAAY0hJ,GAMrB,GAJiC,UAA7BpmJ,KAAK8gB,OAAO0/E,cAA4BxgG,KAAK8gB,OAAO0T,uBACpD2yC,EAAKv9C,YAAa,GAEtB5pB,KAAKw5E,cAAcvW,EAAMkE,EAAMJ,GACX,YAAhBrlD,EAAOlT,MAAsBkT,EAAOs0G,kBAAmB,CACvD,IAAItmB,EAAU9xF,MAAMjM,SAASqL,EAAMpL,WAAY,KAAiB,SAAVoL,EAAmBrL,SAASqL,EAAMpL,WAAY,IAAM,EACtGw0I,EAAY,eAAepmJ,KAAK8gB,OAAOvc,eAAe,EAAO,CAAEmrG,QAASA,EAASxnE,MAAO,MAC5F+6B,EAAKn4D,UAAY,GACjBm4D,EAAK/9D,UAAU4G,IAAI,qBACnBs6I,EAAUlhJ,UAAU4G,IAAI,uBACpB9L,KAAK8gB,OAAOrW,UACZ,eAAS,CAAC27I,GAAY,CAACpmJ,KAAK8gB,OAAOrW,WAEvCw4D,EAAKv+D,YAAY0hJ,GAErB,GAAInjF,EAAK/9D,UAAUmB,SAAS,mBAAqBiX,EAAK/c,IAAK,CACvD,IAAIs4B,EAAMoqC,EAAKv4D,aAAa,gBAC5BgX,EAAS1hB,KAAK8gB,OAAO8X,eAAeC,GACpCoqC,EAAKt4D,aAAa,aAAc8lG,EAAYzwG,KAAK+uG,UAAU/0D,YAAY,gBAAkBmtB,EAAKzlD,OAAO+K,YAKzG,OAHIzsB,KAAK8gB,OAAOg/C,kBAAoBxiD,GAASA,IAASA,EAAK/c,MACvD,eAAwBP,KAAK8gB,OAAQY,EAAQuhD,GAE1CA,GAUXkiF,EAAajlJ,UAAU0vG,WAAa,SAAU3sC,EAAMwtC,EAAWj+C,GAG3D,YAFiB,IAAbA,IAAuBA,EAAW,aACtCyQ,EAAK,GAAKzQ,GAAYi+C,EACfxtC,GASXkiF,EAAajlJ,UAAUs5E,cAAgB,SAAUvW,EAAMkE,EAAMJ,GACzD,IAAIrlD,EAASylD,EAAKzlD,OAClB1hB,KAAK2vG,uBAAuB1sC,EAAMkE,EAAsB,aAAhBzlD,EAAOlT,MAC/C,gBAAsBy0D,EAAM8D,GAC5B,gBAAsB9D,EAAMkE,EAAKJ,YAC7BrlD,EAAOouF,kBACP,gBAAsB7sC,EAAMvhD,EAAOouF,kBAEF,aAAjC9vG,KAAK8gB,OAAOgjF,kBACZ,gBAAsB7gC,EAAM,CAAE,YAAavhD,EAAO+K,aAElD/K,EAAO26C,YACP4G,EAAKl8D,MAAMs1D,UAAY36C,EAAO26C,WAEV,SAApB36C,EAAO2uF,WAAyB3uF,EAAO2uF,UAAqC,SAAzBrwG,KAAK8gB,OAAOuvF,SAC/DptC,EAAK/9D,UAAU4G,IAAI,cAEM,wBAApB4V,EAAO2uF,WAAwC3uF,EAAO2uF,UAAqC,wBAAzBrwG,KAAK8gB,OAAOuvF,UAC9ErwG,KAAK8gB,OAAOijF,gBAA4D,YAA1C/jG,KAAK8gB,OAAOkjF,iBAAiBC,UACf,SAA1CjkG,KAAK8gB,OAAOkjF,iBAAiBC,YAChB,aAAhBviF,EAAOlT,MACPy0D,EAAK/9D,UAAU4G,IAAI,sBAI/Bq5I,EAAajlJ,UAAUyvG,uBAAyB,SAAU1sC,EAAMkE,EAAMm/E,GAClE,IAAIvmD,EAAO,GACP1qF,EAAO,CAAE,SAAY,QACrByvF,EAAU,GACV39B,EAAK0qB,UACLkO,EAAKlO,QAAU1qB,EAAK0qB,SAEpB1qB,EAAK06B,UACL9B,EAAK8B,QAAU16B,EAAK06B,SAEpB16B,EAAKs6B,YACLqD,EAAQz4F,KAAK,kBAEb86D,EAAKv9C,aACLk7E,EAAQz4F,KAAKvJ,MAAMgiG,EAAS,CAAC,wBAAyB,aAClDwhD,GACArjF,EAAK/2D,cAAc,YAAYhH,UAAU4G,IAAI,YAGjDq7D,EAAK05B,kBACLiE,EAAQz4F,KAAKvJ,MAAMgiG,EAAS,CAAC,sBAE7B39B,EAAKE,WAAa,OAASwjC,QAC3B9K,EAAK1qF,EAAKkxI,UAAYp/E,EAAK0gC,SAC3B9H,EAAK,QAAyB54B,EAAK0gC,SAAW,GAExC,eAAkB1gC,EAAK16D,SAC7BszF,EAAK1qF,EAAKkxI,UAAYp/E,EAAK16D,MAC3BszF,EAAK,QAAyB54B,EAAK16D,MAAQ,GAE1C06D,EAAKxwD,SACNmuF,EAAQz4F,KAAK,UAEjB0zF,EAAK/4B,MAAQ89B,EACb,gBAAsB7hC,EAAM88B,IAEhColD,EAAajlJ,UAAUsvG,SAAW,SAAUl8E,EAAOhW,EAAMoE,GACrD,OAAOA,EAAOuvF,cAAc39E,EAAOhW,EAAMoE,IAEtCyjI,EApTsB,I,4wBCZjC,IAAMvB,EAAY,CACd4C,aAAc,SAAUlpI,GAmBpB,IAlBA,IAAIwmI,EAAU,GACVC,EAAc,GACdC,EAAS,GACTC,EAAQ,GACRC,EAAU,GACVC,EAAU,GACVC,EAAQ,GACRC,EAAW,GACXC,EAAW,GACXC,EAAU,GACVkC,EAAU,GACVjC,EAAc,GACdC,EAAK,GACLC,EAAS,GACTC,EAAc,GACdE,EAAS,CAAC,UAAW,cAAe,SAAU,QAAS,UAAW,UAAW,QAAS,aAAc,WAAY,UAAW,cAAe,SAAU,kBAClJD,EAAiB,IAAItW,IAElBttI,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IACR,WAAjBsc,EAAKtc,GAAGm7B,QACR2nH,EAAUxmI,EAAKtc,IAEE,eAAjBsc,EAAKtc,GAAGm7B,QACR4nH,EAAczmI,EAAKtc,IAGF,UAAjBsc,EAAKtc,GAAGm7B,QACR6nH,EAAS1mI,EAAKtc,IAGG,SAAjBsc,EAAKtc,GAAGm7B,QACR8nH,EAAQ3mI,EAAKtc,IAEI,WAAjBsc,EAAKtc,GAAGm7B,QACR+nH,EAAU5mI,EAAKtc,IAEE,WAAjBsc,EAAKtc,GAAGm7B,QACRgoH,EAAU7mI,EAAKtc,IAEE,SAAjBsc,EAAKtc,GAAGm7B,QACRioH,EAAQ9mI,EAAKtc,IAEI,cAAjBsc,EAAKtc,GAAGm7B,QACRkoH,EAAW/mI,EAAKtc,IAEC,YAAjBsc,EAAKtc,GAAGm7B,QACRmoH,EAAWhnI,EAAKtc,IAEC,WAAjBsc,EAAKtc,GAAGm7B,QACRooH,EAAUjnI,EAAKtc,IAEE,WAAjBsc,EAAKtc,GAAGm7B,QACRsqH,EAAUnpI,EAAKtc,IAEE,eAAjBsc,EAAKtc,GAAGm7B,QACRqoH,EAAclnI,EAAKtc,IAEF,kBAAjBsc,EAAKtc,GAAGm7B,QACRsoH,EAAKnnI,EAAKtc,IAEO,UAAjBsc,EAAKtc,GAAGm7B,MACRuoH,EAASpnI,EAAKtc,GAGT6jJ,EAAOzzC,SAAS9zF,EAAKtc,GAAGm7B,SACrByoH,EAAeE,IAAIxnI,EAAKtc,GAAG+jJ,gBAC3BH,EAAexzB,OAAO9zG,EAAKtc,GAAG+jJ,eAC9BH,EAAeI,IAAI1nI,EAAKtc,GAAG+jJ,cAAeznI,EAAKtc,KAE/C4jJ,EAAeI,IAAI1nI,EAAKtc,GAAG+jJ,cAAeznI,EAAKtc,KAK/D2jJ,EAAc/kJ,MAAM0hJ,KAAKsD,EAAexgI,UACxCugI,EAAYtmI,MAAK,SAAUC,EAAG9e,GAC1B,IAAIwG,EAAIsY,EAAE6d,MAAM5Z,cACZtc,EAAIzG,EAAE28B,MAAM5Z,cAChB,OAAIvc,EAAIC,GAAa,EACjBD,EAAIC,EAAY,EACb,KAEX,IAAIgrD,EAAO,CAACwzF,EAAIX,EAASC,EAAaC,EAAQC,EAAOC,EAASC,EAASC,EAAOC,EAAUC,EAAUC,EAASkC,EAASjC,EAAaE,GAAMl3H,OAAAy3H,EAAKN,IACxIO,EAASj0F,EAAK7yC,QAAO,SAAAg/C,GAAG,OAAI39D,OAAO2V,KAAKgoD,GAAKg0C,SAAS,YAC1D,OAAO8zC,IAKAtB,U,kCC3Ff,8GAUI8C,EAA0C,WAC1C,SAASA,EAAyB5lI,EAAQ8Q,GACtC5xB,KAAK2mJ,WAAa,GAClB3mJ,KAAK4mJ,cAAgB,GAErB5mJ,KAAK6mJ,gBAAiB,EACtB7mJ,KAAK8gB,OAASA,EACd9gB,KAAK4xB,eAAiBA,EACtB5xB,KAAK+oB,mBAutBT,OArtBA29H,EAAyBxmJ,UAAU6oB,iBAAmB,WAClD/oB,KAAKy7G,YAAc,CAAC,CAAE/sG,MAAO,QAA0B8hG,QAASxwG,KAAK8mJ,mBACjE,CAAEp4I,MAAO,QAAiC8hG,QAASxwG,KAAK+mJ,0BACxD,CAAEr4I,MAAO,QAA8B8hG,QAASxwG,KAAKgnJ,6BACrD,CAAEt4I,MAAO,QAA0B8hG,QAASxwG,KAAKinJ,uBACjD,CAAEv4I,MAAO,QAA0B8hG,QAASxwG,KAAKknJ,qBACjD,CAAEx4I,MAAO,QAAoC8hG,QAASxwG,KAAKmnJ,8BAC/D,eAAuBnnJ,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,EAAMz7G,MAC5DA,KAAKonJ,mBAAqBpnJ,KAAKqnJ,aAAazhJ,KAAK5F,MACjDA,KAAK8gB,OAAOiI,iBAAiB,OAAuB/oB,KAAKonJ,qBAE7DV,EAAyBxmJ,UAAUgnJ,oBAAsB,WACrDlnJ,KAAKsnJ,mBAAoB,GAE7BZ,EAAyBxmJ,UAAU+mJ,sBAAwB,WACvD,IAAIx7H,EAASzrB,KAAKunJ,oBAAoBnkJ,QAAQ8I,cAAc,yBACxD8jB,EAAQvE,EAAOvf,cAAc,wBAC7Bs7I,EAAW/7H,EAAOvf,cAAc,wBACpClM,KAAKsnJ,mBAAoB,EACzBtnJ,KAAK8gB,OAAOiyF,aAAaA,aAAaqkC,cACtCp3I,KAAKynJ,QAAQrkJ,QAAQ2D,MAAMC,QAAU,GACrChH,KAAK+mJ,yBAAyB,CAAEjF,UAAU,IAC1C9hJ,KAAK0nJ,QAAQtkJ,QAAQ2D,MAAMC,QAAU,OACrCwgJ,EAASzgJ,MAAMC,QAAU,GACzBgpB,EAAMllB,UAAY9K,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,gBACpD,IAAInvC,EAAU7K,KAAKunJ,oBAAoBnkJ,QAAQ8I,cAAc,kBAC7DlM,KAAK2nJ,wBAA0B3nJ,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,0CAC7EqG,EAAQnG,YAAY1E,KAAK2nJ,0BAE7BjB,EAAyBxmJ,UAAU8mJ,4BAA8B,SAAU3yH,GACvE,GAAIr0B,KAAK+8B,SAAW,OAAuB6qH,SAAU,CACjD,IAAI/8I,EAAU7K,KAAKunJ,oBAAoBnkJ,QAAQ8I,cAAc,kBACzDuf,EAASzrB,KAAKunJ,oBAAoBnkJ,QAAQ8I,cAAc,yBACxDs7I,EAAW/7H,EAAOvf,cAAc,wBAChCsQ,EAAOiP,EAAOvf,cAAc,wBAChC,GAAImoB,EAAK87G,OAAQ,CACbtlI,EAAQmgB,WAAWjkB,MAAMC,QAAU,OACnC6D,EAAQnG,YAAY2vB,EAAK/zB,QACzBknJ,EAASzgJ,MAAMC,QAAU,OACzBhH,KAAKynJ,QAAQrkJ,QAAQ2D,MAAMC,QAAU,OACrChH,KAAK6nJ,eAAezkJ,QAAQ2D,MAAMC,QAAU,OAC5CwV,EAAK1R,UAAYupB,EAAK5I,OACtB,IAAIi8H,EAAU1nJ,KAAK8gB,OAAOvc,cAAc,UACpCo8B,EAAO3gC,KAAK8gB,OAAOvc,cAAc,OAAQ,CAAEC,UAAW,uCAC1DkjJ,EAAQhjJ,YAAYi8B,GACpB3gC,KAAK0nJ,QAAU,IAAI,OAAO,CACtBj9I,SAAUzK,KAAK8gB,OAAOrW,SAAW,kBAAyBzK,KAAK8gB,OAAOrW,SAAW,mBAErFzK,KAAK0nJ,QAAQ72D,SAAS62D,GACtBlrI,EAAKk5B,cAAckuB,aAAa8jF,EAASlrI,QAEpCxc,KAAK0nJ,UAAY1nJ,KAAKsnJ,oBAC3Bz8I,EAAQmgB,WAAWjkB,MAAMC,QAAU,GACnC,gBAAOhH,KAAK0nJ,QAAQtkJ,SACpBokJ,EAASzgJ,MAAMC,QAAU,GACzBhH,KAAKynJ,QAAQrkJ,QAAQ2D,MAAMC,QAAU,GACjChH,KAAK0vD,aACL1vD,KAAK6nJ,eAAezkJ,QAAQ2D,MAAMC,QAAU,IAEhDwV,EAAK1R,UAAY9K,KAAK8nJ,eAAe,CAAE/qH,OAAQ,OAAuB6qH,UAAYvzH,EAAK+B,QAInGswH,EAAyBxmJ,UAAUinJ,4BAA8B,SAAU9yH,GACnEr0B,KAAK6nJ,iBACL7nJ,KAAK0vD,WAAar7B,EAAKq7B,WACvB1vD,KAAK6nJ,eAAezkJ,QAAQ2D,MAAMC,QAAUqtB,EAAKq7B,WAAa,GAAK,SAG3Eg3F,EAAyBxmJ,UAAU6mJ,yBAA2B,SAAU1yH,GAChEr0B,KAAKynJ,UACLznJ,KAAKynJ,QAAQ3F,SAAWztH,EAAKytH,UAE7B9hJ,KAAK8gB,OAAO6oH,qBAAuB3pI,KAAK8gB,OAAO6oH,oBAAoBlvB,yBAAyBgtC,UAC5FznJ,KAAK8gB,OAAO6oH,oBAAoBlvB,yBAAyBgtC,QAAQ3F,SAAWztH,EAAKytH,WAGzF4E,EAAyBxmJ,UAAU6nJ,4BAA8B,SAAUt3G,EAAKmZ,EAAQk4F,GACpF,IAAIkG,EAAOhoJ,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,kCAAoCisC,EAAIluB,cAAgB,OAASu/H,EAAW,cAAgB,MACjJnhH,EAAO3gC,KAAK8gB,OAAOvc,cAAc,OAAQ,CAAEC,UAAW,gBAAkBisC,EAAIluB,cAAgB,qBAC5FgtC,EAAOvvD,KAAK8gB,OAAOvc,cAAc,OAAQ,CAAEuG,UAAW8+C,EAAQplD,UAAW,uCAC7EwjJ,EAAKtjJ,YAAYi8B,GACjBqnH,EAAKtjJ,YAAY6qD,GACjBvvD,KAAKioJ,gBAAgBvjJ,YAAYsjJ,IAErCtB,EAAyBxmJ,UAAUgoJ,wBAA0B,SAAU9xH,EAAK1U,GACxE,IAAIre,EAAQrD,KACR2yB,EAAO3yB,KAAK8gB,OACZqnI,EAAkBnoJ,KAAK+8B,SAAW,OAAuBorH,gBAC7D,GAAI/xH,GAAO+xH,EAGP,OAFAnoJ,KAAKooJ,aAAepoJ,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,WAAY2jJ,EAAkB,0BAA4B,IAAM,mCACnH78I,IAAK68I,EAAkB,eAAiB/xH,EAAIyC,KAAO,iBAChD74B,KAAKooJ,aAIZ,GADApoJ,KAAKioJ,gBAAkBt1H,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,0BAA2B0K,OAAQ,gBAC7FlP,KAAK8gB,OAAOq6C,gBAAmD,eAAjCn7D,KAAK8gB,OAAOgjF,kBAAqC9jG,KAAK+8B,SAAW,OAAuBsrH,UAAW,CAOjI,GANAroJ,KAAK+nJ,4BAA4B,aAAcp1H,EAAKk3G,UAAU7vF,YAAY,eAC1Eh6C,KAAK+nJ,4BAA4B,UAAWp1H,EAAKk3G,UAAU7vF,YAAY,YACnEt4B,EAAO4T,eAAiB3C,EAAK2C,gBAC7Bt1B,KAAK+nJ,4BAA4B,QAASp1H,EAAKk3G,UAAU7vF,YAAY,SAAUrnB,EAAK4C,cAAc7S,QAAQ1e,QAAQ0d,EAAO4R,QAAU,GACnItzB,KAAK+nJ,4BAA4B,UAAWp1H,EAAKk3G,UAAU7vF,YAAY,WAAYrnB,EAAK4C,cAAc7S,QAAQ1e,QAAQ0d,EAAO4R,OAAS,IAEtI5R,EAAOuU,cAAgBtD,EAAKsD,aAAc,CAG1C,IAFA,IAAIK,EAAY,OACZgyH,EAActoJ,KAAK8gB,OAAOoV,aAAaxT,QAClC1hB,EAAI,EAAGA,EAAIsnJ,EAAY3nJ,OAAQK,IACpC,GAAIsnJ,EAAY32I,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,QAAU5R,EAAO4R,MAAO,CAChEgD,EAAYgyH,EAAY32I,SAAS3Q,EAAE4Q,WAAY,KAAK0kB,UACpD,MAGRt2B,KAAK+nJ,4BAA4B,YAAap1H,EAAKk3G,UAAU7vF,YAAY,iBAAgC,cAAd1jB,GAC3Ft2B,KAAK+nJ,4BAA4B,aAAcp1H,EAAKk3G,UAAU7vF,YAAY,kBAAiC,eAAd1jB,GAE7F3D,EAAKuzF,mBACLlmH,KAAK+nJ,4BAA4B,SAAUp1H,EAAKk3G,UAAU7vF,YAAY,kBAEtEt4B,EAAO2W,gBAAkB1F,EAAK0F,gBAC9Br4B,KAAK+nJ,4BAA4B,SAAUp1H,EAAKk3G,UAAU7vF,YAAY,mBAGzE,CACD,IAAIhmB,EAAOrB,EAAKS,aACZm1H,EAAgB51H,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,2BACvDgkJ,EAAe,GACfC,EAASzoJ,KAAK+8B,SAAW,OAAuB0rH,OAChDb,EAAW5nJ,KAAK+8B,SAAW,OAAuB6qH,SACtD,GAAIA,EACA,IAAS5mJ,EAAI,EAAGA,EAAI2xB,EAAK2F,eAAe5V,QAAQ/hB,OAAQK,IACpDwnJ,EAAan8I,KAAKsmB,EAAK2F,eAAe5V,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAGlF,IAAStyB,EAAI,EAAGA,EAAIgzB,EAAKrzB,OAAQK,IAC7B,MAAKgzB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK+E,UAAaqd,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKqkB,cAAgBwyH,IAC3Fz0H,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKymB,gBAAkBuvH,GAD5D,CAIA,IAAII,EAAOr1H,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,uBAClDwjJ,EAAKr9I,aAAa,qBAAsBqpB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OACzE00H,EAAKr9I,aAAa,oBAAqBqpB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKinB,KACxE,IAAI8H,EAAOhO,EAAKpuB,cAAc,OAAQ,CAAEuG,UAAWkpB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK6a,WAAYjoB,UAAW,sBAG3G,GAFAwjJ,EAAKtjJ,YAAYi8B,GACjB3gC,KAAKioJ,gBAAgBvjJ,YAAYsjJ,GAC7BS,EAAQ,CACR,IAAIvxH,EAASl3B,KAAK0oJ,6BAA6B,SAC3Cj8I,EAAQyqB,EAAOlzB,QAAQgwB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OACxDwiC,EAASnjC,EAAKpuB,cAAc,SAAU,CAAE+G,GAAIqnB,EAAKvvB,QAAQkI,GAAK0oB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,MAAQ,eACvGL,EAAQs1H,EAAc/oD,YAC1BvsE,EAAMvuB,YAAYoxD,GAClBkyF,EAAKtjJ,YAAYuuB,GACjB,IAAIo7E,EAAS,IAAI,OAAO,CACpB5jG,SAAUzK,KAAK8gB,OAAOrW,SAAW,mBAA0BzK,KAAK8gB,OAAOrW,SAAW,oBAEtF4jG,EAAOxd,SAAS/6B,GAChB,IAAI6yF,OAAkB,EAChB,eAAkB3oJ,KAAK8gB,OAAOoV,aAAaxT,QAAQ/Q,SAASlF,EAAMmF,WAAY,QAChF+2I,EAAkG,cAA/E3oJ,KAAK8gB,OAAOoV,aAAaxT,QAAQ/Q,SAASlF,EAAMmF,WAAY,KAAK0kB,UAChFt2B,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,iBAAmBh6C,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,mBAE/F8b,EAAOhrD,UAAY2B,GAAS,EAAIk8I,EAAkB3oJ,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,YACpF8b,EAAOw4C,QAAU,SAAUnhG,GACvB9J,EAAMulJ,uBAAuBz7I,EAAE7M,SAGvC,GAAIsnJ,GAAYY,EAAaxkJ,QAAQgwB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,QAAU,EAAG,CAC/E,IAAIu1H,EAAUl2H,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,sCACjDskJ,EAAWn2H,EAAKpuB,cAAc,OAAQ,CAAEC,UAAW,mCACvDskJ,EAASn+I,aAAa,UAAWqpB,EAAKriB,SAAS3Q,EAAE4Q,WAAY,KAAKpD,MAClEq6I,EAAQnkJ,YAAYokJ,GACpBd,EAAKtjJ,YAAYmkJ,KAK7B,OADA,OAAa/8I,IAAI9L,KAAKioJ,gBAAiB,OAAQt4I,SAAW,WAAa,QAAS3P,KAAK+oJ,+BAAgC/oJ,MAC9GA,KAAKioJ,iBAGpBvB,EAAyBxmJ,UAAUwoJ,6BAA+B,SAAU14I,GAExE,IADA,IAAIknB,EAAS,GACJl2B,EAAI,EAAGA,EAAIhB,KAAK8gB,OAAOoV,aAAaxT,QAAQ/hB,OAAQK,IACzDk2B,EAAO7qB,KAAKrM,KAAK8gB,OAAOoV,aAAaxT,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK5B,IAElF,OAAOknB,GAEXwvH,EAAyBxmJ,UAAU0oJ,uBAAyB,SAAUtoJ,GAClE,GAAIA,EAAQ,CACR,IAAI0oJ,EAAY,gBAAa1oJ,EAAQ,sBACjCgzB,EAAQ01H,EAAUt+I,aAAa,sBAC9B1K,KAAK8gB,OAAOmoI,oBACbjpJ,KAAK4mJ,cAAgB,GACrB5mJ,KAAK2mJ,WAAa,GAClB3mJ,KAAKkpJ,eAAgB,EACrBlpJ,KAAKmpJ,iBAAiB7oJ,IAE1B,IAAI8oJ,EAAM9oJ,EAAOuoD,YACbwgG,EAAeD,IAAQppJ,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,YAAch6C,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,iBACvGovG,IAAQppJ,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,iBAAmBh6C,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,kBAC3Fh6C,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,YACxC1jB,EAAY+yH,IAAiBrpJ,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,iBAAmB,YAChFqvG,IAAiBrpJ,KAAK8gB,OAAO+oH,UAAU7vF,YAAY,kBAAoB,aAAe,OAC5F15C,EAAOwK,UAAYu+I,EACnBrpJ,KAAKspJ,cAAch2H,EAAOgD,KAGlCowH,EAAyBxmJ,UAAUipJ,iBAAmB,SAAU7oJ,GAE5D,IADA,IAAI2iD,EAAU,GAAGv1C,MAAMpK,KAAKtD,KAAKioJ,gBAAgBj0G,uBAAuB,oBAC/DhzC,EAAI,EAAGA,EAAIiiD,EAAQtiD,OAAQK,IAC5BiiD,EAAQtxC,SAAS3Q,EAAE4Q,WAAY,OAAStR,IACxC2iD,EAAQtxC,SAAS3Q,EAAE4Q,WAAY,KAAK9G,UAAY,SAI5D47I,EAAyBxmJ,UAAUopJ,cAAgB,SAAUh2H,EAAOgD,GAChE,IAAIY,EAASl3B,KAAKupJ,yBACd98I,EAAQyqB,EAAOlzB,QAAQsvB,GACvBtzB,KAAK8gB,OAAOmoI,mBAAqBx8I,GAAS,IAC1CzM,KAAK2mJ,WAAWj6I,OAAOD,EAAO,GAC9BzM,KAAK4mJ,cAAcl6I,OAAOD,EAAO,IAErCzM,KAAKkpJ,eAAgB,EACH,SAAd5yH,IACAt2B,KAAK2mJ,WAAWt6I,KAAKinB,GACrBtzB,KAAK4mJ,cAAcv6I,KAAK,CAAEinB,MAAOA,EAAOgD,UAAWA,MAG3DowH,EAAyBxmJ,UAAUqpJ,uBAAyB,WAExD,IADA,IAAIryH,EAAS,GACJl2B,EAAI,EAAGA,EAAIhB,KAAK2mJ,WAAWhmJ,OAAQK,IACxCk2B,EAAO7qB,KAAKrM,KAAK2mJ,WAAWh1I,SAAS3Q,EAAE4Q,WAAY,MAEvD,OAAOslB,GAEXwvH,EAAyBxmJ,UAAU6oJ,+BAAiC,SAAU57I,GAC1E,IAAIwlB,EAAO3yB,KAAK8gB,OACZxgB,EAAS6M,EAAE7M,OACf,GAAI,gBAAaA,EAAQ,kBAAoBN,KAAK+8B,SAAW,OAAuBsrH,YAAc,gBAAa/nJ,EAAQ,cAAe,CAClI,IAAIohB,EAAS1hB,KAAKwpJ,QAAUxpJ,KAAKwpJ,QAAUxpJ,KAAKypJ,YAC5C,gBAAanpJ,EAAQ,8BACrBqyB,EAAK+1G,eAAe,IACpB1oI,KAAK0pJ,qBAEA,gBAAappJ,EAAQ,2BAC1BqyB,EAAK+1G,eAAehnH,EAAO4R,OAC3BtzB,KAAK0pJ,qBAEA,gBAAappJ,EAAQ,yBAC1BqyB,EAAKu8G,YAAYxtH,EAAO4R,OACxBtzB,KAAK0pJ,qBAEA,gBAAappJ,EAAQ,2BAC1BqyB,EAAK68G,cAAc9tH,EAAO4R,OAC1BtzB,KAAK0pJ,qBAEA,gBAAappJ,EAAQ,6BAC1BqyB,EAAKqyG,WAAWtjH,EAAO4R,MAAO,aAC9BtzB,KAAK0pJ,qBAEA,gBAAappJ,EAAQ,8BAC1BqyB,EAAKqyG,WAAWtjH,EAAO4R,MAAO,cAC9BtzB,KAAK0pJ,qBAEA,gBAAappJ,EAAQ,0BAC1BqyB,EAAK2B,OAAO,QAAqC,CAAEyI,OAAQ,IAC3DpK,EAAK4iH,qCAEA,gBAAaj1I,EAAQ,2BAC1BqyB,EAAK2B,OAAO,QAAqC,CAAEyI,OAAQ,IAC3D/8B,KAAK2pJ,iBAAkB,EACvB3pJ,KAAK6mJ,gBAAiB,EAClBl0H,EAAKogF,cACLpgF,EAAKogF,aAAa0H,yBAAyBmvC,qBAAqBloI,IAGxEvU,EAAE+F,iBAEN,GAAIlT,KAAK+8B,SAAW,OAAuB6qH,UAGV,cAA7Bj1H,EAAK2F,eAAe9pB,KACpB,GAAIlO,EAAO4E,UAAUmB,SAAS,uBAAyB/F,EAAOo1C,cAAcxwC,UAAUmB,SAAS,sBAAuB,CAClH,IAAIitB,EAAQhzB,EAAOoK,aAAa,sBAIhC,GAHK4oB,IACDA,EAAQhzB,EAAOo1C,cAAchrC,aAAa,uBAE1C4oB,EAAO,CACP,IAAI8C,EAAMzD,EAAK+C,iBAAiBpC,GAChCtzB,KAAK2pJ,iBAAkB,EACvB3pJ,KAAK4pJ,qBAAqBxzH,SAG7B,GAAI91B,EAAO4E,UAAUmB,SAAS,gBAAkB/F,EAAOo1C,cAAcxwC,UAAUmB,SAAS,kBAAmB,CAC5G,IAAIwjJ,EAAS,gBAAavpJ,EAAQ,sBAClC,GAAIupJ,EAAQ,CACJv2H,EAAQu2H,EAAOn/I,aAAa,sBAC5B0rB,EAAMzD,EAAK+C,iBAAiBpC,IACR,SAApB8C,EAAIhY,OAAO5P,OAAqB4nB,EAAIhY,OAAO5P,MAAqC,SAA7BmkB,EAAK2F,eAAe9pB,QACvExO,KAAK8pJ,eAAgB,GAEzB9pJ,KAAK8gB,OAAOiyF,aAAaA,aAAag3C,kBAAkB3zH,GACxDp2B,KAAKgqJ,yBAAyB1pJ,MAY9ComJ,EAAyBxmJ,UAAU0pJ,qBAAuB,SAAUxzH,EAAK1U,GACrE,GAAK1hB,KAAK6mJ,gBAAkB7mJ,KAAK+8B,SAAW,OAAuB6qH,WAAa5nJ,KAAK2pJ,iBAChFjoI,GAAU1hB,KAAK+8B,SAAW,OAAuBsrH,UAClDroJ,KAAKwpJ,QAAU9nI,EACf1hB,KAAKiqJ,yBAAyB,KAAMvoI,OAEnC,CAUD,GATA1hB,KAAKypJ,YAAcrzH,EACnBp2B,KAAKkqJ,uBAAuB9zH,GACxBp2B,KAAK8gB,OAAO0+C,kBAAoBppC,IAChCp2B,KAAK8gB,OAAOiyF,aAAao3C,eAAe/zH,GACxCp2B,KAAK8gB,OAAOiyF,aAAaA,aAAa0nC,WAAWz6I,KAAK8gB,OAAOiyF,aAAaq3C,cAAch0H,OAAK7qB,KAE7FvL,KAAK+8B,SAAW,OAAuBorH,iBACvCnoJ,KAAK8gB,OAAOwT,OAAO,QAAyC,CAAEyI,OAAQ,SAEtE/8B,KAAK+8B,SAAW,OAAuB0rH,OAAQ,CAC/C,IAAIp0H,EAAO,CACP5lB,QAAQ,EAAOgpI,UAAWz3I,KAAKunJ,oBAAqB9tH,YAAa,8BAGrE,GADAz5B,KAAK8gB,OAAO7Y,QAAQ,OAAiCosB,GACjDA,EAAK5lB,OACL,OAGRzO,KAAKunJ,oBAAoBr3I,MAAK,GAC9BlQ,KAAKunJ,oBAAoBnkJ,QAAQ2D,MAAMonE,UAAY,OACnDnuE,KAAKqqJ,oBAAoBrqJ,KAAKunJ,oBAAoBnkJ,WAG1DsjJ,EAAyBxmJ,UAAUmqJ,oBAAsB,SAAUC,GAC/D,IAAIC,EAAQD,EAAUp+I,cAAc,aACpC,GAAIq+I,EAAO,CACP,IAAI3lF,EAAQ0lF,EAAUp+I,cAAc,yBAAyB9E,wBAAwB/B,OACrFklJ,EAAMxjJ,MAAMhC,IAAM6/D,EAAQ,OAGlC8hF,EAAyBxmJ,UAAU+pJ,yBAA2B,SAAU7zH,EAAK1U,GACzE,IAAIiR,EAAO3yB,KAAK8gB,OACZunI,EAAYroJ,KAAK+8B,SAAW,OAAuBsrH,UACvD,GAAIroJ,KAAK+8B,SAAW,OAAuB6qH,UAAyC,cAA7Bj1H,EAAK2F,eAAe9pB,KAA3E,CAGA,IAAIg8I,EAAUnC,EAAY,yBAA2B,GACjDoC,EAAWzqJ,KAAK8gB,OAAOvc,cAAc,MAAO,CAC5C+G,GAAIqnB,EAAKvvB,QAAQkI,IAAM+8I,EAAY,mBAAqB,gBACxD7jJ,UAAWxE,KAAK8gB,OAAOrW,SAAW+/I,EAC9B,yCAA2CxqJ,KAAK8gB,OAAOrW,SAAW+/I,EAAU,0CAEpFxqJ,KAAK8gB,OAAO1d,QAAQsB,YAAY+lJ,GAChCzqJ,KAAK0qJ,gBAAkB1qJ,KAAK2qJ,iBAAiBv0H,GAAK,EAAM,KAAM1U,GAC9D,IAAI2S,EAAO,CACP5lB,QAAQ,EAAOgpI,UAAWz3I,KAAK0qJ,gBAAiBjxH,YAAa,gCAEjEz5B,KAAK8gB,OAAO7Y,QAAQ,OAAiCosB,GACjDA,EAAK5lB,SAGTzO,KAAK0qJ,gBAAgB75D,SAAS45D,GAC9BzqJ,KAAK0qJ,gBAAgBx6I,MAAK,GAC1BlQ,KAAK0qJ,gBAAgBtnJ,QAAQ2D,MAAMonE,UAAY,UAEnDu4E,EAAyBxmJ,UAAUyqJ,iBAAmB,SAAUv0H,EAAKwnE,EAAgBtyF,EAAIoW,GACrF,IAAIve,EAAU,IAAI,OAAO,CACrBynJ,SAAS,EACTC,eAAe,EACfC,eAAe,EACflhG,OAAQ5pD,KAAK8gB,OAAO8oC,OACpBtpD,OAAQN,KAAK8gB,OAAOiqI,kBAAoB/qJ,KAAK8gB,OAAOiqI,kBAAoBn9I,SAAS6B,KACjFkH,SAAS,EACTlR,UAAWzF,KAAK8gB,OAAOrb,UACvBoF,QAAS7K,KAAKkoJ,wBAAwB9xH,EAAK1U,GAC3Chc,KAAM1F,KAAK+5I,WAAWn0I,KAAK5F,MAC3B43F,QAAS53F,KAAK85I,cAAcl0I,KAAK5F,MACjC6F,MAAO7F,KAAKgrJ,kBAAkBplJ,KAAK5F,MACnCsF,MAAO,OACPD,OAAQ,OACRq0I,kBAAmB,CAAE32I,OAAQ,QAC7B0H,SAAUzK,KAAK8gB,OAAOrW,SAAWzK,KAAK8gB,OAAOrW,SAAW,KAExDuvI,EAAmB,mBAEvB,GADA72I,EAAQ,GAAK62I,IAAoB,EAC7Bp8C,EAAgB,CAChBz6F,EAAQsoB,OAASzrB,KAAKirJ,uBAAuB70H,OAAK7qB,GAAW,GAC7D,IAAIi/I,EAAUxqJ,KAAK+8B,SAAW,OAAuBsrH,UAAY,sBAAwB,GACzFllJ,EAAQsH,SAAW+/I,EAAU,sBAG7BrnJ,EAAQsoB,OAASzrB,KAAKirJ,uBAAuB70H,GAC7CjzB,EAAQsH,SAA4C,aAAjCzK,KAAK8gB,OAAOgjF,kBAAmC9jG,KAAK+8B,SAAW,OAAuB6qH,SACnG,QAAUt8I,EAAK,2BAA6B,QAAUA,EAEhE,OAAOnI,GAEXujJ,EAAyBxmJ,UAAUgqJ,uBAAyB,SAAU9zH,GAClE,IAAIzD,EAAO3yB,KAAK8gB,OAChB,GAAI9gB,KAAK+8B,SAAW,OAAuB6qH,UAAyC,cAA7Bj1H,EAAK2F,eAAe9pB,KAA3E,CAGA,IAAIlD,EAAKtL,KAAK+8B,SAAW,OAAuB6qH,SAAW,SAAW,OACtEt8I,EAAKtL,KAAK+8B,SAAW,OAAuBorH,gBAAkB,gBAAkB78I,EAChF,IAAIm/I,EAAWzqJ,KAAK8gB,OAAOvc,cAAc,MAAO,CAC5C+G,GAAIqnB,EAAKvvB,QAAQkI,GAAK,aAAeA,EACrC9G,UAAWxE,KAAK8gB,OAAOrW,SACnB,QAAUa,EAAK,2BAA6BtL,KAAK8gB,OAAOrW,SAAW,QAAUa,EAAK,4BAE1FtL,KAAK8gB,OAAO1d,QAAQsB,YAAY+lJ,GAChCzqJ,KAAKunJ,oBAAsBvnJ,KAAK2qJ,iBAAiBv0H,GAAK,EAAO9qB,GAC7DtL,KAAKunJ,oBAAoB12D,SAAS45D,KAEtC/D,EAAyBxmJ,UAAU45I,cAAgB,WAC/C,eAAgB95I,KAAK8gB,SAEzB4lI,EAAyBxmJ,UAAU65I,WAAa,WAC5C,GAAI/5I,KAAK+8B,SAAW,OAAuB0rH,QAAUzoJ,KAAK8gB,OAAOmoI,kBAC7D,IAAK,IAAIjoJ,EAAI,EAAGA,EAAIhB,KAAK8gB,OAAOoV,aAAaxT,QAAQ/hB,OAAQK,IAAK,CAC9DhB,KAAK2mJ,WAAWt6I,KAAKrM,KAAK8gB,OAAOoV,aAAaxT,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAClF,IAAI43H,EAAYlrJ,KAAK8gB,OAAOoV,aAAaxT,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,MACzEkoC,EAAgBx7D,KAAK8gB,OAAOoV,aAAaxT,QAAQ/Q,SAAS3Q,EAAE4Q,WAAY,KAAK0kB,UACjFt2B,KAAK4mJ,cAAcv6I,KAAK,CAAEinB,MAAO43H,EAAW50H,UAAWklC,MAInEkrF,EAAyBxmJ,UAAU8qJ,kBAAoB,SAAU32H,GAG7D,GAFAr0B,KAAK8pJ,cAAgBz1H,EAAKjxB,UAAYixB,EAAKjxB,QAAQ8I,cAAc,0BAC1DmoB,EAAKjxB,QAAQ8B,UAAUmB,SAAS,kBACnCrG,KAAK+8B,SAAW,OAAuB6qH,UAOvC,GANIvzH,EAAKjxB,QAAQ8B,UAAUmB,SAAS,kBAChCrG,KAAK8gB,OAAOiyF,aAAaA,aAAao4C,sBAAsBnrJ,KAAKsnJ,mBAE5DjzH,EAAKjxB,QAAQ8B,UAAUmB,SAAS,sBACrCrG,KAAK0pJ,oBAE4B,eAAjC1pJ,KAAK8gB,OAAOgjF,kBAAqC9jG,KAAK8gB,OAAOq6C,eAAgB,CAC7En7D,KAAK8gB,OAAOwT,OAAO,QAAqC,CAAEyI,OAAQ,IAClE,IAAI61D,EAAShlF,SAAS1B,cAAc,gBAChC0mF,GACA,gBAAOA,SAId,GAAI5yF,KAAK+8B,SAAW,OAAuB0rH,OAC5CzoJ,KAAK8mJ,yBAEJ,GAAI9mJ,KAAK+8B,SAAW,OAAuBsrH,UAAW,CACvDroJ,KAAK0pJ,oBACD92D,EAAShlF,SAAS1B,cAAc,mBAChC0mF,GACA,gBAAOA,QAGV,GAAI5yF,KAAK+8B,SAAW,OAAuBorH,gBAAiB,CAC7DnoJ,KAAK8gB,OAAOwT,OAAO,QAAyC,CAAEyI,OAAQ,UAClE61D,EAAShlF,SAAS1B,cAAc,uBAChC0mF,GACA,gBAAOA,GAE0B,eAAjC5yF,KAAK8gB,OAAOgjF,kBAAqC9jG,KAAK8gB,OAAOq6C,gBAC7Dn7D,KAAK8gB,OAAOwT,OAAO,QAAqC,CAAEyI,OAAQ,IAEtE/8B,KAAK6mJ,gBAAiB,EACtB7mJ,KAAK8pJ,eAAgB,EAEzB9pJ,KAAK8gB,OAAOmb,IAAI,QAAwBj8B,KAAKorJ,aAEjD1E,EAAyBxmJ,UAAU8kI,WAAa,WAC5C,GAAKhlI,KAAKkpJ,cAAV,CAIIlpJ,KAAK4mJ,cAAcjmJ,QACnBX,KAAK8gB,OAAO7V,cAAc,CAAEirB,aAAc,CAAExT,QAAS,MAAQ,GAEjE,IAAK,IAAI1hB,EAAI,EAAGA,EAAIhB,KAAK4mJ,cAAcjmJ,OAAQK,IAC3ChB,KAAK8gB,OAAOkkH,WAAWhlI,KAAK4mJ,cAAcj1I,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,MAAOtzB,KAAK4mJ,cAAcj1I,SAAS3Q,EAAE4Q,WAAY,KAAK0kB,UAAWt2B,KAAK8gB,OAAOmoI,mBAElJjpJ,KAAK4mJ,cAAcjmJ,QACpBX,KAAK8gB,OAAOskH,eAEhBplI,KAAK8mJ,yBAZD9mJ,KAAK8mJ,qBAcbJ,EAAyBxmJ,UAAU4nJ,eAAiB,SAAUzzH,EAAM+B,GAChE,IACIpG,EADA2C,EAAO3yB,KAAK8gB,OAoBhB,OAlBI9gB,KAAK+8B,SAAW,OAAuBqlC,OACvCpyC,EAAQ2C,EAAKk3G,UAAU7vF,YAAY,iBAAmB3lB,EAAKg3H,gBAAgB,GAEtErrJ,KAAK+8B,SAAW,OAAuBwmC,MAC5CvzC,EAAQ2C,EAAKk3G,UAAU7vF,YAAY,gBAE9Bh6C,KAAK+8B,SAAW,OAAuB6qH,SAC5C53H,EAAQoG,EAAMA,EAAI3J,YAAc2J,EAAI9C,MAAQX,EAAKk3G,UAAU7vF,YAAY,gBAElEh6C,KAAK+8B,SAAW,OAAuB0rH,OAC5Cz4H,EAAQ2C,EAAKk3G,UAAU7vF,YAAY,QAE9Bh6C,KAAK+8B,SAAW,OAAuBsrH,UAC5Cr4H,EAAQ2C,EAAKk3G,UAAU7vF,YAAY,cAE9Bh6C,KAAK+8B,SAAW,OAAuBorH,kBAC5Cn4H,EAAQ2C,EAAKk3G,UAAU7vF,YAAY,kBAEhChqB,GAEX02H,EAAyBxmJ,UAAUorJ,cAAgB,SAAUvuH,GACzD,IAAI/sB,EAUJ,OATI+sB,IAAW,OAAuBwmC,OAASxmC,IAAW,OAAuBqlC,OAC7EpyD,EAAO,2BAEF+sB,IAAW,OAAuB6qH,SACvC53I,EAAO,mCAEF+sB,IAAW,OAAuBorH,kBACvCn4I,EAAO,4CAEJA,GAEX02I,EAAyBxmJ,UAAUqrJ,cAAgB,SAAUxuH,GACzD,IAAIvgB,EAQJ,OAPIugB,IAAW,OAAuBwmC,OAASxmC,IAAW,OAAuBqlC,OAC7E5lD,EAAO,OAEFugB,IAAW,OAAuB6qH,UAAY5nJ,KAAK+8B,SAAW,OAAuB0rH,QAC1F1rH,IAAW,OAAuBorH,iBAAmBnoJ,KAAK+8B,SAAW,OAAuBorH,kBAC5F3rI,EAAO,YAEJA,GAUXkqI,EAAyBxmJ,UAAU+qJ,uBAAyB,SAAU70H,EAAK/B,EAAMupE,GAC7E,IAAIv6F,EAAQrD,KACR2yB,EAAO3yB,KAAK8gB,OAChB6R,EAAKxJ,GAAG,QAAwBnpB,KAAKorJ,WAAYprJ,MACjD,IAAIsL,EAAKqnB,EAAKvvB,QAAQkI,GAAKtL,KAAKsrJ,cAActrJ,KAAK+8B,QAC/CtR,EAASkH,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,yBAChDgnJ,EAAW74H,EAAKpuB,cAAc,MAAO,CAAEC,UAAW,sBAAuB8G,GAAIA,IACjFkgJ,EAAS1gJ,UAAY9K,KAAK8nJ,eAAezzH,EAAM+B,GAC/C3K,EAAO/mB,YAAY8mJ,GACnB,IAAI/D,EAAU90H,EAAKpuB,cAAc,UAC5Bq5F,IACD59F,KAAKynJ,QAAU,IAAI,OAAO,CACtBh9I,SAAUzK,KAAK8gB,OAAOrW,SAClB,oCAA2CzK,KAAK8gB,OAAOrW,SAAW,qCAE1Eg9I,EAAQ38I,UAAY6nB,EAAKk3G,UAAU7vF,YAAYh6C,KAAKurJ,cAAcvrJ,KAAK+8B,SACvE/8B,KAAKynJ,QAAQ52D,SAAS42D,GAEtBA,EAAQn5C,QAAU,SAAUnhG,GACxB9J,EAAMooJ,6BAGd,IAAIhD,EAASzoJ,KAAK+8B,SAAW,OAAuB0rH,OAChDb,EAAW5nJ,KAAK+8B,SAAW,OAAuB6qH,SACtD,GAAIA,GAAYa,EAAQ,CACpB,IAAIiD,EAAOjD,EAAS,OAAS,SACzBkD,EAAWh5H,EAAKpuB,cAAc,UAKlC,GAJAvE,KAAK6nJ,eAAiB,IAAI,OAAO,CAC7Bp9I,SAAUzK,KAAK8gB,OAAOrW,SAAW,0BAA4BihJ,EAA5B,cAAwD1rJ,KAAK8gB,OAAOrW,SAC/F,0BAA4BihJ,EAAO,eAEzC9D,EAAU,CACV,IAAIjnH,EAAOhO,EAAKpuB,cAAc,OAAQ,CAAEC,UAAW,2CACnDmnJ,EAASjnJ,YAAYi8B,QAGrBgrH,EAAS7gJ,UAAY6nB,EAAKk3G,UAAU7vF,YAAY,SAEpDvuB,EAAO/mB,YAAYinJ,GACnB3rJ,KAAK6nJ,eAAeh3D,SAAS86D,GAC7BA,EAASr9C,QAAU,SAAUnhG,GACpB,eAAD,CAAcA,EAAE7M,OAAQ,mBACxB+C,EAAMyd,OAAOiyF,aAAa+yB,iBAC1BziI,EAAM2mJ,4BAGFpC,EACAvkJ,EAAMkpI,eAGNlpI,EAAM8lJ,mBACN9lJ,EAAMsjJ,WAAa,GACnBtjJ,EAAMujJ,cAAgB,GACtBvjJ,EAAM6lJ,eAAgB,IAIlCz9H,EAAO/mB,YAAYinJ,GAKvB,OAHK/tD,GACDnyE,EAAO/mB,YAAY+iJ,GAEhBh8H,GAEXi7H,EAAyBxmJ,UAAUqsI,YAAc,WAC7CvsI,KAAK8gB,OAAOiyF,aAAaA,aAAag3C,kBAAkB/pJ,KAAKypJ,aAC7DzpJ,KAAK8gB,OAAOiyF,aAAaA,aAAao4C,yBAE1CzE,EAAyBxmJ,UAAU0rJ,0BAA4B,WAC3D,IAAI/mE,EAAOj3E,SAASyd,eAAerrB,KAAK8gB,OAAO1d,QAAQkI,GAAK,oBAC5D,GAAIu5E,EAAM,CACN,gBAAOA,GACP,IAAI+N,EAAShlF,SAAS1B,cAAc,mBAChC0mF,GACA,gBAAOA,GAGf,IAAIi5D,EAAaj+I,SAAS1B,cAAc,uBACpC2/I,GACA,gBAAOA,IAGfnF,EAAyBxmJ,UAAUurJ,yBAA2B,WACtDzrJ,KAAK+8B,SAAW,OAAuBqlC,QAAUpiE,KAAK+8B,SAAW,OAAuBwmC,MACxFvjE,KAAK8gB,OAAO8a,UAEP57B,KAAK+8B,SAAW,OAAuB6qH,UAC5C5nJ,KAAK8gB,OAAOiyF,aAAaA,aAAa+4C,kBAAkB,CAAE11H,IAAKp2B,KAAKypJ,YAAa7rD,eAAgB59F,KAAKsnJ,oBACtGtnJ,KAAK4rJ,6BAEA5rJ,KAAK+8B,SAAW,OAAuB0rH,QAC5CzoJ,KAAKglI,aACLhlI,KAAK4rJ,6BAEA5rJ,KAAK+8B,SAAW,OAAuBorH,kBAC5CnoJ,KAAK8gB,OAAOwT,OAAO,QAAyC,CAAEyI,OAAQ,YACtE/8B,KAAK4rJ,4BACL5rJ,KAAK6mJ,gBAAiB,EACtB7mJ,KAAK8pJ,eAAgB,IAG7BpD,EAAyBxmJ,UAAU4mJ,kBAAoB,WACnD,GAAI9mJ,KAAKsnJ,kBAAT,CACI,IAAIyE,EAAgB/rJ,KAAKunJ,oBAAoBnkJ,QAAQ8I,cAAc,oBACnE,gBAAO6/I,QAGX/rJ,KAAK2pJ,iBAAkB,EACvB3pJ,KAAKsnJ,mBAAoB,EACzBtnJ,KAAKgsJ,6BAETtF,EAAyBxmJ,UAAU8rJ,0BAA4B,WAC3D,GAAKhsJ,KAAKunJ,oBAAV,CAGA,IAAI1iE,EAAOj3E,SAASyd,eAAerrB,KAAKunJ,oBAAoBnkJ,QAAQkI,IAChEtL,KAAKunJ,sBAAwBvnJ,KAAKunJ,oBAAoBv+H,aAAe67D,IACrE7kF,KAAKunJ,oBAAoB/0I,UACzB,gBAAOqyE,IAEX7kF,KAAK0pJ,oBACD1pJ,KAAK+8B,SAAW,OAAuB0rH,SACvCzoJ,KAAK4mJ,cAAgB,GACrB5mJ,KAAK2mJ,WAAa,GAClB3mJ,KAAKkpJ,eAAgB,KAG7BxC,EAAyBxmJ,UAAUwpJ,kBAAoB,WACnD,IAAK1pJ,KAAK8pJ,eAAiB9pJ,KAAK0qJ,gBAAiB,CAC7C,IAAIuB,EAAYr+I,SAASyd,eAAerrB,KAAK0qJ,gBAAgBtnJ,QAAQkI,IACjEtL,KAAK0qJ,kBAAoB1qJ,KAAK0qJ,gBAAgB1hI,aAAeijI,IAC7DjsJ,KAAK0qJ,gBAAgBl4I,UACrB,gBAAOy5I,IAGfjsJ,KAAK6mJ,gBAAiB,EACtB7mJ,KAAK8pJ,eAAgB,GAEzBpD,EAAyBxmJ,UAAU8pJ,yBAA2B,SAAU1pJ,GACpE,GAAIA,EACIA,EAAOo1C,cAAcxwC,UAAUmB,SAAS,kBACxC,gBAAO/F,EAAOo1C,eAGd,gBAAOp1C,QAKX,IADA,IAAIiqJ,EAAQvqJ,KAAKioJ,gBAAgBhiG,SACxBjlD,EAAI,EAAGA,EAAIupJ,EAAM5pJ,OAAQK,IAC9BV,EAASiqJ,EAAM54I,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,mBACrD5L,IACA,gBAAOA,GACPU,MAKhB0lJ,EAAyBxmJ,UAAUkrJ,WAAa,SAAUj+I,GACpC,KAAdA,EAAEqG,UAAoBxT,KAAK+8B,SAAW,OAAuB6qH,UAC1Dz6I,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAC3BrG,KAAK+8B,SAAW,OAAuBqlC,QAAUpiE,KAAK+8B,SAAW,OAAuBwmC,QAC5FvjE,KAAKyrJ,4BAGb/E,EAAyBxmJ,UAAUmnJ,aAAe,SAAUhzH,GAC/B,SAArBA,EAAKoF,aAA+C,WAArBpF,EAAKoF,aACpCz5B,KAAK8gB,OAAOmb,IAAI,QAAwBj8B,KAAKorJ,aAGrD1E,EAAyBxmJ,UAAU0xC,oBAAsB,WACjD5xC,KAAKioJ,iBACL,OAAa9iJ,OAAOnF,KAAKioJ,gBAAiB,OAAQt4I,SAAW,WAAa,QAAS3P,KAAK+oJ,gCAE5F,eAAuB/oJ,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,EAAMz7G,MAC5DA,KAAK8gB,OAAO8wB,oBAAoB,OAAuB5xC,KAAKonJ,qBAEzDV,EA/tBkC,I,kCCV7C,sFAAIrnJ,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAsBxCmsJ,EAA6B,SAAUrpJ,GAOvC,SAASqpJ,EAAY30I,GACjB,IAAIlU,EAAQR,EAAOS,KAAKtD,KAAMuX,IAAUvX,KAKxC,OAJAqD,EAAMD,QAAUC,EAAMkU,MAAMnU,QAC5BC,EAAMupB,UAAYrV,EAAMlH,QAAQuc,UAChCvpB,EAAMomB,QAAUlS,EAChBlU,EAAMspB,SAAWpV,EAAMlH,QAAQsc,SACxBtpB,EAyRX,OArSAhE,EAAU6sJ,EAAarpJ,GAcvBqpJ,EAAYhsJ,UAAU4qB,WAAa,SAAUxf,GACzC,OAAOsC,SAASyd,eAAe/f,IAQnC4gJ,EAAYhsJ,UAAUkrB,kBAAoB,SAAUF,GAChDlrB,KAAKouB,SAAWpuB,KAAKuX,MAAMoN,oBAC3B3kB,KAAKyrB,OAA0C,OAAhCzrB,KAAKypB,QAAQpZ,QAAQob,OAC9BzrB,KAAKypB,QAAQpZ,QAAc,OAAI,aAAe,iBAC7CrQ,KAAKypB,QAAQpZ,QAAc,OAClCrQ,KAAKutB,cAAgB,GACrB,IAAIpC,EAAavd,SAASyd,eAAerrB,KAAKuX,MAAMnU,QAAQkI,GAAK,YAC7D6gJ,EAAensJ,KAAKuX,MAAMnU,QAAQkI,GAAGtH,QAAQ,eAAiB,EAClE,OAAKknB,IAAcC,GAAcghI,EACtBnsJ,KAAKuE,gBAET,MAEX2nJ,EAAYhsJ,UAAUqE,cAAgB,WAClC,IAAI4mB,EAAavd,SAASrJ,cAAc,OAMxC,OALA4mB,EAAW7f,GAAKtL,KAAKoD,QAAQkI,GAAK,WAClC6f,EAAW3mB,UAAY,eACvB2mB,EAAWpkB,MAAMiqC,cAAgB,OACjC7lB,EAAWpkB,MAAMhD,SAAW,WAC5BonB,EAAWpkB,MAAM0tH,OAAS,IACnBtpG,GAEX+gI,EAAYhsJ,UAAUyZ,SAAW,SAAU2D,EAAMyO,EAASZ,EAAYrD,EAASskI,GAC3E,QAAI9uI,EAAKhG,OAAOgY,gBAERtvB,KAAK6rB,cAAcxf,KAAKiR,GAQ5Btd,KAAK4uB,gBACDzD,IAAevd,SAASyd,eAAeF,EAAW7f,MAC7CtL,KAAKuX,MAAMoD,WAIZ/M,SAASyd,eAAerrB,KAAKuX,MAAMoD,WAAWvX,QAAQkI,GAAK,sBAAsB5G,YAAYymB,GAH7Fvd,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,sBAAsB5G,YAAYymB,KAM7E,IAIf+gI,EAAYhsJ,UAAUmtB,gBAAkB,WAGpC,IAFA,IAAI9L,EAEKvgB,EAAI,EAAG+X,EAAM/Y,KAAKuqB,eAAe5pB,OAAQK,EAAI+X,EAAK/X,IACvDugB,EAAOvhB,KAAKuqB,eAAevpB,GACvBugB,EAAKjK,OAAO4J,aACRK,EAAKjK,OAAOX,SACZ3W,KAAKqsJ,eAAe9qI,EAAKjK,OAAQiK,EAAKjJ,MAAM7L,OAAO,GAIlD8U,EAAKjK,QAGtB40I,EAAYhsJ,UAAUmsJ,eAAiB,SAAU/0I,EAAQ0V,EAAYmnC,GACjE,IAAI/wD,EAAUpD,KAAK8qB,WAAW9qB,KAAKoD,QAAQkI,GAAK,WAAagM,EAAO7K,MAAQ,UAAYugB,GACpF8lB,EAAkB9yC,KAAKypB,QAAQ6iI,4BAC/BC,KAAoBz5G,GAAmBA,EAAgB0K,oBAAoB78C,OAAS,GACpFyC,KACMmpJ,GAAqBA,GAAqBnpJ,EAAQsH,aAAa,WACa,IAA3EtH,EAAQsH,aAAa,SAAS1G,QAAQ,gCACP,KAA9BhE,KAAKuX,MAAMi1I,gBAA0B,eAAkBxsJ,KAAKuX,MAAMi1I,gBAIlEppJ,EAAQuH,aAAa,WAAYwpD,GAA2C,gBAA9Bn0D,KAAKuX,MAAMi1I,eAAmCl1I,EAAOk8B,QAAU,EAAIl8B,EAAOk8B,SAAS5hC,YAHjIxO,EAAQuH,aAAa,OAASwpD,GAA2C,gBAA9Bn0D,KAAKuX,MAAMi1I,eAAmCxsJ,KAAKuX,MAAMi1I,eAA8C,KAA7Bl1I,EAAO6E,kBAA4B7E,EAAOE,OAAO,GAAI7B,MAAQ2B,EAAOE,OAAOwV,GAAYrX,OAAS2B,EAAOkE,UAOhOpY,EAAQuH,aAAa,UAAW2M,EAAOk8B,QAAQ5hC,cAI3Ds6I,EAAYhsJ,UAAUusJ,gBAAkB,WACpC,IAAK,IAAI5+I,EAAK,EAAGhK,EAAK7D,KAAK6rB,cAAehe,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC5D,IAAI0T,EAAO1d,EAAGgK,GACV0T,EAAKjK,OAAO4J,cAAyC,WAAzBK,EAAKjK,OAAOsB,UACxC5Y,KAAKqsJ,eAAe9qI,EAAKjK,OAAQiK,EAAKjJ,MAAM7L,OAAO,KAK/Dy/I,EAAYhsJ,UAAU0tB,cAAgB,SAAUrW,EAAOwU,EAAS4B,EAAU++H,EAAcp0I,EAAO6oE,EAAQ5rC,EAAQkG,EAAQkxG,EAAkB39H,EAAa49H,EAAeC,QACxI,IAArBF,IAA+BA,GAAmB,QAClC,IAAhB39H,IAA0BA,EAAc,WACtB,IAAlB49H,IAA4BA,EAAgB,MAChD,IAAIt1I,EAAStX,KAAK6rB,cAAc,GAAGvU,OAC/B8sD,EAAS7sD,EAAMy6B,eAAiBz6B,EAAMu1I,iBACtCv1I,EAAMw1I,0BACL3oF,GAAuB,OAAbz2C,GAIX5B,GACA/rB,KAAKgtJ,WAAa,IAAI,OAAW,CAC7Bx5G,QAASj8B,EAAMlH,QAAQmjC,QAAUj8B,EAAMlH,QAAQmjC,QAAiC,cAArBxzC,KAAKuX,MAAM2hC,OAA8C,kBAArBl5C,KAAKuX,MAAM2hC,MAA6B,EAAI,IAC3IztB,OAAQzrB,KAAKysB,WACb5hB,QAAS7K,KAAKwc,KACd4D,KAAM7I,EAAMlH,QAAQ+P,KACpBgF,OAAQ7N,EAAMlH,QAAQ+U,OACtBg9D,gBAAiB7qE,EAAMlH,QAAQ+xE,gBAC/Bz0D,SAAUA,EACV/O,OAAQ5e,KAAKypB,QAAQpZ,QAAQuO,OAC7BqL,UAAW0iI,EACXxrE,OAAQA,EACRQ,WAAyC,eAA7B3hF,KAAKuX,MAAMsD,cAAiC,IAAI,OAAc,EAAG,GAAK6xI,EAClFzuE,WAAYxiC,EACZ4lC,QAASrhF,KAAKitJ,cACdtgI,SAAUkgI,GAAkB7sJ,KAAK2sB,SACjCrP,KAAMsvI,EACN1zG,MAAO3hC,EAAM2hC,MACb3D,OAAQA,EACR3oB,UAAWrV,EAAMlH,QAAQuc,UACzBsgI,WAAa51I,EAAO4J,cAAgC,cAAhB5J,EAAO9I,MAAwB8J,GAASA,EAAMrS,EAAI,EACtFmoB,SAAUpuB,KAAKuX,MAAMoN,qBAAuBrN,EAAO4J,aACnDo9D,aAAct+E,KAAKwc,KAAK7b,OAAS,GAAKX,KAAKuX,MAAMoD,YAAiD,OAAlC3a,KAAKuX,MAAMlH,QAAQsd,SAAS3nB,GAAgD,OAAlChG,KAAKuX,MAAMlH,QAAQsd,SAAS1nB,EAAc,EAAI,EACxJ6nB,cAAevW,EAAMuW,cACrB9qB,SAAUhD,KAAKuX,MAAMlH,QAAQrN,SAC7B4uE,SAAU5xE,KAAKuX,MAAMyN,aACrBw8D,QAA4C,OAAlCxhF,KAAKuX,MAAMlH,QAAQsd,SAAS3nB,GAAgD,OAAlChG,KAAKuX,MAAMlH,QAAQsd,SAAS1nB,EAChF+9E,WAAYzsE,EAAMlH,QAAQ88I,gBAA4C,UAA1B51I,EAAMzC,gBAClD0rE,eAAgB,CAAExwE,KAAM,WAAY8Q,OAAQ9gB,KAAKuX,MAAMlH,SACvD20E,gBAAiBhlF,KAAKuX,MACtB0pE,UAAW1pE,EAAM9R,UACjBg5E,YAAa,QACbnsC,eAA0C,UAA1B/6B,EAAMzC,kBAAgCwC,EAAOZ,OAAO47B,eACpEo7C,cAAe,WACXtpB,EAAO/2C,kBACP+2C,EAAOqoF,kBACProF,EAAOgpF,oBAAoBp+H,IAE/Bq+H,kBAAmB,SAAUh5H,GACrBA,EAAKhkB,QAAQowE,WACbrc,EAAO3yC,QAAQ2yC,EAAO75C,mBAIlCvqB,KAAKgtJ,WAAWn8D,SAAS7wF,KAAK8qB,WAAW9qB,KAAKoD,QAAQkI,GAAK,cAGvDtL,KAAKgtJ,aACLhtJ,KAAKgtJ,WAAWr/H,SAAWA,EAC3B3tB,KAAKgtJ,WAAWniJ,QAAU7K,KAAKwc,KAC/Bxc,KAAKgtJ,WAAWvhI,OAASzrB,KAAKysB,WAC9BzsB,KAAKgtJ,WAAWz3G,OAASA,EACzBv1C,KAAKgtJ,WAAW3rE,QAAUrhF,KAAKitJ,cAC/BjtJ,KAAKgtJ,WAAW7rE,OAASA,EACzBnhF,KAAKgtJ,WAAW1vI,KAAOsvI,EACvB5sJ,KAAKgtJ,WAAWrgI,SAAW3sB,KAAK2sB,SAChC3sB,KAAKgtJ,WAAWvuE,YAAc,QAC9Bz+E,KAAKgtJ,WAAW/iI,UAAY0iI,EAC5B3sJ,KAAKgtJ,WAAWpgI,UAAYrV,EAAMlH,QAAQuc,UAC1C5sB,KAAKgtJ,WAAWE,WAAc51I,EAAO4J,cAAgC,cAAhB5J,EAAO9I,MAAwB8J,GAASA,EAAMrS,EAAI,EACvGjG,KAAKgtJ,WAAWrrE,WAA0C,eAA7B3hF,KAAKuX,MAAMsD,cAAiC,IAAI,OAAc,EAAG,GAAK6xI,EACnG1sJ,KAAKgtJ,WAAW1uE,aAAet+E,KAAKwc,KAAK7b,OAAS,GAAKX,KAAKuX,MAAMoD,YAAiD,OAAlC3a,KAAKuX,MAAMlH,QAAQsd,SAAS3nB,GAAgD,OAAlChG,KAAKuX,MAAMlH,QAAQsd,SAAS1nB,EAAc,EAAI,EACzKjG,KAAKgtJ,WAAW16G,eAA2C,UAA1B/6B,EAAMzC,kBAAgCwC,EAAOZ,OAAO47B,eACrFtyC,KAAKgtJ,WAAWjlJ,YAIpB/H,KAAKuX,MAAMpP,SACXnI,KAAKuX,MAAM7L,wBAvEX,gBAAc1L,KAAKuX,MAAMnU,QAAQkI,GAAK,aA0E9C4gJ,EAAYhsJ,UAAU+sJ,YAAc,WAEhC,IADA,IAAI7vI,EAAS,GACJvP,EAAK,EAAGhK,EAAK7D,KAAK6rB,cAAehe,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC5D,IAAIyP,EAAOzZ,EAAGgK,GACduP,EAAO/Q,KAAKrM,KAAKstJ,UAAUhwI,EAAMA,EAAKhG,SAE1C,OAAO8F,GAEX8uI,EAAYhsJ,UAAUotJ,UAAY,SAAUhwI,EAAMhG,GAC9C,OAAIA,EAAO4J,cAAiC,WAAhB5J,EAAO9I,MAAqC,SAAhB8I,EAAO9I,MAAmC,kBAAhB8I,EAAO9I,MAI7E8O,EAAKhF,MAAM3C,OAA8B,YAArB2H,EAAKhF,MAAM3C,MAAsB2H,EAAKhF,MAAM3C,MAClE2H,EAAKhF,MAAMkD,WACblE,EAAOZ,OAAO0J,MAAQ9I,EAAOkE,SAL1B8B,EAAKhF,MAAM3C,OAQ1Bu2I,EAAYhsJ,UAAUktJ,oBAAsB,SAAUp+H,GAC9CA,IACAhvB,KAAK6rB,cAAgB7rB,KAAK6rB,cAAc2B,OAAOwB,IAEnDhvB,KAAKuqB,eAAiB,eAAO,GAAIvqB,KAAK6rB,cAAe,MAAM,IAE/DqgI,EAAYhsJ,UAAUuxB,QAAU,SAAUnU,GACtC,IAAIuN,EAAa7qB,KAAKuX,MAAMyN,aAAehlB,KAAK8qB,WAAW9qB,KAAKoD,QAAQkI,GAAK,kBACzEtL,KAAK8qB,WAAW9qB,KAAKoD,QAAQkI,GAAK,gBAClC4f,EAAaL,GAAclZ,SAASkZ,EAAWngB,aAAa,WAAY,IAAM,EAC7EwgB,IACDlrB,KAAKyuB,OAAS,KACdzuB,KAAKuuB,OAAS,KACdvuB,KAAK6rB,cAAgB,GACrB7rB,KAAKqtB,kBACLrtB,KAAKwxB,wBAAwBlU,GAAM,GACnCtd,KAAKgtJ,WAAa,KAClBhtJ,KAAKypB,QAAQxhB,QAAQ,oBAAqB,MAMlDikJ,EAAYhsJ,UAAUsxB,wBAA0B,SAAUlU,EAAMmU,GAC5D,GAAIzxB,KAAKuX,MAAMuP,aACX,IAAK,IAAIjZ,EAAK,EAAG8hB,EAASrS,EAAMzP,EAAK8hB,EAAOhvB,OAAQkN,IAAM,CACtD,IAAI0T,EAAOoO,EAAO9hB,GAClB,gBAAc7N,KAAKoD,QAAQkI,GAAK,WAAaiW,EAAKjK,OAAO7K,MACrD,UAAY8U,EAAKjJ,MAAM7L,MAAQ,cACnCzM,KAAKuX,MAAMuP,aAAa0K,wBAAwBjQ,EAAKjK,OAAQiK,EAAKjJ,MAAOmZ,GAGjFzxB,KAAKuqB,eAAiB,IAkB1B2hI,EAAYhsJ,UAAUotB,WAAa,WAC/BttB,KAAKghF,aAAe,GACpB,IAAI59E,EAAUpD,KAAK8qB,WAAW9qB,KAAKoD,QAAQkI,GAAK,kBAChD,GAAIlI,GAAWA,EAAQ6nB,WAAWtqB,OAAS,EACvC,MAAOyC,EAAQ0/I,WAA2C,IAA9B1/I,EAAQ6nB,WAAWtqB,OAC3CyC,EAAQ2pD,YAAY3pD,EAAQ0/I,YAIxCoJ,EAAYhsJ,UAAU0uB,cAAgB,WAClC,gBAAU5uB,KAAKutJ,kBAQnBrB,EAAYhsJ,UAAUkqB,cAAgB,SAAUpnB,GAC5C,IAAIK,EAAQrD,KACR+lF,EAAiB/lF,KAAK8qB,WAAW9qB,KAAKoD,QAAQkI,GAAK,YACnDohB,EAAkBq5D,EAAiB/lF,KAAK8qB,WAAWi7D,EAAez6E,GAAK,mBAAqB,KACvEohB,GAAmBA,EAAgB89B,UAC5DxqD,KAAK4uB,gBACDm3D,GAAkB/lF,KAAKuqB,eAAe5pB,OAAS,IAC/CX,KAAKutJ,iBAAmBngJ,YAAW,WAC3B/J,EAAM2pJ,YACN3pJ,EAAM2pJ,WAAWv7H,YAEtBzuB,KAGJkpJ,EAtSqB,CAuS9B,S,qFCvTE,EAAkC,WAOlC,SAASsB,EAAiBx4H,GACtBh1B,KAAKg1B,YAAcA,EAqavB,OA7ZAw4H,EAAiBttJ,UAAUyT,OAAS,WAChC3T,KAAKytJ,aAAeztJ,KAAKg1B,YAAY5xB,QACrCpD,KAAK0tJ,yBACL1tJ,KAAK2tJ,sBACL3tJ,KAAK4T,cAOT45I,EAAiBttJ,UAAUoV,QAAU,WACjCtV,KAAKg1B,YAAY44H,mBACb5tJ,KAAK6tJ,MAAMltJ,QACXX,KAAK8tJ,kBAET9tJ,KAAK+tJ,uBACL/tJ,KAAKguJ,gBAQTR,EAAiBttJ,UAAUytJ,oBAAsB,WAC7C,IAAIM,EACAh5H,EAAWj1B,KAAKg1B,YAChB2uC,EAAM1uC,EAAS7xB,QAAQ8I,cAAc,uBACrCgiJ,EAAOtgJ,SAASugJ,yBACpBxqF,EAAI74D,UAAY,GAChB,IAAK,IAAI9J,EAAI,EAAGA,GAAKi0B,EAASL,UAAW5zB,IACrCitJ,EAAO,eAAc,IAAK,CACtBzpJ,UAAW,iDACXwK,MAAO,CAAE8zF,SAAU,KAAM,aAAc7tE,EAAS6kB,kBAAkB,QAAU94C,EAAIi0B,EAAS6kB,kBAAkB,MACnG7kB,EAASm5C,WAAan5C,EAAS6kB,kBAAkB,SAAU29B,KAAM,OAEzExiD,EAASN,cAAgB3zB,IACzB,eAAUitJ,EAAM,CAAC,gBAAiB,YAAa,CAAC,oBAChDA,EAAKtjJ,aAAa,eAAgB,SAEtCujJ,EAAKxpJ,YAAYupJ,GAErBtqF,EAAIj/D,YAAYwpJ,GAChBluJ,KAAK6tJ,MAAQ,GAAGngJ,MAAMpK,KAAKqgE,EAAI14C,aAQnCuiI,EAAiBttJ,UAAU0T,WAAa,WACpC,OAAa9H,IAAI9L,KAAKytJ,aAAc,QAASztJ,KAAKw9G,aAAcx9G,MAChE,OAAa8L,IAAI9L,KAAKytJ,aAAc,WAAYztJ,KAAKouJ,sBAAuBpuJ,OAQhFwtJ,EAAiBttJ,UAAUuU,aAAe,WACtC,OAAatP,OAAOnF,KAAKg1B,YAAY5xB,QAAS,QAASpD,KAAKw9G,cAC5D,OAAar4G,OAAOnF,KAAKg1B,YAAY5xB,QAAS,WAAYpD,KAAKouJ,wBASnEZ,EAAiBttJ,UAAUsS,QAAU,WACjCxS,KAAKyU,gBAET+4I,EAAiBttJ,UAAU6tJ,qBAAuB,WAI9C,IAHA,IAAI94H,EAAWj1B,KAAKg1B,YAChBq5H,EAAmBp5H,EAAS7xB,QAAQ8I,cAAc,uBAClD2hJ,EAAQQ,EAAiBvhG,iBAAiB,KACrC9rD,EAAI,EAAGA,EAAI6sJ,EAAMltJ,OAAQK,IAC1B6sJ,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKiiC,aAAa,eAAiBg6G,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKiiC,aAAa,UAC/Gg6G,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,aAAcsqB,EAAS6kB,kBAAkB,QAAU+zG,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,SAC3IuqB,EAAS6kB,kBAAkB,MAAQ7kB,EAASm5C,WAAan5C,EAAS6kB,kBAAkB,WAItG0zG,EAAiBttJ,UAAUwtJ,uBAAyB,WAChD1tJ,KAAKoD,QAAU,eAAc,MAAO,CAChCoB,UAAW,mBAAoBwK,MAAO,CAAE,KAAQ,gBAEpDhP,KAAKsuJ,iBAAiBtuJ,KAAKoD,SAC3BpD,KAAKuuJ,mBAAmBvuJ,KAAKoD,SAC7BpD,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,wBAC3DxE,KAAKwuJ,mBAAmBxuJ,KAAKoD,SAC7BpD,KAAKyuJ,gBAAgBzuJ,KAAKoD,SAC1BpD,KAAKg1B,YAAY5xB,QAAQsB,YAAY1E,KAAKoD,UAE9CoqJ,EAAiBttJ,UAAUouJ,iBAAmB,SAAUI,GACpD1uJ,KAAK0sF,MAAQ,eAAc,MAAO,CAC9BloF,UAAW,+BACXwK,MAAO,CACHghB,MAAOhwB,KAAKg1B,YAAY8kB,kBAAkB,oBAC1CgpD,SAAU,KAAM7zF,KAAM,YAG9BjP,KAAKuoE,KAAO,eAAc,MAAO,CAC7B/jE,UAAW,6BACXwK,MAAO,CACHghB,MAAOhwB,KAAKg1B,YAAY8kB,kBAAkB,uBAC1CgpD,SAAU,KAAM7zF,KAAM,YAG9B,eAAO,CAACjP,KAAK0sF,MAAO1sF,KAAKuoE,MAAOmmF,IAEpClB,EAAiBttJ,UAAUquJ,mBAAqB,SAAUG,GACtD,IAAIC,EAAY,eAAc,OAC9B3uJ,KAAK4uJ,GAAK,eAAc,IAAK,CACzBpqJ,UAAW,wBAAyBsG,UAAW,MAC/CkE,MAAO,CACHghB,MAAOhwB,KAAKg1B,YAAY8kB,kBAAkB,wBAC1C,aAAc95C,KAAKg1B,YAAY8kB,kBAAkB,wBACjDgpD,SAAU,KACVrrB,KAAM,OAGdk3E,EAAUjqJ,YAAY1E,KAAK4uJ,IAC3BF,EAAehqJ,YAAYiqJ,IAE/BnB,EAAiBttJ,UAAUsuJ,mBAAqB,SAAUE,GACtD,IAAIG,EAAY,eAAc,OAC9B7uJ,KAAK8uJ,GAAK,eAAc,IAAK,CACzBtqJ,UAAW,wBACXsG,UAAW,MAAOkE,MAAO,CACrBghB,MAAOhwB,KAAKg1B,YAAY8kB,kBAAkB,oBAC1C,aAAc95C,KAAKg1B,YAAY8kB,kBAAkB,oBACjDgpD,SAAU,KACVrrB,KAAM,OAGdo3E,EAAUnqJ,YAAY1E,KAAK8uJ,IAC3BJ,EAAehqJ,YAAYmqJ,IAE/BrB,EAAiBttJ,UAAUuuJ,gBAAkB,SAAUC,GACnD1uJ,KAAKkf,KAAO,eAAc,MAAO,CAC7B1a,UAAW,6BACXwK,MAAO,CACHghB,MAAOhwB,KAAKg1B,YAAY8kB,kBAAkB,mBAC1CgpD,SAAU,KAAM7zF,KAAM,YAG9BjP,KAAK2sF,KAAO,eAAc,MAAO,CAC7BnoF,UAAW,6BACXwK,MAAO,CACHghB,MAAOhwB,KAAKg1B,YAAY8kB,kBAAkB,mBAC1CgpD,SAAU,KAAM7zF,KAAM,YAG9B,eAAO,CAACjP,KAAKkf,KAAMlf,KAAK2sF,MAAO+hE,IAEnClB,EAAiBttJ,UAAUs9G,aAAe,SAAUrwG,GAChD,IAAI8nB,EAAWj1B,KAAKg1B,YAUpB,OATAh1B,KAAKM,OAAS6M,EAAE7M,OACZN,KAAKM,OAAO4E,UAAUmB,SAAS,kBAC/B8G,EAAE+F,iBAEN+hB,EAAS85H,eAAiB95H,EAASN,YAC9B30B,KAAKM,OAAO4E,UAAUmB,SAAS,cAAiB,eAAkBrG,KAAKM,OAAOoK,aAAa,YAC5FuqB,EAASN,YAAchjB,SAAS3R,KAAKM,OAAOoK,aAAa,SAAU,IACnEuqB,EAASltB,aAEN,GAEXylJ,EAAiBttJ,UAAUkuJ,sBAAwB,SAAUjhJ,GACzDnN,KAAKM,OAAS6M,EAAE7M,OACZN,KAAKM,OAAO4E,UAAUmB,SAAS,kBAAkC,IAAb8G,EAAE2oD,QACtD3oD,EAAE+F,kBAGVs6I,EAAiBttJ,UAAU4tJ,gBAAkB,WACzC,IACIkB,EACAC,EACApqB,EAHA5vG,EAAWj1B,KAAKg1B,YAIhBk6H,EAAWlvJ,KAAKytJ,aAAa3gG,iBAAiB,mFAClD73B,EAASN,YAAsC,IAAxBM,EAASm5C,WAAmB,EAAIn5C,EAASN,YAC5DM,EAASN,YAAcM,EAASm5C,YAAcn5C,EAASm5C,aACvDn5C,EAASN,YAAcM,EAASm5C,YAEpC4gF,EAAiBr9I,UAAUsjB,EAASN,YAAcM,EAASL,WAAWhjB,WAAY,IAC9EqjB,EAASN,YAAcM,EAASL,YAAc,GAAKo6H,EAAiB,IACpEA,GAAkC,GAEtC,IAAK,IAAIhuJ,EAAI,EAAGA,EAAIi0B,EAASL,UAAW5zB,IAAK,CACzC,GAAIi0B,EAASk6H,eAAgB,CACzB,IAAIC,EAAcpvJ,KAAKytJ,aAAavhJ,cAAc,YAC9CmjJ,EAAkBrvJ,KAAKM,OAASN,KAAKM,OAAS8uJ,GAA4B,KAC1EE,GAAc,EACdC,GAAc,EACdC,GAAe,EACfC,GAAc,EACdC,GAAiB,EACjBC,GAAY,EACZC,GAAY,EAChB,GAAIP,EAAiB,CACjB,IAAIQ,EAAcR,EAAgBnqJ,UAClC,GAAI2qJ,EAAYxpJ,SAAS,WACrB,QAAQ,GACJ,KAAKwpJ,EAAYxpJ,SAAS,UACtBipJ,GAAc,EACd,MACJ,KAAKO,EAAYxpJ,SAAS,UACtBkpJ,GAAc,EACd,MACJ,KAAKM,EAAYxpJ,SAAS,WACtBmpJ,GAAe,EACf,MACJ,KAAKK,EAAYxpJ,SAAS,UACtBopJ,GAAc,EACd,WAGP,GAAII,EAAYxpJ,SAAS,iBAC1B,QAAQ,GACJ,KAAKwpJ,EAAYxpJ,SAAS,QACtBspJ,GAAY,EACZ,MACJ,KAAKE,EAAYxpJ,SAAS,QACtBupJ,GAAY,EACZ,MACJ,QACIF,EAAiBG,EAAYxpJ,SAAS,iBACtC,OAIhB4oJ,EAAYQ,GAA+C,QAA/BzvJ,KAAKg1B,YAAYg3G,UAC7CkjB,EAAWlvJ,KAAKytJ,aAAa3gG,iBAAiB,mFAC9C,IAAIgjG,EAAkBlwJ,MAAM0hJ,KAAK4N,GAAU33H,MAAK,SAAUhW,GAAQ,OAAO5P,SAAS4P,EAAK7W,aAAa,SAAU,MAAQuqB,EAASN,eAG3HkwG,EADA2qB,GAA+C,SAA/BxvJ,KAAKg1B,YAAYg3G,UACxB,EAAIhrI,EAERyuJ,GAA8C,QAA/BzvJ,KAAKg1B,YAAYg3G,UAC3BgjB,EAAiB/5H,EAASL,UAAa,EAAI5zB,EAEhDuuJ,GAA8C,eAA/BvvJ,KAAKg1B,YAAYg3G,WAA8BsjB,GAA8C,cAA/BtvJ,KAAKg1B,YAAYg3G,UAC/F8jB,EACSn+I,SAASu9I,EAAS,GAAGxkJ,aAAa,SAAU,IAAM1J,EAEtDsuJ,GAA8C,cAA/BtvJ,KAAKg1B,YAAYg3G,UAC5Br6H,SAAS3R,KAAK4uJ,GAAGlkJ,aAAa,SAAU,IAAM1J,EAG9Ci0B,EAASN,YAAc3zB,EAG/B2uJ,GAAaC,EACT36H,EAASN,YAAc3zB,EAE3B0uJ,EACK/9I,SAASu9I,EAAS,GAAGxkJ,aAAa,SAAU,IAAM1J,EAGlDguJ,EAAiB/5H,EAASL,UAAa,EAAI5zB,OAIzD6jI,EAAUmqB,EAAiB/5H,EAASL,UAAa,EAAI5zB,EAErD6jI,GAAU5vG,EAASm5C,YACnBpuE,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,UACxDnF,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMC,QAAU,GACvDhH,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,QAASk6H,EAAOjzH,YACpE5R,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK9G,UAAamqB,EAAS86H,WAAiC96H,EAAS86H,WAAalrB,EAA1CA,EAAOjzH,WAC7EqjB,EAASN,cAAgBkwG,EACzB7kI,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,mBAGrD9L,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,qBAI5DnF,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK9G,UAAamqB,EAAS86H,WAAiC96H,EAAS86H,WAAalrB,EAA1CA,EAAOjzH,WACjF5R,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAK7K,MAAMC,QAAU,QAE3D,eAAUhH,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAM,GAAI,CAAC,gBAAiB,aACxE5R,KAAK6tJ,MAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,gBAE3D,eAAW5K,KAAK0sF,MAAO,CACnB,MAAS,IACT,MAAS1sF,KAAKg1B,YAAY8kB,kBAAkB,sBAEhD,eAAW95C,KAAKytJ,aAAavhJ,cAAc,aAAc,CACrD,MAAS,IACT,MAASlM,KAAKg1B,YAAY8kB,kBAAkB,sBAEhD,eAAW95C,KAAK2sF,KAAM,CAClB,MAAS13D,EAASm5C,WAAWx8D,WAC7B,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,qBAEhD,eAAW95C,KAAKytJ,aAAavhJ,cAAc,YAAa,CACpD,MAAS+oB,EAASm5C,WAAWx8D,WAC7B,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,qBAEhD,eAAW95C,KAAKuoE,KAAM,CAClB,OAAUtzC,EAASN,YAAc,GAAG/iB,WACpC,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,yBAEhD,eAAW95C,KAAKytJ,aAAavhJ,cAAc,YAAa,CACpD,OAAU+oB,EAASN,YAAc,GAAG/iB,WACpC,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,yBAEhD,eAAW95C,KAAKkf,KAAM,CAClB,OAAU+V,EAASN,YAAc,GAAG/iB,WACpC,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,qBAEhD,eAAW95C,KAAKytJ,aAAavhJ,cAAc,YAAa,CACpD,OAAU+oB,EAASN,YAAc,GAAG/iB,WACpC,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,qBAEhD,IAAIk2G,EAAWhwJ,KAAKg1B,YAAYm6H,gBAAkBD,EAASvuJ,OACrDsuJ,EACIt9I,SAASu9I,EAAS,GAAGxkJ,aAAa,SAAU,IAAMuqB,EAASg7H,YAC3Dt+I,SAASu9I,EAAS,GAAGxkJ,aAAa,SAAU,IAAMwkJ,EAASvuJ,OAC/DgR,SAAS3R,KAAK6tJ,MAAM,GAAGnjJ,aAAa,SAAU,IAAMuqB,EAASL,UACnE,eAAW50B,KAAK4uJ,GAAI,CAChB,MAAWoB,EAAU,EAAK,IAAMA,EAAQp+I,WACxC,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,wBAC5C,aAAc95C,KAAKg1B,YAAY8kB,kBAAkB,0BAErD,IAAIo2G,EAAWlwJ,KAAKg1B,YAAYm6H,gBAAkBD,EAASvuJ,OACrDgR,SAASu9I,EAASA,EAASvuJ,OAAS,GAAG+J,aAAa,SAAU,IAC9DiH,SAAS3R,KAAK6tJ,MAAM7tJ,KAAK6tJ,MAAMltJ,OAAS,GAAG+J,aAAa,SAAU,IACxE,eAAW1K,KAAK8uJ,GAAI,CAChB,OAAUoB,EAAU,GAAGt+I,WACvB,MAAS5R,KAAKg1B,YAAY8kB,kBAAkB,oBAC5C,aAAc95C,KAAKg1B,YAAY8kB,kBAAkB,sBAErD95C,KAAKM,YAASiL,GAElBiiJ,EAAiBttJ,UAAU8tJ,aAAe,WACtC,IAAI3qJ,EAAQrD,KAKZ,GAJAA,KAAKmwJ,yBACLnwJ,KAAKowJ,2BACLpwJ,KAAKqwJ,2BACLrwJ,KAAKswJ,wBACDtwJ,KAAK6tJ,MAAMltJ,OAAQ,CACnB,IAAI4vJ,EAAmBvwJ,KAAK6tJ,MAAM1tB,WAAU,SAAU8tB,GAAQ,OAAOA,EAAKvjJ,aAAa,WAAarH,EAAM2xB,YAAYL,YAAY/iB,cAC9H+iB,EAAe30B,KAAKg1B,YAAYm6H,iBAAwC,IAAtBoB,EAA2BA,GACzEvwJ,KAAKg1B,YAAYL,YAAc,GAAK30B,KAAKg1B,YAAYJ,UAC7D,eAAU50B,KAAK6tJ,MAAMl8I,SAASgjB,EAAY/iB,WAAY,KAAM,CAAC,gBAAiB,YAAa,IAC3F5R,KAAK6tJ,MAAMl8I,SAASgjB,EAAY/iB,WAAY,KAAKjH,aAAa,eAAgB,UAGtF6iJ,EAAiBttJ,UAAUiwJ,uBAAyB,WAChD,IAAIK,EAAY,CAAC,cAAe,mBAC5BC,EAAoB,CAAC,sBAAuB,aAC5CC,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1C3wJ,KAAKg1B,YAAYo5C,WAAa,GAAKpuE,KAAKg1B,YAAYL,YAAc,GAClE,eAAU30B,KAAKuoE,KAAMmoF,EAAUC,GAC/B,eAAU3wJ,KAAK0sF,MAAO8jE,EAAWC,GACjC,eAAUzwJ,KAAKytJ,aAAavhJ,cAAc,aAAcskJ,EAAWC,GACnE,eAAUzwJ,KAAKytJ,aAAavhJ,cAAc,YAAawkJ,EAAUC,KAGjE,eAAU3wJ,KAAKuoE,KAAMooF,EAAkBD,GACvC,eAAU1wJ,KAAK0sF,MAAO+jE,EAAmBD,GACzC,eAAUxwJ,KAAKytJ,aAAavhJ,cAAc,YAAaykJ,EAAkBD,GACzE,eAAU1wJ,KAAKytJ,aAAavhJ,cAAc,aAAcukJ,EAAmBD,KAGnFhD,EAAiBttJ,UAAUkwJ,yBAA2B,WAC9CpwJ,KAAKg1B,YAAYL,YAAc30B,KAAKg1B,YAAYJ,WAAc50B,KAAKg1B,YAAYm6H,gBAC5EnvJ,KAAK6tJ,MAAM1tB,WAAU,SAAU8tB,GAAQ,OAAoD,IAA7Ct8I,SAASs8I,EAAKvjJ,aAAa,SAAU,OACtF,eAAU1K,KAAK4uJ,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAGpF,eAAU5uJ,KAAK4uJ,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,qBAGtFpB,EAAiBttJ,UAAUmwJ,yBAA2B,WAClD,IAAIp7H,EAAWj1B,KAAKg1B,YAChBw7H,EAAYxwJ,KAAK6tJ,MAAM,GAAG/iJ,UAAU2Z,QAAQwQ,EAAS86H,WAAY,IACjEb,EAAWlvJ,KAAKytJ,aAAa3gG,iBAAiB,oFAC7C0jG,EAAU7vJ,SAAWX,KAAK6tJ,MAAMltJ,QAAWgR,SAAS6+I,EAAW,IAAMv7H,EAASL,UAAYK,EAASm5C,YAChGn5C,EAASk6H,gBAAkBvvJ,MAAM0hJ,KAAK4N,GAAU33H,MAAK,SAAUhW,GAAQ,OAAO5P,SAAS4P,EAAK7W,aAAa,SAAU,MAAQuqB,EAASm5C,cACxI,eAAUpuE,KAAK8uJ,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAG9E,eAAU9uJ,KAAK8uJ,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,eAG5FtB,EAAiBttJ,UAAUowJ,sBAAwB,WAC/C,IAAIM,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1CC,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1C97H,EAAWj1B,KAAKg1B,YAChBC,EAASN,cAAgBM,EAASm5C,YAA6C,IAA/Bn5C,EAAS4+E,mBACzD,eAAU7zG,KAAK2sF,KAAMkkE,EAAkBD,GACvC,eAAU5wJ,KAAKkf,KAAM6xI,EAAkBD,GACvC,eAAU9wJ,KAAKytJ,aAAavhJ,cAAc,YAAa2kJ,EAAkBD,GACzE,eAAU5wJ,KAAKytJ,aAAavhJ,cAAc,YAAa6kJ,EAAkBD,KAGzE,eAAU9wJ,KAAK2sF,KAAMikE,EAAUC,GAC/B,eAAU7wJ,KAAKkf,KAAM4xI,EAAUC,GAC/B,eAAU/wJ,KAAKytJ,aAAavhJ,cAAc,YAAa0kJ,EAAUC,GACjE,eAAU7wJ,KAAKytJ,aAAavhJ,cAAc,YAAa4kJ,EAAUC,KAGlEvD,EA7a0B,GCFjC,EAA8B,WAO9B,SAASwD,EAAah8H,GAClBh1B,KAAKg1B,YAAcA,EAiFvB,OAzEAg8H,EAAa9wJ,UAAUyT,OAAS,WAC5B,IAAIgwD,EAAM,eAAc,MAAO,CAAEn/D,UAAW,mBAC5CxE,KAAKixJ,cAAgB,eAAc,OAAQ,CAAEzsJ,UAAW,cAAe0K,OAAQ,oBAC/ElP,KAAKkxJ,iBAAmB,eAAc,OAAQ,CAAE1sJ,UAAW,iBAAkB0K,OAAQ,oBACrF,eAAO,CAAClP,KAAKixJ,cAAejxJ,KAAKkxJ,kBAAmBvtF,GACpD3jE,KAAKg1B,YAAY5xB,QAAQsB,YAAYi/D,GACrC3jE,KAAKsV,WAOT07I,EAAa9wJ,UAAUoV,QAAU,WAC7B,IAAI2f,EAAWj1B,KAAKg1B,YACpBh1B,KAAKixJ,cAAcpoG,YAAc7oD,KAAKwwB,OAAOyE,EAAS6kB,kBAAkB,mBAAoB,CAAgC,IAA/B7kB,EAAS4+E,kBAA0B,EACxH5+E,EAASN,YAAaM,EAASm5C,YAAc,EAAGn5C,EAAS4+E,mBAAqB,IAAM,IAC5F7zG,KAAKkxJ,iBAAiBroG,YAAc7oD,KAAKwwB,OAAOyE,EAAS6kB,kBAAkB7kB,EAAS4+E,mBAAqB,EAAI,gBAAkB,kBAAmB,CAAC5+E,EAAS4+E,mBAAqB,EAAG5+E,EAAS4+E,kBAAqB5+E,EAASJ,UAAYI,EAASN,YAAc,GAAM,EAAI,EACpQM,EAASJ,SAAWI,EAASN,YAAcM,EAAS4+E,kBAAoB5+E,EAAS4+E,kBAC7E5+E,EAASJ,SAAWI,EAASN,cACrC30B,KAAKixJ,cAAcv7G,cAAcxwC,UAAUC,OAAO,WAOtD6rJ,EAAa9wJ,UAAUixJ,YAAc,WAC7BnxJ,KAAKixJ,gBACLjxJ,KAAKixJ,cAAclqJ,MAAMC,QAAU,QAEnChH,KAAKkxJ,mBACLlxJ,KAAKkxJ,iBAAiBnqJ,MAAMC,QAAU,SAQ9CgqJ,EAAa9wJ,UAAUkxJ,YAAc,WAC5BpxJ,KAAKixJ,eACNjxJ,KAAK2T,SAET3T,KAAKixJ,cAAclqJ,MAAMC,QAAU,GACnChH,KAAKkxJ,iBAAiBnqJ,MAAMC,QAAU,IAS1CgqJ,EAAa9wJ,UAAUsS,QAAU,aAUjCw+I,EAAa9wJ,UAAUswB,OAAS,SAAUigB,EAAKpc,GAE3C,IADA,IAAIg9H,EACKrwJ,EAAI,EAAGA,EAAIqzB,EAAK1zB,OAAQK,IAE7BqwJ,EAAO,IAAI1gI,OAAO,MAAQ,EAAM,MAAO,MACvC8f,EAAMA,EAAIhsB,QAAQ4sI,EAAMh9H,EAAK1iB,SAAS3Q,EAAE4Q,WAAY,KAAKA,YAE7D,OAAO6+B,GAEJugH,EAzFsB,G,wBCJ7B3xJ,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAsB5D,EAAuB,SAAUiC,GAUjC,SAASyuJ,EAAMnuJ,EAASC,EAAS0d,GAC7B,IAAIzd,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KASnD,OAPAqD,EAAMkuJ,WAAY,EAClBluJ,EAAMswG,UAAW,EACjBtwG,EAAMmuJ,YAAc,gBACpBnuJ,EAAMouJ,iBAAkB,EAExBpuJ,EAAMo1H,UAAW,EACjBp1H,EAAMyd,OAASA,EACRzd,EA8jCX,OAjlCAhE,EAAUiyJ,EAAOzuJ,GA2BjByuJ,EAAMpxJ,UAAUwqD,gBAAkB,WAC9B,IAAIC,EAAU,GAad,OAZI3qD,KAAK0xJ,uBACL/mG,EAAQt+C,KAAK,CACT2S,OAAQ,kBACRqV,KAAM,CAACr0B,QAGXA,KAAK2xJ,kBACLhnG,EAAQt+C,KAAK,CACT2S,OAAQ,gBACRqV,KAAM,CAACr0B,QAGR2qD,GAQX2mG,EAAMpxJ,UAAU4T,UAAY,WAExB9T,KAAK4xJ,iBAAmB,CACpBC,gBAAiB,mBACjBC,eAAgB,cAChBC,cAAe,aACfC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,yBAClBC,qBAAsB,6BACtBC,cAAe,iBACfC,iBAAkB,QAClBC,gBAAiB,mBACjBC,eAAgB,cAChBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,yBAClBC,qBAAsB,6BACtBC,cAAe,iBACfC,iBAAkB,QAClBC,IAAK,MACLC,UAAW,kBACXC,YAAa,oBACbC,YAAa,yBACbC,KAAM,QACNC,GAAI,OACJC,MAAO,UAEXxzJ,KAAKyzJ,gBAAkB,IAAI,EAAiBzzJ,MAC5CA,KAAK0zJ,mBAAqB,IAAI,EAAa1zJ,OAO/CsxJ,EAAMpxJ,UAAUyT,OAAS,WACrB3T,KAAKoD,QAAQuH,aAAa,YAAa,SACvC3K,KAAKoD,QAAQuH,aAAa,WAAY,MACtC3K,KAAK2zJ,mBACD3zJ,KAAKyK,YAC+B,IAAhCzK,KAAKyK,SAASzG,QAAQ,KACtB,eAAS,CAAChE,KAAKoD,SAAUpD,KAAKyK,SAASxG,MAAM,MAG7C,eAAS,CAACjE,KAAKoD,SAAU,CAACpD,KAAKyK,YAGlCzK,KAAKuxJ,WACNvxJ,KAAKoD,QAAQuH,aAAa,WAAY,KAEtC3K,KAAK2sB,SACD3sB,KAAK4zJ,mBACL5zJ,KAAKmpB,GAAGnpB,KAAKwxJ,YAAaxxJ,KAAKslH,cAAetlH,MAC9CA,KAAKs0B,OAAOt0B,KAAKwxJ,YAAa,KAG9BxxJ,KAAKslH,iBAITtlH,KAAKy5H,YACLz5H,KAAK6zG,kBAAoB7zG,KAAK6zG,mBAAqB,EACnD7zG,KAAK6zJ,8BACL7zJ,KAAKyzJ,gBAAgB9/I,SACjB3T,KAAK8zJ,oBACL9zJ,KAAK0zJ,mBAAmB//I,SAE5B3T,KAAK+zJ,6BACD/zJ,KAAK2xJ,kBAAoB3xJ,KAAKg0J,qBAC9Bh0J,KAAKg0J,oBAAoBrgJ,SAE7B3T,KAAKi0J,eACDj0J,KAAK0xJ,uBAAyB1xJ,KAAKk0J,uBACnCl0J,KAAKk0J,sBAAsBvgJ,SAE/B3T,KAAKsV,UACLtV,KAAKiI,QAAQ,UAAW,CAAE,YAAejI,KAAK20B,YAAa,kBAAqB30B,KAAK6zG,qBAEzF7zG,KAAK4T,aACL5T,KAAKyyH,eAQT6+B,EAAMpxJ,UAAU6U,eAAiB,WAC7B,IAAI8sC,EAAY,CAAC,cAAe,YAChC,OAAO7hD,KAAKgV,aAAa6sC,IAQ7ByvG,EAAMpxJ,UAAUsS,QAAU,WAClBxS,KAAKgpB,cAGLhpB,KAAK4zJ,oBACL5zJ,KAAKi8B,IAAIj8B,KAAKwxJ,YAAaxxJ,KAAKslH,eAC3BtlH,KAAKuxJ,WACNvxJ,KAAKs3G,gBAAgB,CAAC,cAG9Bt3G,KAAKq3H,iBACLr3H,KAAKyU,eACL5R,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC9BA,KAAKyzJ,gBAAgBjhJ,UACrBxS,KAAK0zJ,mBAAmBlhJ,UACnBxS,KAAK4zJ,oBACN5zJ,KAAKoD,QAAQ0H,UAAY,MAUjCwmJ,EAAMpxJ,UAAUo3G,gBAAkB,SAAU+4B,EAAe5jI,GACvDzM,KAAKqI,cAAcgoI,EAAe5jI,IAQtC6kJ,EAAMpxJ,UAAU4U,cAAgB,WAC5B,MAAO,SAUXw8I,EAAMpxJ,UAAU+U,kBAAoB,SAAUC,EAASC,GACnD,IAAInV,KAAKgpB,YAGT,GAAK9T,EAAQ2f,WAAa70B,KAAK85C,kBAAkB,QAAW3kC,EAAQ0f,WAAa70B,KAAK6zG,kBAAtF,CAII3+F,EAAQ0f,YAAczf,EAAQyf,YAC9B50B,KAAKyzJ,gBAAgB9F,sBACrB3tJ,KAAKyzJ,gBAAgBn+I,WAEzB,IAAK,IAAIzH,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,cACGrV,KAAKm0J,cAAcj/I,EAAQyf,YAAaxf,EAAQwf,cAChD30B,KAAKo0J,mBAAmBl/I,EAASC,GAErC,MACJ,IAAK,WACL,IAAK,oBACL,IAAK,aACGnV,KAAK2xJ,kBAAoB3xJ,KAAKg0J,sBAC1B7+I,EAAQ0f,WAAa3f,EAAQ2f,WAC7B70B,KAAK20B,YAAc,GAEvB30B,KAAKg0J,oBAAoBK,iBAAiB,QAASr0J,KAAK60B,WAExD3f,EAAQ2f,WAAa1f,EAAQ0f,UAC7B70B,KAAK60B,SAAW3f,EAAQ2f,SACxB70B,KAAKo0J,mBAAmBl/I,EAASC,GAC7BnV,KAAKy4H,UAAYz4H,KAAKuxJ,WACtBvxJ,KAAK8gB,OACA7V,cAAc,CAAEypB,aAAc,CAAEG,SAAU1f,EAAQ0f,YAAc,IAIzE70B,KAAKsV,UAET,MACJ,IAAK,YACGtV,KAAK2xJ,kBAAoB3xJ,KAAKg0J,sBAC9Bh0J,KAAKg0J,oBAAoBxhJ,UACzBxS,KAAKg0J,oBAAoBrgJ,UAE7B3T,KAAKsV,UACL,MACJ,IAAK,WACDtV,KAAKu8D,WAAav8D,KAAKs0J,QAAQt0J,KAAK2sB,UACpC3sB,KAAKsV,UACL,MACJ,IAAK,SACDtV,KAAK2zJ,mBACL3zJ,KAAKsV,UACL,MACJ,IAAK,wBACGtV,KAAK0xJ,uBAAyB1xJ,KAAKk0J,uBACnCl0J,KAAKk0J,sBAAsBvgJ,SAE/B,MACJ,IAAK,kBACG3T,KAAKk0J,uBACLl0J,KAAKk0J,sBAAsB5+I,UAE/B,MACJ,IAAK,YACDtV,KAAKy5H,YACL,MACJ,IAAK,qBACGz5H,KAAK8zJ,mBACL9zJ,KAAK0zJ,mBAAmBtC,cAGxBpxJ,KAAK0zJ,mBAAmBvC,cAE5B,OAGZnxJ,KAAKu0J,mBA1EDv0J,KAAK60B,SAAW70B,KAAK6zG,mBA4E7By9C,EAAMpxJ,UAAU0T,WAAa,WACpB5T,KAAKuxJ,YACN,OAAazlJ,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAK8rI,gBAAiB9rI,MAChE,OAAa8L,IAAI8B,SAAS6B,KAAM,UAAWzP,KAAKu9G,eAAgBv9G,OAEpE,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKw0J,UAAWx0J,MAC1D,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAKy0J,WAAYz0J,MAE5D,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAKu0J,YAAav0J,MAErD,OAAa8L,IAAIvF,OAAQ,OAAQvG,KAAKu0J,YAAav0J,OAEvDsxJ,EAAMpxJ,UAAUuU,aAAe,WACtBzU,KAAKuxJ,YACN,OAAapsJ,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAK8rI,iBAClD,OAAa3mI,OAAOyI,SAAS6B,KAAM,UAAWzP,KAAKu9G,iBAEvD,OAAap4G,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKw0J,WAClD,OAAarvJ,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAKy0J,YAEnD,OAAatvJ,OAAOoB,OAAQ,SAAUvG,KAAKu0J,aAE3C,OAAapvJ,OAAOoB,OAAQ,OAAQvG,KAAKu0J,cAE7CjD,EAAMpxJ,UAAUs0J,UAAY,SAAUrnJ,GAClC,IAAIunJ,EAAyB10J,KAAK20J,4BAClC,GAAI,eAAkBD,GAAyB,CAC3C,IAAIp0J,EAAS6M,EAAE7M,OACXs0J,EAAe50J,KAAK60J,kBAIxB,GAHK70J,KAAKuxJ,YACNvxJ,KAAKoD,QAAQoqG,UAAY,GAEzBltG,IAAWN,KAAKoD,UAAYpD,KAAKuxJ,UAAW,CAC5C,IAAIuD,EAAyB90J,KAAK+0J,0BAA0B/0J,KAAKoD,QAAS,IAE1E,YADApD,KAAKg1J,SAASF,EAAuB,IAAI,GAG7C,GAAIx0J,IAAWN,KAAKoD,QAEhB,YADApD,KAAKoD,QAAQoqG,SAAW,GAGxBltG,IAAWs0J,GAAiBt0J,EAAO4E,UAAUmB,SAAS,cACtDrG,KAAKg1J,SAAS10J,GAAQ,KAKlCgxJ,EAAMpxJ,UAAUu0J,WAAa,SAAUtnJ,GACnC,IAAI8nJ,EAAiBj1J,KAAKk1J,oBACtBN,EAAe50J,KAAK60J,kBACnB,eAAkBI,IACnBj1J,KAAKo8F,YAAY64D,GAAgB,GAEjCj1J,KAAK0zG,WAAakhD,GAAgBA,EAAa1vJ,UAAUmB,SAAS,kBAClErG,KAAKo8F,YAAYw4D,GAAc,GAEnC50J,KAAKm1J,iCACAn1J,KAAKuxJ,YACNvxJ,KAAKoD,QAAQoqG,SAAW,GAExBxtG,KAAKuxJ,YACLvxJ,KAAKoD,QAAQoqG,UAAY,IAGjC8jD,EAAMpxJ,UAAUq9G,eAAiB,SAAUpwG,GACvC,GAAIA,EAAE25C,QACgB,KAAd35C,EAAEqG,QAAgB,CAClB,IAAIshJ,EAAyB90J,KAAK+0J,0BAA0B/0J,KAAKoD,QAAS,IACtE0xJ,EAAuBn0J,OAAS,GAChCm0J,EAAuB,GAAGjuG,UAK1CyqG,EAAMpxJ,UAAU4rI,gBAAkB,SAAU3+H,GACxC,IAAIigI,EAAW,eAAOjgI,EAAG,CAAEsB,QAAQ,IACnCzO,KAAKs0B,OAAO,QAAmB84G,IACP,IAApBA,EAAS3+H,QACTtB,EAAEkgI,4BAGVikB,EAAMpxJ,UAAUuyH,YAAc,WACtBzyH,KAAKgpB,aAGJhpB,KAAKuxJ,WACNvxJ,KAAKmpB,GAAG,QAAmBnpB,KAAKo1J,WAAYp1J,OAGpDsxJ,EAAMpxJ,UAAUm3H,eAAiB,WACzBr3H,KAAKgpB,aAGJhpB,KAAKuxJ,WACNvxJ,KAAKi8B,IAAI,QAAmBj8B,KAAKo1J,aAGzC9D,EAAMpxJ,UAAUk1J,WAAa,SAAUjoJ,GAC9BnN,KAAKuxJ,YACFvxJ,KAAKq1J,qBACLr1J,KAAKs1J,iBAAiBnoJ,IAGtBA,EAAE+F,iBACFlT,KAAKu1J,mBAOjBjE,EAAMpxJ,UAAUm1J,mBAAqB,WACjC,QAAOr1J,KAAK20J,6BAKhBrD,EAAMpxJ,UAAUs1J,uBAAyB,WACrCx1J,KAAKoD,QAAQyjD,SAKjByqG,EAAMpxJ,UAAUq1J,cAAgB,WAC5B,IAAIT,EAAyB90J,KAAK+0J,0BAA0B/0J,KAAKoD,QAAS,IACtE0xJ,EAAuBn0J,OAAS,GAChCm0J,EAAuB,GAAGjuG,SAGlCyqG,EAAMpxJ,UAAUu1J,8BAAgC,WAC5C,IAAIC,EAAoB11J,KAAK21J,mBACzBD,GACAA,EAAkB7uG,SAG1ByqG,EAAMpxJ,UAAUi1J,+BAAiC,WAC7C,IAAIL,EAAyB90J,KAAK+0J,0BAA0B/0J,KAAKoD,QAAS,IACtEwxJ,EAAe50J,KAAK60J,kBACpB70J,KAAK0zG,WAAakhD,IAAiB,eAAkBA,EAAagB,cAClEhB,EAAapnD,SAAW,EAEnBsnD,EAAuBn0J,OAAS,IACrCm0J,EAAuBA,EAAuBn0J,OAAS,GAAG6sG,SAAW,IAO7E8jD,EAAMpxJ,UAAUo1J,iBAAmB,SAAUnoJ,GACzCnN,KAAKgsI,UAAY7+H,EAAE5M,IACf4M,EAAEmrI,UAA0B,IAAdnrI,EAAEqG,QAChBxT,KAAK61J,sBAAsB1oJ,GAER,IAAdA,EAAEqG,QACPxT,KAAK81J,iBAAiB3oJ,GAEH,KAAdA,EAAEqG,SAAgC,KAAdrG,EAAEqG,QAC3BxT,KAAK+1J,6BAA6B5oJ,GAEf,KAAdA,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAAgC,KAAdrG,EAAEqG,SAAgC,KAAdrG,EAAEqG,SACnExT,KAAKg2J,oBAAoB7oJ,GAE7BnN,KAAKgsI,UAAY,IAErBslB,EAAMpxJ,UAAUy0J,0BAA4B,WAGxC,IAFA,IAAID,EACAuB,EAAmBj2J,KAAKoD,QAAQ0pD,iBAAiB,mCAC5C9rD,EAAI,EAAGA,EAAIi1J,EAAiBt1J,OAAQK,IAAK,CAC9C,IAAIoC,EAAU6yJ,EAAiBtkJ,SAAS3Q,EAAE4Q,WAAY,KACtD,GAAIxO,IAAYA,EAAQ8B,UAAUmB,SAAS,cAAgBjD,EAAQ8B,UAAUmB,SAAS,kBAAmB,CACrGquJ,EAAyBtxJ,EACzB,OAGR,OAAOsxJ,GAEXpD,EAAMpxJ,UAAU41J,iBAAmB,SAAU3oJ,GACzC,IAAI+oJ,EAAwBl2J,KAAK20J,4BAC7BG,EAAyB90J,KAAK+0J,0BAA0B/0J,KAAKoD,QAAS,IACtEwxJ,EAAe50J,KAAK60J,kBACxB,GAAIC,EAAuBn0J,OAAS,EAChC,GAAIX,KAAK0zG,WAAakhD,GAAgBsB,IAA0BpB,EAAuBA,EAAuBn0J,OAAS,GACnHi0J,EAAapnD,SAAW,OAGxB,IAAK,IAAIxsG,EAAI,EAAGA,EAAI8zJ,EAAuBn0J,OAAQK,IAC/C,GAAIk1J,IAA0BpB,EAAuBnjJ,SAAS3Q,EAAE4Q,WAAY,KAAM,CAC9E,IAAIukJ,EAAkBn1J,EAAI,EACtBm1J,EAAkBrB,EAAuBn0J,SACzCwM,EAAE+F,iBACF4hJ,EAAuBnjJ,SAASwkJ,EAAgBvkJ,WAAY,KAAKi1C,SAErE,QAMpByqG,EAAMpxJ,UAAU21J,sBAAwB,SAAU1oJ,GAC9C,IAAI+oJ,EAAwBl2J,KAAK20J,4BAC7BG,EAAyB90J,KAAK+0J,0BAA0B/0J,KAAKoD,QAAS,IACtEwxJ,EAAe50J,KAAK60J,kBACxB,GAAI70J,KAAK0zG,WAAakhD,GAAgBA,EAAa1vJ,UAAUmB,SAAS,iBAClEuuJ,EAAapnD,UAAY,EACzBxtG,KAAKg1J,SAASF,EAAuBA,EAAuBn0J,OAAS,IAAI,QAExE,GAAIm0J,EAAuBn0J,OAAS,EACrC,IAAK,IAAIK,EAAI,EAAGA,EAAI8zJ,EAAuBn0J,OAAQK,IAC/C,GAAIk1J,IAA0BpB,EAAuBnjJ,SAAS3Q,EAAE4Q,WAAY,KAAM,CAC9E,IAAIwkJ,EAAkBp1J,EAAI,EAC1B,GAAIo1J,GAAmB,EACnBjpJ,EAAE+F,iBACF4hJ,EAAuBnjJ,SAASykJ,EAAgBxkJ,WAAY,KAAKi1C,aAEhE,GAAI7mD,KAAKuxJ,UAAW,CACrB,IAAI3uI,EAAO5iB,KAAK8gB,OAAO+oF,UACnBwsD,EAAUzzI,EAAKA,EAAKjiB,OAAS,GAC7B21J,EAAWD,EAAQvT,UACvB31I,EAAE+F,iBACFojJ,EAASzvG,QACT7mD,KAAKyxJ,iBAAkB,EAE3B,QAQhBH,EAAMpxJ,UAAUq2J,qBAAuB,WACnC,QAAIv2J,KAAKyxJ,kBACLzxJ,KAAKyxJ,iBAAkB,GAChB,IAKfH,EAAMpxJ,UAAU61J,6BAA+B,SAAU5oJ,GACrD,IAAI+oJ,EAAwBl2J,KAAKk1J,oBACjC,GAAIgB,EAAuB,CACvBl2J,KAAK4kI,SAASjzH,SAASukJ,EAAsBxrJ,aAAa,SAAU,KACpE,IAAIgrJ,EAAoB11J,KAAK21J,mBACzBa,EAAgBx2J,KAAKy2J,SAASP,GAC9BQ,EAAe12J,KAAK22J,kBAAkBH,GACnB,YAAlBA,GAAiD,WAAlBA,GAAgD,WAAlBA,GACzC,WAAlBA,GAAgD,SAAlBA,GAA8C,SAAlBA,IAC1DE,GAAiBA,EAAaxxJ,UAAUmB,SAAS,aAG/CrG,KAAK42J,yBAAyBV,GACnCl2J,KAAK62J,0BAA0BX,GAG3BR,GACAA,EAAkB7uG,QAPtB6vG,EAAa7vG,UAYzByqG,EAAMpxJ,UAAU81J,oBAAsB,SAAU7oJ,GAC5C,IAAI2pJ,EAA4B,KAAd3pJ,EAAEqG,QAAiB,UAA0B,KAAdrG,EAAEqG,QAAiB,UAChD,KAAdrG,EAAEqG,QAAiB,UAA0B,KAAdrG,EAAEqG,QAAiB,WAAa,GACjEujJ,EAAa/2J,KAAKoD,QAAQ8I,cAAc4qJ,GACxCZ,EAAwBl2J,KAAKk1J,oBACjC,IAAK,eAAkB6B,IAAeA,EAAWljH,aAAa,WACtDj2B,MAAMjM,SAASolJ,EAAWrsJ,aAAa,SAAU,KAAM,CAC3D1K,KAAK4kI,SAASjzH,SAASolJ,EAAWrsJ,aAAa,SAAU,KACzD,IAAIgrJ,EAAoB11J,KAAK21J,mBACzB31J,KAAK42J,yBAAyBV,GAC9Bl2J,KAAK62J,0BAA0BX,GAG3BR,GACAA,EAAkB7uG,UAKlCyqG,EAAMpxJ,UAAU02J,yBAA2B,SAAUxzJ,GACjD,IAAIozJ,EAAgBx2J,KAAKy2J,SAASrzJ,GAClC,MAAyB,aAAlBozJ,GAAkD,YAAlBA,GAAiD,YAAlBA,GAC7C,YAAlBA,GAEXlF,EAAMpxJ,UAAU22J,0BAA4B,SAAUzzJ,GAClD,IAAIozJ,EAAgBx2J,KAAKy2J,SAASrzJ,GAC9BszJ,EAAe12J,KAAK22J,kBAAkBH,GAC1C,GAAIE,GAAgBA,EAAaxxJ,UAAUmB,SAAS,aAChD,GAAsB,YAAlBmwJ,GAAiD,YAAlBA,EAA6B,CAC5D,IAAIQ,EAAQh3J,KAAKoD,QAAQ8I,cAAc,YACvC8qJ,EAAMnwG,aAGN7mD,KAAKu1J,iBAIjBjE,EAAMpxJ,UAAU+2J,2BAA6B,WACzC,IAAIC,EAAmBl3J,KAAKoD,QAAQ0pD,iBAAiB,mCACrD,GAAIoqG,EAAiBv2J,OAAS,EAC1B,IAAK,IAAIK,EAAI,EAAGA,EAAIk2J,EAAiBv2J,OAAQK,IAAK,CAC9C,IAAIoC,EAAU8zJ,EAAiBvlJ,SAAS3Q,EAAE4Q,WAAY,KAClDxO,IACAA,EAAQoqG,UAAY,KAKpC8jD,EAAMpxJ,UAAUy1J,iBAAmB,WAC/B,OAAO31J,KAAKoD,QAAQ8I,cAAc,cAKtColJ,EAAMpxJ,UAAU20J,gBAAkB,WAC9B,IACID,EADAuC,EAAqBn3J,KAAKoD,QAAQ8I,cAAc,oBAKpD,OAHIirJ,IACAvC,EAAeuC,EAAmBlxG,SAAS,IAExC2uG,GAEXtD,EAAMpxJ,UAAUg1J,kBAAoB,WAChC,OAAOl1J,KAAKoD,QAAQ8I,cAAc,eAEtColJ,EAAMpxJ,UAAUu2J,SAAW,SAAUrzJ,GAIjC,IAHA,IAAIg0J,EACAlyJ,EAAY,CAAC,WAAY,UAAW,UAAW,SAAU,OACzD,OAAQ,SAAU,SAAU,UAAW,WAClClE,EAAI,EAAGA,EAAIkE,EAAUvE,OAAQK,IAClC,GAAIoC,GAAWA,EAAQ8B,UAAUmB,SAASnB,EAAUyM,SAAS3Q,EAAE4Q,WAAY,MAEvE,OADAwlJ,EAAelyJ,EAAUyM,SAAS3Q,EAAE4Q,WAAY,KACzCwlJ,EAGf,OAAOA,GAEX9F,EAAMpxJ,UAAUy2J,kBAAoB,SAAUnyJ,GAC1C,OAAOxE,KAAKoD,QAAQ8I,cAAc,IAAM1H,IAO5C8sJ,EAAMpxJ,UAAU60J,0BAA4B,SAAU3xJ,EAASi0J,GAI3D,IAHA,IAAI/2J,EAAS8C,EACTk0J,EAAkBh3J,EAAO2lD,SACzBsxG,EAAgBF,EACXr2J,EAAI,EAAGA,EAAIs2J,EAAgB32J,OAAQK,IAAK,CAC7C,IAAIw2J,EAAYF,EAAgB3lJ,SAAS3Q,EAAE4Q,WAAY,KACvD,GAAI4lJ,EAAUvxG,SAAStlD,OAAS,IAAM62J,EAAUtyJ,UAAUmB,SAAS,eAC/DkxJ,EAAgBv3J,KAAK+0J,0BAA0ByC,EAAWD,OAEzD,CACD,IAAIE,EAAkBH,EAAgB3lJ,SAAS3Q,EAAE4Q,WAAY,MACzD6lJ,EAAgB5jH,aAAa,aAAgB2jH,EAAUtyJ,UAAUmB,SAAS,cAC3C,SAA5BmxJ,EAAUzwJ,MAAMC,SACf,eAAkBwwJ,EAAU5B,eAChC2B,EAAclrJ,KAAKorJ,IAI/B,OAAOF,GAEXjG,EAAMpxJ,UAAU80J,SAAW,SAAU5xJ,EAASs0J,GACtCA,GACA,eAAS,CAACt0J,GAAU,CAAC,YAAa,YAEtCA,EAAQoqG,SAAW,GAEvB8jD,EAAMpxJ,UAAUk8F,YAAc,SAAUh5F,EAASu0J,GACzCA,GACA,gBAAY,CAACv0J,GAAU,CAAC,YAAa,YAEzCA,EAAQoqG,UAAY,GAQxB8jD,EAAMpxJ,UAAU45C,kBAAoB,SAAUv5C,GAC1C,OAAOP,KAAK6pI,UAAU7vF,YAAYz5C,IAQtC+wJ,EAAMpxJ,UAAU0kI,SAAW,SAAUC,GAC7B7kI,KAAKm0J,cAActvB,KACnB7kI,KAAK20B,YAAckwG,EACnB7kI,KAAK+H,aAQbupJ,EAAMpxJ,UAAU03J,YAAc,SAAU/iI,GACpC70B,KAAK60B,SAAWA,EAChB70B,KAAK+H,YAETupJ,EAAMpxJ,UAAUyxJ,eAAiB,WAC7B,SAAuB,IAAnB3xJ,KAAK0zG,YAAsB1zG,KAAK0zG,UAAU/yG,SAKlD2wJ,EAAMpxJ,UAAUi0J,cAAgB,SAAU0D,EAAWC,GAOjD,OANID,IAAc73J,KAAK20B,cACnB30B,KAAK+uJ,eAAiB/uJ,KAAK20B,aAE1B,eAAkBmjI,KACnB93J,KAAK+uJ,eAAiB+I,GAEtB93J,KAAK+uJ,iBAAmB8I,GAAcA,GAAa,GAAKA,GAAa73J,KAAKouE,YAKlFkjF,EAAMpxJ,UAAUk0J,mBAAqB,SAAUl/I,EAASC,GAIpD,GAHInV,KAAK+3J,mBACL/3J,KAAKg4J,kBAAkBh4J,KAAK20B,aAE5Bzf,EAAQyf,cAAgBxf,EAAQwf,aAAezf,EAAQ2f,WAAa1f,EAAQ0f,SAAU,CACtF,IAAIR,EAAO,CACPM,YAAa30B,KAAK20B,YAClBzf,QAASA,EAASC,QAASA,EAAS1G,QAAQ,GAEhDzO,KAAKiI,QAAQ,QAASosB,GACjBA,EAAK5lB,QAKNzO,KAAKy4H,UAAW,EACZtjH,GAAWA,EAAQ0f,WACnB70B,KAAKiL,cAAc,CAAE4pB,SAAU1f,EAAQ0f,WAAY,GAC/C70B,KAAKg0J,sBACLh0J,KAAKg0J,oBAAoBK,iBAAiB,QAASl/I,EAAQ0f,UAC3D70B,KAAKg0J,oBAAoB,sBAAsBx3I,KAAOrH,EAAQ0f,SAAW,OATjF70B,KAAKy4H,UAAW,EAChBz4H,KAAKsV,aAcjBg8I,EAAMpxJ,UAAUolH,cAAgB,WAC5B,IAAItlH,KAAK4zJ,oBAAqB5zJ,KAAKuxJ,UAAnC,CAGA,IAAIzxI,EACJ9f,KAAKoD,QAAQ8B,UAAU4G,IAAI,mBAC3B9L,KAAKs0J,QAAQt0J,KAAK2sB,UAClB,IAAIrP,EAAO,CACPqX,YAAa30B,KAAK20B,YAAaE,SAAU70B,KAAK60B,SAAUD,UAAW50B,KAAK40B,UACxEi/E,kBAAmB7zG,KAAK6zG,kBAAmBzlC,WAAYpuE,KAAKouE,YAE5D6pF,EAASj4J,KAAKoD,QAAQsyC,cAAcpqC,GAAK,YACzCtL,KAAK4zJ,oBAAsB5zJ,KAAK6yB,OAChC7yB,KAAKk4J,kBAALl4J,CAAwBsd,EAAMtd,KAAM,WAAYi4J,EAAQ,KAAM,KAAMj4J,KAAKoD,SACzEpD,KAAK0L,yBAGLoU,EAAS9f,KAAK6yB,MAAQ7yB,KAAKk4J,kBAALl4J,CAAwBsd,EAAMtd,KAAM,YAAcA,KAAKk4J,kBAALl4J,CAAwBsd,GAChG,eAAetd,KAAKoD,QAAS0c,MAOrCwxI,EAAMpxJ,UAAU0tJ,iBAAmB,WAC/B5tJ,KAAKouE,WAAapuE,KAAKk1B,UAAY,EAAKl1B,KAAK6zG,kBAAoB7zG,KAAK60B,WAAa,EAAM70B,KAAK6zG,kBAAoB7zG,KAAK60B,SAClHljB,UAAU3R,KAAK6zG,kBAAoB7zG,KAAK60B,UAAUjjB,WAAY,IAAM,GAM7E0/I,EAAMpxJ,UAAUg4J,iBAAmB,WAC/B,OAAOl4J,KAAKu8D,YAOhB+0F,EAAMpxJ,UAAUo0J,QAAU,SAAU3nI,GAChC,GAAIA,EACA,IAC4B,oBAAbA,EACP3sB,KAAKu8D,WAAa,eAAiB5vC,GAG/B/e,SAASk/C,iBAAiBngC,GAAUhsB,SACpCX,KAAKu8D,WAAa,eAAiB3uD,SAAS1B,cAAcygB,GAAU7hB,UAAUyB,SAI1F,MAAOY,GACHnN,KAAKu8D,WAAa,eAAiB5vC,KAU/C2kI,EAAMpxJ,UAAUoV,QAAU,WACtB,GAAItV,KAAK2sB,SACD3sB,KAAK4zJ,mBACL5zJ,KAAK4tJ,mBACL5tJ,KAAKs0B,OAAOt0B,KAAKwxJ,YAAa,MAG9BxxJ,KAAKoD,QAAQ0H,UAAY,GACzB9K,KAAK4tJ,mBACL5tJ,KAAKslH,qBAGR,CACDtlH,KAAKy5H,YACL,IAAIi7B,EAAyB10J,KAAK20J,4BAClC30J,KAAKyzJ,gBAAgBn+I,UACrBtV,KAAKi3J,6BACDvC,GAA0BA,EAAuBxvJ,UAAUmB,SAAS,eAChErG,KAAK42J,yBAAyBlC,GAC9B10J,KAAK62J,0BAA0BnC,GAG/B10J,KAAKy1J,iCAGTz1J,KAAK8zJ,oBACL9zJ,KAAK0zJ,mBAAmBp+I,UAExBtV,KAAKg0J,qBACLh0J,KAAKg0J,oBAAoB1+I,UAEzBtV,KAAK0xJ,uBAAyB1xJ,KAAKk0J,uBACnCl0J,KAAKk0J,sBAAsB5+I,UAE/BtV,KAAKm1J,iCACLn1J,KAAKu0J,gBAGbjD,EAAMpxJ,UAAUu5H,UAAY,WACpBz5H,KAAKyF,UACLzF,KAAKoD,QAAQ8B,UAAU4G,IAAI,SAG3B9L,KAAKoD,QAAQ8B,UAAUC,OAAO,UAGtCmsJ,EAAMpxJ,UAAUyzJ,iBAAmB,WAC/B3zJ,KAAK6pI,UAAY,IAAI,OAAK7pI,KAAK8U,gBAAiB9U,KAAK4xJ,iBAAkB5xJ,KAAK4pD,SAEhF0nG,EAAMpxJ,UAAU83J,kBAAoB,SAAUh7I,GAC1C,IAAIm7I,EAAan4J,KAAKo4J,cAAc7xJ,OAAOonB,SAAS8pD,KAAM,OAAQz6D,EAAMpL,YACxErL,OAAO8xJ,QAAQC,UAAU,CAAE1hF,KAAMuhF,GAAc,GAAIA,IAEvD7G,EAAMpxJ,UAAUk4J,cAAgB,SAAUG,EAAKh4J,EAAKyc,GAEhD,IAAIq0I,EAAO,IAAI1gI,OAAO,UAAYpwB,EAAM,cAAe,KACvD,GAAIg4J,EAAI3xJ,MAAMyqJ,GACV,OAAOkH,EAAI9zI,QAAQ4sI,EAAM,KAAO9wJ,EAAM,IAAMyc,EAAQ,MAGpD,IAAIw7I,EAAO,GAKX,OAJ0B,IAAtBD,EAAIv0J,QAAQ,OACZw0J,EAAOD,EAAI9zI,QAAQ,MAAO,KAC1B8zI,EAAMA,EAAI9zI,QAAQ,MAAO,KAEtB8zI,IAA6B,IAAtBA,EAAIv0J,QAAQ,KAAc,IAAM,KAAOzD,EAAM,IAAMyc,EAAQw7I,GAGjFlH,EAAMpxJ,UAAU2zJ,4BAA8B,WAC1C7zJ,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,gCACXwK,MAAO,CAAEghB,MAAOhwB,KAAK85C,kBAAkB,oBAAqBgpD,SAAU,SAE1E9iG,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,8BACXwK,MAAO,CAAEghB,MAAOhwB,KAAK85C,kBAAkB,uBAAwBgpD,SAAU,UAGjFwuD,EAAMpxJ,UAAU6zJ,2BAA6B,WACzC/zJ,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,8BACXwK,MAAO,CAAEghB,MAAOhwB,KAAK85C,kBAAkB,mBAAoBgpD,SAAU,SAEzE9iG,KAAKoD,QAAQsB,YAAY,eAAc,MAAO,CAC1CF,UAAW,8BACXwK,MAAO,CAAEghB,MAAOhwB,KAAK85C,kBAAkB,mBAAoBgpD,SAAU,UAG7EwuD,EAAMpxJ,UAAU+zJ,aAAe,WAC3B,IAAI/uJ,EAAY,CAAC,YAAa,WAAY,WAAY,YACtD,IAAK,OAAQyK,SACT,IAAK,IAAI3O,EAAI,EAAGA,EAAIkE,EAAUvE,OAAQK,IAAK,CACvC,IAAIoC,EAAUpD,KAAKoD,QAAQ8I,cAAchH,EAAUyM,SAAS3Q,EAAE4Q,WAAY,MAC1ExO,EAAQuH,aAAa,aAAcvH,EAAQsH,aAAa,YAIpE4mJ,EAAMpxJ,UAAU0zJ,gBAAkB,WAC9B,OAAQ5zJ,KAAKmI,SAAWnI,KAAK6yB,QAAU7yB,KAAK2sB,UAAuC,kBAAnB3sB,KAAa,UAOjFsxJ,EAAMpxJ,UAAUu4J,qBAAuB,WAKnC,IAJA,IAAIlB,EAAgBv3J,KAAKoD,QAAQ0pD,iBAEjC,oQACI4rG,EAAc,EACT13J,EAAI,EAAGA,EAAIu2J,EAAc52J,OAAQK,IACsC,SAAxEwF,iBAAiB+wJ,EAAc5lJ,SAAS3Q,EAAE4Q,WAAY,MAAM5K,UAC5D0xJ,GAAenB,EAAc5lJ,SAAS3Q,EAAE4Q,WAAY,KAAKpI,YACnD1C,WAAWN,iBAAiB+wJ,EAAc5lJ,SAAS3Q,EAAE4Q,WAAY,MAAM+mJ,YACvE7xJ,WAAWN,iBAAiB+wJ,EAAc5lJ,SAAS3Q,EAAE4Q,WAAY,MAAMgnJ,cAGrF,IAAIlK,EAAiB1uJ,KAAKoD,QAAQ8I,cAAc,qBAGhD,OAFAwsJ,GAAe5xJ,WAAWN,iBAAiBkoJ,GAAgBiK,YACrD7xJ,WAAWN,iBAAiBkoJ,GAAgBkK,aAC3CF,GAOXpH,EAAMpxJ,UAAUq0J,YAAc,WAC1B,IAAIlxJ,EAAQrD,KACR64J,EAAiB74J,KAAKoD,QAAQ8B,UAAUmB,SAAS,WAAaG,iBAAiBxG,KAAKoD,SAASsD,iBAAiB,gBAAgB0qG,SAAS,SAAW,KACtJ,IAAMpxG,KAAa,UAAK64J,EAAgB,CACpC,IAAInK,EAAiB1uJ,KAAKoD,QAAQ8I,cAAc,qBAC5CwsJ,EAAc14J,KAAKy4J,uBACnBK,EAAa94J,KAAKoD,QAAQmG,YACxBzC,WAAWN,iBAAiBxG,KAAKoD,SAASkwH,aAC1CxsH,WAAWN,iBAAiBxG,KAAKoD,SAASiwH,cAC1CvsH,WAAWN,iBAAiBxG,KAAKoD,SAASu1J,YAC1C7xJ,WAAWN,iBAAiBxG,KAAKoD,SAASw1J,aAC5C1J,EAAWR,EAAe5hG,iBAAiB,mFAC3CisG,EAAiBrK,EAAe5hG,iBAAiB,uDACjDksG,EAAW9J,EAASvuJ,OACpBs4J,EAAW,EACXC,EAAgB,eAAkB,gBAAal5J,KAAKoD,QAAS,aAAqB,EAAL,GAC7E0rJ,EAAKJ,EAAexiJ,cAAc,SAClC0iJ,EAAKF,EAAexiJ,cAAc,SAClCitJ,EAAcn5J,KAAKoD,QAAQ0pD,iBAAiB,uHAC5CssG,EAAmB,EACnBD,EAAYx4J,SACZw4J,EAAYlqE,SAAQ,SAAU1tE,GAC1B63I,GAAoB73I,EAAK/X,eAE7BxJ,KAAKq5J,mBAAqBD,EAAmBD,EAAYx4J,QAM7D,IAJA,IAAI24J,EAAa,EAIRt4J,EAAI,EAAGA,EAAIkuJ,EAASvuJ,OAAQK,IACjCs4J,GAAcpK,EAASv9I,SAAS3Q,EAAE4Q,WAAY,KAAKpI,YAC7C1C,WAAWN,iBAAiB0oJ,EAASv9I,SAAS3Q,EAAE4Q,WAAY,MAAM+mJ,YAClE7xJ,WAAWN,iBAAiB0oJ,EAASv9I,SAAS3Q,EAAE4Q,WAAY,MAAMgnJ,aAE5E,IAAIW,EAAmBD,EAAapK,EAASvuJ,OAI7C,GAAIm4J,EAAa,GAAMJ,GAAgBI,GAAcS,GAAsC,GAAM,CAC7Fv5J,KAAKmvJ,gBAAiB,EAClBnvJ,KAAK20B,cAAgB30B,KAAKouE,YAC1B,eAAU0gF,EAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAEnF4J,EAAc14J,KAAKy4J,uBACnB,IAAIr/F,EAAOjwD,KAAK6a,IAAI,EAAgB80I,GAEhCU,EAAYrwJ,KAAKgkC,KAAKisB,EAAO,GACjCogG,EAA2B,IAAdA,EAAmB,EAAKA,EAAYtK,EAASvuJ,OAAWuuJ,EAASvuJ,OAAS,EAAK64J,EAC5F,IAASx4J,EAAI,EAAGA,GAAKw4J,EAAWx4J,IAAK,CACjC,IAAIy4J,EAAYT,EAAWrnJ,SAAS3Q,EAAE4Q,WAAY,IAClDs9I,EAAWR,EAAe5hG,iBAAiB,mFAClB,IAArB9sD,KAAK20B,aAAuBhjB,SAASu9I,EAAS/lJ,KAAK6a,IAAIy1I,IAAY/uJ,aAAa,SAAU,MAAQ1K,KAAK20B,aACpGhjB,SAASu9I,EAASA,EAASvuJ,OAAS,GAAG+J,aAAa,SAAU,MAAQ1K,KAAK20B,cAC9E8kI,EAAY,EACZ,eAAU7K,EAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,eAE/EM,EAAS/lJ,KAAK6a,IAAIy1I,MAAiBvK,EAAS/lJ,KAAK6a,IAAIy1I,IAAYv0J,UAAUmB,SAAS,kBACpF6oJ,EAAS/lJ,KAAK6a,IAAIy1I,IAAYv0J,UAAU4G,IAAI,UAKpD,GAFAojJ,EAAWR,EAAe5hG,iBAAiB,mFAEvCoiG,EAASvuJ,QAAU,GAAKw4J,EAAYx4J,QAAU4F,OAAOmzJ,YAAc,IAAK,CACxE,IAAIC,EAAwB35J,KAAKy4J,uBACjC,GAAI,EAA2BK,EAAaI,EAAc,CACtD,IAAIU,EAAezwJ,KAAK6gC,OAAO8uH,GAAca,EAAwBP,IAC/Dp5J,KAAKq5J,oBACXO,EAAeT,EAAYx4J,OAASi5J,EACpC,IAAS54J,EAAI,EAAGA,GAAK44J,EAAeT,EAAYx4J,OAASw4J,EAAYx4J,OAASi5J,GAAe54J,IACzFm4J,EAAYxnJ,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,iBAQjE,GAAI4sJ,EAAc,GAAgBK,EAAep4J,OAAQ,CACtDy4D,EAAOjwD,KAAK6a,IAAI80I,EAAa,GAAjC,IACIe,EAAoB75J,KAAKoD,QAAQ0pD,iBAAiB,+CAKtD,GAHI+sG,EAAkBl5J,QAAWy4D,EAAQp5D,KAAKq5J,mBAAsBr5J,KAAKq5J,mBAAqB,GAC1FQ,EAAmBA,EAAkBl5J,OAAS,GAAIuE,UAAUC,OAAO,UAElEi0D,EAA2B,EAAnBmgG,IAA0BM,EAAkBl5J,QAAU4F,OAAOmzJ,YAAc,IAAM,CAE1F,IAAII,EAAY3wJ,KAAK6gC,MAAM,GAAUuvH,EAAmBL,IACxDY,EAAaA,EAAYf,EAAep4J,OAAUo4J,EAAep4J,OAAUm5J,EAAY,EAEvF,IAAIC,EAAmBn6J,MAAM0hJ,KAAKyX,GAAgB36I,QAAO,SAAUmD,GAAQ,OAAO5P,SAAS4P,EAAK7W,aAAa,SAAU,IAAMrH,EAAMsxB,eAAgBtW,MAAK,SAAUC,EAAG9e,GAAK,OAAOmS,SAASnS,EAAEkL,aAAa,SAAU,IAAMiH,SAAS2M,EAAE5T,aAAa,SAAU,OACvPsvJ,EAAoBp6J,MAAM0hJ,KAAKyX,GAAgB36I,QAAO,SAAUmD,GAAQ,OAAO5P,SAAS4P,EAAK7W,aAAa,SAAU,IAAMrH,EAAMsxB,eAChIslI,EAAaF,EAAiBp5J,QAAUo5J,GACpCC,EAAkBr5J,QAAUq5J,EACpC,IAASh5J,EAAI,EAAGA,GAAK84J,EAAW94J,IAAK,CACjC,IAAIk5J,EAAWD,GAAaA,EAAU9wJ,KAAK6a,IAAIi1I,EAAWj4J,IACtDk5J,IACAA,EAASh1J,UAAUC,OAAO,UACtB+0J,IAAaD,EAAUA,EAAUt5J,OAAS,KAC1Cs5J,EAAY,SAOhC,GADA/K,EAAWR,EAAe5hG,iBAAiB,mFACvCoiG,EAASvuJ,OAAQ,CACbgR,SAASu9I,EAASA,EAASvuJ,OAAS,GAAG+J,aAAa,SAAU,MAAQ1K,KAAKouE,YAC3E,eAAU0gF,EAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAErB,IAApDn9I,SAASu9I,EAAS,GAAGxkJ,aAAa,SAAU,KAC5C,eAAUkkJ,EAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAE7E,IAAIK,EAAYrvJ,MAAM0hJ,KAAK4N,GAAU33H,MAAK,SAAUhW,GAAQ,OAAO5P,SAAS4P,EAAK7W,aAAa,SAAU,MAAQrH,EAAM+qE,cAClH4hF,EAAWr+I,SAASu9I,EAAS,GAAGxkJ,aAAa,SAAU,KAAOukJ,EAAYjvJ,KAAKiwJ,YAAcf,EAASvuJ,QAC1GiuJ,EAAGjkJ,aAAa,QAAUqlJ,EAAU,EAAK,IAAMA,EAAQp+I,YACvDk9I,EAAGnkJ,aAAa,SAAUgH,SAASu9I,EAASA,EAASvuJ,OAAS,GAAG+J,aAAa,SAAU,IAAM,GAAGkH,YACjG5R,KAAKiwJ,YAAchB,EAAYjvJ,KAAKiwJ,YAAcf,EAASvuJ,OAKzDX,KAAKoD,QAAQoG,YAAc,KAAyG,SAAjGjD,OAAOC,iBAAiBxG,KAAKoD,QAAQ8I,cAAc,cAAcxF,iBAAiB,YAA0B1G,KAAK0zG,WACtJ1zG,KAAKoD,QAAQ8I,cAAc,gBAAgBhH,UAAUC,OAAO,UAC5DnF,KAAKoD,QAAQ8I,cAAc,mBAAmBhH,UAAUC,OAAO,UAC/DnF,KAAKoD,QAAQ8B,UAAU4G,IAAI,cAC3B9L,KAAKoD,QAAQ8I,cAAc,gBAAgBpB,UAAY9K,KAAKoD,QAAQoG,YAAc,IAAOxJ,KAAK20B,YAAc,MAAQ30B,KAAKouE,WAAcpuE,KAAK0zJ,mBAAmBljI,OAAOxwB,KAAK85C,kBAAkB,mBAAoB,CAA4B,IAA3B95C,KAAK6zG,kBAA0B,EACzO7zG,KAAK20B,YAAa30B,KAAKouE,YAAc,EAAGpuE,KAAK6zG,mBAAqB,IAAM,MAGhF7zG,KAAKoD,QAAQ8B,UAAUC,OAAO,cAC9BnF,KAAKoD,QAAQ8I,cAAc,gBAAgBpB,UAAY9K,KAAK0zJ,mBAAmBljI,OAAOxwB,KAAK85C,kBAAkB,mBAAoB,CAA4B,IAA3B95C,KAAK6zG,kBAA0B,EACzJ7zG,KAAK20B,YAAa30B,KAAKouE,YAAc,EAAGpuE,KAAK6zG,mBAAqB,IAAM,OAI5FzzG,EAAW,CACP,gBAAS,IACVkxJ,EAAMpxJ,UAAW,yBAAqB,GACzCE,EAAW,CACP,gBAAS,IACVkxJ,EAAMpxJ,UAAW,6BAAyB,GAC7CE,EAAW,CACP,gBAAS,IACVkxJ,EAAMpxJ,UAAW,0BAAsB,GAC1CE,EAAW,CACP,eAAS,KACVkxJ,EAAMpxJ,UAAW,gBAAY,GAChCE,EAAW,CACP,eAAS,KACVkxJ,EAAMpxJ,UAAW,iBAAa,GACjCE,EAAW,CACP,eAAS,IACVkxJ,EAAMpxJ,UAAW,mBAAe,GACnCE,EAAW,CACP,kBACDkxJ,EAAMpxJ,UAAW,yBAAqB,GACzCE,EAAW,CACP,kBACDkxJ,EAAMpxJ,UAAW,uBAAmB,GACvCE,EAAW,CACP,gBAAS,IACVkxJ,EAAMpxJ,UAAW,iBAAa,GACjCE,EAAW,CACP,kBACDkxJ,EAAMpxJ,UAAW,gBAAY,GAChCE,EAAW,CACP,eAAS,KACVkxJ,EAAMpxJ,UAAW,kBAAc,GAClCE,EAAW,CACP,kBACDkxJ,EAAMpxJ,UAAW,aAAS,GAC7BE,EAAW,CACP,eAAS,KACVkxJ,EAAMpxJ,UAAW,gBAAY,GAChCE,EAAW,CACP,kBACDkxJ,EAAMpxJ,UAAW,uBAAmB,GACvCE,EAAW,CACP,kBACDkxJ,EAAMpxJ,UAAW,eAAW,GAC/BoxJ,EAAQlxJ,EAAW,CACf,QACDkxJ,GACIA,EAllCe,CAmlCxB,Q,YCrnCE,EAA+B,WAO/B,SAAS0B,EAAch+H,GACnBh1B,KAAKg1B,YAAcA,EA0JvB,OAjJAg+H,EAAc9yJ,UAAU4U,cAAgB,WACpC,MAAO,iBAQXk+I,EAAc9yJ,UAAUyT,OAAS,WAC7B,IAAIshB,EAAWj1B,KAAKg1B,YACpBh1B,KAAKm6J,iBAAmB,eAAc,MAAO,CAAE31J,UAAW,gBAC1D,IAAI41J,EAAc,eAAc,MAAO,CAAE51J,UAAW,oBAChD61J,EAAiB,eAAc,MAAO,CAAE71J,UAAW,oBACnDqhE,EAAQ,eAAc,QAAS,CAAE72D,MAAO,CAAER,KAAM,OAAQs0F,SAAU,QACtE9iG,KAAKs6J,UAAY,eAAc,OAAQ,CACnC91J,UAAW,aAAcsG,UAAW9K,KAAKg1B,YAAY8kB,kBAAkB,mBAE3EsgH,EAAY11J,YAAYmhE,GACxBw0F,EAAe31J,YAAY1E,KAAKs6J,WAChCt6J,KAAKm6J,iBAAiBz1J,YAAY01J,GAClCp6J,KAAKm6J,iBAAiBz1J,YAAY21J,GAClCr6J,KAAKg1B,YAAY5xB,QAAQsB,YAAY1E,KAAKm6J,kBAC1C,IAAII,EAAkBv6J,KAAKg1B,YAAY0+E,UACnC8mD,EAAkBD,EAAgB55J,OAASX,KAAKy6J,aAAaF,GAC7D,CAACv6J,KAAKg1B,YAAY8kB,kBAAkB,OAAQ,IAAK,KAAM,KAAM,MAC7D94B,EAAehhB,KAAKg1B,YAAYH,SACpC70B,KAAK06J,mBAAqB,IAAI,OAAa,CACvCt7I,WAAYo7I,EACZx9I,MAAOgE,EAAapP,WACpBsmD,OAAQl4D,KAAK26J,SAAS/0J,KAAK5F,MAC3Bm5I,YAAan5I,KAAKg1B,YAAY8kB,kBAAkB,iBAChDrvC,SAAUzK,KAAKg1B,YAAYvqB,SAAW,aAAoBzK,KAAKg1B,YAAYvqB,SAAW,cAE1FzK,KAAK06J,mBAAmB7pE,SAAShrB,GAC7B00F,EAAgB55J,SAChBX,KAAK06J,mBAAmBt3J,QAAQ4Z,MAAQhd,KAAKg1B,YAAYH,SAASjjB,YAEtEqjB,EAASJ,SAAW7T,EACpBiU,EAASltB,WACTktB,EAAShtB,QAAQ,kBAAmB,CAAE4sB,SAAU7T,IAChDhhB,KAAK+oB,oBAUTiqI,EAAc9yJ,UAAUy6J,SAAW,SAAUxtJ,GACrCnN,KAAK06J,mBAAmB19I,QAAUhd,KAAKg1B,YAAY8kB,kBAAkB,QACrE95C,KAAKg1B,YAAYH,SAAW70B,KAAKg1B,YAAY6+E,kBAC7C7zG,KAAKg1B,YAAYE,WAAY,EAC7Bl1B,KAAKsV,UACLnI,EAAE6P,MAAQhd,KAAKg1B,YAAYH,SACvBjnB,SAASomC,uBAAuB,0BAA0BrzC,SAC1DiN,SAASomC,uBAAuB,0BAA0B,GAAGjtC,MAAMC,QAAU,UAIjFhH,KAAKg1B,YAAYH,SAAWljB,SAAS3R,KAAK06J,mBAAmB19I,MAAO,IACpEhd,KAAKg1B,YAAYE,WAAY,EACzBl1B,KAAKs6J,UAAUxvJ,YAAc9K,KAAKg1B,YAAY8kB,kBAAkB,kBAChE95C,KAAKsV,WAGbtV,KAAKg1B,YAAYjtB,WACZ/H,KAAKg1B,YAAYyjG,UAClBz4H,KAAKg1B,YAAY/sB,QAAQ,kBAAmB,CACxC4sB,SAAU70B,KAAKg1B,YAAYE,gBACS3pB,IAA/BvL,KAAKg1B,YAAYE,WAA2Bl1B,KAAK06J,mBAAmB19I,QAAUhd,KAAKg1B,YAAY8kB,kBAAkB,OAClH95C,KAAKg1B,YAAY6+E,kBAAoBliG,SAAS3R,KAAK06J,mBAAmB19I,MAAO,OAI7Fg2I,EAAc9yJ,UAAUoV,QAAU,WAC1BtV,KAAKs6J,YACDt6J,KAAK46J,cAAc56J,KAAKg1B,YAAYH,WACpC70B,KAAKs6J,UAAUxvJ,UAAY9K,KAAKg1B,YAAY8kB,kBAAkB,oBAC9D95C,KAAKs6J,UAAU5kH,cAAcxwC,UAAU4G,IAAI,gBAG3C9L,KAAKs6J,UAAUxvJ,UAAY9K,KAAKg1B,YAAY8kB,kBAAkB,iBAC9D95C,KAAKs6J,UAAU5kH,cAAcxwC,UAAUC,OAAO,eAElDnF,KAAKm6J,iBAAiBj1J,UAAUC,OAAO,YAG/C6tJ,EAAc9yJ,UAAU26J,kBAAoB,SAAUxlJ,GAClD,GAAkC,kBAAvBA,EAAKH,QAAQ8H,MAAoB,CACxC,IAAIxC,EAAMnF,EAAKH,QAAQ8H,MAAMpL,WAC7ByD,EAAKH,QAAQ8H,MAAQxC,IAG7Bw4I,EAAc9yJ,UAAUu6J,aAAe,SAAUK,GAE7C,IADA,IAAIv5I,EAAOu5I,EACF95J,EAAI,EAAGA,EAAIugB,EAAK5gB,OAAQK,IAC7BugB,EAAK5P,SAAS3Q,EAAE4Q,WAAY,KAAOD,SAAS4P,EAAK5P,SAAS3Q,EAAE4Q,WAAY,KAAM,IAC1E2P,EAAK5P,SAAS3Q,EAAE4Q,WAAY,KAAKA,WAAuF,KAAzE5R,KAAKg1B,YAAY8kB,kBAAkBv4B,EAAK5P,SAAS3Q,EAAE4Q,WAAY,MAC5G5R,KAAKg1B,YAAY8kB,kBAAkBv4B,EAAK5P,SAAS3Q,EAAE4Q,WAAY,MAAQ2P,EAAK5P,SAAS3Q,EAAE4Q,WAAY,KAE7G,OAAO2P,GAEXyxI,EAAc9yJ,UAAU06J,cAAgB,SAAU59I,GAC9C,IAAI+9I,EAAiC,kBAAZ,GAAwB/9I,IAAUhd,KAAKg1B,YAAY8kB,kBAAkB,OAC1FnoC,SAASqL,EAAO,IAAMA,EAC1B,OAAI+9I,IAAgB/6J,KAAKg1B,YAAY6+E,mBAAqB72F,IAAUhd,KAAKg1B,YAAY8kB,kBAAkB,QAO3Gk5G,EAAc9yJ,UAAUm0J,iBAAmB,SAAUh/I,EAAM2H,GACvD,GAAIhd,KAAK06J,mBAAoB,CACzB,IAAIM,EAAch7J,KAAKg1B,YAAYE,UACnCl1B,KAAKg1B,YAAYE,UAAYl1B,KAAK46J,cAAc59I,GAChDhd,KAAKg1B,YAAY2+E,YAAYqnD,IAAeh7J,KAAKg1B,YAAYE,WAC7Dl1B,KAAK06J,mBAAmB,GAAKrlJ,GAAQrV,KAAKg1B,YAAYE,UAAYl1B,KAAKg1B,YAAY8kB,kBAAkB,OAAS98B,IAGtHg2I,EAAc9yJ,UAAU6oB,iBAAmB,WACvC/oB,KAAK06J,mBAAmBvxI,GAAG,oBAAqBnpB,KAAK66J,kBAAmB76J,OAE5EgzJ,EAAc9yJ,UAAU0xC,oBAAsB,WAC1C5xC,KAAK06J,mBAAmBz+H,IAAI,oBAAqBj8B,KAAK66J,oBAW1D7H,EAAc9yJ,UAAUsS,QAAU,SAAU6hB,GACpCr0B,KAAK06J,qBAAuB16J,KAAK06J,mBAAmB1xI,cACpDhpB,KAAK4xC,sBACL5xC,KAAK06J,mBAAmBloJ,UACxB,gBAAOxS,KAAKm6J,oBAGbnH,EAlKuB,GCD9B,EAAiC,WAOjC,SAASiI,EAAgBjmI,GACrBh1B,KAAKg1B,YAAcA,EAkEvB,OA1DAimI,EAAgB/6J,UAAU4U,cAAgB,WACtC,MAAO,mBAQXmmJ,EAAgB/6J,UAAUyT,OAAS,WAC/B3T,KAAKoD,QAAU,eAAc,MAAO,CAAEoB,UAAW,qBAAsBwK,MAAO,CAAE,aAAchP,KAAKg1B,YAAY8kB,kBAAkB,kBACjI95C,KAAKg1B,YAAY5xB,QAAQsB,YAAY1E,KAAKoD,SAC1CpD,KAAKsV,WAOT2lJ,EAAgB/6J,UAAUoV,QAAU,WAC5BtV,KAAKg1B,YAAYkmI,iBAAmBl7J,KAAKg1B,YAAYkmI,gBAAgBtpJ,WAAWjR,QAChFX,KAAKoxJ,cACLpxJ,KAAKoD,QAAQ0H,UAAY9K,KAAKg1B,YAAYkmI,iBAG1Cl7J,KAAKmxJ,eAQb8J,EAAgB/6J,UAAUixJ,YAAc,WAC/B,eAAkBnxJ,KAAKoD,WACxBpD,KAAKoD,QAAQ2D,MAAMC,QAAU,SAQrCi0J,EAAgB/6J,UAAUkxJ,YAAc,WACpCpxJ,KAAKoD,QAAQ2D,MAAMC,QAAU,IASjCi0J,EAAgB/6J,UAAUsS,QAAU,WAC5BxS,KAAKoD,SAAWpD,KAAKoD,QAAQsyC,eAC7B,gBAAO11C,KAAKoD,UAGb63J,EA1EyB,G,YCOhC,EAAsB,WAQtB,SAAS3H,EAAKxyI,EAAQ4T,GAClB10B,KAAKm7J,iBAAkB,EAEvBn7J,KAAKy4H,UAAW,EAChB,EAAM3T,OAAO,EAAiB,GAC9B9kH,KAAK8gB,OAASA,EACd9gB,KAAK00B,aAAeA,EACpB10B,KAAK+oB,mBA0UT,OAlUAuqI,EAAKpzJ,UAAU4U,cAAgB,WAC3B,MAAO,SAQXw+I,EAAKpzJ,UAAUyT,OAAS,WACpB,IAAIgf,EAAO3yB,KAAK8gB,OAChB9gB,KAAKo7J,eACA,eAAkBp7J,KAAK8gB,OAAOwkG,iBAC/BtlH,KAAK00B,aAAa/H,SAAW3sB,KAAK8gB,OAAOwkG,cACzCtlH,KAAK8gB,OAAOujG,oBAAqB,GAErCrkH,KAAKoD,QAAUpD,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,gBAC7D,IAAIywB,EAAW,eAAW,GAAI,eAAO,GAAI,eAAoBj1B,KAAK00B,eAAgB,CAC9E2yB,MAAOrnD,KAAKw9G,aAAa53G,KAAK5F,MAC9Bq7J,gBAAiBr7J,KAAKs7J,SAAS11J,KAAK5F,MACpCyF,UAAWktB,EAAKltB,UAAWmkD,OAAQj3B,EAAKi3B,OACxCguC,QAAS53F,KAAKu7J,YAAY31J,KAAK5F,OAChC,CAAC,YAAa,aACjBi1B,EAASxqB,SAAWzK,KAAK8gB,OAAOrW,SAAWzK,KAAK8gB,OAAOrW,SAAW,GAClEzK,KAAKi1B,SAAW,IAAI,EAAMA,OAAU1pB,EAAWvL,KAAK8gB,QACpD9gB,KAAKi1B,SAASs8H,WAAY,EAC1BvxJ,KAAKi1B,SAAS9L,GAAG,QAAqBnpB,KAAKw7J,yBAA0Bx7J,MACrEA,KAAKi1B,SAAShV,wBAAyB,GAE3CqzI,EAAKpzJ,UAAUo7J,SAAW,SAAUnuJ,GAChCnN,KAAK00B,aAAaG,SAAW1nB,EAAE0nB,SAC1B70B,KAAKmgE,gBACNngE,KAAK00B,aAAaC,YAAc,IAGxC2+H,EAAKpzJ,UAAUq7J,YAAc,WACzB,IAAMv7J,KAAK00B,aAAqB,SAAG,CAM/B,IALA,IAAI+mI,EAAsBz7J,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,uBACpEkqJ,EAAiB1uJ,KAAKoD,QAAQ8I,cAAc,qBAC5CgiJ,EAAOtgJ,SAASugJ,yBAChBE,EAAmBruJ,KAAKoD,QAAQ8I,cAAc,uBAC9C2hJ,EAAQQ,EAAiBvhG,iBAAiB,KACrC9rD,EAAI,EAAGA,EAAI6sJ,EAAMltJ,OAAQK,IAAK,CAC/BhB,KAAK8gB,OAAOmjD,kBACZ4pF,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,YAAa3K,KAAK8gB,OAAOmjD,kBAAkB34D,IAG1FuiJ,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,KAAKjH,aAAa,YAAa3K,KAAK8gB,OAAO1d,QAAQsH,aAAa,MAAQ,kBAEzG,IAAIgxJ,EAAsB17J,KAAK8gB,OAAOvc,cAAc,OACpDm3J,EAAoBh3J,YAAYmpJ,EAAMl8I,SAAS3Q,EAAE4Q,WAAY,MAC7Ds8I,EAAKxpJ,YAAYg3J,GAErBD,EAAoB/2J,YAAYwpJ,GAChCQ,EAAeh9G,aAAa+pH,EAAqBpN,GAEjD,IADA,IAAInpJ,EAAY,CAAC,YAAa,WAAY,WAAY,UAAW,UAAW,UAAW,WAAY,YAC1F2e,EAAI,EAAGA,EAAI3e,EAAUvE,OAAQkjB,IAAK,CACvC,IAAIzgB,EAAUpD,KAAKoD,QAAQ8I,cAAchH,EAAUyM,SAASkS,EAAEjS,WAAY,MACtE5R,KAAK8gB,OAAOmjD,mBACZ7gE,EAAQuH,aAAa,YAAa3K,KAAK8gB,OAAOmjD,kBAAkB34D,OAKhFgoJ,EAAKpzJ,UAAUwqI,UAAY,SAAUv9H,GACjCnN,KAAKy4I,YAAYtrI,IAOrBmmJ,EAAKpzJ,UAAUoV,QAAU,WACrBtV,KAAKi1B,SAAS3f,WAQlBg+I,EAAKpzJ,UAAU0kI,SAAW,SAAUC,GAChC7kI,KAAKi1B,SAAS2vG,SAASC,IAO3ByuB,EAAKpzJ,UAAU03J,YAAc,SAAU/iI,GACnC70B,KAAKi1B,SAAS2iI,YAAY/iI,IAS9By+H,EAAKpzJ,UAAUu4I,YAAc,SAAUtrI,GACnCnN,KAAK8gB,OAAO4T,aAAam/E,kBAAoB1mG,EAAE4S,MAC3C/f,KAAKi1B,SAASC,YACdl1B,KAAK8gB,OAAO4T,aAAaG,SAAW70B,KAAK8gB,OAAO4T,aAAam/E,oBAE/C,QAAb1mG,EAAE4vB,QAAsC,SAAlB5vB,EAAEssB,aAA8C,cAAlBtsB,EAAEssB,cACnDz5B,KAAKi1B,SAASC,WAAc/nB,EAAE4S,QAAU/f,KAAK00B,aAAaG,UAC1D70B,KAAKi1B,SAAShqB,cAAc,CAAE4pB,SAAU1nB,EAAE4S,QAAS,GAG3D/f,KAAK8gB,OAAO/Y,YAShBurJ,EAAKpzJ,UAAUuyD,iBAAmB,SAAUtlD,GACxCnN,KAAK8gB,OAAO7Y,QAAQ,OAAuB,eAAOkF,EAAG,CACjDwnB,YAAa30B,KAAK8gB,OAAO4T,aAAaC,YAAa8E,YAAa,SAChEjrB,KAAM,WAQd8kJ,EAAKpzJ,UAAU+U,kBAAoB,SAAU9H,GACzC,GAAIA,EAAEi3D,SAAWpkE,KAAK8U,gBAAtB,CAIA,IADA,IAAII,EAAU/H,EAAEk3D,WACPx2D,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd7N,KAAKi1B,SAAS,GAAK5f,GAAQH,EAAQ,GAAKG,GAE5CrV,KAAKi1B,SAASltB,aAElBurJ,EAAKpzJ,UAAUs9G,aAAe,SAAUrwG,GACpC,IAAIwlB,EAAO3yB,KAAK8gB,OAChB,GAAI9gB,KAAK27J,eAAiB,eAAgBhpI,KAAUA,EAAKohF,iBAAmB/zG,KAAKy4H,SAuB7E,OAtBKz4H,KAAK27J,cAmBN37J,KAAK27J,eAAgB,GAlBhB,eAAkBxuJ,EAAE+H,UAAa,eAAkB/H,EAAE+H,QAAQ2f,UASzD1nB,EAAEwnB,cACPhC,EAAK2B,OAAO,QAAqB,CAAE0mF,SAAUh7G,KAAMwwG,QAASxwG,KAAK4kI,SAAU3pB,KAAM9tG,EAAEwnB,cACnF30B,KAAKi1B,SAASN,YAAchC,EAAK+B,aAAaC,cAAgB30B,KAAKi1B,SAASN,YACxE30B,KAAKi1B,SAAS85H,eAAiBp8H,EAAK+B,aAAaC,cAXrDhC,EAAK2B,OAAO,QAAqB,CAAE0mF,SAAUh7G,KAAMwwG,QAASxwG,KAAK43J,YAAa38C,KAAM9tG,EAAE+H,QAAQ2f,WAC9F70B,KAAKi1B,SAAShqB,cAAc,CAAE4pB,SAAU1nB,EAAEgI,QAAQ0f,WAAY,GAC9DlC,EAAK1nB,cAAc,CAAEypB,aAAc,CAAEG,SAAU1nB,EAAEgI,QAAQ0f,YAAc,GACvE70B,KAAKi1B,SAAShqB,cAAc,CACxB0pB,YAAahC,EAAK+B,aAAaC,cAAgB30B,KAAKi1B,SAASN,YACzD30B,KAAKi1B,SAAS85H,eAAiBp8H,EAAK+B,aAAaC,cACtD,IAOP30B,KAAK27J,eAAgB,EACrB37J,KAAKi1B,SAASltB,iBAKlBoF,EAAEsB,QAAS,GAGfkkB,EAAK+B,aAAaG,SAAW70B,KAAKi1B,SAASJ,SAC3ClC,EAAKohF,gBAAiB,EACtB,IAAI28C,EAAW1wJ,KAAK00B,aAAaC,YAC7BN,EAAO,CACP5lB,QAAQ,EAAOgrB,YAAa,SAAUmiI,aAAclL,EACpD/7H,YAAaxnB,EAAEwnB,YAAaE,SAAUlC,EAAK+B,aAAaG,SAAUrmB,KAAM,QAM5E,GAJKxO,KAAKy4H,WACNz4H,KAAK00B,aAAaC,YAAcxnB,EAAEwnB,YAClC30B,KAAK8gB,OAAOwT,OAAO,QAAqBD,IAExCA,EAAK5lB,OAKL,OAJAtB,EAAEsB,QAAS,EACXzO,KAAK8gB,OAAO7V,cAAc,CAAEypB,aAAc,CAAEC,YAAa+7H,KAAc,GACvE1wJ,KAAKi1B,SAAShqB,cAAc,CAAE0pB,YAAa+7H,IAAY,QACvD1wJ,KAAKy4H,UAAW,GAGpBz4H,KAAKy4H,UAAW,EAChBz4H,KAAK8gB,OAAOghF,kBAAoB,UAEpCwxD,EAAKpzJ,UAAU4rI,gBAAkB,SAAU3+H,GACnCA,EAAE4vB,UAAU8+H,IACZ1uJ,EAAE+F,iBACFlT,KAAKoD,QAAQ8I,cAAc2vJ,EAAW1uJ,EAAE4vB,SAASsqB,UASzDisG,EAAKpzJ,UAAU4kI,sBAAwB,SAAUC,GACxC/kI,KAAKi1B,SAASy8H,wBACf1xJ,KAAKi1B,SAASy8H,uBAAwB,EACtC1xJ,KAAKi1B,SAASltB,YAElB/H,KAAKi1B,SAASimI,gBAAkBn2B,EAChC/kI,KAAKi1B,SAASltB,YAElBurJ,EAAKpzJ,UAAU47J,gBAAkB,WAC7B97J,KAAKmgE,eAAgB,EACrBngE,KAAK8gB,OAAO1d,QAAQsB,YAAY1E,KAAKoD,SACrCpD,KAAK8gB,OAAOm8G,aAAaj9H,KAAKoD,SAC9BpD,KAAKi1B,SAAS9sB,QAAUnI,KAAK8gB,OAAO3Y,QACpCnI,KAAKi1B,SAASpC,MAAQ7yB,KAAK8gB,OAAO+R,MAClC7yB,KAAKi1B,SAAS47D,SAAS7wF,KAAKoD,SAC5BpD,KAAKmgE,eAAgB,GAEzBmzF,EAAKpzJ,UAAU67J,kBAAoB,SAAU5uJ,GACrCA,EAAEi3D,SAAWpkE,KAAK8U,iBAAmB3H,EAAEsZ,SACvCzmB,KAAK2T,SACL3T,KAAK87J,kBACD97J,KAAK4zJ,oBACL5zJ,KAAKi1B,SAAS24H,mBACd5tJ,KAAK43F,aAQjB07D,EAAKpzJ,UAAU6oB,iBAAmB,WAC9B/oB,KAAKg8J,SAAW,CACZ9uE,KAAMltF,KAAK2T,OACXwJ,IAAKnd,KAAK87J,gBACVrhI,MAAOz6B,KAAK0qI,UACZuxB,SAAUj8J,KAAKyyD,iBACfypG,aAAcl8J,KAAK+7J,kBACnBI,cAAen8J,KAAKiV,kBACpBw3H,SAAUzsI,KAAK8rI,gBACfl0C,QAAS53F,KAAK43F,SAEd53F,KAAK8gB,OAAOkI,eAGZhpB,KAAK8gB,OAAO3Y,SAAWnI,KAAK8gB,OAAO+R,QACnC7yB,KAAK8gB,OAAOiI,iBAAiB,OAAiB/oB,KAAKg8J,SAASpkE,QAAQhyF,KAAK5F,OAE7EA,KAAKy7G,YAAc,CAAC,CAAE/sG,MAAO,QAAoB8hG,QAASxwG,KAAKg8J,SAAS9uE,MACpE,CAAEx+E,MAAO,QAAmB8hG,QAASxwG,KAAKg8J,SAAS7+I,KACnD,CAAEzO,MAAO,QAAkB8hG,QAASxwG,KAAKg8J,SAASvhI,OAClD,CAAE/rB,MAAO,QAAqB8hG,QAASxwG,KAAKg8J,SAASC,UACrD,CAAEvtJ,MAAO,QAAiB8hG,QAASxwG,KAAKg8J,SAASE,cACjD,CAAExtJ,MAAO,QAA4B8hG,QAASxwG,KAAKg8J,SAASG,eAC5D,CAAEztJ,MAAO,QAAmB8hG,QAASxwG,KAAKg8J,SAASvvB,UACnD,CAAE/9H,MAAO,QAAgB8hG,QAASxwG,KAAKwS,UAC3C,eAAuBxS,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,EAAMz7G,QAEhEszJ,EAAKpzJ,UAAU03F,QAAU,WACjB53F,KAAKm7J,iBAAmBn7J,KAAK4zJ,oBAC7B5zJ,KAAKm7J,iBAAkB,EACvBn7J,KAAKw7J,6BAGblI,EAAKpzJ,UAAU0zJ,gBAAkB,WAC7B,OAAQ5zJ,KAAK8gB,OAAO3Y,SAAWnI,KAAK8gB,OAAO+R,QAAU7yB,KAAKi1B,SAAStI,UAAgD,kBAA5B3sB,KAAKi1B,SAAiB,UAEjHq+H,EAAKpzJ,UAAUs7J,yBAA2B,WACtC,IAAKx7J,KAAKm7J,iBAAmBn7J,KAAK4zJ,kBAAmB,CACjD,IAAI9zI,OAAS,EACb9f,KAAK8gB,OAAOw2F,gBAAgB,CAAC,kBAC7Bt3G,KAAKoD,QAAQ8B,UAAU4G,IAAI,mBAC3B9L,KAAKi1B,SAASq/H,QAAQt0J,KAAKi1B,SAAStI,UACpC,IAAIoI,EAAO/0B,KAAK8gB,OAAO4T,aACnBpX,EAAO,CACPqX,YAAaI,EAAKJ,YAAaE,SAAUE,EAAKF,SAAUD,UAAWG,EAAKH,UACxEi/E,kBAAmB9+E,EAAK8+E,kBAAmBzlC,WAAYpuE,KAAKi1B,SAASm5C,YAErE6pF,EAASj4J,KAAK8gB,OAAOxV,GAAK,iBAC1BtL,KAAK8gB,OAAO3Y,SACZnI,KAAKi1B,SAASsnC,WAAWj/C,EAAMtd,KAAK8gB,OAAQ,gBAAiBm3I,EAAQ,KAAM,KAAMj4J,KAAKi1B,SAAS7xB,SAC/FpD,KAAK8gB,OAAO6gF,oBAGZ7hF,EAAS9f,KAAKi1B,SAASsnC,WAAWj/C,EAAMtd,KAAK8gB,OAAQ,iBACrD,eAAe9gB,KAAKi1B,SAAS7xB,QAAS0c,MAQlDwzI,EAAKpzJ,UAAU0xC,oBAAsB,WAC7B5xC,KAAK8gB,OAAOkI,eAGZhpB,KAAK8gB,OAAO3Y,SAAWnI,KAAK8gB,OAAO+R,QACnC7yB,KAAK8gB,OAAO8wB,oBAAoB,OAAiB5xC,KAAKg8J,SAASpkE,SAEnE53F,KAAK8gB,OAAOmb,IAAI,QAAqBj8B,KAAKw7J,0BAC1C,eAAuBx7J,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,KAQ1D63C,EAAKpzJ,UAAUsS,QAAU,WACrBxS,KAAK4xC,sBACD5xC,KAAK4zJ,mBACL5zJ,KAAK8gB,OAAOw2F,gBAAgB,CAAC,kBAEjCt3G,KAAKi1B,SAASziB,WAElB8gJ,EAAKpzJ,UAAUk7J,aAAe,WACtBp7J,KAAKi1B,WAAaj1B,KAAKi1B,SAASjM,cAChChpB,KAAKi1B,SAASziB,UACd,gBAAOxS,KAAKoD,WAGbkwJ,EAzVc,GA+VrBuI,EAAa,CACbtoF,OAAQ,UACRC,SAAU,UACVm9C,gBAAiB,UACjBD,cAAe,WACfE,UAAW,QACXC,YAAa,U,kCChXjB,0HAcIurC,EAA2B,WAS3B,SAASA,EAAUt7I,EAAQwiF,EAAmB+O,GAK1CryG,KAAK8hI,mBAAqB,GAI1B9hI,KAAK69G,uBAAyB,GAI9B79G,KAAK6hI,gBAAkB,GAIvB7hI,KAAKq+F,cAAe,EAIpBr+F,KAAKgiI,uBAAyB,GAC9BhiI,KAAKq8J,eAAgB,EACrBr8J,KAAKs8J,qBAAsB,EAC3Bt8J,KAAKu8J,oBAAqB,EAC1Bv8J,KAAKw8J,wBAAyB,EAC9Bx8J,KAAKy8J,wBAAyB,EAC9Bz8J,KAAK08J,eAAgB,EACrB18J,KAAK28J,gBAAiB,EACtB38J,KAAK48J,iBAAmB,GACxB58J,KAAK68J,mBAAqB,GAC1B78J,KAAK6zG,kBAAoB,EACzB7zG,KAAK88J,aAAe,GACpB98J,KAAK+8J,gBAAiB,EACtB/8J,KAAKg9J,oBAAsB,GAC3Bh9J,KAAKi9J,eAAiB,GACtBj9J,KAAKk9J,uBAAwB,EAC7Bl9J,KAAKm9J,qBAAsB,EAC3Bn9J,KAAKo9J,kBAAmB,EACxBp9J,KAAKq9J,qBAAsB,EAC3Br9J,KAAKs9J,WAAY,EACjBt9J,KAAKu9J,aAAc,EACnBv9J,KAAKw9J,eAAgB,EACrBx9J,KAAKy9J,cAAe,EACpBz9J,KAAK09J,kBAAmB,EACxB19J,KAAK29J,sBAAuB,EAC5B39J,KAAK49J,qBAAsB,EAC3B59J,KAAK69J,oBAAqB,EAC1B79J,KAAK89J,aAAc,EACnB99J,KAAK+9J,mBAAoB,EACzB/9J,KAAKwkG,oBAAqB,EAC1BxkG,KAAKg+J,oBAAqB,EAC1Bh+J,KAAKi+J,iBAAkB,EAIvBj+J,KAAKk+J,qBAAsB,EAC3Bl+J,KAAK6V,OAAS,YACd7V,KAAK+E,IAAM,YAEX/E,KAAKm+J,aAAe,cACpBn+J,KAAKo+J,YAAc,cACnBp+J,KAAKq+J,UAAY,cACjBr+J,KAAKs+J,SAAW,cAChBt+J,KAAKu+J,WAAa,cAClBv+J,KAAKw+J,iBAAmB,gBACxBx+J,KAAKy+J,gBAAkB,gBACvBz+J,KAAK0+J,eAAiB,gBACtB1+J,KAAK2+J,kBAAoB,gBACzB3+J,KAAK4+J,WAAa,MAClB5+J,KAAK8gB,OAASA,EACd9gB,KAAKsjG,kBAAoBA,EACzBtjG,KAAK6+J,QAAUxsD,EAAQ1R,WAAW,mBAClC3gG,KAAK6mD,MAAQwrD,EAAQ1R,WAAW,SAChC3gG,KAAK+oB,mBACL/oB,KAAK4T,aAq0HT,OAn0HAwoJ,EAAUl8J,UAAU4+J,oBAAsB,WACtC9+J,KAAK8gB,OAAO6U,IAAI,yBAChB31B,KAAK2T,UAUTyoJ,EAAUl8J,UAAU6+J,cAAgB,SAAU1qI,EAAM7lB,GAChDxO,KAAK8gB,OAAO7Y,QAAQuG,EAAMxO,KAAKg/J,YAAY3qI,KAE/C+nI,EAAUl8J,UAAU8+J,YAAc,SAAU3qI,GACxC,IAAKr0B,KAAK09J,oBAAsB,eAAkBrpI,EAAK+qF,aAAe,eAAkB/qF,EAAKvO,WAAY,CACrG,IAAI03G,EAASx9H,KAAKi/J,UAAU,eAAkB5qI,EAAKvO,UAAY,eAAkBuO,EAAK+qF,WAClFp/G,KAAKk/J,aAAe7qI,EAAK+qF,UAAUt5F,SAAWuO,EAAKvO,UACvDuO,EAAKsF,eAAiB6jG,EAAO7jG,eAEjC,OAAOtF,GAUX+nI,EAAUl8J,UAAUuyD,iBAAmB,SAAUp+B,EAAM7lB,GACnDxO,KAAK8gB,OAAO7Y,QAAQuG,EAAMxO,KAAKg/J,YAAY3qI,IAC3Cr0B,KAAK09J,kBAAmB,GAQ5BtB,EAAUl8J,UAAU4U,cAAgB,WAChC,MAAO,aAQXsnJ,EAAUl8J,UAAUsS,QAAU,WAC1B,IAAI2yD,EAAcnlE,KAAK8gB,OAAO1d,QACzB+hE,IAAiBA,EAAYj5D,cAAc,IAAM,SAAyBi5D,EAAYj5D,cAAc,IAAM,WAG/GlM,KAAKm/J,YACLn/J,KAAK48G,iBACL58G,KAAK4xC,sBACL5xC,KAAKy4C,eACL,OAAatzC,OAAOnF,KAAK8gB,OAAO8+C,aAAc,YAAa5/D,KAAKo/J,kBAChE,OAAaj6J,OAAOnF,KAAK8gB,OAAOm/C,mBAAoB,YAAajgE,KAAKo/J,oBAE1EhD,EAAUl8J,UAAUm/J,UAAY,WAC5B,OAA0C,WAAlCr/J,KAAK8gB,OAAOo9F,aAAazgG,MAAwD,UAAlCzd,KAAK8gB,OAAOo9F,aAAazgG,MAAoBzd,KAAK8gB,OAAOm+F,YAC5Gj/G,KAAK8gB,OAAOm+F,WAAWqgD,UAAYt/J,KAAK8gB,OAAOm+F,WAAWqgD,QAAQC,aAClEv/J,KAAK8gB,OAAOshD,SAAWpiE,KAAK8gB,OAAO4lG,oBAE3C01C,EAAUl8J,UAAUs/J,6BAA+B,WAC/C,IAAI7sI,EAAO3yB,KAAK8gB,OAChB,GAA+B,UAA3B6R,EAAKurF,aAAazgG,MAAoBkV,EAAKssF,WAAY,CACvD,IAAIwgD,EAAiB,gBAAcz/J,KAAK8gB,OAAOgzF,yBAC/C2rD,EAAsD,WAArC9sI,EAAKurF,aAAawhD,eAC/BD,EAAejyI,OAAOxtB,KAAK8gB,OAAOm+F,WAAW2nB,kBAAkB,SAC/D5mI,KAAK8gB,OAAOm+F,WAAW2nB,kBAAkB,QAAuBp5G,OAAOiyI,GAG3E,IAFA,IAAIrlI,EAAiBp6B,KAAK8gB,OAAOm+F,WAAW2nB,kBAAkB,QAC1D+4B,EAAa3/J,KAAK8gB,OAAO8Y,0BAA0B,GAC9C54B,EAAI,EAAGA,EAAKo5B,EAAqB,OAAGp5B,IACzC,IAAK,IAAI6iB,EAAI,EAAGA,EAAI47I,EAAe9+J,OAAQkjB,IACvC,GAAIuW,EAAezoB,SAAS3Q,EAAE4Q,WAAY,KAAK,GAAK+tJ,KAAgBF,EAAe9tJ,SAASkS,EAAEjS,WAAY,KAAK,GAAK+tJ,GAAa,CAC7HF,EAAe/yJ,OAAOmX,EAAG,GACzB,MAIZ,OAAO47I,EAEN,GAAIz/J,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,SAAWX,KAAK8gB,OAAO4lG,mBAAoB,CACtH,IAAIk5C,EAAsBjtI,EAAKmhF,wBAAwB11F,QAAO,SAAUgY,GAAO,YAAsB7qB,IAAf6qB,EAAI,UAC1F,OAAOwpI,EAGP,OAAOjtI,EAAKmhF,yBAUpBsoD,EAAUl8J,UAAU46H,UAAY,SAAUruH,EAAOw5H,GAC7C,GAAIjmI,KAAK8hI,mBAAmBnhI,QAAUX,KAAKsjG,kBAAkBu8D,8BACzD7/J,KAAK8/J,mBAAmB,CAACrzJ,QAD7B,CAIA,IAAIkmB,EAAO3yB,KAAK8gB,OACZw+G,EAAc3sG,EAAKmsF,cAAcryG,GACjC+wH,EAAS8B,GAAe3sG,EAAK8qG,oBAAoB6B,EAAY50H,aAAa,aAC9E,KAAI1K,KAAKwkG,oBAAsBg5B,GAAUA,EAAOl9B,YAAck9B,EAAOv6B,aAArE,CAGA,IAAI88D,EACAC,GAAY,EAChB,GAAIrtI,EAAK6B,sBAAwB/nB,GAAS,EAAG,CACzC,IAAIU,EAAI,CAAE8yJ,cAAexzJ,EAAOyzJ,aAAa,GAE7C,GADAlgK,KAAK8gB,OAAOwT,OAAO,QAAyBnnB,IACxCmyH,IAAgB3sG,EAAK8qG,oBAAoB6B,EAAY50H,aAAa,aAGjE,CACD,GAAIyC,EAAE+yJ,cAAgBvtI,EAAK2wE,kBAAkBC,iBAAkB,CAC3D,IAAI48D,EAAmBngK,KAAK8gB,OAAO67F,qBAC/BwjD,EAAiBx/J,OAAS,GAC1BX,KAAK8vI,oBAGb,OATAiwB,EAAaptI,EAAK8qG,oBAAoB6B,EAAY50H,aAAa,aAAa4S,UAahFyiJ,EAAa//J,KAAKi/J,UAAUxyJ,GAAO6Q,KAEvC,GAAKtd,KAAKogK,aAAgB9gC,IAAet/H,KAAKq/J,YAA9C,CAMA,IAOIhrI,EAPAgsI,EAAgB/gC,EAAYzrF,aAAa,iBAC7C7zC,KAAKsgK,eACLr6B,EAAYA,IACPjmI,KAAK8hI,mBAAmBnhI,SACe,IAAnCX,KAAK8hI,mBAAmBnhI,WAAgBX,KAAK89J,cAAe99J,KAAK8gB,OAAOy/E,sBAC7D9zF,IAAUzM,KAAK8hI,mBAAmB,KAH/BmE,EAIvBjmI,KAAK89J,aAAc,EAEnB,IAAIyC,EAAM,SACLt6B,EAWDjmI,KAAKwgK,qBAAqBnsI,EAAM4xG,EAAUx5H,EAAOszJ,EAAYC,EAAWK,EAAeE,EAAvFvgK,CAA4Fq0B,IAV5FA,EAAO,CACH/W,KAAMyiJ,EAAYj6I,SAAUrZ,EAAOg0J,cAAezgK,KAAKu8J,mBACvDmE,eAAgB1gK,KAAKs8J,oBAAqB36I,IAAK29G,EAC/CqhC,YAAahuI,EAAKmsF,cAAc9+G,KAAK4gK,cACrCC,iBAAkB7gK,KAAK4gK,aAActgK,OAAQN,KAAK8gK,aAAcryJ,QAAQ,EAAOE,aAAc3O,KAAK2O,aAClGoyJ,wBAAyB/gK,KAAK+gK,yBAElC/gK,KAAK8gB,OAAO7Y,QAAQ,QAAqBjI,KAAKg/J,YAAY3qI,GAAOr0B,KAAKwgK,qBAAqBnsI,EAAM4xG,EAAUx5H,EAAOszJ,EAAYC,EAAWK,EAAeE,SAMhKnE,EAAUl8J,UAAUsgK,qBAAuB,SAAUnsI,EAAM4xG,EAAUx5H,EAAOszJ,EAAYC,EAAWK,EAAeE,GAC9G,IAAIl9J,EAAQrD,KACZ,OAAO,SAAUq0B,GACR,eAAkBA,KAA4B,IAAnBA,EAAK,GAAKksI,IAI1Cl9J,EAAMoJ,MAAQA,EACdpJ,EAAM29J,OAAS/6B,EACf5iI,EAAMia,KAAOyiJ,EACb18J,EAAM49J,QAAUjB,EACZK,GAAiBh9J,EAAMigG,kBAAkBC,kBAA+D,oBAAzClgG,EAAMigG,kBAAkB4zB,cACvF7zH,EAAM69J,iBAAiBz0J,GACvBpJ,EAAM89J,sBAEAd,GAAiBh9J,EAAMigG,kBAAkBC,kBACN,oBAAzClgG,EAAMigG,kBAAkB4zB,cACxB7zH,EAAM89J,oBAEmC,oBAAzC99J,EAAMigG,kBAAkB4zB,eACxB7zH,EAAM46J,iBAAkB,EACxB56J,EAAMu5G,oBAELv5G,EAAMigG,kBAAkBC,kBAA6D,oBAAzClgG,EAAMigG,kBAAkB4zB,eACnE7zH,EAAMyd,OAAOy/E,qBAAuBl9F,EAAMigG,kBAAkBC,oBAC9DlgG,EAAMs5J,gBAAiB,EACvBt5J,EAAM+9J,aAtBN/9J,EAAMg+J,sBA0BlBjF,EAAUl8J,UAAUihK,kBAAoB,WACpC,IACI9sI,EADA1B,EAAO3yB,KAAK8gB,OAEZrU,EAAQzM,KAAKyM,MACbw5H,EAAWjmI,KAAKghK,OAChBjB,EAAa//J,KAAKsd,KAClB0iJ,EAAYhgK,KAAKihK,QACjB3hC,EAAc3sG,EAAKmsF,cAAcryG,GAChCw5H,GAAa+5B,IACVhgK,KAAK8hI,mBAAmB99H,QAAQyI,KAAW,GAC3CzM,KAAKshK,mBAAmBhiC,EAAa7yH,GAEzCzM,KAAKuhK,eAAe90J,IAEnBw5H,IACD5xG,EAAO,CACH/W,KAAMyiJ,EAAYj6I,SAAUrZ,EAC5BkV,IAAK29G,EAAaqhC,YAAahuI,EAAKmsF,cAAc9+G,KAAK4gK,cACvDC,iBAAkB7gK,KAAK4gK,aAActgK,OAAQN,KAAK8gK,aAAcnyJ,aAAc3O,KAAK2O,aACnF6yJ,wBAAyBxhK,KAAK+gK,wBAAyB5gD,WAAY1zG,GAEvEzM,KAAKyyD,iBAAiBp+B,EAAM,UAEhCr0B,KAAK2O,cAAe,EACpB3O,KAAKyhK,eAAeh1J,IASxB2vJ,EAAUl8J,UAAU+vI,kBAAoB,SAAUjoG,EAAYC,GAC1DjoC,KAAKkmI,WAAWlmI,KAAK0hK,yBAAyB15H,EAAYC,IAC1DjoC,KAAKuhK,eAAet5H,IAExBm0H,EAAUl8J,UAAUyhK,mBAAqB,SAAUC,EAAcjoI,EAAgBo3D,EAAcovB,EAAY0hD,GACvG,IAAK,IAAI7gK,EAAI,EAAG+X,EAAMonG,EAAWx/G,OAAQK,EAAI+X,EAAK/X,IAAK,CACnD,IAAI8gK,EAAa9hK,KAAK8gB,OAAO0+F,cAAcW,EAAWxuG,SAAS3Q,EAAE4Q,WAAY,MACzE5R,KAAK8gB,OAAO0T,uBACZstI,EAAa9hK,KAAK8gB,OAAOg+F,cAAcqB,EAAWxuG,SAAS3Q,EAAE4Q,WAAY,OAE7E,IAAI4rH,EAASx9H,KAAKi/J,UAAU6C,GACxBtkC,GAAUA,EAAOl9B,WAAak9B,EAAOv6B,cACrC2+D,EAAav1J,KAAKmxH,EAAOlgH,MACzByzE,EAAa1kF,KAAKy1J,GAClBnoI,EAAettB,KAAKmxH,EAAO7jG,iBAGvB35B,KAAKwkG,oBAAsBq9D,GAC3BA,EAAmBn1J,OAAOm1J,EAAmB79J,QAAQm8G,EAAWxuG,SAAS3Q,EAAE4Q,WAAY,MAAO,KAW9GwqJ,EAAUl8J,UAAUgmI,WAAa,SAAU/lB,GACvC,IAAI98G,EAAQrD,KACR2yB,EAAO3yB,KAAK8gB,OACZ+gJ,EAAqB1hD,EAAWzyG,QAChCoY,EAAY9lB,KAAK+hK,cAAgC5hD,EAAWA,EAAWx/G,OAAS,GAA/Cw/G,EAAW,GAChDngH,KAAK09J,kBAAmB,EACxB,IAAI3sE,EAAe,GACfp3D,EAAiB,GACjB4mI,EAAM,SACNqB,EAAe,GACnB,GAAK5hK,KAAKogK,cAAepgK,KAAKq/J,YAA9B,CAGAr/J,KAAK2hK,mBAAmBC,EAAcjoI,EAAgBo3D,EAAcovB,EAAY0hD,GAChF7hK,KAAKsgK,eACL,IAAIjsI,EAAO,CACP5lB,QAAQ,EACR0xG,WAAY0hD,EAAoBlgJ,IAAKovE,EAAcjrE,SAAUA,EAAUxlB,OAAQN,KAAK8gK,aACpFkB,QAASrvI,EAAKk3E,UAAU7pG,KAAK4gK,cAAeC,iBAAkB7gK,KAAK4gK,aACnEjyJ,aAAc3O,KAAK2O,aAAc8xJ,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,oBAC9Fh/I,KAAMskJ,EAAcb,wBAAyB/gK,KAAK+gK,wBAAyBpnI,eAAgBA,GAE/F35B,KAAK8gB,OAAO7Y,QAAQ,QAAqBjI,KAAKg/J,YAAY3qI,IAAO,SAAUA,GACvE,GAAK,eAAkBA,KAA4B,IAAnBA,EAAK,GAAKksI,GAA1C,CAIM5tI,EAAK+zC,qBAAuBrjE,EAAM4+J,WAAa5+J,EAAMigG,kBAAkBC,kBACzElgG,EAAM+9J,WAEV/9J,EAAMk+J,eAAeM,EAAmBn0J,OAAO,GAAG,IAClD,IAAIw0J,EAAc,SAAUz1J,EAAO4xF,GAC/Bh7F,EAAMi+J,mBAAmB3uI,EAAKmsF,cAAcryG,GAAQA,EAAO4xF,GAC3Dh7F,EAAMo+J,eAAe37I,IAEzB,GAAKziB,EAAM0+J,cAOPG,EAAYp8I,QANZ,IAAK,IAAIjY,EAAK,EAAGs0J,EAAuBN,EAAoBh0J,EAAKs0J,EAAqBxhK,OAAQkN,IAAM,CAChG,IAAIoxH,EAASkjC,EAAqBt0J,GAClCq0J,EAAYjjC,IAAQtsG,EAAK6B,sBAMjCH,EAAO,CACH8rF,WAAY0hD,EAAoBlgJ,IAAKovE,EAAcjrE,SAAUA,EAAUxlB,OAAQ+C,EAAMy9J,aACrFkB,QAASrvI,EAAKk3E,UAAUxmG,EAAMu9J,cAAeC,iBAAkBx9J,EAAMu9J,aACrEtjJ,KAAMja,EAAMs5G,qBAAsBhuG,aAActL,EAAMsL,aACtDoyJ,wBAAyB19J,EAAM09J,wBAAyBpnI,eAAgBA,GAExEt2B,EAAMg9J,eACNh9J,EAAMovD,iBAAiBp+B,EAAM,SAEjChxB,EAAMsL,cAAe,OA7BjBtL,EAAMg+J,yBAuClBjF,EAAUl8J,UAAU4/J,mBAAqB,SAAU3/C,GAC/C,IAAIxtF,EAAO3yB,KAAK8gB,OACZy/I,EAAM,SACNjgK,EAASN,KAAKM,OAClBN,KAAK09J,kBAAmB,EACxB,IAAI3sE,EAAe,GACfp3D,EAAiB,GACjBioI,EAAe,GACf12D,EAAUv4E,EAAK0tE,wBAAwB7yE,OAAO2yF,GAC9Cmf,EAAet/H,KAAK+hK,cACpBpvI,EAAKmsF,cAAcqB,EAAWA,EAAWx/G,OAAS,IADdgyB,EAAKmsF,cAAcqB,EAAW,IAEtE,GAAMngH,KAAKogK,cAAepgK,KAAKq/J,aAAiBr/J,KAAKsjG,kBAAkB8+D,aAAvE,CAGA,IAAI/tI,EACA4iG,EAAiBj3H,KAAK8gB,OAAOsS,aAAahV,QAAO,SAAUgY,GAAO,MAAoB,aAAbA,EAAI5nB,QAC7ExO,KAAKu8J,qBAAuBtlC,EAAet2H,QAC3CX,KAAK2hK,mBAAmBC,EAAcjoI,EAAgBo3D,EAAcma,GAExE,IAAK,IAAIr9F,EAAK,EAAGw0J,EAAeliD,EAAYtyG,EAAKw0J,EAAa1hK,OAAQkN,IAAM,CACxE,IAAIiY,EAAWu8I,EAAax0J,GACxB2vH,EAASx9H,KAAKi/J,UAAUn5I,GACxBw8I,EAAetiK,KAAK8hI,mBAAmB99H,QAAQ8hB,IAAa,EAChE,KAAI9lB,KAAKwkG,oBAAsBg5B,GAAUA,EAAOl9B,YAAck9B,EAAOv6B,aAArE,CAIA,GADAjjG,KAAKuhK,eAAez7I,GAChBw8I,IAAkBrrC,EAAet2H,QAAgBX,KAAKsjG,kBAAkBi/D,cAAiBviK,KAAKu8J,oBAAqB,CAGnH,GAFAv8J,KAAK29J,sBAAuB,EAC5B39J,KAAKwiK,YAAY,QAAuB,CAAC18I,GAAW,CAAC03G,EAAOlgH,MAAO,CAACgiH,GAAc,CAAC9B,EAAO7jG,gBAAiBr5B,GACvGN,KAAKo9J,iBACL,OAEJp9J,KAAK8hI,mBAAmBp1H,OAAO1M,KAAK8hI,mBAAmB99H,QAAQ8hB,GAAW,GAC1E9lB,KAAK6hI,gBAAgBn1H,OAAO1M,KAAK6hI,gBAAgB79H,QAAQs7H,GAAc,GACvEt/H,KAAKuhK,eAAevhK,KAAK8hI,mBAAmBnhI,OAASX,KAAK8hI,mBAAmB9hI,KAAK8hI,mBAAmBnhI,OAAS,IAAM,GACpH2+H,EAAY10H,gBAAgB,iBAC5B5K,KAAKyiK,uBAAuBnjC,GAAa,EAAO,KAAM,wBAAyB,YAC/Et/H,KAAKwiK,YAAY,QAAsB,CAAC18I,GAAW,CAAC03G,EAAOlgH,MAAO,CAACgiH,GAAc,CAAC9B,EAAO7jG,gBAAiBr5B,OAAQiL,OAAWA,OAAWA,GACxIvL,KAAK2O,cAAe,EACpB3O,KAAK09J,kBAAmB,EACxB19J,KAAK29J,sBAAuB,EAC5B39J,KAAKk9J,uBAAwB,MAE5B,CAWD,GAVAl9J,KAAKsgK,eACLjsI,EAAO,CACH5lB,QAAQ,EACR6O,KAAMskJ,EAAajhK,OAASihK,EAAepkC,EAAOlgH,KAAMwI,SAAUA,EAAUnE,IAAKovE,EAAapwF,OAASowF,EACnGuuC,EAAah/H,OAAQN,KAAK8gK,aAAckB,QAASrvI,EAAKk3E,UAAU7pG,KAAK4gK,cACzEC,iBAAkB7gK,KAAK4gK,aAAcH,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,oBAClG3iI,eAAgBA,EAAeh5B,OAASg5B,EAAiB6jG,EAAO7jG,eAAgBhrB,aAAc3O,KAAK2O,aACnGoyJ,wBAAyB/gK,KAAK+gK,wBAAyB5gD,WAAYjV,GAEvElrG,KAAK8gB,OAAO7Y,QAAQ,QAAqBjI,KAAKg/J,YAAY3qI,KACrD,eAAkBA,KAA4B,IAAnBA,EAAK,GAAKksI,GAEtC,YADAvgK,KAAKqhK,oBAGLrhK,KAAK+hK,eACL/hK,KAAKohK,WAETphK,KAAKshK,mBAAmBhiC,EAAax5G,GAazC,GAXKw8I,IACDjuI,EAAO,CACH/W,KAAMskJ,EAAajhK,OAASihK,EAAepkC,EAAOlgH,KAAMwI,SAAUA,EAAUnE,IAAKovE,EAAapwF,OAASowF,EACnGuuC,EAAah/H,OAAQN,KAAK8gK,aAAckB,QAASrvI,EAAKk3E,UAAU7pG,KAAK4gK,cACzEC,iBAAkB7gK,KAAK4gK,aAAcjnI,eAAgBA,EAAeh5B,OAASg5B,EAAiB6jG,EAAO7jG,eACrGhrB,aAAc3O,KAAK2O,aAAcoyJ,wBAAyB/gK,KAAK+gK,wBAAyB5gD,WAAYjV,GAExGlrG,KAAKyyD,iBAAiBp+B,EAAM,UAEhCr0B,KAAK2O,cAAe,EACpB3O,KAAKyhK,eAAe37I,GAChB9lB,KAAK+hK,cACL,UAIZ3F,EAAUl8J,UAAUwhK,yBAA2B,SAAU15H,EAAYC,GAKjE,IAJA,IAAIijE,EAAU,GAEVrnG,EAAMmkC,GAAcC,EACpB,CAAEjnC,EAAGgnC,EAAYrsB,IAAKssB,GAAa,CAAEjnC,EAAGinC,EAAUtsB,IAAKqsB,GAAchnC,EAAI6C,EAAG7C,EAAG2a,EAAM9X,EAAG8X,IACrF3a,GAAK2a,EAAK3a,IACbkqG,EAAQ7+F,KAAKrL,GAKjB,OAHIgnC,EAAaC,GACbijE,EAAQjnB,UAELinB,GAEXkxD,EAAUl8J,UAAUkhK,SAAW,WAC3BphK,KAAK08J,eAAgB,EACrB18J,KAAK8vI,qBAETssB,EAAUl8J,UAAUwiK,iBAAmB,WAC/B1iK,KAAKo9J,kBAAiD,UAA7Bp9J,KAAK8gB,OAAO0/E,eAGzCxgG,KAAK8hI,mBAAqB,GAC1B9hI,KAAK6hI,gBAAkB,GACvB7hI,KAAKuhK,gBAAgB,GACjBvhK,KAAK+hK,eAAiB/hK,KAAK8gB,OAAO4lG,qBAClC1mH,KAAK48J,iBAAmB,MAGhCR,EAAUl8J,UAAUghK,iBAAmB,SAAUz0J,GAC7C,GAAIzM,KAAKghK,OAAQ,CACb,IAAI2B,EAAc3iK,KAAK8gB,OAAOg+F,cAAcryG,GACvCzM,KAAKs9J,YACNqF,EAAY/3J,gBAAgB,iBAC5B5K,KAAKyiK,uBAAuBE,GAAa,GAAO,EAAM,wBAAyB,aAEnF3iK,KAAKihK,SAAU,EACfjhK,KAAK4iK,wBAAwBD,GAAa,GAC1C3iK,KAAK6iK,iBAAiBF,GACtB3iK,KAAK8hI,mBAAmBp1H,OAAO1M,KAAK8hI,mBAAmB99H,QAAQyI,GAAQ,GACvEzM,KAAK6hI,gBAAgBn1H,OAAO1M,KAAK6hI,gBAAgB79H,QAAQhE,KAAK8gB,OAAOg+F,cAAcryG,IAAS,KAGpG2vJ,EAAUl8J,UAAUuhK,eAAiB,SAAUz5H,GAC3ChoC,KAAK4gK,aAAe54H,EACpBhoC,KAAKqgK,cAAgBrgK,KAAK8hI,mBAAmBnhI,SAAU,GAE3Dy7J,EAAUl8J,UAAU4iK,WAAa,SAAUC,EAASzlJ,GAChD,OAAOylJ,GAAU,eAAeA,GAAW,eAAUA,EAASzlJ,GAA6BA,EAAK,GAAKylJ,IAEzG3G,EAAUl8J,UAAU0iK,wBAA0B,SAAUtjC,EAAa0jC,GACjE,IAAI3/J,EAAQrD,KACZ,IAAKA,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAK8gB,OAAOwiF,kBAAkBC,kBACjEvjG,KAAK8gB,OAAO8Y,0BAA0Bj5B,OAAS,KAAO,eAAkB2+H,GAAc,CACjFt/H,KAAK8gB,OAAO4lG,oBACb1mH,KAAKijK,+BAET,IAAIzlC,EAASx9H,KAAKi/J,UAAU3/B,GACxB77B,EAAS+5B,EAAOlgH,KAAOtd,KAAK8iK,WAAW9iK,KAAK2/J,WAAYniC,EAAOlgH,MAAQ,KAC3E,GAAe,OAAXmmF,EACA,OAEJ+5B,EAAO5zG,WAAao5I,EACfA,IAAahjK,KAAKwkG,oBAAwBxkG,KAAKwkG,oBAAsBg5B,EAAOv6B,cAAgBu6B,EAAO5zG,YACpG5pB,KAAK48J,iBAAiB,GAAKn5D,GAAUu/D,SAC7BhjK,KAAK68J,mBAAmB,GAAKp5D,GAChCzjG,KAAKg9J,oBAAoBzlI,MAAK,SAAUja,GAAQ,OAAOja,EAAMy/J,WAAWz/J,EAAMs8J,WAAYriJ,KAAUmmF,MACrGzjG,KAAKg9J,oBAAoB3wJ,KAAKmxH,EAAOlgH,OAIzCtd,KAAKkjK,oBAAoBz/D,KAIrC24D,EAAUl8J,UAAUgjK,oBAAsB,SAAUC,EAAM3+D,GACtD,IAKI/3F,EALApJ,EAAQrD,YACJA,KAAK48J,iBAAiB,GAAKuG,GAC/BnjK,KAAKg+J,qBACLh+J,KAAK68J,mBAAmB,GAAKsG,IAAQ,GAGzC,IAAIC,EAAYpjK,KAAKg9J,oBAAoBzlI,MAAK,SAAUja,EAAMtc,GAE1D,OADAyL,EAAQzL,EACDqC,EAAMy/J,WAAWz/J,EAAMs8J,WAAYriJ,KAAU6lJ,KAEpDC,IACApjK,KAAKg9J,oBAAoBtwJ,OAAOD,EAAO,GACnC+3F,GACAxkG,KAAK8gB,OAAO6iF,uBAAuBj3F,OAAOD,EAAO,KAI7D2vJ,EAAUl8J,UAAU2iK,iBAAmB,SAAUlhJ,EAAKqhJ,EAAUl9I,GAC5D,IAAK,eAAkBnE,GAAM,CACzB,IAAI+iF,EAAS/iF,EAAIzV,cAAc,kBAC1B,eAAkBw4F,KACnB,gBAAqBA,EAAO2+D,mBAAoBL,GAChD,gBAAWt+D,EAAQs+D,IACf,eAAkBhjK,KAAKsjK,iBAAoB,eAAkBtjK,KAAKsjK,iBAC9DtjK,KAAKsjK,cAAcp+J,UAAUmB,SAAS,sBAC1CrG,KAAKujK,iBAAiBz9I,MAKtCs2I,EAAUl8J,UAAUohK,mBAAqB,SAAUhiC,EAAat3F,EAAYq2D,GACxE,GAAKihC,KAGgD,IAAjDt/H,KAAK8hI,mBAAmB99H,QAAQgkC,KAChChoC,KAAK8hI,mBAAmBz1H,KAAK27B,GAC7BhoC,KAAK6hI,gBAAgBx1H,KAAKizH,IAE9BA,EAAY30H,aAAa,gBAAiB,QAC1C3K,KAAK4iK,wBAAwBtjC,GAAa,GAC1Ct/H,KAAK6iK,iBAAiBvjC,GAAa,GACnCt/H,KAAKyiK,uBAAuBnjC,GAAa,EAAM,KAAM,wBAAyB,aACzEt/H,KAAKq+F,cAAc,CACpB,IAAI/9F,EAASN,KAAK6mD,MAAM28G,iBAAiBpkD,UACrCkgB,EAAYr4D,MAAMjnE,KAAK6mD,MAAM28G,iBAAiBpkD,WAC9CkgB,EAAYpzH,cAAc,yFAI9B,GAHIlM,KAAK8gB,OAAO64G,mBAA0C,IAArB35H,KAAKyjK,cACtCnjK,EAASN,KAAK8gB,OAAO64G,kBAAkBxyD,OAEtC7mE,GAAU+9F,EACX,OAEJr+F,KAAK6mD,MAAM68G,QAAQ,CAAEpjK,OAAQA,IAAU,KAQ/C87J,EAAUl8J,UAAU08G,eAAiB,WAKjC,GAJA58G,KAAK2jK,uBAAwB,EACzB3jK,KAAKsjG,kBAAkBC,kBAAoBvjG,KAAKg9J,oBAAoBr8J,SACpEX,KAAKi9J,eAAiB,gBAAcj9J,KAAKg9J,uBAExCh9J,KAAK8gB,OAAO4lG,oBAAuB1mH,KAAK8gB,OAAO4lG,qBAAuB1mH,KAAK8gB,OAAOshD,SACjF,eAAkBpiE,KAAKsjK,gBAAkBtjK,KAAKsjK,cAAcp+J,UAAUmB,SAAS,oBAAsB,CACvG,IAAIs6B,EAAO3gC,KAAK8gB,OAAO1d,QAAQ8I,cAAc,gBAAgBA,cAAc,QACvEy0B,EAAKz7B,UAAUmB,SAAS,gBACxBs6B,EAAKz7B,UAAUC,OAAO,iBAEtBnF,KAAK8gB,OAAO4lG,qBACZ1mH,KAAKg9J,oBAAsB,GAC3Bh9J,KAAK48J,iBAAmB,IAE5B58J,KAAK8vI,oBACL9vI,KAAK6vI,qBACL7vI,KAAK4jK,uBACL5jK,KAAK4gK,kBAAer1J,EACpBvL,KAAK6jK,eAAYt4J,EACjBvL,KAAK8jK,gBAAav4J,EAClBvL,KAAKy8J,wBAAyB,EAC9Bz8J,KAAK2O,cAAe,EACpB3O,KAAK2jK,uBAAwB,EAC7B3jK,KAAKk9J,uBAAwB,IAQrCd,EAAUl8J,UAAU4vI,kBAAoB,WACpC,IAAIzsI,EAAQrD,KACZ,GAAIA,KAAKqgK,cAAe,CAOpB,IANA,IAAIjzD,EAASptG,KAAK8gB,OAAO0+F,cACrB7vF,EAAS,GACT4tG,EAAQ,GACRwmC,EAAa,GACbC,EAAmB,GACnBj2J,EAAW/N,KAAKM,OACXU,EAAI,EAAG+X,EAAM/Y,KAAK8hI,mBAAmBnhI,OAAQK,EAAI+X,EAAK/X,IAAK,CAChE,IAAI8gK,EAA+C,UAAlC9hK,KAAK8gB,OAAOo9F,aAAazgG,KACtCzd,KAAK8gB,OAAO+oF,UAAU7pG,KAAK8hI,mBAAmBnwH,SAAS3Q,EAAE4Q,WAAY,MACnE5R,KAAK8gB,OAAO0+F,cAAcx/G,KAAK8hI,mBAAmBnwH,SAAS3Q,EAAE4Q,WAAY,MAC3E4rH,EAASx9H,KAAKi/J,UAAU6C,GACxBtkC,IACA7tG,EAAOtjB,KAAKmxH,EAAOlgH,MACnBigH,EAAMlxH,KAAKy1J,GACXiC,EAAW13J,KAAKrM,KAAK8hI,mBAAmBnwH,SAAS3Q,EAAE4Q,WAAY,MAC/DoyJ,EAAiB33J,KAAKmxH,EAAO7jG,iBAGjC35B,KAAKsjG,kBAAkBC,kBAA4D,oBAAxCvjG,KAAKsjG,kBAAkB4zB,eAClEl3H,KAAKikK,eAAejkK,KAAK2jK,uBAE7B3jK,KAAKwiK,YAAY,QAAuBuB,EAAYp0I,EAAQ4tG,EAAOymC,EAAkBj2J,EAAU,MAAM,WACjG,GAAI1K,EAAM+5J,mBAAqB/5J,EAAM4gK,cAAgB5gK,EAAMsgK,uBAA0BtgK,EAAMsL,eACtFtL,EAAMyd,OAAO4lG,oBADlB,CAEI,GAAIrjH,EAAMyd,OAAO4lG,mBACb,GAAyF,iBAArFrjH,EAAM6gK,kBAAkB7gK,EAAMyd,OAAO1d,QAAQ8I,cAAc,sBAC3D,IAAK,IAAIlL,EAAI,EAAGA,EAAIqC,EAAMw+H,gBAAgBlhI,OAAQK,IAC9CqC,EAAMu/J,wBAAwBv/J,EAAMw+H,gBAAgBlwH,SAAS3Q,EAAE4Q,WAAY,MAAM,QAIrFvO,EAAMyd,OAAO0/E,aAAe,QAC5Bn9F,EAAM8gK,2BAA0B,GAGpC9gK,EAAMq5J,gBACNr5J,EAAMq/J,mBACNr/J,EAAMq5J,eAAgB,EAClBr5J,EAAMs5J,iBACNt5J,EAAM89J,oBACN99J,EAAMs5J,gBAAiB,QAlBnC,CAwBA,IADA,IAAIv5J,EAAU,GAAGsK,MAAMpK,KAAK8pG,EAAOhvF,QAAO,SAAUq4F,GAAU,OAAOA,EAAO5iE,aAAa,qBAChFhwB,EAAI,EAAGA,EAAIzgB,EAAQzC,OAAQkjB,IAC3BxgB,EAAMi6J,YACPl6J,EAAQuO,SAASkS,EAAEjS,WAAY,KAAKhH,gBAAgB,iBACpDvH,EAAMo/J,uBAAuBr/J,EAAQuO,SAASkS,EAAEjS,WAAY,MAAM,GAAO,EAAM,wBAAyB,aAGvGvO,EAAMw6J,oBACPx6J,EAAMu/J,wBAAwBx/J,EAAQuO,SAASkS,EAAEjS,WAAY,MAAM,GAEvEvO,EAAMw/J,iBAAiBz/J,EAAQuO,SAASkS,EAAEjS,WAAY,MAE1DvO,EAAMy+H,mBAAqB,GAC3Bz+H,EAAMw+H,gBAAkB,GACxBx+H,EAAMg9J,eAAgB,EACtBh9J,EAAMk+J,gBAAgB,GACtBl+J,EAAMw6J,oBAAqB,EAC3Bx6J,EAAMm/J,YAAY,QAAsBuB,EAAYp0I,EAAQ4tG,EAAOymC,EAAkBj2J,EAAU,UAAMxC,EAAW,MAC5GlI,EAAMq5J,gBACNr5J,EAAMq/J,mBACNr/J,EAAMq5J,eAAgB,EAClBr5J,EAAMs5J,iBACNt5J,EAAM89J,oBACN99J,EAAMs5J,gBAAiB,OAGhC,WAGC38J,KAAK08J,gBACL18J,KAAK0iK,mBACL1iK,KAAK08J,eAAgB,EACjB18J,KAAK28J,iBACL38J,KAAKmhK,oBACLnhK,KAAK28J,gBAAiB,KAKtCP,EAAUl8J,UAAUsiK,YAAc,SAAUh0J,EAAMsX,EAAUxI,EAAMqE,EAAKgY,EAAgBr5B,EAAQ8jK,EAAMC,EAAqBC,GACtH,IAAIjhK,EAAQrD,KACZ,GAAKA,KAAKsjG,kBAAkBC,mBAAqBvjG,KAAKikK,cAAgBjkK,KAAK2jK,uBAA0B3jK,KAAK6mD,MAAM,cAC5G7mD,KAAK6mD,MAAM0mF,YAAYnqI,QAAQ8B,UAAUmB,SAAS,iBAA+C,UAA5BrG,KAAK6mD,MAAM,gBAC/E7mD,KAAKsjG,kBAAkBC,iBAAkB,CAC1C,IAAIghE,EAAU,SACVC,EAAoC,IAApB1+I,EAASnlB,QAA+C,IAA/BX,KAAKi9J,eAAet8J,OAC7D8jK,EAAiB,CACjB3+I,SAAUA,EAAS,GAAIxI,KAAMtd,KAAKsjG,kBAAkBC,kBAAkD,YAA7BvjG,KAAK8gB,OAAO0/E,eAChFgkE,GAA0D,oBAAxCxkK,KAAKsjG,kBAAkB4zB,aAAqCl3H,KAAKi9J,eAAiB3/I,EACzGqc,eAAgBA,EAAgBlrB,QAAQ,EAAOE,aAAc3O,KAAK2O,aAClEoyJ,wBAAyB/gK,KAAK+gK,yBAErB,kBAATvyJ,UACOi2J,EAAeh2J,OAE1B,IAAIi2J,EAAc,MACdnvJ,EAAW,SACXovJ,EAAS,WACTC,EAAW,aACXC,EAAU,OACVpvD,EAAa,iBACjBgvD,EAAe,GAAKC,GAAe/iJ,EACnC8iJ,EAAe,GAAKlvJ,GAAYvV,KAAK8gK,aACrC,IAAIgE,EAAuB9kK,KAAK8gK,eAAiB,eAAkB,eAAQ9gK,KAAK8gK,aAAc,UAC1FgE,GAAwBh/I,EAASnlB,OAAS,GAC1C8jK,EAAe,GAAKE,GAAU7+I,EAAS,GACvC2+I,EAAe,GAAKG,GAAY9+I,GAEP,IAApBA,EAASnlB,SACd8jK,EAAe,GAAKI,GAAWJ,EAAe,GAAKI,GAAS,GAC5DJ,EAAe,GAAKC,GAAeD,EAAe,GAAKC,GAAa,GACpED,EAAe,GAAKhvD,GAAcgvD,EAAe,GAAKhvD,GAAY,GAC9Dz1G,KAAK29J,uBACL8G,EAAe,GAAKG,GAAY9+I,IAGxC9lB,KAAK8gB,OAAO7Y,QAAQuG,EAAMi2J,GAAgB,SAAUpwI,GAChDhxB,EAAM+5J,iBAAmB/oI,EAAK,GAAKkwI,GAC9BlhK,EAAM+5J,mBAAsB/5J,EAAM4gK,cAAiB5gK,EAAMsL,cAAiBtL,EAAMsgK,yBACjFtgK,EAAMu/J,wBAAwBjhJ,EAAI,IAAI,GACtCte,EAAMw/J,iBAAiBlhJ,EAAI,QAAIpW,EAAWua,EAAS,UAE3Bva,IAAxB84J,GACAA,YAIHrkK,KAAKsjG,kBAAkBC,mBAAqBvjG,KAAK2O,mBAC1BpD,IAAxB84J,GACAA,KAIZjI,EAAUl8J,UAAU++J,UAAY,SAAUt9I,GAEtC,YADY,IAARA,IAAkBA,EAAM3hB,KAAKk/J,cAC7B,eAAkBv9I,GACX,IAEQ,kBAARA,IACPA,EAAM3hB,KAAK8gB,OAAOg+F,cAAcn9F,IAEhCA,GACO3hB,KAAK8gB,OAAO28G,oBAAoB97G,EAAIjX,aAAa,cAErD,KASX0xJ,EAAUl8J,UAAUimI,WAAa,SAAU/mB,EAAW6mB,GAClD,GAAKjmI,KAAK+kK,aAAV,CAGA,IACI1wI,EADA1B,EAAO3yB,KAAK8gB,OAEZkkJ,EAAeryI,EAAKosF,iBAAiBK,EAAUt5F,SAAU9lB,KAAKilK,YAAY7lD,EAAUt5F,SAAUs5F,EAAUA,YAC5Gp/G,KAAKk/J,aAAe9/C,EAAUt5F,SAC9B,IAAI87I,EAAe5hK,KAAKw/J,+BAA+Bx/J,KAAKk/J,cAC5D,GAAKl/J,KAAK+kK,cAAiBC,IAAgBhlK,KAAKq/J,YAAhD,CAGA,IAAI6F,EAAiBF,EAAa9/J,UAAUmB,SAAS,6BAIrD,GAHA4/H,EAAYA,GAAwB,gBAAYjmI,KAAK6jK,YACjDzkD,EAAUt5F,WAAa9lB,KAAK6jK,UAAU/9I,UAAYs5F,EAAUA,YAAcp/G,KAAK6jK,UAAUzkD,WACzF8lD,EAFmBj/B,EAGlBA,EAgBDjmI,KAAKmlK,gBAAgB9wI,EAAM4xG,EAAU7mB,EAAW4lD,EAAcpD,EAA9D5hK,CAA4Eq0B,OAhBjE,CACXA,EAAO,CACH/W,KAAMskJ,EAAcxiD,UAAWA,EAC/BqhD,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,oBAC7D8I,gBAAiBplK,KAAK8jK,WAClB9jK,KAAKqlK,aAAarlK,KAAK8jK,WAAWh+I,SAAU9lB,KAAK8jK,WAAW1kD,gBAAa7zG,EAC7EkD,QAAQ,GAEZ,IAAI62J,EAAc,cAClBjxI,EAAK,GAAKixI,GAAeN,EACzB,IAAIO,EAAuB,uBAC3BlxI,EAAK,GAAKkxI,GAAwBvlK,KAAK8jK,WACvC9jK,KAAK8gB,OAAO7Y,QAAQ,OAAsBjI,KAAKg/J,YAAY3qI,GAAOr0B,KAAKmlK,gBAAgB9wI,EAAM4xG,EAAU7mB,EAAW4lD,EAAcpD,IAChI5hK,KAAKy9J,cAAe,MAM5BrB,EAAUl8J,UAAUilK,gBAAkB,SAAUK,EAAmBv/B,EAAU7mB,EAAW4lD,EAAcpD,GAClG,IAAIv+J,EAAQrD,KACZ,OAAO,SAAUwlK,GACb,IAAIC,EAAO,SACPH,EAAc,cAClB,IAAK,eAAkBE,KAAuD,IAAjCA,EAAkB,GAAKC,MAG/Dx/B,IACDu/B,EAAkB,GAAKF,GAAeE,EAAkB,GAAKF,GAAeE,EAAkB,GAAKF,GAAeN,GAEtH3hK,EAAMqiK,YACDz/B,GACD5iI,EAAMsiK,oBAAoBX,EAAc5lD,EAAUt5F,SAAUs5F,EAAUA,YAErE6mB,GAAU,CACX,IAAI5xG,EAAO,CACP/W,KAAMskJ,EAAcxiD,UAAWA,EAAWkmD,YAAaN,EACvDY,qBAAsBviK,EAAMw6G,uBAC5BunD,gBAAiB/hK,EAAMygK,WACnBzgK,EAAMgiK,aAAahiK,EAAMygK,WAAWh+I,SAAUziB,EAAMygK,WAAW1kD,gBAAa7zG,GAEhFg6J,EAAuB,uBAC3BlxI,EAAK,GAAKkxI,GAAwBliK,EAAMygK,WACxCzgK,EAAMwiK,gBAAgBzmD,EAAWA,GACjC/7G,EAAMovD,iBAAiBp+B,EAAM,WAIzC+nI,EAAUl8J,UAAUmlK,aAAe,SAAUxmD,EAAMD,GAC/C,OAAO5+G,KAAK8gB,OAAOi+F,iBAAiBF,EAAMD,IAS9Cw9C,EAAUl8J,UAAUi/G,mBAAqB,SAAUn3E,EAAYC,GAC3D,IAAI5kC,EAAQrD,KACZ,GAAKA,KAAK+kK,aAAV,CAGA,IAEIrpJ,EACAC,EAGA+iG,EANA/rF,EAAO3yB,KAAK8gB,OACZkkJ,EAAeryI,EAAKosF,iBAAiB/2E,EAAWliB,SAAUkiB,EAAWo3E,WAGrE0mD,EAAU99H,EACV+9H,EAAU99H,EAAWA,GAAsBD,EAE/ChoC,KAAKk/J,aAAel3H,EAAWliB,SAC/B,IAAI2/I,EAAO,SACP7D,EAAe5hK,KAAKw/J,+BAA+Bx/J,KAAKk/J,cAC5D,IAAIl/J,KAAK+hK,eAAkB/hK,KAAK+kK,eAAgB/kK,KAAKq/J,YAArD,CAGA,IAAIhrI,EAAO,CACP/W,KAAMskJ,EAAcxiD,UAAWp3E,EAAYs9H,YAAaN,EACxDvE,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,oBAC7D8I,gBAAiBplK,KAAK8jK,WAAa9jK,KAAKqlK,aAAarlK,KAAK8jK,WAAWh+I,SAAU9lB,KAAK8jK,WAAW1kD,gBAAa7zG,GAE5Gg6J,EAAuB,uBAC3BlxI,EAAK,GAAKkxI,GAAwBvlK,KAAK8jK,WACvC9jK,KAAK8gB,OAAO7Y,QAAQ,OAAsBjI,KAAKg/J,YAAY3qI,IAAO,SAAUmxI,GACxE,GAAK,eAAkBA,KAAuD,IAAjCA,EAAkB,GAAKC,GAApE,CAIA,GADApiK,EAAMqiK,YACF19H,EAAWliB,SAAWmiB,EAASniB,SAAU,CACzC,IAAIq5D,EAAOn3C,EACXA,EAAaC,EACbA,EAAWk3C,EAEf,IAAK,IAAIn+E,EAAIgnC,EAAWliB,SAAU9kB,GAAKinC,EAASniB,SAAU9kB,IAAK,CACvDqC,EAAMigG,kBAAkB6a,kBAAkBn6G,QAAQ,OAAS,GAC3D0X,EAAM1a,IAAMgnC,EAAWliB,SAAYkiB,EAAoB,UAAI,EAC3DrsB,EAAM3a,IAAMinC,EAASniB,SAAYmiB,EAAkB,UAAI5kC,EAAM2iK,gBAAgBhlK,KAG7E0a,EAAMssB,EAAWo3E,UACjBzjG,EAAMssB,EAASm3E,WAEnBV,EAAc,GACd,IAAK,IAAI76F,EAAInI,EAAMC,EAAMD,EAAMC,EAAK5C,EAAM2C,EAAMC,EAAMD,EAAMC,EAAKkI,GAAK9K,EAAK8K,IACvEmhJ,EAAeryI,EAAKosF,iBAAiB/9G,EAAG6iB,GACnCmhJ,IAGLtmD,EAAYryG,KAAKwX,GACjBxgB,EAAMsiK,oBAAoBX,GAC1B3hK,EAAM4iK,aAAajB,IAEvB3hK,EAAMw6G,uBAAuBxxG,KAAK,CAAEyZ,SAAU9kB,EAAG09G,YAAaA,IAElE,IAAIwnD,EAAmB,CACnB5oJ,KAAMskJ,EAAcxiD,UAAW2mD,EAAST,YAAa3yI,EAAKosF,iBAAiBgnD,EAAQjgJ,SAAUigJ,EAAQ3mD,WACrGwmD,qBAAsBviK,EAAMw6G,uBAC5BunD,gBAAiB/hK,EAAMygK,WAAazgK,EAAMgiK,aAAahiK,EAAMygK,WAAWh+I,SAAUziB,EAAMygK,WAAW1kD,gBAAa7zG,GAEhHg6J,EAAuB,uBAC3BW,EAAiB,GAAKX,GAAwBliK,EAAMygK,WAC/CzgK,EAAM4+J,YACP5+J,EAAMovD,iBAAiByzG,EAAkB,QACzC7iK,EAAMo6J,cAAe,GAEzBp6J,EAAMwiK,gBAAgBC,EAASC,UASvC3J,EAAUl8J,UAAU6vI,YAAc,SAAUC,GACxC,GAAKhwI,KAAK+kK,aAAV,CAGA,IAAIpyI,EAAO3yB,KAAK8gB,OACZkkJ,EAAeryI,EAAKosF,iBAAiBixB,EAAe,GAAGlqH,SAAUkqH,EAAe,GAAGtxB,YAAY,IACnG1+G,KAAKk/J,aAAelvB,EAAe,GAAGlqH,SACtC,IAAI87I,EAAe5hK,KAAKw/J,+BAA+Bx/J,KAAKk/J,cAC5D,IAAIl/J,KAAK+hK,eAAkB/hK,KAAK+kK,eAAgB/kK,KAAKq/J,YAArD,CAGA,IAAI8G,EAAiB,CACjB7oJ,KAAMskJ,EAAcxiD,UAAW4wB,EAAe,GAAGtxB,YAAY,GAC7D4mD,YAAaN,EAAcvE,cAAezgK,KAAKu8J,mBAC/CmE,eAAgB1gK,KAAKs8J,oBACrB8I,gBAAiBplK,KAAK8jK,WAAa9jK,KAAKqlK,aAAarlK,KAAK8jK,WAAWh+I,SAAU9lB,KAAK8jK,WAAW1kD,gBAAa7zG,GAE5Gg6J,EAAuB,uBAC3BY,EAAe,GAAKZ,GAAwBvlK,KAAK8jK,WACjD9jK,KAAK++J,cAAcoH,EAAgB,QACnC,IAAK,IAAInlK,EAAI,EAAG+X,EAAMi3H,EAAervI,OAAQK,EAAI+X,EAAK/X,IAClD,IAAK,IAAI6iB,EAAI,EAAGuiJ,EAAUp2B,EAAer+H,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/9G,OAAQkjB,EAAIuiJ,EAASviJ,IAClGmhJ,EAAeryI,EAAKosF,iBAAiBixB,EAAer+H,SAAS3Q,EAAE4Q,WAAY,KAAKkU,SAAUkqH,EAAer+H,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/sG,SAASkS,EAAEjS,WAAY,MACnKozJ,IAGLhlK,KAAK2lK,oBAAoBX,GACzBhlK,KAAKimK,aAAajB,GAClBhlK,KAAKqmK,gBAAgB,CAAEvgJ,SAAUkqH,EAAer+H,SAAS3Q,EAAE4Q,WAAY,KAAKkU,SACxEs5F,UAAW4wB,EAAer+H,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/sG,SAASkS,EAAEjS,WAAY,QAGrG5R,KAAK6lK,gBAAgB,CAAE//I,SAAUkqH,EAAe,GAAGlqH,SAAUs5F,UAAW4wB,EAAe,GAAGtxB,YAAY,IAAM,CAAE54F,SAAUkqH,EAAe,GAAGlqH,SAAUs5F,UAAW4wB,EAAe,GAAGtxB,YAAY,KAC7L,IAAIwnD,EAAmB,CACnB5oJ,KAAMskJ,EAAcxiD,UAAW4wB,EAAe,GAAGtxB,YAAY,GAC7D4mD,YAAaN,EAAcY,qBAAsB5lK,KAAK69G,uBACtDunD,gBAAiBplK,KAAK8jK,WAAa9jK,KAAKqlK,aAAarlK,KAAK8jK,WAAWh+I,SAAU9lB,KAAK8jK,WAAW1kD,gBAAa7zG,GAE5G+6J,EAAkB,uBACtBJ,EAAiB,GAAKI,GAAmBtmK,KAAK8jK,WAC9C9jK,KAAKyyD,iBAAiByzG,EAAkB,WAS5C9J,EAAUl8J,UAAUqmK,oBAAsB,SAAU7nD,GAChD,GAAK1+G,KAAK+kK,aAAV,CAGA,IACIC,EACAv4J,EAFAkmB,EAAO3yB,KAAK8gB,OAGhB9gB,KAAKk/J,aAAexgD,EAAY,GAAG54F,SACnC,IAAI2/I,EAAO,SACP7D,EAAe5hK,KAAKw/J,+BAA+Bx/J,KAAKk/J,cAC5D,IAAIl/J,KAAK+hK,eAAkB/hK,KAAK+kK,eAAgB/kK,KAAKq/J,YAArD,CAIA,IAAI7hC,EADJx9H,KAAKwmK,eAELhpC,EAAS7qG,EAAKsvE,gBAAgByc,EAAY,GAAG54F,UACzC6M,EAAK4C,cAAc7S,QAAQ/hB,OAAS,IACpC68H,EAAS7qG,EAAK8qG,oBAAoBz9H,KAAKM,OAAOo1C,cAAchrC,aAAa,cAG7E,IADA,IAAIivB,EAAiB,GACZ9rB,EAAK,EAAG44J,EAAgB/nD,EAAa7wG,EAAK44J,EAAc9lK,OAAQkN,IAAM,CAE3E,IADA,IAAIuxG,EAAYqnD,EAAc54J,GACrB7M,EAAI,EAAG+X,EAAM/Y,KAAK69G,uBAAuBl9G,OAAQK,EAAI+X,EAAK/X,IAC/D,GAAIhB,KAAK69G,uBAAuBlsG,SAAS3Q,EAAE4Q,WAAY,KAAKkU,WAAas5F,EAAUt5F,SAAU,CACzFrZ,EAAQzL,EACR,MAGRgkK,EAAeryI,EAAKosF,iBAAiBK,EAAUt5F,SAAU9lB,KAAKilK,YAAY7lD,EAAUt5F,SAAUs5F,EAAUA,YACxG,IAAIvS,EAAMuS,EAAUA,UAChBzsF,EAAK4C,cAAc7S,QAAQ/hB,OAAS,EACpCg5B,EAAettB,KAAKmxH,EAAOv2D,MAAM4lC,EAAMl6E,EAAK4C,cAAc7S,QAAQ/hB,QAAQg5B,gBAG1EA,EAAettB,KAAKmxH,EAAOv2D,MAAMt1D,SAASk7F,EAAIj7F,WAAY,KAAK+nB,gBAEnE,IAAItF,EAAO,CACP5lB,QAAQ,EAAO6O,KAAMskJ,EAAcxiD,UAAWV,EAAY,GAC1DgiD,eAAgB1gK,KAAKs8J,oBACrBgJ,YAAaN,EAAcvE,cAAezgK,KAAKu8J,mBAC/C6I,gBAAiBplK,KAAK8jK,WAClBnxI,EAAKosF,iBAAiB/+G,KAAK8jK,WAAWh+I,SAAU9lB,KAAK8jK,WAAW1kD,gBAAa7zG,GAEjF+6J,EAAkB,uBACtBjyI,EAAK,GAAKiyI,GAAmBtmK,KAAK8jK,WAClC,IAAIxB,EAAe71J,GAAS,EAC5B,GAAI61J,EAAc,CACd,IAAIoE,EAAkB1mK,KAAK69G,uBAAuBlsG,SAASlF,EAAMmF,WAAY,KAAK8sG,YAC9EgoD,EAAgB1iK,QAAQo7G,EAAUA,YAAc,GAAsC,SAAhCp/G,KAAKsjG,kBAAkB7lF,MAC7EunJ,EAAa9/J,UAAUmB,SAAS,kBAAoB2+J,EAAat6J,aAAa,kBAC9E1K,KAAK2mK,aAAa,OAAwB,CAAC,CAAE7gJ,SAAUs5F,EAAUt5F,SAAU44F,YAAa,CAACU,EAAUA,aAAewiD,EAAc,CAACoD,GAAerrI,GAChJ+sI,EAAgBh6J,OAAOg6J,EAAgB1iK,QAAQo7G,EAAUA,WAAY,GACtC,IAA3BsnD,EAAgB/lK,QAChBX,KAAK69G,uBAAuBnxG,OAAOD,EAAO,GAE9Cu4J,EAAa9/J,UAAUC,OAAO,6BAC9B6/J,EAAap6J,gBAAgB,iBAC7B5K,KAAK2mK,aAAa,OAAuB,CAAC,CAAE7gJ,SAAUs5F,EAAUt5F,SAAU44F,YAAa,CAACU,EAAUA,aAAewiD,EAAc,CAACoD,GAAerrI,KAG/I2oI,GAAe,EACftiK,KAAK++J,cAAc1qI,EAAM,QACzBr0B,KAAKqmK,gBAAgB,CAAEvgJ,SAAUs5F,EAAUt5F,SAAUs5F,UAAWA,EAAUA,YAC1Ep/G,KAAK2lK,oBAAoBX,GACzBhlK,KAAKimK,aAAajB,QAGrB,CAED,GADAhlK,KAAK++J,cAAc1qI,EAAM,SACpB,eAAkBA,KAA6B,IAApBA,EAAK,GAAKoxI,GACtC,OAEJzlK,KAAK2lK,oBAAoBX,EAAc5lD,EAAUt5F,SAAUs5F,EAAUA,WAEzE,IAAKkjD,EAAc,CACf,IAAI4D,EAAmB,CACnB5oJ,KAAMskJ,EAAcxiD,UAAWV,EAAY,GAAI4mD,YAAaN,EAC5DI,gBAAiBplK,KAAK8jK,WAAa9jK,KAAKqlK,aAAarlK,KAAK8jK,WAAWh+I,SAAU9lB,KAAK8jK,WAAW1kD,gBAC3F7zG,EAAWq6J,qBAAsB5lK,KAAK69G,wBAE9CqoD,EAAiB,GAAKI,GAAmBtmK,KAAK8jK,WAC9C9jK,KAAKyyD,iBAAiByzG,EAAkB,QACxClmK,KAAKy9J,cAAe,EAExBz9J,KAAK6lK,gBAAgBzmD,EAAWA,OAGxCg9C,EAAUl8J,UAAU+kK,YAAc,SAAUn/I,EAAUrZ,GAClD,IAAI2pB,EAAMp2B,KAAK8gB,OAAOk+F,iBAAiBvyG,GACnCw6D,EAAQ,eAAoBjnE,KAAK8gB,OAAQsV,EAAKtQ,GAClD,GAAImhD,EACA,IAAK,IAAI44C,EAAI,EAAGA,EAAI54C,EAAMtmE,OAAQk/G,IAAK,CACnC,IAAIhY,EAAWl2F,SAASs1D,EAAMt1D,SAASkuG,EAAEjuG,WAAY,KAAKlH,aAAa,QAAwB,IAC/F,GAAIm9F,IAAap7F,EACb,OAAOozG,EAInB,OAAQ,GAEZu8C,EAAUl8J,UAAU8lK,gBAAkB,SAAUlgJ,GAC5C,IAAImhD,EAAQjnE,KAAK8gB,OAAO0+F,cAAc7tG,SAASmU,EAASlU,WAAY,KAAKk7C,iBAAiB,gBAC1F,OAAOn7C,SAASs1D,EAAMA,EAAMtmE,OAAS,GAAG+J,aAAa,QAAwB,KAEjF0xJ,EAAUl8J,UAAUwlK,UAAY,WAC5B1lK,KAAK6vI,sBAETusB,EAAUl8J,UAAUymK,aAAe,SAAUn4J,EAAMkwG,EAAaphG,EAAM2pD,EAAOttC,GACzE,IAAIitI,EAAQ,SACZ,GAAI3/F,GAASA,EAAMtmE,OAAS,EACxB,IAAK,IAAIkN,EAAK,EAAGmyF,EAAU/4B,EAAOp5D,EAAKmyF,EAAQr/F,OAAQkN,IAAM,CACzD,IAAIs5D,EAAO64B,EAAQnyF,GACfs5D,GAAQA,EAAKjiE,UAAUmB,SAAS,SAChCrG,KAAK6iK,iBAAiB,eAAQ17F,EAAM,OAIhD,IAAI9yC,EAAO,CACP4yC,MAAOA,EAAO3pD,KAAMA,EAAMohG,YAAaA,EAAa/kF,eAAgBA,EAAgBlrB,QAAQ,GAEhGzO,KAAK8gB,OAAO7Y,QAAQuG,EAAM6lB,GAC1Br0B,KAAKq9J,oBAAsBhpI,EAAK,GAAKuyI,IAEzCxK,EAAUl8J,UAAUylK,oBAAsB,SAAUX,EAAcl/I,EAAUs5F,GACnE,eAAkBt5F,IACnB9lB,KAAKqmK,gBAAgB,CAAEvgJ,SAAUA,EAAUs5F,UAAWA,IAE1D4lD,EAAa9/J,UAAU4G,IAAI,6BACvBk5J,EAAa9/J,UAAUmB,SAAS,SAChCrG,KAAK6iK,iBAAiB,eAAQmC,EAAc,OAAO,GAEvDhlK,KAAKimK,aAAajB,IAEtB5I,EAAUl8J,UAAU+lK,aAAe,SAAU9+F,GACzCnnE,KAAKM,OAAS6mE,EACT,eAAkBA,KACnBA,EAAKx8D,aAAa,gBAAiB,QAC9B3K,KAAKq+F,cACNr+F,KAAK6mD,MAAM68G,QAAQ,CAAEpjK,OAAQ6mE,IAAQ,KAIjDi1F,EAAUl8J,UAAU2lK,gBAAkB,SAAU79H,EAAYC,GACxDjoC,KAAK6jK,UAAY77H,EACjBhoC,KAAK8jK,WAAa77H,EAClBjoC,KAAKklK,eAAiBllK,KAAK69G,uBAAuBl9G,SAAU,GAEhEy7J,EAAUl8J,UAAUmmK,gBAAkB,SAAUQ,GAG5C,IAFA,IAAIC,EACAr6J,EACKzL,EAAI,EAAG+X,EAAM/Y,KAAK69G,uBAAuBl9G,OAAQK,EAAI+X,EAAK/X,IAC/D,GAAIhB,KAAK69G,uBAAuBlsG,SAAS3Q,EAAE4Q,WAAY,KAAKkU,WAAa+gJ,EAAa/gJ,SAAU,CAC5FghJ,GAAa,EACbr6J,EAAQzL,EACR,MAGJ8lK,EACI9mK,KAAK69G,uBAAuBlsG,SAASlF,EAAMmF,WAAY,KAAK8sG,YAAY16G,QAAQ6iK,EAAaznD,WAAa,GAC1Gp/G,KAAK69G,uBAAuBlsG,SAASlF,EAAMmF,WAAY,KAAK8sG,YAAYryG,KAAKw6J,EAAaznD,WAI9Fp/G,KAAK69G,uBAAuBxxG,KAAK,CAAEyZ,SAAU+gJ,EAAa/gJ,SAAU44F,YAAa,CAACmoD,EAAaznD,cAQvGg9C,EAAUl8J,UAAU2vI,mBAAqB,WACrC,GAAI7vI,KAAKklK,eAAgB,CACrB,IAAIvyI,EAAO3yB,KAAK8gB,OACZimJ,EAAgB/mK,KAAKgnK,0BACrBpwG,EAAU52D,KAAK69G,uBACfvgG,EAAO,GACP2pD,EAAQ,GACRttC,EAAiB,GACjBzhB,EAAkBlY,KAAKw/J,+BAC3Bx/J,KAAKwmK,eACL,IAAK,IAAIxlK,EAAI,EAAG+X,EAAM69C,EAAQj2D,OAAQK,EAAI+X,EAAK/X,IAAK,CAChDsc,EAAKjR,KAAK6L,EAAgB0+C,EAAQjlD,SAAS3Q,EAAE4Q,WAAY,KAAKkU,WAE9D,IADA,IAAI03G,EAASx9H,KAAKi/J,UAAUroG,EAAQjlD,SAAS3Q,EAAE4Q,WAAY,KAAKkU,UACvDjC,EAAI,EAAGojJ,EAAOrwG,EAAQjlD,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/9G,OAAQkjB,EAAIojJ,EAAMpjJ,IACjF25G,EAAOv2D,OACPttC,EAAettB,KAAKmxH,EAAOv2D,MAAMrQ,EAAQjlD,SAAS3Q,EAAE4Q,WAAY,KAC3D8sG,YAAY/sG,SAASkS,EAAEjS,WAAY,MAAM+nB,gBAElDstC,EAAM56D,KAAKsmB,EAAKosF,iBAAiBnoD,EAAQjlD,SAAS3Q,EAAE4Q,WAAY,KAAKkU,SAAU8wC,EAAQjlD,SAAS3Q,EAAE4Q,WAAY,KAAK8sG,YAAY/sG,SAASkS,EAAEjS,WAAY,OAI9J,GADA5R,KAAK2mK,aAAa,OAAwB/vG,EAASt5C,EAAM2pD,EAAOttC,IAC/B,IAA7B35B,KAAKq9J,oBACL,OAEJ,IAASr8J,EAAI,EAAG+X,EAAMguJ,EAAcpmK,OAAQK,EAAI+X,EAAK/X,IACjD+lK,EAAcp1J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAUC,OAAO,6BAC3D4hK,EAAcp1J,SAAS3Q,EAAE4Q,WAAY,KAAKhH,gBAAgB,iBAE1D5K,KAAKknK,YACLlnK,KAAKmnK,gBAAgB,QAEzBnnK,KAAK69G,uBAAyB,GAC9B79G,KAAKklK,gBAAiB,GACjBllK,KAAKiiK,WAAajiK,KAAKy9J,cACxBz9J,KAAK2mK,aAAa,OAAuB/vG,EAASt5C,EAAM2pD,EAAOttC,KAI3EyiI,EAAUl8J,UAAU8mK,wBAA0B,WAI1C,IAHA,IAAIr0I,EAAO3yB,KAAK8gB,OACZ8B,EAAO+P,EAAK6sF,cACZv4C,EAAQ,GACHjmE,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,IACxCimE,EAAQA,EAAMz5C,OAAO,GAAG9f,MAAMpK,KAAKsf,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKoiC,uBAAuB,+BAE/F,OAAOizB,GAEXm1F,EAAUl8J,UAAUqpB,iBAAmB,SAAUpc,GAC7CA,EAAE+F,iBACFlT,KAAKonK,YACL,IAMIhhG,EANAihG,EAASrnK,KAAK8gB,OAAO1d,QAAQgE,wBAC7Bo+B,EAAKxlC,KAAKgG,EACV0/B,EAAK1lC,KAAKiG,EACVlC,EAAW,eAAYoJ,GACvBs4B,EAAK1hC,EAASiC,EAAIqhK,EAAOriK,KACzB2gC,EAAK5hC,EAASkC,EAAIohK,EAAOtiK,IAEzBzE,EAAS,eAAQ6M,EAAE7M,OAAQ,MAqB/B,GApBAN,KAAKiiK,WAAY,EACZjiK,KAAKsnK,aACDhnK,IACDA,EAAS,eAAQsN,SAAS25J,iBAAiBvnK,KAAK8gB,OAAO1d,QAAQwN,WAAa,EAAGzD,EAAE43C,SAAU,OAE3Fvf,EAAKC,IACL2gC,EAAM3gC,EACNA,EAAKD,EACLA,EAAK4gC,GAEL1gC,EAAKC,IACLygC,EAAMzgC,EACNA,EAAKD,EACLA,EAAK0gC,GAETpmE,KAAKoD,QAAQ2D,MAAM/B,KAAOwgC,EAAK,KAC/BxlC,KAAKoD,QAAQ2D,MAAMhC,IAAM2gC,EAAK,KAC9B1lC,KAAKoD,QAAQ2D,MAAMzB,MAAQmgC,EAAKD,EAAK,KACrCxlC,KAAKoD,QAAQ2D,MAAM1B,OAASsgC,EAAKD,EAAK,MAEtCplC,IAAW6M,EAAEm4C,UAAYn4C,EAAEmrI,SAAU,CACrC,IAAIxyH,EAAWnU,SAASrR,EAAOoK,aAAa,QAAwB,IACpE,GAAK1K,KAAKsnK,WAKL,CACD,IAAIpmE,EAAK,gBAAa/zF,EAAE7M,OAAQ,QAC5B4gG,IACAlhG,KAAKwnK,YAAcxnK,KAAKynK,UACxBznK,KAAK0nK,UAAY,gBAAav6J,EAAE7M,OAAQ,QACpCwlB,GAAY,GACZ9lB,KAAK2nK,gBAAgBx6J,EAAG2Y,EAAUnU,SAASuvF,EAAGx2F,aAAa,QAAwB,WAV3F1K,KAAKwmK,eACLxmK,KAAKiwI,kBAAkBjwI,KAAK4nK,YAAa9hJ,GACzC9lB,KAAK+9J,mBAAoB,EAa5B5wJ,EAAEm4C,SAAYn4C,EAAEmrI,UAAat4I,KAAK8gB,OAAO0T,sBAAyBx0B,KAAK8gB,OAAO2T,yBAC9Ez0B,KAAK8gB,OAAO++C,4BAA+B7/D,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,SAAUX,KAAKsnK,YAC7FtnK,KAAK6nK,qBAAqB16J,EAAGpJ,EAAU/D,KAAK8gB,OAAO8+C,eAG3Dw8F,EAAUl8J,UAAU2nK,qBAAuB,SAAU16J,EAAGpJ,EAAU+jK,GAC9D,IAAIzkK,EAAQrD,KACR+nK,EAAUD,EAAW1gK,wBACrB2gK,EAAQ/iK,MAAQjB,EAASiC,EAAI,GAC7BhG,KAAKgoK,OAASzhK,OAAO0hK,aAAY,WAAc5kK,EAAMuwD,kBAAkBk0G,EAAW9hH,kBAAmB,OAAQ74C,KAAO,KAE/G46J,EAAQ/iK,KAAO8iK,EAAWv+J,YAAc,IACrB,SAAvBvJ,KAAK8gB,OAAOzb,OAAoB,iBAAsB,GAAKtB,EAASiC,IACrEhG,KAAKgoK,OAASzhK,OAAO0hK,aAAY,WAAc5kK,EAAMuwD,kBAAkBk0G,EAAW9hH,kBAAmB,QAAS74C,KAAO,MAErH46J,EAAQhjK,KAAOhB,EAASkC,EAAkC,GAA7BjG,KAAK8gB,OAAOo/C,eACzClgE,KAAKkoK,OAAS3hK,OAAO0hK,aAAY,WAAc5kK,EAAMuwD,kBAAkBk0G,EAAW9hH,kBAAmB,KAAM74C,KAAO,KAE7G46J,EAAQhjK,IAAM+iK,EAAWx+J,aAA6C,GAA7BtJ,KAAK8gB,OAAOo/C,gBACzD4nG,EAAW9hH,kBAAkBwa,YAAcsnG,EAAW9hH,kBAAkBx8C,YACrE,iBAAsB,IAAMzF,EAASkC,IACzCjG,KAAKkoK,OAAS3hK,OAAO0hK,aAAY,WAAc5kK,EAAMuwD,kBAAkBk0G,EAAW9hH,kBAAmB,OAAQ74C,KAAO,OAG5HivJ,EAAUl8J,UAAUknK,UAAY,WACxBpnK,KAAKgoK,SACLzhK,OAAO4hK,cAAcnoK,KAAKgoK,QAC1BhoK,KAAKgoK,OAAS,MAEdhoK,KAAKkoK,SACL3hK,OAAO4hK,cAAcnoK,KAAKkoK,QAC1BloK,KAAKkoK,OAAS,MAElBloK,KAAKq+F,cAAe,GAExB+9D,EAAUl8J,UAAU0zD,kBAAoB,SAAUk0G,EAAYxxI,EAAWnpB,GACrE,IAAI2Y,GAAY,EACZ+hF,GAAY,EAKhB,QAJI7nG,KAAK0nK,WAAa1nK,KAAK8jK,cACvBh+I,EAAW9lB,KAAK0nK,UAAY/1J,SAAS3R,KAAK0nK,UAAUh9J,aAAa,UAAY1K,KAAK8jK,WAAWh+I,SAC7F+hF,EAAW7nG,KAAK0nK,UAAY/1J,SAAS3R,KAAK0nK,UAAUh9J,aAAa,kBAAoB1K,KAAK8jK,WAAW1kD,WAEjG9oF,GACJ,IAAK,KACD,GAAInpB,GAAK,eAAQA,EAAE7M,OAAQ,oBACvB,OACAN,KAAKooK,eAAiBpoK,KAAK69G,uBAAuBl9G,SACT,IAAvCX,KAAK69G,uBAAuBl9G,QAAgBX,KAAKwnK,cAAgBxnK,KAAKynK,WACnEznK,KAAK69G,uBAAuBl9G,OAAS,GAAKX,KAAKwnK,YAAYpgK,wBAAwBrC,IAAM,KAC9F+gB,EAAWnU,SAAS3R,KAAKwnK,YAAY98J,aAAa,WAEtDob,GAAY,EACR9lB,KAAK8gB,OAAOk/C,aACZl6C,GAAY9lB,KAAK8gB,OAAOk/C,WAAa,GACzCl6C,EAAW,EAAIgiJ,EAAW72J,UAAY,EAAI62J,EAAW72J,WAAajR,KAAK8gB,OAAOg+F,cAAch5F,GAAUrc,aACtG,MACJ,IAAK,OACGqc,EAAW9lB,KAAK8gB,OAAO+oF,UAAUlpG,OAAS,GAC1CmlB,GAAY,EACZgiJ,EAAW72J,WAAajR,KAAK8gB,OAAOg+F,cAAch5F,GAAUrc,cAG5Dq+J,EAAW72J,UAAY62J,EAAWzkG,aAEtC,MACJ,IAAK,OACD,GAAIwkC,EAAW,GAAK/hF,GAAY,EAAG,CAC3B9lB,KAAKooK,eAAiBpoK,KAAK69G,uBAAuBl9G,SAChDX,KAAK69G,uBAAuB,GAAGa,YAAY/9G,OAAS,GAAKX,KAAKwnK,cAAgBxnK,KAAKynK,WAChFznK,KAAK69G,uBAAuB,GAAGa,YAAY/9G,OAAS,GAAKX,KAAKwnK,YAAYpgK,wBAAwBpC,KAAO,KAC9G6iG,EAAWl2F,SAAS3R,KAAKwnK,YAAY98J,aAAa,mBAEtD,IAAI29J,EAAUroK,KAAKsoK,aAAaR,EAAYxxI,EAAWuxE,EAAU/hF,GACjE+hF,EAAWwgE,EAAU12J,SAAS02J,EAAQ39J,aAAa,mBAAqB,EACxEm9F,EAAW,EAAIigE,EAAWh3J,WAAa,EAAIg3J,EAAWh3J,YAAcu3J,EAAQ7+J,YAEhF,MACJ,IAAK,QACD,GAAIq+F,EAAW7nG,KAAK8gB,OAAO4B,QAAQ/hB,OAAS,EAAG,CACvC0nK,EAAUroK,KAAKsoK,aAAaR,EAAYxxI,EAAWuxE,EAAU/hF,GACjE+hF,EAAWwgE,EAAU12J,SAAS02J,EAAQ39J,aAAa,mBAAqB,EACxEm9F,EAAW7nG,KAAK8gB,OAAO4B,QAAQ/hB,OAAS,EAAImnK,EAAWh3J,YAAcu3J,EAAQ7+J,YAAcs+J,EAAWh3J,WAAag3J,EAAWtnG,YAElI,MAER,GAAI16C,GAAY,GAAK+hF,GAAY,EAAG,CAChC,IAAI0gE,EAAM,CAAEjoK,OAAQN,KAAK8gB,OAAOi+F,iBAAiBj5F,EAAU+hF,IAC3D7nG,KAAK0nK,UAAYa,EAAIjoK,OACrBN,KAAKq+F,cAAe,EACpBr+F,KAAK2nK,gBAAgBY,EAAKziJ,EAAU+hF,KAG5Cu0D,EAAUl8J,UAAUooK,aAAe,SAAUR,EAAYxxI,EAAWkyI,EAAQC,GACxE,IAAIJ,EAAUroK,KAAK8gB,OAAOi+F,iBAAiB0pD,EAAsB,SAAdnyI,EAAuBkyI,EAAS,EAAIA,EAAS,GAChG,GAAIH,GAAWA,EAAQnjK,UAAUmB,SAAS,UAAW,CACjD,IAAIqiK,EAAcL,EAAQjiK,QAAQ,MAAM0mD,iBAAiB,2BACrD67G,EAAa/oK,MAAM0hJ,KAAKonB,GAAa1kK,QAAQqkK,EAAQhF,oBACzD,OAAIsF,EAAa,GAAKA,EAAaD,EAAY/nK,OAAS,GACpD0nK,EAAUK,EAAYC,GAA4B,SAAdryI,GAAwB,EAAI,IACzD+xI,IAGPP,EAAWh3J,WAAa,EACjB,MAGf,OAAOu3J,GAEXjM,EAAUl8J,UAAUynK,gBAAkB,SAAUx6J,EAAG2Y,EAAUs5F,GACpDp/G,KAAKooK,eAMNpoK,KAAK4oK,gBACL5oK,KAAK6oK,mBAAmB17J,KANxBnN,KAAK6vI,qBACL7vI,KAAKm/G,mBAAmB,CAAEr5F,SAAU9lB,KAAK4nK,YAAaxoD,UAAWp/G,KAAK8oK,iBAAmB,CAAEhjJ,SAAUA,EAAUs5F,UAAWA,IAC1Hp/G,KAAK+oK,gBAOb3M,EAAUl8J,UAAU8oK,iBAAmB,SAAUxhE,EAAWpiF,EAAQ6jJ,GAChE,IAAI3jK,EAAQ8f,EAAOre,MAAMmmB,YAAYtb,WAAW3N,MAAM,KAClDilK,EAAU,CAAC,GAAI,eAAgB,aAAc,eAAgB,aAAc,gBAAiB,iBAC5FjiG,EAAQ,GAAGv5D,MAAMpK,KAAKkkG,EAAU16C,iBAAiB,8BAAqCo8G,EAAQ,GAAKD,KACnG7qJ,QAAO,SAAUkhB,GAAO,MAA6B,KAAtBA,EAAIv4B,MAAMC,WACzCmiK,EAAa,GAAGz7J,MAAMpK,KAAKkkG,EAAU16C,iBAAiB,6CACtD1uC,QAAO,SAAUkhB,GAAO,MAA6B,KAAtBA,EAAIv4B,MAAMC,WACzCoiK,EAAQppK,KAAK8gB,OAAOrb,UACxB,GAAIwhE,EAAMtmE,OAKN,IAJA,IAAI0oK,EAAcpiG,EAAM,GAAGv8D,aAAa,SACpC4+J,EAAcriG,EAAM,GAAGv8D,aAAa,iBACpC6+J,EAAatiG,EAAMA,EAAMtmE,OAAS,GAAG+J,aAAa,SAClD8+J,EAAaviG,EAAMA,EAAMtmE,OAAS,GAAG+J,aAAa,iBAC7C1J,EAAI,EAAGA,EAAIimE,EAAMtmE,OAAQK,IAC1BimE,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,WAAa2+J,IAAiC,IAAjB/jK,EAAM3E,QAAkC,IAAjB2E,EAAM3E,QAC3E,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,MAC9E2hE,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,sBAEhDm7D,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,mBAAqB4+J,IAAiC,IAAjBhkK,EAAM3E,QACxE,IAAjB2E,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,UAAoByoK,GAAoC,IAA3Bz3J,SAASrM,EAAM,GAAI,KAC9G8jK,GAAoC,IAA3Bz3J,SAASrM,EAAM,GAAI,OAC7B2hE,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAIs9J,EAAQ,uBAAyB,uBAEjFniG,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,WAAa6+J,IAAgC,IAAjBjkK,EAAM3E,QAC/D,IAAjB2E,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,MAClG2hE,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,yBAEhDm7D,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,mBAAqB8+J,IAAgC,IAAjBlkK,EAAM3E,QACvE,IAAjB2E,EAAM3E,QAA2C,IAA3BgR,SAASrM,EAAM,GAAI,KAAgC,IAAjBA,EAAM3E,SAAmByoK,GAAoC,IAA3Bz3J,SAASrM,EAAM,GAAI,KAC7G8jK,GAAoC,IAA3Bz3J,SAASrM,EAAM,GAAI,MAC7B2hE,EAAMt1D,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAIs9J,EAAQ,sBAAwB,wBAI5F,GAAID,EAAWxoK,OAKX,IAJI0oK,EAAcF,EAAW,GAAGz+J,aAAa,SACzC4+J,EAAcH,EAAW,GAAGz+J,aAAa,iBACzC6+J,EAAaJ,EAAWA,EAAWxoK,OAAS,GAAG+J,aAAa,SAC5D8+J,EAAaL,EAAWA,EAAWxoK,OAAS,GAAG+J,aAAa,iBACvD1J,EAAI,EAAGA,EAAImoK,EAAWxoK,OAAQK,IAAK,CACxC,IAAI6rG,EAAMs8D,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,SAC1D61G,EAAS4oD,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAKlH,aAAa,iBAC7DmiG,IAAQw8D,IACLrpK,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,8CACzC,gBAAas7F,EAAW,eAAkB,gBAAaA,EAAW,cACzE2hE,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,sBAErD+gG,IAAQ08D,IACLvpK,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,8CACnC,gBAAas7F,EAAW,qBAAwB,gBAAaA,EAAW,oBAC/E2hE,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAI,yBAEzD,IAAI29J,EAAUN,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAK8jC,cAAcuQ,SAASt0C,SAAS4uG,EAAQ,IAAM,GAC/FA,IAAW+oD,GAAiBG,KAAYA,GAAYA,EAAQvkK,UAAUmB,SAAS,+BAC/E8iK,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAIs9J,EAAQ,uBAAyB,uBAE1F,IAAIM,EAAWP,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAK8jC,cAAcuQ,SAASt0C,SAAS4uG,EAAQ,IAAM,GAChGA,IAAWipD,GAAgBE,KAAaA,GAAaA,EAASxkK,UAAUmB,SAAS,+BACjF8iK,EAAWx3J,SAAS3Q,EAAE4Q,WAAY,KAAK1M,UAAU4G,IAAIs9J,EAAQ,sBAAwB,0BAKrGhN,EAAUl8J,UAAUypK,qBAAuB,WACnC3pK,KAAKknK,aACLlnK,KAAKgpK,iBAAiBhpK,KAAK8gB,OAAOmjD,kBAAmBjkE,KAAKknK,WAAY,KAClElnK,KAAK8gB,OAAOg/C,gBAAkB9/D,KAAK8gB,OAAOulF,kBAAoB,QAC9DrmG,KAAKgpK,iBAAiBhpK,KAAK8gB,OAAOmjD,kBAAmBjkE,KAAK4pK,cAAe,KAEzE5pK,KAAK8gB,OAAOk/C,aACZhgE,KAAKgpK,iBAAiBhpK,KAAK8gB,OAAOwqF,iBAAkBtrG,KAAK6pK,aAAc,KACnE7pK,KAAK8gB,OAAOg/C,gBAAkB9/D,KAAK8gB,OAAOulF,kBAAoB,QAC9DrmG,KAAKgpK,iBAAiBhpK,KAAK8gB,OAAOwqF,iBAAkBtrG,KAAK8pK,cAAe,QAKxF1N,EAAUl8J,UAAU6oK,YAAc,WACmB,kBAA7C/oK,KAAKsjG,kBAAkB6a,mBAAyCn+G,KAAK69G,uBAAuBl9G,SAAWX,KAAK8gB,OAAOshD,QACnHpiE,KAAK8gB,OAAO1d,QAAQ8B,UAAU4G,IAAI,mBAC7B9L,KAAKknK,YACNlnK,KAAK+pK,gBAET/pK,KAAKgqK,kBACDhqK,KAAK8gB,OAAOg/C,iBACZ9/D,KAAKmnK,gBAAgB,QAAQ,GAC7BnnK,KAAK2pK,yBAIT3pK,KAAKmnK,gBAAgB,SAG7B/K,EAAUl8J,UAAU+pK,WAAa,SAAU9iG,GACvC,IAAIF,EAAQ,GAAGv5D,MAAMpK,KAAK6jE,EAAKzxB,cAAcoX,iBAAiB,4BAC9D,OAAOma,EAAMA,EAAMtmE,OAAS,KAAOwmE,GAEvCi1F,EAAUl8J,UAAUgqK,UAAY,SAAU/iG,GACtC,IAAIvkD,EAAO,GAAGlV,MAAMpK,KAAK,eAAQ6jE,EAAM,QAAgBra,iBAAiB,6BACxE,OAAOqa,EAAKzxB,gBAAkB9yB,EAAKA,EAAKjiB,OAAS,IAErDy7J,EAAUl8J,UAAUiqK,WAAa,SAAUhjG,GACvC,IAAIvkD,EAAO,GAAGlV,MAAMpK,KAAK,eAAQ6jE,EAAM,QAAgBra,iBAAiB,6BACxE,OAAOqa,EAAKzxB,gBAAkB9yB,EAAK,IAEvCw5I,EAAUl8J,UAAUkqK,YAAc,SAAUjjG,GACxC,IAAIF,EAAQ,GAAGv5D,MAAMpK,KAAK6jE,EAAKzxB,cAAcoX,iBAAiB,4BAC9D,OAAOma,EAAM,KAAOE,GAExBi1F,EAAUl8J,UAAUmqK,WAAa,SAAU7iE,EAAWpiF,EAAQ6jJ,GAC1D,IAAIhiG,EAAQ,GAAGv5D,MAAMpK,KAAKkkG,EAAUxzD,uBAAuB,8BACvD51B,QAAO,SAAUkhB,GAAO,MAA6B,KAAtBA,EAAIv4B,MAAMC,WAC7C,GAAIigE,EAAMtmE,QAAUX,KAAK8gB,OAAOg/C,eAAgB,CAC5C,IAAIopG,EAAU,CAAC,GAAI,eAAgB,aAAc,eAAgB,aAAc,gBAAiB,iBAChGjiG,EAAQ,GAAGv5D,MAAMpK,KAAKkkG,EAAU16C,iBAAiB,8BAAqCo8G,EAAQ,GAAKD,GAAU,kBACzG7qJ,QAAO,SAAUkhB,GAAO,MAA6B,KAAtBA,EAAIv4B,MAAMC,WAEjD,GAAIigE,EAAMtmE,OAAQ,CACd,IAAI+hE,EAAW1iE,KAAK8gB,OAAOg/C,eACvB5iD,EAAQ+pD,EAAM,GACd9pD,EAAM8pD,EAAMA,EAAMtmE,OAAS,GAC3B2pK,EAAQptJ,EAAM9V,wBACdmjK,EAASptJ,EAAI/V,wBACbojK,EAAYttJ,EAAM04I,aAAaxuJ,yBAC/B8V,EAAM04I,aAAa1wJ,UAAUmB,SAAS,cAAgB6W,EAAM04I,aAAa1wJ,UAAUmB,SAAS,sBAC5FmkK,EAAYttJ,EAAM04I,aAAa1pJ,cAAc,SAAS9E,yBAE1D,IAAI27F,EAAargC,IAAY1iE,KAAKkqK,UAAU/sJ,IAAoB,MAAX8rJ,GAA6B,MAAXA,GAA6B,MAAXA,EAAsB,EAAJ,EACvGwB,EAAY,EACZC,EAAahoG,IAAwB,MAAXumG,GAA6B,MAAXA,IAAmBjpK,KAAKoqK,YAAYltJ,GAAS,EAAI,EAC7FytJ,GAAgD,UAAhC3qK,KAAK8gB,OAAOulF,iBAA2C,MAAX4iE,GAA6B,MAAXA,KAC1EjpK,KAAK8gB,OAAOulF,kBAAoB,QAAkC,MAAX4iE,GAA6B,MAAXA,KAC1EjpK,KAAKoqK,YAAYltJ,GAAa,EAAJ,EAC7Bld,KAAK8gB,OAAOrb,WACZ2f,EAAOre,MAAM6O,MAAQ40J,EAAU50J,MAAQ00J,EAAM10J,MAAQ80J,EAAa,KAClEtlJ,EAAOre,MAAMzB,MAAQglK,EAAM10J,MAAQ20J,EAAOvlK,KAAO0lK,EAAa,EAAI,OAGlEtlJ,EAAOre,MAAM/B,KAAOslK,EAAMtlK,KAAOwlK,EAAUxlK,KAAO0lK,EAAaC,EAAc,KAC7EvlJ,EAAOre,MAAMzB,MAAQilK,EAAO30J,MAAQ00J,EAAMtlK,KAAO0lK,EAAaC,EAAc,EAAI,MAEpFvlJ,EAAOre,MAAMhC,IAAMulK,EAAMvlK,IAAMylK,EAAUzlK,IAAM0lK,EAAY,KAC3DrlJ,EAAOre,MAAM1B,OAASklK,EAAOxlK,IAAMulK,EAAMvlK,IAAM,EAC1CwlK,EAAOxlK,IAAMylK,EAAUzlK,IAAMwlK,EAAOllK,QAAUq9D,EAAW,EAAI,IAAO4nG,EAAMvlK,IAAMylK,EAAUzlK,KAAOg+F,EAAY0nE,EAAY,KAC1HF,EAAOllK,OAASolK,EAAY1nE,GAAargC,EAAW,EAAI,GAAK,KACjE1iE,KAAK4qK,iBAAmB3B,OAGxB7jJ,EAAOre,MAAMC,QAAU,QAG/Bo1J,EAAUl8J,UAAU8pK,gBAAkB,WAClChqK,KAAK6qK,sBACA7qK,KAAKynK,WAAcznK,KAAKknK,YAAelnK,KAAK69G,uBAAuBl9G,SAGxEX,KAAK4qK,gBAAkB,GACvB5qK,KAAKmnK,gBAAgB,IACrBnnK,KAAKqqK,WAAWrqK,KAAK8gB,OAAOmjD,kBAAmBjkE,KAAKknK,WAAY,KAC5DlnK,KAAK8gB,OAAOg/C,iBACZ9/D,KAAKqqK,WAAWrqK,KAAK8gB,OAAOmjD,kBAAmBjkE,KAAK8qK,aAAc,KAC9D9qK,KAAK8gB,OAAOulF,kBAAoB,QAChCrmG,KAAKqqK,WAAWrqK,KAAK8gB,OAAOmjD,kBAAmBjkE,KAAK4pK,cAAe,MAGvE5pK,KAAK8gB,OAAOk/C,aACZhgE,KAAKqqK,WAAWrqK,KAAK8gB,OAAOwqF,iBAAkBtrG,KAAK6pK,aAAc,KAC7D7pK,KAAK8gB,OAAOg/C,iBACZ9/D,KAAKqqK,WAAWrqK,KAAK8gB,OAAOwqF,iBAAkBtrG,KAAK+qK,aAAc,KAC7D/qK,KAAK8gB,OAAOulF,kBAAoB,QAChCrmG,KAAKqqK,WAAWrqK,KAAK8gB,OAAOwqF,iBAAkBtrG,KAAK8pK,cAAe,OAI9E9pK,KAAKgrK,aAAahrK,KAAK4qK,mBAG3BxO,EAAUl8J,UAAU+qK,uBAAyB,SAAUx6H,GACnD,IAAIowB,EAAM7gE,KAAK8gB,OAAOrb,UACtB,OAAQgrC,EAAI9vC,QACR,KAAK,EAEGX,KAAKknK,WAAWngK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKm+J,aAAen+J,KAAKo+J,YACnEp+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAcltB,KAAK6V,OAC3C7V,KAAK6pK,aAAa9iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKq+J,UAAYr+J,KAAKs+J,SAClEt+J,KAAK+qK,aAAahkK,MAAMmmB,YAAcltB,KAAK+E,IAC3C/E,KAAK4pK,cAAc7iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKo+J,YAAcp+J,KAAKm+J,aACrEn+J,KAAK8pK,cAAc/iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKs+J,SAAWt+J,KAAKq+J,UAEtE,MACJ,KAAK,EAEO5tH,EAAI2gE,SAAS,MAAQ3gE,EAAI2gE,SAAS,MAAQ3gE,EAAI2gE,SAAS,MAAQ3gE,EAAI2gE,SAAS,OAC5EpxG,KAAK6pK,aAAa9iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKq+J,UAAYr+J,KAAKs+J,SAClEt+J,KAAK+qK,aAAahkK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKs+J,SAAWt+J,KAAKq+J,UACjEr+J,KAAKknK,WAAWngK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKm+J,aAAen+J,KAAKo+J,YACnEp+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKo+J,YAAcp+J,KAAKm+J,cAEpE1tH,EAAI2gE,SAAS,MAAQ3gE,EAAI2gE,SAAS,MAAQ3gE,EAAI2gE,SAAS,MAAQ3gE,EAAI2gE,SAAS,OAC5EpxG,KAAK8qK,aAAa/jK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKm+J,aAAen+J,KAAKo+J,YACrEp+J,KAAK+qK,aAAahkK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKq+J,UAAYr+J,KAAKs+J,SAClEt+J,KAAK4pK,cAAc7iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKo+J,YAAcp+J,KAAKm+J,aACrEn+J,KAAK8pK,cAAc/iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKs+J,SAAWt+J,KAAKq+J,WAG1E,MACJ,KAAK,EAEGr+J,KAAKknK,WAAWngK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACvEz+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAcltB,KAAKu+J,WAC3Cv+J,KAAK4pK,cAAc7iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,iBACrEx+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAa9iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACzEz+J,KAAK+qK,aAAahkK,MAAMmmB,YAAcltB,KAAKu+J,WAC3Cv+J,KAAK4pK,cAAc7iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,kBAGjF,MACJ,KAAK,EAEO/tH,EAAI2gE,SAAS,OACbpxG,KAAK8qK,aAAa/jK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,iBACpEx+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAa9iK,MAAMmmB,YAAcltB,KAAK0+J,iBAG/CjuH,EAAI2gE,SAAS,OACbpxG,KAAKknK,WAAWngK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACvEz+J,KAAK4pK,cAAc7iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,iBACrEx+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK+qK,aAAahkK,MAAMmmB,YAAcltB,KAAK0+J,iBAG/CjuH,EAAI2gE,SAAS,OACbpxG,KAAK+qK,aAAahkK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,iBACxEx+J,KAAKknK,WAAWngK,MAAMmmB,YAAcltB,KAAK2+J,mBAEzCluH,EAAI2gE,SAAS,OACbpxG,KAAK6pK,aAAa9iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACzEz+J,KAAK8pK,cAAc/iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,iBACzEx+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAcltB,KAAK2+J,mBAE3CluH,EAAI2gE,SAAS,OACbpxG,KAAK8qK,aAAa/jK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACrEz+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK8pK,cAAc/iK,MAAMmmB,YAAcltB,KAAK0+J,iBAGhDjuH,EAAI2gE,SAAS,OACbpxG,KAAK+qK,aAAahkK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACzEz+J,KAAK4pK,cAAc7iK,MAAMmmB,YAAcltB,KAAK2+J,mBAGpD,MACJ,QACI3+J,KAAKknK,WAAWngK,MAAMmmB,YAAcltB,KAAK4+J,WACzC5+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAcltB,KAAK4+J,WAC3C5+J,KAAK4pK,cAAc7iK,MAAMmmB,YAAcltB,KAAK4+J,WACxC5+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAa9iK,MAAMmmB,YAAcltB,KAAK4+J,WAC3C5+J,KAAK+qK,aAAahkK,MAAMmmB,YAAcltB,KAAK4+J,WAC3C5+J,KAAK8pK,cAAc/iK,MAAMmmB,YAAcltB,KAAK4+J,YAEhD,QAGZxC,EAAUl8J,UAAU8qK,aAAe,SAAUv6H,GACzC,IAAIowB,EAAM7gE,KAAK8gB,OAAOrb,UACtB,GAAIzF,KAAK8gB,OAAOulF,kBAAoB,OAChCrmG,KAAKirK,uBAAuBx6H,QAG5B,OAAQA,EAAI9vC,QACR,KAAK,EAEuC,UAAhCX,KAAK8gB,OAAOulF,iBACZrmG,KAAKknK,WAAWngK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKo+J,YAAcp+J,KAAKm+J,aAClEn+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKm+J,aAAen+J,KAAKo+J,YACrEp+J,KAAK6pK,aAAa9iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKs+J,SAAWt+J,KAAKq+J,UACjEr+J,KAAK+qK,aAAahkK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKq+J,UAAYr+J,KAAKs+J,WAGlEt+J,KAAKknK,WAAWngK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKm+J,aAAen+J,KAAKo+J,YACnEp+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKo+J,YAAcp+J,KAAKm+J,aACpEn+J,KAAK6pK,aAAa9iK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKq+J,UAAYr+J,KAAKs+J,SAClEt+J,KAAK+qK,aAAahkK,MAAMmmB,YAAc2zC,EAAM7gE,KAAKs+J,SAAWt+J,KAAKq+J,WAGzE,MACJ,KAAK,EAEuC,UAAhCr+J,KAAK8gB,OAAOulF,iBACZrmG,KAAKknK,WAAWngK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOvwC,EAAM7gE,KAAKy+J,gBAC7Dz+J,KAAKw+J,iBAAmBx+J,KAAK2+J,kBACnC3+J,KAAK8qK,aAAa/jK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOvwC,EAAM7gE,KAAKw+J,iBAC/Dx+J,KAAKy+J,gBAAkBz+J,KAAK2+J,kBAC9B3+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAa9iK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOpxG,KAAK0+J,eACzD79F,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,iBACxCx+J,KAAK+qK,aAAahkK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOpxG,KAAK0+J,eACzD79F,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,mBAI7Cz+J,KAAKknK,WAAWngK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOvwC,EAAM7gE,KAAKw+J,iBAC7Dx+J,KAAKy+J,gBAAkBz+J,KAAK2+J,kBAC9B3+J,KAAK8gB,OAAOg/C,iBACZ9/D,KAAK8qK,aAAa/jK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOvwC,EAAM7gE,KAAKy+J,gBAC/Dz+J,KAAKw+J,iBAAmBx+J,KAAK2+J,mBAEnC3+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAa9iK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOpxG,KAAK0+J,eACzD79F,EAAM7gE,KAAKw+J,iBAAmBx+J,KAAKy+J,gBACrCz+J,KAAK8gB,OAAOg/C,iBACZ9/D,KAAK+qK,aAAahkK,MAAMmmB,YAAcujB,EAAI2gE,SAAS,KAAOpxG,KAAK0+J,eACzD79F,EAAM7gE,KAAKy+J,gBAAkBz+J,KAAKw+J,oBAKxD,MACJ,QACIx+J,KAAKknK,WAAWngK,MAAMmmB,YAAcltB,KAAK4+J,WACrC5+J,KAAK8gB,OAAOg/C,iBACZ9/D,KAAK8qK,aAAa/jK,MAAMmmB,YAAcltB,KAAK4+J,YAE3C5+J,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAa9iK,MAAMmmB,YAAcltB,KAAK4+J,WACvC5+J,KAAK8gB,OAAOg/C,iBACZ9/D,KAAK+qK,aAAahkK,MAAMmmB,YAAcltB,KAAK4+J,aAGnD,QAIhBxC,EAAUl8J,UAAU6pK,cAAgB,WAC3B/pK,KAAKknK,aACNlnK,KAAKknK,WAAalnK,KAAK8gB,OAAOmjD,kBAAkBvuB,cAAchxC,YAAY,eAAc,MAAO,CAC3FF,UAAW,UAAW8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,OACnD4D,OAAQ,kCAERlP,KAAK8gB,OAAOg/C,iBACZ9/D,KAAK8qK,aAAe9qK,KAAK8gB,OAAOmjD,kBAAkBvuB,cAAchxC,YAAY,eAAc,MAAO,CAC7FF,UAAW,UAAW8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,SACnD4D,OAAQ,mCAERlP,KAAK8gB,OAAOulF,kBAAoB,SAChCrmG,KAAK4pK,cAAgB5pK,KAAK8gB,OAAOmjD,kBAAkBvuB,cAAchxC,YAAY,eAAc,MAAO,CAC9FF,UAAW,UAAW8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,UACnD4D,OAAQ,qCAIhBlP,KAAK8gB,OAAOk/C,aACZhgE,KAAK6pK,aAAe7pK,KAAK8gB,OAAOwqF,iBAAiB51D,cAAchxC,YAAY,eAAc,MAAO,CAAEF,UAAW,UAAW8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,SAAU4D,OAAQ,mBAEvKlP,KAAK8gB,OAAOk/C,YAAchgE,KAAK8gB,OAAOg/C,iBACtC9/D,KAAK+qK,aAAe/qK,KAAK8gB,OAAOwqF,iBAAiB51D,cAAchxC,YAAY,eAAc,MAAO,CAAEF,UAAW,UAAW8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,SAAU4D,OAAQ,kBACnKlP,KAAK8gB,OAAOulF,kBAAoB,SAChCrmG,KAAK8pK,cAAgB9pK,KAAK8gB,OAAOwqF,iBAAiB51D,cAAchxC,YAAY,eAAc,MAAO,CAAEF,UAAW,UAAW8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,UAAW4D,OAAQ,sBAKzLktJ,EAAUl8J,UAAUinK,gBAAkB,SAAUngK,EAASspF,GACrD,GAAItwF,KAAKknK,WAAY,CAEjB,GADAlnK,KAAKknK,WAAWngK,MAAMC,QAAUA,EAC5BhH,KAAK8gB,OAAOg/C,eAAgB,CAC5B,IAAI0nC,EAAYxnG,KAAK8gB,OAAOmjD,kBAC5B,gBAAYujC,EAAU16C,iBAAiB,uBAAwB,sBAC/D,gBAAY06C,EAAU16C,iBAAiB,wBAAyB,uBAChE,gBAAY06C,EAAU16C,iBAAiB,yBAA0B,wBACjE,gBAAY06C,EAAU16C,iBAAiB,0BAA2B,yBAC7DwjC,IACDtwF,KAAK8qK,aAAa/jK,MAAMC,QAAUA,GAElChH,KAAK8gB,OAAOulF,kBAAoB,SAChCrmG,KAAK4pK,cAAc7iK,MAAMC,QAAUA,GAG3C,GAAIhH,KAAK8gB,OAAOk/C,WAAY,CACpBwnC,EAAYxnG,KAAK8gB,OAAOwqF,iBAC5B,gBAAY9D,EAAU16C,iBAAiB,uBAAwB,sBAC/D,gBAAY06C,EAAU16C,iBAAiB,wBAAyB,uBAChE,gBAAY06C,EAAU16C,iBAAiB,yBAA0B,wBACjE,gBAAY06C,EAAU16C,iBAAiB,0BAA2B,yBAClE9sD,KAAK6pK,aAAa9iK,MAAMC,QAAUA,EAElChH,KAAK8gB,OAAOk/C,YAAchgE,KAAK8gB,OAAOg/C,iBACjCwwB,IACDtwF,KAAK+qK,aAAahkK,MAAMC,QAAUA,GAElChH,KAAK8gB,OAAOulF,kBAAoB,SAChCrmG,KAAK8pK,cAAc/iK,MAAMC,QAAUA,MAKnDo1J,EAAUl8J,UAAUgrK,cAAgB,WAC3BlrK,KAAKmrK,aACNnrK,KAAKorK,kBAETprK,KAAKqrK,qBAETjP,EAAUl8J,UAAUmrK,kBAAoB,WACpC,GAAKrrK,KAAKynK,WAAcznK,KAAKsrK,UAA7B,CAGA,IAAIhB,EAAQtqK,KAAKwnK,YAAYpgK,wBACzBmjK,EAASvqK,KAAK0nK,UAAUtgK,wBACxBrC,EAAMwlK,EAAOxlK,IAAMulK,EAAMvlK,IAAM,EAAI,EAAI,EACvCwmK,EAAehB,EAAOxlK,IAAMulK,EAAMvlK,KAAO,IAAM,gBAAa/E,KAAKwnK,YAAa,SAC9E,gBAAaxnK,KAAKwnK,YAAa,qBAAuBxnK,KAAKmqK,WAAWnqK,KAAKwnK,aAAe,IAAM,EAChGgE,GAAiB,gBAAaxrK,KAAKwnK,YAAa,SAChD,gBAAaxnK,KAAKwnK,YAAa,UAA4BxnK,KAAKoqK,YAAYpqK,KAAKwnK,aAAe,EAAI,EACpGzkE,EAAY/iG,KAAKkqK,UAAUlqK,KAAK0nK,aAAe,gBAAa1nK,KAAK0nK,UAAW,SAC5E,gBAAa1nK,KAAK0nK,UAAW,oBAAsB,EAAI,EACvD8C,EAAYxqK,KAAKwnK,YAAY5R,aAAaxuJ,wBAC1CqkK,EAAazrK,KAAK8gB,OAAO1d,QAAQgE,wBACjCskK,EAAO1rK,KAAKwnK,YAAY5R,aAAalgH,cAAczkC,UACnD8yD,EAAQ/jE,KAAKwnK,YAAY5R,aAAalgH,cAAc5kC,WACpDG,EAAYy6J,EAAO1rK,KAAKwnK,YAAYz2J,UACpCD,EAAaizD,EAAQ/jE,KAAKwnK,YAAY52J,WACtC+6J,EAAc3rK,KAAK8gB,OAAO1d,QAAQkG,aAAe,iBACjDtJ,KAAK8gB,OAAOyT,cACZo3I,GAAe3rK,KAAK8gB,OAAO1d,QAAQ8I,cAAc,YAAYzC,cAE7DzJ,KAAK8gB,OAAOiT,WAAWpzB,SACvBgrK,GAAe3rK,KAAK8gB,OAAOkgD,mBAAmBv3D,cAElD,IAAI6vJ,EAAat5J,KAAK8gB,OAAO1d,QAAQmG,aAAsC,SAAvBvJ,KAAK8gB,OAAOzb,OAAoB,iBAAsB,GAC1G4L,EAAYA,EAAY,EAAI9H,KAAK6gC,MAAM/4B,GAAa,EAAI,EACxDH,EAAaA,EAAa,EAAIA,EAAa,EAC3C,IAAI9L,EAAOslK,EAAMtlK,KAAOymK,EAAWzmK,KACnC,GAAKhF,KAAK8gB,OAAOrb,UAYZ,CACD,IAAImmK,EAAgB,gBAAa5rK,KAAKwnK,YAAa,SAC/C,gBAAaxnK,KAAKwnK,YAAa,QAA2B8C,EAAM10J,MAChE5V,KAAKwnK,YAAY5R,aAAalgH,cAActuC,wBAAwB9B,MACpEmmK,EAAWzmK,KAAO,EACtBhF,KAAKsrK,UAAUvkK,MAAM6O,MAAQ61J,EAAW71J,MAAQ20J,EAAO30J,MAAQ,EAAI20J,EAAOjlK,MAAQ,KAClFtF,KAAKsrK,UAAUvkK,MAAMzB,MAAQg0J,GAAc3nJ,SAAS3R,KAAKsrK,UAAUvkK,MAAM6O,MAAO,IAAM,MAAQ,MAC9F5V,KAAK6rK,WAAW9kK,MAAM6O,MAAQ61J,EAAW71J,MAAQ00J,EAAM10J,MAAQ41J,EAAgBI,EAAe,EAAI,KAClG5rK,KAAK8rK,SAAS/kK,MAAM/B,KAAOulK,EAAOvlK,KAAOymK,EAAWzmK,KAAO,GAAM,KACjEhF,KAAK8rK,SAAS/kK,MAAMzB,MAAQqM,SAAS3R,KAAKsrK,UAAUvkK,MAAM6O,MAAO,IAAMjE,SAAS3R,KAAK6rK,WAAW9kK,MAAM6O,MAAO,IACvG41J,EAAgB,EAAI,KACtB75J,SAAS3R,KAAK8rK,SAAS/kK,MAAM/B,KAAM,IAAM,IACzChF,KAAK8rK,SAAS/kK,MAAMzB,MAAQqM,SAAS3R,KAAK8rK,SAAS/kK,MAAMzB,MAAO,IAAMqM,SAAS3R,KAAK8rK,SAAS/kK,MAAM/B,KAAM,IAAM,KAC/GhF,KAAK8rK,SAAS/kK,MAAM/B,KAAO,YAlB/B,GANAhF,KAAKsrK,UAAUvkK,MAAM/B,KAAOA,EAAOwmK,EAAgB16J,EAAa,EAAI,KACpE9Q,KAAK6rK,WAAW9kK,MAAM/B,KAAOulK,EAAOvlK,KAAOymK,EAAWzmK,KAAO,EAAIulK,EAAOjlK,MAAQ,KAChFtF,KAAK6rK,WAAW9kK,MAAMzB,MAAQg0J,GAAc3nJ,SAAS3R,KAAK6rK,WAAW9kK,MAAM/B,KAAM,IAAM,MAAQ,MAC/FhF,KAAK8rK,SAAS/kK,MAAM/B,KAAOA,EAAO8L,EAAa,GAAM,KACrD9Q,KAAK8rK,SAAS/kK,MAAMzB,MAAQqM,SAAS3R,KAAK6rK,WAAW9kK,MAAM/B,KAAM,IAAM2M,SAAS3R,KAAKsrK,UAAUvkK,MAAM/B,KAAM,IACrGwmK,EAAgB,EAAI,KACtBlS,GAAe3nJ,SAAS3R,KAAK8rK,SAAS/kK,MAAMzB,MAAO,IAAMqM,SAAS3R,KAAK8rK,SAAS/kK,MAAM/B,KAAM,IAAM,CAClG,IAAI+mK,EAAcp6J,SAAS3R,KAAK8rK,SAAS/kK,MAAMzB,MAAO,IAAMqM,SAAS3R,KAAK8rK,SAAS/kK,MAAM/B,KAAM,IAAOs0J,EACtGt5J,KAAK8rK,SAAS/kK,MAAMzB,MAAQqM,SAAS3R,KAAK8rK,SAAS/kK,MAAMzB,MAAO,IAAMymK,EAAa,KA6B3F,GAVA/rK,KAAKsrK,UAAUvkK,MAAMhC,IAAMulK,EAAMvlK,IAAM0mK,EAAW1mK,IAAMwmK,EAAet6J,EAAY,KACnFjR,KAAKsrK,UAAUvkK,MAAM1B,OAASklK,EAAOxlK,IAAMulK,EAAMvlK,IAAM,EAClDwlK,EAAOxlK,IAAMylK,EAAUzlK,IAAMwlK,EAAOllK,OAAS,GAAMilK,EAAMvlK,IAAMylK,EAAUzlK,KAAOwmK,EAAexoE,EAAY9xF,EAAY,KACxHs5J,EAAOllK,OAASkmK,EAAexoE,EAAY9xF,EAAY,KAC3DjR,KAAK6rK,WAAW9kK,MAAMhC,IAAM/E,KAAKsrK,UAAUvkK,MAAMhC,IACjD/E,KAAK6rK,WAAW9kK,MAAM1B,OAASsM,SAAS3R,KAAKsrK,UAAUvkK,MAAM1B,OAAQ,IAAM,KAC3ErF,KAAK8rK,SAAS/kK,MAAMhC,IAAM/E,KAAK6rK,WAAW9kK,MAAMhC,IAChD/E,KAAKmrK,YAAYpkK,MAAM/B,KAAOhF,KAAK8rK,SAAS/kK,MAAM/B,KAClDhF,KAAKmrK,YAAYpkK,MAAMhC,IAAM+B,WAAW9G,KAAKsrK,UAAUvkK,MAAMhC,KAAO+B,WAAW9G,KAAKsrK,UAAUvkK,MAAM1B,QAAUN,EAAM,EAAI,KACxH/E,KAAKmrK,YAAYpkK,MAAMzB,MAAQqmK,GAAe7kK,WAAW9G,KAAKmrK,YAAYpkK,MAAMhC,KAAO,MAAQ/E,KAAK8rK,SAAS/kK,MAAMzB,MAC/GqmK,GAAgBh6J,SAAS3R,KAAKsrK,UAAUvkK,MAAM1B,OAAQ,IAAMsM,SAAS3R,KAAKsrK,UAAUvkK,MAAMhC,IAAK,IAAM,CACrG,IAAIinK,EAAYr6J,SAAS3R,KAAKsrK,UAAUvkK,MAAM1B,OAAQ,IAAMsM,SAAS3R,KAAKsrK,UAAUvkK,MAAMhC,IAAK,IAAM4mK,EACrG3rK,KAAKsrK,UAAUvkK,MAAM1B,OAASsM,SAAS3R,KAAKsrK,UAAUvkK,MAAM1B,OAAQ,IAAM2mK,EAAY,KACtFhsK,KAAK6rK,WAAW9kK,MAAM1B,OAASsM,SAAS3R,KAAKsrK,UAAUvkK,MAAM1B,OAAQ,IAAM,QAGnF+2J,EAAUl8J,UAAUkrK,gBAAkB,WAC7BprK,KAAKsrK,YACNtrK,KAAKsrK,UAAYtrK,KAAK8gB,OAAO1d,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,aAAc4D,OAAQ,iBACnJlP,KAAK6rK,WAAa7rK,KAAK8gB,OAAO1d,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,cAAe4D,OAAQ,iBACrJlP,KAAKmrK,YAAcnrK,KAAK8gB,OAAO1d,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,eAAgB4D,OAAQ,kBACvJlP,KAAK8rK,SAAW9rK,KAAK8gB,OAAO1d,QAAQsB,YAAY,eAAc,MAAO,CAAEF,UAAW,YAAa8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,YAAa4D,OAAQ,oBAGzJktJ,EAAUl8J,UAAU0oK,cAAgB,WAC5B5oK,KAAKsrK,YACLtrK,KAAKsrK,UAAUvkK,MAAMC,QAAU,GAC/BhH,KAAK6rK,WAAW9kK,MAAMC,QAAU,GAChChH,KAAKmrK,YAAYpkK,MAAMC,QAAU,GACjChH,KAAK8rK,SAAS/kK,MAAMC,QAAU,KAGtCo1J,EAAUl8J,UAAU+rK,cAAgB,WAC5BjsK,KAAKsrK,YACLtrK,KAAKsrK,UAAUvkK,MAAMC,QAAU,OAC/BhH,KAAK6rK,WAAW9kK,MAAMC,QAAU,OAChChH,KAAKmrK,YAAYpkK,MAAMC,QAAU,OACjChH,KAAK8rK,SAAS/kK,MAAMC,QAAU,SAGtCo1J,EAAUl8J,UAAUgsK,YAAc,SAAUrtD,EAAMD,EAAMz3C,GACpD,IAAI9yC,EAAOr0B,KAAKmsK,qBAAqBttD,EAAMD,EAAMz3C,GACjD,IAAK9yC,EAAK5lB,OAAQ,CACd,IAAI2nB,EAAMp2B,KAAK8gB,OAAOk+F,iBAAiBJ,GACnC5+G,KAAK8gB,OAAOm+F,YAAc93C,IACT,WAAb/wC,EAAI5nB,KACJxO,KAAK8gB,OAAOm+F,WAAWC,WAAWL,EAAMzoF,EAAI9C,MAAOxsB,WAAWutB,EAAKrX,QAGnEhd,KAAK8gB,OAAOm+F,WAAWC,WAAWL,EAAMzoF,EAAI9C,MAAOe,EAAKrX,UAKxEo/I,EAAUl8J,UAAUisK,qBAAuB,SAAUrmJ,EAAU+hF,EAAU1gC,GACrE,IAAI/wC,EAAMp2B,KAAK8gB,OAAOk+F,iBAAiBnX,GACnCxzE,EAAO,CACP3S,OAAQ0U,EACRpZ,MAAOmqD,EAAK3c,WAGhB,OADAxqD,KAAK8gB,OAAO7Y,QAAQ,OAAuBosB,GACpCA,GAGX+nI,EAAUl8J,UAAUksK,iBAAmB,SAAUtmJ,EAAUumJ,GACvD,IAAIj+D,EAAM,6BACNnnC,EAAQ,GAAGv5D,MAAMpK,KAAKtD,KAAK8gB,OAAO0+F,cAAc7tG,SAASmU,EAASlU,WAAY,KAAKk7C,iBAAiBshD,IACxG,OAAOnnC,GAEXm1F,EAAUl8J,UAAU2oK,mBAAqB,SAAU17J,EAAGm/J,GAClD,IAAIC,EAAc56J,SAAS,gBAAa3R,KAAKwnK,YAAa,QAAc98J,aAAa,QAAwB,IACzG2hK,EAAe16J,SAAS3R,KAAKwnK,YAAY98J,aAAa,QAAwB,IAC9E8hK,EAAY76J,SAAS,gBAAa3R,KAAK0nK,UAAW,QAAch9J,aAAa,QAAwB,IACrG+hK,EAAa96J,SAAS3R,KAAK0nK,UAAUh9J,aAAa,QAAwB,IAC1EgiK,EAAS1sK,KAAK69G,uBAAuBl9G,OAAS,EAC9CgsK,EAAS3sK,KAAK69G,uBAAuB,GAAGa,YAAY/9G,OAAS,EACjE,QAAQ,GACJ,KAAM2rK,GAAWtsK,KAAK0nK,UAAUxiK,UAAUmB,SAAS,gCAC7C,gBAAa8G,EAAE7M,OAAQ,QACzBN,KAAKwnK,YAAcxnK,KAAK8gB,OAAOi+F,iBAAiBwtD,EAAaF,GAC7DrsK,KAAK0nK,UAAY1nK,KAAK8gB,OAAOi+F,iBAAiBwtD,EAAcG,EAAQL,EAAeM,GACnF3sK,KAAKkrK,gBACL,MACJ,KAAKlrK,KAAKk+J,qBAAuBmO,EAAeM,EAASF,GACrDA,EAAaJ,EAAeM,EAAS,EAAIH,EAAYD,EAAcG,GAChED,EAAaJ,EAAeM,EAAS,EAAIJ,EAAcC,EAI1D,GAHAxsK,KAAK0nK,UAAY1nK,KAAK8gB,OAAOi+F,iBAAiBwtD,EAAcG,EAAQD,GACpED,EAAY76J,SAAS,gBAAa3R,KAAK0nK,UAAW,QAAch9J,aAAa,QAAwB,IACrG+hK,EAAa96J,SAAS3R,KAAK0nK,UAAUh9J,aAAa,QAAwB,IACrE4hK,EAGA,CAED,IADA,IAAI1nE,EAAUjzF,SAAS3R,KAAK4sK,QAAQliK,aAAa,QAAwB,IAChE1J,EAAIurK,EAAavrK,GAAKwrK,EAAWxrK,IAGtC,IAFA,IAAIimE,EAAQjnE,KAAKosK,iBAAiBprK,EAAGqrK,GACjC5rK,EAAI,EACCojB,EAAI+gF,EAAU,EAAG/gF,GAAK4oJ,EAAY5oJ,IACnCpjB,EAAIksK,IACJlsK,EAAI,GAERT,KAAKksK,YAAYlrK,EAAG6iB,EAAGojD,EAAMt1D,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAKm/G,mBAAmB,CAAEr5F,SAAUymJ,EAAantD,UAAWp/G,KAAK6sK,gBAAkB,CAAE/mJ,SAAU0mJ,EAAWptD,UAAWqtD,SAfrHzsK,KAAKkrK,gBAiBT,MACJ,KAAKlrK,KAAKk+J,qBAAuBmO,EAAeI,GAC5CJ,EAAeI,EAAa,EAAID,EAAYD,EAAcG,GAC1DL,EAAeI,EAAa,EAAIF,EAAcC,EAG9C,GAFAxsK,KAAKwnK,YAAcxnK,KAAK8gB,OAAOi+F,iBAAiBwtD,EAAaE,GAC7DzsK,KAAK0nK,UAAY1nK,KAAK4sK,QACjBN,EAGA,CACD,IAAStrK,EAAIurK,EAAavrK,GAAKurK,EAAcG,EAAQ1rK,IAAK,CAClDimE,EAAQjnE,KAAKosK,iBAAiBprK,EAAGqrK,GACrCplG,EAAMgd,UAEN,IADIxjF,EAAI,EACCojB,EAAI7jB,KAAK6sK,eAAiB,EAAGhpJ,GAAK4oJ,EAAY5oJ,IAC/CpjB,EAAIksK,IACJlsK,EAAI,GAERT,KAAKksK,YAAYlrK,EAAG6iB,EAAGojD,EAAMt1D,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAKm/G,mBAAmB,CAAEr5F,SAAUymJ,EAAantD,UAAWqtD,GAAc,CAAE3mJ,SAAUymJ,EAAcG,EAAQttD,UAAWp/G,KAAK6sK,eAAiBF,SAf7I3sK,KAAKkrK,gBAiBT,MACJ,KAAKqB,EAAcC,EAGf,GAFAxsK,KAAKwnK,YAAcxnK,KAAK8gB,OAAOi+F,iBAAiBytD,EAAWH,GAC3DrsK,KAAK0nK,UAAY1nK,KAAK4sK,QACjBN,EAGA,CACD,IAAIQ,EAAQn7J,SAAS3R,KAAK4sK,QAAQl3H,cAAchrC,aAAa,QAAwB,IACjF9J,EAAIksK,EACR,IAAS9rK,EAAIurK,EAAc,EAAGvrK,GAAKwrK,EAAWxrK,IAAK,CAC3CJ,IAAMZ,KAAKgoC,WAAa,IACxBpnC,EAAIksK,GAEJ7lG,EAAQjnE,KAAKosK,iBAAiBxrK,EAAGyrK,GACjC5rK,EAAI,EACRG,IACA,IAASijB,EAAI7jB,KAAK6sK,eAAgBhpJ,GAAK7jB,KAAK6sK,eAAiBF,EAAQ9oJ,IACjE7jB,KAAKksK,YAAYlrK,EAAG6iB,EAAGojD,EAAMt1D,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAKm/G,mBAAmB,CAAEr5F,SAAU0mJ,EAAWptD,UAAWitD,EAAeM,GAAU,CAAE7mJ,SAAUymJ,EAAcG,EAAQttD,UAAWitD,SAjBhIrsK,KAAKkrK,gBAmBT,MACJ,QAEI,GADAlrK,KAAK0nK,UAAY1nK,KAAK8gB,OAAOi+F,iBAAiBytD,EAAWH,EAAeM,GACnEL,EAGA,CAGD,IAFIQ,EAAQn7J,SAAS3R,KAAK4sK,QAAQl3H,cAAchrC,aAAa,QAAwB,IACjF9J,EAAIZ,KAAKgoC,WACJhnC,EAAI8rK,EAAQ,EAAG9rK,GAAKwrK,EAAWxrK,IAAK,CACrCJ,IAAMksK,EAAQ,IACdlsK,EAAIZ,KAAKgoC,YAETi/B,EAAQjnE,KAAKosK,iBAAiBxrK,EAAGyrK,GACrCzrK,IACIH,EAAI,EACR,IADA,IACSo/G,EAAI7/G,KAAK6sK,eAAgBhtD,GAAK7/G,KAAK6sK,eAAiBF,EAAQ9sD,IACjE7/G,KAAKksK,YAAYlrK,EAAG6+G,EAAG54C,EAAMt1D,SAASlR,EAAEmR,WAAY,MACpDnR,IAGRT,KAAKm/G,mBAAmB,CAAEr5F,SAAUgnJ,EAAQJ,EAAQttD,UAAWitD,GAAgB,CAAEvmJ,SAAU0mJ,EAAWptD,UAAWitD,EAAeM,SAjBhI3sK,KAAKkrK,gBAmBT,QAGZ9O,EAAUl8J,UAAUspB,eAAiB,SAAUrc,GAC3CnN,KAAKonK,YACLx5J,SAAS6B,KAAKvK,UAAUC,OAAO,uBAC3BnF,KAAKoD,UAAY,eAAkBpD,KAAKoD,QAAQsyC,gBAChD,gBAAO11C,KAAKoD,SAEZpD,KAAKiiK,WAAoD,IAAvCjiK,KAAK69G,uBAAuBl9G,QAAsE,IAAtDX,KAAK69G,uBAAuB,GAAGa,YAAY/9G,OACzGX,KAAK+sK,UAAY,gBAAa5/J,EAAE7M,OAAQ,QAGxCN,KAAK+sK,UAAY,KAErB,IAAIC,EAAe,eAAQ7/J,EAAE7M,OAAQ,cACrC,GAAIN,KAAKiiK,YAAcjiK,KAAKooK,eAAiD,SAAhCpoK,KAAKsjG,kBAAkB7lF,MAChEuvJ,GAAgBA,EAAa9nK,UAAUmB,SAAS,QAAmB,CACnE,IAAIyf,EAAWnU,SAASq7J,EAAat3H,cAAchrC,aAAa,QAAwB,IACpF00G,EAAYztG,SAASq7J,EAAatiK,aAAa,QAAwB,IAC3E1K,KAAKiiK,WAAY,EACjBjiK,KAAK6vI,qBACL7vI,KAAKm/G,mBAAmB,CAAEr5F,SAAU9lB,KAAK4nK,YAAaxoD,UAAWp/G,KAAK8oK,iBAAmB,CAAEhjJ,SAAUA,EAAUs5F,UAAWA,IAI9H,GAFAp/G,KAAKiiK,WAAY,EACjBjiK,KAAK24H,yBACD34H,KAAKooK,cAAe,CACpBpoK,KAAKq+F,cAAe,EACpB,IAAIi4D,EAAW,gBAAanpJ,EAAE7M,OAAQ,QACtCN,KAAK0nK,UAAYpR,IAAsBt2J,KAAK4sK,UAAY5sK,KAAK0nK,UAAY1nK,KAAKwnK,YAAcxnK,KAAK0nK,WACjG1nK,KAAKwnK,YAAcxnK,KAAKynK,UACxBznK,KAAKitK,wBACLjtK,KAAK6oK,mBAAmB17J,GAAG,GAC3BnN,KAAK24H,yBACL34H,KAAKisK,gBACLjsK,KAAKgqK,kBACDhqK,KAAK8gB,OAAOg/C,iBACZ9/D,KAAKmnK,gBAAgB,QAAQ,GAC7BnnK,KAAK2pK,wBAET3pK,KAAKooK,eAAgB,EACjBpoK,KAAK8gB,OAAOiT,WAAWpzB,OAAS,GAChCX,KAAK8gB,OAAOwT,OAAO,QAA8B,IAErDt0B,KAAKq+F,cAAe,EAExB,OAAal5F,OAAOnF,KAAK8gB,OAAO8+C,aAAc,YAAa5/D,KAAKupB,kBAC5DvpB,KAAK8gB,OAAOk/C,YACZ,OAAa76D,OAAOnF,KAAK8gB,OAAOm/C,mBAAoB,YAAajgE,KAAKupB,kBAE1E,OAAapkB,OAAOyI,SAAU,UAAW5N,KAAKwpB,iBAElD4yI,EAAUl8J,UAAUsmK,aAAe,WAC3BxmK,KAAK+yD,WACL/yD,KAAK+yD,SAAShsD,MAAMC,QAAU,SAOtCo1J,EAAUl8J,UAAUy4H,uBAAyB,WACzC,GAAI34H,KAAK8gB,OAAO+2G,iBAAmB73H,KAAK8gB,OAAOshD,QAC3CpiE,KAAKsjG,kBAAkB6a,kBAAkBn6G,QAAQ,QAAU,IAAMhE,KAAKogK,cAAgBpgK,KAAK+hK,eACxF/hK,KAAK69G,uBAAuBl9G,OAAQ,CACvC,IAAI8L,EAAQkF,SAAS3R,KAAKM,OAAOoK,aAAa,QAAwB,IAClEwiK,EAASv7J,SAAS3R,KAAKM,OAAOoK,aAAa,SAAU,IACrDob,EAAW9lB,KAAK69G,uBAAuB79G,KAAK69G,uBAAuBl9G,OAAS,GAAGmlB,SAC/EmhD,EAAQjnE,KAAKosK,iBAAiBtmJ,EAAUrZ,GAAO2R,QAAO,SAAUkhB,GAAO,MAA6B,KAAtBA,EAAIv4B,MAAMC,WACxFovB,EAAMp2B,KAAK8gB,OAAOk+F,iBAAiBvyG,GAEnC0gK,GADc/2I,EAAImnC,qBACJ2vG,EAASltK,KAAK8gB,OAAOk/C,YACnCotG,EAAgBptK,KAAK8gB,OAAOulF,kBAAoB,QAC7CjwE,EAAImnC,uBAAyB,OAC/B,gBAAO,IAAMv9D,KAAK8gB,OAAO1d,QAAQkI,GAAK,YAAa,gBAAatL,KAAKM,OAAQ,WAC1E,gBAAO,IAAMN,KAAK8gB,OAAO1d,QAAQkI,GAAK,YAAatL,KAAK8gB,OAAO1d,UAC/D,gBAAO,IAAMpD,KAAK8gB,OAAO1d,QAAQkI,GAAK,YAAatL,KAAK8gB,OAAO1d,SAAS+B,SAE5EnF,KAAK+yD,SAAW,eAAc,MAAO,CAAEvuD,UAAW,aAAc8G,GAAItL,KAAK8gB,OAAO1d,QAAQkI,GAAK,cAC7FtL,KAAK+yD,SAAShsD,MAAMC,QAAU,QAC1BhH,KAAKM,OAAO4E,UAAUmB,SAAS,iBAAmBrG,KAAKM,OAAO4E,UAAUmB,SAAS,kBACjFrG,KAAKM,OAAO4E,UAAUmB,SAAS,mBAC/BrG,KAAK+yD,SAAS7tD,UAAU4G,IAAI,qBAE3BqhK,EAaGntK,KAAK8gB,OAAOwqF,iBAAiB51D,cAAchxC,YAAY1E,KAAK+yD,UAR5D/yD,KAAK8gB,OAAOmjD,kBAAkBvuB,cAAchxC,YAAY1E,KAAK+yD,UAWjEq6G,IACID,EACAntK,KAAK8gB,OAAOwqF,iBAAiB51D,cAAchxC,YAAY1E,KAAK+yD,UAG5D/yD,KAAK8gB,OAAOmjD,kBAAkBvuB,cAAchxC,YAAY1E,KAAK+yD,YAIzE,IAAIoU,EAAOF,EAAMA,EAAMtmE,OAAS,GAChC,GAAIwmE,GAAQA,EAAKyuF,aAAc,CAC3B,IAAIyX,EAAalmG,EAAK//D,wBAClBojK,EAAYrjG,EAAKyuF,aAAaxuJ,yBAC9B+/D,EAAKyuF,aAAa1wJ,UAAUmB,SAAS,cAAgB8gE,EAAKyuF,aAAa1wJ,UAAUmB,SAAS,sBAC1FmkK,EAAYrjG,EAAKyuF,aAAa1pJ,cAAc,SAAS9E,yBAEzD,IAAIkmK,EAAWttK,KAAKiqK,WAAW9iG,GAAQ,EAAI,EACvC47B,EAAY/iG,KAAKkqK,UAAU/iG,GAAQ,EAAI,EACtCnnE,KAAK8gB,OAAOrb,UAIbzF,KAAK+yD,SAAShsD,MAAM6O,MAAQ40J,EAAU50J,MAAQy3J,EAAWz3J,MAAQy3J,EAAW/nK,MAAQ,EAAIgoK,EAAW,KAHnGttK,KAAK+yD,SAAShsD,MAAM/B,KAAOqoK,EAAWroK,KAAOwlK,EAAUxlK,KAAOqoK,EAAW/nK,MAAQ,EAAIgoK,EAAW,KAKpGttK,KAAK+yD,SAAShsD,MAAMhC,IAAMsoK,EAAWtoK,IAAMylK,EAAUzlK,IAAMsoK,EAAWhoK,OAAS,EAAI09F,EAAY,KAEnG/iG,KAAK+yD,SAAShsD,MAAMC,QAAU,QAG9BhH,KAAKwmK,gBAGbpK,EAAUl8J,UAAUk/J,iBAAmB,SAAUjyJ,GAC7CnN,KAAKyjK,YAAct2J,EAAE2oD,OACrB,IAEI6uC,EAFArkG,EAAS6M,EAAE7M,OACXqyB,EAAO3yB,KAAK8gB,OAEZqkD,EAAc,gBAAa7kE,EAAQ,UACvC,KAAI6kE,GAAeA,EAAY75D,KAAOqnB,EAAKvvB,QAAQkI,IAAM,gBAAahL,EAAQ,UAA4BN,KAAK8gB,OAAOk/C,YAClH,gBAAa1/D,EAAQ,sBAAwB,gBAAaA,EAAQ,SADtE,CAOA,IAHI6M,EAAEmrI,UAAYnrI,EAAEm4C,UAChBn4C,EAAE+F,iBAEF,gBAAa5S,EAAQ,UAAsB6M,EAAEmrI,WAAanrI,EAAEm4C,QAAS,CACrE,GAAI3yB,EAAK2wE,kBAAkB6a,kBAAkBn6G,QAAQ,QAAU,IAAMhE,KAAKogK,cAAgBpgK,KAAK+hK,cAC3F/hK,KAAKsnK,YAAa,EAClB3iE,GAAS,OAER,GAAIhyE,EAAK+zC,sBAAwB/zC,EAAKyvC,SAAWpiE,KAAK8gB,OAAOwiF,kBAAkB8+D,aAAc,CAE9F,GADApiK,KAAK+9J,mBAAoB,GACpB/9J,KAAKogK,aAAepgK,KAAK+hK,eAAiB,eAAQzhK,EAAQ,MAAM4E,UAAUmB,SAAS,yBAEpF,YADArG,KAAKiiK,WAAY,GAGrBt9D,GAAS,EACT3kG,KAAKoD,QAAUpD,KAAK8gB,OAAOvc,cAAc,MAAO,CAAEC,UAAW,mBAC7DmuB,EAAKitC,aAAal7D,YAAY1E,KAAKoD,SAEnCuhG,GACA3kG,KAAKutK,WAAWpgK,GAAG,GAG3BnN,KAAK6qK,uBACDvqK,EAAO4E,UAAUmB,SAAS,eAAiB/F,EAAO4E,UAAUmB,SAAS,cACrErG,KAAKsnK,YAAa,EAClBtnK,KAAKooK,eAAgB,EACrBpoK,KAAKutK,WAAWpgK,MAGxBivJ,EAAUl8J,UAAU2qK,oBAAsB,WACtC,IAAI5jG,EAAQ,GAAGv5D,MAAMpK,KAAKtD,KAAK8gB,OAAO1d,QAAQ4wC,uBAAuB,8BACrEh0C,KAAKynK,UAAYxgG,EAAM,GACvBjnE,KAAK4sK,QAAU3lG,EAAMA,EAAMtmE,OAAS,GAChCX,KAAKynK,YACLznK,KAAKgoC,WAAar2B,SAAS3R,KAAKynK,UAAU/xH,cAAchrC,aAAa,QAAwB,IAC7F1K,KAAK6sK,eAAiBl7J,SAAS,gBAAa3R,KAAKynK,UAAW,QAAkB/8J,aAAa,QAAwB,MAG3H0xJ,EAAUl8J,UAAU+sK,sBAAwB,WACpCjtK,KAAKynK,YACLznK,KAAKgoC,WAAar2B,SAAS3R,KAAKynK,UAAU/xH,cAAchrC,aAAa,QAAwB,IAC7F1K,KAAK6sK,eAAiBl7J,SAAS,gBAAa3R,KAAKynK,UAAW,QAAkB/8J,aAAa,QAAwB,MAG3H0xJ,EAAUl8J,UAAUqtK,WAAa,SAAUpgK,EAAGqgK,GAC1C,IAAI76I,EAAO3yB,KAAK8gB,OAChB,GAAI0sJ,EAAU,CACV,IAAI5tE,EAAK,eAAQzyF,EAAE7M,OAAQ,MAC3BN,KAAK4nK,YAAcj2J,SAASiuF,EAAGl1F,aAAa,QAAwB,IACpE1K,KAAK8oK,gBAAkBn3J,SAAS,gBAAaxE,EAAE7M,OAAQ,QAAkBoK,aAAa,QAAwB,IAElHkD,SAAS6B,KAAKvK,UAAU4G,IAAI,uBAC5B,IAAIu7J,EAAS10I,EAAKvvB,QAAQgE,wBACtBqmK,EAAU,eAAYtgK,GAC1BnN,KAAKgG,EAAIynK,EAAQznK,EAAIqhK,EAAOriK,KAC5BhF,KAAKiG,EAAIwnK,EAAQxnK,EAAIohK,EAAOtiK,IAC5B,OAAa+G,IAAI6mB,EAAKitC,aAAc,YAAa5/D,KAAKupB,iBAAkBvpB,MACpEA,KAAK8gB,OAAOk/C,YACZ,OAAal0D,IAAI6mB,EAAKstC,mBAAoB,YAAajgE,KAAKupB,iBAAkBvpB,MAElF,OAAa8L,IAAI8B,SAAU,UAAW5N,KAAKwpB,eAAgBxpB,OAE/Do8J,EAAUl8J,UAAUwtK,qBAAuB,SAAUvgK,GACjD,IAAIwgK,EAAmB3tK,KAAK8gB,OAAO2T,yBAA6C,mBAAlBtnB,EAAEssB,YAIhE,GAHsB,kBAAlBtsB,EAAEssB,aAAoCz5B,KAAK8gB,OAAO4lG,oBAAuBinD,GACzE3tK,KAAK48G,kBAEc,kBAAlBzvG,EAAEssB,aAAmCk0I,IAAqB3tK,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAKwkG,oBAC/FxkG,KAAKk9J,sBAAuB,CAC/B,IAAI1/B,EAASx9H,KAAK8gB,OAAOmhF,gBAAgB7jF,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBACpEiI,EAAU,GACdlrG,KAAK48J,iBAAmB,GACxB58J,KAAKg9J,oBAAsB,GAC3B,IAAK,IAAIh8J,EAAI,EAAGA,EAAIw8H,EAAO78H,OAAQK,IAAK,CACpCkqG,EAAQ7+F,KAAKmxH,EAAO7rH,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAChD,IAAImhK,EAAU5tK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYniC,EAAO7rH,SAAS3Q,EAAE4Q,WAAY,KAAK0L,MAClFtd,KAAK48J,iBAAiB,GAAKgR,IAAW,EACtC5tK,KAAKg9J,oBAAoB3wJ,KAAKmxH,EAAO7rH,SAAS3Q,EAAE4Q,WAAY,KAAK0L,MAErEtd,KAAK8hI,mBAAqB52B,IAOlCkxD,EAAUl8J,UAAU6oB,iBAAmB,WAC/B/oB,KAAK8gB,OAAOkI,cAGhBhpB,KAAKy7G,YAAc,CAAC,CAAE/sG,MAAO,QAAiB8hG,QAASxwG,KAAK+7J,mBACxD,CAAErtJ,MAAO,QAAmB8hG,QAASxwG,KAAK8+J,qBAC1C,CAAEpwJ,MAAO,QAA6B8hG,QAASxwG,KAAKyyD,kBACpD,CAAE/jD,MAAO,OAA8B8hG,QAASxwG,KAAKyyD,kBACrD,CAAE/jD,MAAO,QAA4B8hG,QAASxwG,KAAKiV,mBACnD,CAAEvG,MAAO,OAAoB8hG,QAASxwG,KAAK6tK,eAC3C,CAAEn/J,MAAO,OAAyB8hG,QAASxwG,KAAK0tK,sBAChD,CAAEh/J,MAAO,QAA8B8hG,QAASxwG,KAAK8tK,uBACrD,CAAEp/J,MAAO,QAAqB8hG,QAASxwG,KAAKs9G,YAC5C,CAAE5uG,MAAO,QAAoB8hG,QAASxwG,KAAK+tK,aAC3C,CAAEr/J,MAAO,QAAwB8hG,QAASxwG,KAAK04H,eAC/C,CAAEhqH,MAAO,QAAgB8hG,QAASxwG,KAAKwS,UAC3C,eAAuBxS,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,EAAMz7G,MAC5DA,KAAKyvF,oBAAsBzvF,KAAK0vF,YAAY9pF,KAAK5F,MACjDA,KAAKguK,uBAAyBhuK,KAAKiuK,eAAeroK,KAAK5F,MACvDA,KAAK8gB,OAAOiI,iBAAiB,OAAoB/oB,KAAKyvF,qBACtDzvF,KAAK8gB,OAAOiI,iBAAiB,OAAuB/oB,KAAKguK,wBACzDhuK,KAAKkuK,8BAMT9R,EAAUl8J,UAAU0xC,oBAAsB,WAClC5xC,KAAK8gB,OAAOkI,cAGhB,OAAa7jB,OAAOyI,SAAU,UAAW5N,KAAKwpB,gBAC9C,OAAarkB,OAAOnF,KAAK8gB,OAAO8+C,aAAc,YAAa5/D,KAAKo/J,kBAChE,OAAaj6J,OAAOnF,KAAK8gB,OAAOm/C,mBAAoB,YAAajgE,KAAKo/J,kBACtE,eAAuBp/J,KAAK8gB,OAAQ9gB,KAAKy7G,aAAa,GACtDz7G,KAAK8gB,OAAO8wB,oBAAoB,OAAoB5xC,KAAKyvF,qBACzDzvF,KAAK8gB,OAAO8wB,oBAAoB,OAAuB5xC,KAAKguK,wBAC5DhuK,KAAKmuK,iCAET/R,EAAUl8J,UAAU0T,WAAa,WAC7B5T,KAAKouK,SAAqD,IAA3CzwD,UAAUn8C,UAAUx9D,QAAQ,UACvChE,KAAKouK,SACL,OAAatiK,IAAI9L,KAAK8gB,OAAO1d,QAAS,UAAWpD,KAAKu9G,eAAgBv9G,MACtE,OAAa8L,IAAI9L,KAAK8gB,OAAO1d,QAAS,QAASpD,KAAKquK,aAAcruK,OAG7DA,KAAK8gB,OAAOirH,eACb,OAAajgI,IAAI9L,KAAK8gB,OAAO1d,QAAS,UAAWpD,KAAKu9G,eAAgBv9G,OAIlFo8J,EAAUl8J,UAAUu4C,aAAe,WAC3Bz4C,KAAKouK,SACL,OAAajpK,OAAOnF,KAAK8gB,OAAO1d,QAAS,UAAWpD,KAAKu9G,gBACzD,OAAap4G,OAAOnF,KAAK8gB,OAAO1d,QAAS,QAASpD,KAAKquK,eAGlDruK,KAAK8gB,OAAOirH,eACb,OAAa5mI,OAAOnF,KAAK8gB,OAAO1d,QAAS,UAAWpD,KAAKu9G,iBAIrE6+C,EAAUl8J,UAAU4tK,sBAAwB,WACnC9tK,KAAK8gB,OAAO4lG,oBACb1mH,KAAK48G,kBAGbw/C,EAAUl8J,UAAUw4H,cAAgB,WAChC14H,KAAKujK,oBAETnH,EAAUl8J,UAAU6tK,YAAc,SAAU5gK,GACxC,IAAK,IAAInM,EAAI,EAAGA,EAAImM,EAAE4uB,QAAQp7B,OAAQK,IAAK,CACvC,IAAI4sK,EAAU5tK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYxyJ,EAAE4uB,QAAQpqB,SAAS3Q,EAAE4Q,WAAY,aACxE5R,KAAK48J,iBAAiB,GAAKgR,KACjC5tK,KAAK6zG,kBAEX7zG,KAAKujK,oBAETnH,EAAUl8J,UAAUouK,iBAAmB,SAAUnhK,GACvB,kBAAlBA,EAAEssB,aAAoCz5B,KAAK8gB,OAAO4lG,oBAClD1mH,KAAK48G,kBAGbw/C,EAAUl8J,UAAUquK,eAAiB,WACjC,OAAOvuK,KAAK8gB,OAAOm/C,mBAAmB/zD,cAAc,sBAExDkwJ,EAAUl8J,UAAU67J,kBAAoB,SAAU5uJ,GAC1CA,EAAEi3D,SAAWpkE,KAAK8U,iBAAmB3H,EAAEsZ,SACvCzmB,KAAK2T,SACL3T,KAAKwuK,0BAIbpS,EAAUl8J,UAAUyT,OAAS,SAAUxG,GACnC,OAAarB,IAAI9L,KAAK8gB,OAAO8+C,aAAc,YAAa5/D,KAAKo/J,iBAAkBp/J,MAC/E,OAAa8L,IAAI9L,KAAK8gB,OAAOm/C,mBAAoB,YAAajgE,KAAKo/J,iBAAkBp/J,OAEzFo8J,EAAUl8J,UAAU+U,kBAAoB,SAAU9H,GAC9C,GAAIA,EAAEi3D,SAAWpkE,KAAK8U,gBAAtB,CAGA,IAAI6d,EAAO3yB,KAAK8gB,OACX,eAAkB3T,EAAEk3D,WAAW71D,QACI,WAAhCxO,KAAKsjG,kBAAkB90F,MACvBmkB,EAAKvvB,QAAQwH,gBAAgB,wBACzB5K,KAAK69G,uBAAuBl9G,OAAS,IACrCX,KAAK6vI,qBACL7vI,KAAK6jK,eAAYt4J,GAEjBvL,KAAK8hI,mBAAmBnhI,OAAS,IACjCX,KAAK8vI,oBACL9vI,KAAK4gK,kBAAer1J,GAEpBvL,KAAKgiI,uBAAuBrhI,OAAS,IACrCX,KAAK4jK,uBACL5jK,KAAKyuK,kBAAeljK,GAExBvL,KAAKy8J,wBAAyB,EAC9Bz8J,KAAKm/J,aAEgC,aAAhCn/J,KAAKsjG,kBAAkB90F,MAC5BmkB,EAAKvvB,QAAQuH,aAAa,uBAAwB,SAGrD,eAAkBwC,EAAEk3D,WAAW5mD,OAC/B,eAAkBtQ,EAAEk3D,WAAW85C,qBAChCn+G,KAAK48G,iBACL58G,KAAK4gK,kBAAer1J,EACpBvL,KAAK6jK,eAAYt4J,EACjBvL,KAAKyuK,kBAAeljK,GAExBvL,KAAKu9J,aAAc,EACnBv9J,KAAK0uK,2BACL1uK,KAAKu9J,aAAc,EACdv9J,KAAK8gB,OAAOy/E,qBACbvgG,KAAKwuK,wBAET,IAAIv3C,EAAiBj3H,KAAK8gB,OAAOsS,aAAahV,QAAO,SAAUgY,GAAO,MAAoB,aAAbA,EAAI5nB,QAC7EyoH,EAAet2H,SACfgyB,EAAK4tE,sBAAgE,oBAAxCvgG,KAAKsjG,kBAAkB4zB,eAExDl3H,KAAK+oK,gBAET3M,EAAUl8J,UAAUi/J,UAAY,WACxBn/J,KAAK8gB,OAAO1d,QAAQ8I,cAAc,gBAAgB8nC,uBAAuB,eAAerzC,SACxFX,KAAK8gB,OAAO1d,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,SAG1Eo1J,EAAUl8J,UAAUo9G,WAAa,WACxBt9G,KAAK8hI,mBAAmBnhI,SACzBX,KAAK8gB,OAAOmb,IAAI,QAAqBj8B,KAAKs9G,YAC1Ct9G,KAAK86H,UAAU96H,KAAK8gB,OAAOmkG,oBAGnCm3C,EAAUl8J,UAAUwuK,yBAA2B,WAC3C,IAAIC,EAAO3uK,KAAK8gB,OAChB6tJ,EAAK1yI,IAAI,QAAqBj8B,KAAK0uK,0BACnC,IAAIz3C,EAAiB03C,EAAKv7I,aAAahV,QAAO,SAAUgY,GAAO,MAAoB,aAAbA,EAAI5nB,QACtEyoH,EAAet2H,OAAS,IACxBguK,EAAKpuE,qBAAsB,EAC3BvgG,KAAK4uK,SAAW33C,EAAe,GAAG3jG,MAClCtzB,KAAK6zG,kBAAoB7zG,KAAK8gB,OAAO4T,aAAam/E,kBAC9C,eAAkB7zG,KAAK6zG,qBACvB7zG,KAAK6zG,kBAAoB7zG,KAAKw/J,+BAA+B7+J,QAE7DX,KAAK+hK,eACL4M,EAAKrrE,kBAAkB90F,KAAO,WAC9BmgK,EAAK5mK,YAGL/H,KAAKwuK,yBAGRG,EAAKpuE,qBAAwBvgG,KAAKu9J,cACnCv9J,KAAK4uK,SAAW,KAChB5uK,KAAKwuK,0BAGbpS,EAAUl8J,UAAUsuK,sBAAwB,WACxC,IAAIG,EAAO3uK,KAAK8gB,OACZ9gB,KAAK8gB,OAAOwiF,kBAAkBC,kBAAoBvjG,KAAK8gB,OAAO8Y,0BAA0Bj5B,OAAS,GACjGguK,EAAKjoD,oBAAqB,EAC1B1mH,KAAKijK,gCAEAjjK,KAAK8gB,OAAO8Y,0BAA0Bj5B,OAAS,GACpDguK,EAAKjoD,oBAAqB,EAC1B1mH,KAAKijK,iCAGL0L,EAAKjoD,oBAAqB,EAC1B1mH,KAAK48J,iBAAmB,KAGhCR,EAAUl8J,UAAU+iK,6BAA+B,WAC/C,IAAI0L,EAAO3uK,KAAK8gB,OAEhB,GADA9gB,KAAK2/J,WAAa3/J,KAAK8gB,OAAO8Y,0BAA0B,IACnD+0I,EAAKn6I,sBAAwBx0B,KAAK4uK,WAC9BD,EAAKjoD,oBAAoE,IAA9CjnH,OAAO2V,KAAKpV,KAAK48J,kBAAkBj8J,SAC9DguK,EAAKjoD,oBAAqB,CAC/B,IAAIppG,EAAOtd,KAAK8gB,OAAOkb,gBACnB1c,GAAQ,IAAI,QAAQyY,MAAM/3B,KAAK4uK,SAAU,SAAS,GACjDtvJ,EAAMu9C,SACPv9C,EAAMu9C,OAAS78D,KAAK8gB,OAAOxB,MAAMu9C,QAErC,IAAIt9C,EAAcjC,EAAKmC,QAAQ,GAAIH,GAE/BuvJ,EAAU7uK,KACdA,KAAK8gB,OAAO47E,cACZn9E,EAAYK,MAAK,SAAUzS,GACvB0hK,EAAQvwB,YAAYnxI,EAAE2S,QACtB+uJ,EAAQC,0BACRD,EAAQ/tJ,OAAO+7E,mBAI3Bu/D,EAAUl8J,UAAUo+I,YAAc,SAAUoC,GAExC,IADA,IAAIpjI,EAAQtd,KAAK8gB,OAAOkb,gBAAgBvF,aAAe,eAAkBiqH,EAAI,WAAcA,EAAI,UAAYA,EAClG1/I,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAClC,IAAI4sK,EAAU5tK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MACvE,eAAkB5R,KAAK48J,iBAAiB,GAAKgR,KAAatwJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,KAAK5R,KAAK4uK,YAChG5uK,KAAK48J,iBAAiB,GAAKgR,GAAWtwJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,KAAK5R,KAAK4uK,WAGpF5uK,KAAKg9J,oBAAsB1/I,GAE/B8+I,EAAUl8J,UAAU6uK,gBAAkB,SAAU5yI,GAC5C,GAAMn8B,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACzEpf,KAAK8gB,OAAO1B,WAAWU,OAiC1B,GAAIqc,EAAO,CACP,IAAI6yI,EAAoBvvK,OAAO2V,KAAKpV,KAAK48J,kBACrCqS,EAAyBxvK,OAAO2V,KAAKpV,KAAK68J,oBAC9C,IAAK78J,KAAKi+J,gBAGN,IAFA,IAAIvgC,EAAW19H,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAUX,KAAK8gB,OAAO4lG,mBACnE1mH,KAAK8gB,OAAO5I,gBAAgB,WAAalY,KAAK8gB,OAAO5I,gBAChD+J,EAAK,EAAGitJ,EAAYxxC,EAASz7G,EAAKitJ,EAAUvuK,OAAQshB,IAAM,CAC3D3E,EAAO4xJ,EAAUjtJ,GACrB,IAAK,eAAkB3E,EAAKtd,KAAK2/J,aAAc,CAC3C,IAAIp/J,EAAM+c,EAAKtd,KAAK2/J,YAAY/tJ,YACQ,IAApCo9J,EAAkBhrK,QAAQzD,KAAwD,IAAzC0uK,EAAuBjrK,QAAQzD,KACxEP,KAAK48J,iBAAiBt/I,EAAKtd,KAAK2/J,cAAe,UAO/D3/J,KAAK48J,iBAAmB,GACxB58J,KAAK68J,mBAAqB,GAC1B78J,KAAKg+J,oBAAqB,OApD9B,GAAI7hI,EACA,GAAIn8B,KAAKwkG,qBAAuBxkG,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,yBAE5E,IADA,IAAI+oG,EAASx9H,KAAK8gB,OAAOmhF,gBAAgB7jF,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBAC/Dp1F,EAAK,EAAGshK,EAAW3xC,EAAQ3vH,EAAKshK,EAASxuK,OAAQkN,IAAM,CAC5D,IAAI8T,EAAMwtJ,EAASthK,GACnB7N,KAAK48J,iBAAiB58J,KAAK8iK,WAAW9iK,KAAK2/J,WAAYh+I,EAAIrE,QAAS,MAGvE,CACD,IAAIskJ,EAAe5hK,KAAKwkG,mBAAqBxkG,KAAK8gB,OAAO6iF,uBAAyB3jG,KAAKyf,UACvF,GAAIzf,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAClC,IAAK,IAAIkD,EAAK,EAAGC,EAAK9D,KAAKwkG,mBAAqBo9D,EAAeA,EAAa7lI,QAASl4B,EAAKC,EAAGnD,OAAQkD,IAAM,CACvG,IAAIyZ,EAAOxZ,EAAGD,GACd7D,KAAK48J,iBAAiB58J,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,KAAS,OAIpE,IAAK,IAAIkE,EAAK,EAAG4tJ,EAAiBxN,EAAcpgJ,EAAK4tJ,EAAezuK,OAAQ6gB,IAAM,CAC9E,IAAIlE,EAAO8xJ,EAAe5tJ,GAC1BxhB,KAAK48J,iBAAiB58J,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,KAAS,QAM5Etd,KAAK48J,iBAAmB,IA+BpCR,EAAUl8J,UAAUuf,QAAU,WAC1B,OAAOzf,KAAK8gB,OAAOkb,gBAAgBzc,YAAYq7E,aAAa56F,KAAK8gB,OAAOkb,gBAAgBtc,eAAc,KAE1G08I,EAAUl8J,UAAUmvK,yBAA2B,WAC3C,IAAIC,EAA+B,IAAI,OAAYtvK,KAAKg9J,qBAAqBpiE,aAAa56F,KAAK8gB,OAAOkb,gBAAgBtc,eAAc,IAKpI,OAJI1f,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAU2uK,GAC5CA,EAA6BvzI,UAC7BuzI,EAA+BA,EAA6BvzI,QAAQruB,SAEjE4hK,GAEXlT,EAAUl8J,UAAU4uK,wBAA0B,WAC1C,IAAIlsJ,EAAO5iB,KAAK8gB,OAAO+oF,UAKvB,GAJA7pG,KAAK6zG,kBAAoB7zG,KAAK8gB,OAAOgzF,wBAAwBnzG,OACzDX,KAAK8gB,OAAOyT,cACZv0B,KAAK6zG,kBAAoB7zG,KAAK8gB,OAAO4T,aAAam/E,oBAEjD,eAAkBjxF,IAASA,EAAKjiB,OAAS,IAAMX,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAK4uK,UAAW,CAElG,IADA,IAAI1jE,EAAU,GACLrnF,EAAI,EAAGA,EAAIjB,EAAKjiB,OAAQkjB,IAAK,CAClC,IAAI25G,EAASx9H,KAAKi/J,UAAUr8I,EAAKjR,SAASkS,EAAEjS,WAAY,MACpDuxJ,EAAO3lC,GAASA,EAAOlgH,KAAOtd,KAAK8iK,WAAW9iK,KAAK2/J,WAAYniC,EAAOlgH,MAAe,KACzF,GAAa,OAAT6lJ,EACA,OAEJ,IAAInjK,KAAKwkG,oBAAuBg5B,EAAOv6B,aAAvC,CAGA,IAAIigD,OAAa,EACbx+C,EAAS9hF,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1F,cAAc,kBACxDlM,KAAK48J,iBAAiB,GAAKuG,IAAuC,UAA7BnjK,KAAK8gB,OAAO0/E,cAA4BxgG,KAAK48J,iBAAiB,GAAKuG,IACxGnjK,KAAK6zG,oBAAsBp0G,OAAO2V,KAAKpV,KAAK48J,kBAAkBj8J,QAAUX,KAAK88J,aAAa94J,QAAQm/J,GAAQ,GACzE,YAA7BnjK,KAAK8gB,OAAO0/E,cAA8BxgG,KAAK88J,aAAa94J,QAAQm/J,GAAQ,IAAMnjK,KAAK8gB,OAAOmkG,kBACjE,iBAA7BjlH,KAAK8gB,OAAO0/E,eAAoC,eAAkBxgG,KAAK4uK,WAAapxC,EAAOlgH,KAAKtd,KAAK4uK,WACzG1jE,EAAQ7+F,KAAKsF,SAASiR,EAAKjR,SAASkS,EAAEjS,WAAY,KAAKlH,aAAa,QAAwB,KAC5Fw4I,GAAa,IAGbA,GAAa,EACTljJ,KAAKsjK,gBAAkB5+D,GAAU1kG,KAAK8gB,OAAOy/E,qBAAuBmE,GACpE,gBAAqBA,EAAO2+D,mBAAoBngB,IAGxDljJ,KAAK4iK,wBAAwBhgJ,EAAKjR,SAASkS,EAAEjS,WAAY,KAAMsxI,IAE/DljJ,KAAK+hK,eAAiB72D,EAAQvqG,OAAS,EACvCX,KAAK86H,UAAU5vB,EAAQ,IAAI,GAG3BlrG,KAAKkmI,WAAWh7B,IAGnBlrG,KAAK8gB,OAAOy/E,qBAAsE,oBAA/CvgG,KAAK8gB,OAAOwiF,kBAAkB4zB,eAAuCl3H,KAAKw/J,+BAA+B7+J,OAAS,GACtJX,KAAKujK,oBAGbnH,EAAUl8J,UAAUwvF,YAAc,SAAUviF,GACxC,GAAsB,SAAlBA,EAAEssB,aAA0Bz5B,KAAK8gB,OAAO4lG,mBAAoB,CAC5D,IAAI6oD,EAAavvK,KAAK8gB,OAAO1d,QAAQ8I,cAAc,uBACnD,IAAK,eAAkBqjK,GAAa,CAChC,IAAI5tJ,EAAM,eAAQ4tJ,EAAY,IAAM,QACpC,GAAI5tJ,EAAK,CACiC,WAAlC3hB,KAAK8gB,OAAOo9F,aAAazgG,OACzBkE,EAAM3hB,KAAK8gB,OAAO1d,QAAQ8I,cAAc,kBAE5C,IAAIsxH,EAASx9H,KAAKi/J,UAAUt9I,GAC5B,IAAK67G,EACD,OAEJx9H,KAAK48J,iBAAiB58J,KAAK8iK,WAAW9iK,KAAK2/J,WAAYniC,EAAOlgH,OAASkgH,EAAO5zG,WAAa2lJ,EAAW7/D,aAGtG1vG,KAAK+8J,eAAiBwS,EAAW7/D,SAIzC1vG,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAKwkG,qBACjB,WAAlBr3F,EAAEssB,cAA6Bz5B,KAAK8gB,OAAOkb,gBAAgBvF,aACtD,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,UACzE9f,KAAK8hI,mBAAqB,IAER,cAAlB30H,EAAEssB,aAAiD,cAAlBtsB,EAAEssB,cACnCz5B,KAAK8gB,OAAO6iF,uBAAyB,GACrC3jG,KAAK8gB,OAAO8iF,uBAAyB,MAIjDw4D,EAAUl8J,UAAU+tK,eAAiB,SAAU9gK,GAC3C,GAAsB,SAAlBA,EAAEssB,aAA0Bz5B,KAAK8gB,OAAO4lG,mBAAoB,CAC5D,GAAiB,QAAbv5G,EAAE4vB,OAAkB,CACpB,GAAI/8B,KAAK+8J,eAAgB,CACrB,IAAIv/B,EAASx9H,KAAK8gB,OAAO28G,oBAAoBz9H,KAAK8gB,OAAO+oF,UAAU18F,EAAEmyH,aAAa50H,aAAa,aAC/F1K,KAAK48J,iBAAiB58J,KAAK8iK,WAAW9iK,KAAK2/J,WAAYniC,EAAOlgH,OAASkgH,EAAO5zG,WAAa5pB,KAAK+8J,eAEpG/8J,KAAKk9J,uBAAwB,EAC7Bl9J,KAAKujK,mBAETvjK,KAAK8uK,0BAET,GAAsB,WAAlB3hK,EAAEssB,aAA4Bz5B,KAAK8gB,OAAO4lG,mBAAoB,CAG9D,IAFA,IAAI3qF,EAAU5uB,EAAEmQ,KACZA,EAAOye,EAAQruB,QACV1M,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAClC,IAAI4sK,EAAU5tK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MACtE,eAAkBg8J,IACnB5tK,KAAKkjK,oBAAoB0K,EAAS5tK,KAAKwkG,oBAG/CxkG,KAAKk9J,uBAAwB,EAC7Bl9J,KAAKujK,mBACLvjK,KAAK6zG,kBAAoB7zG,KAAK8gB,OAAO4T,aAAam/E,kBAEtD,GAAsB,WAAlB1mG,EAAEssB,YAA0B,CAC5B,GAAIz5B,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAKwkG,oBAAsBxkG,KAAKk9J,sBAAuB,CACzF,IAAIt6I,EAAO5iB,KAAK8gB,OAAOmhF,gBACnBiJ,EAAU,GACd,IAASlqG,EAAI,EAAGA,EAAI4hB,EAAKjiB,OAAQK,IACzB4hB,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKqxF,cACjCiI,EAAQ7+F,KAAKuW,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKnF,OAGlDy+F,EAAQvqG,QACRX,KAAKkmI,WAAWh7B,GAGxBlrG,KAAK4gK,kBAAer1J,EACpBvL,KAAK6jK,eAAYt4J,EACjBvL,KAAK8jK,gBAAav4J,IAG1B6wJ,EAAUl8J,UAAUsvK,YAAc,WAuB9B,IAtBKxvK,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO4lG,oBAC7C1mH,KAAK6hI,gBAAgBlhI,SACrBX,KAAK69J,oBAAqB,IAG7B79J,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACxEpf,KAAK8gB,OAAO1B,WAAWU,SAAY9f,KAAKg+J,qBACV,iBAA7Bh+J,KAAK8gB,OAAO0/E,aACZxgG,KAAK+uK,iBAAgB,GAEa,YAA7B/uK,KAAK8gB,OAAO0/E,cACjBxgG,KAAK+uK,iBAAgB,IAGzB/uK,KAAK8gB,OAAO0T,sBACZx0B,KAAKujK,mBAELvjK,KAAK8gB,OAAO4lG,oBACZ1mH,KAAK8uK,0BAET9uK,KAAK49J,uBAAsB59J,KAAKogK,aAAepgK,KAAK8gB,OAAO1d,QAAQ0pD,iBAAiB,2BAChF9sD,KAAK8gB,OAAO8gH,kBAAkBjhI,QAC9BX,KAAK8gB,OAAOy/E,sBAAwBvgG,KAAK49J,oBAAqB,CAG9D,IAFA,IAAI6R,EAAezvK,KAAK8gB,OAAOmhF,gBAC3BiJ,EAAU,GACLlqG,EAAI,EAAGA,EAAIyuK,EAAa9uK,OAAQK,IACjCyuK,EAAa99J,SAAS3Q,EAAE4Q,WAAY,KAAKgY,YACzCshF,EAAQ7+F,KAAKrL,GAGjBkqG,EAAQvqG,QACRX,KAAKkmI,WAAWh7B,GAEpBlrG,KAAK49J,qBAAsB,IAGnCxB,EAAUl8J,UAAUikK,0BAA4B,SAAUjhB,GACtD,GAAIljJ,KAAK8gB,OAAO4lG,mBAAoB,CAEhC,IADA,IAAI9jG,EAAO5iB,KAAK8gB,OAAO+oF,UACd7oG,EAAI,EAAGA,EAAI4hB,EAAKjiB,OAAQK,IAC7BhB,KAAK4iK,wBAAwBhgJ,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAMsxI,GAElC,YAA7BljJ,KAAK8gB,OAAO0/E,cACZxgG,KAAK+uK,iBAAgB,GACrB/uK,KAAKg9J,oBAAuBh9J,KAAK8gB,OAAOkb,gBAAgBvF,aAC/C,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,OACvE9f,KAAKg9J,oBAAsB,IAEC,UAA7Bh9J,KAAK8gB,OAAO0/E,eACjBxgG,KAAK+uK,iBAAgB,GACrB/uK,KAAKg9J,oBAAwBh9J,KAAK8gB,OAAOkb,gBAAgBvF,aAChD,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,QACrE9f,KAAKwkG,mBAEoBxkG,KAAKg9J,oBADlCh9J,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAASX,KAAKyf,UAAUsc,QAAQruB,QAC9D1N,KAAKyf,UAAU/R,WAInC0uJ,EAAUl8J,UAAUwvK,qBAAuB,SAAUxsB,GACjD,IAAIysB,EAAY3vK,KAAK0yG,cACjBk9D,EAAW5vK,KAAK8gB,OAAO1d,QAAQ8I,cAAc,eAajD,GAZAlM,KAAKsjK,cAAgBtjK,KAAKuuK,iBACtBrrB,GAAcljJ,KAAKw/J,+BAA+B7+J,QAClDX,KAAK8gB,OAAO0/E,aAAe,QAC3BxgG,KAAKmkK,0BAA0BjhB,GAC/BljJ,KAAKiwI,kBAAkB0/B,EAAUE,mBAAmB,GAAIF,EAAUE,mBAAmB7vK,KAAKw/J,+BAA+B7+J,OAAS,MAGlIX,KAAK8gB,OAAO0/E,aAAe,UAC3BxgG,KAAKmkK,0BAA0BjhB,GAC/BljJ,KAAK48G,kBAET58G,KAAK88J,aAAe,IACf,eAAkB8S,GAAW,CAC9B,IAAIL,EAAaK,EAAS1jK,cAAc,uBACnC,eAAkBqjK,IACnB,gBAAqBA,EAAWlM,mBAAoBngB,KAIhEkZ,EAAUl8J,UAAU4vK,eAAiB,SAAU5tB,GAC3C,IAAI7+I,EAAQrD,KACR+vK,EAAW/vK,KAAKkkK,kBAAkBhiB,GAClC/lH,EAAqB,UAAb4zI,EAcZ,GAbA/vK,KAAK+gK,yBAA0B,GAC1B/gK,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACxEpf,KAAK8gB,OAAO1B,WAAWU,UAA2B,YAAbiwJ,GAA0B/vK,KAAKi+J,iBACzD,iBAAb8R,GAA+B/vK,KAAK8gB,OAAO4lG,oBAC5C1mH,KAAKg+J,oBAAqB,EAG1Bh+J,KAAKg+J,oBAAqB,EAE1Bh+J,KAAKg+J,oBAAsBh+J,KAAKi+J,kBAChCj+J,KAAK68J,mBAAqB,IAE9B78J,KAAKi+J,iBAAkB,EACN,iBAAb8R,IACK/vK,KAAK4uK,UAAa5uK,KAAK8gB,OAAO4lG,qBAC/BvqF,EAAQn8B,KAAKw/J,+BAA+BjoI,MAAK,SAAUja,GACvD,OAAOja,EAAMy/J,WAAWz/J,EAAMs8J,WAAYriJ,KAASja,EAAMu5J,sBAG5D58J,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACxEpf,KAAK8gB,OAAO1B,WAAWU,SAAY9f,KAAK8gB,OAAO4lG,oBAClD,IAAK,IAAI1lH,EAAI,EAAGA,EAAIhB,KAAKw/J,+BAA+B7+J,OAAQK,IAC5D,IAAK,eAAkBhB,KAAK8iK,WAAW9iK,KAAK2/J,WAAY3/J,KAAKw/J,+BAA+B,GAAKx+J,KAAM,CACnG,IAAIvB,OAAO2V,KAAKpV,KAAK48J,kBAAkBxrD,SAAUpxG,KAAK8iK,WAAW9iK,KAAK2/J,WAAY3/J,KAAKw/J,+BAA+B,GAAKx+J,IAAK4Q,YAG3H,CACDuqB,GAAQ,EACR,MAJAA,GAAQ,EAUxBn8B,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAK8gB,OAAOyT,cAC9Cv0B,KAAK6zG,kBAAoB7zG,KAAK8gB,OAAO4T,aAAam/E,mBAEtD7zG,KAAK0vK,sBAAsBvzI,GAC3Bn8B,KAAKM,OAAS,KACVN,KAAKw/J,+BAA+B7+J,OAAS,IAC7CX,KAAKujK,mBACLvjK,KAAKgwK,4BAEThwK,KAAKiwK,sBAAsB/tB,GAAW/lH,IAE1CigI,EAAUl8J,UAAUgkK,kBAAoB,SAAU5kI,GAC9C,IAEIygF,EAFAjb,EAAUxlE,EAAMA,EAAI+jI,mBAAmBn+J,UACvClF,KAAKuuK,iBAAiBlL,mBAAmBn+J,UAc7C,OAXI66G,EADAjb,EAAQz+F,SAAS,WACR,QAEJy+F,EAAQz+F,SAAS,aACb,UAEJy+F,EAAQz+F,SAAS,UACb,eAGA,OAEN05G,GAEXq8C,EAAUl8J,UAAUgwK,YAAc,SAAUhuB,GACxC,IAAI5hJ,EAAS,eAAQN,KAAKsjK,cAAe,IAAM,QAC3C3wI,EAAO3yB,KAAK8gB,OAChB9gB,KAAKu8J,oBAAqB,EAC1B,IAAI4T,EAAS,EAEb,GADAnwK,KAAK+gK,yBAA0B,EAC3B,gBAAgBpuI,GAAO,CACvB,IAAIkG,EAAMv4B,EAAOo1C,cAAchrC,aAAa,YAExCylK,EADAnwK,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAC7DgR,SAASrR,EAAOo1C,cAAchrC,aAAa,QAAwB,IAGnEioB,EAAKk3E,UAAUhjG,KAAI,SAAUg5G,GAAK,OAAOA,EAAEn1G,aAAa,eAAgB1G,QAAQ60B,QAI7Fs3I,EAASx+J,SAASrR,EAAOo1C,cAAchrC,aAAa,QAAwB,IAE5E1K,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAK8gB,OAAO1d,QAAQ4wC,uBAAuB,QAAmBrzC,OAAS,GAC7D,QAA5CX,KAAK8gB,OAAOo9F,aAAawhD,kBACvByQ,EAENnwK,KAAKowK,wBAAwBD,EAAQx+J,SAASrR,EAAOoK,aAAa,QAAwB,KAC1F1K,KAAKqwK,0BAA0B,eAAQ/vK,EAAQ,IAAM,SACrDN,KAAKujK,mBACLvjK,KAAKu8J,oBAAqB,EAC1Bv8J,KAAKiwK,sBAAsB/tB,EAAUA,EAASmhB,mBAAmBn+J,UAAUmB,SAAS,aAExF+1J,EAAUl8J,UAAUmwK,0BAA4B,SAAU1uJ,GACtD,GAAiC,UAA7B3hB,KAAK8gB,OAAO0/E,cAAyD,YAA7BxgG,KAAK8gB,OAAO0/E,aAA4B,CAChF,IAAIg9B,EAASx9H,KAAKi/J,UAAUt9I,GACxBwhJ,EAAO3lC,GAAUA,EAAOlgH,KAAOtd,KAAK8iK,WAAW9iK,KAAK2/J,WAAYniC,EAAOlgH,MAAQ,KACnF,IAAK6lJ,EACD,OAEAnjK,KAAK88J,aAAa94J,QAAQm/J,GAAQ,EAClCnjK,KAAK88J,aAAazwJ,KAAK82J,GAGvBnjK,KAAK88J,aAAapwJ,OAAO1M,KAAK88J,aAAa94J,QAAQm/J,GAAO,KAItE/G,EAAUl8J,UAAU+vK,sBAAwB,SAAU/tB,EAAUgB,GAC5DljJ,KAAK8gB,OAAO7Y,QAAQ,OAAuB,CACvCynG,QAASwzC,EAAYphB,mBAAoB9hI,KAAK8gB,OAAOu/E,wBACrD//F,OAAQ4hJ,IAEPliJ,KAAK8gB,OAAOshD,SACbpiE,KAAKsjK,cAAgB,OAG7BlH,EAAUl8J,UAAU8vK,yBAA2B,WAC3C,GAAIhwK,KAAK8gB,OAAOy/E,sBAAwBvgG,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,0BACpFz0B,KAAKwkG,sBAAwBxkG,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACpGpf,KAAK8gB,OAAO1B,WAAWU,SACvB9f,KAAK8gB,OAAOwiF,kBAAkBC,kBACA,YAA7BvjG,KAAK8gB,OAAO0/E,aAEZ,IADA,IAAIg9B,EAASx9H,KAAK8gB,OAAOmhF,gBAAgB7jF,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBAC/Dp1F,EAAK,EAAGyiK,EAAW9yC,EAAQ3vH,EAAKyiK,EAAS3vK,OAAQkN,IAAM,CAC5D,IAAI8T,EAAM2uJ,EAASziK,GACnB7N,KAAK8hI,mBAAmBz1H,KAAKsV,EAAIlV,OAI7C,GAAIzM,KAAK8gB,OAAOy/E,qBAAuBvgG,KAAK8gB,OAAO0T,uBAAyBx0B,KAAKwkG,qBAC5ExkG,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACpEpf,KAAK8gB,OAAO1B,WAAWU,UAC1B9f,KAAK8gB,OAAO4lG,oBAAmD,UAA7B1mH,KAAK8gB,OAAO0/E,aAA0B,CACxEg9B,EAASx9H,KAAK8gB,OAAOmhF,gBAAgB7jF,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBACxE,GAAIu6B,EAAO78H,SAAWX,KAAK8hI,mBAAmBnhI,OAC1C,IAAK,IAAIkD,EAAK,EAAG0sK,EAAW/yC,EAAQ35H,EAAK0sK,EAAS5vK,OAAQkD,IAAM,CACxD8d,EAAM4uJ,EAAS1sK,GACf7D,KAAK8hI,mBAAmB99H,QAAQ2d,EAAIlV,SAAW,GAC/CzM,KAAK8hI,mBAAmBz1H,KAAKsV,EAAIlV,UAMrD2vJ,EAAUl8J,UAAUswK,uBAAyB,SAAU/jK,GACnD,GAAIzM,KAAK8gB,OAAOy/E,sBAAwBvgG,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,4BAC/Ez0B,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACxEpf,KAAK8gB,OAAO1B,WAAWU,UAC1B9f,KAAKwkG,mBACT,GAAiC,UAA7BxkG,KAAK8gB,OAAO0/E,aAA0B,CACtCxgG,KAAK8hI,mBAAqB,GAG1B,IAFA,IAAIluB,EAAa5zG,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAASX,KAAKyf,UAAU,WAAW9e,OAClFX,KAAKyf,UAAU9e,OACV2c,EAAO,EAAGA,EAAOs2F,EAAYt2F,IAClCtd,KAAK8hI,mBAAmBz1H,KAAKiR,QAGhC,GAAiC,YAA7Btd,KAAK8gB,OAAO0/E,aACjBxgG,KAAK8hI,mBAAqB,OAEzB,CACD,IAAIngH,EAAM3hB,KAAK8gB,OAAOg+F,cAAcryG,GACpC,GAAIA,GAASkV,GAA6C,UAAtCA,EAAIjX,aAAa,iBAA8B,CAC/D,IAAI+lK,EAAczwK,KAAK8hI,mBAAmB99H,QAAQyI,GAClDzM,KAAK8hI,mBAAmBp1H,OAAO+jK,EAAa,MAK5DrU,EAAUl8J,UAAUwwK,cAAgB,SAAU3wJ,GAC1C,GAAI/f,KAAK8gB,OAAOkb,gBAAgBvF,aACvB,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,OACzE,OAAO9f,KAAKqvK,2BAA2B1uK,UAAYX,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,wBAC7Fz0B,KAAK8gB,OAAOq2F,sBAAwBn3G,KAAK6zG,mBAG/C,GAAI7zG,KAAKwkG,mBAAoB,CACzB,GAAIxkG,KAAK8gB,OAAOyT,aAAev0B,KAAK8gB,OAAO4T,aAAaG,SAAW70B,KAAK8gB,OAAO4T,aAAam/E,kBAAmB,CAE3G,IADA,IAAIv2F,EAAOtd,KAAK8gB,OAAO6iF,uBACd3iG,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAClC,IAAImiK,EAAOnjK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MACxE,IAAK5R,KAAK48J,iBAAiB,GAAKuG,GAC5B,OAAO,EAGf,OAAO,EAGP,OAAOnjK,KAAK2wK,oBAAoB5wJ,GAKpC,IADIzC,EAAQtd,KAAK8gB,OAAOyU,cAAc7S,QAAc,OAAI1iB,KAAKyf,UAAU,WAAazf,KAAKyf,UAChFze,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAC9BmiK,EAAOnjK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MACxE,IAAK5R,KAAK48J,iBAAiB,GAAKuG,GAC5B,OAAO,EAGf,OAAO,GAInB/G,EAAUl8J,UAAU0wK,iBAAmB,WACnC,IAAK5wK,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACxEpf,KAAK8gB,OAAO1B,WAAWU,UACtB9f,KAAK8gB,OAAOmW,eAAe12B,IAAII,QAAUX,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,QAEhF,IADA,IAAI2uK,EAA+BtvK,KAAKqvK,2BAC/BruK,EAAI,EAAGA,EAAIsuK,EAA6B3uK,OAAQK,IAAK,CAC1D,IAAImiK,EAAOnjK,KAAK8iK,WAAW9iK,KAAK2/J,WAAY2P,EAA6B39J,SAAS3Q,EAAE4Q,WAAY,MAChG,GAAI5R,KAAK48J,iBAAiB,GAAKuG,GAC3B,OAAO,EAInB,IAAI7lJ,EAAOtd,KAAKwkG,mBAAqBxkG,KAAK8gB,OAAO6iF,uBAC1C3jG,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aACtEpf,KAAK8gB,OAAO1B,WAAWU,OAAW,GAAK9f,KAAKyf,UACvD,IAASze,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAC9BmiK,EAAOnjK,KAAK8iK,WAAW9iK,KAAK2/J,WAAYriJ,EAAK3L,SAAS3Q,EAAE4Q,WAAY,MACxE,GAAI5R,KAAK48J,iBAAiB,GAAKuG,GAC3B,OAAO,EAGf,OAAO,GAEX/G,EAAUl8J,UAAUqjK,iBAAmB,SAAU92J,EAAOokK,GACpD,GAAI7wK,KAAK8gB,OAAOy/E,qBAAsE,oBAA/CvgG,KAAK8gB,OAAOwiF,kBAAkB4zB,aAAoC,CACrG,IAAI45C,GAAmB,EACnBphH,GAAa,EACbqhH,EAAatxK,OAAO2V,KAAKpV,KAAK48J,kBAAkBj8J,OAC/CX,KAAK8gB,OAAO4lG,qBACbqqD,EAAa/wK,KAAK8hI,mBAAmBnhI,OACrCX,KAAK6zG,kBAAoB7zG,KAAKw/J,+BAA+B7+J,SAE7DX,KAAK8gB,OAAO4lG,qBAAyB1mH,KAAK8gB,OAAOkb,gBAAgBvF,aAC/D,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,SACtE9f,KAAKwkG,qBACDxkG,KAAK8gB,OAAOmW,eAAe12B,IAAII,SAAUX,KAAK8gB,OAAOwX,eAAe5V,QAAQ/hB,SAChF+uD,GAAa,EACbohH,EAAmB9wK,KAAK0wK,cAAcK,IAE1C,IAAIlrG,EAAQ7lE,KAAKuuK,iBACjB,GAAI1oG,EAAO,CACP,IAAImrG,EAAUnrG,EAAMw9F,mBACpB,gBAAY,CAAC2N,GAAU,CAAC,UAAW,SAAU,cAC7C,gBAAWnrG,GAAO,GAClBA,EAAMk8E,eAAgB,EACtB,IAAIkvB,EAAYjxK,KAAK8gB,OAAOkb,gBAAgBvF,WAAa,GACpDz2B,KAAK8gB,OAAOyU,cAAc7S,QAAc,OAAI1iB,KAAKyf,UAAU,WAAazf,KAAKyf,UA+ClF,GA9CKqxJ,GAAoBphH,IAAe1vD,KAAK8gB,OAAOkb,gBAAgBvF,aAC9D,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,QACtEmxJ,EAAUtwK,UAAc+uD,IAAgBqhH,IAAe/wK,KAAK6zG,mBAAqB7zG,KAAK6zG,oBAClF7zG,KAAKwkG,uBAAyBxkG,KAAK8gB,OAAOkb,gBAAgBvF,aACzD,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,SACtE9f,KAAK8gB,OAAOyT,eACbv0B,KAAK8gB,OAAO0T,uBAAyBx0B,KAAK8gB,OAAO2T,yBAC5Cz0B,KAAKwkG,qBAAuBxkG,KAAK2wK,oBAAoBI,IAAe/wK,KAAKk9J,yBAC3El9J,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,2BAC7Cz0B,KAAK8gB,OAAOyT,gBAAmBv0B,KAAK8gB,OAAOkb,gBAAgBvF,aAC1D,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,SACzEmxJ,EAAUtwK,QAAUowK,IAAeE,EAAUtwK,SAAaX,KAAK8gB,OAAOkb,gBAAgBvF,aACjF,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,UACxE9f,KAAKwkG,qBAAwBusE,IAAe/wK,KAAK8gB,OAAOq2F,wBAA4Bn3G,KAAK2wK,oBAAoBI,IAC3GA,IAAe/wK,KAAK6zG,qBAAuB7zG,KAAK8gB,OAAO4lG,qBACzD1mH,KAAKwkG,qBAAuBxkG,KAAKk9J,uBAAyBl9J,KAAK2wK,oBAAoBI,MACpFA,IAAe/wK,KAAK6zG,mBAAqB7zG,KAAK6zG,oBAAsB7zG,KAAKwkG,qBACxExkG,KAAK8gB,OAAOyT,cAAgBv0B,KAAK8gB,OAAO0T,uBAAyBx0B,KAAK8gB,OAAO2T,0BAClF,eAAS,CAACu8I,GAAU,CAAC,YACrB,gBAAWnrG,GAAO,GACdgrG,GACA7wK,KAAK0yG,cAAcp/C,aAAa,MAAM,GAAM,GAEhDtzD,KAAK8gB,OAAO0/E,aAAe,WAEnBxgG,KAAK8hI,mBAAmBnhI,UAAYX,KAAK8gB,OAAO0T,uBACtDx0B,KAAKg9J,oBAAoBr8J,SAAW+uD,GAAgBA,GAAc1vD,KAAK4wK,qBAC1D,IAAfG,GAAmE,IAA/C/wK,KAAKw/J,+BAA+B7+J,UAAkBX,KAAK8gB,OAAOyT,aACrFv0B,KAAK8gB,OAAOyT,cAA+B,IAAfw8I,GAAqBA,GAAcrhH,GAAc1vD,KAAK4wK,qBACnF,eAAS,CAACI,GAAU,CAAC,cACjBH,GACA7wK,KAAK0yG,cAAcp/C,aAAa,MAAM,GAAO,GAEjDtzD,KAAK8gB,OAAO0/E,aAAe,YAG3B,eAAS,CAACwwE,GAAU,CAAC,WACrBhxK,KAAK8gB,OAAO0/E,aAAe,eAC3B36B,EAAMk8E,eAAgB,GAEP,IAAfgvB,GAAmE,IAA/C/wK,KAAKw/J,+BAA+B7+J,OACxD,eAAS,CAACqwK,EAAQt7H,eAAgB,CAAC,wBAGnC,gBAAY,CAACs7H,EAAQt7H,eAAgB,CAAC,wBAEtC11C,KAAKwkG,mBAAoB,CACzB,IAAIl5B,EAAWtrE,KAAK8gB,OAAOmhF,gBAAgB7jF,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBAAiBtiG,OAC1E,IAAb2qE,GAAkB0lG,EAAQt7H,cAAcxpC,cAAc,YAAYhH,UAAUmB,SAAS,aACrF,eAAS,CAAC2qK,EAAQt7H,eAAgB,CAAC,wBAGnC,gBAAY,CAACs7H,EAAQt7H,eAAgB,CAAC,yBAGzC11C,KAAK8gB,OAAO0T,uBAAwBx0B,KAAK8gB,OAAO2T,yBAC7Cz0B,KAAK8gB,OAAOyT,aAAiBv0B,KAAK8gB,OAAOkb,gBAAgBvF,aACxD,eAAkBz2B,KAAK8gB,OAAO1B,aAAepf,KAAK8gB,OAAO1B,WAAWU,QACzE9f,KAAKwwK,uBAAuB/jK,MAK5C2vJ,EAAUl8J,UAAUywK,oBAAsB,SAAU5wJ,GAChD,IAAIurD,EAAW,EACXkyD,EAASx9H,KAAK8gB,OAAOmhF,gBACzB,GAAIjiG,KAAK8gB,OAAOwiF,kBAAkBC,mBAAqBvjG,KAAK8gB,OAAO0T,sBAAwBx0B,KAAK8gB,OAAO2T,yBAA0B,CAC7H,IAAIy8I,EAAWlxK,KAAK8gB,OAAOkb,gBAAgBvF,aAAgB,eAAkBz2B,KAAK8gB,OAAO1B,aAClFpf,KAAK8gB,OAAO1B,WAAWU,OAC1B9f,KAAK8gB,OAAOq2F,sBAAwBn3G,KAAKyf,WAAazf,KAAKyf,UAAU9e,OACzE,OAAIuwK,IAAY1zC,EAAO78H,SACnB2qE,EAAWkyD,EAAOp/G,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBAAiBtiG,OAC3D2qE,GAAYvrD,IAAUurD,GAOjC,OAAItrE,KAAK8gB,OAAOyT,aAAev0B,KAAK8gB,OAAOwiF,kBAAkBC,kBACzDj4B,EAAWtrE,KAAK8gB,OAAO6iF,uBAAuBhjG,OAASX,KAAK8gB,OAAO8iF,uBAAuBjjG,OACtF2qE,IAAatrE,KAAK6zG,oBACX7zG,KAAK8gB,OAAO6iF,uBAAuBhjG,QAAUof,IAAU/f,KAAK8gB,OAAO6iF,uBAAuBhjG,UAOrG2qE,EAAWkyD,EAAOp/G,QAAO,SAAUjR,GAAK,OAAOA,EAAE81F,gBAAiBtiG,OAC3D2qE,GAAYvrD,IAAUurD,IAIzC8wF,EAAUl8J,UAAUq9G,eAAiB,SAAUpwG,KAEd,WAAtB,OAAQ6Z,KAAKhX,MAA6C,WAAtB,OAAQgX,KAAKhX,QAAsC,KAAd7C,EAAEqG,SAAgC,KAAdrG,EAAEqG,UAC3E,UAAtB,OAAQwT,KAAKhX,MAAkC,KAAd7C,EAAEqG,SAA0C,YAAtB,OAAQwT,KAAKhX,MAAoC,MAAd7C,EAAEqG,WAC7FxT,KAAKw9J,eAAgB,GAEzB,IAAI2T,EAAiB,gBAAahkK,EAAE7M,OAAQ,gBACxC8wK,EAAgB,gBAAajkK,EAAE7M,OAAQ,QACvC+wK,EAAaF,EAAiBA,EAAelrH,SAAS,GAAG/gD,UAAUmB,SAAS,wBAC5E+qK,GAAgBA,EAAclsK,UAAUmB,SAAS,gBACjDgrK,IAAerxK,KAAK8gB,OAAOirH,eAA+B,KAAd5+H,EAAEqG,SAC9CrG,EAAE+F,kBAGVkpJ,EAAUl8J,UAAUmuK,aAAe,SAAUlhK,KACZ,WAAtB,OAAQ6Z,KAAKhX,MAA6C,WAAtB,OAAQgX,KAAKhX,QAAsC,KAAd7C,EAAEqG,SAAgC,KAAdrG,EAAEqG,UAC3E,UAAtB,OAAQwT,KAAKhX,MAAkC,KAAd7C,EAAEqG,SAA0C,YAAtB,OAAQwT,KAAKhX,MAAoC,MAAd7C,EAAEqG,WAC7FxT,KAAKw9J,eAAgB,IAG7BpB,EAAUl8J,UAAUs9G,aAAe,SAAUrwG,GACzC,IAAI7M,EAAS6M,EAAE7M,OACfN,KAAK8gK,aAAexgK,EAChBN,KAAKsjG,kBAAkBC,mBACvBvjG,KAAKi9J,eAAiB,gBAAcj9J,KAAKg9J,uBAEzC,gBAAa18J,EAAQ,SAAiB,gBAAaA,EAAQ,uBAC1DN,KAAKsjG,kBAAkBguE,sBAAwBhxK,EAAO4E,UAAUmB,SAAS,mBAC1ErG,KAAK2O,cAAe,GAExB3O,KAAKw9J,cAAgBrwJ,EAAE4wG,QACvB/9G,KAAKu8J,mBAAqBpvJ,EAAEm4C,SAAWtlD,KAAKy8J,wBACvCz8J,KAAKouK,SAAWpuK,KAAKw9J,cACrBx9J,KAAK8gB,OAAOirH,cAKb/rI,KAAKs8J,oBAAsBnvJ,EAAEmrI,UAJ7Bt4I,KAAKs8J,qBAAsB,EAC3Bt8J,KAAKu8J,oBAAqB,GAK9Bv8J,KAAKw8J,uBAAyBx8J,KAAKu8J,mBACnCv8J,KAAKuxK,kBAAkBpkK,GACvB,IAEI+0I,EAFAsvB,GAAY,EAChBxxK,KAAKq+F,cAAe,EAEpB,IAAI+nD,EAAY,gBAAa9lJ,EAAQ,sBAqBrC,GApBAN,KAAK2jK,yBAAwBvd,GAAaA,EAAUpyG,uBAAuB,qBACtEh0C,KAAKsjG,kBAAkBC,kBAAoB,gBAAajjG,EAAQ,SACjEN,KAAKsjG,kBAAkBC,kBAAoBvjG,KAAKwkG,oBAAsB,gBAAalkG,EAAQ,wBACvFA,EAAO4L,cAAc,0BACzBlM,KAAKk9J,uBAAwB,GAE7B9W,GAAaA,EAAUt5F,iBAAiB,oCAAoCnsD,OAAS,IACrFuhJ,EAAWkE,EAAUl6I,cAAc,0BACnCslK,GAAY,GAEhBxxK,KAAK+oK,cACL/oK,KAAK24H,yBACLr4H,EAAS,gBAAaA,EAAQ,QAC1BN,KAAK8gB,OAAO3Y,SAAY7H,IAAWA,EAAOo1C,eAAiBp1C,EAAO4E,UAAUmB,SAAS,eACrF/F,EAASN,KAAK8gB,OAAOi+F,iBAAiBptG,SAASrR,EAAOoK,aAAa,SAAU,IAAKiH,SAASrR,EAAOoK,aAAa,iBAAkB,MAEjI1K,KAAK+9J,mBAAqB,eAAkBz9J,IAAWN,KAAK8gB,OAAO4lD,qBACnE1mE,KAAKsjG,kBAAkBC,kBAAoBvjG,KAAK2jK,wBAChD3jK,KAAK+9J,mBAAoB,IAEvBz9J,GAAUA,EAAOo1C,cAAcxwC,UAAUmB,SAAS,UAAkBrG,KAAK8gB,OAAOwiF,kBAAkB8+D,cAAiBoP,KACjHxxK,KAAK+9J,kBAAmB,CAK5B,GAJI/9J,KAAK8gB,OAAOy/E,sBACZvgG,KAAKu8J,oBAAqB,GAE9Bv8J,KAAKM,OAASA,EACT,eAAkB4hJ,GASlB,CACD,IAAIvvH,EAAO3yB,KAAK8gB,OACZqvJ,EAAS,EACb,GAAI,gBAAgBx9I,GAAO,CACvB,IAAIkG,EAAMv4B,EAAOo1C,cAAchrC,aAAa,YAC5CylK,EAASx9I,EAAKk3E,UAAUhjG,KAAI,SAAUg5G,GAAK,OAAOA,EAAEn1G,aAAa,eAAgB1G,QAAQ60B,QAGzFs3I,EAASx+J,SAASrR,EAAOo1C,cAAchrC,aAAa,QAAwB,IAE5E1K,KAAK8gB,OAAO4lG,oBAAsB1mH,KAAK8gB,OAAO1d,QAAQ4wC,uBAAuB,QAAmBrzC,OAAS,KACvGwvK,EAEDnwK,KAAK+sK,WAAc/sK,KAAK+sK,UAAU0E,YAAYnxK,IAC/CN,KAAKowK,wBAAwBD,EAAQx+J,SAASrR,EAAOoK,aAAa,QAAwB,KAE1F1K,KAAK8gB,OAAOy/E,sBACZvgG,KAAKqwK,0BAA0B,eAAQ/vK,EAAQ,IAAM,SACrDN,KAAKujK,yBA1BTvjK,KAAKsjK,cAAgBphB,EACjBA,EAASh9I,UAAUmB,SAAS,oBAC5BrG,KAAK8vK,eAAe5tB,GAGpBliJ,KAAKkwK,YAAYhuB,GAwBpBliJ,KAAK8gB,OAAOy/E,sBAAuB,OAAQ5wF,UAAa3P,KAAK+hK,eAC9D/hK,KAAKw1D,UAAUroD,QAGlB,GAAIA,EAAE7M,OAAO4E,UAAUmB,SAAS,kBAChC8G,EAAE7M,OAAO4E,UAAUmB,SAAS,uBAAwB,CACjDwyB,EAAM1rB,EAAE7M,OAAO4L,cAAc,oBAAoBxB,aAAa,gBAClE1K,KAAK0xK,uBAAuB1xK,KAAK8gB,OAAO2rF,oBAAoB5zE,IAEhE74B,KAAKu8J,oBAAqB,EAC1Bv8J,KAAKw8J,uBAAyBx8J,KAAKu8J,mBACnCv8J,KAAKs8J,qBAAsB,EACvB,eAAkB,eAAQnvJ,EAAE7M,OAAQ,qBACpCN,KAAKq+F,cAAe,IAG5B+9D,EAAUl8J,UAAUqxK,kBAAoB,SAAUpkK,GAC9C,IAAI7M,EAAS6M,EAAE7M,OACX,eAAQA,EAAQ,kBAAoB6M,EAAE7M,OAAO4E,UAAUmB,SAAS,SAChE,eAAQ/F,EAAQ,gBACZA,EAAO4E,UAAUmB,SAAS,iBACrB/F,EAAO4E,UAAUmB,SAAS,kBAK3B/F,EAAO4E,UAAUC,OAAO,iBACxBnF,KAAKy8J,wBAAyB,EAC9Bz8J,KAAK8gB,OAAO1d,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,SANlE1G,EAAO4E,UAAU4G,IAAI,iBACrB9L,KAAKy8J,wBAAyB,IAUtCz8J,KAAK8gB,OAAO1d,QAAQ8I,cAAc,gBAAgBnF,MAAMC,QAAU,QAG1Eo1J,EAAUl8J,UAAUs1D,UAAY,SAAUroD,GACjCnN,KAAKsjG,kBAAkBu8D,+BACxB,gBAAkB7/J,KAAK8gB,OAAO1d,QAAQ8I,cAAc,gBAAiBiB,EAAG,yCAClEnN,KAAK+hK,gBAAkB/hK,KAAK6hI,gBAAgBlhI,OAAS,GAChDX,KAAK69G,uBAAuBl9G,OAAS,GAAK,iBAAmB,MAGhFy7J,EAAUl8J,UAAUkwK,wBAA0B,SAAUtqJ,EAAUs5F,GAC9D,IAAMp/G,KAAKu8J,qBAAuBv8J,KAAKs8J,qBAAwBt8J,KAAK+hK,cAC3D/hK,KAAKiiK,WACNjiK,KAAK86H,UAAUh1G,EAAU9lB,KAAKsjG,kBAAkBi/D,cAEpDviK,KAAKmmI,WAAW,CAAErgH,SAAUA,EAAUs5F,UAAWA,GAAap/G,KAAKsjG,kBAAkBi/D,cACjFviK,KAAK69G,uBAAuBl9G,QAC5BX,KAAK24H,yBAET34H,KAAK+oK,mBAEJ,GAAI/oK,KAAKs8J,oBACNt8J,KAAK8gB,OAAOy/E,sBAAyBvgG,KAAK8gB,OAAOy/E,sBAChD,eAAQvgG,KAAKM,OAAQ,IAAM,QAAkB4E,UAAUmB,SAAS,QACjErG,KAAKiwI,kBAAkB,gBAAYjwI,KAAK4gK,cAAgB96I,EAAW9lB,KAAK4gK,aAAc96I,GAGtF9lB,KAAK8/J,mBAAmB,CAACh6I,IAE7B9lB,KAAKm/G,mBAAmB,gBAAYn/G,KAAK6jK,WAAa,CAAE/9I,SAAUA,EAAUs5F,UAAWA,GAAcp/G,KAAK6jK,UAAW,CAAE/9I,SAAUA,EAAUs5F,UAAWA,IACtJp/G,KAAK24H,yBACL34H,KAAK+oK,kBAEJ,CAED,GADA/oK,KAAK8/J,mBAAmB,CAACh6I,IACW,SAAhC9lB,KAAKsjG,kBAAkB7lF,KAAiB,CACxC,IAAIw5G,EAAiBj3H,KAAK8gB,OAAOsS,aAAau+I,MAAK,SAAUv7I,GAAO,MAAoB,aAAbA,EAAI5nB,QAC3EojK,EAA2B36C,GAAkBA,EAAexqH,QAAU2yG,EACtEwyD,IAA6B5xK,KAAKw8J,uBAClCx8J,KAAKmmI,WAAW,CAAErgH,SAAUA,EAAUs5F,UAAWA,GAAap/G,KAAKsjG,kBAAkBi/D,cAE/EtrC,IAAkB26C,GACxB5xK,KAAKumK,oBAAoB,CAAC,CAAEzgJ,SAAUA,EAAUs5F,UAAWA,UAI/Dp/G,KAAKumK,oBAAoB,CAAC,CAAEzgJ,SAAUA,EAAUs5F,UAAWA,KAE/Dp/G,KAAKmnK,gBAAgB,QAEzBnnK,KAAKiiK,WAAY,GAErB7F,EAAUl8J,UAAU2tK,cAAgB,SAAU1gK,GAC1C,GAAInN,KAAK8gB,OAAOk/C,YAAc7yD,EAAEqC,UAAUqyD,UAAY10D,EAAE0kK,MACpD,GAAyB,YAArB1kK,EAAE2kK,QAAQ/0I,OACN/8B,KAAK8gB,OAAOuX,eACZlrB,EAAE4kK,OAA+B,UAAtB5kK,EAAE/J,QAAQsM,QAGrBvC,EAAE4kK,OAA+B,OAAtB5kK,EAAE/J,QAAQsM,aAIzB,GAAyB,cAArBvC,EAAE2kK,QAAQ/0I,OAAwB,CAClC,IAAI8hF,EAAO3vF,OAAO/hB,EAAE/J,QAAQsyC,cAAchrC,aAAa,SACvDyC,EAAE4kK,OAAkB,IAATlzD,MAGc,aAArB1xG,EAAE2kK,QAAQ/0I,SACV5vB,EAAE4kK,QAAS,GAK3B,IAAIzpK,GAAU6E,EAAEqC,UAAUqyD,UAAY10D,EAAE4kK,QACnC5kK,EAAEqC,UAAUwiK,YAAc7kK,EAAEqC,UAAUyzF,iBAAoB91F,EAAE0kK,OAA8B,UAArB1kK,EAAE2kK,QAAQ/0I,WAC3E5vB,EAAE/J,QAAQ8B,UAAUmB,SAAS,sBAAwB8G,EAAE/J,QAAQ8B,UAAUmB,SAAS,wBACvF4rK,EAAgB9kK,EAAEqC,UAAUqyD,UAAkC,OAAtB10D,EAAE/J,QAAQsM,UAAqB,eAAQvC,EAAE/J,QAAS,IAAM,WAC3F+J,EAAE0kK,OAA8B,UAArB1kK,EAAE2kK,QAAQ/0I,QAC9B,GAAK5vB,EAAE0kK,QAASvpK,EAAhB,CAMA,IAAIzE,EAAKsJ,EAAEqC,UAAUwiK,UAAY7kK,EAAEqC,UAAU07F,QAAU/9F,EAAE+9F,QAASplF,EAAWjiB,EAAG,GAAIu7G,EAAYv7G,EAAG,GAC/F0kE,EAAOvoE,KAAK6mD,MAAM28G,iBAKtB,IAJIr2J,EAAE/J,QAAQsyC,cAAcxpC,cAAc,mBAAqBiB,EAAE/J,QAAQsyC,cAAcxpC,cAAc,uBAC9FiB,EAAE/J,QAAQsyC,cAAcxpC,cAAc,wBACzCq8D,EAAK62C,UAAY72C,EAAK62C,UAAY,GAElCp/G,KAAK8gB,OAAOk/C,WACZ,GAAI7yD,EAAEqC,UAAUqyD,WAAmC,OAAtB10D,EAAE/J,QAAQsM,SAAoB,eAAQvC,EAAE/J,QAAS,IAAM,SAAoB,CACpG,IAAI8uK,EAAQlyK,KAAK8gB,OAAOwqF,iBAAiBp/F,cAAc,SAAS8wC,kBAChEl3B,GAAYosJ,EACZ3pG,EAAKziD,SAAY,eAAkByiD,EAAKziD,UAAoC,KAAxByiD,EAAKziD,SAAWosJ,OAGpEpsJ,GAAY9lB,KAAK8gB,OAAOk/C,WACxBuI,EAAKziD,SAA6B,IAAlByiD,EAAKziD,UAAmB,eAAkByiD,EAAKziD,UAAqD,KAAzCyiD,EAAKziD,SAAW9lB,KAAK8gB,OAAOk/C,WAM/G,GAHIhgE,KAAK8gB,OAAO2T,yBAA2Bz0B,KAAK8gB,OAAO8wF,uBAAuBC,cAC1E/rF,EAAWnU,SAASxE,EAAE/J,QAAQsyC,cAAchrC,aAAa,iBAAkB,OAE1EunK,IAAwE,IAAvD,CAAC,YAAa,UAAUjuK,QAAQmJ,EAAE2kK,QAAQ/0I,SACvC,UAArB5vB,EAAE2kK,QAAQ/0I,QAAsBjX,IAAayiD,EAAKziD,UAAYs5F,IAAc72C,EAAK62C,YAChFp/G,KAAKsjG,kBAAkBguE,qBAF5B,CAKAtxK,KAAKq+F,cAAe,EACpB,IAAIx4E,EAAc7lB,KAAKmyK,eAAehlK,GAItC,GAHInN,KAAKm9J,sBACL/9C,EAAYv5F,GAEZ7lB,KAAK8gB,OAAO1d,QAAQ8B,UAAUmB,SAAS,qBAA4C,QAArB8G,EAAE2kK,QAAQ/0I,QAAyC,aAArB5vB,EAAE2kK,QAAQ/0I,QAC9E,eAArB5vB,EAAE2kK,QAAQ/0I,QAAgD,cAArB5vB,EAAE2kK,QAAQ/0I,QAAyB,CAC3E,IAAIq1I,EAAcpyK,KAAKM,OAAOoK,aAAa,cAC3C0nK,EAAcpyK,KAAKM,OAAOwK,UAAY,kBAAoB9K,KAAK8gB,OAAOk+F,iBAAiBI,GAAW9rF,MAClGtzB,KAAKM,OAAOqK,aAAa,aAAcynK,GAE3C,OAAQjlK,EAAE2kK,QAAQ/0I,QACd,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,aACD/8B,KAAKM,OAAS6M,EAAE/J,QAChBpD,KAAK89J,aAAc,EACnB99J,KAAKqyK,eAAevsJ,EAAUs5F,GAC9B,MACJ,IAAK,aACL,IAAK,YACDp/G,KAAKsyK,kBAAkBxsJ,EAAUs5F,GACjC,MACJ,IAAK,YACL,IAAK,UACDp/G,KAAKuyK,aAAazsJ,EAAUs5F,GAC5B,MACJ,IAAK,YACL,IAAK,aACDp/G,KAAKwyK,uBAAuB1sJ,EAAUs5F,GACtC,MACJ,IAAK,OACL,IAAK,MACDA,EAAiC,QAArBjyG,EAAE2kK,QAAQ/0I,OAAmB/8B,KAAKgmK,gBAAgBlgJ,GAAY,EAC1E9lB,KAAKyyK,gBAAgB3sJ,EAAUs5F,GAC/B,MACJ,IAAK,WACL,IAAK,UACDp/G,KAAK0yK,oBAAoB5sJ,EAAUs5F,GACnC,MACJ,IAAK,SACDp/G,KAAK48G,iBACD58G,KAAK8gB,OAAO62G,iBACZpxH,OAAOo3G,UAAU,aAAag1D,UAAU,IAE5C,MACJ,IAAK,YACD3yK,KAAKkxH,YACL,MACJ,IAAK,QACDlxH,KAAK4yK,oBAAoBzlK,EAAE/J,SAC3B,MACJ,IAAK,MACGpD,KAAK8gB,OAAOo9F,aAAa20D,kBACzB7yK,KAAK86H,UAAUh1G,GAEnB,MAER9lB,KAAKm9J,qBAAsB,EAC3Bn9J,KAAKq+F,cAAe,EACpBr+F,KAAKgqK,kBACDhqK,KAAK8gB,OAAOg/C,iBACZ9/D,KAAKmnK,gBAAgB,QAAQ,GAC7BnnK,KAAK2pK,wBAET3pK,KAAK24H,+BAhGGrwH,IAAUtI,KAAK8gB,OAAOy/E,qBACtBvgG,KAAK48G,kBAiGjBw/C,EAAUl8J,UAAUiyK,eAAiB,SAAUhlK,GAC3C,IAAI0rB,EACApsB,EAAQ,KACR0vH,EAAgBhvH,EAAE/J,QAAQ8I,cAAc,2BAC5C,GAAIlM,KAAKsjG,kBAAkBguE,sBAAwB,gBAAankK,EAAE/J,QAAS,kBAEvE,GADApD,KAAKm9J,sBAAsBhwJ,EAAEqC,UAAUqyD,SACnCs6D,EAAe,CACf,GAAyB,eAArBhvH,EAAE2kK,QAAQ/0I,QAAgD,cAArB5vB,EAAE2kK,QAAQ/0I,OAC/C,OAAOtwB,EAEXosB,EAAMsjG,EAAczxH,aAAa,gBACjC,IAAIooK,EAAc9yK,KAAK+yK,kBAAkB/yK,KAAK8gB,OAAO8X,eAAeC,GAAKnW,SACrEswJ,EAAYhzK,KAAK8gB,OAAO2rF,oBAAoBqmE,EAAYA,EAAYnyK,OAAS,GAAGk4B,KAChFo6I,EAAajzK,KAAK8gB,OAAO2rF,oBAAoBqmE,EAAY,GAAGj6I,KAChEpsB,EAAQzM,KAAKyuK,cAAgBuE,EAAYC,EAAaD,OAGtDvmK,EAAQzM,KAAK8gB,OAAO2rF,oBAAoBt/F,EAAE/J,QACrC8I,cAAc,oBAAoBxB,aAAa,iBAG5D,OAAO+B,GAQX2vJ,EAAUl8J,UAAUgxH,UAAY,WACxBlxH,KAAKogK,cAAgBpgK,KAAK+hK,eAC1B/hK,KAAKiwI,kBAAkB,EAAGjwI,KAAKw/J,+BAA+B7+J,OAAS,GAEvEX,KAAK+kK,eAAiB/kK,KAAK+hK,eAC3B/hK,KAAKm/G,mBAAmB,CAAEr5F,SAAU,EAAGs5F,UAAW,GAAK,CAAEt5F,SAAU9lB,KAAK8gB,OAAO+oF,UAAUlpG,OAAS,EAAGy+G,UAAWp/G,KAAK8gB,OAAOsS,aAAazyB,OAAS,KAG1Jy7J,EAAUl8J,UAAU0yK,oBAAsB,SAAUtyK,GAC5CA,EAAO4E,UAAUmB,SAAS,qBAC1BrG,KAAKsjK,cAAgBhjK,EACrBN,KAAK8vK,eAAe9vK,KAAKsjK,gBAGrBhjK,EAAO4E,UAAUmB,SAAS,mBAC1BrG,KAAKsjK,cAAgBhjK,EACrBN,KAAKkwK,YAAYlwK,KAAKsjK,iBAIlClH,EAAUl8J,UAAUmyK,eAAiB,SAAUvsJ,EAAUs5F,GACrD,IAAIzsF,EAAO3yB,KAAK8gB,QACZ9gB,KAAK8gB,OAAOy/E,qBAAoD,UAA7BvgG,KAAK8gB,OAAO0/E,cAA6BxgG,KAAKsjG,kBAAkBC,kBAClGvjG,KAAKsjG,kBAAkB8+D,eACxBpiK,KAAK0vK,sBAAqB,GAC1B1vK,KAAKsjK,cAAgB,MAErBtjK,KAAKogK,cAAgBpgK,KAAKsjG,kBAAkB8+D,eACxCpiK,KAAK8gB,OAAOk/C,WACZhgE,KAAK86H,UAAUh1G,GAAU,GACzB9lB,KAAKkzK,YAAYvgJ,EAAKsyF,mBAO1BjlH,KAAK+kK,cACL/kK,KAAKmmI,WAAW,CAAErgH,SAAUA,EAAUs5F,UAAWA,IAAa,GAE9Dp/G,KAAKsjG,kBAAkBguE,sBAAwBtxK,KAAKm9J,qBACpDn9J,KAAKmzK,aAAa/zD,IAG1Bg9C,EAAUl8J,UAAUgzK,YAAc,SAAUptJ,GACxC,KAAIA,EAAW,GAAf,CAGK9lB,KAAKM,SACNN,KAAKM,OAASN,KAAK8gB,OAAO+oF,UAAU,GAAG5jD,SAASjmD,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,QAAU,IAEhG,IAAIyyK,EAASzhK,SAAS3R,KAAKM,OAAOoK,aAAa,QAAwB,IACnEiX,EAAM3hB,KAAK2yG,gBAAgBmM,cAAch5F,GAK7C,GAJInE,IACA3hB,KAAKM,OAASqhB,EAAIqyB,uBAAuB,QAAkBriC,SAASyhK,EAAOxhK,WAAY,MAE3F5R,KAAKimK,aAAajmK,KAAKM,QACnBN,KAAK8gB,OAAO1d,QAAQ8B,UAAUmB,SAAS,mBAAoB,CAC3D,IAAI+rK,EAAcpyK,KAAKM,OAAOoK,aAAa,cAC3C0nK,EAAcpyK,KAAKM,OAAOwK,UAC1B9K,KAAKM,OAAOqK,aAAa,aAAcynK,MAG/ChW,EAAUl8J,UAAUoyK,kBAAoB,SAAUxsJ,EAAUs5F,GACpDp/G,KAAKsjG,kBAAkBguE,sBAAwBtxK,KAAKm9J,oBACpDn9J,KAAKmzK,aAAa/zD,GAEbp/G,KAAK+kK,eACV/kK,KAAKmmI,WAAW,CAAErgH,SAAUA,EAAUs5F,UAAWA,IAAa,GAC9Dp/G,KAAKimK,aAAajmK,KAAKM,UAG/B87J,EAAUl8J,UAAUuyK,gBAAkB,SAAU3sJ,EAAUs5F,GAClDp/G,KAAK+kK,aACL/kK,KAAKmmI,WAAW,CAAErgH,SAAUA,EAAUs5F,UAAWA,IAAa,GAG9Dp/G,KAAKimK,aAAajmK,KAAK8gB,OAAOi+F,iBAAiBj5F,EAAUs5F,KAWjEg9C,EAAUl8J,UAAUqyK,aAAe,SAAUzsJ,EAAUs5F,GACnDp/G,KAAKs8J,qBAAsB,EACvBt8J,KAAKogK,cAAgBpgK,KAAK+hK,gBACrB,gBAAY/hK,KAAK4gK,cAIb5gK,KAAKwkG,mBACVxkG,KAAK86H,UAAUh1G,GAAU,GAGzB9lB,KAAK86H,UAAU,GAAG,IAPlB96H,KAAKiwI,kBAAkBjwI,KAAK4gK,aAAc96I,GAC1C9lB,KAAKkzK,YAAYptJ,KASrB9lB,KAAK+kK,eAAiB/kK,KAAK+hK,eAC3B/hK,KAAKm/G,mBAAmBn/G,KAAK6jK,WAAa,CAAE/9I,SAAU,EAAGs5F,UAAW,GAAK,CAAEt5F,SAAUA,EAAUs5F,UAAWA,IAE9Gp/G,KAAKs8J,qBAAsB,GAE/BF,EAAUl8J,UAAUsyK,uBAAyB,SAAU1sJ,EAAUs5F,GAC7Dp/G,KAAKs8J,qBAAsB,EACvBt8J,KAAKsjG,kBAAkBguE,sBAAwBtxK,KAAKm9J,oBACpDn9J,KAAKqzK,qBAAqBrzK,KAAKyuK,aAAcrvD,GAG7Cp/G,KAAKm/G,mBAAmBn/G,KAAK6jK,UAAW,CAAE/9I,SAAUA,EAAUs5F,UAAWA,IAE7Ep/G,KAAKs8J,qBAAsB,GAE/BF,EAAUl8J,UAAU6yK,kBAAoB,SAAUrxJ,GAE9C,IADA,IAAI4xJ,EAAqB,GAChBtyK,EAAI,EAAG+X,EAAM2I,EAAO/gB,OAAQK,EAAI+X,EAAK/X,IACtC0gB,EAAO/P,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,QACnC1iB,KAAK+yK,kBAAkBrxJ,EAAO/P,SAAS3Q,EAAE4Q,WAAY,KAAK8Q,SAG1D4wJ,EAAmBjnK,KAAKqV,EAAO/P,SAAS3Q,EAAE4Q,WAAY,MAG9D,OAAO0hK,GAEXlX,EAAUl8J,UAAUwyK,oBAAsB,SAAU5sJ,EAAUs5F,GACtDp/G,KAAKogK,cACLpgK,KAAK86H,UAAUh1G,GAAU,GACzB9lB,KAAKimK,aAAajmK,KAAK8gB,OAAOi+F,iBAAiBj5F,EAAUs5F,KAEzDp/G,KAAK+kK,cACL/kK,KAAKmmI,WAAW,CAAErgH,SAAUA,EAAUs5F,UAAWA,IAAa,IAGtEg9C,EAAUl8J,UAAUuiK,uBAAyB,SAAU9gJ,EAAK4hD,EAAOhR,GAE/D,IADA,IAAIl+B,EAAO,GACFxmB,EAAK,EAAGA,EAAKnN,UAAUC,OAAQkN,IACpCwmB,EAAKxmB,EAAK,GAAKnN,UAAUmN,GAE7B,GAAI8T,EAAK,CACL,IAAIslD,EAAQ,GAAGv5D,MAAMpK,KAAKqe,EAAIqyB,uBAAuB,SACjDu/H,EAAmB5xJ,EAAIzV,cAAc,yBAA2ByV,EAAIzV,cAAc,sBAClFsnK,EAAqB7xJ,EAAIzV,cAAc,kBACvCqnK,GACAtsG,EAAM56D,KAAKknK,GAEXC,GACAvsG,EAAM56D,KAAKmnK,GAEf,OAAuB1wK,WAAM,EAAQ,CAACmkE,EAAO1D,GAAO/1C,OAAO6G,IAE/Dr0B,KAAK0yG,cAAcp/C,aAAa3xC,EAAMA,EAAIjX,aAAa,YAAc,KAAM64D,EAAOhR,IAEtF6pG,EAAUl8J,UAAUkgK,UAAY,WAC5B,MAAuC,QAAhCpgK,KAAKsjG,kBAAkB7lF,MAAkD,SAAhCzd,KAAKsjG,kBAAkB7lF,MAE3E2+I,EAAUl8J,UAAU6kK,WAAa,WAC7B,MAAuC,SAAhC/kK,KAAKsjG,kBAAkB7lF,MAAmD,SAAhCzd,KAAKsjG,kBAAkB7lF,MAE5E2+I,EAAUl8J,UAAU6hK,YAAc,WAC9B,MAAuC,WAAhC/hK,KAAKsjG,kBAAkB90F,MAElC4tJ,EAAUl8J,UAAUwyG,YAAc,WAI9B,OAHI,eAAkB1yG,KAAK2yG,mBACvB3yG,KAAK2yG,gBAAkB3yG,KAAK6+J,QAAQnsD,YAAY,OAAWE,UAExD5yG,KAAK2yG,iBAOhBypD,EAAUl8J,UAAUy8G,mBAAqB,WACrC,IAAIilD,EAAe,GAQnB,OANIA,GADC5hK,KAAKsjG,kBAAkBC,kBAAoBvjG,KAAK6hI,gBAAgBlhI,OAClDX,KAAK8gB,OAAOmhF,gBAAgB7jF,QAAO,SAAUuD,GAAO,OAAOA,EAAIiI,cACzE/iB,KAAI,SAAUg5G,GAAK,OAAOA,EAAEviG,QAGlBtd,KAAKg9J,oBAEjB4E,GAQXxF,EAAUl8J,UAAUizK,aAAe,SAAU1mK,GACzC,IAAIkmB,EAAO3yB,KAAK8gB,OAChB,IAAI,eAAkB6R,EAAKS,aAAazhB,SAASlF,EAAMmF,WAAY,MAAnE,CAGA,IAAI8P,EAASiR,EAAKqsF,iBAAiBvyG,GAC/BgnK,EAAc9gJ,EAAKsuG,qBAAqBv/G,EAAOmX,KAC/C66I,EAAgBD,EAAYvuK,UAAUmB,SAAS,qBACnD,GAAMssB,EAAK2wE,kBAAkBguE,qBAA7B,CAGA,IAAIqC,EAAiB3zK,KAAKgiI,uBAAuBrhI,OAAS,GACtDX,KAAKgiI,uBAAuBh+H,QAAQyI,IAAU,EAElD,GADAzM,KAAK4zK,sBACAF,IAAkB1zK,KAAKsjG,kBAAkBi/D,cAAgBoR,EAAgB,CAC1E,IAAIt/I,EAAO,CACPxO,YAAapZ,EAAO6mG,WAAYmgE,EAChC/xJ,OAAQA,EACRjT,QAAQ,EAAOnO,OAAQN,KAAK8gK,aAC5BnyJ,aAAc3O,KAAK2O,aAAcklK,oBAAqB7zK,KAAKyuK,aAC3DhO,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,qBAGjE,GADAt8J,KAAK++J,cAAc1qI,EAAM,SACrBA,EAAK5lB,OAEL,YADAzO,KAAKqhK,oBAGH1uI,EAAK2wE,kBAAkBi/D,cAAgB91J,IAAUzM,KAAKyuK,cAAgBiF,IAAkBC,GAC1F3zK,KAAK8zK,mBAAmBL,EAAahnK,GAEzC,IAAIsnK,EAAe,CACfluJ,YAAapZ,EAAO6mG,WAAYmgE,EAChC/xJ,OAAQA,EACRphB,OAAQN,KAAK8gK,aACbnyJ,aAAc3O,KAAK2O,aAAcklK,oBAAqB7zK,KAAKyuK,cAE/DzuK,KAAKyyD,iBAAiBshH,EAAc,SAExC/zK,KAAKg0K,eAAevnK,MASxB2vJ,EAAUl8J,UAAUmzK,qBAAuB,SAAUrrI,EAAYC,GAC7D,IAAItV,EAAO3yB,KAAK8gB,OAChB,IAAI,eAAkB6R,EAAKS,aAAazhB,SAASq2B,EAAWp2B,WAAY,MAAxE,CAGA,IAAIs5F,EAAU,GACd,GAAoC,WAAhCv4E,EAAK2wE,kBAAkB90F,MAAqB,eAAkBy5B,GAC9DijE,EAAQ,GAAKljE,OAIb,IADA,IAAItsB,EAAMssB,EAAaC,EACdjnC,EAAIgnC,EAAYtsB,EAAM1a,GAAKinC,EAAWjnC,GAAKinC,EAAUvsB,EAAM1a,IAAMA,IACtEkqG,EAAQ7+F,KAAKrL,GAGrBhB,KAAKi0K,cAAc/oE,KAQvBkxD,EAAUl8J,UAAU+zK,cAAgB,SAAUC,GAC1C,IAAIvhJ,EAAO3yB,KAAK8gB,OACZ2yJ,EAAczzK,KAAKm0K,kBAIvB,GAHoC,WAAhCxhJ,EAAK2wE,kBAAkB90F,OACvB0lK,EAAgB,CAACA,EAAc,KAE9BvhJ,EAAK2wE,kBAAkBguE,qBAA5B,CAGAtxK,KAAK4zK,qBACL,IAAIQ,EAAgB,CAChBvuJ,YAAaquJ,EAAc,GAAI5gE,WAAYmgE,EAC3CS,cAAeA,EACfxyJ,OAAQiR,EAAKqsF,iBAAiBk1D,EAAc,IAC5CzlK,QAAQ,EAAOnO,OAAQN,KAAK8gK,aAC5BnyJ,aAAc3O,KAAK2O,aAAcklK,oBAAqB7zK,KAAKyuK,aAC3DhO,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,qBAGjE,GADAt8J,KAAK++J,cAAcqV,EAAe,SAC9BA,EAAc3lK,OACdzO,KAAKqhK,wBADT,CAIA,IAAK,IAAIrgK,EAAI,EAAG+X,EAAMm7J,EAAcvzK,OAAQK,EAAI+X,EAAK/X,IACjDhB,KAAK8zK,mBAAmBnhJ,EAAKsuG,qBAAqBtuG,EAAKqsF,iBAAiBk1D,EAAcviK,SAAS3Q,EAAE4Q,WAAY,MAAMinB,KAAMq7I,EAAcviK,SAAS3Q,EAAE4Q,WAAY,MAElK6hK,EAAczzK,KAAKm0K,kBACnB,IAAIJ,EAAe,CACfluJ,YAAaquJ,EAAc,GAAI5gE,WAAYmgE,EAC3CS,cAAeA,EACfxyJ,OAAQiR,EAAKqsF,iBAAiBk1D,EAAc,IAC5C5zK,OAAQN,KAAK8gK,aACbnyJ,aAAc3O,KAAK2O,aAAcklK,oBAAqB7zK,KAAKyuK,cAE/DzuK,KAAKyyD,iBAAiBshH,EAAc,SACpC/zK,KAAKg0K,eAAeE,EAAc,OAQtC9X,EAAUl8J,UAAUm0K,yBAA2B,SAAUrsI,GACrD,IAAIrV,EAAO3yB,KAAK8gB,OAChB,IAAI,eAAkB6R,EAAKS,aAAazhB,SAASq2B,EAAWp2B,WAAY,MAAxE,CAGA,IAAI0iK,EAAS3hJ,EAAKsuG,qBAAqBtuG,EAAKqsF,iBAAiBh3E,GAAYnP,KACrE46I,EAAczzK,KAAKm0K,kBAIvB,GAHoC,WAAhCxhJ,EAAK2wE,kBAAkB90F,MACvBxO,KAAK4zK,qBAEJjhJ,EAAK2wE,kBAAkBguE,qBAA5B,CAGA,GAAItxK,KAAKgiI,uBAAuBh+H,QAAQgkC,IAAe,EACnDhoC,KAAK4jK,qBAAqB57H,OAEzB,CACD,IAAIosI,EAAgB,CAChBvuJ,YAAamiB,EAAYsrE,WAAYmgE,EACrCS,cAAel0K,KAAKgiI,uBACpBtgH,OAAQiR,EAAKqsF,iBAAiBh3E,GAC9Bv5B,QAAQ,EAAOnO,OAAQN,KAAK8gK,aAC5BnyJ,aAAc3O,KAAK2O,aAAcklK,oBAAqB7zK,KAAKyuK,aAC3DhO,cAAezgK,KAAKu8J,mBAAoBmE,eAAgB1gK,KAAKs8J,qBAGjE,GADAt8J,KAAK++J,cAAcqV,EAAe,SAC9BA,EAAc3lK,OAEd,YADAzO,KAAKqhK,oBAGTrhK,KAAK8zK,mBAAmBQ,EAAQtsI,GAChCyrI,EAAczzK,KAAKm0K,kBACnB,IAAIJ,EAAe,CACfluJ,YAAamiB,EAAYsrE,WAAYmgE,EACrC/xJ,OAAQiR,EAAKqsF,iBAAiBh3E,GAC9BksI,cAAel0K,KAAKgiI,uBACpB1hI,OAAQN,KAAK8gK,aACbnyJ,aAAc3O,KAAK2O,aAAcklK,oBAAqB7zK,KAAKyuK,cAE/DzuK,KAAKyyD,iBAAiBshH,EAAc,SAExC/zK,KAAKg0K,eAAehsI,MAQxBo0H,EAAUl8J,UAAU0jK,qBAAuB,SAAU2Q,GACjD,GAAIv0K,KAAK6gG,iBAAkB,CACvB,IAAIluE,EAAO3yB,KAAK8gB,OAChB,IAAK,eAAkByzJ,KAAoE,IAArDv0K,KAAKgiI,uBAAuBh+H,QAAQuwK,GACtE,OAEJ,IAAI9nK,EAAS,eAAkB8nK,GAC3Bv0K,KAAKgiI,uBAAuBhiI,KAAKgiI,uBAAuBrhI,OAAS,GADxB4zK,EAEzC7yJ,EAASiR,EAAKqsF,iBAAiBvyG,GAC/BgnK,EAAc9gJ,EAAKsuG,qBAAqBv/G,EAAOmX,KAC/C27I,EAAiB,CACjB3uJ,YAAapZ,EAAO6mG,WAAYmgE,EAChCS,cAAel0K,KAAKgiI,uBACpBtgH,OAAQA,EACRjT,QAAQ,EAAOnO,OAAQN,KAAK8gK,aAC5BnyJ,aAAc3O,KAAK2O,cAEnB8lK,EAAaz0K,KAAK00K,eAAeF,EAAgB,SACrD,GAAIC,EAEA,YADAz0K,KAAKqhK,oBAMT,IAHA,IAAIsT,EAAkB,eAAkBJ,GACpC,GAAG7mK,MAAMpK,KAAKqvB,EAAKstC,mBAAmBjsB,uBAAuB,sBADX,CAACy/H,GAEnD1M,EAAgB/mK,KAAK40K,uBAAuBL,GACvCvzK,EAAI,EAAG+X,EAAM47J,EAAeh0K,OAAQK,EAAI+X,EAAK/X,IAClD,eAAuB,CAAC2zK,EAAehjK,SAAS3Q,EAAE4Q,WAAY,OAAO,EAAO,qBAEhF,IAAS5Q,EAAI,EAAG+X,EAAMguJ,EAAcpmK,OAAQK,EAAI+X,EAAK/X,IACjD,eAAuB,CAAC+lK,EAAcp1J,SAAS3Q,EAAE4Q,WAAY,OAAO,EAAO,qBAE1E,eAAkB2iK,IAKnBv0K,KAAK00K,eAAeF,EAAgB,SACpCx0K,KAAKgiI,uBAAyB,GAC9BhiI,KAAK6gG,kBAAmB,EACxB7gG,KAAK8gB,OAAOsS,aAAahV,QAAO,SAAUgY,GAAO,OAAOA,EAAIxM,YAAa,OAPzE5pB,KAAKgiI,uBAAuBt1H,OAAO1M,KAAKgiI,uBAAuBh+H,QAAQuwK,GAAa,GACpFv0K,KAAK8gB,OAAOsS,aAAazhB,SAAS4iK,EAAW3iK,WAAY,KAAKgY,YAAa,KAUvFwyI,EAAUl8J,UAAUi0K,gBAAkB,WAClC,IACIV,EADA9gJ,EAAO3yB,KAAK8gB,OAEhB,GAAI9gB,KAAKgiI,uBAAuBrhI,OAAS,EAAG,CACxC8yK,EAAc,GACd,IAAK,IAAIzyK,EAAI,EAAGA,EAAIhB,KAAKgiI,uBAAuBrhI,OAAQK,IACpD,EAAcqL,KAAKsmB,EAAKsuG,qBAAqBtuG,EAAKqsF,iBAAiBh/G,KAAKgiI,uBAAuBrwH,SAAS3Q,EAAE4Q,WAAY,MAAMinB,WAIhI46I,EAAc9gJ,EAAKsuG,qBAAqBtuG,EAAKqsF,iBAAiBh/G,KAAKgiI,uBAAuB,IAAInpG,KAElG,OAAO46I,GAEXrX,EAAUl8J,UAAU00K,uBAAyB,SAAUL,GAMnD,IALA,IAAI5hJ,EAAO3yB,KAAK8gB,OACZ+zJ,GAAiB,eAAkB70K,KAAK8gB,OAAOy+E,aAC/C38E,EAAOiyJ,EAAgBliJ,EAAKk3E,UAAYl3E,EAAK6sF,cAC7Cs1D,EAAe,GACfC,EAAmB,eAAkBR,GAAuD,qBAAzC,mBAAqBA,EAAa,KAChFvzK,EAAI,EAAG+X,EAAM6J,EAAKjiB,OAAQK,EAAI+X,EAAK/X,IACxC8zK,EAAeA,EAAatnJ,OAAO,GAAG9f,MAAMpK,KAAKsf,EAAKjR,SAAS3Q,EAAE4Q,WAAY,KAAKk7C,iBAAiBioH,KAEvG,OAAOD,GAEX1Y,EAAUl8J,UAAUw0K,eAAiB,SAAUrgJ,EAAM3lB,GAKjD,MAJc,qBAAVA,UACO2lB,EAAK5lB,OAEhBzO,KAAKyyD,iBAAiBp+B,EAAM3lB,GACrB2lB,EAAK5lB,QAEhB2tJ,EAAUl8J,UAAU8zK,eAAiB,SAAUhsI,GAC3ChoC,KAAKyuK,aAAezmI,EACpBhoC,KAAK6gG,iBAAmB7gG,KAAKgiI,uBAAuBrhI,SAAU,GAElEy7J,EAAUl8J,UAAU0zK,mBAAqB,WACrC5zK,KAAK4jK,uBACL5jK,KAAKgiI,uBAAyB,IAElCo6B,EAAUl8J,UAAU4zK,mBAAqB,SAAUL,EAAazrI,GAC5D,IAAI,eAAkBhoC,KAAK8gB,OAAOsS,aAAazhB,SAASq2B,EAAWp2B,WAAY,MAA/E,CAGA,IAAIijK,GAAiB,eAAkB70K,KAAK8gB,OAAOy+E,aAC/C38E,EAAOiyJ,EAAgB70K,KAAK8gB,OAAO+oF,UAAY7pG,KAAK8gB,OAAO0+F,cAC/Dx/G,KAAKgiI,uBAAuB31H,KAAK27B,GACjChoC,KAAK8gB,OAAOsS,aAAazhB,SAASq2B,EAAWp2B,WAAY,KAAKgY,YAAa,EAC3Eoe,GAA0BhoC,KAAK8gB,OAAO2lD,iBACtC,eAAuB,CAACgtG,IAAc,EAAM,qBAC5C,IAAK,IAAI5vJ,EAAI,EAAG9K,EAAM6J,EAAKjiB,OAAQkjB,EAAI9K,EAAK8K,IACpCjB,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1M,UAAUmB,SAAS,WAC/Cuc,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1M,UAAUmB,SAAS,UAClDuc,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1M,UAAUmB,SAAS,SAClB,WAAlCrG,KAAK8gB,OAAOo9F,aAAazgG,MACxB,eAAkBmF,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1F,cAAc,MAAM+e,WAAWtZ,SAASq2B,EAAWp2B,WAAY,MAGhH,eAAkBgR,EAAKjR,SAASkS,EAAEjS,WAAY,KAAKqZ,WAAWtZ,SAASq2B,EAAWp2B,WAAY,OACpG,eAAuB,CAACgR,EAAKjR,SAASkS,EAAEjS,WAAY,KAAKqZ,WAAWtZ,SAASq2B,EAAWp2B,WAAY,OAAO,EAAM,qBAHjH,eAAuB,CAACgR,EAAKjR,SAASkS,EAAEjS,WAAY,KAAK1F,cAAc,MAAM+e,WAAWtZ,SAASq2B,EAAWp2B,WAAY,OAAO,EAAM,wBAQrJwqJ,EAAUl8J,UAAUwxK,uBAAyB,SAAU7pE,IAC7C7nG,KAAKu8J,qBAAuBv8J,KAAKs8J,qBAAwBt8J,KAAK+hK,cAChE/hK,KAAKmzK,aAAatrE,GAEb7nG,KAAKs8J,oBACVt8J,KAAKqzK,qBAAqB,gBAAYrzK,KAAKyuK,cAAgB5mE,EAAW7nG,KAAKyuK,aAAc5mE,GAGzF7nG,KAAKq0K,yBAAyBxsE,IAItCu0D,EAAUl8J,UAAUguK,0BAA4B,WAC5C,IAAI7qK,EAAQrD,KACZA,KAAK8gB,OAAOqI,GAAG,QAAkBnpB,KAAK0qI,UAAW1qI,MACjDA,KAAKg1K,oBAAsBh1K,KAAKwvK,YAAY5pK,KAAK5F,MACjDA,KAAK8gB,OAAOiI,iBAAiB,QAAkB/oB,KAAKg1K,qBACpDh1K,KAAK8gB,OAAOqI,GAAG,QAAwCnpB,KAAKg1K,qBAC5Dh1K,KAAK8gB,OAAOqI,GAAG,QAAqBnpB,KAAK0uK,yBAA0B1uK,MACnEA,KAAK8gB,OAAOqI,GAAG,OAAkCnpB,KAAKwuK,sBAAuBxuK,MAC7EA,KAAK8gB,OAAOqI,GAAG,QAAgBnpB,KAAKi1K,wBAAyBj1K,MAC7DA,KAAKo7G,mBAAqBp7G,KAAKk1K,sBAAsBtvK,KAAK5F,MAC1DA,KAAK8gB,OAAOiI,iBAAiB,OAAuB/oB,KAAKo7G,oBACzDp7G,KAAK8gB,OAAOqI,GAAG,OAAcnpB,KAAKw9G,aAAcx9G,MAChDA,KAAKm1K,YAAc,WACf9xK,EAAMs1H,yBACNt1H,EAAM0lK,eAEV/oK,KAAKm1K,YAAYvvK,KAAK5F,MACtBA,KAAK8gB,OAAOiI,iBAAiB,QAAmB/oB,KAAKm1K,cAGzD/Y,EAAUl8J,UAAUiuK,6BAA+B,WAC/CnuK,KAAK8gB,OAAOmb,IAAI,QAAkBj8B,KAAK0qI,WACvC1qI,KAAK8gB,OAAO8wB,oBAAoB,QAAkB5xC,KAAKg1K,qBACvDh1K,KAAK8gB,OAAO8wB,oBAAoB,OAAuB5xC,KAAKo7G,oBAC5Dp7G,KAAK8gB,OAAOmb,IAAI,QAAwCj8B,KAAKg1K,qBAC7Dh1K,KAAK8gB,OAAOmb,IAAI,QAAgBj8B,KAAKi1K,yBACrCj1K,KAAK8gB,OAAOmb,IAAI,OAAcj8B,KAAKw9G,cACnCx9G,KAAK8gB,OAAOmb,IAAI,OAAkCj8B,KAAKwuK,wBAE3DpS,EAAUl8J,UAAU+0K,wBAA0B,WAC1C,IAAIG,EAAcp1K,KAAKuuK,iBACvB,GAAI6G,EAAa,CACbp1K,KAAK8gB,OAAOy/E,qBAAsB,EAClC,IAAIywE,EAAUoE,EAAY/R,mBAC1B,gBAAY,CAAC2N,GAAU,CAAC,UAAW,SAAU,cAC7C,eAAS,CAACA,EAAQt7H,eAAgB,CAAC,0BAG3C0mH,EAAUl8J,UAAUwqI,UAAY,SAAUv9H,GACtCnN,KAAK+gK,yBAA0B,EAC/B,IAAIsU,EAAkBr1K,KAAK8gB,OAAO2T,yBAA6C,mBAAlBtnB,EAAEssB,YACzC,kBAAlBtsB,EAAEssB,aAAoCz5B,KAAK8gB,OAAO4lG,oBAAuB2uD,IACzEr1K,KAAKs9J,WAAat9J,KAAK8gB,OAAO4kF,uBAA2C,SAAlBv4F,EAAEssB,aAA0C,QAAhBtsB,EAAE,WACrFnN,KAAK48G,iBACL58G,KAAKujK,mBACLvjK,KAAKs9J,WAAY,IAGzBlB,EAAUl8J,UAAUg1K,sBAAwB,SAAU/nK,GAC5B,SAAlBA,EAAEssB,aAA0Bz5B,KAAK8gB,OAAO4lG,oBACxC1mH,KAAK8uK,2BAGb1S,EAAUl8J,UAAUqhK,eAAiB,SAAU90J,GAC3CzM,KAAK8gB,OAAO+5G,4BAA6B,EACpC,eAAkB76H,KAAK8gB,OAAOmkG,oBAAuD,IAAlCjlH,KAAK8gB,OAAOmkG,mBAA6BjlH,KAAK8gB,OAAOyqF,kBACzGvrG,KAAK8gB,OAAOmkG,iBAAmBx4G,EAG/BzM,KAAK8gB,OAAOmkG,kBAAoB,GAGxCm3C,EAAUl8J,UAAUmhK,kBAAoB,WACpCrhK,KAAK2O,cAAe,GAExBytJ,EAAUl8J,UAAUogK,aAAe,WAC/BtgK,KAAK8gK,aAAe9gK,KAAK2O,aAAe3O,KAAK8gK,aAAe,MAEzD1E,EAz5HmB,I,kCCd9B,W,kCCAA,kGAWIkZ,EAAoC,WACpC,SAASA,EAAmBx0J,GACxB9gB,KAAK8gB,OAASA,EAuOlB,OArOAw0J,EAAmBp1K,UAAUy+D,kBAAoB,WAC7C,IAAI39D,EAAI,EACJkqG,EAAUlrG,KAAK8gB,OAAOqqF,yBACtBoqE,GAAQ,EACRC,EAAoB,EACxB,GAAIx1K,KAAK8gB,OAAOwU,cACZ,IAAK,IAAIvc,EAAM/Y,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAAQK,EAAI+X,EAAK/X,IAC1DhB,KAAK8gB,OAAO++C,6BAAsD,IAAxBqrC,EAAQlnG,QAAQhD,GAC1Du0K,GAAQ,EAGZv1K,KAAKy1K,eAAe,IAAI,OAAO,CAAEnwK,MAAO,SAAWtE,IAGvDhB,KAAK8gB,OAAO2kD,gBAAkBzlE,KAAK8gB,OAAO4kD,aAC1C1lE,KAAKy1K,eAAe,IAAI,OAAO,CAAEnwK,MAAO,SAAWtE,GACnDA,KAEAhB,KAAK8gB,OAAO6kD,iBAAmD,UAAhC3lE,KAAK8gB,OAAOulF,kBAC3CrmG,KAAKy1K,eAAe,IAAI,OAAO,CAAEnwK,MAAO,SAAWtE,GACnDA,KAGJ,IADA,IAAI0hB,EAAU1iB,KAAK8gB,OAAOsS,aACjBvP,EAAI,EAAGA,EAAInB,EAAQ/hB,OAAQkjB,IAChC7jB,KAAKy1K,eAAe/yJ,EAAQ/Q,SAASkS,EAAEjS,WAAY,KAAM2jK,GAASv1K,KAAK8gB,OAAO++C,gCAA6Bt0D,EAAYsY,EAAI7iB,GAE3HhB,KAAK8gB,OAAO6kD,iBAAmD,UAAhC3lE,KAAK8gB,OAAOulF,iBAC3CrmG,KAAKy1K,eAAe,IAAI,OAAO,CAAEnwK,MAAO,SAAWtF,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAAS+hB,EAAQ/hB,QAE1G60K,EAAoBx1K,KAAK0nI,cAAc1nI,KAAK8gB,OAAOsS,cACzB,SAAtBpzB,KAAK8gB,OAAOxb,QAAmE,IAA/CtF,KAAK8gB,OAAOxb,MAAMsM,WAAW5N,QAAQ,MACrEhE,KAAK2nI,yBAAyB6tC,IAGtCF,EAAmBp1K,UAAUynI,yBAA2B,SAAU+tC,GAC9D,IAAIruF,EAAa,EACb53D,EAAazvB,KAAK8gB,OAAOsS,aAAahV,QAAO,SAAUE,GACvD,OAAO,eAAkBA,EAAEhZ,QAAsB,SAAZgZ,EAAEhZ,SAE3C,GAAImqB,EAAW9uB,OAAQ,CAMf0mF,EALC,eAAkBrnF,KAAK8gB,OAAOxb,QAAgC,SAAtBtF,KAAK8gB,OAAOxb,OACtB,kBAAvBtF,KAAK8gB,OAAY,QAAsD,IAApC9gB,KAAK8gB,OAAOxb,MAAMtB,QAAQ,KAIxDhE,KAAK8gB,OAAO1d,QAAQgE,wBAAwB9B,MAAQowK,GAHtB,kBAAtB11K,KAAK8gB,OAAOxb,MAAqBqM,SAAS3R,KAAK8gB,OAAOxb,MAAO,IAAMtF,KAAK8gB,OAAOxb,OAASowK,EAMjH,IADA,IAAIC,EAAU,EACL9nK,EAAK,EAAG+nK,EAAenmJ,EAAY5hB,EAAK+nK,EAAaj1K,OAAQkN,IAAM,CACxE,IAAImmB,EAAO4hJ,EAAa/nK,GACxB8nK,GAAY,eAAkB3hJ,EAAK0uG,UACuD,EAA3D,kBAAlB1uG,EAAK0uG,SAAwB/wH,SAASqiB,EAAK0uG,SAAU,IAAM1uG,EAAK0uG,SAEjF,IAAK,IAAI1hI,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAAK,CACzB,IAAX00K,GAAgB11K,KAAK8gB,OAAOm6C,eAAiBj7D,KAAK61K,oBAAuB70K,IAAMyuB,EAAW9uB,OAAS,GACnGX,KAAK81K,wBAAwBrmJ,GAEjC,IAAIhjB,EAAQzM,KAAK8gB,OAAOgnF,sBAAsBr4E,EAAW9d,SAAS3Q,EAAE4Q,WAAY,KAAK0hB,OAAStzB,KAAK8gB,OAAO2lD,iBAC3F,IAAXivG,GAAgBruF,EAAasuF,EAC7B31K,KAAKy+D,SAAShvC,EAAW9d,SAAS3Q,EAAE4Q,WAAY,KAAK8wH,SAAUj2H,GAE/C,IAAXipK,GAAgBruF,EAAasuF,GAClC31K,KAAKy+D,SAAS,GAAIhyD,GAAO,MAKzC6oK,EAAmBp1K,UAAU41K,wBAA0B,SAAUrmJ,GAC7D,IAAK,IAAIjM,EAAI,EAAGA,EAAIiM,EAAW9uB,OAAQ6iB,IAC/BA,IAAMiM,EAAW9uB,OAAS,IAC1B8uB,EAAW9d,SAAS6R,EAAE5R,WAAY,KAAKtM,MAAQ,IAC/CtF,KAAKy+D,SAAS,IAAKz+D,KAAK8gB,OAAOgnF,sBAAsBr4E,EAAW9d,SAAS6R,EAAE5R,WAAY,KAAK0hB,UAIxGgiJ,EAAmBp1K,UAAUu1K,eAAiB,SAAU/zJ,EAAQjV,EAAO23D,GACnE,KAAIpkE,KAAK8gB,OAAOsS,aAAazyB,OAAS,GAAtC,CAGA,IAAIklB,EAAc,eAAkBpZ,GAASzM,KAAK8gB,OAAOisF,yBAAyBrrF,EAAOmX,KAAOpsB,EAC5FspK,EAAS/1K,KAAKg2K,SAASt0J,GACvB+lH,EAAaznI,KAAK0nI,cAAc1nI,KAAK8gB,OAAOsS,cACjC,OAAX2iJ,IACA/1K,KAAKy+D,SAASs3G,EAAQlwJ,GACI,SAAtB7lB,KAAK8gB,OAAOxb,QAAmE,IAA/CtF,KAAK8gB,OAAOxb,MAAMsM,WAAW5N,QAAQ,MACrEhE,KAAK2nI,yBAAyBF,GAE7BznI,KAAK8gB,OAAOm6C,eAA4B,WAAXmJ,GAC9BpkE,KAAK+6H,kBAET/6H,KAAK8gB,OAAOwT,OAAO,QAAoB,CAAE7nB,MAAOoZ,EAAavgB,MAAOywK,EAAQr0J,OAAQA,EAAQ0iD,OAAQA,OAG5GkxG,EAAmBp1K,UAAUu+D,SAAW,SAAUn5D,EAAOmH,EAAOnE,GAC5D,GAAItI,KAAK8gB,OAAOyU,cAAc7S,QAAQ/hB,OAAS8L,GAAS,gBAAkBzM,KAAK8gB,QAAS,CACpF,IAAIgqE,EAAe9qF,KAAK8gB,OAAO1d,QAAQoG,YACvClE,GAAS,GAAKwlF,EAAe,KAAK/mE,QAAQ,GAAK,IAEnD,IAAI0H,EAASzrB,KAAK8gB,OAAOwqF,iBACrBzgG,EAAU7K,KAAK8gB,OAAOmjD,kBACtBgyG,EAAS,eAAW3wK,GACpB4hI,EAAYz7G,EAAOvf,cAAc,QAAmB+5C,SAASt0C,SAASlF,EAAMmF,WAAY,KACxFs1H,IAAc5+H,EACd4+H,EAAUngI,MAAMzB,MAAQ2wK,EAEnB/uC,GAAa5+H,IAClB4+H,EAAUngI,MAAMzB,MAAQ,IAE5B,IAAI6hI,EAAat8H,EAAQqB,cAAc,QAAmB+5C,SAASt0C,SAASlF,EAAMmF,WAAY,KAO9F,GANIu1H,IAAe7+H,EACf6+H,EAAWpgI,MAAMzB,MAAQ2wK,EAEpB9uC,GAAc7+H,IACnB6+H,EAAWpgI,MAAMzB,MAAQ,KAExBtF,KAAK8gB,OAAO++C,4BAA8B7/D,KAAK8gB,OAAOshD,OAAQ,CAG/D,IAFA,IAAI9G,EAAOt7D,KAAK8gB,OAAO1d,QAAQ0pD,iBAAiB,0BAC5CopH,EAAe,GACVl1K,EAAI,EAAGA,EAAIs6D,EAAK36D,OAAQK,IAC7B,GAAI,gBAAas6D,EAAK3pD,SAAS3Q,EAAE4Q,WAAY,KAAM,UAAUtG,KAAOtL,KAAK8gB,OAAO1d,QAAQkI,GACpF,IAAK,IAAIuY,EAAI,EAAGA,EAAIy3C,EAAK3pD,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,YAAY+5C,SAAStlD,OAAQkjB,IAC5FqyJ,EAAa7pK,KAAKivD,EAAK3pD,SAAS3Q,EAAE4Q,WAAY,KAAK1F,cAAc,YAAY+5C,SAASt0C,SAASkS,EAAEjS,WAAY,MAIrH0pD,EAAK36D,QAAUu1K,EAAav1K,SAC5Bu1K,EAAavkK,SAASlF,EAAMmF,WAAY,KAAK7K,MAAMzB,MAAQ2wK,GAG/Dj2K,KAAK8gB,OAAOg/C,gBAAkB9/D,KAAK8gB,OAAO++C,4BAC1C7/D,KAAK4nI,0BAOb0tC,EAAmBp1K,UAAU0nI,uBAAyB,WAClD,IAAIvzG,EAAO,CAAE5lB,QAAQ,GAErB,GADAzO,KAAK8gB,OAAOwT,OAAO,QAA4BD,IAC3CA,EAAK5lB,OAAT,CAGA,IAAI+xD,EAAc,iBACd21G,EAAmBn2K,KAAK8gB,OAAO1d,QAAQ8I,cAAc,uBACrDkqK,EAAep2K,KAAK8gB,OAAO8+C,aAAa5Z,kBAAkB5+C,wBAAwB9B,MACtF,GAAItF,KAAK8gB,OAAO++C,2BAA4B,CACxC,IAAIw2G,EAAcr2K,KAAK8gB,OAAO8+C,aAAa1zD,cAAc,mBACrDmqK,IACAD,EAAeC,EAAY71G,aAGR,SAAvBxgE,KAAK8gB,OAAOzb,SACZ+wK,GAA8B51G,GAElC21G,EAAiBnwH,kBAAkBj/C,MAAMzB,MAAQ8wK,EAAe,OAEpEd,EAAmBp1K,UAAU+gE,kBAAoB,SAAU79D,GACvD,IAAI6b,EAAWjf,KAAKs2K,uBAAuBlzK,EAAS,YAChD8b,EAAOlf,KAAKs2K,uBAAuBlzK,EAAS,QAChD,OAAO6b,EAAWC,GAEtBo2J,EAAmBp1K,UAAUo2K,uBAAyB,SAAUlzK,EAASkzB,GACrE,IAAIigJ,EAAUnzK,EAAQkzB,EAAY,kBAC9BxW,EAAS,EACT5a,EAAY,CAAC,OAAqB,OAAqB,kBAAmB,cAAe,YAAa,kBAC1G,MAAOqxK,EACCrxK,EAAUqyB,MAAK,SAAUva,GAAS,OAAOu5J,EAAQrxK,UAAUmB,SAAS2W,QACpE8C,GAAUy2J,EAAQ9sK,cAEtB8sK,EAAUA,EAAQjgJ,EAAY,kBAElC,OAAOxW,GAEXw1J,EAAmBp1K,UAAU21K,iBAAmB,WAC5C,IAAIW,EAAkBx2K,KAAK8gB,OAAOsS,aAAahV,QAAO,SAAUgY,GAC5D,OAAO,eAAkBA,EAAI9wB,QAAU,eAAkB8wB,EAAIssG,aAC9D/hI,OACH,OAAQX,KAAK8gB,OAAOsS,aAAazyB,SAAW61K,GAEhDlB,EAAmBp1K,UAAU81K,SAAW,SAAUt0J,GAK9C,GAJI,eAAkBA,EAAOpc,QAAUtF,KAAK8gB,OAAOm6C,eAC5C,eAAkBv5C,EAAOghH,YAAc1iI,KAAK61K,qBAC/Cn0J,EAAOpc,MAAQ,MAEdoc,EAAOpc,MACR,OAAO,KAEX,IAAIA,EAAQqM,SAAS+P,EAAOpc,MAAMsM,WAAY,IAC9C,OAAI8P,EAAOghH,UAAYp9H,EAAQqM,SAAS+P,EAAOghH,SAAS9wH,WAAY,IACzD8P,EAAOghH,SAERhhH,EAAO9R,UAAYtK,EAAQqM,SAAS+P,EAAO9R,SAASgC,WAAY,IAC/D8P,EAAO9R,SAGP8R,EAAOpc,OAGtBgwK,EAAmBp1K,UAAUwnI,cAAgB,SAAUhlH,GAEnD,IADA,IAAIgzJ,EAAS,EACJ7nK,EAAK,EAAG6qB,EAAYhW,EAAS7U,EAAK6qB,EAAU/3B,OAAQkN,IAAM,CAC/D,IAAI6T,EAASgX,EAAU7qB,GACnBkoK,EAAS/1K,KAAKg2K,SAASt0J,GACN,SAAjBA,EAAOpc,QACPywK,EAAS,IAEU,IAAnBr0J,EAAO/K,SAAgC,OAAXo/J,IAC5BL,GAAU/jK,SAASokK,EAAOnkK,WAAY,KAG9C,OAAO8jK,GAEXJ,EAAmBp1K,UAAU66H,gBAAkB,WAC3C,IAAI26C,EAAS,eAAW11K,KAAK0nI,cAAc1nI,KAAK8gB,OAAOsS,gBACnDpzB,KAAK8gB,OAAO2kD,gBAAkBzlE,KAAK8gB,OAAO4kD,YAC1C1lE,KAAKy1K,eAAe,IAAI,OAAO,CAAEnwK,MAAO,UAE5CowK,EAAS11K,KAAKy2K,eAAiB,OAASf,EACxC11K,KAAK8gB,OAAOwqF,iBAAiBvkG,MAAMzB,MAAQowK,EAC3C11K,KAAK8gB,OAAOmjD,kBAAkBl9D,MAAMzB,MAAQowK,EAC5C,IAAIp6G,EAAOt7D,KAAK8gB,OAAO1d,QAAQ8I,cAAc,0BACzCovD,IACAA,EAAKv0D,MAAMzB,MAAQowK,IAG3BJ,EAAmBp1K,UAAUu2K,aAAe,WACxC,OAAOz2K,KAAK8gB,OAAOm6C,eAAqD,SAApCj7D,KAAK8gB,OAAO+nH,eAAeprH,MAE5D63J,EAzO4B,I,yCCXvC,IAAI,EAAS,WAAa,IAAIoB,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAACxS,MAAM,CAAC,GAAK,mBAAmB,CAACwS,EAAG,MAAM,CAACs1J,WAAW,CAAC,CAAC9mK,KAAK,OAAO+mK,QAAQ,SAAS/5J,MAAO05J,EAAiB,cAAEM,WAAW,kBAAkBC,IAAI,gCAAgCjoK,MAAM,CAAC,GAAK,kCAAkC,CAAC0nK,EAAIQ,GAAG,6IAA6I11J,EAAG,MAAM,CAAC21J,YAAY,2BAA2B,CAAC31J,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,cAAc,GAAGA,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,YAAY,GAAGA,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,iBAAiB,GAAGA,EAAG,MAAM,CAAC21J,YAAY,4BAA4B,CAAC31J,EAAG,MAAM,CAACA,EAAG,MAAM,CAAC21J,YAAY,aAAa,CAAC31J,EAAG,aAAa,SAASA,EAAG,MAAM,CAAC21J,YAAY,4BAA4B,CAAC31J,EAAG,MAAM,CAACy1J,IAAI,SAASE,YAAY,YAAY,CAAC31J,EAAG,KAAK,CAACk1J,EAAIQ,GAAG,iBAAiB11J,EAAG,oBAAoB,GAAGA,EAAG,MAAM,CAACy1J,IAAI,MAAME,YAAY,YAAY,CAAC31J,EAAG,KAAK,CAACk1J,EAAIQ,GAAG,wBAAwB11J,EAAG,aAAa,KAAKA,EAAG,MAAM,CAAC21J,YAAY,2BAA2B,CAAC31J,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,MAAM,CAACy1J,IAAI,MAAME,YAAY,8BAA8B,CAAC31J,EAAG,KAAK,CAACk1J,EAAIQ,GAAG,iCAAiC11J,EAAG,eAAe,KAAKA,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,MAAM,CAACy1J,IAAI,MAAME,YAAY,8BAA8B,CAAC31J,EAAG,KAAK,CAACk1J,EAAIQ,GAAG,sBAAsB11J,EAAG,aAAa,KAAKA,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,MAAM,CAAC21J,YAAY,8BAA8B,CAAC31J,EAAG,KAAK,CAACk1J,EAAIQ,GAAG,WAAW11J,EAAG,YAAY,OAAOA,EAAG,MAAM,CAAC21J,YAAY,0BAA0B,CAAC31J,EAAG,cAAc,MACtnD41J,EAAkB,G,YCDlB,EAAS,WAAa,IAAIV,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,gBAAgBhuJ,GAAG,CAAC,MAAQutJ,EAAIW,cAAc,CAAC71J,EAAG,OAAO,CAACA,EAAG,OAAO,CAACA,EAAG,eAAe,CAAC21J,YAAY,QAAQnoK,MAAM,CAAC,MAAQ,UAAU,eAAe0nK,EAAIY,oBAAoB,eAAe,YAAY,cAAcZ,EAAIa,aAAa,cAAc,eAAe,CAAC/1J,EAAG,QAAQ,CAAC21J,YAAY,OAAOnoK,MAAM,CAAC,KAAO,WAAW,OAAS,SAAS,IAAI,IAAI,IAAI,IAC5c,EAAkB,G,YCuBtB,uBACA,mBACA,0BAEA,gBACA,OACA,0BAGA,SACA,wCACA,iGACA,kBACA,sCACA,wBAIA,wBACA,qEAGA,UAOA,wBACA,wDACA,sFCvDoW,I,wBCQhWukF,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnBX,EAAS,WAAa,IAAImjF,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,gBAAgBhuJ,GAAG,CAAC,MAAQutJ,EAAIW,cAAc,CAAC71J,EAAG,OAAO,CAACA,EAAG,OAAO,CAACA,EAAG,eAAe,CAAC21J,YAAY,QAAQnoK,MAAM,CAAC,MAAQ,UAAU,eAAe0nK,EAAIc,kBAAkB,eAAe,YAAY,cAAcd,EAAIa,aAAa,cAAc,eAAe,CAAC/1J,EAAG,QAAQ,CAAC21J,YAAY,OAAOnoK,MAAM,CAAC,KAAO,WAAW,OAAS,SAAS,IAAI,IAAI,IAAI,IAC1c,EAAkB,GCsBtB,uBACA,mBACA,6BAEA,gBACA,OACA,wBAKA,SACA,2CACA,2FACA,kBACA,oCACA,wBAIA,wBACA,mEAGA,UAKA,wBACA,sDACA,oFCtD+V,ICO3V,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,I,QClBX,EAAS,WAAa,IAAI0nK,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC2H,GAAG,CAAC,MAAQutJ,EAAIe,YAAY,CAACj2J,EAAG,OAAO,CAACA,EAAG,OAAO,CAACA,EAAG,sBAAsB,CAACk2J,YAAY,CAAC,OAAS,SAAS1oK,MAAM,CAAC,OAAS0nK,EAAIiB,aAAa,KAAO,aAAa,MAAQ,UAAU,MAAQ,MAAM,CAACn2J,EAAG,QAAQ,CAACxS,MAAM,CAAC,KAAO,aAAa,OAAS,SAAS,IAAI,IAAI,IAAI,IAC7W,EAAkB,GCmBtB,uBACA,mBACA,yBAEA,gBACA,OACA,mBAGA,SACA,uCACA,2CACA,kBACA,iDACA,wBAIA,sBACA,wCCvCkW,ICO9V,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,I,4CClBX,EAAS,WAAa,IAAI0nK,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,qBAAqBnoK,MAAM,CAAC,GAAK,qBAAqB,CAACwS,EAAG,OAAO,CAAC2H,GAAG,CAAC,MAAQutJ,EAAIkB,qBAAqB,CAACp2J,EAAG,OAAO,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,IAAM,MAAM,CAACwS,EAAG,cAAc,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,OAAS0nK,EAAImB,YAAY,OAAS,GAAG,KAAO,SAAS,MAAQ,YAAY,CAACr2J,EAAG,QAAQ,CAACxS,MAAM,CAAC,KAAO,eAAe,IAAI,GAAGwS,EAAG,OAAO,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,IAAM,MAAM,CAACwS,EAAG,cAAc,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,OAAS0nK,EAAIoB,sBAAsB,KAAO,WAAW,MAAQ,YAAY,CAACt2J,EAAG,QAAQ,CAACxS,MAAM,CAAC,KAAO,kBAAkB,IAAI,GAAGwS,EAAG,OAAO,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,IAAM,MAAM,CAACwS,EAAG,cAAc,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,OAAS0nK,EAAIqB,iBAAiB,KAAO,eAAe,MAAQ,YAAY,CAACv2J,EAAG,QAAQ,CAACxS,MAAM,CAAC,KAAO,kBAAkB,IAAI,GAAGwS,EAAG,OAAO,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,IAAM,MAAM,CAACwS,EAAG,cAAc,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,OAAS0nK,EAAIsB,oBAAoB,KAAO,iBAAiB,MAAQ,YAAY,CAACx2J,EAAG,QAAQ,CAACxS,MAAM,CAAC,KAAO,kBAAkB,IAAI,IAAI,IAAI,IACnnC,EAAkB,GCuCtB,uBACA,mBACA,wBAEA,gBACA,OACA,gBACA,qBACA,wBACA,4BAGA,SACA,sCACA,kEACA,yCACA,+CACA,mDACA,uEAEA,SAIA,+BACA,0CAEA,2BACA,4CAEA,6BACA,+CAEA,qBACA,uCC1EoW,ICQhW,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBX,EAAS,WAAa,IAAI0nK,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,kBAAkB,CAAC31J,EAAG,WAAW,CAACy1J,IAAI,mBAAmBE,YAAY,gCAAgCO,YAAY,CAAC,QAAU,SAAS1oK,MAAM,CAAC,GAAK,iBAAiB,KAAO,UAAU,MAAQ,SAAS,KAAO0nK,EAAIxpF,KAAK,cAAgBwpF,EAAIhpF,cAAc,aAAegpF,EAAI/2I,aAAa,eAAiB+2I,EAAIl4I,iBAAiB,CAAChd,EAAG,WAAW,CAACA,EAAG,UAAU,CAACxS,MAAM,CAAC,UAAY0nK,EAAIuB,UAAU,kBAAoBvB,EAAIwB,kBAAkB,cAAgBxB,EAAIyB,cAAc,WAAazB,EAAIt3J,WAAW,cAAgBs3J,EAAI0B,cAAc,gBAAkB1B,EAAI2B,oBAAoB,IAAI,GAAG72J,EAAG,MAAM,CAACk2J,YAAY,CAAC,QAAU,QAAQ1oK,MAAM,CAAC,GAAK,aAAa,CAACwS,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,SAAS,CAACk1J,EAAIQ,GAAG,mBAAmB,GAAG11J,EAAG,KAAK,CAACk2J,YAAY,CAAC,aAAa,MAAM,gBAAgB,MAAM,OAAS,yBAAyBhB,EAAI4B,GAAG,GAAG5B,EAAI4B,GAAG,GAAG5B,EAAI4B,GAAG,GAAG5B,EAAI4B,GAAG,QAAQ,IACz+B,EAAkB,CAAC,WAAa,IAAI5B,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAACA,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,wBAAwB11J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,0BAA0B,WAAa,IAAIR,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAACk2J,YAAY,CAAC,gBAAgB,WAAW,CAACl2J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,qBAAqB11J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,2BAA2B,WAAa,IAAIR,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAACk2J,YAAY,CAAC,gBAAgB,WAAW,CAACl2J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,sBAAsB11J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,wBAAwB,WAAa,IAAIR,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAACk2J,YAAY,CAAC,gBAAgB,WAAW,CAACl2J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,mBAAmB11J,EAAG,OAAO,CAAC21J,YAAY,YAAY,CAACT,EAAIQ,GAAG,0B,oCCOt/BhqF,EAAO,OAYP7lC,EAAQ,QAMR,EAAU,UAMVkxH,EAAa,aAMbC,EAAc,cAMdC,EAAS,SAKT/qF,EAAgB,gBAKhBgrF,EAAgB,gBA6BhBC,EAAiB,iBAMjBC,EAAiB,iBAMjBC,EAAkB,kBAMlBC,EAAyB,yBAMzBC,EAAc,cAMdC,EAAkB,kBAYlBC,GAAqB,qBAMrBC,GAAkB,kBAMlBC,GAAyB,yBA8BzB9rB,GAAoB,oBAMpB+rB,GAAkB,kBAMlBC,GAAsB,sBAMtBC,GAAgB,gBAehBC,GAAS,SAUTC,GAAM,MClNbn6K,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GA0BxCg+E,GAAsB,WACtB,SAASA,EAAKz4E,EAAOD,GACjBrF,KAAKsF,MAAQA,EACbtF,KAAKqF,OAASA,EAElB,OAAO04E,EALc,GAgBlB,SAAS07F,GAAez8J,EAAO08J,GAClC,OAAc,OAAV18J,QAA4BzR,IAAVyR,GACa,IAAxBA,EAAMhZ,QAAQ,KAAe01K,EAAgB,IAAO/nK,SAASqL,EAAO,IAAMrL,SAASqL,EAAO,IAE9F,KASJ,SAAS28J,GAAcC,GAC1BA,EAAKx2K,QAAQ2D,MAAM1B,OAAU,eAAkBu0K,EAAKv0K,QAAwB,OAAdu0K,EAAKv0K,OACnEu0K,EAAKx2K,QAAQ2D,MAAMzB,MAAS,eAAkBs0K,EAAKt0K,OAAsB,OAAbs0K,EAAKt0K,MACjEs0K,EAAKx2K,QAAQ2D,MAAMuiI,YAAY,UAAW,SAC1C,IAAIuwC,EAAiBD,EAAKx2K,QAAQmG,YAC9BioI,EAAkBooC,EAAKx2K,QAAQkG,aAC/BwwK,EAAwBL,GAAeG,EAAKx2K,QAAQ2D,MAAMzB,MAAOu0K,GACjEE,EAAyBN,GAAeG,EAAKx2K,QAAQ2D,MAAM1B,OAAQmsI,GACnE1jH,EAAgB,IAAIiwD,GAAK,EAAG,GAQhC,OANIjwD,EADe,QAAf8rJ,EAAKt0K,OAAkC,OAAfs0K,EAAKt0K,OAAkC,OAAhBs0K,EAAKv0K,QAAmC,QAAhBu0K,EAAKv0K,OAC5D,IAAI04E,GAAK,EAAG,GAGZ,IAAIA,GAAK07F,GAAeG,EAAKt0K,MAAOu0K,IAAmBA,GAAkBC,GAAyB,IAAKL,GAAeG,EAAKv0K,OAAQmsI,IAAoBA,GAAmBuoC,IAA2BH,EAAKjqK,SACtNxG,KAAKuS,IAAInV,OAAOmzJ,WAAYnzJ,OAAOktH,aAAe,MAEnD3lG,EASJ,SAASwlB,GAAUsmI,GACtBA,EAAKt0J,SAAW,IAAI,OAAYs0J,EAAKx2K,QAAQkI,IAC7CsuK,EAAK9rJ,cAAgB6rJ,GAAcC,GACnCA,EAAK10I,UAAY00I,EAAKt0J,SAASguB,UAAU,CACrChoC,GAAIsuK,EAAKx2K,QAAQkI,GAAK,OACtBhG,MAAOs0K,EAAK9rJ,cAAcxoB,MAC1BD,OAAQu0K,EAAK9rJ,cAAczoB,SAEZ,QAAfu0K,EAAKt0K,OAAkC,OAAfs0K,EAAKt0K,OAAkC,OAAhBs0K,EAAKv0K,QAAmC,QAAhBu0K,EAAKv0K,SAC5Eu0K,EAAK10I,UAAUv6B,aAAa,SAAU,KACtCivK,EAAK10I,UAAUv6B,aAAa,QAAS,MAYtC,SAASqvK,GAAiB5mK,EAAOC,EAAOjQ,GAC3C,IAAI62K,EAAc72K,EAAQgE,wBACtByJ,EAAczN,EAAQ82K,cAAc92G,YAAYvyD,YAChDG,EAAc5N,EAAQ82K,cAAc92G,YAAYpyD,YAChDmpK,EAAY/2K,EAAQ82K,cAAcE,gBAAgBD,UAClDE,EAAaj3K,EAAQ82K,cAAcE,gBAAgBC,WACnDt6H,EAAYk6H,EAAYj1K,KAAO6L,EAAcwpK,EAC7Cv6H,EAAYm6H,EAAYl1K,IAAMiM,EAAcmpK,EAChD,OAAO,IAAIG,GAAalnK,EAAQ2sC,EAAa1sC,EAAQysC,GASlD,SAASy6H,GAAiBC,GAC7B,OAAOA,GAAOrxK,KAAK2gC,GAAK,KASrB,SAAS2wI,GAAiBC,GAC7B,OAAOA,GAAU,IAAMvxK,KAAK2gC,IAazB,SAAS6wI,GAAkBC,EAAUC,EAAWC,EAAQC,EAAOC,GAClE,IACIh1K,EACAC,EACA+W,EACAi+J,EACAC,EACA/7F,EANAg8F,EAAU,IAAIp9F,GAAKi9F,EAASI,YAAY91K,MAAO01K,EAASI,YAAY/1K,QAOpEg2K,EAAkBL,EAASM,cAAcT,UACzCU,EAAiBP,EAASM,cAAcV,SACxCY,EAAYjB,GAAiBK,GAC7Ba,EAAYlB,GAAiBM,GAC7BrsK,EAAOwsK,EAASU,eAChB5lK,EAAQklK,EAAkB,UAAqB,IAAjB7xK,KAAK8jC,IAAI,EAAG,GAAY,cAAD,CAAmB6tI,GACxE3xK,KAAKuS,IAAIy/J,EAAQ71K,MAAO61K,EAAQ91K,QAAW8D,KAAKuS,IAAIy/J,EAAQ71K,MAAO61K,EAAQ91K,QAAUy1K,EACzF,GAA2B,WAAvBC,EAAMY,aACN31K,EAAI,eAAkB80K,GAAUD,EAAY1xK,KAAK6a,KAAK62J,EAAYQ,EAAgB3/J,KAAOo/J,GACzF70K,EAAI,eAAkB60K,GAAUF,EAAWzxK,KAAK6a,KAAKu3J,EAAe5/J,IAAMi/J,GAAYE,QAErF,GAA2B,eAAvBC,EAAMY,aAA+B,CAC1C,OAAQntK,GACJ,IAAK,WACD,IAAIotK,EAAc,IAAIC,GAAM/lK,EAAO,EAAGA,EAAO,GAC7C9P,EAAI41K,EAAY51K,EAAI60K,GAAa/kK,EAAO,KACxC,IAAIgmK,EAAOC,GAAe5yK,KAAKu2E,IAAI66F,GAAiBK,KAAa,MAAQ,OACzE30K,EAAI21K,EAAY31K,EAAI,GAAOkD,KAAKwsB,KAAK,EAAImmJ,IAAS,EAAIA,MAAahmK,GAAQ,EAAI3M,KAAK2gC,KACpF,MAEJ,IAAK,UACD9sB,EAAQg/J,GAAOP,EAAWD,GAC1BN,GAAOl+J,EAAMhX,EAAIy1K,GAAatyK,KAAK2gC,GAAK,IAAM,EAC9CmxI,GAAOj+J,EAAM/W,EAAIu1K,GAAa,EAC9B,MACJ,IAAK,SACDN,EAAMO,EACNR,EAAO,KAAO9xK,KAAKwsB,IAAIxsB,KAAK8yK,IAAK9yK,KAAK2gC,GAAK,EAAM,GAAK0xI,IACtD,MACJ,IAAK,UACDr8F,EAAOh2E,KAAKqmC,KAAKrmC,KAAK2gC,IAAM,EAAI3gC,KAAK2gC,KACrCoxI,EAAM,EAAI/7F,EAAOs8F,GAAa,EAAItyK,KAAKqmC,KAAK,EAAI,EAAIgsI,EAAYA,GAAaryK,KAAK2gC,GAAK3gC,KAAK2gC,MAC5FmxI,EAAM,EAAI97F,EAAOq8F,EACjB,MACJ,IAAK,SACDx+J,EAAQg/J,GAAOP,EAAWD,GAC1BN,EAAMl+J,EAAMhX,EACZi1K,EAAMj+J,EAAM/W,EACZ,MACJ,IAAK,UACDi1K,EAAMO,GAAa,EAAItyK,KAAK0gC,IAAI2xI,IAAcryK,KAAKqmC,KAAK,EAAIrmC,KAAK2gC,IACjEmxI,EAAM,EAAIO,EAAYryK,KAAKqmC,KAAK,EAAIrmC,KAAK2gC,IACzC,MACJ,IAAK,kBACDoxI,EAAMO,EACNR,EAAMO,EACN,MACJ,IAAK,UACD,IAAIU,EAAU,KACd/8F,GAAQ,EAAKh2E,KAAK2gC,GAAK,GAAM3gC,KAAKu2E,IAAI87F,GAEtC,IADA,IAAIvwI,EAAQhyB,IACHjY,EAAI,EAAGA,EAAI,IAAMmI,KAAK6a,IAAIinB,GAASixI,EAASl7K,IACjDiqC,GAASuwI,EAAaryK,KAAKu2E,IAAI87F,GAAcr8F,IAAS,EAAIh2E,KAAK0gC,IAAI2xI,IACnEA,GAAwBvwI,EAE5Bk0C,EAAOh2E,KAAKqmC,KAAK,EAAIrmC,KAAK2gC,IAC1BoxI,EAAMO,GAAa,EAAItyK,KAAK0gC,IAAI2xI,IAAcr8F,EAC9C87F,EAAM,EAAIO,EAAYr8F,EACtB,MAGRn5E,EAAc,aAATwI,EAAuBxI,EAAIm2K,GAAQC,GAAcpB,EAAUP,GAAiBS,IAAO,GACxFj1K,EAAc,aAATuI,EAAuBvI,GAAOk2K,GAAQE,GAAcrB,EAAUP,GAAiBQ,IAAO,GAE/F,OAAO,IAAIY,GAAM71K,EAAGC,GAKjB,SAASq2K,GAAqB1C,EAAMkB,EAAQyB,EAAcC,GAC7D,IAAI5lG,EAAO,GAaX,OAZAh3E,MAAMM,UAAU+uF,QAAQ3rF,KAAKk5K,GAAY,SAAUl/J,EAAMm/J,GACrD,IAAIxB,EAAM39J,EAAKs9J,SACXM,EAAM59J,EAAKu9J,UACXltJ,EAAYisJ,EAAc,UAAI8C,GAA0B,IAAIpC,GAAYY,EAAKD,GAAMH,EAAQlB,EAAK+C,oBAAoB,GAAQhC,GAAkBM,EAAKC,EAAKJ,EAAQyB,EAAc3C,GAE9KhjG,GADc,IAAd6lG,EACQ,KAAO9uJ,EAAS3nB,EAAI,IAAM2nB,EAAS1nB,EAGnC,MAAQ0nB,EAAS3nB,EAAI,IAAM2nB,EAAS1nB,KAGpD2wE,GAAQ,MACDA,EAYJ,SAAS8lG,GAA0BE,EAAQC,EAAWF,EAAoBG,GAC7E,IAAIhnK,EAAgC,IAAzB3M,KAAK8jC,IAAI,EAAG4vI,GACnB72K,GAAK42K,EAAO52K,EAAI,KAAO,IACvB+2K,EAAc5zK,KAAKu2E,IAAIk9F,EAAO32K,EAAIkD,KAAK2gC,GAAK,KAC5C7jC,EAAI,GAAMkD,KAAKwsB,KAAK,EAAIonJ,IAAgB,EAAIA,KAAiB,EAAI5zK,KAAK2gC,IACtEkzI,EAASJ,EAAO52K,EAChBi3K,EAASL,EAAO32K,EAKpB,OAJI62K,IACAE,EAAUh3K,EAAI8P,EAAO,GAAO6mK,EAAmB32K,EAC/Ci3K,EAAUh3K,EAAI6P,EAAO,GAAO6mK,EAAmB12K,GAE5C,CAAED,EAAGg3K,EAAQ/2K,EAAGg3K,GAUpB,SAASb,GAAcc,EAAW1iK,GACrC,IAAI6gK,EAAkB6B,EAAU5B,cAAcT,UAC1CsC,EAAY,eAAkBD,EAAUE,UAAYF,EAAU9B,YAAY91K,MAAQ43K,EAAU9B,YAAY91K,MACvG6D,KAAK6a,IAAIk5J,EAAUE,SAAS93K,MAAQ43K,EAAU9B,YAAY91K,OAAS,EACxE,OAAO6D,KAAKC,MAAM+zK,GAAa3iK,EAAM6gK,EAAgB3/J,MAAQ2/J,EAAgB1/J,IAAM0/J,EAAgB3/J,KAAO,KAAO,IAU9G,SAAS2gK,GAAca,EAAW1iK,GACrC,IAAI+gK,EAAiB2B,EAAU5B,cAAcV,SAC7C,OAAOzxK,KAAKC,MAAM8zK,EAAU9B,YAAY/1K,QAAUmV,EAAM+gK,EAAe7/J,MAAQ6/J,EAAe5/J,IAAM4/J,EAAe7/J,KAAO,KAAO,IAU9H,SAASsgK,GAAOh2K,EAAGC,GACtB,IAAIo3K,EAAOl0K,KAAK0gC,IAAI5jC,GAChBq3K,EAASC,GAAMC,GAAKH,EAAOl0K,KAAK0gC,IAAI7jC,GAAK,KAC7C,OAAO,IAAI61K,GAAM,EAAIwB,EAAOl0K,KAAKu2E,IAAI15E,GAAKs3K,EAAQn0K,KAAKu2E,IAAIz5E,GAAKq3K,GAU7D,SAASnB,GAAQ79J,EAAG9e,GACvB,IAAIiB,EAAI0I,KAAK8jC,IAAI,GAAIztC,GACrB,OAAQ2J,KAAKC,MAAMkV,EAAI7d,GAAKA,EAQzB,SAAS88K,GAAMv3K,GAClB,OAAOA,EAAImD,KAAKu2E,IAAI15E,GAQjB,SAASw3K,GAAKl/J,GACjB,OAAOnV,KAAKq0K,KAAKl/J,GAWd,SAASy9J,GAAe/+J,EAAOtB,EAAKC,GAOvC,OANK,eAAkBD,KACnBsB,EAAQ7T,KAAKwS,IAAIqB,EAAOtB,IAEtB,cAAD,CAAmBC,KACpBqB,EAAQ7T,KAAKuS,IAAIsB,EAAOrB,IAErBqB,EA2BX,IAAI6+J,GAAuB,WACvB,SAASA,EAAM71K,EAAGC,GACdjG,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EAEb,OAAO41K,EALe,GAuBtB4B,IAZ4B,WAC5B,SAASC,EAAW9C,EAAUC,GAC1B76K,KAAK46K,SAAWA,EAChB56K,KAAK66K,UAAYA,GAHM,GAYH,WACxB,SAAS4C,EAAO/hK,EAAKC,GACjB3b,KAAK0b,IAAMA,EACX1b,KAAK2b,IAAMA,EAEf,OAAO8hK,EALgB,IAWvBE,GAA6B,WAC7B,SAASA,EAAY/C,EAAUC,GAC3B76K,KAAK46K,SAAW,IAAI6C,GAAO7C,EAASl/J,IAAKk/J,EAASj/J,KAClD3b,KAAK66K,UAAY,IAAI4C,GAAO5C,EAAUn/J,IAAKm/J,EAAUl/J,KAEzD,OAAOgiK,EALqB,GAgBzB,SAASlgG,GAAYjhE,EAAMs/D,GAC9B,IAAI8hG,EAAgBhwK,SAASyd,eAAe,mBAsB5C,OArBsB,OAAlBuyJ,IACAA,EAAgB,eAAc,OAAQ,CAAEtyK,GAAI,oBAC5CsC,SAAS6B,KAAK/K,YAAYk5K,IAE9BA,EAAcpzH,UAAYhuC,EAC1BohK,EAAc72K,MAAMhD,SAAW,WACJ,kBAAf+3E,EAAS,KACjB8hG,EAAc72K,MAAM80E,SAAYC,EAAS,KAAI,KAG7C8hG,EAAc72K,MAAM80E,SAAWC,EAAKhmE,KAExC8nK,EAAc72K,MAAMiP,WAAa8lE,EAAK9lE,WACtC4nK,EAAc72K,MAAMgP,UAAY+lE,EAAK/lE,UACrC6nK,EAAc72K,MAAMkP,WAAa6lE,EAAK7lE,WACtC2nK,EAAc72K,MAAM8tC,WAAa,SACjC+oI,EAAc72K,MAAMhC,IAAM,OAC1B64K,EAAc72K,MAAM/B,KAAO,IAC3B44K,EAAc72K,MAAM82E,WAAa,SAEjC+/F,EAAc72K,MAAM+2E,WAAa,SAC1B,IAAIC,GAAK6/F,EAAcr0K,YAAaq0K,EAAct0K,cAO7D,IAAIy1E,GAA4B,WAC5B,SAASA,EAAWzzE,EAAItF,EAAGC,EAAG4kC,EAAQruB,EAAMuJ,EAAWi5D,QACjC,IAAdj5D,IAAwBA,EAAY,IACxC/lB,KAAK+lB,UAAY,GACjB/lB,KAAKg/E,SAAW,OAChBh/E,KAAKsL,GAAKA,EACVtL,KAAKwc,KAAOA,EACZxc,KAAK+lB,UAAYA,EACjB/lB,KAAK6qC,OAASA,EACd7qC,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EACTjG,KAAKg/E,SAAWA,EAEpB,OAAOD,EAboB,GAqB3BY,GAA4B,WAC5B,SAASA,EAAWr0E,EAAI8U,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,EAAW/mC,GAC/ES,KAAKsL,GAAKA,EACVtL,KAAK,gBAAkB69K,EACvB79K,KAAK,kBAAoB89K,EACzB99K,KAAKogB,KAAOA,EACZpgB,KAAK+5E,OAASpkE,EACd3V,KAAK,gBAAkBsF,EACvBtF,KAAK,oBAAsBsmC,EAC3BtmC,KAAKT,EAAIA,EAEb,OAAOogF,EAXoB,GAe3Bo+F,GAA4B,WAC5B,SAASA,EAAWn9K,EAAGuyC,EAAG3zC,GACtBQ,KAAKY,EAAIA,EACTZ,KAAKmzC,EAAIA,EACTnzC,KAAKR,EAAIA,EAEb,OAAOu+K,EANoB,GAc3BC,GAA4B,SAAUn7K,GAEtC,SAASm7K,EAAW1yK,EAAI8U,EAAMgF,EAAQy4J,EAAarvJ,EAAM6rD,EAAIgC,EAAIt2D,EAAWugB,GACxE,IAAIjjC,EAAQR,EAAOS,KAAKtD,KAAMsL,EAAI8U,EAAMgF,EAAO9f,MAAO8f,EAAOzP,MAAOkoK,EAAaz4J,EAAOouB,UAAYxzC,KAWpG,OAVAqD,EAAM4C,EAAIuoB,EAAKvoB,EACf5C,EAAM2C,EAAIwoB,EAAKxoB,EACf3C,EAAMgC,OAASmpB,EAAKnpB,OACpBhC,EAAMiC,MAAQkpB,EAAKlpB,MACnBjC,EAAMg3E,GAAKA,GAAU,EACrBh3E,EAAMg5E,GAAKA,GAAU,EACrBh5E,EAAM0iB,UAAYA,GAAwB,GAC1C1iB,EAAM,oBAAsBijC,EAC5BjjC,EAAM,gBAAkBw6K,EACxBx6K,EAAM,kBAAoB+hB,EAAOouB,QAC1BnwC,EAEX,OAfAhE,GAAU2+K,EAAYn7K,GAefm7K,EAhBoB,CAiB7Br+F,IAOEs+F,GAA8B,SAAUp7K,GAExC,SAASo7K,EAAa3yK,EAAI8U,EAAMgF,EAAQy4J,EAAatlG,EAAIC,EAAI53E,EAAG0lC,GAC5D,IAAIjjC,EAAQR,EAAOS,KAAKtD,KAAMsL,EAAI8U,EAAMgF,EAAO9f,MAAO8f,EAAOzP,MAAOkoK,EAAaz4J,EAAOouB,QAASlN,IAActmC,KAO/G,OANAqD,EAAMm1E,GAAKA,EACXn1E,EAAMk1E,GAAKA,EACXl1E,EAAMzC,EAAIA,EACVyC,EAAM,oBAAsBijC,EAC5BjjC,EAAM,gBAAkBw6K,EACxBx6K,EAAM,kBAAoB+hB,EAAOouB,QAC1BnwC,EAEX,OAXAhE,GAAU4+K,EAAcp7K,GAWjBo7K,EAZsB,CAa/Bt+F,IAOEu+F,GAA+B,SAAUr7K,GAEzC,SAASq7K,EAAc5yK,EAAIkM,EAAQ4I,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,QAC3D,IAAhBu3I,IAA0BA,EAAc,QACtB,IAAlBC,IAA4BA,EAAgB,QAC9B,IAAdx3I,IAAwBA,EAAY,IACxC,IAAIjjC,EAAQR,EAAOS,KAAKtD,KAAMsL,EAAI8U,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,IAActmC,KAEhG,OADAqD,EAAMmU,OAASA,EACRnU,EAEX,OATAhE,GAAU6+K,EAAer7K,GASlBq7K,EAVuB,CAWhCv+F,IA4DE26F,IArDgC,SAAUz3K,GAE1C,SAASs7K,EAAe7yK,EAAIkM,EAAQ4I,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,GAIhF,YAHoB,IAAhBu3I,IAA0BA,EAAc,QACtB,IAAlBC,IAA4BA,EAAgB,QAC9B,IAAdx3I,IAAwBA,EAAY,IACjCzjC,EAAOS,KAAKtD,KAAMsL,EAAIkM,EAAQ4I,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,IAActmC,KALvGX,GAAU8+K,EAAgBt7K,GADK,CASjCq7K,IAO8B,SAAUr7K,GAEtC,SAASu7K,EAAW9yK,EAAIurE,EAAMz2D,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,QACtD,IAAhBu3I,IAA0BA,EAAc,QACtB,IAAlBC,IAA4BA,EAAgB,QAC9B,IAAdx3I,IAAwBA,EAAY,IACxC,IAAIjjC,EAAQR,EAAOS,KAAKtD,KAAMsL,EAAI8U,EAAM9a,EAAOqQ,EAAOkoK,EAAaC,EAAex3I,IAActmC,KAKhG,OAJAqD,EAAMmiC,GAAKqxC,EAAKrxC,GAChBniC,EAAMqiC,GAAKmxC,EAAKnxC,GAChBriC,EAAMoiC,GAAKoxC,EAAKpxC,GAChBpiC,EAAMsiC,GAAKkxC,EAAKlxC,GACTtiC,EAVXhE,GAAU++K,EAAYv7K,GADK,CAc7B88E,IAQwB,WACtB,SAAS0+F,EAAK74I,EAAIE,EAAID,EAAIE,GACtB3lC,KAAKwlC,GAAKA,EACVxlC,KAAK0lC,GAAKA,EACV1lC,KAAKylC,GAAKA,EACVzlC,KAAK2lC,GAAKA,GALO,GAeQ,WAC7B,SAAS20I,EAAYt0K,EAAGC,GACpBjG,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EAEb,OAAOq0K,EALqB,IAa5B57F,GAAsB,WACtB,SAASA,EAAK14E,EAAGC,EAAGX,EAAOD,GACvBrF,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EACTjG,KAAKsF,MAAQA,EACbtF,KAAKqF,OAASA,EAElB,OAAOq5E,EAPc,IAgBW,WAChC,SAAS4/F,EAAehzK,EAAItF,EAAGC,EAAGX,EAAOD,EAAQk5K,EAAcC,EAAqBC,EAAkBhnG,QAC7E,IAAjB8mG,IAA2BA,EAAe,uBAClB,IAAxBC,IAAkCA,EAAsB,uBACnC,IAArBC,IAA+BA,EAAmB,SACzC,IAAThnG,IAAmBA,EAAO,IAC9Bz3E,KAAKsL,GAAKA,EACVtL,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EACTjG,KAAKsF,MAAQA,EACbtF,KAAKqF,OAASA,EACdrF,KAAKu+K,aAAeA,EACpBv+K,KAAKw+K,oBAAsBA,EAC3Bx+K,KAAKy+K,iBAAmBA,EACxBz+K,KAAKy3E,KAAOA,IAde,GA8B5B,SAASinG,GAAkB5kK,EAAQ/S,EAAO4O,EAAOmL,EAAQ69J,QAC5C,IAAZA,IAAsBA,GAAU,GAEpC,IAeI37F,EAEA39E,EAjBAu6E,EAAgB,CAChB,GAAM9lE,EAAOxO,GACb,EAAKwO,EAAO9T,EACZ,EAAK8T,EAAO7T,EACZ,KAAQ0P,EACR,YAAa5O,EAAM+O,KACnB,aAAc/O,EAAMgP,UACpB,cAAehP,EAAMkP,WACrB,cAAelP,EAAMiP,WACrB,cAAe8D,EAAO+wB,OACtB,UAAa/wB,EAAOiM,UACpB,QAAWhf,EAAMysC,QACjB,oBAAqB15B,EAAOklE,UAE5BxiE,EAA8B,kBAAhB1C,EAAO0C,MAA4C,kBAAhB1C,EAAO0C,KAAoB1C,EAAO0C,KAAOmiK,EAAU7kK,EAAO0C,KAAK1C,EAAO0C,KAAK7b,OAAS,GAAKmZ,EAAO0C,KAAK,GAEtJ8I,EAAW,IAAI,OAAY,IAE3BwgB,EAAaxgB,EAASqyD,WAAWiI,EAAepjE,GAYpD,GAXAspB,EAAW/+B,MAAM,eAAiB,OAClC++B,EAAW/+B,MAAM,eAAiBA,EAAMkP,WACxC6vB,EAAW/+B,MAAM,aAAeA,EAAM+O,KACtCgwB,EAAW/+B,MAAM,eAAiBA,EAAMiP,WACxC8vB,EAAW/+B,MAAM,cAAgBA,EAAM4O,MACvCmwB,EAAW/+B,MAAM,oBAAsB,OACvC++B,EAAW/+B,MAAM,yBAA2B,OAC5C++B,EAAW/+B,MAAM,uBAAyB,OAC1C++B,EAAW/+B,MAAM,sBAAwB,OACzC++B,EAAW/+B,MAAM,mBAAqB,OACtC++B,EAAW/+B,MAAM,kBAAoB,OACV,kBAAhB+S,EAAO0C,MAAqB1C,EAAO0C,KAAK7b,OAAS,EACxD,IAAK,IAAIK,EAAI,EAAG+X,EAAMe,EAAO0C,KAAK7b,OAAQK,EAAI+X,EAAK/X,IAC/CqE,EAAUo4E,GAAY3jE,EAAO0C,KAAKxb,GAAI+F,GAAa,OACnDi8E,EAAe19D,EAASsyD,YAAY,CAChC,EAAK99D,EAAO9T,EAAG,GAAM8T,EAAOxO,GAC5B,EAAMwO,EAAQ,GAAK,GAAc9Y,EAAIqE,EAAWrE,EAAIqE,IACrDs5K,EAAU7kK,EAAO0C,KAAK1C,EAAO0C,KAAK7b,QAAUK,EAAI,IAAM8Y,EAAO0C,KAAKxb,IACrE8kC,EAAWphC,YAAYs+E,GAI/B,OADAliE,EAAOpc,YAAYohC,GACZA,EAYJ,SAAS84I,GAAex7K,EAASy7K,EAAUvhK,EAAM7Q,EAAOqyK,EAAQC,GACnE,IAAIC,EAAe,eAAc,MAAO,CACpC1zK,GAAIuzK,EAAUr6K,UAAWs6K,EAAO17K,QAAQkI,GAAK,6BAEjD0zK,EAAaj4K,MAAMwsC,QAAU,2CAC7B,IAAI0rI,EAAgB77K,EAAQzC,OAC5B,MAAOs+K,EAAgB,EACnBD,EAAat6K,YAAYtB,EAAQ,IACjC67K,IAEJ,IAAKH,EAAO32K,SAA4B,aAAjB42K,EAA6B,CAIhD,IAHA,IAAIG,EAAeF,EAAal0K,UAC5Bu5D,EAAa5kE,OAAO2V,KAAKkI,GACzB6hK,EAASxuJ,OACJ3vB,EAAI,EAAGA,EAAIqjE,EAAW1jE,OAAQK,IACA,kBAAxBsc,EAAK+mD,EAAWrjE,IACvBk+K,EAAeE,GAAqBF,EAAc,GAAI5hK,EAAMwhK,GAGvB,aAAhCz6G,EAAWrjE,GAAGuhB,eAAgE,cAAhC8hD,EAAWrjE,GAAGuhB,gBACjE28J,EAAeA,EAAaz6J,QAAQ,IAAI06J,EAAO,MAAQ96G,EAAWrjE,GAAK,KAAM,KAAMsc,EAAK+mD,EAAWrjE,GAAG4Q,cAG9GotK,EAAal0K,UAAYo0K,EAE7B,OAAOF,EASJ,SAASK,GAAYriK,EAAO48J,GAE/B,IAAIyF,EACAC,EAQJ,OAPI1F,EAAKppJ,SAAW5S,MAAMsR,OAAOlS,KAC7BsiK,EAAiB1F,EAAK3/J,KAAKgX,gBAAgB,CAAET,OAAQopJ,EAAKppJ,OAAQU,YAAa0oJ,EAAKzoJ,uBACpFkuJ,EAAcC,EAAepwJ,OAAOlS,KAGpCqiK,EAAcriK,EAEXqiK,EAYJ,SAASD,GAAqBG,EAAgB/uJ,EAAQlT,EAAMs8J,GAI/D,IAHA,IAAIsF,EAAmC,KAAnBK,EAAyB/uJ,EAAS+uJ,EAClDC,EAAoC,KAAnBD,EAAyBL,EAAaj7K,MAAM,MAAQi7K,EAAaj7K,MAAM,OACxFk7K,EAASxuJ,OACJ3vB,EAAI,EAAGA,EAAIw+K,EAAc7+K,OAAQK,IACtC,GAAKw+K,EAAcx+K,GAAGgD,QAAQ,OAAS,GAAKw7K,EAAcx+K,GAAGgD,QAAQ,MAAQ,GACxEw7K,EAAcx+K,GAAGgD,QAAQ,MAAQ,GAAKw7K,EAAcx+K,GAAGg3B,OAAO,MAAQ,EAEvE,IADA,IAAI/zB,EAA4B,KAAnBs7K,EAAyBC,EAAcx+K,GAAGiD,MAAM,KAAOu7K,EAAcx+K,GAAGiD,MAAM,MAClF4f,EAAI,EAAGA,EAAI5f,EAAMtD,OAAQkjB,IAC9B,GAAI5f,EAAM4f,GAAG7f,QAAQ,MAAQ,EAAG,CAC5B,IAAIy7K,EAAsBC,GAAmBpiK,EAAMrZ,EAAM4f,IAAKjS,WAC9DstK,EAAmC,KAAnBK,EACZL,EAAaj7K,MAAM,KAAOA,EAAM4f,GAAK,KAAKvX,KAAK+yK,GAAYI,EAAoB7F,IAC/EsF,EAAaz6J,QAAQ,IAAI06J,EAAO,MAAQl7K,EAAM4f,GAAK,KAAM,KAAM47J,GAKnF,OAAOP,EA2CJ,SAASS,GAAY7zJ,EAAO4nB,EAAU/lB,EAAUiyJ,EAAUC,EAAaC,EAAkBlG,GAC5F,IAAImG,EACA/5K,EACAC,EAWA+5K,EAVAlqK,EAAO+pK,EAAY,QACnB5sI,EAAc4sI,EAAY,eAC1B3yJ,EAAcpmB,WAAW+4K,EAAY,gBACrCI,EAAgBn5K,WAAW+4K,EAAY,kBACvCz/J,EAAOy/J,EAAY,QACnBv5I,EAAYu5I,EAAY,aAExBz6J,EAAS,CAAEzP,MAAOs9B,EAAa3tC,MAAO4nB,EAAasmB,QAASysI,GAC5DzsI,EAAUqsI,EAAY,WAGtBK,EAAc,IAAIvgG,GAAWigG,EAAUx/J,EAAM8M,EAAa+lB,EAAaO,EAASysI,EAAe35I,EAAW,IAG9G,GAFAxwB,EAAKxQ,MAAgC,kBAAhBwQ,EAAU,MAAiBnE,SAASmE,EAAKxQ,MAAO,IAAMwQ,EAAKxQ,MAChFwQ,EAAKzQ,OAAkC,kBAAjByQ,EAAW,OAAiBnE,SAASmE,EAAKzQ,OAAQ,IAAMyQ,EAAKzQ,OACrE,WAAVymB,EAAoB,CACpB,IAAIpG,GAAU5P,EAAKxQ,MAAQwQ,EAAKzQ,QAAU,EACtC86K,EAAgB,IAAIlC,GAAa2B,EAAUx/J,EAAMgF,EAAQouB,EAAS7lB,EAAS3nB,EAAG2nB,EAAS1nB,EAAGyf,EAAQ4gB,GACtGy5I,EAAYnG,EAAKt0J,SAASyxD,WAAWopG,OAEtB,cAAVr0J,GACL9lB,EAAI2nB,EAAS3nB,EAAK8P,EAAKxQ,MAAQ,EAC/BW,EAAI0nB,EAAS1nB,EAAK6P,EAAKzQ,OAAS,EAChC26K,EAAc,IAAIhC,GAAW4B,EAAUx/J,EAAMgF,EAAQouB,EAAS,IAAIkrC,GAAK14E,EAAGC,EAAG6P,EAAKxQ,MAAOwQ,EAAKzQ,QAAS,KAAM,KAAM,GAAIihC,GACvHy5I,EAAYnG,EAAKt0J,SAASg7B,cAAc0/H,IAEzB,UAAVl0J,GACL9lB,EAAI2nB,EAAS3nB,EAAK8P,EAAKxQ,MAAQ,EAC/BW,EAAI0nB,EAAS1nB,GAAK25K,EAAS57K,QAAQ,YAAc,EAAK8R,EAAKzQ,OAAS,EAAKyQ,EAAKzQ,QAC9E,gBAAM66K,EAAa,CAAE,KAAQxsI,EAAU,OAAU59B,EAAKzQ,OAAQ,MAASyQ,EAAKxQ,MAAOU,EAAGA,EAAGC,EAAGA,IAC5F85K,EAAYnG,EAAKt0J,SAAS27B,UAAUi/H,IAGpCH,EAAY3gG,GAAgBw6F,EAAM9tJ,EAAOo0J,EAAapqK,EAAM6X,EAAUmyJ,GAE1E,OAAOC,EAUJ,SAASL,GAAmBpiK,EAAMN,GACrC,IAAK,eAAkBM,KAAU,eAAkBN,GAAQ,CACvD,IAAIojK,EAASpjK,EAAMyH,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAIxgB,MAAM,KAChE,GAAsB,IAAlBm8K,EAAOz/K,OACP2c,EAAOA,EAAK8iK,EAAO,SAGnB,IAAK,IAAIp/K,EAAI,EAAGA,EAAIo/K,EAAOz/K,SAAW,eAAkB2c,GAAOtc,IAC3Dsc,EAAOA,EAAK8iK,EAAOp/K,IAI/B,OAAOsc,EAUJ,SAAS+iK,GAAkB9uH,EAAWj0C,GACzC,IAAI3H,EAAU,eAAkB47C,EAAU+uH,gBACJhjK,EAAKi0C,EAAU+uH,gBADU/uH,EAAU+uH,eAAet8K,QAAQ,MAAQ,EAAM07K,GAAmBpiK,EAAMi0C,EAAU+uH,gBAAiB1uK,WAC9J0L,EAAKi0C,EAAU+uH,gBAKnB,OAJA/uH,EAAUnxC,KAAS,eAAkBmxC,EAAU+uH,iBAC1C,eAAkB3qK,GAEmB47C,EAAUnxC,KAD9CmxC,EAAU+uH,eAAet8K,QAAQ,MAAQ,EAAM07K,GAAmBpiK,EAAMi0C,EAAU+uH,gBAAiB1uK,WACjG0L,EAAKi0C,EAAU+uH,gBAChB/uH,EAUJ,SAASgvH,GAAkBhvH,EAAWj0C,GACzC,GAAK,eAAkBi0C,EAAUivH,iBAAoB,eAAkBljK,EAAKi0C,EAAUivH,iBAWjF,CACD,IAAIr/F,EAAW,eAAkB5vB,EAAUivH,gBAAsJjvH,EAAUzlC,MAA3IylC,EAAUivH,eAAex8K,QAAQ,MAAQ,EAAK07K,GAAmBpiK,EAAMi0C,EAAUivH,gBAAgB5uK,WAAa2/C,EAAUzlC,MACxLylC,EAAUzlC,MAA+B,KAAtBq1D,EAAOvvE,WAAqBuvE,EAAS5vB,EAAUzlC,MAClE,IAAI20J,EAAe,eAAkBlvH,EAAUmvH,mBAEoBnvH,EAAU7d,SADvE6d,EAAUmvH,kBAAkB18K,QAAQ,MAAQ,EAAK07K,GAAmBpiK,EAAMi0C,EAAUmvH,mBAAmB9uK,WAAe,eAAkB0L,EAAKi0C,EAAUmvH,oBACjHnvH,EAAU7d,SAA9Cp2B,EAAKi0C,EAAUmvH,mBACvBnvH,EAAU7d,SAAW+sI,MAjB+E,CACpG,IAAI30J,EAAUylC,EAAUivH,eAAex8K,QAAQ,MAAQ,EAClD07K,GAAmBpiK,EAAMi0C,EAAUivH,gBAAgB5uK,WACpD0L,EAAKi0C,EAAUivH,gBACnBjvH,EAAUzlC,MAA8B,KAArBA,EAAMla,WAAqBka,EAAQylC,EAAUzlC,MACzB,UAAnCxO,EAAKi0C,EAAUivH,kBACfjvH,EAAU7d,SAAa,eAAkB6d,EAAUmvH,mBAEgBnvH,EAAU7d,SADvE6d,EAAUmvH,kBAAkB18K,QAAQ,MAAQ,EAAK07K,GAAmBpiK,EAAMi0C,EAAUmvH,mBAAmB9uK,WAAe,eAAkB0L,EAAKi0C,EAAUmvH,oBACjHnvH,EAAU7d,SAA9Cp2B,EAAKi0C,EAAUmvH,oBAW/B,OAAOnvH,EAeJ,SAASovH,GAAgBpE,EAAcqE,EAAgBhH,EAAMiH,EAAYf,EAAkBgB,EAAcljI,EAAOmjI,GACnH,IAAIC,EACAC,EAMA3jK,EAEAna,EACAkjB,EACA66J,EAEArB,EACAsB,EAcArG,EA1BAsG,EAAiB,GACjBC,EAAwB,GACxBC,EAAQ,EACRC,EAAQ,EAGRx6K,EAAQw1K,EAAaiF,sBAAsBp3I,WAO3Cq3I,EAAW,KACX5hE,EAAI,EACJ6hE,EAAkB,GAClBC,EAAWpF,EAAaiF,sBACxBI,EAAehI,EAAKt0J,SAASY,YAAY,CAAE5a,GAAIsuK,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,mBAC/Ft8E,EAAW,CACX91F,QAAQ,EAAOuB,KAAM8oK,EAAwB14J,KAAMuhK,EAASvhK,KAAM/a,OAAQs8K,EAASt8K,OACnFC,MAAOq8K,EAASr8K,MAAOouC,SAAUiuI,EAASjuI,SAAU5nB,MAAO61J,EAAS71J,MACpExO,KAAMA,EAAMs8J,KAAMA,EAAMiI,QAASF,EAAUv8J,OAAQu8J,EAASv8J,QAE5D08J,EAAgBlI,EAAKx2K,QAAQgE,wBAEXwyK,EAAc,UAAI,IAAIn6K,OAAWsiL,GAAanI,EAAM2C,GAAc,GAEnF3C,EAAKoI,YACNlH,EAASlB,EAAKqI,cAAcC,gBAAgB3F,IAEhD,IAAI4F,GAAwB,EAuL5B,OAtLAvI,EAAK3xK,QAAQ,yBAA0Bs8F,GAAU,SAAU69E,GACvDxiL,MAAMM,UAAU+uF,QAAQ3rF,KAAKs9K,EAAe31J,YAAY,SAAUmoB,EAAeivI,GAE7E,GADAX,EAAkB,GAC2B,WAAzCtuI,EAAc,SAAS,cAA4B,CAInD,GAHA+tI,EAAc/tI,EACd4tI,EAAUG,EAAY/5K,wBACtBs6K,EAAgBr1K,KAAKg2K,IAChB,eAAkBrB,KACnBphL,MAAMM,UAAU+uF,QAAQ3rF,KAAKs9K,EAAe31J,YAAY,SAAUq3J,EAAoBziL,GAC9EA,GAAKwiL,EAAI,GAAmD,WAA9CC,EAAmB,SAAS,gBAC1CnB,EAAcmB,EACdrB,EAAUE,EAAY/5K,wBACjB,eAAkB65K,IACbD,EAAQh8K,KAAOi8K,EAAQrrK,OAASorK,EAAQprK,MAAQqrK,EAAQj8K,MACvDg8K,EAAQj8K,IAAMk8K,EAAQprK,QAAUmrK,EAAQnrK,OAASorK,EAAQl8K,MAC5Dq8K,EAAe/0K,KAAK40K,GACpBqB,EAAmB,SAAS,cAAgB,SAC5CZ,EAAgBr1K,KAAKxM,QAKrCyhL,EAAQN,EAAQh8K,KAAOg8K,EAAQ17K,MAAQ,EACvCi8K,EAAQP,EAAQj8K,IAAMi8K,EAAQ37K,OAC1B+7K,EAAezgL,OAAS,GAAG,CAE3B+gL,EAAkBA,EAAgBtjK,QAAO,SAAUmD,EAAM9U,EAAOuQ,GAAS,OAAOA,EAAMhZ,QAAQud,KAAU9U,KACxG60K,GAAgBQ,EAAc,QAC9BP,GAAmB3H,EAAK9rJ,cAAczoB,QAAUy8K,EAAc,UAC1DA,EAAc,OAAUA,EAAc,UAAYA,EAAc,OACpE,IAKIr0J,EALAgvJ,EAAY9qK,SAASyhC,EAAc,MAAMnvC,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IAChFu0C,EAAc7mC,SAASyhC,EAAc,MAAMnvC,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IACpFs+K,EAAgBhG,EAAaiG,eAAehqI,GAE5CgkI,EAAa+F,EAAcnjK,WAAWq9J,GAEtC5B,EAAc,eAAkB0H,EAAcE,oBAE7C,eAAkBjG,EAAW,cACzB,eAAkBA,EAAW,aAAoD,EAArC11K,WAAW01K,EAAW,aADzB11K,WAAW01K,EAAW,cADpEttJ,OAAOwwJ,GAAmBlD,EAAY+F,EAAcE,qBAGpD7H,EAAa,eAAkB2H,EAAcG,mBAE5C,eAAkBlG,EAAW,aACzB,eAAkBA,EAAW,aAAoD,EAArC11K,WAAW01K,EAAW,aAD1B11K,WAAW01K,EAAW,aADnEttJ,OAAOwwJ,GAAmBlD,EAAY+F,EAAcG,oBAGnD9I,EAAKoI,UAGDpI,EAAKoI,YAAcpI,EAAKj6I,aAAalZ,SAC1CgH,EAAaivJ,GAA0B,IAAIb,GAAMhB,EAAWD,GAAWhB,EAAK+I,cAAe/I,EAAK+C,oBAAoB,IAHpHlvJ,EAAaktJ,GAAkBC,EAAUC,EAAWC,EAAQyB,EAAc3C,GAK9ExmI,EAAc,SAAS,cAAgB,SACnCmxD,EAAS91F,QACToxK,EAAc,CACV/pK,KAAM,IAAIioE,GAAK4jG,EAASr8K,MAAOq8K,EAASt8K,QACxC+a,KAAMuhK,EAASvhK,KAAM6yB,YAAa0uI,EAASv8J,OAAOzP,MAClDuX,YAAay0J,EAASv8J,OAAO9f,MAAOkuC,QAASmuI,EAASnuI,QACtDlN,UAAWq7I,EAASr7I,UAAWoN,SAAUiuI,EAASjuI,SAAU5nB,MAAO61J,EAAS71J,OAEhF+zJ,EAAY,iBAAmB,eAAkB8B,EAASv8J,OAAOouB,SAAWmuI,EAASnuI,QAAUmuI,EAASv8J,OAAOouB,UAG/GqsI,EAAc,CACV/pK,KAAM,IAAIioE,GAAKwmB,EAASj/F,MAAOi/F,EAASl/F,QACxC+a,KAAMmkF,EAASnkF,KAAM6yB,YAAasxD,EAASn/E,OAAOzP,MAClDuX,YAAaq3E,EAASn/E,OAAO9f,MAAOkuC,QAASmuI,EAASnuI,QACtDlN,UAAWq7I,EAASr7I,UAAWoN,SAAU6wD,EAAS7wD,SAClD5nB,MAAOy4E,EAASz4E,OAEpB+zJ,EAAY,iBAAmB,eAAkBt7E,EAASn/E,OAAOouB,SAAWmuI,EAASnuI,QAAU+wD,EAASn/E,OAAOouB,SAEnH8tI,EAAS1H,EAAc,WAAagH,EAAet1K,GAAGtH,QAAQ,mBAAqB,EAAxDs9K,EAAqEA,EAAQG,EAAYl9E,EAASj/F,MAAQ,EACrIi8K,EAAS3H,EAAc,WAAagH,EAAet1K,GAAGtH,QAAQ,mBAAqB,EAAxDu9K,EAAqEA,EAASh9E,EAASl/F,OAAS,EACvHu0K,EAAKoI,YAAcpI,EAAKj6I,aAAalZ,SACrC66J,EAAQ7zJ,EAAWznB,EACnBu7K,EAAQ9zJ,EAAWxnB,GAEvB,IAAI28K,EAAYhJ,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAAc,cAAgBikI,EAAY,YAAc,EACtIj0H,EAAUoxH,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAAc,cAAgBikI,EAAY,YAAc,EAAM,cAAgB58D,EAC9JA,IACA,IAAIvgF,EAAMqgJ,GAAYE,EAAY,SAAUA,EAAY,YAAa,CAAE75K,EAAG,EAAGC,EAAG,GAAK28K,EAAW/C,EAAaC,EAAkBlG,GAC/Ht6I,EAAI30B,aAAa,YAAa,cAAgB22K,EAAQ,IAAMC,EAAQ,MAC7C,YAAnBh9E,EAASz4E,MACTwT,EAAI2mB,SAAS,GAAG4C,YAAc64H,EAAgB9vK,WAG9C0tB,EAAIupB,YAAc64H,EAAgB9vK,WAEtCzO,EAAU,IAAI47E,GAAWv2B,EAAS,EAAKi5H,EAAU,UAAWL,EAAezgL,OAAS,GAAGiR,WAAY,GAAI,IACvGyU,EAAcq4J,GAAkBv7K,EAAS4D,EAAOA,EAAM4O,MAAOmqK,GAC7Dz5J,EAAY1b,aAAa,YAAa,cAAgB22K,EAAQ,IAAMC,EAAQ,MAC5EK,EAAal9K,YAAY2hB,GACzBu7J,EAAal9K,YAAY46B,GAGjC8hJ,EAAiB,GAErBe,GAAwB,KAE5BrB,EAAap8K,YAAYk9K,GACzBhI,EAAK10I,UAAUxgC,YAAYo8K,GAC3BlH,EAAKx2K,QAAQsB,YAAYk1K,EAAK10I,WAC1By8I,EAASkB,qBACTjjL,MAAMM,UAAU+uF,QAAQ3rF,KAAKs+K,EAAa32J,YAAY,SAAU63J,EAAgBT,GAC5E,GAA8C,WAA1CS,EAAe,SAAS,gBACxB3B,EAAc2B,EACd9B,EAAUG,EAAY/5K,yBACjB,eAAkB45K,MAAcG,EAAY71K,GAAGtH,QAAQ,gBAAkB,IAAI,CAC9E,IAAK,IAAInE,EAAIwiL,EAAI,EAAGxiL,EAAI+hL,EAAa5kI,kBAAmBn9C,IACM,WAAtD+hL,EAAa32J,WAAWprB,GAAG,SAAS,gBACpCqhL,EAAeU,EAAa32J,WAAWprB,GACvCohL,EAAUC,EAAa95K,wBAClB,eAAkB65K,IAAcC,EAAa51K,GAAGtH,QAAQ,gBAAkB,GACrEg9K,EAAQh8K,KAAOi8K,EAAQrrK,OAASorK,EAAQprK,MAAQqrK,EAAQj8K,MACvDg8K,EAAQj8K,IAAMk8K,EAAQprK,QAAUmrK,EAAQnrK,OAASorK,EAAQl8K,MAC5Ds8K,EAAsBh1K,KAAK60K,GAC3BG,EAAsBh1K,KAAKu1K,EAAa32J,WAAWprB,EAAI,IACvD+hL,EAAa32J,WAAWprB,GAAG,SAAS,cAAgB,SACpD+hL,EAAa32J,WAAWprB,EAAI,GAAG,SAAS,cAAgB,SACxD6hL,EAAgBr1K,KAAKxM,KAKrC,GAAIwhL,EAAsB1gL,OAAS,EAAG,CAClCwgL,EAAc2B,EACd,IAAK,IAAI9hL,EAAI,EAAGA,EAAIqgL,EAAsB1gL,OAAQK,IAClB,MAAxBmgL,EAAYzxK,QACZyxK,EAAYl2J,WAAW,GAAG49B,YAAcs4H,EAAYl2J,WAAW,GAAG49B,YAAc,IAC5Ew4H,EAAsBrgL,GAAG6nD,YAG7Bs4H,EAAYt4H,YAAcs4H,EAAYt4H,YAAc,IAAMw4H,EAAsBrgL,GAAG6nD,YAEvF+4H,EAAa32J,WAAWo3J,EAAI,GAAGx5H,cAAkB+4H,EAAa32J,WAAWo3J,EAAI,GAAc,cAAQhB,EAAsBrgL,EAAI,GAAc,aAAI4Q,WAC/I5Q,IAGRqgL,EAAwB,OAKxC,MAAO,EAAIO,EAAa32J,WAAWtqB,OAC/Bm/K,EAAiBl8G,aAAag+G,EAAa32J,WAAW,GAAI60J,EAAiB90J,YAE1E4yB,GACDmlI,GAAenJ,EAAKx2K,QAAQkI,GAAK,sBAAsB5G,YAAYo7K,GAEvE,IAAI18K,EAAUwK,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,kBAClFmC,EAAiBp1K,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,mBACzF,eAAkBz9K,KAAaw2K,EAAKoI,UACpClB,EAAal9G,aAAak8G,EAAkBgB,EAAa91J,YAEnD4uJ,EAAKoI,UAIN,eAAkBgB,GAGb,eAAkB5/K,GAIxB09K,EAAal9G,aAAak8G,EAAkBgB,EAAa91J,YAHzD5nB,EAAQ6/K,sBAAsB,WAAYnD,GAH1CkD,EAAeC,sBAAsB,WAAYnD,GAJrDgB,EAAap8K,YAAYo7K,GAa7B,IAAIoD,EAAgBt1K,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,kBAI5F,GAHK,eAAkBqC,IACnBA,EAAc/9K,SAEd47K,EAAW,CACX,IAAIoC,EAAoBv1K,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,sBAC9DksJ,EAAY5pJ,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,gBAAkBu1K,EAAa,IACpF,eAAkBsC,IAAuB,eAAkB3rB,GAGtD,eAAkB2rB,IACxBA,EAAkBz+K,YAAYo8K,GAH9BqC,EAAkBv/G,aAAak9G,EAActpB,OAOlD2qB,EAUJ,SAASiB,GAAqBC,EAAgBzJ,EAAMxmI,GACvD,IAWI2sI,EAXAc,EAAawC,EAAe,GAAGxC,WAC/ByC,EAAeD,EAAe,GAAGE,mBACjC/qI,EAAc6qI,EAAe,GAAG7qI,YAChCikI,EAAY4G,EAAe,GAAG5G,UAC9BoC,EAAWjF,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAC7E9hC,EAASkjK,EAAK4J,OAAO3C,GAAY2B,eAAehqI,GAChDirI,EAAY5E,EAAW,cAAgBpC,EAAY,YAAc6G,EACjEI,EAAqE,YAAxD9J,EAAK4J,OAAO3C,GAAYW,sBAAsB11J,MAAsBhB,GAAW24J,EAAY,UAAY34J,GAAW24J,GAC/HE,EAAkB74J,GAAW24J,EAAY,cAAgBH,GAC7DI,EAAW/4K,aAAa,aAAc,WACtCg5K,EAAgBh5K,aAAa,aAAc,WAG3C,IADA,IAAIi5K,EAAmBP,EAAe,GAAG/lK,KAAK3c,OACrCK,EAAI,EAAGA,EAAI4iL,EAAkB5iL,IAClC++K,EAA6B,YAAjBrpK,EAAOoV,OAAuB,eAAkBpV,EAAOiW,UAAY7B,GAAW+zJ,EAAW,cAAgBwE,EAAe,GAAG/lK,KAAKtc,GAAG,SAAW,UAAY8pB,GAAW+zJ,EAAW,cAAgBwE,EAAe,GAAG/lK,KAAKtc,GAAG,UACtO++K,EAAU,SAAS,cAAgB,SAEvC9gG,GAAc26F,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAAc,+BAW3F,SAASqrI,GAAgBR,EAAgBzJ,EAAMxmI,EAAe0wI,GACjE,IAAIjD,EAAawC,EAAe,GAAGxC,WAC/BroI,EAAc6qI,EAAe,GAAG7qI,YAChC8qI,EAAeD,EAAe,GAAGE,mBACjC9G,EAAY4G,EAAe,GAAG5G,UAE9BsH,EAAqBD,EAAQh5J,GAAasoB,EAAclnC,cAActG,KAAKwtC,GAC3E4wI,EAAkBF,EAAQ,GAAK,IAC/BjF,EAAWjF,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAC7E9hC,EAASkjK,EAAK4J,OAAO3C,GAAY2B,eAAehqI,GAChDirI,EAAY5E,EAAW,cAAgBpC,EAAY,YAAc6G,EACjEI,EAAqE,YAAxD9J,EAAK4J,OAAO3C,GAAYW,sBAAsB11J,MAAsBi4J,EAAmBC,EAAkB,GAAKP,EAAY,UAAYM,EAAmBC,EAAkB,GAAKP,GAC7LE,EAAkBI,EAAmBC,EAAkB,GAAKP,EAAY,cAAgBH,GAC5FI,EAAW/4K,aAAa,aAAc,UACtCg5K,EAAgBh5K,aAAa,aAAc,UAC3C,IAAIo1K,EAA6B,YAAjBrpK,EAAOoV,OAAuB,eAAkBpV,EAAOiW,UAAYo3J,EAAmBC,EAAkB,GAAKnF,EAAW,cAAgBpC,EAAY,UAAYsH,EAAmBC,EAAkB,GAAKnF,EAAW,cAAgBpC,GACjPp3K,EAAS06K,EAAUrqI,cAAcpqC,GAAGtH,QAAQ,mBAAqB,EAAI+7K,EAAU34K,wBAAwB/B,OAASqR,EAAOrR,OACvHC,EAAQy6K,EAAUrqI,cAAcpqC,GAAGtH,QAAQ,mBAAqB,EAAI+7K,EAAU34K,wBAAwB9B,MAAQoR,EAAOpR,MACrHgvC,GAAWovI,EAAWh5K,aAAa,aAAazG,MAAM,cAAc,GAAGsI,OAAOtI,MAAM,KAAK,GACzFswC,GAAWmvI,EAAWh5K,aAAa,aAAazG,MAAM,cAAc,GAAGsI,OAAOtI,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGsI,OAC1GmZ,EAASpgB,EAAQ,EACjB2+K,EAAO,KAAWv+J,EAClBw+J,EAAc,EACdC,EAAiBh7K,KAAKC,MAAM66K,EAAO3+K,GACvC4+K,GAAeC,EACf,IAAIP,EAAmBP,EAAe,GAAG/lK,KAAK3c,OAC1CyjL,EAAUj7K,KAAKC,MAAO/D,EAAS4+K,EAAQ,KAC3CG,EAAUR,EAAmBO,EAAiB,IAAMP,EAAmBQ,EAOvE,IALA,IAAI17I,EAAS07I,EAAU,IAAO,IAC1BC,EAAWT,EAAmBO,EAAiB,GAAK,EACpDpkK,EAAQ,EACR7C,EAAQ,KAAOo3B,EAAU,IAAMC,EAAU,IACzCqiC,EAAO,GACF51E,EAAI,EAAGA,EAAI4iL,EAAkB5iL,IAAK,CACvC,GAAIkjL,IAAgBljL,GAAKmI,KAAKC,MAAMi7K,IAAa,IAAK,CAClDtkK,IACA2F,GAAUpgB,EAAQ,GAAKya,EACvBskK,EAAW,EACXJ,EAAO,KAAWv+J,EAClBy+J,EAAiBh7K,KAAKC,MAAM66K,EAAO5+K,GACnC++K,EAAUj7K,KAAKC,MAAO/D,EAAS4+K,EAAQ,KACvC,MAAOG,EAAUD,EAAiB,IAC9BA,IAEJz7I,EAAU07I,EAAU,IAAO,IAC3BF,GAAeC,EAEnB,IAAI3+I,EAAK8O,EAAU5uB,EAASvc,KAAKu2E,IAAe,EAAVv2E,KAAK2gC,GAASu6I,EAAY,KAC5D3+I,EAAK6O,EAAU7uB,EAASvc,KAAK0gC,IAAe,EAAV1gC,KAAK2gC,GAASu6I,EAAY,KAChEztG,GAAQ15D,EAAQ,KAAO,EAAO,IAAMwoB,EAAK,IACzCq6I,EAA6B,YAAjBrpK,EAAOoV,OAAuB,eAAkBpV,EAAOiW,UAAYo3J,EAAmBC,EAAkB,GAAKnF,EAAW,cAAgBwE,EAAe,GAAG/lK,KAAKtc,GAAG,SAAW,UAAY+iL,EAAmBC,EAAkB,GAAKnF,EAAW,cAAgBwE,EAAe,GAAG/lK,KAAKtc,GAAG,UAChS++K,EAAUrqI,cAAcpqC,GAAGtH,QAAQ,mBAAqB,GACxD+7K,EAAU,SAAS,aAAe,GAClCA,EAAU,SAAS,QAAUnG,EAAKoI,UAAYx8I,EAAMlgC,EAAQ,EAAK,KAAQkgC,EAAMlgC,EAAQ,EAAK,GAAM,KAClGy6K,EAAU,SAAS,OAASnG,EAAKoI,UAAYt8I,EAAMrgC,EAAS,EAAK,KAAQqgC,EAAMrgC,EAAS,EAAK,GAAM,KACnG06K,EAAUp1K,aAAa,YAAa,cAAgB66B,EAAK,IAAME,EAAK,MAGpEq6I,EAAUp1K,aAAa,YAAa,cAAgB66B,EAAK,IAAME,EAAK,KAExEq6I,EAAU,SAAS,cAAgB,UACnCsE,GAAY37I,EAEhB,IAAI47I,EAAgB1K,EAAK4J,OAAO3C,GAAYW,sBAAsB+C,sBAC9DphL,EAAU,CACV5D,EAAGq3E,EAAMtrE,GAAIsuK,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAAc,cAAgBikI,EAAY,8BAA+B1iG,OAAQuqG,EAAc3uK,MAC9K,eAAgB2uK,EAAc9wI,QAAS,iBAAkB8wI,EAAc9wI,QAAS,eAAgB8wI,EAAch/K,OAElH8tC,EAAgB0wI,EAAQC,EAAmBnK,EAAKx2K,QAAQkI,GAAK,kBAAoB8nC,EACjF,IAAIoxI,EAAW5K,EAAKt0J,SAASY,YAAY,CAAE5a,GAAIsuK,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAAkBroI,EAAc,gCAC/HgsI,EAAS9/K,YAAYk1K,EAAKt0J,SAASkhB,SAASrjC,IACvB,YAAjBuT,EAAOoV,MACPsnB,EAAcwwB,aAAa4gH,EAAUpxI,EAAclnC,cAAc,IAAM2yK,EAAW,uBAGlFzrI,EAAcwwB,aAAa4gH,EAAUpxI,EAAclnC,cAAc,IAAM2yK,EAAW,iBAoBnF,SAAS,GAAOttH,EAAWixH,EAAgBhG,EAAYC,EAAW9uJ,EAAU82J,EAAY7E,EAAUrqI,EAAQ+mC,EAAOs9F,EAAMkG,GAE1H,IAAID,EAAc,CACd/pK,KAAM,IAAIioE,GAAKxsB,EAAUjsD,MAAOisD,EAAUlsD,QAC1C+a,KAAMmxC,EAAUnxC,KAAM6yB,YAAase,EAAUnsC,OAAOzP,MACpDuX,YAAaqkC,EAAUnsC,OAAO9f,MAAOkuC,QAASgvI,EAAehvI,QAC7DlN,UAAWk8I,EAAel8I,UAAW25I,cAAe,eAAkB1uH,EAAUnsC,OAAOouB,SAAWgvI,EAAehvI,QAC7G+d,EAAUnsC,OAAOouB,SAEzByrC,GAAc2gG,GACd,IAAItgJ,EAAMqgJ,GAAYpuH,EAAUzlC,MAAOylC,EAAU7d,SAAU,CAAE1tC,EAAG,EAAGC,EAAG,GAAK25K,EAAUC,EAAaC,EAAkBlG,GAChH5zK,GAAK4zK,EAAKoI,UAAYr0J,EAAS3nB,GAAK2nB,EAAS3nB,EAAIy+K,EAAWz+K,GAAKs2E,GAAS/mC,EAAOvvC,EACjFC,GAAK2zK,EAAKoI,UAAYr0J,EAAS1nB,GAAK0nB,EAAS1nB,EAAIw+K,EAAWx+K,GAAKq2E,GAAS/mC,EAAOtvC,EACrFq5B,EAAI30B,aAAa,YAAa,cAAgB3E,EAAI,IAAMC,EAAI,MAC5DuzH,GAAkBogD,EAAK8K,wBAAyB9K,EAAK+K,qBAAsBrlJ,EAAK,2BAChFwgJ,EAAiBp7K,YAAY46B,GAC7B,IAAIl8B,EAAWo5K,EAAW77K,OAAS,IAAO87K,EAAY,SAAW,KAC7Dn8F,EAAc,IAAIu7F,GAAM71K,EAAGC,GAI/B,OAHIu8K,EAAehwI,kBAAoB,GAAuB,WAAlB,SACxCoyI,GAAetlJ,EAAKkjJ,EAAeqC,eAAgBrC,EAAehwI,kBAAmB8tC,EAAas5F,EAAMx2K,GAErG08K,EAmBJ,SAAS,GAAevuH,EAAWgL,EAAYqjH,EAAUtiK,EAAMk7B,EAAaooI,EAAgBjzJ,EAAU82J,EAAYnoG,EAAO/mC,EAAQqkI,GAEpI,GADAr9G,EAAauoH,GAAoBvzH,EAAU5kC,SAAUitJ,GACjDr9G,GAAeA,EAAWj/C,EAAMs8J,EAAMroH,EAAU5kC,SAAUitJ,EAAKx2K,QAAQkI,GAAK,kBAAoBktC,GAAa,GAAa,OAAG,CAG7H,IAFA,IAAIssC,EAAkBvoB,EAAWj/C,EAAMs8J,EAAMroH,EAAU5kC,SAAUitJ,EAAKx2K,QAAQkI,GAAK,kBAAoBktC,GAAa,GAChHpF,EAAgBwrI,GAAe95F,EAAiB86F,EAAUtiK,EAAMk7B,EAAaohI,SAAaroH,EAAU5kC,UAC/F3rB,EAAI,EAAGA,EAAIoyC,EAAc6S,SAAStlD,OAAQK,IAC/CoyC,EAAc6S,SAASjlD,GAAG+F,MAAMiqC,cAAgB,OAKpD,GAHAoC,EAAcrsC,MAAM/B,MAAQ40K,EAAKoI,UAAYr0J,EAAS3nB,GAAK2nB,EAAS3nB,EAAIy+K,EAAWz+K,GAAKs2E,GAAS/mC,EAAOvvC,EAAI4zK,EAAKwB,YAAYp1K,EAAI,KACjIotC,EAAcrsC,MAAMhC,KAAO60K,EAAKoI,UAAYr0J,EAAS1nB,GAAK0nB,EAAS1nB,EAAIw+K,EAAWx+K,GAAKq2E,GAAS/mC,EAAOtvC,EAAI2zK,EAAKwB,YAAYn1K,EAAI,KAChI26K,EAAel8K,YAAY0uC,GACwB,oBAA/CwmI,EAAK4J,OAAO5J,EAAKmL,gBAAgBC,UAAiC,CAClE,IAAIC,EAAkBlC,GAAenJ,EAAKx2K,QAAQkI,GAAK,oBAAoBlE,wBACvE89K,EAAsB9xI,EAAchsC,wBACpC+9K,EAAuB,KACtBF,EAAgB,KAAOC,EAAoB,MAAQD,EAAgB,KAAOE,EAAuBD,EAAoB,KAAOA,EAAoB,YAC7ID,EAAgB,KAAOC,EAAoB,MAAQD,EAAgB,KAAOA,EAAgB,UAAYC,EAAoB,KAAOA,EAAoB,aACzJ9xI,EAAcrsC,MAAMC,QAAU,SAI1C,OAAO45K,EAYJ,SAASpnD,GAAkBt0G,EAAWkgK,EAAchiL,EAASoB,GAChE,GAAI0gB,EACA,IAAK,IAAIzY,EAAQ,EAAGA,EAAQyY,EAAUvkB,OAAQ8L,IACtCrJ,EAAQsH,aAAa,QAAUwa,EAAUzY,KAC3B,IAAVA,GAAmC,MAApBrJ,EAAQsM,UAClB,eAAkB01K,IAAkB,eAAkBA,EAAa95K,KACpEsC,SAAS6B,KAAK/K,YAAY0gL,GAE1BhiL,EAAQkI,GAAGtH,QAAQ,kBAAoB,GAAKZ,EAAQ45C,kBAAoB,GACxE55C,EAAQ6iD,SAAS,GAAGt7C,aAAa,QAASnG,IAGlDpB,EAAQuH,aAAa,QAASnG,IAkBvC,SAAS6gL,GAAmB/5K,EAAIg6K,EAASllK,EAAMozB,EAASP,EAAa/lB,EAAa0sJ,GACrF,IAAK9uJ,GAAWxf,GAAK,CACjB,IAAIi6K,EAAa,eAAc,QAAS,CACpCj6K,GAAIA,IAERi6K,EAAW/6H,UAAY,IAAM86H,EAAU,SACjCllK,EADiB,YACSozB,EADT,iBAEDtmB,EAFC,WAGP+lB,EAHO,KAIvB2mI,EAAK4L,oBAAsBD,EAC3B33K,SAAS6B,KAAK/K,YAAY6gL,IAW3B,SAASE,GAAY35J,EAAO1oB,GAI/B,OAHIA,GACAA,EAAQsB,YAAYonB,GAEjBA,EAsFJ,SAASszD,GAAgBw6F,EAAM9tJ,EAAO3oB,EAAS2S,EAAM6X,EAAUoyJ,GAClE,IAAI2F,EACJ,OAAQ55J,GACJ,IAAK,UACD45J,EAAYC,GAAY/L,EAAMz2K,EAAS2S,EAAM6X,EAAU,SAAUoyJ,GACjE,MACJ,IAAK,QACD58K,EAAQ5D,EAAI,KAAOouB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,MAAQsoB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI6P,EAAKzQ,OAC/G,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,IAAMqoB,EAAS1nB,EAAI,OAAS0nB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,IAAMqoB,EAAS1nB,EAC7H,MACJ,IAAK,UACD9C,EAAQ5D,EAAI,KAAOouB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,IACzGqoB,EAAS1nB,EAAI,MAAQ0nB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAC5G,IAAMqoB,EAAS1nB,EAAI,KACzB,MACJ,IAAK,OACD9C,EAAQ5D,EAAI,MAAQouB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GACvH,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GACjH,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,MAAQsoB,EAAS3nB,EAAI,KACrG2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,KACpH,MACJ,IAAK,WACDlC,EAAQ5D,EAAI,KAAOouB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAC1GqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,KACpH,MACJ,IAAK,iBACDlC,EAAQ5D,EAAI,OAASouB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,IAAMqoB,EAAS1nB,EAAI,OAAS0nB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,IACzGqoB,EAAS1nB,EACf,MACJ,IAAK,eACD9C,EAAQ5D,EAAI,KAAOouB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,MAAQsoB,EAAS3nB,EAAI,KACvF2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAChC,MACJ,IAAK,mBACDlC,EAAQ5D,EAAI,MAAQouB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAC7HqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,MAASsoB,EAAU,EAAI,KAAOA,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,KACnG,MACJ,IAAK,WAKD,IAHA,IAAIo6E,EAAK,GACLhlE,OAAS,EACTgB,OAAS,EACJza,EAAI,EAAGA,EAAI,EAAGA,IACnByZ,EAAU3E,EAAKxQ,MAAQ,EAAK6D,KAAK0gC,IAAK1gC,KAAK2gC,GAAK,KAAQ9oC,EAAIy+E,IAC5DhkE,EAAU3F,EAAKzQ,OAAS,EAAK8D,KAAKu2E,IAAKv2E,KAAK2gC,GAAK,KAAQ9oC,EAAIy+E,IAC7Dt8E,EAAQ5D,IAAY,IAANyB,EAAU,KAAO,OAAS2sB,EAAS3nB,EAAIyU,GAAU,KAAOkT,EAAS1nB,EAAIwV,GAEvFtY,EAAQ5D,GAAK,KACb,MAKR,MAHc,UAAVusB,GAA+B,mBAAVA,GAAwC,iBAAVA,IACnD3oB,EAAQ,UAAmC,gBAAtBA,EAAQ,UAA+BA,EAAQ,QAAUA,EAAQ,WAEzE,YAAV2oB,EAAsB45J,EAAY9L,EAAKt0J,SAASkhB,SAASrjC,GA8G7D,SAASwiL,GAAY/L,EAAMz2K,EAAS2S,EAAM6X,EAAUnf,EAAMpL,GAC7D,IAEI89E,EAFA57E,EAAQwQ,EAAKxQ,MACbD,EAASyQ,EAAKzQ,OAElBsoB,EAAS3nB,GAAKV,EAAQ,EACtBqoB,EAAS1nB,GAAO9C,EAAQmI,GAAGtH,QAAQ,YAAc,EAAMqB,EAAS,EAAKlC,EAAQmI,GAAGtH,QAAQ,WAAa,EAAIqB,EAAS,KAAOA,EACzHlC,EAAQ5D,EAAI,gKAEZ,IAAIqmL,EAAUhM,EAAKt0J,SAASkhB,SAASrjC,GACjC6C,EAAI8P,EAAKxQ,MAAQ,GACjBW,EAAI6P,EAAKzQ,OAAS,GAEtB,GADAugL,EAAQj7K,aAAa,YAAa,aAAegjB,EAAS3nB,EAAI,KAAO2nB,EAAS1nB,EAAI,WAAaD,EAAI,KAAOC,EAAI,KACjG,WAATuI,EAAmB,CACnB,IAAI2kC,EAAIymI,EAAKt0J,SAASY,YAAY,CAAE5a,GAAInI,EAAQmI,GAAK,WACrDm6K,GAAYG,EAASzyI,GACrB+tC,EAAcukG,GAAYtyI,EAAG/vC,QAG7B89E,EAAc0kG,EAElB,OAAO1kG,EA6DJ,SAAS2kG,GAAqBzmK,EAAYilD,EAAYyhH,EAAUC,EAAchL,GACjF,IAAM,cAAD,CAAmB12G,GACpB,IAAK,IAAIrjE,EAAI,EAAGA,EAAIoe,EAAWze,OAAQK,IAAK,CACxC,IAAIm3K,EAAkB2N,EAAS9hL,QAAQ,MAAQ,EAAK07K,GAAmBtgK,EAAWpe,GAAI8kL,GAClF1mK,EAAWpe,GAAG8kL,GACdE,EAAYC,GAAkB9N,EAAe4N,EAAc1hH,GAC3D6hH,GAAsB,eAAkB/N,IAAkBv6J,MAAMymD,EAAW2hH,KAC/C,kBAAlB7N,EAA6BA,EAAc51J,cAAiC41J,EACtFgO,GAA4B,eAAkB9hH,EAAW2hH,KAAepoK,MAAMymD,EAAW2hH,IACvF3hH,EAAW2hH,GAAWzjK,cAAgB8hD,EAAW2hH,GACvD,GAAIE,IAAuBC,EACvB,OAAOnlL,EAInB,OAAO,KAUJ,SAASilL,GAAkBhO,EAAWC,EAAmBpsJ,GAC5D,IAAK,eAAkBmsJ,KAAe,eAAkBnsJ,KAC/C,eAAkBosJ,GAGnB,IAFA,IAAI7zG,EAAoE,mBAAtD5kE,OAAOS,UAAU0R,SAAStO,KAAK40K,GAC7CA,EAAoB,CAACA,GAChBl3K,EAAI,EAAGA,EAAIqjE,EAAW1jE,OAAQK,IAAK,CACxC,IAAIolL,EAAkB,eAAkBnO,IAAmC,kBAAdA,EAC/BA,EAA1BA,EAAU11J,cACV8jK,GAAwB,eAAkBv6J,EAAMu4C,EAAWrjE,MACxD4c,MAAMkO,EAAMu4C,EAAWrjE,KACxB8qB,EAAMu4C,EAAWrjE,IAAIuhB,cAAgBuJ,EAAMu4C,EAAWrjE,IAC5D,GAAIolL,IAAmBC,EACnB,OAAOhiH,EAAWrjE,GAKlC,OAAO,KA6IJ,SAASslL,GAAaC,GACzB,IAAIC,GAAa,EAQjB,MAPkD,mBAA9C/mL,OAAOS,UAAU0R,SAAStO,KAAKijL,IAC/B3mL,MAAMM,UAAU+uF,QAAQ3rF,KAAKijL,GAAW,SAAUxL,EAAOtuK,GAChD,eAAkBsuK,EAAM,cAA8C,SAA9BA,EAAM,YAAY,UAC3DyL,GAAa,MAIlBA,EAWJ,SAASC,GAAS72K,EAAU4M,EAAMs/D,GACrC,IAAI5zC,EAAQ1rB,EACR1G,EAAO2nE,GAAYjhE,EAAMs/D,GAAMx2E,MACnC,GAAIwQ,EAAOlG,EAEP,IADA,IAAI82K,EAAalqK,EAAK7b,OACbK,EAAI0lL,EAAa,EAAG1lL,GAAK,IAAKA,EAGnC,GAFAknC,EAAQ1rB,EAAKmqK,UAAU,EAAG3lL,GAAK,MAC/B8U,EAAO2nE,GAAYv1C,EAAO4zC,GAAMx2E,MAC5BwQ,GAAQlG,GAAYs4B,EAAMvnC,OAAS,EAInC,OAHIunC,EAAMvnC,OAAS,IACfunC,EAAQ,KAELA,EAInB,OAAOA,EAYJ,SAAS0+I,GAAaj5J,EAAUsyB,EAAWouB,EAAU7/D,GACxD,IAAIxI,EACJ,OAAQi6C,GACJ,IAAK,OACDj6C,EAAI2nB,EAAS3nB,EACb,MACJ,IAAK,SACDA,EAAc,UAATwI,EAAqBmf,EAASroB,MAAQ,EAAI+oE,EAAS/oE,MAAQ,EAC1DqoB,EAAS3nB,EAAK2nB,EAASroB,MAAQ,EAAM+oE,EAAS/oE,MAAQ,EAC5D,MACJ,IAAK,MACDU,EAAc,UAATwI,EAAqBmf,EAASroB,MAAQqoB,EAAS1nB,EAAIooE,EAAS/oE,MAC3DqoB,EAAS3nB,EAAI2nB,EAASroB,MAAS+oE,EAAS/oE,MAC9C,MAER,IAAIW,EAAc,UAATuI,EAAoBmf,EAAS1nB,EAAKooE,EAAShpE,OAAS,EAAOsoB,EAAS1nB,EAAI0nB,EAAStoB,OAAS,EAAKgpE,EAAShpE,OAAS,EAC1H,OAAO,IAAIw2K,GAAM71K,EAAGC,GASjB,SAASg5E,GAAc3zE,GAC1B,IAAIlI,EAAUwK,SAASyd,eAAe/f,GACtC,OAAOlI,EAAU,gBAAOA,GAAW,KAUhC,SAASyjL,GAAyB3J,EAAWnC,GAChD,IAAI1qI,EAASsqI,GAAkBuC,EAAU4J,sBAAuB5J,EAAU6J,uBAAwB7J,EAAU+E,cAAcC,gBAAgBnH,GAAQA,EAAOmC,GACrJ5sI,EAASqqI,GAAkBuC,EAAU8J,sBAAuB9J,EAAU+J,uBAAwB/J,EAAU+E,cAAcC,gBAAgBnH,GAAQA,EAAOmC,GACrJl3K,GAAKqqC,EAAOrqC,EAAIsqC,EAAOtqC,GAAK,EAC5BC,GAAKoqC,EAAOpqC,EAAIqqC,EAAOrqC,GAAK,EAChC,OAAO,IAAI41K,GAAM71K,EAAGC,GAUjB,SAAS87K,GAAa7E,EAAWnC,EAAOrmI,GAC3C,IACIwyI,EADAC,EAAkBjK,EAAUv9I,aAAaI,WAEzC68I,EAASM,EAAUkK,eACnBC,EAAiBzK,EAAOhC,SACxB0M,EAAkB1K,EAAO/B,UACzB0M,GAAoB,eAAkBrK,EAAUsK,4BAC/C,eAAkBtK,EAAUuK,4BAA8BvK,EAAUwK,eACrE,eAAkBxK,EAAUyK,iBAC5BzK,EAAUyK,cAAgBR,GAE1BjK,EAAUv9I,aAAaioJ,qBAAuB1K,EAAUv9I,aAAalZ,SACrEy2J,EAAUyK,cAAgBT,EAAcC,GAAoBjK,EAAUv9I,aAAaioJ,qBAAuB1K,EAAU3xE,oBAA0C,IAApB2xE,EAAU5gG,MAC9I4gG,EAAU5gG,MAAS,cAAD,CAAmB4gG,EAAU2K,kBAAqB,EAAI3K,EAAU2K,iBACpF3K,EAAUyK,gBAAkBzK,EAAU2K,kBAAqB3K,EAAU3xE,oBACrE2xE,EAAUyK,cAAgBR,EAAkBjK,EAAU2K,kBAErD,eAAkB3K,EAAU4K,uBAA0B,eAAkB5K,EAAU6K,yBACnFV,EAAiBnK,EAAU4K,qBAC3BR,EAAkBpK,EAAU6K,wBAGhCR,IACArK,EAAUyK,cAAgBT,EAAcC,EAAkBjK,EAAU8K,sBAGxE,IAAItsK,EAAO,eAAkBwhK,EAAU+K,mBAA0D,KAArC/K,EAAU+K,kBAAkB,OAEpFtsK,EAAO,eAAkBuhK,EAAU+K,mBAA0D,KAArC/K,EAAU+K,kBAAkB,OACpFloJ,EAAa2U,EAAU,EAAIwoI,EAAUyK,cACrC,eAAkBzK,EAAUgL,0BAC5BhL,EAAUgL,uBAA0B,eAAkBnN,EAAM9C,UAAU,aAC3B8C,EAAM9C,UAAU,cAAct3K,OAAnEo6K,EAAM9C,UAAU,YAAYt3K,QAEtC,IAEIqF,EACAC,EAHA6P,EAAQonK,EAAUiL,WAAajL,EAAU1+I,eAAe7nB,QAAWumK,EAAUiL,UAAYjL,EAAU9B,YACnGgN,EAAYlL,EAAUpvJ,cAG1B,IAAK,eAAkBpS,KAAS,eAAkBC,GAAM,CACpD,IAAI0sK,EAAWl/K,KAAK6a,IAAIrI,EAAI,KAAOD,EAAI,MACnC4sK,EAAYn/K,KAAK6a,IAAItI,EAAI,KAAOC,EAAI,MACpCm/J,EAASpmI,EAAU,EAAmC,IAA/BwoI,EAAU2K,iBAAyB3K,EAAUyK,cAAgBR,EAIxF,GAHAvK,EAASM,EAAUv9I,aAAaioJ,qBACzB1K,EAAUqL,oBAAsBrL,EAAUsL,gBAAkBtL,EAAUuL,sBACzEvL,EAAUkK,gBACP,eAAkBE,IAAwC,IAApBA,IAA4B,eAAkBD,IAAsC,IAAnBA,GAA0BE,EAAkB,CACtJ,IAAImB,IAAkBL,EAAWl/K,KAAK6a,IAAIk5J,EAAU9B,YAAY91K,MAAQ+iL,IAAa,EAAKnL,EAAU9B,YAAYp1K,GAAK80K,EACjH6N,IAAiBL,EAAYn/K,KAAK6a,IAAIk5J,EAAU9B,YAAY/1K,OAASijL,IAAc,EAAKpL,EAAU9B,YAAYn1K,GAAK60K,EACnHxiK,EAAQivK,EAAmBV,GAAyB3J,EAAWnC,GAC/DJ,GAAkB0M,EAAgBC,EAAiBpK,EAAU+E,cAAcC,gBAAgBnH,GAAQA,EAAOmC,GAC1G,eAAkBA,EAAU0L,qBAAuB1L,EAAU0L,qBAAuB1L,EAAUxB,gBAC3FwB,EAAU2L,uBACb7iL,GAAKsS,EAAMtS,EAAI0iL,EACfziL,GAAKqS,EAAMrS,EAAI0iL,EACfzB,EAAcnnJ,IAGsB,IAAhC52B,KAAK6gC,MAAMkzI,EAAU5gG,QAAgB4gG,EAAUv9I,aAAaioJ,qBAAwB1K,EAAwB,gBAC5Gl3K,GAAKsS,EAAMtS,EAAI0iL,EACfziL,GAAKqS,EAAMrS,EAAI0iL,GAGXzL,EAAUv9I,aAAaioJ,qBAAuB1K,EAAUwK,gBACxD1hL,GAAKsS,EAAMtS,EAAI0iL,EACfziL,GAAKqS,EAAMrS,EAAI0iL,EACfzB,EAAcnnJ,IAGd/5B,EAAIk3K,EAAU4L,mBAAmB9iL,EACjCC,EAAIi3K,EAAU4L,mBAAmB7iL,GAGzCihL,EAAchK,EAAUyK,oBAI5B,GAAI,eAAkBzK,EAAU0L,qBAAuB1L,EAAU0L,qBAAuB1L,EAAUxB,eAAgB,CAC5F,IAAd4M,GAAgC,IAAbD,GAAkBC,IAAcD,IACnDA,EAAWvyK,EAAKxQ,MAAQ,EACxBgjL,EAAYxyK,EAAKzQ,QAErB6hL,EAAcpgL,WAAWqC,KAAKuS,IAAI5F,EAAKxQ,MAAQ+iL,EAAUvyK,EAAKzQ,OAASijL,GAAWvkK,QAAQ,IAC1FmjK,EAAcA,EAAc,KAAO,EAAIA,EACvCmB,GAAYnB,EACZoB,GAAapB,EACb,IAAI6B,EAAyB,IAAbrtK,EAAI,MAA0C,WAA5BwhK,EAAU8L,cAA6BZ,EAAU9iL,MAAQwQ,EAAKxQ,MAAQ,EACxGU,EAAI8P,EAAK9P,IAAQ0V,EAAI,MAAW5F,EAAKxQ,MAAQ,EAAM+iL,EAAW,IAAOU,EACrE9iL,EAAI6P,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EAAMijL,EAAY,IAChEpL,EAAU+L,kBAAoB,IAAIpN,GAAM71K,EAAGC,QAG3C,GAAKi3K,EAAUv9I,aAAaioJ,qBAAsD,IAA/B1K,EAAU2K,kBAAsD,IAA5B3K,EAAUyK,cAU7F,GAFAT,EAAchK,EAAUyK,cAAgB,EAAIzK,EAAUyK,cAAgB,EAAIzK,EAAUyK,cACpFzK,EAAUyK,cAAgBzK,EAAUv9I,aAAalZ,QAAsC,IAA5By2J,EAAUyK,cAAsBzK,EAAUyK,cAAgB,EAChHzK,EAAUgL,0BAA6B,eAAkBnN,EAAM9C,UAAU,aACnC8C,EAAM9C,UAAU,cAAct3K,OAAnEo6K,EAAM9C,UAAU,YAAYt3K,SAAkE,aAAfo6K,EAAMvsK,KAAqB,CAC5G,IAAI8tE,EAAQx1E,WAAWqC,KAAKuS,IAAI5F,EAAKzQ,OAASijL,EAAWxyK,EAAKxQ,MAAQ+iL,GAAUtkK,QAAQ,IACxFukK,GAAahsG,EACb+rG,GAAY/rG,EACZr2E,EAAI6P,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EACvCijL,EAAY,IACnBpB,EAAc5qG,EACdt2E,EAAI8P,EAAK9P,IAAQ0V,EAAI,MACb5F,EAAKxQ,MAAQ,EAAM+iL,EAAW,SAErC,GAAInL,EAAUpvJ,cAAczoB,SAAW63K,EAAUgM,qBAAuBhM,EAAUiM,qBAAuBjM,EAAUpvJ,cAAcxoB,MAAO,CACzI,IAAI8jL,EAAetiL,WAAWqC,KAAKuS,IAAI5F,EAAKxQ,MAAQ+iL,EAAUvyK,EAAKzQ,OAASijL,GAAWvkK,QAAQ,IAC3FslK,EAAYhB,EAChBgB,GAAaD,EACb,IAAIE,EAAahB,EACjBgB,GAAcF,EACd,IAAI5jJ,EAAK1vB,EAAK9P,IAAQ0V,EAAI,MAAW5F,EAAKxQ,MAAQ,EAAM+jL,EAAY,IAChE3jJ,EAAK5vB,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EAAMikL,EAAa,IAClEC,GAASrM,EAAUsM,eAAexjL,EAAIk3K,EAAU+L,kBAAkBjjL,GAAMk3K,EAA4B,mBACpGuM,GAASvM,EAAUsM,eAAevjL,EAAIi3K,EAAU+L,kBAAkBhjL,GAAMi3K,EAA6B,oBACrGwM,EAAWH,EAASrM,EAAUpvJ,cAAmB,MACjD67J,EAAWF,EAASvM,EAAUpvJ,cAAoB,OACtD9nB,EAAIw/B,EAAKkkJ,EACTzjL,EAAIy/B,EAAKikJ,EACTzM,EAAU+L,kBAAoB,IAAIpN,GAAMr2I,EAAIE,GAC5Cw3I,EAAU4L,mBAAmB9iL,EAAIA,EACjCk3K,EAAU4L,mBAAmB7iL,EAAIA,OAG5B,eAAkBi3K,EAAU0L,uBAAoD,IAA5B1L,EAAUyK,eAC5DzK,EAAUyK,eAAiB,OAAUzK,EAAUx9I,WAAWkqJ,YAS7D5jL,EAAIk3K,EAAU4L,mBAAmB9iL,EACjCC,EAAIi3K,EAAU4L,mBAAmB7iL,EACjCihL,EAAchK,EAAU5gG,QAVxB4qG,EAAcpgL,WAAWqC,KAAKuS,IAAI5F,EAAKxQ,MAAQ+iL,EAAUvyK,EAAKzQ,OAASijL,GAAWvkK,QAAQ,IAC1FmjK,EAAcA,EAAc,KAAO,EAAIA,EACvCmB,GAAYnB,EACZlhL,EAAI8P,EAAK9P,IAAQ0V,EAAI,MAAW5F,EAAKxQ,MAAQ,EAAM+iL,EAAW,IAC9DC,GAAapB,EACbjhL,EAAI6P,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EAAMijL,EAAY,UA9CxEpB,EAAcpgL,WAAWqC,KAAKuS,IAAI5F,EAAKxQ,MAAQ+iL,EAAUvyK,EAAKzQ,OAASijL,GAAWvkK,QAAQ,IAC1FukK,GAAapB,EACbmB,GAAYnB,EACZjhL,EAAI6P,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EAAMijL,EAAY,IAChEtiL,EAAI8P,EAAK9P,IAAQ0V,EAAI,MAAW5F,EAAKxQ,MAAQ,EAAM+iL,EAAW,IAqDrE,eAAkBnL,EAAUsM,kBAC7BxjL,EAAKk3K,EAAU3xE,mBAAoD,IAA/B2xE,EAAUsM,eAAexjL,IAAYk3K,EAAUwK,eAC/ExK,EAAUsM,eAAexjL,EAAIA,EACjCC,EAAKi3K,EAAU3xE,mBAAoD,IAA/B2xE,EAAUsM,eAAevjL,IAAYi3K,EAAUwK,eAC/ExK,EAAUsM,eAAevjL,EAAIA,GAMzC,OAHAihL,EAAehK,EAA2B,kBAAMA,EAAUyK,eAAiB,EAAKzK,EAAUyK,cAAgB,EAAKT,EAC/GhK,EAAUiM,mBAAqBjM,EAAUpvJ,cAAcxoB,MACvD43K,EAAUgM,oBAAsBhM,EAAUpvJ,cAAczoB,OACjD,CAAEi3E,MAAO4qG,EAAav5J,SAAU,IAAIkuJ,GAAM71K,EAAGC,IAUjD,SAAS4jL,GAAiB3M,EAAWnC,EAAOrmI,GAC/C,IACIwyI,EADAC,EAAkBjK,EAAUv9I,aAAaI,WAEzC68I,EAASM,EAAUkK,eACnBxM,EAAWgC,EAAOhC,SAClBC,EAAY+B,EAAO/B,UACnBiP,GAAmB,eAAkB5M,EAAUuK,6BAC9C,eAAkBvK,EAAUsK,2BAA6BtK,EAAUwK,eACpE,eAAkBxK,EAAU6M,yBAC5B,eAAkB7M,EAAU8M,0BAC5B9M,EAAU6M,uBAAyB7M,EAAUkK,eAAexM,SAC5DsC,EAAU8M,wBAA0B9M,EAAUkK,eAAevM,WAExDqC,EAAU6M,yBACf7M,EAAUkK,eAAexM,UAAYsC,EAAU8M,0BAC/C9M,EAAUkK,eAAevM,WACzBqC,EAAU+M,uBAAwB,EAClC/M,EAAU6M,uBAAyB7M,EAAUkK,eAAexM,SAC5DsC,EAAU8M,wBAA0B9M,EAAUkK,eAAevM,WAG7DqC,EAAU+M,uBAAwB,GAElC,eAAkB/M,EAAUyK,gBAAmBR,EAAkBjK,EAAUyK,iBACvEzK,EAAUgN,SAAuC,IAA5BhN,EAAUyK,cAE/BzK,EAAUyK,cAAgBzK,EAAUyK,eAE9B,eAAkBzK,EAAUyK,gBAAkBzK,EAAUyK,eAAiBzK,EAAU5gG,MACzF4gG,EAAUyK,cAAgBzK,EAAU5gG,MAGpC4gG,EAAUyK,cAAgBR,GAGlCjK,EAAUyK,cAAsD,IAAtCzK,EAAUv9I,aAAaI,YAC7Cm9I,EAAUv9I,aAAaI,aACnBm9I,EAAUyK,eACdzK,EAAUv9I,aAAaI,aAAem9I,EAAUyK,eAAkBzK,EAAU+M,sBAD9C/M,EAAUv9I,aAAaI,WAEjDm9I,EAAUyK,cACdzK,EAAUv9I,aAAaioJ,sBAAwB1K,EAAUiN,mBACzDjN,EAAUyK,cAAgBR,EAAkBD,GAAgBhK,EAAU3xE,mBAC/D2xE,EAAUv9I,aAAaioJ,sBAA4C,IAApB1K,EAAU5gG,MAC1D4gG,EAAU5gG,MAAS,cAAD,CAAmB4gG,EAAU2K,kBAAqB3K,EAAUyK,cAAgBzK,EAAU2K,iBAC9GV,EAAkBjK,EAAUyK,cACvB,eAAkBzK,EAAU4K,uBAA0B,eAAkB5K,EAAU6K,yBACnFnN,EAAWsC,EAAU4K,qBACrBjN,EAAYqC,EAAU6K,wBAG1B+B,IACA5M,EAAUyK,cAAgBT,EAAcC,EAAkBjK,EAAU8K,sBAExE,IAEIhiL,EACAC,EAHA85B,EAAa2U,EAAU,EAAIwoI,EAAUyK,cACrC7xK,EAAOonK,EAAU9B,YAIjB1/J,EAAMwhK,EAAU+K,kBAAkB,OAElCtsK,EAAMuhK,EAAU+K,kBAAkB,OAClCnN,EAASpmI,EAAU,EAAIwoI,EAAUyK,cACjCU,EAAWl/K,KAAK6a,IAAIrI,EAAI,KAAOD,EAAI,MACnC4sK,EAAYn/K,KAAK6a,IAAItI,EAAI,KAAOC,EAAI,MACxC,IAAO,eAAkBk/J,IAA4B,IAAdA,IAAsB,eAAkBD,IAA0B,IAAbA,GAAoBkP,EAAiB,CAC7H,IAAInB,GAAgBL,EAAYn/K,KAAK6a,IAAIk5J,EAAU9B,YAAY/1K,OAASijL,IAAc,EAAKxN,EACvF4N,GAAiBL,EAAWl/K,KAAK6a,IAAIk5J,EAAU9B,YAAY91K,MAAQ+iL,IAAa,EAAKvN,EACrFxiK,EAAQwxK,EAAkBjD,GAAyB3J,EAAWnC,GAC9DJ,GAAkBC,EAAUC,EAAWqC,EAAU+E,cAAcC,gBAAgBnH,GAAQA,EAAOmC,GAC5F,eAAkBA,EAAU4L,qBAAwB,eAAkB5L,EAAU0L,qBACjF1L,EAAUwK,gBAgBX1hL,GAAKsS,EAAMtS,EAAI0iL,EAAexL,EAAU9B,YAAYp1K,EAAI+5B,EACxD95B,GAAKqS,EAAMrS,EAAI0iL,EAAczL,EAAU9B,YAAYn1K,EAAI85B,GAhBnDm9I,EAAU0L,qBAAuB1L,EAAUxB,gBAC3C11K,GAAKsS,EAAMtS,EAAI0iL,EACfziL,GAAKqS,EAAMrS,EAAI0iL,IAGXzL,EAAUiN,mBACVjN,EAAU4L,mBAAmB9iL,GAAKsS,EAAMtS,EAAI0iL,EAC5CxL,EAAU4L,mBAAmB7iL,GAAKqS,EAAMrS,EAAI0iL,GAEhD3iL,EAAIk3K,EAAU4L,mBAAmB9iL,EACjCC,EAAIi3K,EAAU4L,mBAAmB7iL,EACjCkhL,EAAkBpnJ,GAOrB,eAAkBm9I,EAAUsM,kBAC7BvjL,EAAKi3K,EAAU3xE,mBAAoD,IAA/B2xE,EAAUsM,eAAevjL,IAAYi3K,EAAUwK,eAC/ExK,EAAUsM,eAAevjL,EAAIA,EACjCD,EAAKk3K,EAAU3xE,mBAAoD,IAA/B2xE,EAAUsM,eAAexjL,IAAYk3K,EAAUwK,eAC/ExK,EAAUsM,eAAexjL,EAAIA,GAErCkhL,EAAkC,IAApBC,EAAwBA,EAAkB,MAEvD,CACD,IAAIiD,EAAiD,IAAtClN,EAAUv9I,aAAaI,WAAmB,EAAIm9I,EAAUv9I,aAAaI,WAChFsqJ,EAAcnN,EAAUv9I,aAAa2qJ,QACzCF,EAAWA,EAAWC,EAAcA,EAAcD,EAClDlD,EAAckD,EACd,IAAIG,EAAuC,IAA5BrN,EAAUyK,cAAsB,EAAIzK,EAAUyK,cAAgB0C,EACvEA,EAAcnN,EAAUyK,cAC1Be,EAAgB5yK,EAAK9P,IAAQ0V,EAAI,MAAW5F,EAAKxQ,MAAQ,EAAM+iL,EAAW,IAC1EM,EAAe7yK,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EAAMijL,EAAY,IAC/E,IAAK,eAAkBpL,EAAU4L,sBAAwB,eAAkB5L,EAAU0L,oBACjF,GAAI1L,EAAU0L,qBAAuB1L,EAAUxB,eAAgB,CAE3D,IAAI8O,EAAoB,GAEpBjgK,EAAiB,CAAEvkB,EAAG0iL,EAAcziL,EAAG0iL,GAC3C6B,EAAkBn+K,KAAKke,GACvB,IAAK,IAAIvpB,EAAI,EAAGA,EAAIqpL,EAAarpL,IAAK,CAClC,IAAIypL,EAAkBD,EAAkBxpL,EAAI,GAAG,MAAU8U,EAAKxQ,MAAQ,EAAQwQ,EAAKxQ,OAAStE,EAAI,IAAO,EACnG0pL,EAAkBF,EAAkBxpL,EAAI,GAAG,MAAU8U,EAAKzQ,OAAS,EAAQyQ,EAAKzQ,QAAUrE,EAAI,IAAO,EACzGupB,EAAiB,CAAEvkB,EAAGykL,EAAiBxkL,EAAGykL,GAC1CF,EAAkBn+K,KAAKke,GAE3Bm+J,EAAe8B,EAAkBJ,EAAW,GAAG,KAC/CzB,EAAc6B,EAAkBJ,EAAW,GAAG,UAG9C1B,EAAexL,EAAU4L,mBAAmB9iL,EAC5C2iL,EAAczL,EAAU4L,mBAAmB7iL,EACvCmkL,IAAaG,IACbrD,EAAcqD,GAIrB,eAAkBrN,EAAUsM,kBAC7BxjL,EAAKk3K,EAAU3xE,mBAAoD,IAA/B2xE,EAAUsM,eAAexjL,IAAYk3K,EAAUwK,eAC/ExK,EAAUsM,eAAexjL,EAAI0iL,EACjCziL,EAAKi3K,EAAU3xE,mBAAoD,IAA/B2xE,EAAUsM,eAAevjL,IAAYi3K,EAAUwK,eAC/ExK,EAAUsM,eAAevjL,EAAI0iL,GAMzC,OAHAzB,EAAehK,EAA2B,kBAAiC,IAA5BA,EAAUyK,cAAsB,EAAIzK,EAAUyK,cAAiBT,EAC9GhK,EAAUiM,mBAAqBjM,EAAUpvJ,cAAcxoB,MACvD43K,EAAUgM,oBAAsBhM,EAAUpvJ,cAAczoB,OACjD,CAAEi3E,MAAO5nC,EAAU,EAAIwyI,EAAav5J,SAAU,IAAIkuJ,GAAM71K,EAAGC,IAS/D,SAAS0kL,GAAuB9jL,GACnCA,EAAI+jL,cAAgB/jL,EAAI87K,cAAgBx5K,KAAK6gC,MAAMnjC,EAAIinB,cAAczoB,OAAS,KAAO,EACrF,IAAI8nB,EAAuD,oBAA7CtmB,EAAI28K,OAAO38K,EAAIk+K,gBAAgBC,UACzC,GAAK,EACL7H,EAA6C,IAAjCh0K,KAAK8jC,IAAI,EAAGpmC,EAAI87K,eAChC97K,EAAI81K,mBAAmB32K,EAAKa,EAAIinB,cAAcxoB,MAAQ,EAAM63K,EAAY,EACxEt2K,EAAI81K,mBAAmB12K,EAAKY,EAAIinB,cAAczoB,OAAS,EAAM83K,EAAY,EAAKhwJ,EAC9EtmB,EAAIgkL,kBAAoBhkL,EAAIinB,cAAcxoB,MAC1CuB,EAAIikL,mBAAqBjkL,EAAIinB,cAAczoB,OASxC,SAAS09K,GAAez3K,GAC3B,OAAOsC,SAASyd,eAAe/f,GA0B5B,SAASy/K,GAAYnR,EAAM58J,GAG9B,OAFA48J,EAAK0F,eACD1F,EAAK3/J,KAAKgX,gBAAgB,CAAET,OAAQopJ,EAAKppJ,OAAQU,YAAa0oJ,EAAKzoJ,uBAChEyoJ,EAAK0F,eAAetiK,GAWxB,SAAS8nK,GAAoBn4J,EAAUitJ,GAE1C,IAAIr9G,EAAa,KACjB,IAC4B,oBAAb5vC,GAA2B/e,SAASk/C,iBAAiBngC,GAAUhsB,OACtE47D,EAAa,eAAiB3uD,SAAS1B,cAAcygB,GAAU7hB,UAAUyB,SAGpEqtK,EAAK/mJ,OAAS+mJ,EAAK9oF,QAGC,oBAAbnkE,KAFZ4vC,EAAa,eAAiB5vC,IAMtC,MAAOxf,GACHovD,EAAa,eAAiB5vC,GAElC,OAAO4vC,EASJ,SAASzxC,GAAWxf,GACvB,OAAOsC,SAASyd,eAAe/f,GAW5B,SAAS0/K,GAAaplI,EAAU/+C,GACnC,IAMIyW,EANAujK,EAAalvK,SAASi0C,EAAS3hD,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACvEgnL,EAAat5K,SAASi0C,EAAS3hD,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACvE82K,EAAQl0K,EAAIqkL,iBAAiBrK,GAE7B5I,EAAY8C,EAAMwL,UAAU0E,GAAY,YAO5C,OAJIlQ,EAAM37J,aAEN9B,EAAOy9J,EAAM37J,WAAWymK,GAAqB9K,EAAM37J,WAAY64J,EAAW8C,EAAM5C,cAAe4C,EAAM7C,kBAAmB6C,KAErH,CAAE9C,UAAWA,EAAW36J,KAAMA,GAYlC,SAAS6tK,GAAkBvlI,EAAUi4C,EAAW+7E,EAAMjhF,GAEzD,IAAI7sE,EAAQk/J,GAAaplI,EAAUg0H,GAC/Bx0J,EAAS,CACTzP,MAAOkoF,EAAUz4E,OAAOzP,MAAO69B,QAASqqD,EAAUz4E,OAAOouB,QACzDluC,MAAOu4F,EAAUz4E,OAAO9f,OAExBisD,EAAassC,EAA2B,kBAAI,CAC5CpvF,QAAQ,EACRuB,KAAM2oF,EACNv4E,KAAMy9E,EAAUz9E,KAChBozB,QAASqqD,EAAUrqD,QACnBpuB,OAAQA,EACR6yJ,UAAWnsJ,EAAMmsJ,UACjB36J,KAAMwO,EAAMxO,KACZhd,OAAQslD,EACRg0H,KAAMA,EACNwR,oBAAqBxR,EAAKyR,oBAC1B,CACA58K,QAAQ,EACRuB,KAAM2oF,EACNv4E,KAAMy9E,EAAUz9E,KAChBozB,QAASqqD,EAAUrqD,QACnBpuB,OAAQA,EACR6yJ,UAAWnsJ,EAAMmsJ,UACjB36J,KAAMwO,EAAMxO,KACZhd,OAAQslD,EACRg0H,KAAMA,GAKV,OAHAA,EAAK3xK,QAAQ0wF,EAAWpnC,GAAW,WAC/BA,EAAUnsC,OAAOouB,QAAU,eAAkB+d,EAAUnsC,OAAOouB,SAAW+d,EAAU/d,QAAU+d,EAAUnsC,OAAOouB,WAE3G+d,EASJ,SAASvd,GAAuBxvC,GACnC,OAAOoJ,SAASomC,uBAAuBxvC,GAgBpC,SAAS0H,GAAcmoB,EAAMi3J,GAChC,IAAIC,EAAY,KAIhB,OAHI39K,SAASyd,eAAeigK,KACxBC,EAAY39K,SAASyd,eAAeigK,GAAiBp/K,cAAc,IAAMmoB,IAEtEk3J,EAmCJ,SAASC,GAAYlgL,EAAI9G,EAAW+sD,GACvC,IAAIk6H,EAAW,eAAc,QAAS,CAClCngL,GAAIA,IAOR,OALAmgL,EAASjhI,UAAY,IAAMhmD,EAAY,SACjC+sD,EAAU,QADK,iBAC8BA,EAAU,WAAY3/C,WADpD,mBAEI2/C,EAAU,UAAU,WAAY3/C,WAFpC,iBAGE2/C,EAAU,UAAU,SAAU3/C,WAHhC,WAIL2/C,EAAU,UAAU,SAJf,KAKdk6H,EAYJ,SAASC,GAAepgL,EAAI9G,EAAW+sD,GAC1C,IAAIk6H,EAAW3gK,GAAWxf,GACrB,eAAkBmgL,KACnBA,EAASjhI,UAAY,IAAMhmD,EAAY,SACjC+sD,EAAU,QADK,iBAC8BA,EAAU,WAAY3/C,WADpD,iBAEE2/C,EAAU,UAAU,SAAU3/C,WAFhC,mBAGI2/C,EAAU,UAAU,WAAY3/C,WAHpC,WAIL2/C,EAAU,UAAU,SAAW,KAchD,SAASo6H,GAA0BroF,EAAmBz8F,EAAKoL,EAElEgmK,EAAW36J,GACP,IAAI8H,EAAS,CACTzP,MAAO2tF,EAAkBl+E,OAAOzP,MAChCrQ,MAAOg+F,EAAkBl+E,OAAO9f,MAAQuB,EAAIy1E,MAC5C9oC,QAAS8vD,EAAkBl+E,OAAOouB,SAElC+d,EAAY,CACZ/d,QAAS8vD,EAAkB9vD,QAC3BpzB,KAAMkjF,EAAkBljF,KACxBgF,OAAQA,EACRpV,KAAMspK,GACNh5K,OAAQ2R,EAAc3G,GACtBmD,QAAQ,EACRwpK,UAAWA,EACX36J,KAAMA,EACNs8J,KAAM/yK,GAEVA,EAAIoB,QAAQ,gBAAiBspD,GAAW,SAAU1hD,GAC9C0hD,EAAUnsC,OAAOouB,QAAU,eAAkB8vD,EAAkBl+E,OAAOouB,SAAW8vD,EAAkB9vD,QAC/F8vD,EAAkBl+E,OAAOouB,QAC7B3sC,EAAIwkL,mBAAmBh/K,KAAKklD,EAAU0mH,WACjCntJ,GAAW,qBAIZ4gK,GAAe,oBAAqB,yBAA0Bn6H,GAH9D3jD,SAAS6B,KAAK/K,YAAY8mL,GAAY,oBAAqB,yBAA0Bj6H,OAc1F,SAASq6H,GAAYxoL,GACxBA,EAAQwH,gBAAgB,SAerB,SAASg6K,GAAexhL,EAASH,EAAOD,EAAUsV,EAAOshK,EAAMt6I,EAAK5Z,QACxD,IAAXA,IAAqBA,EAAS,GAClC,IAAI4uB,EAAUh8B,EAAMtS,EAChBuuC,EAAUj8B,EAAMrS,EAChBZ,EAAS,EACT0gB,EAAY3iB,EAAQsH,aAAa,cAAgB,GACrD,IAAI,OAAU,IAAIgqC,QAAQtxC,EAAS,CAC/BJ,SAAwB,IAAbA,GAAoC,WAAlB,OAA8B,IAAOA,EAClEC,MAAOA,EACP0xC,SAAU,SAAUtgB,GAChB,GAAIA,EAAKugB,UAAYvgB,EAAKpxB,MAAO,CAC7B,GAAI22K,EAAKoI,WAAwB,IAAX38K,EAAc,CAChC,IAAI89K,EAAoBv1K,SAAS1B,cAAc,iBAC1C,eAAkBi3K,KACnBA,EAAkBp8K,MAAMC,QAAU,SAG1C3B,GAAWgvB,EAAKugB,UAAYvgB,EAAKpxB,OAASoxB,EAAKrxB,SAC/CI,EAAQuH,aAAa,YAAa,eAAiB2pC,EAAW5uB,EAASrgB,GAAW,KAAOkvC,EAAW7uB,EAASrgB,GACzG,YAAcA,EAAS,OAGnC8X,IAAK,SAAU2oE,GAEX,GADA1iF,EAAQuH,aAAa,YAAaob,GAC7BuZ,EAAL,CAGA,IAAI5wB,EAAQ,CACRD,QAAQ,EAAOuB,KAAMq9I,GAAmBjqJ,QAASk8B,EAAKs6I,KAAMA,GAEhEA,EAAK3xK,QAAQolJ,GAAmB3+I,OASrC,SAASm9K,GAAQvgL,GACpB2zE,GAAc3zE,GAeX,SAAS2C,GAAYuO,EAAM1G,EAAM9P,EAAGC,EAAG6lL,EAAWC,EAAYzgL,EAAIlI,EAASumB,GAC9E,IAAIgE,EAAWqsJ,GAAiBh0K,EAAGC,EAAG7C,GACjC,eAAkBuqB,KACnB3nB,EAAI2nB,EAAS3nB,EACbC,EAAI0nB,EAAS1nB,GASjB,IAPA,IAAIoK,EAAUzC,SAASyd,eAAe/f,GAClChG,EAAQm4E,GAAYjhE,EAAM,CAC1BvG,WAAY,WAAYH,KAAM,MAC9BC,UAAW,SAAUC,WAAY,YAClC1Q,MACCmrC,EAAMj0B,EAAKvY,MAAM,KACjB+nL,EAAOv7I,EAAI,GAAG9vC,OACTK,EAAI,EAAGA,EAAIyvC,EAAI9vC,OAAQK,IACxBgrL,EAAOv7I,EAAIzvC,GAAGL,SACdqrL,EAAQv7I,EAAIzvC,GAAIL,QAGnB0P,IACDA,EAAU,eAAc,MAAO,CAC3B/E,GAAIA,IAER+E,EAAQtJ,MAAMwsC,QAAU,yMAIxBvtC,EAAK8lL,EAAYxmL,EAEjBU,EAAIA,EAECA,EAAK8lL,EAAYxmL,GAAUU,EAAI8lL,EAAoB,EAAPE,EACjD1mL,EAASwmL,EAAY9lL,EAEhBA,GAAK8lL,EAAmB,EAAPE,IAClBhmL,EAAIV,EACJU,GAAQV,GAGRA,EAAQU,EACRA,EAAI,IAGZ,IAAIimL,EAAQn2K,EAAK7R,MAAM,MACvBioL,GAAS77K,EAASmM,EAAMxW,EAAGC,EAAGgmL,EAAO3mL,EAAOwmL,EAAW1oL,GACvD,IAAIiC,EAASgL,EAAQ/G,aAChBjE,EAAkC,EAAzBsM,SAASs6K,EAAM,GAAI,IAAWF,IACxCzmL,EAAQU,EACRA,EAAI,GAERkmL,GAAS77K,EAASmM,EAAMxW,EAAGC,EAAGgmL,EAAO3mL,EAAOwmL,EAAW1oL,GACnDumB,GACAvc,WAAWy+K,GAAS,IAAMvgL,GAe3B,SAAS4gL,GAAS77K,EAASmM,EAAMxW,EAAGC,EAAGgmL,EAAO3mL,EAAOwmL,EAAW1oL,GACnEiN,EAAQm6C,UAAYhuC,EACpBnM,EAAQtJ,MAAMhC,KAAyC,IAAnCsL,EAAQ/E,GAAGtH,QAAQ,YAClC2N,SAASs6K,EAAM,GAAI,IAAMhmL,GAAG2L,WAAa,MAAiC,EAAzBD,SAASs6K,EAAM,GAAI,KAASr6K,WAAa,KAC/FvB,EAAQtJ,MAAM/B,KAAO,EAAI4M,WAAa,KACtCvB,EAAQtJ,MAAMzB,MAAQA,EAAMsM,WAAa,KACzCvB,EAAQtJ,MAAM6I,SAAW,EAAYgC,WAAa,KAClDvB,EAAQtJ,MAAMmlL,SAAW,aACzB9oL,EAAQsB,YAAY2L,GAuCjB,SAASud,GAActiB,EAAIkR,EAAMzX,EAAKC,EAAMogH,GAC/C,IAAI/0G,EAAUya,GAAWxf,GACrB2nC,EAAck5I,GAAY/mE,EAASnyE,aACnCm5I,EAAYD,GAAY/mE,EAASgnE,WACjCrlL,EAAQ,OAAShC,EAAI6M,WAAb,WACE5M,EAAK4M,WADP,aAEIw6K,EAAY,QAAUA,EAAUxrL,EAAI,IAAMwrL,EAAUj5I,EAAI,IAAMi5I,EAAU5sL,EAAI,IAAM4lH,EAASinE,YAAc,IACnHjnE,EAASgnE,WAHH,eAIQhnE,EAAShlG,KAJjB,wCAMsBglG,EAASl4F,YAAc,aACpD+lB,EAAc,QAAUA,EAAYryC,EAAI,IAAMqyC,EAAYE,EAAI,IAAMF,EAAYzzC,EAAI,IAAM4lH,EAAS66D,cAAgB,IAC9G76D,EAASnyE,aAAe,gBAAkBmyE,EAASnvG,WACzD,eAAiBmvG,EAASrvG,UAAY,gBAAkBqvG,EAASpvG,WACjE,cAAgBovG,EAASvpC,SAAW,kBAAoBupC,EAASl4F,YAAc,OAC9E7c,GAAW+0G,EAASzuG,SACrBtG,EAAU,eAAc,MAAO,CAC3B/E,GAAIA,IAER+E,EAAQvF,UAAY,OAAmBI,SAAS,SAAWsR,EAAO,UAClEnM,EAAQtJ,MAAMwsC,QAAUxsC,EACxB6G,SAAS6B,KAAK/K,YAAY2L,IAErB+0G,EAASzuG,UACdtG,EAAQvF,UAAY,OAAmBI,SAAS,SAAWsR,EAAO,UAClEnM,EAAQtJ,MAAMwsC,QAAUxsC,GAMzB,SAASolL,GAAYx2K,GACxB,IAA4B,IAAxBA,EAAM3R,QAAQ,OAAuD,IAAxC2R,EAAM4M,cAAcve,QAAQ,OAAe,CACxE,IAAIsoL,EAAa,4CAA8CC,KAAK52K,GACpE,OAAO22K,EAAa,CAAE1rL,EAAG+Q,SAAS26K,EAAW,GAAI,IAAKn5I,EAAGxhC,SAAS26K,EAAW,GAAI,IAAK9sL,EAAGmS,SAAS26K,EAAW,GAAI,KAAQ,KAExH,IAA4C,IAAxC32K,EAAM4M,cAAcve,QAAQ,OAAe,CAC5CsoL,EAAa32K,EAAM/O,MAAM,QAAQC,KAAI,SAAUyX,GAAK,OAAO3M,SAAS2M,EAAG,OAC3E,OAAOguK,EAAa,CAAE1rL,EAAG0rL,EAAW,GAAIn5I,EAAGm5I,EAAW,GAAI9sL,EAAG8sL,EAAW,IAAO,KAG/E,IAAIE,EAAY5+K,SAASrJ,cAAc,OACvCioL,EAAUzlL,MAAM4O,MAAQA,EAEpB22K,EAAa/lL,OAAOC,iBAAiBoH,SAAS6B,KAAK/K,YAAY8nL,IAAY72K,MAAM/O,MAAM,QAAQC,KAAI,SAAUyX,GAAK,OAAO3M,SAAS2M,EAAG,OAEzI,OADA1Q,SAAS6B,KAAKs9C,YAAYy/H,GACnBF,EAAa,CAAE1rL,EAAG0rL,EAAW,GAAIn5I,EAAGm5I,EAAW,GAAI9sL,EAAG8sL,EAAW,IAAO,KAYhF,SAASptG,GAAWvxD,EAAU7B,EAAOhW,EAAMgmB,EAAK34B,GACnD,IAAImiB,EAAW,IAAI,OAAY,IAC3B65D,EAAOstG,GAAkB9+J,EAAU7X,EAAMgW,EAAO3oB,EAAS24B,GACzDgK,EAAaxgB,EAAS,OAAS65D,EAAKE,cAAcF,EAAKG,cAC3D,OAAOx5C,EAWJ,SAAS2mJ,GAAkB9+J,EAAU7X,EAAMgW,EAAO3oB,EAAS24B,GAC9D,IAAI4wJ,EACArtG,EAAe,OACfzQ,EAAa94D,EAAKxQ,MAClBgpE,EAAcx4D,EAAKzQ,OACnBsnL,EAASh/J,EAAS3nB,EAClB4mL,EAASj/J,EAAS1nB,EAClBD,EAAI2nB,EAAS3nB,GAAM4oE,EAAa,EAChC3oE,EAAI0nB,EAAS1nB,GAAMqoE,EAAc,EAGrC,OAFAnrE,EAAQ,UAAuB,mBAAV2oB,GAAwC,iBAAVA,GAAsC,UAAVA,EAAqB3oB,EAAQ,QAAUA,EAAQ,UAC9HA,EAAQ,gBAA+C,IAA5BA,EAAQ,iBAAoC,mBAAV2oB,GAAwC,iBAAVA,GAAsC,UAAVA,EAA0B3oB,EAAQ,gBAAZ,EACrI2oB,GACJ,IAAK,SACL,IAAK,SACDuzD,EAAe,UACf,gBAAMl8E,EAAS,CAAE,GAAMyrE,EAAa,EAAG,GAAMN,EAAc,EAAG,GAAMq+G,EAAQ,GAAMC,IAClF,MACJ,IAAK,eACDF,EAAa,KAAYC,EAAS,KAAOC,EAAUt+G,EAAc,GAApD,MAA4Eq+G,EAAS,KAC3FC,GAAWt+G,EAAc,GAChC,gBAAMnrE,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,iBACDA,EAAa,KAAYC,EAAS,IAAMC,EAA3B,OAAuDD,EAAU/9G,EAAa,GAAM,IAC3Fg+G,EACN,gBAAMzpL,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,UACDA,EAAa,KAAY1mL,EAAI,IAAM4mL,EAAtB,MACGD,EAAS,KAAOC,GAAWt+G,EAAc,GAD5C,OAEIq+G,EAAU/9G,EAAa,GAAM,IAAMg+G,EAFvC,MAGGD,EAAS,KAAOC,EAAUt+G,EAAc,GAH3C,MAIGtoE,EAAI,IAAM4mL,EAAS,KACnC,gBAAMzpL,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,YACDA,EAAa,KAAY1mL,EAAI,KAAO4mL,GAAWt+G,EAAc,GAAhD,OACIq+G,EAAU/9G,EAAa,GAAM,KAAOg+G,GAAWt+G,EAAc,GADjE,OAEIq+G,EAAU/9G,EAAa,GAAM,KAAOg+G,EAAUt+G,EAAc,GAFhE,MAGGtoE,EAAI,KAAO4mL,EAAUt+G,EAAc,GAHtC,MAIGtoE,EAAI,KAAO4mL,GAAWt+G,EAAc,GAAM,KAC1D,gBAAMnrE,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,WACDA,EAAa,KAAY1mL,EAAI,KAAO4mL,EAAUt+G,EAAc,GAA/C,MACGq+G,EAAS,KAAOC,GAAWt+G,EAAc,GAD5C,OAEIq+G,EAAU/9G,EAAa,GAAM,KAAOg+G,EAAUt+G,EAAc,GAFhE,MAGGtoE,EAAI,KAAO4mL,EAAUt+G,EAAc,GAAM,KACzD,gBAAMnrE,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,mBACDA,EAAa,MAAaC,EAAU/9G,EAAa,GAAM,KAAOg+G,EAAUt+G,EAAc,GAAzE,MACGq+G,EAAS,KAAOC,EAAUt+G,EAAc,GAD3C,OAEIq+G,EAAU/9G,EAAa,GAAM,KAAOg+G,EAAUt+G,EAAc,GAFhE,OAGIq+G,EAAU/9G,EAAa,GAAM,KAAOg+G,EAAUt+G,EAAc,GAAM,KACnF,gBAAMnrE,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,WAKD,IAHA,IAAIjtG,EAAK,GACLhlE,OAAS,EACTgB,OAAS,EACJza,EAAI,EAAGA,GAAK,EAAGA,IACpByZ,EAAUm0D,EAAa,EAAKzlE,KAAK0gC,IAAK1gC,KAAK2gC,GAAK,KAAQ9oC,EAAIy+E,IAC5DhkE,EAAUmzD,EAAa,EAAKzlE,KAAKu2E,IAAKv2E,KAAK2gC,GAAK,KAAQ9oC,EAAIy+E,IAExDitG,EADM,IAAN1rL,EACa,MAAa2rL,EAASlyK,GAAU,KAAOmyK,EAASnxK,GAAU,IAG1DixK,EAAWl/J,OAAO,MAAam/J,EAASlyK,GAAU,KAAOmyK,EAASnxK,GAAU,KAGjGixK,EAAaA,EAAWl/J,OAAO,KAC/B,gBAAMrqB,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,OACDA,EAAa,MAAQ/+J,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GACxH,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GACjH,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,MAAQsoB,EAAS3nB,EAAI,KACrG2nB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,OAASsoB,EAAS3nB,EAAI8P,EAAKxQ,MAAQ,GAAK,KAAOqoB,EAAS1nB,EAAI6P,EAAKzQ,OAAS,GAAK,KACpH,gBAAMlC,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,QACDA,EAAa,KAAY1mL,EAAI,IAAM4mL,EAAtB,OAAkDD,EAAU/9G,EAAa,GAAM,IAAMg+G,EAArF,MACGD,EAAS,KAAOC,EAAUt+G,EAAc,GAD3C,MACmEq+G,EAAS,KACpFC,GAAWt+G,EAAc,GAC9B,gBAAMnrE,EAAS,CAAE,EAAKupL,IACtB,MACJ,IAAK,QACDrtG,EAAe,QACf,gBAAMl8E,EAAS,CAAE,KAAQ24B,EAAK,OAAUwyC,EAAa,MAASM,EAAY5oE,EAAGA,EAAGC,EAAGA,IACnF,MAER,MAAO,CAAEq5E,aAAcn8E,EAASk8E,aAAcA,GA+B3C,SAASwtG,GAAiB7N,EAActpI,GAC3CA,EAAchxC,YAAYs6K,GAC1B,IAAI15K,EAAQ05K,EAAax1K,YACrBnE,EAAS25K,EAAav1K,aAE1B,OADAisC,EAAcqX,YAAYiyH,GACnB,IAAIjhG,GAAKz4E,EAAOD,GAUpB,SAASynL,GAAkB1pL,EAASqJ,EAAO6vE,EAAOs9F,GAErD,IADA,IAAImT,EACKhzE,EAAI,EAAGA,EAAI32G,EAAQ45C,kBAAmB+8D,IAE3C,GADAgzE,EAAY3pL,EAAQ6nB,WAAW8uF,GAC3BgzE,EAAUzhL,GAAGtH,QAAQ,qBAAuB,EAC5CgpL,GAA2BD,EAAWtgL,EAAO6vE,EAAOs9F,QAEnD,GAAImT,EAAUzhL,GAAGtH,QAAQ,oBAAsB,EAChD,IAAK,IAAIhD,EAAI,EAAGA,EAAI+rL,EAAU/vI,kBAAmBh8C,IAAK,CAElD,IAAIsE,EAAQs0K,EAAKsR,iBAAiBz+K,GAAOwgL,gBAAgBC,SAASv7K,SAASo7K,EAAU9mI,SAASjlD,GAAGsK,GAAGrH,MAAM,kBAAkB,KAAKipB,YACjI6/J,EAAU9mI,SAASjlD,GAAG2J,aAAa,gBAAiBrF,EAAQg3E,GAAO1qE,gBAGtE,CACD,IAAIu7K,OAAgB,EAChBnwK,EAAQ,EAERowK,EAAmBxT,EAAKsR,iBAAiBz+K,GAAO2rK,cAAciV,qBAC9DngK,EAAc0sJ,EAAKsR,iBAAiBz+K,GAAO2rK,cAAchzJ,OAAO9f,MAChEgoL,EAAe1T,EAAKsR,iBAAiBz+K,GAAO2rK,cAAckV,aAC1D1T,EAAKsR,iBAAiBz+K,GAAO2rK,cAAciV,sBAC3CrwK,EAAQ6oK,GAERjM,EAAKsR,iBAAiBz+K,GAAO2S,WAAYw6J,EAAKsR,iBAAiBz+K,GAAO85K,UAAUxsE,GAAG,YAAa6/D,EAAKsR,iBAAiBz+K,GAAO0rK,cAAeyB,EAAKsR,iBAAiBz+K,GAAOyrK,kBAAmB0B,EAAKsR,iBAAiBz+K,IAG1M0gL,EAFM,OAAVnwK,GACI48J,EAAKsR,iBAAiBz+K,GAAO2S,WAAWpC,GAAOowK,GAC/BxT,EAAKsR,iBAAiBz+K,GAAO2S,WAAWpC,GAAOowK,GAOlD,eAAkBlgK,GAAe,EAAIA,GAI1DigK,EAAiB,eAAkBjgK,GAAe,EAAIA,EAE1D6/J,EAAUpiL,aAAa,gBAAiBwiL,EAAgB7wG,GAAO1qE,aAC3DxO,EAAQkI,GAAGtH,QAAQ,WAAa,GAAKZ,EAAQkI,GAAGtH,QAAQ,gBAAkB,IAC1E+oL,EAAUpiL,aAAa,KAAM2iL,EAAehxG,GAAO1qE,aAa5D,SAASo7K,GAA2B5pL,EAASqJ,EAAO6vE,EAAOs9F,GAE9D,IADA,IAAI32G,EACK48C,EAAI,EAAGA,EAAIz8G,EAAQ45C,kBAAmB6iE,IAE3C,GADA58C,EAAO7/D,EAAQ6nB,WAAW40F,GACL,SAAjB58C,EAAKvzD,QAAoB,CACzB,IAAIy9K,EAAiBvT,EAAKsR,iBAAiBz+K,GACtC8gL,uBAAuBzmL,WAAWm8D,EAAK33D,GAAGrH,MAAM,qBAAqB,GAAGA,MAAM,KAAK,KAAU,MAClGg/D,EAAKt4D,aAAa,gBAAiBwiL,EAAgB7wG,GAAO1qE,aAS/D,SAAS47K,GAAc9+K,GAG1B,IAFA,IAAI8+K,EAAgB,GAChBr6K,EAAUzE,EAAMyE,QACXnS,EAAI,EAAGA,EAAImS,EAAQxS,OAAQK,IAChCwsL,EAAcnhL,KAAK,CAAE+G,MAAOD,EAAQnS,GAAGoS,MAAOC,MAAOF,EAAQnS,GAAGqS,QAEpE,OAAOm6K,EAQJ,SAASC,GAAeC,EAAcC,GACzC,IAAIC,EAAgBC,GAAYH,EAAa,GAAIA,EAAa,IAC1DI,EAAcD,GAAYF,EAAW,GAAIA,EAAW,IACxD,OAAQG,EAAcF,EAOnB,SAASC,GAAYvvK,EAAG9e,GAC3B,IAAIwG,EAAIsY,EAAElL,MAAQ5T,EAAE4T,MAChBnN,EAAIqY,EAAEjL,MAAQ7T,EAAE6T,MACpB,OAAOlK,KAAKqmC,KAAKxpC,EAAIA,EAAIC,EAAIA,GAS1B,SAAS8nL,GAAW56K,EAASymK,GAChC,IAAIprJ,EAAOorJ,EAAKx2K,QAAQgE,wBACpB4mL,EAASx/J,EAAKzpB,IAAM6I,SAASw1D,YAAYvyD,YACzCo9K,EAAUz/J,EAAKxpB,KAAO4I,SAASw1D,YAAYpyD,YAC/C,OAAOpR,MAAMM,UAAUwN,MAAMpK,KAAK6P,GAAStM,KAAI,SAAUqnL,GACrD,MAAO,CACHloL,EAAGkoL,EAAM96K,MAAQ66K,EACjBhoL,EAAGioL,EAAM76K,MAAQ26K,MAUtB,SAASG,GAAeh7K,GAC3B,MAAO,CAEHnN,EAAGmN,EAAQtM,KAAI,SAAUsG,GAAK,OAAOA,EAAE,QAASwzC,OAAO,IAAOxtC,EAAQxS,OAEtEsF,EAAGkN,EAAQtM,KAAI,SAAUsG,GAAK,OAAOA,EAAE,QAASwzC,OAAO,IAAOxtC,EAAQxS,QASvE,SAAS,GAAI2d,EAAG9e,GACnB,OAAO8e,EAAI9e,EAeR,SAAS4uL,GAAYhrL,EAASH,EAAOD,EAAUsV,EAAOgkE,EAAOxmE,EAAM8jK,GACtE,IAAI3uI,EAAQ,EACRkK,EAAmBykI,EAAK1nI,cACxBm8I,EAAWzU,EAAK0U,cAChBC,EAAYjyG,EAAQ+xG,EACpBG,EAAkB,IAAIlU,GAAY,EAAG,GACrCmU,EAAe,EACnB,GAAInyG,IAAU+xG,EAAd,CAKA,IAAIK,EAAQ,SAAUv5I,EAAkB78B,GACpC,OAAI68B,EAAiBnvC,IAAMsS,EAAMtS,EACtB,MAEHsS,EAAMrS,EAAIkvC,EAAiBlvC,IAAMqS,EAAMtS,EAAImvC,EAAiBnvC,IAGpE2oL,EAAY,SAAUr2K,EAAOs2K,GAC7B,OAAmB,OAAfA,EACOt2K,EAAMtS,EAEVsS,EAAMrS,EAAI2oL,EAAat2K,EAAMtS,GAEpC6oL,EAAcH,EAAMv5I,EAAkB78B,GACtCw2K,EAAoBH,EAAUx5I,EAAkB05I,GAChDE,EAAuBz2K,EAAMtS,EAAImvC,EAAiBnvC,EAClDgpL,EAAqB12K,EAAMrS,EAAIkvC,EAAiBlvC,EACpD,GAAQ7C,EAASH,EAAOD,GAAU,SAAUqxB,GACpCA,EAAKugB,UAAYvgB,EAAKpxB,QACtBgoC,GAAU5W,EAAKugB,UAAYvgB,EAAKpxB,OAASoxB,EAAKrxB,SAC9CyrL,EAAeJ,EAAYpjJ,EAAQsjJ,EACnCC,EAAgBxoL,EAAImvC,EAAiBnvC,EAAKilC,EAAQ8jJ,GAAyBN,EAAenyG,GAEtFkyG,EAAgBvoL,EADD,MAAf4oL,EACoB15I,EAAiBlvC,EAAKglC,EAAQ+jJ,EAG5BH,EAAcL,EAAgBxoL,EAAK8oL,EAE7Dz6J,EAAKjxB,QAAQuH,aAAa,YAAa,UAAY8jL,EAAZ,iBACnBD,EAAgBxoL,EAAI,IAAMwoL,EAAgBvoL,EAAI,MAClE2zK,EAAK4P,eAAiBgF,EACtB5U,EAAKt9F,MAAQmyG,EACb7U,EAAKl6I,WAAWuvJ,gBAAgB32K,EAAMtS,EAAGsS,EAAMrS,EAAGwoL,EAAc7U,OAErE,WACCA,EAAK4P,eAAiBlxK,EACtBshK,EAAKt9F,MAAQA,EACbl5E,EAAQuH,aAAa,YAAa,UAAY,EAAU,iBAAmB2N,EAAMtS,EAAI,IAAMsS,EAAMrS,EAAI,MACrG2zK,EAAKl6I,WAAWuvJ,gBAAgB32K,EAAMtS,EAAGsS,EAAMrS,EAAGq2E,EAAOs9F,WA1CzDx2K,EAAQuH,aAAa,YAAa,UAAY,EAAU,iBAAmB2N,EAAMtS,EAAI,IAAMsS,EAAMrS,EAAI,MAyDtG,SAAS,GAAQ7C,EAASH,EAAOD,EAAUksL,EAAS/xK,GACvD,IAGIgyK,EAHA9rL,EAAQrD,KACRkd,EAAQ,KAGRkyK,EAAc,qBAClBpsL,EAA6B,YAAlB,OAA8B,EAAIA,EAC7C,IAAIqsL,EAAiB,SAAUC,GACtBpyK,IACDA,EAAQoyK,GAEZ,IAAI36I,EAAW26I,EAAYpyK,EAC3B,GAAIy3B,EAAW3xC,EACXksL,EAAQ5rL,KAAKD,EAAO,CAAED,QAASA,EAASH,MAAO,EAAG2xC,UAAWD,EAAU3xC,SAAUA,IACjFuD,OAAOgpL,sBAAsBF,QAK7B,GAFA9oL,OAAOipL,qBAAqBL,GAC5BhyK,EAAI7Z,KAAKD,EAAO,CAAED,QAASA,IACvBA,EAAQkI,GAAGtH,QAAQ,WAAa,EAAG,CACnC,IAAIovC,EAAgB2vI,GAAe3/K,EAAQkI,GAAGrH,MAAM,UAAU,GAAK,kBACnEmvC,EAAcrsC,MAAMwsC,QAAU67I,IAI1CD,EAAiB5oL,OAAOgpL,sBAAsBF,GAKlD,ICzvGWI,GAoDAC,GAoDAC,GAwGAC,GAuDAC,GDk/FPC,GAAyB,WAEzB,SAASA,EAAQ3sL,EAASqL,EAAMuhL,EAAOC,EAAaC,GAChDjwL,KAAKkwL,YAAc/sL,EACnBnD,KAAKwO,KAAOA,GAAQ,MACpBxO,KAAK+vL,MAAQA,IAAS,EACtB/vL,KAAKgwL,YAAcA,EACnBhwL,KAAKiwL,SAAWA,EAEpB,OAAOH,EATiB,GAsBrB,SAASK,GAAgB/sL,EAASH,EAAOD,EAAUsV,GACtD,IAAI2yB,EAAQ,EACRllB,EAAY3iB,EAAQsH,aAAa,aAAazG,MAAM,KAC/B,IAArB8hB,EAAUplB,SACVolB,EAAU,GAAKA,EAAU,GAAG9hB,MAAM,KAAK,GACvC8hB,EAAU,GAAKA,EAAU,GAAG9hB,MAAM,KAAK,IAE3C,IAAIkxC,EAAmB,IAAImlI,GAAY3oK,SAASoU,EAAU,GAAI,IAAKpU,SAASoU,EAAU,GAAI,KACtFqqK,EAAQ93K,EAAMtS,EAAImvC,EAAiBnvC,EACnCqqL,EAAQ/3K,EAAMrS,EAAIkvC,EAAiBlvC,EACnCuoL,EAAkB,IAAIlU,GAAY,EAAG,GACzC,GAAQl3K,EAASH,EAAOD,GAAU,SAAUqxB,GACpCA,EAAKugB,UAAYvgB,EAAKpxB,QACtBgoC,GAAU5W,EAAKugB,UAAYvgB,EAAKpxB,OAASoxB,EAAKrxB,SAC9CwrL,EAAgBxoL,EAAImvC,EAAiBnvC,EAAKilC,EAAQmlJ,EAClD5B,EAAgBvoL,EAAIkvC,EAAiBlvC,EAAKglC,EAAQolJ,EAClDh8J,EAAKjxB,QAAQuH,aAAa,YAAa,cAAgB6jL,EAAgBxoL,EAAI,IAAMwoL,EAAgBvoL,EAAI,UAE1G,WACC7C,EAAQuH,aAAa,YAAa,cAAgB2N,EAAMtS,EAAI,IAAMsS,EAAMrS,EAAI,SAW7E,SAASqqL,GAAkBpJ,EAAatN,GAC3C,IAAI36J,EAAW,eAAkB26J,EAAK2W,0BAClC,KAAO3W,EAAK2W,yBACZ92E,EAAU,eAAkBmgE,EAAK4W,yBACjC,KAAO5W,EAAK4W,wBACX,eAAkB/2E,IAIb,eAAkBx6F,IACrB,eAAkBw6F,IAClBmgE,EAAK2W,2BAA6BrJ,EACrCtN,EAAK4W,wBAA0BtJ,EAG/BtN,EAAK2W,yBAA2BrJ,GAThCtN,EAAK4W,wBAA0B,KAC/B5W,EAAK2W,yBAA2B,MAwBjC,SAASE,GAAmBC,EAAQC,EAAQC,EAASC,EAASxI,EAAUC,EAAW1O,EAAMkX,GAC5F,IAAI5J,EAEA6J,EADA1G,EAAczQ,EAAKj6I,aAAa2qJ,QAEhC0G,EAAY7nL,KAAKu2E,IAAIixG,EAASxnL,KAAK2gC,GAAK,KACxCmnJ,EAAY9nL,KAAKwsB,KAAK,EAAIq7J,IAAc,EAAIA,IAAc,EAC1DE,EAAc/nL,KAAKwS,IAAIxS,KAAKuS,IAAIu1K,EAAW9nL,KAAK2gC,KAAM3gC,KAAK2gC,IAAM,EACjEqnJ,EAAYhoL,KAAKu2E,IAAIgxG,EAASvnL,KAAK2gC,GAAK,KACxCsnJ,EAAYjoL,KAAKwsB,KAAK,EAAIw7J,IAAc,EAAIA,IAAc,EAC1DE,EAAcloL,KAAKwS,IAAIxS,KAAKuS,IAAI01K,EAAWjoL,KAAK2gC,KAAM3gC,KAAK2gC,IAAM,EACrE,GAAI8vI,EAAK8N,iBAAmB9N,EAAKoI,UAAW,CACxC,IAAIsP,EAAYnoL,KAAK6a,KAAK41J,EAAK0B,cAAcV,SAASj/J,IAAMi+J,EAAK0B,cAAcV,SAASl/J,MAAQi1K,EAASD,IACrGa,EAAapoL,KAAK6a,KAAK41J,EAAK0B,cAAcT,UAAUl/J,IAAMi+J,EAAK0B,cAAcT,UAAUn/J,MAAQm1K,EAAUD,IAC7GG,EAAmBD,GAAuBQ,EAAYC,GAAc,EAAIpoL,KAAKuS,IAAI41K,EAAWC,GAEhG,IAAIC,GAAYN,EAAcG,GAAeloL,KAAK2gC,GAC9C2nJ,EAAUZ,EAAUD,EACpBc,GAAaD,EAAU,EAAMA,EAAU,IAAOA,GAAW,IACzDE,EAAkB,IAClBC,EAAiB,IACjBC,EAAW1oL,KAAKwsB,IAAI2yJ,EAAYqJ,EAAkBH,GAAYroL,KAAK2oL,IACnEC,EAAW5oL,KAAKwsB,IAAI0yJ,EAAWuJ,EAAiBF,GAAYvoL,KAAK2oL,IACjEhyK,EAAU85J,EAAK8N,iBAAmB9N,EAAKoI,UAAa+O,EACpDD,IAAwBlX,EAAKoI,WAAa6P,EAAUE,GAAW,EAAI5oL,KAAKuS,IAAIm2K,EAASE,GAMzF,OALA7K,EAAc/9K,KAAKuS,IAAIoE,EAAQuqK,GAC/BnD,EAActN,EAAKoI,YAAcpI,EAAK8N,eAAiBv+K,KAAK6gC,MAAMk9I,GAAeA,EAC5EtN,EAAKoI,WACNsO,GAAkBpJ,EAAatN,GAE5BsN,EAUJ,SAAS8K,GAAc7kL,GAE1B,IAAIujB,EAEAuhK,EAAe,eAAkB9kL,EAAE,WAA2BA,EAAE,UAAhBA,EAAE,UAStD,OARI,eAAkB8kL,EAAYtxL,QACzB,eAAkBsxL,EAAY,YAC/BvhK,EAAYuhK,EAAY,UAI5BvhK,EAAYuhK,EAETvhK,EC9tGJ,SAASwhK,GAAch5I,GAC1B,IAAIi5I,EACJ,OAAQj5I,EAAM32B,eACV,IAAK,WACD4vK,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,eACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,aACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,iBACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,SACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,aACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,YACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,IAAK,gBACDA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MACJ,QACIA,EAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UACxD,UAAW,UAAW,UAAW,UAAW,WAChD,MAER,OAAOA,EA+GJ,SAASC,GAAcl5I,GAC1B,IAAInyC,EACA4O,EACJ,OAAQujC,EAAM32B,eACV,IAAK,eACD5M,EAAQ,UACR,MACJ,IAAK,aACDA,EAAQ,UACR,MACJ,IAAK,gBACDA,EAAQ,UACR,MAER,OAAQujC,EAAM32B,eACV,IAAK,eACL,IAAK,aACL,IAAK,gBACDxb,EAAQ,CACJi4I,gBAAiBrpI,EACjB08K,oBAAqB18K,EACrB28K,eAAgB,UAChBC,cAAe,OACfC,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACfC,gBAAiB,2BACjB98K,WAAY,2BACZ4lE,SAAU,OACV7lE,WAAY,SACZg9K,gBAAiB,SACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,eACDtsL,EAAQ,CACJi4I,gBAAiB,UACjBqzC,oBAAqB,UACrBC,eAAgB,UAChBC,cAAe,OACfC,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,2BACZ4lE,SAAU,OACV7lE,WAAY,SACZ+8K,gBAAiB,2BACjBC,gBAAiB,SACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,aACDtsL,EAAQ,CACJi4I,gBAAiB,UACjBqzC,oBAAqB,UACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,uBACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,GACpBT,gBAAiB,uBACjBC,gBAAiB,SACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,WACDtsL,EAAQ,CACJi4I,gBAAiB,yBACjBqzC,oBAAqB,yBACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,QACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,GACpBT,gBAAiB,QACjBC,gBAAiB,MACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,eACDtsL,EAAQ,CACJi4I,gBAAiB,yBACjBqzC,oBAAqB,yBACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,QACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,GACpBT,gBAAiB,QACjBC,gBAAiB,MACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,aACDtsL,EAAQ,CACJi4I,gBAAiB,yBACjBqzC,oBAAqB,yBACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,iBACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,EACpBT,gBAAiB,iBACjBC,gBAAiB,SACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,iBACDtsL,EAAQ,CACJi4I,gBAAiB,yBACjBqzC,oBAAqB,yBACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,iBACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,EACpBT,gBAAiB,iBACjBC,gBAAiB,SACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,SACDtsL,EAAQ,CACJi4I,gBAAiB,yBACjBqzC,oBAAqB,yBACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,WACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,EACpBT,gBAAiB,WACjBC,gBAAiB,MACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,aACDtsL,EAAQ,CACJi4I,gBAAiB,yBACjBqzC,oBAAqB,yBACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,WACZ4lE,SAAU,OACV7lE,WAAY,SACZu8K,cAAe,OACfe,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,EACpBT,gBAAiB,WACjBC,gBAAiB,MACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MACJ,IAAK,YACDtsL,EAAQ,CACJi4I,gBAAiB,cACjBqzC,oBAAqB,cACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,SACZ4lE,SAAU,OACV02G,cAAe,OACfkB,iBAAkB,OAClBH,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,EACpBT,gBAAiB,SACjBC,gBAAiB,MACjBh9K,WAAY,MACZi9K,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,IAC1BC,yBAA0B,WAE9B,MACJ,IAAK,gBACDtsL,EAAQ,CACJi4I,gBAAiB,cACjBqzC,oBAAqB,cACrBC,eAAgB,UAChBE,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACf78K,WAAY,SACZ4lE,SAAU,OACV02G,cAAe,OACfkB,iBAAkB,OAClBH,eAAgB,OAChBC,mBAAoB,EACpBC,mBAAoB,EACpBT,gBAAiB,SACjBC,gBAAiB,MACjBh9K,WAAY,MACZi9K,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,IAC1BC,yBAA0B,WAE9B,MACJ,QACItsL,EAAQ,CACJi4I,gBAAiB,UACjBqzC,oBAAqB,UACrBC,eAAgB,UAChBC,cAAe,OACfC,kBAAmB,UACnBC,qBAAsB,UACtBC,gBAAiB,UACjBC,mBAAoB,UACpBC,iBAAkB,UAClBC,iBAAkB,UAClBC,cAAe,UACfC,gBAAiB,2BACjB98K,WAAY,2BACZ4lE,SAAU,OACV7lE,WAAY,SACZg9K,gBAAiB,SACjBC,mBAAoB,UACpBC,UAAW,UACXC,uBAAwB,UACxBC,yBAA0B,GAC1BC,yBAA0B,WAE9B,MAER,OAAOtsL,GAnpBX,SAAW0oL,GAEPA,EAAMiE,cAAgB,CAClB59K,KAAM,OACNE,WAAY,KACZL,MAAO,UACPI,UAAW,SACXE,WAAY,4BAGhBw5K,EAAMkE,iBAAmB,CACrB79K,KAAM,OACNE,WAAY,KACZL,MAAO,UACPI,UAAW,SACXE,WAAY,4BAGhBw5K,EAAMt/J,iBAAmB,CACrBra,KAAM,OACNE,WAAY,UACZL,MAAO,KACPI,UAAW,UACXE,WAAY,MAGhBw5K,EAAMx9G,gBAAkB,CACpBn8D,KAAM,OACNE,WAAY,SACZL,MAAO,KACPI,UAAW,SACXE,WAAY,MAGhBw5K,EAAMn2H,gBAAkB,CACpBxjD,KAAM,OACNE,WAAY,SACZL,MAAO,KACPI,UAAW,SACXE,WAAY,4BAGhBw5K,EAAMmE,cAAgB,CAClB99K,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,6BA/CpB,CAiDGw5K,KAAUA,GAAQ,KAGrB,SAAWC,GAEPA,EAAYgE,cAAgB,CACxB59K,KAAM,OACNE,WAAY,WACZL,MAAO,UACPI,UAAW,WACXE,WAAY,yDAGhBy5K,EAAYiE,iBAAmB,CAC3B79K,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,yDAGhBy5K,EAAYv/J,iBAAmB,CAC3Bra,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,UAGhBy5K,EAAYz9G,gBAAkB,CAC1Bn8D,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,yDAGhBy5K,EAAYp2H,gBAAkB,CAC1BxjD,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,yDAGhBy5K,EAAYkE,cAAgB,CACxB99K,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,yDA/CpB,CAiDGy5K,KAAgBA,GAAc,KAGjC,SAAWC,GAEPA,EAAe+D,cAAgB,CAC3B59K,KAAM,OACNE,WAAY,WACZL,MAAO,UACPI,UAAW,WACXE,WAAY,gDAGhB05K,EAAegE,iBAAmB,CAC9B79K,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,gDAGhB05K,EAAex/J,iBAAmB,CAC9Bra,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,UAGhB05K,EAAe19G,gBAAkB,CAC7Bn8D,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,gDAGhB05K,EAAer2H,gBAAkB,CAC7BxjD,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,gDAGhB05K,EAAeiE,cAAgB,CAC3B99K,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,gDA/CpB,CAiDG05K,KAAmBA,GAAiB,KAuDvC,SAAWC,GAEPA,EAAkB8D,cAAgB,CAC9B59K,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,4BAGhB25K,EAAkB+D,iBAAmB,CACjC79K,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,4BAGhB25K,EAAkBz/J,iBAAmB,CACjCra,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,UAGhB25K,EAAkB39G,gBAAkB,CAChCn8D,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,4BAGhB25K,EAAkBt2H,gBAAkB,CAChCxjD,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,4BAGhB25K,EAAkBgE,cAAgB,CAC9B99K,KAAM,OACNE,WAAY,SACZL,MAAO,UACPI,UAAW,SACXE,WAAY,4BA/CpB,CAiDG25K,KAAsBA,GAAoB,KAM7C,SAAWC,GAEPA,EAAU6D,cAAgB,CACtBz9K,WAAY,2BACZD,WAAY,SACZF,KAAM,OACNC,UAAW,SACXJ,MAAO,WAGXk6K,EAAU8D,iBAAmB,CACzB79K,KAAM,OACNH,MAAO,UACPK,WAAY,SACZC,WAAY,2BACZF,UAAW,UAGf85K,EAAU1/J,iBAAmB,CACzBra,KAAM,OACNH,MAAO,UACPK,WAAY,UACZC,WAAY,SACZF,UAAW,WAGf85K,EAAU59G,gBAAkB,CACxBn8D,KAAM,OACNE,WAAY,UACZL,MAAO,UACPI,UAAW,UACXE,WAAY,4BAGhB45K,EAAUv2H,gBAAkB,CACxBxjD,KAAM,OACNG,WAAY,2BACZD,WAAY,SACZL,MAAO,UACPI,UAAW,UAvCnB,CAyCG85K,KAAcA,GAAY,KCrT7B,IAAI,GAAwC,WACxC,IAAIvwL,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxCK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAY5D,GAA4B,SAAUiC,GAEtC,SAASgxL,IACL,OAAkB,OAAXhxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAoB/D,OAtBA,GAAU6zL,EAAYhxL,GAItBzC,GAAW,CACP,eAAS,KACVyzL,EAAW3zL,UAAW,eAAW,GACpCE,GAAW,CACP,eAAS,QACVyzL,EAAW3zL,UAAW,SAAK,GAC9BE,GAAW,CACP,eAAS,QACVyzL,EAAW3zL,UAAW,SAAK,GAC9BE,GAAW,CACP,eAAS,SACVyzL,EAAW3zL,UAAW,yBAAqB,GAC9CE,GAAW,CACP,eAAS,SACVyzL,EAAW3zL,UAAW,2BAAuB,GAChDE,GAAW,CACP,eAAS,OACVyzL,EAAW3zL,UAAW,cAAU,GAC5B2zL,EAvBoB,CAwB7B,QAKE,GAAuB,SAAUhxL,GAEjC,SAASixL,IACL,OAAkB,OAAXjxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAiB/D,OAnBA,GAAU8zL,EAAOjxL,GAIjBzC,GAAW,CACP,eAAS,UACV0zL,EAAM5zL,UAAW,gBAAY,GAChCE,GAAW,CACP,eAAS,UACV0zL,EAAM5zL,UAAW,iBAAa,GACjCE,GAAW,CACP,eAAS,IACV0zL,EAAM5zL,UAAW,YAAQ,GAC5BE,GAAW,CACP,eAAS,UACV0zL,EAAM5zL,UAAW,aAAS,GAC7BE,GAAW,CACP,eAAS,IACV0zL,EAAM5zL,UAAW,cAAU,GACvB4zL,EApBe,CAqBxB,QAKE,GAAsB,SAAUjxL,GAEhC,SAASkxL,IACL,OAAkB,OAAXlxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAoB/D,OAtBA,GAAU+zL,EAAMlxL,GAIhBzC,GAAW,CACP,eAAS,SACV2zL,EAAK7zL,UAAW,YAAQ,GAC3BE,GAAW,CACP,eAAS,OACV2zL,EAAK7zL,UAAW,aAAS,GAC5BE,GAAW,CACP,eAAS,6BACV2zL,EAAK7zL,UAAW,kBAAc,GACjCE,GAAW,CACP,eAAS,WACV2zL,EAAK7zL,UAAW,kBAAc,GACjCE,GAAW,CACP,eAAS,WACV2zL,EAAK7zL,UAAW,iBAAa,GAChCE,GAAW,CACP,eAAS,IACV2zL,EAAK7zL,UAAW,eAAW,GACvB6zL,EAvBc,CAwBvB,QAKE,GAA2C,SAAUlxL,GAErD,SAASmxL,IACL,OAAkB,OAAXnxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAmC/D,OArCA,GAAUg0L,EAA2BnxL,GAIrCzC,GAAW,CACP,eAAS,gBACV4zL,EAA0B9zL,UAAW,YAAQ,GAChDE,GAAW,CACP,eAAS,OACV4zL,EAA0B9zL,UAAW,aAAS,GACjDE,GAAW,CACP,eAAS,IACV4zL,EAA0B9zL,UAAW,qBAAiB,GACzDE,GAAW,CACP,eAAS,IACV4zL,EAA0B9zL,UAAW,mBAAe,GACvDE,GAAW,CACP,eAAS,OACV4zL,EAA0B9zL,UAAW,mBAAe,GACvDE,GAAW,CACP,eAAS,KACV4zL,EAA0B9zL,UAAW,cAAU,GAClDE,GAAW,CACP,eAAS,OACV4zL,EAA0B9zL,UAAW,sBAAkB,GAC1DE,GAAW,CACP,eAAS,OACV4zL,EAA0B9zL,UAAW,sBAAkB,GAC1DE,GAAW,CACP,eAAS,IACV4zL,EAA0B9zL,UAAW,eAAW,GACnDE,GAAW,CACP,eAAS,IACV4zL,EAA0B9zL,UAAW,eAAW,GACnDE,GAAW,CACP,eAAS,CAAC,SAAU,UAAW,WAChC4zL,EAA0B9zL,UAAW,oBAAgB,GACjD8zL,EAtCmC,CAuC5C,QAKE,GAA4C,SAAUnxL,GAEtD,SAASoxL,IACL,OAAkB,OAAXpxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAmC/D,OArCA,GAAUi0L,EAA4BpxL,GAItCzC,GAAW,CACP,gBAAS,IACV6zL,EAA2B/zL,UAAW,eAAW,GACpDE,GAAW,CACP,eAAS,UACV6zL,EAA2B/zL,UAAW,YAAQ,GACjDE,GAAW,CACP,eAAS,IACV6zL,EAA2B/zL,UAAW,qBAAiB,GAC1DE,GAAW,CACP,eAAS,IACV6zL,EAA2B/zL,UAAW,mBAAe,GACxDE,GAAW,CACP,eAAS,YACV6zL,EAA2B/zL,UAAW,mBAAe,GACxDE,GAAW,CACP,eAAS,UACV6zL,EAA2B/zL,UAAW,iBAAa,GACtDE,GAAW,CACP,eAAS,KACV6zL,EAA2B/zL,UAAW,kBAAc,GACvDE,GAAW,CACP,eAAS,KACV6zL,EAA2B/zL,UAAW,iBAAa,GACtDE,GAAW,CACP,eAAS,KACV6zL,EAA2B/zL,UAAW,kBAAc,GACvDE,GAAW,CACP,eAAS,KACV6zL,EAA2B/zL,UAAW,gBAAY,GACrDE,GAAW,CACP,eAAS,IACV6zL,EAA2B/zL,UAAW,mBAAe,GACjD+zL,EAtCoC,CAuC7C,QAKE,GAAqC,SAAUpxL,GAE/C,SAASqxL,IACL,OAAkB,OAAXrxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA6B/D,OA/BA,GAAUk0L,EAAqBrxL,GAI/BzC,GAAW,CACP,eAAS,gBACV8zL,EAAoBh0L,UAAW,uBAAmB,GACrDE,GAAW,CACP,eAAS,IACV8zL,EAAoBh0L,UAAW,qBAAiB,GACnDE,GAAW,CACP,eAAS,IACV8zL,EAAoBh0L,UAAW,mBAAe,GACjDE,GAAW,CACP,eAAS,gBACV8zL,EAAoBh0L,UAAW,mBAAe,GACjDE,GAAW,CACP,eAAS,QACV8zL,EAAoBh0L,UAAW,2BAAuB,GACzDE,GAAW,CACP,eAAS,SACV8zL,EAAoBh0L,UAAW,yBAAqB,GACvDE,GAAW,CACP,eAAS,eACV8zL,EAAoBh0L,UAAW,mBAAe,GACjDE,GAAW,CACP,eAAQ,GAAI,KACb8zL,EAAoBh0L,UAAW,sBAAkB,GACpDE,GAAW,CACP,eAAQ,GAAI,KACb8zL,EAAoBh0L,UAAW,uBAAmB,GAC9Cg0L,EAhC6B,CAiCtC,QAKE,GAAwB,SAAUrxL,GAElC,SAASsxL,IACL,OAAkB,OAAXtxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAUm0L,EAAQtxL,GAIlBzC,GAAW,CACP,eAAS,KACV+zL,EAAOj0L,UAAW,aAAS,GAC9BE,GAAW,CACP,eAAS,IACV+zL,EAAOj0L,UAAW,aAAS,GAC9BE,GAAW,CACP,eAAS,OACV+zL,EAAOj0L,UAAW,eAAW,GACzBi0L,EAdgB,CAezB,QAKE,GAAgC,SAAUtxL,GAE1C,SAASuxL,IACL,OAAkB,OAAXvxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAUo0L,EAAgBvxL,GAI1BzC,GAAW,CACP,eAAS,OACVg0L,EAAel0L,UAAW,gBAAY,GACzCE,GAAW,CACP,eAAS,OACVg0L,EAAel0L,UAAW,iBAAa,GACnCk0L,EAXwB,CAYjC,QAKE,GAAiC,SAAUvxL,GAE3C,SAASwxL,IACL,OAAkB,OAAXxxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAuB/D,OAzBA,GAAUq0L,EAAiBxxL,GAI3BzC,GAAW,CACP,gBAAS,IACVi0L,EAAgBn0L,UAAW,eAAW,GACzCE,GAAW,CACP,eAAS,KACVi0L,EAAgBn0L,UAAW,gBAAY,GAC1CE,GAAW,CACP,eAAS,KACVi0L,EAAgBn0L,UAAW,YAAQ,GACtCE,GAAW,CACP,eAAQ,CAAEuV,MAAO,cAAerQ,MAAO,GAAK,KAC7C+uL,EAAgBn0L,UAAW,cAAU,GACxCE,GAAW,CACP,eAAQ,CAAE6V,WAAY,KAAMH,KAAM,KAAME,WAAY,MAAQ,KAC7Dq+K,EAAgBn0L,UAAW,iBAAa,GAC3CE,GAAW,CACP,eAAS,OACVi0L,EAAgBn0L,UAAW,cAAU,GACxCE,GAAW,CACP,eAAS,OACVi0L,EAAgBn0L,UAAW,iBAAa,GACpCm0L,EA1ByB,CA2BlC,QAKE,GAAwB,SAAUxxL,GAElC,SAASyxL,IACL,OAAkB,OAAXzxL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAc/D,OAhBA,GAAUs0L,EAAQzxL,GAIlBzC,GAAW,CACP,eAAS,KACVk0L,EAAOp0L,UAAW,YAAQ,GAC7BE,GAAW,CACP,eAAS,KACVk0L,EAAOp0L,UAAW,aAAS,GAC9BE,GAAW,CACP,eAAS,KACVk0L,EAAOp0L,UAAW,WAAO,GAC5BE,GAAW,CACP,eAAS,KACVk0L,EAAOp0L,UAAW,cAAU,GACxBo0L,EAjBgB,CAkBzB,QAKE,GAAuC,SAAUzxL,GAEjD,SAAS0xL,IACL,OAAkB,OAAX1xL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAUu0L,EAAuB1xL,GAIjCzC,GAAW,CACP,eAAS,YACVm0L,EAAsBr0L,UAAW,aAAS,GAC7CE,GAAW,CACP,eAAS,IACVm0L,EAAsBr0L,UAAW,aAAS,GAC7CE,GAAW,CACP,eAAS,IACVm0L,EAAsBr0L,UAAW,eAAW,GACxCq0L,EAd+B,CAexC,QAKE,GAAuC,SAAU1xL,GAEjD,SAAS2xL,IACL,OAAkB,OAAX3xL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA4C/D,OA9CA,GAAUw0L,EAAuB3xL,GAIjCzC,GAAW,CACP,gBAAS,IACVo0L,EAAsBt0L,UAAW,uBAAmB,GACvDE,GAAW,CACP,gBAAS,IACVo0L,EAAsBt0L,UAAW,2BAAuB,GAC3DE,GAAW,CACP,eAAQ,CAAEuV,MAAO,cAAerQ,MAAO,GAAK,KAC7CkvL,EAAsBt0L,UAAW,cAAU,GAC9CE,GAAW,CACP,eAAS,YACVo0L,EAAsBt0L,UAAW,YAAQ,GAC5CE,GAAW,CACP,eAAS,IACVo0L,EAAsBt0L,UAAW,eAAW,GAC/CE,GAAW,CACP,eAAS,cACVo0L,EAAsBt0L,UAAW,aAAS,GAC7CE,GAAW,CACP,eAAS,KACVo0L,EAAsBt0L,UAAW,aAAS,GAC7CE,GAAW,CACP,eAAS,KACVo0L,EAAsBt0L,UAAW,cAAU,GAC9CE,GAAW,CACP,eAAS,IAAIy7K,GAAM,EAAG,KACvB2Y,EAAsBt0L,UAAW,cAAU,GAC9CE,GAAW,CACP,eAAS,KACVo0L,EAAsBt0L,UAAW,gBAAY,GAChDE,GAAW,CACP,eAAS,KACVo0L,EAAsBt0L,UAAW,iBAAa,GACjDE,GAAW,CACP,eAAQ,GAAI,KACbo0L,EAAsBt0L,UAAW,kBAAc,GAClDE,GAAW,CACP,gBAAS,IACVo0L,EAAsBt0L,UAAW,0BAAsB,GAC1DE,GAAW,CACP,eAAQ,GAAI,KACbo0L,EAAsBt0L,UAAW,6BAAyB,GACtDs0L,EA/C+B,CAgDxC,QAgBE,IAXmC,SAAU3xL,GAE7C,SAAS4xL,IACL,OAAkB,OAAX5xL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAF/D,GAAUy0L,EAAmB5xL,GADK,CAMpC,QAKwC,SAAUA,GAEhD,SAAS6xL,IACL,OAAkB,OAAX7xL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA0B/D,OA5BA,GAAU00L,EAAsB7xL,GAIhCzC,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,YAAQ,GAC3CE,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,UAAM,GACzCE,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,aAAS,GAC5CE,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,aAAS,GAC5CE,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,kBAAc,GACjDE,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,kBAAc,GACjDE,GAAW,CACP,eAAS,OACVs0L,EAAqBx0L,UAAW,aAAS,GAC5CE,GAAW,CACP,gBAAS,IACVs0L,EAAqBx0L,UAAW,kBAAc,GAC1Cw0L,EA7B8B,CA8BvC,SAME,GAAgD,SAAU7xL,GAE1D,SAAS8xL,IACL,OAAkB,OAAX9xL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAU20L,EAAgC9xL,GAI1CzC,GAAW,CACP,eAAS,OACVu0L,EAA+Bz0L,UAAW,gBAAY,GACzDE,GAAW,CACP,eAAS,OACVu0L,EAA+Bz0L,UAAW,iBAAa,GACnDy0L,EAXwC,CAYjD,QAME,GAA+C,SAAU9xL,GAEzD,SAAS+xL,IACL,OAAkB,OAAX/xL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAU40L,EAA+B/xL,GAIzCzC,GAAW,CACP,eAAS,OACVw0L,EAA8B10L,UAAW,iBAAa,GACzDE,GAAW,CACP,eAAS,OACVw0L,EAA8B10L,UAAW,kBAAc,GACnD00L,EAXuC,CAYhD,QAKE,GAAmC,SAAU/xL,GAE7C,SAASq+G,IACL,OAAkB,OAAXr+G,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAiB/D,OAnBA,GAAUkhH,EAAmBr+G,GAI7BzC,GAAW,CACP,gBAAS,IACV8gH,EAAkBhhH,UAAW,cAAU,GAC1CE,GAAW,CACP,eAAS,OACV8gH,EAAkBhhH,UAAW,YAAQ,GACxCE,GAAW,CACP,eAAS,IACV8gH,EAAkBhhH,UAAW,eAAW,GAC3CE,GAAW,CACP,gBAAS,IACV8gH,EAAkBhhH,UAAW,yBAAqB,GACrDE,GAAW,CACP,eAAQ,CAAEuV,MAAO,cAAerQ,MAAO,GAAK,KAC7C47G,EAAkBhhH,UAAW,cAAU,GACnCghH,EApB2B,CAqBpC,QAKE,GAAmC,SAAUr+G,GAE7C,SAASgyL,IACL,OAAkB,OAAXhyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAc/D,OAhBA,GAAU60L,EAAmBhyL,GAI7BzC,GAAW,CACP,eAAS,OACVy0L,EAAkB30L,UAAW,YAAQ,GACxCE,GAAW,CACP,gBAAS,IACVy0L,EAAkB30L,UAAW,cAAU,GAC1CE,GAAW,CACP,eAAS,IACVy0L,EAAkB30L,UAAW,eAAW,GAC3CE,GAAW,CACP,eAAQ,CAAEuV,MAAO,cAAerQ,MAAO,GAAK,KAC7CuvL,EAAkB30L,UAAW,cAAU,GACnC20L,EAjB2B,CAkBpC,QAKE,GAAgC,SAAUhyL,GAE1C,SAASiyL,IACL,OAAkB,OAAXjyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAoB/D,OAtBA,GAAU80L,EAAgBjyL,GAI1BzC,GAAW,CACP,eAAS,IACV00L,EAAe50L,UAAW,mBAAe,GAC5CE,GAAW,CACP,eAAS,IACV00L,EAAe50L,UAAW,qBAAiB,GAC9CE,GAAW,CACP,eAAS,IACV00L,EAAe50L,UAAW,eAAW,GACxCE,GAAW,CACP,eAAS,YACV00L,EAAe50L,UAAW,mBAAe,GAC5CE,GAAW,CACP,eAAS,YACV00L,EAAe50L,UAAW,YAAQ,GACrCE,GAAW,CACP,eAAS,KACV00L,EAAe50L,UAAW,cAAU,GAChC40L,EAvBwB,CAwBjC,QAME,GAAiC,SAAUjyL,GAE3C,SAASkyL,IACL,OAAkB,OAAXlyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAU+0L,EAAiBlyL,GAI3BzC,GAAW,CACP,eAAW,GAAI,KAChB20L,EAAgB70L,UAAW,gBAAY,GAC1CE,GAAW,CACP,eAAQ,GAAI,KACb20L,EAAgB70L,UAAW,yBAAqB,GACnDE,GAAW,CACP,eAAQ,GAAI,KACb20L,EAAgB70L,UAAW,yBAAqB,GAC5C60L,EAdyB,CAelC,QAKE,GAAwC,SAAUlyL,GAElD,SAASmyL,IACL,OAAkB,OAAXnyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAgC/D,OAlCA,GAAUg1L,EAAwBnyL,GAIlCzC,GAAW,CACP,gBAAS,IACV40L,EAAuB90L,UAAW,eAAW,GAChDE,GAAW,CACP,eAAS,IACV40L,EAAuB90L,UAAW,aAAS,GAC9CE,GAAW,CACP,eAAS,OACV40L,EAAuB90L,UAAW,iBAAa,GAClDE,GAAW,CACP,eAAS,OACV40L,EAAuB90L,UAAW,gBAAY,GACjDE,GAAW,CACP,eAAS,KACV40L,EAAuB90L,UAAW,iBAAa,GAClDE,GAAW,CACP,eAAS,UACV40L,EAAuB90L,UAAW,aAAS,GAC9CE,GAAW,CACP,eAAS,IACV40L,EAAuB90L,UAAW,aAAS,GAC9CE,GAAW,CACP,eAAQ,CAAEo0E,WAAW,EAAOzwE,SAAU,QAAS+R,KAAM,EAAGH,MAAO,SAAW,KAC3Eq/K,EAAuB90L,UAAW,qBAAiB,GACtDE,GAAW,CACP,eAAQ,GAAI,KACb40L,EAAuB90L,UAAW,yBAAqB,GAC1DE,GAAW,CACP,eAAQ,GAAI,KACb40L,EAAuB90L,UAAW,yBAAqB,GACnD80L,EAnCgC,CAoCzC,QAKE,GAAgC,SAAUnyL,GAE1C,SAASoyL,IACL,OAAkB,OAAXpyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAqD/D,OAvDA,GAAUi1L,EAAgBpyL,GAI1BzC,GAAW,CACP,eAAQ,GAAI,KACb60L,EAAe/0L,UAAW,cAAU,GACvCE,GAAW,CACP,gBAAS,IACV60L,EAAe/0L,UAAW,eAAW,GACxCE,GAAW,CACP,eAAS,KACV60L,EAAe/0L,UAAW,kBAAc,GAC3CE,GAAW,CACP,kBACD60L,EAAe/0L,UAAW,aAAS,GACtCE,GAAW,CACP,eAAS,MACV60L,EAAe/0L,UAAW,yBAAqB,GAClDE,GAAW,CACP,eAAS,IACV60L,EAAe/0L,UAAW,sBAAkB,GAC/CE,GAAW,CACP,eAAS,KACV60L,EAAe/0L,UAAW,YAAQ,GACrCE,GAAW,CACP,eAAS,KACV60L,EAAe/0L,UAAW,iBAAa,GAC1CE,GAAW,CACP,eAAS,KACV60L,EAAe/0L,UAAW,iBAAa,GAC1CE,GAAW,CACP,eAAS,IACV60L,EAAe/0L,UAAW,eAAW,GACxCE,GAAW,CACP,eAAS,OACV60L,EAAe/0L,UAAW,iBAAa,GAC1CE,GAAW,CACP,eAAS,WACV60L,EAAe/0L,UAAW,kBAAc,GAC3CE,GAAW,CACP,eAAS,OACV60L,EAAe/0L,UAAW,sBAAkB,GAC/CE,GAAW,CACP,eAAW,GAAI,KAChB60L,EAAe/0L,UAAW,oBAAgB,GAC7CE,GAAW,CACP,eAAQ,GAAI,KACb60L,EAAe/0L,UAAW,uBAAmB,GAChDE,GAAW,CACP,eAAQ,GAAI,KACb60L,EAAe/0L,UAAW,yBAAqB,GAClDE,GAAW,CACP,eAAQ,GAAI,KACb60L,EAAe/0L,UAAW,yBAAqB,GAC3C+0L,EAxDwB,CAyDjC,QAKE,GAAqC,SAAUpyL,GAE/C,SAASqyL,IACL,OAAkB,OAAXryL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAUk1L,EAAqBryL,GAI/BzC,GAAW,CACP,eAAS,KACV80L,EAAoBh1L,UAAW,YAAQ,GAC1CE,GAAW,CACP,eAAS,KACV80L,EAAoBh1L,UAAW,mBAAe,GAC1Cg1L,EAX6B,CAYtC,QAKE,GAAkC,SAAUryL,GAE5C,SAASsyL,IACL,OAAkB,OAAXtyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAUm1L,EAAkBtyL,GAI5BzC,GAAW,CACP,eAAQ,CAAE0V,KAAM,KAAME,WAAY,KAAMC,WAAY,MAAQ,KAC7Dk/K,EAAiBj1L,UAAW,iBAAa,GAC5CE,GAAW,CACP,eAAS,WACV+0L,EAAiBj1L,UAAW,iBAAa,GACrCi1L,EAX0B,CAYnC,IAKE,GAA+B,SAAUtyL,GAEzC,SAASuyL,IACL,OAAkB,OAAXvyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAW/D,OAbA,GAAUo1L,EAAevyL,GAIzBzC,GAAW,CACP,eAAQ,CAAE0V,KAAM,KAAME,WAAY,KAAMC,WAAY,MAAQ,KAC7Dm/K,EAAcl1L,UAAW,iBAAa,GACzCE,GAAW,CACP,eAAS,WACVg1L,EAAcl1L,UAAW,iBAAa,GACzCE,GAAW,CACP,eAAQ,GAAI,KACbg1L,EAAcl1L,UAAW,wBAAoB,GACzCk1L,EAduB,CAehC,IAKE,GAA8B,SAAUvyL,GAExC,SAAS8zC,IACL,OAAkB,OAAX9zC,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA8D/D,OAhEA,GAAU22C,EAAc9zC,GAIxBzC,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,cAAU,GACrCE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,qBAAiB,GAC5CE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,8BAA0B,GACrDE,GAAW,CACP,eAAS,eACVu2C,EAAaz2C,UAAW,0BAAsB,GACjDE,GAAW,CACP,eAAS,OACVu2C,EAAaz2C,UAAW,aAAS,GACpCE,GAAW,CACP,eAAS,OACVu2C,EAAaz2C,UAAW,sBAAkB,GAC7CE,GAAW,CACP,eAAS,OACVu2C,EAAaz2C,UAAW,sBAAkB,GAC7CE,GAAW,CACP,eAAS,QACVu2C,EAAaz2C,UAAW,2BAAuB,GAClDE,GAAW,CACP,eAAS,SACVu2C,EAAaz2C,UAAW,yBAAqB,GAChDE,GAAW,CACP,eAAS,CAAC,SAAU,UAAW,WAChCu2C,EAAaz2C,UAAW,gBAAY,GACvCE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,sBAAkB,GAC7CE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,uBAAmB,GAC9CE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,oBAAgB,GAC3CE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,mBAAe,GAC1CE,GAAW,CACP,eAAS,IACVu2C,EAAaz2C,UAAW,kBAAc,GACzCE,GAAW,CACP,eAAS,KACVu2C,EAAaz2C,UAAW,eAAW,GACtCE,GAAW,CACP,eAAS,IACVu2C,EAAaz2C,UAAW,eAAW,GACtCE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,2BAAuB,GAClDE,GAAW,CACP,gBAAS,IACVu2C,EAAaz2C,UAAW,sBAAkB,GAC7CE,GAAW,CACP,eAAQ,GAAI,KACbu2C,EAAaz2C,UAAW,uBAAmB,GACvCy2C,EAjEsB,CAkE/B,QAKE,GAAsC,SAAU9zC,GAEhD,SAASwyL,IACL,OAAkB,OAAXxyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAiB/D,OAnBA,GAAUq1L,EAAsBxyL,GAIhCzC,GAAW,CACP,gBAAS,IACVi1L,EAAqBn1L,UAAW,cAAU,GAC7CE,GAAW,CACP,gBAAS,IACVi1L,EAAqBn1L,UAAW,0BAAsB,GACzDE,GAAW,CACP,eAAS,IACVi1L,EAAqBn1L,UAAW,eAAW,GAC9CE,GAAW,CACP,eAAS,KACVi1L,EAAqBn1L,UAAW,YAAQ,GAC3CE,GAAW,CACP,eAAQ,CAAEuV,MAAO,GAAIrQ,MAAO,GAAK,KAClC+vL,EAAqBn1L,UAAW,cAAU,GACtCm1L,EApB8B,CAqBvC,QAKE,GAAgC,SAAUxyL,GAE1C,SAASunE,IACL,OAAkB,OAAXvnE,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA4F/D,OA9FA,GAAUoqE,EAAgBvnE,GAI1BzC,GAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,sBAAkB,GAC/CE,GAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,wBAAoB,GACjDE,GAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,eAAW,GACxCE,GAAW,CACP,eAAS,gBACVgqE,EAAelqE,UAAW,kBAAc,GAC3CE,GAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,YAAQ,GACrCE,GAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,uBAAmB,GAChDE,GAAW,CACP,eAAS,UACVgqE,EAAelqE,UAAW,qBAAiB,GAC9CE,GAAW,CACP,eAAS,SACVgqE,EAAelqE,UAAW,wBAAoB,GACjDE,GAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,aAAS,GACtCE,GAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,aAAS,GACtCE,GAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,cAAU,GACvCE,GAAW,CACP,eAAQ,CAAE6V,WAAY,KAAMD,WAAY,MAAQ,KACjDo0D,EAAelqE,UAAW,iBAAa,GAC1CE,GAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,kBAAc,GAC3CE,GAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,mBAAe,GAC5CE,GAAW,CACP,eAAS,KACVgqE,EAAelqE,UAAW,oBAAgB,GAC7CE,GAAW,CACP,eAAQ,CAAEuV,MAAO,UAAWrQ,MAAO,GAAK,KACzC8kE,EAAelqE,UAAW,cAAU,GACvCE,GAAW,CACP,eAAQ,CAAEuV,MAAO,UAAWrQ,MAAO,GAAK,KACzC8kE,EAAelqE,UAAW,mBAAe,GAC5CE,GAAW,CACP,eAAQ,GAAI,KACbgqE,EAAelqE,UAAW,aAAS,GACtCE,GAAW,CACP,eAAQ,CAAE0V,KAAM,KAAMH,MAAO85K,GAAMx9G,gBAAgBt8D,MAAOI,UAAW05K,GAAMx9G,gBAAgBl8D,UAAWC,WAAY,KAAMC,WAAY,MAAQ,KAC7Im0D,EAAelqE,UAAW,kBAAc,GAC3CE,GAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,gBAAY,GACzCE,GAAW,CACP,eAAS,WACVgqE,EAAelqE,UAAW,iBAAa,GAC1CE,GAAW,CACP,eAAS,SACVgqE,EAAelqE,UAAW,mBAAe,GAC5CE,GAAW,CACP,eAAS,CAAE4F,EAAG,EAAGC,EAAG,KACrBmkE,EAAelqE,UAAW,gBAAY,GACzCE,GAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,YAAQ,GACrCE,GAAW,CACP,eAAS,IACVgqE,EAAelqE,UAAW,eAAW,GACxCE,GAAW,CACP,eAAS,YACVgqE,EAAelqE,UAAW,YAAQ,GACrCE,GAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,sBAAkB,GAC/CE,GAAW,CACP,eAAS,OACVgqE,EAAelqE,UAAW,iBAAa,GAC1CE,GAAW,CACP,gBAAS,IACVgqE,EAAelqE,UAAW,6BAAyB,GACtDE,GAAW,CACP,eAAQ,GAAI,KACbgqE,EAAelqE,UAAW,4BAAwB,GAC9CkqE,EA/FwB,CAgGjC,QAKE,GAAmC,SAAUvnE,GAE7C,SAAS6S,IACL,OAAkB,OAAX7S,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAsC/D,OAxCA,GAAU0V,EAAmB7S,GAI7BzC,GAAW,CACP,gBAAS,IACVsV,EAAkBxV,UAAW,eAAW,GAC3CE,GAAW,CACP,eAAQ,CAAEkF,MAAO,EAAGqQ,MAAO,eAAiB,KAC7CD,EAAkBxV,UAAW,cAAU,GAC1CE,GAAW,CACP,eAAS,UACVsV,EAAkBxV,UAAW,YAAQ,GACxCE,GAAW,CACP,eAAS,IACVsV,EAAkBxV,UAAW,eAAW,GAC3CE,GAAW,CACP,eAAS,IACVsV,EAAkBxV,UAAW,UAAM,GACtCE,GAAW,CACP,eAAS,IACVsV,EAAkBxV,UAAW,UAAM,GACtCE,GAAW,CACP,eAAQ,CAAE4V,WAAY,MAAQ,KAC/BN,EAAkBxV,UAAW,iBAAa,GAC7CE,GAAW,CACP,eAAS,KACVsV,EAAkBxV,UAAW,iBAAa,GAC7CE,GAAW,CACP,eAAS,SACVsV,EAAkBxV,UAAW,sBAAkB,GAClDE,GAAW,CACP,eAAS,SACVsV,EAAkBxV,UAAW,0BAAsB,GACtDE,GAAW,CACP,eAAS,KACVsV,EAAkBxV,UAAW,gBAAY,GAC5CE,GAAW,CACP,eAAS,IACVsV,EAAkBxV,UAAW,yBAAqB,GAC9CwV,EAzC2B,CA0CpC,QAKE,GAA+B,SAAU7S,GAEzC,SAASyyL,IACL,OAAkB,OAAXzyL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAsC/D,OAxCA,GAAUs1L,EAAezyL,GAIzBzC,GAAW,CACP,eAAS,OACVk1L,EAAcp1L,UAAW,YAAQ,GACpCE,GAAW,CACP,eAAS,KACVk1L,EAAcp1L,UAAW,eAAW,GACvCE,GAAW,CACP,eAAS,IACVk1L,EAAcp1L,UAAW,oBAAgB,GAC5CE,GAAW,CACP,eAAQ,CAAEkF,MAAO,KAAMqQ,MAAO,WAAa,KAC5C2/K,EAAcp1L,UAAW,cAAU,GACtCE,GAAW,CACP,eAAS,KACVk1L,EAAcp1L,UAAW,iBAAa,GACzCE,GAAW,CACP,eAAS,IACVk1L,EAAcp1L,UAAW,eAAW,GACvCE,GAAW,CACP,eAAS,OACVk1L,EAAcp1L,UAAW,sBAAkB,GAC9CE,GAAW,CACP,eAAS,OACVk1L,EAAcp1L,UAAW,4BAAwB,GACpDE,GAAW,CACP,eAAS,OACVk1L,EAAcp1L,UAAW,4BAAwB,GACpDE,GAAW,CACP,eAAS,OACVk1L,EAAcp1L,UAAW,iBAAa,GACzCE,GAAW,CACP,eAAW,GAAI,KAChBk1L,EAAcp1L,UAAW,oBAAgB,GAC5CE,GAAW,CACP,gBAAS,IACVk1L,EAAcp1L,UAAW,gBAAY,GACjCo1L,EAzCuB,CA0ChC,QAKE,GAA4B,SAAUzyL,GAEtC,SAAS0yL,IACL,OAAkB,OAAX1yL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAgF/D,OAlFA,GAAUu1L,EAAY1yL,GAItBzC,GAAW,CACP,eAAQ,CAAEuV,MAAO,cAAerQ,MAAO,GAAK,KAC7CiwL,EAAWr1L,UAAW,cAAU,GACnCE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,iBAAa,GACtCE,GAAW,CACP,gBAAS,IACVm1L,EAAWr1L,UAAW,eAAW,GACpCE,GAAW,CACP,gBAAS,IACVm1L,EAAWr1L,UAAW,kBAAc,GACvCE,GAAW,CACP,eAAS,YACVm1L,EAAWr1L,UAAW,YAAQ,GACjCE,GAAW,CACP,eAAS,KACVm1L,EAAWr1L,UAAW,cAAU,GACnCE,GAAW,CACP,eAAS,KACVm1L,EAAWr1L,UAAW,aAAS,GAClCE,GAAW,CACP,eAAS,IACVm1L,EAAWr1L,UAAW,eAAW,GACpCE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,sBAAkB,GAC3CE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,sBAAkB,GAC3CE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,yBAAqB,GAC9CE,GAAW,CACP,eAAS,YACVm1L,EAAWr1L,UAAW,aAAS,GAClCE,GAAW,CACP,eAAS,KACVm1L,EAAWr1L,UAAW,kBAAc,GACvCE,GAAW,CACP,eAAS,IAAIy7K,GAAM,EAAG,KACvB0Z,EAAWr1L,UAAW,cAAU,GACnCE,GAAW,CACP,eAAS,KACVm1L,EAAWr1L,UAAW,gBAAY,GACrCE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,gBAAY,GACrCE,GAAW,CACP,eAAS,KACVm1L,EAAWr1L,UAAW,kBAAc,GACvCE,GAAW,CACP,kBACDm1L,EAAWr1L,UAAW,aAAS,GAClCE,GAAW,CACP,eAAQ,GAAI,KACbm1L,EAAWr1L,UAAW,uBAAmB,GAC5CE,GAAW,CACP,eAAS,MACVm1L,EAAWr1L,UAAW,yBAAqB,GAC9CE,GAAW,CACP,eAAS,IACVm1L,EAAWr1L,UAAW,sBAAkB,GAC3CE,GAAW,CACP,eAAQ,GAAI,KACbm1L,EAAWr1L,UAAW,yBAAqB,GAC9CE,GAAW,CACP,eAAQ,GAAI,KACbm1L,EAAWr1L,UAAW,yBAAqB,GAC9CE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,yBAAqB,GAC9CE,GAAW,CACP,eAAS,OACVm1L,EAAWr1L,UAAW,0BAAsB,GAC/CE,GAAW,CACP,eAAW,GAAI,KAChBm1L,EAAWr1L,UAAW,8BAA0B,GAC5Cq1L,EAnFoB,CAoF7B,QAKEr/K,GAAgC,SAAUrT,GAG1C,SAASqT,EAAe4K,EAAQC,EAAUC,EAAcC,GACpD,OAAOpe,EAAOS,KAAKtD,KAAM8gB,EAAQC,EAAUC,EAAcC,IAAYjhB,KAEzE,OALA,GAAUkW,EAAgBrT,GAKnBqT,EANwB,CAOjC,IAKE,GAA+B,SAAUrT,GAEzC,SAAS2yL,IACL,IAAInyL,EAAmB,OAAXR,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAKhE,OADAqD,EAAMoyL,aAAc,EACbpyL,EAgFX,OAvFA,GAAUmyL,EAAe3yL,GASzBzC,GAAW,CACP,eAAS,OACVo1L,EAAct1L,UAAW,iBAAa,GACzCE,GAAW,CACP,kBACDo1L,EAAct1L,UAAW,aAAS,GACrCE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,qBAAiB,GAC7CE,GAAW,CACP,eAAS,KACVo1L,EAAct1L,UAAW,kBAAc,GAC1CE,GAAW,CACP,eAAS,UACVo1L,EAAct1L,UAAW,YAAQ,GACpCE,GAAW,CACP,eAAS,eACVo1L,EAAct1L,UAAW,oBAAgB,GAC5CE,GAAW,CACP,eAAS,WACVo1L,EAAct1L,UAAW,mBAAe,GAC3CE,GAAW,CACP,eAAS,YACVo1L,EAAct1L,UAAW,qBAAiB,GAC7CE,GAAW,CACP,eAAS,KACVo1L,EAAct1L,UAAW,WAAO,GACnCE,GAAW,CACP,eAAS,aACVo1L,EAAct1L,UAAW,iBAAa,GACzCE,GAAW,CACP,eAAS,KACVo1L,EAAct1L,UAAW,mBAAe,GAC3CE,GAAW,CACP,gBAAS,IACVo1L,EAAct1L,UAAW,eAAW,GACvCE,GAAW,CACP,eAAS,SACVo1L,EAAct1L,UAAW,qBAAiB,GAC7CE,GAAW,CACP,eAAS,SACVo1L,EAAct1L,UAAW,yBAAqB,GACjDE,GAAW,CACP,eAAS,IACVo1L,EAAct1L,UAAW,yBAAqB,GACjDE,GAAW,CACP,eAAW,GAAI8V,KAChBs/K,EAAct1L,UAAW,sBAAkB,GAC9CE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,6BAAyB,GACrDE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,yBAAqB,GACjDE,GAAW,CACP,eAAW,GAAI,KAChBo1L,EAAct1L,UAAW,sBAAkB,GAC9CE,GAAW,CACP,eAAW,GAAI,KAChBo1L,EAAct1L,UAAW,8BAA0B,GACtDE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,uBAAmB,GAC/CE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,uBAAmB,GAC/CE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,yBAAqB,GACjDE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,yBAAqB,GACjDE,GAAW,CACP,eAAQ,GAAI,KACbo1L,EAAct1L,UAAW,4BAAwB,GACpDE,GAAW,CACP,eAAW,GAAI,KAChBo1L,EAAct1L,UAAW,6BAAyB,GAC9Cs1L,EAxFuB,CAyFhC,QAKEE,GAAsB,WACtB,SAASA,EAAK1vL,EAAGC,EAAGZ,EAAQC,EAAOP,EAAKC,EAAMy3E,QAC3B,IAAXp3E,IAAqBA,EAAS,UACpB,IAAVC,IAAoBA,EAAQ,UACpB,IAARP,IAAkBA,EAAM,QACf,IAATC,IAAmBA,EAAO,QAClB,IAARy3E,IAAkBA,EAAM,MAC5Bz8E,KAAKgG,EAAIA,EACThG,KAAKiG,EAAIA,EACTjG,KAAK+E,IAAMA,EACX/E,KAAKgF,KAAOA,EACZhF,KAAKqF,OAASA,EACdrF,KAAKsF,MAAQA,EACbtF,KAAKy8E,IAAMA,EAEf,OAAOi5G,EAfc,GAqBrB,GAAkC,SAAU7yL,GAE5C,SAAS8yL,IACL,OAAkB,OAAX9yL,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KAQ/D,OAVA,GAAU21L,EAAkB9yL,GAI5BzC,GAAW,CACP,eAAS,OACVu1L,EAAiBz1L,UAAW,kBAAc,GAC7CE,GAAW,CACP,eAAQ,CAAEuV,MAAO,cAAerQ,MAAO,GAAK,KAC7CqwL,EAAiBz1L,UAAW,cAAU,GAClCy1L,EAX0B,CAYnC,QC1uCE,GAAyB,WACzB,SAASC,EAAQhc,GACb55K,KAAK45K,KAAOA,EAiChB,OA/BAgc,EAAQ11L,UAAU21L,WAAa,SAAUC,EAAMv1L,EAAKiO,EAAMunL,EAAUriJ,EAAUsiJ,GAG1E,IAFA,IAAIC,EAAU,GACV3L,EAAUnhL,KAAKuS,IAAI1b,KAAK45K,KAAK+I,cAAehxK,SAAS3R,KAAKsqL,QAAS,KAC9DtpL,EAAIspL,EAAStpL,EAAI,EAAGA,IAAK,CAC9B,IAAIk1L,EAAQ,EACRC,EAAO,GAAMn1L,EAAI,EACG,KAAnB80L,EAAK9vL,EAAImwL,IACVD,IAEoB,KAAnBJ,EAAK7vL,EAAIkwL,KACVD,GAAS,GAEbD,EAAUA,EAAU,GAAKC,EAE7B,GAAK,eAAkBF,GAMnB,MAAO,GALP,IAAII,EAAYJ,EAAW7sL,KAAKuS,IAAI/J,SAASskL,EAAQn4F,OAAOm4F,EAAQt1L,OAAS,EAAG,GAAI,IAAKq1L,EAAWr1L,SAEpG,OADA+yC,EAAWA,EAASjvB,QAAQ,YAAawxK,GAASxxK,QAAQ,cAAe2xK,GAClE1iJ,EAAY,QAAUqiJ,EAAW,cAAgBx1L,GAUhEq1L,EAAQ11L,UAAUsS,QAAU,WACxBxS,KAAK45K,KAAO,KACZ55K,KAAKg2L,WAAa,IAEfJ,EAnCiB,GCExB,GAA8B,WAC9B,SAASS,EAAazc,GAClB55K,KAAK45K,KAAOA,EA0NhB,OA9MAyc,EAAan2L,UAAUo2L,qBAAuB,SAAUle,EAAemO,EAAW5wK,GAC9E,IAAI2qK,EAAiBlI,EAAckI,eAAiBlI,EAAckI,eAAiBlI,EAAcme,UAC7FC,EAAe,eAAkBlW,GAC4CiG,EAAUjG,GADjCA,EAAet8K,QAAQ,MAAQ,EACrF07K,GAAmB6G,EAAWjG,GAAkBiG,EAAUjG,GAC1DzjK,EAAaqS,OAAOsnK,GAEpBC,EAAaz2L,KAAK02L,gBAAgBte,EAAcue,aAAc95K,EAAY25K,GAC9E,OAAQ,eAAkBC,GAA2B9gL,EAAb8gL,GAY5CJ,EAAan2L,UAAUw2L,gBAAkB,SAAUC,EAAc95K,EAAY25K,GACzE,GAAI54K,MAAMf,IAAe,eAAkB25K,GACvC,OAAO,KAKX,IAHA,IACIhjJ,EACAojJ,EAFAx2K,EAAO,GAGFvS,EAAK,EAAGgpL,EAAiBF,EAAc9oL,EAAKgpL,EAAel2L,OAAQkN,IAAM,CAC9E,IAAIyiE,EAAWumH,EAAehpL,KACxB,eAAkByiE,EAASgxE,QAAU,eAAkBhxE,EAASwmH,KAC9Dj6K,GAAcyzD,EAASgxE,MAAQzkI,GAAcyzD,EAASwmH,IACzDxmH,EAAStzD,QAAUw5K,KACmC,mBAAnD/2L,OAAOS,UAAU0R,SAAStO,KAAKgtE,EAAS36D,OACnC,eAAkB26D,EAAStzD,QAI5B45K,EAAe52L,KAAK+2L,SAASzmH,EAAUzzD,GACvCuD,EAAOw2K,GAJPx2K,EAAOkwD,EAAS36D,MAAM,GAQ1ByK,EAAOkwD,EAAS36D,QAGlBkH,GAAcyzD,EAASgxE,MAAQzkI,GAAcyzD,EAASwmH,IAAQxmH,EAAStzD,QAAUw5K,KAC9E,eAAkBlmH,EAAS0mH,cAAgB,eAAkB1mH,EAAS2mH,aAAe72K,IAC1FozB,EAAUxzC,KAAKk3L,kBAAkB5mH,EAAUlwD,EAAMvD,EAAY25K,KAEnD,KAATp2K,GAAe,eAAkBA,KAAU,eAAkBkwD,EAASgxE,OAAS,eAAkBhxE,EAASwmH,KACxG,eAAkBxmH,EAAS0mH,aAAe,eAAkB1mH,EAAS2mH,aAAe,eAAkB3mH,EAAStzD,SAClHoD,EAA0D,mBAAnD3gB,OAAOS,UAAU0R,SAAStO,KAAKgtE,EAAS36D,OAA8B26D,EAAS36D,MAAM,GAAK26D,EAAS36D,OAGlH,MAAO,CAAEyK,KAAMA,IAAWu2K,EAAah2L,OAAuB,KAAb61L,GAAoBhjJ,QAASA,IAElF6iJ,EAAan2L,UAAUg3L,kBAAoB,SAAUP,EAAchhL,EAAOwhL,EAAYX,GAClF,IAAIhjJ,EAAU,EACd,GAAM2jJ,GAAcR,EAAar1C,MAAQ61C,GAAcR,EAAaG,IAAOH,EAAa35K,QAAUw5K,EAAa,CAC3G,IAAIY,EAASx5K,MAAMu5K,GACfR,EAAar1C,MAAQq1C,EAAaG,GAAKH,EAAar1C,OADtB61C,EAAaR,EAAar1C,OAASq1C,EAAaG,GAAKH,EAAar1C,MAEpG9tG,EAAW4jJ,GAAST,EAAaM,WAAaN,EAAaK,YAAeL,EAAaK,WAE3F,OAAOxjJ,GAEX6iJ,EAAan2L,UAAUm3L,SAAW,SAAUz2L,EAAGuyC,EAAG3zC,GAC9C,MAAO,IAAMQ,KAAKs3L,eAAe12L,GAAKZ,KAAKs3L,eAAenkJ,GAAKnzC,KAAKs3L,eAAe93L,IAEvF62L,EAAan2L,UAAUo3L,eAAiB,SAAUt6K,GAC9C,IAAIu6K,EAAMv6K,EAAMpL,SAAS,IACzB,OAAsB,IAAf2lL,EAAI52L,OAAe,IAAM42L,EAAMA,GAE1ClB,EAAan2L,UAAU62L,SAAW,SAAUzmH,EAAUtzD,GAClD,IACIw6K,EADA7hL,EAAQ,GAYZ,OAVIuZ,OAAOlS,KAAWszD,EAASgxE,KAC3B3rI,EAAQ26D,EAAS36D,MAAM,GAElBuZ,OAAOlS,KAAWszD,EAASwmH,GAChCnhL,EAAQ26D,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,IAG/C62L,EAAMx3L,KAAKy3L,iBAAiBvoK,OAAOlS,GAAQszD,GAC3C36D,EAAQ3V,KAAKq3L,SAASG,EAAI52L,EAAG42L,EAAIrkJ,EAAGqkJ,EAAIh4L,IAErCmW,GAEX0gL,EAAan2L,UAAUu3L,iBAAmB,SAAUz6K,EAAOszD,GACvD,IAIIonH,EAEAC,EACAC,EAPAC,EAAiBvnH,EAASgxE,KAC1Bw2C,EAAaxnH,EAASwmH,GACtB1S,EAAU,EACV1zG,EAAOonH,EAAaD,EAKxB,GAHAzT,GAAWpnK,EAAQ66K,GAAkBnnH,EAGjCJ,EAAS36D,MAAMhV,QAAU,EACzBg3L,EAAgD,MAAhCrnH,EAAS36D,MAAM,GAAGoiL,OAAO,GAAaznH,EAAS36D,MAAM,GAAK3V,KAAKg4L,gBAAgB1nH,EAAS36D,MAAM,IAC9GiiL,EAAoE,MAAxDtnH,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,GAAGo3L,OAAO,GACzDznH,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,GAAKX,KAAKg4L,gBAAgB1nH,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,QAE3G,CACDg3L,EAAgD,MAAhCrnH,EAAS36D,MAAM,GAAGoiL,OAAO,GAAaznH,EAAS36D,MAAM,GAAK3V,KAAKg4L,gBAAgB1nH,EAAS36D,MAAM,IAC9GiiL,EAAoE,MAAxDtnH,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,GAAGo3L,OAAO,GACzDznH,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,GAAKX,KAAKg4L,gBAAgB1nH,EAAS36D,MAAM26D,EAAS36D,MAAMhV,OAAS,IAQ5G,IAPA,IAAI2d,EAAIoyD,GAAQJ,EAAS36D,MAAMhV,OAAS,GACpCnB,OAAI,EACJiB,OAAI,EACJ2qC,EAAWklC,EAAS36D,MAAMhV,OAAS,EAEnCs3L,EAAwB,GACxBC,EAAa,GACRr0K,EAAI,EAAGA,EAAIunB,EAAUvnB,IAC1BpjB,EAAIojB,EAAIvF,EACR9e,EAAIq4L,EAAiBp3L,EACrBy3L,EAAa,CAAE14L,EAAGA,EAAGmW,MAAO26D,EAAS36D,MAAMkO,IAC3Co0K,EAAsB5rL,KAAK6rL,GAE/B,IAAK,IAAIl3L,EAAI,EAAGA,EAAIi3L,EAAsBt3L,OAAQK,IAC1C62L,GAAkB76K,GAASA,GAASi7K,EAAsBj3L,GAAG,MAAc,IAANA,GACrE02L,EAA2D,MAAhDO,EAAsBj3L,GAAG,SAAS+2L,OAAO,GAChDE,EAAsBj3L,GAAG,SAAWhB,KAAKg4L,gBAAgBC,EAAsBj3L,GAAG,UACtF42L,EAAYF,EACZtT,EAAUpnK,EAAQi7K,EAAsBj3L,GAAG,KAAO,EAAImI,KAAK6a,KAAKhH,EAAQi7K,EAAsBj3L,GAAG,MAAQsd,IAClGtB,EAAQi7K,EAAsBj3L,GAAG,MAAQsd,GAE3C25K,EAAsBj3L,GAAG,MAAQgc,GAASA,GAAS86K,GAAc92L,IAAOi3L,EAAsBt3L,OAAS,IAC5G+2L,EAA2D,MAAhDO,EAAsBj3L,GAAG,SAAS+2L,OAAO,GAChDE,EAAsBj3L,GAAG,SAAWhB,KAAKg4L,gBAAgBC,EAAsBj3L,GAAG,UACtF22L,EAAgBD,EAChBtT,EAAUpnK,EAAQi7K,EAAsBj3L,GAAG,KACvC,EAAImI,KAAK6a,KAAKhH,EAAQi7K,EAAsBj3L,GAAG,MAAQsd,IAAMtB,EAAQi7K,EAAsBj3L,GAAG,MAAQsd,GAE1Gtd,IAAMi3L,EAAsBt3L,OAAS,GAAKK,EAAIi3L,EAAsBt3L,QAChEs3L,EAAsBj3L,GAAG,MAAQgc,GAASA,GAASi7K,EAAsBj3L,EAAI,GAAG,OAChF02L,EAA2D,MAAhDO,EAAsBj3L,GAAG,SAAS+2L,OAAO,GAChDE,EAAsBj3L,GAAG,SAAWhB,KAAKg4L,gBAAgBC,EAAsBj3L,GAAG,UACtF22L,EAAgBD,EAChBE,EAAgE,MAApDK,EAAsBj3L,EAAI,GAAG,SAAS+2L,OAAO,GACrDE,EAAsBj3L,EAAI,GAAG,SAAWhB,KAAKg4L,gBAAgBC,EAAsBj3L,EAAI,GAAG,UAC9FojL,EAAUj7K,KAAK6a,IAAKhH,EAAQi7K,EAAsBj3L,EAAI,GAAG,MAASsd,GAKlF,OAAOte,KAAKm4L,mBAAmB/T,EAASuT,EAAeC,IAE3DvB,EAAan2L,UAAUi4L,mBAAqB,SAAU/T,EAASnlK,EAAUC,GACrE,IAAI04K,EAAY14K,EAAKjb,MAAM,KAAK,GAC5Bm0L,EAAYn5K,EAAShb,MAAM,KAAK,GAChCrD,EAAIZ,KAAKq4L,cAAcjU,EAASzyK,SAASymL,EAAUt6F,OAAO,EAAG,GAAI,IAAKnsF,SAASimL,EAAU95F,OAAO,EAAG,GAAI,KACvG3qD,EAAInzC,KAAKq4L,cAAcjU,EAASzyK,SAASymL,EAAUt6F,OAAO,EAAG,GAAI,IAAKnsF,SAASimL,EAAU95F,OAAO,EAAG,GAAI,KACvGt+F,EAAIQ,KAAKq4L,cAAcjU,EAASzyK,SAASymL,EAAUt6F,OAAO,EAAG,GAAI,IAAKnsF,SAASimL,EAAU95F,OAAO,EAAG,GAAI,KAC3G,OAAO,IAAIigF,GAAWn9K,EAAGuyC,EAAG3zC,IAEhC62L,EAAan2L,UAAUm4L,cAAgB,SAAUjU,EAASnlK,EAAUC,GAChE,IAAIwxD,EAAOxxD,EAAOD,EAClB,OAAO9V,KAAKC,MAAO6V,EAAYyxD,EAAO0zG,IAE1CiS,EAAan2L,UAAU83L,gBAAkB,SAAUriL,GAE/C,IAAIyH,EAAS,CACT,UAAa,UAAW,aAAgB,UAAW,KAAQ,UAAW,WAAc,UAAW,MAAS,UACxG,MAAS,UAAW,OAAU,UAAW,MAAS,UAAW,eAAkB,UAAW,KAAQ,UAClG,WAAc,UAAW,MAAS,UAAW,UAAa,UAC1D,UAAa,UAAW,WAAc,UAAW,UAAa,UAAW,MAAS,UAClF,eAAkB,UAAW,SAAY,UAAW,QAAW,UAAW,KAAQ,UAClF,SAAY,UAAW,SAAY,UAAW,cAAiB,UAAW,SAAY,UAAW,UAAa,UAC9G,UAAa,UAAW,YAAe,UAAW,eAAkB,UACpE,WAAc,UAAW,WAAc,UAAW,QAAW,UAAW,WAAc,UAAW,aAAgB,UACjH,cAAiB,UAAW,cAAiB,UAAW,cAAiB,UACzE,WAAc,UAAW,SAAY,UAAW,YAAe,UAAW,QAAW,UAAW,WAAc,UAC9G,UAAa,UAAW,YAAe,UAAW,YAAe,UAAW,QAAW,UACvF,UAAa,UAAW,WAAc,UAAW,KAAQ,UAAW,UAAa,UAAW,KAAQ,UACpG,MAAS,UAAW,YAAe,UACnC,SAAY,UAAW,QAAW,UAClC,aAAc,UAAW,UAAW,UAAW,MAAS,UAAW,MAAS,UAC5E,SAAY,UAAW,cAAiB,UAAW,UAAa,UAAW,aAAgB,UAAW,UAAa,UACnH,WAAc,UAAW,UAAa,UAAW,qBAAwB,UACzE,UAAa,UAAW,WAAc,UAAW,UAAa,UAAW,YAAe,UAAW,cAAiB,UACpH,aAAgB,UAAW,eAAkB,UAAW,eAAkB,UAC1E,YAAe,UAAW,KAAQ,UAAW,UAAa,UAAW,MAAS,UAC9E,QAAW,UAAW,OAAU,UAAW,iBAAoB,UAAW,WAAc,UAAW,aAAgB,UACnH,aAAgB,UAAW,eAAkB,UAAW,gBAAmB,UAC3E,kBAAqB,UAAW,gBAAmB,UAAW,gBAAmB,UAAW,aAAgB,UAC5G,UAAa,UAAW,UAAa,UAAW,SAAY,UAC5D,YAAe,UAAW,KAAQ,UAAW,OAAU,UAAW,WAAc,UAChF,QAAW,UAAW,MAAS,UAAW,UAAa,UAAW,OAAU,UAAW,UAAa,UACpG,cAAiB,UAAW,UAAa,UAAW,cAAiB,UAAW,cAAiB,UACjG,UAAa,UAAW,KAAQ,UAAW,KAAQ,UAAW,KAAQ,UAAW,WAAc,UAAW,OAAU,UACpH,IAAO,UAAW,UAAa,UAAW,UAAa,UACvD,YAAe,UAAW,OAAU,UAAW,WAAc,UAAW,SAAY,UAAW,SAAY,UAC3G,OAAU,UAAW,OAAU,UAAW,QAAW,UAAW,UAAa,UAC7E,UAAa,UAAW,KAAQ,UAAW,YAAe,UAAW,UAAa,UAClF,IAAO,UAAW,KAAQ,UAAW,QAAW,UAAW,OAAU,UAAW,UAAa,UAC7F,OAAU,UACV,MAAS,UAAW,MAAS,UAAW,WAAc,UACtD,OAAU,UAAW,YAAe,WAExC,MAA8C,mBAA1C3d,OAAOS,UAAU0R,SAAStO,KAAKqS,GACxBA,EAEgC,qBAAhCyH,EAAOzH,EAAM4M,eACbnF,EAAOzH,EAAM4M,eAEjB5M,GAEJ0gL,EA5NsB,GCQ7B,GAA4B,WAC5B,SAASiC,EAAWzxL,GAChB7G,KAAK88K,kBAAmB,EACxB98K,KAAKu4L,eAAgB,EACrBv4L,KAAKw4L,oBAAsB,EAC3Bx4L,KAAKk9K,UAAYr2K,EACjB7G,KAAKy4L,WAAa,IAAI,OACtBz4L,KAAK04L,aAAe,GA89CxB,OA59CAJ,EAAWp4L,UAAUy4L,kBAAoB,WACrC,IAAIt1L,EAAQrD,KACR44L,EAAkB54L,KAAKk9K,UAAUgO,iBACjC2N,EAAW74L,KAAKk9K,UAAU9B,YAC1B0d,EAAe/V,GAAe/iL,KAAKk9K,UAAU95K,QAAQkI,GAAK,sBAC9D,GAAItL,KAAKk9K,UAAU8E,WAAa8W,EAAc,CAC1C94L,KAAK+4L,cAAgB/4L,KAAKk9K,UAAU53J,SAASguB,UAAU,CACnDhoC,GAAItL,KAAKk9K,UAAU95K,QAAQkI,GAAK,YAAahG,MAAOuzL,EAASvzL,MAC7DD,OAAQwzL,EAASxzL,SAErB,IAAIqwC,EAAgB,eAAc,MAAO,CACrCpqC,GAAItL,KAAKk9K,UAAU95K,QAAQkI,GAAK,qBAEpCoqC,EAAc3uC,MAAMwsC,QAAU,+BAAkCslJ,EAAe,OAAI,cAC9EA,EAAc,MAAI,MACvBnjJ,EAAchxC,YAAY1E,KAAK+4L,eAC/BD,EAAap0L,YAAYgxC,GAM7B,GAJA11C,KAAKg5L,WAAch5L,KAAKk9K,UAAU53J,SAASY,YAAY,CACnD5a,GAAItL,KAAKk9K,UAAU95K,QAAQkI,GAAK,qBAChC,YAAa,QAAUtL,KAAKk9K,UAAU95K,QAAQkI,GAAK,uBAEgB,oBAAnEtL,KAAKk9K,UAAUsG,OAAOxjL,KAAKk9K,UAAU6H,gBAAgBC,UAAiC,CACtF,IAAIiU,EAAgB,IACpBj5L,KAAK2lB,gBAAkB3lB,KAAKk9K,UAAU53J,SAAS0zD,aAAa,IAAIglG,GAAWh+K,KAAKk9K,UAAU95K,QAAQkI,GAAK,oBAAqB,cAAe,CAAEhG,MAAO,EAAGqQ,MAAO,QAAU,EAAG,CACvK3P,GAAK6yL,EAASvzL,MAAQ2zL,GAAiB,EAAIhzL,EAAG,EAC9CX,MAAO2zL,EAAe5zL,OAAQwzL,EAASxzL,eAI3CrF,KAAK2lB,gBAAkB3lB,KAAKk9K,UAAU53J,SAAS0zD,aAAa,IAAIglG,GAAWh+K,KAAKk9K,UAAU95K,QAAQkI,GAAK,oBAAqB,cAAe,CAAEhG,MAAO,EAAGqQ,MAAO,QAAU,EAAG,CACvK3P,EAAGhG,KAAKk9K,UAAU8E,UAAY,EAAI6W,EAAS7yL,EAAGC,EAAGjG,KAAKk9K,UAAU8E,UAAY,EAAI6W,EAAS5yL,EACzFX,MAAOuzL,EAASvzL,MAAOD,OAAQwzL,EAASxzL,UAGhDrF,KAAKg5L,WAAWt0L,YAAY1E,KAAK2lB,iBACjC3lB,KAAKk9K,UAAU5B,cAAgB,KAC/Bt7K,KAAKk9K,UAAU+K,kBAAoB,KACnCjoL,KAAKk9K,UAAUE,SAAW,KAC1Bx9K,MAAMM,UAAU+uF,QAAQ3rF,KAAKs1L,GAAiB,SAAU7d,EAAOtuK,GAC3DpJ,EAAMk5K,aAAexB,EACrB13K,EAAM61L,cAAcne,EAAOtuK,MAE1B,eAAkBzM,KAAKk9K,UAAUz+I,eAA4D,UAA3Cz+B,KAAKk9K,UAAU1+I,eAAez6B,WAC7E/D,KAAKk9K,UAAU8E,UACfhiL,KAAKg5L,WAAWt0L,YAAY1E,KAAKk9K,UAAUz+I,aAAauvC,aAGxDhuE,KAAKk9K,UAAUh4I,UAAUxgC,YAAY1E,KAAKk9K,UAAUz+I,aAAauvC,eAc7EsqH,EAAWp4L,UAAUi5L,gBAAkB,SAAU5vF,EAAOwxE,EAAO8F,EAAYuY,GACvE7vF,EAAM8vF,cAAgB9vF,EAAM24E,gBAAgBnH,GAC5CxxE,EAAM2zE,UAAUoc,eAA6D,IAA5C/vF,EAAM2zE,UAAUv9I,aAAaI,aACxD,eAAkBwpE,EAAM2zE,UAAUyF,gBAAoD,IAAlCp5E,EAAM2zE,UAAUyF,eAEtE,eAAkBp5E,EAAM2zE,UAAU6M,yBAClC,eAAkBxgF,EAAM2zE,UAAU8M,2BAA6BzgF,EAAM2zE,UAAUiN,kBAC/E5gF,EAAM2zE,UAAU6M,uBAAyBxgF,EAAM2zE,UAAUkK,eAAexM,SACxErxE,EAAM2zE,UAAU8M,wBAA0BzgF,EAAM2zE,UAAUkK,eAAevM,WAEnEtxE,EAAM2zE,UAAU6M,yBACtBxgF,EAAM2zE,UAAUkK,eAAexM,UAAYrxE,EAAM2zE,UAAU8M,0BAC3DzgF,EAAM2zE,UAAUkK,eAAevM,WAActxE,EAAM2zE,UAAUiN,kBAC7D5gF,EAAM2zE,UAAU+M,uBAAwB,EACxC1gF,EAAM2zE,UAAU6M,uBAAyBxgF,EAAM2zE,UAAUkK,eAAexM,SACxErxE,EAAM2zE,UAAU8M,wBAA0BzgF,EAAM2zE,UAAUkK,eAAevM,WAGzEtxE,EAAM2zE,UAAU+M,uBAAwB,EAE5C,IAAIrN,EAAS,IAAIf,GAAMtyE,EAAM2zE,UAAUkK,eAAevM,UAAWtxE,EAAM2zE,UAAUkK,eAAexM,UAC5F2e,EAAgB3c,EACf58K,KAAKk9K,UAAU8E,WAAaz4E,EAAM2zE,UAAUsc,cAAiBjwF,EAAM2zE,UAAUv9I,aAAalZ,SAC3F8iF,EAAM2zE,UAAUsc,aAAaC,qCAAqCz5L,KAAKk9K,UAAUgO,kBAC5E,eAAkBlrL,KAAKk9K,UAAU4K,uBAA0B,eAAkB9nL,KAAKk9K,UAAU6K,wBACzFx+E,EAAM2zE,UAAUiN,mBACpBoP,EAAgB,IAAI1d,GAAMtyE,EAAM2zE,UAAU6K,sBAAuBx+E,EAAM2zE,UAAU4K,wBAKrFlL,GAFCrzE,EAAM2zE,UAAUv9I,aAAaioJ,qBAAuBr+E,EAAM2zE,UAAUkK,eAAevM,WACjFtxE,EAAM2zE,UAAUkK,eAAexM,WAAarxE,EAAM2zE,UAAUsL,iBAAmBj/E,EAAM2zE,UAAUoc,aACzF,IAAIzd,GAAMtyE,EAAM2zE,UAAUkK,eAAevM,UAAWtxE,EAAM2zE,UAAUkK,eAAexM,UAEvFrxE,EAAM2zE,UAAUv9I,aAAaioJ,qBAC/Br+E,EAAM2zE,UAAUqL,oBAAsBh/E,EAAM2zE,UAAUsL,kBACrD,eAAkBj/E,EAAM2zE,UAAUuL,uBAC7B,IAAI5M,GAAMtyE,EAAM2zE,UAAUuL,sBAAsB5N,UAAWtxE,EAAM2zE,UAAUuL,sBAAsB7N,UAGjG,CAAE50K,EAAG,KAAMC,EAAG,MAE3B,IAAIkhL,EAAmB59E,EAAM2zE,UAAUv9I,aAAaioJ,sBAAwBr+E,EAAM2zE,UAAUiN,iBACxF,eAAkB5gF,EAAM2zE,UAAU2K,kBAAoB,EAClDt+E,EAAM2zE,UAAU2K,iBAAmBt+E,EAAM2zE,UAAUv9I,aAAaI,WAWxE,GAVAonJ,EAAmB59E,EAAM2zE,UAA2B,kBAAM,cAAD,CAAmB3zE,EAAM2zE,UAAUyK,eACrF,eAAkBp+E,EAAM2zE,UAAU2K,kBAAoBt+E,EAAM2zE,UAAUv9I,aAAaI,WAClFwpE,EAAM2zE,UAAU2K,iBAAoBt+E,EAAM2zE,UAAUyK,cAAiBR,EAC7EA,EAAkB59E,EAAM2zE,UAAUv9I,aAAalZ,OAAS0gK,EAAkB59E,EAAM2zE,UAAUv9I,aAAaI,WACvGonJ,EAAkBA,EAAkB,EAAIA,EAAkB,EAC1D59E,EAAM2zE,UAAUoc,aAAmC,IAApBnS,GAC1B59E,EAAM2zE,UAAUqL,mBAAqBh/E,EAAM2zE,UAAUv9I,aAAaioJ,qBACvB,IAA5Cr+E,EAAM2zE,UAAUv9I,aAAaI,aAC7BwpE,EAAM2zE,UAAUoc,cAAe,GAE/B,eAAkB/vF,EAAM2zE,UAAUyF,eAClCp5E,EAAM2zE,UAAUyF,cAAgBwE,EAChC59E,EAAM2zE,UAAUwc,mBAAqBvS,OAEpC,GAAInnL,KAAKk9K,UAAUgN,SAA6C,IAAlC3gF,EAAM2zE,UAAUyF,gBAAwBp5E,EAAM2zE,UAAUv9I,aAAaioJ,oBAAqB,CACzH,IAAI/K,EAAYtzE,EAAM2zE,UAAUyF,cAChCp5E,EAAM2zE,UAAUyF,cAAgB9F,OAEiB,IAA5CtzE,EAAM2zE,UAAUv9I,aAAaI,YAAoBwpE,EAAM2zE,UAAUv9I,aAAaioJ,qBACnFr+E,EAAM2zE,UAAUwc,mBAAqBnwF,EAAM2zE,UAAUyF,cACrDp5E,EAAM2zE,UAAUyF,cAAgBp5E,EAAM2zE,UAAUoc,cAAgB/vF,EAAM2zE,UAAUv9I,aAAalZ,OACzF8iF,EAAM2zE,UAAUyF,cAAiBp5E,EAAM2zE,UAAUv9I,aAAaioJ,qBAC1Dr+E,EAAM2zE,UAAU+M,sBAE0D9C,EAD9E59E,EAAM2zE,UAAUwc,qBAAuBnwF,EAAM2zE,UAAUv9I,aAAaI,WAChEwpE,EAAM2zE,UAAUv9I,aAAaI,WAAawpE,EAAM2zE,UAAUyF,cAClEp5E,EAAM2zE,UAAUyF,cAAoC,IAApBwE,GAAqE,IAA5C59E,EAAM2zE,UAAUv9I,aAAaI,WAClFonJ,EAAkB59E,EAAM2zE,UAAUyF,eACjC,eAAkBp5E,EAAM2zE,UAAUP,sBAClCpzE,EAAM2zE,UAAU2K,mBAAqBt+E,EAAM2zE,UAAUyK,eAC9C,eAAkBp+E,EAAM2zE,UAAU2K,mBAC/B,eAAkBt+E,EAAM2zE,UAAUyK,kBACzCp+E,EAAM2zE,UAAUv9I,aAAaI,YAAc,GAAKwpE,EAAM2zE,UAAUwc,qBAChEnwF,EAAM2zE,UAAUv9I,aAAaI,cACjCwpE,EAAM2zE,UAAUP,mBAAmB32K,EAAI,EACvCujG,EAAM2zE,UAAUP,mBAAmB12K,EAAI,IAGtCsjG,EAAM2zE,UAAUoc,eACrB/vF,EAAM2zE,UAAUwc,mBAAqBnwF,EAAM2zE,UAAUyF,cACrDp5E,EAAM2zE,UAAUyF,cAAgBwE,EAChC59E,EAAM2zE,UAAUP,mBAAmB32K,EAAI,EACvCujG,EAAM2zE,UAAUP,mBAAmB12K,EAAI,GAa3C,GAXIkhL,GAAmB,IAAM,eAAkB59E,EAAM2zE,UAAU73K,UAAYkkG,EAAM2zE,UAAUv9I,aAAaioJ,qBAChGr+E,EAAM2zE,UAAUyF,gBAAkBp5E,EAAM2zE,UAAU0N,eAAkB5qL,KAAKk9K,UAAUyc,cACvFhP,GAAuB3qL,KAAKk9K,WAE3B,eAAkB3zE,EAAM2zE,UAAUsK,2BAA8B,eAAkBj+E,EAAM2zE,UAAUuK,6BACnGl+E,EAAM2zE,UAAUwK,iBAChB6R,EAActzL,EAAIsjG,EAAM2zE,UAAUsK,yBAClC+R,EAAcvzL,EAAIujG,EAAM2zE,UAAUuK,0BAClCl+E,EAAM2zE,UAAUyF,cAAgBp5E,EAAM2zE,UAAUyK,cAAgBp+E,EAAM2zE,UAAU8K,sBAEpFz+E,EAAM2zE,UAAUP,mBAAqBpzE,EAAMqwF,WAAWrwF,EAAM2zE,UAAUpvJ,cAAcxoB,MAAOikG,EAAM2zE,UAAUpvJ,cAAczoB,OAAQk0L,GAC7Hv5L,KAAKk9K,UAAUv9I,aAAak6J,gBAAkB75L,KAAKk9K,UAAUyc,eAAiB,eAAkBpwF,EAAM2zE,UAAU73K,SAC7GrF,KAAKk9K,UAAUpvJ,cAAczoB,OAAS,IAAK,CAC9CrF,KAAKk9K,UAAU4c,gBAAiB,EAChC95L,KAAKk9K,UAAU6c,iBAAmB5wL,KAAK6gC,MAAMhqC,KAAKk9K,UAAUpvJ,cAAczoB,OAAS,KACnF,IAAI8nB,EAA6E,oBAAnEntB,KAAKk9K,UAAUsG,OAAOxjL,KAAKk9K,UAAU6H,gBAAgBC,UAC/D,GAAK,EACL7H,EAA2D,IAA/Ch0K,KAAK8jC,IAAI,EAAGjtC,KAAKk9K,UAAU6c,kBAC3C/5L,KAAKk9K,UAAU8c,qBAAqBh0L,EAAKhG,KAAKk9K,UAAUpvJ,cAAcxoB,MAAQ,EAAM63K,EAAY,EAChGn9K,KAAKk9K,UAAU8c,qBAAqB/zL,EAAKjG,KAAKk9K,UAAUpvJ,cAAczoB,OAAS,EAAM83K,EAAY,EAAKhwJ,EAO1G,GALAo8E,EAAM0wF,cAAc1wF,EAAM2zE,UAAUyF,cAAep5E,EAAM2zE,UAAUP,mBAAoB,KAAMyc,GACxF,eAAkB7vF,EAAM2zE,UAAUwc,qBAChCnwF,EAAM2zE,UAAUwc,qBAAuBnwF,EAAM2zE,UAAUv9I,aAAaI,aACvEwpE,EAAM2zE,UAAUwc,mBAAqBnwF,EAAM2zE,UAAUv9I,aAAaI,YAElEwpE,EAAM2zE,UAAUgd,cAAe,CAC/B,IAAIlX,EAAiBz5E,EAAM2zE,UAAUgd,cAAcC,cAAcn6L,KAAKk9K,UAAW2D,EAAYt3E,EAAM2zE,UAAUyF,eACxG,eAAkBK,IACnBz5E,EAAM6wF,YAAY11L,YAAYs+K,GAGtC,GAAIz5E,EAAM2zE,UAAUmd,qBAAsB,CACtC,IAAIC,EAAwB/wF,EAAM2zE,UAAUmd,qBAAqBE,iBAAiBhxF,EAAMgzE,aAAchzE,EAAM2zE,UAAUyF,cAAe9B,GAChI,eAAkByZ,IACnB/wF,EAAM6wF,YAAY11L,YAAY41L,GAGlC/wF,EAAM2zE,UAAUsc,cAChBjwF,EAAM2zE,UAAUsc,aAAa1yK,aAAa9mB,KAAKk9K,UAAW3zE,EAAM6wF,YAAavZ,EAAYt3E,EAAM2zE,UAAUyF,cAAe,MAE5Hp5E,EAAMixF,uBAAuBjxF,EAAM6wF,YAAavZ,GAChDt3E,EAAMyvF,WAAWt0L,YAAY6kG,EAAM6wF,cAEvC9B,EAAWp4L,UAAUg5L,cAAgB,SAAUne,EAAO8F,GAClD,IAAIx9K,EAAQrD,KAIZ,GAHAA,KAAKo6L,YAAep6L,KAAKk9K,UAAU53J,SAASY,YAAY,CACpD5a,GAAItL,KAAKk9K,UAAU95K,QAAQkI,GAAK,eAAiBu1K,KAEhD7gL,KAAKk9K,UAAU3xE,kBAAmB,CACnC,IAAIkvF,EAAWz6L,KAAKk9K,UAAUpoK,gBAAkB9U,KAAKk9K,UAAU95K,QAAQkI,GACvE,IAA6C,IAAzCqyG,UAAUn8C,UAAUx9D,QAAQ,QAAgB,CAE5C,IAAIsZ,OAAO,EACX,IACIA,EAAO/W,OAAOsxC,aAElB,MAAO1qC,GACHmQ,EAAO,MAEN,eAAkBA,IAAS/W,OAAOsxC,aAAaC,QAAQ2iJ,IACxDl0L,OAAOsxC,aAAa6iJ,WAAWD,IAI3C,IAAIlpI,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAM2oK,EAAgBlsK,MAAOo0K,EAC5C9F,MAAOA,EAAOnB,KAAM55K,KAAKk9K,UAAWvmK,QAASokK,EAAMpkK,SAEvD3W,KAAKk9K,UAAUj1K,QAAQ,iBAAkBspD,GAAW,SAAU1hD,GAC1D,IAAK0hD,EAAU9iD,QAAU8iD,EAAU56C,QAO/B,GANwB,QAApBokK,EAAMiK,YACNjK,EAAM4f,YAAc,0DAEA,WAApB5f,EAAMiK,YACNjK,EAAM4f,YAAc,sEAEA,aAApB5f,EAAMiK,WAA6B,eAAkBjK,EAAM9C,aAAe,eAAkB8C,EAAM4f,cAAsC,KAAtB5f,EAAM4f,aACxH,GAAwB,SAApB5f,EAAMiK,WAAwB3hL,EAAM+1L,KACpC,IAAK,eAAkBre,EAAM4f,cAAgB5f,EAAM4f,YAAY32L,QAAQ,YAAc,EAAG,CACpF,IAAIo1L,EAAO,IAAI,GAAQ/1L,EAAM65K,WAC7B75K,EAAMu3L,mBAAmB7f,EAAO8F,EAAYx9K,EAAO+1L,QAGnD/1L,EAAM81L,gBAAgB91L,EAAO03K,EAAO8F,QAGvC,GAAI9F,EAAMx6K,KAAOw6K,EAAMx6K,IAAII,OAAS,EAAG,CAExC,IAAIkuK,EAAUxrK,EACVw3L,EAAS,IAAI,GAAQx3L,EAAM65K,WAC3B4d,EAAiC,oBAAtB/f,EAAMggB,YAAoC,2BAA6BhgB,EAAMggB,YACxFj/J,EAAM,yDAA2Dg/J,EACjEE,EAAO,IAAI,OAAM,CACjBl/J,IAAKA,EAAM,6DAA+Di/I,EAAMx6K,MAGpFy6L,EAAKC,UAAY,SAAUzoK,GAEvB,IAAI0oK,EAAW1oK,EAAK,gBAAgB,GAAG,aAAa,GAChDkhB,EAAWwnJ,EAAS,YACpBlF,EAAakF,EAAS,sBACtB5Q,EAAU4Q,EAAS,WACN,OAAbxnJ,QAAkCnoC,IAAbmoC,GAA0BA,IAAamnJ,EAAOnnJ,WACnEmnJ,EAAOnnJ,SAAWA,GAEH,OAAfsiJ,QAAsCzqL,IAAfyqL,GAA4BA,IAAe6E,EAAO7E,aACzE6E,EAAO7E,WAAaA,GAER,OAAZ1L,QAAgC/+K,IAAZ++K,GAAyBA,IAAYuQ,EAAOvQ,UAChEuQ,EAAOvQ,QAAUA,GAErBzb,EAAQqO,UAAU,WAAa2d,EAC/BhsB,EAAQsqB,gBAAgBtqB,EAASkM,EAAO8F,EAAYga,GACpDx3L,EAAM65K,UAAUie,kBACZ93L,EAAM65K,UAAUx9I,YAAer8B,EAAM65K,UAAUoR,gBAAkBjrL,EAAM65K,UAAU5gG,OACjFj5E,EAAM65K,UAAUx9I,WAAW07J,eAAe/3L,EAAM65K,WAAW,IAGnE8d,EAAKK,aAIT,IAAK,eAAkBtgB,EAAM9C,cAAgB,eAAkB8C,EAAM9C,UAAU,iBAC1E,eAAkB8C,EAAM9C,UAAU,cAAe,CAElD,IAAIqjB,GAAgB,eAAkBvgB,EAAM9C,UAAU,gBAElD8C,EAAM9C,UAAU,cAAct3K,OAAS,EAAIo6K,EAAM9C,UAAU,cAC3D8C,EAAM9C,UAAU,YACpB8C,EAAMwL,UAAY,GAElB,IAAIgV,EAAOxgB,EAAM9C,UAAU,SACtB,eAAkBsjB,IAASxgB,EAAM0a,YAClCpyL,EAAM65K,UAAU5B,cAAgB,IAAIqC,GAAY,CAAEjiK,IAAK6/K,EAAK,GAAG,GAAI5/K,IAAK4/K,EAAK,GAAG,IAAM,CAAE7/K,IAAK6/K,EAAK,GAAG,GAAI5/K,IAAK4/K,EAAK,GAAG,KAEjH,eAAkBl4L,EAAM65K,UAAU5B,iBAAmBgL,GAAagV,IACvEj4L,EAAMm4L,oBAAoBF,GAE9Bj4L,EAAMo4L,wBAAwB5a,EAAYya,OAKrDt7L,KAAKk9K,UAAU8E,UAGXhiL,KAAK+4L,gBACV/4L,KAAK+4L,cAAcr0L,YAAY1E,KAAKg5L,YACpCh5L,KAAKk9K,UAAU5B,cAAgB,MAJ/Bt7K,KAAKk9K,UAAUh4I,UAAUxgC,YAAY1E,KAAKg5L,aAOlDV,EAAWp4L,UAAU06L,mBAAqB,SAAU7f,EAAO8F,EAAY6a,EAAOtC,GAC1EA,EAAK1lJ,SAAWqnI,EAAM4f,YACtBvB,EAAKpD,WAAa,CAAC,KAAM,KAAM,KAAM,MACrCoD,EAAK9O,QAAU,KACfoR,EAAMxe,UAAU,WAAakc,EAC7BsC,EAAMvC,gBAAgBuC,EAAO3gB,EAAO8F,EAAYuY,GAChDp5L,KAAKk9K,UAAUie,kBACXn7L,KAAKk9K,UAAUx9I,YAAe1/B,KAAKk9K,UAAUoR,gBAAkBtuL,KAAKk9K,UAAU5gG,OAC9Et8E,KAAKk9K,UAAUx9I,WAAW07J,eAAep7L,KAAKk9K,WAAW,IAGjEob,EAAWp4L,UAAUy7L,kBAAoB,SAAUC,EAAgBlvJ,GAC/D,GAAiC,MAA7BkvJ,EAAex8K,YAAwC,MAAlBw8K,EAGrC,IADA,IAAIC,EAAmBD,EAAex8K,WAC7Bpe,EAAI,EAAGA,EAAI66L,EAAiBl7L,OAAQK,IAAK,CAC9C,IAAI86L,EAAe,eAAkBF,EAAerF,WAGhDzvL,WAAW80L,EAAex8K,WAAWpe,GAAG46L,EAAerF,YAHSqF,EAAerF,UAAUvyL,QAAQ,MAAQ,EACzGkrB,OAAOwwJ,GAAmBkc,EAAex8K,WAAWpe,GAAI46L,EAAerF,YACvEzvL,WAAW80L,EAAex8K,WAAWpe,GAAG46L,EAAerF,YAEjD,IAANv1L,EACI86L,EAAapvJ,EAAM/wB,IACnB+wB,EAAM/wB,IAAMmgL,EAEPA,EAAapvJ,EAAMhxB,MACxBgxB,EAAMhxB,IAAMogL,GAIhBpvJ,EAAM/wB,IAAM+wB,EAAMhxB,IAAMogL,IAMxCxD,EAAWp4L,UAAUu7L,wBAA0B,SAAU5a,EAAYkb,GACjE,IAAI14L,EAAQrD,KACZA,KAAKg8L,cAAgB,GACf1V,GAAayV,KACf/7L,KAAKq5L,cAAgBr5L,KAAKkiL,gBAAgBliL,KAAKu8K,eAEnDv8K,KAAKi8L,WAAa,KAClB,IAAI7jB,EAAgBp4K,KAAKu8K,aAAanE,cACjBp4K,KAAKu8K,aAAaqf,eAEvCh8L,MAAMM,UAAU+uF,QAAQ3rF,KAAKy4L,GAAY,SAAUG,EAAczvL,GAC7D,IAAK,eAAkByvL,EAAa,eAAiB,eAAkBA,EAAa,gBAAiB,CACjG,IAAI1tL,EAAQ,eAAkB0tL,EAAa,aAAkDA,EAAa,QAAhDA,EAAa,YAAY,QAE/EC,EAAU,eAAkBD,EAAa,aACzCA,EAAa,eAD2CA,EAAa,YAAY,eAGjF5+K,EAAO4+K,EAAa,YAEpB73H,EAAa63H,EAAa,cAC9B74L,EAAM+4L,eAAe5tL,EAAM2tL,EAAQ7+K,EAAM+mD,OAGjDrkE,KAAKu8K,aAAa0f,WAAaj8L,KAAKi8L,WAChC,eAAkBj8L,KAAKk9K,UAAU+K,oBAAsBjoL,KAAKu8K,aAAakZ,cACzEz1L,KAAKk9K,UAAU+K,kBAAoBjoL,KAAKi8L,YAE5C,IAAI7+K,EAASg7J,EAAc/2F,QAAQ1gF,OAAS,EAAIy3K,EAAc/2F,QAAU6wG,GAAclyL,KAAKk9K,UAAUhkI,OACjGmjJ,EAAmB,eAAc,MAAO,CACxC/wL,GAAItL,KAAKk9K,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,wBAC9Dr8K,UAAWxE,KAAKk9K,UAAU95K,QAAQkI,GAAK,cAO3C,GALA+wL,EAAiBt1L,MAAMwsC,QAAU,kEACpBvzC,KAAKk9K,UAAU9B,YAAYn1K,EADP,WAEnBjG,KAAKk9K,UAAU9B,YAAYp1K,EAFR,aAGjBhG,KAAKk9K,UAAU9B,YAAY/1K,OAHV,YAIlBrF,KAAKk9K,UAAU9B,YAAY91K,MAAQ,MACP,IAAvCtF,KAAKu8K,aAAagK,UAAU5lL,OA2M5B,IA1MA,IAAIwxC,EAAU,SAAUnxC,GACpB,IAQIk/K,EAEAC,EACAz6H,EAXAliC,OAAI,EACJ84K,EAAc,CACd3mL,MAAOyiK,EAAchzJ,OAAOzP,MAC5BrQ,MAAO8yK,EAAchzJ,OAAO9f,MAC5BkuC,QAAS4kI,EAAchzJ,OAAOouB,SAG9B+oJ,EAAmBnqJ,EAAOmqI,aAAagK,UAAUvlL,GAMjD41E,EAAO,GAEPx2D,EAAQg4J,EAAsB,SAAIh7J,EAAOpc,EAAIoc,EAAOzc,QACnDy3K,EAAch4J,MAAQgyB,EAAO8qI,UAAUhtJ,WAAWgjK,UAClB,OAAjC9a,EAAckI,gBAA4B,eAAkBic,EAAiB,eAC7E/4K,EAAIqiK,GAEJzzI,EAAOmqI,aAAan9J,WAAYm9K,EAAiB,YAAanqJ,EAAOmqI,aAAapE,cAAe/lI,EAAOmqI,aAAarE,kBAAmB9lI,EAAOmqI,cACrI,OAAN/4J,GAAoD,IAAtC40J,EAAcue,aAAah2L,OACzCyf,EAASgyB,EAAOmqI,aAAanE,cAAckI,eAAet8K,QAAQ,MAAQ,EACrE07K,GAAmBttI,EAAOmqI,aAAan9J,WAAWoE,GAAI40J,EAAckI,gBACrEluI,EAAOmqI,aAAan9J,WAAWoE,GAAG40J,EAAckI,gBAE/Cic,EAAiB,YAAYnkB,EAAckI,iBAEN,IAA1CluI,EAAOmqI,aAAan9J,WAAWze,QAAsD,IAAtCy3K,EAAcue,aAAah2L,SAC1Eyf,EAASgyB,EAAOmqI,aAAanE,cAAckI,eAAet8K,QAAQ,MAAQ,EACrE07K,GAAmB6c,EAAiB,YAAankB,EAAckI,gBAChEic,EAAiB,YAAYnkB,EAAckI,iBAEnDlgK,EAAQ,eAAkBA,GAAgBg4J,EAAch4J,MAAQgyB,EAAO8qI,UAAUhtJ,WAAWgjK,UAA1D9yK,GAEtC,IAAIo8K,EAAUpqJ,EAAO8qI,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,eAAiB7/K,EAAI,cAAgBwiB,EAE3Gi5K,EAAkBrqJ,EAAOkkJ,qBAAqBlkJ,EAAOmqI,aAAcggB,EAAiB,YAAan8K,GACrGA,EAA2D,oBAApD3gB,OAAOS,UAAU0R,SAAStO,KAAKm5L,IAA2C,eAAkBA,EAAgB,SACnFr8K,EAA1Bq8K,EAAgB,SAClBrqJ,EAAOmqI,aAAanE,cAAcskB,sBAAwBtqJ,EAAOmqI,aAAanE,cAAciV,wBAC5F7pK,EAAIqiK,GAEJzzI,EAAOmqI,aAAan9J,WAAYm9K,EAAiB,YAAanqJ,EAAOmqI,aAAapE,cAAe/lI,EAAOmqI,aAAarE,kBAAmB9lI,EAAOmqI,cACrI,OAAN/4J,IACI4uB,EAAOmqI,aAAan9J,WAAWoE,GAAG40J,EAAcskB,wBAChDJ,EAAY3mL,MAAQy8B,EAAOmqI,aAAan9J,WAAWoE,GAAG40J,EAAcskB,uBAEpEtqJ,EAAOmqI,aAAan9J,WAAWoE,GAAG40J,EAAciV,wBAChDiP,EAAYh3L,MAAQ8sC,EAAOmqI,aAAan9J,WAAWoE,GAAG40J,EAAciV,yBAIhF,IAAI75I,EAA+D,oBAApD/zC,OAAOS,UAAU0R,SAAStO,KAAKm5L,IACtC,eAAkBA,EAAgB,YAA4CrkB,EAAc5kI,QAA3CipJ,EAAgB,WACrElrI,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAM4oK,EAAgBnsK,MAAOzL,EAC5Csc,KAAM80B,EAAOmqI,aAAan9J,WAAagzB,EAAOmqI,aAAan9J,WAAWoE,GAAK,KAC3Eo2J,KAAMxnI,EAAO8qI,UACbpxJ,MAAOssJ,EAAeh4J,KAAMA,EAC5BgF,OAAQ,CAAE9f,MAAOg3L,EAAYh3L,MAAOqQ,MAAO2mL,EAAY3mL,MAAO69B,QAAS8oJ,EAAY9oJ,UAGnFmpJ,EAAwB,SAAUprI,GAClC,IA6CIqrI,EA7CAC,EAAe,eAAkBN,EAAiB,oBAC/B,eAAkBA,EAAiB,SAAWA,EAAiB,GAAG,QAAUA,EAAiB,QAA9G,eAsBN,GArBAM,EAA+B,YAAhBA,GAA6C,iBAAhBA,EAAkC,UAAYA,EACrFtrI,EAAU9iD,QAcX8iD,EAAUnxC,KAAOA,EACjBmxC,EAAUnsC,OAAOzP,MAAQyiK,EAAchzJ,OAAOzP,MAC9C47C,EAAUnsC,OAAO9f,MAAQ8yK,EAAchzJ,OAAO9f,MAC9CjC,EAAM65K,UAAUsG,OAAO3C,GAAYzI,cAAchzJ,OAASgzJ,EAAchzJ,SAhBxEmsC,EAAUnxC,KAA0B,YAAnBmxC,EAAUnxC,KAAqBmxC,EAAUzlC,MAAM1L,MAC5D/c,EAAM65K,UAAUhtJ,WAAWgjK,UAAY3hI,EAAUnxC,KACrDmxC,EAAUnsC,OAAOzP,MAAmC,YAA3B47C,EAAUnsC,OAAOzP,MACtC47C,EAAUzlC,MAAM1G,OAAOzP,MAAQ47C,EAAUnsC,OAAOzP,MACpD47C,EAAUnsC,OAAO9f,MAAmC,IAA3BisD,EAAUnsC,OAAO9f,MAAcisD,EAAUzlC,MAAM1G,OAAO9f,MAAQisD,EAAUnsC,OAAO9f,MACpG,eAAkB8yK,EAAcskB,wBAChCr5L,EAAM65K,UAAUsG,OAAO3C,GAAYzI,cAAchzJ,OAAOzP,MAAQ47C,EAAUnsC,OAAOzP,OAEjF,eAAkByiK,EAAciV,wBAChChqL,EAAM65K,UAAUsG,OAAO3C,GAAYzI,cAAchzJ,OAAO9f,MAAQisD,EAAUnsC,OAAO9f,QASzFisD,EAAUnsC,OAAOouB,QAAU,eAAkB+d,EAAUnsC,OAAOouB,SAAWA,EAAU+d,EAAUnsC,OAAOouB,QAChGnwC,EAAM24L,cAAcr7L,OAAS,EAC7B+kD,EAAeriD,EAAM65K,UAAU53J,SAASY,YAAY,CAChD5a,GAAIjI,EAAM65K,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,IAAMgc,EAAc,SAAU92K,UAAW,KAE5G1iB,EAAM24L,cAAc3vL,KAAKq5C,QAGzB,IAAK,IAAIxX,EAAM,EAAGA,EAAM7qC,EAAM24L,cAAcr7L,OAAQutC,IAAO,CACvD,IAAI5O,EAAMj8B,EAAM24L,cAAc9tJ,GAC9B,GAAI5O,EAAIh0B,GAAGtH,QAAQ64L,IAAgB,EAAG,CAClCn3I,EAAepmB,EACf,MAEC,GAAI4O,GAAO7qC,EAAM24L,cAAcr7L,OAAS,EAAG,CAC5C+kD,EAAeriD,EAAM65K,UAAU53J,SAASY,YAAY,CAChD5a,GAAIjI,EAAM65K,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,IAAMgc,EAAc,WAEvFx5L,EAAM24L,cAAc3vL,KAAKq5C,GACzB,OAKZ,OAAQm3I,GACJ,IAAK,UACIN,EAAiB,mBASlB3lH,EAAOvzE,EAAMy5L,yBAAyBP,IARtC3lH,GAAQ,IAAO2lH,EAAiB,GAAG,SAAS,KAAQ,IAAOA,EAAiB,GAAG,SAAS,KAExFA,EAAiB11L,KAAI,SAAUoxK,GAC3BrhG,GAAQ,MAASqhG,EAAU,SAAS,KAAQ,IAAOA,EAAU,SAAS,SAO9ErhG,GAAQ,MACJA,EAAKj2E,OAAS,IACdu/K,EAAc,IAAIvgG,GAAW68G,EAASjrI,EAAUnxC,KAAMmxC,EAAUnsC,OAAO9f,MAAOisD,EAAUnsC,OAAOzP,MAAO69B,EAAS+d,EAAUnsC,OAAOouB,QAAS4kI,EAAc9xI,UAAWswC,GAClKgmH,EAAUv5L,EAAM65K,UAAU53J,SAASkhB,SAAS05I,IAEhD,MACJ,IAAK,aAEDqc,EAAiB11L,KAAI,SAAUk2L,EAAUtwL,GAEjCmqE,GADU,IAAVnqE,EACQ,KAAQswL,EAAS,SAAS,KAAQ,IAAOA,EAAS,SAAS,KAG3D,IAAOA,EAAS,SAAS,KAAQ,MAASA,EAAS,SAAS,KAAQ,OAGhFnmH,EAAKj2E,OAAS,IACdu/K,EAAc,IAAIvgG,GAAW68G,EAAS,cAAgB,eAAkBjrI,EAAUnsC,OAAO9f,OAAkC,EAAzBisD,EAAUnsC,OAAO9f,MAAY,eAAkBisD,EAAUnxC,MACvJmxC,EAAUnsC,OAAOzP,MAD8I47C,EAAUnxC,KACjJozB,EAAS+d,EAAUnsC,OAAOouB,QAAS4kI,EAAc9xI,UAAWswC,GACxFgmH,EAAUv5L,EAAM65K,UAAU53J,SAASkhB,SAAS05I,IAEhD,MACJ,IAAK,kBAEDqc,EAAiB11L,KAAI,SAAUm2L,GAE3BA,EAAcn2L,KAAI,SAAUk2L,EAAUtwL,GAE9BmqE,GADU,IAAVnqE,EACQ,KAAQswL,EAAS,SAAS,KAAQ,IAAOA,EAAS,SAAS,KAG3D,IAAOA,EAAS,SAAS,KAAQ,MAASA,EAAS,SAAS,KAAQ,UAIpFnmH,EAAKj2E,OAAS,IACdu/K,EAAc,IAAIvgG,GAAW68G,EAAS,cAAgB,eAAkBjrI,EAAUnsC,OAAO9f,OAAkC,EAAzBisD,EAAUnsC,OAAO9f,MAAY,eAAkBisD,EAAUnxC,MACvJmxC,EAAUnsC,OAAOzP,MAD8I47C,EAAUnxC,KACjJozB,EAAS+d,EAAUnsC,OAAOouB,QAAS4kI,EAAc9xI,UAAWswC,GACxFgmH,EAAUv5L,EAAM65K,UAAU53J,SAASkhB,SAAS05I,IAEhD,MACJ,IAAK,QAED,IAAIlyJ,EAAYuuK,EAAiB,SAC7BjP,EAA4D,aAA5CjqL,EAAM65K,UAAUsG,OAAO3C,GAAYryK,KACnD4pK,EAAckV,aAAelV,EAAckV,cAAgBjqL,EAAM65K,UAAU8E,UAC3E3+K,EAAM65K,UAAU5gG,MAAQj5E,EAAMg2L,eAClClZ,EAAgB,IAAIlC,GAAaue,EAASjrI,EAAUnxC,KAAMmxC,EAAUnsC,OAAQouB,EAASxlB,EAAU,KAAMA,EAAU,KAAMs/J,EAAclV,EAAc9xI,WACjJs2J,EAAUv5L,EAAM65K,UAAU53J,SAASyxD,WAAWopG,GAC9C,MACJ,IAAK,aAEDoc,EAAiB11L,KAAI,SAAUo2L,EAAgBxwL,GAE3C,IAAIuhB,EAAYivK,EAAe,SAC3B3P,EAA4D,aAA5CjqL,EAAM65K,UAAUsG,OAAO3C,GAAYryK,KAAuB4pK,EAAckV,aAAelV,EAAckV,cAAgBjqL,EAAM65K,UAAU8E,UAAY3+K,EAAM65K,UAAU5gG,MAAQj5E,EAAMg2L,eACnMlZ,EAAgB,IAAIlC,GAAcue,EAAU,cAAgB/vL,EAAQ8kD,EAAUnxC,KAAMmxC,EAAUnsC,OAAQouB,EAASxlB,EAAU,KAAMA,EAAU,KAAMs/J,EAAclV,EAAc9xI,WAC3Ks2J,EAAUv5L,EAAM65K,UAAU53J,SAASyxD,WAAWopG,GAC9C98K,EAAM65L,uBAAuBx3I,EAAck3I,EAASC,EAAaN,EAAkBv7L,MAEvF,MACJ,IAAK,OACD41E,EAAO2lH,EAAiB,SACxBrc,EAAc,IAAIvgG,GAAW68G,EAASjrI,EAAUnxC,KAAMmxC,EAAUnsC,OAAO9f,MAAOisD,EAAUnsC,OAAOzP,MAAO69B,EAAS+d,EAAUnsC,OAAOouB,QAAS4kI,EAAc9xI,UAAWswC,GAClKgmH,EAAUv5L,EAAM65K,UAAU53J,SAASkhB,SAAS05I,GAC5C,MAEH,eAAkB0c,IAA4B,eAAhBC,GAC/Bx5L,EAAM65L,uBAAuBx3I,EAAck3I,EAASC,EAAaN,EAAkBv7L,GAEnFA,IAAMqC,EAAMk5K,aAAagK,UAAU5lL,OAAS,GAC5C0C,EAAM85L,cAActc,EAAYzjK,EAAQ2+K,EAAYM,IAG5DM,EAAsB/2L,KAAKwsC,GAC3BA,EAAO8qI,UAAUj1K,QAAQ,iBAAkBspD,EAAWorI,IAEtDvqJ,EAASpyC,KACJgB,EAAI,EAAGA,EAAIhB,KAAKu8K,aAAagK,UAAU5lL,OAAQK,IACpDmxC,EAAQnxC,QAIZhB,KAAKm9L,cAActc,EAAYzjK,EAAQ2+K,EAAYM,IAa3D/D,EAAWp4L,UAAUg9L,uBAAyB,SAAUx3I,EAAck3I,EAASC,EAE/EN,EAAkB9vL,GAId,IAHA,IAEI43D,EAFA7R,EAAoF,mBAAxE/yD,OAAOS,UAAU0R,SAAStO,KAAKtD,KAAKu8K,aAAarE,mBAC7Dl4K,KAAKu8K,aAAarE,kBAAoB,CAACl4K,KAAKu8K,aAAarE,mBAEpDr0J,EAAI,EAAGA,EAAI2uC,EAAS7xD,OAAQkjB,IACjC,IAAK,eAAkB04K,EAAiB,aAAc,CAClDl4H,EAAa7R,EAAS3uC,GACtB,MAiBR,GAdA+4K,EAAQjyL,aAAa,aAAiB,eAAkB4xL,EAAiB,aACxB,GAA5CA,EAAiB,YAAYl4H,IAC9BrkE,KAAKu8K,aAAaj5E,kBAAkB78E,QAAUzmB,KAAKu8K,aAAa6gB,kBAAkB32K,QAClFm2K,EAAQpvF,SAAWxtG,KAAKk9K,UAAU1vE,SAClCovF,EAAQjyL,aAAa,OAAQ,UAC7BiyL,EAAQ71L,MAAM2sE,OAAS1zE,KAAKu8K,aAAa6gB,kBAAkB32K,SAAWzmB,KAAKu8K,aAAaj5E,kBAAkB78E,OAAS,UAAY,WAG/Hm2K,EAAQjyL,aAAa,OAAQ,UAEb,eAAhBkyL,GAAgD,oBAAhBA,IAChCD,EAAQ71L,MAAMwsC,QAAU,gBAE5BimF,GAAkBx5H,KAAKk9K,UAAUmgB,kBAAmBr9L,KAAKk9K,UAAUsI,oBAAqBoX,EAAS,0BAC7F58L,KAAKk9K,UAAUogB,sBACf,IAASz5K,EAAI,EAAGA,EAAI7jB,KAAKk9K,UAAUogB,sBAAsB38L,OAAQkjB,IAAK,CAClE,IAAI05K,EAAgBv9L,KAAKk9K,UAAU1+I,eAAeg/J,qBAAqBC,mBACnEz9L,KAAKu8K,aAAanE,cAAgBp4K,KAAKk9K,UAAU1+I,eAAeg/J,qBAChEx9L,KAAKk9K,UAAUogB,sBAAsBz5K,KAAO+4K,EAAQtxL,KACpDsxL,EAAQjyL,aAAa,OAAQ4yL,EAAcn9K,MAC3Cw8K,EAAQjyL,aAAa,SAAU4yL,EAAcn4K,OAAOzP,OACpDinL,EAAQjyL,aAAa,eAAiB4yL,EAAqB,QAAE3rL,YAC7DgrL,EAAQjyL,aAAa,kBAAmB,eAAkB4yL,EAAcn4K,OAAOouB,SAAW+pJ,EAAc/pJ,QAAU+pJ,EAAcn4K,OAAOouB,SAAS5hC,YAChJgrL,EAAQjyL,aAAa,gBAAiB,eAAkB4yL,EAAcn4K,OAAO9f,OAAS,EAAIi4L,EAAcn4K,OAAO9f,OAAOsM,aAIlI8zC,EAAahhD,YAAYk4L,IAW7BtE,EAAWp4L,UAAUi9L,cAAgB,SAErCtc,EAAYzjK,EAAQ2+K,EAAYM,GAC5B,IACIqB,EADAr6L,EAAQrD,KAKZ,GAHIA,KAAKk9K,UAAUgd,eACfl6L,KAAKg8L,cAAc3vL,KAAKrM,KAAKk9K,UAAUgd,cAAcC,cAAcn6L,KAAKk9K,UAAW2D,EAAa7gL,KAAKk9K,UAAU8E,UAAY74K,KAAK6gC,MAAMhqC,KAAKq5L,eAAiBr5L,KAAKq5L,gBAEjKr5L,KAAKu8K,aAAaqf,eAAej7L,QAAUX,KAAKk9K,UAAUygB,aAoB1D,IAnBA,IACIC,EADAxyJ,EAAWprC,KAAKu8K,aAAaqf,eAAej7L,OAE5CigG,EAAU,SAAU/8E,GACpB+5K,EAAW/6D,EAAO05C,aAAaqf,eAAe/3K,GAC9C65K,EAAU76D,EAAOq6C,UAAU53J,SAASY,YAAY,CAC5C5a,GAAIu3H,EAAOq6C,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,iBAAmBh9J,IAEvF,IAAI6oB,EAAQ,CAAEhxB,IAAK,EAAGC,IAAK,GAC3BknH,EAAO84D,kBAAkBiC,EAAUlxJ,GAEnC,IAAImvJ,EAAmB+B,EAASx+K,WAEhCyjH,EAAOq6C,UAAUygB,aAAaE,iBAAmB,GACjDhC,EAAiBh1L,KAAI,SAAUi3L,EAAY98L,GACvCqC,EAAM06L,aAAa16L,EAAMk5K,aAAcuhB,EAAY1gL,EAAOpc,EAAIoc,EAAOzc,QAAS+rC,EAAO7oB,EAAG7iB,EAAG08L,EAAS7c,EAAY+c,MAEpH/6D,EAAOm5D,cAAc3vL,KAAKqxL,IAE1B76D,EAAS7iI,KACJ6jB,EAAI,EAAGA,EAAIunB,EAAUvnB,IAC1B+8E,EAAQ/8E,GAGX7jB,KAAKk9K,UAAUsc,eAAiBx5L,KAAKk9K,UAAU8E,WAAchiL,KAAKk9K,UAAUv9I,aAAalZ,QAC1FzmB,KAAKk9K,UAAUsc,aAAaC,qCAAqCz5L,KAAKk9K,UAAUgO,kBAEpF,IAAIl5J,EAAShyB,KAAKk9K,UAAU53J,SAASY,YAAY,CAC7C5a,GAAItL,KAAKk9K,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,0BAGlE,GADA7uJ,EAAMjrB,MAAMiqC,cAAgB,OACxBhxC,KAAKk9K,UAAUr4J,iBAAmB7kB,KAAKu8K,aAAayhB,kBAAkBrnL,QAAS,CAE/E,IAAIsnL,EAAc,GAElBlC,EAAWl1L,KAAI,SAAU01L,EAAkBv7L,GACvCqC,EAAM66L,YAAY76L,EAAMk5K,aAAcsE,EAAY0b,EAAkBvqK,EAAOhxB,EAAGq7L,EAAkB4B,MAEpGj+L,KAAKg8L,cAAc3vL,KAAK2lB,GAExBhyB,KAAKk9K,UAAUmd,sBACfr6L,KAAKg8L,cAAc3vL,KAAKrM,KAAKk9K,UAAUmd,qBAAqBE,iBAAiBv6L,KAAKu8K,aAAcv8K,KAAKq5L,cAAexY,IAExH7gL,KAAKg8L,cAAcn1L,KAAI,SAAUzD,GAC7BC,EAAM+2L,YAAY11L,YAAYtB,MAE9BpD,KAAKk9K,UAAUsc,cACfx5L,KAAKk9K,UAAUsc,aAAa1yK,aAAa9mB,KAAKk9K,UAAWl9K,KAAKo6L,YAAavZ,EAAa7gL,KAAKk9K,UAAU8E,UAAY74K,KAAK6gC,MAAMhqC,KAAKq5L,eAC/Hr5L,KAAKq5L,cAAgB,MAE7Br5L,KAAKw6L,uBAAuBx6L,KAAKo6L,YAAavZ,GAC9C7gL,KAAKg5L,WAAWt0L,YAAY1E,KAAKo6L,cAcrC9B,EAAWp4L,UAAUg+L,YAAc,SAAUnjB,EAAO8F,EAEpD/0J,EAAOkG,EAAOi5J,EAAYoR,EAAkB8B,GACxCn+L,KAAKk9K,UAAUr4J,gBAAgBq5K,YAAYnjB,EAAO8F,EAAY/0J,EAAOivJ,EAAMwL,UAAWv0J,EAAOqqK,EAAkBpR,EAAYkT,IAS/H7F,EAAWp4L,UAAU48L,yBAA2B,SAAUP,GAItD,IAHA,IAEIzwK,EAFA8qD,EAAO,GAGF/yD,EAAI,EAAGA,EAAI04K,EAAiB57L,OAAQkjB,IACzC+yD,GAAQ,IAAO2lH,EAAiB14K,GAAG,GAAG,SAAS,KAAQ,IAAO04K,EAAiB14K,GAAG,GAAG,SAAS,KAE9FiI,EAAQywK,EAAiB14K,GAEzBiI,EAAMjlB,KAAI,SAAUoxK,GAChBrhG,GAAQ,MAASqhG,EAAU,SAAS,KAAQ,IAAOA,EAAU,SAAS,QAG9E,OAAOrhG,GAgBX0hH,EAAWp4L,UAAU69L,aAAe,SAEpChjB,EAAO+iB,EAAYnoL,EAAO+2B,EAAO0xJ,EAAa3hB,EAAWzqJ,EAAO6uJ,EAAY+a,GACxE,GAAI,eAAkB57L,KAAKk9K,UAAUygB,gBAAkB/B,EAAejlL,QAClE,OAAO,KAEXhB,EAAQimL,EAAex7K,KAAOw7K,EAAex7K,KAAOzK,EACpD3V,KAAKk9K,UAAUygB,aAAaryL,GAAKtL,KAAKk9K,UAAU95K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBACvFud,EAAc,cAAgB3hB,EAClCz8K,KAAKk9K,UAAUygB,aAAaI,aAAanC,EAAgBkC,EAAYnoL,EAAO+2B,EAAO0xJ,EAAa3hB,EAAWoE,EAAY9F,EAAO/oJ,EAAOhyB,KAAKk9K,UAAUygB,aAAaryL,KAWrKgtL,EAAWp4L,UAAUo2L,qBAAuB,SAAUvb,EAAOjvJ,EAAOnW,GAEhE,GADAA,EAAQA,GAAgBolK,EAAM3C,cAAch4J,KACI,IAA5C26J,EAAM3C,cAAcue,aAAah2L,QAAgB,eAAkBo6K,EAAM37J,YACzE,OAAOzJ,EAGX,IAAIlJ,EAAQo5K,GAAqB9K,EAAM37J,WAAY0M,EAAOivJ,EAAM5C,cAAe4C,EAAM7C,kBAAmB6C,GACpG4b,EAAe,IAAI,GAAa32L,KAAKk9K,WACzC,OAAI,eAAkBnC,EAAM37J,WAAW3S,IAC5BkJ,EAEJghL,EAAaL,qBAAqBvb,EAAM3C,cAAe2C,EAAM37J,WAAW3S,GAAQkJ,IAG3F2iL,EAAWp4L,UAAUk8L,eAAiB,SAAU5tL,EAAM6vL,EAAa/gL,EAAM+mD,GACrE,IACIu2G,EACAC,EAFAx3K,EAAQrD,KAIRs+L,EAAU,GACd,OAAQ9vL,EAAK+T,eACT,IAAK,UAED+7K,EAAUt+L,KAAKu+L,oBAAoBF,EAAY,GAAI/gL,EAAM+mD,GACrDi6H,EAAQ39L,OAAS,IACjB29L,EAAQ,YAAcj6H,EACtBi6H,EAAQ,QAAU9vL,EAClB8vL,EAAQ,oBAAqB,EAC7Bt+L,KAAKu8K,aAAagK,UAAUl6K,KAAKiyL,IAErC,MACJ,IAAK,eAGD,IADA,IAAIE,EAAoB,GACfx9L,EAAI,EAAGA,EAAIq9L,EAAY19L,OAAQK,IACpC,IAAK,IAAI6iB,EAAI,EAAGA,EAAIw6K,EAAYr9L,GAAGL,OAAQkjB,IAEvCy6K,EAAUt+L,KAAKu+L,oBAAoBF,EAAYr9L,GAAG6iB,GAAIvG,EAAM+mD,GACxDi6H,EAAQ39L,OAAS,GACjB69L,EAAkBnyL,KAAKiyL,GAInCE,EAAkB,YAAcn6H,EAChCm6H,EAAkB,QAAUhwL,EAC5BgwL,EAAkB,oBAAqB,EACvCx+L,KAAKu8K,aAAagK,UAAUl6K,KAAKmyL,GACjC,MACJ,IAAK,aACD,IAAIC,EAAoB,eAAkBz+L,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,OAEoC,EADtD,kBAAlDtF,KAAKu8K,aAAanE,cAAchzJ,OAAY,MACjDzT,SAAS3R,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,MAAO,IAAMtF,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,MAE5G+4L,EAAYx3L,KAAI,SAAU2Q,GACtBojK,EAAWpjK,EAAO,GAClBqjK,EAAYrjK,EAAO,GACnB,IAAIc,EAAQqiK,GAAkBC,EAAUC,EAAWx3K,EAAMg2L,cAAeh2L,EAAMk5K,aAAcl5K,EAAM65K,WAClG75K,EAAMq7L,aAAapmL,EAAOmmL,GAC1BH,EAAQjyL,KAAK,CACTiM,MAAOA,EAAO2iK,IAAKL,EAAUM,IAAKL,OAG1CyjB,EAAQ,YAAcj6H,EACtBi6H,EAAQ,QAAU9vL,EAClBxO,KAAKu8K,aAAagK,UAAUl6K,KAAKiyL,GACjC,MACJ,IAAK,kBACD,IAAIK,EAAiB,eAAkB3+L,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,OAEuC,EADtD,kBAAlDtF,KAAKu8K,aAAanE,cAAchzJ,OAAY,MACjDzT,SAAS3R,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,MAAO,IAAMtF,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,MAExGs5L,EAAkB,GAEtBP,EAAYx3L,KAAI,SAAUg4L,GACtBP,EAAU,GAEVO,EAAYh4L,KAAI,SAAU2Q,GACtBojK,EAAWpjK,EAAO,GAClBqjK,EAAYrjK,EAAO,GACnB,IAAIc,EAAQqiK,GAAkBC,EAAUC,EAAWx3K,EAAMg2L,cAAeh2L,EAAMk5K,aAAcl5K,EAAM65K,WAClG75K,EAAMq7L,aAAapmL,EAAOqmL,GAC1BL,EAAQjyL,KAAK,CACTiM,MAAOA,EAAO2iK,IAAKL,EAAUM,IAAKL,OAG1C+jB,EAAgBvyL,KAAKiyL,MAEzBM,EAAgB,YAAcv6H,EAC9Bu6H,EAAgB,QAAUpwL,EAC1BxO,KAAKu8K,aAAagK,UAAUl6K,KAAKuyL,GACjC,MACJ,IAAK,QACD,IAAIE,GAAoB,eAAkB9+L,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,OAEoC,EADtD,kBAAlDtF,KAAKu8K,aAAanE,cAAchzJ,OAAY,MACjDzT,SAAS3R,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,MAAO,IAAMtF,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,OACxD,EAA/CtF,KAAKu8K,aAAanE,cAAckV,aACrC1S,EAAWyjB,EAAY,GACvBxjB,EAAYwjB,EAAY,GACxB,IAAI/lL,EAAQqiK,GAAkBC,EAAUC,EAAW76K,KAAKq5L,cAAer5L,KAAKu8K,aAAcv8K,KAAKk9K,WAC/Fl9K,KAAK0+L,aAAapmL,EAAOwmL,GACzB9+L,KAAKu8K,aAAagK,UAAUl6K,KAAK,CAC7BiM,MAAOA,EAAO9J,KAAMA,EAAMysK,IAAKL,EAAUM,IAAKL,EAAWroH,SAAU6R,IAEvE,MACJ,IAAK,aACD,IAAI06H,GAAiB,eAAkB/+L,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,OAEuC,EADtD,kBAAlDtF,KAAKu8K,aAAanE,cAAchzJ,OAAY,MACjDzT,SAAS3R,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,MAAO,IAAMtF,KAAKu8K,aAAanE,cAAchzJ,OAAO9f,OACxD,EAA/CtF,KAAKu8K,aAAanE,cAAckV,aACrCgR,EAAU,GAEVD,EAAYx3L,KAAI,SAAU2Q,GACtBojK,EAAWpjK,EAAO,GAClBqjK,EAAYrjK,EAAO,GACnB,IAAIc,EAAQqiK,GAAkBC,EAAUC,EAAWx3K,EAAMg2L,cAAeh2L,EAAMk5K,aAAcl5K,EAAM65K,WAClG75K,EAAMq7L,aAAapmL,EAAOymL,GAC1BT,EAAQjyL,KAAK,CACTiM,MAAOA,EAAO2iK,IAAKL,EAAUM,IAAKL,OAG1CyjB,EAAQ,YAAcj6H,EACtBi6H,EAAQ,QAAU9vL,EAClBxO,KAAKu8K,aAAagK,UAAUl6K,KAAKiyL,GACjC,MACJ,IAAK,OACDt+L,KAAKu8K,aAAagK,UAAUl6K,KAAK,CAC7BiM,MAAOgF,EAAK,KAAM9O,KAAMA,EAAMgkD,SAAU6R,IAE5C,QAGZi0H,EAAWp4L,UAAUw+L,aAAe,SAAUpmL,EAAO0mL,GAC7C,eAAkBh/L,KAAKi8L,YACvBj8L,KAAKi8L,WAAa,CAAEvgL,IAAK,CAAE1V,EAAGsS,EAAMtS,EAAIg5L,EAAY/4L,EAAGqS,EAAMrS,EAAI+4L,GAAcrjL,IAAK,CAAE3V,EAAGsS,EAAMtS,EAAIg5L,EAC3F/4L,EAAGqS,EAAMrS,EAAI+4L,KAGrBh/L,KAAKi8L,WAAW,OAAO,KAAO9yL,KAAKuS,IAAI1b,KAAKi8L,WAAW,OAAO,KAAM3jL,EAAMtS,EAAIg5L,GAC9Eh/L,KAAKi8L,WAAW,OAAO,KAAO9yL,KAAKuS,IAAI1b,KAAKi8L,WAAW,OAAO,KAAM3jL,EAAMrS,EAAI+4L,GAC9Eh/L,KAAKi8L,WAAW,OAAO,KAAO9yL,KAAKwS,IAAI3b,KAAKi8L,WAAW,OAAO,KAAM3jL,EAAMtS,EAAIg5L,GAC9Eh/L,KAAKi8L,WAAW,OAAO,KAAO9yL,KAAKwS,IAAI3b,KAAKi8L,WAAW,OAAO,KAAM3jL,EAAMrS,EAAI+4L,KAGtF1G,EAAWp4L,UAAUgiL,gBAAkB,SAAUnH,GAC7C,IAAIkkB,EAMA3W,EACAD,EANA6W,EAAY,EACZC,EAAS,GACTC,EAAM,MACN3jJ,EAASz7C,KAAKk9K,UAAU5B,cACxBH,EAAU,IAAIp9F,GAAK/9E,KAAKk9K,UAAU9B,YAAY91K,MAAOtF,KAAKk9K,UAAU9B,YAAY/1K,OAAS,GAG7F,GAAIo2C,EAAQ,CACR,IAAIv+B,EAAQy9J,GAAkBl/H,EAAOm/H,SAASl/J,IAAK+/B,EAAOo/H,UAAUn/J,IAAK,KAAMq/J,EAAO/6K,KAAKk9K,WACvF//J,EAAMw9J,GAAkBl/H,EAAOm/H,SAASj/J,IAAK8/B,EAAOo/H,UAAUl/J,IAAK,KAAMo/J,EAAO/6K,KAAKk9K,WACzFoL,EAAYnrK,EAAIlX,EAAIiX,EAAMjX,EAC1BoiL,EAAWlrK,EAAInX,EAAIkX,EAAMlX,EACP,IAAdsiL,GAAgC,IAAbD,IACnBA,EAAWlN,EAAQ71K,MAAQ,EAC3BgjL,EAAYnN,EAAQ91K,aAIxBijL,EAAYD,EAAW,IAgB3B,OAbI4W,EADA3W,EAAYnN,EAAQ91K,OACRyB,WAAWqC,KAAK6a,IAAkE,IAA9DkL,OAAOisJ,EAAQ91K,OAAS6pB,OAAOo5J,EAAU12K,WAAawtL,KAAaxtL,WAAW3N,MAAM,KAAK,IACnHk7L,EAGMhkB,EAAQ91K,OAASijL,EAG7B4W,EADA7W,EAAWlN,EAAQ71K,MACPwB,WAAWqC,KAAK6a,IAAgE,IAA5DkL,OAAOisJ,EAAQ71K,MAAQ4pB,OAAOm5J,EAASz2K,WAAawtL,KAAaxtL,WAAW3N,MAAM,KAAK,IACjHk7L,EAGMhkB,EAAQ71K,MAAQ+iL,EAExBl/K,KAAKuS,IAAIwjL,EAAWD,IAEhC3G,EAAWp4L,UAAUs6L,uBAAyB,SAAU1Z,EAAcr0K,GAClE,IAAIsgL,EAEJ,GADA/sL,KAAKk9K,UAAU8L,cAAgB,QAC1B,eAAkBhpL,KAAKk9K,UAAU+K,oBAsCjC,GAAIjoL,KAAKk9K,UAAU8E,YAAc,eAAkBhiL,KAAKk9K,UAAU5gG,OACnE,IAAK,IAAIz4D,EAAI,EAAGA,EAAIi9J,EAAa9jI,kBAAmBn5B,IAEhD,GADAkpK,EAAYjM,EAAa71J,WAAWpH,KAC9BkpK,EAAUzhL,GAAGtH,QAAQ,mBAAqB,MACzC+oL,EAAUzhL,GAAGtH,QAAQ,kBAAoB,MACzC+oL,EAAUzhL,GAAGtH,QAAQ,0BAA4B,MACjD+oL,EAAUzhL,GAAGtH,QAAQ,gBAAkB,KACO,IAA7C+oL,EAAUzhL,GAAGtH,QAAQ,mBAA2B,CAC5C+hB,EAAY,UAAY/lB,KAAKk9K,UAAU5gG,MAA3B,iBAA2Dt8E,KAAKk9K,UAAUsM,eAAexjL,EACnG,IAAMhG,KAAKk9K,UAAUsM,eAAevjL,EAAI,MAC9C8mL,EAAUpiL,aAAa,YAAaob,QAhDM,CACtD,IAAI/iB,EAA6B,YAAlB,OAA8B,EAA6C,IAAxChD,KAAKu8K,aAAa/pI,mBAA6C,WAAlB,OAC3F,IAAOxyC,KAAKu8K,aAAa/pI,kBACzBkC,EAAuB,IAAb1xC,GAAkB,eAAkBhD,KAAKk9K,UAAUx9I,YACjE1/B,KAAKk9K,UAAUmiB,mBAAqBr/L,KAAKk9K,UAAU4L,mBAEnD,IAAI50G,OAAY,EAEZA,EADAl0E,KAAKk9K,UAAUv9I,aAAaI,WAAa,IAAM,eAAkB//B,KAAKk9K,UAAUx9I,YACpEmqJ,GAAiB7pL,KAAKk9K,UAAWl9K,KAAKu8K,aAAc7nI,GAGpDqtI,GAAa/hL,KAAKk9K,UAAWl9K,KAAKu8K,aAAc7nI,GAEhE,IAAI4nC,EAAQt8E,KAAKk9K,UAAUoR,cAAgBp6G,EAAU,SACjDzmD,EAAaztB,KAAKk9K,UAAUhrI,cAAgBgiC,EAAU,YAC1Dl0E,KAAKk9K,UAAUmiB,mBAAqBr/L,KAAKk9K,UAAUsM,eAAiB/7J,EACpEztB,KAAKk9K,UAAUoiB,UAAYt/L,KAAKk9K,UAAU5gG,MAAQA,EAClD,IAAK,IAAIt7E,EAAI,EAAGA,EAAI8/K,EAAa9jI,kBAAmBh8C,IAEhD,GADA+rL,EAAYjM,EAAa71J,WAAWjqB,KAC9B+rL,EAAUzhL,GAAGtH,QAAQ,mBAAqB,MACzC+oL,EAAUzhL,GAAGtH,QAAQ,kBAAoB,MACzC+oL,EAAUzhL,GAAGtH,QAAQ,0BAA4B,GAAK,CACzD,IAAI+hB,EAAY,UAAYu2D,EAAZ,iBACM7uD,EAAWznB,EAAI,IAAMynB,EAAWxnB,EAAI,MAC1D8mL,EAAUpiL,aAAa,YAAaob,GAChC/iB,EAAW,IAAM,eAAkBhD,KAAKk9K,UAAUx9I,cAE9Cw0C,EADAl0E,KAAKk9K,UAAUv9I,aAAaI,WAAa,EAC7B8pJ,GAAiB7pL,KAAKk9K,UAAWl9K,KAAKu8K,cAGtCwF,GAAa/hL,KAAKk9K,UAAWl9K,KAAKu8K,cAElDv8K,KAAKk9K,UAAU5gG,MAAQpI,EAAU,SACjCl0E,KAAKk9K,UAAU4L,mBAAqB9oL,KAAKk9K,UAAUsM,eAAiBt1G,EAAU,gBAsBlGokH,EAAWp4L,UAAUs7L,oBAAsB,SAAUjV,GACjD,IAAIljL,EAAQrD,KAEZJ,MAAMM,UAAU+uF,QAAQ3rF,KAAKijL,GAAW,SAAUnpH,EAAK3wD,GACnD,IAAK,eAAkB2wD,EAAI,eAAiB,eAAkBA,EAAI,gBAAiB,CAC/E,IAAI5uD,EAAQ,eAAkB4uD,EAAI,aAAyCA,EAAI,QAA9BA,EAAI,YAAY,QAE7DihI,EAAe,eAAkBjhI,EAAI,aAAgDA,EAAI,eAArCA,EAAI,YAAY,eACxE,OAAQ5uD,EAAK+T,eACT,IAAK,UAEDlf,EAAMk8L,iBAAiBlB,EAAY,IACnC,MACJ,IAAK,eAEDA,EAAYx3L,KAAI,SAAUyR,EAAO7L,GAC7BpJ,EAAMk8L,iBAAiBjnL,EAAM,OAEjC,MACJ,IAAK,kBAED+lL,EAAYx3L,KAAI,SAAU24L,EAAY/yL,GAElC+yL,EAAW34L,KAAI,SAAUyR,EAAO7L,GAC5BpJ,EAAMk8L,iBAAiBjnL,EAAO,kBAA6B,IAAV7L,SAGzD,MACJ,IAAK,aAED4xL,EAAYx3L,KAAI,SAAUyR,EAAO7L,GAC7BpJ,EAAMk8L,iBAAiBjnL,EAAO,aAAwB,IAAV7L,MAEhD,MACJ,IAAK,QACDpJ,EAAMk8L,iBAAiBlB,EAAa,SACpC,MACJ,IAAK,aAEDA,EAAYx3L,KAAI,SAAUyR,EAAO7L,GAC7BpJ,EAAMk8L,iBAAiBjnL,EAAO,aAAwB,IAAV7L,MAEhD,YAMpB6rL,EAAWp4L,UAAUq+L,oBAAsB,SAAUF,EAAa/gL,EAAM+mD,GACpE,IAAIhhE,EAAQrD,KAERs+L,EAAU,GACV7iJ,EAASz7C,KAAKk9K,UAAU5B,cAwB5B,OAtBA+iB,EAAYx3L,KAAI,SAAU4/C,GACtB,IAAIm0H,EAAWn0H,EAAa,GACxBo0H,EAAYp0H,EAAa,GAC7B,GAAKo0H,GAAap/H,EAAOo/H,UAAUn/J,KAAOm/J,GAAap/H,EAAOo/H,UAAUl/J,KAChEi/J,GAAYn/H,EAAOm/H,SAASl/J,KAAOk/J,GAAYn/H,EAAOm/H,SAASj/J,IAAM,CACzE,IAAIrD,EAAQqiK,GAAkBC,EAAUC,EAAWx3K,EAAMg2L,cAAeh2L,EAAMk5K,aAAcl5K,EAAM65K,WAC9F,eAAkB75K,EAAM44L,YACxB54L,EAAM44L,WAAa,CAAEvgL,IAAK,CAAE1V,EAAGsS,EAAMtS,EAAGC,EAAGqS,EAAMrS,GAAK0V,IAAK,CAAE3V,EAAGsS,EAAMtS,EAAGC,EAAGqS,EAAMrS,KAGlF5C,EAAM44L,WAAW,OAAO,KAAO9yL,KAAKuS,IAAIrY,EAAM44L,WAAW,OAAO,KAAM3jL,EAAMtS,GAC5E3C,EAAM44L,WAAW,OAAO,KAAO9yL,KAAKuS,IAAIrY,EAAM44L,WAAW,OAAO,KAAM3jL,EAAMrS,GAC5E5C,EAAM44L,WAAW,OAAO,KAAO9yL,KAAKwS,IAAItY,EAAM44L,WAAW,OAAO,KAAM3jL,EAAMtS,GAC5E3C,EAAM44L,WAAW,OAAO,KAAO9yL,KAAKwS,IAAItY,EAAM44L,WAAW,OAAO,KAAM3jL,EAAMrS,IAEhFq4L,EAAQjyL,KAAK,CACTiM,MAAOA,EACP2iK,IAAKL,EACLM,IAAKL,QAIVyjB,GAGXhG,EAAWp4L,UAAUq/L,iBAAmB,SAAUlB,EAAa7vL,EAAMixL,GACjE,IAAIp8L,EAAQrD,KACE,eAATwO,GAAkC,oBAATA,GAAyC,UAATA,GAA6B,eAATA,EAE9E5O,MAAMM,UAAU+uF,QAAQ3rF,KAAK+6L,GAAa,SAAUqB,GAC5C,eAAkBr8L,EAAM65K,UAAU5B,eAClCj4K,EAAM65K,UAAU5B,cAAgB,IAAIqC,GAAY,CAAEjiK,IAAKgkL,EAAc,GAAI/jL,IAAK+jL,EAAc,IAAM,CAAEhkL,IAAKgkL,EAAc,GAAI/jL,IAAK+jL,EAAc,MAG9Ir8L,EAAM65K,UAAU5B,cAAcV,SAASl/J,IAAMvS,KAAKuS,IAAIrY,EAAM65K,UAAU5B,cAAcV,SAASl/J,IAAKgkL,EAAc,IAChHr8L,EAAM65K,UAAU5B,cAAcV,SAASj/J,IAAMxS,KAAKwS,IAAItY,EAAM65K,UAAU5B,cAAcV,SAASj/J,IAAK+jL,EAAc,IAChHr8L,EAAM65K,UAAU5B,cAAcT,UAAUn/J,IAAMvS,KAAKuS,IAAIrY,EAAM65K,UAAU5B,cAAcT,UAAUn/J,IAAKgkL,EAAc,IAClHr8L,EAAM65K,UAAU5B,cAAcT,UAAUl/J,IAAMxS,KAAKwS,IAAItY,EAAM65K,UAAU5B,cAAcT,UAAUl/J,IAAK+jL,EAAc,SAKrHD,GAAwB,UAATjxL,IAAqB,eAAkBxO,KAAKk9K,UAAU5B,eACtEt7K,KAAKk9K,UAAU5B,cAAgB,IAAIqC,GAAY,CAAEjiK,IAAK2iL,EAAY,GAAI1iL,IAAK0iL,EAAY,IAAM,CAAE3iL,IAAK2iL,EAAY,GAAI1iL,IAAK0iL,EAAY,MAGrIr+L,KAAKk9K,UAAU5B,cAAcV,SAASl/J,IAAMvS,KAAKuS,IAAI1b,KAAKk9K,UAAU5B,cAAcV,SAASl/J,IAAK2iL,EAAY,IAC5Gr+L,KAAKk9K,UAAU5B,cAAcV,SAASj/J,IAAMxS,KAAKwS,IAAI3b,KAAKk9K,UAAU5B,cAAcV,SAASj/J,IAAK0iL,EAAY,IAC5Gr+L,KAAKk9K,UAAU5B,cAAcT,UAAUn/J,IAAMvS,KAAKuS,IAAI1b,KAAKk9K,UAAU5B,cAAcT,UAAUn/J,IAAK2iL,EAAY,IAC9Gr+L,KAAKk9K,UAAU5B,cAAcT,UAAUl/J,IAAMxS,KAAKwS,IAAI3b,KAAKk9K,UAAU5B,cAAcT,UAAUl/J,IAAK0iL,EAAY,MAI1H/F,EAAWp4L,UAAU+5L,cAAgB,SAAUpd,EAAWF,EAAoBgjB,EAAUvG,EAAMr1L,GAC1F,IAGI67L,EACAC,EAJAC,EAAW9/L,KAAKk9K,UAAUtzH,OAC1B9zC,EAAO9V,KAAKk9K,UAAUpvJ,cAC1B9tB,KAAK+/L,MAAQ,GAGbH,EAASC,EAAS12L,KAAK8jC,IAAI,EAAG4vI,GAC9B,IAAImjB,EAAQ,EACRC,EAAS,EACRtjB,EAAmB32K,EAAc,IAAT45L,EAAiB9pL,EAAKxQ,QAC/C06L,EAAQrjB,EAAmB32K,EAAI,EAAImD,KAAKgkC,KAAKwvI,EAAmB32K,EAAI,KAAO,EAC3Ei6L,EAAWtjB,EAAmB32K,EAAa,IAAT45L,EAAgB9pL,EAAKxQ,MACnD6D,KAAKgkC,MAAMr3B,EAAKxQ,OAASq3K,EAAmB32K,EAAa,IAAT45L,IAAiB,KAAO,GAEhFA,GAAUI,EAAQC,EACD,QAAbN,GACAC,EAAU5/L,KAAKw4L,qBAAuBoH,EAAU5/L,KAAKw4L,oBAAsBoH,EAC3E5/L,KAAKu4L,eAAgB,IAGrBv4L,KAAKw4L,oBAAsBoH,EAC3B5/L,KAAKu4L,eAAgB,GAEzB,IAAI2H,EAAYlgM,KAAKk9K,UAAUsG,OAAOxjL,KAAKk9K,UAAU6H,gBACrD/kL,KAAK26L,YAAcuF,EAAUvF,YAC7B,IAAIxvJ,EAAOhiC,KAAKuS,IAAImkL,IAAWljB,EAAmB12K,EAAI6P,EAAKzQ,QAAU,IAAO,GACxEkmC,EAAOpiC,KAAKuS,IAAIkkL,IAAWjjB,EAAmB32K,EAAI8P,EAAKxQ,MAAkB,IAAT26L,GAAiB,IAAO,GACxFrvJ,IAAa+rI,EAAmB32K,EAAa,IAARg6L,EAAgB,KAAO,IAC5Dj1J,IAAY4xI,EAAmB12K,EAAI,KAAO,IAC9CmzL,EAAOA,GAAQp5L,KAAKo5L,MAAQp5L,KAAKk9K,UAAU,WAC3C,IAAK,IAAIl8K,EAAImI,KAAKC,MAAMwnC,GAAS5vC,EAAImI,KAAKC,MAAMmiC,GAAOvqC,IACnD,IAAK,IAAI6iB,EAAI1a,KAAKC,MAAM2hC,GAASlnB,EAAI1a,KAAKC,MAAM+hC,GAAOtnB,IAAK,CACxD,IAAI7d,EAAI,IAAMhF,EAAI27K,EAAmB32K,EACjCC,EAAI,IAAM4d,EAAI84J,EAAmB12K,EACrC,GAAID,GAAK,KAAOA,GAAK8P,EAAKxQ,OAASW,GAAK,KAAOA,EAAI6P,EAAKzQ,QAChDwe,GAAK,EAAG,CACR,IAAIs8K,EAAQn/L,EACRA,EAAI,IACJm/L,EAASA,EAAQN,EAAUA,GAE/B,IAAI/J,EAAO,IAAIJ,GAAKyK,EAAQN,EAAQh8K,GAGpC,GAFAiyK,EAAK9wL,KAAOmE,KAAKC,MAAMpD,GACvB8vL,EAAK/wL,IAAMoE,KAAKC,MAAMnD,GACM,SAAxBi6L,EAAUlb,WAAyBoU,IAAS,eAAkB8G,EAAUvF,cAA0C,KAA1BuF,EAAUvF,YAAqB,CACvH,IAAIp6L,EAAM2/L,EAAU3/L,IACpBu1L,EAAKr5G,IAAM28G,EAAKvD,WAAWC,EAAMv1L,EAAK2/L,EAAUnF,YAAa+E,EAAU1G,EAAK1lJ,SAAU0lJ,EAAKpD,iBAG3FF,EAAKr5G,IAAMz8E,KAAK26L,YAAYl2K,QAAQ,QAASo4J,EAAUjrK,YAAY6S,QAAQ,QAASqxK,EAAK9vL,EAAE4L,YACtF6S,QAAQ,QAASqxK,EAAK7vL,EAAE2L,YAEjC5R,KAAK+/L,MAAM1zL,KAAKypL,IAK3B,eAAkB6J,KACfA,EAAS37L,QAAQ,SAAW,GAC5BhE,KAAKogM,eAAkBpgM,KAAKk9K,UAAUpvJ,cAAcxoB,MAAQ,EAAKvB,EAASiC,EAAI,GAC9EhG,KAAKqgM,gBAAkBt8L,EAASkC,IAGhCjG,KAAKogM,gBAAkB,GACvBpgM,KAAKqgM,eAAqE,IAAlDrgM,KAAKk9K,UAAUpvJ,cAAczoB,OAAS,EAAI,QAI1E,IADA,IAAIi7L,EAAY,eAAO,GAAItgM,KAAK+/L,MAAO,IAAI,GAClClyL,EAAK,EAAGhK,EAAK7D,KAAKk9K,UAAUsG,OAAQ31K,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC/D,IAAIktK,EAAQl3K,EAAGgK,GACf,GAAqB,aAAfktK,EAAMvsK,MAAuBusK,EAAMpkK,UAGhB,aAApBokK,EAAMiK,WAAgD,oBAApBjK,EAAMiK,WAAyD,aAApBjK,EAAMiK,WACpF,eAAkBjK,EAAM9C,aAAe,eAAkB8C,EAAM4f,cAAsC,KAAtB5f,EAAM4f,aACrF,IAAK,IAAI72L,EAAK,EAAGy8L,EAAcD,EAAWx8L,EAAKy8L,EAAY5/L,OAAQmD,IAAM,CACrE,IAAI08L,EAAWD,EAAYz8L,GACvB28L,EAAU,eAAO,GAAID,EAAU,IAAI,GACf,SAApBzlB,EAAMiK,WACNoU,EAAO,IAAI,GAAQp5L,KAAKk9K,WACxBujB,EAAQhkH,IAAM28G,EAAKvD,WAAW4K,EAAS1lB,EAAMx6K,IAAKw6K,EAAMggB,YAAa+E,EAAU1G,EAAK1lJ,SAAU0lJ,EAAKpD,aAGnGyK,EAAQhkH,IAAMs+F,EAAM4f,YAAYl2K,QAAQ,QAASo4J,EAAUjrK,YAAY6S,QAAQ,QAAS+7K,EAASx6L,EAAE4L,YAC9F6S,QAAQ,QAAS+7K,EAASv6L,EAAE2L,YAErC5R,KAAK+/L,MAAM1zL,KAAKo0L,KAIxBzgM,KAAKk9K,UAAUoR,gBAAkBtuL,KAAKk9K,UAAU5gG,OAASt8E,KAAKk9K,UAAUgN,SAAWlqL,KAAKk9K,UAAUiN,kBAC/FnqL,KAAKk9K,UAAUwK,iBAClB1nL,KAAK0gM,aAAaf,EAAU3/L,KAAKogM,eAAgBpgM,KAAKqgM,iBAG9D/H,EAAWp4L,UAAUwgM,aAAe,SAAUlyL,EAAMxI,EAAGC,GACnD,IAGI06L,EAHAt9L,EAAQrD,KACRoD,EAAUwK,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,gBAC9Ds1L,EAAWhzL,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,UAE9D,eAAkBkD,IAAkB,QAATA,EAM5BmyL,EAAU,GALV3gM,KAAK6gM,cAAcryL,EAAMxI,EAAGC,GAC5B06L,EAA4B,YAAlB,OAA8B,EAA8D,IAAzD3gM,KAAKk9K,UAAUgO,iBAAiB,GAAG14I,mBAC1D,WAAlB,OAA8B,IAAOxyC,KAAKk9K,UAAUgO,iBAAiB,GAAG14I,mBAKT,oBAAnExyC,KAAKk9K,UAAUsG,OAAOxjL,KAAKk9K,UAAU6H,gBAAgBC,UACrDhlL,KAAK8gM,gBAAgB9gM,KAAKk9K,UAAUsG,OAAO,GAAGjjL,IAAKP,KAAKk9K,UAAU6jB,eAGlE3zL,YAAW,WAOP,IAAI4zL,EANA59L,IACAA,EAAQ2D,MAAM0tH,OAAS,KAEvBmsE,IACAA,EAAS75L,MAAM0tH,OAAS,MAGvB7mH,SAASyd,eAAehoB,EAAM65K,UAAU95K,QAAQkI,GAAK,oBAAsBlI,GAC5E49L,EAAiB,eAAc,MAAO,CAAE11L,GAAIjI,EAAM65K,UAAU95K,QAAQkI,GAAK,oBACzElI,EAAQsB,YAAYs8L,IAGP,QAATxyL,GAAkBoyL,GAAYx9L,GAC9Bw9L,EAASl8L,YAAYtB,EAAQ6iD,SAAS,IACjC5iD,EAAM65K,UAAU+jB,YAAe,eAAkBrzL,SAASyd,eAAehoB,EAAM65K,UAAU95K,QAAQkI,GAAK,sBACvGsC,SAASyd,eAAehoB,EAAM65K,UAAU95K,QAAQkI,GAAK,mBAAmBA,GACpEjI,EAAM65K,UAAU95K,QAAQkI,GAAK,uBAErC01L,EAAiB,eAAc,MAAO,CAAE11L,GAAIjI,EAAM65K,UAAU95K,QAAQkI,GAAK,oBACzElI,EAAQsB,YAAYs8L,IAGpBA,EAAiB59L,EAAUA,EAAQ6iD,SAAS,GAAK,KAGzD,IAAK,IAAI36C,EAAK,EAAGA,EAAKjI,EAAM08L,MAAMp/L,OAAQ2K,IAAM,CAC5C,IAAIwqL,EAAOzyL,EAAM08L,MAAMz0L,GACnB41L,EAAa,KACbC,EAAQ99L,EAAM65K,UAAU95K,QAAQkI,GACpC,GAAa,QAATkD,EAAgB,CAChB,IAAI+7I,EAAQ38I,SAASyd,eAAe81K,EAAQ,SAAW71L,GACnD81L,GAAY,EACZ,eAAkB72C,IAClB62C,GAAY,EACZ72C,EAAQ,eAAc,MAAO,CAAEj/I,GAAI61L,EAAQ,SAAW71L,IACtD41L,EAAa,eAAc,SAG3B32C,EAAMxjJ,MAAMyiI,eAAe,WAC3B03D,EAAa32C,EAAMtkG,SAAS,KAE3Bm7I,GAAaF,GAAcA,EAAWzkH,MAAQq5G,EAAKr5G,MACpDykH,EAAWzkH,IAAMq5G,EAAKr5G,KAE1B8tE,EAAMxjJ,MAAMhD,SAAW,WACvBwmJ,EAAMxjJ,MAAM/B,KAAO8wL,EAAK9wL,KAAO,KAC/BulJ,EAAMxjJ,MAAMhC,IAAM+wL,EAAK/wL,IAAM,KAC7BwlJ,EAAMxjJ,MAAM1B,OAASywL,EAAKzwL,OAAS,KACnCklJ,EAAMxjJ,MAAMzB,MAAQwwL,EAAKxwL,MAAQ,KAC7B87L,IACAF,EAAWv2L,aAAa,SAAU,SAClCu2L,EAAWv2L,aAAa,QAAS,SACjCu2L,EAAWv2L,aAAa,MAAOmrL,EAAKr5G,KACpCykH,EAAWv2L,aAAa,MAAOtH,EAAM65K,UAAUpjI,kBAAkB,kBACjEonJ,EAAWn6L,MAAMuiI,YAAY,cAAe,QAC5CihB,EAAM7lJ,YAAYw8L,GAClBF,EAAet8L,YAAY6lJ,QAG9B,CACD22C,EAAa,eAAc,OAC3BA,EAAWv2L,aAAa,SAAU,SAClCu2L,EAAWv2L,aAAa,QAAS,SACjCu2L,EAAWv2L,aAAa,MAAOmrL,EAAKr5G,KACpCykH,EAAWn6L,MAAMuiI,YAAY,cAAe,QAC5C43D,EAAWv2L,aAAa,MAAOtH,EAAM65K,UAAUpjI,kBAAkB,kBAC7DywG,EAAQ,eAAc,MAAO,CAAEj/I,GAAI61L,EAAQ,SAAW71L,IAC1Di/I,EAAMxjJ,MAAMhD,SAAW,WACvBwmJ,EAAMxjJ,MAAM/B,KAAO8wL,EAAK9wL,KAAO,KAC/BulJ,EAAMxjJ,MAAMhC,IAAM+wL,EAAK/wL,IAAM,KAC7BwlJ,EAAMxjJ,MAAM1B,OAASywL,EAAKzwL,OAAS,KACnCklJ,EAAMxjJ,MAAMzB,MAAQwwL,EAAKxwL,MAAQ,KACjCilJ,EAAM7lJ,YAAYw8L,GACdF,GACAA,EAAet8L,YAAY6lJ,GAG/Bj/I,IAAQjI,EAAM08L,MAAMp/L,OAAS,GAAMiN,SAASyd,eAAehoB,EAAM65K,UAAU95K,QAAQkI,GAAK,wBACxF2zE,GAAc57E,EAAM65K,UAAU95K,QAAQkI,GAAK,uBAGnD,IAAK,eAAkBjI,EAAM65K,UAAUmkB,cACnC,IAAK,IAAItnF,EAAI12G,EAAM08L,MAAMp/L,OAAQo5G,EAAIinF,EAAehkJ,kBAAmB+8D,IAAK,CAExE,IADA,IAAIunF,GAAoB,EACfhjL,EAAI,EAAGA,EAAIjb,EAAM65K,UAAUmkB,aAAarkJ,kBAAmB1+B,IAC3DgjL,GACDj+L,EAAM65K,UAAUmkB,aAAap7I,SAAS3nC,GAAGhT,KAAO01L,EAAe/6I,SAAS8zD,GAAGzuG,KAC3Eg2L,GAAoB,GAGxBA,EACAN,EAAe/6I,SAAS8zD,GAAGhzG,MAAMC,QAAU,OAG3Cg6L,EAAej0I,YAAYi0I,EAAe/6I,SAAS8zD,OAIhE4mF,IAWXrI,EAAWp4L,UAAU2gM,cAAgB,SAAUlB,EAAU/rH,EAAY2tH,GACjE,IAAIC,EAAa5zL,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,gBACjEm2L,EAAgB7zL,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,mBACpEo2L,EAAc9zL,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,UAClEq2L,EAAa,IACjB,GAAoC,IAAhChC,EAAS37L,QAAQ,YAAiC,UAAb27L,EAAsB,CAC3D+B,EAAY36L,MAAM0tH,OAAS,IAC3B+sE,EAAWz6L,MAAM0tH,OAAS,IAC1B,MAAOitE,EAAY1kJ,mBAAqB,EACpC0kJ,EAAY30I,YAAY20I,EAAYz7I,SAAS,IAEjD2tB,EAAa,EACb2tH,EAAa3zL,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,gBAAgBi5D,iBAAiB,GAAGl/D,OAAS,EAC9Gs8L,EAA6C,IAAhChC,EAAS37L,QAAQ,WAAmB,MAAQ,MAExD,eAAkBy9L,KACnBA,EAAc16L,MAAM8+E,WAA+B,YAAlB,OAA8B,MAAkE,IAAzD7lF,KAAKk9K,UAAUgO,iBAAiB,GAAG14I,mBAClF,WAAlB,OAA8B,SAAWxyC,KAAKk9K,UAAUgO,iBAAiB,GAAG14I,kBAAoB,KACvGivJ,EAAc16L,MAAMgf,UAAY,aAAe6tD,EAAa,OAAS2tH,EAAa,aAAeI,EAAa,MAWtHrJ,EAAWp4L,UAAU4gM,gBAAkB,SAAUc,EAAQ16L,GACrD,IAAIL,EAAM7G,KAAKk9K,UAEfh2K,EAAOlH,KAAKk9K,UAAUyF,cACtB,IAAIxF,EAAgC,IAApBh0K,KAAK8jC,IAAI,EAAG/lC,GACxBlB,EAAKa,EAAIu0K,YAAY91K,MAAQ,EAAM63K,EAAY,EAC/Cl3K,EAAKY,EAAIu0K,YAAY/1K,OAAS,EAAM83K,EAAY,EAChD0kB,EAAc,IAAIhmB,GAAM,KAAM,MAC9BimB,EAAQ,EACRC,EAAQ,EACRh+L,EAAW24K,GAA0BmlB,EAAa36L,EAAM,CAAElB,EAAGA,EAAGC,EAAGA,GAAKjG,KAAK88K,kBAC7Ej2K,EAAI64B,YAAc74B,EAAI84B,aAAalZ,SACnCq7K,EAAQj7L,EAAI64B,WAAWsiK,iBAAiB,KAAOn7L,EAAI64B,WAAWuiK,iBAAiB,KAC/EF,EAAQl7L,EAAI64B,WAAWsiK,iBAAiB,KAAOn7L,EAAI64B,WAAWuiK,iBAAiB,MAGnF,IAGI5Z,EACAC,EAJA4Z,EAAYr7L,EAAIs7L,eAAep+L,EAASiC,EAAI87L,EAAO/9L,EAASkC,EAAI87L,GACpEl7L,EAAIugL,eAAexM,SAAWsnB,EAAU,YACxCr7L,EAAIugL,eAAevM,UAAYqnB,EAAU,aAIrC7Z,EADA,eAAkB12K,SAAS9K,EAAIvB,MAAO,KAC3BqM,SAAS9K,EAAIvB,MAAO,IAAM,GAG1B6D,KAAKC,MAAMvC,EAAIu0K,YAAY91K,OAGtCgjL,EADA,eAAkB32K,SAAS9K,EAAIxB,OAAQ,KAC3BsM,SAAS9K,EAAIxB,OAAQ,IAAM,GAG3B8D,KAAKC,MAAMvC,EAAIu0K,YAAY/1K,QAE3C,IAEIu3K,EAFAwlB,EAAW/Z,EAAW,KAAOA,EAAW,KAAO,EAAI,EACnDga,EAAY/Z,EAAY,KAAOA,EAAY,KAAO,EAAI,EAEtDga,EAAWz7L,EAAI28K,OAAO38K,EAAI28K,OAAO7iL,OAAS,GAAgB,cAAEiR,WAAW2Q,cAEvEq6J,EADA/1K,EAAIugL,eAAexM,UAAY/zK,EAAIugL,eAAevM,UACzCh0K,EAAIugL,eAAexM,SAAShpK,WAAa,IAAM/K,EAAIugL,eAAevM,UAAUjpK,WAG5E,MAEb,IAAI2wL,EAAkB,uDAAyDla,EAAW,IAAMC,EAC5F,SAAWphL,EAAO,WAAa01K,EAAS,YAAc0lB,EAAU,QAAUV,EAC9Eh0L,SAASyd,eAAerrB,KAAKk9K,UAAU95K,QAAQkI,GAAK,gBAAgBR,UAC9D,YAAc9K,KAAKk9K,UAAU95K,QAAQkI,GAArC,mDAAoG82L,EAAW,WAC3GC,EAAY,iBAAmBE,EADnC,SACqEviM,KAAKk9K,UAAUpjI,kBAAkB,iBAAmB,YAUnIw+I,EAAWp4L,UAAU05L,WAAa,SAAU4I,EAASC,EAASrb,GACtDpnL,KAAKk9K,UAAUyF,eAAiB3iL,KAAKk9K,UAAU0N,eAAiB5qL,KAAKk9K,UAAUyc,eAC/E35L,KAAKk9K,UAAUyF,cAAgB3iL,KAAKk9K,UAAU0N,eAElD,IAGI5kL,EACAC,EAJA+/D,EAAQhmE,KAAKk9K,UAAUyF,cACvBx1J,EAAgF,oBAAtEntB,KAAKk9K,UAAUsG,OAAOxjL,KAAKk9K,UAAUsG,OAAO7iL,OAAS,GAAGqkL,UAClE,GAAK,EAGL7H,EAAiC,IAArBh0K,KAAK8jC,IAAI,EAAG+4B,GAC5BhgE,EAAKw8L,EAAU,EAAMrlB,EAAY,EACjCl3K,EAAKw8L,EAAU,EAAMtlB,EAAY,EACjC,IAAIp5K,EAAW24K,GAA0B0K,EAAgBphH,EAAO,CAAEhgE,EAAGA,EAAGC,EAAGA,GAAKjG,KAAK88K,kBAWrF,GAVA3vJ,EAAUntB,KAAKk9K,UAAUwK,eAAiB,EAAIv6J,EAC9CnnB,GAAKjC,EAASiC,EAAKw8L,EAAU,EAC7Bv8L,EAAKA,GAAKlC,EAASkC,EAAKw8L,EAAU,GAAOt1K,EACzCntB,KAAKk9K,UAAU5gG,MAAQnzE,KAAK8jC,IAAI,EAAG+4B,EAAQ,IACtC,eAAkBhmE,KAAKk9K,UAAUP,qBAAgE,IAAxC38K,KAAKk9K,UAAUP,mBAAmB12K,GACpD,IAAxCjG,KAAKk9K,UAAUP,mBAAmB32K,GAAc,eAAkBhG,KAAKk9K,UAAU2N,oBACjF,eAAkB7qL,KAAKk9K,UAAU4N,uBACjC9qL,KAAKk9K,UAAU2N,kBAAoB2X,EACnCxiM,KAAKk9K,UAAU4N,mBAAqB2X,IAEnC,eAAkBziM,KAAKk9K,UAAUP,qBAAwB,cAAD,CAAmByK,EAAephL,KAC/C,IAA3ChG,KAAKk9K,UAAUv9I,aAAaI,YACzB//B,KAAKk9K,UAAUv9I,aAAaI,aAAeimC,IAAUhmE,KAAKk9K,UAAUoc,gBACnEkJ,IAAYxiM,KAAKk9K,UAAU2N,mBAAqB4X,IAAYziM,KAAKk9K,UAAU4N,oBAAqB,CACjG,IAAIvB,EAAQvjL,GAAMhG,KAAKk9K,UAAU2N,kBAAoB,EAAM1N,EAAY,GACnEsM,EAAQxjL,GAAMjG,KAAKk9K,UAAU4N,mBAAqB,EAAM3N,EAAY,EAAKhwJ,GAC7EntB,KAAKk9K,UAAUP,mBAAmB32K,EAAIhG,KAAKk9K,UAAUP,mBAAmB32K,EAAIujL,EAC5EvpL,KAAKk9K,UAAUP,mBAAmB12K,EAAIjG,KAAKk9K,UAAUP,mBAAmB12K,EAAIwjL,EAgBpF,OAbK,eAAkBzpL,KAAKk9K,UAAUP,qBAAwB38K,KAAKk9K,UAAUwK,iBAC7B,IAAxC1nL,KAAKk9K,UAAUP,mBAAmB32K,GAAWhG,KAAKk9K,UAAUP,mBAAmB32K,IAAMA,GACjFhG,KAAKk9K,UAAU+M,wBACnBjkL,EAAIhG,KAAKk9K,UAAUP,mBAAmB32K,GAEE,IAAxChG,KAAKk9K,UAAUP,mBAAmB12K,GAAWjG,KAAKk9K,UAAUP,mBAAmB12K,IAAMA,GACjFjG,KAAKk9K,UAAU+M,wBACnBhkL,EAAIjG,KAAKk9K,UAAUP,mBAAmB12K,IAG9CjG,KAAKk9K,UAAUsM,eAAiB,IAAI3N,IAAO71K,EAAK,IAAOhG,KAAKk9K,UAAUv9I,aAAaI,YAAe//B,KAAKk9K,UAAU5gG,OAAQr2E,EAAK,IAAOjG,KAAKk9K,UAAUv9I,aAAaI,YAAe//B,KAAKk9K,UAAU5gG,OAC/Lt8E,KAAKk9K,UAAU2N,kBAAoB2X,EACnCxiM,KAAKk9K,UAAU4N,mBAAqB2X,EAC7B,IAAI5mB,GAAM71K,EAAGC,IAMxBqyL,EAAWp4L,UAAUsS,QAAU,WAC3BxS,KAAKk9K,UAAY,KACjBl9K,KAAKg8L,cAAgB,GACrBh8L,KAAKo6L,YAAc,KACnBp6L,KAAKu8K,aAAe,KACpBv8K,KAAKi8L,WAAa,KAClBj8L,KAAK+/L,MAAQ,GACb//L,KAAK2lB,gBAAkB,KACvB3lB,KAAK+4L,cAAgB,KACrB/4L,KAAKy4L,WAAa,KAClBz4L,KAAK04L,aAAe,GACpB14L,KAAKg5L,WAAa,KACb,eAAkBh5L,KAAKo5L,OACxBp5L,KAAKo5L,KAAK5mL,UAEdxS,KAAKo5L,KAAO,MAETd,EAr+CoB,GCR3B,GAA6B,WAC7B,SAASoK,EAAY77L,GACjB7G,KAAK6G,IAAMA,EAkHf,OAhHA67L,EAAYxiM,UAAUyiM,yBAA2B,WAC7C,IAAIt/L,EAAQrD,KACR4iM,EAAc5iM,KAAK6G,IAAIzD,QAAQkI,GAAK,qBACpCu3L,EAAkB,eAAc,MAAO,CAAEv3L,GAAItL,KAAK6G,IAAIzD,QAAQkI,GAAK,uBACvEu3L,EAAgB97L,MAAMhD,SAAW,WACjC8+L,EAAgB97L,MAAMhC,IAAM,MAC5B89L,EAAgB97L,MAAM/B,KAAO,MAC7BhF,KAAK6G,IAAImjD,YAAYnjD,KAAI,SAAUkjD,EAAYt9C,GAChB,OAAvBs9C,EAAWl/C,SACXxH,EAAMy/L,yBAAyBD,EAAiB94I,EAAYt9C,MAGhEo2L,EAAgB7lJ,kBAAoB,IAAO,cAAD,CAAmB+lI,GAAe6f,KAC5E7f,GAAe6f,GAAal+L,YAAYm+L,GAG5C7iM,KAAK6G,IAAI6E,wBAQbg3L,EAAYxiM,UAAU4iM,yBAA2B,SAAUptJ,EAAeqU,EAAYD,GAClF,IAEI9kD,EACAD,EACAw3D,EAEAuoB,EANAzhF,EAAQrD,KAKR6G,EAAM7G,KAAK6G,IAEXuhL,EAAYvhL,EAAIinB,cAEhBkxJ,GADKn4K,EAAIzD,QAAQkI,GACF,eAAc,MAAO,CACpCA,GAAIzE,EAAIzD,QAAQkI,GAAK,eAAiBw+C,KAE1Ck1H,EAAaj4K,MAAMwsC,QAAU,+BAAiCwW,EAAW0qE,OAAS,IAClF,IAAIt0G,EAAW,CACX1R,QAAQ,EAAOuB,KAAMqpK,GAAqBxuK,QAASk/C,EAAWl/C,QAC9Dk/C,WAAYA,GAEhB/pD,KAAK6G,IAAIoB,QAAQoxK,GAAqBl5J,GAAU,SAAU4iL,GACtD,IAAI5iL,EAAS1R,OAIb,GADA8tD,EAAauoH,GAAoB3kK,EAAStV,QAASxH,EAAMwD,KACrD01D,GAAcA,EAAWl5D,EAAMwD,IAAKxD,EAAMwD,IAAKsZ,EAAStV,QAASxH,EAAMwD,IAAIzD,QAAQkI,GAAK,oBAAsBw+C,GAAiBnpD,OAAQ,CACvImkF,EAAkBllF,MAAMM,UAAUwN,MAAMpK,KAAKi5D,EAAWl5D,EAAMwD,IAAKxD,EAAMwD,IAAKsZ,EAAStV,QAASxH,EAAMwD,IAAIzD,QAAQkI,GAAK,oBAAsBw+C,IAE7I,IADA,IAAI1e,EAAW05C,EAAgBnkF,OACtBK,EAAI,EAAGA,EAAIoqC,EAAUpqC,IAC1Bg+K,EAAat6K,YAAYogF,EAAgB9jF,SAI7Cg+K,EAAat6K,YAAY,eAAc,MAAO,CAC1CoG,UAAWqV,EAAStV,cAIhC,IAAI0qC,EAASs3I,GAAiB7N,EAAax/E,WAAU,GAAO34F,EAAIzD,SAC5D62K,EAAcpzK,EAAIzD,QAAQgE,wBAC1Bq0C,EAAS50C,EAAIq+B,UAAU99B,wBAC3BpC,EAAOmE,KAAK6a,IAAIy3B,EAAOz2C,KAAOi1K,EAAYj1K,MAC1CD,EAAMoE,KAAK6a,IAAIy3B,EAAO12C,IAAMk1K,EAAYl1K,KACxC,IAAIi+L,EAAoBj5I,EAAW/jD,EAAEhC,QAAQ,MAAQ,EAAMokL,EAAU9iL,MAAQ,IAAOwB,WAAWijD,EAAW/jD,GACtGc,WAAWijD,EAAW/jD,GACtBi9L,EAAoBl5I,EAAW9jD,EAAEjC,QAAQ,MAAQ,EAAMokL,EAAU/iL,OAAS,IAAOyB,WAAWijD,EAAW9jD,GACvGa,WAAWijD,EAAW9jD,GAG1B,OAFAjB,EAA2C,SAAnC+kD,EAAWm5I,oBAAmCl+L,EAAOg+L,EAAoBh+L,EACjFD,EAAwC,SAAjCglD,EAAWo5I,kBAAiCp+L,EAAMk+L,EAAoBl+L,EACrEglD,EAAWo5I,mBACf,IAAK,OACDp+L,GAAak+L,EACb,MACJ,IAAK,SACDl+L,EAAOA,EAAMk+L,GAAsBxnJ,EAAOp2C,OAAS,EAAMkwC,EAAOlwC,OAAS,GACzE,MACJ,IAAK,MACDN,EAAOA,EAAM02C,EAAOp2C,OAAS49L,EAAoB1tJ,EAAOlwC,OACxD,MAER,OAAQ0kD,EAAWm5I,qBACf,IAAK,OACDl+L,GAAeg+L,EACf,MACJ,IAAK,SACDh+L,EAAQA,EAAOg+L,GAAsBvnJ,EAAOn2C,MAAQ,EAAMiwC,EAAOjwC,MAAQ,GACzE,MACJ,IAAK,MACDN,EAAQA,EAAOy2C,EAAOn2C,MAAQ09L,EAAoBztJ,EAAOjwC,MACzD,MAER05K,EAAaj4K,MAAM/B,KAAOA,EAAO,KACjCg6K,EAAaj4K,MAAMhC,IAAMA,EAAM,KAC/B2wC,EAAchxC,YAAYs6K,IAK9B0jB,EAAYxiM,UAAU4U,cAAgB,WAClC,MAAO,eAQX4tL,EAAYxiM,UAAUsS,QAAU,WAC5BxS,KAAK6G,IAAM,MAER67L,EApHqB,G,0BCN5B,GAAwC,WACxC,IAAIpjM,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAkC5D,GAAsB,SAAUiC,GAQhC,SAASugM,EAAKjgM,EAASC,GACnB,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAoGnD,OA9FAqD,EAAM2+K,WAAY,EAIlB3+K,EAAMggM,UAAW,EAIjBhgM,EAAM6mL,SAAU,EAEhB7mL,EAAM+5K,SAAW,IAAIr/F,GAAK,EAAG,GAE7B16E,EAAMmmL,eAAiB,IAAI3N,GAAM,EAAG,GAEpCx4K,EAAMg8L,mBAAqB,IAAIxjB,GAAM,EAAG,GAExCx4K,EAAMylL,mBAAqB,IAAIjN,GAAM,EAAG,GAExCx4K,EAAMklL,mBAAoB,EAE1BllL,EAAMmlL,iBAAkB,EAExBnlL,EAAMi2L,cAAe,EAErBj2L,EAAM4mL,uBAAwB,EAE9B5mL,EAAMigM,mBAAoB,EAE1BjgM,EAAMkgM,gBAAkB,EAExBlgM,EAAMs5K,mBAAqB,IAAId,GAAM,EAAG,GAExCx4K,EAAMmgM,uBAAyB,IAAI3nB,GAAM,EAAG,GAG5Cx4K,EAAMsM,UAAW,EAEjBtM,EAAM09L,cAAgB19L,EAAMs8B,aAAalZ,OAASpjB,EAAMs8B,aAAaI,WAAa,EAElF18B,EAAMqkL,gBAAiB,EAEvBrkL,EAAMogM,eAAiB,GACvBpgM,EAAMqgM,oBAAsB,GAC5BrgM,EAAMsgM,mBAAqB,GAC3BtgM,EAAMugM,eAAiB,CAAE59L,EAAG,KAAMC,EAAG,MACrC5C,EAAMwgM,gBAAkB,CAAE79L,EAAG,KAAMC,EAAG,MAEtC5C,EAAMg6L,kBAAoB,GAE1Bh6L,EAAMqhL,wBAA0B,GAEhCrhL,EAAMygM,wBAA0B,GAEhCzgM,EAAM0gM,4BAA8B,GAEpC1gM,EAAM2gM,yBAA2B,GAEjC3gM,EAAM4gM,wBAA0B,GAGhC5gM,EAAM6gM,0BAA4B,GAElC7gM,EAAM8gM,iBAAkB,EAExB9gM,EAAM+jD,iBAAkB,EAExB/jD,EAAM+gM,gBAAkB,GAExB/gM,EAAMi6L,sBAAwB,GAE9Bj6L,EAAMghM,oBAAqB,EAE3BhhM,EAAM22L,qBAAuB,IAAIne,GAAM,EAAG,GAE1Cx4K,EAAMwlL,uBAAwB,EAE9BxlL,EAAMihM,aAAe,GAErBjhM,EAAMs2L,cAAe,EAErBt2L,EAAMy2L,gBAAiB,EAEvBz2L,EAAMkhM,0BAA2B,EAEjClhM,EAAMmhM,qBAAsB,EAE5BnhM,EAAMohM,YAAc,GAGpBphM,EAAMgoL,mBAAqB,GAG3BhoL,EAAMqhM,mBAAqB,KAC3B,gBAAS,mBAAoBrhM,EAAMshM,qBAAsBthM,GAClDA,EAo/EX,OAhmFA,GAAU+/L,EAAMvgM,GA8GhBpD,OAAOwB,eAAemiM,EAAKljM,UAAW,kBAAmB,CAOrD0kM,IAAK,WACD,OAAO5kM,KAAK6kM,WAEhBC,YAAY,EACZC,cAAc,IAOlB3B,EAAKljM,UAAUykM,qBAAuB,WAClC,IAAIrnL,EAEA0nL,EACJ,IACIA,EAAaz+L,OAAOsxC,aAExB,MAAO1qC,GACH63L,EAAa,KAKjB,GAHK,eAAkBA,KACnB1nL,EAAO/W,OAAOsxC,aAAaC,QAAQ93C,KAAK8U,gBAAkB9U,KAAKoD,QAAQkI,MAErE,eAAkBgS,IAAmB,KAATA,EAAe,CAC7C,IAAIy6B,EAAUrb,KAAKpiB,MAAMgD,GACrBlI,EAAO3V,OAAO2V,KAAK2iC,GACvB/3C,KAAKg4C,qBAAsB,EAC3B,IAAK,IAAInqC,EAAK,EAAGoqC,EAAS7iC,EAAMvH,EAAKoqC,EAAOt3C,OAAQkN,IAAM,CACtD,IAAItN,EAAM03C,EAAOpqC,GACS,kBAAd7N,KAAKO,IAAuB,eAAkBP,KAAKO,IAI3DP,KAAKO,GAAOw3C,EAAQx3C,GAHpB,eAAOP,KAAKO,GAAMw3C,EAAQx3C,IAMlCP,KAAKg4C,qBAAsB,IAUnCorJ,EAAKljM,UAAU45C,kBAAoB,SAAUv5C,GACzC,OAAOP,KAAK+5C,aAAaC,YAAYz5C,IAOzC6iM,EAAKljM,UAAU4T,UAAY,WACvB9T,KAAK2P,SAAW,OAAQA,SACxB3P,KAAK04C,sBACL14C,KAAKigB,wBAAyB,EAC9BjgB,KAAKilM,eACLjlM,KAAKklM,aACLllM,KAAK24C,cAETyqJ,EAAKljM,UAAUo6C,eAAiB,WACvBt6C,KAAKgpB,cACNhpB,KAAKiI,QAAQilF,EAAM,CAAE0sF,KAAM55K,OAC3BA,KAAKmlM,YACLnlM,KAAKolM,uBACLplM,KAAKqlM,yBACLrlM,KAAKslM,cACLtlM,KAAKkwB,WAAakiK,GAAcpyL,KAAKk5C,OACrCl5C,KAAK46C,eACL56C,KAAK66C,YAAY76C,KAAKulM,cAAe,QAAS,KAAM,MACpDvlM,KAAKwlM,aACLxlM,KAAKylM,yBACLzlM,KAAK6T,iBACL7T,KAAKihM,aAAcjhM,KAAKgiL,WAAoBhiL,KAAKihM,aAQzDmC,EAAKljM,UAAUyT,OAAS,WACpB3T,KAAKs6C,kBAET8oJ,EAAKljM,UAAUulM,uBAAyB,WACpC,IAGIC,EACAlmL,EAJAnc,EAAQrD,KACRW,EAASX,KAAKkrL,iBAAiBvqL,OAAS,EAC5CX,KAAK2lM,cAAgB,CAAEC,QAAS,EAAGC,SAAU,GAG7CjmM,MAAMM,UAAU+uF,QAAQ3rF,KAAKtD,KAAKkrL,kBAAkB,SAAUnQ,EAAO8F,GACjE,GAAI9F,EAAM9C,qBAAqB,QAAa,CACxC50K,EAAMsiM,cAAc,aACpBnmL,EAAau7J,EAAM9C,UACnBytB,EAAc3qB,EAAMz7J,iBAAiB,QAAQy7J,EAAMz7J,MAAQ,IAAI,QAE/D,IAAIC,EAAcC,EAAWgb,aAAakrK,GAE1CnmL,EAAYK,MAAK,SAAUzS,GACvB9J,EAAMyiM,wBAAwB,cAAe34L,EAAG4tK,EAAO,qBAGtDA,EAAM9C,qBAAqB6X,IAAW/U,EAAM9C,aAC5C,eAAkB8C,EAAM9C,UAAU,iBACnC50K,EAAM0iM,mBAAmBhrB,EAAOA,EAAM9C,UAAW,cAGzD,GAAI8C,EAAM37J,sBAAsB,QAAa,CACzC/b,EAAMsiM,cAAc,aACpBnmL,EAAau7J,EAAM37J,WACnBsmL,EAAc3qB,EAAMz7J,iBAAiB,QAAQy7J,EAAMz7J,MAAQ,IAAI,QAE3DC,EAAcC,EAAWgb,aAAakrK,GAE1CnmL,EAAYK,MAAK,SAAUzS,GAEvB4tK,EAAM37J,WAAa4yK,GAAc7kL,MAGzC,GAAI4tK,EAAMyH,eAAe7hL,OAAS,EAgB9B,IAfA,IAAIwxC,EAAU,SAAUnxC,GACpB,GAAI+5K,EAAMyH,eAAexhL,GAAGoe,sBAAsB,QAAa,CAC3D/b,EAAMsiM,cAAc,aACpBnmL,EAAau7J,EAAMyH,eAAexhL,GAAGoe,WACrCsmL,EAAc3qB,EAAMyH,eAAexhL,GAAGse,iBAAiB,QACnDy7J,EAAMyH,eAAexhL,GAAGse,MAAQ,IAAI,QAExC,IAAIC,EAAcC,EAAWgb,aAAakrK,GAE1CnmL,EAAYK,MAAK,SAAUzS,GAEvB4tK,EAAMyH,eAAexhL,GAAGoe,WAAa4yK,GAAc7kL,QAItDnM,EAAI,EAAGA,EAAI+5K,EAAMyH,eAAe7hL,OAAQK,IAC7CmxC,EAAQnxC,GAGhB,GAAI+5K,EAAM6gB,eAAej7L,OAAS,EAC9B,KAAIigG,EAAU,SAAU5/F,GACpB,GAAI+5K,EAAM6gB,eAAe56L,GAAGoe,sBAAsB,QAAa,CAC3D/b,EAAMsiM,cAAc,aACpBnmL,EAAau7J,EAAM6gB,eAAe56L,GAAGoe,WACrCsmL,EAAc3qB,EAAM6gB,eAAe56L,GAAGse,iBAAiB,QACnDy7J,EAAM6gB,eAAe56L,GAAGse,MAAQ,IAAI,QAExC,IAAIC,EAAcC,EAAWgb,aAAakrK,GAE1CnmL,EAAYK,MAAK,SAAUzS,GAEvB4tK,EAAM6gB,eAAe56L,GAAGoe,WAAa4yK,GAAc7kL,QAI/D,IAASnM,EAAI,EAAGA,EAAI+5K,EAAM6gB,eAAej7L,OAAQK,IAC7C4/F,EAAQ5/F,IAGZ+5K,EAAM37J,sBAAsB0wK,KAAY,eAAkB/U,EAAM37J,WAAW,kBAC3E/b,EAAM0iM,mBAAmBhrB,EAAOA,EAAM37J,WAAY,cAElD/b,EAAMsiM,cAAc,aAAetiM,EAAMsiM,cAAc,aAAehlM,IAAWkgL,GACjFx9K,EAAMyiM,wBAAwB,UAK1C1C,EAAKljM,UAAU6lM,mBAAqB,SAAUhrB,EAAOirB,EAAWx3L,GAC5D,IAAInL,EAAQrD,KACZA,KAAK2lM,cAAc,aACnB,IAAIM,EAAiB,IAAI,OAAMD,EAAU9V,YAAa8V,EAAUx3L,KAAMw3L,EAAUhW,aAChFiW,EAAehL,UAAY,SAAU5mK,GACjC,GAAK,eAAkBA,EAAK7lB,OAAuB,6BAAd6lB,EAAK7lB,KAUtCnL,EAAMyiM,wBAAwB,QAASzxK,EAAM0mJ,EAAOvsK,OAVuB,CAC3E,IAAI03L,EAAW,IAAIC,WACfC,EAAQ/iM,EACZ6iM,EAAShpH,OAAS,SAAU5/D,GACxB+W,EAAOqI,KAAKpiB,MAAM4rL,EAASpmL,OAAOlO,YAClCw0L,EAAMN,wBAAwB,QAASzxK,EAAM0mJ,EAAOvsK,IAExD03L,EAASG,WAAWhyK,KAM5B4xK,EAAe5K,KAAK2K,EAAU/V,WAYlCmT,EAAKljM,UAAU4lM,wBAA0B,SAAUQ,EAAahpL,EAAMy9J,EAAO/qH,GAUzE,GATAhwD,KAAK2lM,cAAc,cACfW,IACiB,cAAbt2I,EACA+qH,EAAM9C,UAA6B,gBAAhBquB,EAAiCtU,GAAc10K,GAAQA,EAG1Ey9J,EAAM37J,WAA8B,gBAAhBknL,EAAiCtU,GAAc10K,GAAQA,GAG9E,eAAkBgpL,IAAgBtmM,KAAK2lM,cAAc,aAAe3lM,KAAK2lM,cAAc,YAenF,eAAkBW,IACvBtmM,KAAKumM,gBAhBgG,CACrG,IAAI92K,EAAazvB,KAAKkrL,iBACtBlrL,KAAKkrL,iBAAmB,GACxB,IAAK,IAAIlqL,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAC/ByuB,EAAWzuB,GAAGy0L,aACdz1L,KAAKkrL,iBAAiB7+K,KAAKojB,EAAWzuB,IAG9C,IAAK,IAAI6iB,EAAI,EAAGA,EAAI4L,EAAW9uB,OAAQkjB,IAC9B4L,EAAW5L,GAAG4xK,aACfz1L,KAAKkrL,iBAAiB7+K,KAAKojB,EAAW5L,IAG9C7jB,KAAKumM,cAMbnD,EAAKljM,UAAUqmM,UAAY,WACnBvmM,KAAKy+B,cAAgBz+B,KAAKw+B,eAAe7nB,SACzC3W,KAAKy+B,aAAauc,eAEtBh7C,KAAKwmM,aACDxmM,KAAK2/B,aAAalZ,QAAUzmB,KAAK0/B,YACjC1/B,KAAK0/B,WAAW+mK,wBAEf,eAAkBzmM,KAAK6kB,mBACxB7kB,KAAK6kB,gBAAgBm3B,qBAAuB,IAEhDh8C,KAAKiiL,cAAc0W,oBACd,eAAkB34L,KAAKklC,YACxBllC,KAAKoD,QAAQsB,YAAY1E,KAAKklC,WAElCllC,KAAKk7C,8BACL,IAAK,IAAIl6C,EAAI,EAAGA,EAAIhB,KAAKwjL,OAAO7iL,OAAQK,IAAK,CACzC,GAAIhB,KAAKwjL,OAAOxiL,GAAGsiG,mBAAqBtjG,KAAKwjL,OAAOxiL,GAAGsiG,kBAAkB78E,QACrEzmB,KAAKwjL,OAAOxiL,GAAG0lM,sBAAsB/lM,OAAS,GAAKX,KAAKqkM,mBAAoB,CAC5E,IAAIsC,EAAiB3mM,KAAKwjL,OAAOxiL,GAAGsiG,kBAAkBsjG,kBACtD5mM,KAAKwjL,OAAOxiL,GAAGsiG,kBAAkBsjG,kBAAoBD,IAAkC,EAEvF,IADA,IAAIE,EAAiB7mM,KAAKwjL,OAAOxiL,GAAG0lM,sBAC3B7iL,EAAI,EAAGA,EAAI7jB,KAAKwjL,OAAOxiL,GAAG0lM,sBAAsB/lM,OAAQkjB,IAC7D7jB,KAAK6mM,eAAe7lM,EAAG6lM,EAAehjL,GAAGmiK,UAAW6gB,EAAehjL,GAAGijL,YAAY,GAEtF9mM,KAAKwjL,OAAOxiL,GAAGsiG,kBAAkBsjG,kBAAoBD,EACjD3lM,IAAMhB,KAAKwjL,OAAO7iL,OAAS,IAC3BX,KAAKqkM,oBAAqB,GAGlC,IAAKrkM,KAAKqjM,SACN,IAAK,IAAI7/K,EAAI,EAAGA,EAAIxjB,KAAKwjL,OAAOxiL,GAAGwhL,eAAe7hL,OAAQ6iB,IAEtD,GAAIxjB,KAAKwjL,OAAOxiL,GAAGwhL,eAAeh/J,GAAG8/E,mBAAqBtjG,KAAKwjL,OAAOxiL,GAAGwhL,eAAeh/J,GAAG8/E,kBAAkB78E,QACtGzmB,KAAKwjL,OAAOxiL,GAAGwhL,eAAeh/J,GAAGujL,uBAAuBpmM,OAAS,EACpE,KAAIqmM,EAAwBhnM,KAAKwjL,OAAOxiL,GAAGwhL,eAAeh/J,GAAGujL,uBAC7D,IAASljL,EAAI,EAAGA,EAAImjL,EAAsBrmM,OAAQkjB,IAC9C7jB,KAAKinM,uBAAuBjmM,EAAGwiB,EAAGxjB,KAAKwjL,OAAOxiL,GAAGwhL,eAAeh/J,GAAIwjL,EAAsBnjL,GAAG+2J,SAAUosB,EAAsBnjL,GAAGg3J,YAMpJ,IAAK,eAAkBjtK,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,iBAAkB,CAC/E,IAMIs5D,EANAlyB,EAAM1yC,KAAKklC,UAAU99B,wBACrBhE,EAAUwK,SAASyd,eAAerrB,KAAKoD,QAAQkI,IAC/Co2L,EAAc9zL,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,gBACxD47L,EAAet5L,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,UACzDwqL,EAAO4L,EAAYt6L,wBACnByO,OAAS,EAET7Q,OAAO,EACXA,EAAO8B,WAAW46L,EAAY36L,MAAM/B,MACpC,IAAImiM,EAAgB1pH,GAAYz9E,KAAKulM,cAAc/oL,KAAMxc,KAAKulM,cAAc34K,WACxEw6K,EAAmB3pH,GAAYz9E,KAAKulM,cAAc8B,iBAAiB7qL,KAAMxc,KAAKulM,cAAc8B,iBAAiBz6K,WAC7G5sB,KAAKgiL,WAAahiL,KAAKsjM,mBAAsD,WAAjCtjM,KAAKw+B,eAAez6B,UAAyB/D,KAAKw+B,eAAe7nB,QAC5E,YAA7B3W,KAAKw+B,eAAe/gB,KAEhBmnD,EADwB,IAAxBuiI,EAAc7hM,OAAwC,IAAzB6hM,EAAc9hM,OACnCyB,WAAW46L,EAAY36L,MAAMhC,KAAQqiM,EAAiB/hM,OAAS,EAChErF,KAAKy+B,aAAa6oK,iBAAiBjiM,OAAS,EAG3CyB,WAAW46L,EAAY36L,MAAMhC,KAAO/E,KAAKo7K,YAAYn1K,GAIjEjB,EAAOhF,KAAKy+B,aAAa6oK,iBAAiBthM,EAEtC4+D,EADwB,IAAxBuiI,EAAc7hM,OAAwC,IAAzB6hM,EAAc9hM,OACnCyB,WAAW46L,EAAY36L,MAAMhC,KAAQqiM,EAAiB,UAAY,EACpEpnM,KAAKy+B,aAAa6oK,iBAAiBrhM,EAGjCa,WAAW46L,EAAY36L,MAAMhC,KAAQqiM,EAAiB,UAAY,IAKlFvxL,EAAS68B,EAAI78B,OAASigL,EAAKjgL,OAASzS,EAAQ2N,UAC5C6zD,EAAQ99D,WAAW46L,EAAY36L,MAAMhC,MAEzC6/D,EAAS/uD,GAAU,GAAM+uD,EAAU,eAAkB5kE,KAAKy+B,eAAkD,WAAjCz+B,KAAKw+B,eAAez6B,SAAuD,EAAR6gE,EAAtB5kE,KAAKo7K,YAAYn1K,EACzIjB,EAAQ6Q,GAAU,GAAM7Q,EAAQ,eAAkBhF,KAAKy+B,cAA+B,EAAPz5B,EAARA,EACvE08L,EAAY36L,MAAMhC,IAAM6/D,EAAQ,KAChC88H,EAAY36L,MAAM/B,KAAOA,EAAO,KAChCkiM,EAAangM,MAAMhC,IAAM6/D,EAAQ,KACjCsiI,EAAangM,MAAM/B,KAAOA,EAAO,MAC5B,eAAkBhF,KAAKy+B,eAAiBz+B,KAAKy+B,aAAa2vC,WAAWztE,OAAS,IAC/E+gM,EAAY36L,MAAM1B,OAAS6hM,EAAangM,MAAM1B,OAASrF,KAAKy+B,aAAa8oK,gBAAgBliM,OAAS,KAClGq8L,EAAY36L,MAAMzB,MAAQ4hM,EAAangM,MAAMzB,MAAQtF,KAAKy+B,aAAa8oK,gBAAgBjiM,MAAQ,MAGvGtF,KAAKm7L,kBACDn7L,KAAKwnM,mBACc,QAAfxnM,KAAKsF,OAAmC,QAAhBtF,KAAKqF,QAAmC,OAAfrF,KAAKsF,OAAkC,OAAhBtF,KAAKqF,QAC7ErF,KAAKwnM,kBAAkB7E,2BAG/B3iM,KAAKoD,QAAQ2D,MAAM0gM,QAAU,OAC7BznM,KAAKoD,QAAQ2D,MAAMhD,SAAW,WAC9B,IAAS/C,EAAI,EAAGA,EAAI4M,SAAS85L,qBAAqB,QAAQ/mM,OAAS,EAAGK,IAC9D4M,SAAS85L,qBAAqB,QAAQ1mM,GAAGsK,GAAGtH,QAAQ,eAAiB,IACrE4J,SAAS85L,qBAAqB,QAAQ1mM,GAAG+F,MAAM0gM,QAAU,QAGjEznM,KAAK2nM,gBACD3nM,KAAK0/B,YAAc1/B,KAAK2P,UACxB3P,KAAK0/B,WAAWkoK,qBAAqB5nM,KAAKgiL,UAAY74K,KAAKC,MAAMpJ,KAAK2iL,eAAiB3iL,KAAK2nL,cAAe3nL,KAAKoD,QAAQkI,GAAK,aAE5HtL,KAAKmqL,kBAAqBnqL,KAAK0nL,gBAChC1nL,KAAK6nM,mBAET7nM,KAAKqjM,UAAW,GAEpBD,EAAKljM,UAAU2nM,iBAAmB,WAC9B,IAAIC,EACAC,EAA0B/nM,KAAKgoM,6BACnCF,EAAa,CACTluB,KAAM55K,KAAMioM,UAAWjoM,KAAKqjM,SAAU6E,YAAaH,EAAwBG,YAC3EC,YAAaJ,EAAwBI,YAAaC,aAAcL,EAAwBK,aACxFC,aAAcN,EAAwBM,aAAc55L,QAAQ,EAAOuB,KAAM,UAE7EhQ,KAAKiI,QAAQ,SAAU6/L,IAY3B1E,EAAKljM,UAAUooM,gBAAkB,SAAUhlG,EAAmBz8F,EAAKoL,EAAeqL,GAC9E,IAAI8H,EAAS,CACTzP,MAAO2tF,EAAkBl+E,OAAOzP,MAChCrQ,MAAOg+F,EAAkBl+E,OAAO9f,MAAQuB,EAAIy1E,MAC5C9oC,QAAS8vD,EAAkBl+E,OAAOouB,SAElC+0J,EAA4B,CAC5B/0J,QAAS8vD,EAAkB9vD,QAC3BpzB,KAAMkjF,EAAkBljF,KACxBgF,OAAQA,EACR9kB,OAAQ2R,EAAc3G,GACtBmD,QAAQ,EACR6O,KAAMA,EACNs8J,KAAM/yK,GAELikB,GAAW,sBAIZ4gK,GAAe,qBAAsB,0BAA2B6c,GAHhE36L,SAAS6B,KAAK/K,YAAY8mL,GAAY,qBAAsB,0BAA2B+c,KAK/C,IAAxCvoM,KAAK0kL,wBAAwB/jL,QAAgB2iG,EAAkBsjG,qBACjC,MAA1B30L,EAAcvC,SACduC,EAAcg0C,SAAS,GAAGt7C,aAAa,QAAS,2BAChD3K,KAAK0kL,wBAAwBr4K,KAAK4F,EAAcg0C,SAAS,GAAG36C,MAG5D2G,EAActH,aAAa,QAAS,2BACpC3K,KAAK0kL,wBAAwBr4K,KAAK4F,EAAc3G,OAe5D83L,EAAKljM,UAAU+mM,uBAAyB,SAAUpmB,EAAYroI,EAAagqI,EAAgB5H,EAAUC,GACjG,IAAIv3E,EAAoBk/E,EAAel/E,kBACvC,GAAIA,EAAkB78E,OAClB,IAAK,IAAIzlB,EAAI,EAAGA,EAAIwhL,EAAepjK,WAAW,UAAWpe,IAAK,CAC1D,IAAIsc,EAAOklK,EAAepjK,WAAWpe,GACrC,GAAIsc,EAAK,cAAgBs9J,GAAYt9J,EAAK,eAAiBu9J,EAAW,CAClE,IAAIj1H,EAAW5lD,KAAKoD,QAAQkI,GAAbtL,eAAwC6gL,EAAa,gBAAkBroI,EAClF,cAAgBx3C,EACpBhB,KAAKsoM,gBAAgBhlG,EAAmBtjG,KAAM8qB,GAAW86B,GAAWtoC,MAUpF8lL,EAAKljM,UAAUslM,WAAa,WACxB,IAAIlgM,EAAQtF,KAAKwoM,SAASpjL,OAAO9f,MAC7B+6C,EAAargD,KAAKwoM,SAASnoJ,WAC/B,GAAI/6C,EAAQ,GAAM+6C,GAAcrgD,KAAKkwB,WAAWmiK,oBAAsB,CAClE,IAAIoW,EAAY,CACZj1J,QAAS,eAAkBxzC,KAAKwoM,SAASpjL,OAAOouB,SAAW,EAAIxzC,KAAKwoM,SAASpjL,OAAOouB,QACpF79B,MAAO3V,KAAKwoM,SAASpjL,OAAOzP,MAAOrQ,MAAOtF,KAAKwoM,SAASpjL,OAAO9f,OAE/DkpB,EAAO,IAAIwvJ,GAAWh+K,KAAKoD,QAAQkI,GAAK,iBAAkB+0C,GAAcrgD,KAAKkwB,WAAWmiK,oBAAqBoW,EAAW,EAAGzoM,KAAKo7K,aACpIp7K,KAAKklC,UAAUxgC,YAAY1E,KAAKslB,SAASg7B,cAAc9xB,MAQ/D40K,EAAKljM,UAAUolM,YAAc,WACzBtlM,KAAKoD,QAAQuH,aAAa,aAAc3K,KAAK84C,aAAe,gBAC5D94C,KAAKoD,QAAQuH,aAAa,OAAQ,UAClC3K,KAAKoD,QAAQoqG,SAAWxtG,KAAKwtG,UAEjC41F,EAAKljM,UAAUg7C,4BAA8B,WACzC,IAAI93C,EAAU2/K,GAAe/iL,KAAKoD,QAAQkI,GAAK,sBAC3CkjB,EAAOxuB,KAAKoD,QAAQgE,wBACpByjB,EAAak4J,GAAe/iL,KAAKoD,QAAQkI,GAAK,QAClD,IAAK,eAAkBuf,GAAa,CAChC,IAAIixB,EAAUjxB,EAAWzjB,wBACzBhE,EAAQ2D,MAAM/B,KAAOmE,KAAKwS,IAAImgC,EAAQ92C,KAAOwpB,EAAKxpB,KAAM,GAAK,KAC7D5B,EAAQ2D,MAAMhC,IAAMoE,KAAKwS,IAAImgC,EAAQ/2C,IAAMypB,EAAKzpB,IAAK,GAAK,OAGlEq+L,EAAKljM,UAAUynM,cAAgB,WAC3B,IAAI3iM,EACAD,EAIJ,GAHIg+K,GAAe/iL,KAAKoD,QAAQkI,GAAK,uBAAyBtL,KAAK0/B,aAC/D1/B,KAAK0/B,WAAWgpK,mBAAqB3lB,GAAe/iL,KAAKoD,QAAQkI,GAAK,uBAEtEtL,KAAKgiL,WAAae,GAAe/iL,KAAKoD,QAAQkI,GAAK,cAAgBy3K,GAAe/iL,KAAKoD,QAAQkI,GAAK,gBAAiB,CACrH,IAAIo2L,EAAc3e,GAAe/iL,KAAKoD,QAAQkI,GAAK,gBAC/Cq9L,EAAiB5lB,GAAe/iL,KAAKoD,QAAQkI,GAAK,aAClDs9L,EAAuB7lB,GAAe/iL,KAAKoD,QAAQkI,GAAK,oBACxDu9L,EAAWnH,EAAYt6L,wBACvB0hM,EAAcH,EAAevhM,wBACjCpC,EAAQ6jM,EAAS7jM,KAAO8jM,EAAY9jM,KACpCD,EAAO8jM,EAAS9jM,IAAM+jM,EAAY/jM,IAClC6jM,EAAqB7hM,MAAM/B,KAAOA,EAAO,KACzC4jM,EAAqB7hM,MAAMhC,IAAMA,EAAM,MAClC,eAAkB/E,KAAKy+B,eAAiBz+B,KAAKy+B,aAAa2vC,WAAWztE,OAAS,IAC/E+gM,EAAY36L,MAAMzB,MAAQqjM,EAAe5hM,MAAMzB,MAC3CtF,KAAKy+B,aAAa8oK,gBAAgBjiM,MAAMsM,WAC5C8vL,EAAY36L,MAAM1B,OAASsjM,EAAe5hM,MAAM1B,OAC5CrF,KAAKy+B,aAAa8oK,gBAAgBliM,OAAOuM,WAC7Cg3L,EAAqB7hM,MAAMzB,MAAQtF,KAAKy+B,aAAa8oK,gBAAgBjiM,MAAQ,KAC7EsjM,EAAqB7hM,MAAM1B,OAASrF,KAAKy+B,aAAa8oK,gBAAgBliM,OAAS,MAEnF,IAAI0jM,EAAyBn7L,SAASomC,uBAAuB,YAC7D,IAAK,eAAkB+0J,IAA2BA,EAAuBpoM,OAAS,EAC9E,IAAK,IAAIK,EAAI,EAAGA,EAAI+nM,EAAuBpoM,OAAQK,IAAK,CACpD,IAAIgoM,EAAmBD,EAAuB/nM,GAC9CgoM,EAAiBjiM,MAAM/B,KAAOA,EAAO,KACrCgkM,EAAiBjiM,MAAMhC,IAAMA,EAAM,MAI/C,GAAI/E,KAAK2/B,aAAaI,YAAc,EAAG,CAC/B//B,KAAK0/B,YAAc1/B,KAAK0/B,WAAWupK,cAAgBjpM,KAAK2/B,aAAalZ,QACrEzmB,KAAK0/B,WAAWwpK,eAEpB,IAAIh1J,EAAWtmC,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,sBACzD,IAAK,eAAkB4oC,IAAaA,EAAS8I,kBAAoB,EAC7D,IAASh8C,EAAI,EAAGA,EAAIkzC,EAASjpB,WAAWtqB,OAAQK,IAAK,CACjD,IAAIg+K,EAAe9qI,EAASjpB,WAAWjqB,GACvC,GAA6B,MAAzBg+K,EAAatvK,UAAiE,IAA9CsvK,EAAa1zK,GAAGtH,QAAQ,iBAExD,IADA,IAAI68K,EAAa/5K,WAAWk4K,EAAa1zK,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IACvE4f,EAAI,EAAGA,EAAIm7J,EAAa/zJ,WAAWtqB,OAAQkjB,IAAK,CACrD,IAAIkpK,EAAY/N,EAAa/zJ,WAAWpH,GAClCkpK,EAAUzhL,GAAGtH,QAAQ,mBAAqB,GACzC+oL,EAAUzhL,GAAGtH,QAAQ,kBAAoB,GACzC+oL,EAAUzhL,GAAGtH,QAAQ,0BAA4B,GACpD8oL,GAAkBC,EAAWlM,EAAY7gL,KAAKs8E,MAAOt8E,OAMrEA,KAAK0/B,aAAgB1/B,KAAKsuL,gBAAkBtuL,KAAKs8E,OAAUt8E,KAAK0nL,gBAAkB1nL,KAAKmqL,mBACvFnqL,KAAK0/B,WAAW07J,eAAep7L,MAAM,KAIjDojM,EAAKljM,UAAUmlM,uBAAyB,WACpC,GAAI,eAAkBz3L,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,uBAAwB,CACpF,IAAI69L,EAAmB,eAAc,MAAO,CACxC79L,GAAItL,KAAKoD,QAAQkI,GAAK,uBAE1B69L,EAAiBpiM,MAAMwsC,QAAU,gCACjCvzC,KAAKoD,QAAQsB,YAAYykM,KAMjC/F,EAAKljM,UAAU8nM,2BAA6B,WACxC,IAAI5kM,EAAUwK,SAASyd,eAAerrB,KAAKoD,QAAQkI,IAAIlE,wBACnDgiM,EAAcppM,KAAKgiL,UAAYhiL,KAAKmiM,eAAgBniM,KAAKo7K,YAAYp1K,EAAIhG,KAAKu+B,OAAOv5B,MAAQhF,KAAKo7K,YAAYn1K,GAAKjG,KAAKqpM,eAAe,EAAIrpM,KAAKo7K,YAAYp1K,EAAI5C,EAAQ4B,KAAOhF,KAAKo7K,YAAYn1K,GAChMqjM,EAActpM,KAAKgiL,UAAYhiL,KAAKmiM,eAAeniM,KAAKo7K,YAAY91K,MAAQtF,KAAKo7K,YAAY/1K,OAASrF,KAAKo7K,YAAYn1K,GACvHjG,KAAKqpM,eAAe,EAAIrpM,KAAKo7K,YAAYp1K,EAAI5C,EAAQ4B,KAAOhF,KAAKo7K,YAAY91K,MAAStF,KAAKo7K,YAAYn1K,EAAIjG,KAAKo7K,YAAY/1K,QAC5HkkM,EAA0B,CAC1BrB,YAAakB,EAAYxuB,SAAUutB,YAAamB,EAAY1uB,SAAUwtB,aAAcgB,EAAYvuB,UAChGwtB,aAAciB,EAAYzuB,WAE9B,OAAO0uB,GAMXnG,EAAKljM,UAAUi7L,gBAAkB,WACzBvtL,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,oBAC1CsC,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,kBAAkBvE,MAAMiqC,cAAgB,QAEtF,IAAIw4J,EAAmB57L,SAASomC,uBAAuBh0C,KAAKoD,QAAQkI,GAAK,aACzE,IAAK,eAAkBk+L,IAAqBA,EAAiB7oM,OAAS,GAClEoiL,GAAe/iL,KAAKoD,QAAQkI,GAAK,wBAA0BtL,KAAKgiL,UAChE,IAAK,IAAIhhL,EAAI,EAAGA,EAAIwoM,EAAiB7oM,OAAQK,IAAK,CAC9C,IAAIyoM,EAAiB,EACjBC,EAAiB,EACjBV,EAAmBQ,EAAiBxoM,GACxC,IAAK,eAAkBgoM,IAAqBA,EAAiBhsJ,kBAAoB,EAAG,CAChF,IAAI2sJ,EAAc5mB,GAAe/iL,KAAKoD,QAAQkI,GAAK,sBAAsBlE,wBACrEwiM,EAAgB7mB,GAAeimB,EAAiB19L,IAAIlE,yBACT,IAA3C4hM,EAAiB19L,GAAGtH,QAAQ,YAC5BylM,EAAiBzpM,KAAKgiL,UAAY,EAAK2nB,EAAY3kM,KAAO4kM,EAAc5kM,MAClEmE,KAAK6a,IAAI4lL,EAAc5kM,KAAO2kM,EAAY3kM,MAAUmE,KAAK6a,IAAI4lL,EAAc5kM,KAAO2kM,EAAY3kM,MACpG0kM,EAAiB1pM,KAAKgiL,UAAY,EAAK2nB,EAAY5kM,IAAM6kM,EAAc7kM,KACjEoE,KAAK6a,IAAI4lL,EAAc7kM,IAAM4kM,EAAY5kM,KAAQoE,KAAK6a,IAAI4lL,EAAc7kM,IAAM4kM,EAAY5kM,MAEpG,IAAK,IAAI8e,EAAI,EAAGA,EAAImlL,EAAiBhsJ,kBAAmBn5B,IAAK,CACzD,IAAIgmL,EAAkBb,EAAiB/9K,WAAWpH,GAClD,IAA8C,IAA1CgmL,EAAgBv+L,GAAGtH,QAAQ,UAAkB,CAC7C,IAAI8lM,EAAkB/mB,GAAe8mB,EAAgBv+L,IAAIlE,wBACzDyiM,EAAgB9iM,MAAM/B,KAAO8B,WAAW+iM,EAAgB9iM,MAAM/B,OAAShF,KAAKgiL,UAAY,EAAI8nB,EAAgBxkM,MAAQ,GAAK,KACzHukM,EAAgB9iM,MAAMhC,IAAM+B,WAAW+iM,EAAgB9iM,MAAMhC,MAAQ/E,KAAKgiL,UAAY,EAAI8nB,EAAgBzkM,OAAS,GAAK,UAGxHwkM,EAAgB9iM,MAAM/B,KAAO8B,WAAW+iM,EAAgB9iM,MAAM/B,MAAQykM,EAAiB,KACvFI,EAAgB9iM,MAAMhC,IAAM+B,WAAW+iM,EAAgB9iM,MAAMhC,KAAO2kM,EAAiB,KACrFG,EAAgB9iM,MAAMgf,UAAY,4BAO1Dq9K,EAAKljM,UAAUsmM,WAAa,WACxB,IAAIuD,EAAY/pM,KAAKkrL,iBAAiB,GAClC/9J,EAAU,EACd,GAAI48K,EAAUtU,cAAwC,QAAxBsU,EAAU/kB,WAA+C,SAAxB+kB,EAAU/kB,WAC7C,oBAAxB+kB,EAAU/kB,WAA2D,WAAxB+kB,EAAU/kB,YAA4B,eAAkB+kB,EAAUpP,cAA0C,KAA1BoP,EAAUpP,aAAsB,CAC/J17G,GAAcj/E,KAAKoD,QAAQkI,GAAK,gBAChC2zE,GAAcj/E,KAAKoD,QAAQkI,GAAK,UAChC2zE,GAAc,kBACd,IAAI3/C,EAAM,eAAc,MAAO,CAC3Bh0B,GAAItL,KAAKoD,QAAQkI,GAAK,iBAE1Bg0B,EAAIv4B,MAAMwsC,QAAU,6BACfvzC,KAAKo7K,YAAa,EAAI,cAAiBp7K,KAAKu+B,OAAY,MAAI,aAC1Dv+B,KAAKo7K,YAAYn1K,EAAIknB,GAAW,eAClCntB,KAAKo7K,YAAkB,OAAI,cACzBp7K,KAAKo7K,YAAiB,MAAI,wBACjC,IAAI4uB,EAAO,eAAc,MAAO,CAC5B1+L,GAAItL,KAAKoD,QAAQkI,GAAK,WAE1B0+L,EAAKjjM,MAAMwsC,QAAU,6BAChBvzC,KAAKo7K,YAAa,EAAI,eAAkBp7K,KAAKu+B,OAAY,MAAI,aAC3Dv+B,KAAKo7K,YAAYn1K,EAAIknB,GAAW,eAAkBntB,KAAKo7K,YAAkB,OAAI,cAC7Ep7K,KAAKo7K,YAAiB,MAAI,wBACjCp7K,KAAKoD,QAAQsB,YAAY46B,GACzBt/B,KAAKoD,QAAQsB,YAAYslM,KAQjC5G,EAAKljM,UAAUw4C,oBAAsB,WACjC,GAAwB,KAApB14C,KAAKoD,QAAQkI,GAAW,CACxB,IAAImkB,EAAa7hB,SAASomC,uBAAuB,UAAUrzC,OAC3DX,KAAKoD,QAAQkI,GAAK,gBAAkBmkB,EAExCzvB,KAAKslB,SAAW,IAAI,OAAYtlB,KAAKoD,QAAQkI,IAC7CtL,KAAKiiL,cAAgB,IAAI,GAAWjiL,OAExCojM,EAAKljM,UAAUklM,qBAAuB,WAClC,IAAI/hM,EAAQrD,KACRiqM,EAAYjqM,KAAK+kL,eACjBmlB,EAAa,GACbC,EAAY,GAChBnqM,KAAKkrL,iBAAmB,GACxBtrL,MAAMM,UAAU+uF,QAAQ3rF,KAAKtD,KAAKwjL,QAAQ,SAAUzI,GAEhC,UAAfA,EAAMvsK,KAAoB07L,EAAW79L,KAAK0uK,GAASovB,EAAU99L,KAAK0uK,MAEvE,IAAK,IAAI/5K,EAAI,EAAGA,EAAIkpM,EAAWvpM,OAAQK,IAAK,CACxC,IAAIk/L,EAAYgK,EAAWlpM,GAC3B,GAAIk/L,EAAUvpL,SAAWszL,IAAcjpM,EAAG,CACtCk/L,EAAUzK,aAAc,EACxBz1L,KAAKgiL,YAAqC,aAAxBke,EAAUlb,YAA6B,eAAkBkb,EAAUjoB,YACrFj4K,KAAKkrL,iBAAiB7+K,KAAK6zL,GAC3B,MAEC,GAAIl/L,IAAMkpM,EAAWvpM,OAAS,EAAG,CAClCX,KAAKkrL,iBAAiB7+K,KAAK69L,EAAW,IACtC,OAGRC,EAAUtjM,KAAI,SAAUujM,GAChBA,EAASzzL,SACTtT,EAAM6nL,iBAAiB7+K,KAAK+9L,OAUxChH,EAAKljM,UAAU06C,aAAe,WAC1B,IAAIt1C,EAAQtF,KAAKolB,OAAO9f,MACpByrC,EAAgB/wC,KAAKklC,UAAUh5B,cAAc,IAAMlM,KAAKoD,QAAQkI,GAAK,cACzE,IAAKhG,EAAQ,GAAMtF,KAAKqgD,YAAcrgD,KAAKkwB,WAAW8uH,kBAAqB,eAAkBjuG,GAAgB,CACzG,IAAI3rB,EAAS,CACTouB,QAAS,eAAkBxzC,KAAKolB,OAAOouB,SAAW,EAAIxzC,KAAKolB,OAAOouB,QAClE79B,MAAO3V,KAAKolB,OAAOzP,MAAOrQ,MAAOtF,KAAKolB,OAAO9f,OAE7C+kM,EAAa,IAAIrsB,GAAWh+K,KAAKoD,QAAQkI,GAAK,aAActL,KAAKqgD,YAAcrgD,KAAKkwB,WAAW8uH,gBAAiB55H,EAAQ,EAAG,IAAIs5D,GAAKp5E,EAAQ,EAAGA,EAAQ,EAAGtF,KAAK8tB,cAAcxoB,MAAQA,EAAOtF,KAAK8tB,cAAczoB,OAASC,IAC5NtF,KAAKklC,UAAUxgC,YAAY1E,KAAKslB,SAASg7B,cAAc+pJ,SAGvDt5J,EAAcpmC,aAAa,OAAQ3K,KAAKqgD,YAAcrgD,KAAKkwB,WAAW8uH,kBAa9EokD,EAAKljM,UAAU26C,YAAc,SAAU7qB,EAAOxhB,EAAMitC,EAAQ+oI,GACxD,IAQIn/K,EARA0B,EAAQ,CACR+O,KAAMka,EAAMpD,UAAU9W,KACtBH,MAAOqa,EAAMpD,UAAUjX,MACvBM,WAAY+Z,EAAMpD,UAAU3W,WAC5BD,WAAYga,EAAMpD,UAAU5W,WAC5BD,UAAWia,EAAMpD,UAAU7W,UAC3By9B,QAASxjB,EAAMpD,UAAU4mB,SAGzBluC,EAAQ6D,KAAK6a,IAAKhkB,KAAKu+B,OAAOv5B,KAAOhF,KAAKu+B,OAAO3oB,MAAS5V,KAAK8tB,cAAcxoB,OAIjF,GAHAyB,EAAMkP,WAAc,eAAkBlP,EAAMkP,YAAiCjW,KAAKkwB,WAAWja,WAAnClP,EAAMkP,WAChElP,EAAMiP,WAAgCjP,EAAMiP,YAAchW,KAAKkwB,WAAW8iK,gBAC1EjsL,EAAM+O,KAAgB,UAATtH,EAAoBzH,EAAM+O,MAAQ9V,KAAKkwB,WAAWqiK,cAAkBxrL,EAAM+O,MAAQ9V,KAAKkwB,WAAWujK,kBAAoBhE,GAAMkE,iBAAiB79K,KACtJka,EAAMxT,KAAM,CACR,eAAkBgoK,KAClBA,EAAWxkL,KAAKslB,SAASY,YAAY,CAAE5a,GAAItL,KAAKoD,QAAQkI,GAAK,kBAEjE,IAAIg/L,EAAe7jB,GAASnhL,EAAO0qB,EAAMxT,KAAMzV,GAC3CohC,EAAcs1C,GAAY6sH,EAAcvjM,GACxCynB,EAAQ,cAAD,CAAmBitB,GAAW,IAAIijC,GAAK1+E,KAAKu+B,OAAOv5B,KAAMhF,KAAKu+B,OAAOx5B,IAAK/E,KAAK8tB,cAAcxoB,MAAOtF,KAAK8tB,cAAczoB,QAAUo2C,EACxIhuB,EAAam5J,GAAap4J,EAAMwB,EAAMiwB,UAAW9X,EAAa35B,GAC9DrL,EAAU,IAAI47E,GAAW/+E,KAAKoD,QAAQkI,GAAK,QAAUkD,EAAMif,EAAWznB,EAAGynB,EAAWxnB,EAAG,QAASqkM,GAChGC,EAAc,IAAI7rH,GAAKjxD,EAAWznB,EAAGynB,EAAWxnB,EAAGkiC,EAAY7iC,MAAO6iC,EAAY9iC,QAClFjC,EAAUs7K,GAAkBv7K,EAAS4D,EAAOA,EAAM4O,QAAmB,UAATnH,EAAmBxO,KAAKkwB,WAAWoiK,eAAiBtyL,KAAKkwB,WAAWsiK,mBAAoBhO,GACxJphL,EAAQuH,aAAa,aAAc3K,KAAK84C,aAAe9oB,EAAMxT,OAC/C,UAAThO,IAAqBwhB,EAAMq3K,iBAAiB7qL,MAAmB,aAAThO,KACvDnJ,EAAS8D,KAAK6a,IAAKumL,EAAYtkM,EAAIjG,KAAKu+B,OAAO1oB,OAAU7V,KAAK8tB,cAAczoB,QAC5ErF,KAAKo7K,YAAc,IAAI18F,GAAK1+E,KAAKu+B,OAAOv5B,KAAMulM,EAAYtkM,EAAI,GAAIX,EAAOD,EAAS,KAEzE,aAATmJ,GAAuBwhB,EAAMq3K,iBAAiB7qL,KAC9Cxc,KAAK66C,YAAY7qB,EAAMq3K,iBAAkB,WAAYkD,EAAa/lB,GAGlExkL,KAAKklC,UAAUxgC,YAAY8/K,QAI/Bn/K,EAAS8D,KAAK6a,IAAKhkB,KAAKu+B,OAAOx5B,IAAM/E,KAAKu+B,OAAO1oB,OAAU7V,KAAK8tB,cAAczoB,QAC9ErF,KAAKo7K,YAAc,IAAI18F,GAAK1+E,KAAKu+B,OAAOv5B,KAAMhF,KAAKu+B,OAAOx5B,IAAKO,EAAOD,IAQ9E+9L,EAAKljM,UAAUilM,UAAY,WACvBnlM,KAAK4hD,YACLtO,GAAUtzC,OAOdojM,EAAKljM,UAAU0hD,UAAY,WAIvB,GAHAq9B,GAAcj/E,KAAKoD,QAAQkI,GAAK,sBAChC2zE,GAAcj/E,KAAKoD,QAAQkI,GAAK,gBAChC2zE,GAAcj/E,KAAKoD,QAAQkI,GAAK,UAC5BtL,KAAKklC,UAAW,CAChB,MAAOllC,KAAKklC,UAAUja,WAAWtqB,OAAS,EACtCX,KAAKklC,UAAU6nB,YAAY/sD,KAAKklC,UAAUla,aAEzChrB,KAAKklC,UAAU1e,iBAAmBxmB,KAAKklC,UAAUsM,YAClD,gBAAOxxC,KAAKklC,WAGpBllC,KAAKqI,iBAOT+6L,EAAKljM,UAAUglM,WAAa,WAExB,OAAap5L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKwqM,YAAaxqM,MAC1D,OAAa8L,IAAI9L,KAAKoD,QAAS,cAAepD,KAAKyqM,iBAAkBzqM,MACrE,OAAa8L,IAAI9L,KAAKoD,QAAS,WAAYpD,KAAK0qM,kBAAmB1qM,MACnE,OAAa8L,IAAI9L,KAAKoD,QAAS,OAAQ2I,gBAAiB/L,KAAK2qM,eAAgB3qM,MAC7E,OAAa8L,IAAI9L,KAAKoD,QAAS,OAAQkmB,eAAgBtpB,KAAK4qM,eAAgB5qM,MAC5E,OAAa8L,IAAI9L,KAAKoD,QAAS,OAAQkR,cAAetU,KAAK6qM,cAAe7qM,MAC1E,OAAa8L,IAAI9L,KAAKoD,QAAS,0BAA2BpD,KAAK8qM,gBAAiB9qM,MAChF,OAAa8L,IAAI9L,KAAKoD,QAAS,UAAWpD,KAAKu9G,eAAgBv9G,MAC/D,OAAa8L,IAAI9L,KAAKoD,QAAS,QAASpD,KAAKquK,aAAcruK,MAE3DA,KAAK+qM,YAAc/qM,KAAKgrM,aAAaplM,KAAK5F,MAC1CuG,OAAOwiB,iBAAkB,OAAQY,SAAY,gBAAiBpjB,QAAU,wBAAyBA,OAAW,oBAAsB,SAAUvG,KAAK+qM,cAOrJ3H,EAAKljM,UAAU+kM,aAAe,WAE1B,OAAa9/L,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKwqM,aAChD,OAAarlM,OAAOnF,KAAKoD,QAAS,cAAepD,KAAKyqM,kBACtD,OAAatlM,OAAOnF,KAAKoD,QAAS,WAAYpD,KAAK0qM,mBACnD,OAAavlM,OAAOnF,KAAKoD,QAAS,OAAQ2I,gBAAiB/L,KAAK2qM,gBAChE,OAAaxlM,OAAOnF,KAAKoD,QAAS,OAAQkmB,eAAgBtpB,KAAK4qM,gBAC/D,OAAazlM,OAAOnF,KAAKoD,QAAS,OAAQkR,cAAetU,KAAK6qM,eAC9D,OAAa1lM,OAAOnF,KAAKoD,QAAS,0BAA2BpD,KAAK8qM,iBAClE,OAAa3lM,OAAOnF,KAAKoD,QAAS,UAAWpD,KAAKu9G,gBAClD,OAAap4G,OAAOnF,KAAKoD,QAAS,QAASpD,KAAKquK,cAEhD9nK,OAAOqrC,oBAAqB,OAAQjoB,SAAY,gBAAiBpjB,QAAU,wBAAyBA,OAAW,oBAAsB,SAAUvG,KAAK+qM,cASxJ3H,EAAKljM,UAAU4qM,gBAAkB,SAAU39L,GACnCS,SAASomC,uBAAuB,qBAAqBrzC,OAAS,GAAKX,KAAKy+B,eACxEz+B,KAAKy+B,aAAawsK,iCAClBrf,GAAYh+K,SAASomC,uBAAuB,qBAAqB,MAGzEovJ,EAAKljM,UAAUmuK,aAAe,SAAU3/J,GACpC,IAAIpD,EAAKoD,EAAMpO,OAAO,MAClBN,KAAKgiL,WACLhiL,KAAKkrM,gBAEU,QAAfx8L,EAAM02C,MAAkB95C,EAAGtH,QAAQ,iBAAmB,GAAKsH,EAAGtH,QAAQ,eAAiB,EACvFhE,KAAKmrM,2BAA2B7/L,EAAIoD,EAAMF,OAEL,IAAhClD,EAAGtH,QAAQ,kBAAwD,IAA9BsH,EAAGtH,QAAQ,eACrDgwC,GAAuB,qBAAqBrzC,OAAS,IACrDirL,GAAY53I,GAAuB,qBAAqB,IACpDh0C,KAAKw+B,eAAe7nB,SAAW3W,KAAKy+B,cACpCz+B,KAAKy+B,aAAawsK,mCAI9B7H,EAAKljM,UAAUirM,2BAA6B,SAAU7/L,EAAI/K,GACtD,IAAIsgL,EAAalvK,SAASrG,EAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACjEgnL,EAAat5K,SAASrG,EAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IAEjEg0K,EAAYj4K,KAAKwjL,OAAO3C,GAAY5I,UAAU,YAAY,UAAYgT,EACtEjrL,KAAKwjL,OAAO3C,GAAY5I,UAAU,YAAYgT,GAAY,cAAgB,KAC1ExO,EAAY9qK,SAASrG,EAAGrH,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IAE/DqZ,EAAO,eAAkBm/J,GAAa,KAAOz8K,KAAKwjL,OAAO3C,GAAYzhK,WAAWq9J,GAChFz8K,KAAKwjL,OAAO3C,GAAYv9E,kBAAkB78E,QAAkB,YAARlmB,GAAqBP,KAAK8yC,iBAC9E9yC,KAAK8yC,gBAAgBs4J,kBAAoBprM,KAAKwjL,OAAO3C,GAAYv9E,kBACjEtjG,KAAK8yC,gBAAgBu4J,cAAgB,QACrCrrM,KAAK8yC,gBAAgBw4J,cAAc58L,MAAMpO,OAAQugL,EAAYvjK,EAAM26J,IAE9Dj4K,KAAK4yC,iBAAoB5yC,KAAKwjL,OAAO3C,GAAYuc,kBAAkB32K,QAAkB,UAARlmB,IACjFmO,MAAMpO,OAAO4E,UAAUmB,SAAS,4BACjCrG,KAAK4yC,gBAAgBwqJ,kBAAoBp9L,KAAKwjL,OAAO3C,GAAYuc,kBACjEp9L,KAAK4yC,gBAAgB24J,gBAAgB78L,MAAMpO,OAAQugL,EAAYvjK,EAAM26J,KAG7EmrB,EAAKljM,UAAUq9G,eAAiB,SAAU7uG,GACtC,IAAIxH,EAAOlH,KAAK0/B,WACZp0B,EAAKoD,EAAMpO,OAAO,MACtB,IAAoB,YAAfoO,EAAM02C,MAAqC,cAAf12C,EAAM02C,MAAuC,cAAf12C,EAAM02C,MAC/C,eAAf12C,EAAM02C,OAA0Bl+C,EAAM,CACzC,IAAIu6L,EAAgB7zL,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,mBAC1DtL,KAAKgiL,YAAc,eAAkByf,KACrCzhM,KAAKqhM,aAAeI,EAAcjiG,WAAU,IAGpD,GAAIx/F,KAAK2/B,aAAalZ,QAAUvf,IAAuB,MAAdwH,EAAMnO,KAA8B,UAAfmO,EAAM02C,MAChEl+C,EAAKskM,wBAAwB,eAE5B,GAAIxrM,KAAK2/B,aAAalZ,QAAUvf,IAAuB,MAAdwH,EAAMnO,KAA8B,UAAfmO,EAAM02C,MACrEl+C,EAAKskM,wBAAwB,gBAE5B,GAAIxrM,KAAK2/B,aAAalZ,QAAUvf,GAA6B,KAArBwH,EAAM,WAC/CxH,EAAKskM,wBAAwB,SAC7BtkM,EAAKi4C,WAAY,OAEhB,GAAIn/C,KAAK2/B,aAAalZ,QAAUzmB,KAAK2/B,aAAa8rK,eAAiBvkM,IACjD,YAAfwH,EAAM02C,MAAqC,cAAf12C,EAAM02C,MACtC12C,EAAMwE,iBACNhM,EAAK86L,iBAAiB,KAAO,EAC7B96L,EAAK+6L,iBAAiB,KAAOjiM,KAAKo7K,YAAY/1K,OAAS,EACvD6B,EAAKwkM,QAAQ,OAAQxkM,EAAK86L,iBAAiB,KAAqB,YAAftzL,EAAM02C,MAAuBl+C,EAAK+6L,iBAAiB,KAChG/6L,EAAK+6L,iBAAiB,KAAMvzL,GAChCxH,EAAK86L,iBAAiB,KAAO96L,EAAK+6L,iBAAiB,UAElD,GAAIjiM,KAAK2/B,aAAalZ,QAAUzmB,KAAK2/B,aAAa8rK,eAAiBvkM,IACjD,cAAfwH,EAAM02C,MAAuC,eAAf12C,EAAM02C,MACxC12C,EAAMwE,iBACNhM,EAAK86L,iBAAiB,KAAO,EAC7B96L,EAAK+6L,iBAAiB,KAAOjiM,KAAKo7K,YAAY91K,MAAQ,EACtD4B,EAAKwkM,QAAQ,OAAuB,cAAfh9L,EAAM02C,MAAyBl+C,EAAK+6L,iBAAiB,KAAQ/6L,EAAK+6L,iBAAiB,KAAM/6L,EAAK86L,iBAAiB,KAAMtzL,GAC1IxH,EAAK86L,iBAAiB,KAAO96L,EAAK+6L,iBAAiB,UAElD,GAAmB,UAAfvzL,EAAM02C,KAAkB,CAG7B,GAFA95C,EAAKoD,EAAMpO,OAAO,MAClBoO,EAAMwE,iBACFlT,KAAKy+B,eAAiBnzB,EAAGtH,QAAQ,oBAAsB,GAAKsH,EAAGtH,QAAQ,qBAAuB,GAAI,CAClGhE,KAAKo7K,YAAcp7K,KAAKy+B,aAAaktK,mBACrC3rM,KAAKy+B,aAAa9J,YAAerpB,EAAGtH,QAAQ,gBAAkB,EAAMhE,KAAKy+B,aAAa9J,YAAc,EAC/F30B,KAAKy+B,aAAa9J,YAAc,EACrC30B,KAAKy+B,aAAauvC,YAAchuE,KAAKslB,SAASY,YAAY,CAAE5a,GAAItL,KAAKoD,QAAQkI,GAAK,kBAClFtL,KAAKy+B,aAAamtK,eAAe5rM,KAAKy+B,aAAa9J,aACnD,IAAIk0B,EAAej7C,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,gBAAiBu9C,YAC1ErsC,EAAOqsC,EAAY5kD,MAAM,KAAK4C,IAAIqoB,QAClC5jB,EAAGtH,QAAQ,oBAAsB,GACjB,IAAZwY,EAAK,IACL9N,EAAMpO,OAAOumD,QAEjBn4C,EAAMpO,OAAOyG,MAAM8kM,aAAervL,EAAK,GAAK,IAAMA,EAAK,GAAK,GAAK,eAE5DlR,EAAGtH,QAAQ,qBAAuB,IACnCwY,EAAK,KAAOA,EAAK,IACjB9N,EAAMpO,OAAOumD,QAEjBn4C,EAAMpO,OAAOyG,MAAM8kM,aAAervL,EAAK,KAAOA,EAAK,GAAK,EAAI,GAAK,eAEjEtQ,GAAclM,KAAKoD,QAAQkI,GAAK,iBAAkBtL,KAAKoD,QAAQkI,MAC/DY,GAAclM,KAAKoD,QAAQkI,GAAK,iBAAkBtL,KAAKoD,QAAQkI,IAAIvE,MAAMiqC,cAAgB,QAG7F1lC,EAAGtH,QAAQ,eAAiB,GAC5BhE,KAAKmrM,2BAA2B7/L,EAAIoD,EAAMF,MAG9CxO,KAAK0/B,YACL1/B,KAAK0/B,WAAWkoK,qBAAqB5nM,KAAKgiL,UAAY74K,KAAKC,MAAMpJ,KAAK2iL,eAAiB3iL,KAAK2nL,cAAe3nL,KAAKykM,cAUxHrB,EAAKljM,UAAU4rM,gBAAkB,SAAUvgB,GACvC,IAAI90K,GAAW,EAIf,MAHwC,2BAApC80K,EAAU7gL,aAAa,WACvB+L,GAAW,GAERA,GASX2sL,EAAKljM,UAAUsqM,YAAc,SAAUr9L,GACnC,IAAI9J,EAAQrD,KACRurL,EAAYp+K,EAAE7M,OACdslD,EAAW2lI,EAAUjgL,GACrBsvK,EAAW,KACXC,EAAY,KAEhB,GADA76K,KAAK6jM,gBAAkB,CAAE79L,EAAGmH,EAAEnH,EAAGC,EAAGkH,EAAElH,IACI,IAAtCslL,EAAUjgL,GAAGtH,QAAQ,YAAoB,CACzC,IAAI+nM,EAAe/rM,KAAKgsM,iBAAiBpmJ,EAAUz4C,EAAEiG,MAAOjG,EAAEkG,MAAOk4K,EAAWp+K,EAAE,UAAWA,EAAE,WAC1F,eAAkB4+L,KACnBnxB,EAAWmxB,EAAanxB,SACxBC,EAAYkxB,EAAalxB,WAE7B,IAAIoxB,EAAc,CACdx9L,QAAQ,EAAOuB,KAAMq3C,EAAO/mD,OAAQslD,EAAU5/C,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QACjE61H,SAAUA,EAAUC,UAAWA,EAC/BqxB,gBAAiBlsM,KAAK8rM,gBAAgBvgB,IAEtCvrL,KAAKsuG,SACL29F,EAAYj8L,KAAO,EACnBhQ,KAAKiI,QAAQ,UAAWgkM,GAAa,SAAUE,GAC3C9oM,EAAMm6G,aAAarwG,EAAG8+L,EAAa1gB,OAIvCvrL,KAAKiI,QAAQ,QAASgkM,GAAa,SAAUE,GACzC9oM,EAAMm6G,aAAarwG,EAAG8+L,EAAa1gB,MAI3CvrL,KAAK0/B,aACL1/B,KAAK0/B,WAAWkoK,qBAAqB5nM,KAAKgiL,UAAY74K,KAAKC,MAAMpJ,KAAK2iL,eAAiB3iL,KAAK2nL,cAAe/hI,GACvG5lD,KAAK2P,UACL3P,KAAK0/B,WAAW0sK,mBAAmB,GAAI,GAAI,GAAI,GAAI,MAI/DhJ,EAAKljM,UAAUs9G,aAAe,SAAUrwG,EAAGokD,EAAWg6H,GAC9CA,EAAUjgL,GAAGtH,QAAQ,eAAiB,IACtChE,KAAKqsM,eACDvhL,GAAW9qB,KAAKoD,QAAQkI,GAAK,iBAC7BtL,KAAKssM,kBAAkBC,gBAAgBvoM,QAAQ,kBAAoB,GACnEi7E,GAAcj/E,KAAKoD,QAAQkI,GAAK,iBAGpCtL,KAAKw5L,cACLx5L,KAAKw5L,aAAavgB,mBAAmB9rK,GAEpCokD,EAAU9iD,QACXzO,KAAKs0B,OAAO+yB,EAAOkkI,GAElBh6H,EAAU9iD,SAAkD,IAAxC88K,EAAUjgL,GAAGtH,QAAQ,eAC1ChE,KAAKwsM,sBAAsBjhB,IAGnC6X,EAAKljM,UAAUssM,sBAAwB,SAAUjhB,GAC7C,IAAI1K,EAAalvK,SAAS45K,EAAUjgL,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IAC3EwoM,EAAyBthB,GAAkBI,EAAUjgL,GAAItL,KAAKwjL,OAAO3C,GAAYv9E,kBAAmBtjG,KAAM04K,GACzG+zB,EAAuBh+L,SAAUzO,KAAK8yC,iBAAoB,eAAkB9yC,KAAK04K,eAG7E+zB,EAAuBh+L,QAAUzO,KAAK8yC,iBACxC,eAAkB25J,EAAuB,WAC5C7gB,GAAYL,GACZvrL,KAAK8yC,gBAAgB45J,qBAAqBnhB,IAL1CG,GAAe1rL,KAAK8yC,gBAAgBu4J,cAAgB,eAAgBrrM,KAAK8yC,gBAAgBu4J,cAAgB,oBAAqBoB,IAStIrJ,EAAKljM,UAAUysM,uBAAyB,SAAUv5L,EAAOC,EAAOrN,EAAGC,EAAGyQ,EAAQk2L,GAC1Eh/L,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,QAAQvE,MAAM2sE,OAAS,WACjE,IAAIzhE,EAAgB6Y,GAAWpU,EAAOkvC,UAClCmmJ,EAAe/rM,KAAKgsM,iBAAiBt1L,EAAOkvC,SAAUxyC,EAAOC,EAAOpB,EAAejM,EAAGC,GACtF0nB,EAAY3tB,KAAc,UAAI08K,GAA0B,IAAIpC,GAAYyxB,EAAalxB,UAAWkxB,EAAanxB,UAAW56K,KAAK2iL,cAAe3iL,KAAK28K,oBAAoB,GAAQhC,GAAkBoxB,EAAanxB,SAAUmxB,EAAalxB,UAAW76K,KAAKiiL,cAAcoX,cAAer5L,KAAKkrL,iBAAiBx0K,EAAOmqK,YAAa7gL,MAC1TykL,EAAazkL,KAAKwpL,eAClB51G,EAAc5zE,KAAKgiL,UAAYr0J,EAAS3nB,GAAK2nB,EAAS3nB,EAAIy+K,EAAWz+K,GAAKhG,KAAKs8E,MAC/EilH,EAAcvhM,KAAKgiL,UAAYr0J,EAAS1nB,GAAK0nB,EAAS1nB,EAAIw+K,EAAWx+K,GAAKjG,KAAKs8E,MAOnF,GANsC,YAAlCt8E,KAAK0kM,mBAAmB54K,MACxB7Z,EAActH,aAAa,YAAa,cAAgBipE,EAAa,IAAM2tH,EAAa,MAGxFtvL,EAAcyjC,cAAc/qC,aAAa,YAAa,cAAgBipE,EAAa,IAAM2tH,EAAa,MAEtGqL,EAAW,CACX,IAAIpqB,EAAiBxiL,KAAKwjL,OAAO9sK,EAAOmqK,YAAY2B,eAAe9rK,EAAO8hC,aAC1EuzJ,EAAe/rM,KAAKgsM,iBAAiBt1L,EAAOkvC,SAAWxyC,EAAQovK,EAAejtI,OAAOvvC,EAAKqN,EAAQmvK,EAAejtI,OAAOtvC,EAAIgM,EAAgBjM,EAAIw8K,EAAejtI,OAAOvvC,EAAKC,EAAIu8K,EAAejtI,OAAOtvC,GAEzM,OAAO8lM,GAGX3I,EAAKljM,UAAU8rM,iBAAmB,SAAUpmJ,EAAUxyC,EAAOC,EAAOpB,EAAejM,EAAGC,GAClF,IACI8lM,EADAlrB,EAAa,EAEjB,IAA0C,IAAtCj7H,EAAS5hD,QAAQ,iBAA2BhE,KAAKgiL,WAChDrwK,SAAS3R,KAAK4jM,eAAe,KAAM,MAAQjyL,SAAS3R,KAAK6jM,gBAAgB,KAAM,KAC/ElyL,SAAS3R,KAAK4jM,eAAe,KAAM,MAAQjyL,SAAS3R,KAAK6jM,gBAAgB,KAAM,IA2D3E7jM,KAAKgiL,WAAcrwK,SAAS3R,KAAK4jM,eAAe,KAAM,MAAQjyL,SAAS3R,KAAK6jM,gBAAgB,KAAM,KACtGlyL,SAAS3R,KAAK4jM,eAAe,KAAM,MAAQjyL,SAAS3R,KAAK6jM,gBAAgB,KAAM,MAChFkI,EAAe/rM,KAAK6sM,mBAAmB7mM,EAAGC,SA3D1C,GADA46K,EAAa/5K,WAAW8+C,EAAS3hD,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IACxB,WAAzCjE,KAAKwjL,OAAO3C,GAAYlF,aACxB,GAAI/1H,EAAS5hD,QAAQ,iBAAmB,EAAG,CACvC,IAAI8oM,EAAkB76L,EAAcyjC,cAChCA,EAAgBo3J,EAAgBxhM,GAAGtH,QAAQ,iBAAmB,GAAK8oM,EAAgBxhM,GAAGtH,QAAQ,sBAAwB,GACnH8oM,EAAgBxhM,GAAGtH,QAAQ,2BAA6B,GAAK8oM,EAAgBxhM,GAAGtH,QAAQ,mBAAqB,EAChH8oM,EAAgBp3J,cAAgBo3J,EAChCz8K,EAAa2pJ,GAAiB5mK,EAAOC,EAAOqiC,GAC5Cq3J,EAAiB/sM,KAAKiiL,cAAcoX,cAAgBr5L,KAAK2nL,cACzDygB,EAAej/L,KAAK6a,KAAMhkB,KAAKs7K,cAAcT,UAAUn/J,IAAOqxL,GAC9D7E,EAAc/+L,KAAK6a,IAAIhkB,KAAKs7K,cAAcV,SAASj/J,IAAMoxL,GAC7DhB,EAAe,CACXnxB,SAAUzxK,KAAK6a,IAAIhkB,KAAKs7K,cAAcV,SAASj/J,IAAO0U,EAAWpqB,EAAI8mM,GACrElyB,UAAW1xK,KAAK6a,IAAKqM,EAAWrqB,EAAI+mM,EAAkB/sM,KAAKs7K,cAAcT,UAAUn/J,MAEnF1b,KAAKs7K,cAAcT,UAAUn/J,IAAM,GAAK0sL,EAAe/3K,EAAWrqB,IAClE+lM,EAAalxB,WAAakxB,EAAalxB,WAEvC76K,KAAKs7K,cAAcV,SAASl/J,IAAM,GAAKwsL,EAAc73K,EAAWpqB,IAChE8lM,EAAanxB,UAAYmxB,EAAanxB,eAGzC,GAAIh1H,EAAS5hD,QAAQ,kBAAoB,GAAKhE,KAAKw5L,eAAiBx5L,KAAK0kM,mBAAoB,CAC9F,IAAIlsJ,EAAc7mC,SAASi0C,EAAS3hD,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IACzEw4K,EAAY9qK,SAASi0C,EAAS3hD,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IACzE,GAAK2Z,MAAM46B,IAAiB56B,MAAM6+J,GAK9BsvB,EAAe,CAAEnxB,SAAU,KAAMC,UAAW,UALF,CAC1C,IAAImyB,EAAahtM,KAAKwjL,OAAO3C,GAAY2B,eAAehqI,GAAap5B,WAAWq9J,GAChFsvB,EAAe,CAAEnxB,SAAUoyB,EAAW,YAAanyB,UAAWmyB,EAAWnyB,iBAM5E,GAAIj1H,EAAS5hD,QAAQ,kBAAoB,GAAKhE,KAAKw5L,cAAgBx5L,KAAK0kM,mBAAoB,CAC7F,IAAIthM,EAAUwK,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,eAAiBtL,KAAK0kM,mBAAmB7jB,YAC7F5G,EAAc72K,EAAQgE,wBACtB6lM,EAAa,IAAI3yB,GAAYlnK,EAAQ6mK,EAAYj1K,KAAOmE,KAAK6a,IAAIi2J,EAAYj1K,KAAOoO,GAAS,EAAGC,EAAQ4mK,EAAYl1K,IAAMoE,KAAK6a,IAAIi2J,EAAYl1K,IAAMsO,GAAS,GAC9J+0L,EAAej/L,KAAK6a,KAAMhkB,KAAKs7K,cAAcT,UAAUn/J,IAAO1b,KAAKiiL,cAAcoX,eACjF6O,EAAc/+L,KAAK6a,IAAIhkB,KAAKs7K,cAAcV,SAASj/J,IAAM3b,KAAKiiL,cAAcoX,eAChF0S,EAAe,CACXnxB,SAAUzxK,KAAK6a,IAAIhkB,KAAKs7K,cAAcV,SAASj/J,IAAOsxL,EAAWhnM,GAAKjG,KAAKiiL,cAAcoX,cAAgBr5L,KAAKs8E,QAC9Gu+F,UAAW1xK,KAAK6a,IAAKipL,EAAWjnM,GAAKhG,KAAKiiL,cAAcoX,cAAgBr5L,KAAKs8E,OAAUt8E,KAAKs7K,cAAcT,UAAUn/J,MAEpH1b,KAAKs7K,cAAcT,UAAUn/J,IAAM,GAAK0sL,EAAe6E,EAAWjnM,IAClE+lM,EAAalxB,WAAakxB,EAAalxB,WAEvC76K,KAAKs7K,cAAcV,SAASl/J,IAAM,GAAKwsL,EAAc+E,EAAWhnM,IAChE8lM,EAAanxB,UAAYmxB,EAAanxB,eAI1CmxB,EAAe,CAAEnxB,SAAU,KAAMC,UAAW,WAIhDkxB,EAAe/rM,KAAKqpM,eAAexoB,EAAY76K,EAAGC,GAO1D,OAAO8lM,GAEX3I,EAAKljM,UAAUgrM,cAAgB,WAC3B,IAAIlK,EAAiBpzL,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,mBAC/D,IAAK,eAAkBtL,KAAKqhM,eAAiBL,EAAehkJ,kBAAoBh9C,KAAKqhM,aAAarkJ,kBAC9F,IAAK,IAAI+8D,EAAIinF,EAAehkJ,kBAAoB,EAAG+8D,GAAK/5G,KAAKqhM,aAAarkJ,kBAAmB+8D,IACzFinF,EAAej0I,YAAYi0I,EAAe/6I,SAAS8zD,IAG3D/5G,KAAKqhM,aAAe,MASxB+B,EAAKljM,UAAU2qM,cAAgB,SAAU19L,GACrC,IAEIiG,EAGAC,EAEAwxC,EAPA0mI,EAAYp+K,EAAE7M,OACdslD,EAAW2lI,EAAUjgL,GAOrB4hM,EAAS,EACTC,EAAS,EACFntM,KAAKoD,QAAQgE,wBACV+F,EAAE7M,OAqBhB,IApBiC,IAA7B6M,EAAEqB,KAAKxK,QAAQ,UACfhE,KAAK2pB,SAAU,EACfk7B,EAAW13C,EACX+/L,EAAS95L,EAAQyxC,EAASb,eAAe,GAAG5wC,MAC5CC,EAAQwxC,EAASb,eAAe,GAAG3wC,MACnC85L,EAAS95L,GAASrT,KAAKgiL,UAAY,GAAK,GAC/Bn9H,EAASvkD,OAClBN,KAAK6jM,gBAAkB,CAAE79L,EAAGoN,EAAOnN,EAAGoN,KAGtCrT,KAAK2pB,QAA4B,UAAlBxc,EAAEg2C,YACjB/vC,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MACV65L,EAAS//L,EAAE,UACXggM,EAAShgM,EAAE,WAAanN,KAAKgiL,UAAY,GAAK,GACrC70K,EAAE7M,QAEXN,KAAKgiL,WACLhiL,KAAKkrM,gBAELlrM,KAAK2pB,QAAS,CACd,IAA0C,IAAtC4hK,EAAUjgL,GAAGtH,QAAQ,YAAoB,CACzC,IAAI+nM,EAAe/rM,KAAKgsM,iBAAiBpmJ,EAAUxyC,EAAOC,EAAOk4K,EAAWn4K,EAAOC,GAC9E,eAAkB04L,KACRA,EAAanxB,SACZmxB,EAAalxB,WAGjC76K,KAAK0oD,aAAav7C,EAAGiG,EAAOC,GAAO,GAC9B,eAAkBrT,KAAKy+B,eACxBz+B,KAAKotM,cAAcjgM,EAAGA,EAAEiG,MAAOjG,EAAEkG,OAAO,GAOhD,GAJArT,KAAKs0B,OAAO,OAAQhgB,cAAenH,GAC/BA,EAAEkgM,aAAertM,KAAK2pB,SACtBxc,EAAE+F,iBAED,eAAkBlT,KAAK0kM,oBAiCxB92L,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,QAAQvE,MAAM2sE,OAAS,WAjCpB,CAC7C,IAAIh9D,EAAS1W,KAAK0kM,mBAClB1kM,KAAK6jM,gBAAgB,KAAO7jM,KAAK4jM,eAAe,KAChD5jM,KAAK6jM,gBAAgB,KAAO7jM,KAAK4jM,eAAe,KAC5CmI,EAAe/rM,KAAK2sM,uBAAuBv5L,EAAOC,EAAO65L,EAAQC,EAAQntM,KAAK0kM,oBAAoB,GAAtG,IACI4I,EAAettM,KAAKwjL,OAAO9sK,EAAOmqK,YAAY2B,eAAe9rK,EAAO8hC,aACxE5qC,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,QAAQvE,MAAM2sE,OAAS45H,EAAa//B,WAAa,UAAY,WACvG,IAAIggC,EAAgB,CAChBv9L,KAAM,gBAAiBhK,EAAGoN,EAAOnN,EAAGoN,EACpCunK,SAAUmxB,EAAanxB,SAAUC,UAAWkxB,EAAalxB,UACzDgG,WAAYnqK,EAAOmqK,WAAYroI,YAAa9hC,EAAO8hC,YACnDikI,UAAW/lK,EAAO+lK,WAEtB,GAAI,eAAkB6wB,EAAa5qB,oBAAsB,eAAkB4qB,EAAa7qB,oBAAqB,CACzG,IAAInlK,EAAOgwL,EAAaluL,WAAW1I,EAAO+lK,WACrC,eAAkBn/J,EAAK,eAAkB,eAAkBA,EAAK,cAKjEgwL,EAAaluL,WAAW1I,EAAO+lK,WAAW7B,SAAW2yB,EAAc3yB,SACnE0yB,EAAaluL,WAAW1I,EAAO+lK,WAAW5B,UAAY0yB,EAAc1yB,YALpEyyB,EAAaluL,WAAW1I,EAAO+lK,WAAW+wB,SAAWD,EAAc3yB,SACnE0yB,EAAaluL,WAAW1I,EAAO+lK,WAAWgxB,UAAYF,EAAc1yB,gBAQxEyyB,EAAaluL,WAAW1I,EAAO+lK,WAAW6wB,EAAa5qB,mBAAqB6qB,EAAc3yB,SAC1F0yB,EAAaluL,WAAW1I,EAAO+lK,WAAW6wB,EAAa7qB,oBAAsB8qB,EAAc1yB,UAE/F76K,KAAKskM,aAAe,GACpBtkM,KAAK0kM,mBAAqB,KAC1B1kM,KAAKiI,QAAQ,gBAAiBslM,GASlC,OAJIvtM,KAAK0/B,YAAc1/B,KAAK2P,WACxB3P,KAAK0/B,WAAWkoK,qBAAqB5nM,KAAKgiL,UAAY74K,KAAKC,MAAMpJ,KAAK2iL,eAAiB3iL,KAAKs8E,MAAOt8E,KAAKoD,QAAQkI,GAAK,aACrHtL,KAAK0/B,WAAW0sK,mBAAmB,GAAI,GAAI,GAAI,GAAI,MAEhD,GASXhJ,EAAKljM,UAAUyqM,eAAiB,SAAUx9L,GAKtCnN,KAAK4jM,eAAiB,CAAE59L,EAAGmH,EAAEnH,EAAGC,EAAGkH,EAAElH,IACJ,IAA7BkH,EAAEqB,KAAKxK,QAAQ,UAAmBmJ,EAAE62C,iBACpChkD,KAAK4jM,eAAiB,CAAE59L,EAAGmH,EAAE62C,eAAe,GAAG5wC,MAAOnN,EAAGkH,EAAE62C,eAAe,GAAG3wC,QAE7ErT,KAAK2P,WAAa,eAAkB3P,KAAKssM,oBACzCtsM,KAAKssM,kBAAkBoB,cAAcvgM,GAE9BnN,KAAKoD,QAAQgE,wBAAxB,IACIhE,EAAU+J,EAAE7M,OAChBN,KAAKskM,aAAelhM,EAAQkI,GAC5B,IAAIm2L,EAAgB7zL,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,mBAI9D,GAHItL,KAAKgiL,YAAc,eAAkByf,KACrCzhM,KAAKqhM,aAAeI,EAAcjiG,WAAU,KAER,IAApCp8F,EAAQkI,GAAGtH,QAAQ,YAAoB,CACvC,IAAIw1L,EAAex5L,KAAKw5L,cACpBp2L,EAAQkI,GAAGtH,QAAQ,eAAiB,GAAKZ,EAAQkI,GAAGtH,QAAQ,SAAW,IACvEhE,KAAKqsM,eAEL7S,IACAA,EAAazgB,YAAY5rK,GACzBqsL,EAAavgB,mBAAmB9rK,IAEhCnN,KAAK29L,cACL39L,KAAK29L,aAAagQ,YAAYxgM,GAGtCnN,KAAKs0B,OAAO,OAAQvoB,gBAAiBoB,IAQzCi2L,EAAKljM,UAAUmsM,aAAe,WACtBrsM,KAAKw5L,cAAiBx5L,KAAKw5L,aAAanW,eAAe1iL,OAAS,KAC/DX,KAAK0/B,YAAa1/B,KAAK0/B,WAAWkuK,iBACnCxqB,GAAqBpjL,KAAKw5L,aAAanW,eAAgBrjL,KAAM8qB,GAAW9qB,KAAKoD,QAAQkI,GAAK,mBAC1FtL,KAAKw5L,aAAanW,eAAiB,KAQ3C+f,EAAKljM,UAAUuqM,iBAAmB,SAAUt9L,GACxC,IAAIo+K,EAAYp+K,EAAE7M,OACdslD,EAAW2lI,EAAUjgL,GACrBsvK,EAAW,KACXC,EAAY,KAEhB,GADA76K,KAAK6jM,gBAAkB7jM,KAAK4jM,eAAiB,CAAE59L,EAAGmH,EAAEnH,EAAGC,EAAGkH,EAAElH,IAClB,IAAtCslL,EAAUjgL,GAAGtH,QAAQ,YAAoB,CACzC,IAAI+nM,EAAe/rM,KAAKgsM,iBAAiBpmJ,EAAUz4C,EAAEiG,MAAOjG,EAAEkG,MAAOk4K,EAAWp+K,EAAE,UAAWA,EAAE,WAC1F,eAAkB4+L,KACnBnxB,EAAWmxB,EAAanxB,SACxBC,EAAYkxB,EAAalxB,WAE7B,IAAItpH,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAMuoK,EAAYj4K,OAAQslD,EAAU5/C,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QACtE61H,SAAUA,EAAUC,UAAWA,EAC/BqxB,iBAAiB,GAErBlsM,KAAKiI,QAAQ,aAAcspD,KAUnC6xI,EAAKljM,UAAUwqM,kBAAoB,SAAUv9L,GACzCnN,KAAKs0B,OAAO,WAAYnnB,GACxB,IAGI4+L,EAHA95L,EAAgB9E,EAAE7M,OAClBslD,EAAW3zC,EAAc3G,GACzBu1K,EAAa,EAEbjG,EAAW,KACXC,EAAY,KAChB,IAA8C,IAA1C5oK,EAAc3G,GAAGtH,QAAQ,YAAoB,EACK,IAA9CiO,EAAc3G,GAAGtH,QAAQ,iBAA2BhE,KAAKgiL,WAAchiL,KAAK4jM,eAAe,OAASz2L,EAAE23C,SAClG9kD,KAAK4jM,eAAe,OAASz2L,EAAE43C,QAM9B/kD,KAAKgiL,WAAchiL,KAAK4jM,eAAe,OAASz2L,EAAE23C,SACnD9kD,KAAK4jM,eAAe,OAASz2L,EAAE43C,UACnCgnJ,EAAe/rM,KAAK6sM,mBAAmB1/L,EAAE,UAAWA,EAAE,WACtDytK,EAAWmxB,EAAa,YACxBlxB,EAAYkxB,EAAa,eATzBlrB,EAAa/5K,WAAWmL,EAAc3G,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IAC7E8nM,EAAe/rM,KAAKqpM,eAAexoB,EAAY1zK,EAAE,UAAWA,EAAE,WAC9DytK,EAAWmxB,EAAa,YACxBlxB,EAAYkxB,EAAa,cAQ7B,IAAI8B,EAAkB,CAClBp/L,QAAQ,EAAOuB,KAAMwoK,EAAaxyK,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QACrDzkD,OAAQslD,EAAUg1H,SAAUA,EAAUC,UAAWA,EAAWqxB,gBAAiB,MAEjFlsM,KAAKiI,QAAQ,cAAe4lM,KAUpCzK,EAAKljM,UAAU0qM,eAAiB,SAAUz9L,GACtC,IAGI7M,EAEJA,EAAqB,cAAX6M,EAAEqB,KAAwBrB,EAAE7M,OAClCA,EAAS6M,EAAE7M,OAIXN,KAAKw5L,eACLx5L,KAAKw5L,aAAa5uK,WAAWzd,GAC7BnN,KAAKw5L,aAAargB,uBAAuBhsK,IAEzCnN,KAAK29L,cACL39L,KAAK29L,aAAamQ,WAAW3gM,IAEQ,GAArC7M,EAAOgL,GAAGtH,QAAQ,iBAClB4J,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,QAAQvE,MAAM2sE,OAAS,QAErE1zE,KAAKmQ,YAAYhD,GACjBnN,KAAKs0B,OAAO,OAAQhL,eAAgBnc,IASxCi2L,EAAKljM,UAAUiQ,YAAc,SAAUhD,GACnC,IAEIiG,EACAC,EAHAjQ,EAAU+J,EAAE7M,OAChBN,KAAKykM,YAAcrhM,EAAQ,MAK3B,IAAI+P,EAAU,KACV+5L,EAAS,EACTC,EAAS,EAgBb,IAfgC,GAA5BhgM,EAAEqB,KAAKxK,QAAQ,UACfoP,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MACV65L,EAAS//L,EAAE,UACXggM,EAAShgM,EAAE,WAAanN,KAAKgiL,UAAY,GAAK,GAC9ChiL,KAAK0oD,aAAav7C,EAAGA,EAAEiG,MAAOjG,EAAEkG,OAC3B,eAAkBrT,KAAKy+B,eACxBz+B,KAAKotM,cAAcjgM,EAAGA,EAAEiG,MAAOjG,EAAEkG,OAAO,KAI5CF,EAAUhG,EAAEgG,QACZ+5L,EAAS95L,EAAQD,EAAQ,GAAG2xC,QAC5BqoJ,EAAS95L,EAAQF,EAAQ,GAAG4xC,SAAW/kD,KAAKgiL,UAAY,GAAK,KAE5D,eAAkBhiL,KAAK0kM,oBAAqB,CAC7C,IAAIhuL,EAAS1W,KAAK0kM,mBAClB1kM,KAAK6jM,gBAAgB,KAAO7jM,KAAK4jM,eAAe,KAChD5jM,KAAK6jM,gBAAgB,KAAO7jM,KAAK4jM,eAAe,KAChD5jM,KAAK2sM,uBAAuBv5L,EAAOC,EAAO65L,EAAQC,EAAQz2L,GAAQ,GAKtE,OAHI1W,KAAK0/B,YACL1/B,KAAK0/B,WAAWkoK,qBAAqB5nM,KAAKgiL,UAAY74K,KAAKC,MAAMpJ,KAAK2iL,eAAiB3iL,KAAKs8E,MAAOnvE,EAAE7M,OAAOgL,KAEzG,GAEX83L,EAAKljM,UAAUktM,cAAgB,SAAU1+L,EAAO1I,EAAGC,EAAG0jB,GAClD,IACIokL,EAGAt+K,EAJAm2B,EAAWl3C,EAAMpO,OAAOgL,GAExBypB,EAAO/0B,KAAKy+B,aAAa9J,YACzBq6C,EAActgE,EAAMpO,OAAOgL,GAAGrH,MAAM,WAAW,GAEnD8wB,EAAO/0B,KAAKy+B,aAAa2vC,WAAWztE,QAAUX,KAAKy+B,aAAa9J,YAC1D30B,KAAKy+B,aAAa2vC,WAAWztE,OAAS,EAAIX,KAAKy+B,aAAa9J,YAAc,EAC5E,EAAI30B,KAAKy+B,aAAa9J,YAG1B,IAFA,IAAI5U,EAAgD,IAAxC/f,KAAKy+B,aAAa2vC,WAAWztE,OACrCX,KAAKy+B,aAAa2vC,WAAWr5C,GAAM,cAAcp0B,OAASX,KAAKy+B,aAAa2vC,WAAWztE,OAClFK,EAAI,EAAGA,EAAI+e,EAAO/e,IACvByuB,EAAazvB,KAAKy+B,aAAa2vC,WAAWr5C,GAAM,cAAc/zB,GAC9D+sM,EAAat+K,EAAW,eACxBm2B,EAAWl3C,EAAMpO,OAAO,MACxB0uE,EAActgE,EAAMpO,OAAO,MAAM2D,MAAM,WAAW,GAC7C2hD,IAAc5lD,KAAKoD,QAAQkI,GAAK,sBAAwB0jE,GACxDtgE,EAAMpO,OAAOuoD,YAAY7kD,QAAQ,QAAU,GAAMyrB,EAAW,aAAe9d,SAASq9D,EAAa,KAClG/gE,GAAY8/L,EAAY/tM,KAAKw+B,eAAe5R,UAAU9W,KAAM9P,EAAGC,EAAGjG,KAAKoD,QAAQoG,YAAaxJ,KAAKoD,QAAQqG,aAAczJ,KAAKoD,QAAQkI,GAAK,2BAA4Bwf,GAAW9qB,KAAKoD,QAAQkI,GAAK,sBAAuBqe,GAG5Ni8B,IAAc5lD,KAAKoD,QAAQkI,GAAK,sBAAwB0jE,GACzDiQ,GAAcj/E,KAAKoD,QAAQkI,GAAK,6BAGxC83L,EAAKljM,UAAUwoD,aAAe,SAAUh6C,EAAO1I,EAAGC,EAAG0jB,GACjD,IAAIi8B,EAAWl3C,EAAMpO,OAAOgL,GACxBs6C,IAAc5lD,KAAKoD,QAAQkI,GAAK,gBAAoBoD,EAAMpO,OAAOuoD,YAAY7kD,QAAQ,QAAU,EAC/FiK,GAAYjO,KAAKw+B,eAAexO,MAAMxT,KAAMxc,KAAKw+B,eAAevO,WAAWna,KAAM9P,EAAGC,EAAGjG,KAAKoD,QAAQoG,YAAaxJ,KAAKoD,QAAQqG,aAAczJ,KAAKoD,QAAQkI,GAAK,2BAA4Bwf,GAAW9qB,KAAKoD,QAAQkI,GAAK,sBAAuBqe,GAG9Os1D,GAAcj/E,KAAKoD,QAAQkI,GAAK,4BAE/Bs6C,IAAc5lD,KAAKoD,QAAQkI,GAAK,cAAmBoD,EAAMpO,OAAOuoD,YAAY7kD,QAAQ,QAAU,EAC/FiK,GAAYjO,KAAKulM,cAAc/oL,KAAMxc,KAAKulM,cAAc34K,UAAU9W,MAAQ9V,KAAKkwB,WAAWqiK,cAAevsL,EAAGC,EAAGjG,KAAKoD,QAAQoG,YAAaxJ,KAAKoD,QAAQqG,aAAczJ,KAAKoD,QAAQkI,GAAK,qBAAsBwf,GAAW9qB,KAAKoD,QAAQkI,GAAK,sBAAuBqe,GAGhQs1D,GAAcj/E,KAAKoD,QAAQkI,GAAK,uBAUxC83L,EAAKljM,UAAU8qM,aAAe,SAAU79L,GACpC,IAAI9J,EAAQrD,KACZ,IAAKA,KAAKgpB,cAAgBhpB,KAAKguM,uBAAwB,CACnDhuM,KAAKqjM,SAAWrjM,KAAKkqL,SAAU,EAC/B,IAAI71J,EAAO,CACP5lB,QAAQ,EACRuB,KAAMyoK,EACNh0H,aAAczkD,KAAK8tB,cACnB02B,YAAam1H,GAAc35K,MAC3B45K,KAAM55K,MAEVA,KAAKiI,QAAQwwK,EAAQpkJ,GAChBA,EAAK5lB,SACFzO,KAAK4kD,UACL93C,aAAa9M,KAAK4kD,WAEjB,eAAkB5kD,KAAKoD,UAAYpD,KAAKoD,QAAQ8B,UAAUmB,SAAS,YACpErG,KAAK4kD,SAAWx3C,YAAW,WACvB/J,EAAM4hM,eACN5hM,EAAM8hM,YACN9hM,EAAMuvH,YAAa,EACnBvvH,EAAM6hM,aACN7hM,EAAMsQ,SACNtQ,EAAMuvH,YAAa,IACpB,OAIf,OAAO,GASXwwE,EAAKljM,UAAU+tM,eAAiB,SAAU7mB,EAAgBrnJ,GACtD,IAAK//B,KAAKgpB,YAAa,CACnBhpB,KAAK0nL,eAAiB1nL,KAAK6oL,uBAAwB,EACnD,IAAI/sD,EAAY97H,KAAK2/B,aAAaI,aAAeA,EACjD//B,KAAK4oL,mBAAqB,MACrB5oL,KAAKgiL,WAAahiL,KAAK0/B,WACnB,eAAkB0nJ,IASnBpnL,KAAK2/B,aAAaI,WAAaA,EAC/B//B,KAAKmqL,kBAAmB,EACxBnqL,KAAK2nL,cAAgB,OAVrB3nL,KAAK2/B,aAAaI,WAAaA,EAC/B+7F,EAAY97H,KAAKonL,eAAexM,WAAawM,EAAexM,UACxD56K,KAAKonL,eAAevM,YAAcuM,EAAevM,WAAmB/+C,EACxE97H,KAAKonL,eAAiBA,EACtBpnL,KAAKmqL,kBAAmB,EACxBnqL,KAAK2nL,cAAgB,MAQpB3nL,KAAK0/B,aACV1/B,KAAK2iL,cAAgB3iL,KAAK2/B,aAAaI,WAAaA,EACpD+7F,EAAY97H,KAAKonL,eAAexM,WAAawM,EAAexM,UACxD56K,KAAKonL,eAAevM,YAAcuM,EAAevM,WAAmB/+C,EACxE97H,KAAKonL,eAAiBA,EACtBpnL,KAAKmqL,kBAAmB,GAExBruD,GACA97H,KAAKsV,YAWjB8tL,EAAKljM,UAAUguM,eAAiB,SAAU53K,EAAW63K,GACjD,IAAKnuM,KAAKgpB,YAAa,CACnB,IAAIolL,EAAQ,EACRC,EAAQ,EACZ,OAAQ/3K,GACJ,IAAK,OACD83K,GAAUpuM,KAAKo7K,YAAY91K,MAAQ,EACnC,MACJ,IAAK,QACD8oM,EAASpuM,KAAKo7K,YAAY91K,MAAQ,EAClC,MACJ,IAAK,MACD+oM,GAAUruM,KAAKo7K,YAAY/1K,OAAS,EACpC,MACJ,IAAK,SACDgpM,EAASruM,KAAKo7K,YAAY/1K,OAAS,EACnC,MAEJrF,KAAK0/B,YACL1/B,KAAK0/B,WAAWgsK,QAAQp1K,EAAW83K,EAAOC,EAAOF,KAU7D/K,EAAKljM,UAAUouM,SAAW,SAAUvzB,GAChC,IAAK/6K,KAAKgpB,YAAa,CACnB,IAAIulL,EAAYvuM,KAAKwjL,OACrB+qB,EAAUliM,KAAK0uK,GACf/6K,KAAKihM,YAAa,EAClBjhM,KAAKwjL,OAAS+qB,IAStBnL,EAAKljM,UAAUsuM,YAAc,SAAU/hM,GACnC,IAAKzM,KAAKgpB,YAAa,CACnB,IAAIulL,EAAYvuM,KAAKwjL,OACrB+qB,EAAU7hM,OAAOD,EAAO,GACxBzM,KAAKwjL,OAAS+qB,IAYtBnL,EAAKljM,UAAUuuM,UAAY,SAAU5tB,EAAYf,GAC7C,IAAK9/K,KAAKgpB,cAAgB,eAAkBhpB,KAAKw5L,cAAe,CAC5D,IAAIkV,EAAW9gM,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,eAAiBu1K,GAC1E,GAAIf,EAAiBn/K,OAAS,GAAK+tM,EAAU,CACzC,IAAK,IAAI7gM,EAAK,EAAG8gM,EAAqB7uB,EAAkBjyK,EAAK8gM,EAAmBhuM,OAAQkN,IAAM,CAC1F,IAAI+gM,EAAYD,EAAmB9gM,GACnC7N,KAAKkrL,iBAAiBrK,GAAY2B,eAAen2K,KAAK,IAAI6J,GAAelW,KAAM,iBAAkB4uM,IAErG5uM,KAAKw5L,aAAa1yK,aAAa9mB,KAAM0uM,EAAU7tB,EAAY7gL,KAAKiiL,cAAc,iBAAkB,aAChGjiL,KAAKm7L,qBAajBiI,EAAKljM,UAAU2mM,eAAiB,SAAUhmB,EAAYguB,EAAc7+L,EAAMyW,GACtE,IAAKzmB,KAAKgpB,YAAa,CACnB,IAAIuiK,OAAY,EACZujB,OAAgB,EAChBC,EAAmBnvM,MAAMqhB,QAAQ4tL,GAAgBA,EAAejvM,MAAMivM,GACtE,eAAkBpoL,KAClBA,GAAS,GAEb,IAAI2kL,EAAoBprM,KAAKwjL,OAAO3C,GAAYv9E,kBAIhD,IAHK8nG,EAAkBxE,mBAAqB5mM,KAAKonD,iBAAmB3gC,GAChEzmB,KAAKgvM,uBAE4B,aAAjChvM,KAAKwjL,OAAO3C,GAAYryK,KACxB,IAAK,IAAIxN,EAAI,EAAGA,EAAIhB,KAAKkrL,iBAAiBvqL,OAAQK,IAC9C,GAAKhB,KAAKkrL,iBAAiBlqL,GAAGi3K,YAAcj4K,KAAKwjL,OAAO3C,GAAY5I,UAAY,CAC5E62B,EAAgB9tM,EAChB,MAIZ,GAAIoqM,EAAkB3kL,OAClB,KAAIm/B,OAAW,EACX62H,OAAY,EACZwO,OAAa,EACbgkB,OAAa,EACb7oB,OAAiB,EACjB9oK,OAAO,EACP26J,EAAYj4K,KAAKwjL,OAAO3C,GAAY5I,UAAU,YAClD,IAASj3K,EAAI,EAAGA,EAAIi3K,EAAUt3K,OAAQK,IAClC,IAAK,IAAI6iB,EAAI,EAAGA,EAAIkrL,EAAiBpuM,OAAQkjB,IAAK,CAC9C,IAAIqrL,GAAkB,eAAkBj3B,EAAUj3K,GAAG,cAAc+tM,EAAiBlrL,MAC7EjG,MAAMq6J,EAAUj3K,GAAG,cAAc+tM,EAAiBlrL,KACrDo0J,EAAUj3K,GAAG,cAAc+tM,EAAiBlrL,IAAItB,cAAgB01J,EAAUj3K,GAAG,cAAc+tM,EAAiBlrL,IAC5GsrL,EAAa,eAAkBn/L,IAAyB,kBAATA,EAAyCA,EAArBA,EAAKuS,cACxEiB,OAAI,EACR,GAAI0rL,IAAmBC,EAAW,CACzB,eAAkBnvM,KAAKwjL,OAAO3C,GAAYzI,cAAckI,kBACzD98J,EAAIqiK,GAAqB7lL,KAAKwjL,OAAO3C,GAAYzhK,WAAY64J,EAAUj3K,GAAG,cAAehB,KAAKwjL,OAAO3C,GAAY1I,cAAen4K,KAAKwjL,OAAO3C,GAAY3I,kBAAmBl4K,KAAKwjL,OAAO3C,KAE3L,IAAIqf,EAAYlgM,KAAKwjL,OAAO3C,GAkB5B,GAjBI7gL,KAAK+kL,gBAAkB,GAAKmb,EAAUzK,YACtCwZ,EAAa,EAEyB,aAAjCjvM,KAAKwjL,OAAO3C,GAAYryK,OAC7BygM,EAAaH,GAEjBlpJ,EAAW5lD,KAAKoD,QAAQkI,GAAbtL,eAAwCivM,EAAa,eAAiBjuM,EAAI,cAAgBwiB,EACrG+nK,EAAYzgK,GAAW86B,GACnB,eAAkBpiC,IAAM,eAAkB+nK,KAC1C3lI,EAAW5lD,KAAKoD,QAAQkI,GAAbtL,eAAwC6gL,EAAa,eAAiB7/K,EAAI,kBACrFuqL,EAAYzgK,GAAW86B,IAE3BqlI,EAAat5K,SAAS45K,EAAUjgL,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IAC3EmiL,EAAiBpmL,KAAKwjL,OAAO3C,GAAY5I,UAAU,YAAY,UAAYgT,EACvEjrL,KAAKwjL,OAAO3C,GAAY5I,UAAU,YAAYgT,GAAY,cAAgB,KAC9ExO,EAAY9qK,SAAS45K,EAAUjgL,GAAGrH,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IACzEqZ,EAAO,eAAkBm/J,GAAa,KAAOz8K,KAAKwjL,OAAO3C,GAAYzhK,WAAWq9J,GAC5Eh2J,EAAQ,CACRklK,GAA0Byf,EAAmBprM,KAAMurL,EAAWnF,EAAgB9oK,GAC9Etd,KAAKwlL,oBAAsB16J,GAAW,qBAClC9qB,KAAKw+B,eAAe7nB,UAAsD,IAA3C40K,EAAUjgL,GAAGtH,QAAQ,kBACpDhE,KAAKy+B,aAAa2wK,2BAA2B7jB,EAAWjuK,EAAM8tL,EAAmB,YAAavqB,GAElG,IAAIwuB,GAAervM,KAAKw+B,eAAe7nB,SAAU3W,KAAKy+B,aAAa4wK,aACnE,GAAIA,IACA9jB,EAAU5gL,aAAa,QAAS,2BACsC,IAAlE3K,KAAKq9L,kBAAkBr5L,QAAQunL,EAAU7gL,aAAa,QACtD1K,KAAKq9L,kBAAkBhxL,KAAKk/K,EAAU7gL,aAAa,QAElD0gM,EAAkBxE,mBACnB,WAIP,CACD5mM,KAAKonD,iBAAoBgkJ,EAAkBxE,oBAAsB5mM,KAAKonD,iBAC3DpnD,KAAKonD,gBACZpnD,KAAKw+B,eAAe7nB,UAAsD,IAA3C40K,EAAUjgL,GAAGtH,QAAQ,kBAChB,2BAApCunL,EAAU7gL,aAAa,UACvB1K,KAAKy+B,aAAa2wK,2BAA2B7jB,EAAWjuK,EAAM8tL,EAAmB,YAAavqB,GAE9FwuB,GAAervM,KAAKw+B,eAAe7nB,SAAU3W,KAAKy+B,aAAa4wK,aACnE,GAAIA,EAAc,CACdzjB,GAAYL,GACZ,IAAI+jB,EAAyBtvM,KAAKq9L,kBAAkBr5L,QAAQunL,EAAU7gL,aAAa,QACnD,IAA5B4kM,IACAtvM,KAAKq9L,kBAAkB3wL,OAAO4iM,EAAwB,IACjDlE,EAAkBxE,mBAAqB5mM,KAAKonD,iBAC1CpnD,KAAKq9L,kBAAkB18L,OAAS,GACnCX,KAAKgvM,+BAoB7C5L,EAAKljM,UAAUqvM,kBAAoB,SAAUrH,EAAaE,EAAcD,EAAaE,GACjF,IAAIxkM,EAAIC,EACR,IAAK9D,KAAKgpB,YAAa,CACnBhpB,KAAK6oL,uBAAwB,EAC7B,IAAIxB,OAAiB,EACjBmoB,OAAmB,EACnBC,GAAmB,EACvBzvM,KAAKonL,eAAiB,CAClBxM,SAAU,KACVC,UAAW,MAEf76K,KAAKmqL,kBAAmB,GACpB,eAAkBge,IAAgB,eAAkBE,IACjD,eAAkBH,IAAgB,eAAkBE,MACvDF,EAAc,eAAkBA,GAAe,EAAIA,EACnDE,EAAe,eAAkBF,GAAe,EAAIE,EACpDD,EAAc,eAAkBA,GAAeD,EAAcC,EAC7DE,EAAe,eAAkBA,GAAgBD,EAAeC,EAChEoH,GAAmB,GAEnBvH,EAAcC,IACdtkM,EAAK,CAACskM,EAAaD,GAAcA,EAAcrkM,EAAG,GAAIskM,EAActkM,EAAG,IAEvEukM,EAAeC,IACfvkM,EAAK,CAACukM,EAAcD,GAAeA,EAAetkM,EAAG,GAAIukM,EAAevkM,EAAG,IAE1E2rM,GAKDpoB,EAAkB6gB,EAAcC,EAChCqH,EAAoBpH,EAAeC,IALnChhB,GAAkB6gB,EAAcC,GAAe,EAC/CqH,GAAoBpH,EAAeC,GAAgB,GAMvDroM,KAAKwnL,yBAA2BH,EAChCrnL,KAAKynL,0BAA4B+nB,EACjCxvM,KAAK8mL,sBAAwBohB,EAC7BloM,KAAK+mL,uBAAyBqhB,EAC9BpoM,KAAKgnL,sBAAwBmhB,EAC7BnoM,KAAKinL,uBAAyBohB,EAC9BroM,KAAK0nL,gBAAiB,EACtB1nL,KAAKgoL,qBAAuByI,GAAmByX,EAAaC,EAAaC,EAAcC,EAAcroM,KAAKo7K,YAAY91K,MAAOtF,KAAKo7K,YAAY/1K,OAAQrF,MAAM,GAC5J,IAAI+nM,EAA0B/nM,KAAKgoM,6BAC/B0H,EAAW,CACXjhM,QAAQ,EAAOuB,KAAM,OAAQxB,KAAM+qK,GAAQK,KAAM55K,KACjD28K,mBAAoB,GAAI6M,eAAgB,GACxC7G,cAAe3iL,KAAKgiL,UAAY,CAAE/iK,SAAUjf,KAAK2iL,cAAelpE,QAASz5G,KAAKgoL,sBAAyB,GACvG1rG,MAAQt8E,KAAKgiL,UACT,CAAE/iK,SAAUjf,KAAK2iL,cAAelpE,QAASz5G,KAAKgoL,sBADzB,CAAE/oK,SAAUjf,KAAKs8E,MAAOm9B,QAASz5G,KAAKgoL,sBAE/DkgB,YAAaH,EAAwBG,YAAaC,YAAaJ,EAAwBI,YACvFC,aAAcL,EAAwBK,aAAcC,aAAcN,EAAwBM,cAE9FroM,KAAKiI,QAAQ,OAAQynM,GACrB1vM,KAAKsV,YAQb8tL,EAAKljM,UAAU8uM,qBAAuB,WAElC,IADA,IAAIW,EAAmB3vM,KAAKq9L,kBAAkB18L,OACrCK,EAAI,EAAGA,EAAI2uM,EAAkB3uM,IAClC4qL,GAAY7I,GAAe/iL,KAAKq9L,kBAAkB,KAClDr9L,KAAKq9L,kBAAkB3wL,OAAO,EAAG,GAErC,GAAI1M,KAAKw+B,eAAe7nB,QACpB,KAAIi5L,EAAyB5vM,KAAKkkM,0BAA0BvjM,OAC5D,IAASK,EAAI,EAAGA,EAAI4uM,EAAwB5uM,IACxC4qL,GAAY7I,GAAe/iL,KAAKkkM,0BAA0BljM,GAAG,iBAAiB,QAC9EhB,KAAKikM,wBAAwBv3L,OAAO,EAAG,GAG/C1M,KAAKqrL,mBAAqB,GAC1BrrL,KAAKkkM,0BAA4B,IAOrCd,EAAKljM,UAAUy4C,WAAa,WACxB34C,KAAKia,KAAO,IAAI,OAChBja,KAAK0pD,qBACL1pD,KAAK+5C,aAAe,IAAI,OAAK/5C,KAAK8U,gBAAiB9U,KAAK2pD,sBAAuB3pD,KAAK4pD,SAOxFw5I,EAAKljM,UAAUwpD,mBAAqB,WAEhC1pD,KAAK2pD,sBAAwB,CACzBO,OAAQ,UACRC,KAAM,OACNC,QAAS,WACTC,IAAK,MACLC,MAAO,QACPulJ,cAAe,oBAQvBzM,EAAKljM,UAAUsS,QAAU,WACrBxS,KAAKilM,eACA,eAAkBjlM,KAAKssM,oBACxBtsM,KAAKssM,kBAAkB16J,sBAE3B/uC,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC9BA,KAAKqrL,mBAAqB,GAC1BrrL,KAAKs9L,sBAAwB,GAC7Bt9L,KAAKokM,gBAAkB,GACvBpkM,KAAKkkM,0BAA4B,GACjClkM,KAAKikM,wBAA0B,GAC/BjkM,KAAK+jM,4BAA8B,GACnC/jM,KAAK8jM,wBAA0B,GAC/B9jM,KAAK0kL,wBAA0B,GAC/B1kL,KAAKq9L,kBAAoB,GACzBr9L,KAAKyjM,eAAiB,GACtBzjM,KAAK0jM,oBAAsB,GAC3B1jM,KAAK2jM,mBAAqB,GAC1B3jM,KAAK4jM,eAAiB,CAAE59L,EAAG,KAAMC,EAAG,MACpCjG,KAAK6jM,gBAAkB,CAAE79L,EAAG,KAAMC,EAAG,MACrCjG,KAAKs/K,eAAiB,KAGtBt/K,KAAK8tB,cAAgB,IAAIiwD,GAAK,EAAG,GAC7BnwE,SAASyd,eAAe,oBACxBzd,SAASyd,eAAe,mBAAmBlmB,SAE/CnF,KAAK4hD,aAQTwhJ,EAAKljM,UAAU4U,cAAgB,WAC3B,MAAO,QAQXsuL,EAAKljM,UAAU6U,eAAiB,WAC5B,IAAI8sC,EAAY,CAAC,iBAAkB,eAAgB,gBAAiB,qBAAsB,qBACtF,QAAS,kBAAmB,eAAgB,oBAAqB,eAAgB,mBAAoB,uBACrG,iBAAkB,oBACtB,OAAO7hD,KAAKgV,aAAa6sC,IAU7BuhJ,EAAKljM,UAAU+U,kBAAoB,SAAUC,EAASC,GAClD,IAAKnV,KAAKgpB,YAAa,CACnB,IAAIrV,GAAS,EACTm8L,GAAW,EACXC,GAAU,EACVC,GAAkB,EAEtB,GAAI96L,EAAQ,UAAW,CACnB,IAAI+6L,EAAiBxwM,OAAO2V,KAAKF,EAAQ,WAAWvU,OACzCiN,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,gBAAkB2kM,EAAiB,IAE5F,IAAK,IAAIpiM,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,aACDrV,KAAK46C,eACL,MACJ,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACD,GAAa,WAATvlC,EAAmB,CACnB06L,GAAU,EAEV,IADA,IAAIG,EAAkBzwM,OAAO2V,KAAKF,EAAQsuK,QAAQ7iL,OACzCqF,EAAI,EAAGA,EAAIkqM,EAAiBlqM,IACjC,IAAK,eAAkBkP,EAAQsuK,OAAOx9K,IAElC,IADA,IAAIypB,EAAahwB,OAAO2V,KAAKF,EAAQsuK,OAAOx9K,IACnClC,EAAK,EAAG8xK,EAAenmJ,EAAY3rB,EAAK8xK,EAAaj1K,OAAQmD,IAAM,CACxE,IAAIqsM,EAAiBv6B,EAAa9xK,GACV,cAAnBqsM,GAAkE,aAAhCj7L,EAAQsuK,OAAOx9K,GAAGg/K,WACpD,eAAkBhlL,KAAKwjL,OAAOx9K,GAAGiyK,aAC1B,eAAkBj4K,KAAKwjL,OAAOx9K,GAAG20L,cAA+C,KAA/B36L,KAAKwjL,OAAOx9K,GAAG20L,YACxE36L,KAAKkqL,SAAU,EAES,mBAAnBimB,EACLL,GAAW,EAEa,kBAAnBK,IACLH,GAAkB,IAMtCr8L,GAAS,EACT,MACJ,IAAK,eACI,eAAkBwB,EAAQwqB,gBACvBzqB,EAAQyqB,aAAaI,aAAe5qB,EAAQwqB,aAAaI,YAAegwK,EAGnE76L,EAAQyqB,aAAaioJ,sBAAwBzyK,EAAQwqB,aAAaioJ,qBACvE5nL,KAAK2/B,aAAaI,WAAa,EAC/B//B,KAAK4oL,mBAAqB,KAC1B5oL,KAAKs8E,MAAQt8E,KAAK6oL,sBAAwB,KAAO7oL,KAAKs8E,MACtDt8E,KAAK6oL,uBAAyB3zK,EAAQyqB,aAAaioJ,oBACnDj0K,GAAS,GAEJuB,EAAQyqB,aAAalZ,SAAWtR,EAAQwqB,aAAalZ,QAC1DzmB,KAAK2/B,aAAaI,WAAa,EAC/BpsB,GAAS,GAGTA,GAAS,EAdTA,GAAS,GAiBjB,MACJ,IAAK,SACL,IAAK,eACD9Q,EAAO3C,UAAUoV,QAAQhS,KAAKtD,MAC9B,OAGR2T,IACIuB,EAAQsuK,QAAUssB,GAClB7wH,GAAcj/E,KAAKoD,QAAQkI,GAAK,kBAC5BtL,KAAKgiL,UACLhiL,KAAKiiL,cAAckX,gBAAgBn5L,KAAKiiL,cAAejiL,KAAKwjL,OAAO,iBAAmBxjL,KAAKwjL,OAAO7iL,OAAS,GAG3GX,KAAK2T,UAGJuB,EAAQsuK,QAAUwsB,EACvBhwM,KAAKiiL,cAAc6e,gBAAgB9gM,KAAKwjL,OAAOxjL,KAAKwjL,OAAO7iL,OAAS,GAAGJ,IAAKP,KAAK+gM,gBAGjF/gM,KAAKmlM,YACLnlM,KAAKs6C,qBAWrB8oJ,EAAKljM,UAAUwqD,gBAAkB,WAC7B,IAAIC,EAAU,GACVylJ,EAAYpwM,KAAKqwM,kBAAkBrwM,KAAKwjL,QACxC8sB,GAAmB,EAwFvB,OAvFAtwM,KAAKgqD,YAAYnjD,KAAI,SAAUkjD,GAC3BumJ,EAAyC,MAAtBvmJ,EAAWl/C,WAE9B7K,KAAKuwM,mBACL5lJ,EAAQt+C,KAAK,CACT2S,OAAQ,SACRqV,KAAM,CAACr0B,QAGXowM,EAAUj8I,WACVxJ,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,QAGXowM,EAAUvyG,WACVlzC,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,QAGXA,KAAKw+B,eAAe7nB,SACpBg0C,EAAQt+C,KAAK,CACT2S,OAAQ,SACRqV,KAAM,CAACr0B,SAGXA,KAAK2/B,aAAalZ,QAAUzmB,KAAK2/B,aAAaI,WAAa//B,KAAK2/B,aAAa6wK,UAC7E7lJ,EAAQt+C,KAAK,CACT2S,OAAQ,OACRqV,KAAM,CAACr0B,QAGXA,KAAKywM,oBACL9lJ,EAAQt+C,KAAK,CACT2S,OAAQ,SACRqV,KAAM,CAACr0B,QAGXA,KAAK0wM,sBACL/lJ,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,QAGXA,KAAK2wM,uBACLhmJ,EAAQt+C,KAAK,CACT2S,OAAQ,iBACRqV,KAAM,CAACr0B,QAGXA,KAAK4wM,oBACLjmJ,EAAQt+C,KAAK,CACT2S,OAAQ,UACRqV,KAAM,CAACr0B,QAGXowM,EAAU//L,SACVs6C,EAAQt+C,KAAK,CACT2S,OAAQ,cACRqV,KAAM,CAACr0B,QAGXswM,GACA3lJ,EAAQt+C,KAAK,CACT2S,OAAQ,cACRqV,KAAM,CAACr0B,KAAM,MAGjBA,KAAK6wM,YACLlmJ,EAAQt+C,KAAK,CACT2S,OAAQ,QACRqV,KAAM,CAACr0B,QAGXA,KAAK8wM,kBACLnmJ,EAAQt+C,KAAK,CACT2S,OAAQ,cACRqV,KAAM,CAACr0B,QAGXA,KAAK2lH,gBACLh7D,EAAQt+C,KAAK,CACT2S,OAAQ,YACRqV,KAAM,CAACr0B,QAGR2qD,GAOXy4I,EAAKljM,UAAUuwM,iBAAmB,WAC9B,IAAIL,GAAY,EAShB,OARAxwM,MAAMM,UAAU+uF,QAAQ3rF,KAAKtD,KAAKwjL,QAAQ,SAAUzI,GAChD,IAAK,IAAI/5K,EAAI,EAAGA,EAAI+5K,EAAMyH,eAAe7hL,OAAQK,IAC7C,GAAI+5K,EAAMyH,eAAexhL,GAAG2V,QAAS,CACjCy5L,GAAY,EACZ,UAILA,GAOXhN,EAAKljM,UAAUwwM,mBAAqB,WAEhC,IADA,IAAIN,GAAY,EACPpvM,EAAI,EAAGA,EAAIhB,KAAKwjL,OAAO7iL,OAAQK,IACpC,GAAIhB,KAAKwjL,OAAOxiL,GAAGg9L,kBAAkBrnL,QAAS,CAC1Cy5L,GAAY,EACZ,MAGR,OAAOA,GAOXhN,EAAKljM,UAAUywM,oBAAsB,WACjC,IAAIP,GAAY,EAShB,OARAxwM,MAAMM,UAAU+uF,QAAQ3rF,KAAKtD,KAAKwjL,QAAQ,SAAUzI,GAChD,IAAK,IAAI/5K,EAAI,EAAGA,EAAI+5K,EAAMwS,uBAAuB5sL,OAAQK,IACrD,GAAI+5K,EAAMwS,uBAAuBvsL,GAAG2V,QAAS,CACzCy5L,GAAY,EACZ,UAILA,GAOXhN,EAAKljM,UAAU0wM,iBAAmB,WAC9B,IAAIR,GAAY,EAShB,OARAxwM,MAAMM,UAAU+uF,QAAQ3rF,KAAKtD,KAAKwjL,QAAQ,SAAUzI,GAChD,IAAK,IAAI/5K,EAAI,EAAGA,EAAI+5K,EAAMkS,gBAAgBC,SAASvsL,OAAQK,IACvD,GAAI+5K,EAAMkS,gBAAgBC,SAASvsL,OAAS,EAAG,CAC3CyvM,GAAY,EACZ,UAILA,GAKXhN,EAAKljM,UAAUqwM,gBAAkB,WAE7B,IADA,IAAIH,GAAY,EACPviM,EAAK,EAAGhK,EAAK7D,KAAKwjL,OAAQ31K,EAAKhK,EAAGlD,OAAQkN,IAAM,CACrD,IAAIktK,EAAQl3K,EAAGgK,GACf,GAAI7N,KAAK+wM,iBAAiBh2B,GAAQ,CAC9Bq1B,GAAY,EACZ,OAGR,OAAOA,GASXhN,EAAKljM,UAAU6wM,iBAAmB,SAAUh2B,GAExC,IADA,IAAIq1B,GAAY,EACPviM,EAAK,EAAGhK,EAAKk3K,EAAM6gB,eAAgB/tL,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAImjM,EAASntM,EAAGgK,GAChB,GAAImjM,EAAOr6L,QAAS,CAChBy5L,GAAY,EACZ,OAGR,OAAOA,GAQXhN,EAAKljM,UAAUw+C,MAAQ,SAAUpzC,GACxBtL,KAAe,YAAMA,KAAgB,cAAMA,KAAKgpB,aACjDhpB,KAAKkwF,YAAYxxC,MAAM1+C,KAAMsL,IAYrC83L,EAAKljM,UAAUgkD,OAAS,SAAU11C,EAAM21C,EAAUjjB,EAAa+vK,GAC3D,IAAI5tM,EAAQrD,KACZ,IAAKA,KAAKgpB,YAAa,CAInB,GAHI,eAAkBioL,KAClBA,GAAgB,GAEN,QAATziM,GAAoBxO,KAAqB,kBAAMA,KAAsB,kBACtE,OAAO,IAAI+4G,SAAQ,SAAUp+E,EAASE,GAClCF,EAAQt3B,EAAM6tM,kBAAkBhtJ,OAAO7gD,EAAOmL,EAAM21C,EAAU8sJ,OAGjE,GAAKjxM,KAAmB,gBAAMA,KAAoB,gBACnD,OAAO,IAAI+4G,SAAQ,SAAUp+E,EAASE,GAClCF,EAAQt3B,EAAMurI,gBAAgB1qF,OAAO7gD,EAAOmL,EAAM21C,EAAU8sJ,EAAe/vK,OAIvF,OAAO,MAQXkiK,EAAKljM,UAAUixM,mBAAqB,SAAUr1K,GAC1C,IAAI/B,EAcJ,OAbK/5B,KAAKgpB,cACN+Q,EAAU,IAAIg/E,SAAQ,SAAUp+E,EAASE,GACrC,IAAIu2K,EAAW,IAAI,OAAM,CACrBt1K,IAAKA,IAETs1K,EAASnW,UAAY,SAAUzoK,GAE3B,IAAI0oK,EAAW1oK,EAAK,gBAAgB,GAAG,aAAa,GACpDmI,EAAQugK,EAAS,cAErBkW,EAAS/V,WAGVthK,GAaXqpK,EAAKljM,UAAUmwM,kBAAoB,SAAU7sB,EAAQ6tB,EAAgBC,EAAiBC,EAAkBC,EAAa/6I,GAMjH,IAAIg7I,EACAC,EACAC,OAPmB,IAAnBN,IAA6BA,GAAiB,QAC1B,IAApBC,IAA8BA,GAAkB,QAC3B,IAArBC,IAA+BA,GAAmB,QAClC,IAAhBC,IAA0BA,GAAc,QACxB,IAAhB/6I,IAA0BA,GAAc,GAI5C,IAAK,IAAI5oD,EAAK,EAAG+jM,EAAWpuB,EAAQ31K,EAAK+jM,EAASjxM,OAAQkN,IAAM,CAC5D,IAAIktK,EAAQ62B,EAAS/jM,GAErB,GADAwjM,EAAiBt2B,EAAMpkK,SAAW06L,EAC9Bt2B,EAAMpkK,QAAS,CACf86L,EAAU12B,EAAM6gB,eAChB8V,EAAU32B,EAAMyH,eAChBmvB,EAAiB52B,EAAMkS,gBAEvB,IADA,IAAI4kB,EAAiB92B,EAAMwS,uBAClB1pL,EAAK,EAAGiuM,EAAmBD,EAAgBhuM,EAAKiuM,EAAiBnxM,OAAQkD,IAAM,CACpF,IAAIkuM,EAAaD,EAAiBjuM,GAC9BkuM,EAAWp7L,UACX66L,GAAgB,eAAkBO,EAAW3U,oBAAsB2U,EAAW3U,kBAAkB32K,QAAW+qL,EAC3G/6I,GAAgB,eAAkBs7I,EAAWzuG,oBAAsByuG,EAAWzuG,kBAAkB78E,QAAWgwC,GAGnH,IAAK,IAAI3yD,EAAK,EAAG0d,EAAKmwL,EAAezkB,SAAUppL,EAAK0d,EAAG7gB,OAAQmD,IAAM,CACjE,IAAIwzE,EAAU91D,EAAG1d,GACbwzE,EAAQ9/D,OAAO7W,OAAS,IACxB6wM,EAAcz2B,EAAMkS,gBAAgBmQ,kBAAkB32K,QAAU+qL,EAChE/6I,EAAcskH,EAAMkS,gBAAgB3pF,kBAAkB78E,QAAUgwC,GAGxE,IAAK,IAAIx0C,EAAK,EAAG+vL,EAAYN,EAASzvL,EAAK+vL,EAAUrxM,OAAQshB,IAAM,CAC/D,IAAIvL,EAASs7L,EAAU/vL,GAMvB,GALIvL,EAAOC,UACP46L,EAAmB76L,EAAO2hK,gBAAgB1hK,SAAW46L,EACrDC,EAAc96L,EAAO4sF,kBAAkB78E,QAAU+qL,EACjD/6I,EAAc//C,EAAO0mL,kBAAkB32K,QAAUgwC,GAEjD86I,EACA,MAGR,IAAK,IAAIrvL,EAAK,EAAG+vL,EAAYR,EAASvvL,EAAK+vL,EAAUtxM,OAAQuhB,IAAM,CAC/D,IAAI8uL,EAASiB,EAAU/vL,GAMvB,GALI8uL,EAAOr6L,UACP46L,EAAmBP,EAAO34B,gBAAgB1hK,SAAW46L,EACrDC,EAAcR,EAAO1tG,kBAAkB78E,QAAU+qL,EACjD/6I,EAAcu6I,EAAO5T,kBAAkB32K,QAAUgwC,GAEjD86I,EACA,MAGRA,EAAmBx2B,EAAM1C,gBAAgB1hK,SAAW46L,EACpDC,EAAcz2B,EAAMz3E,kBAAkB78E,QAAU+qL,EAChD/6I,EAAcskH,EAAMqiB,kBAAkB32K,QAAUgwC,EAEpD,GAAI46I,GAAkBC,GAAmBC,EACrC,MAGR,MAAO,CACHx2B,MAAOs2B,EAAgBL,OAAQM,EAAiBjhM,QAASkhM,EACzD1zG,UAAW2zG,EAAar9I,UAAWsC,IAW3C2sI,EAAKljM,UAAUmpM,eAAiB,SAAUxoB,EAAY76K,EAAGC,GACrD,IAAI20K,EAAW,EACXC,EAAY,EAChB,IAAK76K,KAAKgpB,YAAa,CACnB,IAAIxZ,EAAY5B,SAASyd,eAAerrB,KAAKoD,QAAQkI,IACjD8H,EAAQpN,GAAK,eAAkBhG,KAAK0kM,oBAAsBl1L,EAAUoB,WAAa,GACjFyC,EAAQpN,GAAK,eAAkBjG,KAAK0kM,oBAAsBl1L,EAAUuB,UAAY,GAChFwrK,EAAev8K,KAAKkrL,iBAAiBrK,GACrC3sG,EAAY6tG,GAAa/hL,KAAMu8K,GAAc,GAC7CiN,EAAiBt1G,EAAU,YAC3Bu2G,EAAkBjB,EAAexjL,EAAIhG,KAAKs8E,MAC1CouG,EAAkBlB,EAAevjL,EAAIjG,KAAKs8E,MAC1C6+F,EAAWhyK,KAAKuS,IAAI1b,KAAKo7K,YAAY/1K,OAAQrF,KAAKo7K,YAAY91K,OAC5DtF,KAAKiiL,cAAc,iBAAoBjiL,KAAKs8E,MAC9C41H,EAAMlyM,KAAKm9E,KAAK/pE,EAAQq3K,EAAiB,EAAGtP,EAAU,GAAKA,EAAW,GACtEg3B,EAAK,GAAOnyM,KAAKm9E,KAAK9pE,EAAQq3K,EAAiB,EAAGvP,EAAU,GAAKA,EACrEP,EAAW,GAAK,IAAMzxK,KAAKipM,KAAKjpM,KAAKi2L,IAAU,GAAL+S,EAAShpM,KAAK2gC,KAAO3gC,KAAK2gC,GACpE+wI,EAAY,IAAMq3B,EAEtB,MAAO,CAAEt3B,SAAUA,EAAUC,UAAWA,IAE5CuoB,EAAKljM,UAAUi9E,KAAO,SAAUngE,EAAOq1L,EAAQC,GAC3C,OAAOnpM,KAAKuS,IAAIvS,KAAKwS,IAAIqB,EAAOq1L,GAASC,IAS7ClP,EAAKljM,UAAU2sM,mBAAqB,SAAU7mM,EAAGC,GAC7C,IAAI20K,EAAW,EACXC,EAAY,EAChB,IAAK76K,KAAKgpB,YAAa,CACnB,IAAIxZ,EAAY5B,SAASyd,eAAerrB,KAAKoD,QAAQkI,IACjDg0B,EAAM1xB,SAASyd,eAAerrB,KAAKoD,QAAQkI,GAAK,gBAChDinM,EAAUvyM,KAAKmiM,eAAen8L,EAAIhG,KAAKo7K,YAAYp1K,GAAKs5B,EAAI1uB,YAAc,eAAkB5Q,KAAK0kM,oBAAsBl1L,EAAUoB,WAAa,IAAK3K,EAAIjG,KAAKo7K,YAAYn1K,GAAKq5B,EAAIvuB,WAAa,eAAkB/Q,KAAK0kM,oBAAsBl1L,EAAUuB,UAAY,KACrQ6pK,EAAW23B,EAAQ,YACnB13B,EAAY03B,EAAQ,aAExB,MAAO,CAAE33B,SAAUA,EAAUC,UAAWA,IAS5CuoB,EAAKljM,UAAUiiM,eAAiB,SAAU/uL,EAAOC,GAC7C,IAAIunK,EAAW,EACXC,EAAY,EAChB,IAAK76K,KAAKgpB,cAAgB,eAAkBhpB,KAAKwpL,gBAAiB,CAC9D,IAAIr8J,EAA4D,oBAAlDntB,KAAKwjL,OAAOxjL,KAAKwjL,OAAO7iL,OAAS,GAAGqkL,UAAkC,EAAI,GACxF3xK,GAAgB8Z,EAChB,IAAIguJ,EAAU,IAAMhyK,KAAK8jC,IAAI,EAAGjtC,KAAK2iL,eACjCn9I,EAAMxlC,KAAKm9E,KAAK/pE,EAASpT,KAAKwpL,eAAexjL,EAAIhG,KAAKs8E,MAAQ,EAAG6+F,EAAU,GAAKA,EAAW,GAC3Fz1I,EAAK,GAAO1lC,KAAKm9E,KAAK9pE,EAASrT,KAAKwpL,eAAevjL,EAAIjG,KAAKs8E,MAAQ,EAAG6+F,EAAU,GAAKA,EAC1FP,EAAW,GAAK,IAAMzxK,KAAKipM,KAAKjpM,KAAKi2L,IAAU,GAAL15J,EAASv8B,KAAK2gC,KAAO3gC,KAAK2gC,GACpE+wI,EAAY,IAAMr1I,EAEtB,MAAO,CAAEo1I,SAAUA,EAAUC,UAAWA,IAE5C,GAAW,CACP,eAAS,OACVuoB,EAAKljM,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACVkjM,EAAKljM,UAAW,4BAAwB,GAC3C,GAAW,CACP,eAAS,OACVkjM,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,OACVkjM,EAAKljM,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,OACVkjM,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,cACVkjM,EAAKljM,UAAW,0BAAsB,GACzC,GAAW,CACP,gBAAS,IACVkjM,EAAKljM,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACVkjM,EAAKljM,UAAW,wBAAoB,GACvC,GAAW,CACP,gBAAS,IACVkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAQ,GAAI,KACbkjM,EAAKljM,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACbkjM,EAAKljM,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAQ,GAAI,KACbkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAW,GAAI,KAChBkjM,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,eAAW,GAAI,KAChBkjM,EAAKljM,UAAW,mBAAe,GAClC,GAAW,CACP,eAAQ,GAAI,KACbkjM,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,eAAQ,CAAEyV,MAAO,UAAWrQ,MAAO,GAAK,KACzC89L,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,aACVkjM,EAAKljM,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,aACVkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAS,IACVkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAS,OACVkjM,EAAKljM,UAAW,mBAAe,GAClC,GAAW,CACP,eAAS,IACVkjM,EAAKljM,UAAW,gBAAY,GAC/B,GAAW,CACP,eAAQ,CAAE06K,SAAU,KAAMC,UAAW,MAAQ,KAC9CuoB,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,eAAQ,GAAI,KACbkjM,EAAKljM,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,aAAS,GAC5B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,cAAU,GAC7B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACDkjM,EAAKljM,UAAW,WAAO,GAC1BkjM,EAAO,GAAW,CACd,QACDA,GACIA,EAjmFc,CAkmFvB,QCnpFSoP,GAAkC,eAAmB,CAC5D7/G,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,+BAIRs/G,GAA+B,CACtCziM,KAAM,2BACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUk/G,GAA6BziM,KAAMwiM,MAkB9CE,GAAiC,eAAmB,CAC3D/+L,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,8BAIRw/G,GAA8B,CACrC3iM,KAAM,0BACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUo/G,GAA4B3iM,KAAM0iM,MC1D7CE,GAAmB,eAAmB,CAC7CjgH,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,uBAIR0/G,GAAgB,CACvB7iM,KAAM,mBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUs/G,GAAc7iM,KAAM4iM,MAkB/BE,GAAkB,eAAmB,CAC5Cn/L,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,sBAIR4/G,GAAe,CACtB/iM,KAAM,kBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUw/G,GAAa/iM,KAAM8iM,MC1D9BE,GAAyB,eAAmB,CACnDrgH,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,sBAIR8/G,GAAsB,CAC7BjjM,KAAM,kBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU0/G,GAAoBjjM,KAAMgjM,MAkBrCE,GAAwB,eAAmB,CAClDv/L,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,qBAIRggH,GAAqB,CAC5BnjM,KAAM,iBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU4/G,GAAmBnjM,KAAMkjM,MC1DpCE,GAAmB,eAAmB,CAC7CzgH,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,uBAIRkgH,GAAgB,CACvBrjM,KAAM,mBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU8/G,GAAcrjM,KAAMojM,MAkB/BE,GAAkB,eAAmB,CAC5C3/L,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,sBAIRogH,GAAe,CACtBvjM,KAAM,kBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUggH,GAAavjM,KAAMsjM,MC1D9BE,GAA2B,eAAmB,CACrD7gH,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,+BAIRsgH,GAAwB,CAC/BzjM,KAAM,2BACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUkgH,GAAsBzjM,KAAMwjM,MAkBvCE,GAA0B,eAAmB,CACpD//L,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,8BAIRwgH,GAAuB,CAC9B3jM,KAAM,0BACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUogH,GAAqB3jM,KAAM0jM,MC1DtCE,GAAkB,eAAmB,CAC5CjhH,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,eAIR0gH,GAAe,CACtB7jM,KAAM,WACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUsgH,GAAa7jM,KAAM4jM,MAa9BE,GAAiB,eAAmB,CAC3CngM,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,cAIR4gH,GAAc,CACrB/jM,KAAM,UACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUwgH,GAAY/jM,KAAM8jM,MCrD7Bh+G,GAAuB,eAAmB,CACjDnD,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,yBAIR4C,GAAoB,CAC3B/lF,KAAM,qBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUwC,GAAkB/lF,KAAM8lF,MAanCE,GAAsB,eAAmB,CAChDriF,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,wBAIR8C,GAAmB,CAC1BjmF,KAAM,oBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU0C,GAAiBjmF,KAAMgmF,MC5ClC,GAAa,CAAC,eAAgB,UAAW,mBAAoB,iBAAkB,aAAc,cAAe,aAAc,iBAAkB,SAAU,iBAAkB,cAAe,oBAAqB,YAAa,SAAU,SAAU,SAAU,iBAAkB,SAAU,WAAY,SAAU,iBAAkB,WAAY,QAAS,gBAAiB,qBAAsB,uBAAwB,QAAS,eAAgB,oBAAqB,sBAAuB,cAAe,cAAe,kBAAmB,kBAAmB,QAAS,qBAAsB,cAAe,gBAAiB,gBAAiB,iBAAkB,kBAAmB,OAAQ,SAAU,cAAe,qBAAsB,yBAA0B,yBAA0B,gBAAiB,kBAAmB,kBAAmB,kBAAmB,UAAW,MAAO,SAAU,aAAc,iBAAkB,iBAAkB,gBAAiB,gBAAiB,wBAAyB,QAC38BU,GAAa,CAAC,cACdC,GAAW,eAAS,CAAE9tB,MAAO,KAC7BA,GAAQ8tB,GAAS,GAAIC,GAAQD,GAAS,GAAIE,GAAYp3F,OAAO2V,KAAKwhF,IAC7EC,GAAUxqF,KAAK,eAAgB,qBAC/B,IAAK,IAAI,GAAK,EAAGyqF,GAAeJ,GAAY,GAAKI,GAAan2F,OAAQ,KAAM,CACxE,IAAIo2F,GAAUD,GAAa,IAC3BD,GAAUxqF,KAAK,UAAY0qF,IASxB,IAAIi9G,GAAgB,eAAmB,CAC1ChkM,KAAM,gBACNinF,OAAQ,CAAC,QACTpuB,MAAOA,GACP+tB,MAAOA,GACPM,MAAOL,GACP/Q,MAAO,CAAEp3E,MAAO,gBAChByoF,QAAS,WAAc,MAAO,CAAEvE,OAAQ5yF,KAAK4yF,SAC7Ct1E,KAAM,WACF,MAAO,CACH85E,aAAc,IAAI,GAAK,IACvBC,SAAU,GACVC,OAAQZ,GACRa,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,WAAY,CAAE,UAAW,CAAE,2BAA4B,0BAA2B,mBAAoB,kBAAmB,mBAAoB,CAAE,kBAAmB,CAAE,kBAAmB,mBAAsB,2BAA4B,4BAA+B,qBAAsB,qBAC3SC,cAAe,CAAE,2BAA4B,0BAA2B,kBAAmB,iBAAkB,qBAAsB,iBACnI5G,QAAS,OACT6G,mBAAoB,KAG5BC,QAAS,WACL53F,KAAKo3F,aAAaS,SAAW73F,KAAKo3F,aAAanvF,QAC/CjI,KAAKo3F,aAAanvF,QAAUjI,KAAKiI,QACjCjI,KAAK83F,iBACL93F,KAAKo3F,aAAaW,eAAiB/3F,KAAKo3F,aAAansF,cACrDjL,KAAKo3F,aAAansF,cAAgBjL,KAAKiL,cACvCjL,KAAKo3F,aAAa/uF,cAAgBrI,KAAKqI,cACvCrI,KAAKizF,QAAUjzF,KAAKizF,SAExBt/E,OAAQ,SAAUpP,GACd,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAOC,IAEpBG,QAAS,CACL7qF,cAAe,SAAU2vF,GAIrB,GAHKA,IACDA,EAAgBv4F,OAAO2V,KAAKpV,KAAK23F,oBAAsB,KAEvDK,EAAcr3F,QAAUX,KAAK23F,mBAC7B,IAAK,IAAI9pF,EAAK,EAAGoqF,EAAkBD,EAAenqF,EAAKoqF,EAAgBt3F,OAAQkN,IAAM,CACjF,IAAIqqF,EAAWD,EAAgBpqF,GAC3BsqF,EAAoBn4F,KAAK23F,mBAAmBO,GAChD,GAAIC,GAAqBA,EAAkBx3F,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGu0F,EAAsBD,EAAmBt0F,EAAKu0F,EAAoBz3F,OAAQkD,IAAM,CAC7F,IAAIy7B,EAAM84D,EAAoBv0F,GAC1B2O,EAAU,eAAS,mBAAoB8sB,GACvC9sB,GACA8sB,EAAI+4D,QAAQC,WAEZh5D,EAAIx0B,YACJw0B,EAAIx0B,UAAY,WAGjB9K,KAAK23F,mBAAmBO,MAK/CjtF,cAAe,SAAUoK,EAAMkjF,GAC3B,IAAIl1F,EAAQrD,KACRA,KAAK8wF,SACL9wF,KAAKs3F,OAAUt3F,KAAKs3F,OAAyCt3F,KAAKs3F,OAArCt3F,KAAKo3F,aAAaoB,aAE/Cx4F,KAAKo3F,cAAgBp3F,KAAKo3F,aAAaW,gBACvC/3F,KAAKo3F,aAAaW,eAAe1iF,EAAMkjF,GAEvCljF,GAAQrV,KAAKs3F,QAAUt3F,KAAKs3F,OAAO32F,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAMi0F,OAAOzwF,KAAI,SAAUi/E,GAClBvlF,IAAQulF,GAAY,cAAcxtC,KAAK/3C,KACpC8C,EAAMytF,OACNztF,EAAM+zF,aAAaqB,YAAYC,MAAM,UAAYn4F,EAAK8U,EAAK9U,KAG3D8C,EAAMq1F,MAAM,UAAYn4F,EAAK8U,EAAK9U,IAClC8C,EAAMq1F,MAAM,eAAgBrjF,EAAK9U,aAOzD0H,QAAS,SAAU0wF,EAAWC,EAAWC,GAIrC,GAHK,SACD74F,KAAKs3F,OAAUt3F,KAAKs3F,OAAyCt3F,KAAKs3F,OAArCt3F,KAAKo3F,aAAaoB,aAEhC,WAAdG,GAAwC,UAAdA,IAA0B34F,KAAKs3F,QAAkC,IAAvBt3F,KAAKs3F,OAAO32F,QAiBhF,GAAmB,gBAAdg4F,GAAyD,iBAA1BC,EAAUn/D,aAAmCz5B,KAAKs3F,QAAkC,IAAvBt3F,KAAKs3F,OAAO32F,OAAe,CACzHJ,EAAMP,KAAKs3F,OAAO1lF,WAAWhL,MAAM,6BAA+B,GAClEkyF,EAAUv4F,EAAI,GACdq4F,GAAar4F,IAAQ,gBAAYq4F,EAAUE,MACtC,QAKD94F,KAAK04F,MAAM,UAAYI,EAASF,EAAUE,IAC1C94F,KAAK04F,MAAM,eAAgBE,EAAUE,MALrC94F,KAAKo3F,aAAaqB,YAAYC,MAAM,UAAYI,EAASF,EAAUE,IACnE94F,KAAKo3F,aAAaqB,YAAYC,MAAM,eAAgBE,EAAUE,WAvB0B,CAChG,IAAIv4F,EAAMP,KAAKs3F,OAAO1lF,WAAWhL,MAAM,kBAAoB,GACvDkyF,EAAUv4F,EAAI,GACdq4F,GAAar4F,IAAQ,gBAAYq4F,EAAUE,MACtC,QAMiB,WAAdH,GAA2B34F,KAAK+4F,SAAW/4F,KAAK+4F,OAAOC,gBACvDh5F,KAAK04F,MAAM,UAAYI,EAASF,EAAUE,IAC1C94F,KAAK04F,MAAM,eAAgBE,EAAUE,MAPzC94F,KAAKo3F,aAAaqB,YAAYC,MAAM,UAAYI,EAASF,EAAUE,IACnE94F,KAAKo3F,aAAaqB,YAAYC,MAAM,eAAgBE,EAAUE,IAC9D94F,KAAKo3F,aAAaqB,YAAYC,MAAM,oBAAqBE,EAAUE,MAwB1E94F,KAAKo3F,cAAgBp3F,KAAKo3F,aAAaS,UACxC73F,KAAKo3F,aAAaS,SAASc,EAAWC,EAAWC,IAGzDjG,OAAQ,WACJ5yF,KAAKizF,WAETq7G,SAAU,SAAUvzB,GAChB,OAAO/6K,KAAKo3F,aAAak3G,SAASvzB,IAEtC0zB,UAAW,SAAU5tB,EAAYf,GAC7B,OAAO9/K,KAAKo3F,aAAaq3G,UAAU5tB,EAAYf,IAEnD57H,OAAQ,SAAU11C,EAAM21C,EAAUjjB,EAAa+vK,GAC3C,OAAOjxM,KAAKo3F,aAAalzC,OAAO11C,EAAM21C,EAAUjjB,EAAa+vK,IAEjEE,mBAAoB,SAAUr1K,GAC1B,OAAO97B,KAAKo3F,aAAa+5G,mBAAmBr1K,IAEhDutK,eAAgB,SAAUxoB,EAAY76K,EAAGC,GACrC,OAAOjG,KAAKo3F,aAAaiyG,eAAexoB,EAAY76K,EAAGC,IAE3D+hM,2BAA4B,WACxB,OAAOhoM,KAAKo3F,aAAa4wG,8BAE7B6E,mBAAoB,SAAU7mM,EAAGC,GAC7B,OAAOjG,KAAKo3F,aAAay1G,mBAAmB7mM,EAAGC,IAEnD+kM,aAAc,SAAU79L,GACpB,OAAOnN,KAAKo3F,aAAa4zG,aAAa79L,IAE1C+gM,eAAgB,SAAU53K,EAAW63K,GACjC,OAAOnuM,KAAKo3F,aAAa82G,eAAe53K,EAAW63K,IAEvDhM,eAAgB,SAAU/uL,EAAOC,GAC7B,OAAOrT,KAAKo3F,aAAa+qG,eAAe/uL,EAAOC,IAEnDqrC,MAAO,SAAUpzC,GACb,OAAOtL,KAAKo3F,aAAa14C,MAAMpzC,IAEnCkjM,YAAa,SAAU/hM,GACnB,OAAOzM,KAAKo3F,aAAao3G,YAAY/hM,IAEzCo6L,eAAgB,SAAUhmB,EAAYguB,EAAc7+L,EAAMyW,GACtD,OAAOzmB,KAAKo3F,aAAayvG,eAAehmB,EAAYguB,EAAc7+L,EAAMyW,IAE5EwnL,eAAgB,SAAU7mB,EAAgBrnJ,GACtC,OAAO//B,KAAKo3F,aAAa62G,eAAe7mB,EAAgBrnJ,IAE5DwvK,kBAAmB,SAAUrH,EAAaE,EAAcD,EAAaE,GACjE,OAAOroM,KAAKo3F,aAAam4G,kBAAkBrH,EAAaE,EAAcD,EAAaE,OAIpF4L,GAAa,CACpBjkM,KAAM,WACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAU0gH,GAAWjkM,KAAMgkM,IAC/B1gH,EAAIC,UAAUwgH,GAAY/jM,KAAM8jM,IAChCxgH,EAAIC,UAAUsgH,GAAa7jM,KAAM4jM,IACjCtgH,EAAIC,UAAUo/G,GAA4B3iM,KAAM0iM,IAChDp/G,EAAIC,UAAUk/G,GAA6BziM,KAAMwiM,IACjDl/G,EAAIC,UAAUw/G,GAAa/iM,KAAM8iM,IACjCx/G,EAAIC,UAAUs/G,GAAc7iM,KAAM4iM,IAClCt/G,EAAIC,UAAUggH,GAAavjM,KAAMsjM,IACjChgH,EAAIC,UAAU8/G,GAAcrjM,KAAMojM,IAClC9/G,EAAIC,UAAU4/G,GAAmBnjM,KAAMkjM,IACvC5/G,EAAIC,UAAU0/G,GAAoBjjM,KAAMgjM,IACxC1/G,EAAIC,UAAUogH,GAAqB3jM,KAAM0jM,IACzCpgH,EAAIC,UAAUkgH,GAAsBzjM,KAAMwjM,IAC1ClgH,EAAIC,UAAU0C,GAAiBjmF,KAAMgmF,IACrC1C,EAAIC,UAAUwC,GAAkB/lF,KAAM8lF,MCpN1C,GAAwB,WACxB,SAASo+G,EAAOt6B,GAIZ55K,KAAKsnM,iBAAmB,IAAI5oH,GAAK,EAAG,EAAG,EAAG,GAI1C1+E,KAAK2rM,mBAAqB,IAAIjtH,GAAK,EAAG,EAAG,EAAG,GAI5C1+E,KAAKunM,gBAAkB,IAAI7oH,GAAK,EAAG,EAAG,EAAG,GAKzC1+E,KAAKouE,WAAa,GAClBpuE,KAAK+0B,KAAO,EAIZ/0B,KAAK20B,YAAc,EACnB30B,KAAKm0M,eAAiB,IAAIz1H,GAAK,EAAG,EAAG,EAAG,GACxC1+E,KAAKo0M,gBAAkB,EACvBp0M,KAAKq0M,eAAiB,EACtBr0M,KAAKs0M,aAAe,EAEpBt0M,KAAKu0M,yBAA2B,GAKhCv0M,KAAKw0M,0BAA4B,GAIjCx0M,KAAKy0M,mBAAqB,GAK1Bz0M,KAAK00M,wBAA0B,GAI/B10M,KAAKqvM,cAAe,EAIpBrvM,KAAK8lD,cAAgB,KACrB9lD,KAAK45K,KAAOA,EACZ55K,KAAK+oB,mBAgoET,OAxnEAmrL,EAAOh0M,UAAU86C,aAAe,WAC5Bh7C,KAAK20M,2BAA6B,GAClC30M,KAAK+xE,iBAAmB,GACxB/xE,KAAKouE,WAAa,GAClBpuE,KAAKq0M,eAAiB,EACtBr0M,KAAKo0M,gBAAkB,EACvBp0M,KAAK40M,YAAc50M,KAAK45K,KAAKt0J,SAAS0qD,aACtChwE,KAAK45K,KAAK10I,UAAUxgC,YAAY1E,KAAK40M,aACrC50M,KAAK2rM,mBAAqB3rM,KAAK45K,KAAKwB,YACpCp7K,KAAKy+C,wBACLz+C,KAAK60M,cAETX,EAAOh0M,UAAUu+C,sBAAwB,WACrC,IAAIp7C,EAAQrD,KACR6G,EAAM7G,KAAK45K,KACX7uG,EAASlkE,EAAI23B,eACjBx+B,KAAK+xE,iBAAmB,GACxB,IAAI+iI,EAAU,GACVC,EAAc,GACd3iI,EAAavrE,EAAIu0K,YAAYn1K,EAkCjC,GAjCAjG,KAAK20M,2BAA6B,GAClC/0M,MAAMM,UAAU+uF,QAAQ3rF,KAAKuD,EAAIqkL,kBAAkB,SAAUnQ,EAAO8F,GAChE,IAAK,eAAkB9F,EAAM9C,WAAY,CAErC,IAAIsO,EAAYxL,EAAM9C,UAAU,YAC5B6N,EAAW/K,EAAM5C,cACjB4N,EAAehL,EAAM7C,kBAErB94J,EAAa27J,EAAM37J,WACnBkhK,OAAiB,EACjBqW,OAAe,EACnB,GAAoB,WAAhB5rH,EAAOv8D,MAAqBusK,EAAMpkK,QAClC2pK,EAAiBvF,EAAM3C,cAAckI,eACrCqW,EAAe5b,EAAM3C,cAAcue,aACnCtzL,EAAM2xM,WAAWn0B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,QAE3F,GAAoB,YAAhBh7G,EAAOv8D,KACZ,IAAK,IAAIX,EAAK,EAAGhK,EAAKk3K,EAAM6gB,eAAgB/tL,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAImjM,EAASntM,EAAGgK,GACZmjM,EAAOr6L,UACP2pK,EAAiB0wB,EAAO1wB,eACxBqW,EAAeqa,EAAOra,aAEtBv3K,EAAa4xL,EAAO5xL,WACpB/b,EAAM2xM,WAAWn0B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,KAKxF,YAAhBh7G,EAAOv8D,MACPnL,EAAM4xM,4BAA4Bp0B,EAAY9F,EAAMyH,mBAGxDxiL,KAAK+xE,iBAAiBpxE,OAAS,EAC/B,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK+xE,iBAAiBpxE,OAAQK,IAAK,CAEnD,IAAIk0M,EAAal1M,KAAK+xE,iBAAiB/wE,GACnCuwD,EAAY,CACZvhD,KAAMopK,GAAiB3qK,QAAQ,EAAO2R,KAAM80L,EAAW,QAASppL,MAAOi/C,EAAOj/C,MAC9EqpL,YAAapqI,EAAOoqI,YACpB34L,KAAoC,kBAAvB04L,EAAW,QAAuBA,EAAW,QAAQtjM,WAAasjM,EAAW,SAE9FruM,EAAIoB,QAAQ,kBAAmBspD,GAC/B2jJ,EAAW,QAAU3jJ,EAAUnxC,KAC/B80L,EAAW,SAAW3jJ,EAAUzlC,MAChCopL,EAAW,eAAiB3jJ,EAAU4jJ,YACtCD,EAAW,QAAU3jJ,EAAU/0C,KAC3B+0C,EAAU9iD,SACVzO,KAAK+xE,iBAAiBrlE,OAAO1L,EAAG,GAChCA,KAIZ,IAAIo0M,EAAc,GACdC,EAAcxuM,EAAI23B,eAAexO,MAAMxT,KACvC84L,EAAiBzuM,EAAI23B,eAAevO,WACxC,GAAIjwB,KAAK+xE,iBAAiBpxE,OAAS,EAAG,CAClC,IAoBI40M,EACAC,EArBAC,EAAa1qI,EAAOttD,KACpBkvK,EAAS,EACTC,EAAS,EACTt7J,EAAQ,EACRokL,EAAQ,EACR3mI,EAAehE,EAAOgE,aACtBlmC,EAAc,GACdylC,EAAcvD,EAAOuD,YACrBM,EAAa7D,EAAO6D,WACpB+mI,EAAgB,GAChBC,EAAe,GAEf7xM,EAAWgnE,EAAOhnE,SAClB8xM,EAAc9qI,EAAO+qI,iBACrBC,EAAsC,SAAvBhrI,EAAO7pC,YAAyC,QAAbn9B,GAAmC,WAAbA,EACtE,aAAe,WAAcgnE,EAAO7pC,YACtCosC,EAAevC,EAAOzlE,MAAM3E,OAAS,EAAMoqE,EAAOzlE,MAAMtB,QAAQ,MAAQ,EAAM6C,EAAIinB,cAAcxoB,MAAQ,IACtGqM,SAASo5D,EAAOzlE,MAAO,IAAMqM,SAASo5D,EAAOzlE,MAAO,IAAM,KAC5D+nE,EAAgBtC,EAAO1lE,OAAO1E,OAAS,EAAMoqE,EAAO1lE,OAAOrB,QAAQ,MAAQ,EAAM6C,EAAIinB,cAAczoB,OAAS,IAC5GsM,SAASo5D,EAAO1lE,OAAQ,IAAMsM,SAASo5D,EAAO1lE,OAAQ,IAAM,KAG5DurC,EAAS,EACT7F,EAAS,EACTirK,EAAkBv4H,GAAY43H,EAAaC,GAC/C,GAAmB,gBAAfG,EAA8B,CAC9B,IAAIQ,EAAgBlrI,EAAOn+C,UACvBspL,EAAel2M,KAAK+xE,iBAAiBpxE,OACrCw1M,EAA6B,eAAhBJ,EAAiC,cAAD,CAAmBzoI,GAAiBzmE,EAAIu0K,YAAY91K,MAAQ4wM,EACxG5oI,EAAc4oI,EAAiB,cAAD,CAAmB5oI,GAAgB8nI,EAAc9nI,EAChF8oI,EAA8B,eAAhBL,EAAiC,cAAD,CAAmB1oI,GAAiB+nI,EAAc/nI,EAC/F,cAAD,CAAmBA,GAAkBxmE,EAAIu0K,YAAY/1K,OAAS6wM,EAAiB7oI,EAAe6oI,EAClGtlK,EAAS,EACT7F,EAASirK,EAAgB3wM,OAASyvM,EAClC,IAAIuB,EAAatrI,EAAO9pC,cACpBq1K,EAAU,EACVC,EAAU,EACVC,EAAgB,GAChBC,EAAa,EACbC,EAAa,EACbC,EAAgB,EAChBC,EAAe,EACnB,IAAS51M,EAAI,EAAGA,EAAIhB,KAAK+xE,iBAAiBpxE,OAAQK,IAAK,CACnD4vC,EAA0B,eAAhBmlK,EAAiCnlK,EAASulK,EAAavlK,EACjE7F,EAA0B,eAAhBgrK,EAAgChrK,EAAUA,EAASqrK,EAC7D,IAAIrI,EAAa/tM,KAAK+xE,iBAAiB/wE,GAAG,QACtC61M,EAAe,IAAI94H,GAAK,EAAG,GACX,SAAhB83H,EACAgB,EAAep5H,GAAYswH,EAAYkI,GAElB,SAAhBJ,GACL9H,EAAatnB,GAA0B,eAAhBsvB,EAA+BI,EAAYC,EAAarI,EAAYkI,GAC3FY,EAAep5H,GAAYswH,EAAYkI,IAGvClI,EAAa,GAEjB4I,EAAgBxtM,KAAKwS,IAAIg7L,EAAeE,EAAaxxM,QACrDuxM,EAAeztM,KAAKwS,IAAIi7L,EAAcC,EAAavxM,OAC/CuxM,EAAavxM,MAAQ,GAAKuxM,EAAaxxM,OAAS,IAC5B,eAAhB0wM,GACAO,EAAU1lK,EAAUulK,EAAY,EAChCI,EAA0B,UAAfF,EAA2BtrK,EAASqrK,EAAcS,EAAaxxM,OAAS,EAAMmxM,EACpFzrK,EAASyrK,IAGdF,EAA0B,UAAfD,EAA0BzlK,EAAUimK,EAAavxM,MAAQ,EAAKkxM,EAClE5lK,EAASulK,EAAYU,EAAavxM,MAAQ,EAAKkxM,EACtDD,EAAUxrK,EAAUqrK,EAAa,EAAMS,EAAaxxM,OAAS,IAG3D,IAANrE,GACAy1M,EAA8B,eAAhBV,EAAgCnlK,EAAyB,UAAfylK,EACpDC,EAAWO,EAAavxM,MAAQ,EAAKsrC,EACzC8lK,EAA8B,eAAhBX,EAAgD,UAAfM,EAA0BtrK,EACrEwrK,EAAWM,EAAaxxM,OAAS,EAAK0lC,EACL,IAAjC/qC,KAAK+xE,iBAAiBpxE,SACtB2sE,EAA+B,eAAhByoI,EAAgC5sM,KAAK6a,IAAK4sB,EAASulK,EAAaM,GAC1EN,EAAYS,EAAeJ,EAChCnpI,EAAgC,eAAhB0oI,EAAiCK,EAAcO,EAAgB,EAAKH,EAChFrtM,KAAK6a,IAAK+mB,EAASqrK,EAAcM,KAGpC11M,IAAMhB,KAAK+xE,iBAAiBpxE,OAAS,IAC1C2sE,EAA+B,eAAhByoI,EAAgC5sM,KAAK6a,IAAK4sB,EAASulK,EAAaM,GAC1EN,EAAYS,EAAeJ,EAChCnpI,EAAgC,eAAhB0oI,EAAiCK,EAAcO,EAAgB,EAAKH,EAChFrtM,KAAK6a,IAAK+mB,EAASqrK,EAAcM,IAEzC12M,KAAK20M,2BAA2BtoM,KAAK,CACjC+T,KAAMpgB,KAAK+xE,iBAAiB/wE,GAAG,QAASgF,EAAG4qC,EAAQ3qC,EAAG8kC,EACtDzlC,MAAO6wM,EAAW9wM,OAAQ+wM,EAC1B55L,KAAMuxL,EAAYz8K,MAAOglL,EAASZ,MAAOa,EACzC3rK,UAAWisK,EAAavxM,MAAOsjC,WAAYiuK,EAAaxxM,OACxD8vM,YAAan1M,KAAK+xE,iBAAiB/wE,GAAG,iBAGT,IAAjChB,KAAK+xE,iBAAiBpxE,SACtB0sE,EAAe+oI,EACf9oI,EAAc6oI,GAElBn2M,KAAKm0M,eAAiB,CAAEnuM,EAAGywM,EAAYxwM,EAAGywM,EAAYpxM,MAAOgoE,EAAajoE,OAAQgoE,OAEjF,CACDC,EAAe,cAAD,CAAmBA,GAAgBzmE,EAAIu0K,YAAY91K,MAAQgoE,EACzED,EAAgB,cAAD,CAAmBA,GAAiBxmE,EAAIu0K,YAAY/1K,OAASgoE,EAC5E,IAAIxpD,EAAI,EACR7jB,KAAK+0B,KAAO,EACZ,IAAS/zB,EAAI,EAAGA,EAAIhB,KAAK+xE,iBAAiBpxE,OAAQK,IAAK,CAE/Ck0M,EAAal1M,KAAK+xE,iBAAiB/wE,GACnC,eAAkBhB,KAAKouE,WAAWpuE,KAAK+0B,SACvC/0B,KAAKouE,WAAWpuE,KAAK+0B,MAAQ,CAAEu+H,KAAOtzJ,KAAK+0B,KAAO,EAAI+hL,WAAY,KAEtE,IAAIC,EAAiBt5H,GAAYy3H,EAAW,QAASnqI,EAAOn+C,WAE5D,GADA5sB,KAAKs0M,aAAenrM,KAAKwS,IAAI3b,KAAKs0M,aAAcyC,EAAezxM,OACrD,IAANtE,EACA4vC,EAAS+7I,EAAUooB,EAAenmI,EAAa,EAC/C7jC,EAAS6hJ,EAASx6G,EAAa4jI,EAAgB3wM,QAAUipE,EAAcyoI,EAAe1xM,OAASipE,EAAc,EACtGyoI,EAAe1xM,OAAS,OAE9B,CACD,IAAI2xM,EAAWD,EAAe1xM,OAASipE,EAAeyoI,EAAe1xM,OAASipE,EAC9E,GAAoB,eAAhBynI,EAA8B,CAC9B,IAAIkB,EAAiBrB,EAAa/xL,EAAI,GAAG7d,EAAI4vM,EAAa/xL,EAAI,GAAGve,MAASujC,EAAc+lC,EACxF,GAAKqoI,EAAgBloI,EAAegoI,EAAezxM,MAASgoE,EAAa,CACrE,IAAI4pI,GAAiBtB,EAAa/xL,EAAI,GAAG5d,EAAK0vM,EAAc9xL,EAAI,GAAG5d,EAAKqoE,EAAc,EAClFsnI,EAAa/xL,EAAI,GAAG5d,EAAK0vM,EAAc9xL,EAAI,GAAG5d,EAAKqoE,EAAc,GAAO8D,EACvE8kI,EAAgBF,EAAW3pI,GAC5BrtE,KAAKm3M,iBACLtzL,EAAI,EACJ8xL,EAAgB,GAChBC,EAAe,GACQ,GACvBjpB,EAAS/7I,EACTg8I,EAAS7hJ,IAGT4hJ,EAAUgpB,EAAc,GAAI,EAC5B/oB,EAAUsqB,EAAiBF,EAAU,QAIzCrqB,EAAUsqB,EAAiBroI,EAAa,EACxCg+G,EAAU+oB,EAAc9xL,EAAI,GAAI5d,MAGnC,CACD,IAAImxM,EAAgBxB,EAAa/xL,EAAI,GAAG5d,EAAI0vM,EAAc9xL,EAAI,GAAG5d,EAAKqoE,EAAc,EAChFsnI,EAAa/xL,EAAI,GAAG5d,EAAI0vM,EAAc9xL,EAAI,GAAG5d,EAAKqoE,EAAc,EACpE,GAAK8oI,EAAgBhlI,EAAa4kI,EAAW3pI,EAAc,CACvD,IAAIgqI,GAAiBzB,EAAa/xL,EAAI,GAAG7d,EAAIhG,KAAKs0M,aAAezrK,EAC5DwuK,GAAgBtoI,EAAegoI,EAAezxM,MAASgoE,GACxDq/G,EAAS/7I,EACTg8I,EAAS7hJ,EACc,GACvB6qK,EAAe,GACfD,EAAgB,GAChB31M,KAAKm3M,iBACLtzL,EAAI,IAGJ8oK,EAAS0qB,GAAiBzoI,EAAa,EACvCg+G,EAAU+oB,EAAc,GAAI,OAG/B,CACD,IAAIxoL,GAAU,GACdw/J,EAASgpB,EAAc9xL,EAAI,GAAG7d,EAC9B4mL,EAASwqB,EAAgBjqL,GAAWmhD,EAAc,IAI9Dh9C,EAAQq7J,EAAU/9G,EAAa,EAAKG,EACpC2mI,EAAQ9oB,EAAUmqB,EAAe1xM,OAAS,EAC1CswM,EAActpM,KAAK,CAAErG,EAAG2mL,EAAQ1mL,EAAG2mL,IACnCgpB,EAAavpM,KAAK,CAAErG,EAAGsrB,EAAOrrB,EAAGyvM,EAAOpwM,MAAOyxM,EAAezxM,MAAOD,OAAS0xM,EAAe1xM,OAAS,IAEtGrF,KAAKouE,WAAWpuE,KAAK+0B,MAAM,cAAc1oB,KAAK,CAC1CirM,YAAapC,EAAW,QACxBqC,SAAUrC,EAAW,YACrBsC,MAAO,CAAExxM,EAAG2mL,EAAQ1mL,EAAG2mL,GACvB6qB,KAAM,CAAEzxM,EAAGsrB,EAAOrrB,EAAGyvM,GACrBgC,KAAMxC,EAAW,QACjByC,YAAazC,EAAW,SACxBC,YAAaD,EAAW,eACxB0C,QAAS52M,EACT09E,KAAM,CACF14E,EAAG2vM,EAAc9xL,GAAG7d,EAAK4oE,EAAa,EACtC3oE,EAAI0vM,EAAc9xL,GAAG5d,EAAKqoE,EAAc,EAAOonI,EAAQqB,EAAe1xM,OACjEswM,EAAc9xL,GAAG5d,EAAKqoE,EAAc,EAAOonI,EAAQqB,EAAe1xM,OACvEC,MAAO6D,KAAK6a,IAAK2xL,EAAc9xL,GAAG7d,EAAK4oE,EAAa,GAAOt9C,EAAQylL,EAAezxM,QAClFD,OAAUipE,EAAcyoI,EAAe1xM,OAAUipE,EAAcyoI,EAAe1xM,UAGtFwe,IAGJ,IAAI4L,GAAazvB,KAAKouE,WAAW,GAAG,cAEpCxuE,MAAMM,UAAU+uF,QAAQ3rF,KAAKmsB,IAAY,SAAUooL,EAAWprM,GAC1D,IAAIqrM,EAAa,IAAIp5H,GAAKm5H,EAAU,QAAQ,KAAMA,EAAU,QAAQ,KAAMA,EAAU,QAAQ,SAAUA,EAAU,QAAQ,WAC1G,IAAVprM,IACA8oM,EAAqBuC,EAAW9xM,EAChCwvM,EAAqBsC,EAAW7xM,GAEpC5C,EAAMgxM,eAAiBlrM,KAAKwS,IAAItY,EAAMgxM,eAAgBlrM,KAAK6a,IAAIuxL,GAAsBuC,EAAW9xM,EAAI8xM,EAAWxyM,SAC/GjC,EAAM+wM,gBAAkBjrM,KAAKwS,IAAItY,EAAM+wM,gBAAiBjrM,KAAK6a,IAAIwxL,GAAsBsC,EAAW7xM,EAAI6xM,EAAWzyM,aAErHioE,EAAgBttE,KAAKq0M,eAAiB/mI,EAAettE,KAAKq0M,eAAiB/mI,EAC3ED,EAAiBrtE,KAAKo0M,gBAAkB/mI,EAAgBrtE,KAAKo0M,gBAAkB/mI,EAC/ErtE,KAAKm0M,eAAiB,CAClBnuM,EAAGypB,GAAW,GAAG,QAAQ,KAAMxpB,EAAGwpB,GAAW,GAAG,QAAQ,KACxDnqB,MAAOgoE,EAAajoE,OAAQgoE,MAiB5C6mI,EAAOh0M,UAAU80M,WAAa,SAE9Bn0B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,GACvE/lL,KAAK+3M,yBAAyBl3B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,GACzG/lL,KAAKg4M,yBAAyBn3B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,GACzG/lL,KAAKi4M,wBAAwBp3B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,IAE5GmuB,EAAOh0M,UAAUi3M,eAAiB,WAC9Bn3M,KAAK+0B,OACD,eAAkB/0B,KAAKouE,WAAWpuE,KAAK+0B,SACvC/0B,KAAKouE,WAAWpuE,KAAK+0B,MAAQ,CAAEu+H,KAAOtzJ,KAAK+0B,KAAO,EAAI+hL,WAAY,MAG1E5C,EAAOh0M,UAAUg4M,eAAiB,SAAUtoM,EAAU4M,EAAMs/D,EAAMq8H,GAC9D,IAAIjwK,EAAQ1rB,EACR1G,EAAO2nE,GAAYjhE,EAAMs/D,GAAMx2E,MAC/B8yM,EAAwBD,EAAiBriM,EAC7C,GAAIqiM,EAAiBvoM,EAEjB,IADA,IAAI82K,EAAalqK,EAAK7b,OACbK,EAAI0lL,EAAa,EAAG1lL,GAAK,IAAKA,EAAG,CACtCknC,EAAQ1rB,EAAKmqK,UAAU,EAAG3lL,GAAK,MAC/B8U,EAAO2nE,GAAYv1C,EAAO4zC,GAAMx2E,MAChC,IAAI63K,EAAYi7B,EAAwBtiM,EACxC,GAAIqnK,GAAavtK,GAAYs4B,EAAMvnC,OAAS,EAIxC,OAHIunC,EAAMvnC,OAAS,IACfunC,EAAQ,KAELA,EAInB,OAAOA,GAOXgsK,EAAOh0M,UAAU20M,WAAa,WAC1B,IAGI/lI,EAHAjoE,EAAM7G,KAAK45K,KACX7uG,EAASlkE,EAAI23B,eACb7qB,EAAS9M,EAAIye,SAEb6+D,EAAW,CACXruE,KAAMi1D,EAAOn+C,UAAU9W,KACvBH,MAAOo1D,EAAOn+C,UAAUjX,MACxBM,WAAY80D,EAAOn+C,UAAU3W,WAC7BD,WAAY+0D,EAAOn+C,UAAU5W,WAC7BD,UAAWg1D,EAAOn+C,UAAU7W,UAC5By9B,QAASu3B,EAAOn+C,UAAU4mB,SAG9B,GADAxzC,KAAKguE,YAAcr6D,EAAOuS,YAAY,CAAE5a,GAAIzE,EAAIzD,QAAQkI,GAAK,kBACzC,gBAAhBy/D,EAAOttD,KACP,IAAK,IAAIzc,EAAI,EAAGA,EAAIhB,KAAK20M,2BAA2Bh0M,OAAQK,IAAK,CAC7D,IAAIq3M,EAASxxM,EAAIzD,QAAQkI,GAAK,iBAAmBtK,EAC7Cs3M,EAASzxM,EAAIzD,QAAQkI,GAAK,iBAAmBtK,EAAI,QAEjDugB,EAAOvhB,KAAK20M,2BAA2B3zM,GACvCy6C,EAAS,IAAIijC,GAAKn9D,EAAK,KAAMA,EAAK,KAAMA,EAAK,SAAUA,EAAK,WACtD,IAANvgB,GACAhB,KAAKu4M,qBAET,IAAI3C,EAAe,IAAI/5B,GAAMt6J,EAAK,SAAUA,EAAK,UACjD4iE,EAASxuE,MAA4B,OAAnBwuE,EAASxuE,MAAkBwuE,EAASxuE,MAAQ3V,KAAK45K,KAAK1pJ,WAAWwiK,gBACnF,IAAI1S,EAAc,IAAIhC,GAAWq6B,EAAQ92L,EAAK,QAASA,EAAK,eAAgBwpD,EAAOv3B,QAASiI,GAC5FqzB,EAAc,IAAIiQ,GAAWu5H,EAAQ1C,EAAa5vM,EAAG4vM,EAAa3vM,EAAG,SAAUsb,EAAK,QAAS,GAAI,IACjG4iE,EAASluE,WAAc,eAAkBkuE,EAASluE,YAAoCjW,KAAK45K,KAAK1pJ,WAAWja,WAA3CkuE,EAASluE,WACzEkuE,EAASruE,KAAOjP,EAAIqpB,WAAWojK,gBAAkBnvG,EAASruE,KAC1D4oK,GAAkB5vG,EAAaqV,EAAUA,EAASxuE,MAAO3V,KAAKguE,aAC9DhuE,KAAKguE,YAAYtpE,YAAYiP,EAAO2sC,cAAc0/H,IAClDhgL,KAAKw4M,oBAITx4M,KAAK4rM,eAAe5rM,KAAK20B,cAQjCu/K,EAAOh0M,UAAU0rM,eAAiB,SAAU72K,GACxC,IAII+5C,EAJAjoE,EAAM7G,KAAK45K,KACX7uG,EAASlkE,EAAI23B,eACbs2K,EAAU,GACV2D,EAAY,IAAI16H,GAAKhT,EAAO6D,WAAY7D,EAAOuD,aAE/C36D,EAAS9M,EAAIye,SACbqyL,EAAc5sI,EAAOj/C,MACzB,GAAIiJ,GAAQ,GAAKA,EAAO/0B,KAAKouE,WAAWztE,OAAQ,CACxCuL,GAAclM,KAAKguE,YAAY1iE,GAAItL,KAAK45K,KAAKx2K,QAAQkI,KACrD,gBAAOY,GAAclM,KAAKguE,YAAY1iE,GAAItL,KAAK45K,KAAKx2K,QAAQkI,KAGhE,IAAK,IAAItK,EAAI,EAAGA,EAAIhB,KAAKouE,WAAWr5C,GAAM,cAAcp0B,OAAQK,IAAK,CAEjE,IAAIyuB,EAAazvB,KAAKouE,WAAWr5C,GAAM,cAAc/zB,GACjDm0M,EAAc1lL,EAAW,eACzBq2B,EAAgBnyC,EAAOuS,YAAY,CAAE5a,GAAIzE,EAAIzD,QAAQkI,GAAK,iBAAmBmkB,EAAW,aACxFs+K,EAAat+K,EAAW,eACxBipL,EAAqB,EAGrBC,GAF0B,YAAhB5tI,EAAOv8D,KAAwB,cAAD,CAAmBihB,EAAW,cACtEs7C,EAAOj/C,MAAmB2D,EAAW,eACL,mBAAjBs7C,EAAOj/C,OAA+C,iBAAjBi/C,EAAOj/C,OACvC,UAAjBi/C,EAAOj/C,MAAqB,eAAkBi/C,EAAO3qD,MAAQ,UAAY2qD,EAAO3qD,KAAO+0L,EAAYx/L,OACtGijM,GAAgC,mBAAjB7tI,EAAOj/C,OAA+C,iBAAjBi/C,EAAOj/C,OACvC,UAAjBi/C,EAAOj/C,QAA4C,IAAtBqpL,EAAY7vM,MAC5C,EAAwB6vM,EAAY7vM,MACpCuzM,EAAUhyM,EAAIzD,QAAQkI,GAAK,uBAAyBmkB,EAAW,WAC/D6oL,EAASzxM,EAAIzD,QAAQkI,GAAK,sBAAwBmkB,EAAW,WAC7DkmL,EAAgB,IAAI95B,GAAMpsJ,EAAW,SAAS,KAAOA,EAAW,SAAS,KAAOipL,GAChF9C,EAAe,IAAI/5B,GAAMpsJ,EAAW,QAAQ,KAAOA,EAAW,QAAQ,KAAOipL,GAC7E94H,EAAgB,IAAID,GAAWk5H,EAASppL,EAAW,QAASmpL,EAAaD,EAAa5tI,EAAOv3B,QAAS,eAAkB2hK,EAAY3hK,SAAWu3B,EAAOv3B,QAAU2hK,EAAY3hK,QAAS,IACrLslK,EAAkB,CAClB7iM,WAAY80D,EAAOn+C,UAAU3W,WAAYF,UAAWg1D,EAAOn+C,UAAU7W,UACrEC,WAAY+0D,EAAOn+C,UAAU5W,WAAYF,KAAMi1D,EAAOn+C,UAAU9W,KAAMH,MAAOo1D,EAAOn+C,UAAUjX,MAC9F69B,QAASu3B,EAAOn+C,UAAU4mB,SAW9B,GATAslK,EAAgBnjM,MAAmC,OAA1BmjM,EAAgBnjM,MAAkBmjM,EAAgBnjM,MACvE3V,KAAK45K,KAAK1pJ,WAAWwiK,gBACzBomB,EAAgB7iM,WAAc,eAAkB6iM,EAAgB7iM,YAC5DjW,KAAK45K,KAAK1pJ,WAAWja,WADqD6iM,EAAgB7iM,WAE9F6iM,EAAgBhjM,KAAOjP,EAAIqpB,WAAWojK,gBAAkBwlB,EAAgBhjM,KACxEgjM,EAAgB9iM,WAAa8iM,EAAgB9iM,YAAcnP,EAAIqpB,WAAWla,WAChE,IAANhV,GACAhB,KAAKu4M,qBAEW,YAAhBxtI,EAAOv8D,MAAsBu8D,EAAOguI,eAAgB,CACpD,IAAIC,EAAkBh5M,KAAK+xE,iBAAiBtiD,EAAW,YAAYnS,KAAK,GACpE5G,EAAS7P,EAAI28K,OAAOw1B,EAAgB,eAAex2B,eAAew2B,EAAgB,gBACtFrB,EAAe,eAAkBjhM,EAAO0I,WAAW45L,EAAgB,cAActiM,EAAO,qBAAqG,KAA9EA,EAAO0I,WAAW45L,EAAgB,cAActiM,EAAO,mBAAwGA,EAAOoV,MAAnFpV,EAAO0I,WAAW45L,EAAgB,cAActiM,EAAO,mBAEzO,YAAhBihM,EACA7xJ,EAAcphD,YAAYihL,GAAY9+K,EAAK+4E,EAAe64H,EAAW,CAAEzyM,EAAG2vM,EAAc3vM,EAAGC,EAAI0vM,EAAc1vM,EAAI,GAAM,WAGvH6/C,EAAcphD,YAAYw6E,GAAWy2H,EAAegC,EAAac,EAAWhpL,EAAW,YAAamwD,IAExG,IAAIu4H,EAAiB1oL,EAAW,QAAQ,KAAOA,EAAW,QAAQ,SAClE,GAAI0oL,EAAiBn4M,KAAKsnM,iBAAiBhiM,MAAO,CAC9C,IAAI2zM,EAAcj5M,KAAKk4M,eAAel4M,KAAKsnM,iBAAiBhiM,MAAOyoM,EAAY+K,EAAiBX,GAChGpK,EAAakL,EAMjB,GAJAnqI,EAAc,IAAIiQ,GAAWu5H,EAAQ1C,EAAa5vM,EAAG4vM,EAAa3vM,EAAG,QAAS8nM,EAAY,GAAI,IAC9FrvB,GAAkB5vG,EAAagqI,EAAiBA,EAAgBnjM,MAAOmwC,GACvE9lD,KAAKguE,YAAYtpE,YAAYohD,GAEzB9kD,IAAOhB,KAAKouE,WAAWr5C,GAAM,cAAcp0B,OAAS,EAAI,CACxD,IAAIu4M,OAAc,EACd5zM,EAAQwvM,EACRzvM,EAAUyvM,EAAU,EACxB,GAAkB,IAAd90M,KAAK+0B,KAAY,CACjB,IAAIi/C,EAAcj/C,EAAO,EAAK,IAAM/0B,KAAKouE,WAAWztE,OAChDw4M,EAAapuI,EAAOn+C,UACpBwsL,EAAiB37H,GAAYzJ,EAAYmlI,GACzCE,EAAar5M,KAAKm0M,eAAenuM,EAAIhG,KAAKm0M,eAAe7uM,MAAS8zM,EAAe9zM,MACxE,EAARA,EAAwB,EAAVwvM,EAAgB4D,EAAqB,EACpDY,EAAct5M,KAAKm0M,eAAenuM,EAAIhG,KAAKm0M,eAAe7uM,MAC1Di0M,EAAYD,EAAah0M,EAAS8zM,EAAe9zM,MAAQ,EAAMwvM,EAAU,EAAK4D,EAC9El5H,EAAQx/E,KAAKm0M,eAAeluM,EAAIjG,KAAKm0M,eAAe9uM,OAAWA,EAAS,EAAKyvM,EACjFoE,EAAcvlM,EAAOuS,YAAY,CAAE5a,GAAIzE,EAAIzD,QAAQkI,GAAK,yBACxD,IAAIkuM,EAAkB7lM,EAAOuS,YAAY,CAAE5a,GAAIzE,EAAIzD,QAAQkI,GAAK,8BAC5DmuM,EAAmB9lM,EAAOuS,YAAY,CAAE5a,GAAIzE,EAAIzD,QAAQkI,GAAK,+BAC7DouM,EAAY,MAAQJ,EAAa,IAAM95H,EAAO,OAAS85H,EAAah0M,GAAS,KAAOk6E,EAAOn6E,GAC3F,OAASi0M,EAAah0M,GAAS,KAAOk6E,EAAOn6E,GAAU,MACvDs0M,EAAW,MAAQN,EAAY,IAAM75H,EAAO,OAAS65H,EAAY/zM,GAAS,KAAOk6E,EAAOn6E,GACxF,OAASg0M,EAAY/zM,GAAS,KAAOk6E,EAAOn6E,GAAU,MACtDu0M,EAAkB,IAAIj6H,GAAW94E,EAAIzD,QAAQkI,GAAK,aAActL,KAAK45K,KAAK1pJ,WAAWwiK,gBAAiB,EAAG1yL,KAAK45K,KAAK1pJ,WAAWwiK,gBAAmB39J,EAAO,IAAO,EAAI,GAAM,EAAI,EAAG,GAAI4kL,GACxLH,EAAgB90M,YAAYiP,EAAO6yB,SAASozK,IAC5C,IAAIC,EAAsB,IAAI77B,GAAWn3K,EAAIzD,QAAQkI,GAAK,kBAAmB,cAAe,GAAI,EAAG,IAAIozE,GAAK26H,EAAa/zM,EAAQ,EAAKk6E,EAAiB,EAATn6E,EAAsB,EAARC,EAAqB,EAAVwvM,GAAc,KAAM,KAAM,GAAI,IACjMlY,EAAUjpL,EAAO2sC,cAAcu5J,GACnCjd,EAAQjyL,aAAa,aAAc,yCACnCiyL,EAAQjyL,aAAa,OAAQ,UAC7BiyL,EAAQpvF,SAAYz4E,EAAO,IAAO,GAAK,EAAIluB,EAAI2mG,SAC1Cz4E,EAAO,IAAO,GACf6nK,EAAQ71L,MAAM2sE,OAAS,UACvBkpH,EAAQ71L,MAAMuiI,YAAY,UAAW,UAGrCszD,EAAQ71L,MAAM2sE,OAAS,UACvBkpH,EAAQ71L,MAAMyiI,eAAe,YAEjCgwE,EAAgB90M,YAAYk4L,GAC5B58L,KAAK4T,WAAW4lM,GAChB,IAAIM,EAAmB,IAAIn6H,GAAW94E,EAAIzD,QAAQkI,GAAK,cAAetL,KAAK45K,KAAK1pJ,WAAWwiK,gBAAiB,EAAG1yL,KAAK45K,KAAK1pJ,WAAWwiK,gBAAmB39J,EAAO,IAAO/0B,KAAKouE,WAAWztE,OAAS,GAAM,EAAI,EAAG,GAAI+4M,GAC/MD,EAAiB/0M,YAAYiP,EAAO6yB,SAASszK,IAC7C,IAAIC,EAAuB,IAAI/7B,GAAWn3K,EAAIzD,QAAQkI,GAAK,mBAAoB,cAAe,GAAI,EAAG,IAAIozE,GAAK46H,EAAaxE,EAAWxvM,EAAQ,EAAKk6E,EAAiB,EAATn6E,EAAsB,EAARC,EAAqB,EAAVwvM,GAAc,KAAM,KAAM,GAAI,IAClNlY,EAAUjpL,EAAO2sC,cAAcy5J,GAC/Bnd,EAAQjyL,aAAa,aAAc,qCACnCiyL,EAAQjyL,aAAa,OAAQ,UAC7BiyL,EAAQpvF,SAAYz4E,EAAO,IAAO/0B,KAAKouE,WAAWztE,QAAU,EAAIkG,EAAI2mG,SAC/Dz4E,EAAO,IAAO/0B,KAAKouE,WAAWztE,QAC/Bi8L,EAAQ71L,MAAM2sE,OAAS,UACvBkpH,EAAQ71L,MAAMuiI,YAAY,UAAW,UAGrCszD,EAAQ71L,MAAM2sE,OAAS,UACvBkpH,EAAQ71L,MAAMyiI,eAAe,YAEjCiwE,EAAiB/0M,YAAYk4L,GAC7B58L,KAAK4T,WAAW6lM,GAChBP,EAAYx0M,YAAY80M,GACxBN,EAAYx0M,YAAY+0M,GAExB,IAAIO,EAAkB,CAClB,GAAMnzM,EAAIzD,QAAQkI,GAAK,eACvB,EAAKiuM,EACL,EAAK/5H,EAAQ45H,EAAe/zM,OAAS,EACrC,KAAQrF,KAAK45K,KAAK1pJ,WAAWwiK,gBAC7B,YAAa,OACb,aAAcymB,EAAWpjM,UACzB,cAAeojM,EAAWljM,WAC1B,cAAekjM,EAAWnjM,WAC1B,cAAe,SACf,UAAa,GACb,QAAW,EACX,oBAAqB,IAErBikM,EAAoBtmM,EAAOgkE,WAAWqiI,EAAiBhmI,GAC3DimI,EAAkBlzM,MAAMwsC,QAAU,qBAClC2lK,EAAYx0M,YAAYu1M,GACxBj6M,KAAKguE,YAAYtpE,YAAYw0M,GAEjCl5M,KAAKw4M,mBAKrBtE,EAAOh0M,UAAUg6M,4BAA8B,SAAUjoM,EAAe+K,GACpE,IAAIiuK,EACApK,EACApE,EACAzvJ,EAMArsB,EALAoqE,EAAS/qE,KAAK45K,KAAKp7I,eACnB27K,EAA0B,YAAhBpvI,EAAOttD,KAAqB7P,SAASyd,eAAepZ,EAAc3G,GAAGmZ,QAAQ,QAAS,SAChG7W,SAASyd,eAAepZ,EAAc3G,GAAK,SAE3CmkB,EAAazvB,KAAK45K,KAAKn7I,aAAaszC,iBAEpCqoI,GAAqB,eAAkB3qL,EAAW,GAAG,QAAQ,GAAG,gBAAiBzvB,KAAK45K,KAAK4J,OAAO/zJ,EAAW,GAAG,QAAQ,GAAG,eAAe6zE,kBAAkBsjG,kBAC5JyT,EAAe,EACfC,GAAkB,EAClB1C,EAAU9wM,WAAWmL,EAAc3G,GAAGysL,OAAO9lL,EAAc3G,GAAG3K,OAAS,IAC3EX,KAAKu6M,sBACL,IAAIC,EAAoBx6M,KAAK45K,KAAKwqB,gBAAgBpgM,QAAQ4zM,GAC1D,GAAI53M,KAAK45K,KAAKp7I,eAAeg/J,qBAAqB/2K,QAAoB,cAAVzJ,IAAgD,IAAvBw9L,EAA0B,CAC3G,IAAIC,EAAkBz6M,KAAK06M,iBAAiB16M,KAAKw0M,0BAA2BviM,GAK5E,OAJyB,IAArBwoM,GACAz6M,KAAKw0M,0BAA0B9nM,OAAO+tM,EAAiB,GAE3Dz6M,KAAK26M,kCACE,KAEX,GAAc,cAAV39L,GAMA,GALAhd,KAAKu0M,yBAA2B,GAC3Bv0M,KAAK45K,KAAKuqB,iBAAoBiW,IAC/Bp6M,KAAK46M,sBACL56M,KAAK45K,KAAKuqB,iBAAkB,GAE5BnkM,KAAK45K,KAAKsqB,0BAA0BvjM,OAAS,IAAOy5M,GAAoBp6M,KAAK45K,KAAKuqB,iBAClF,IAAK,IAAI3gL,EAAI,EAAGA,EAAIxjB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQ6iB,IAAK,CACjE,GAAIvR,IAAkBjS,KAAK45K,KAAKsqB,0BAA0B1gL,GAAG,iBAAkB,CAC3ExjB,KAAK45K,KAAKsqB,0BAA0B1gL,GAAG,iBAAmBvR,EAC1DqoM,GAAkB,EAClBt6M,KAAK66M,gCAAgC76M,KAAK45K,KAAKsqB,0BAA0B1gL,GAAG,kBAC5ExjB,KAAK45K,KAAKqqB,wBAAwBv3L,OAAO1M,KAAK45K,KAAKqqB,wBAAwBjgM,QAAQ4zM,GAAU,GAC7F53M,KAAK45K,KAAKsqB,0BAA0Bx3L,OAAO8W,EAAG,GAC9CxjB,KAAK45K,KAAKxyH,kBAAkBpnD,KAAK45K,KAAKsqB,0BAA0BvjM,OAAS,GACzE,MAEC,IAAKy5M,EACN,GAAIp6M,KAAK45K,KAAKsqB,0BAA0BvjM,OAAS,EAAG,CAChD,IAAK,IAAIw8D,EAAI,EAAGA,EAAIn9D,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQw8D,IAC5Dn9D,KAAK66M,gCAAgC76M,KAAK45K,KAAKsqB,0BAA0B/mI,GAAG,kBAEhFn9D,KAAK45K,KAAKsqB,0BAA4B,QAGtClkM,KAAK66M,gCAAgC76M,KAAK45K,KAAKsqB,0BAA0B1gL,GAAG,kBAC5ExjB,KAAK45K,KAAKsqB,0BAA0Bx3L,OAAO8W,EAAG,QAM7D,CACD,GAAIxjB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAS,EAC7C,IAAS6iB,EAAI,EAAGA,EAAIxjB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQ6iB,IAAK,CACjE,IAAKvR,EAAc3G,GAAGtH,QAAQ,kBAAoB,GAAKiO,EAAc3G,GAAGtH,QAAQ,mBAC5EiO,IAAkBjS,KAAK45K,KAAKsqB,0BAA0B1gL,GAAG,iBAAkB,CAC3E82L,GAAkB,EAClB,MAGAt6M,KAAK26M,kCAIjB36M,KAAK26M,kCAET,GAAIL,EACA,IAAK,IAAIt5M,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAAK,CACxC,IAAI85M,EAA8C,gBAAlC96M,KAAK45K,KAAKp7I,eAAe/gB,KACrC3W,WAAWmL,EAAc3G,GAAGrH,MAAM,kBAAkB,IACpD6C,WAAWmL,EAAc3G,GAAGrH,MAAM,wBAAwB,IAC9D,GAAIk2M,EAAQtxJ,cAAgBp5B,EAAWzuB,GAAG,SAAWyuB,EAAWzuB,GAAG,QAAQL,OAAS,GAC7Em6M,IAAc95M,EAAG,CACpB,IAAI+5K,EAAQ/6K,KAAK45K,KAAK4J,OAAO/zJ,EAAWzuB,GAAG,QAAQ,GAAG,eAClDylB,OAAS,EACT29C,OAAS,EAET9mD,OAAO,EAOX,GANK,eAAkBy9J,KACnBt0J,EAAoB,cAAVzJ,EAAyB+9J,EAAMz3E,kBAAkB78E,OAASs0J,EAAMqiB,kBAAkB32K,OAC5F29C,OAAS,EACTA,EAAoB,cAAVpnD,EAAyB+9J,EAAMz3E,kBAAoBy3E,EAAMqiB,kBACnE9/K,EAAOmS,EAAWzuB,GAAG,SAErBylB,EACA,IAAK,IAAI5C,EAAI,EAAGA,EAAIvG,EAAK3c,OAAQkjB,IAAK,CAClC,IAAI0C,OAAe,EAanB,GAZA0kK,EAAa3tK,EAAKuG,GAAG,cACrBg9J,EAAavjK,EAAKuG,GAAG,cACrB44J,EAAYn/J,EAAKuG,GAAG,aACpBmJ,EAAa1P,EAAKuG,GAAG,cAEjB0C,GADgB,IAAhByG,EACepf,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC1Du1K,EAAa,eAAiBoK,EAAa,cAAgBxO,GAGhD7uK,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC1Du1K,EAAa,eAAiBoK,EAAa,cAAgBxO,EAAY,cAAgBzvJ,GAE1E,OAAjBzG,EAAuB,CACvB,IAAIw0L,GAAa,EACjB,GAA4C,OAAxC/6M,KAAK45K,KAAKsqB,0BACV,IAAK,IAAIh2J,EAAM,EAAGA,EAAMluC,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQutC,IAChE,GAAIluC,KAAK45K,KAAKsqB,0BAA0Bh2J,GAAK,mBAAqBj8B,EAAe,CAC7E8oM,GAAa,EACb,MAIZ,GAAc,cAAV/9L,GAAyB+9L,EAAY,CAC3B,IAANl3L,IACA7jB,KAAKw0M,0BAA4B,GACjCx0M,KAAKg7M,eAAe/oM,EAAejS,KAAKw0M,0BAA2B/kL,EAAWzuB,GAAI+5K,EAAM3C,gBAE5Fz3K,EAASX,KAAKw0M,0BAA0B7zM,OACxC,IAAIs6M,EAAuBj7M,KAAKw0M,0BAA0B7zM,EAAS,GAAG,iBACtEX,KAAKw0M,0BAA0B7zM,EAAS,GAAG,sBAAsB,YAAY0L,KAAKka,GAClF,IAAI20L,EAAiBl7M,KAAKw0M,0BAA0B7zM,EAAS,GAAG,sBAAsB,YAAYA,OAAS,EACvGw6M,EAAoB50L,EAAa7b,aAAa,QAC9C0wM,EAAkB70L,EAAa7b,aAAa,gBAChD1K,KAAKw0M,0BAA0B7zM,EAAS,GAAG,qBAAqB0L,KAAK8uM,GACrEn7M,KAAKw0M,0BAA0B7zM,EAAS,GAAG,mBAAqBy6M,EAChE,IAAIC,EAAgBr7M,KAAKw0M,0BAA0B7zM,EAAS,GAAG,qBAAqBu6M,GAChFI,EAAsBt7M,KAAKw0M,0BAA0B7zM,EAAS,GAAG,mBACrEX,KAAKy0M,mBAAqBz0M,KAAKw0M,0BAA0B7zM,EAAS,GAAG,qBACrEX,KAAKu7M,SAASh1L,EAAe,eAAkB69C,EAAOhkD,MAAsBi7L,EAAdj3I,EAAOhkD,KAAsB,eAAkBgkD,EAAO5wB,SAAW8nK,EAAsBl3I,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,aACrO5R,KAAKu7M,SAAStpM,EAAgB,eAAkBmyD,EAAOhkD,MAAsB66L,EAAd72I,EAAOhkD,KAA6B,eAAkBgkD,EAAO5wB,SAAW8nK,EAAsBl3I,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,kBAE5O,GAAc,cAAVoL,EAAuB,CAC5Bhd,KAAKw0M,0BAA4B,GACjCx0M,KAAK45K,KAAK4hC,qBAAuBp3I,EACvB,IAANvgD,IACA7jB,KAAKg7M,eAAe/oM,EAAejS,KAAK45K,KAAKsqB,0BAA2Bz0K,EAAWzuB,GAAI+5K,EAAM3C,eACzFgiC,GAIiD,IAA7Cp6M,KAAK45K,KAAKqqB,wBAAwBtjM,SAIlCX,KAAK45K,KAAKqqB,wBAA0B,IAPxCjkM,KAAK45K,KAAKqqB,wBAAwB53L,KAAKrL,IAY/Cq5M,EAAer6M,KAAK45K,KAAKsqB,0BAA0BvjM,OACnD,IAAI86M,EAAuBz7M,KAAK45K,KAAKsqB,0BAA0BmW,EAAe,GAAG,iBACjFr6M,KAAK45K,KAAKsqB,0BAA0BmW,EAAe,GAAG,sBAAsB,YAAYhuM,KAAKka,GAC7FvmB,KAAK45K,KAAKsqB,0BAA0BmW,EAAe,GAAG,qBAAuBr6M,KAAKy0M,mBAClFz0M,KAAKu7M,SAAStpM,EAAgB,eAAkBmyD,EAAOhkD,MAAsBq7L,EAAdr3I,EAAOhkD,KAA6BgkD,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,aACnL5R,KAAKu7M,SAASh1L,EAAe,eAAkB69C,EAAOhkD,MAAsBq7L,EAAdr3I,EAAOhkD,KAA6BgkD,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,cACpG,IAA1E5R,KAAK45K,KAAKyjB,kBAAkBr5L,QAAQuiB,EAAa7b,aAAa,QAC9D1K,KAAK45K,KAAKyjB,kBAAkBhxL,KAAKka,EAAa7b,aAAa,OAE3DmZ,IAAMvG,EAAK3c,OAAS,IACpBX,KAAK45K,KAAKxyH,iBAAkB,EAC5BpnD,KAAK07M,aAAa17M,KAAK45K,KAAKsqB,kCAUhEgQ,EAAOh0M,UAAUq7M,SAAW,SAAUn4M,EAASgd,EAAMozB,EAASP,EAAa/lB,EAAa1e,GACpF,IAAImtM,EAAqBv4M,EAAQsyC,cAAcpqC,GAAGtH,QAAQ,eAAiB,EAC9D,cAATwK,GACA62K,GAAoBs2B,EAAoB,mBAAqB,oBAAuBA,EAAoB,wBAA0B,yBAA4BA,EAAoB,cAAgBv7L,EAAOozB,EAAUmoK,EAAoBv7L,EAAO6yB,EAAc/lB,EAAaltB,KAAK45K,MAC9Qx2K,EAAQuH,aAAa,QAASgxM,EAAoB,wBAA0B,4BAG5Ev4M,EAAQuH,aAAa,OAAQgxM,EAAoB,cAAgBv7L,GACjEhd,EAAQuH,aAAa,eAAgB6oC,GACrCpwC,EAAQuH,aAAa,SAAUgxM,EAAoBv7L,EAAO6yB,GAC1D7vC,EAAQuH,aAAa,gBAAiBukB,OAAOhC,GAAeltB,KAAK45K,KAAKt9F,OAAO1qE,cAIrFsiM,EAAOh0M,UAAU86M,eAAiB,SAAU/oM,EAAewd,EAAYmsL,EAAYxjC,GAC/E3oJ,EAAWpjB,KAAK,CACZy5C,cAAe7zC,EAAe4pM,cAAeD,EAAW,QAASE,iBAAkBF,EAAW,WAC9FG,qBAAsBH,EAAW,eAAgBI,qBAAsBJ,EAAW,eAClFK,aAAc7jC,EAAc5kI,QAAS0oK,oBAAqB9jC,EAAchzJ,OAAOzP,MAC/EwmM,oBAAqB/jC,EAAchzJ,OAAO9f,QAE9C,IAAI3E,EAAS8uB,EAAW9uB,OACxB8uB,EAAW9uB,EAAS,GAAG,sBAAwB,CAAEy7M,SAAU,IAC3D3sL,EAAW9uB,EAAS,GAAG,qBAAuB,GAC9C8uB,EAAW9uB,EAAS,GAAG,mBAAqB,MAGhDuzM,EAAOh0M,UAAUw7M,aAAe,SAAUjsL,GACtC,IAAK,IAAIzuB,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAAK,CAExC,IAAIugB,EAAOkO,EAAWzuB,GACtBhB,KAAKu7M,SAASh6L,EAAK,iBAAkBA,EAAK,iBAAkBA,EAAK,oBAAqBA,EAAK,wBAAyBA,EAAK,wBAAyB,aAElJ,IADA,IAAI86L,EAAY96L,EAAK,sBAAsB,YAAY5gB,OAC9CkjB,EAAI,EAAGA,EAAIw4L,EAAWx4L,IAAK,CAChC,IAAIy4L,GAA2D,IAA1C/6L,EAAK,iBAAiBvd,QAAQ,OAC7Cud,EAAK,qBAAqBsC,GAAKtC,EAAK,iBACtC06L,EAAgB,eAAkB16L,EAAK,oBAAgDA,EAAK,gBAA/BA,EAAK,mBACtEvhB,KAAKu7M,SAASh6L,EAAK,sBAAsB,YAAYsC,GAAIy4L,EAAgBL,EAAc16L,EAAK,uBAAwBA,EAAK,uBAAwB,gBAI7J2yL,EAAOh0M,UAAUy6M,gCAAkC,WAC3C36M,KAAKw0M,0BAA0B7zM,OAAS,IACxCX,KAAK07M,aAAa17M,KAAKw0M,2BACvBx0M,KAAKw0M,0BAA4B,KAGzCN,EAAOh0M,UAAU26M,gCAAkC,SAAU5oM,GACzD,GAAIjS,KAAK45K,KAAKsqB,0BAA0BvjM,OAAS,EAAG,CAChDirL,GAAY35K,GAGZ,IAFA,IAAIsqM,EAAgBv8M,KAAKw8M,eAAevqM,GACpCoqM,EAAYE,EAAc57M,OACrBkjB,EAAI,EAAGA,EAAIw4L,EAAWx4L,IAAK,CAChC,IAAI0C,EAAeuE,GAAWyxL,EAAc14L,IAC5C,GAA2C,2BAAvC0C,EAAa7b,aAAa,UACa,0BAAvC6b,EAAa7b,aAAa,SAAsC,CAChEkhL,GAAYrlK,GACZ,IAAI+oL,EAAyBtvM,KAAK45K,KAAKyjB,kBAAkBr5L,QAAQuiB,EAAajb,KAC9C,IAA5BgkM,GACAtvM,KAAK45K,KAAKyjB,kBAAkB3wL,OAAO4iM,EAAwB,OAM/E4E,EAAOh0M,UAAU+qM,+BAAiC,WAC9C,GAAIjrM,KAAKu0M,yBAAyB5zM,OAAS,EACvC,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAKu0M,yBAAyB5zM,OAAQK,IAAK,CAI3D,IAFA,IAAIugB,EAAOvhB,KAAKu0M,yBAAyBvzM,GACrCy7M,GAAa,EACR54L,EAAI,EAAGA,EAAI7jB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQkjB,IACxD7jB,KAAK45K,KAAKsqB,0BAA0BrgL,GAAG,mBAAqBtC,EAAK,mBACjEk7L,GAAa,GAGjBA,GACAz8M,KAAKu7M,SAASh6L,EAAK,iBAAkBA,EAAK,iBAAkBA,EAAK,oBAAqBA,EAAK,wBAAyBA,EAAK,wBAAyB,eAKlK2yL,EAAOh0M,UAAUkvM,2BAA6B,SAE9Cn9L,EAAeqL,EAAM8mD,EAAQorC,EAAUqxE,GACnC,QAAat1K,IAAT+R,EAAoB,CACpBtd,KAAKu6M,sBACLv6M,KAAKqvM,cAAe,EAEpB,IAAI5/K,EAAazvB,KAAK45K,KAAKn7I,aAAaszC,iBAEpCm5B,EAAUlrG,KAAK08M,mBAAmBp/L,EAAMujK,GAExCt6J,EAAevmB,KAAK28M,kBAAkB1qM,GACtCuoM,EAAoBx6M,KAAK45K,KAAKwqB,gBAAgBpgM,QAAQknG,EAAQ,gBAClE,GAAIlrG,KAAK45K,KAAKp7I,eAAeg/J,qBAAqB/2K,SAAiC,IAAvB+zL,EAA0B,CAClFx6M,KAAKqvM,cAAe,EACpBrvM,KAAKw0M,0BAA4B,GACjC,IAAIiG,EAAkBz6M,KAAK06M,iBAAiB16M,KAAKu0M,yBAA0BhuL,EAAa,cAKxF,OAJyB,IAArBk0L,GACAz6M,KAAKu0M,yBAAyB7nM,OAAO+tM,EAAiB,GAE1Dz6M,KAAKirM,iCACE,KAEX,QAAgC1/L,IAA5B2/F,EAAQ,sBAA4D3/F,IAA3B2/F,EAAQ,eAEjD,OADAlrG,KAAKirM,iCACE,KAYX,QAVgC1/L,IAA5B2/F,EAAQ,iBAA8C,cAAbsE,GACrCxvG,KAAK45K,KAAK4J,OAAO3C,GAAYv9E,kBAAkBsjG,mBACX,2BAAxC30L,EAAcvH,aAAa,WAC3B1K,KAAK45K,KAAKxyH,iBAAkB,GAEf,cAAbooD,GAA6BxvG,KAAK45K,KAAK4J,OAAO3C,GAAYv9E,kBAAkBsjG,mBAC3E5mM,KAAK45K,KAAKxyH,kBACXpnD,KAAK46M,sBACL56M,KAAK45K,KAAKxyH,iBAAkB,QAEA77C,IAA5B2/F,EAAQ,gBAA+B,CACvC,GAAiB,cAAbsE,QAAuDjkG,IAA3B2/F,EAAQ,eAA8B,CAElE,IADA,IAAIy7F,EAAiB,EACZ3lM,EAAI,EAAGA,EAAIulB,EAAa,YAAY5lB,OAAQK,IACS,2BAAtDulB,EAAa,YAAYvlB,GAAG0J,aAAa,UACzCi8L,IAGR,IAAIiW,EAAiB58M,KAAK45K,KAAKqqB,wBAAwBjgM,QAAQknG,EAAQ,iBAC/C,IAApB0xG,GACA58M,KAAK45K,KAAKqqB,wBAAwB53L,KAAK6+F,EAAQ,gBAC/ClrG,KAAK45K,KAAK4hC,qBAAuBp3I,GAG5BuiI,GAAkB,IAA+C,2BAAxC10L,EAAcvH,aAAa,UACV,0BAAxCuH,EAAcvH,aAAa,YACzB1K,KAAK45K,KAAK4J,OAAO3C,GAAYv9E,kBAAkBsjG,kBAI5CD,GAAkB,IAA8C,2BAAxC10L,EAAcvH,aAAa,UACR,0BAAxCuH,EAAcvH,aAAa,WAC9B1K,KAAK45K,KAAKqqB,wBAAwBv3L,OAAOkwM,EAAgB,GAL7D58M,KAAK45K,KAAKqqB,wBAAwBv3L,OAAOkwM,EAAgB,IAYzE,OADA58M,KAAKirM,iCACE,KAEX,IAAIzuL,EAAOiT,EAAWy7E,EAAQ,gBAAgB,QAC1CrgG,OAAU,EACV8sM,OAAc,EACoB,YAAlC33M,KAAK45K,KAAKp7I,eAAe/gB,UACOlS,IAA5B2/F,EAAQ,kBACRrgG,EAAU+C,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAwB4/F,EAAQ,gBAAgBriD,YACzG8uJ,EAAc/pM,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyB4/F,EAAQ,kBAIlGrgG,EAAU+C,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB4/F,EAAQ,eAC9E,SAASriD,YACf8uJ,EAAc/pM,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB4/F,EAAQ,iBAE5FlrG,KAAK68M,gBAAkBt2L,EAAa,aACpC,IAAI6kB,EAAWprC,KAAK45K,KAAKsqB,0BAA0BvjM,OACnD,GAAI6b,IAAS3R,EAAS,CAClB,IAAIiyM,GAAe,EACnB,GAAI98M,KAAK45K,KAAKsqB,0BACV,IAASljM,EAAI,EAAGA,EAAIhB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQK,IAC5D,GAAIhB,KAAK45K,KAAKsqB,0BAA0BljM,GAAG,mBAAqBulB,EAAa,aAAc,CACvFu2L,GAAe,EACf,MAIZ,GAAiB,cAAbttG,GAA4BstG,EAAc,CAE1C,IAAIC,EAAe/8M,KAAKg9M,iBAAiBz2L,EAAcvmB,KAAKu0M,gCACvChpM,IAAjBwxM,GAA+BA,IAAiBA,EAAa,gBAC7D/8M,KAAKg7M,eAAerD,EAAa33M,KAAKu0M,yBAA0B9kL,EAAWy7E,EAAQ,gBAAiBlrG,KAAK45K,KAAK4J,OAAO3C,GAAYzI,eAErI,IAAK,IAAIv0J,EAAI,EAAGA,EAAI7jB,KAAKu0M,yBAAyB5zM,OAAQkjB,IAClD0C,EAAa,aAAajb,KAAOtL,KAAKu0M,yBAAyB1wL,GAAG,iBAAiBvY,KACnFtL,KAAKu0M,yBAAyB1wL,GAAG,iBAAmB0C,EAAa,cAGzE,GAAI6kB,EAAW,EACX,IAASvnB,EAAI,EAAGA,EAAIunB,EAAUvnB,IAAK,CAC/B,GAAI0C,EAAa,eAAiBvmB,KAAK45K,KAAKsqB,0BAA0BrgL,GAAG,iBAAkB,CACvF7jB,KAAK45K,KAAKsqB,0BAA0BrgL,GAAG,iBAAmB0C,EAAa,aACvEvmB,KAAKirM,iCACL,MAEKpnL,IAAMunB,EAAW,IACtBprC,KAAKirM,iCACLjrM,KAAKu7M,SAAS5D,EAAc,eAAkBvzI,EAAOhkD,MAAsBu3L,EAAYjtM,aAAa,QAAvC05D,EAAOhkD,KAAyCgkD,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,mBAKrM5R,KAAKirM,iCACLjrM,KAAKu7M,SAAS5D,EAAc,eAAkBvzI,EAAOhkD,MAAsBu3L,EAAYjtM,aAAa,QAAvC05D,EAAOhkD,KAAyCgkD,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,kBAGhM,GAAiB,cAAb49F,EAA0B,CAE3ButG,EAAe/8M,KAAKg9M,iBAAiBz2L,EAAcvmB,KAAK45K,KAAKsqB,2BACjE,GAAI94J,EAAW,EAAG,CACVvnB,EAAI,EACR,MAAOA,EAAI7jB,KAAK45K,KAAKsqB,0BAA0BvjM,OAC3C,GAAI4lB,EAAa,eAAiBvmB,KAAK45K,KAAKsqB,0BAA0BrgL,GAAG,kBACpEugD,EAAOwiI,kBAWR/iL,QAX2B,CAE3B,IAAIzgB,EAAUpD,KAAK45K,KAAKsqB,0BAA0BrgL,GAC9Co5L,EAAsBj9M,KAAK45K,KAAKqqB,wBAAwBjgM,QAAQknG,EAAQ,gBAC5ElrG,KAAK45K,KAAKqqB,wBAAwBv3L,OAAOuwM,EAAqB,GAC9Dj9M,KAAK45K,KAAKsqB,0BAA0Bx3L,OAAOmX,EAAG,GAC9C+nK,GAAYxoL,EAAQ,kBACpBpD,KAAK45K,KAAKuqB,iBAAkB,EAC5BtgL,EAAI,GAOhB,GAAIk5L,GAAiBA,EAAa,gBAA0D,2BAAxC9qM,EAAcvH,aAAa,UAChC,0BAAxCuH,EAAcvH,aAAa,UAAwC,CACtE,IAAIwyM,EAAiB,EACrB,GAAI94I,EAAOwiI,kBACP,IAAS5lM,EAAI,EAAGA,EAAIulB,EAAa,YAAY5lB,OAAQK,IAC7CiR,EAAcvH,aAAa,WAAa6b,EAAa,YAAYvlB,GAAG0J,aAAa,UACjFwyM,IAIRA,GAAkB,IAAO94I,EAAOwiI,mBAChC5mM,KAAK45K,KAAKxyH,mBACVpnD,KAAK45K,KAAKqqB,wBAAwBv3L,OAAO1M,KAAK45K,KAAKqqB,wBAAwBjgM,QAAQknG,EAAQ,gBAAiB,GACvG,eAAkB3kF,EAAa,eAChCqlK,GAAYrlK,EAAa,cAE7BvmB,KAAK45K,KAAKsqB,0BAA0Bx3L,OAAOqwM,EAAa,kBAAmB,GAC3E/8M,KAAK45K,KAAKuqB,iBAAkB,OAG/B,CACD,SAAsB54L,IAAjBwxM,GAA+BA,IAAiBA,EAAa,iBAC7D,eAAkBpF,GAAc,CACjC,IAAIwF,EAAuBn9M,KAAK06M,iBAAiB16M,KAAK45K,KAAKsqB,0BAA2ByT,IACxD,IAA1BwF,GACAn9M,KAAKg7M,eAAerD,EAAa33M,KAAK45K,KAAKsqB,0BAA2Bz0K,EAAWy7E,EAAQ,gBAAiBlrG,KAAK45K,KAAK4J,OAAO3C,GAAYzI,eAG/I,IAAIglC,GAAQ,EACZ,IAASp8M,EAAI,EAAGA,EAAIhB,KAAK45K,KAAKqqB,wBAAwBtjM,OAAQK,IACtDkqG,EAAQ,iBAAmBlrG,KAAK45K,KAAKqqB,wBAAwBjjM,KAC7Do8M,GAAQ,GAQhB,GALIA,GACAp9M,KAAK45K,KAAKqqB,wBAAwB53L,KAAK6+F,EAAQ,gBAEnDlrG,KAAK45K,KAAK4hC,qBAAuBp3I,EACjCpkE,KAAK07M,aAAa17M,KAAKu0M,2BAClB,eAAkBoD,GAAc,CACjC33M,KAAKu7M,SAAS5D,EAAc,eAAkBvzI,EAAOhkD,MAAsBu3L,EAAYjtM,aAAa,QAAvC05D,EAAOhkD,KAAyCgkD,EAAO5wB,QAAQ5hC,WAAYwyD,EAAOh/C,OAAOzP,MAAOyuD,EAAOh/C,OAAO9f,MAAMsM,WAAY,aACzLurM,EAAuBn9M,KAAK06M,iBAAiB16M,KAAK45K,KAAKsqB,0BAA2ByT,GACtF33M,KAAK45K,KAAKsqB,0BAA0BiZ,GAAsB,sBAAsB,YAAY9wM,KAAK4F,GAErGjS,KAAK45K,KAAKuqB,iBAAkB,QAG3Bv2L,SAASomC,uBAAuB,qBAAqBrzC,OAAS,IACnEX,KAAKirM,iCACLrf,GAAYh+K,SAASomC,uBAAuB,qBAAqB,WAKzEh0C,KAAKirM,kCAIbiJ,EAAOh0M,UAAU88M,iBAAmB,SAAU18M,EAAQmvB,GAGlD,IADA,IAAI4tL,EACKr8M,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAC9B,eAAkBV,EAAO,aAAaoK,aAAa,QACnDpK,EAAO,aAAaoK,aAAa,QAAU+kB,EAAWzuB,GAAG,iBAAiB0J,aAAa,QACxF2yM,EAAY,CAAEC,YAAY,EAAMC,eAAgBv8M,IAGxD,OAAOq8M,GAEXnJ,EAAOh0M,UAAUq6M,oBAAsB,WACnC,IAAK,IAAIv5M,EAAI,EAAGA,EAAIhB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQK,IACxD4M,SAASyd,eAAerrB,KAAK45K,KAAKsqB,0BAA0BljM,GAAG,iBAAiBsK,MAChFtL,KAAK45K,KAAKsqB,0BAA0BljM,GAAG,iBACnC4M,SAASyd,eAAerrB,KAAK45K,KAAKsqB,0BAA0BljM,GAAG,iBAAiBsK,MAKhG4oM,EAAOh0M,UAAUw6M,iBAAmB,SAAU8C,EAAkBvrM,GAE5D,IAAI+8D,EAAcwuI,EAAiB32M,KAAI,SAAUsG,GAAK,OAAOA,EAAE,oBAAqBnJ,QAAQiO,GAC5F,OAAO+8D,GAEXklI,EAAOh0M,UAAU06M,oBAAsB,WACnC,IAAK,IAAI55M,EAAI,EAAGA,EAAIhB,KAAK45K,KAAKyjB,kBAAkB18L,OAAQK,IAAK,CACzD,IAAIy8M,EAAkB7vM,SAASyd,eAAerrB,KAAK45K,KAAKyjB,kBAAkBr8L,IAC1E4qL,GAAY6xB,GAEhB,IAAK,IAAI55L,EAAI,EAAGA,EAAI7jB,KAAK45K,KAAKqqB,wBAAwBtjM,OAAQkjB,IAAK,CAC/D,IAAI+zL,EAA4C,gBAAlC53M,KAAK45K,KAAKp7I,eAAe/gB,KACnCzd,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmBtL,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAEjEw6C,GADA23J,EAAkB7F,EAAU53M,KAAK45K,KAAKqqB,wBAAwBpgL,GAC9CjW,SAASyd,eAAeoyL,IACvC,eAAkB33J,IACnB8lI,GAAYh+K,SAASyd,eAAeoyL,IAG5Cz9M,KAAK45K,KAAKsqB,0BAA4B,GACtClkM,KAAK45K,KAAKqqB,wBAA0B,GACpCjkM,KAAK45K,KAAKyjB,kBAAoB,IAGlC6W,EAAOh0M,UAAUw8M,mBAAqB,SAAUp/L,EAAM7Q,GAClD,IAAIuiE,EACAvtC,EAQAi8K,EAPA9mI,EAAO52E,KAAK45K,KAAK4J,OAAO/2K,GAAO0rK,cAE/Bn7J,EAAQM,EAAKs5D,GACb+mI,EAAa39M,KAAK45K,KAAKp7I,eAAe/gB,KAEtCgS,EAAazvB,KAAK45K,KAAKn7I,aAAaszC,iBAGrB,YAAf4rI,GAA6B,eAAkB39M,KAAK45K,KAAKn7I,aAAa2vC,cACtEsvI,EAAoB19M,KAAK45K,KAAKn7I,aAAa2vC,WAAWpuE,KAAK45K,KAAKn7I,aAAa9J,aAAa,eAG9F,IADA,IAAIipL,EAAyC,YAAfD,EAA2BD,EAAkB,UAAY,EAC9E18M,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAAK,CAGxC,IADA,IAAI0vB,EAAYjB,EAAWzuB,GAAG,QACrBwiB,EAAI,EAAGA,EAAIo6L,EAAyBp6L,IACzC,GAAmB,YAAfm6L,GAA4BluL,EAAWzuB,GAAG,UAAY08M,EAAkBl6L,GAAG,eAC3E,IAAK,IAAIK,EAAI,EAAGA,EAAI6M,EAAU/vB,OAAQkjB,IAC9B7G,IAAU0T,EAAU7M,GAAG,UACvBmrD,EAAcxrD,GAK9B,IAASK,EAAI,EAAGA,EAAI6M,EAAU/vB,OAAQkjB,IAC9B7G,IAAU0T,EAAU7M,GAAG,UACvB4d,EAAczgC,GAI1B,MAAO,CAAEk+J,aAAclwF,EAAavtC,YAAaA,IAGrDyyK,EAAOh0M,UAAUy8M,kBAAoB,SAAU1qM,GAQ3C,IAPA,IAAIg5K,EACApK,EACApE,EACAzvJ,EAEAyC,EAAazvB,KAAK45K,KAAKn7I,aAAaszC,iBACpChH,EAAS/qE,KAAK45K,KAAKp7I,eACdx9B,EAAI,EAAGA,EAAIyuB,EAAW9uB,OAAQK,IAAK,CAQxC,IANA,IAAIsc,EAAOmS,EAAWzuB,GAAG,QACrBkuL,GAAU,EAEVh7I,EAAW,GAEXyS,EAAiB,CAAEy1J,SAAU,IACxBv4L,EAAI,EAAGA,EAAIvG,EAAK3c,OAAQkjB,IAAK,CAClC,IAAI0C,OAAe,EACnB0kK,EAAa3tK,EAAKuG,GAAG,cACrBg9J,EAAavjK,EAAKuG,GAAG,cACrB44J,EAAYn/J,EAAKuG,GAAG,aACpBmJ,EAAa1P,EAAKuG,GAAG,cAEjB0C,GADgB,IAAhByG,EACepf,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC1Du1K,EAAa,eAAiBoK,EAAa,cAAgBxO,GAGhD7uK,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC1Du1K,EAAa,eAAiBoK,EAAa,cAAgBxO,EAAY,cAAgBzvJ,GAE3F/a,IAAkBsU,IAClB2oK,GAAU,GAEdh7I,EAAS7nC,KAAKka,GAElB,GAAI2oK,EAOA,OANI,eAAkBvoI,EAAe,gBACjCA,EAAe,aAA+B,YAAhBokB,EAAOttD,KACjC7P,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyBtK,GACxE4M,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmBtK,IAE1E2lD,EAAe,YAAczS,EACtByS,EAGf,OAAO,MAEXutJ,EAAOh0M,UAAUs8M,eAAiB,SAAUvqM,GASxC,IARA,IAAIg5K,EACApK,EACApE,EACAzvJ,EACA4qL,EAAU9wM,WAAWmL,EAAc3G,GAAGysL,OAAO9lL,EAAc3G,GAAG3K,OAAS,IAEvE2c,EAAOtd,KAAK45K,KAAKn7I,aAAaszC,iBAAiB6lI,GAAS,QACxDiG,EAAsB,GACjB78M,EAAI,EAAGA,EAAIsc,EAAK3c,OAAQK,IAAK,CAClC,IAAIulB,OAAe,EACnB0kK,EAAa3tK,EAAKtc,GAAG,cACrB6/K,EAAavjK,EAAKtc,GAAG,cACrBy7K,EAAYn/J,EAAKtc,GAAG,aACpBgsB,EAAa1P,EAAKtc,GAAG,cAEjBulB,GADgB,IAAhByG,EACepf,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC1Du1K,EAAa,eAAiBoK,EAAa,cAAgBxO,GAGhD7uK,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC1Du1K,EAAa,eAAiBoK,EAAa,cAAgBxO,EAAY,cAAgBzvJ,GAE1F,eAAkBzG,IACnBs3L,EAAoBxxM,KAAKka,EAAajb,IAG9C,OAAOuyM,GAEX3J,EAAOh0M,UAAUs4M,aAAe,WAC5B,IAAI3xM,EAAM7G,KAAK45K,KACX7uG,EAASlkE,EAAI23B,eACjB,GAAIx+B,KAAK45K,KAAKqqB,wBAEV,IAAK,IAAIpgL,EAAI,EAAGA,EAAI7jB,KAAK45K,KAAKqqB,wBAAwBtjM,OAAQkjB,IAAK,CAC/D,IAAI+zL,EAA0B,gBAAhB7sI,EAAOttD,KAAyBzd,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmBtL,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAC3GmyM,EAAkB52M,EAAIq+B,UAAUh5B,cAAc,IAAM0rM,EAAU53M,KAAK45K,KAAKqqB,wBAAwBpgL,IACpG,IAAK,eAAkB45L,GAAkB,CACrC,IAAIr9L,EAAQ,eAAkBpgB,KAAK45K,KAAK4hC,qBAAqBp7L,MACnBq9L,EAAgB/yM,aAAa,QAAnE1K,KAAK45K,KAAK4hC,qBAAqBp7L,KACnCpgB,KAAKu7M,SAASkC,EAAiBr9L,EAAMpgB,KAAK45K,KAAK4hC,qBAAqBhoK,QAAQ5hC,WAAY5R,KAAK45K,KAAK4hC,qBAAqBp2L,OAAOzP,MAAO3V,KAAK45K,KAAK4hC,qBAAqBp2L,OAAO9f,MAAMsM,WAAY,aAC7L,IAAK,IAAI5Q,EAAI,EAAGA,EAAIhB,KAAK45K,KAAKsqB,0BAA0BvjM,OAAQK,IACxDhB,KAAK45K,KAAKsqB,0BAA0BljM,GAAG,iBAAiBsK,KAAOmyM,EAAgBnyM,KAC/EtL,KAAK45K,KAAKsqB,0BAA0BljM,GAAG,iBAAmBy8M,GAGlE,IAAIN,EAAuBn9M,KAAK06M,iBAAiB16M,KAAK45K,KAAKsqB,0BAA2BuZ,GACtF,IAA8B,IAA1BN,EAA6B,CAC7B,IAAIt8B,EAAa7gL,KAAK45K,KAAKn7I,aAAaszC,iBAAiB/xE,KAAK45K,KAAKqqB,wBAAwBpgL,IAAI,QAAQA,GAAG,cAC1G7jB,KAAKg7M,eAAeyC,EAAiBz9M,KAAK45K,KAAKsqB,0BAA2BlkM,KAAK45K,KAAKn7I,aAAaszC,iBAAiB/xE,KAAK45K,KAAKqqB,wBAAwBpgL,IAAK7jB,KAAK45K,KAAK4J,OAAO3C,GAAYzI,iBAKtM,GAAIp4K,KAAK45K,KAAKwqB,gBACV,IAASvgL,EAAI,EAAGA,EAAI7jB,KAAK45K,KAAKwqB,gBAAgBzjM,OAAQkjB,IAAK,CACvD,IAAIi6L,EAA+B,gBAAhB/yI,EAAOttD,KAA0B,IAAMzd,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmBtL,KAAK45K,KAAKwqB,gBAAgBvgL,GAAK,QAAY,IAAM7jB,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAwBtL,KAAK45K,KAAKwqB,gBAAgBvgL,GAC1NwC,EAAcxf,EAAIq+B,UAAUh5B,cAAc4xM,GACzC,eAAkBz3L,IACnBA,EAAY1b,aAAa,OAAQ,WAErC,IAAIozM,EAAgC,gBAAhBhzI,EAAOttD,KAA0B,IAAMzd,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmBtL,KAAK45K,KAAKwqB,gBAAgBvgL,GAAO,IAAM7jB,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyBtL,KAAK45K,KAAKwqB,gBAAgBvgL,GAClNiiC,EAAgBj/C,EAAIq+B,UAAUh5B,cAAc6xM,GAC3C,eAAkBj4J,IACnBA,EAAcn7C,aAAa,OAAQ,aAKnDupM,EAAOh0M,UAAUq4M,mBAAqB,WAClC,IAQIzpI,EARAjoE,EAAM7G,KAAK45K,KACX7uG,EAASlkE,EAAI23B,eACb62K,EAActqI,EAAO/6C,MAAMxT,KAC3BoQ,EAAY,CACZ3W,WAAY80D,EAAO96C,WAAWha,WAAYF,UAAWg1D,EAAO96C,WAAWla,UACvEC,WAAY+0D,EAAO96C,WAAWja,WAAYF,KAAMi1D,EAAO96C,WAAWna,KAAMH,MAAOo1D,EAAO96C,WAAWta,MACjG69B,QAASu3B,EAAO96C,WAAWujB,SAG3BshK,EAAU,GACVkJ,EAAYv3B,GAAUzmL,KAAKm0M,eAAe7uM,MAAmB,EAAVwvM,EAAeO,EAAazoL,GAC/EyhD,EAAWoP,GAAYugI,EAAWpxL,GACtC5sB,KAAKsnM,iBAAmB,IAAI5oH,GAAM1+E,KAAKm0M,eAAenuM,EAAI8uM,EAAW90M,KAAKm0M,eAAeluM,EAAI6uM,EAAUzmI,EAAShpE,OAAUrF,KAAKm0M,eAAoB,MAAe,EAAVW,EAAe90M,KAAKm0M,eAAqB,OAAe,EAAVW,EAAezmI,EAAShpE,QACzM,gBAAhB0lE,EAAOttD,KAAyB,EAAmB,IAAdzd,KAAK+0B,KAAc+/K,EAAU,IACvE,IAAImJ,EAAe,CACftoM,MAAOo1D,EAAO3lD,OAAOzP,MAAOrQ,MAAOylE,EAAO3lD,OAAO9f,MAAOkuC,QAASu3B,EAAO3lD,OAAOouB,SAEnFyqK,EAAazqK,QAAU,eAAkByqK,EAAazqK,SAAW,EAAIyqK,EAAazqK,QAClF,IAAIosC,EAAgB,IAAIo+F,GAAWn3K,EAAIzD,QAAQkI,GAAK,iBAAkBy/D,EAAO1qB,WAAY49J,EAAc,EAAGj+M,KAAKsnM,iBAAkB,KAAM,KAAM,GAAI,IACjJtnM,KAAKguE,YAAYtpE,YAAYmC,EAAIye,SAASg7B,cAAcs/B,IACxD5/E,KAAKk+M,mBAAmBr3M,EAAK7G,KAAKsnM,iBAAiBhiM,MAAOtF,KAAKsnM,iBAAiBjiM,OAAQ0lE,GACxF/qE,KAAKguE,YAAYrjE,aAAa,YAAa,eAAiB3K,KAAKk0E,UAAUluE,GAAMhG,KAAKsnM,iBAAiBthM,GAAM,KACxGhG,KAAKk0E,UAAUjuE,GAAOjG,KAAKsnM,iBAAkB,GAAM,MAChC,UAApBv8H,EAAOhnE,UACP8C,EAAIq+B,UAAUxgC,YAAY1E,KAAKguE,aAE/BqnI,IACAzoL,EAAUjX,MAA6B,OAApBiX,EAAUjX,MAAkBiX,EAAUjX,MAAQ3V,KAAK45K,KAAK1pJ,WAAWuiK,qBACtF7lK,EAAU3W,WAAc,eAAkB2W,EAAU3W,YAAqCjW,KAAK45K,KAAK1pJ,WAAWja,WAA5C2W,EAAU3W,WAC5E2W,EAAU9W,KAAQ,eAAkB8W,EAAU9W,MAAyB9V,KAAK45K,KAAK1pJ,WAAWujK,kBAAoBhE,GAAMx9G,gBAAgBn8D,KAAhF8W,EAAU9W,KAChE8W,EAAU5W,WAAc,eAAkB4W,EAAU5W,YAAqChW,KAAK45K,KAAK1pJ,WAAW8iK,iBAAmBvD,GAAMx9G,gBAAgBj8D,WAArF4W,EAAU5W,WAC5E84D,EAAc,IAAIiQ,GAAWl4E,EAAIzD,QAAQkI,GAAK,eAAiBtL,KAAKm0M,eAAgB,EAAKn0M,KAAKm0M,eAAe7uM,MAAQ,EAAItF,KAAKm0M,eAAeluM,EAAKooE,EAAShpE,OAAS,EAAKyvM,EAAU,EAAG,SAAUkJ,EAAW,IAC3Mt/B,GAAkB5vG,EAAaliD,EAAWA,EAAUjX,MAAO3V,KAAKguE,eAGxEkmI,EAAOh0M,UAAUi+M,eAAiB,SAAUhxM,GACxCnN,KAAK20B,YAAexnB,EAAE7M,OAAOgL,GAAGtH,QAAQ,gBAAkB,EAAMhE,KAAK20B,YAAc,EAC9E30B,KAAK20B,YAAc,EACxB30B,KAAKguE,YAAchuE,KAAK45K,KAAKt0J,SAASY,YAAY,CAAE5a,GAAItL,KAAK45K,KAAKx2K,QAAQkI,GAAK,kBAC/EtL,KAAK45K,KAAKwB,YAAcp7K,KAAK2rM,mBAC7B3rM,KAAK4rM,eAAe5rM,KAAK20B,aACpB,eAAkB30B,KAAK45K,KAAKn7I,eAAuD,UAAtCz+B,KAAK45K,KAAKp7I,eAAez6B,WACnE/D,KAAK45K,KAAKoI,UACVhiL,KAAK45K,KAAKqI,cAAc+W,WAAWt0L,YAAY1E,KAAK45K,KAAKn7I,aAAauvC,aAGtEhuE,KAAK45K,KAAK10I,UAAUxgC,YAAY1E,KAAK45K,KAAKn7I,aAAauvC,cAG3D9hE,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAkBtL,KAAK45K,KAAKx2K,QAAQkI,MACzEY,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAkBtL,KAAK45K,KAAKx2K,QAAQkI,IAAIvE,MAAMiqC,cAAgB,SAG3GkjK,EAAOh0M,UAAUg+M,mBAAqB,SAAUr3M,EAAKvB,EAAOD,EAAQ0lE,GAChE,IAAI/kE,EACAC,EAEAkiL,EADA2sB,EAAU,GAGd3sB,EAAY,eAAO,GAAIthL,EAAIu0K,YAAa+M,GAAW,GACnD,IAAIi2B,EAAQj2B,EAAUniL,EAClBq4M,EAAQl2B,EAAUliL,EAClB8lL,EAAa5D,EAAU9iL,OACvBymL,EAAY3D,EAAU7iL,MACtBg0J,EAAazyJ,EAAIinB,cAAcxoB,MAC/BqmK,EAAc9kK,EAAIinB,cAAczoB,OAChCi5M,EAAa,eAAkBvzI,EAAOp9C,SAAS3nB,GAAyB,EAApB+kE,EAAOp9C,SAAS3nB,EACpEu4M,EAAa,eAAkBxzI,EAAOp9C,SAAS1nB,GAAyB,EAApB8kE,EAAOp9C,SAAS1nB,EACxE,GAAwB,UAApB8kE,EAAOhnE,SACP/D,KAAKk0E,UAAYrtE,EAAIm7K,UAAY,IAAInG,GAAMyiC,EAAWC,EAAazJ,EAAU,GACzE,IAAIj5B,GAAMyiC,EAAYz3M,EAAIu0K,YAAYp1K,EAAGu4M,EAAY13M,EAAIu0K,YAAYn1K,GACzEjG,KAAKunM,gBAAkB1gM,EAAIu0K,gBAE1B,CACD,OAAQrwG,EAAOhnE,UACX,IAAK,MACL,IAAK,SACDokL,EAAU9iL,OAA8B,QAApB0lE,EAAOhnE,SAAuBgoL,EAAa1mL,EAAW0mL,EAAa1mL,EAAoB,EAAVyvM,EACjG9uM,EAAKszJ,EAAa,EAAMh0J,EAAQ,EAChCW,EAAyB,QAApB8kE,EAAOhnE,SAAsBs6M,EAASA,EAAQl2B,EAAU9iL,OAC7D8iL,EAAUliL,EAAyB,QAApB8kE,EAAOhnE,SAAsBs6M,EAAQh5M,GAAUwB,EAAIm7K,UAAa8yB,EAAU,EAAKA,GAAWuJ,EAASvJ,EAAU,EAC5H,MACJ,IAAK,OACL,IAAK,QACD3sB,EAAU7iL,MAASwmL,EAAYxmL,EAAQuB,EAAIu0K,YAAYp1K,EACvDA,EAAyB,SAApB+kE,EAAOhnE,SAAuBq6M,EAAStJ,EAAU,EAAMsJ,EAAQj2B,EAAU7iL,MAAQwvM,EACtF7uM,EAAK0lK,EAAc,EAAMtmK,EAAS,EAClC8iL,EAAUniL,EAAyB,SAApB+kE,EAAOhnE,SAAuBq6M,EAAQ94M,EAAQwvM,EAAUsJ,EACvE,MAER,OAAQrzI,EAAO9qB,WACX,IAAK,OACuB,QAApB8qB,EAAOhnE,UAA0C,WAApBgnE,EAAOhnE,SACpCiC,EAAImiL,EAAUniL,GAAqB,gBAAhB+kE,EAAOttD,KAAyBq3L,EAAU,GAG7D7uM,EAAIkiL,EAAUliL,GAAO8kE,EAAO1lE,QAAU0lE,EAAOzlE,OAA0B,gBAAhBylE,EAAOttD,KAA6C,EAApB5W,EAAIu0K,YAAYp1K,GAE3G,MACJ,IAAK,MACuB,QAApB+kE,EAAOhnE,UAA0C,WAApBgnE,EAAOhnE,SACpCiC,EAAKszJ,EAAah0J,GAA0B,gBAAhBylE,EAAOttD,KAAyB,EAAIq3L,GAGhE7uM,EAAI0lK,EAActmK,GAA0B,YAAhB0lE,EAAOttD,KAAqBq3L,EAAU,GAEtE,OAEH/pI,EAAO1lE,QAAU0lE,EAAOzlE,QAA0B,gBAAhBylE,EAAOttD,KAC1Czd,KAAKunM,gBAAkB1gM,EAAIu0K,YAAcv0K,EAAIshL,UAAYA,GAGzDthL,EAAIshL,UAAY,MACXp9G,EAAO1lE,QAAU0lE,EAAOzlE,QAA0B,gBAAhBylE,EAAOttD,OAC1C5W,EAAIshL,UAAYA,GAEpBnoL,KAAKunM,gBAAkB1gM,EAAIu0K,YAAc+M,GAErB,SAApBp9G,EAAOhnE,WACP8C,EAAIu0K,YAAY91K,MAAQ6iL,EAAU7iL,OAEtCtF,KAAKk0E,UAAY,IAAI2nG,GAAM71K,EAAGC,KAGtCiuM,EAAOh0M,UAAU+0M,4BAA8B,SAAUp0B,EAAY6wB,GACjE,IAAIruM,EAAQrD,KACZJ,MAAMM,UAAU+uF,QAAQ3rF,KAAKouM,GAAS,SAAUh7L,EAAQ8hC,GAEpD,IAGI+jB,EAHAn9C,EAAa1I,EAAO0I,WACpBkU,EAAQ5c,EAAOq3L,WAKnBnuM,MAAMM,UAAU+uF,QAAQ3rF,KAAK8b,GAAY,SAAU9B,EAAMm/J,GACrD,IACI+hC,IAAa,eAAkBlhM,EAAKja,EAAMu2K,KAAKp7I,eAAeigL,kBAC9DnhM,EAAKja,EAAMu2K,KAAKp7I,eAAeigL,gBACnC,GAAI/nM,EAAOC,SAAW6nM,IAAgB,eAAkBlhM,EAAK,eAAmB,eAAkBA,EAAK,cAAgB,CACnH,GAAI5G,EAAOiW,SAAU,CACjB4vC,EAAauoH,GAAoBpuK,EAAOiW,SAAUtpB,EAAMu2K,MACxD,IAAI90F,EAAkBvoB,EAAWl5D,EAAMu2K,MACnCmG,EAAY,eAAkBj7F,EAAgB9nC,mBAAqB8nC,EAAgB,GACnFA,EACOi7F,EAAU7zK,cAAc,OAAOuwE,IAE9C,IAAIjgE,EAAO,eAAkBc,EAAKgW,IAAU,GAAKhW,EAAKgW,GAClDorL,EAAc,eAAkBhoM,EAAO4pK,gBAAgD5pK,EAAO0J,KAArC9C,EAAK5G,EAAO4pK,gBAErEge,EAAU,GACVj7L,EAAMu2K,KAAKp7I,eAAemgL,uBAC1BrgB,EAAQjyL,KAAKhJ,EAAMu7M,oBAAoB/9B,EAAYrkK,EAAMkiM,IACzDr7M,EAAMw7M,gCAAgCriM,EAAMkiM,EAAYpgB,EAASkgB,KAGjElgB,EAAQjyL,KAAK,CAAEw0K,WAAYA,EAAYroI,YAAaA,EAAaikI,UAAWA,EAAWz/J,MAAO0hM,EAC1F1uM,KAAMwM,EACNsP,MAAS,eAAkBpV,EAAO8pK,iBAAoB,eAAkBljK,EAAK5G,EAAO8pK,kBAAoD,KAAhCljK,EAAK5G,EAAO8pK,gBAAyDn9K,EAAMu2K,KAAKp7I,eAAeu6K,eAAiBriM,EAAOoV,MAAQzoB,EAAMu2K,KAAKp7I,eAAe1S,MAAnHxO,EAAK5G,EAAO8pK,kBAC9Jn9K,EAAMw7M,gCAAgCriM,EAAMkiM,EAAYpgB,EAASkgB,YAOrFtK,EAAOh0M,UAAU0+M,oBAAsB,SAAU/9B,EAAYrkK,EAAMkiM,GAC/D,IAAIr7M,EAAQrD,KAER8+M,EAAa,GAajB,OAZA9+M,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAe37K,KAAI,SAAU27K,EAAgBhqI,GAEtE,IAAIgkI,EAAagG,EAAepjK,WAEhCxf,MAAMM,UAAU+uF,QAAQ3rF,KAAKk5K,GAAY,SAAUl/J,EAAMm/J,GACrD,IAAI/lK,EAASrT,EAAMu2K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GACrDh8B,IAASc,EAAK5G,EAAOq3L,aAAwB,KAATvxL,GAAgBkiM,IAAephM,EAAK5G,EAAO4pK,iBAChFw+B,EAAWzyM,KAAK,CAAEw0K,WAAYA,EAAYroI,YAAaA,EAAaikI,UAAWA,EAAWz/J,MAAO0hM,EAAY1uM,KAAMwM,EAC/GsP,MAAQ,eAAkBpV,EAAO8pK,gBAAgD9pK,EAAOoV,MAArCxO,EAAK5G,EAAO8pK,wBAIxEs+B,GAEX5K,EAAOh0M,UAAU63M,yBAA2B,SAE5Cl3B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,GAmCvE,IAlCA,IACIgoB,EADA1qM,EAAQrD,KAERgvE,EAAc,EAEd5uD,EAAOpgB,KAAK45K,KAAKp7I,eAAepe,KAChC2+L,EAAY,GACZ5sK,EAAU,SAAUm+B,GACpB,IAAK,eAAkBA,EAASgxE,QAAU,eAAkBhxE,EAASwmH,IAAK,CACtEiX,EAAc,eAAkBz9H,EAASpoC,OAA0BooC,EAASgxE,KAAO,MAAQhxE,EAASwmH,GAAlDxmH,EAASpoC,MAC3D62K,EAAY,GACZ,IAAIC,GAAoB,EAExBp/M,MAAMM,UAAU+uF,QAAQ3rF,KAAK8b,GAAY,SAAU9B,EAAMm/J,GACrD,IAAI5/J,EAAcyjK,EAAet8K,QAAQ,MAAQ,EAAKkrB,OAAOwwJ,GAAmBpiK,EAAMgjK,IAClFx5K,WAAWwW,EAAKgjK,IAChBzjK,GAAcyzD,EAASgxE,MAAQzkI,GAAcyzD,EAASwmH,KACtDkoB,GAAoB,EACpBD,EAAU1yM,KAAKhJ,EAAM47M,cAAcp+B,EAAYpE,EAAWn/J,EAAMwoK,EAAUS,EAAWR,EAAclpK,QAGtGmiM,GACDD,EAAU1yM,KAAK,CACXw0K,WAAYA,EAAYoK,WAAY,KAAMxO,UAAW,KACrDzsK,KAAM,KAAMgN,MAAO,OAG3B,IAAI0hM,EAAc,cAAD,CAAmBt+L,GAA4D,mBAAnD3gB,OAAOS,UAAU0R,SAAStO,KAAKgtE,EAAS36D,OAChF,eAAkB26D,EAAStzD,OAA6Bo1B,EAAO8sK,oBAAoB5uI,EAAUtB,GAAzDsB,EAAS36D,MAAM,GACpD26D,EAAS36D,MAAQyK,EACrB4uD,IACA58B,EAAOysK,gCAAgC9Q,EAAY2Q,EAAYK,EAAWzuI,EAASkuI,cAGvFpsK,EAASpyC,KACJ6N,EAAK,EAAGgpL,EAAiBF,EAAc9oL,EAAKgpL,EAAel2L,OAAQkN,IAAM,CAC9E,IAAIyiE,EAAWumH,EAAehpL,GAC9BskC,EAAQm+B,KAIhB4jI,EAAOh0M,UAAU2+M,gCAAkC,SAAU9Q,EAAY2Q,EAAYI,EAAYN,GAE7F,IAAIW,EAAiB,GACjBp0I,EAAS/qE,KAAK45K,KAAKp7I,eACvB,GAAIsgL,EAAWn+M,OAAS,GAAK69M,EAAY,CACrC,IAAK,IAAIx9M,EAAI,EAAGA,EAAI89M,EAAWn+M,OAAQK,IAAK,CAExC,IAAIyuB,EAAaqvL,EAAW99M,GAC5B,GAAIyuB,EAAW9uB,OAAS,EACpB,IAAK,IAAIkjB,EAAI,EAAGA,EAAI4L,EAAW9uB,OAAQkjB,IACnCs7L,EAAe9yM,KAAKojB,EAAW5L,SAInCs7L,EAAe9yM,KAAKyyM,EAAW99M,IAEnCm+M,EAAe,eAAgB,EAEnC,IAAIC,IAAcp/M,KAAK45K,KAAKp7I,eAAemgL,uBACvC3+M,KAAKq/M,iBAAiBr/M,KAAK+xE,iBAAkBg8H,EAAY2Q,GAC7D,GAAKU,EAOD,IAASp+M,EAAI,EAAGA,EAAIhB,KAAK+xE,iBAAiBpxE,OAAQK,IAC1ChB,KAAK+xE,iBAAiB/wE,GAAG,UAAY+sM,GAAc/tM,KAAK+xE,iBAAiB/wE,GAAG,UAAY09M,GACxF1+M,KAAK+xE,iBAAiB/wE,GAAGsc,KAAKjR,KAAK8yM,EAAe,SAR1Dn/M,KAAK+xE,iBAAiB1lE,KAAK,CACvBmQ,KAAMuxL,EAAY3tL,KAAMs+L,EAAYphM,KAAM6hM,EAAgB3rK,QAASu3B,EAAOv3B,QAC1EP,YAAa83B,EAAOoqI,YAAYx/L,MAAOuX,YAAa69C,EAAOoqI,YAAY7vM,UAavF4uM,EAAOh0M,UAAUm/M,iBAAmB,SAAUttI,EAAkBv1D,EAAMkiM,GAElE,IADA,IAAIU,GAAc,EACTp+M,EAAI,EAAGA,EAAI+wE,EAAiBpxE,OAAQK,IACzC,IAAK+wE,EAAiB/wE,GAAG,UAAYwb,GAAwC,KAAhCu1D,EAAiB/wE,GAAG,UAAmB+wE,EAAiB/wE,GAAG,UAAY09M,EAApH,CACIU,GAAc,EACd,MAMR,OAAOA,GAEXlL,EAAOh0M,UAAU83M,yBAA2B,SAE5Cn3B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,GAgGvE,IA/FA,IAKIgoB,EALA1qM,EAAQrD,KAERogB,EAAOpgB,KAAK45K,KAAKp7I,eAAepe,KAChCk/L,EAAc,GAIdC,EAAY,GAEZC,EAAmB,GACnBC,EAAa,GACb7+G,EAAU,SAAUtwB,GACpB,GAAK,eAAkBA,EAAStzD,QAwC3B,GAAI,eAAkBszD,EAAS0mH,aAAe,eAAkB1mH,EAAS2mH,aAAe,eAAkB3mH,EAAStzD,QACjH,eAAkBszD,EAASgxE,OAAS,eAAkBhxE,EAASwmH,MAAQ,eAAkBxmH,EAAS36D,OAAQ,CAW7G,GATA/V,MAAMM,UAAU+uF,QAAQ3rF,KAAK8b,GAAY,SAAU9B,EAAMm/J,GAGrD,IAFA,IAAI+Z,EAAelW,EAAet8K,QAAQ,MAAQ,EAAM07K,GAAmBpiK,EAAMgjK,GAC5EhjK,EAAKgjK,GACD98J,EAAI,EAAGA,EAAIg8L,EAAiB7+M,OAAQ6iB,IACrCgzK,IAAegpB,EAAiBh8L,IAChCi8L,EAAWpzM,KAAKhJ,EAAM47M,cAAcp+B,EAAYpE,EAAWn/J,EAAMwoK,EAAUS,EAAWR,EAAcyQ,OAIhF,IAA5BgpB,EAAiB7+M,OAAc,CAE/B,IAAI++M,GAAU,EAEd9/M,MAAMM,UAAU+uF,QAAQ3rF,KAAK8b,GAAY,SAAU9B,EAAMm/J,GACrDijC,GAAU,EAEV,IADA,IAAIvoB,EAAa75K,EAAKgjK,GACbnjH,EAAI,EAAGA,EAAIw5H,EAAah2L,OAAQw8D,IAChC,eAAkBg6H,IAAgBv5K,MAAMu5K,GAKnCuoB,IACNA,GAAU,GALNvoB,GAAcR,EAAax5H,GAAGmkF,MAAQ61C,GAAcR,EAAax5H,GAAG25H,KACpE4oB,GAAU,GAOjBA,GACDD,EAAWpzM,KAAKhJ,EAAM47M,cAAcp+B,EAAYpE,EAAWn/J,EAAMwoK,EAAUS,EAAWR,EAAcoR,OAIhH4W,EAAc,eAAkBz9H,EAASpoC,OAA0B,SAAjBooC,EAASpoC,MAC3D,IAAIy3K,EAA+D,mBAAnDlgN,OAAOS,UAAU0R,SAAStO,KAAKgtE,EAAS36D,OAClD26D,EAAS36D,MAAM,GAAK26D,EAAS36D,MAC/BiqM,EAAgBD,EAEpB98E,EAAOg8E,gCAAgC9Q,EAAY6R,EAAeH,EAAYnvI,EAASkuI,iBA/EnD,CACpCzQ,EAAc,eAAkBz9H,EAASpoC,OAA0BooC,EAAStzD,MAA1BszD,EAASpoC,MAC3Dq3K,EAAY,GACZ,IAAIM,GAAsB,EAE1BjgN,MAAMM,UAAU+uF,QAAQ3rF,KAAK8b,GAAY,SAAU9B,EAAMm/J,GACrD,IAAI+Z,EAAelW,EAAet8K,QAAQ,MAAQ,EAAM07K,GAAmBpiK,EAAMgjK,GAC5EhjK,EAAKgjK,GACNkW,IAAelmH,EAAStzD,OACxB6iM,GAAsB,GACmB,IAArCP,EAAYt7M,QAAQwyL,IACpB8oB,EAAYjzM,KAAKmqL,GAErB+oB,EAAUlzM,KAAKhJ,EAAM47M,cAAcp+B,EAAYpE,EAAWn/J,EAAMwoK,EAAUS,EAAWR,EAAcyQ,MAGrD,IAA1CgpB,EAAiBx7M,QAAQwyL,IACzBgpB,EAAiBnzM,KAAKmqL,MAIlC,IAAK,IAAIxwL,EAAI,EAAGA,EAAIs5M,EAAY3+M,OAAQqF,IACpC,IAAK,IAAIC,EAAI,EAAGA,EAAIu5M,EAAiB7+M,OAAQsF,IACzC,GAAIq5M,EAAYt5M,KAAOw5M,EAAiBv5M,GAAI,CACxC,IAAI65M,EAAaN,EAAiBx7M,QAAQs7M,EAAYt5M,IACtDw5M,EAAiB9yM,OAAOozM,EAAY,GAI3CD,GACDN,EAAUlzM,KAAK,CACXw0K,WAAYA,EAAYoK,WAAY,KAAMxO,UAAW,KACrDzsK,KAAM,KAAMgN,MAAO,OAG3B,IAAI0hM,EAAc,cAAD,CAAmBt+L,GAA4D,mBAAnD3gB,OAAOS,UAAU0R,SAAStO,KAAKgtE,EAAS36D,OAC/E26D,EAAS36D,MAAM,GAAK26D,EAAS36D,MAAQyK,EAE3CyiH,EAAOg8E,gCAAgC9Q,EAAY2Q,EAAYa,EAAWjvI,EAASkuI,cA4CvF37E,EAAS7iI,KACJ6N,EAAK,EAAGkyM,EAAiBppB,EAAc9oL,EAAKkyM,EAAep/M,OAAQkN,IAAM,CAC9E,IAAIyiE,EAAWyvI,EAAelyM,GAC9B+yF,EAAQtwB,KAGhB4jI,EAAOh0M,UAAU+3M,wBAA0B,SAE3Cp3B,EAAY0F,EAAWoQ,EAAcv3K,EAAY0mK,EAAUxF,EAAgByF,GACvE,IACIgoB,EADA1qM,EAAQrD,KAERogB,EAAOpgB,KAAK45K,KAAKp7I,eAAepe,KAChCm2K,EAAYv2L,KAAK45K,KAAKp7I,eAAe+3J,UACpC,eAAkBjW,IAAoB,eAAkBlhK,IAEzDxf,MAAMM,UAAU+uF,QAAQ3rF,KAAK8b,GAAY,SAAU9B,EAAMm/J,GACrD,IAAI+hC,IAAa,eAAkBn7M,EAAMu2K,KAAKp7I,eAAeigL,kBAClD,eAAkBnhM,EAAKja,EAAMu2K,KAAKp7I,eAAeigL,kBAChDnhM,EAAKja,EAAMu2K,KAAKp7I,eAAeigL,gBACvC/tL,EAAc4vJ,EAAet8K,QAAQ,MAAQ,EAAM07K,GAAmBpiK,EAAMgjK,GAC3EhjK,EAAKgjK,GAENge,EAAU,GACVogB,EAAc,cAAD,CAAmBt+L,GAASsQ,EAAYtQ,EACpD,eAAkBsQ,IAAsC,IAAxBimK,EAAah2L,SAC9CotM,EAAc,eAAkBzwL,EAAKi5K,IAC0BzQ,EAAS9hL,QAAQ,MAAQ,EACpF07K,GAAmBpiK,EAAMwoK,GAAYxoK,EAAKwoK,GAFOyQ,EAAUvyL,QAAQ,MAAQ,EAC3E07K,GAAmBpiK,EAAMi5K,GAAaj5K,EAAKi5K,GAE/C+H,EAAQjyL,KAAKhJ,EAAM47M,cAAcp+B,EAAYpE,EAAWn/J,EAAMwoK,EAAUS,EAAWR,EAAcr1J,KAErGrtB,EAAMw7M,gCAAgC9Q,EAAY2Q,EAAYpgB,EAASkgB,OAInFtK,EAAOh0M,UAAU8/M,mBAAqB,SAAU7yM,GAC5C,IAAI7M,EAAS6M,EAAE7M,OACXyqE,EAAS/qE,KAAK45K,KAAKp7I,eACnBlzB,EAAKtL,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAC5B20M,EAA0B,WAAhBl1I,EAAOv8D,KAAoB,eAAkC,YAAhBu8D,EAAOv8D,KAAsB,gBACpF,gBACJ,GAAIlO,EAAOgL,GAAGtH,QAAQi8M,GAAW,EAAG,CAChC,IAAIp/B,EAAa/5K,WAAWxG,EAAOgL,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IACtEw4K,EAAY31K,WAAWxG,EAAOgL,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IACrEmc,OAAO,EACP25D,OAAS,EACT6+H,OAAc,EACZ,cAAD,CAAmB1sM,GAAcZ,EAAItL,KAAK45K,KAAKx2K,QAAQkI,MACxD,gBAAOY,GAAcZ,EAAItL,KAAK45K,KAAKx2K,QAAQkI,KAE/C,IAAIyvK,EAAQ/6K,KAAK45K,KAAKsR,iBAAiBrK,GACnCq/B,EAAiC,WAAhBn1I,EAAOv8D,KAAoBusK,EAAMpkK,QAClC,YAAhBo0D,EAAOv8D,KAAqBusK,EAAMyH,eAAe17K,WAAWxG,EAAOgL,GAAGrH,MAAM,iBAAiB,GAAGA,MAAM,KAAK,KAAK0S,QAC3G3W,KAAK45K,KAAKm3B,iBAAiB/wM,KAAK45K,KAAKsR,iBAAiBrK,IAC/D,GAAI91G,EAAOp0D,SAAW3W,KAAK20M,2BAA2Bh0M,OAAS,GACxC,gBAAhBoqE,EAAOttD,MAA0ByiM,EAEpC,IADA,IAAIpkK,EAAU97C,KAAK45K,KAAK10I,UAAU99B,wBACzBpG,EAAI,EAAGA,EAAIhB,KAAK+xE,iBAAiBpxE,OAAQK,IAAK,CAEnD,IAAIm/M,EAAcngN,KAAK+xE,iBAAiB/wE,GACpC8kD,EAAgB55C,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmBtK,EAAGhB,KAAK45K,KAAKx2K,QAAQkI,IAC7FwsM,EAAahyJ,EAAc1+C,wBAC3BonB,EAAO,IAAIkwD,GAAKv1E,KAAK6a,IAAI8zL,EAAW9yM,KAAO82C,EAAQ92C,MAAOmE,KAAK6a,IAAI8zL,EAAW/yM,IAAM+2C,EAAQ/2C,KAAM+yM,EAAWxyM,MAAOwyM,EAAWzyM,QAInI,GAHA+a,EAAO0lC,EAAcp7C,aAAa,QAClCqvE,EAAShP,EAAOoqI,YAAYx/L,MAC5BijM,EAAc7tI,EAAOoqI,YAAY7vM,OAC5B,eAAkB66M,EAAY,SAG/B,IADA,IAAI7iM,EAAO6iM,EAAY,QACdt8L,EAAI,EAAGA,EAAIvG,EAAK3c,OAAQkjB,IAC7B,GAAI44J,IAAcn/J,EAAKuG,GAAG,cAAgBg9J,IAAevjK,EAAKuG,GAAG,cAAe,CAC5E7jB,KAAKogN,yBAAyBr1I,EAAQ3qD,EAAM25D,EAAQzuE,EAAIstM,EAAapqL,GACrE,aAQd,cAAD,CAAmBtiB,GAAcZ,EAAItL,KAAK45K,KAAKx2K,QAAQkI,MACxD,gBAAOY,GAAcZ,EAAItL,KAAK45K,KAAKx2K,QAAQkI,MAIvD4oM,EAAOh0M,UAAUkgN,yBAA2B,SAAUr1I,EAAQ3qD,EAAM25D,EAAQzuE,EAAIstM,EAAapqL,GACzF,IAAIooD,EACA2I,EACAC,EACAn6E,EAAS,GACTC,EAAQ,GACRgxB,EAAoC,SAAvBy0C,EAAO7pC,YAA+C,QAApB6pC,EAAOhnE,UAA0C,WAApBgnE,EAAOhnE,SACjF,aAAe,WAAagnE,EAAO7pC,YACzC1S,EAAKvoB,EAAwB,UAApB8kE,EAAOhnE,UAAwB/D,KAAK45K,KAAKoI,UAAYxzJ,EAAKvoB,EAAIjG,KAAK45K,KAAKwB,YAAYn1K,EAAIuoB,EAAKvoB,EACpF,eAAdqwB,EACKy0C,EAAOs1I,iBAOR9gI,EAAO/wD,EAAKxoB,EAAKwoB,EAAKlpB,MAAQ,GAA0B,UAApBylE,EAAOhnE,UAAwB/D,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAKwB,YAAYp1K,EAAI,GACnHw5E,EAAOhxD,EAAKvoB,EAAKuoB,EAAW,OAC5BooD,EAAO,MAAQ2I,EAAO,IAAMC,EAAO,OAASD,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GACtE,OAASk6E,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GAAU,QATrDk6E,EAAO/wD,EAAKxoB,EAAKwoB,EAAKlpB,MAAQ,GAA0B,UAApBylE,EAAOhnE,UAAwB/D,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAKwB,YAAYp1K,EAAI,GACnHw5E,EAAOhxD,EAAKvoB,EACZ2wE,EAAO,MAAQ2I,EAAO,IAAMC,EAAO,OAASD,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GACtE,OAASk6E,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GAAU,OAUpD0lE,EAAOs1I,iBAOR9gI,EAAO/wD,EAAKxoB,GAAyB,UAApB+kE,EAAOhnE,UAAwB/D,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAKwB,YAAYp1K,EAAI,GAChGw5E,EAAOhxD,EAAKvoB,EAAKuoB,EAAKnpB,OAAS,EAC/BuxE,EAAO,MAAQ2I,EAAO,IAAMC,EAAO,OAASD,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GACtE,OAASk6E,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GAAU,QATrDk6E,EAAO/wD,EAAKxoB,EAAIwoB,EAAKlpB,OAA6B,UAApBylE,EAAOhnE,UAAwB/D,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAKwB,YAAYp1K,EAAI,GAC7Gw5E,EAAOhxD,EAAKvoB,EAAKuoB,EAAKnpB,OAAS,EAC/BuxE,EAAO,MAAQ2I,EAAO,IAAMC,EAAO,OAASD,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GACtE,OAASk6E,EAAOj6E,GAAS,KAAOk6E,EAAOn6E,GAAU,OAS7D,IAAI66K,EAAc,IAAIvgG,GAAWr0E,EAAI8U,EAAMw4L,EAAa7+H,EAAQ,EAAG,EAAG,GAAInD,GAClD,UAApB7L,EAAOhnE,UAAwB/D,KAAK45K,KAAKoI,UACzChiL,KAAK45K,KAAKqI,cAAc+W,WAAWt0L,YAAY1E,KAAK45K,KAAKt0J,SAASkhB,SAAS05I,IAG3ElgL,KAAK45K,KAAK10I,UAAUxgC,YAAY1E,KAAK45K,KAAKt0J,SAASkhB,SAAS05I,KAGpEg0B,EAAOh0M,UAAU0T,WAAa,SAAUxQ,GACpC,OAAa0I,IAAI1I,EAAS,OAAQ2I,gBAAiB/L,KAAKm+M,eAAgBn+M,OAE5Ek0M,EAAOh0M,UAAU6oB,iBAAmB,WAC5B/oB,KAAK45K,KAAK5wJ,cAGdhpB,KAAK45K,KAAKzwJ,GAAG,OAAQG,eAAgBtpB,KAAKggN,mBAAoBhgN,MAC9DA,KAAK45K,KAAKzwJ,GAAG,OAAQ7U,cAAetU,KAAKggN,mBAAoBhgN,MAC7DA,KAAK45K,KAAKzwJ,GAAGk+B,EAAOrnD,KAAKitF,YAAajtF,QAE1Ck0M,EAAOh0M,UAAUogN,sBAAwB,SAAUC,EAAY1/B,EAAYroI,EAAaw2B,GACpFuxI,EAAW51M,aAAa,OAAQ3K,KAAK+xE,iBAAiB/C,GAAa,SACnEuxI,EAAW51M,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAAapzB,OAAOzP,OAClG4qM,EAAW51M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAAoB,QAAE5mC,YAC3G2uM,EAAW51M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAAapzB,OAAY,MAAExT,YAChH2uM,EAAW51M,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAAapzB,OAAOouB,SACzHxzC,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAAahF,QACzDxzC,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAAapzB,OAAOouB,SAAS5hC,aAEjFsiM,EAAOh0M,UAAUsgN,sBAAwB,SAAUD,EAAY1/B,EAAYud,EAAapvH,GACpFuxI,EAAW51M,aAAa,OAAQ3K,KAAK+xE,iBAAiB/C,GAAa,SACnEuxI,EAAW51M,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAO3C,GAAY+a,eAAewC,GAAah5K,OAAOzP,OAClG4qM,EAAW51M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAO3C,GAAY+a,eAAewC,GAAoB,QAAExsL,YAC3G2uM,EAAW51M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAO3C,GAAY+a,eAAewC,GAAah5K,OAAY,MAAExT,YAChH2uM,EAAW51M,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAO3C,GAAY+a,eAAewC,GAAah5K,OAAOouB,SACzHxzC,KAAK45K,KAAK4J,OAAO3C,GAAY+a,eAAewC,GAAa5qJ,QACzDxzC,KAAK45K,KAAK4J,OAAO3C,GAAY+a,eAAewC,GAAah5K,OAAOouB,SAAS5hC,aAEjFsiM,EAAOh0M,UAAU+sF,YAAc,SAAUs+F,GACrC,IAAIwyB,EACAD,EACA2C,EAAmBzgN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBp9K,KACjEsgM,EAAsB1gN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBhqJ,QACpEmtK,EAA0B3gN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBp4K,OAAOzP,MAC/EirM,EAA0B5gN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBp4K,OAAO9f,MAC/Eu7M,EAA4B,eAAkB7gN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBp4K,OAAOouB,SACnGxzC,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBhqJ,QAAUxzC,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBp4K,OAAOouB,QACjH,IAAK,eAAkB+3I,EAAU/5I,aAAe+5I,EAAU/5I,WAAW,MAAMxtC,QAAQhE,KAAK45K,KAAKx2K,QAAQkI,GAAK,mBAAqB,EAAG,CAC9H,IAAIi1M,OAAa,EACbvxI,EAAcloE,WAAWykL,EAAU71I,cAAcpqC,GAAGwyF,QAAQ99F,KAAK45K,KAAKx2K,QAAQkI,GAAK,kBAAkB3K,SAErGmgN,EAAe9gN,KAAK+xE,iBAAiB/C,GAAa,QAClDohI,EAAY0Q,EAAa,cAEzBh1L,OAAQ,EACZ,GAAI9rB,KAAK45K,KAAKp7I,eAAeg/J,qBAAqB/2K,SAA6C,YAAlCzmB,KAAK45K,KAAKp7I,eAAehwB,MAAwD,YAAlCxO,KAAK45K,KAAKp7I,eAAehwB,MACjI,IAAK,IAAIgV,EAAI,EAAGA,EAAIxjB,KAAK45K,KAAK4J,OAAO7iL,OAAQ6iB,IACzC,IAAK,IAAIK,EAAI,EAAGA,GAAuC,YAAlC7jB,KAAK45K,KAAKp7I,eAAehwB,KAAqBxO,KAAK45K,KAAK4J,OAAOhgK,GAAGo4K,eAAej7L,OAASX,KAAK45K,KAAK4J,OAAOhgK,GAAGg/J,eAAe7hL,QAASkjB,IAAK,CAC5J,IAAK,IAAI7iB,EAAI,EAAGA,EAAI8/M,EAAangN,OAAQK,IACrC8qB,EAAQ9rB,KAAK+xE,iBAAiB/C,GAAa,QAAQhuE,GACnDu/M,EAA+C,YAAlCvgN,KAAK45K,KAAKp7I,eAAehwB,KAAqBtC,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBwgB,EAAM,cACnH,gBAAkBjI,EAAI,cAAgBiI,EAAM,aAAc9rB,KAAK45K,KAAKx2K,QAAQkI,IAAMY,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBwgB,EAAM,cAC9I,gBAAkBA,EAAM,eAAiB,cAAgBA,EAAM,aAAc9rB,KAAK45K,KAAKx2K,QAAQkI,IAC9F,eAAkBwgB,EAAM,WAAgC,YAAnBA,EAAM,WAC5Cy0L,EAA+C,YAAlCvgN,KAAK45K,KAAKp7I,eAAehwB,KAAqBtC,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBwgB,EAAM,cACnH,gBAAkBjI,EAAI,cAAgBiI,EAAM,aAAe,SAAU9rB,KAAK45K,KAAKx2K,QAAQkI,IAAMY,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBwgB,EAAM,cACzJ,gBAAkBA,EAAM,eAAiB,cAAgBA,EAAM,aAAe,SAAU9rB,KAAK45K,KAAKx2K,QAAQkI,IAC9Gi1M,EAAaA,EAAWt6J,SAAS,IAEjCmqJ,GAA4B,OAAfmQ,GACTvgN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,oBAC9C8iB,EAAW51M,aAAa,OAAQ3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAch4J,MAClEmgM,EAAW51M,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOzP,OAC3E4qM,EAAW51M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAqB,QAAExmK,YACpF2uM,EAAW51M,aAAa,gBAAiB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAOsM,YACjK2uM,EAAW51M,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAClGxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAClCxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAS5hC,cAGtD2uM,EAAW51M,aAAa,OAAQ81M,GAChCF,EAAW51M,aAAa,eAAgB,EAAsBiH,YAC9D2uM,EAAW51M,aAAa,SAAUg2M,GAClCJ,EAAW51M,aAAa,eAAgB,EAA0BiH,YAClE2uM,EAAW51M,aAAa,iBAAkB,EAA4BiH,aAExD,OAAd25K,IACAwyB,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAC7GwyM,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAwB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IACtGtL,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,mBAI/Cz9L,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAch4J,KAAMpgB,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAASxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOzP,MAAO,eAAkB3V,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,MAAO,eAAkBtF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAWxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAAUxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,QAASxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAch4J,MAHvfpgB,KAAK+gN,oBAAoBjD,EAAcC,EAAe0C,EAAkBC,EAAqBC,EAAyBC,EAAyBC,EAA2BJ,MAQ5I,YAAlCzgN,KAAK45K,KAAKp7I,eAAehwB,KACzBxO,KAAKsgN,sBAAsBC,EAAY/8L,EAAGK,EAAGmrD,GAG7ChvE,KAAKwgN,sBAAsBD,EAAY/8L,EAAGK,EAAGmrD,GAE/B,OAAdu8G,IACAwyB,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAC7GwyM,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAwB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAC3GtL,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK+xE,iBAAiB/C,GAAa,QAAShvE,KAAK+xE,iBAAiB/C,GAAa,WAAYhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,SAAUhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,SAAUhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,WAAY,WAChS,mBAAnChvE,KAAK45K,KAAKp7I,eAAe1S,OAAiE,iBAAnC9rB,KAAK45K,KAAKp7I,eAAe1S,OAA+D,UAAnC9rB,KAAK45K,KAAKp7I,eAAe1S,OACrIiyL,EAAcpzM,aAAa,SAAU3K,KAAK+xE,iBAAiB/C,GAAa,WAKxF8xI,EAAa,eAAgB1Q,EAIzC,GAAsC,WAAlCpwM,KAAK45K,KAAKp7I,eAAehwB,MAAqBxO,KAAK45K,KAAKp7I,eAAeg/J,qBAAqB/2K,OAAQ,CACpG,IAAIq6J,OAAe,EACnB9gL,KAAKghN,kBAAkBz1B,EAAWv8G,GAClC,IAAIiyI,EAAuBjhN,KAAK45K,KAAKwqB,gBAAgBpgM,QAAQgrE,IAC/B,IAA1BiyI,IACA7Q,GAAY,GAEhB,IAASvsL,EAAI,EAAGA,EAAI7jB,KAAK45K,KAAK4J,OAAO7iL,OAAQkjB,IACzC,IAAS7iB,EAAI,EAAGA,EAAI8/M,EAAangN,OAAQK,IAIrC,GAHA8qB,EAAQ9rB,KAAK+xE,iBAAiB/C,GAAa,QAAQhuE,GACnD8/K,EAAe50K,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBwgB,EAAM,cACvE,eAAiBA,EAAM,cAAgB,cAAgBA,EAAM,aAAc9rB,KAAK45K,KAAKx2K,QAAQkI,IAC5E,OAAjBw1K,EAAuB,CACvB,IAAIogC,EAAsBlhN,KAAK45K,KAAK0jB,sBAAsBt5L,QAAQ88K,EAAax1K,IAC3E8kM,GACU,IAANpvM,GACAhB,KAAK45K,KAAKwqB,gBAAgB/3L,KAAK2iE,IAEN,IAAzBkyI,GACAlhN,KAAK45K,KAAK0jB,sBAAsBjxL,KAAKy0K,EAAax1K,IAElDtL,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,oBAC9C3c,EAAan2K,aAAa,OAAQ3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAch4J,MACpE0gK,EAAan2K,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAqB,QAAExmK,YACtFkvK,EAAan2K,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOzP,OAC7EmrK,EAAan2K,aAAa,gBAAiB,eAAkB3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAO9f,OAAOsM,YACnKkvK,EAAan2K,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOouB,SACpGxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAc5kI,QAClCxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOouB,SAAS5hC,cAGtDkvK,EAAan2K,aAAa,OAAQ81M,GAClC3/B,EAAan2K,aAAa,eAAgB,EAAsBiH,YAChEkvK,EAAan2K,aAAa,SAAUg2M,GACpC7/B,EAAan2K,aAAa,eAAgB,EAA0BiH,YACpEkvK,EAAan2K,aAAa,iBAAkB,EAA4BiH,aAE1D,OAAd25K,IACAuyB,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAwB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAC3GyyM,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IACxGtL,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,mBAI/Cz9L,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAch4J,KAAMpgB,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAc5kI,QAASxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOzP,MAAO,eAAkB3V,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAO9f,MAAO,eAAkBtF,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOouB,SAAWxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAc5kI,QAAUxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOouB,QAASxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAch4J,MAHvfpgB,KAAK+gN,oBAAoBjD,EAAcC,EAAe0C,EAAkBC,EAAqBC,EAAyBC,EAAyBC,EAA2BJ,OAQpJ,IAA1BQ,GAAqC,IAANjgN,GAC/BhB,KAAK45K,KAAKwqB,gBAAgB13L,OAAOu0M,EAAsB,IAE9B,IAAzBC,GACAlhN,KAAK45K,KAAK0jB,sBAAsB5wL,OAAOw0M,EAAqB,GAEhEpgC,EAAan2K,aAAa,OAAQ3K,KAAK+xE,iBAAiB/C,GAAa,SACrE8xG,EAAan2K,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOouB,SACpGxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAc5kI,QAClCxzC,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOouB,SAAS5hC,YACtDkvK,EAAan2K,aAAa,gBAAiB,eAAkB3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAO9f,OAAOsM,YACnKkvK,EAAan2K,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAqB,QAAExmK,YACtFkvK,EAAan2K,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAO3/J,GAAGu0J,cAAchzJ,OAAOzP,OAC3D,OAAd41K,IACAuyB,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAwB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAC3GyyM,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,uBAAyB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAC7GtL,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK+xE,iBAAiB/C,GAAa,QAAShvE,KAAK+xE,iBAAiB/C,GAAa,WAAYhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,SAAUhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,SAAUhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,WAAY,aAM3V8xI,EAAa,eAAgB1Q,QAGhC,IAAK,eAAkB7kB,EAAUjgL,MAAQigL,EAAUjgL,GAAGtH,QAAQhE,KAAK45K,KAAKx2K,QAAQkI,GAAK,wBAA0B,IAC9C,IAAlEigL,EAAUjgL,GAAGtH,QAAQhE,KAAK45K,KAAKx2K,QAAQkI,GAAK,mBAA4BtL,KAAK45K,KAAKp7I,eAAe7nB,UAC9D,IAAnC40K,EAAUjgL,GAAGtH,QAAQ,SAAiB,CACtC,IAAIm9M,OAAoB,EAGpBC,GAFApyI,EAAcloE,WAAWykL,EAAUjgL,GAAGrH,MAAMjE,KAAK45K,KAAKx2K,QAAQkI,GAAK,kBAAkB,SAE3E,GAEVw1M,EAAe9gN,KAAK+xE,iBAAiB/C,GAAa,QAClDohI,EAAY0Q,EAAa,cAC7B,IAAuC,YAAlC9gN,KAAK45K,KAAKp7I,eAAehwB,MAAwD,YAAlCxO,KAAK45K,KAAKp7I,eAAehwB,OAAuBxO,KAAK45K,KAAKp7I,eAAeg/J,qBAAqB/2K,OAC9I,IAASjD,EAAI,EAAGA,EAAIxjB,KAAK45K,KAAK4J,OAAO7iL,OAAQ6iB,IACzC,IAASK,EAAI,EAAGA,GAAuC,YAAlC7jB,KAAK45K,KAAKp7I,eAAehwB,KAAqBxO,KAAK45K,KAAK4J,OAAOhgK,GAAGo4K,eAAej7L,OAASX,KAAK45K,KAAK4J,OAAOhgK,GAAGg/J,eAAe7hL,QAASkjB,IAAK,CAC5J,IAAS7iB,EAAI,EAAGA,EAAI8/M,EAAangN,OAAQK,IACrCogN,EAAUphN,KAAK+xE,iBAAiB/C,GAAa,QAAQhuE,GACrDmgN,EAAsD,YAAlCnhN,KAAK45K,KAAKp7I,eAAehwB,KAAqBtC,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiB81M,EAAQ,cAC5H,gBAAkBv9L,EAAI,cAAgBu9L,EAAQ,aAAcphN,KAAK45K,KAAKx2K,QAAQkI,IAAMY,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiB81M,EAAQ,cAClJ,gBAAkBv9L,EAAI,cAAgBu9L,EAAQ,aAAcphN,KAAK45K,KAAKx2K,QAAQkI,IAC7E,eAAkB81M,EAAQ,WAAkC,YAArBA,EAAQ,WAChDD,EAAsD,YAAlCnhN,KAAK45K,KAAKp7I,eAAehwB,KAAqBtC,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiB81M,EAAQ,cAC5H,gBAAkBv9L,EAAI,cAAgBu9L,EAAQ,aAAe,SAAUphN,KAAK45K,KAAKx2K,QAAQkI,IAAMY,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiB81M,EAAQ,cAC7J,gBAAkBv9L,EAAI,cAAgBu9L,EAAQ,aAAe,SAAUphN,KAAK45K,KAAKx2K,QAAQkI,IAC7F61M,EAAoBA,EAAkBl7J,SAAS,IAE/CmqJ,GAAmC,OAAtB+Q,GACTnhN,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,oBAC9C0jB,EAAkBx2M,aAAa,OAAQ3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAch4J,MACzE+gM,EAAkBx2M,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOzP,OAClFwrM,EAAkBx2M,aAAa,gBAAiB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAOsM,YACxKuvM,EAAkBx2M,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SACzGxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAClCxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAS5hC,YACtDuvM,EAAkBx2M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAqB,QAAExmK,cAG3FuvM,EAAkBx2M,aAAa,OAAQ81M,GACvCU,EAAkBx2M,aAAa,eAAgB,EAAsBiH,YACrEuvM,EAAkBx2M,aAAa,SAAUg2M,GACzCQ,EAAkBx2M,aAAa,eAAgB,EAA0BiH,YACzEuvM,EAAkBx2M,aAAa,iBAAkB,EAA4BiH,aAE/D,OAAd25K,IACAuyB,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAc,QAAShvE,KAAK45K,KAAKx2K,QAAQkI,IAChHyyM,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IAClGtL,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,mBAI/Cz9L,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAch4J,KAAMpgB,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAASxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOzP,MAAQ,eAAkB3V,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,MAAS,eAAkBtF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAWxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAAUxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,QAAUxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAch4J,MAH3fpgB,KAAK+gN,oBAAoBjD,EAAcC,EAAe0C,EAAkBC,EAAqBC,EAAyBC,EAAyBC,EAA2BJ,MAQ5I,YAAlCzgN,KAAK45K,KAAKp7I,eAAehwB,KACzBxO,KAAKsgN,sBAAsBa,EAAmB39L,EAAGK,EAAGmrD,GAGpDhvE,KAAKwgN,sBAAsBW,EAAmB39L,EAAGK,EAAGmrD,GAEtC,OAAdu8G,IACAwyB,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IACvGyyM,EAAcpzM,aAAa,OAAQ3K,KAAK+xE,iBAAiB/C,GAAa,SACtE+uI,EAAcpzM,aAAa,eAAgB3K,KAAK+xE,iBAAiB/C,GAAa,YAC9E+uI,EAAcpzM,aAAa,SAAU3K,KAAK+xE,iBAAiB/C,GAAa,eAAe,UACvF+uI,EAAcpzM,aAAa,eAAgB3K,KAAK+xE,iBAAiB/C,GAAa,eAAe,UAC7F+uI,EAAcpzM,aAAa,iBAAkB3K,KAAK+xE,iBAAiB/C,GAAa,eAAe,YAC/F8uI,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAc,QAAShvE,KAAK45K,KAAKx2K,QAAQkI,IAChHwyM,EAAanzM,aAAa,OAAQ,aAI9Cm2M,EAAa,eAAgB1Q,EAIzC,GAAsC,WAAlCpwM,KAAK45K,KAAKp7I,eAAehwB,MAAqBxO,KAAK45K,KAAKp7I,eAAeg/J,qBAAqB/2K,OAAQ,CACpG,IAAI46L,OAAmB,EACvBrhN,KAAKghN,kBAAkBz1B,EAAWv8G,GAClC,IAAIsyI,EAAsBthN,KAAK45K,KAAKwqB,gBAAgBpgM,QAAQgrE,IAC/B,IAAzBsyI,IACAlR,GAAY,GAEhB,IAAS5sL,EAAI,EAAGA,EAAIxjB,KAAK45K,KAAK4J,OAAO7iL,OAAQ6iB,IACzC,IAASxiB,EAAI,EAAGA,EAAI8/M,EAAangN,OAAQK,IAIrC,GAHAogN,EAAUphN,KAAK+xE,iBAAiB/C,GAAa,QAAQhuE,GACrDqgN,EAAmBn1M,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiB81M,EAAQ,cAC7E,eAAiBA,EAAQ,cAAgB,cAAgBA,EAAQ,aAAcphN,KAAK45K,KAAKx2K,QAAQkI,IAC5E,OAArB+1M,EAA2B,CACvBH,EAAsBlhN,KAAK45K,KAAK0jB,sBAAsBt5L,QAAQq9M,EAAiB/1M,IAC/E8kM,GACU,IAANpvM,GACAhB,KAAK45K,KAAKwqB,gBAAgB/3L,KAAK2iE,IAEN,IAAzBkyI,GACAlhN,KAAK45K,KAAK0jB,sBAAsBjxL,KAAKg1M,EAAiB/1M,IAEtDtL,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,oBAC9C4jB,EAAiB12M,aAAa,OAAQ3K,KAAK45K,KAAK4J,OAAO,GAAGpL,cAAch4J,MACxEihM,EAAiB12M,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAO,GAAGpL,cAAchzJ,OAAOzP,OACjF0rM,EAAiB12M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAqB,QAAExmK,YAC1FyvM,EAAiB12M,aAAa,gBAAiB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAOsM,YACvKyvM,EAAiB12M,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SACxGxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAClCxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAS5hC,cAGtDyvM,EAAiB12M,aAAa,OAAQ81M,GACtCY,EAAiB12M,aAAa,eAAgB,EAAsBiH,YACpEyvM,EAAiB12M,aAAa,SAAUg2M,GACxCU,EAAiB12M,aAAa,eAAgB,EAA0BiH,YACxEyvM,EAAiB12M,aAAa,iBAAkB,EAA4BiH,aAE9D,OAAd25K,IACAwyB,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IACvGwyM,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAc,QAAShvE,KAAK45K,KAAKx2K,QAAQkI,IAC3GtL,KAAK45K,KAAKp7I,eAAeg/J,qBAAqBC,mBAI/Cz9L,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK45K,KAAK4J,OAAO,GAAGpL,cAAch4J,KAAMpgB,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAASxzC,KAAK45K,KAAK4J,OAAO,GAAGpL,cAAchzJ,OAAOzP,MAAO,eAAkB3V,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAAItF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,MAAO,eAAkBtF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAWxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAAUxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,QAASxzC,KAAK45K,KAAK4J,OAAO,GAAGpL,cAAch4J,MAHvfpgB,KAAK+gN,oBAAoBjD,EAAcC,EAAe0C,EAAkBC,EAAqBC,EAAyBC,EAAyBC,EAA2BJ,OAQrJ,IAAzBa,GAAoC,IAANtgN,GAC9BhB,KAAK45K,KAAKwqB,gBAAgB13L,OAAO40M,EAAqB,IAE7B,IAAzBJ,GACAlhN,KAAK45K,KAAK0jB,sBAAsB5wL,OAAOw0M,EAAqB,GAEhEG,EAAiB12M,aAAa,eAAiB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAqB,QAAExmK,YAC1FyvM,EAAiB12M,aAAa,gBAAiB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAS,EAC/GtF,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAO9f,OAAOsM,YACpDyvM,EAAiB12M,aAAa,SAAU3K,KAAK45K,KAAK4J,OAAO,GAAGpL,cAAchzJ,OAAOzP,OACjF0rM,EAAiB12M,aAAa,kBAAmB,eAAkB3K,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SACxGxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAc5kI,QAClCxzC,KAAK45K,KAAK4J,OAAOhgK,GAAG40J,cAAchzJ,OAAOouB,SAAS5hC,YACtDyvM,EAAiB12M,aAAa,OAAQ3K,KAAK+xE,iBAAiB/C,GAAa,SACvD,OAAdu8G,IACAuyB,EAAe5xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAc,QAAShvE,KAAK45K,KAAKx2K,QAAQkI,IAChHyyM,EAAgB7xM,GAAclM,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAmB0jE,EAAahvE,KAAK45K,KAAKx2K,QAAQkI,IACvGtL,KAAK+gN,oBAAoBjD,EAAcC,EAAe/9M,KAAK+xE,iBAAiB/C,GAAa,QAAShvE,KAAK+xE,iBAAiB/C,GAAa,WAAYhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,SAAUhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,SAAUhvE,KAAK+xE,iBAAiB/C,GAAa,eAAe,WAAY,aAM3V8xI,EAAa,eAAgB1Q,KAIzC8D,EAAOh0M,UAAU8gN,kBAAoB,SAAUz1B,EAAWv8G,GACtDhvE,KAAK66M,gCAAgCtvB,GACrC,IAAI4xB,EAAuBn9M,KAAK06M,iBAAiB16M,KAAK45K,KAAKsqB,0BAA2B3Y,IACxD,IAA1B4xB,GACAn9M,KAAK45K,KAAKsqB,0BAA0Bx3L,OAAOywM,EAAsB,GAErE,IAAIoE,EAAuBvhN,KAAK06M,iBAAiB16M,KAAKw0M,0BAA2BjpB,IACnD,IAA1Bg2B,GACAvhN,KAAKw0M,0BAA0B9nM,OAAOywM,EAAsB,GAEhE,IAAIqE,EAAsBxhN,KAAK06M,iBAAiB16M,KAAKu0M,yBAA0BhpB,IAClD,IAAzBi2B,GACAxhN,KAAKu0M,yBAAyB7nM,OAAO80M,EAAqB,GAE9D,IAAIvhD,EAAgBjgK,KAAK45K,KAAKqqB,wBAAwBjgM,QAAQgrE,IACvC,IAAnBixF,GACAjgK,KAAK45K,KAAKqqB,wBAAwBv3L,OAAOuzJ,EAAe,IAGhEi0C,EAAOh0M,UAAU0xC,oBAAsB,WAC/B5xC,KAAK45K,KAAK5wJ,cAGdhpB,KAAK45K,KAAK39I,IAAI,OAAQ3S,eAAgBtpB,KAAKggN,oBAC3ChgN,KAAK45K,KAAK39I,IAAI,OAAQ3nB,cAAetU,KAAKggN,oBAC1ChgN,KAAK45K,KAAK39I,IAAIorB,EAAOrnD,KAAKitF,eAE9BinH,EAAOh0M,UAAU++M,cAAgB,SAEjCp+B,EAAYpE,EAAWn/J,EAAMwoK,EAE7BS,EAAWrO,EAAmBl7J,GAI1B,IAAI8hM,EAAa,GACjB,GAAkD,mBAA9Cr/M,OAAOS,UAAU0R,SAAStO,KAAKijL,GAC/B,IAAK,IAAIvlL,EAAI,EAAGA,EAAIulL,EAAU5lL,OAAQK,IAAK,CAEvC,IAAIi3K,EAAYsO,EAAUvlL,GACtBygN,EAAiB37B,EAAS9hL,QAAQ,MAAQ,EAAK07K,GAAmBpiK,EAAMwoK,GAAYxoK,EAAKwoK,GACzFE,EAAYC,GAAkB3oK,EAAKwoK,GAAW5N,EAAmBD,EAAU,eAC3EypC,EAAqB,eAAkBD,IACd,kBAAlBA,EAA2DA,EAA9BA,EAAcl/L,cAClDo/L,GAAsB,eAAkB1pC,EAAU,cAAc+N,KAC7DpoK,MAAMq6J,EAAU,cAAc+N,IACjC/N,EAAU,cAAc+N,GAAWzjK,cAAgB01J,EAAU,cAAc+N,GAC/E,GAAI27B,IAAuBD,EACvB,GAAsC,eAAlCzpC,EAAU,YAAY,QACtB6mC,EAAWzyM,KAAK,CACZw0K,WAAYA,EAAYoK,WAAYjqL,EAAGy7K,UAAWA,EAClDzsK,KAAMsN,EAAKwoK,GAAW9oK,MAAOA,EAAOgQ,YAAa,SAIrD,IAAK,IAAInJ,EAAI,EAAGA,EAAIo0J,EAAU,YAAYomB,YAAY19L,OAAQkjB,IAC1Di7L,EAAWzyM,KAAK,CACZw0K,WAAYA,EAAYoK,WAAYjqL,EAAGy7K,UAAWA,EAClDzsK,KAAMsN,EAAKwoK,GAAW9oK,MAAOA,EAAOgQ,WAAYnJ,IAOxE,OAAOi7L,GAEX5K,EAAOh0M,UAAU6gN,oBAAsB,SAAU16L,EAAaE,EAAcw6B,EAAW88H,EAAa5qI,EAAa/lB,EAAa+yJ,EAAe2hC,GACzIv7L,EAAY1b,aAAa,OAAQi3M,GACjCr7L,EAAa5b,aAAa,OAAQo2C,GAClCx6B,EAAa5b,aAAa,eAAgB,EAAciH,YACxD2U,EAAa5b,aAAa,SAAUsoC,GACpC1sB,EAAa5b,aAAa,eAAgB,EAAciH,YACnD,eAAkBquK,IACnB15J,EAAa5b,aAAa,iBAAkB,EAAgBiH,aAGpEsiM,EAAOh0M,UAAUg/M,oBAAsB,SAAU5uI,EAAUtB,GACvD,IAAI6yI,EACAhyI,EAAQ,6BACZ,IAAK,eAAkBS,EAAS36D,QAAsC,kBAApB26D,EAAc,MAAgB,CAC5E,IAAIJ,EAAmBtiE,SAASuiE,gBAAgBN,EAAO,kBACnDr8B,EAAU,EACVzvC,EAAW/D,KAAK45K,KAAKp7I,eAAez6B,SACpC0hC,EAAkB,QAAb1hC,GAAmC,WAAbA,EAAwB,MAAQ,IAC3D4hC,EAAkB,QAAb5hC,GAAmC,WAAbA,EAAwB,IAAM,MAC7DmsE,EAAiBvlE,aAAa,KAAM,UAAYqkE,EAAc,IAAMhvE,KAAK45K,KAAKx2K,QAAQkI,IACtF4kE,EAAiBvlE,aAAa,KAAM,MACpCulE,EAAiBvlE,aAAa,KAAM,MACpCulE,EAAiBvlE,aAAa,KAAM86B,EAAK,KACzCyqC,EAAiBvlE,aAAa,KAAMg7B,EAAK,KACzC,IAAK,IAAInmC,EAAI,EAAGA,EAAI8wE,EAAS36D,MAAMhV,OAAQnB,IAAK,CAC5C,IAAIsiN,EAAc,KAAOxxI,EAAS36D,MAAMhV,OAAS,GAC7CiwE,EAAUhjE,SAASuiE,gBAAgBN,EAAO,QAC9Ce,EAAQjmE,aAAa,SAAUnL,EAAIsiN,EAAc,KACjDlxI,EAAQjmE,aAAa,aAAc2lE,EAAS36D,MAAMnW,IAClDoxE,EAAQjmE,aAAa,eAAgB6oC,EAAQ5hC,YAC7Cs+D,EAAiBxrE,YAAYksE,GAEjC5wE,KAAK+hN,qBAAuB7xI,EAC5B,IAAIv6D,EAAQ,eAAsBq5D,EAAc,IAAMhvE,KAAK45K,KAAKx2K,QAAQkI,GAAK,IAC7EtL,KAAK40M,YAAYlwM,YAAYwrE,GAC7B2xI,EAAkBlsM,EAEtB,OAAOksM,GAOX3N,EAAOh0M,UAAU4U,cAAgB,WAC7B,MAAO,UAQXo/L,EAAOh0M,UAAUsS,QAAU,WACvBxS,KAAK+xE,iBAAmB,GACxB/xE,KAAK20M,2BAA6B,GAClC30M,KAAKk0E,UAAY,KACjBl0E,KAAKsnM,iBAAmB,KACxBtnM,KAAK2rM,mBAAqB,KAC1B3rM,KAAKunM,gBAAkB,KACvBvnM,KAAKouE,WAAa,GAClBpuE,KAAKm0M,eAAiB,KACtBn0M,KAAKguE,YAAc,KACnBhuE,KAAKu0M,yBAA2B,GAChCv0M,KAAKw0M,0BAA4B,GACjCx0M,KAAKy0M,mBAAqB,GAC1Bz0M,KAAK00M,wBAA0B,GAC/B10M,KAAK+hN,qBAAuB,KAC5B/hN,KAAKu8K,aAAe,KACpBv8K,KAAK40M,YAAc,KACnB50M,KAAK8lD,cAAgB,GACrB9lD,KAAK68M,gBAAkB,KACvB78M,KAAK4xC,sBACL5xC,KAAK45K,KAAO,MAETs6B,EArrEgB,GCAvB,GAAwB,WACxB,SAASj/J,EAAO2kI,GACZ55K,KAAK45K,KAAOA,EACZ55K,KAAKgiN,cAAgB,GACrBhiN,KAAKqjL,eAAiB,GAuf1B,OArfApuI,EAAO/0C,UAAU4mB,aAAe,SAAU8yJ,EAAMkH,EAAcD,EAAY/F,EAAQtsK,GAC9E,IAEI+tD,EAFAl5D,EAAQrD,KAGRiiN,EAAc,EACdC,EAAY,EACZC,EAAsB,EAC1BvoC,EAAKoP,cAAgB,SACrB,IAAIzM,EAAe3C,EAAKsR,iBAAiBrK,GACzC7gL,KAAKoiN,gBAAkBxoC,EAAKt0J,SAASY,YAAY,CAC7C5a,GAAIsuK,EAAKx2K,QAAQkI,GAAK,iBACtB07D,MAAO,iBAEXhnE,KAAKoiN,gBAAgBr7M,MAAMiqC,cAAgB,OAC3C,IAAIqxK,EAAoB,eAAc,MAAO,CACzC/2M,GAAIsuK,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,0BACpDr8K,UAAWo1K,EAAKx2K,QAAQkI,GAAK,cAEjC+2M,EAAkBt7M,MAAMwsC,QAAU,iEACrBqmI,EAAKwB,YAAYn1K,EADI,WAEpB2zK,EAAKwB,YAAYp1K,EAFG,aAGlB4zK,EAAKwB,YAAY/1K,OAHC,YAInBu0K,EAAKwB,YAAY91K,MAAQ,MACxC,IAEIkkL,EAFA84B,EAAqD,IAAnC/lC,EAAa/pI,mBAA6C,WAAlB,QAA+B,eAAkBonI,EAAKl6I,YAG/Gk6I,EAAKoI,YACNwH,GAAkB,eAAkB5P,EAAKl6I,aAAek6I,EAAKj6I,aAAaI,WAAa,EACnF8pJ,GAAiBjQ,EAAM2C,EAAc+lC,GACrCvgC,GAAanI,EAAM2C,EAAc+lC,IAuFzC,IArFA,IAAInwK,EAAU,SAAUqG,GAiFpB,IAhFA,IAAIgqI,EAAiBjG,EAAaiG,eAAehqI,GAE7CgkI,EAAagG,EAAepjK,WAC5BwhF,EAAU,SAAU67E,GACpB,IAAIn/J,EAAOk/J,EAAWC,GACtB7C,EAAK2pB,gBAAkB/qJ,EAAc,GAAmB,IAAdikI,EAAkB,EAAI7C,EAAK2pB,gBACrE,IAAIhyI,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAM6oK,EAAiBz4J,KAAMoiK,EAAepiK,KAAM/a,OAAQm9K,EAAen9K,OACxFC,MAAOk9K,EAAel9K,MAAOouC,SAAU8uI,EAAe9uI,SAAU5nB,MAAO02J,EAAe12J,MACtFa,SAAU61J,EAAe71J,SAAUrP,KAAMA,EAAMs8J,KAAMA,EAAMljK,OAAQ8rK,EACnEp9J,OAAQo9J,EAAep9J,OAAQk7J,eAAgBkC,EAAelC,eAC9DE,eAAgBgC,EAAehC,eAAgBE,kBAAmB8B,EAAe9B,mBAErF9G,EAAK3xK,QAAQ,kBAAmBspD,GAAW,SAAUgxJ,GACjDhxJ,EAAY8uH,GAAkB9uH,EAAWj0C,GACzCi0C,EAAYgvH,GAAkBhvH,EAAWj0C,GACzC,IAAI49J,EAAQ,eAAkBsH,EAAeC,oBAC8B,eAAkBnlK,EAAK,cAC7D,eAAkBA,EAAK,cAAgD,KAAhCxW,WAAWwW,EAAK,cAAxFxW,WAAWwW,EAAK,cADhB4R,OAAOwwJ,GAAmBpiK,EAAMklK,EAAeC,qBAE/CxH,EAAQ,eAAkBuH,EAAeE,mBAC6B,eAAkBplK,EAAK,aAC7D,eAAkBA,EAAK,aAA8C,KAA/BxW,WAAWwW,EAAK,aAAtFxW,WAAWwW,EAAK,aADhB4R,OAAOwwJ,GAAmBpiK,EAAMklK,EAAeE,oBAE/CntI,EAASitI,EAAejtI,OAC5B,IAAKgc,EAAU9iD,QAAU+zK,EAAe7rK,UAAY,eAAkBukK,KAAS,eAAkBD,GAAM,CACnG,IAAI2E,EAAWhG,EAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBACzDroI,EAAc,cAAgBikI,EAChChvJ,EAAcmsJ,EAAc,UAAI8C,GAA0B,IAAIpC,GAAYY,EAAKD,GAAMH,EAAQlB,EAAK+C,oBAAoB,GAAQhC,GAAkBM,EAAKC,EAAKJ,EAAQyB,EAAc3C,GAChLA,EAAKoI,YACLwH,EAAwC,aAAtBjN,EAAa/tK,MAAuB,eAAkBorK,EAAKl6I,YAAejS,EAAaivJ,GAA0B,IAAIpC,GAAYY,EAAKD,GAAMrB,EAAK+I,cAAe/I,EAAK+C,oBAAoB,GAAQ,IAAIl9K,QAE3N,IAAI68E,EAAiB,cAAT9tE,EAAuBorK,EAAKt9F,MAAQktG,EAAe,SAC3D/E,EAAsB,cAATj2K,EAAuBorK,EAAK4P,eAAiBA,EAAe,aACzEj4H,EAAU5kC,UAAc/O,MAAM6P,EAAWznB,IAAO4X,MAAM6P,EAAWxnB,GAM3DsrD,EAAU5kC,UAAc/O,MAAM6P,EAAWznB,IAAO4X,MAAM6P,EAAWxnB,KACvEg8M,IACA,GAAO1wJ,EAAWixH,EAAgBhG,EAAYC,EAAWhvJ,EAAYg3J,EAAY7E,EAAUrqI,EAAQ+mC,EAAOs9F,EAAMv2K,EAAM++M,mBAPtHD,IACA,GAAe5wJ,EAAWgL,EAAYqjH,EAAUtiK,EAAMk7B,EAAa6pK,EAAmB50L,EAAYg3J,EAAYnoG,EAAO/mC,EAAQqkI,GAE7HA,EAAKluK,wBAObw2M,GAAetkM,MAAMq9J,IAASr9J,MAAMs9J,GAAY,EAAJ,EAC5CinC,GAAwB5wJ,EAAgB,OAAI,EAAI,EAChD0wJ,GAAgB1wJ,EAAgB,OAAI,EAAI,EACxCqoH,EAAK2pB,gBAAmB,eAAkBroB,IAAQ,eAAkBD,GAChErB,EAAK2pB,gBAAkB,EAAI3pB,EAAK2pB,gBACpC,IAAI3f,EAAmBpH,EAAW77K,OAASi5K,EAAK2pB,gBAC5Cif,GAAqB,EACrBn/M,EAAM++M,gBAAgBplK,oBAAuB4mI,EAAmBu+B,EAAsBD,GAAwB,aAAT1zM,IACrGsyK,EAAap8K,YAAYrB,EAAM++M,iBAC3B7lC,EAAaiF,sBAAsBihC,kBACnC7oC,EAAK10I,UAAUxgC,YAAYrB,EAAM++M,iBACjCxoC,EAAKx2K,QAAQsB,YAAYk1K,EAAK10I,YACE,QAA3Bq3I,EAAayI,YAA+E,IAAvDzI,EAAaoe,YAAY32L,QAAQ,kBAA2B,eAAkBu4K,EAAatE,aAC9H2B,EAAKj6I,aAAalZ,QACrB+7L,EAAqB7hC,GAAgBpE,EAAcl5K,EAAM++M,gBAAiBxoC,EAAMiH,EAAYx9K,EAAM++M,gBAAiBthC,GAAc,GAAM,GACvIA,EAAap8K,YAAYrB,EAAM++M,kBAG/BI,EAAqB7hC,GAAgBpE,EAAcl5K,EAAM++M,gBAAiBxoC,EAAMiH,EAAYx9K,EAAM++M,gBAAiBthC,GAAc,GAAM,GAG3IlH,EAAKluK,yBAGT22M,EAAkBrlK,oBAAuB4mI,EAAmBq+B,EAAcC,GAAcn/B,GAAenJ,EAAKx2K,QAAQkI,GAAK,wBACzHy3K,GAAenJ,EAAKx2K,QAAQkI,GAAK,sBAAsB5G,YAAY29M,GAC/DzoC,EAAKyqB,oBACD9nB,EAAaiF,sBAAsBihC,kBAAoBD,IACvD7hC,GAAgBpE,EAAc8lC,EAAmBzoC,EAAMiH,EAAYx9K,EAAM++M,gBAAiBthC,GAAc,GAAO,GAE/GlH,EAAKluK,6BAOhB+wK,EAAY,EAAGA,EAAYD,EAAW77K,OAAQ87K,IACnD77E,EAAQ67E,IAGPjkI,EAAc,EAAGA,EAAc+jI,EAAaiG,eAAe7hL,OAAQ63C,IACxErG,EAAQqG,IAWhBvD,EAAO/0C,UAAUwiN,wCAA0C,SAAUr6B,EAAUC,EAAW+B,GACtF,IAAIwH,EACAE,EACA1sL,EAAS8D,KAAK6a,IAAIhkB,KAAK45K,KAAK0B,cAAcV,SAASj/J,IAAM3b,KAAK45K,KAAK0B,cAAcV,SAASl/J,KAC1FpW,EAAQ6D,KAAK6a,IAAIhkB,KAAK45K,KAAK0B,cAAcT,UAAUl/J,IAAM3b,KAAK45K,KAAK0B,cAAcT,UAAUn/J,KAC/Fm2K,EAAU1oL,KAAK6gC,MAAM7gC,KAAKwsB,IAAI2yJ,EAAYjjL,IAC1CwsL,EAAWA,EAAUxH,EAAeA,EAAcwH,EAClDE,EAAU5oL,KAAK6gC,MAAM7gC,KAAKwsB,IAAI0yJ,EAAW/iL,IACzCysL,EAAWA,EAAU1H,EAAeA,EAAc0H,EAClD,IAAIjyK,EAAS3W,KAAKuS,IAAIm2K,EAASE,GAC3B7K,EAAc/9K,KAAKuS,IAAIoE,EAAQuqK,EAAc,GAIjD,OAHKrqL,KAAK45K,KAAKoI,WACXsO,GAAkBpJ,EAAalnL,KAAK45K,MAEjCsN,GASXjyI,EAAO/0C,UAAUu5L,qCAAuC,SAAUvO,GAC9D,IAAK,eAAkBlrL,KAAK45K,MACxB,GAAI55K,KAAK45K,KAAKj6I,aAAaioJ,qBAAuB5nL,KAAK45K,KAAK4f,aAAc,CACtE,IAAImpB,EACAC,EACAC,EACAC,EAIAjmC,OAAY,EACZkmC,OAAY,EACZC,OAAa,EACb34B,EAAcrqL,KAAK45K,KAAKj6I,aAAa2qJ,QACrCjC,EAAWroL,KAAK45K,KAAKwB,YAAY91K,MACjCgjL,EAAYtoL,KAAK45K,KAAKwB,YAAY/1K,OA2CtC,GA1CArF,KAAK45K,KAAK2O,kBAAoBvoL,KAAK45K,KAAK2O,kBAAoBvoL,KAAK45K,KAAK2O,kBAClE,eAAkBvoL,KAAK45K,KAAKiO,mBAAqB7nL,KAAK45K,KAAK2O,kBACvDvoL,KAAK45K,KAAKiO,iBAAmB,EAAI7nL,KAAK45K,KAAK2O,mBAAqBvoL,KAAK45K,KAAK2O,kBAClFvoL,KAAK45K,KAAK0f,aAAet5L,KAAK45K,KAAK2O,mBAAqBvoL,KAAK45K,KAAK2O,kBAAoBvoL,KAAK45K,KAAK0f,aAChG15L,MAAMM,UAAU+uF,QAAQ3rF,KAAK4nL,GAAkB,SAAU3O,GACrD,IAAIuzB,EAAkD,IAAvCvzB,EAAaiG,eAAe7hL,OACvCmvM,GACAlwM,MAAMM,UAAU+uF,QAAQ3rF,KAAKi5K,EAAaiG,gBAAgB,SAAUD,GAEhE,IAAI/F,EAAa+F,EAAcnjK,WAE/Bxf,MAAMM,UAAU+uF,QAAQ3rF,KAAKk5K,GAAY,SAAUl/J,EAAMm/J,GACrD,IAAI7B,EAAY,eAAkBt9J,EAAK,aAClC,eAAkBA,EAAK,aAA8C,KAA/BxW,WAAWwW,EAAK,aADLxW,WAAWwW,EAAK,aAElEu9J,EAAa,eAAkBv9J,EAAK,cACnC,eAAkBA,EAAK,cAAgD,KAAhCxW,WAAWwW,EAAK,cADJxW,WAAWwW,EAAK,cAEnE,eAAkBs9J,IAAc,eAAkBC,KACnD8nC,EAAY,eAAkBA,IAA4B,IAAdlmC,EACxC5B,EAAY8nC,EAChBC,EAAW,eAAkBA,IAA2B,IAAdnmC,EACtC7B,EAAWgoC,EACfC,EAAW,eAAkBA,IAA2B,IAAdpmC,EACtC7B,EAAWioC,EACfC,EAAY,eAAkBA,IAA4B,IAAdrmC,EACxC5B,EAAYioC,EACZH,EAAY9nC,IACZ8nC,EAAY9nC,GAEZgoC,EAAWjoC,IACXioC,EAAWjoC,GAEXkoC,EAAYjoC,IACZioC,EAAYjoC,GAEZ+nC,EAAWhoC,IACXgoC,EAAWhoC,cAO9B,eAAkBioC,KAAc,eAAkBF,KAClD,eAAkBG,KAAe,eAAkBF,GAAW,CAE/DG,GAAaF,EAAWD,GAAY,EACpCI,GAAcL,EAAYG,GAAa,EACvC9iN,KAAK45K,KAAKkO,qBAAuBi7B,EACjC/iN,KAAK45K,KAAKmO,sBAAwBi7B,GAC9B,eAAkBhjN,KAAK45K,KAAK6O,wBAA0BzoL,KAAK45K,KAAK2O,qBAChEvoL,KAAK45K,KAAK6O,sBAAwB,CAC9B7N,SAAUmoC,EACVloC,UAAWmoC,IAGnB,IAAIC,OAAe,EACfjjN,KAAK45K,KAAKoI,WAAyD,IAA5ChiL,KAAK45K,KAAKqO,kBAAkB,OAAO,MAC1DpL,EAAY4T,GAAmBoyB,EAAUD,EAAUD,EAAWG,EAAWz6B,EAAUC,EAAWtoL,KAAK45K,MAAM,GACrG55K,KAAK45K,KAAKoI,UACVihC,EAAe,eAAkBjjN,KAAK45K,KAAKiO,mBAC3B,eAAkB7nL,KAAK45K,KAAK+N,eAAxC9K,EACY78K,KAAK45K,KAAK+N,cAAgB,GAAoC,IAA/B3nL,KAAK45K,KAAKiO,iBACrD7nL,KAAK45K,KAAK+N,cAAgB9K,GAG9BomC,EAAe,eAAkBjjN,KAAK45K,KAAK+N,eAAiB9K,EACvB,IAAhC1zK,KAAK6gC,MAAMhqC,KAAK45K,KAAKt9F,QAClBt8E,KAAK45K,KAAK+N,gBAAkB9K,GAEvB,cAAD,CAAmB78K,KAAK45K,KAAK4W,yBAC/BxwL,KAAK45K,KAAK+N,cAAgB9K,EAC9BomC,IAAiBjjN,KAAK45K,KAAK+N,eACG,IAA/B3nL,KAAK45K,KAAKiO,kBAAsD,IAA5B7nL,KAAK45K,KAAK+N,eAC1C3nL,KAAK45K,KAAKruE,oBACf03G,EAAepmC,MAKvBA,EAAY78K,KAAK0iN,wCAAwCr6B,EAAUC,EAAW+B,GAC9E44B,EAAe,eAAkBjjN,KAAK45K,KAAK+N,eAAiB9K,EACvD78K,KAAK45K,KAAK+N,gBAAkB9K,EACvB78K,KAAK45K,KAAK+N,cAAgB9K,GAExC78K,KAAK45K,KAAKiO,iBAAmBo7B,QAIjCjjN,KAAK45K,KAAK2O,mBAAoB,EAC1BvoL,KAAK45K,KAAKiO,iBAAmB,IAC7B7nL,KAAK45K,KAAKkO,qBAAuB,KACjC9nL,KAAK45K,KAAKmO,sBAAwB,KAClC/nL,KAAK45K,KAAKiO,iBAAmB,EACxB7nL,KAAK45K,KAAKruE,oBACXvrG,KAAK45K,KAAK+N,cAAgB,IAG9B3nL,KAAK45K,KAAKoI,YAAchiL,KAAK45K,KAAKruE,mBAC/BvrG,KAAK45K,KAAK+N,eAAiB,IAC9B3nL,KAAK45K,KAAK+I,cAA4C,IAA5B3iL,KAAK45K,KAAK+N,cAAuB3nL,KAAK45K,KAAKuQ,iBAAmBnqL,KAAK45K,KAAK+I,cAAgB,EAC5G3iL,KAAK45K,KAAK+N,cACgB,IAA5B3nL,KAAK45K,KAAK+N,eAAsD,IAA/B3nL,KAAK45K,KAAKiO,mBAC3C7nL,KAAK45K,KAAK+C,mBAAmB32K,EAAI,EACjChG,KAAK45K,KAAK+C,mBAAmB12K,EAAI,KAYrDgvC,EAAO/0C,UAAU64K,YAAc,SAAU5rK,GACrC,IAAI7M,EAAS6M,EAAE7M,OAAOgL,GACtB,IAA8C,IAA1ChL,EAAO0D,QAAQhE,KAAK45K,KAAKx2K,QAAQkI,IAAY,CAC7C,IAAI43M,EAAW/1M,EAAE7M,OAAO8F,QAAQ,IAAMpG,KAAK45K,KAAKx2K,QAAQkI,GAAK,6BACxD,eAAkB43M,IAAaA,EAAS53M,GAAGtH,QAAQ,kBAAoB,IACxE1D,EAAS4iN,EAAS53M,IAG1B,MAAwC,IAApChL,EAAO0D,QAAQ,iBAA0B1D,EAAO0D,QAAQ,aAAe,GAA3E,CAGA,IAAIb,EAAUnD,KAAKmjN,UAAU7iN,GAC7B,IAAI,eAAkB6C,GAAtB,CAGIA,EAAQuT,OAAO62J,aACf3/J,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,QAAQvE,MAAM2sE,OAAS,YAE1E,IAAIniB,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAM+oK,EAAaz7J,KAAMna,EAAQma,KAAMs8J,KAAM55K,KAAK45K,KACjEljK,OAAQvT,EAAQuT,OAAQpW,OAAQA,EAAQ0F,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QAC3D61H,SAAUz3K,EAAQma,KAAK,aAAena,EAAQma,KAAK,YACnDu9J,UAAW13K,EAAQma,KAAK,cAAgBna,EAAQma,KAAK,aACrDN,MAAO7Z,EAAQma,KAAK,SAGxB,GADAtd,KAAK45K,KAAK3xK,QAAQ8wK,EAAaxnH,GAC3BpuD,EAAQuT,OAAO62J,WAAY,CAC3B,IAAI61C,GAAY,EACZviC,EAAalvK,SAASrR,EAAO2D,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACrEu0C,EAAc7mC,SAASrR,EAAO2D,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IACvEo/M,EAAc1xM,SAASrR,EAAO2D,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IACrEq/M,EAAWtjN,KAAK45K,KAAK4J,OAAO3C,GAAY2B,eAAehqI,GAK3D,GAJIx4C,KAAKqjL,eAAe1iL,OAAS,IAC7ByiN,EAAapjN,KAAKqjL,eAAe,GAAG/lK,KAAKc,QAAO,SAAUmlM,GAAM,OAAQA,EAAG,UAAYF,KAAkB1iN,OAAS,GAC9GX,KAAKqjL,eAAe,GAAGxC,aAAeA,GAAc7gL,KAAKqjL,eAAe,GAAG7qI,cAAgBA,IAE9F4qK,EAAW,CACZ,IAAI7V,EAAgB,CAChBv9L,KAAMgpK,EAAiBhzK,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QAC1C61H,SAAUz3K,EAAQma,KAAK,aAAena,EAAQma,KAAK,YACnDu9J,UAAW13K,EAAQma,KAAK,cAAgBna,EAAQma,KAAK,aACrDujK,WAAYA,EAAYroI,YAAaA,EAAaikI,UAAW4mC,GAEjErjN,KAAK45K,KAAK3xK,QAAQ+wK,EAAiBu0B,GACnCvtM,KAAK45K,KAAK8qB,mBAAqB,CAC3B9+I,SAAUtlD,EAAQ0F,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QACrC61H,SAAUz3K,EAAQma,KAAK,aAAena,EAAQma,KAAK,YACnDu9J,UAAW13K,EAAQma,KAAK,cAAgBna,EAAQma,KAAK,aACrDwO,MAAO,eAAkBw3L,EAAS9iC,gBAAkB8iC,EAASx3L,MAAQw3L,EAASlkM,WAAWikM,GAAaC,EAAS9iC,gBAC/GK,WAAYA,EAAYroI,YAAaA,EAAaikI,UAAW4mC,QAW7EpuK,EAAO/0C,UAAU+4K,mBAAqB,SAAU9rK,GAC5C,IAAI7M,EAAS6M,EAAE7M,OAAOgL,GACtB,IAAwC,IAApChL,EAAO0D,QAAQ,kBAA2D,IAAjC1D,EAAO0D,QAAQ,aAA5D,CAGA,IAAIb,EAAUnD,KAAKmjN,UAAU7iN,GAC7B,IAAI,eAAkB6C,GAAtB,CAGKA,EAAQqgN,kBAAkB7iN,OAAS,GAAKX,KAAK45K,KAAK4qB,sBAC/C15K,GAAW9qB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAClCtL,KAAK45K,KAAK0yB,kBAAkBC,gBAAgBvoM,QAAQ,kBAAoB,GACxEi7E,GAAcj/E,KAAK45K,KAAKx2K,QAAQkI,GAAK,gBAErCtL,KAAKqjL,eAAe1iL,OAAS,IAAMX,KAAK45K,KAAK2qB,0BAC7CvkM,KAAK45K,KAAK2qB,0BAA2B,EACrCnhB,GAAqBpjL,KAAKqjL,eAAgBrjL,KAAK45K,KAAM55K,KAAKoiN,mBAG1DpiN,KAAKqjL,eAAiBlgL,EAAQqgN,kBAC9BxjN,KAAK45K,KAAK2qB,0BAA2B,EACrC1gB,GAAgB7jL,KAAKqjL,eAAgBrjL,KAAK45K,KAAM55K,KAAKoiN,iBAAiB,KAG9E,IAAI7wJ,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAMipK,GAAoB37J,KAAMna,EAASy2K,KAAM55K,KAAK45K,KACnEt5K,OAAQA,EAAQ0F,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,QACnC61H,SAAUz3K,EAAQma,KAAK,aAAena,EAAQma,KAAK,YAAau9J,UAAW13K,EAAQma,KAAK,cAAgBna,EAAQma,KAAK,aACrHmmM,wBAAyBtgN,EAAQ,mBAErCnD,KAAK45K,KAAK3xK,QAAQgxK,GAAoB1nH,MAS1Ctc,EAAO/0C,UAAUijN,UAAY,SAAU7iN,GACnC,IAIIgd,EAIA5G,EARApL,EAAKhL,EAAO2D,MAAM,gBAClBwI,EAAQkF,SAASrG,EAAG,GAAGrH,MAAM,KAAK,GAAI,IACtC82K,EAAQ/6K,KAAK45K,KAAK4J,OAAO/2K,GAIzBi3M,EAAiB,GACjBF,EAAoB,GAGxB,GADAxjN,KAAK45K,KAAK4qB,oBAAsBzpB,EAAMyG,sBAAsBmiC,mBACxDrjN,EAAO0D,QAAQ,kBAAoB,EAAG,CACtC,IAAIw0C,EAAc7mC,SAASrG,EAAG,GAAGrH,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IACtEw4K,EAAY9qK,SAASrG,EAAG,GAAGrH,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IAEtE,GADAyS,EAASqkK,EAAMyH,eAAehqI,IACzB56B,MAAM46B,GAAc,CACrBl7B,EAAO5G,EAAO0I,WAAWq9J,GAEzB,IAAI7G,EAAe,GASnB,IARKl/J,EAAOiW,UAAarsB,EAAO0D,QAAQ,cAAgB,GAAOhE,KAAK45K,KAAK4J,OAAO/2K,GAAO+0K,sBAAwC,oBAE3H5hL,MAAMM,UAAU+uF,QAAQ3rF,KAAKoT,EAAO0I,YAAY,SAAUuO,EAAUlhB,GAC5DkhB,EAAS,cAAgBrQ,EAAK,aAAeqQ,EAAS,eAAiBrQ,EAAK,cAC5Es4J,EAAavpK,KAAK,CAAEiR,KAAMA,EAAM7Q,MAAOA,OAI9CnM,EAAO0D,QAAQ,cAAgB,EAAI,CACpC,IAAI4/M,GAAgB,EAChB9gC,EAAiBl1K,SAASyd,eAAe/qB,EAAO0D,QAAQ,gBAAkB,EAA0C,YAAtC+2K,EAAMyG,sBAAsB11J,MAAsBxrB,EAAO2D,MAAM,eAAe,GAAK,SAAW3D,EAAO2D,MAAM,eAAe,GAA2C,YAAtC82K,EAAMyG,sBAAsB11J,MAAsBxrB,EAAS,SAAWA,GACnR4qG,EAAgD,YAAtC6vE,EAAMyG,sBAAsB11J,MAAsBg3J,EAAe78H,SAAS,GAAG4C,YAAY5kD,MAAM,KAAK4C,IAAIqoB,QAAU4zJ,EAAej6H,YAAY5kD,MAAM,KAAK4C,IAAIqoB,QAC1K0mJ,EAAe,GACf,IAAK,IAAI/nK,EAAK,EAAGg2M,EAAY34G,EAASr9F,EAAKg2M,EAAUljN,OAAQkN,IAAM,CAC/D,IAAI7M,EAAI6iN,EAAUh2M,GAClB+nK,EAAavpK,KAAK,CAAEiR,KAAM5G,EAAO0I,WAAWpe,GAAIyL,MAAOzL,IACvD0iN,EAAer3M,KAAKqK,EAAO0I,WAAWpe,IAE1C4iN,GAAgB,EAChBJ,EAAkBn3M,KAAK,CACnBiR,KAAMs4J,EAAciL,WAAYp0K,EAAO+rC,YAAaA,EAAaikI,UAAWA,EAC5E8G,qBAAsBjjL,EAAO2D,MAAM,aAAa,GAAGD,QAAQ,gBAAkB,EAAI1D,EAAO2D,MAAM,aAAa,GAAGA,MAAM,eAAe,GAAK3D,EAAO2D,MAAM,aAAa,IAClK2/M,cAAeA,IAGvB,MAAO,CAAEltM,OAAQA,EAAQ4G,KAAMA,EAAMkmM,kBAAmBA,EAAmBE,eAAgBA,IAGnG,OAAO,MASXzuK,EAAO/0C,UAAU0qB,WAAa,SAAUzd,GACpC,IAAIy4C,EAAWz4C,EAAE7M,OAAOgL,GACxB,MAA0C,IAAtCs6C,EAAS5hD,QAAQ,iBAA0B4hD,EAAS5hD,QAAQ,aAAe,GAA/E,CAGA,IAAIb,EAAUnD,KAAKmjN,UAAUv9J,GAC7B,IAAI,eAAkBziD,GAAtB,CAGIA,EAAQuT,OAAO62J,aACf3/J,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,QAAQvE,MAAM2sE,OAAS,eAAkB1zE,KAAK45K,KAAK8qB,oBAC9F,UAAY,YAEpB,IAAInzI,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAMkpK,GAAiB57J,KAAMna,EAAQma,KACpDs8J,KAAM55K,KAAK45K,KAAMt5K,OAAQslD,EAAU5/C,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,SAE1D/kD,KAAK45K,KAAK3xK,QAAQixK,GAAiB3nH,MASvCtc,EAAO/0C,UAAUi5K,uBAAyB,SAAUhsK,GAChD,IAAIy4C,EAAWz4C,EAAE7M,OAAOgL,GACxB,IAA0C,IAAtCs6C,EAAS5hD,QAAQ,kBAA6D,IAAnC4hD,EAAS5hD,QAAQ,aAAhE,CAGA,IAAIb,EAAUnD,KAAKmjN,UAAUv9J,GAI7B,GAHI5lD,KAAK45K,KAAK4qB,sBACVr3L,EAAE7M,OAAOyG,MAAM2sE,OAAS,YAExB,eAAkBvwE,GAAtB,CAGA,IAAIouD,EAAY,CACZ9iD,QAAQ,EAAOuB,KAAMmpK,GAAwB77J,KAAMna,EAAQma,KAAMs8J,KAAM55K,KAAK45K,KAC5Et5K,OAAQslD,EAAU5/C,EAAGmH,EAAE23C,QAAS7+C,EAAGkH,EAAE43C,SAEzC/kD,KAAK45K,KAAK3xK,QAAQkxK,GAAwB5nH,MAO9Ctc,EAAO/0C,UAAU4U,cAAgB,WAC7B,MAAO,UAQXmgC,EAAO/0C,UAAUsS,QAAU,WACvBxS,KAAK45K,KAAO,KACZ55K,KAAKgiN,cAAgB,GACrBhiN,KAAKoiN,gBAAkB,KACvBpiN,KAAKqjL,eAAiB,IAEnBpuI,EA3fgB,GCDvB,GAA6B,WAC7B,SAAS6uK,EAAYlqC,GACjB55K,KAAK45K,KAAOA,EACZ55K,KAAK+jN,UAAY/jN,KAAK45K,KAAKx2K,QAAQkI,GAAK,eACxCtL,KAAK+oB,mBAqZT,OAhZA+6L,EAAY5jN,UAAUwtM,cAAgB,SAAUvgM,GAC5C,IACIiG,EACAC,EACA/S,EACAukD,EACAm/J,EAwBAlqM,EA7BAzW,EAAQrD,KAuBZ,IAjBiC,IAA7BmN,EAAEqB,KAAKxK,QAAQ,UACfhE,KAAK2pB,SAAU,EACfk7B,EAAW13C,EACXiG,EAAQyxC,EAASb,eAAe,GAAG5wC,MACnCC,EAAQwxC,EAASb,eAAe,GAAG3wC,MACnC/S,EAASukD,EAASvkD,SAGlBN,KAAK2pB,QAA4B,UAAlBxc,EAAEg2C,YACjB/vC,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MACV/S,EAAS6M,EAAE7M,QAEXN,KAAK45K,KAAKjqK,WACV7C,aAAa9M,KAAK8M,cAClB9M,KAAK8M,aAAeM,WAAWpN,KAAKoqB,cAAcxkB,KAAK5F,MAAO,OAEjB,IAA7CM,EAAOgL,GAAGtH,QAAQhE,KAAK45K,KAAKx2K,QAAQkI,IAAY,CAChD,IAAI43M,EAAW5iN,EAAO8F,QAAQ,IAAMpG,KAAK45K,KAAKx2K,QAAQkI,GAAK,6BACtD,eAAkB43M,IAAaA,EAAS53M,GAAGtH,QAAQ,kBAAoB,IACxE1D,EAAS4iN,GAIjB,IAEIv+M,EAGAs/M,EAIAtuK,EATAwqK,EAAc,GACdv6J,EAAWtlD,EAAOgL,GAGlB44M,EAAe,GAEfz3M,EAAQm5C,EAAS5hD,QAAQ,iBAAmB,GAAK8C,WAAW8+C,EAAS3hD,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IACzG82K,EAAQ/6K,KAAK45K,KAAKsR,iBAAiBz+K,GACnCjC,EAAiB,GAEjBmjB,EAAWqsJ,GAAiB5mK,EAAOC,EAAOrT,KAAK45K,KAAK10I,WACxDllC,KAAKusM,gBAAkB3mJ,EACvB,IAAIu+J,EAAmBv+J,EAAS5hD,QAAQ,iBAAmB,GACnD4hD,EAAS5hD,QAAQ,kBAAoB,GAAO4hD,EAAS5hD,QAAQ,kBAAoB,EACzF,GAAImgN,GAAoD,OAAjCnkN,KAAK45K,KAAK8qB,mBAA6B,CAC1D,GAAI9+I,EAAS5hD,QAAQ,iBAAmB,EAAG,CACvC8V,EAASihK,EAAM1C,gBACf,IAAIvsJ,EAAQna,SAASi0C,EAAS3hD,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACtE,GAAI,eAAkB82K,EAAMwL,YAAc,eAAkBxL,EAAMwL,UAAUz6J,IACxE,OAGJ,IAAI9O,EAAQ+9J,EAAMwL,UAAUz6J,GAAO,YAC/Bs4L,GAAU,EACV//I,EAA0E,mBAA5D5kE,OAAOS,UAAU0R,SAAStO,KAAKy3K,EAAM7C,mBACnD6C,EAAM7C,kBAAoB,CAAC6C,EAAM7C,mBACrC,IAAK,eAAkB7zG,GAAa,CAChC,IAAK,IAAI7gD,EAAI,EAAGA,EAAI6gD,EAAW1jE,OAAQ6iB,IACnC,IAAK,IAAIxiB,EAAI,EAAGA,EAAI+5K,EAAM,cAAc,UAAW/5K,IAAK,CAEpD,IAAIsc,EAAOy9J,EAAM37J,WAAWpe,GACxB8kL,EAAY/K,EAAM5C,cAAcn0K,QAAQ,MAAQ,EAC/C07K,GAAmBpiK,EAAMy9J,EAAM5C,eAAkB76J,EAAKy9J,EAAM5C,eAC7DspC,GAAiB,eAAkB37B,IAAaloK,MAAMN,EAAKy9J,EAAM5C,gBAC/D2N,EAASvjK,cAAgBujK,EAC3Bu+B,GAAiB,eAAkBrnM,EAAMqnD,EAAW7gD,MACjD5F,MAAMZ,EAAMqnD,EAAW7gD,KAAOxG,EAAMqnD,EAAW7gD,IAAIjB,cACtDvF,EAAMqnD,EAAW7gD,IACrB,GAAIi+L,IAAkB4C,EAAe,CACjCD,GAAU,EACV33M,EAAQzL,EACRwiB,EAAI6gD,EAAW1jE,OACf,OAKZ,GADA8L,EAAQ23M,EAAU33M,EAAQ,MACrB,eAAkBsuK,EAAM37J,WAAW3S,IAEpC,IAAKw3M,KADLC,EAAexnL,KAAKpiB,MAAMoiB,KAAKkkF,UAAUm6D,EAAM37J,WAAW3S,KACxCuQ,EAETknM,EAAapkN,eAAemkN,KAC7BC,EAAaD,GAAajnM,EAAMinM,IAKhD,GAAInqM,EAAOnD,WAAc,eAAkBlK,KAAWmR,MAAMnR,KAAa,eAAkBuQ,IACvF,GAAI+9J,EAAM1C,gBAAgB7nJ,OACtB2vL,EAAcngN,KAAKolJ,UAAU21B,EAAM1C,gBAAgB7nJ,OAAQ0zL,OAE1D,CACD,IAAIl+B,EAAYC,GAAkBlL,EAAM5C,cAAe4C,EAAM7C,kBAAmBl7J,GAChFmjM,EAAgB,eAAkBplC,EAAM37J,aAAgB,eAAkB3S,GAGTuQ,EAAMgpK,GAFnE3G,GAAcvlK,EAAOy8K,UAAUvyL,QAAQ,MAAQ,EAC1C07K,GAAmB3E,EAAM37J,WAAW3S,GAAQqN,EAAOy8K,WACpDxb,EAAM37J,WAAW3S,GAAOqN,EAAOy8K,WAAav2L,KAAK45K,MACrD,eAAkBumC,KAClBA,EAAermM,EAAOy8K,UAAUvyL,QAAQ,MAAQ,EAC3C07K,GAAmB1iK,EAAOlD,EAAOy8K,WAAcv5K,EAAMlD,EAAOy8K,kBAM5E,GAAI3wI,EAAS5hD,QAAQ,kBAAoB,EAAG,CAC7C,IAAIsgN,EAAa3yM,SAASi0C,EAAS3hD,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IACxEw4K,EAAY9qK,SAASi0C,EAAS3hD,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IACvEyS,EAASqkK,EAAMyH,eAAe8hC,GAClCxqM,EAASpD,EAAO2hK,gBAChB6rC,EAAextM,EAAO0I,WAAWq9J,GAC7B3iK,EAAOnD,UAAYiH,MAAM0mM,KAErBnE,EADAzpM,EAAO2hK,gBAAgB7nJ,OACTxwB,KAAKolJ,UAAU1uI,EAAO2hK,gBAAgB7nJ,OAAQ9Z,EAAO0I,WAAWq9J,IAG/C,oBAApB/lK,EAAOiW,UAA2BjW,EAAOiW,WAAajW,EAAO2hK,gBAAgBke,UACtE7/K,EAAOiW,SAAS1oB,MAAM,KAAK,GAAGA,MAAM,KAAK,GAInDo7K,GAAc3oK,EAAO2hK,gBAAgBke,UAAUvyL,QAAQ,MAAQ,EAC1D07K,GAAmBhpK,EAAO0I,WAAWq9J,GAAY/lK,EAAO2hK,gBAAgBke,WACzE7/K,EAAO0I,WAAWq9J,GAAW/lK,EAAO2hK,gBAAgBke,WAAav2L,KAAK45K,YAMzF,GAAIh0H,EAAS5hD,QAAQ,kBAAoB,EAAG,CAC7C,IAAIo6L,EAAczsL,SAASi0C,EAAS3hD,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IAEzE+sM,GADAv0B,EAAY9qK,SAASi0C,EAAS3hD,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IAC9D82K,EAAM6gB,eAAewC,IAClCtkL,EAASk3L,EAAO34B,gBAChB6rC,EAAelT,EAAO5xL,WAAWq9J,GAC7B3iK,EAAOnD,UAAYiH,MAAM6+J,KAErB0jC,EADAnP,EAAO34B,gBAAgB7nJ,OACTxwB,KAAKolJ,UAAU4rD,EAAO34B,gBAAgB7nJ,OAAQwgL,EAAO5xL,WAAWq9J,IAI1E4C,GAAc2xB,EAAO34B,gBAAgBke,UAAUvyL,QAAQ,MAAQ,EAC1D07K,GAAmBsxB,EAAO5xL,WAAWq9J,GAAYu0B,EAAO34B,gBAAgBke,WACzEya,EAAO5xL,WAAWq9J,GAAWu0B,EAAO34B,gBAAgBke,WAAav2L,KAAK45K,OAKtFhsK,SAASyd,eAAerrB,KAAK+jN,WAC7Bp/M,EAAaiJ,SAASyd,eAAerrB,KAAK+jN,YAG1Cp/M,EAAa,eAAc,MAAO,CAC9B2G,GAAItL,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAC3B9G,UAAW,qBAEX,eAAkBsV,EAAO6S,WAAiC,KAApB7S,EAAO6S,UAAoD,cAAjC3sB,KAAK45K,KAAK2qC,mBAC1E5/M,EAAWoC,MAAMwsC,QAAU,0CAG3B5uC,EAAWoC,MAAMhD,SAAW,WAEhC6J,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAsB5G,YAAYC,IAEtD,oBAApBmV,EAAO6S,UAA+C,OAApB7S,EAAO6S,UAAwG,IAAnFltB,OAAO2V,KAAgC,kBAApB0E,EAAO6S,SAAwB7S,EAAO6S,SAAW,IAAIhsB,SAC7ImZ,EAAO6S,SAAW7S,EAAO6S,SAASltB,OAAO2V,KAAK0E,EAAO6S,UAAU,KAEnEu3L,EAAelkN,KAAKwkN,kBAAkB1qM,EAAQoqM,GAC9C,IAAIO,EAAmB,CACnB9uM,MAAOmE,EAAO8S,UAAUjX,MAAOM,WAAY6D,EAAO8S,UAAU3W,WAAYF,UAAW+D,EAAO8S,UAAU7W,UACpGC,WAAY8D,EAAO8S,UAAU5W,WAAYw9B,QAAS15B,EAAO8S,UAAU4mB,QAAS19B,KAAMgE,EAAO8S,UAAU9W,MAEnG4uM,EAAgB,CAChB/2L,SAAUA,EAAUnR,KAAMhS,EAAgB8S,KAAM4mM,EAChDt3L,UAAW63L,EACX93L,SAAU7S,EAAO6S,UAErBq3L,EAAc,CACVv1M,QAAQ,EAAOuB,KAAM09E,EACrBvqF,QAASuhN,EACTtkM,KAAMtG,EAAOsG,KACbw5J,KAAM55K,KAAK45K,KACXx2K,QAAS9C,EAAQixD,UAAWpkD,EAAGtC,QAAU,eAAkBs1M,GAAwC,GAAzBA,EAAYvuM,YAG1F5R,KAAK45K,KAAK3xK,QAAQylF,EAAes2H,GAAa,SAAU3vL,GAC/C2vL,EAAYv1M,SAAUqL,EAAOnD,SAAY,eAAkBwpM,KACxB,IAAnCv6J,EAAS5hD,QAAQ,eAA4D,IAArC4hD,EAAS5hD,QAAQ,eA0D1DX,EAAMuxE,aAAaznE,EAAE7M,SAzDrB+C,EAAMu2K,KAAK,wBAAyB,EACpCoqC,EAAY7gN,QAAQ,aAAa,QAAU6gN,EAAY7gN,QAAQ,aAAa,SACrEE,EAAMu2K,KAAK1pJ,WAAW2rD,SAC7BmoI,EAAY7gN,QAAQ,aAAa,SAAW6gN,EAAY7gN,QAAQ,aAAa,UACtEE,EAAMu2K,KAAK1pJ,WAAW0iK,iBAC7BoxB,EAAY7gN,QAAQ,aAAa,cAAgB6gN,EAAY7gN,QAAQ,aAAa,eAC3EE,EAAMu2K,KAAK1pJ,WAAWja,WAC7B+tM,EAAY7gN,QAAQ,aAAa,cAAgB6gN,EAAY7gN,QAAQ,aAAa,eAC3EE,EAAMu2K,KAAK1pJ,WAAWla,WAC7BguM,EAAY7gN,QAAQ,aAAa,WAAa6gN,EAAY7gN,QAAQ,aAAa,YACxEE,EAAMu2K,KAAK1pJ,WAAWsjK,mBACzBwwB,EAAYv1M,OACZpL,EAAM2pJ,WAAa,IAAI,OAAQ,CAC3BvmI,QAAQ,EACRgF,OAAQ,GACRnO,KAAMxD,EAAO,QACb6S,SAAU7S,EAAO,YACjBjP,QAASm5M,EAAYn5M,QAAQ+G,aAAeuuM,EAAYvuM,WAAa,CAACoyM,EAAYn5M,QAAQ+G,YACtF,CAACuuM,EAAYvuM,YACjBuvE,OAAQ,GACRxzD,SAAU7T,EAAO,YACjBunE,QAAS,CAAC1rC,GACVsoC,WAAY56E,EAAMu2K,KAAKwB,YACvBxuJ,UAAW9S,EAAO,aAClBgU,cAAezqB,EAAMu2K,KAAK9rJ,cAC1B1N,KAAMtG,EAAOsG,MAAQ/c,EAAMu2K,KAAK1pJ,WAAW2iK,iBAC3CrwG,cAAc,IAIlBn/E,EAAM2pJ,WAAa,IAAI,OAAQ,CAC3BvmI,QAAQ,EACRgF,OAAQ,GACRnO,KAAM0mM,EAAY7gN,QAAQ,QAC1BwpB,SAAUq3L,EAAY7gN,QAAQ,YAC9B0H,QAASm5M,EAAYn5M,QAAQ+G,aAAeuuM,EAAYvuM,WAAa,CAACoyM,EAAYn5M,QAAQ+G,YACtF,CAACuuM,EAAYvuM,YACjBuvE,OAAQ,GACRxzD,SAAUq2L,EAAY7gN,QAAQ,YAC9Bk+E,QAAS,CAAC1rC,GACVsoC,WAAY56E,EAAMu2K,KAAKwB,YACvBxuJ,UAAWo3L,EAAY7gN,QAAQ,aAC/B2qB,cAAezqB,EAAMu2K,KAAK9rJ,cAC1B1N,KAAM4jM,EAAY5jM,MAAQ/c,EAAMu2K,KAAK1pJ,WAAW2iK,iBAChDrwG,cAAc,KAIlBn/E,EAAMu2K,KAAK/mJ,OAASxvB,EAAMu2K,KAAK9oF,UAC/BztF,EAAM2pJ,WAAWhoE,gBAAkB3hF,EAAMu2K,MAE7Cv2K,EAAM2pJ,WAAWx5G,QAAUnwC,EAAMu2K,KAAK1pJ,WAAWqjK,oBAAsBlwL,EAAM2pJ,WAAWx5G,QACxFnwC,EAAM2pJ,WAAWn8D,SAASlsF,GAE1BtB,EAAMu2K,KAAKluK,2BAMf1L,KAAKgtJ,YACLhtJ,KAAK45K,KAAK3xK,QAAQ,wBAAyB,CACvCwG,QAAQ,EAAOuB,KAAM,wBAAyB4pK,KAAM55K,KAAK45K,KAAMz2K,QAASuhN,EACxEthN,QAASpD,KAAKgtJ,WAAW5pJ,UAG7BpD,KAAKgtJ,WACLhtJ,KAAK45K,KAAK3xK,QAAQ,wBAAyB,CACvCwG,QAAQ,EAAOuB,KAAM,wBAAyB4pK,KAAM55K,KAAK45K,KAAMz2K,QAASuhN,EAAethN,QAASpD,KAAKgtJ,WAAW5pJ,UAIpHpD,KAAK40E,aAAaznE,EAAE7M,YAGvB,CACD,IAAIylF,EAAiB54E,EAAE7M,OAAO8F,QAAQ,IAAMpG,KAAK45K,KAAKx2K,QAAQkI,GAAK,+BAC/D,eAAkBy6E,IAClB/lF,KAAK40E,aAAaznE,EAAE7M,UAYhCwjN,EAAY5jN,UAAUskN,kBAAoB,SAAUrhN,EAAS+gN,GAEzD,IAAIhkM,EAAY,eAAO,GAAIgkM,EAAc,MAAM,GAO/C,OANIlkN,KAAK45K,KAAKppJ,SAAW5S,MAAMsR,OAAOhP,EAAU/c,EAAQozL,aACpDr2K,EAAU/c,EAAQozL,WAAaxL,GAAY/qL,KAAK45K,KAAM1qJ,OAAOhP,EAAU/c,EAAQozL,aAG/Er2K,EAAYzgB,OAAO2V,KAAK8K,GAAWvf,OAASuf,OAAY3U,EAErD2U,GAOX4jM,EAAY5jN,UAAUklJ,UAAY,SAAU50H,EAAQlT,QACnC,IAATA,IAAmBA,EAAO,IAE9B,IADA,IAAIlI,EAAO3V,OAAO2V,KAAKkI,GACdzP,EAAK,EAAGoqC,EAAS7iC,EAAMvH,EAAKoqC,EAAOt3C,OAAQkN,IAAM,CACtD,IAAItN,EAAM03C,EAAOpqC,GACjB2iB,EAA+B,kBAAdlT,EAAK/c,GAAqB6+K,GAAqB,GAAI5uJ,EAAQlT,EAAMtd,KAAK45K,MACnFppJ,EAAOvsB,MAAM,KAAO1D,EAAM,KAAK+L,KAAK+yK,GAAY/hK,EAAK/c,GAAMP,KAAK45K,OAExE,OAAOppJ,GAKXszL,EAAY5jN,UAAUspB,eAAiB,SAAUrc,GAC7CnN,KAAK0tM,cAAcvgM,GACkB,cAAjCnN,KAAK45K,KAAK2qC,qBACVz3M,aAAa9M,KAAK8M,cAClB9M,KAAK8M,aAAeM,WAAWpN,KAAKoqB,cAAcxkB,KAAK5F,MAAO,OAMtE8jN,EAAY5jN,UAAUkqB,cAAgB,WAClC,IAAIu6L,GAAmB,EAKvB,OAJI/2M,SAASomC,uBAAuB,oBAAoBrzC,OAAS,IAC7D,gBAAOiN,SAASomC,uBAAuB,oBAAoB,IAC3D2wK,GAAmB,GAEhBA,GAEXb,EAAY5jN,UAAU00E,aAAe,SAAUxxE,GAC3C,IAAI2iF,EAAiB3iF,EAAQgD,QAAQ,IAAMpG,KAAK45K,KAAKx2K,QAAQkI,GAAK,+BAClE,GAAI,eAAkBy6E,GAAiB,CACnC,IAAI4+H,EAAmB3kN,KAAKoqB,gBACxBu6L,GAEA3kN,KAAK45K,KAAKvxK,kBAStBy7M,EAAY5jN,UAAU6oB,iBAAmB,WACjC/oB,KAAK45K,KAAK5wJ,cAGuB,gBAAjChpB,KAAK45K,KAAK2qC,mBACVvkN,KAAK45K,KAAKzwJ,GAAG,WAAYnpB,KAAK0tM,cAAe1tM,MAEP,UAAjCA,KAAK45K,KAAK2qC,mBACfvkN,KAAK45K,KAAKzwJ,GAAG,OAAQ7U,cAAetU,KAAKwpB,eAAgBxpB,MAGzDA,KAAK45K,KAAKzwJ,GAAG,OAAQG,eAAgBtpB,KAAK0tM,cAAe1tM,MAE7DA,KAAK45K,KAAKzwJ,GAAG,OAAQy7L,iBAAkB5kN,KAAKoqB,cAAepqB,MAC3DA,KAAK45K,KAAKx2K,QAAQ2lB,iBAAiB,cAAe/oB,KAAKoqB,iBAK3D05L,EAAY5jN,UAAU0xC,oBAAsB,WACxC,GAAI5xC,KAAK45K,KAAM,CACX,GAAI55K,KAAK45K,KAAK5wJ,YACV,OAEiC,gBAAjChpB,KAAK45K,KAAK2qC,mBACVvkN,KAAK45K,KAAK39I,IAAI,WAAYj8B,KAAKoqB,eAEO,UAAjCpqB,KAAK45K,KAAK2qC,mBACfvkN,KAAK45K,KAAK39I,IAAI,OAAQ3nB,cAAetU,KAAKwpB,gBAG1CxpB,KAAK45K,KAAK39I,IAAI,OAAQ3S,eAAgBtpB,KAAK0tM,eAE/C1tM,KAAK45K,KAAK39I,IAAI,OAAQ2oL,iBAAkB5kN,KAAKoqB,eAC7CpqB,KAAK45K,KAAKx2K,QAAQwuC,oBAAoB,cAAe5xC,KAAKoqB,iBAQlE05L,EAAY5jN,UAAU4U,cAAgB,WAClC,MAAO,eAQXgvM,EAAY5jN,UAAUsS,QAAU,WACvB,eAAkBxS,KAAKgtJ,aACxBhtJ,KAAKgtJ,WAAWx6I,UAEpBxS,KAAKgtJ,WAAa,MAIf82D,EAzZqB,GCK5B,GAAsB,WACtB,SAAS35J,EAAKyvH,GAEV55K,KAAKm/C,WAAY,EAEjBn/C,KAAK6kN,YAAa,EAElB7kN,KAAK2pB,SAAU,EAEf3pB,KAAK8kN,kBAAmB,EAExB9kN,KAAK+kN,YAAc,OAAQ/9L,KAAKhX,KAGhChQ,KAAKkpB,UAAY,OAAQA,UACzBlpB,KAAKglN,SAAU,EACfhlN,KAAKilN,OAAQ,EACbjlN,KAAKklN,aAAc,EACnBllN,KAAKmlN,iBAAkB,EACvBnlN,KAAKolN,YAAc,EAEnBplN,KAAK0tL,aAAe,GAGpB1tL,KAAKm+L,UAAY,GAGjBn+L,KAAKgiM,iBAAmB,CAAEh8L,EAAG,EAAGC,EAAG,GAGnCjG,KAAKiiM,iBAAmB,CAAEj8L,EAAG,EAAGC,EAAG,GAEnCjG,KAAK4tM,eAAgB,EACrB5tM,KAAK45K,KAAOA,EACZ55K,KAAKqlN,WAAkC,YAArBrlN,KAAK+kN,YAA6B/kN,KAAKkpB,UAAY,aAAe,iBAAoB,aACxGlpB,KAAKipB,YAAcjpB,KAAKkpB,UAAY,eAAiB,aACrDlpB,KAAKslN,eAAyF,MAAxEtlN,KAAK45K,KAAKj6I,aAAa4lL,gBAAgBC,eAAeF,eACxEtlN,KAAK45K,KAAKj6I,aAAa2lL,eAAiBtlN,KAAK45K,KAAKj6I,aAAa4lL,gBAAgBC,eAAeF,eAClGtlN,KAAK+gD,UAA2E,MAA/D/gD,KAAK45K,KAAKj6I,aAAa4lL,gBAAgBC,eAAe7vM,MAAgB3V,KAAK45K,KAAKj6I,aAAahqB,MAC1G3V,KAAK45K,KAAKj6I,aAAa4lL,gBAAgBC,eAAe7vM,MAC1D3V,KAAK+oB,mBA8iET,OAniEAohC,EAAKjqD,UAAUulN,eAAiB,SAAU1hN,EAAU2hN,EAAel3M,GAC/D,IAAInL,EAAQrD,KACR6G,EAAM7G,KAAK45K,KACf/yK,EAAI+hL,mBAAqB88B,GAAiB,SAAMn6M,EAAY1E,EAAI60K,eAChE70K,EAAIyyL,cAAe,EACnBzyL,EAAI8yL,cAAe,EACnB9yL,EAAI0hL,kBAAoB1hL,EAAIgiL,uBAAwB,EACpDhiL,EAAI2hL,gBAAkB3hL,EAAI0kG,kBAC1B,IAAIo6G,EAAY9+M,EAAI87K,cAChBrmG,EAAQz1E,EAAIynL,cAAgBznL,EAAIy1E,MAChCguG,EAAUzjL,EAAI84B,aAAa2qJ,QAC3BkmB,EAAU3pM,EAAI84B,aAAa6wK,QAC/BkV,EAAgBp7B,GAAWo7B,EAAgBA,EAAgBp7B,EAC3D,IAAIs7B,GAAmB,EACvB,OAAQp3M,EAAK+T,eACT,IAAK,SACDqjM,EAAmBF,GAAiB1lN,KAAK45K,KAAKj6I,aAAa2qJ,QAC3D,MACJ,IAAK,UACDs7B,EAAmBF,GAAiB1lN,KAAK45K,KAAKj6I,aAAa6wK,QAC3D,MAER,GAAIoV,EAAkB,CAClB,IAAIC,EAAgBh/M,EAAI81K,mBACxB,GAAM91K,EAAIm7K,aAAyB,WAATxzK,EAAoBk3M,GAAiBlV,GAAWkV,GAAiBp7B,EAAUo7B,GAAiBlV,KAC/G3pM,EAAIqjL,SAsCN,GAAKrjL,EAAa,WAAM6+M,GAAiBlV,GAAWkV,GAAiBp7B,EAgBtE,GAfAtqL,KAAK8lN,yBAAyBH,EAAWD,EAAe3hN,EAAUyK,GAClE3H,EAAI87K,cAAgB+iC,EACpB7+M,EAAI84B,aAAaI,WAAa2lL,EAC9B7+M,EAAIy1E,MAAQnzE,KAAK8jC,IAAI,EAAGy4K,EAAgB,GAC3B,YAATl3M,GAAsB3H,EAAI84B,aAAak6J,gBAAkBhzL,EAAIizL,gBAAkB4rB,GAAiB7+M,EAAIkzL,mBACpGlzL,EAAI8yL,cAAe,EACnB9yL,EAAI2hL,iBAAkB,EACtB3hL,EAAI81K,mBAAmB32K,EAAIa,EAAImzL,qBAAqBh0L,EACpDa,EAAI81K,mBAAmB12K,EAAIY,EAAImzL,qBAAqB/zL,EACpDy/M,EAAgB7+M,EAAI87K,cAAgB97K,EAAI8gL,cAAgB9gL,EAAIkzL,iBAC5DlzL,EAAIy1E,MAAQnzE,KAAK8jC,IAAI,EAAGy4K,EAAgB,IAE5C7+M,EAAI8gL,cAAgB/pK,MAAM/W,EAAI8gL,eAAiB,EAAI9gL,EAAI8gL,cACvD9gL,EAAI2iL,eAAevjL,GAAKY,EAAI81K,mBAAmB12K,EAAK,IAAOY,EAAI8gL,eAAkB9gL,EAAIy1E,MACrFz1E,EAAI2iL,eAAexjL,GAAKa,EAAI81K,mBAAmB32K,EAAK,IAAOa,EAAI8gL,eAAkB9gL,EAAIy1E,MACjFt8E,KAAK6nM,iBAAiBge,EAAeF,EAAWn3M,GAChD3H,EAAI2iL,eAAiB3iL,EAAI81K,mBAAqB,IAAId,GAAM,EAAG,GAC3Dh1K,EAAIy1E,MAAQz1E,EAAIynL,cAChBznL,EAAI87K,cAAgBgjC,EACpB9+M,EAAI84B,aAAaI,WAAal5B,EAAIynL,kBAEjC,CACG1gL,SAAS1B,cAAc,mBACvB0B,SAAS1B,cAAc,iBAAiBnF,MAAMC,QAAU,QAExD4G,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,mBAC/CsC,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAiBvE,MAAMC,QAAU,QAEpFhH,KAAK+lN,oBAAoBl/M,GACzBA,EAAIo7K,cAAcgY,cAAcyrB,EAAe7+M,EAAI81K,mBAAoBnuK,EAAO,QAAS,KAAMzK,GAC9E6J,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,UAA9D,IACIknC,EAAwE,IAApDxyC,KAAK45K,KAAKsR,iBAAiB,GAAG14I,mBAA6C,WAAlB,OAA6B,IAAOxyC,KAAK45K,KAAKsR,iBAAiB,GAAG14I,kBACnJplC,YAAW,WASP/J,EAAM+3L,eAAe/3L,EAAMu2K,MACvBhsK,SAASyd,eAAehoB,EAAMu2K,KAAKx2K,QAAQkI,GAAK,mBAChDsC,SAASyd,eAAehoB,EAAMu2K,KAAKx2K,QAAQkI,GAAK,iBAAiBvE,MAAMC,QAAU,WAEtFwrC,QApFU,CACjB,IAAI41I,EAAYvhL,EAAIu0K,YAEhB4qC,EAAYn/M,EAAIohL,kBAAkB,OAElCg+B,EAAYp/M,EAAIohL,kBAAkB,OAClCi+B,EAAgB/8M,KAAK6a,IAAIgiM,EAAU,KAAOC,EAAU,MACpDE,EAAiBh9M,KAAK6a,IAAIgiM,EAAU,KAAOC,EAAU,MACrDx7B,OAAkB,EAClBC,OAAkB,EACtB,GAAIg7B,EAAgB,KAA8B,YAAvB7+M,EAAI60K,eACL,IAAlBwqC,GAA0C,IAAnBC,GAAwBD,IAAkBC,IACjED,EAAgB99B,EAAU9iL,MAAQ,EAClC6gN,EAAiB/9B,EAAU/iL,QAE/BqgN,EAAgB5+M,WAAWqC,KAAKuS,IAAI0sK,EAAU9iL,MAAQ4gN,EAAe99B,EAAU/iL,OAAS8gN,GAAgBpiM,QAAQ,IAChH2hM,EAAgBA,EAAgB,KAAO,EAAIA,EAC3C7+M,EAAI2iL,eAAiBxpL,KAAKomN,kCAAkCV,EAAeQ,EAAeC,EAAgB/9B,EAAW49B,EAAWn/M,OAE/H,CACD,IAAIyR,EAAQzR,EAAI2iL,eAChBiB,EAAkBnyK,EAAMtS,GAAOoiL,EAAU9iL,MAAQg3E,EAAU8rG,EAAU9iL,MAAQogN,IAAmBt9B,EAAU9iL,MAAQvB,EAASiC,GAC3H0kL,EAAkBpyK,EAAMrS,GAAOmiL,EAAU/iL,OAASi3E,EAAU8rG,EAAU/iL,OAASqgN,IAAmBt9B,EAAU/iL,OAAStB,EAASkC,GAC9H,IAAIogN,EAAgBl9M,KAAK6a,IAAInd,EAAIohL,kBAAkB,OAAO,KAAOphL,EAAIohL,kBAAkB,OAAO,MAAQy9B,EACtGj7B,EAAmB47B,EAAgBx/M,EAAIu0K,YAAY/1K,OAAW+iL,EAAUpiL,IAAQggN,EAAU,MAAW59B,EAAU9iL,MAAQ,EAAM4gN,EAAgB,IAAQz7B,EACrJC,EAAmB27B,EAAgBx/M,EAAIu0K,YAAY/1K,OAAW+iL,EAAUniL,IAAQ+/M,EAAU,MAAW59B,EAAU/iL,OAAS,EAAM8gN,EAAiB,IAAQz7B,EACvJ7jL,EAAI2iL,eAAiB,IAAI3N,GAAM4O,EAAiBC,GAEpD7jL,EAAIy1E,MAAQopI,EACZ7+M,EAAIiiL,mBAAqBjiL,EAAI2iL,eACzBxpL,KAAK6nM,iBAAiBge,EAAeF,EAAWn3M,IAChD3H,EAAI2iL,eAAiB3iL,EAAIqrC,cACzBrrC,EAAIy1E,MAAQz1E,EAAI8gL,cAAgB9gL,EAAIynL,eAGpCtuL,KAAKo7L,eAAev0L,IAqDhC7G,KAAK45K,KAAK8N,gBAAiB,EACvB1nL,KAAK45K,KAAKjqK,UACV3P,KAAK4nM,qBAAqB/gM,EAAIm7K,UAAY74K,KAAKC,MAAMvC,EAAI87K,eAAiB97K,EAAIy1E,MAAOz1E,EAAIzD,QAAQkI,GAAK,cAI9G6+C,EAAKjqD,UAAUkmN,kCAAoC,SAAUV,EAAeQ,EAAeC,EAAgB/9B,EAAW49B,EAAWn/M,GAC7Hq/M,GAAiBR,EACjBS,GAAkBT,EAClB,IAAI38B,EAA+B,IAAnBi9B,EAAU,MAAoC,WAAtBn/M,EAAImiL,cAA6BniL,EAAIinB,cAAcxoB,MAAQ8iL,EAAU9iL,MAAQ,EACjHmlL,EAAkBrC,EAAUpiL,IAAQggN,EAAU,MAAW59B,EAAU9iL,MAAQ,EAAM4gN,EAAgB,IAAOn9B,EACxG2B,EAAkBtC,EAAUniL,IAAQ+/M,EAAU,MAAW59B,EAAU/iL,OAAS,EAAM8gN,EAAiB,IACvG,OAAO,IAAItqC,GAAM4O,EAAiBC,IAEtCvgI,EAAKjqD,UAAU2nM,iBAAmB,SAAUge,EAAeF,EAAWn3M,GAClE,IACIkhM,EADA7oM,EAAM7G,KAAK45K,KAEX/yK,EAAIm7K,YACJn7K,EAAI8gL,cAAgB,eAAkB9gL,EAAI8gL,eAAiB,EAAI9gL,EAAI8gL,cACnE9gL,EAAI2iL,eAAevjL,GAAKY,EAAI81K,mBAAmB12K,EAAK,IAAOY,EAAI8gL,eAAkB9gL,EAAIy1E,MACrFz1E,EAAI2iL,eAAexjL,GAAKa,EAAI81K,mBAAmB32K,EAAK,IAAOa,EAAI8gL,eAAkB9gL,EAAIy1E,OAEzF,IAAIyrH,EAA0B/nM,KAAK45K,KAAKouB,6BAoBxC,OATI0H,EAVC7oM,EAAIm7K,UAUM,CACPvzK,QAAQ,EAAOuB,KAAM,OAAQxB,KAAMA,EAAMorK,KAAM/yK,EAC/C81K,mBAAoB,CAAE19J,SAAU4mM,EAAepsG,QAAS5yG,EAAI81K,oBAAsB6M,eAAgB,CAAEvqK,SAAUpY,EAAIqrC,cAAeunE,QAAS5yG,EAAI2iL,gBAC9I7G,cAAe,CAAE1jK,SAAU0mM,EAAWlsG,QAAS5yG,EAAI87K,eAAiBrmG,MAAO,CAAEr9D,SAAUpY,EAAIynL,cAAe70E,QAAS5yG,EAAIy1E,OACvH4rH,YAAaH,EAAwBG,YAAaC,YAAaJ,EAAwBI,YACvFC,aAAcL,EAAwBK,aAAcC,aAAcN,EAAwBM,cAdnF,CACP55L,QAAQ,EAAOuB,KAAM,OAAQxB,KAAMA,EAAMorK,KAAM/yK,EAC/C81K,mBAAoB,GAAI6M,eAAgB,CAAEvqK,SAAUpY,EAAIqrC,cAAeunE,QAAS5yG,EAAI2iL,gBACpF7G,cAAe,GAAIrmG,MAAO,CAAEr9D,SAAUpY,EAAIynL,cAAe70E,QAAS5yG,EAAIy1E,OACtE4rH,YAAaH,EAAwBG,YAAaC,YAAaJ,EAAwBI,YACvFC,aAAcL,EAAwBK,aAAcC,aAAcN,EAAwBM,cAYlGxhM,EAAIoB,QAAQ,OAAQynM,GACbA,EAASjhM,QAEpB07C,EAAKjqD,UAAU4lN,yBAA2B,SAAUH,EAAWW,EAAcviN,EAAUyK,GACnF,IAAI3H,EAAM7G,KAAK45K,KACX2sC,EAAkB,IAClBp5L,EAAmB,YAAT3e,EAAqB,GAAe,UAATA,GAAoB83M,EAAe,EAAK,EAAI,GACjF7qK,EAAS50C,EAAIinB,cACb04L,EAAoC,IAAzBr9M,KAAK8jC,IAAI,EAAG04K,GACvBxoC,EAAwC,IAA5Bh0K,KAAK8jC,IAAI,EAAGq5K,GACxBtgN,GAAMjC,EAASiC,EAAIa,EAAI81K,mBAAmB32K,GAAKwgN,EAAY,IAC3DvgN,GAAMlC,EAASkC,EAAIY,EAAI81K,mBAAmB12K,GAAKugN,EAAY,IAC/D3/M,EAAI81K,mBAAmB32K,EAAsB,IAAjBsgN,EAAuB7qK,EAAOn2C,MAAQ,EAAyB,EAAlBihN,EAAuB,EAC5FxiN,EAASiC,EAAMA,EAAIm3K,EAAa,IACpCt2K,EAAI81K,mBAAmB12K,EAAsB,IAAjBqgN,EAAwB7qK,EAAOp2C,OAAS,EAAyB,EAAlBkhN,EAAuB,EAAgB,EAAVp5L,EACpGppB,EAASkC,EAAMA,EAAIk3K,EAAa,KAKxChzH,EAAKjqD,UAAUumN,mBAAqB,WAChCzmN,KAAK4pL,YAAa,EAClB,IAAI/iL,EAAM7G,KAAK45K,KACX9jK,EAAOjP,EAAIinB,cACfjnB,EAAI+hL,mBAAqB/hL,EAAI60K,eAC7B,IAKIgrC,EALAf,EAAY9+M,EAAI87K,cAChBkjC,EAAgBh/M,EAAI81K,mBACpBgqC,EAAW3mN,KAAK4mN,YAChBt8B,EAAUzjL,EAAI84B,aAAa2qJ,QAC3BkmB,EAAU3pM,EAAI84B,aAAa6wK,QAE/B,GAAImW,EAASthN,OAAS,GAAKshN,EAASrhN,MAAQ,EAAG,CAC3C,IAAIU,EAAIhG,KAAK4mN,YAAY5gN,EAAKhG,KAAK4mN,YAAYthN,MAAQ,EACnDW,EAAIjG,KAAK4mN,YAAY3gN,EAAKjG,KAAK4mN,YAAYvhN,OAAS,EACpDwhN,OAAwB,EAC5B,GAAKhgN,EAAIm7K,UAmBL6kC,EAAwBlB,EAAax8M,KAAKC,MAAMu8M,GAAe7vM,EAAKxQ,MAAQqhN,EAASrhN,MAAUwQ,EAAKzQ,OAASshN,EAASthN,QAAW,GACjIwhN,EAAyBA,GAAyBrW,GAAWqW,GAAyBv8B,EAAWu8B,EAAwBv8B,EACzHzjL,EAAI84B,aAAaI,WAAa8mL,EAC9B7mN,KAAK8lN,yBAAyBH,EAAWkB,EAAuB,CAAE7gN,EAAGA,EAAGC,EAAGA,IAC3EY,EAAI87K,cAAgBkkC,EACpBhgN,EAAI2iL,eAAexjL,GAAKa,EAAI81K,mBAAmB32K,EAAK,GAAMmD,KAAK8jC,IAAI,EAAG45K,IACjE19M,KAAK8jC,IAAI,EAAG45K,GACjBhgN,EAAI2iL,eAAevjL,GAAKY,EAAI81K,mBAAmB12K,EAAK,GAAMkD,KAAK8jC,IAAI,EAAG45K,IACjE19M,KAAK8jC,IAAI,EAAG45K,GACjBhgN,EAAIy1E,MAASnzE,KAAK8jC,IAAI,EAAG45K,GACzBH,EAAkB1mN,KAAK6nM,iBAAiBge,EAAeF,EAAW,IAC9De,GACA7/M,EAAI2iL,eAAiB3iL,EAAI81K,mBAAqB,IAAId,GAAM,EAAG,GAC3Dh1K,EAAIy1E,MAAQz1E,EAAI87K,cAAgB97K,EAAI84B,aAAaI,WAAa4lL,GAG9D9+M,EAAIo7K,cAAcgY,cAAc4sB,EAAuBhgN,EAAI81K,wBAnC/C,CAChB,IAAIrgG,EAAQz1E,EAAIynL,cAAgBznL,EAAIy1E,MACpCuqI,EAAwBvqI,EAAQnzE,KAAKC,OAAS0M,EAAKxQ,MAAQqhN,EAASrhN,MAAUwQ,EAAKzQ,OAASshN,EAASthN,QAAW,GAChHwhN,EAAwBA,EAAwB7mN,KAAK45K,KAAKj6I,aAAa2qJ,QAAUu8B,EAAwB7mN,KAAK45K,KAAKj6I,aAAa2qJ,QAChI,IAAId,EAAiB3iL,EAAIqrC,cAAgBrrC,EAAI2iL,eAC7C,GAAIq9B,GAAyBv8B,EAAS,CAClC,IAAIG,EAAkBjB,EAAexjL,GAAO8P,EAAKxQ,MAAQg3E,EAAUxmE,EAAKxQ,MAAQuhN,IAA2B/wM,EAAKxQ,MAAQU,GACpH0kL,EAAkBlB,EAAevjL,GAAO6P,EAAKzQ,OAASi3E,EAAUxmE,EAAKzQ,OAASwhN,IAA2B/wM,EAAKzQ,OAASY,GAC3HY,EAAI2iL,eAAiB,IAAI3N,GAAM4O,EAAiBC,GAEpD7jL,EAAIy1E,MAAQuqI,EAAwB7mN,KAAK45K,KAAKj6I,aAAa2qJ,QAAUu8B,EAAwB7mN,KAAK45K,KAAKj6I,aAAa2qJ,QACpHzjL,EAAIiiL,mBAAqBjiL,EAAI2iL,eAC7Bk9B,EAAkB1mN,KAAK6nM,iBAAiBge,EAAeF,EAAW,IAC9De,IACA7/M,EAAI2iL,eAAiB3iL,EAAIqrC,cACzBrrC,EAAIy1E,MAAQz1E,EAAIynL,eAuBnBo4B,IACD7/M,EAAI8gL,cAAgBk/B,EACpB7mN,KAAKo7L,eAAev0L,GAAK,GACzB7G,KAAK45K,KAAK8N,gBAAiB,EAC3B1nL,KAAK4mN,YAAc,MAG3B5mN,KAAKklN,YAAcllN,KAAKmlN,iBAAmBh8M,KAAKC,MAAMvC,EAAIy1E,SAAWt8E,KAAK45K,KAAKj6I,aAAa2qJ,QAC5FtqL,KAAK4nM,qBAAqB/gM,EAAIy1E,MAAOt8E,KAAK45K,KAAKx2K,QAAQkI,GAAK,cAEhE6+C,EAAKjqD,UAAU4mN,eAAiB,SAAUC,GACtC/mN,KAAKgnN,UAAY,EACjBhnN,KAAKinN,YAAcF,GAEvB58J,EAAKjqD,UAAUgnN,kBAAoB,WACV,IAAjBlnN,KAAKmnN,QACLnnN,KAAK8mN,eAAe,QAGpB9mN,KAAK8mN,eAAe,OAM5B38J,EAAKjqD,UAAUknN,oBAAsB,SAAUj6M,GAC3C,IAAItG,EAAM7G,KAAK45K,KACX+rC,EAAY9+M,EAAI87K,cAChByF,EAAYvhL,EAAIu0K,YACpBv0K,EAAIgiL,uBAAwB,EAC5BhiL,EAAIynL,cAAgBznL,EAAIy1E,MACxBz1E,EAAIqrC,cAAgBrrC,EAAI2iL,eACxB3iL,EAAI+hL,mBAAqB/hL,EAAI60K,eAC7B,IAAImqC,EAAgBh/M,EAAI81K,mBACpBrgG,EAAQmxG,GAAeztL,KAAKqnN,eAAgBrnN,KAAKsnN,eACjDC,EAAcp5B,GAAeJ,GAAW/tL,KAAKsnN,cAAetnN,KAAK45K,OACjE4tC,EAAWlrI,EAAQt8E,KAAKgnN,UAC5BhnN,KAAKgnN,UAAY1qI,EACjBt8E,KAAKolN,aAAeoC,EACpBxnN,KAAKolN,YAAcj8M,KAAKuS,IAAI1b,KAAK45K,KAAKj6I,aAAa2qJ,QAASnhL,KAAKwS,IAAI3b,KAAKolN,YAAaplN,KAAK45K,KAAKj6I,aAAa6wK,UAC9G,IAEIkW,EAFAG,EAAwB7mN,KAAKolN,YAGjC,GAAKv+M,EAAIm7K,UAkCJ,CACD,IAAIylC,EAAgBZ,EACpB7mN,KAAK8lN,yBAAyBH,EAAW8B,EAAe,CAAEzhN,EAAGuhN,EAAYvhN,EAAGC,EAAGshN,EAAYthN,IAC3FY,EAAI87K,cAAgB8kC,EACpB5gN,EAAI2iL,eAAexjL,GAAKa,EAAI81K,mBAAmB32K,EAAK,GAAMmD,KAAK8jC,IAAI,EAAGw6K,IACjEt+M,KAAK8jC,IAAI,EAAGw6K,GACjB5gN,EAAI2iL,eAAevjL,GAAKY,EAAI81K,mBAAmB12K,EAAK,GAAMkD,KAAK8jC,IAAI,EAAGw6K,IACjEt+M,KAAK8jC,IAAI,EAAGw6K,GACjB5gN,EAAIy1E,MAASnzE,KAAK8jC,IAAI,EAAGw6K,GACzBf,EAAkB1mN,KAAK6nM,iBAAiBge,EAAeF,EAAW,IAC9De,GACA7/M,EAAI2iL,eAAiB3iL,EAAI81K,mBAAqB,IAAId,GAAM,EAAG,GAC3Dh1K,EAAIy1E,MAAQz1E,EAAIynL,cAChBznL,EAAI87K,cAAgBgjC,EACpB9+M,EAAI84B,aAAaI,WAAal5B,EAAIynL,eAGlCznL,EAAIo7K,cAAcgY,cAAcwtB,EAAe5gN,EAAI81K,wBAnDvC,CAEhB,IAAIqpC,EAAYn/M,EAAIohL,kBAAkB,OAElCg+B,EAAYp/M,EAAIohL,kBAAkB,OAClCk+B,EAAiBh9M,KAAK6a,IAAIgiM,EAAU,KAAOC,EAAU,MACrDC,EAAgB/8M,KAAK6a,IAAIgiM,EAAU,KAAOC,EAAU,MACpDz8B,EAAiB3iL,EAAI2iL,eACrBiB,OAAkB,EAClBC,OAAkB,EACtB,GAAIm8B,EAAwB,KAA8B,YAAvBhgN,EAAI60K,eACb,IAAlBwqC,GAA0C,IAAnBC,GAAwBD,IAAkBC,IACjED,EAAgB99B,EAAU9iL,MAAQ,EAClC6gN,EAAiB/9B,EAAU/iL,QAE/BwhN,EAAwB//M,WAAWqC,KAAKuS,IAAI0sK,EAAU9iL,MAAQ4gN,EAAe99B,EAAU/iL,OAAS8gN,GAAgBpiM,QAAQ,IACxH8iM,EAAwBA,EAAwB,KAAO,EAAIA,EAC3DhgN,EAAI2iL,eAAiBxpL,KAAKomN,kCAAkCS,EAAuBX,EAAeC,EAAgB/9B,EAAW49B,EAAWn/M,OAEvI,CACD,IAAIw/M,EAAgBl9M,KAAK6a,IAAInd,EAAIohL,kBAAkB,OAAO,KAAOphL,EAAIohL,kBAAkB,OAAO,MAAQ4+B,EACtGp8B,EAAkBjB,EAAexjL,GAAOoiL,EAAU9iL,MAAQuB,EAAIy1E,MAAU8rG,EAAU9iL,MAAQuhN,IAA2Bz+B,EAAU9iL,MAAQiiN,EAAYvhN,GACnJ0kL,EAAkBlB,EAAevjL,GAAOmiL,EAAU/iL,OAASwB,EAAIy1E,MAAU8rG,EAAU/iL,OAASwhN,IAA2Bz+B,EAAU/iL,OAASkiN,EAAYthN,GACtJwkL,EAAmB47B,EAAgBx/M,EAAIu0K,YAAY/1K,OAAW+iL,EAAUpiL,IAAQggN,EAAU,MAAW59B,EAAU9iL,MAAQ,EAAM4gN,EAAgB,IAAQz7B,EACrJC,EAAmB27B,EAAgBx/M,EAAIu0K,YAAY/1K,OAAW+iL,EAAUniL,IAAQ+/M,EAAU,MAAW59B,EAAU/iL,OAAS,EAAM8gN,EAAiB,IAAQz7B,EACvJ7jL,EAAI2iL,eAAiB,IAAI3N,GAAM4O,EAAiBC,GAEpD7jL,EAAIy1E,MAAQuqI,EACZH,EAAkB1mN,KAAK6nM,iBAAiBge,EAAeF,EAAW,IAC9De,IACA7/M,EAAI2iL,eAAiB3iL,EAAIqrC,cACzBrrC,EAAIy1E,MAAQz1E,EAAIynL,eAuBxBznL,EAAI8gL,cAAgBk/B,EACfH,GACD1mN,KAAKo7L,eAAev0L,GAEpB,OAAQ8I,UACR3P,KAAK4nM,qBAAqB/gM,EAAIm7K,UAAY74K,KAAKC,MAAMvC,EAAI87K,eAAiB97K,EAAIy1E,MAAOz1E,EAAIzD,QAAQkI,GAAK,cAM9G6+C,EAAKjqD,UAAUwnN,kBAAoB,WAC/B,IAAI7gN,EAAM7G,KAAK45K,KACX+tC,EAAO3nN,KAAK4nN,gBACZjzI,EAAO30E,KAAK6nN,gBAEZziM,EAAS,CAAE9f,MAAO,EAAGqQ,MAAO3V,KAAK45K,KAAK1pJ,WAAWmjK,0BACjD/tL,EAAQ6D,KAAK6a,IAAI2wD,EAAK3uE,EAAI2hN,EAAK3hN,GAC/BX,EAAS8D,KAAK6a,IAAI2wD,EAAK1uE,EAAI0hN,EAAK1hN,GAChCD,EAAM2uE,EAAK3uE,EAAI2hN,EAAK3hN,EAAK2hN,EAAK3hN,EAAI2hN,EAAK3hN,EAAIV,EAC3CW,EAAM0uE,EAAK1uE,EAAI0hN,EAAK1hN,EAAK0hN,EAAK1hN,EAAI0hN,EAAK1hN,EAAIZ,EAC7B09K,GAAel8K,EAAIzD,QAAQkI,IAAIlE,wBACjD,GAAKpB,EAAIa,EAAIu0K,YAAYp1K,GAAKA,EAAKa,EAAIu0K,YAAYp1K,EAAIa,EAAIu0K,YAAY91K,OAClEW,EAAIY,EAAIu0K,YAAYn1K,GAAOA,EAAIY,EAAIu0K,YAAYn1K,EAAIY,EAAIu0K,YAAY/1K,OAAS,CAC7ErF,KAAK4mN,YAAc,IAAIloI,GAAK14E,EAAGC,EAAGX,EAAOD,GACzC,IAAIyiN,EAAgBjhN,EAAIye,SAASguB,UAAU,CACvChoC,GAAIzE,EAAIzD,QAAQkI,GAAK,0BACrBhG,MAAOuB,EAAIinB,cAAcxoB,MACzBD,OAAQwB,EAAIinB,cAAczoB,OAC1B0B,MAAO,wBAEPghN,EAAa,IAAI/pC,GAAWn3K,EAAIzD,QAAQkI,GAAK,YAAatL,KAAK45K,KAAK1pJ,WAAWijK,uBAAwB/tK,EAAQplB,KAAK45K,KAAK1pJ,WAAWkjK,yBAA0BpzL,KAAK4mN,YAAa,EAAG,EAAG,GAAI,KAC9LkB,EAAcpjN,YAAYmC,EAAIye,SAASg7B,cAAcynK,IACrDhlC,GAAel8K,EAAIzD,QAAQkI,GAAK,sBAAsB5G,YAAYojN,KAa1E39J,EAAKjqD,UAAU8nN,iBAAmB,SAAU5kN,EAASsxC,EAAS1uC,EAAGC,EAAGq2E,GAChE,IAAIt5E,EAAmD,IAAxChD,KAAKu8K,aAAa/pI,mBAA6C,WAAlB,OAA6B,IAAOxyC,KAAKu8K,aAAa/pI,kBAC7GkC,GAAwB,IAAb1xC,IAAkBhD,KAAK45K,KAAKoI,UAMvChiL,KAAK45K,KAAKoI,WACXoM,GAAYhrL,EAAS,EAAGJ,EAAU,IAAIs3K,GAAYt0K,EAAGC,GAAIq2E,EAAOt8E,KAAK45K,KAAKwB,YAAap7K,KAAK45K,MANtF55K,KAAK45K,KAAKoI,WAAa5+K,EAAQkI,GAAGtH,QAAQ,oBAAsB,GAClEZ,EAAQuH,aAAa,YAAa,SAAW,EAAU,gBAAkB3E,EAAI,IAAMC,EAAI,OAWnGkkD,EAAKjqD,UAAUk7L,eAAiB,SAAUxhB,EAAMllI,GAC5C,IACImsI,EAMAuO,EAPA/rL,EAAQrD,KAEZA,KAAKioN,cAAgB,EAMrB,IAAI3rI,EAAQs9F,EAAKt9F,MACbt2E,EAAI4zK,EAAK4P,eAAexjL,EACxBC,EAAI2zK,EAAK4P,eAAevjL,EAO5B,GAJA2zK,EAAK8pB,oBAAsB,GACvB91L,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,iBAC1C2zE,GAAc26F,EAAKx2K,QAAQkI,GAAK,gBAEhCtL,KAAK0oM,mBAAoB,CAgLzB,IA/KA,IAAIv2J,EAAU,SAAUjE,GACpB,IAAI4yI,EAAe1uI,EAAOs2J,mBAAmBz9K,WAAWijB,GACxD,GAA6B,MAAzB4yI,EAAapxK,QAAiB,CAC9B0iC,EAAO61K,gBACP71K,EAAO3lC,MAAQq0K,EAAax1K,GAAGtH,QAAQ,iBAAmB,GAAK8C,WAAWg6K,EAAax1K,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IAC9HmuC,EAAOmqI,aAAe3C,EAAKsR,iBAAiB94I,EAAO3lC,OAmKnD,IAlKA,IAAIy7M,EAAWtuC,EAAKqI,cAAcC,gBAAgB9vI,EAAOmqI,cACrD4rC,EAAernC,EAAa9jI,kBAC5B4jD,EAAU,SAAU/8E,GACpB,IAAIukM,EAAatnC,EAAa71J,WAAWpH,GACzC,GAAMukM,EAAW98M,GAAGtH,QAAQ,mBAAqB,GAASokN,EAAW98M,GAAGtH,QAAQ,kBAAoB,GAC1FokN,EAAW98M,GAAGtH,QAAQ,0BAA4B,GA2BvD,GAAIokN,EAAW98M,GAAGtH,QAAQ,mBAAqB,EAAG,CAKnD,IAAIqkN,EACJ,GALMj2K,EAAO+M,WAAe,eAAkBipK,EAAWn9L,WAAW,KAChEmnB,EAAOk2K,iBAAiBF,EAAWn9L,WAAW,GAAIi9L,EAAUliN,EAAGC,EAAGq2E,EAAO,SAAUwkG,EAAcpsI,GAErG0zK,EAAatnC,EAAa71J,WAAWpH,IAEhC,eAAkBukM,KAAqD,IAAtCA,EAAW98M,GAAGtH,QAAQ,aACxDpE,MAAMM,UAAU+uF,QAAQ3rF,KAAK8kN,EAAWn9L,YAAY,SAAU8hK,EAAWvpK,GACrEngB,EAAMklN,gBAAgBx7B,EAAWm7B,EAAUliN,EAAGC,EAAGq2E,EAAO,SAAU5nC,GACjD/iC,SAASo7K,EAAU,MAAM9oL,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IAAlF,IACIw4K,EAAY9qK,SAASo7K,EAAU,MAAM9oL,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IAC5Eu0C,EAAc7mC,SAASo7K,EAAU,MAAM9oL,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IAEpF,GADAokN,EAAoBhlN,EAAMk5K,aAAaiG,eAAehqI,GAAahG,kBAAoB,GAAuB,WAAlB,OACxFnvC,EAAMk5K,aAAaiG,eAAehqI,GAAauuJ,uBAAuBpmM,OAAS,EAG/E,IADA,IAAIqmM,EAAwB3jM,EAAMk5K,aAAaiG,eAAehqI,GAAap5B,WAAWq9J,GAC7Er+D,EAAM,EAAGA,EAAM/6G,EAAMk5K,aAAaiG,eAAehqI,GAAauuJ,uBAAuBpmM,OAAQy9G,IAC9F/6G,EAAMk5K,aAAaiG,eAAehqI,GAAauuJ,uBAAuB3oF,GAAK,cAC3E4oF,EAAsB,aACtB3jM,EAAMk5K,aAAaiG,eAAehqI,GAAauuJ,uBAAuB3oF,GAAK,eACvE4oF,EAAsB,cAC1BptB,EAAK0uB,gBAAgBjlM,EAAMk5K,aAAaiG,eAAehqI,GAAa8qD,kBAAmBs2E,EAAMwuC,EAAWniK,SAASziC,GAAIngB,EAAMk5K,aAAaiG,eAAehqI,GAAap5B,WAAWq9J,IAI3L,IAAMp5K,EAAMk5K,aAAa/pI,kBAAoB,GAAuB,WAAlB,SAAiConI,EAAKsR,iBAAiB,GAAG14I,kBAAoB,GAAuB,WAAlB,SAA2D,aAA5BnvC,EAAMk5K,aAAa/tK,QAA0BnL,EAAM87C,UACnN,GAAIy6H,EAAKoI,UAAW,CAChB,IAAIt8H,EAAe93C,SAAS1B,cAAc,iBACtCw5C,IAAkB93C,SAAS1B,cAAc,yBAA4Bm8M,IACrE3iK,EAAa3+C,MAAMC,QAAU,aAIjCooL,EAAc,oBACdg5B,EAAWrhN,MAAMwsC,QAAU67I,KAInCh9I,EAAO+M,WAAay6H,EAAK4f,aAAanW,eAAe1iL,OAAS,EAC9DkjL,GAAgBjK,EAAK4f,aAAanW,eAAgBzJ,EAAMwuC,GAAY,GAE/DxuC,EAAK4f,aAAanW,eAAe1iL,OAAS,IAC/Ci5K,EAAK4f,aAAanW,eAAiB,GAC/Bz1K,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,iBAC1C2zE,GAAc26F,EAAKx2K,QAAQkI,GAAK,iBAGpCsC,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,iBAAmBsuK,EAAK0yB,kBAAkBC,gBAAgBvoM,QAAQ,mBACxGouC,EAAO+M,WAAW,CACtB,IAAIqpK,EAAc5uC,EAAK0yB,kBACnBvmH,EAAiBqiI,EAAWl8M,cAAc,IAAMs8M,EAAYjc,iBAChE,IAAK,eAAkBxmH,GACnB,GAA8C,WAA1CA,EAAe,SAAS,cACxB9G,GAAc26F,EAAKx2K,QAAQkI,GAAK,oBAE/B,CACD,IAAIm9M,EAAM3hN,WAAWi/E,EAAer7E,aAAa,aAAazG,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAK,IACjGq6G,EAAMx3G,WAAWi/E,EAAer7E,aAAa,aAAazG,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAK,IACjG21K,EAAKoI,YACLymC,IAAQ39L,GAAW8uJ,EAAKx2K,QAAQkI,GAAK,gBAAgB,SAAS,QAAQrH,MAAM,MAAM,GAClFq6G,IAAQxzF,GAAW8uJ,EAAKx2K,QAAQkI,GAAK,gBAAgB,SAAS,OAAOrH,MAAM,MAAM,IAErFukN,EAAYx7D,WAAWr/H,SAAS3nB,EAAIyiN,EACpCD,EAAYx7D,WAAWr/H,SAAS1nB,EAAIq4G,EACpCkqG,EAAYx7D,WAAW5qE,iBAAkB,SAMxD,GAAIgmI,EAAW98M,GAAGtH,QAAQ,kBAAoB,EAE/C,IADA,IAAIg7K,OAAe,EACVx7J,EAAI,EAAGA,EAAI4kM,EAAWprK,kBAAmBx5B,IAAK,CACnDw7J,EAAeopC,EAAWn9L,WAAWzH,GACrCq9J,EAAa/5K,WAAWk4K,EAAa1zK,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IAG5E,IAFA,IAAIykN,EAAa5hN,WAAWk4K,EAAa1zK,GAAGrH,MAAM,iBAAiB,GAAGA,MAAM,KAAK,IAC7Ew4K,EAAY31K,WAAWk4K,EAAa1zK,GAAGrH,MAAM,iBAAiB,GAAGA,MAAM,KAAK,IACvE81G,EAAI,EAAGA,EAAI6/D,EAAK+jB,aAAaE,iBAAiBl9L,OAAQo5G,IAAK,CAEhE,IAAI8jF,EAAmBjkB,EAAK+jB,aAAaE,iBAAiB9jF,GAC1D,GAAI8jF,EAAiB,gBAAkBhd,GAAcgd,EAAiB,iBAAmB6qB,GACrF7qB,EAAiB,eAAiBphB,EAAW,CAC7C,IAAInoI,EAAUupJ,EAAiB,UAAU,KACrCtpJ,EAAUspJ,EAAiB,UAAU,KACrCrjI,GAAalmB,EAAUtuC,GAAKs2E,EAC5BqsI,GAAap0K,EAAUtuC,GAAKq2E,EAC5Bt5E,EAAqD,IAA1CovC,EAAOmqI,aAAa/pI,mBAA6C,WAAlB,OAA6B,IAAOJ,EAAOmqI,aAAa/pI,kBACjHkC,GAAwB,IAAb1xC,EAIZmtL,GAAgBnR,EAAc,EAAGh8K,EAAU,IAAIs3K,GAAY9/G,EAAUmuJ,IAHrE3pC,EAAar0K,aAAa,YAAa,cAAgB6vD,EAAW,IAAMmuJ,EAAW,MAKvF,aAKX,GAAIP,EAAW98M,GAAGtH,QAAQ,0BAA4B,IAAM,eAAkB41K,EAAK4J,OAAOpxI,EAAO3lC,QAAS,CAC3G2lC,EAAO+rJ,UAAY,GACnBvkB,EAAK+pB,mBAAqB,GAC1B/pB,EAAK+pB,mBAAqB/pB,EAAK/0J,gBAAgBm3B,qBAC/C,IAAI4sK,GAAgBhvC,EAAKoI,WAAattI,EACtC,IAASlxB,EAAI,EAAGA,EAAI4kM,EAAWprK,kBAAmBx5B,IAC9C,GAAI4kM,EAAWn9L,WAAWzH,GAAG,MAAMxf,QAAQ,iBAAmB,EAAG,CAC7D,IAAIqoC,EAAavlC,WAAWshN,EAAWn9L,WAAWzH,GAAG,MAAMvf,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IAC/FmuC,EAAOy2K,eAAiBT,EAAWn9L,WAAWzH,GAAGpc,wBACjDwyK,EAAK8pB,oBAAoBr3L,KAAK+lC,EAAOy2K,gBACrCz2K,EAAO02K,mBAAmBV,EAAWn9L,WAAWzH,GAAI0kM,EAAUliN,EAAGC,EAAGq2E,EAAO,YAAassI,GACxF,IAAIlwM,EAAYkhK,EAAK4J,OAAOpxI,EAAO3lC,OAAOuxL,kBACtC54K,EAAS1M,EAAU0M,OACvB,GAAI5B,EAAI,GAAK4B,EAAO,SAAW,GACvBgjM,EAAWn9L,WAAWzH,EAAI,GAAG,MAAMxf,QAAQ,gBAAkB,IAAM,eAAkB41K,EAAK+pB,mBAAmBt3J,IAAc,CAC3H,IAAI08K,GAAWnvC,EAAK+pB,mBAAmBt3J,GAAY,YAAY,KAAOrmC,GAAKs2E,EACvE0sI,GAAWpvC,EAAK+pB,mBAAmBt3J,GAAY,YAAY,KAAOpmC,GAAKq2E,EACvE2sI,EAAWb,EAAWn9L,WAAWzH,GAAG,eACpCzc,EAAQ6yK,EAAK4J,OAAOpxI,EAAO3lC,OAAOuxL,kBAAkBpxK,UACpDs8L,EAAezrI,GAAYwrI,EAAUliN,GACrComB,EAAU,EACVg8L,EAAcf,EAAWn9L,WAAWzH,EAAI,GACxC4lM,EAAQL,EAASG,EAAa,SAAW,EACzCG,EAAQL,EAASE,EAAa,UAAY,EAAI/7L,EAClDg8L,EAAY,gBAAgB,IAAKC,GACjCD,EAAY,gBAAgB,IAAKE,WArJ7CzvC,EAAKoI,WAAcomC,EAAW98M,GAAGtH,QAAQ,gBAAkB,GAC3DokN,EAAWjjN,SACP27K,EAAa76H,SAAStlD,OAAS,GAAKmgL,EAAa76H,SAAS,GAC1D66H,EAAal9G,aAAag2G,EAAKygB,qBAAqBE,iBAAiBnoJ,EAAOmqI,aAAc3C,EAAK+I,cAAevwI,EAAO3lC,OAAQq0K,EAAa76H,SAAS,IAGnJ66H,EAAap8K,YAAYk1K,EAAKygB,qBAAqBE,iBAAiBnoJ,EAAOmqI,aAAc3C,EAAK+I,cAAevwI,EAAO3lC,SAGnHmtK,EAAKoI,WAAcomC,EAAW98M,GAAGtH,QAAQ,oBAAsB,EAChEouC,EAAOmqI,aAAa0Q,gBAAgBC,SAASvsL,OAAS,IACtDyxC,EAAOmqI,aAAa0Q,gBAAgBC,SAASrmL,KAAI,SAAUomL,EAAiBq8B,GACxE,IAAI9sC,EAAayQ,EAAgBz1K,OAC7Bo/D,EAAO0lG,GAAqB1C,EAAMA,EAAK+I,cAAet/K,EAAMk5K,aAAcC,GAC1Ep5K,EAAUwK,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,eAAiBjI,EAAMoJ,MAAQ,iBAAmB68M,GAC1GlmN,EAAQuH,aAAa,IAAKisE,MAE9BhpE,SAASyd,eAAeuuJ,EAAKx2K,QAAQkI,GAAK,eAAiB8mC,EAAO3lC,MAAQ,mBAAmB1F,MAAM8tC,WAAa,KAG1E,IAArCuzK,EAAW98M,GAAGtH,QAAQ,YAC3B8oL,GAAkBs7B,EAAYh2K,EAAO3lC,MAAO6vE,EAAOs9F,GACnDA,EAAKkP,mBAAqBlP,EAAK4P,eAC/Bp3I,EAAO41K,iBAAiBI,EAAY1zK,EAAS1uC,EAAGC,EAAGq2E,KAqItDz4D,EAAI,EAAGA,EAAIskM,EAActkM,IAC9B+8E,EAAQ/8E,GAGhB+1J,EAAKuhB,mBAEL/oJ,EAASpyC,KACJkuC,EAAM,EAAGA,EAAMluC,KAAK0oM,mBAAmB1rJ,kBAAmB9O,IAC/DiE,EAAQjE,GAEP,eAAkBluC,KAAKu8K,eACnB7nI,GAAmD,IAAxC10C,KAAKu8K,aAAa/pI,oBAA2BonI,EAAKoI,WAC9DhiL,KAAKivL,gBAAgBjpL,EAAGC,EAAGq2E,EAAOs9F,KAKlDzvH,EAAKjqD,UAAUooN,iBAAmB,SAAUllN,EAAS03K,EAAQ90K,EAAGC,EAAGq2E,EAAO9tE,EAAMsyK,EAAcpsI,GAC1F,IAGI6nB,EAHAl5D,EAAQrD,UACI,IAAZ00C,IAAsBA,GAAU,GAGpC,IAAIwtK,EAAY,EACZqH,EAAe,EACfC,EAAuB,EACvB3oC,EAAalvK,UAAUvO,GAAoB09K,GAAcx1K,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACpGm+M,EAAkBpiN,KAAK45K,KAAKt0J,SAASY,YAAY,CACjD5a,GAAItL,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAC3B07D,MAAO,iBAEXo7I,EAAgBr7M,MAAMiqC,cAAgB,OAClCpjC,SAASyd,eAAe+2L,EAAgB92M,KACxC2zE,GAAcmjI,EAAgB92M,IAElC,IAAIm+M,EAAezpN,KAAK45K,KAAKwB,YACzB2tB,EAAyB,eAAc,MAAO,CAC9Cz9L,GAAItL,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,0BACzDr8K,UAAW,aAEfukM,EAAuBhiM,MAAMwsC,QAAU,iEAC1Bk2K,EAAaxjN,EADa,WAEzBwjN,EAAazjN,EAFY,aAGvByjN,EAAapkN,OAHU,YAIxBokN,EAAankN,MAAQ,MAChCsI,SAASyd,eAAe09K,EAAuBz9L,KAC/C2zE,GAAc8pH,EAAuBz9L,IAEzC,IAAIo+M,EAAgB1pN,KAAK45K,KAAKsR,iBAAiBrK,GAC/CjhL,MAAMM,UAAU+uF,QAAQ3rF,KAAKomN,EAAclnC,gBAAgB,SAAUA,EAAgBhqI,GAEjF,IAAImxK,EAAcnnC,EAAepjK,WAEjCxf,MAAMM,UAAU+uF,QAAQ3rF,KAAKqmN,GAAa,SAAUrsM,EAAMm/J,GACtDp5K,EAAMu2K,KAAK2pB,gBAAkB/qJ,GAAe,GAAmB,IAAdikI,EAAkB,EAAIp5K,EAAMu2K,KAAK2pB,gBAClF,IAAIhyI,EAAY,CACZ5kC,SAAU61J,EAAe71J,SAAUrP,KAAMA,EAAMs8J,KAAMv2K,EAAMu2K,KAAMljK,OAAQ8rK,EACzE/zK,QAAQ,EAAOuB,KAAM6oK,EAAiBz4J,KAAMoiK,EAAepiK,KAAMkgK,eAAgBkC,EAAelC,eAChGE,eAAgBgC,EAAehC,eAAgBn7K,OAAQm9K,EAAen9K,OACtEC,MAAOk9K,EAAel9K,MAAOouC,SAAU8uI,EAAe9uI,SAAUgtI,kBAAmB8B,EAAe9B,kBAAmB50J,MAAO02J,EAAe12J,MAC3I1G,OAAQo9J,EAAep9J,QAE3BmsC,EAAYgvH,GAAkBhvH,EAAWj0C,GACzCi0C,EAAY8uH,GAAkB9uH,EAAWj0C,GACzCja,EAAMu2K,KAAK3xK,QAAQ,kBAAmBspD,GAAW,SAAUgxJ,GACnD//B,EAAehC,iBAAmBjvH,EAAUivH,iBAC5CjvH,EAAYgvH,GAAkBhvH,EAAWj0C,IAEzCklK,EAAelC,iBAAmB/uH,EAAU+uH,iBAC5C/uH,EAAY8uH,GAAkB9uH,EAAWj0C,IAE7C,IAAIssM,EAAS,eAAkBpnC,EAAeE,mBAC4B,eAAkBplK,EAAK,aAC7D,eAAkBA,EAAK,aAAkC,KAAnBA,EAAK,YAA3ExW,WAAWwW,EAAK,aADhB4R,OAAOwwJ,GAAmBpiK,EAAMklK,EAAeE,oBAE/CmnC,EAAS,eAAkBrnC,EAAeC,oBAC6B,eAAkBnlK,EAAK,cAC7D,eAAkBA,EAAK,cAAoC,KAApBA,EAAK,aAA7ExW,WAAWwW,EAAK,cADhB4R,OAAOwwJ,GAAmBpiK,EAAMklK,EAAeC,qBAE/CltI,EAASitI,EAAejtI,OAC5B,IAAKgc,EAAU9iD,QAAU+zK,EAAe7rK,UAAY,eAAkBkzM,KAAU,eAAkBD,GAAO,CACrG,IAAIhqC,EAAWv8K,EAAMu2K,KAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,gBAC/DroI,EAAc,cAAgBikI,EAChChvJ,EAAcpqB,EAAMu2K,KAAc,UAAI8C,GAA0B,IAAIpC,GAAYuvC,EAAMD,GAAOvmN,EAAMu2K,KAAK+I,cAAet/K,EAAMu2K,KAAK+C,oBAAoB,GAAQhC,GAAkBivC,EAAMC,EAAM/uC,EAAQ4uC,EAAermN,EAAMu2K,MACzN6K,EAAa,CAAEz+K,EAAGA,EAAGC,EAAGA,IACxBsrD,EAAU5kC,UAAc/O,MAAM6P,EAAWznB,IAAO4X,MAAM6P,EAAWxnB,GAI3DsrD,EAAU5kC,UAAc/O,MAAM6P,EAAWznB,IAAO4X,MAAM6P,EAAWxnB,KACvEsjN,IACA,GAAOh4J,EAAWixH,EAAgBmnC,EAAaltC,EAAWhvJ,EAAYg3J,EAAY7E,EAAUrqI,EAAQ+mC,EAAOj5E,EAAMu2K,KAAMwoC,KALvHoH,IACA,GAAej4J,EAAWgL,EAAYqjH,EAAUtiK,EAAMk7B,EAAauwJ,EAAwBt7K,EAAYg3J,EAAYnoG,EAAO/mC,EAAQlyC,EAAMu2K,OAOhJsoC,GAAetkM,MAAMgsM,IAAUhsM,MAAMisM,GAAa,EAAJ,EAC9CL,GAAyBj4J,EAAgB,OAAI,EAAI,EACjDg4J,GAAiBh4J,EAAgB,OAAI,EAAI,EACzCluD,EAAMu2K,KAAK2pB,gBAAmB,eAAkBqmB,IAAS,eAAkBC,GACrExmN,EAAMu2K,KAAK2pB,gBAAkB,EAAIlgM,EAAMu2K,KAAK2pB,gBAClD,IAAI3f,EAAmB+lC,EAAYhpN,OAAS0C,EAAMu2K,KAAK2pB,gBACnDif,GAAqB,EACzB,GAAIJ,EAAgBplK,oBAAuB4mI,EAAmB4lC,EAAuBtH,GAAwB,aAAT1zM,EAAsB,CACtH,GAAInL,EAAMu2K,KAAKoI,UAAW,CACtB,IAAI8nC,EAAkBl8M,SAASyd,eAAehoB,EAAMu2K,KAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,mBAChGmC,EAAiBp1K,SAASyd,eAAehoB,EAAMu2K,KAAKx2K,QAAQkI,GAAK,eAAiBu1K,EAAa,kBAC9F,eAAkBipC,GAId,eAAkB9mC,GAInBlC,EAAal9G,aAAaw+I,EAAiBthC,EAAa96H,mBAHxDg9H,EAAeC,sBAAsB,WAAYm/B,GAJrD0H,EAAgB7mC,sBAAsB,WAAYm/B,QAYtDthC,EAAap8K,YAAY09M,GAEzBsH,EAAcloC,sBAAsBihC,kBACpCp/M,EAAMu2K,KAAK10I,UAAUxgC,YAAY09M,GACjC/+M,EAAMu2K,KAAKx2K,QAAQsB,YAAYrB,EAAMu2K,KAAK10I,WAC1Cs9K,EAAqB7hC,GAAgB+oC,EAAetH,EAAiB/+M,EAAMu2K,KAAMiH,EAAYuhC,EAAiBthC,GAAc,GAAM,IAGtIioB,EAAuB/rJ,oBAAuB4mI,EAAmB2lC,EAAerH,GAAcn/B,GAAe1/K,EAAMu2K,KAAKx2K,QAAQkI,GAAK,wBACrIy3K,GAAe1/K,EAAMu2K,KAAKx2K,QAAQkI,GAAK,sBAAsB5G,YAAYqkM,GACrEzsH,GAAS,GACLotI,EAAcloC,sBAAsBihC,kBAAoBD,GACxD7hC,GAAgB+oC,EAAe3gB,EAAwB1lM,EAAMu2K,KAAMiH,EAAYuhC,EAAiBthC,GAAc,GAAO,cAkBjJ32H,EAAKjqD,UAAU+uL,gBAAkB,SAAUjpL,EAAGC,EAAGq2E,EAAOs9F,GACpD,IAAK,IAAI54K,EAAI,EAAGA,EAAIhB,KAAKioN,cAAejnN,IAAK,CACzC,IAAI85K,EAASlB,EAAKqI,cAAcC,gBAAgBliL,KAAKu8K,cACjDwtC,EAAwBhnC,GAAenJ,EAAKx2K,QAAQkI,GAAK,eACzDtK,EAAI,2BACJgpN,EAA6BjnC,GAAenJ,EAAKx2K,QAAQkI,GAAK,eAC5DtK,EAAI,yBACNgiL,EAAiBD,GAAenJ,EAAKx2K,QAAQkI,GAAK,eAChDtK,EAAI,mBACV,IAAM,eAAkB+oN,IAA2BA,EAAsB/sK,kBAAoB,EAAG,CAC5F+sK,EAAsBhjN,MAAM8tC,WAAa,UACzC,IAAK,IAAIrxB,EAAI,EAAGA,EAAIumM,EAAsB/sK,kBAAmBx5B,IACzDxjB,KAAKuoN,gBAAgBwB,EAAsB9+L,WAAWzH,GAAIs3J,EAAQ90K,EAAGC,EAAGq2E,EAAO,YAGvF,IAAM,eAAkB0tI,IAAgCA,EAA2BhtK,kBAAoB,EACnG,IAASx5B,EAAI,EAAGA,EAAIwmM,EAA2BhtK,kBAAmBx5B,IAC9DxjB,KAAK8oN,mBAAmBkB,EAA2B/+L,WAAWzH,GAAIs3J,EAAQ90K,EAAGC,EAAGq2E,EAAO,YAG/F,IAAK,eAAkB0mG,GACnB,IAASx/J,EAAI,EAAGA,EAAIw/J,EAAehmI,kBAAmBx5B,IAAK,CACvD,IAAIle,EAAQs0K,EAAKsR,iBAAiBlqL,GAAGisL,gBAAgBC,SAAS1pK,GAAG0J,YACjE81J,EAAe/3J,WAAWzH,GAAGyH,WAAW,GAAGtgB,aAAa,gBAAiBrF,EAAQg3E,GAAO1qE,eAKxGu4C,EAAKjqD,UAAU4oN,mBAAqB,SAAU1lN,EAAS03K,EAAQ90K,EAAGC,EAAGq2E,EAAO9tE,EAAMkmC,QAC9D,IAAZA,IAAsBA,GAAU,GAEpC,IACIl4B,EACAytM,EAEAhB,EACAC,EACAgB,EAGA79K,EATA89K,EAAkBnqN,KAAK45K,KAAK/0J,gBAAgBm3B,qBAG5Cj1C,EAAQ/G,KAAK45K,KAAK4J,OAAOxjL,KAAKyM,OAAOuxL,kBAAkBpxK,UAIvDi0J,EAAa/5K,WAAW1D,EAAQkI,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IACvEgnL,EAAankL,WAAW1D,EAAQkI,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,IAEvEb,EAAQkI,GAAGtH,QAAQ,iBAAmB,IACtCqoC,EAAavlC,WAAW1D,EAAQkI,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,KAG3E,IADA,IAAIjB,EAAmD,IAAxChD,KAAKu8K,aAAa/pI,mBAA6C,WAAlB,OAA6B,IAAOxyC,KAAKu8K,aAAa/pI,kBACzGunE,EAAI,EAAGA,EAAIowG,EAAgBxpN,OAAQo5G,IAAK,CAE7C,IAAI7xE,EAAQiiL,EAAgBpwG,GAC5B,GAAI7xE,EAAM,gBAAkB24I,GAAc34I,EAAM,gBAAkB+iJ,GAC3D/iJ,EAAM,gBAAkBmE,EAAY,CACvC,IAAI08K,EAAS7gL,EAAM,YAAY,KAC3B8gL,EAAS9gL,EAAM,YAAY,KAC/B,GAAa,aAAT15B,EAAqB,CACrB,IAAI8vM,EAAY,EACZC,EAAY,EAChB,GAAIv+M,KAAK45K,KAAKoI,UACVinC,EAAW/gL,EAAM,iBACjBghL,EAAezrI,GAAYwrI,EAAUliN,GACrCu3M,GAAcyK,EAAS/iN,GAAKs2E,EAAU4sI,EAAa,SAAW,EAC9D3K,GAAcyK,EAAS/iN,GAAKq2E,EAAU4sI,EAAa,cAElD,CACD,IAAIxa,EAAW3rB,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBACrDy9M,EAAW5/M,KAAK6a,IAAIhkB,KAAK45K,KAAKqO,kBAAkB,OAAO,KAAO8gC,GAAWzsI,EACzE0sI,EAAW7/M,KAAK6a,IAAIhkB,KAAK45K,KAAKqO,kBAAkB,OAAO,KAAO+gC,GAAW1sI,EACzE,IAAIqtH,EAAc+E,EAAStnM,wBACvBwiM,EAAgBxmM,EAAQsyC,cAActuC,wBAC1Ck3M,EAAa,GAAY3U,EAAY3kM,KAAO4kM,EAAc5kM,MAC1Du5M,EAAa,GAAY5U,EAAY5kM,IAAM6kM,EAAc7kM,KAE7D3B,EAAQ2D,MAAM/B,KAAOs5M,EAAY,KACjCl7M,EAAQ2D,MAAMhC,IAAMw5M,EAAY,SAE/B,CACDwK,GAAWA,EAAS/iN,GAAKs2E,EACzB0sI,GAAWA,EAAS/iN,GAAKq2E,EACzB2sI,EAAW/gL,EAAM,iBACjBghL,EAAezrI,GAAYwrI,EAAUliN,GACrC,IAAImW,EAAQ8rM,EAASE,EAAa,UAAY,EAC1C/rM,EAAM6rM,EAASE,EAAa,UAAY,EACxCkB,EAAgBrB,EAASG,EAAa,SAAW,EACjDmB,EAAiBtB,EAASG,EAAa,SAAW,EAElDoB,EAAgB,CAAEC,WAAYH,EAAeI,UAAWH,EAAgBI,UAAWvtM,EAAOwtM,aAAcvtM,GA0B5G,GAzBKu3B,GAAwB,IAAb1xC,GACZI,EAAQuH,aAAa,YAAa,cAAgBo+M,EAAS,IAAMC,EAAS,MAER,SAAlEhpN,KAAK45K,KAAK4J,OAAOxjL,KAAKyM,OAAOuxL,kBAAkB2sB,iBAC3CruI,EAAQ,GACR9/D,EAASxc,KAAK45K,KAAK6pB,eAAe1pF,GAAKz9B,GAAU4sI,EAAa,SAAYD,EAAW,GACrF7lN,EAAQylD,YAAcrsC,IAGtBA,EAAQxc,KAAK45K,KAAK6pB,eAAe1pF,IAAMmvG,EAAa,SAAYD,EAAW,GAC3E7lN,EAAQylD,YAAcrsC,IAGwC,SAAlExc,KAAK45K,KAAK4J,OAAOxjL,KAAKyM,OAAOuxL,kBAAkB2sB,iBAC3CruI,EAAQ,GACR4tI,EAAgBzjC,GAAUzmL,KAAK45K,KAAK6pB,eAAe1pF,GAAKz9B,EAAQ2sI,EAAUliN,GAC1EyV,EAAO0tM,EACP9mN,EAAQylD,YAAcrsC,IAGtB0tM,EAAgBzjC,GAASzmL,KAAK45K,KAAK6pB,eAAe1pF,GAAIkvG,EAAUliN,GAChEyV,EAAO0tM,EACP9mN,EAAQylD,YAAcrsC,IAG4C,SAAtExc,KAAK45K,KAAK4J,OAAOxjL,KAAKyM,OAAOuxL,kBAAkB4sB,mBAA+B,CAC9E,IAAK,IAAI/qG,EAAI,EAAGA,EAAI7/G,KAAKm+L,UAAUx9L,OAAQk/G,IACvC,IAAK,eAAkB7/G,KAAKm+L,UAAUt+E,IAAK,CACvC,KAAIyqG,EAAc,aAAetqN,KAAKm+L,UAAUt+E,GAAG,eAC5CyqG,EAAc,cAAgBtqN,KAAKm+L,UAAUt+E,GAAG,cAChDyqG,EAAc,aAAetqN,KAAKm+L,UAAUt+E,GAAG,iBAC/CyqG,EAAc,gBAAkBtqN,KAAKm+L,UAAUt+E,GAAG,cAIpD,CACDrjG,EAAO,GACPpZ,EAAQylD,YAAcrsC,EACtB,MANAA,EAAQ,eAAkBA,GAAeysM,EAAPzsM,EAClCpZ,EAAQylD,YAAcrsC,EASlCxc,KAAKm+L,UAAU9xL,KAAKi+M,GAExB,GAA0E,SAAtEtqN,KAAK45K,KAAK4J,OAAOxjL,KAAKyM,OAAOuxL,kBAAkB4sB,mBAA+B,CAC9E,IAAK,IAAI/mM,EAAI,EAAGA,EAAI7jB,KAAKm+L,UAAUx9L,OAAQkjB,IACvC,IAAK,eAAkB7jB,KAAKm+L,UAAUt6K,IAClC,GAAIymM,EAAc,cAAgBtqN,KAAKm+L,UAAUt6K,GAAG,cAC7CymM,EAAc,aAAetqN,KAAKm+L,UAAUt6K,GAAG,eAC/CymM,EAAc,gBAAkBtqN,KAAKm+L,UAAUt6K,GAAG,cAClDymM,EAAc,aAAetqN,KAAKm+L,UAAUt6K,GAAG,gBAClDomM,EAAgB,eAAkBztM,GAAeysM,EAAPzsM,EACtC8/D,EAAQ,IACR2tI,EAAexjC,GAAUzmL,KAAK45K,KAAK6pB,eAAe1pF,GAAKz9B,EAAQ2tI,EAAcljN,IAEjF3D,EAAQylD,YAAcohK,MAErB,CACD,GAAIK,EAAc,aAAetqN,KAAKm+L,UAAUt6K,GAAG,aAAc,CAC7D,IAAIve,EAAQtF,KAAKm+L,UAAUt6K,GAAG,cAAgBymM,EAAc,aACxDjjI,EAAa/hF,GAASglN,EAAc,cAAgBA,EAAc,cACtE9tM,EAAQ,eAAkBA,GAAeysM,EAAPzsM,EAClCytM,EAAexjC,GAASp/F,EAAY7qE,EAAMzV,GAC1C3D,EAAQylD,YAAcohK,EACtB,MAEJ,GAAIK,EAAc,aAAetqN,KAAKm+L,UAAUt6K,GAAG,aAAc,CACzDve,EAAQglN,EAAc,cAAgBtqN,KAAKm+L,UAAUt6K,GAAG,aACxDwjE,EAAal+E,KAAK6a,IAAI1e,GAASglN,EAAc,cAAgBA,EAAc,eAC/E9tM,EAAQ,eAAkBA,GAAeysM,EAAPzsM,EAClCytM,EAAexjC,GAASp/F,EAAY7qE,EAAMzV,GAC1C3D,EAAQylD,YAAcohK,EACtB,OAKhBjqN,KAAKm+L,UAAU9xL,KAAKi+M,GAChB,eAAkBL,KAClBA,EAAexjC,GAAUzmL,KAAK45K,KAAK6pB,eAAe1pF,GAAKz9B,EAAQ2sI,EAAUliN,GACzE3D,EAAQylD,YAAcohK,IAG1Bv1K,GAAW1xC,EAAW,IACtBmtL,GAAgB/sL,EAAS,EAAGJ,EAAU,IAAIs3K,GAAYyuC,EAAQC,QAMlF7+J,EAAKjqD,UAAUqoN,gBAAkB,SAAUnlN,EAAS03K,EAAQ90K,EAAGC,EAAGq2E,EAAO9tE,EAAMkmC,QAC3D,IAAZA,IAAsBA,GAAU,GACpC,IAAImsI,EAAalvK,SAASvO,EAAQkI,GAAGrH,MAAM,gBAAgB,GAAGA,MAAM,KAAK,GAAI,IACzEu0C,EAAc7mC,SAASvO,EAAQkI,GAAGrH,MAAM,iBAAiB,GAAGA,MAAM,KAAK,GAAI,IAC3Ew4K,EAAY9qK,SAASvO,EAAQkI,GAAGrH,MAAM,eAAe,GAAGA,MAAM,KAAK,GAAI,IACvE82K,EAAQ/6K,KAAK45K,KAAKsR,iBAAiBrK,GACnCnqK,EAASqkK,EAAMyH,eAAehqI,GAClC,IAAK,eAAkB9hC,KAAY,eAAkBA,EAAO0I,cAAgB,eAAkB1I,EAAO0I,WAAWq9J,IAAa,CACzH,IAAIvB,EAAQ,eAAkBxkK,EAAO+rK,oBAEhC,eAAkB/rK,EAAO0I,WAAWq9J,GAAW,cAC3C,eAAkB/lK,EAAO0I,WAAWq9J,GAAW,cAAwE,EAAxD31K,WAAW4P,EAAO0I,WAAWq9J,GAAW,cAD5C31K,WAAW4P,EAAO0I,WAAWq9J,GAAW,cADxGvtJ,OAAOwwJ,GAAmBhpK,EAAO0I,WAAWq9J,GAAY/lK,EAAO+rK,qBAG/DxH,EAAQ,eAAkBvkK,EAAOgsK,mBAEhC,eAAkBhsK,EAAO0I,WAAWq9J,GAAW,aAC3C,eAAkB/lK,EAAO0I,WAAWq9J,GAAW,aAAsE,EAAvD31K,WAAW4P,EAAO0I,WAAWq9J,GAAW,aAD5C31K,WAAW4P,EAAO0I,WAAWq9J,GAAW,aADvGvtJ,OAAOwwJ,GAAmBhpK,EAAO0I,WAAWq9J,GAAY/lK,EAAOgsK,oBAG/D1/K,EAAmD,IAAxChD,KAAKu8K,aAAa/pI,mBAA6C,WAAlB,OAA6B,IAAOxyC,KAAKu8K,aAAa/pI,kBAC9GniB,EAAcrwB,KAAK45K,KAAc,UAAI8C,GAA0B,IAAIb,GAAMX,EAAKD,GAAMj7K,KAAK45K,KAAK+I,cAAe3iL,KAAK45K,KAAK+C,oBAAoB,GAAQhC,GAAkBM,EAAKC,EAAKJ,EAAQC,EAAO/6K,KAAK45K,MACvM,GAAI55K,KAAK45K,KAAKoI,UACV,GAAa,aAATxzK,EAAqB,CACrB,IAAIq8M,EAAiBznN,EAAQgE,wBAG7B,GAFAhE,EAAQ2D,MAAM/B,KAASqrB,EAAWrqB,EAAK6kN,EAAevlN,MAAQ,EAAMoR,EAAO6+B,OAAOvvC,EAAK,KACvF5C,EAAQ2D,MAAMhC,IAAQsrB,EAAWpqB,EAAK4kN,EAAexlN,OAAS,EAAMqR,EAAO6+B,OAAOtvC,EAAK,KAC1B,oBAAzDjG,KAAK45K,KAAK4J,OAAOxjL,KAAK45K,KAAKmL,gBAAgBC,UAAiC,CAC5E,IAAIC,EAAkBlC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,oBAAoBlE,wBAC5E+9K,EAAuB,IACS,SAAhC/hL,EAAQ,SAAS,cACZ6hL,EAAgB,KAAO4lC,EAAe,MAAQ5lC,EAAgB,KAAOE,EAAuB0lC,EAAe,KAAOA,EAAe,YAC9H5lC,EAAgB,KAAO4lC,EAAe,MAAQ5lC,EAAgB,KAAOA,EAAgB,UAAY4lC,EAAe,KAAOA,EAAe,YAGpI5lC,EAAgB,KAAO4lC,EAAe,MAAQ5lC,EAAgB,KAAOE,EAAuB0lC,EAAe,KAAOA,EAAe,YAFvIznN,EAAQ2D,MAAMC,QAAU,cASpCqpB,EAAWrqB,GAAK0Q,EAAO6+B,OAAOvvC,EAC9BqqB,EAAWpqB,GAAKyQ,EAAO6+B,OAAOtvC,EAC9B7C,EAAQuH,aAAa,YAAa,cAAgB0lB,EAAWrqB,EAAI,IAAMqqB,EAAWpqB,EAAI,WAI1F,GAAa,aAATuI,EACA,GAAIxL,EAAW,EAAG,CACdqtB,EAAWrqB,EAAMmD,KAAK6a,IAAIhkB,KAAK45K,KAAKqO,kBAAkB,OAAO,KAAO53J,EAAWrqB,GAAMs2E,EACrFjsD,EAAWpqB,EAAMkD,KAAK6a,IAAIhkB,KAAK45K,KAAKqO,kBAAkB,OAAO,KAAO53J,EAAWpqB,GAAMq2E,EACrF,IAAIqtH,EAAc5mB,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,sBAAsBlE,wBAC1EwiM,EAAgBxmM,EAAQsyC,cAActuC,wBAC1ChE,EAAQ2D,MAAM/B,KAAUqrB,EAAY,GAAKs5K,EAAY3kM,KAAO4kM,EAAc5kM,MAAS0R,EAAO6+B,OAAOvvC,EAAK,KACtG5C,EAAQ2D,MAAMhC,IAASsrB,EAAY,GAAKs5K,EAAY5kM,IAAM6kM,EAAc7kM,KAAQ2R,EAAO6+B,OAAOtvC,EAAK,KACnG7C,EAAQ2D,MAAMgf,UAAY,4BAEzB,CACG6jL,EAAgBxmM,EAAQgE,wBAC5BhE,EAAQ2D,MAAM/B,MAASqrB,EAAWrqB,EAAIA,GAAKs2E,EAAS5lE,EAAO6+B,OAAOvvC,EAAIhG,KAAK45K,KAAKwB,YAAYp1K,EAAK4jM,EAActkM,MAAQ,EAAK,KAC5HlC,EAAQ2D,MAAMhC,KAAQsrB,EAAWpqB,EAAIA,GAAKq2E,EAAS5lE,EAAO6+B,OAAOtvC,EAAIjG,KAAK45K,KAAKwB,YAAYn1K,EAAK2jM,EAAcvkM,OAAS,EAAK,UAIhIgrB,EAAWrqB,GAAOqqB,EAAWrqB,EAAIA,GAAKs2E,EAAS5lE,EAAO6+B,OAAOvvC,EAC7DqqB,EAAWpqB,GAAOoqB,EAAWpqB,EAAIA,GAAKq2E,EAAS5lE,EAAO6+B,OAAOtvC,EACxDyuC,GAAwB,IAAb1xC,EAIZmtL,GAAgB/sL,EAAS,EAAGJ,EAAUqtB,GAHtCjtB,EAAQuH,aAAa,YAAa,cAAgB0lB,EAAWrqB,EAAI,IAAMqqB,EAAWpqB,EAAI,QAS1GkkD,EAAKjqD,UAAU6lN,oBAAsB,SAAUl/M,GAC3C,GAAIA,EAAIm7K,UACJ,IAAK,IAAIhhL,EAAI,EAAGA,EAAI6F,EAAIqkL,iBAAiBvqL,OAAQK,IAAK,CAClD,IAAI+oN,EAAwBhnC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBtK,EAAI,2BACnF8pN,EAAc/nC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBtK,EAAI,eACzEgiL,EAAiBD,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,eAAiBtK,EAAI,mBAC3E,eAAkB+oN,KACnBA,EAAsBhjN,MAAM8tC,WAAa,UAExC,eAAkBi2K,KACnBA,EAAY/jN,MAAM8tC,WAAa,UAE9B,eAAkBmuI,KACnBA,EAAej8K,MAAM8tC,WAAa,YAalDsV,EAAKjqD,UAAUwrM,QAAU,SAAUp1K,EAAWy0L,EAAaC,EAAa7c,GACpE,IACI8c,EADApkN,EAAM7G,KAAK45K,KAEX+tC,EAAO3nN,KAAK4nN,gBACZjzI,EAAO30E,KAAK6nN,gBACZvrI,EAAQz1E,EAAIy1E,MAChBz1E,EAAI0hL,mBAAoB,EACxB1hL,EAAI2hL,gBAAkB3hL,EAAI0kG,kBAC1B1kG,EAAIyyL,cAAe,EACnBzyL,EAAI8yL,cAAe,EACnB,IAEI3zL,EACAC,EAHAujL,EAAiB3iL,EAAI2iL,eACrBq8B,EAAgBh/M,EAAI81K,mBAMxB,GAHAouC,EAAe,eAAkBA,GAA8BpD,EAAK3hN,EAAI2uE,EAAK3uE,EAA7B+kN,EAChDC,EAAe,eAAkBA,GAA8BrD,EAAK1hN,EAAI0uE,EAAK1uE,EAA7B+kN,EAChDhrN,KAAK45K,KAAKyyB,eACLxlM,EAAIm7K,WAsCJ,GAAIhiL,KAAK45K,KAAK+I,cAAgB,EAAG,CAClC38K,EAAIa,EAAI81K,mBAAmB32K,EAAI+kN,EAC/B9kN,EAAIY,EAAI81K,mBAAmB12K,EAAI+kN,EAC/BhrN,KAAKkrN,UAAYllN,EAAIa,EAAI81K,mBAAmB32K,EAC5ChG,KAAKmrN,UAAYllN,EAAIY,EAAI81K,mBAAmB12K,EAC5CY,EAAI81K,mBAAmB32K,EAAIA,EAC3Ba,EAAI81K,mBAAmB12K,EAAIA,GACtBY,EAAI81K,mBAAmB12K,GAAK,IAAM+kN,EAAc,GAAQnkN,EAAI81K,mBAAmB12K,GAAmD,KAA5CkD,KAAK8jC,IAAI,EAAGjtC,KAAK45K,KAAK+I,eAAiB,IAAaqoC,EAAc,KACzJnkN,EAAI81K,mBAAmB32K,EAAIA,EAAI+kN,EAC/BlkN,EAAI81K,mBAAmB12K,EAAIA,EAAI+kN,GAEnCnkN,EAAI2iL,eAAexjL,GAAKa,EAAI81K,mBAAmB32K,EAAI+kN,GAAelkN,EAAIy1E,MACtEz1E,EAAI2iL,eAAevjL,GAAKY,EAAI81K,mBAAmB12K,EAAI+kN,GAAenkN,EAAIy1E,MAEtE,IAAI8uI,EAAaprN,KAAK45K,KAAKizB,mBAAmBsB,EAAc,UAAWA,EAAc,WACjFpG,EAA0B/nM,KAAK45K,KAAKouB,6BACxCijB,EAAU,CACNx8M,QAAQ,EAAOuB,KAAMwpK,GAAKI,KAAM/yK,EAChC81K,mBAAoB,CAAE19J,SAAU4mM,EAAepsG,QAAS5yG,EAAI81K,oBAC5D6M,eAAgB,CAAEvqK,SAAUuqK,EAAgB/vE,QAAS5yG,EAAI2iL,gBAAkBltG,MAAOz1E,EAAIy1E,MACtFqmG,cAAe97K,EAAI87K,cAAe/H,SAAUwwC,EAAW,YAAavwC,UAAWuwC,EAAW,aAC1FljB,YAAaH,EAAwBG,YAAaC,YAAaJ,EAAwBI,YACvFC,aAAcL,EAAwBK,aAAcC,aAAcN,EAAwBM,cAE9FxhM,EAAIoB,QAAQuxK,GAAKyxC,GACjBpkN,EAAIo7K,cAAcgY,cAAcpzL,EAAI87K,cAAe97K,EAAI81K,mBAAoB,OAC3E38K,KAAKo7L,eAAev0L,QAhEJ,CAChB,IAAIi/C,EAAgBl4C,SAASyd,eAAexkB,EAAIzD,QAAQkI,GAAK,iBACzD+hE,EAAgB,eAAkBvnB,GAA4D,EAA3CA,EAAcye,iBAAiB,GAAGl/D,OACzFW,EAAIwjL,EAAexjL,EAAI+kN,EAAczuI,EACrCr2E,EAAIujL,EAAevjL,EAAI+kN,EAAc1uI,EACrC,IAAI+uI,EAAYtoC,GAAel8K,EAAIzD,QAAQkI,GAAK,sBAAsBlE,wBAClE6yK,EAAc8I,GAAel8K,EAAIzD,QAAQkI,GAAK,QAAQlE,wBACtDkkN,EAAsBP,EAAc,EAAIM,EAAUrmN,MAASi1K,EAAYj1K,KAAO6B,EAAIu0K,YAAYp1K,EAC5FqlN,EAAUrmN,KAAOqmN,EAAU/lN,MAAQuB,EAAIu0K,YAAYp1K,GAAOi0K,EAAiB,MAC7EsxC,EAAsBP,EAAc,EAAIK,EAAUtmN,KAAQk1K,EAAYl1K,IAAM8B,EAAIu0K,YAAYn1K,EAC1FolN,EAAUtmN,IAAMsmN,EAAUhmN,OAASgoE,EAAexmE,EAAI03B,OAAOx5B,KAASk1K,EAAYl1K,IAAMk1K,EAAY50K,OAEtG4nM,EAAajtM,KAAK45K,KAAKyvB,eAAerpM,KAAK45K,KAAKsR,iBAAiBvqL,OAAS,EAAGwtM,EAAc,UAAWA,EAAc,WACpHpG,EAA0B/nM,KAAK45K,KAAKouB,6BACxCijB,EAAU,CACNx8M,QAAQ,EAAOuB,KAAMwpK,GAAKI,KAAM/yK,EAChC81K,mBAAoB,GAAI6M,eAAgB,CAAEvqK,SAAUuqK,EAAgB/vE,QAAS,IAAIoiE,GAAM71K,EAAGC,IAC1Fq2E,MAAOz1E,EAAIy1E,MAAOqmG,cAAe97K,EAAI87K,cAAe/H,SAAUqyB,EAAW,YAAapyB,UAAWoyB,EAAW,aAC5G/E,YAAaH,EAAwBG,YAAaC,YAAaJ,EAAwBI,YACvFC,aAAcL,EAAwBK,aAAcC,aAAcN,EAAwBM,cAE9FxhM,EAAIoB,QAAQuxK,GAAKyxC,GACZA,EAAQx8M,SACL68M,GAAqBC,GACrB1kN,EAAI2iL,eAAiB,IAAI3N,GAAM71K,EAAGC,GAClCjG,KAAKo7L,eAAev0L,IAEfykN,GACLzkN,EAAI2iL,eAAiB,IAAI3N,GAAM71K,EAAGa,EAAI2iL,eAAevjL,GACrDjG,KAAKo7L,eAAev0L,IAEf0kN,IACL1kN,EAAI2iL,eAAiB,IAAI3N,GAAMh1K,EAAI2iL,eAAexjL,EAAGC,GACrDjG,KAAKo7L,eAAev0L,KAG5B7G,KAAK45K,KAAK8N,gBAAiB,EA8B/B7gL,EAAIiiL,mBAAqBjiL,EAAI2iL,eAC7BxpL,KAAK4nN,gBAAkB5nN,KAAK6nN,gBAC5B7nN,KAAK4tM,eAAgB,GAEzBzjJ,EAAKjqD,UAAUsrN,gBAAkB,WAC7BxrN,KAAK45K,KAAK4P,eAAexjL,EAAK,eAAkBhG,KAAKkrN,WACXlrN,KAAK45K,KAAK4P,eAAexjL,EADAhG,KAAK45K,KAAK4P,eAAexjL,EACvFhG,KAAKkrN,UAAYlrN,KAAK45K,KAAKt9F,MAChCt8E,KAAK45K,KAAK4P,eAAevjL,EAAK,eAAkBjG,KAAKmrN,WACZnrN,KAAK45K,KAAK4P,eAAevjL,EADAjG,KAAK45K,KAAK4P,eAAevjL,EACtFjG,KAAKmrN,UAAYnrN,KAAK45K,KAAKt9F,MAChCt8E,KAAKo7L,eAAep7L,KAAK45K,MAAM,IAKnCzvH,EAAKjqD,UAAUurN,eAAiB,SAAU1rL,EAAYvxB,GAClD,IAAInL,EAAQrD,KACR6G,EAAM7G,KAAK45K,KACf/yK,EAAI8yL,aAAe9yL,EAAIgiL,uBAAwB,EAC/ChiL,EAAIyyL,aAA0B,UAAT9qL,GAAmC,IAAfuxB,KAAsBl5B,EAAI84B,aAAak6J,gBAAkBhzL,EAAIizL,iBACrF,YAATtrL,GAAqC,IAAfuxB,EAC9B,IAAI4lL,EAAY9+M,EAAI87K,cAChBrmG,EAAQz1E,EAAIynL,cAAgBznL,EAAIy1E,MACpCz1E,EAAI0hL,mBAAoB,EACxB1hL,EAAI2hL,gBAAkB3hL,EAAI0kG,kBAC1B1kG,EAAI8gL,cAAgB5nJ,EACpB,IAAIuqJ,EAAUzjL,EAAI84B,aAAa2qJ,QAC3BkmB,EAAU3pM,EAAI84B,aAAa6wK,QAC3B16L,EAAOjP,EAAIu0K,YACXoO,EAAiB3iL,EAAIqrC,cAAgBrrC,EAAI2iL,eACzCq8B,EAAgBh/M,EAAI81K,mBAMxB,GALA91K,EAAI+hL,mBAA8B,UAATp6K,OAAmBjD,EAAY1E,EAAI60K,eAC5D37I,EAAuB,YAATvxB,GAAkD,IAA3BrF,KAAKC,MAAM22B,GAAoB,EAAkBA,EACtFA,EAAuB,UAATvxB,EAAoBgiM,EAAsC,IAA3BrnM,KAAKC,MAAM22B,GAAqB,EAAIA,EACjFA,EAAcywK,EAAUzwK,GAAuB,WAATvxB,EAAqBgiM,EAAU,EAAIzwK,GAEnEl5B,EAAIm7K,YAAwB,WAATxzK,EAAoBuxB,GAAcywK,GAAWrnM,KAAKC,MAAM22B,IAAeuqJ,EAAUvqJ,GAAcywK,GACjH3pM,EAAIqjL,SAAU,CAEjB,IAAIxuK,EAAM7U,EAAIohL,kBAAkB,OAE5BtsK,EAAM9U,EAAIohL,kBAAkB,OAC5BI,EAAWl/K,KAAK6a,IAAIrI,EAAI,KAAOD,EAAI,MACnC4sK,EAAYn/K,KAAK6a,IAAItI,EAAI,KAAOC,EAAI,MACpC8uK,OAAkB,EAClBC,OAAkB,EACtB,GAAI3qJ,EAAa,KAA8B,YAAvBl5B,EAAI60K,eACN,IAAd4M,GAAgC,IAAbD,GAAkBC,IAAcD,IACnDA,EAAWvyK,EAAKxQ,MAAQ,EACxBgjL,EAAYxyK,EAAKzQ,QAErB06B,EAAaj5B,WAAWqC,KAAKuS,IAAI5F,EAAKxQ,MAAQ+iL,EAAUvyK,EAAKzQ,OAASijL,GAAWvkK,QAAQ,IACzFgc,EAAaA,EAAa,KAAO,EAAIA,EACrCl5B,EAAI2iL,eAAiBxpL,KAAKomN,kCAAkCrmL,EAAYsoJ,EAAUC,EAAWxyK,EAAM4F,EAAK7U,OAEvG,CACD4jL,EAAkBjB,EAAexjL,GAAO8P,EAAKxQ,MAAQg3E,EAAUxmE,EAAKxQ,MAAQy6B,GAAe,EAC3F2qJ,EAAkBlB,EAAevjL,GAAO6P,EAAKzQ,OAASi3E,EAAUxmE,EAAKzQ,OAAS06B,GAAe,EAC7F,IAAIsmL,EAAgBl9M,KAAK6a,IAAInd,EAAIohL,kBAAkB,OAAO,KAAOphL,EAAIohL,kBAAkB,OAAO,MAAQloJ,EACtG0qJ,EAAmB47B,EAAgBx/M,EAAIu0K,YAAY/1K,OAAWyQ,EAAK9P,IAAQ0V,EAAI,MAAW5F,EAAKxQ,MAAQ,EAAM+iL,EAAW,IAClHoC,EACNC,EAAmB27B,EAAgBx/M,EAAIu0K,YAAY/1K,OAAWyQ,EAAK7P,IAAQyV,EAAI,MAAW5F,EAAKzQ,OAAS,EAAMijL,EAAY,IACpHoC,EACN7jL,EAAI2iL,eAAiB,IAAI3N,GAAM4O,EAAiBC,GAEpD7jL,EAAIiiL,mBAAqBjiL,EAAI2iL,eAC7B3iL,EAAIy1E,MAAQv8C,EACR//B,KAAK6nM,iBAAiBge,EAAeF,EAAWn3M,IAChD3H,EAAI2iL,eAAiB3iL,EAAIiiL,mBAAqBjiL,EAAIqrC,cAClDrrC,EAAIy1E,MAAQz1E,EAAIynL,eAGhBtuL,KAAKo7L,eAAev0L,GAAK,QAG5B,GAAKA,EAAa,YAAOk5B,GAAcywK,GAAWzwK,GAAcuqJ,GAAYzjL,EAAIqjL,SAAU,CAC3F,IAAIwhC,EAAiB/F,EAAYnV,IAAY3pM,EAAIqjL,QAAUsmB,EAAUzwK,EAGrE,GAFAl5B,EAAIy1E,MAAQnzE,KAAK8jC,IAAI,EAAGy+K,EAAiB,GACzC7kN,EAAI87K,cAAgB+oC,EAChB7kN,EAAIynL,gBAAkBznL,EAAIy1E,OAASz1E,EAAIqjL,QAAS,CAChDrjL,EAAI84B,aAAaI,WAAaA,EAC9B,IAAIh8B,EAAW,CAAEiC,EAAGa,EAAIinB,cAAcxoB,MAAQ,EAAGW,EAAGY,EAAIinB,cAAczoB,OAAS,GAS/E,GARArF,KAAK8lN,yBAAyBH,EAAW+F,EAAgB3nN,EAAUyK,IAC/D3H,EAAI84B,aAAak6J,gBAAkBhzL,EAAIizL,gBAA2B,UAATtrL,GAA8B,YAATA,GAAsB3H,EAAI84B,aAAak6J,gBAAkBhzL,EAAIizL,gBAAkB4xB,GAAkB7kN,EAAIkzL,oBACnLlzL,EAAI8yL,cAAe,EACnB9yL,EAAI2hL,iBAAkB,EACtB3hL,EAAI81K,mBAAmB32K,EAAIa,EAAImzL,qBAAqBh0L,EACpDa,EAAI81K,mBAAmB12K,EAAIY,EAAImzL,qBAAqB/zL,EACpDylN,EAAiB7kN,EAAI87K,cAAgB97K,EAAI8gL,cAAgB9gL,EAAIkzL,kBAE7D/5L,KAAK6nM,iBAAiBge,EAAeF,EAAWn3M,GAChD3H,EAAI2iL,eAAiB3iL,EAAI81K,mBAAqB,IAAId,GAAM,EAAG,GAC3Dh1K,EAAIy1E,MAAQz1E,EAAIynL,cAChBznL,EAAI87K,cAAgBgjC,EACpB9+M,EAAI84B,aAAaI,WAAal5B,EAAIynL,kBAEjC,CACDznL,EAAI2iL,eAAevjL,GAAKY,EAAI81K,mBAAmB12K,EAAK,IAAOY,EAAI8gL,eAAkB9gL,EAAIy1E,MACrFz1E,EAAI2iL,eAAexjL,GAAKa,EAAI81K,mBAAmB32K,EAAK,IAAOa,EAAI8gL,eAAkB9gL,EAAIy1E,MACjF1uE,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,mBAC/CsC,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iBAAiBvE,MAAMC,QAAU,QAEhF4G,SAAS1B,cAAc,mBACvB0B,SAAS1B,cAAc,iBAAiBnF,MAAMC,QAAU,QAE5DhH,KAAK+lN,oBAAoBl/M,GACzBA,EAAIo7K,cAAcgY,cAAcyxB,EAAgB7kN,EAAI81K,mBAAoBnuK,GACzDZ,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,UAA9D,IACIknC,EAAwE,IAApDxyC,KAAK45K,KAAKsR,iBAAiB,GAAG14I,mBAA6C,WAAlB,OAA6B,IAAOxyC,KAAK45K,KAAKsR,iBAAiB,GAAG14I,kBACnJplC,YAAW,WAKP/J,EAAM+3L,eAAe/3L,EAAMu2K,MAAM,GAC7BhsK,SAASyd,eAAehoB,EAAMu2K,KAAKx2K,QAAQkI,GAAK,mBAChDsC,SAASyd,eAAehoB,EAAMu2K,KAAKx2K,QAAQkI,GAAK,iBAAiBvE,MAAMC,QAAU,SAErF3D,EAAMu2K,KAAKqnB,YAAa,IACzBzuJ,IAGXxyC,KAAK45K,KAAK8N,gBAAiB,IAMnCv9H,EAAKjqD,UAAUumM,sBAAwB,WACnC,IAAI5/L,EAAM7G,KAAK45K,KAGf55K,KAAKipM,aAAepiM,EAAIye,SAASY,YAAY,CACzC5a,GAAIzE,EAAIzD,QAAQkI,GAAK,yBACrBkoC,QAAqC,eAA5B3sC,EAAIqyC,MAAM32B,cAAiC,GAAM,KAE9D,IAAIopM,EAAW,GACXC,EAAW,GACX/sJ,EAAUh4D,EAAI84B,aAAa4lL,gBAC3BzvJ,EAASjvD,EAAI84B,aAAa4lL,gBAAgBC,eAC9CxlN,KAAK45K,KAAKiyC,kBAAoB,CAC1BC,mBAA4C,eAAxBjtJ,EAAQ39B,YAA+Br6B,EAAI84B,aAAamsL,mBAAqBjtJ,EAAQ39B,YACzGsrH,eAAyC,MAAzB12F,EAAO02F,eAAyB3lJ,EAAI84B,aAAa6sH,eAAiB12F,EAAO02F,eACzF84D,eAAyC,MAAzBxvJ,EAAOwvJ,eAAyBz+M,EAAI84B,aAAa2lL,eAAiBxvJ,EAAOwvJ,eACzFpiB,oBAAqD,QAAhCrkI,EAAQqkI,oBAAgCr8L,EAAI84B,aAAaujK,oBAAsBrkI,EAAQqkI,oBAC5GC,kBAAiD,SAA9BtkI,EAAQskI,kBAA+Bt8L,EAAI84B,aAAawjK,kBAAoBtkI,EAAQskI,kBACvGxtL,MAAuB,MAAhBmgD,EAAOngD,MAAgB9O,EAAI84B,aAAahqB,MAAQmgD,EAAOngD,MAC9DsmM,aAAiC,IAAnBnmJ,EAAOtiB,QAAgBsiB,EAAOtiB,QAAU,EACtDysI,cAAwC,IAAzBnqH,EAAOmqH,cAAsBnqH,EAAOmqH,cAAgB,GAEvE,IAAI1nG,EAAKziB,EAAOpwC,OAAS,EACrB8yD,EAAK1iB,EAAOpwC,OAAS,EACrBA,EAASowC,EAAOpwC,OAAS,EACzByH,EAAU2oC,EAAO3oC,QACjB+T,EAAclhC,KAAK45K,KAAKiyC,kBAAkBC,mBAC1CC,EAAoBllN,EAAI84B,aAAa4lL,gBAAgBC,eAAev3G,aAAapnG,KAAI,SAAUmW,GAAS,OAAOA,KAC/GgvM,EAAkD,IAA7BD,EAAkBprN,OAAekG,EAAI84B,aAAassL,SAAWF,EACtFJ,EAAY71J,EAAOpwC,OAAS,EAAMowC,EAAO5oC,YAAc,EAAKC,EAC5Dy+L,EAAY91J,EAAOpwC,OAAS,EAAMowC,EAAO5oC,YAAc,EAAKC,EAC5D,IAAI++L,EAAgB,8FACpBA,GAAiB,wGACjBA,GAAiB,oGACjB,IAAIC,EAAgBJ,EAAkBprN,OAClCyrN,EAA6B,eAAhBlrL,EAAkCirL,EAAgBr2J,EAAOpwC,OAAWymM,EAAgBh/L,EAAWA,EAAWg/L,EAAgBr2J,EAAO5oC,YAAiB4oC,EAAOpwC,OAASowC,EAAO5oC,YAAe,EAAIC,EACzMk/L,EAA8B,eAAhBnrL,EAAiC40B,EAAOpwC,OAASowC,EAAO5oC,YAAe,EAAIC,EAAcg/L,EAAgBr2J,EAAOpwC,OAAWymM,EAAgBh/L,EAAWA,EAAWg/L,EAAgBr2J,EAAO5oC,YACtM6iD,EAAalpE,EAAIye,SAAS0qD,aAC9BD,EAAWjlE,UAAYohN,EACvBlsN,KAAKipM,aAAavkM,YAAYqrE,GAC9B,IAAIu8I,EAAezlN,EAAIye,SAASg7B,cAAc,IAAI09H,GAAWn3K,EAAIzD,QAAQkI,GAAK,gBAAiBuzD,EAAQmgF,gBAAiB,CAAErpI,MAAOkpD,EAAQ5rB,YAAa3tC,MAAOu5D,EAAQ3xC,YAAasmB,QAASqrB,EAAQohH,eAAiBphH,EAAQohH,cAAe,IAAIvhG,GAAM7f,EAAQ3xC,YAAc,EAAK2xC,EAAQ3xC,YAAc,EAAKk/L,EAAYvtJ,EAAQ3xC,YAAem/L,EAAaxtJ,EAAQ3xC,aAAe,EAAG,IACrXltB,KAAKipM,aAAavkM,YAAY4nN,GAE9B,IADA,IAAI9hM,GAAUsrC,EAAOpwC,OAAUowC,EAAO5oC,YAAc,GAAM,GACjDlsB,EAAI,EAAGA,EAAIgrN,EAAmBrrN,OAAQK,IAAK,CACtC,IAANA,IACA2qN,EAAyD,eAA7C9kN,EAAIglN,kBAAkBC,mBAAwCH,GAAY71J,EAAOpwC,OAASyH,GAAW2oC,EAAO5oC,YAAey+L,EACvIC,EAAyD,eAA7C/kN,EAAIglN,kBAAkBC,mBAAuCF,EAAYA,GAAY91J,EAAOpwC,OAASyH,GAAW2oC,EAAO5oC,aAEvI,IAAIq/L,EAAYP,EAAmBhrN,GAC/BwrN,EAAc,eAAkBxsN,KAAK45K,KAAKiyC,kBAAkBl2M,OAA6C3V,KAAK45K,KAAK1pJ,WAAW4iK,cAAzD9yL,KAAK45K,KAAKiyC,kBAAkBl2M,MACjGs9B,EAAc6iB,EAAO7iB,aAAejzC,KAAK45K,KAAK1pJ,WAAW4iK,cAC7D9yL,KAAKysN,kBAAoB5lN,EAAIye,SAASY,YAAY,CAC9C5a,GAAIzE,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAY,SACvDxmM,UAAW,cAAgB4lM,EAAW,IAAMC,EAAW,QAE3D5rN,KAAKysN,kBAAkB9hN,aAAa,QAAS,kBAC7C3K,KAAKysN,kBAAkB/nN,YAAYmC,EAAIye,SAASyxD,WAAW,IAAIknG,GAAap3K,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAY,QAASz2J,EAAO11C,KAAM,CAAEzK,MAAOs9B,EAAa3tC,MAAOwwD,EAAO5oC,YAAasmB,QAASsiB,EAAOmqH,eAAiBnqH,EAAOtiB,QAAS+kC,EAAIC,EAAI9yD,EAAQ,MACvQ,IACI8tB,EAAU,EACVld,EAAY,GAEZlW,EAAO01C,EAAO11C,KAElB,OADApgB,KAAKslN,eAAiBtlN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,mBACjFs5B,EAAUhqM,eACd,IAAK,OACD,IAAImqM,OAAc,EACd/T,OAAc,EAClBriL,EAAY,qGACZA,GAAa,qHACbA,GAAwB,8FACxBt2B,KAAKysN,kBAAkB9hN,aAAa,QAAU3K,KAAK45K,KAAKj6I,aAAa4jB,uBAAyB,iBAAmB,IAC7GvjD,KAAK45K,KAAKj6I,aAAa8rK,gBAAkBzrM,KAAK45K,KAAKj6I,aAAa4jB,wBAI3DvjD,KAAK45K,KAAKj6I,aAAa8rK,eAAiBzrM,KAAK45K,KAAKj6I,aAAa4jB,wBAHpEmpK,EAActsM,EACdu4L,EAAc6T,GAMRxsN,KAAK45K,KAAKj6I,aAAa8rK,eAAkBzrM,KAAK45K,KAAKj6I,aAAa4jB,wBAIhEvjD,KAAK45K,KAAKj6I,aAAa8rK,eAAiBzrM,KAAK45K,KAAKj6I,aAAa4jB,wBACrEmpK,EAAc1sN,KAAK45K,KAAK1pJ,WAAW4iK,cACnC6lB,EAAc6T,GAERxsN,KAAK45K,KAAKj6I,aAAa8rK,eAAkBzrM,KAAK45K,KAAKj6I,aAAa4jB,wBAKtEmpK,EAAc1sN,KAAKslN,eACnB3M,EAAc34M,KAAKslN,iBALnBoH,EAActsM,EACdu4L,EAAc6T,IATdE,EAActsM,EACdu4L,EAAc6T,GAclB,IAAIG,EAAW9lN,EAAIye,SAASkhB,SAAS,IAAIm5C,GAAW94E,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAWG,EAAa,EAAG/T,EAAanlK,EAASA,EAAS,KAAMld,EAAY,4DACvKq2L,EAAShiN,aAAa,YAAa,UAAY6f,EAAS,IAAMA,EAAS,MACvExqB,KAAKysN,kBAAkB/nN,YAAYioN,GACnC3sN,KAAK4sN,aAAe5sN,KAAKysN,kBACzBzsN,KAAK4T,WAAW5T,KAAKysN,kBAAmBzsN,KAAK6sN,sBAC7C,MAEJ,IAAK,SACDv2L,EAAY,gCACZ,IAAIw2L,EAAajmN,EAAIye,SAASkhB,SAAS,IAAIm5C,GAAW94E,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAY,QAASnsM,EAAM,EAAGosM,EAAY,EAAG,EAAG,KAAMl2L,IACnJw2L,EAAWniN,aAAa,YAAa,UAAY6f,EAAS,IAAMA,EAAS,MACzExqB,KAAKysN,kBAAkB/nN,YAAYooN,GAClB9sN,KAAKysN,kBACtBzsN,KAAK4T,WAAW5T,KAAKysN,kBAAmBzsN,KAAK6sN,sBAC7C,MACJ,IAAK,UACDv2L,EAAY,iBACZ,IAAIy2L,EAAclmN,EAAIye,SAASkhB,SAAS,IAAIm5C,GAAW94E,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAWnsM,EAAM,EAAGosM,EAAY,EAAG,EAAG,KAAMl2L,IAC1Iy2L,EAAYpiN,aAAa,YAAa,UAAY6f,EAAS,IAAMA,EAAS,MAC1ExqB,KAAKysN,kBAAkB/nN,YAAYqoN,GACjB/sN,KAAKysN,kBACvBzsN,KAAK4T,WAAW5T,KAAKysN,kBAAmBzsN,KAAK6sN,sBAC7C,MACJ,IAAK,MACD,IAAIl3M,OAAQ,EACZ2gB,EAAY,yFACZA,GAAa,uGACbt2B,KAAKysN,kBAAkB9hN,aAAa,QAAU3K,KAAK45K,KAAKj6I,aAAa8rK,cAAgB,iBAAmB,IACpGzrM,KAAK45K,KAAKj6I,aAAa8rK,eAAiBzrM,KAAK45K,KAAKl6I,WAAWkqJ,WAC7Dj0K,EAAQ3V,KAAKslN,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW4iK,cAE9C9yL,KAAK45K,KAAKj6I,aAAa8rK,cAK7B91L,EAAQyK,GAAQpgB,KAAK45K,KAAK1pJ,WAAW4iK,eAJrCn9K,EAAQ3V,KAAKslN,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW4iK,cACpD9yL,KAAKysN,kBAAkB9hN,aAAa,QAAS,KAKjD,IAAIqiN,EAAUnmN,EAAIye,SAASkhB,SAAS,IAAIm5C,GAAW94E,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAW52M,EAAO,EAAG62M,EAAYh5K,EAASA,EAAS,KAAMld,IACnJ02L,EAAQriN,aAAa,YAAa,UAAY6f,EAAS,IAAMA,EAAS,MACtExqB,KAAKysN,kBAAkB/nN,YAAYsoN,GACnChtN,KAAKitN,SAAWt3M,EAChB3V,KAAKktN,YAAcltN,KAAKysN,kBACxBzsN,KAAK4T,WAAW5T,KAAKysN,kBAAmBzsN,KAAK6sN,sBAC7C,MAEJ,IAAK,QACDv2L,EAAY,kGACZA,GAAa,wGACbA,GAAa,sHACb,IAAI62L,EAAYtmN,EAAIye,SAASkhB,SAAS,IAAIm5C,GAAW94E,EAAIzD,QAAQkI,GAAK,oBAAsBihN,EAAWnsM,EAAM,KAAMosM,EAAY,EAAG,EAAG,KAAMl2L,EAAY,oFACvJ62L,EAAUxiN,aAAa,YAAa,UAAY6f,EAAS,IAAMA,EAAS,MACxExqB,KAAKysN,kBAAkB/nN,YAAYyoN,GACnCntN,KAAK4T,WAAW5T,KAAKysN,kBAAmBzsN,KAAK6sN,sBAC7C,MAER7sN,KAAKipM,aAAavkM,YAAY1E,KAAKysN,qBAM3CtiK,EAAKjqD,UAAU2sN,qBAAuB,SAAU1/M,GAC5C,IAAI7M,EAAS6M,EAAE7M,OACf6M,EAAEkgI,2BACF,IAAI1jH,EAA4B,UAAlBxc,EAAEg2C,aAA6C,MAAlBh2C,EAAEg2C,aAAwBh2C,EAAEqB,KAAKxK,QAAQ,UAAY,EAC5F66D,EAAUv+D,EAAOgL,GAAGrH,MAAM,qBAAqB,GAAGA,MAAM,KAAK,GAC7D2hN,GAAmB,EACvB,OAAQ/mJ,EAAQt8C,eACZ,IAAK,SACDqjM,GAAoB5lN,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAK+I,cAAgB3iL,KAAK45K,KAAKt9F,OAAS,GAAKt8E,KAAK45K,KAAKj6I,aAAa2qJ,QACnH,MACJ,IAAK,UACD,IAAIqX,EAAa3hM,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAK+I,cAAgB3iL,KAAK45K,KAAKt9F,MAC3EspI,EAAiD,WAA7B5lN,KAAK45K,KAAK8B,gBAA4D,YAA7B17K,KAAK45K,KAAK8B,gBACtC,WAA7B17K,KAAK45K,KAAK8B,eAA+BvyK,KAAKC,MAAMu4L,GAAc,GAAK3hM,KAAK45K,KAAKj6I,aAAa6wK,QAC9F,EAAe,GAAKxwM,KAAK45K,KAAKj6I,aAAa6wK,QAC/C,MACJ,IAAK,QACDoV,EAAmBz8M,KAAKC,MAAMpJ,KAAK45K,KAAKoI,UAAYhiL,KAAK45K,KAAK+I,cAAgB3iL,KAAK45K,KAAKt9F,QAAUt8E,KAAK45K,KAAKj6I,aAAa6wK,QACzH,MAEJ7mL,GAAWi8L,GACX5lN,KAAKglN,SAAU,EACfhlN,KAAKwrM,wBAAwB3sI,IAEZ,cAAX1xD,EAAEqB,MAAmC,gBAAXrB,EAAEqB,MAA4BxO,KAAKglN,UAAWY,EAK9E5lN,KAAKglN,SAAU,GAJfhlN,KAAKglN,SAAU,EACfhlN,KAAKwrM,wBAAwB3sI,KAWrC1U,EAAKjqD,UAAUsrM,wBAA0B,SAAUh9L,GAC/C,IAAI3H,EAAM7G,KAAK45K,KACf/yK,EAAIqjL,SAAU,EACd,IAAI5tG,EAAQ,EACR8wI,EAAaptN,KAAK+gD,WAAa/gD,KAAK45K,KAAK1pJ,WAAW4iK,cACxD,OAAQtkL,EAAK+T,eACT,IAAK,OACDviB,KAAKitN,SAAWG,EAChBptN,KAAKqtN,UAAYrtN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBvjD,KAAKslN,eAAiB8H,EACvFptN,KAAKstN,eAAettN,KAAK4sN,aAAc5sN,KAAKqtN,WAC5CrtN,KAAKstN,eAAettN,KAAKktN,YAAaltN,KAAKitN,UAC3CjtN,KAAKilN,OAAQ,EACbjlN,KAAKmlN,gBAAkBnlN,KAAK45K,KAAKj6I,aAAa4jB,uBAC9C,MACJ,IAAK,MACDvjD,KAAKitN,SAAWjtN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBzrM,KAAKslN,eAAiB8H,EAC7EptN,KAAKqtN,UAAYD,EACZptN,KAAK45K,KAAKj6I,aAAa8rK,eAKxBzrM,KAAKstN,eAAettN,KAAK4sN,aAAe5sN,KAAK+gD,WAAaqsK,GAC1DptN,KAAKstN,eAAettN,KAAKktN,YAAaltN,KAAKitN,YAL3CjtN,KAAKstN,eAAettN,KAAK4sN,aAAc5sN,KAAKslN,gBAC5CtlN,KAAKstN,eAAettN,KAAKktN,YAAaltN,KAAKitN,WAM/CjtN,KAAKilN,MAAQjlN,KAAK45K,KAAKj6I,aAAa8rK,cACpCzrM,KAAKmlN,iBAAkB,EACvB,MACJ,IAAK,SACDt+M,EAAIk6L,cAAgBl6L,EAAI87K,cACpB97K,EAAIk6L,cAAgB,GAAKl6L,EAAIk6L,cAAgB,KAC7Cl6L,EAAIk6L,eAAiB,GAEzB/gM,KAAKyrN,gBAAgB5kN,EAAIm7K,UAAYn7K,EAAI87K,cAAgB97K,EAAIy1E,OAAS,EAAG,UACzEA,EAAQt8E,KAAK45K,KAAKoI,UAAY74K,KAAKC,MAAMpJ,KAAK45K,KAAK+I,eAAiBx5K,KAAKC,MAAMpJ,KAAK45K,KAAK+N,eACpF3nL,KAAKmlN,kBACF7oI,IAAUz1E,EAAI84B,aAAa2qJ,SAAWhuG,EAAQ,GAAgB,IAAVA,GAAet8E,KAAK45K,KAAKoI,WAC7EhiL,KAAKstN,eAAettN,KAAK4sN,aAAcQ,GACvCptN,KAAKstN,eAAettN,KAAKktN,YAAarmN,EAAI84B,aAAa8rK,cAAgBzrM,KAAKslN,eAAiB8H,IAE9E,IAAV9wI,GAAgBt8E,KAAK45K,KAAKoI,YAC/BhiL,KAAKstN,eAAettN,KAAK4sN,aAAcQ,GACvCptN,KAAKstN,eAAettN,KAAKktN,YAAaE,KAG9C,MACJ,IAAK,UACDvmN,EAAIk6L,cAAgBl6L,EAAI87K,cACxB97K,EAAIihL,qBAAuB,KAC3BjhL,EAAIkhL,sBAAwB,KAC5B/nL,KAAKyrN,gBAAgB5kN,EAAIm7K,UAAYn7K,EAAI87K,cAAgB97K,EAAIy1E,OAAS,EAAG,WACzEA,EAAQt8E,KAAK45K,KAAKoI,UAAY74K,KAAKC,MAAMpJ,KAAK45K,KAAK+I,eAAiBx5K,KAAKC,MAAMpJ,KAAK45K,KAAK+N,gBACpF3nL,KAAKilN,OAASjlN,KAAKmlN,iBACpBnlN,KAAKitN,SAAWG,EAChBptN,KAAKqtN,UAAYrtN,KAAKslN,eACtBtlN,KAAKstN,eAAettN,KAAK4sN,aAAc5sN,KAAKslN,gBAC5CtlN,KAAKstN,eAAettN,KAAKktN,YAAaltN,KAAKitN,WAGvC3wI,GAAS,IAAMz1E,EAAIm7K,UACnBhiL,KAAKstN,eAAettN,KAAKktN,YAAaE,GAGtCptN,KAAKstN,eAAettN,KAAKktN,YAAarmN,EAAI84B,aAAa8rK,cAAgBzrM,KAAKslN,eAAiB8H,GAGrG,MACJ,IAAK,QACDvmN,EAAIk6L,cAAgBl6L,EAAI84B,aAAalZ,OAAS5f,EAAI84B,aAAaI,WAAa,EAC5El5B,EAAIihL,qBAAuB,KAC3BjhL,EAAIkhL,sBAAwB,KAC5B/nL,KAAKmlN,iBAAkB,EACvBnlN,KAAKilN,MAAQp+M,EAAI84B,aAAa8rK,cAC9BzrM,KAAKyrN,eAAe5kN,EAAI84B,aAAa6wK,QAAS,SACzCxwM,KAAKilN,QAAUjlN,KAAKmlN,kBAAsBnlN,KAAKilN,OAASjlN,KAAKmlN,gBACzDnlN,KAAK45K,KAAKj6I,aAAa8rK,eAKxBzrM,KAAKstN,eAAettN,KAAK4sN,aAAcQ,GACvCptN,KAAKstN,eAAettN,KAAKktN,YAAaltN,KAAKslN,kBAL3CtlN,KAAKstN,eAAettN,KAAK4sN,aAAc5sN,KAAKslN,gBAC5CtlN,KAAKstN,eAAettN,KAAKktN,YAAaE,IAOpCptN,KAAKilN,OAAUjlN,KAAKmlN,kBAC1BnlN,KAAKstN,eAAettN,KAAK4sN,aAAcQ,GACvCptN,KAAKstN,eAAettN,KAAKktN,YAAaE,IAGlDptN,KAAKutN,aAAa/+M,EAAK+T,gBAE3B4nC,EAAKjqD,UAAUqtN,aAAe,SAAU1uJ,GACpC,IAAInsB,EAAMqwI,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,QAChC,QAAZuzD,GAAsB7+D,KAAKm/C,WAAyB,UAAZ0f,EACxCnsB,EAAI/nC,aAAa,QAAS,kBAG1B+nC,EAAI/nC,aAAa,QAAS,KAGlCw/C,EAAKjqD,UAAUotN,eAAiB,SAAUp5K,EAAUv+B,GAChD,GAAKu+B,EAIL,IADA,IAAI8qI,EACKh+K,EAAI,EAAGA,EAAIkzC,EAAS8I,kBAAmBh8C,IAC5Cg+K,EAAe9qI,EAASjpB,WAAWjqB,GACN,WAAzBg+K,EAAatvK,UACbsvK,EAAar0K,aAAa,OAASupC,EAAS5oC,GAAGtH,QAAQ,QAAU,EAAI2R,EAAQ,eAC7EqpK,EAAar0K,aAAa,SAAUgL,KAOhDw0C,EAAKjqD,UAAU+N,YAAc,SAAUd,GACnC,IAAIqP,EAAOrP,EAAE7M,OAAOgL,GAAGrH,MAAM,qBAAqB,GAAGA,MAAM,KAAK,GAC5DoM,EAAUrQ,KAAK45K,KAAKj6I,aAAa4lL,gBAAgBltC,gBACjDA,EAAkB,CAClB1hK,QAAStG,EAAQsG,QACjByJ,KAAM/P,EAAQ+P,KACd6/J,cAAe5vK,EAAQ4vK,cACvB/yJ,YAAa7c,EAAQ6c,YACrB+lB,YAAa5iC,EAAQ4iC,YACrBm5I,UAAW/7K,EAAQ+7K,UACnBn2K,WAAY5F,EAAQ4F,WACpBF,UAAW1F,EAAQ0F,UACnBC,WAAY3F,EAAQ2F,WACpB6lE,SAAUxrE,EAAQwrE,UAAY,OAC9BwwG,YAAah8K,EAAQg8K,aAEzBhU,EAAgBpiK,WAAajW,KAAK45K,KAAK1pJ,WAAWja,WAC7CjW,KAAK2pB,UACNiE,GAAc,sBAAuB5tB,KAAK45K,KAAK9/H,kBAAkBt9B,GAAQrP,EAAEkG,MAAQ,GAAMlG,EAAEiG,MAAQ,GAAKilK,GACpGr4K,KAAK45K,KAAKjqK,WACV7C,aAAa9M,KAAK8M,cAClB9M,KAAK8M,aAAeM,WAAWpN,KAAKoqB,cAAcxkB,KAAK5F,MAAO,QAO1EmqD,EAAKjqD,UAAUkqB,cAAgB,WACvB24J,GAAe,wBACf,gBAAOA,GAAe,yBAM9B54H,EAAKjqD,UAAUgpM,aAAe,WAC1B,IAAIriM,EAAM7G,KAAK45K,KACXzsJ,EAAU,GACV/pB,EAAU,eAAc,MAAO,CAAEkI,GAAIzE,EAAIzD,QAAQkI,GAAK,aAC1DlI,EAAQ2D,MAAMwsC,QAAU,8BACxB,IAAIu0K,EAAgBjhN,EAAIye,SAASguB,UAAU,CACvChoC,GAAIzE,EAAIzD,QAAQkI,GAAK,mBAAoBhG,MAAO,GAAID,OAAQ,KAEhEyiN,EAAcpjN,YAAY1E,KAAKipM,cAC/B7lM,EAAQsB,YAAYojN,GAChB/kC,GAAel8K,EAAIzD,QAAQkI,GAAK,uBAChCy3K,GAAel8K,EAAIzD,QAAQkI,GAAK,sBAAsB5G,YAAYtB,GAEtE,IAAIoqN,EAAcxtN,KAAKipM,aAAa7hM,wBACpC0gN,EAAcn9M,aAAa,UAAW6iN,EAAYnoN,OAASwB,EAAI84B,aAAa4lL,gBAAgBr4L,aAAatb,YACzGk2M,EAAcn9M,aAAa,SAAU6iN,EAAYloN,MAAQuB,EAAI84B,aAAa4lL,gBAAgBr4L,aAAatb,YACvG,IAAIkE,EAAQ,eAAkBjP,EAAIshL,WAA6BthL,EAAIu0K,YAApBv0K,EAAIshL,UAC/CniL,EAAI,EACJC,EAAI,EACR,OAAQY,EAAIglN,kBAAkB1oB,mBAC1B,IAAK,OACDl9L,EAAI6P,EAAK7P,EACT,MACJ,IAAK,SACDA,EAAK6P,EAAKzQ,OAAS,EAAMmoN,EAAYnoN,OAAS,EAC9C,MACJ,IAAK,MACDY,EAAK6P,EAAKzQ,OAASmoN,EAAYnoN,OAAU8nB,EACzC,MAER,OAAQtmB,EAAIglN,kBAAkB3oB,qBAC1B,IAAK,OACDl9L,EAAI8P,EAAK9P,EACT,MACJ,IAAK,SACDA,EAAK8P,EAAKxQ,MAAQ,EAAMkoN,EAAYloN,MAAQ,EAC5C,MACJ,IAAK,MAKGU,EAJC,eAAkBa,EAAI43B,eAAiD,SAAhC53B,EAAI23B,eAAez6B,SAItD+R,EAAKxQ,MAAQkoN,EAAYloN,MAAS6nB,EAHnCrX,EAAKxQ,MAAQwQ,EAAK9P,EAAIwnN,EAAYloN,MAAQ6nB,EAKlD,MAER/pB,EAAQ2D,MAAM/B,KAAOgB,EAAI,KACzB5C,EAAQ2D,MAAMhC,IAAMkB,EAAI,KACxB,IAAI0P,EAAQ3V,KAAK45K,KAAKiyC,kBAAkBr/D,gBAAkBxsJ,KAAK45K,KAAK1pJ,WAAW+iK,mBAC3E9uH,EAAM,4CAA8CxuD,EAAQ,4CAA8CA,EAAQ,eAAiBA,EAA7H,qMAGN5O,EAAQ6G,SAASrJ,cAAc,SACnCwC,EAAMrC,YAAYkJ,SAAS0hD,eAAe6U,IAC1C/gE,EAAQsB,YAAYqC,IAKxBojD,EAAKjqD,UAAU0nM,qBAAuB,SAAU9sB,EAAQxvK,GACpD,GAAItL,KAAK45K,KAAKl6I,YAAc1/B,KAAK45K,KAAKj6I,aAAalZ,OAC/C,GAAIs8J,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,2BAA6BA,EAAGtH,QAAQhE,KAAK45K,KAAKx2K,QAAQkI,GAAK,cAAgB,EAAG,CACpHtL,KAAK45K,KAAKjqK,UACVozK,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,0BAA0BX,aAAa,UAAW,KACxF3K,KAAKosM,mBAAmB,GAAI,GAAI,GAAI,GAAI,KAGxCpsM,KAAKosM,mBAAmBpsM,KAAK45K,KAAKj6I,aAAa4jB,uBAAyB,iBAAmB,GAAI,iBAAkB,iBAAkBvjD,KAAK45K,KAAKj6I,aAAa8rK,cAAgB,iBAAmB,GAAI,kBAErM,IAAIgiB,EAAsBztN,KAAK45K,KAAKiyC,kBAAkB5P,aAClDyR,EAAuB1tN,KAAK45K,KAAKiyC,kBAAkB5rC,cACnDjgL,KAAK45K,KAAKoI,YAAclH,GAAU,KAAO96K,KAAK45K,KAAKj6I,aAAa6wK,UAAY11B,IACvE96K,KAAK45K,KAAKjqK,UACX3P,KAAKosM,mBAAmBpsM,KAAK45K,KAAKj6I,aAAa4jB,uBAAyB,iBAAmB,GAAI,iBAAkB,GAAIvjD,KAAK45K,KAAKj6I,aAAa8rK,cAAgB,iBAAmB,GAAI,IAEnLzrM,KAAK45K,KAAKj6I,aAAa8rK,eACvBzrM,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,oBAEvFjzL,KAAKmlN,iBAAmBnlN,KAAK45K,KAAKj6I,aAAa4jB,yBAA2BvjD,KAAK45K,KAAKsQ,UACpFlqL,KAAK4tN,gBAAgB5tN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,oBACxFjzL,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,gBAElF9yL,KAAK6tN,kBAAmB7tN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBkqK,EAAsB,GAAOztN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBmqK,EAAuB,GAAMD,EAAqBC,EAAsB,GAAK,GAAM1tN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBgiB,EAAsB,GAAOztN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBiiB,EAAuB,GAAM,GAAK,KAE/W5yC,GAAU,KAAO96K,KAAK45K,KAAKj6I,aAAa6wK,UAAY11B,GACrD96K,KAAK45K,KAAKjqK,UACX3P,KAAKosM,mBAAmBpsM,KAAK45K,KAAKj6I,aAAa4jB,uBAAyB,iBAAmB,GAAI,iBAAkB,GAAI,GAAI,KAExHvjD,KAAKmlN,iBAAmBnlN,KAAK45K,KAAKj6I,aAAa8rK,eAChDzrM,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,eAE9E9yL,KAAKmlN,iBAAmBnlN,KAAK45K,KAAKj6I,aAAa4jB,yBAA2BvjD,KAAK45K,KAAKsQ,UACpFlqL,KAAK4tN,gBAAgB5tN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,oBACxFjzL,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,gBAElF9yL,KAAK6tN,kBAAmB7tN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBkqK,EAAsB,GAAOztN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBmqK,EAAuB,GAAMD,EAAqBC,EAAsB,GAAK,GAAK,GAAK,GAAK,GAAK,KAEjP5yC,EAAS96K,KAAK45K,KAAKj6I,aAAa2qJ,SAChCtqL,KAAK45K,KAAKjqK,UACX3P,KAAKosM,mBAAmBpsM,KAAK45K,KAAKj6I,aAAa4jB,uBAAyB,iBAAmB,GAAI,iBAAkB,iBAAkBvjD,KAAK45K,KAAKj6I,aAAa8rK,cAAgB,iBAAmB,GAAI,kBAEhMzrM,KAAK45K,KAAKl6I,WAAWwlL,YAItBllN,KAAK45K,KAAKl6I,WAAWwlL,aAAc,EAHnCllN,KAAK6tN,kBAAmB7tN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBkqK,EAAsB,GAAOztN,KAAK45K,KAAKj6I,aAAa4jB,uBAAyBmqK,EAAuB,GAAMD,EAAqBC,EAAsBD,EAAqBC,EAAuB1tN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBgiB,EAAsB,GAAOztN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBiiB,EAAuB,GAAMD,EAAqBC,GAKta1tN,KAAKmlN,iBAAmBnlN,KAAK45K,KAAKj6I,aAAa4jB,wBAC/CvjD,KAAK4tN,gBAAgB5tN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,oBACpFjzL,KAAK45K,KAAKl6I,WAAWulL,OAASjlN,KAAK45K,KAAKj6I,aAAa8rK,eACrDzrM,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,iBAG5E9yL,KAAKmlN,iBAAmBnlN,KAAK45K,KAAKj6I,aAAa8rK,gBACrDzrM,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,oBACnFjzL,KAAK45K,KAAKj6I,aAAa4jB,wBACvBvjD,KAAK4tN,gBAAgB5tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,kBAKlF9yL,KAAK45K,KAAKjqK,UACX3P,KAAKosM,mBAAmB,GAAI,GAAI,iBAAkBpsM,KAAK45K,KAAKj6I,aAAa8rK,cAAgB,iBAAmB,GAAI,kBAEpHzrM,KAAK6tN,kBAAkB,GAAK,GAAK,GAAK,GAAKJ,EAAqBC,EAAuB1tN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBgiB,EAAsB,GAAOztN,KAAK45K,KAAKj6I,aAAa8rK,cAAgBiiB,EAAuB,GAAMD,EAAqBC,GAChP1tN,KAAK45K,KAAKj6I,aAAa4jB,wBACvBvjD,KAAK4tN,gBAAgB5tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,gBAE9E9yL,KAAKmlN,iBAAmBnlN,KAAK45K,KAAKj6I,aAAa8rK,eAChDzrM,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBvG,gBAAkBtlN,KAAK45K,KAAK1pJ,WAAW+iK,0BAK1FjzL,KAAK45K,KAAKjqK,WACX3P,KAAK2tN,eAAe3tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,eAC9E9yL,KAAK4tN,gBAAgB5tN,KAAK45K,KAAKiyC,kBAAkBl2M,OAAS3V,KAAK45K,KAAK1pJ,WAAW4iK,eAC/E9yL,KAAK6tN,kBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAKlE1jK,EAAKjqD,UAAU4tN,WAAa,SAAUC,EAAUC,EAAQC,EAAeC,GAC/DnrC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAKyiN,KACtChrC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAKyiN,GAAUpjN,aAAa,iBAAkBsjN,EAAcr8M,YAC7FmxK,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAKyiN,GAAUpjN,aAAa,eAAgBsjN,EAAcr8M,YAC3FmxK,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK0iN,GAAQrjN,aAAa,iBAAkBujN,EAAYt8M,YACzFmxK,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK0iN,GAAQrjN,aAAa,eAAgBujN,EAAYt8M,cAG/Fu4C,EAAKjqD,UAAU2tN,kBAAoB,SAAUM,EAAaC,EAAmBC,EAAeC,EAAqBC,EAAgBC,EAAsBC,EAAYC,EAAkBC,EAAcC,GAC/L5uN,KAAK8tN,WAAW,6BAA8B,wBAAyBM,EAAmBD,GAC1FnuN,KAAK8tN,WAAW,+BAAgC,+BAAgCQ,EAAqBD,GACrGruN,KAAK8tN,WAAW,gCAAiC,2BAA4BU,EAAsBD,GACnGvuN,KAAK8tN,WAAW,4BAA6B,uBAAwBY,EAAkBD,GACvFzuN,KAAK8tN,WAAW,8BAA+B,yBAA0Bc,EAAoBD,IAKjGxkK,EAAKjqD,UAAUksM,mBAAqB,SAAUyiB,EAAgBC,EAAkBC,EAAmBC,EAAeC,GAC1GlsC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,4BAClCsC,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,kCAC/Cy3K,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,iCAAiCX,aAAa,QAASmkN,GAE7FlhN,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,mCAC/Cy3K,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,kCAAkCX,aAAa,QAASokN,GAE9FnhN,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,iCAC/Cy3K,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,gCAAgCX,aAAa,QAASskN,GAE5FrhN,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,gCAAkCtL,KAAK45K,KAAKj6I,aAAa4jB,wBACxGw/H,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,+BAA+BX,aAAa,QAASkkN,GAE3FjhN,SAASyd,eAAerrB,KAAK45K,KAAKx2K,QAAQkI,GAAK,+BAAiCtL,KAAK45K,KAAKj6I,aAAa8rK,eACvG1oB,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,8BAA8BX,aAAa,QAASqkN,KAItG7kK,EAAKjqD,UAAUytN,eAAiB,SAAUrI,GAClCviC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,8BAAgCtL,KAAK45K,KAAKj6I,aAAa8rK,gBAC7F1oB,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,wBAAwBX,aAAa,OAAQ26M,GACnFviC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,wBAAwBX,aAAa,SAAU26M,KAG7Fn7J,EAAKjqD,UAAU0tN,gBAAkB,SAAUtI,GACnCviC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,+BAAiCtL,KAAK45K,KAAKj6I,aAAa4jB,yBAC9Fw/H,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,yBAAyBX,aAAa,OAAQ,eACpFo4K,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,yBAAyBX,aAAa,SAAU26M,KAY9Fn7J,EAAKjqD,UAAU0T,WAAa,SAAUxQ,EAAS8rL,GAC3C,OAAapjL,IAAI1I,EAAS,OAAQ2I,gBAAiBmjL,EAASlvL,MAC5D,OAAa8L,IAAI1I,EAAS,YAAapD,KAAKiO,YAAajO,MACzD,OAAa8L,IAAI1I,EAAS,WAAYpD,KAAKoqB,cAAepqB,OAK9DmqD,EAAKjqD,UAAUgvN,cAAgB,SAAU/hN,GACrC,GAAInN,KAAK45K,KAAKj6I,aAAalZ,QAAUzmB,KAAK45K,KAAKj6I,aAAawvL,eAAgB,CACxE,IAAItoN,EAAM7G,KAAK45K,KACJ/yK,EAAIinB,cACfjnB,EAAI0hL,mBAAoB,EACxB1hL,EAAI2hL,gBAAkB3hL,EAAI0kG,kBAC1B,IAAIxnG,EAAW/D,KAAKg6K,iBAAiB7sK,EAAEiG,MAAOjG,EAAEkG,OAC5CsyM,EAAY9+M,EAAI87K,cAChBysC,EAAYvoN,EAAIy1E,MAChBrxC,EAAQ,EACRokL,EAAqB,GACrBryM,EAASnW,EAAa,UAAI8+M,EAAYyJ,EAC1C,GAAMrrN,EAASiC,EAAIa,EAAIu0K,YAAYp1K,GAAOjC,EAASiC,EAAKa,EAAIu0K,YAAYp1K,EAAIa,EAAIu0K,YAAY91K,OACvFvB,EAASkC,EAAIY,EAAIu0K,YAAYn1K,GAAMlC,EAASkC,EAAKY,EAAIu0K,YAAYn1K,EAAIY,EAAIu0K,YAAY/1K,OAAS,CAC/F8H,EAAE+F,iBACF,IAAIojB,EAAkC,YAArBt2B,KAAK+kN,aAA8B/kN,KAAKkpB,UAEP/b,EAAEmiN,WAAa,IAAO,EAAI,SAAW,WAAjFniN,EAAQ,OAAI,EAAI,EAAI,SAAW,UACnB,WAAdmpB,GACAzvB,EAAI8gL,cAAgB3qK,EAAQiuB,EAC5BpkC,EAAIk6L,cAAgBl6L,EAAI87K,cACpB97K,EAAIk6L,cAAgB,GAAKl6L,EAAIk6L,cAAgBsuB,IAC7CxoN,EAAIk6L,eAAiB,GAEzB/gM,KAAKylN,eAAe1hN,EAAWiZ,EAAQiuB,EAAQ3U,KAG/CzvB,EAAI8gL,cAAgB3qK,EAAQiuB,EAC5BpkC,EAAIqjL,QAAWrjL,EAAI8gL,cAAgB,EACnC9gL,EAAIk6L,cAAgBl6L,EAAI87K,cACE,IAAtB97K,EAAI8gL,gBACJ9gL,EAAIihL,qBAAuB,KAC3BjhL,EAAIkhL,sBAAwB,MAE5BlhL,EAAIk6L,cAAgB,GAAKl6L,EAAIk6L,cAAgBsuB,IAC7CxoN,EAAIk6L,eAAiB,GAEzB/gM,KAAKylN,eAAe1hN,EAAWiZ,EAAQiuB,EAAQ3U,IAGvDt2B,KAAK4nM,qBAAqB/gM,EAAI8gL,cAAiB3nL,KAAK45K,KAAKjqK,SAC7B3P,KAAK45K,KAAKx2K,QAAQkI,GAAK,YADmB,eAAkB6B,EAAE7M,QACtFN,KAAK45K,KAAKx2K,QAAQkI,GAD8E6B,EAAE7M,OAAO,SAOrH6pD,EAAKjqD,UAAUs4K,YAAc,SAAUrrK,GACnC,IAAIiG,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MAEV0yE,GADS54E,EAAE7M,OACM6M,EAAE7M,OAAO8F,QAAQ,IAAMpG,KAAK45K,KAAKx2K,QAAQkI,GAAK,gCACnE,GAAItL,KAAK45K,KAAKj6I,aAAalZ,QAAUzmB,KAAK45K,KAAKj6I,aAAa4vL,mBACnDpiN,EAAE7M,OAAO,MAAM0D,QAAQ,cAAgB,IAAM,eAAkB+hF,GAAiB,CACrF,IAAIhiF,EAAW/D,KAAKg6K,iBAAiB5mK,EAAOC,GACxCxM,EAAM7G,KAAK45K,KAEX+rC,GADO9+M,EAAIinB,cACCjnB,EAAI87K,eAChBysC,EAAYvoN,EAAIy1E,MACpBz1E,EAAI8gL,cAAgB9gL,EAAI8gL,cAAgB,EACxC,IAAI3qK,EAASnW,EAAa,UAAI8+M,EAAYyJ,EACpCrrN,EAASiC,EAAIa,EAAIu0K,YAAYp1K,GAAOjC,EAASiC,EAAKa,EAAIu0K,YAAYp1K,EAAIa,EAAIu0K,YAAY91K,OACvFvB,EAASkC,EAAIY,EAAIu0K,YAAYn1K,GAAMlC,EAASkC,EAAKY,EAAIu0K,YAAYn1K,EAAIY,EAAIu0K,YAAY/1K,QACtFrF,KAAKylN,eAAe1hN,EAAWiZ,EAAQ,EAAI,YAOvDmtC,EAAKjqD,UAAUk/J,iBAAmB,SAAUjyJ,GACxC,IAAIiG,EACAC,EAEAF,EAAU,KACAhG,EAAE7M,OACD,eAAX6M,EAAEqB,MACFxO,KAAK2pB,SAAU,EACfxW,EAAUhG,EAAEgG,QACHhG,EAAE7M,OACX8S,EAAQD,EAAQ,GAAG2xC,QACnBzxC,EAAQF,EAAQ,GAAG4xC,UAGnB3xC,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MACDlG,EAAE7M,QAEVN,KAAK45K,KAAKj6I,aAAa8rK,cAKxBzrM,KAAKilN,MAAQjlN,KAAKm/C,WAAan/C,KAAKmlN,gBAJpCnlN,KAAKilN,MAAQjlN,KAAKm/C,UAAYn/C,KAAKitN,WAAajtN,KAAKslN,eAAiBtlN,KAAK45K,KAAKj6I,aAAa8rK,cACvFzrM,KAAKqtN,YAAcrtN,KAAKslN,eAKlCtlN,KAAKgiM,iBAAmB,CAAEh8L,EAAGoN,EAAOnN,EAAGoN,GACvC,IAAIipE,EAAQt8E,KAAK45K,KAAKoI,UAAY74K,KAAKC,MAAMpJ,KAAK45K,KAAK+I,eAAiBx5K,KAAKC,MAAMpJ,KAAK45K,KAAK+N,eAC7F3nL,KAAK8kN,iBAAqB9kN,KAAKmlN,iBAAmB7oI,EAAQt8E,KAAK45K,KAAKj6I,aAAa2qJ,SAAYtqL,KAAK45K,KAAKj6I,aAAalZ,OACpHzmB,KAAK4nN,gBAAkB5nN,KAAKg6K,iBAAiB5mK,EAAOC,GAChDrT,KAAK2pB,UACL3pB,KAAKwvN,WAAY,EACjBxvN,KAAKolN,YAAcplN,KAAK45K,KAAKt9F,MAC7Bt8E,KAAKmnN,QAAUh0M,EAAQxS,QAE3BX,KAAK4tM,eAAgB,GAKzBzjJ,EAAKjqD,UAAUqpB,iBAAmB,SAAUpc,GACxC,IAAIiG,EACAC,EAGA/S,EAFAuG,EAAM7G,KAAK45K,KAGXzmK,EAAU,KACVjM,EAAOlH,KAAK45K,KAAKj6I,aACN,cAAXxyB,EAAEqB,MACFxO,KAAK2pB,SAAU,EACfrpB,EAAS6M,EAAE7M,OACX6S,EAAUhG,EAAEgG,QACZC,EAAQD,EAAQ,GAAG2xC,QACnBzxC,EAAQF,EAAQ,GAAG4xC,UAGnB3xC,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MACV/S,EAAS6M,EAAE7M,QAEXyiL,GAAel8K,EAAIzD,QAAQkI,GAAK,4BAC5BhL,EAAOgL,GAAGtH,QAAQ,cAAgB,EAClC++K,GAAel8K,EAAIzD,QAAQkI,GAAK,0BAA0BX,aAAa,UAAW,KAE5E9D,EAAI8I,UACVozK,GAAel8K,EAAIzD,QAAQkI,GAAK,0BAA0BX,aAAa,UAAuC,eAA5B9D,EAAIqyC,MAAM32B,cAAiC,MAAQ,QAGzIviB,KAAK2pB,SACD3pB,KAAK45K,KAAKj6I,aAAa8vL,eACnBzvN,KAAKwvN,WAAgC,IAAnBr8M,EAAQxS,QAC1BX,KAAK8kN,kBAAmB,EACxB9kN,KAAKknN,oBACLlnN,KAAKqnN,eAAiB75B,GAAcrgL,IAEZ,IAAnBgG,EAAQxS,QAA+C,IAA/BX,KAAKqnN,eAAe1mN,SACjDX,KAAKsnN,cAAgB95B,GAAcrgL,GACnCA,EAAE+F,iBACFlT,KAAK8kN,kBAAmB,EACxB9kN,KAAKonN,oBAAoBj6M,IAE7BnN,KAAKwvN,WAAY,GAGzBxvN,KAAK6nN,gBAAkB7nN,KAAKg6K,iBAAiB5mK,EAAOC,GACrClG,EAAE7M,OAAO,MACR6M,EAAE7M,OAalB,GAZI4G,EAAKuf,QAAUzmB,KAAKm/C,YAAiE,GAApDn/C,KAAK45K,KAAK0qB,aAAatgM,QAAQ,mBAA4B,OAAQ2L,UAAYwD,EAAQxS,QAAU,IAAO,OAAQgP,YACjJxC,EAAE+F,iBACFlT,KAAK45K,KAAKx2K,QAAQ2D,MAAM2sE,OAAS,UACjC1zE,KAAKiiM,iBAAmB,CAAEj8L,EAAGoN,EAAOnN,EAAGoN,GAClCrT,KAAKgiM,iBAAiB,OAAShiM,KAAKiiM,iBAAiB,MAAUjiM,KAAKgiM,iBAAiB,OAAShiM,KAAKiiM,iBAAiB,OACjHjiM,KAAK45K,KAAKj6I,aAAa8rK,eACvBzrM,KAAK0rM,QAAQ,OAAQ,KAAM,KAAMv+L,GAErCnN,KAAKgiM,iBAAiB,KAAO5uL,EAC7BpT,KAAKgiM,iBAAiB,KAAO3uL,IAGjCrT,KAAK2pB,QAA8B,IAAnBxW,EAAQxS,QAAgBX,KAAK8kN,iBAAoB9kN,KAAK8kN,iBAAkB,CACxF33M,EAAE+F,iBACF,IAAIopE,EAAQt8E,KAAK45K,KAAKoI,UAAY74K,KAAKC,MAAMpJ,KAAK45K,KAAK+I,eAAiBx5K,KAAKC,MAAMpJ,KAAK45K,KAAK+N,eACzF3nL,KAAK45K,KAAKj6I,aAAa4jB,wBAA0B+4B,EAAQt8E,KAAK45K,KAAKj6I,aAAa2qJ,QAChFtqL,KAAK0nN,qBAGL1nN,KAAK8kN,kBAAmB,EACxB9kN,KAAKilN,OAAQ,KAOzB96J,EAAKjqD,UAAUspB,eAAiB,SAAUrc,GAE5BnN,KAAK45K,KACf55K,KAAK8kN,kBAAmB,EACxB9kN,KAAKm/C,WAAY,EACjBn/C,KAAK4tM,gBAAgB5tM,KAAK4tM,cAC1B5tM,KAAK2pB,SAAU,EACf3pB,KAAKqnN,eAAiB,GACtBrnN,KAAKsnN,cAAgB,GACrBtnN,KAAKgnN,UAAY,EACjBhnN,KAAK45K,KAAKx2K,QAAQ2D,MAAM2sE,OAAS,OAC3B,eAAkB1zE,KAAKkrN,YAAe,eAAkBlrN,KAAKmrN,YAAiB,eAAkBnrN,KAAKu8K,eAA4C,aAA3Bv8K,KAAKu8K,aAAa/tK,OAC1IxO,KAAKwrN,kBACLxrN,KAAKkrN,UAAYlrN,KAAKmrN,UAAY,MAEtC,IAAIuE,EAAkB3sC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,2BACxDokN,GAAmB1vN,KAAK45K,KAAKj6I,aAAalZ,QAAUzmB,KAAK45K,KAAKj6I,aAAa4jB,0BAC9D,EACb,gBAAOmsK,GACP1vN,KAAKymN,sBAETzmN,KAAKiiM,iBAAmB,CAAEj8L,EAAG,EAAGC,EAAG,GACnCjG,KAAKgiM,iBAAmB,CAAEh8L,EAAG,EAAGC,EAAG,IAKvCkkD,EAAKjqD,UAAUyvN,mBAAqB,SAAUxiN,GAC1CnN,KAAKm/C,WAAY,EACjBn/C,KAAK2pB,SAAU,EACf3pB,KAAK8kN,kBAAmB,EACxB,IAAI4K,EAAkB3sC,GAAe/iL,KAAK45K,KAAKx2K,QAAQkI,GAAK,2BACxDokN,GAAmB1vN,KAAK45K,KAAKj6I,aAAalZ,SAC1C,gBAAOipM,GACP1vN,KAAKymN,uBAUbt8J,EAAKjqD,UAAUmnD,MAAQ,SAAUl6C,GAC7B,IAAItG,EAAM7G,KAAK45K,KACX7zF,EAAiB54E,EAAE7M,OAAO8F,QAAQ,IAAMpG,KAAK45K,KAAKx2K,QAAQkI,GAAK,+BACnE,GAAKzE,EAAI2yL,cAAgB3yL,EAAI2yL,aAAanW,eAAe1iL,OAAS,GAC7DwM,EAAE7M,OAAO,MAAM0D,QAAQ,gBAAkB,IAA4C,IAAvCmJ,EAAE7M,OAAO,MAAM0D,QAAQ,aAAuB,eAAkB+hF,GAC/G,OAAO,KAEX,GAAI/lF,KAAK4tM,eAAiB/mM,EAAI84B,aAAaiwL,eAAiBziN,EAAE7M,OAAO,MAAM0D,QAAQ,cAAgB,KAAO6C,EAAI84B,aAAa4vL,iBACnHvvN,KAAKqtN,YAAcrtN,KAAKslN,eAAiB,CAC7C,IAAIlyM,EAAQjG,EAAEiG,MACVC,EAAQlG,EAAEkG,MACVtP,EAAW/D,KAAKg6K,iBAAiB5mK,EAAOC,GACxCsyM,EAAY9+M,EAAI87K,cAChBysC,EAAYvoN,EAAIy1E,MACpBz1E,EAAI8gL,cAAgB9gL,EAAI8gL,cAAgB,EACxC,IAAI3qK,EAASnW,EAAa,UAAI8+M,EAAYyJ,EACpCrrN,EAASiC,EAAIa,EAAIu0K,YAAYp1K,GAAOjC,EAASiC,EAAKa,EAAIu0K,YAAYp1K,EAAIa,EAAIu0K,YAAY91K,OACvFvB,EAASkC,EAAIY,EAAIu0K,YAAYn1K,GAAMlC,EAASkC,EAAKY,EAAIu0K,YAAYn1K,EAAIY,EAAIu0K,YAAY/1K,QACtFrF,KAAKylN,eAAe1hN,EAAWiZ,EAAQ,EAAI,YAOvDmtC,EAAKjqD,UAAU85K,iBAAmB,SAAU5mK,EAAOC,GAC/C,IAAIxM,EAAM7G,KAAK45K,KACXK,EAAcpzK,EAAIzD,QAAQgE,wBAC1ByJ,EAAchK,EAAIzD,QAAQ82K,cAAc92G,YAAYvyD,YACpDG,EAAcnK,EAAIzD,QAAQ82K,cAAc92G,YAAYpyD,YACpDmpK,EAAYtzK,EAAIzD,QAAQ82K,cAAcE,gBAAgBD,UACtDE,EAAaxzK,EAAIzD,QAAQ82K,cAAcE,gBAAgBC,WACvDt6H,EAAYk6H,EAAYj1K,KAAO6L,EAAcwpK,EAC7Cv6H,EAAYm6H,EAAYl1K,IAAMiM,EAAcmpK,EAChD,OAAO,IAAI0B,GAAM1yK,KAAK6a,IAAI5Q,EAAQ2sC,GAAY52C,KAAK6a,IAAI3Q,EAAQysC,KAKnEqK,EAAKjqD,UAAU6oB,iBAAmB,WAC1B/oB,KAAK45K,KAAK5wJ,cAGd,OAAald,IAAI9L,KAAK45K,KAAKx2K,QAASpD,KAAKqlN,WAAYrlN,KAAKkvN,cAAelvN,MACzE,OAAa8L,IAAI9L,KAAK45K,KAAKx2K,QAAS,QAASpD,KAAKqnD,MAAOrnD,MACzD,OAAa8L,IAAI9L,KAAK45K,KAAKx2K,QAAS,WAAYpD,KAAKw4K,YAAax4K,MAClEA,KAAK45K,KAAKzwJ,GAAG,OAAQG,eAAgBtpB,KAAKupB,iBAAkBvpB,MAC5DA,KAAK45K,KAAKzwJ,GAAG,OAAQpd,gBAAiB/L,KAAKo/J,iBAAkBp/J,MAC7DA,KAAK45K,KAAKzwJ,GAAG,OAAQ7U,cAAetU,KAAKwpB,eAAgBxpB,MACzD,OAAa8L,IAAI9L,KAAK45K,KAAKx2K,QAASpD,KAAKipB,YAAajpB,KAAK2vN,mBAAoB3vN,QAKnFmqD,EAAKjqD,UAAU0xC,oBAAsB,WAC7B5xC,KAAK45K,KAAK5wJ,cAGd,OAAa7jB,OAAOnF,KAAK45K,KAAKx2K,QAASpD,KAAKqlN,WAAYrlN,KAAKkvN,eAC7D,OAAa/pN,OAAOnF,KAAK45K,KAAKx2K,QAAS,QAASpD,KAAKqnD,OACrD,OAAaliD,OAAOnF,KAAK45K,KAAKx2K,QAAS,WAAYpD,KAAKw4K,aACxDx4K,KAAK45K,KAAK39I,IAAI,OAAQ3S,eAAgBtpB,KAAKupB,kBAC3CvpB,KAAK45K,KAAK39I,IAAI,OAAQlwB,gBAAiB/L,KAAKo/J,kBAC5Cp/J,KAAK45K,KAAK39I,IAAI,OAAQ3nB,cAAetU,KAAKwpB,gBAC1CxpB,KAAK45K,KAAK39I,IAAIj8B,KAAKipB,YAAajpB,KAAK2vN,sBAOzCxlK,EAAKjqD,UAAU4U,cAAgB,WAC3B,MAAO,QAQXq1C,EAAKjqD,UAAUsS,QAAU,WACrBxS,KAAKipM,aAAe,KACpBjpM,KAAKysN,kBAAoB,KACzBzsN,KAAK4mN,YAAc,KACnB5mN,KAAK4sN,aAAe,KACpB5sN,KAAKktN,YAAc,KACnBltN,KAAKq/L,mBAAqB,KAC1Br/L,KAAKqnN,eAAiB,KACtBrnN,KAAKsnN,cAAgB,KACrBtnN,KAAK6vN,sBAAwB,KAC7B7vN,KAAK4nN,gBAAkB,KACvB5nN,KAAK6nN,gBAAkB,KACvB7nN,KAAK0tL,aAAe,GACpB1tL,KAAK6oN,eAAiB,KACtB7oN,KAAKm+L,UAAY,GACjBn+L,KAAKgiM,iBAAmB,KACxBhiM,KAAKiiM,iBAAmB,KACxBjiM,KAAK4xC,sBAGL5xC,KAAKu8K,aAAe,MAEjBpyH,EAtlEc,GCwBzB,qBAEA,4BACA,gBACA,OACA,gBACA,YAEA,cACA,UACA,kBACA,gBACA,cAEA,4EACA,yBACA,qBACA,4DACA,iBACA,WACA,iBACA,sBAEA,eACA,eACA,uBACA,cACA,CACA,qBAOA,SACA,oBAEA,SACA,iBACA,kCACA,gBACA,mDAEA,0BACA,iBACA,eAIA,mBAEA,2CACA,sECzFuW,MCQnW,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIusH,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,WAAWnoK,MAAM,CAAC,GAAK,gBAAgB,CAACwS,EAAG,WAAW,CAACy1J,IAAI,cAAcjoK,MAAM,CAAC,WAAa0nK,EAAIo5C,QAAQ,aAAc,EAAK,aAAep5C,EAAIhiJ,aAAa,cAAgBgiJ,EAAIq5C,gBAAgB,CAACvuM,EAAG,YAAY,CAACA,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,KAAK,mBAAoB,EAAM,WAAa,KAAK,MAAQ,IAAI,SAAU,EAAM,UAAY,UAAUwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,OAAO,mBAAoB,EAAM,WAAa,GAAG,UAAY,OAAO,cAAgB0nK,EAAIs5C,oBAAoB,MAAQ,UAAUxuM,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,OAAO,mBAAoB,EAAM,WAAa,OAAO,UAAY,UAAUwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,UAAU,mBAAoB,EAAM,WAAa,OAAO,UAAY,YAAYwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,aAAa,mBAAoB,EAAM,WAAa,aAAa,UAAY,YAAYwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,iBAAiB,WAAa,aAAa,mBAAoB,EAAM,UAAY,aAAa,IAAI,IAAI,IACljC,GAAkB,G,yhCCmBtB,0BAKA,QACA,mBACA,yBAEA,gBACA,OACA,sCACA,WACA,4BAGA,qBAIA,SACA,oCAGA,wBACA,0JAEA,kBACA,0JAEA,kBACA,yJAEA,kBACA,0JAEA,kBACA,8JAEA,kBACA,0JAEA,kBACA,0JAEA,kBACA,0JAEA,kBACA,0JAEA,kBACA,8JAEA,kBACA,0JAEA,kBACA,0JAEA,kBACA,+JADA,GAIA,0BAEA,uBACA,uEACA,wCACA,qDAEA,qCAEA,wBAGA,GAFA,iCAEA,uEACA,gCACA,8BAOA,GADA,gCACA,uEACA,4BACA,0BAKA,2BACA,iBACA,OACA,iBACA,aACA,qBACA,sBACA,SACA,KACA,cACA,eADA,GAIA,sBACA,SAQA,OAPA,uBACA,WACA,cACA,SAEA,gBAEA,GAGA,sCACA,UACA,gBAEA,uCACA,+IACA,IAQA,EARA,KACA,wEACA,kCACA,OACA,KACA,mBAEA,KACA,iDACA,0BACA,wCACA,oCACA,GACA,0BACA,yDACA,sCACA,0BACA,oEAEA,YAEA,8BACA,eAIA,UAeA,SACA,iBCzL+V,MCQ3V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI0nK,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,cAAcnoK,MAAM,CAAC,GAAK,mBAAmB,CAACwS,EAAG,WAAW,CAACy1J,IAAI,iBAAiBE,YAAY,mBAAmBnoK,MAAM,CAAC,WAAa0nK,EAAIu5C,WAAW,aAAc,EAAK,aAAev5C,EAAIhiJ,aAAa,cAAgBgiJ,EAAIq5C,gBAAgB,CAACvuM,EAAG,YAAY,CAACA,EAAG,WAAW,CAAC21J,YAAY,mBAAmBnoK,MAAM,CAAC,MAAQ,KAAK,mBAAoB,EAAM,WAAa,KAAK,SAAU,EAAM,UAAY,UAAUwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,OAAO,mBAAoB,EAAM,WAAa,GAAG,UAAY,OAAO,cAAgB0nK,EAAIw5C,iBAAiB,MAAQ,UAAU1uM,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,gBAAgB,mBAAoB,EAAM,WAAa,aAAa,MAAQ,QAAQ,UAAY,UAAUwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,WAAW,mBAAoB,EAAM,WAAa,aAAa,UAAY,SAAS,MAAQ,WAAWwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,aAAa,mBAAoB,EAAM,WAAa,aAAa,UAAY,YAAYwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,iBAAiB,WAAa,aAAa,mBAAoB,EAAM,UAAY,YAAY,IAAI,IAAI,IAClqC,GAAkB,GCmBtB,0BAEA,QACA,qBAEA,gBACA,OACA,4CACA,4BAGA,qBAIA,SACA,iCACA,yBACA,kFAEA,mBACA,kFAEA,iBACA,gFAEA,mBACA,kFAEA,kBACA,iFAEA,0BACA,8EAEA,iBACA,gFAEA,sBACA,oFAEA,uBACA,sFAEA,mBACA,kFAEA,oBACA,mFAEA,uBACA,sFAEA,kBACA,6EAEA,mBACA,6EAEA,kBACA,iFAEA,kBACA,iFAEA,mBACA,uFADA,GAKA,0BAEA,uBACA,uEACA,wCACA,qDAEA,qCAEA,wBAGA,GAFA,iCAEA,uEACA,gCACA,8BAOA,GADA,gCACA,uEACA,4BACA,0BAKA,2BACA,kBACA,QACA,iBACA,wDACA,qBACA,sBACA,SACA,KACA,eACA,2DADA,IAKA,SACA,iBCrIkW,MCQ9V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI0nK,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,YAAYnoK,MAAM,CAAC,GAAK,iBAAiB,CAACwS,EAAG,WAAW,CAACy1J,IAAI,eAAeE,YAAY,iBAAiBnoK,MAAM,CAAC,WAAa0nK,EAAIy5C,SAAS,aAAc,EAAK,aAAez5C,EAAIhiJ,aAAa,cAAgBgiJ,EAAIq5C,gBAAgB,CAACvuM,EAAG,YAAY,CAACA,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,KAAK,mBAAoB,EAAM,WAAa,KAAK,SAAU,EAAM,UAAY,UAAUwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,OAAO,mBAAoB,EAAM,WAAa,GAAG,UAAY,OAAO,cAAgB0nK,EAAIw5C,iBAAiB,MAAQ,UAAU1uM,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,gBAAgB,mBAAoB,EAAM,WAAa,aAAa,UAAY,OAAO,MAAQ,WAAWwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,WAAW,mBAAoB,EAAM,WAAa,aAAa,UAAY,SAAS,MAAQ,WAAWwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,aAAa,mBAAoB,EAAM,WAAa,aAAa,UAAY,YAAYwS,EAAG,WAAW,CAACxS,MAAM,CAAC,MAAQ,iBAAiB,WAAa,aAAa,mBAAoB,EAAM,UAAY,YAAY,IAAI,IAAI,IACznC,GAAkB,GCmBtB,0BAKA,QACA,qBAEA,gBACA,OACA,wCACA,4BAGA,qBAIA,SACA,iCACA,yBACA,kFAEA,mBACA,kFAEA,iBACA,gFAEA,mBACA,kFAEA,kBACA,iFAEA,0BACA,8EAEA,iBACA,gFAEA,sBACA,oFAEA,uBACA,sFAEA,mBACA,kFAEA,oBACA,mFAEA,uBACA,sFAEA,kBACA,6EAEA,mBACA,6EAEA,kBACA,iFAEA,kBACA,iFAEA,mBACA,uFADA,GAIA,0BAEA,uBACA,uEACA,wCACA,qDAEA,qCAEA,wBAGA,GAFA,iCAEA,uEACA,gCACA,8BAOA,GADA,gCACA,uEACA,4BACA,0BAMA,2BACA,kBACA,QACA,iBACA,wDACA,qBACA,sBACA,SACA,KACA,eACA,2DADA,IAKA,SACA,iBCxIgW,MCQ5V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI0nK,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAsBF,EAAIG,MAAMr1J,GAAO,OAAOk1J,EAAI4B,GAAG,IACnG,GAAkB,CAAC,WAAa,IAAI5B,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAAC21J,YAAY,aAAa,CAAC31J,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,MAAM,CAAC21J,YAAY,gBAAgBnoK,MAAM,CAAC,IAAM,EAAQ,aAA+CwS,EAAG,MAAM,CAAC21J,YAAY,YAAY,CAAC31J,EAAG,IAAI,CAAC21J,YAAY,eAAe,CAACT,EAAIQ,GAAG,uKAAuK11J,EAAG,IAAI,CAAC21J,YAAY,gBAAgB,CAACT,EAAIQ,GAAG,6LAA6L11J,EAAG,MAAMk1J,EAAIQ,GAAG,wFAAwF11J,EAAG,IAAI,CAAC21J,YAAY,gBAAgBnoK,MAAM,CAAC,KAAO,kDAAkD,CAAC0nK,EAAIQ,GAAG,iDCgB78B,wBACA,qBAGA,gBACA,UAIA,aC1BiW,MCQ7V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAwC,WACxC,IAAI53K,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,KAClEP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASO,IAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,IAV3C,GAaxC,GAA0C,SAAUM,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HjB,EAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAO5DwvN,GAAgB,YAChBC,GAAW,aACXC,GAAe,kBACfroH,GAAO,SACP,GAAS,WACTsoH,GAAa,YACbC,GAAa,eACbC,GAAO,SACPC,GAAO,SACPC,GAAQ,UACRC,GAAQ,UACRhpJ,GAAS,WACT,GAAS,WACTipJ,GAAY,eACZC,GAAY,eACZC,GAAY,eACZC,GAAY,eACZ,GAAQ,UACRC,GAAe,kBACfC,GAAiB,oBACjBC,GAAU,aACV1lM,GAAS,iBACT2lM,GAAkB,qBAIlB,GAAuB,SAAUvuN,GAEjC,SAASwuN,IACL,OAAkB,OAAXxuN,GAAmBA,EAAOC,MAAM9C,KAAMU,YAAcV,KA4C/D,OA9CA,GAAUqxN,EAAOxuN,GAIjB,GAAW,CACP,eAAS,KACVwuN,EAAMnxN,UAAW,UAAM,GAC1B,GAAW,CACP,eAAS,KACVmxN,EAAMnxN,UAAW,gBAAY,GAChC,GAAW,CACP,eAAS,KACVmxN,EAAMnxN,UAAW,cAAU,GAC9B,GAAW,CACP,eAAS,KACVmxN,EAAMnxN,UAAW,eAAW,GAC/B,GAAW,CACP,gBAAS,IACVmxN,EAAMnxN,UAAW,eAAW,GAC/B,GAAW,CACP,eAAS,IACVmxN,EAAMnxN,UAAW,WAAO,GAC3B,GAAW,CACP,eAAS,IACVmxN,EAAMnxN,UAAW,WAAO,GAC3B,GAAW,CACP,eAAS,IACVmxN,EAAMnxN,UAAW,aAAS,GAC7B,GAAW,CACP,eAAS,IACVmxN,EAAMnxN,UAAW,aAAS,GAC7B,GAAW,CACP,eAAS,IACVmxN,EAAMnxN,UAAW,gBAAY,GAChC,GAAW,CACP,eAAS,IACVmxN,EAAMnxN,UAAW,gBAAY,GAChC,GAAW,CACP,eAAS,OACVmxN,EAAMnxN,UAAW,gBAAY,GAChC,GAAW,CACP,eAAS,OACVmxN,EAAMnxN,UAAW,gBAAY,GAChC,GAAW,CACP,eAAS,MACVmxN,EAAMnxN,UAAW,cAAU,GACvBmxN,EA/Ce,CAgDxB,QAgBE,GAAiC,SAAUxuN,GAE3C,SAASyuN,EAAgBnuN,EAASC,GAC9B,IAAIC,EAAQR,EAAOS,KAAKtD,KAAMmD,EAASC,IAAYpD,KAsBnD,OArBAqD,EAAMuf,KAAO,EACbvf,EAAMkuN,QAAU,EAChBluN,EAAMmuN,iBAAkB,EACxBnuN,EAAMouN,cAAe,EACrBpuN,EAAMquN,MAAQ,EACdruN,EAAMsuN,MAAQ,EACdtuN,EAAMuuN,OAAS,KACfvuN,EAAMwuN,QAAU,IAChBxuN,EAAMwmB,OAAS,EACfxmB,EAAMymB,OAAS,EACfzmB,EAAMyuN,OAAS,EACfzuN,EAAM0uN,QAAU,EAChB1uN,EAAM2uN,mBAAoB,EAC1B3uN,EAAM4uN,iBAAkB,EAExB5uN,EAAM6uN,gBAAiB,EAEvB7uN,EAAM8uN,YAAc,EACpB9uN,EAAM+uN,cAAe,EACrB/uN,EAAMgvN,UAAW,EACjB,gBAAS,mBAAoBhvN,EAAMivN,sBAAuBjvN,GACnDA,EAg1FX,OAx2FA,GAAUiuN,EAAiBzuN,GA+B3ByuN,EAAgBpxN,UAAU4T,UAAY,WAClC9T,KAAKuyN,gBAAkB,GACvBvyN,KAAKwyN,YAAc,GACnBxyN,KAAKyyN,oBAAsB,GAC3BzyN,KAAK0yN,eAAiB,GACtB1yN,KAAK2yN,oBAAsB,GAC3B3yN,KAAK4yN,uBAAyB,GAC9B5yN,KAAK6yN,iBAAmB,GACxB7yN,KAAK8yN,eAAiB,GACtB9yN,KAAK+yN,WAAa,CAAEhuN,IAAK,GAAIC,KAAM,GAAIK,OAAQ,GAAIC,MAAO,IAC1DtF,KAAKgzN,WAAa,GAClBhzN,KAAKizN,SAAW,GAChBjzN,KAAKkzN,UAAY,GACjBlzN,KAAKmzN,iBAAmB,GACxBnzN,KAAKozN,eACLpzN,KAAKqzN,oBACLrzN,KAAKszN,qBAAuB,GAAG5lN,MAAMpK,KAAKtD,KAAKoD,QAAQ6iD,WAE3DqrK,EAAgBpxN,UAAUkzN,aAAe,WACrC,IAAK,IAAIpyN,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAC/BhB,KAAKuzN,OAAOvyN,GAAGsK,KAChBtL,KAAKwzN,oBAAoBxzN,KAAKuzN,OAAOvyN,GAAI,CAAEsK,GAAI,UAAYtL,KAAKuxN,QAAQ3/M,aACxE5R,KAAKuxN,QAAUvxN,KAAKuxN,QAAU,GAElCvxN,KAAKkzN,UAAUlzN,KAAKuzN,OAAOvyN,GAAGsK,IAAM,CAAEqW,IAAK3hB,KAAKuzN,OAAOvyN,GAAG2gB,IAAKyU,IAAKp2B,KAAKuzN,OAAOvyN,GAAGo1B,MAG3Fk7L,EAAgBpxN,UAAUuzN,mBAAqB,SAAUhpN,EAAUipN,GAC/D,IAAIp0L,EAAMt/B,KAAKuE,cAAc,OAO7B,OANIkG,GAAYA,EAAS9J,OAAS,GAC9B,eAAS,CAAC2+B,GAAM70B,GAEhBipN,GACAp0L,EAAI30B,aAAa,KAAM+oN,GAEpBp0L,GAQXgyL,EAAgBpxN,UAAUyT,OAAS,WAC/B3T,KAAKoD,QAAQuH,aAAa,OAAQ,QAClC3K,KAAK2D,aACL3D,KAAK2zN,kBAAmB,EACpB3zN,KAAK4zN,gBAAkB5zN,KAAK6zN,mBAC5B7zN,KAAK8zN,gBAET9zN,KAAK+zN,iBACL/zN,KAAK6T,iBACL7T,KAAK0L,wBAET4lN,EAAgBpxN,UAAU4zN,cAAgB,WACtC9zN,KAAKq3D,MAAQzpD,SAASrJ,cAAc,SACpC,IAAIyzD,EAAQpqD,SAASrJ,cAAc,SACnCvE,KAAKq3D,MAAMnyD,UAAU4G,IAAI,8BACzB9L,KAAKq3D,MAAM1sD,aAAa,OAAQ,gBAChC,IAAK,IAAI3J,EAAI,EAAGA,EAAIhB,KAAKg0N,SAAUhzN,IAAK,CAEpC,IADA,IAAI4+F,EAAKhyF,SAASrJ,cAAc,MACvBsf,EAAI,EAAGA,EAAI7jB,KAAK0iB,QAASmB,IAAK,CACnC,IAAIq9E,EAAKtzF,SAASrJ,cAAc,MAChC28F,EAAGh8F,UAAU4G,IAAI,wBACjB9L,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAE2E,IAAK3gB,EAAE4Q,WAAYwkB,IAAKvS,EAAEjS,WAAYqiN,MAAO,IAAKC,MAAO,MAAShzH,GAChGlhG,KAAKm0N,iBAAiBjzH,EAAIlgG,EAAG6iB,GAC7B7jB,KAAKo0N,kBAAkBlzH,EAAI,CAAEv/E,IAAK3gB,EAAGo1B,IAAKvS,EAAGowM,MAAO,EAAGC,MAAO,IAC9Dt0H,EAAGl7F,YAAYw8F,GAEnBlpC,EAAMtzD,YAAYk7F,GAEtB5/F,KAAKq3D,MAAM3yD,YAAYszD,GACvBh4D,KAAKoD,QAAQsB,YAAY1E,KAAKq3D,OAC9Br3D,KAAK0L,wBAET4lN,EAAgBpxN,UAAUyD,WAAa,WAEnC,GADA3D,KAAKq0N,kBACDr0N,KAAKoD,QAAQ45C,kBAAoB,GAAKh9C,KAAKoD,QAAQ0pD,iBAAiB,YAAYnsD,OAAS,EAAG,CAC5F,IAAI2zN,EAAgB,GACpBt0N,KAAKiL,cAAc,CAAEsoN,OAAQ,KAAM,GACnCvzN,KAAKgyN,mBAAoB,EACzB,IAAK,IAAIhxN,EAAI,EAAGA,EAAIhB,KAAKoD,QAAQ0pD,iBAAiB,YAAYnsD,OAAQK,IAClEszN,EAAcjoN,KAAMrM,KAAKoD,QAAQ0pD,iBAAiB,YAAY9rD,IAElE,IAASA,EAAI,EAAGA,EAAIszN,EAAc3zN,OAAQK,IAAK,CAC3C,IAAIuzN,EAAeD,EAActzN,GAC7BhB,KAAKyF,WACL,eAAS,CAAC8uN,GAAe,SAE7Bv0N,KAAKw0N,gBAAgBD,GACrBv0N,KAAKy0N,SACLz0N,KAAKg0N,SAET,IAAShzN,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAAK,CACrCuzN,EAAev0N,KAAKoD,QAAQ8I,cAAc,IAAMlM,KAAKuzN,OAAOvyN,GAAGsK,IAEnE,GADAtL,KAAK00N,gBAAgB10N,KAAKuzN,OAAOvyN,IAC7BhB,KAAK20N,eAAiB30N,KAAKuzN,OAAOvyN,GAAGo1B,KACrCp2B,KAAK20N,eAAkB30N,KAAKuzN,OAAOvyN,GAAGo1B,IAAMp2B,KAAKuzN,OAAOvyN,GAAGizN,MAAQ,CACnE,IAAIW,EAAW50N,KAAK20N,eAAiB30N,KAAKuzN,OAAOvyN,GAAGizN,MACpDj0N,KAAKwzN,oBAAoBxzN,KAAKuzN,OAAOvyN,GAAI,CAAEo1B,IAAKw+L,EAAW,EAAI,EAAIA,IAEvE50N,KAAK60N,gBAAgBN,EAAcv0N,KAAKuzN,OAAOvyN,IAC/C,IAAI8zN,EAAU90N,KAAK+0N,aAAaR,EAAcv0N,KAAKuzN,OAAOvyN,GAAIhB,KAAKuzN,OAAOvyN,GAAGsK,IAAI,GACjFtL,KAAKuyN,gBAAgBlmN,KAAKyoN,GAC1B90N,KAAKo0N,kBAAkBG,EAAcv0N,KAAKuzN,OAAOvyN,IACjDhB,KAAKg1N,WAAah1N,KACdA,KAAKi1N,aAAe1uN,OAAOkwH,WAAW,IAAMz2H,KAAKi1N,WAAa,KAAKp+F,UACnE72H,KAAKm0N,iBAAiBI,EAAcv0N,KAAKuzN,OAAOvyN,GAAG2gB,IAAK3hB,KAAKuzN,OAAOvyN,GAAGo1B,KACvEp2B,KAAKk1N,YAAcX,EACnBv0N,KAAKm1N,kBAAkBZ,EAAcv0N,KAAKuzN,OAAOvyN,IACjDhB,KAAKk1N,YAAc,MAEvBl1N,KAAKo1N,WAAW,CAACb,IAErBv0N,KAAKq1N,qBACDr1N,KAAK6zN,mBACL7zN,KAAKs1N,6BAITt1N,KAAKu1N,qBAAqBv1N,KAAKuzN,SAE/BvzN,KAAKw1N,eAAkBx1N,KAAKi1N,YAAc1uN,OAAOkwH,WAAW,IAAMz2H,KAAKi1N,WAAa,KAAKp+F,SACzF72H,KAAKy1N,sBAAsBz1N,KAAKuyN,iBAEpCvyN,KAAK01N,cACL11N,KAAK21N,aACL31N,KAAK41N,eACL51N,KAAK61N,yBACL71N,KAAK81N,iBAAmB91N,KAAK20N,eACvB30N,KAAK6zN,mBACP7zN,KAAK+1N,wBAET/1N,KAAKg2N,gBAET1E,EAAgBpxN,UAAU2zN,gBAAkB,WACxC,OAAQ7zN,KAAKi1N,YAAc1uN,OAAOkwH,WAAW,IAAMz2H,KAAKi1N,WAAa,KAAKp+F,SAE9Ey6F,EAAgBpxN,UAAUmzN,kBAAoB,WAC1CrzN,KAAKi2N,SAAW,GACXj2N,KAAK6zN,kBACN7zN,KAAKi2N,SAAS,GAAKj2N,KAAKoD,QAAQsyC,eACvB11C,KAAKoD,QAAQsyC,cAA0B,YAAI11C,KAAKk2N,iBAGzDl2N,KAAKi2N,SAAS,GAAKj2N,KAAKoD,QAAQsyC,eAC1B11C,KAAKoD,QAAQsyC,cAA0B,YAC7C11C,KAAKi2N,SAAS,GAAKj2N,KAAKoD,QAAQsyC,gBACvB11C,KAAKoD,QAAQsyC,cAAclsC,aAAgBxJ,KAAKy0N,SAAW,GAAKz0N,KAAKm2N,YAAY,IAC/En2N,KAAKy0N,SAChBz0N,KAAKi2N,SAAS,GAAKj2N,KAAKi2N,SAAS,GAAKj2N,KAAKk2N,kBAGnD5E,EAAgBpxN,UAAU8zN,OAAS,SAAUoC,GACzC,IAAIpC,EAAS,EACb,GAAIh0N,KAAK4iB,KAAO,GAAK,eAAkBwzM,GAEnC,OADApC,EAASh0N,KAAK4iB,KACPoxM,EAEX,IAAK,IAAIhzN,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAChChB,KAAKuzN,OAAOvyN,GAAGkzN,MAAQl0N,KAAKuzN,OAAOvyN,GAAG2gB,IAAMqyM,IAC5CA,EAASh0N,KAAKuzN,OAAOvyN,GAAGkzN,MAAQl0N,KAAKuzN,OAAOvyN,GAAG2gB,KAMvD,OAH2B,IAAvB3hB,KAAKuzN,OAAO5yN,SACZqzN,EAASh0N,KAAK0iB,SAEXsxM,GAEX1C,EAAgBpxN,UAAUu0N,OAAS,WAC/B,IAAIA,EAAS,EAGb,OAFAA,EAASz0N,KAAK0iB,QACd1iB,KAAK20N,eAAiBF,EACfA,GAEXnD,EAAgBpxN,UAAUm1N,mBAAqB,WAC3C,IAAK,IAAIr0N,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAAK,CACzC,IAAIsK,EAAKtL,KAAKuzN,OAAOvyN,GAAGsK,GACxB,GAAItL,KAAKoD,QAAQ8I,cAAc,QAAUZ,EAAK,MAA9C,CACI,IAAIqW,EAAMhQ,SAAS3R,KAAKoD,QAAQ8I,cAAc,QAAUZ,EAAK,MAAMZ,aAAa,YAAa,IACzF0rB,EAAMzkB,SAAS3R,KAAKoD,QAAQ8I,cAAc,QAAUZ,EAAK,MAAMZ,aAAa,YAAa,IAC7F1K,KAAKkzN,UAAUlzN,KAAKuzN,OAAOvyN,GAAGsK,IAAM,CAAEqW,IAAKA,EAAKyU,IAAKA,MAOjEk7L,EAAgBpxN,UAAUm2N,iBAAmB,SAAU5rN,EAAUipN,EAASlvN,GACtE,IAAIpB,EAAUpD,KAAKuE,cAAc,OAUjC,OATIC,GACA,eAAS,CAACpB,GAAU,CAACoB,IAErBiG,GAAYA,EAAS9J,OAAS,GAC9B,eAAS,CAACyC,GAAUqH,GAEpBipN,GACAtwN,EAAQuH,aAAa,KAAM+oN,GAExBtwN,GAEXkuN,EAAgBpxN,UAAUo2N,eAAiB,SAAU3pM,GACjD,GAAIA,EACA,IACI,MAAwB,oBAAbA,GAA2B/e,SAASk/C,iBAAiBngC,GAAUhsB,OAC/D,eAAQiN,SAAS1B,cAAcygB,GAAU7hB,UAAUyB,QAGnD,eAAQogB,GAGvB,MAAOmrF,GACH,IAAIy+G,EAAiB,OAAmBrrN,SAASyhB,GACjD,OAAO,eAAS3sB,KAAKgL,qBAA6C,kBAAf,EAA2BurN,EAAiB5pM,KAK3G2kM,EAAgBpxN,UAAUs2N,eAAiB,SAAU3rN,EAAS4rN,EAAejoN,EAAMwrI,EAAkB3kI,GACjG,IAAIknD,EAAav8D,KAAKs2N,eAAezrN,GACjC2+L,EAAmB,GACvB,GAAoB,MAAf3+L,EAAQ,IAA6B,MAAfA,EAAQ,IACa,WAA5C+C,SAAS1B,cAAcrB,GAAS6E,QAgB/B,CAED,IAAIgnN,EAAan6J,EAAW,GAAIv8D,KAAMqV,EAAM7G,EAAMwrI,EAAkB,KAAMy8E,GAC1E,GAAIC,EAAY,CACZ,IAAK,IAAI7oN,EAAK,EAAG8oN,EAAeD,EAAY7oN,EAAK8oN,EAAah2N,OAAQkN,IAAM,CACxE,IAAI0T,EAAOo1M,EAAa9oN,GACxB27L,EAAiBn9L,KAAKkV,GAE1B,eAAO,GAAG7T,MAAMpK,KAAKkmM,GAAmBitB,QAxBU,CACtD,IAAIG,EAAShpN,SAAS1B,cAAcrB,GACpC,IAAK,eAAkB+rN,GAQnB,MAP6B,SAAzBA,EAAO7vN,MAAMC,SACb4vN,EAAO7vN,MAAMyiI,eAAe,WAEK,KAAjCotF,EAAOlsN,aAAa,UACpBksN,EAAOhsN,gBAAgB,cAE3B6rN,EAAc/xN,YAAYkyN,GAI1B/rN,EAAUA,EAAQ0B,SAe9B+kN,EAAgBpxN,UAAU60N,aAAe,SAAU8B,EAAaC,EAAYC,EAAS/8E,GACjF,eAAS,CAAC68E,GAAc,CAAC,GAAOzF,KAChCyF,EAAYlsN,aAAa,OAAQ,YAC7B3K,KAAKw1N,eACLqB,EAAYlsN,aAAa,eAAgB,SAE7C,IAAIF,EAAWqsN,EAAWrsN,SAAWqsN,EAAWrsN,SAASxG,MAAM,KAAO,KAQtE,GAPAjE,KAAKixN,aAAe4F,EAAY3qN,cAAc,sBAC1C2qN,EAAY3qN,cAAc,sBAC1BlM,KAAKq2N,iBAAiB5rN,EAAUosN,EAAYvrN,GAAK,WAAY4lN,IACjE2F,EAAYnyN,YAAY1E,KAAKixN,cACxB6F,EAAWrhK,SACZz1D,KAAKg3N,aAAaH,GAElBC,EAAWrrM,OAAQ,CACnB,IAAIwrM,EAAwBJ,EAAY3qN,cAAc,mBAClD2qN,EAAY3qN,cAAc,mBAAqBlM,KAAKq2N,iBAAiB,GAAIQ,EAAYvrN,GAAK,WAAY,IAE1G,GADA,eAAS,CAAC2rN,GAAwB,CAACxrM,MAC9BorM,EAAY3qN,cAAc,mBAAoB,CAC/C,IAAIZ,EAAKtL,KAAKoD,QAAQkI,GAAK,iBAAmByrN,EAC9C/2N,KAAKw2N,eAAeM,EAAWrrM,OAAQwrM,EAAuB3rN,EAAI0uI,EAAkB,UACpFh6I,KAAKixN,aAAavsN,YAAYuyN,GAC9Bj3N,KAAK0L,wBAGb,GAAIorN,EAAWjsN,QAAS,CACpB,IAAIqsN,EAAaJ,EAAWrsN,SAAWqsN,EAAWrsN,SAASxG,MAAM,KAAO,KACxEjE,KAAKm3N,UAAYN,EAAY3qN,cAAc,oBAAsB2qN,EAAY3qN,cAAc,oBACvFlM,KAAKq2N,iBAAiBa,EAAYL,EAAYvrN,GAAK,QAAS2lN,IAChE,IAAImG,EAAep3N,KAAKixN,aAAa/kN,cAAc,mBAC/C3F,OAAOC,iBAAiBxG,KAAKixN,aAAa/kN,cAAc,oBAAoB7G,OAAS,MACrFgyN,EAAqB,gBAAkBD,EAAe,IAE1D,GADA,gBAASp3N,KAAKm3N,UAAW,CAAE9xN,OAAQgyN,KAC9BR,EAAY3qN,cAAc,oBAAqB,CAC5CZ,EAAKtL,KAAKoD,QAAQkI,GAAK,kBAAoByrN,EAC/C/2N,KAAKw2N,eAAeM,EAAWjsN,QAAS7K,KAAKm3N,UAAW7rN,EAAI0uI,EAAkB,WAC9Eh6I,KAAKixN,aAAavsN,YAAY1E,KAAKm3N,WACnCn3N,KAAK0L,wBAGb,OAAOmrN,GAEXvF,EAAgBpxN,UAAU82N,aAAe,SAAUzC,GAC/C,eAAS,CAACA,GAAe,CAACpD,MAE9BG,EAAgBpxN,UAAUs0N,gBAAkB,SAAUD,GAClD,IAAIzuI,EAAQ,CACRmuI,MAAOM,EAAa1gL,aAAa,cAAgBliC,SAAS4iN,EAAa7pN,aAAa,cAAe,IAAM,EACzGwpN,MAAOK,EAAa1gL,aAAa,cAAgBliC,SAAS4iN,EAAa7pN,aAAa,cAAe,IAAM,EACzG4sN,SAAU/C,EAAa1gL,aAAa,iBAAmBliC,SAAS4iN,EAAa7pN,aAAa,iBAAkB,IAAM,EAClH6sN,SAAUhD,EAAa1gL,aAAa,iBAAmBliC,SAAS4iN,EAAa7pN,aAAa,iBAAkB,IAAM,EAClH8sN,SAAUjD,EAAa1gL,aAAa,iBAAmBliC,SAAS4iN,EAAa7pN,aAAa,iBAAkB,IAAM,KAClH+sN,SAAUlD,EAAa1gL,aAAa,iBAAmBliC,SAAS4iN,EAAa7pN,aAAa,iBAAkB,IAAM,KAClHiX,IAAK4yM,EAAa1gL,aAAa,YAAcliC,SAAS4iN,EAAa7pN,aAAa,YAAa,IAAM,EACnG0rB,IAAKm+L,EAAa1gL,aAAa,YAAcliC,SAAS4iN,EAAa7pN,aAAa,YAAa,IAAM,EACnGY,GAAIipN,EAAa7pN,aAAa,MAC9B+pH,OAAQ8/F,EAAa1gL,aAAa,eAAiBliC,SAAS4iN,EAAa7pN,aAAa,eAAgB,IAAM,IAC5G+gB,OAAQ8oM,EAAaroN,cAAc,oBAAsB,kBACzDrB,QAAS0pN,EAAaroN,cAAc,qBAAuB,oBAE1D45E,EAAMx6E,KACPw6E,EAAMx6E,GAAK,UAAYtL,KAAKuxN,QAAQ3/M,WACpC2iN,EAAa5pN,aAAa,KAAMm7E,EAAMx6E,IACtCtL,KAAKuxN,QAAUvxN,KAAKuxN,QAAU,GAE9B,gBAAYzrI,EAAMrwB,WAClBqwB,EAAMrwB,SAAU,GAEpB8+J,EAAaxtN,MAAM0tH,OAAS,GAAK3uC,EAAM2uC,OAEvC,IAAIijG,EAAY,IAAI,GAAM13N,KAAM,SAAU8lF,GAAO,GACjD9lF,KAAKuzN,OAAOlnN,KAAKqrN,GACjB13N,KAAKkzN,UAAUptI,EAAMx6E,IAAM,CAAEqW,IAAKmkE,EAAMnkE,IAAKyU,IAAK0vD,EAAM1vD,MAE5Dk7L,EAAgBpxN,UAAUy3N,aAAe,WACrC,GAAI33N,KAAKi7D,cAEL,IADA,IAAIq5J,EAAgBt0N,KAAKoD,QAAQ0pD,iBAAiB,yCACzC9rD,EAAI,EAAGA,EAAIszN,EAAc3zN,OAAQK,IAAK,CAC3C,IAAI23F,EAAmC,SAAtB,OAAQ3xE,KAAKhX,KAAmB,wBAA0B,YAC3E,OAAalE,IAAIwoN,EAActzN,GAAI23F,EAAW34F,KAAK43N,kBAAmB53N,MAC5C,SAAtB,OAAQgnB,KAAKhX,MACb,OAAalE,IAAIwoN,EAActzN,GAAI,aAAchB,KAAK63N,uBAAwB73N,QAK9FsxN,EAAgBpxN,UAAUy1N,WAAa,WACnC31N,KAAK83N,gBAAkB93N,KAAKsV,QAAQ1P,KAAK5F,MAEzC,OAAa8L,IAAIvF,OAAQ,SAAUvG,KAAK83N,iBACxC93N,KAAK23N,gBAETrG,EAAgBpxN,UAAU03N,kBAAoB,SAAUzqN,GAEpD,IADA,IAAIo2M,EAAK,eAASp2M,EAAe,cAAG,YAC3BnM,EAAI,EAAGhB,KAAKuzN,OAAO5yN,OAASK,EAAGA,IACpC,GAAIhB,KAAKuzN,OAAOvyN,GAAGy0D,SAAWz1D,KAAKuzN,OAAOvyN,GAAGsK,KAAOi4M,EAAGj4M,GAAI,CACvDtL,KAAK+3N,YAAY5qN,GACjBnN,KAAKg4N,WAAa7qN,EAAEiG,MACpBpT,KAAKi4N,WAAa9qN,EAAEkG,MACpB,IAAI6kN,EAAuC,SAAtB,OAAQlxM,KAAKhX,KAAmB,wBAA0B,YAC3EmoN,EAAqC,SAAtB,OAAQnxM,KAAKhX,KAAmB,oBAAsB,UACpEhQ,KAAKo4N,mBACN,OAAatsN,IAAI8B,SAAUsqN,EAAel4N,KAAKq4N,kBAAmBr4N,MAClEA,KAAKo4N,kBAAmB,GAEvBp4N,KAAKs4N,iBACN,OAAaxsN,IAAI8B,SAAUuqN,EAAan4N,KAAKu4N,gBAAiBv4N,MAC9DA,KAAKs4N,gBAAiB,KAKtChH,EAAgBpxN,UAAU63N,YAAc,SAAU5qN,GAC9CnN,KAAKyxN,cAAe,EACpBzxN,KAAKw4N,mBAAqBx4N,KAAKy4N,YAAYz4N,KAAKuzN,QAChD,IAAIhQ,EAAK,eAASp2M,EAAe,cAAG,YAChCknB,EAAO,CAAE3lB,MAAOvB,EAAG/J,QAASmgN,EAAI50M,cAAc,GAClD3O,KAAKiI,QAAQ,cAAeosB,GAC5Br0B,KAAK04N,WAAavrN,EAAEqI,cACpBxV,KAAK24N,UAAY/qN,SAASrJ,cAAc,OACxCvE,KAAK24N,UAAUzzN,UAAU4G,IAAI,YAC7B,eAAS,CAAC9L,KAAKoD,SAAU,CAACgtN,KAC1BpwN,KAAKoD,QAAQsB,YAAY1E,KAAK24N,WAC9B34N,KAAK0L,uBACL1L,KAAK44N,SAAW9xN,WAAWy8M,EAAGx8M,MAAM/B,MACpChF,KAAK64N,SAAW/xN,WAAWy8M,EAAGx8M,MAAMhC,KACpC/E,KAAK8qF,aAAey4H,EAAG/5M,YACvBxJ,KAAK6qF,cAAgB04H,EAAG95M,aACxBzJ,KAAK84N,cAAgB94N,KAAK+4N,gBAAgBxV,EAAGj4M,IAAI2oN,MACjDj0N,KAAKg5N,eAAiBh5N,KAAK+4N,gBAAgBxV,EAAGj4M,IAAI4oN,MAClDl0N,KAAK2gK,YAAc3gK,KAAK+4N,gBAAgBxV,EAAGj4M,IAAIqW,KAEnD2vM,EAAgBpxN,UAAU23N,uBAAyB,SAAU1qN,GACzDnN,KAAK+3N,YAAY5qN,GACjBnN,KAAKg4N,WAAa7qN,EAAE62C,eAAe,GAAG5wC,MACtCpT,KAAKi4N,WAAa9qN,EAAE62C,eAAe,GAAG3wC,MACjCrT,KAAKo4N,mBACN,OAAatsN,IAAI8B,SAAU,YAAa5N,KAAKi5N,uBAAwBj5N,MACrEA,KAAKo4N,kBAAmB,GAEvBp4N,KAAKs4N,iBACN,OAAaxsN,IAAI8B,SAAU,WAAY5N,KAAKu4N,gBAAiBv4N,MAC7DA,KAAKs4N,gBAAiB,IAG9BhH,EAAgBpxN,UAAUg5N,YAAc,WACpC,MAAO,CAACl5N,KAAKi2N,SAAS,GAAIj2N,KAAKi2N,SAAS,KAE5C3E,EAAgBpxN,UAAUi5N,iBAAmB,SAAUhsN,GACnDnN,KAAKo5N,WAAap5N,KAAK04N,WACvB,IAAInV,EAAK,eAASvjN,KAAe,WAAG,YAChCq0B,EAAO,CAAE3lB,MAAOvB,EAAG/J,QAASmgN,EAAI50M,cAAc,GAClD3O,KAAKiI,QAAQ,SAAUosB,IAE3Bi9L,EAAgBpxN,UAAUm5N,oBAAsB,SAAU9V,GACtDvjN,KAAKs5N,QAAUt5N,KAAKoD,QAAQoG,YAAc,EAC1CxJ,KAAK4xN,OAAS5xN,KAAKi2N,SAAS,GAAKj2N,KAAK6xN,QAAU,EAChD,gBAAY,CAACtO,GAAK,sBAClB,eAAS,CAACA,GAAK,CAAC8M,KAEhB,IADA,IAAIkJ,EAAc,CAAC9I,GAAMC,GAAMC,GAAOC,GAAOE,GAAWD,GAAWE,GAAWC,IACrEhwN,EAAI,EAAGA,EAAIhB,KAAKo5N,WAAWl0N,UAAUvE,OAAQK,KACS,IAAvDu4N,EAAYv1N,QAAQhE,KAAKo5N,WAAWl0N,UAAUlE,MAC9ChB,KAAKw5N,YAAex5N,KAAKo5N,WAAWl0N,UAAUlE,KAI1DswN,EAAgBpxN,UAAUm4N,kBAAoB,SAAUlrN,GACpDnN,KAAKm5N,iBAAiBhsN,GACtB,IAAIo2M,EAAK,eAASvjN,KAAe,WAAG,YACpC,GAAIA,KAAKg4N,aAAe7qN,EAAEiG,OAASpT,KAAKi4N,aAAe9qN,EAAEkG,MAAzD,CAGArT,KAAKq5N,oBAAoB9V,GACzB,IAAIuT,EAAa92N,KAAK+4N,gBAAgBxV,EAAG74M,aAAa,OACtD1K,KAAK6pB,OAAS1c,EAAEiG,MAChBpT,KAAK8pB,OAAS3c,EAAEkG,MAChB,IAAI0uL,EAAQ/hM,KAAK8pB,OAAS9pB,KAAKi4N,WAAaj4N,KAAK2xN,MAC7C7vB,EAAQ9hM,KAAK6pB,OAAS7pB,KAAKg4N,WAAah4N,KAAK0xN,MACjD1xN,KAAK0xN,MAAQ1xN,KAAK2xN,MAAQ,EAC1B3xN,KAAKi4N,WAAaj4N,KAAK8pB,OACvB9pB,KAAKg4N,WAAah4N,KAAK6pB,OACvB7pB,KAAKy5N,cAAclW,EAAIuT,EAAYh1B,EAAOC,KAE9CuvB,EAAgBpxN,UAAU+4N,uBAAyB,SAAU9rN,GACzDnN,KAAKm5N,iBAAiBhsN,GACtB,IAAIo2M,EAAK,eAASvjN,KAAe,WAAG,YACpC,GAAIA,KAAKg4N,aAAe7qN,EAAE62C,eAAe,GAAG5wC,OAASpT,KAAKi4N,aAAe9qN,EAAE62C,eAAe,GAAG3wC,MAA7F,CAGArT,KAAKq5N,oBAAoB9V,GACzB,IAAIuT,EAAa92N,KAAK+4N,gBAAgBxV,EAAG74M,aAAa,OACtD1K,KAAK6pB,OAAS1c,EAAE62C,eAAe,GAAG5wC,MAClCpT,KAAK8pB,OAAS3c,EAAE62C,eAAe,GAAG3wC,MAClC,IAAIyuL,EAAQ9hM,KAAK6pB,OAAS7pB,KAAKg4N,WAAah4N,KAAK0xN,MAC7C3vB,EAAQ/hM,KAAK8pB,OAAS9pB,KAAKi4N,WAAaj4N,KAAK2xN,MACjD3xN,KAAK0xN,MAAQ1xN,KAAK2xN,MAAQ,EAC1B3xN,KAAKg4N,WAAah4N,KAAK6pB,OACvB7pB,KAAKi4N,WAAaj4N,KAAK8pB,OACvB9pB,KAAKy5N,cAAclW,EAAIuT,EAAYh1B,EAAOC,KAG9CuvB,EAAgBpxN,UAAUu5N,cAAgB,SAAUlW,EAAIuT,EAAYt8J,EAAUmuJ,GAC1E,IAAI+Q,EAAW15N,KAAK+4N,gBAAgBxV,EAAGj4M,IAAI2oN,MACvC0F,EAAW35N,KAAK+4N,gBAAgBxV,EAAGj4M,IAAI4oN,MACvC0F,EAAKjR,EACLkR,EAAKr/J,EA4CT,GA3CIx6D,KAAKw5N,YAAYx1N,QAAQ,UAAY,IACjChE,KAAK6qF,cAAgB+uI,EAAK55N,KAAK85N,aAAahD,IAC5CnO,EAAW3oN,KAAK6qF,cAAgB7qF,KAAK85N,aAAahD,GAClD92N,KAAK2xN,MAAQiI,EAAKjR,GAEbmO,EAAWW,UAAYz3N,KAAK6qF,cAAgB+uI,EAAK55N,KAAK+5N,aAAajD,IACxEnO,EAAW3oN,KAAK6qF,cAAgB7qF,KAAK+5N,aAAajD,GAClD92N,KAAK2xN,MAAQiI,EAAKjR,GAEb3oN,KAAK64N,SAAWe,EAAK55N,KAAK8xN,SAC/BnJ,EAAW3oN,KAAK8xN,OAAS9xN,KAAK64N,SAC9B74N,KAAK2xN,MAAQiI,EAAKjR,GAEtB3oN,KAAK64N,UAAYlQ,EACjB3oN,KAAK6qF,eAAiB89H,GAEtB3oN,KAAKw5N,YAAYx1N,QAAQ,UAAY,IACjChE,KAAK6qF,cAAgB+uI,EAAK55N,KAAK85N,aAAahD,IAC5CnO,EAAW3oN,KAAK85N,aAAahD,GAAc92N,KAAK6qF,cAChD7qF,KAAK2xN,MAAQiI,EAAKjR,GAEbmO,EAAWW,UAAYz3N,KAAK6qF,cAAgB+uI,EAAK55N,KAAK+5N,aAAajD,KACxEnO,EAAW3oN,KAAK+5N,aAAajD,GAAc92N,KAAK6qF,cAChD7qF,KAAK2xN,MAAQiI,EAAKjR,GAEtB3oN,KAAK6qF,eAAiB89H,GAEtB3oN,KAAKw5N,YAAYx1N,QAAQ,SAAW,IAChChE,KAAK8qF,aAAe+uI,EAAK75N,KAAKg6N,YAAYlD,IAC1Ct8J,EAAWx6D,KAAK8qF,aAAe9qF,KAAKg6N,YAAYlD,GAChD92N,KAAK0xN,MAAQmI,EAAKr/J,GAEbs8J,EAAWU,UAAYx3N,KAAK8qF,aAAe+uI,EAAK75N,KAAKi6N,YAAYnD,IACtEt8J,EAAWx6D,KAAK8qF,aAAe9qF,KAAKi6N,YAAYnD,GAChD92N,KAAK0xN,MAAQmI,EAAKr/J,GAEbx6D,KAAK44N,SAAWiB,EAAK75N,KAAK+xN,UAC/Bv3J,EAAWx6D,KAAK+xN,QAAU/xN,KAAK44N,SAC/B54N,KAAK0xN,MAAQmI,EAAKr/J,GAEtBx6D,KAAK44N,UAAYp+J,EACjBx6D,KAAK8qF,cAAgBtwB,GAErBx6D,KAAKw5N,YAAYx1N,QAAQ,SAAW,EAAG,CACnChE,KAAK8qF,aAAe+uI,EAAK75N,KAAKg6N,YAAYlD,IAC1Ct8J,EAAWx6D,KAAKg6N,YAAYlD,GAAc92N,KAAK8qF,aAC/C9qF,KAAK0xN,MAAQmI,EAAKr/J,GAEbs8J,EAAWU,UAAYx3N,KAAK8qF,aAAe+uI,EAAK75N,KAAKi6N,YAAYnD,KACtEt8J,EAAWx6D,KAAKi6N,YAAYnD,GAAc92N,KAAK8qF,aAC/C9qF,KAAK0xN,MAAQmI,EAAKr/J,GAEtB,IAAI0/J,EAAel6N,KAAK8qF,aACxB9qF,KAAK8qF,cAAgBtwB,EACrB,IAAI2/J,EAAWn6N,KAAKo6N,gBAAgBp6N,KAAK8qF,aAAgBgsI,EAAgB,MAAI92N,KAAKm2N,YAAY,IAAI,GAC9Fn2N,KAAK0iB,QAAUo0M,EAAW1gM,IAAM+jM,IAChCn6N,KAAK8qF,aAAeovI,GAG5B3W,EAAGx8M,MAAMhC,IAAM/E,KAAK64N,SAAW,KAC/BtV,EAAGx8M,MAAM/B,KAAOhF,KAAK44N,SAAW,KAChCrV,EAAGx8M,MAAMzB,MAAQtF,KAAK8qF,aAAe,KACrCy4H,EAAGx8M,MAAM1B,OAASrF,KAAK6qF,cAAgB,KACvC,IAAItpE,EAAOvhB,KAAKq6N,mBAAmBvD,GAanC,GAZIv1M,EAAK6U,IAAM7U,EAAK0yM,MAAQj0N,KAAK0iB,SAC7B1iB,KAAKwzN,oBAAoBjyM,EAAM,CAAE0yM,MAAO1yM,EAAK0yM,MAAQ,IAEzDj0N,KAAK24N,UAAU5xN,MAAMhC,IAAQwc,EAAKI,IAAM3hB,KAAKk5N,cAAc,GAAM33M,EAAKI,IAAM3hB,KAAKm2N,YAAY,GAAQ,KACjGn2N,KAAKw5N,YAAYx1N,QAAQ,SAAW,EACpChE,KAAK24N,UAAU5xN,MAAM/B,KAASuc,EAAK6U,IAAMp2B,KAAKk5N,cAAc,IAAQ33M,EAAK6U,IAAM,GAAKp2B,KAAKm2N,YAAY,GAAO,KAG5Gn2N,KAAK24N,UAAU5xN,MAAM/B,KAASuc,EAAK6U,IAAMp2B,KAAKk5N,cAAc,GAAQ33M,EAAQ,IAAIvhB,KAAKm2N,YAAY,GAAO,KAE5Gn2N,KAAK24N,UAAU5xN,MAAM1B,OAAWkc,EAAK2yM,OAASl0N,KAAKk5N,cAAc,GAAMl5N,KAAKm2N,YAAY,IAAS,KACjGn2N,KAAK24N,UAAU5xN,MAAMzB,MAAUic,EAAK0yM,OAASj0N,KAAKk5N,cAAc,GAAMl5N,KAAKm2N,YAAY,IAAS,KAC5FuD,IAAan4M,EAAK0yM,OAAS0F,IAAap4M,EAAK2yM,MAAO,CACpDwF,EAAWn4M,EAAK0yM,MAChB0F,EAAWp4M,EAAK2yM,MAChB,IAAIpuI,EAAQ9lF,KAAK+4N,gBAAgBxV,EAAGj4M,IAChC0R,EAAQ,CACR+pD,WAAY,CACRplD,IAAKmkE,EAAMnkE,IAAI/P,WACfwkB,IAAK0vD,EAAM1vD,IAAIxkB,WACfqiN,MAAOnuI,EAAMmuI,MAAMriN,WACnBsiN,MAAOpuI,EAAMouI,MAAMtiN,aAG3B5R,KAAKw5E,cAAcx8D,EAAOumM,GAC1BvjN,KAAKk1N,YAAc3R,EACnBvjN,KAAKuQ,eAAiB,GACtBvQ,KAAKm1N,kBAAkB5R,EAAIvjN,KAAK+4N,gBAAgBxV,EAAGj4M,KACnDtL,KAAKq1N,qBACLr1N,KAAK01N,gBAGbpE,EAAgBpxN,UAAUq4N,gBAAkB,SAAUprN,GAClD,IAAI,eAAkBnN,KAAK04N,YAA3B,CAGA14N,KAAKs6N,SAAWt6N,KAAK04N,WACrB,IAAInV,EAAK,eAASvjN,KAAa,SAAG,YAC9Bq0B,EAAO,CAAE3lB,MAAOvB,EAAG/J,QAASmgN,EAAI50M,cAAc,GAClD,GAAI40M,EAAI,CACJ,eAAS,CAACA,GAAK,sBACf,IAAI2U,EAAuC,SAAtB,OAAQlxM,KAAKhX,KAAmB,wBAA0B,YAC3EmoN,EAAqC,SAAtB,OAAQnxM,KAAKhX,KAAmB,oBAAsB,UACzE,OAAa7K,OAAOyI,SAAUsqN,EAAel4N,KAAKq4N,mBAClD,OAAalzN,OAAOyI,SAAUuqN,EAAan4N,KAAKu4N,iBACtB,SAAtB,OAAQvxM,KAAKhX,OACb,OAAa7K,OAAOyI,SAAU,YAAa5N,KAAKi5N,wBAChD,OAAa9zN,OAAOyI,SAAU,WAAY5N,KAAKu4N,kBAEnDv4N,KAAKs4N,gBAAiB,EACtBt4N,KAAKo4N,kBAAmB,EACpBp4N,KAAK24N,WACL,eAAO34N,KAAK24N,WAEhB34N,KAAK24N,UAAY,KACjB,IAAI7B,EAAa92N,KAAK+4N,gBAAgBxV,EAAG74M,aAAa,OACtD1K,KAAKm0N,iBAAiB5Q,EAAIuT,EAAWn1M,IAAKm1M,EAAW1gM,KACrDp2B,KAAKo0N,kBAAkB7Q,EAAIuT,GAE/B,gBAAY,CAACvT,GAAK,CAAC8M,KACnBrwN,KAAKiI,QAAQ,aAAcosB,GAC3Br0B,KAAKyxN,cAAe,EACpBzxN,KAAKg4N,WAAah4N,KAAKi4N,gBAAa1sN,EACpCvL,KAAK0xN,MAAQ1xN,KAAK2xN,MAAQ,EAC1B3xN,KAAKk1N,YAAc,KACfl1N,KAAKu6N,eACLv6N,KAAKw6N,mBAETx6N,KAAK41N,eACL51N,KAAK61N,yBACL71N,KAAKy6N,iBAAgB,KAEzBnJ,EAAgBpxN,UAAUm6N,mBAAqB,SAAU94M,GACrD,IAAIm+E,GAAY,EACZtpE,EAAM7U,EAAK6U,KAC+C,IAA1D,CAAC,SAAU,gBAAgBpyB,QAAQhE,KAAKw5N,eACxCpjM,EAAMp2B,KAAKo6N,gBAAgBp6N,KAAK44N,UAAU,IAE9C,IAAIj3M,EAAMJ,EAAKI,KACgC,IAA3C,CAAC,WAAW3d,QAAQhE,KAAKw5N,eACzB73M,EAAM3hB,KAAK06N,aAAa16N,KAAK64N,UAAU,GACnC74N,KAAK2gK,cAAgBh/I,IACrB3hB,KAAK2gK,YAAch/I,EACnB+9E,GAAY,IAGpB,IAAIu0H,EAAQ1yM,EAAK0yM,OACyC,IAAtD,CAAC,UAAW,WAAWjwN,QAAQhE,KAAKw5N,eACpCvF,EAAQj0N,KAAKo6N,gBAAgBp6N,KAAK8qF,aAAe,EAAU9qF,KAAKm2N,YAAY,IAAI,IAEpF,IAAIjC,EAAQ3yM,EAAK2yM,OACuC,IAApD,CAAC,SAAU,UAAUlwN,QAAQhE,KAAKw5N,eACT,YAArBx5N,KAAKw5N,aAA4B95H,KACjCw0H,EAAQl0N,KAAK06N,aAAa16N,KAAK6qF,cAAgB,EAAU7qF,KAAKm2N,YAAY,IAAI,IAGlF50M,EAAK6U,IAAM69L,EAAQj0N,KAAK0iB,UACxBnB,EAAK0yM,MAAQA,EAAQ,GAEzB,IAAI0G,EAAYh5M,GAAO,GAAKyU,GAAO,GAAK69L,EAAQ79L,GAAOp2B,KAAKy0N,UAAYP,EAAQvyM,GAAO3hB,KAAKg0N,SAK5F,OAJI2G,GAA6F,IAA/E36N,KAAK46N,WAAWj5M,EAAKyU,EAAK69L,EAAOC,EAAOl0N,KAAK66N,aAAat5M,EAAKjW,KAAK3K,SACzD,IAAtBX,KAAK86N,eACR96N,KAAKwzN,oBAAoBjyM,EAAM,CAAEI,IAAKA,EAAKyU,IAAKA,EAAK69L,MAAOA,EAAOC,MAAOA,IAEvE3yM,GAEX+vM,EAAgBpxN,UAAUk6N,gBAAkB,SAAUW,EAAQC,GAC1D,OAAIA,EACO7xN,KAAKgkC,KAAK4tL,EAAS/6N,KAAKi2N,SAAS,IAGjC9sN,KAAK6gC,MAAM+wL,GAAU/6N,KAAKi2N,SAAS,GAAKj2N,KAAKm2N,YAAY,MAGxE7E,EAAgBpxN,UAAUw6N,aAAe,SAAUK,EAAQC,GACvD,OAAIA,EACO7xN,KAAKC,MAAM2xN,EAAS/6N,KAAKi2N,SAAS,IAGlC9sN,KAAKC,MAAM2xN,GAAU/6N,KAAKi2N,SAAS,GAAKj2N,KAAKm2N,YAAY,MAGxE7E,EAAgBpxN,UAAU85N,YAAc,SAAUz4M,GAC9C,OAAUA,EAAa,SAAIvhB,KAAKk5N,cAAc,IAAO33M,EAAK+1M,SAAW,GAAKt3N,KAAKm2N,YAAY,IAE/F7E,EAAgBpxN,UAAU+5N,YAAc,SAAU14M,GAC9C,OAAQA,EAAa,SAAIvhB,KAAKk5N,cAAc,IAEhD5H,EAAgBpxN,UAAU45N,aAAe,SAAUv4M,GAC/C,OAAUA,EAAa,SAAIvhB,KAAKk5N,cAAc,IAAO33M,EAAKg2M,SAAW,GAAKv3N,KAAKm2N,YAAY,IAE/F7E,EAAgBpxN,UAAU65N,aAAe,SAAUx4M,GAC/C,OAAQA,EAAa,SAAIvhB,KAAKk5N,cAAc,IAEhD5H,EAAgBpxN,UAAUw1N,YAAc,WACpC11N,KAAKwyN,YAAc,GACnB,IAAK,IAAIxxN,EAAI,EAAG+4G,EAAI/5G,KAAKuyN,gBAAgB5xN,OAAQK,EAAI+4G,IAAK/4G,EACtDhB,KAAKi7N,SAASj7N,KAAKuyN,gBAAgBvxN,KAG3CswN,EAAgBpxN,UAAUs6N,iBAAmB,WACzC,IAA2B,IAAvBx6N,KAAKu6N,cAAT,CAGA,IAAK,IAAIz0M,EAAW,EAAGi0F,EAAI/5G,KAAKwyN,YAAY7xN,OAAQmlB,EAAWi0F,IAAKj0F,EAAU,CAC1E,IAAIpD,EAAU1iB,KAAKwyN,YAAY1sM,GAC/B,GAAKpD,EAGL,IAAK,IAAImlF,EAAW,EAAG9uF,EAAM2J,EAAQ/hB,OAAQknG,EAAW9uF,IAAO8uF,EAAU,CACrE,IAAItmF,EAAOmB,EAAQmlF,GACftmF,GACAvhB,KAAKk7N,gBAAgB35M,IAIjCvhB,KAAKi6H,oBAETq3F,EAAgBpxN,UAAUg7N,gBAAkB,SAAU35M,GAClD,IAA2B,IAAvBvhB,KAAKu6N,eAA2Bh5M,IAASvhB,KAAKk1N,YAAlD,CAGA,IAAIrtH,EAAW7nG,KAAK+4N,gBAAgBx3M,EAAKjW,IAAI8qB,IACzC89L,EAAQviN,SAAS4P,EAAK7W,aAAa,cAAe,IAClDupN,EAAQtiN,SAAS4P,EAAK7W,aAAa,cAAe,IAClDywN,EAAe,KACfC,EAAkB,KAClBt1M,EAAWnU,SAAS4P,EAAK7W,aAAa,YAAa,IAAM,EAC7D,MAAOob,GAAY,EAAG,CAClB,IAAImtC,EAAQjzD,KAAK46N,WAAW90M,EAAU+hF,EAAUosH,EAAOC,EAAO3yM,GAC9D,GAAqB,IAAjB0xC,EAAMtyD,OACN,MAEJw6N,EAAer1M,EACfs1M,EAAkBvzH,IAChB/hF,EAEe,OAAjBq1M,GACAn7N,KAAKi7N,SAAS15M,EAAM45M,EAAcC,KAG1C9J,EAAgBpxN,UAAU+6N,SAAW,SAAU15M,EAAM85M,EAAUC,GAC3Dt7N,KAAK0yN,eAAiB,GACtB,IAAIhxM,EAAS/P,SAAS4P,EAAK7W,aAAa,YAAa,IACjDiX,EAAMhQ,SAAS4P,EAAK7W,aAAa,YAAa,IAKlD,GAJK1K,KAAKwyN,YAAY7wM,KAClB3hB,KAAKwyN,YAAY7wM,GAAO,IAE5B3hB,KAAKwyN,YAAY7wM,GAAKD,GAAUH,OACnBhW,IAATgW,QAAmChW,IAAb8vN,QAA0C9vN,IAAhB+vN,EAA2B,CAC3E,QAAgC/vN,IAA5BvL,KAAKkzN,UAAU3xM,EAAKjW,KAAqD,OAAhCtL,KAAKkzN,UAAU3xM,EAAKjW,IAAIqW,KAC1B,qBAAhC3hB,KAAKkzN,UAAU3xM,EAAKjW,IAAI8qB,IAAqB,CAEhD,IAAImlM,EAASv7N,KAAKwyN,YAAYxyN,KAAKkzN,UAAU3xM,EAAKjW,IAAIqW,KAClD3hB,KAAKkzN,UAAU3xM,EAAKjW,KAAOiwN,EAAOv7N,KAAKkzN,UAAU3xM,EAAKjW,IAAI8qB,OAAS7U,WAC5Dg6M,EAAOv7N,KAAKkzN,UAAU3xM,EAAKjW,IAAI8qB,KACtCp2B,KAAKq1N,qBACLr1N,KAAK01N,eAIjB11N,KAAKkzN,UAAU3xM,EAAKjW,IAAIqW,IAAM05M,EAC9Br7N,KAAKkzN,UAAU3xM,EAAKjW,IAAIqW,IAAM25M,EACzBt7N,KAAKwyN,YAAY7wM,KAClB3hB,KAAKwyN,YAAY7wM,GAAO,IAE5B3hB,KAAKwyN,YAAY7wM,GAAKD,GAAUH,GACK,IAAjCvhB,KAAKizN,SAASjvN,QAAQud,IACtBvhB,KAAKizN,SAAS5mN,KAAKkV,GAEvBvhB,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgBx3M,EAAKjW,IAAK,CAAEqW,IAAK05M,EAAUjlM,IAAKklM,IAC9E,IAAIxE,EAAa92N,KAAK+4N,gBAAgBx3M,EAAKjW,IAC3CtL,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAEoZ,IAAK0gM,EAAW1gM,IAAIxkB,WAAY+P,IAAKm1M,EAAWn1M,IAAI/P,aAAgB2P,GAClGvhB,KAAKk8J,aAAa36I,EAAMvhB,KAAK+4N,gBAAgBx3M,EAAKjW,OAG1DgmN,EAAgBpxN,UAAUg8J,aAAe,SAAU94J,EAAS0zN,GACxD92N,KAAKm0N,iBAAiB/wN,EAAS0zN,EAAWn1M,IAAKm1M,EAAW1gM,KAC1Dp2B,KAAKo0N,kBAAkBhxN,EAAS0zN,GAChC92N,KAAKq0N,kBACLr0N,KAAK01N,eAETpE,EAAgBpxN,UAAUoV,QAAU,WAGhC,GAFAtV,KAAKmyN,YAAc,EACnBnyN,KAAK+zN,iBACD/zN,KAAK6zN,kBACL7zN,KAAKs1N,4BAEJ,CACD,GAAIt1N,KAAKoD,QAAQ8B,UAAUmB,SAASmqN,IAAa,CAC7C,gBAAY,CAACxwN,KAAKoD,SAAU,CAACotN,KAG7B,IADA,IAAIgL,EAAiBx7N,KAAKoD,QAAQ0pD,kBAAmB9sD,KAAKoD,QAAU,GAAI,IAAMpD,KAAKoD,QAAQkI,GAAK,MAAQ,IAAM,YACrGtK,EAAI,EAAGA,EAAIw6N,EAAe76N,OAAQK,IAAK,CAC5C,IAAIs+B,EAAMk8L,EAAex6N,GACrBy6N,EAAez7N,KAAK+4N,gBAAgBz5L,EAAIh0B,IACxCqW,EAAMhQ,SAAS2tB,EAAI50B,aAAa,YAAa,IAC7C0rB,EAAMzkB,SAAS2tB,EAAI50B,aAAa,YAAa,IACjD1K,KAAKwzN,oBAAoBiI,EAAc,CAAE95M,IAAKA,EAAKyU,IAAKA,IACxDp2B,KAAKo0N,kBAAkB90L,EAAKt/B,KAAK+4N,gBAAgBz5L,EAAIh0B,KACrDtL,KAAKm0N,iBAAiB70L,EAAK3d,EAAKyU,GAChCp2B,KAAKq0N,mBAGbr0N,KAAK+1N,wBACL/1N,KAAKi6H,kBAEJ,eAAkBj6H,KAAKuyN,mBACxBvyN,KAAK07N,oBAAoB17N,KAAKuyN,iBAC9BvyN,KAAKo1N,WAAWp1N,KAAKuyN,kBAEzBvyN,KAAK23N,eACA,eAAkB33N,KAAKuyN,kBACxBvyN,KAAK27N,cAAc37N,KAAK8yN,iBAGhCxB,EAAgBpxN,UAAU+5H,gBAAkB,WACpCj6H,KAAKoD,QAAQ8I,cAAc,iCACvBlM,KAAKq3D,OACL,eAAOr3D,KAAKq3D,OAEhBr3D,KAAK8zN,kBAGbxC,EAAgBpxN,UAAUy7N,cAAgB,SAAU7I,GAChD,GAAI9yN,KAAK6zN,oBAAsB7zN,KAAKw1N,cAChC,IAAK,IAAIx0N,EAAI,EAAGA,EAAI8xN,EAAenyN,OAAQK,IACvC8xN,EAAe9xN,GAAGwR,cAGrB,CACD,IAASxR,EAAI,EAAGA,EAAI8xN,EAAenyN,OAAQK,IACvC8xN,EAAe9xN,GAAGwR,UAEtBxS,KAAKy1N,sBAAsBz1N,KAAKuyN,mBAGxCjB,EAAgBpxN,UAAU07N,WAAa,WAenC,IAdA,IAAI91I,EAAQ,GACR3zC,EAAU,SAAUxwB,GAQpB,IAPA,IAAIi/E,EAAU,SAAUxqE,GACpBgc,EAAOmhL,OAAOn1M,QAAO,SAAUmrF,GACvBA,EAAM5nF,MAAQA,GAAO4nF,EAAMnzE,MAAQA,GACnC0vD,EAAMz5E,KAAKk9F,OAIdnzE,EAAM,EAAGA,EAAMgc,EAAO1vB,QAAS0T,IACpCwqE,EAAQxqE,IAGZgc,EAASpyC,KACJ2hB,EAAM,EAAGA,GAAO3hB,KAAK4iB,KAAMjB,IAChCwwB,EAAQxwB,GAEZ,OAAOmkE,GAEXwrI,EAAgBpxN,UAAUo1N,sBAAwB,WAE9C,IAAIuG,EADJ,eAAS,CAAC77N,KAAKoD,SAAU,CAACotN,KAGtBqL,EADA77N,KAAKkyN,gBAAkBlyN,KAAKuzN,OACbvzN,KAAKuzN,OAGLvzN,KAAK47N,aAExB57N,KAAK87N,YAAcD,EAAal7N,OAChC,IAAK,IAAIK,EAAI,EAAGA,EAAI66N,EAAal7N,OAAQK,IAAK,CAC1C,IAAIuzN,EAAe3mN,SAASyd,eAAewwM,EAAa76N,GAAGsK,IAEvDywN,OAAgB,EAChBxH,IACA,gBAASA,EAAc,CAAE,MAAS,SAClCA,EAAaxtN,MAAM1B,OAAS,KAAQrF,KAAKoD,QAAQsyC,eAC1C11C,KAAKoD,QAAQsyC,cAAclsC,YAAcxJ,KAAKk2N,iBAAmB2F,EAAa76N,GAAGkzN,MAAS,KAC7F2H,EAAa76N,GAAGkzN,MAAQ,IACxB6H,GAAkB/7N,KAAKoD,QAAQsyC,eACxB11C,KAAKoD,QAAQsyC,cAAclsC,YAAcxJ,KAAKk2N,iBAAmB2F,EAAa76N,GAAGkzN,MAEpFviN,UAAUxI,KAAKC,MAAMyyN,EAAa76N,GAAGkzN,MAAQ,GAAKl0N,KAAKm2N,YAAY,IAAIvkN,WAAY,GACvF2iN,EAAaxtN,MAAM1B,OAAc02N,EAAgB,MAErD/7N,KAAKoyN,cAAe,EACpBpyN,KAAKwzN,oBAAoBqI,EAAa76N,GAAI,CAAE2gB,IAAK3gB,EAAGo1B,IAAK,IACzDp2B,KAAKm0N,iBAAiBI,EAAcsH,EAAa76N,GAAG2gB,IAAKk6M,EAAa76N,GAAGo1B,KACzEp2B,KAAKmyN,YAAcnyN,KAAKmyN,YAAc0J,EAAa76N,GAAGkzN,MACjD,eAAkBl0N,KAAKuyN,mBACxBvyN,KAAKo1N,WAAWp1N,KAAKuyN,iBACrBvyN,KAAK07N,oBAAoB17N,KAAKuyN,kBAE7B,eAAkBvyN,KAAK8yN,iBACxB9yN,KAAK27N,cAAc37N,KAAK8yN,iBAIpC9yN,KAAKq0N,mBAET/C,EAAgBpxN,UAAU61N,sBAAwB,WAC9C/1N,KAAKoD,QAAQ8B,UAAU4G,IAAI,gBAC3B9L,KAAKqzN,oBACL,IAAK,IAAIryN,EAAI,EAAGA,EAAIhB,KAAKoD,QAAQ0pD,iBAAiB,YAAYnsD,OAAQK,IAAK,CACvE,IAAIs+B,EAAMt/B,KAAKoD,QAAQ0pD,iBAAiB,YAAY9rD,GAChD81N,EAAa92N,KAAK+4N,gBAAgBz5L,EAAIh0B,IAC1CtL,KAAKo0N,kBAAkB90L,EAAKw3L,GAEhC,IAAS91N,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IACpChB,KAAKm0N,iBAAiBvmN,SAASyd,eAAerrB,KAAKuzN,OAAOvyN,GAAGsK,IAAKtL,KAAKuzN,OAAOvyN,GAAG2gB,IAAK3hB,KAAKuzN,OAAOvyN,GAAGo1B,KAEzGp2B,KAAKq0N,mBAET/C,EAAgBpxN,UAAUm0N,gBAAkB,WACxCr0N,KAAKg8N,eACLh8N,KAAKi8N,kBAET3K,EAAgBpxN,UAAU+7N,eAAiB,WACvC,IAAI/vI,EACAgwI,EACJ,GAAIl8N,KAAK6zN,kBAAmB,CAExB,IADA,IAAIsI,EAAgB,EACXn7N,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAChChB,KAAKuzN,OAAOvyN,GAAGkzN,QACfiI,GAAiBn8N,KAAKuzN,OAAOvyN,GAAGkzN,OAGxChoI,EAAe,GACVlsF,KAAKoD,QAAQsyC,eAAmB11C,KAAKoD,QAAQsyC,cAA0B,YAAI11C,KAAKk2N,kBAChFiG,EAAgB,GAAKn8N,KAAKm2N,YAAY,GAAM,UAGjDjqI,EAAgBlsF,KAAKg0N,UAChBh0N,KAAKi2N,SAAS,GAAKj2N,KAAKk2N,kBAAoBl2N,KAAKg0N,SAAW,GAAKh0N,KAAKm2N,YAAY,GAAM,KAEjG,gBAASn2N,KAAKoD,QAAS,CAAE,OAAU8oF,IAEnCgwI,EAAa31N,OAAOC,iBAAiBxG,KAAKoD,SAASkC,MACnD,gBAAStF,KAAKoD,QAAS,CAAE,MAAS84N,KAEtC5K,EAAgBpxN,UAAUk0N,kBAAoB,SAAUG,EAAcuC,GAClE,gBAASvC,EAAc,CAAE,OAAU,eAAWv0N,KAAKo8N,gBAAgBtF,GAAY,MAC/E,gBAASvC,EAAc,CAAE,MAAS,eAAWv0N,KAAKo8N,gBAAgBtF,GAAY,OAElFxF,EAAgBpxN,UAAUm8N,WAAa,SAAU9yH,EAAOywC,EAAkBvtI,GACtE,IAAIoqN,EACJ72N,KAAKgzN,WAAahzN,KAAKo8N,gBAAgB7yH,GACnC,gBAAYA,EAAM9zC,WAClB8zC,EAAM9zC,SAAU,GAEhBz1D,KAAKszN,qBAAqB3yN,OAAS,IAAM,eAAkB8L,IAC3DoqN,EAAc72N,KAAKszN,qBAAqB7mN,GACpC88F,EAAM9+F,UACN,eAAS,CAACosN,GAAc,CAACttH,EAAM9+F,WAE/B8+F,EAAMj+F,IACNurN,EAAYlsN,aAAa,KAAM4+F,EAAMj+F,KAIzCurN,EAAc72N,KAAKyzN,mBAAmBlqH,EAAM9+F,SAAW8+F,EAAM9+F,SAASxG,MAAM,KAAO,KAAMslG,EAAMj+F,IAEnGurN,EAAY9vN,MAAM0tH,OAAS,GAAKlrB,EAAMkrB,OACtCz0H,KAAKoD,QAAQsB,YAAYmyN,GACzB72N,KAAK0L,uBACL,IAAI4wN,EAAgBt8N,KAAK+0N,aAAa8B,EAAattH,EAAOA,EAAMj+F,GAAI0uI,GAIpE,OAHAh6I,KAAKuyN,gBAAgBlmN,KAAKiwN,GAC1Bt8N,KAAK60N,gBAAgBgC,EAAattH,GAClCvpG,KAAKo0N,kBAAkByC,EAAattH,GAC7BstH,GAEXvF,EAAgBpxN,UAAUi0N,iBAAmB,SAAU0C,EAAal1M,EAAKyU,GACrE,GAAKygM,EAAL,CAGI72N,KAAK6zN,mBACL7zN,KAAKqzN,oBAET,IAAInnI,EAAclsF,KAAKk5N,cAAc,GACjCgD,EAAal8N,KAAKk5N,cAAc,GAChCl0N,EAAe,IAARoxB,EAAY,EAAM,GAAS,EAAep2B,KAAKm2N,YAAY,IAClEpxN,EAAc,IAAR4c,EAAY,EAAM,GAAS,EAAgB3hB,KAAKm2N,YAAY,IAClEn2N,KAAK6zN,oBACL9uN,EAAc,IAAR4c,EAAY,EAAM3hB,KAAgB,aAAK,EAAgBA,KAAKm2N,YAAY,KAElF,gBAASU,EAAa,CAAE,KAAQ7xN,EAAO,KAAM,IAAOD,EAAM,SAE9DusN,EAAgBpxN,UAAU87N,aAAe,WAErC,GADAh8N,KAAK4iB,KAAO,KACR5iB,KAAKoD,QAAQ0pD,iBAAiB,YAAYnsD,OAAS,IAAMX,KAAK87N,YAE9D,IADA,IAAIxH,EAAgBt0N,KAAKoD,QAAQ0pD,iBAAiB,YACzC9rD,EAAI,EAAGA,EAAIszN,EAAc3zN,OAAQK,IAAK,CAC3C,IAAIuzN,EAAeD,EAActzN,GAC7Bq6N,EAAW1pN,SAAS4iN,EAAa7pN,aAAa,YAAa,IAC3D+P,EAAS9I,SAAS4iN,EAAa7pN,aAAa,cAAe,IAC/D1K,KAAK4iB,KAAOzZ,KAAKwS,IAAI3b,KAAK4iB,KAAOy4M,EAAW5gN,OAG/C,CACGza,KAAK87N,cACL97N,KAAK4iB,KAAO5iB,KAAK87N,YACjB97N,KAAK87N,YAAc,MAEvB,IAAS96N,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IACpChB,KAAK4iB,KAAOzZ,KAAKwS,IAAI3b,KAAK4iB,KAAM5iB,KAAKuzN,OAAOvyN,GAAG2gB,OAI3D2vM,EAAgBpxN,UAAUw0N,gBAAkB,SAAUnrH,IAC7CA,EAAM0qH,OAAS1qH,EAAM0qH,MAAQ1qH,EAAM+tH,SACpCt3N,KAAKwzN,oBAAoBjqH,EAAO,CAAE0qH,MAAO1qH,EAAM+tH,WAEzC/tH,EAAMiuH,UAAYjuH,EAAM0qH,MAAQ1qH,EAAMiuH,SAC5Cx3N,KAAKwzN,oBAAoBjqH,EAAO,CAAE0qH,MAAO1qH,EAAMiuH,WAE1CjuH,EAAM0qH,MAAQj0N,KAAK0iB,QACxB1iB,KAAKwzN,oBAAoBjqH,EAAO,CAAE0qH,MAAOj0N,KAAK0iB,UAG9C1iB,KAAKwzN,oBAAoBjqH,EAAO,CAAE0qH,MAAO1qH,EAAM0qH,SAE9C1qH,EAAM2qH,OAAS3qH,EAAM2qH,MAAQ3qH,EAAMguH,SACpCv3N,KAAKwzN,oBAAoBjqH,EAAO,CAAE2qH,MAAO3qH,EAAMguH,WAE1ChuH,EAAMkuH,UAAYluH,EAAM2qH,MAAQ3qH,EAAMkuH,SAC3Cz3N,KAAKwzN,oBAAoBjqH,EAAO,CAAE2qH,MAAO3qH,EAAMkuH,WAG/Cz3N,KAAKwzN,oBAAoBjqH,EAAO,CAAE2qH,MAAO3qH,EAAM2qH,SAGvD5C,EAAgBpxN,UAAUq8N,kBAAoB,SAAUhzH,GAChDA,EAAMnzE,IAAMmzE,EAAM0qH,MAAQj0N,KAAK0iB,SAC/B1iB,KAAKwzN,oBAAoBjqH,EAAO,CAAE0qH,MAAO1qH,EAAM0qH,OAASj0N,KAAK0iB,SAAW6mF,EAAMnzE,IAAMmzE,EAAM0qH,WAGlG3C,EAAgBpxN,UAAUszN,oBAAsB,SAAUjqH,EAAOvsF,GAE7DusF,EAAMt+F,cAAc+R,GAAO,IAE/Bs0M,EAAgBpxN,UAAUq1N,qBAAuB,SAAUtuJ,GACvD,GAAIjnE,KAAKoD,QAAQ0pD,iBAAiB,YAAYnsD,OAAS,GAAKX,KAAKuzN,OAAO5yN,OAAS,EAC7E,IAAK,IAAIkjB,EAAI,EAAGA,EAAIojD,EAAMtmE,OAAQkjB,IAAK,CACnC7jB,KAAKyyN,oBAAoBpmN,KAAK46D,EAAMpjD,IACpC7jB,KAAK00N,gBAAgBztJ,EAAMpjD,KACvB7jB,KAAK20N,eAAiB1tJ,EAAMpjD,GAAGuS,KAC/Bp2B,KAAK20N,eAAkB1tJ,EAAMpjD,GAAGuS,IAAM6wC,EAAMpjD,GAAGowM,QAC/Cj0N,KAAKwzN,oBAAoBvsJ,EAAMpjD,GAAI,CAAEuS,IAAKp2B,KAAK20N,eAAiB1tJ,EAAMpjD,GAAGowM,QAE7E,IAAI9sJ,EAAOnnE,KAAKq8N,WAAWp1J,EAAMpjD,IAAI,EAAOA,GACxC7jB,KAAKyF,WACL,eAAS,CAAC0hE,GAAO,SAErBnnE,KAAKoD,QAAQsB,YAAYyiE,GACzBnnE,KAAK0L,uBACD1L,KAAK6zN,mBAAqBhwM,IAAMojD,EAAMtmE,OAAS,EAC/CX,KAAKs1N,yBAGLt1N,KAAKm0N,iBAAiBhtJ,EAAMF,EAAMpjD,GAAGlC,IAAKslD,EAAMpjD,GAAGuS,KACnDp2B,KAAKk1N,YAAc/tJ,EACnBnnE,KAAKm1N,kBAAkBhuJ,EAAMF,EAAMpjD,IACnC7jB,KAAKk1N,YAAc,MAI/Bl1N,KAAKo1N,WAAWp1N,KAAKuyN,kBAEzBjB,EAAgBpxN,UAAU06N,WAAa,SAAUj5M,EAAKyU,EAAK69L,EAAOC,EAAOsI,GACrE,IAOIj7M,EAPA0xC,EAAQ,GACPghK,GAAUC,IACXD,EAAQC,EAAQ,IAEhBsI,GAAYA,aAAkB58N,QAC9B48N,EAAS,CAACA,IAGd,IAAK,IAAI1pI,EAAI,EAAGA,EAAIohI,IAASphI,EACzB,IAAK,IAAI2pI,EAAI,EAAGA,EAAIxI,IAASwI,EACzBl7M,EAAOvhB,KAAKipG,SAAStnF,EAAMmxE,EAAG18D,EAAMqmM,EAAGD,IACnCj7M,GAAUi7M,IAAoF,IAA1EA,EAAOx4N,QAAQhE,KAAKoD,QAAQ8I,cAAc,QAAUqV,EAAKjW,GAAK,SACT,IAAzE2nD,EAAMjvD,QAAQhE,KAAKoD,QAAQ8I,cAAc,QAAUqV,EAAKjW,GAAK,QAC7D2nD,EAAM5mD,KAAKrM,KAAKoD,QAAQ8I,cAAc,QAAUqV,EAAKjW,GAAK,OAItE,OAAO2nD,GAEXq+J,EAAgBpxN,UAAUw8N,wBAA0B,SAAUC,EAAavmM,EAAKkJ,GAC5E,IAAIj8B,EAAQrD,KACR0iB,EAAU,GACVk6M,EAAgB,GAepB,GAdAD,EAAY1tI,SAAQ,SAAU7rF,GAC1B,IAAIk4N,EAAc3pN,SAASvO,EAAQsH,aAAa,YAAa,IACzDmyN,EAAalrN,SAASvO,EAAQsH,aAAa,cAAe,IAC9D,GAAI0rB,EAAM/yB,EAAMqf,SAAW44M,GAAellM,EACtC,GAAIymM,EAAa,EACb,IAAK,IAAI77N,EAAIs6N,EAAat6N,EAAIs6N,EAAcuB,EAAY77N,IACpD0hB,EAAQrW,KAAKrL,QAIjB0hB,EAAQrW,KAAKivN,MAIrB54M,EAAQ/hB,OAAS,EACjB,IAAK,IAAIK,EAAIo1B,EAAM,EAAGp1B,GAAKhB,KAAK0iB,QAAU,EAAG1hB,KACb,IAAxB0hB,EAAQ1e,QAAQhD,IAAaA,IAAMo1B,IACD,IAA9BwmM,EAAc54N,QAAQhD,IACtB47N,EAAcvwN,KAAKrL,GAKnC,IAAI87N,EAAiB98N,KAAK+8N,mBAAmBz9L,GAC7Cw9L,EAAe7tI,SAAQ,SAAU2lI,GACzBA,EAAWx+L,IAA4C,IAArCwmM,EAAc54N,QAAQ4wN,IACxCgI,EAAclwN,OAAOkwN,EAAc54N,QAAQ4wN,GAAW,MAG9D,IAAIoI,EAAoBh9N,KAAK+8N,mBAAmB/8N,KAAKi9N,iBAQrD,OAPAD,EAAkB/tI,SAAQ,SAAU74D,GAC5BA,EAAMzkB,SAAS2tB,EAAI50B,aAAa,YAAa,MAAwC,IAAjCoyN,EAAe94N,QAAQoyB,KAC3C,IAAhCwmM,EAAc54N,QAAQoyB,IACtBwmM,EAAcvwN,KAAK+pB,MAG3BwmM,EAAgBA,EAAcv+M,MAAK,SAAUa,EAAMD,GAAY,OAAOC,EAAOD,KACtE29M,GAEXtL,EAAgBpxN,UAAU68N,mBAAqB,SAAU35N,GAIrD,IAHA,IAAI85N,EAAgB,GAChBjJ,EAAQtiN,SAASvO,EAAQsH,aAAa,cAAe,IACrD0rB,EAAMzkB,SAASvO,EAAQsH,aAAa,YAAa,IAC5C1J,EAAIo1B,EAAMp1B,EAAIo1B,EAAM69L,GAASjzN,GAAKhB,KAAK0iB,QAAU1hB,IACtDk8N,EAAc7wN,KAAKrL,GAEvB,OAAOk8N,GAEX5L,EAAgBpxN,UAAUi9N,uBAAyB,SAAUR,EAAavmM,EAAKkJ,GAC3E,IAAIj8B,EAAQrD,KACR48N,EAAgB,GAChBl6M,EAAU,GAed,GAdAi6M,EAAY1tI,SAAQ,SAAU7rF,GAC1B,IAAIwxN,EAAWjjN,SAASvO,EAAQsH,aAAa,YAAa,IACtD+P,EAAS9I,SAASvO,EAAQsH,aAAa,cAAe,IAC1D,GAAI0rB,GAAO/yB,EAAMqf,SAAWkyM,GAAYx+L,EACpC,GAAI3b,EAAS,EACT,IAAK,IAAIzZ,EAAI4zN,EAAU5zN,EAAI4zN,EAAWn6M,EAAQzZ,IAC1C0hB,EAAQrW,KAAKrL,QAIjB0hB,EAAQrW,KAAKuoN,MAIrBlyM,EAAQ/hB,OAAS,EACjB,IAAK,IAAIkjB,EAAI,EAAGA,GAAKuS,EAAKvS,KACM,IAAxBnB,EAAQ1e,QAAQ6f,IAAaA,IAAMuS,IACD,IAA9BwmM,EAAc54N,QAAQ6f,IACtB+4M,EAAcvwN,KAAKwX,GAKnC,IAAIi5M,EAAiB98N,KAAK+8N,mBAAmBz9L,GAC7Cw9L,EAAe7tI,SAAQ,SAAU2lI,GACzBA,EAAWx+L,IAA4C,IAArCwmM,EAAc54N,QAAQ4wN,IACxCgI,EAAclwN,OAAOkwN,EAAc54N,QAAQ4wN,GAAW,MAG9D,IAAIoI,EAAoBh9N,KAAK+8N,mBAAmB/8N,KAAKi9N,iBASrD,OARAD,EAAkB/tI,SAAQ,SAAU74D,GAC5BA,EAAMzkB,SAAS2tB,EAAI50B,aAAa,YAAa,MAAwC,IAAjCoyN,EAAe94N,QAAQoyB,KAC3C,IAAhCwmM,EAAc54N,QAAQoyB,IACtBwmM,EAAcvwN,KAAK+pB,MAG3BwmM,EAAgBA,EAAcv+M,MAAK,SAAUa,EAAMqpD,GAAQ,OAAOrpD,EAAOqpD,KACzEq0J,EAAgBA,EAAc34I,UACvB24I,GAEXtL,EAAgBpxN,UAAUk9N,oBAAsB,SAAUz7M,EAAKyU,EAAK89L,EAAOD,EAAO30L,GAC9Et/B,KAAKq9N,oBAAiB9xN,EACtBvL,KAAKs9N,qBAAkB/xN,EACvB,IACIgyN,EADAC,GAAe,EAEfC,EAAa,GACjBz9N,KAAK09N,mBAAgBnyN,EACrB,IAAIoyN,EAAWhsN,SAAS2tB,EAAI50B,aAAa,cAAe,IACpDkzN,EAASjsN,SAAS2tB,EAAI50B,aAAa,YAAa,IACpD+yN,EAAaz9N,KAAKo9H,eAAep9H,KAAK46N,WAAWj5M,EAAK,EAAG3hB,KAAK0iB,QAASwxM,EAAO,MAC7C,IAA7BuJ,EAAWz5N,QAAQs7B,IACnBm+L,EAAWpxN,KAAKizB,GAEpB,IAAIu+L,EAAc79N,KAAKm9N,uBAAuBM,EAAYrnM,EAAKkJ,GA+B/D,GA9BIu+L,EAAYl9N,OAAS,GACrBX,KAAKq9N,eAAiBr9N,KAAK89N,iBAAiBD,EAAav+L,EAAK3d,EAAKyU,EAAK69L,EAAOC,GAC3El0N,KAAK+9N,oBAAsBH,EAAS59N,KAAK+4N,gBAAgB/4N,KAAKi9N,gBAAgB3xN,IAAI2oN,QAClFj0N,KAAKq9N,gBAAiB,GAEtBr9N,KAAKq9N,eACLr9N,KAAKs9N,iBAAkB,GAGvBt9N,KAAKq9N,gBAAiB,EACtBE,EAAev9N,KAAK08N,wBAAwBe,EAAYrnM,EAAKkJ,GAC7Dt/B,KAAKs9N,gBAAkBC,EAAa58N,OAAS,GAAIX,KAAKg+N,kBAAkBT,EAAcj+L,EAAK3d,EAAKyU,EAAK69L,EAAOC,GACxGl0N,KAAK+9N,oBAAsBJ,EAAWC,IACtC59N,KAAKs9N,iBAAkB,GAEtBt9N,KAAKs9N,kBACNt9N,KAAKs9N,iBAAkB,MAK/BC,EAAev9N,KAAK08N,wBAAwBe,EAAYrnM,EAAKkJ,GAC7Dt/B,KAAKs9N,gBAAkBC,EAAa58N,OAAS,GAAIX,KAAKg+N,kBAAkBT,EAAcj+L,EAAK3d,EAAKyU,EAAK69L,EAAOC,GACxGl0N,KAAK+9N,oBAAsBJ,EAAWC,IACtC59N,KAAKs9N,iBAAkB,GAEvBt9N,KAAKs9N,kBACLt9N,KAAKq9N,gBAAiB,KAGzBr9N,KAAKs9N,kBAAoBt9N,KAAKq9N,gBAAkB17M,EAAM,EAAG,CAC1D,IAAIs8M,EAASj+N,KAAK+4N,gBAAgBz5L,EAAIh0B,IAAIqW,IACtCu8M,GAAW,EACXl+N,KAAKm+N,WAAaF,IAClBC,GAAW,GAEf,IAAK,IAAI7C,EAAW15M,EAAK05M,GAAY,EAAGA,IAAY,CAChD,IAAIj4N,EAAWpD,KAAK+4N,gBAAgBz5L,EAAIh0B,IAAI4oN,MAAQ,GAAKgK,EAAYl+N,KAAKi9N,gBAAkB39L,EACvF+7L,IAAa4C,GAAY5C,IAAa4C,EAAS/J,GACiB,IAAjEl0N,KAAK46N,WAAWS,EAAUjlM,EAAK69L,EAAOC,EAAO9wN,GAASzC,SACtDu9N,GAAW,EACXl+N,KAAK09N,eAAgB,EACrB19N,KAAKo+N,eAAiB,eAAkBp+N,KAAKo+N,gBAAkB/C,EAAWr7N,KAAKo+N,eAC/Ep+N,KAAK+9N,kBAAoB3nM,IAUrC,OANIp2B,KAAKs9N,iBAAmBt9N,KAAKq9N,gBAAkBr9N,KAAK09N,iBACpDF,GAAe,EACX,eAAkBx9N,KAAKo+N,kBACvBp+N,KAAKo+N,eAAiBz8M,IAGvB67M,GAEXlM,EAAgBpxN,UAAUm+N,oBAAsB,SAAUvpB,EAASmf,GAG/D,IAFA,IAAIqK,GAAmB,EACnBC,EAAoB,GACfv9N,EAAI,EAAGA,EAAI8zM,EAAQn0M,OAAQK,IAChC,GAAI8zM,EAAQ9zM,EAAI,GAAK8zM,EAAQ9zM,KAAO,GAAK8zM,EAAQ9zM,EAAI,GAAK8zM,EAAQ9zM,MAAQ,GAWtE,GAVAu9N,EAAkBlyN,KAAKyoM,EAAQ9zM,IACjB,IAAVizN,GACAsK,EAAkBlyN,KAAKyoM,EAAQ9zM,EAAI,IAEnCA,IAAM8zM,EAAQn0M,OAAS,IACvB49N,EAAkBlyN,KAAKyoM,EAAQ9zM,EAAI,IAC/Bu9N,EAAkB59N,OAASszN,GAC3BsK,EAAkB7xN,QAAQ,IAG9B6xN,EAAkB59N,SAAWszN,EAM7B,OALAqK,GAAmB,EACnBt+N,KAAK+9N,kBAAoBQ,EAAkBlgN,MAAK,SAAUa,EAAMD,GAAY,OAAOC,EAAOD,KAAa,GACnGjf,KAAK+9N,kBAAoB,IACzB/9N,KAAK+9N,kBAAoB,GAEtBO,OAIXC,EAAoB,GAI5B,OAAOD,GAEXhN,EAAgBpxN,UAAUk9H,eAAiB,SAAUohG,GAEjD,IADA,IAAI7B,EAAc,GACT37N,EAAI,EAAGA,EAAIw9N,EAAK79N,OAAQK,IAC7B27N,EAAYtwN,KAAKmyN,EAAKx9N,IAE1B,OAAO27N,GAEXrL,EAAgBpxN,UAAU49N,iBAAmB,SAAUW,EAAQn/L,EAAK3d,EAAKyU,EAAK69L,EAAOC,GACjF,IAAIwK,EACJ,GAAc,IAAVzK,GAAyB,IAAVC,GAAeuK,EAAO99N,OAAS,EAC9CX,KAAK+9N,kBAAoBU,EAAO,GAChCC,GAAmB,OAElB,GAAIzK,EAAQ,GAAe,IAAVC,EAClBwK,EAAmB1+N,KAAKq+N,oBAAoBI,EAAQxK,QAEnD,GAAIC,EAAQ,EACb,GAAc,IAAVD,EAAa,CACb,IAAI0K,OAAU,EAId,GAHIF,EAAO99N,QAAU,IACjBg+N,GAAU,GAEVA,EACA,IAAK,IAAI39N,EAAI,EAAGA,EAAIy9N,EAAO99N,OAAQK,IAAK,CACpC,IAAI49N,EAAiB5+N,KAAK46N,WAAWj5M,EAAK88M,EAAOz9N,GAAIizN,EAAOC,EAAOl0N,KAAKi9N,iBACxE,GAA8B,IAA1B2B,EAAej+N,OAGf,OAFAX,KAAK+9N,kBAAoBU,EAAOz9N,GAChC09N,GAAmB,EACZA,EAGPA,GAAmB,QAM/BA,EAAmB1+N,KAAK6+N,WAAWJ,EAAQxK,EAAOtyM,EAAKuyM,EAAO50L,GAGtE,OAAOo/L,GAEXpN,EAAgBpxN,UAAU89N,kBAAoB,SAAUlpB,EAASx1K,EAAK3d,EAAKyU,EAAK69L,EAAOC,GACnF,IAAI4K,EACJ,GAAc,IAAV7K,GAAyB,IAAVC,GAAepf,EAAQn0M,OAAS,EAC/CX,KAAK+9N,kBAAoBjpB,EAAQ,GACjCgqB,GAAoB,OAEnB,GAAI7K,EAAQ,GAAe,IAAVC,EAClB4K,EAAoB9+N,KAAKq+N,oBAAoBvpB,EAASmf,QAErD,GAAIC,EAAQ,EACb,GAAc,IAAVD,EAAa,CACb,IAAI0K,OAAU,EAId,GAHI7pB,EAAQn0M,QAAU,IAClBg+N,GAAU,GAEVA,EACA,IAAK,IAAI39N,EAAI,EAAGA,EAAI8zM,EAAQn0M,OAAQK,IAAK,CAErC,IADA,IAAI49N,EAAiB5+N,KAAK46N,WAAWj5M,EAAKmzL,EAAQ9zM,GAAIizN,EAAOC,EAAOl0N,KAAKi9N,iBAChE8B,EAAY,EAAGA,EAAYH,EAAej+N,OAAQo+N,IACnDptN,SAAS2tB,EAAI50B,aAAa,YAAa,MAAQoqM,EAAQ9zM,IACvD49N,EAAelyN,OAAOkyN,EAAe56N,QAAQ46N,EAAeG,IAAa,GAGjF,GAA8B,IAA1BH,EAAej+N,OAGf,OAFAm+N,GAAoB,EACpB9+N,KAAK+9N,kBAAoBjpB,EAAQ9zM,GAC1B89N,EAGPA,GAAoB,QAMhCA,EAAoB9+N,KAAK6+N,WAAW/pB,EAASmf,EAAOtyM,EAAKuyM,EAAO50L,GAGxE,OAAOw/L,GAEXxN,EAAgBpxN,UAAU2+N,WAAa,SAAU/pB,EAASmf,EAAOtyM,EAAKuyM,EAAO50L,GAGzE,IAFA,IAAIw/L,EACAE,EAAmB,GACdn7M,EAAI,EAAGA,EAAIixL,EAAQn0M,OAAQkjB,IAAK,CACrC,IAAI86M,EAAU3+N,KAAKq+N,oBAAoBvpB,EAASmf,GAChD,GAAI0K,EAAS,CACT,IAAIM,EAAa,GAGjB,GAFAA,EAAW5yN,KAAKrM,KAAKi9N,iBACrBgC,EAAW5yN,KAAKizB,GACgB,IAA5B0/L,EAAiBr+N,OAIjB,OAHAm+N,GAAoB,EAEpB9+N,KAAK+9N,kBAAoB/9N,KAAK+9N,kBACvBe,EAGPA,GAAoB,GAIhC,OAAOA,GAEXxN,EAAgBpxN,UAAUg/N,mBAAqB,SAAUC,GAsBrD,IArBA,IACIxC,EADAqC,EAAmB,GAEnB/0F,EAAU,SAAUtoH,GACpBg7M,EAAc,GACdwC,EAAelwI,SAAQ,SAAU7rF,GACzBA,GAAWA,EAAQsH,aAAa,cAAgBiX,EAAI/P,YACpD+qN,EAAYtwN,KAAKjJ,MAUzB,IAPA,IAAI4pI,EAAU,SAAUtrH,GACpBi7M,EAAY1tI,SAAQ,SAAU1tE,GACtBA,GAAQA,EAAK7W,aAAa,cAAgBgX,EAAO9P,YACjDotN,EAAiB3yN,KAAKkV,OAIzBG,EAASmhH,EAAOngH,QAAU,EAAGhB,GAAU,EAAGA,IAC/CsrH,EAAQtrH,IAGZmhH,EAAS7iI,KACJ2hB,EAAM3hB,KAAK4iB,KAAO,EAAGjB,GAAO,EAAGA,IACpCsoH,EAAQtoH,GAEZ,OAAOq9M,GAEX1N,EAAgBpxN,UAAUk/N,cAAgB,SAAUD,EAAgBrI,EAAYx3L,GAC5E,IAAIj8B,EAAQrD,KACRq/N,EAAoB,GAwBxB,OAvBKr/N,KAAKk1N,aACNl1N,KAAK01N,cAETyJ,EAAelwI,SAAQ,SAAU7rF,GAC7BC,EAAM45N,gBAAkB75N,EACxB,IAAI0iF,EAAQziF,EAAM01N,gBAAgB31N,EAAQkI,IACtCg0N,GAAUj8N,EAAM+5N,oBAAoBt3I,EAAMnkE,IAAKmkE,EAAM1vD,IAAK0vD,EAAMouI,MAAOpuI,EAAMmuI,MAAO30L,GACxF,GAAIwmD,EAAMmuI,MAAQ,GAAKqL,EACnB,IAAK,IAAIjE,EAAWv1I,EAAMnkE,IAAK05M,EAAWvE,EAAWn1M,IAAMm1M,EAAW5C,MAAOmH,IAAY,CACrF,IAAIT,EAAav3N,EAAMu3N,WAAWS,EAAUv1I,EAAM1vD,IAAK0vD,EAAMmuI,MAAOnuI,EAAMouI,MAAO9wN,GACjFw3N,EAAW3rI,SAAQ,SAAU1tE,GACrB49M,EAAen7N,QAAQud,IAAS,IAA0C,IAArC89M,EAAkBr7N,QAAQud,IAC/D89M,EAAkBhzN,KAAKkV,UAM3C89M,EAAkBpwI,SAAQ,SAAU1tE,GAC5B89M,EAAkBr7N,QAAQud,IAAS,GACnC49M,EAAezyN,OAAOyyN,EAAen7N,QAAQud,GAAO,MAGrD49M,GAEX7N,EAAgBpxN,UAAUq/N,YAAc,SAAUz5I,GAC9C,IAAI80I,EAAa56N,KAAK46N,WAAW90I,EAAMnkE,IAAKmkE,EAAM1vD,IAAK0vD,EAAMmuI,MAAOnuI,EAAMouI,MAAOl0N,KAAKk1N,aACtF,IAAKl1N,KAAKk1N,aAAel1N,KAAKw/N,gBAAkBx/N,KAAKyxN,cAAgBzxN,KAAKwxN,gBACtE,OAAOoJ,EAEX,GAAI56N,KAAKk1N,aAAel1N,KAAKkzN,YAAclzN,KAAKy/N,YAC5C,IAAK,IAAIz+N,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAAK,CACzC,IAAIoC,EAAUpD,KAAKoD,QAAQ8I,cAAc,QAAUlM,KAAKuzN,OAAOvyN,GAAGsK,GAAK,MACvE,GAAIlI,IAAYpD,KAAKk1N,YAArB,CAGA,IAAImG,EAAWr7N,KAAKy/N,YAAYr8N,EAAQkI,IAAIqW,IACxCizM,EAAW50N,KAAKy/N,YAAYr8N,EAAQkI,IAAI8qB,IAC5Cp2B,KAAKm0N,iBAAiB/wN,EAASi4N,EAAUzG,GACzC50N,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgB31N,EAAQkI,IAAK,CAAEqW,IAAK05M,EAAUjlM,IAAKw+L,IACjF50N,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAEoZ,IAAKw+L,EAAShjN,WAAY+P,IAAK05M,EAASzpN,aAAgBxO,GACtFpD,KAAKq1N,sBAWb,OARAr1N,KAAKwyN,YAAcxyN,KAAK0/N,WACxB9E,EAAa56N,KAAK46N,WAAW90I,EAAMnkE,IAAKmkE,EAAM1vD,IAAK0vD,EAAMmuI,MAAOnuI,EAAMouI,MAAOl0N,KAAKk1N,aAClFl1N,KAAK01N,cACL11N,KAAKq1N,qBACDr1N,KAAKuQ,gBAAkBvQ,KAAKuQ,eAAe5P,OAAS,IAAqD,IAAhDi6N,EAAW52N,QAAQhE,KAAKuQ,eAAe,KAChGvQ,KAAKy/N,YAAYz/N,KAAKuQ,eAAe,GAAGjF,IAAIqW,MAAQmkE,EAAMnkE,KAC1Di5M,EAAWvuN,KAAKrM,KAAKuQ,eAAe,IAEjCqqN,GAEXtJ,EAAgBpxN,UAAUy/N,iBAAmB,SAAU/E,EAAYx3N,GAG/D,IAFA,IAAIw8N,GAAY,EACZC,EAAW7/N,KAAK+4N,gBAAgB31N,EAAQkI,IACnCyU,EAAQ,EAAGA,EAAQ66M,EAAWj6N,OAAQof,IAE3C,IADA,IAAI+/M,EAAe9/N,KAAK+4N,gBAAgB6B,EAAW76M,GAAOzU,IACjDtK,EAAI,EAAGA,EAAI6+N,EAAS3L,MAAOlzN,IAAK,CACrC,IAAI++N,EAAa,GACjBA,EAAW1zN,KAAKjJ,GAChB28N,EAAW1zN,KAAKuuN,EAAW76M,IAC3B,IAAIg/M,EAAY/+N,KAAK46N,WAAWiF,EAASl+M,IAAM3gB,EAAG8+N,EAAa1pM,IAAK0pM,EAAa7L,MAAO6L,EAAa5L,MAAO6L,GAC5G,GAAIhB,EAAUp+N,OAAS,EAEnB,OADAi/N,GAAY,GACL,EAOnB,OAAOA,GAEXtO,EAAgBpxN,UAAU8/N,iBAAmB,SAAUpF,EAAYx3N,GAC/D,IAAKpD,KAAKk1N,aAAqC,IAAtB0F,EAAWj6N,OAChC,OAAO,EAEX,IAAI21B,EACA2pM,EAAatuN,SAASipN,EAAW,GAAGlwN,aAAa,YAAa,IAOlE,GANI1K,KAAKm+N,SAAW8B,EAChB3pM,EAAY,EAEPt2B,KAAKm+N,SAAW8B,IACrB3pM,EAAY,IAEXt2B,KAAK2/N,iBAAiB/E,EAAYx3N,GACnC,OAAO,EAGX,IADA,IAAI88N,GAAc,EACTC,EAAS,EAAGA,EAASvF,EAAWj6N,OAAQw/N,IAC7C,GAAIvF,EAAWj6N,QAAU,GAAKX,KAAKy/N,YAAYz/N,KAAKk1N,YAAY5pN,KAC5DtL,KAAKy/N,YAAYz/N,KAAKk1N,YAAY5pN,IAAIqW,MAAQ3hB,KAAKkzN,UAAUlzN,KAAKk1N,YAAY5pN,IAAIqW,IAClF,OAAO,EAMf,IAHA,IAAIy+M,EAA2B,IAAd9pM,EACbt2B,KAAK+4N,gBAAgB/4N,KAAKk1N,YAAY5pN,IAAIqW,IAAM3hB,KAAK+4N,gBAAgB/4N,KAAKk1N,YAAY5pN,IAAI4oN,MACxFl0N,KAAKm+N,SACFp+M,EAAQ,EAAGA,EAAQ66M,EAAWj6N,OAAQof,IAAS,CACpD,IAAIsgN,EAAkBrgO,KAAK+4N,gBAAgB6B,EAAW76M,GAAOzU,IACzDg1N,EAAkBtgO,KAAK+4N,gBAAgB31N,EAAQkI,IAC/CkxN,EAAS,GACb,GAA8B,IAA1B6D,EAAgBnM,QAAsD,IAAvCsI,EAAOx4N,QAAQ42N,EAAW76M,IACzDy8M,EAAOnwN,KAAKuuN,EAAW76M,SAEtB,GAAIsgN,EAAgBnM,MAAQ,IAA4C,IAAvCsI,EAAOx4N,QAAQ42N,EAAW76M,IAC5D,GAAkB,IAAduW,GAAmBgqM,EAAgB3+M,MAAS3hB,KAAKy/N,YAAYY,EAAgB/0N,IAAIqW,IAAM0+M,EAAgBnM,MAAQ,EAC/GsI,EAAOnwN,KAAKuuN,EAAW76M,QAEtB,IAAkB,IAAduW,GAAmBgqM,EAAgB3+M,MAAS3hB,KAAKy/N,YAAYY,EAAgB/0N,IAAO,IAIzF,OAAO,EAHPkxN,EAAOnwN,KAAKuuN,EAAW76M,IAM3BsgN,EAAgBnM,OAASoM,EAAgBpM,QAAgD,IAAvCsI,EAAOx4N,QAAQ42N,EAAW76M,KAC5Ey8M,EAAOnwN,KAAKuuN,EAAW76M,IAE3By8M,EAAOnwN,KAAKrM,KAAKk1N,aACjB,IAAIqL,EAAgBvgO,KAAK46N,WAAWwF,EAAYC,EAAgBjqM,IAAKiqM,EAAgBpM,MAAOoM,EAAgBnM,MAAOsI,GACnH,GAAI+D,EAAc5/N,OAAS,EAEvB,OADAu/N,GAAc,EACPA,EAGHngN,IAAU66M,EAAWj6N,OAAS,IAC9Bu/N,GAAc,GAK1B,OAAOA,GAEX5O,EAAgBpxN,UAAUsgO,UAAY,SAAU5F,EAAYx3N,EAAS0zN,GACjE,IACIxgM,EADAjzB,EAAQrD,KAERygO,EAAkB,GACtBA,EAAgBp0N,KAAKjJ,GACrB,IAAI68N,EAAatuN,SAASipN,EAAW,GAAGlwN,aAAa,YAAa,IAC9D1K,KAAKm+N,SAAW8B,EAChB3pM,EAAY,EAEPt2B,KAAKm+N,SAAW8B,IACrB3pM,EAAY,GAEhB,IAAIoqM,EAAkC,IAAdpqM,EAAkB2pM,EAAanJ,EAAW5C,MAAQl0N,KAAKm+N,SAC/E,IAAKn+N,KAAKwxN,gBAAiB,CACvB,IAAImP,EAAoB3gO,KAAK+4N,gBAAgB6B,EAAW,GAAGtvN,IAC3DtL,KAAKwzN,oBAAoBsD,EAAY,CAAEn1M,IAAmB,IAAd2U,EAAkB2pM,EAAaS,EAAoBC,EAAkBzM,QAErH,IAAK,IAAIn0M,EAAQ,EAAGA,EAAQ66M,EAAWj6N,OAAQof,IAC3C0gN,EAAgBp0N,KAAKuuN,EAAW76M,IAChC/f,KAAKm0N,iBAAiByG,EAAW76M,GAAQ2gN,EAAoB1gO,KAAK+4N,gBAAgB6B,EAAW76M,GAAOzU,IAAK8qB,KACzGp2B,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgB6B,EAAW76M,GAAOzU,IAAK,CAAEqW,IAAK++M,IAC5E9F,EAAW76M,GAAOpV,aAAa,WAAY+1N,EAAkB9uN,YAEjExO,EAAQuH,aAAa,WAAYmsN,EAAWn1M,IAAI/P,YAChD5R,KAAKm0N,iBAAiBn0N,KAAK24N,UAAW7B,EAAWn1M,IAAKm1M,EAAW1gM,KACjE,IAAK,IAAIp1B,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IACpChB,KAAKkzN,UAAUlzN,KAAKuzN,OAAOvyN,GAAGsK,IAAM,CAAEqW,IAAK3hB,KAAKuzN,OAAOvyN,GAAG2gB,IAAKyU,IAAKp2B,KAAKuzN,OAAOvyN,GAAGo1B,KAEvFp2B,KAAKm+N,SAAWrH,EAAWn1M,IAC3B3hB,KAAKq1N,qBACLoL,EAAgBxxI,SAAQ,SAAU1tE,GAC9Ble,EAAMo8N,YAAYl+M,EAAKjW,IAAMjI,EAAM6vN,UAAU3xM,EAAKjW,IAElD,IADA,IAAIs1N,EAAYv9N,EAAM01N,gBAAgBx3M,EAAKjW,IAClCtK,EAAI,EAAGA,EAAIqC,EAAMmvN,YAAY7xN,OAAQK,IAC1C,GAAKqC,EAAMmvN,YAAYxxN,GAGvB,IAAK,IAAI6iB,EAAI,EAAGA,EAAIxgB,EAAMmvN,YAAYxxN,GAAGL,OAAQkjB,IACzCxgB,EAAMmvN,YAAYxxN,GAAG6iB,KAAOtC,IAC5Ble,EAAMmvN,YAAYxxN,GAAG6iB,QAAKtY,GAIjClI,EAAMmvN,YAAYoO,EAAUj/M,OAC7Bte,EAAMmvN,YAAYoO,EAAUj/M,KAAO,IAEvCte,EAAMmvN,YAAYoO,EAAUj/M,KAAKi/M,EAAUxqM,KAAO7U,EAClDle,EAAMq8N,WAAar8N,EAAMmvN,gBAGjClB,EAAgBpxN,UAAUi1N,kBAAoB,SAAU/xN,EAAS0zN,GAC7D92N,KAAK6yN,iBAAmB,GACxB,IACIgO,EAEAC,EAHAC,EAAe,GAEfC,EAAkB,GAQtB,GALID,EADA/gO,KAAKk1N,aAAel1N,KAAK2zN,iBACV3zN,KAAKu/N,YAAYzI,GAGjB92N,KAAK46N,WAAW9D,EAAWn1M,IAAKm1M,EAAW1gM,IAAK0gM,EAAW7C,MAAO6C,EAAW5C,MAAO9wN,GAEnG29N,EAAapgO,OAAS,EAItB,GAHAogO,EAAe/gO,KAAKk/N,mBAAmB6B,GACvCA,EAAe/gO,KAAKo/N,cAAc2B,EAAcjK,EAAY1zN,GAC5D09N,GAAqB,eAAkB9gO,KAAKm+N,WAAYn+N,KAAKggO,iBAAiBe,EAAc39N,GACxF09N,EACA9gO,KAAKwgO,UAAUO,EAAc39N,EAAS0zN,QAGtC,IAAK,IAAI91N,EAAI,EAAGA,EAAI+/N,EAAapgO,OAAQK,IAAK,CAC1C,IAAI8kF,EAAQ9lF,KAAK+4N,gBAAgBgI,EAAa//N,GAAGsK,IAKjD,GAJAtL,KAAKi9N,gBAAkB8D,EAAa//N,GACpChB,KAAKo+N,eAAiB,KACtBp+N,KAAK+9N,kBAAoB,KACzB8C,EAAqB7gO,KAAKo9N,oBAAoBt3I,EAAMnkE,IAAKmkE,EAAM1vD,IAAK0vD,EAAMouI,MAAOpuI,EAAMmuI,MAAO7wN,GAC1Fy9N,IAAuB,eAAkB7gO,KAAK+9N,mBAAoB,CAClE/9N,KAAKm0N,iBAAiB4M,EAAa//N,GAAIhB,KAAKo+N,eAAgBp+N,KAAK+9N,mBACjE/9N,KAAKkzN,UAAW6N,EAAa//N,GAAK,IAAK,CAAE2gB,IAAK3hB,KAAKo+N,eAAgBhoM,IAAKp2B,KAAK+9N,mBAC7E,IAAI/gN,EAAQ,CACR+pD,WAAY,CACRplD,IAAK3hB,KAAKo+N,eAAexsN,WACzBwkB,IAAKp2B,KAAK+9N,kBAAkBnsN,aAWpC,GARA5R,KAAKw5E,cAAcx8D,EAAO+jN,EAAa//N,IACvChB,KAAKwzN,oBAAoB1tI,EAAO,CAAE1vD,IAAKp2B,KAAK+9N,kBAAmBp8M,IAAK3hB,KAAKo+N,iBAErEp+N,KAAK09N,eAAiB19N,KAAKu6N,gBAC3Bv6N,KAAK41N,eACL51N,KAAK61N,0BAET71N,KAAKo+N,eAAiB,KAClBp9N,EAAI+/N,EAAapgO,OACjB,cAIJqgO,EAAgB30N,KAAK00N,EAAa//N,IAKlD,GAAIggO,EAAgBrgO,OAAS,EAAG,CAE5B,IAAIkuK,EAAU7uK,KACdghO,EAAgB/xI,SAAQ,SAAUgyI,IACiB,IAA3CpyD,EAAQ6jD,eAAe1uN,QAAQi9N,IAC/BpyD,EAAQ6jD,eAAermN,KAAK40N,MAGhCjhO,KAAK0yN,iBAA4D,IAA1C1yN,KAAK0yN,eAAe1uN,QAAQZ,IACnDpD,KAAK0yN,eAAehmN,OAAO1M,KAAK0yN,eAAe1uN,QAAQZ,GAAU,GAEjE49N,EAAgBrgO,OAAS,IACzBX,KAAKkhO,gBAAgBpK,EAAWn1M,IAAK3hB,KAAK0yN,eAAgBtvN,GAC1DpD,KAAKmhO,2BAGRnhO,KAAKohO,YACNphO,KAAK01N,cAET11N,KAAKq0N,kBACLr0N,KAAKi6H,mBAETq3F,EAAgBpxN,UAAUihO,wBAA0B,WAChD,IAAK,IAAIngO,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IACpC,GAAIhB,KAAK6yN,iBAAiB7yN,KAAKuzN,OAAOvyN,GAAGsK,KAAoD,OAA7CtL,KAAK6yN,iBAAiB7yN,KAAKuzN,OAAOvyN,GAAGsK,IAAc,CAC/FtL,KAAK0yN,eAAiB,CAAC1yN,KAAK6yN,iBAAiB7yN,KAAKuzN,OAAOvyN,GAAGsK,IAAIg0B,KAChE,IAAI/+B,EAAMP,KAAKuzN,OAAOvyN,GAAGsK,GACzBtL,KAAKkhO,gBAAgBlhO,KAAK6yN,iBAAiB,GAAKtyN,GAAKohB,IAAK3hB,KAAK0yN,eAAgB1yN,KAAK6yN,iBAAiB,GAAKtyN,GAAK8gO,UAI3H/P,EAAgBpxN,UAAUohO,uBAAyB,SAAU//M,GACzD,IAAK,IAAIxB,EAAQ,EAAGA,EAAQtgB,OAAO2V,KAAKpV,KAAK6yN,kBAAkBlyN,OAAQof,IACnE/f,KAAK6yN,iBAAiBtxM,EAAKjW,IAAM,MAGzCgmN,EAAgBpxN,UAAUghO,gBAAkB,SAAUv/M,EAAK2d,EAAK+hM,GAC5D,GAAKA,EAAL,CAGA,IAAIE,EAAW5vN,SAAS0vN,EAAO32N,aAAa,cAAe,IACvD82N,EAAS7vN,SAAS0vN,EAAO32N,aAAa,YAAa,IACvD1K,KAAK2yN,qBAAsB3yN,KAAK0yN,gBAAmB1yN,KAAKyhO,eAAiBzhO,KAAK0yN,gBAC9E,IAAK,IAAI1xN,EAAI,EAAGA,EAAIhB,KAAK2yN,oBAAoBhyN,OAAQK,IAAK,CACtD,GAAwC,IAApChB,KAAK2yN,oBAAoBhyN,OACzB,OAEJ,IAAK,IAAIutC,EAAM,EAAGA,EAAMluC,KAAK2yN,oBAAoBhyN,OAAQutC,IACrDluC,KAAK6yN,iBAAiB7yN,KAAK2yN,oBAAoBzkL,GAAK5iC,IAAM,CACtDg0B,IAAKt/B,KAAK2yN,oBAAoBzkL,GAC9BvsB,IAAKA,EACL0/M,OAAQA,GAGhB,IAAIjB,EAAaoB,EAASD,EACtBG,EAAa/vN,SAAS3R,KAAK2yN,oBAAoB3xN,GAAG0J,aAAa,cAAe,IAC9Ei3N,EAAehwN,SAAS3R,KAAK2yN,oBAAoB3xN,GAAG0J,aAAa,YAAa,IAC9Ek3N,EAAajwN,SAAS3R,KAAK2yN,oBAAoB3xN,GAAG0J,aAAa,cAAe,IAC9EkqN,OAAW,EACXoM,OAAkB,EAOtB,IANqD,IAAjDhhO,KAAK4yN,uBAAuB5uN,QAAQq9N,IACpCrhO,KAAK4yN,uBAAuBvmN,KAAKg1N,IAEqC,IAAtErhO,KAAK4yN,uBAAuB5uN,QAAQhE,KAAK2yN,oBAAoB3xN,KAC7DhB,KAAK4yN,uBAAuBvmN,KAAKrM,KAAK2yN,oBAAoB3xN,IAE1D0gO,EAAa,GAAKE,EAAa,EAAG,CAClC,IAAIC,EAAsB7hO,KAAK+4N,gBAAgB/4N,KAAK2yN,oBAAoB3xN,GAAGsK,IAC3EspN,EAAWiN,EAAoBzrM,IAE/B,IADA,IAAI0rM,EAAQl0N,SAASyd,eAAew2M,EAAoBv2N,IAC/CkY,EAAIq+M,EAAoBlgN,IAAK6B,EAAIg+M,EAASD,EAAU/9M,IAAK,CAC9DxjB,KAAKohO,YAAa,EAClBphO,KAAKwzN,oBAAoBqO,EAAqB,CAAElgN,IAAKkgN,EAAoBlgN,IAAM,IAC/EmgN,EAAMn3N,aAAa,WAAYk3N,EAAoBlgN,IAAI/P,YACvD5R,KAAKm0N,iBAAiB2N,EAAOD,EAAoBlgN,IAAKizM,GACtD50N,KAAKshO,uBAAuBQ,GAC5B9hO,KAAKkzN,UAAW4O,EAAQ,IAAK,CAAEngN,IAAKkgN,EAAoBlgN,IAAKyU,IAAKw+L,GAClE,IAAIkC,EAAa92N,KAAK+4N,gBAAgB+I,EAAMx2N,IAC5CtL,KAAKwzN,oBAAoBsD,EAAY,CAAE1gM,IAAKw+L,EAAUjzM,IAAKkgN,EAAoBlgN,MAC/E,IAAIogN,EAAWpwN,SAASmwN,EAAMp3N,aAAa,YAAa,IACpDkzN,EAASjsN,SAASmwN,EAAMp3N,aAAa,YAAa,IAClDupN,EAAQtiN,SAASmwN,EAAMp3N,aAAa,cAAe,IACnDwpN,EAAQviN,SAASmwN,EAAMp3N,aAAa,cAAe,IACnDs3N,EAAkB,GACtBA,EAAgB31N,KAAKy1N,GACrBE,EAAgB31N,KAAKg1N,GACrBL,EAAkBhhO,KAAK46N,WAAWmH,EAAUnE,EAAQ3J,EAAOC,EAAO8N,GAC9DhiO,KAAKk1N,cAA8D,IAA/C8L,EAAgBh9N,QAAQhE,KAAKk1N,cACjD8L,EAAgBt0N,OAAOs0N,EAAgBh9N,QAAQhE,KAAKk1N,aAAc,GAEtEl1N,KAAKiiO,eAAejB,EAAiBpD,EAAQmE,EAAUD,GAE3D9hO,KAAKohO,YAAa,MAEjB,CACGphO,KAAKw/N,iBACLx/N,KAAKw/N,gBAAiB,GAE1Bx/N,KAAK2yN,oBAAoB3xN,GAAG2J,aAAa,WAAYy1N,EAAWxuN,YAChE,IAAImuN,EAAa,GACjBA,EAAW1zN,KAAKrM,KAAK2yN,oBAAoB3xN,IACzC++N,EAAW1zN,KAAKg1N,GAChBL,EAAkBhhO,KAAK46N,WAAWwF,EAAYuB,EAAcC,EAAYF,EAAY3B,GAChF//N,KAAKk1N,cAA8D,IAA/C8L,EAAgBh9N,QAAQhE,KAAKk1N,cACjD8L,EAAgBt0N,OAAOs0N,EAAgBh9N,QAAQhE,KAAKk1N,aAAc,GAEtEN,EAAWjjN,SAAS3R,KAAK2yN,oBAAoB3xN,GAAG0J,aAAa,YAAa,IAC1E1K,KAAKm0N,iBAAiBn0N,KAAK2yN,oBAAoB3xN,GAAIo/N,EAAYxL,GAC/D50N,KAAKshO,uBAAuBthO,KAAK2yN,oBAAoB3xN,IACrDhB,KAAKkzN,UAAWlzN,KAAK2yN,oBAAoB3xN,GAAK,IAAK,CAAE2gB,IAAKy+M,EAAYhqM,IAAKw+L,GACvEkC,EAAa92N,KAAK+4N,gBAAgB/4N,KAAK2yN,oBAAoB3xN,GAAGsK,IAClEtL,KAAKwzN,oBAAoBsD,EAAY,CAAE1gM,IAAKw+L,EAAUjzM,IAAKy+M,IAC3DpgO,KAAKiiO,eAAejB,EAAiBpM,EAAUwL,EAAYpgO,KAAK2yN,oBAAoB3xN,QAIhGswN,EAAgBpxN,UAAU+hO,eAAiB,SAAUjB,EAAiBpM,EAAUwL,EAAYntM,GACxF,IAAI6jM,EAAa92N,KAAK+4N,gBAAgB9lM,EAAM3nB,IAE5C,GADAtL,KAAKwzN,oBAAoBsD,EAAY,CAAEn1M,IAAKy+M,EAAYhqM,IAAKw+L,IACzDoM,EAAgBrgO,OAAS,EAAG,CAE5B,IAAIuhO,EAAUliO,KACdA,KAAK0yN,eAAiB,GACtB1yN,KAAKyhO,gBAAiB,EACtBT,EAAgB/xI,SAAQ,SAAUgyI,GAC9BiB,EAAQxP,eAAermN,KAAK40N,MAGhC,IADA,IAAIkB,EAAqBxwN,SAASshB,EAAMvoB,aAAa,YAAa,IACzDm1G,EAAI,EAAGA,EAAI7/G,KAAK0yN,eAAe/xN,OAAQk/G,IAC5C7/G,KAAKkhO,gBAAgBiB,EAAoBniO,KAAK0yN,eAAgBz/L,GAElEjzB,KAAKyhO,gBAAiB,MAErB,CAID,GAHKzhO,KAAKw/N,gBACNx/N,KAAK01N,cAEL11N,KAAK4yN,uBAAuBjyN,OAAS,EAoBrC,IAnBA,IAAIszI,EAAU,SAAUp0I,GACpB,IAAIuiO,EAASzwN,SAASw4H,EAAOyoF,uBAAuB/yN,GAAG6K,aAAa,YAAa,IAC7E23N,EAAa1wN,SAASw4H,EAAOyoF,uBAAuB/yN,GAAG6K,aAAa,YAAa,IACjFupN,EAAQtiN,SAASw4H,EAAOyoF,uBAAuB/yN,GAAG6K,aAAa,cAAe,IAC9EwpN,EAAQviN,SAASw4H,EAAOyoF,uBAAuB/yN,GAAG6K,aAAa,cAAe,IAC9E43N,EAAmBn4F,EAAOywF,WAAWwH,EAAQC,EAAYpO,EAAOC,EAAO/pF,EAAOyoF,wBAC9EzoF,EAAO+qF,cAAiE,IAAlDoN,EAAiBt+N,QAAQmmI,EAAO+qF,cACtDoN,EAAiB51N,OAAO41N,EAAiBt+N,QAAQmmI,EAAO+qF,aAAc,GAG1E,IAAIx5B,EAAQvxD,EACZm4F,EAAiBrzI,SAAQ,SAAUgyI,GAC/BvlC,EAAMg3B,eAAermN,KAAK40N,MAE1BqB,EAAiB3hO,OAAS,GAC1BwpI,EAAO+2F,gBAAgBkB,EAAQj4F,EAAOuoF,eAAgBvoF,EAAOyoF,uBAAuB/yN,KAGxFsqI,EAASnqI,KACJH,EAAI,EAAGA,EAAIG,KAAK4yN,uBAAuBjyN,OAAQd,IACpDo0I,EAAQp0I,GAGhBG,KAAK4yN,uBAAyB,KAGtCtB,EAAgBpxN,UAAUw7N,oBAAsB,SAAUpH,GACtD,IAAK,IAAItzN,EAAI,EAAGA,EAAIszN,EAAc3zN,OAAQK,IAGtC,IAFA,IAAIoC,EAAUkxN,EAActzN,GACxBuhO,EAAkBn/N,EAAQ0pD,iBAAiB,aACtC01K,EAAM,EAAGA,EAAMD,EAAgB5hO,OAAQ6hO,IAC5C,eAAOD,EAAgBC,KAInClR,EAAgBpxN,UAAUuiO,WAAa,WACnCziO,KAAK27N,cAAc37N,KAAK8yN,gBACxB,IAAI4P,EAAa1iO,KAAKoD,QAAQ0pD,iBAAiB,IAAMm7C,IACrD,gBAAYy6H,EAAY,CAACz6H,KACzBjoG,KAAKo1N,WAAWp1N,KAAKuyN,kBAEzBjB,EAAgBpxN,UAAUk1N,WAAa,SAAU7C,GAC7C,IAAK,IAAIvxN,EAAI,EAAGA,EAAIuxN,EAAgB5xN,OAAQK,IAAK,CAC7C,IAAIoC,EAAUmvN,EAAgBvxN,GAC1B2hO,EAAepQ,EAAgBvxN,GAAGkL,cAAc,sBAChDlM,KAAKw1N,gBACDx1N,KAAK4iO,iBAAmBx/N,EAAQ0pD,iBAAiB9sD,KAAK4iO,iBAAiB,GACvE,eAAS,CAACx/N,EAAQ0pD,iBAAiB9sD,KAAK4iO,iBAAiB,IAAK,CAAC36H,KAG/D,eAAS,CAAC7kG,GAAU,CAAC6kG,MAGzBjoG,KAAKi7D,eACLj7D,KAAKi1N,aAAej1N,KAAK6zN,mBACzB7zN,KAAK6iO,iBAAiBz/N,EAASu/N,KAI3CrR,EAAgBpxN,UAAU2iO,iBAAmB,SAAUvjM,EAAK9vB,GAExD,GADAxP,KAAKmzN,iBAAmBnzN,KAAK8iO,kBACxBxjM,EAAIpzB,cAAc,aACnB,IAAK,IAAI2X,EAAI,EAAGA,EAAI7jB,KAAKmzN,iBAAiBxyN,OAAQkjB,IAAK,CACnD,IAAImtJ,EAAUhxK,KAAKuE,cAAc,QAC7Bw+N,OAAgB,EACpBvzN,EAAU9K,YAAYssK,GAGlB+xD,EAF6B,WAA7B/iO,KAAKmzN,iBAAiBtvM,IAAgD,WAA7B7jB,KAAKmzN,iBAAiBtvM,IAClC,YAA7B7jB,KAAKmzN,iBAAiBtvM,IAAiD,YAA7B7jB,KAAKmzN,iBAAiBtvM,GAChD+jD,GAGA,GAEpB,eAAS,CAACopG,GAAU,CAAC+xD,EAAe/iO,KAAKmzN,iBAAiBtvM,GAAI,GAAQ0sM,OAIlFe,EAAgBpxN,UAAU20N,gBAAkB,SAAUzxN,EAAS0zN,GAC3D,IAAI95M,EAAQ,CACRA,MAAO,CACHi3M,MAAO6C,EAAW7C,MAAMriN,WACxBsiN,MAAO4C,EAAW5C,MAAMtiN,WACxB0lN,SAAUR,EAAWQ,SAAS1lN,WAC9B2lN,SAAUT,EAAWS,SAAS3lN,WAC9B4lN,SAAW,eAAkBV,EAAWU,eAA6CjsN,EAAjCurN,EAAWU,SAAS5lN,WACxE6lN,SAAW,eAAkBX,EAAWW,eAA6ClsN,EAAjCurN,EAAWW,SAAS7lN,WACxE+P,IAAKm1M,EAAWn1M,IAAI/P,WACpBwkB,IAAK0gM,EAAW1gM,IAAIxkB,aAG5B5R,KAAKw5E,cAAcx8D,EAAO5Z,IAE9BkuN,EAAgBpxN,UAAUk8N,gBAAkB,SAAUtF,GAClD,IAEIoF,EACA8G,EAHAC,EAAajjO,KAAKk5N,cAAc,GAChCgK,EAAYljO,KAAKk5N,cAAc,GAenC,OAXIgD,EADApF,GAAqC,kBAAhB,GAA0D,kBAAtBA,EAAgB,OAAkBA,EAAW7C,MAAQ,EAChG6C,EAAW7C,MAAQiP,GAAcpM,EAAW7C,MAAQ,GAAKj0N,KAAKm2N,YAAY,GAG3E+M,EAGbF,EADAlM,GAAsC,kBAAjB,GAA6BA,EAAW5C,MAAQ,GAAmC,kBAAtB4C,EAAgB,MACnFA,EAAW5C,MAAQ+O,GAAenM,EAAW5C,MAAQ,GAAKl0N,KAAKm2N,YAAY,GAG5E,eAAW8M,GAEtB,CAACD,EAAa9G,IAEzB5K,EAAgBpxN,UAAUijO,uBAAyB,SAAU9uM,GACzD,IAAIrX,EAAQ,GACRomN,EAAat8N,WAAWutB,EAAKjxB,QAAQ2D,MAAMhC,KAC3Cs+N,EAAcv8N,WAAWutB,EAAKjxB,QAAQ2D,MAAM/B,MAC5C2c,EAAMxY,KAAKC,MAAMg6N,GAAcpjO,KAAKk5N,cAAc,GAAKl5N,KAAKm2N,YAAY,KACxE//L,EAAMjtB,KAAKC,MAAMi6N,GAAerjO,KAAKk5N,cAAc,KAAMl5N,KAAKm2N,YAAY,KAE9E,OADAn5M,EAAQ,CAAC2E,EAAKyU,GACPpZ,GAEXs0M,EAAgBpxN,UAAUu6N,gBAAkB,SAAU9rN,EAAc20N,EAAOriE,GACvE,IAAIsiE,EAAgB,GACpB,GAAIvjO,KAAKiyN,gBACLsR,EAAgB,QAGhB,IAAK,IAAIviO,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,KAC7B,eAAkBsiO,IAAUtjO,KAAKuzN,OAAOvyN,GAAGsK,KAAOg4N,EAAM,GAAGh4N,KAC5D,eAAkB21J,IAAYjhK,KAAKuzN,OAAOvyN,GAAGsK,KAAO21J,EAAQ,GAAG31J,IAChEtL,KAAKuzN,OAAOvyN,GAAG2gB,MAAQ3hB,KAAKw4N,mBAAmBx3N,GAAG2gB,KAC/C3hB,KAAKuzN,OAAOvyN,GAAGo1B,MAAQp2B,KAAKw4N,mBAAmBx3N,GAAGo1B,KACtDmtM,EAAcl3N,KAAKrM,KAAKuzN,OAAOvyN,IAI3C,GAAIuiO,EAAc5iO,OAAS,GAAKX,KAAKiyN,gBAAiB,CAClD,IAAIuR,EAAc,CACdD,cAAeA,EAAe50N,aAAcA,EAC5C80N,YAAc,eAAkBH,GAAiB,GAARA,EAAYI,cAAgB,eAAkBziE,GAAqB,GAAVA,GAEtGjhK,KAAKiI,QAAQ,SAAUu7N,KAG/BlS,EAAgBpxN,UAAUu1N,sBAAwB,SAAUkO,GAwGxD,IAvGA,IAsGmB3vF,EAtGf3wI,EAAQrD,KACRm0I,EAAU,SAAUnzI,GACpB,IAAI4iO,EAAa,CAAC,YAAa,IAAMtT,IACjCuG,EAAc8M,EAAY3iO,GAE1BmsI,EAAO02F,QAAU,IAAI,OAAUhN,EAAa,CACxC3jN,gBAAgB,EAChB+f,OAAO,EACP6wM,SAAU32F,EAAO/pI,QACjB2gO,cAAc,EACdC,OAAQ72F,EAAOy1F,gBAAkBz1F,EAAOy1F,gBAAkB,WAC1D/0H,MAAO+1H,EACP57H,UAAWmlC,EAAO82F,gBAAgBr+N,KAAKunI,GACvChlC,SAAU,SAAU9zE,GAKhB,GAJAhxB,EAAM4E,QAAQ,WAAYosB,GACtB,eAAkBA,EAAK5lB,UACvB4lB,EAAK5lB,QAAS,GAEZ4lB,EAAW,OAmDZ,CACD,IAAI6vM,EAAe7gO,EAAM01N,gBAAgB11N,EAAM6xN,YAAY5pN,IAC3D,IAAKtK,EAAI,EAAGA,EAAIqC,EAAMkwN,OAAO5yN,OAAQK,IAC7BqC,EAAMkwN,OAAOvyN,GAAGsK,KAAO44N,EAAa54N,KACpC+oB,EAAKjxB,QAAQuH,aAAa,WAAYtH,EAAMm1N,mBAAmBx3N,GAAGo1B,IAAIxkB,YACtEyiB,EAAKjxB,QAAQuH,aAAa,WAAYtH,EAAMm1N,mBAAmBx3N,GAAG2gB,IAAI/P,YACtEsyN,EAAa9tM,IAAM/yB,EAAMm1N,mBAAmBx3N,GAAGo1B,IAC/C8tM,EAAaviN,IAAMte,EAAMm1N,mBAAmBx3N,GAAG2gB,IAC/Cte,EAAM8wN,iBAAiB9wN,EAAM6xN,YAAa7xN,EAAMm1N,mBAAmBx3N,GAAG2gB,IAAKte,EAAMm1N,mBAAmBx3N,GAAGo1B,KACvG/yB,EAAM8xN,kBAAkB9xN,EAAM6xN,YAAagP,IAG/C7gO,EAAMs1N,WACN,eAAOt1N,EAAMs1N,eAhED,CAChB,IAAI7yI,EAAQziF,EAAM01N,gBAAgB11N,EAAM6xN,YAAY5pN,IAChDjI,EAAMy3N,cACNz3N,EAAMu3N,WAAW90I,EAAMnkE,IAAKmkE,EAAM1vD,IAAK0vD,EAAMmuI,MAAOnuI,EAAMouI,MAAO7wN,EAAM6xN,aAAav0N,OAAS,GAC7F0C,EAAM8gO,kBAAkB9vM,GACxBhxB,EAAM8wN,iBAAiB9wN,EAAM6xN,YAAapvI,EAAMnkE,IAAKmkE,EAAM1vD,KAC3D/yB,EAAM8xN,kBAAkB9xN,EAAM6xN,YAAapvI,IAG3CziF,EAAM8wN,iBAAiB9wN,EAAM6xN,YAAapvI,EAAMnkE,IAAKmkE,EAAM1vD,KAE/D/yB,EAAM6xN,YAAc,KACpB,IAAI3zM,EAAOle,EAAMw3N,aAAaxmM,GAC1BhxB,EAAMs1N,WACN,eAAOt1N,EAAMs1N,WAEjB,gBAAY,CAACt1N,EAAMD,SAAU,CAACgtN,KAC9B,gBAAY,CAAC/7L,EAAKjxB,SAAU,CAACitN,KAC7BhtN,EAAMs1N,UAAY,KAClBtkM,EAAKjxB,QAAQ8B,UAAUC,OAAO,cAC9B,IAAIwc,EAAMte,EAAM8/N,uBAAuB9uM,GAAM,GACzC+B,EAAM/yB,EAAM8/N,uBAAuB9uM,GAAM,GACzCyiM,EAAazzN,EAAM01N,gBAAgB1kM,EAAKjxB,QAAQkI,IAChDjI,EAAMy3N,cACsG,IAA5Gz3N,EAAMu3N,WAAWj5M,EAAKyU,EAAK0gM,EAAW7C,MAAO6C,EAAW5C,MAAOtmN,SAASyd,eAAe9J,EAAKjW,KAAK3K,QACjG0C,EAAMmwN,oBAAoBnwN,EAAM01N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAK,CAAEqW,IAAKA,EAAKyU,IAAKA,IACnF/yB,EAAM6vN,UAAU7+L,EAAKjxB,QAAQkI,IAAIqW,IAAMA,EACvCte,EAAM6vN,UAAU7+L,EAAKjxB,QAAQkI,IAAI8qB,IAAMA,EACvC/yB,EAAMm2E,cAAc,CAAEx8D,MAAO,CAAEoZ,IAAKA,EAAIxkB,WAAY+P,IAAKA,EAAI/P,aAAgByiB,EAAKjxB,SAClFC,EAAMqyN,gBAGNryN,EAAMmwN,oBAAoBnwN,EAAM01N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAK,CAC9DqW,IAAKte,EAAM6vN,UAAU7+L,EAAKjxB,QAAQkI,IAAIqW,IACtCyU,IAAK/yB,EAAM6vN,UAAU7+L,EAAKjxB,QAAQkI,IAAI8qB,MAE1C/B,EAAKjxB,QAAQuH,aAAa,WAAYtH,EAAM01N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAI8qB,IAAIxkB,YACjFyiB,EAAKjxB,QAAQuH,aAAa,WAAYtH,EAAM01N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAIqW,IAAI/P,YACjFvO,EAAMqyN,eAEV,IAAI0O,EAAgB/gO,EAAM01N,gBAAgB1kM,EAAKjxB,QAAQkI,IACvDjI,EAAM8wN,iBAAiB9/L,EAAKjxB,QAASghO,EAAcziN,IAAKyiN,EAAchuM,KACtE/yB,EAAMuyN,eACNvyN,EAAMwyN,yBACNxyN,EAAMo3N,iBAAgB,GACtBp3N,EAAMghO,kBAAoB,CAAE31N,MAAO2lB,EAAK3lB,MAAOtL,QAASixB,EAAKjxB,SAC7DC,EAAMs0N,eACNt0N,EAAMuf,KAAOvf,EAAM2wN,QAAO,GAC1B3wN,EAAM44N,iBACN54N,EAAM0wN,mBAmBd9rH,KAAM,SAAU5zE,GACZhxB,EAAMihO,iBAAmB,CACrB51N,MAAO2lB,EAAK3lB,MACZtL,QAASixB,EAAKjxB,QACd9C,OAAQ,eAAS+zB,EAAW,OAAG,aAEnChxB,EAAM4E,QAAQ,OAAQ5E,EAAMihO,kBAC5BjhO,EAAMkhO,YAAYlwM,OAG6B,IAAnD84G,EAAO2lF,eAAe9uN,QAAQmpI,EAAO02F,UACrC12F,EAAO2lF,eAAezmN,KAAK8gI,EAAO02F,SAG1C7vF,EAAUhzI,GAEVmsI,EAASntI,KACJgB,EAAI,EAAGA,EAAI2iO,EAAYhjO,OAAQK,IACpCmzI,EAAQnzI,GACRA,EAAIgzI,GAGZs9E,EAAgBpxN,UAAU01N,aAAe,WACrC51N,KAAKw6N,mBACLx6N,KAAKq1N,qBACLr1N,KAAK01N,eAETpE,EAAgBpxN,UAAU6zN,eAAiB,WACvC/zN,KAAK8yN,eAAe7jI,SAAQ,SAAU40I,GAElCA,EAAQW,kBAGhBlT,EAAgBpxN,UAAUukO,iBAAmB,SAAU9iN,EAAKuyM,EAAO/hM,GAC3DxQ,EAAMuyM,GAASl0N,KAAK4iB,OACpB5iB,KAAK4iB,KAAO5iB,KAAK4iB,KAAOuP,EACxBnyB,KAAKi8N,mBAGb3K,EAAgBpxN,UAAU+jO,gBAAkB,SAAU5vM,GAClD,IAAIqwM,EAAWrwM,EAQf,GANAr0B,KAAKiI,QAAQ,YAAay8N,GAAU,SAAUA,GACtC,eAAkBrwM,EAAK5lB,UACvB4lB,EAAK5lB,QAAS,MAGtBzO,KAAKqyN,SAAWh+L,EAAK5lB,OACf4lB,EAAW,OAwBb,gBAAY,CAACr0B,KAAKoD,SAAU,CAACgtN,KAC7B,gBAAY,CAAC/7L,EAAKjxB,SAAU,CAACitN,SAzBb,CAChBrwN,KAAKw4N,mBAAqBx4N,KAAKy4N,YAAYz4N,KAAKuzN,QAChDvzN,KAAKk1N,YAAc7gM,EAAKjxB,QACxBpD,KAAKy/N,YAAc/iM,KAAKpiB,MAAMoiB,KAAKkkF,UAAU5gH,KAAKy/N,cAClD,IAAIkF,EAAc3kO,KAAKm+N,SAAWxsN,SAAS0iB,EAAKjxB,QAAQsH,aAAa,YAAa,IAClF1K,KAAK4kO,SAAWjzN,SAAS0iB,EAAKjxB,QAAQsH,aAAa,YAAa,IAChE,IAAI62N,EAAW5vN,SAAS0iB,EAAKjxB,QAAQsH,aAAa,cAAe,IACjE1K,KAAKykO,iBAAiBE,EAAapD,EAAUA,GAC7CvhO,KAAK+zN,iBACL/zN,KAAK24N,UAAY/qN,SAASrJ,cAAc,OACxCvE,KAAK24N,UAAUzzN,UAAU4G,IAAI,YAC7B9L,KAAK24N,UAAUzzN,UAAU4G,IAAI,uBAC7B,gBAAS9L,KAAK24N,UAAW,CAAE,SAAY,aACvC,eAAS,CAAC34N,KAAKoD,SAAU,CAACgtN,KAC1B,eAAS,CAAC/7L,EAAKjxB,SAAU,CAACitN,KAC1BrwN,KAAKoD,QAAQsB,YAAY1E,KAAK24N,WAC9B34N,KAAK0L,uBACL1L,KAAK24N,UAAY/qN,SAAS1B,cAAc,aACxClM,KAAK24N,UAAU5xN,MAAM1B,OAAUrF,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAI4oN,MAAQl0N,KAAKi2N,SAAS,GAAM,KACjGj2N,KAAK24N,UAAU5xN,MAAMzB,MAAStF,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAI2oN,MAAQj0N,KAAKi2N,SAAS,GAAM,KAChG,IAAImO,EAAgBpkO,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IACtDtL,KAAKm0N,iBAAiBn0N,KAAK24N,UAAWyL,EAAcziN,IAAKyiN,EAAchuM,OAQ/Ek7L,EAAgBpxN,UAAUu4N,YAAc,SAAU7nM,EAAQtwB,QACvCiL,IAAXjL,IACAA,EAAS,IAEb,IAAK,IAAIU,EAAI,EAAGA,EAAI4vB,EAAOjwB,OAAQK,IAM/B,IAAK,IAAIwiB,KAJJljB,EAAOU,KACRV,EAAOU,GAAK,IAGF4vB,EAAO5vB,GACjBV,EAAOU,GAAG,GAAKwiB,GAAKoN,EAAO5vB,GAAG,GAAKwiB,GAG3C,OAAOljB,GAEXgxN,EAAgBpxN,UAAUqkO,YAAc,SAAUlwM,GAC9C,IAAIwwM,EACA5G,EACA6G,EACJ,GAAK9kO,KAAKqyN,SA0DNryN,KAAK6jO,QAAQkB,WAAW1wM,EAAK3lB,OAC7B,gBAAY,CAAC1O,KAAKoD,SAAU,CAACgtN,KAC7B,gBAAY,CAAC/7L,EAAKjxB,SAAU,CAACitN,SA5Db,CAChB,IAAIj6L,EAAM0uM,EAAU9kO,KAAKmjO,uBAAuB9uM,GAAM,GAClD1S,EAAM3hB,KAAKmjO,uBAAuB9uM,GAAM,GAC5C,GAAI+B,EAAM,GAAKzU,EAAM,EACjB,OAEJ3hB,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAK,CAAEqW,IAAKA,EAAKyU,IAAKA,IACjF,IAAI0gM,EAAa92N,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAGnD,GAFAtL,KAAKykO,iBAAiB3N,EAAWn1M,IAAKm1M,EAAW5C,MAAO,GACxDl0N,KAAK+zN,iBACD/zN,KAAK86N,eACL96N,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAEoZ,IAAKA,EAAIxkB,WAAY+P,IAAKA,EAAI/P,aAAgByiB,EAAKjxB,SACjFpD,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAK,CAAEqW,IAAKA,EAAKyU,IAAKA,IACjFyuM,EAAS7kO,KAAKkzN,UAAW7+L,EAAKjxB,QAAU,IAAGgzB,IAC3C6nM,EAASj+N,KAAKkzN,UAAW7+L,EAAKjxB,QAAU,IAAGue,IAC3C3hB,KAAKkzN,UAAW7+L,EAAKjxB,QAAU,IAAK,CAAEue,IAAKA,EAAKyU,IAAKA,GACrDp2B,KAAKq1N,sBACDr1N,KAAK4kO,WAAaC,GAAU7kO,KAAKm+N,WAAaF,KAC9Cj+N,KAAKmkO,kBAAkB9vM,GACnBr0B,KAAK4kO,WAAaC,IAClB7kO,KAAKm+N,SAAWF,GAEhBj+N,KAAKm+N,WAAaF,IAClBj+N,KAAK4kO,SAAWC,GAEhB7kO,KAAK86N,eAAc,CACnB96N,KAAKk1N,YAAc7gM,EAAKjxB,QACxB,IAAI0iF,EAAQgxI,EACZ92N,KAAKuQ,eAAiBvQ,KAAK46N,WAAW90I,EAAMnkE,IAAKmkE,EAAM1vD,IAAK0vD,EAAMmuI,MAAOnuI,EAAMouI,MAAO7/L,EAAKjxB,SACvF0zN,EAAW1gM,KAAOp2B,KAAK81N,mBACvB91N,KAAKuQ,eAAiB,IAE1BvQ,KAAKm1N,kBAAkB9gM,EAAKjxB,QAAS0zN,GACrC92N,KAAKw6N,mBAoBjB,IAhB0B,IAAtBx6N,KAAK86N,cACL96N,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAK,CAAEqW,IAAKA,EAAKyU,IAAKA,IAEjFp2B,KAAKkzN,UAAU7+L,EAAKjxB,QAAQkI,IAAIqW,MAAQA,GAAO3hB,KAAKkzN,UAAU7+L,EAAKjxB,QAAQkI,IAAI8qB,MAAQA,IACvFp2B,KAAKwzN,oBAAoBxzN,KAAK+4N,gBAAgB1kM,EAAKjxB,QAAQkI,IAAK,CAAEqW,IAAKA,EAAKyU,IAAKA,IACjFp2B,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAEoZ,IAAKA,EAAIxkB,WAAY+P,IAAKA,EAAI/P,aAAgByiB,EAAKjxB,UAEjFpD,KAAK4kO,WAAaE,IAClB9kO,KAAK4kO,SAAWC,EAChB7kO,KAAKw6N,oBAEJx6N,KAAK86N,cACN96N,KAAKmkO,kBAAkB9vM,GAE3Br0B,KAAK07N,oBAAoB17N,KAAKuyN,iBAC9BvyN,KAAKo1N,WAAWp1N,KAAKuyN,kBACK,IAAtBvyN,KAAK86N,aACL,SASZxJ,EAAgBpxN,UAAU26N,aAAe,SAAUxmM,GAE/C,IADA,IAAI9S,EACKvgB,EAAI,EAAGA,EAAIhB,KAAKuyN,gBAAgB5xN,OAAQK,IACzChB,KAAKuyN,gBAAgBvxN,GAAGsK,MAAS+oB,EAAKjxB,SACnCixB,EAAKjxB,QAAQkI,IAAO+oB,KACvB9S,EAAOvhB,KAAKuyN,gBAAgBvxN,IAGpC,OAAOugB,GAEX+vM,EAAgBpxN,UAAU+oG,SAAW,SAAUtnF,EAAKD,EAAQsjN,IACpDA,GAAkBA,aAAwBplO,QAC1ColO,EAAe,CAACA,IAEpB,IAAI9Q,EAAQ,EACZ,MAAOvyM,GAAO,EAAG,CACb,IAAIsyM,EAAQ,EACR79L,EAAM1U,EACV,MAAO0U,GAAO,EAAG,CACb,IAAI68B,EAAQjzD,KAAKwyN,YAAY7wM,GAC7B,GAAIsxC,EAAO,CACP,IAAI1xC,EAAO0xC,EAAM78B,GACjB,GAAI7U,KAAUyjN,IACsB,IAAhCA,EAAahhO,QAAQud,KAAiB5P,SAAS4P,EAAK7W,aAAa,cAAe,KAAOupN,GACpFtiN,SAAS4P,EAAK7W,aAAa,cAAe,KAAOwpN,EACpD,OAAO3yM,IAGb0yM,IACA79L,IAEJzU,IACAuyM,EAEN,OAAO,MAEX5C,EAAgBpxN,UAAUikO,kBAAoB,SAAU9vM,GACpD,IAAI6/L,EAAQviN,SAAS0iB,EAAKjxB,QAAQsH,aAAa,cAAe,IAC1D0rB,EAAMzkB,SAAS0iB,EAAKjxB,QAAQsH,aAAa,YAAa,IACtDiX,EAAMhQ,SAAS0iB,EAAKjxB,QAAQsH,aAAa,YAAa,IACtDupN,EAAQtiN,SAAS0iB,EAAKjxB,QAAQsH,aAAa,cAAe,IAC1DwxN,EAAal8N,KAAKk5N,cAAc,GAChChtI,EAAclsF,KAAKk5N,cAAc,GACjCn0N,EAAc,IAAR4c,EAAY,EAAM,GAASuqE,EAAclsF,KAAKm2N,YAAY,IAChEnxN,EAAe,IAARoxB,EAAY,EAAM,GAAS8lM,EAAal8N,KAAKm2N,YAAY,IAChE8O,EAAcjlO,KAAKk5N,cAAc,GACjCgM,EAAellO,KAAKk5N,cAAc,GACtCl5N,KAAK+yN,WAAWhuN,IAAM/E,KAAK24N,UAAU5xN,MAAMhC,IAAMA,EAAM,KACvD/E,KAAK+yN,WAAW/tN,KAAOhF,KAAK24N,UAAU5xN,MAAM/B,KAAOA,EAAO,KAC1DhF,KAAK+yN,WAAW1tN,OAASrF,KAAK24N,UAAU5xN,MAAM1B,OAAW6uN,EAAQ+Q,GAAiB/Q,EAAQ,GAAKl0N,KAAKm2N,YAAY,GAAO,KACvHn2N,KAAK+yN,WAAWztN,MAAQtF,KAAK24N,UAAU5xN,MAAMzB,MAAU2uN,EAAQiR,GAAkBjR,EAAQ,GAAKj0N,KAAKm2N,YAAY,GAAO,MAE1H7E,EAAgBpxN,UAAU64N,gBAAkB,SAAUrF,GAElD,IADA,IAAIyR,EACKnkO,EAAI,EAAGA,EAAIhB,KAAKuzN,OAAO5yN,OAAQK,IAChChB,KAAKuzN,OAAOvyN,GAAGsK,KAAOooN,IACtByR,EAAsBnlO,KAAKuzN,OAAOvyN,IAG1C,OAAOmkO,GAUX7T,EAAgBpxN,UAAUklO,SAAW,SAAU77H,GAC3CvpG,KAAKmyN,YAAc,EACnBnyN,KAAKy0N,SACAlrH,EAAM+tH,WACP/tH,EAAM+tH,SAAW,GAEhB/tH,EAAMguH,WACPhuH,EAAMguH,SAAW,GAEhBhuH,EAAMj+F,KACPi+F,EAAMj+F,GAAK,UAAYtL,KAAKuxN,QAAQ3/M,WACpC5R,KAAKuxN,QAAUvxN,KAAKuxN,QAAU,GAGlC,IAAImG,EAAY,IAAI,GAAM13N,KAAM,SAAUupG,GAAO,GACjDvpG,KAAKuzN,OAAOlnN,KAAKqrN,GACjB13N,KAAKw4N,mBAAqBx4N,KAAKy4N,YAAYz4N,KAAKuzN,QAChDvzN,KAAK00N,gBAAgBgD,IACjB13N,KAAK20N,eAAiB+C,EAAUthM,KAAOp2B,KAAK20N,eAAkB+C,EAAUthM,IAAMshM,EAAUzD,QACxFj0N,KAAKwzN,oBAAoBkE,EAAW,CAAEthM,IAAKp2B,KAAK20N,eAAiB+C,EAAUzD,QAE/E,IAAI9sJ,EAAOnnE,KAAKq8N,WAAW3E,GAAW,EAAM,MA+B5C,GA9BA13N,KAAKkzN,UAAUwE,EAAUpsN,IAAM,CAAEqW,IAAK+1M,EAAU/1M,IAAKyU,IAAKshM,EAAUthM,KACpEp2B,KAAKy/N,YAAY/H,EAAUpsN,IAAM,CAAEqW,IAAK+1M,EAAU/1M,IAAKyU,IAAKshM,EAAUthM,KACtEp2B,KAAKq1N,qBACLr1N,KAAKoD,QAAQ6/K,sBAAsB,aAAc97G,GACjDnnE,KAAKw/N,gBAAiB,EAClBx/N,KAAK6zN,mBACL7zN,KAAKs1N,wBACLt1N,KAAK07N,oBAAoB17N,KAAKuyN,mBAG9BvyN,KAAKk1N,YAAc/tJ,EACdnnE,KAAKuQ,iBACNvQ,KAAKuQ,eAAiB,IAE1BvQ,KAAKm0N,iBAAiBhtJ,EAAMuwJ,EAAU/1M,IAAK+1M,EAAUthM,KACrDp2B,KAAKm1N,kBAAkBhuJ,EAAMuwJ,IAEjC13N,KAAKw/N,gBAAiB,EAClBx/N,KAAKw1N,eACLx1N,KAAKi1N,aAAej1N,KAAK6zN,mBACzB7zN,KAAKy1N,sBAAsB,CAAC7nN,SAASyd,eAAeqsM,EAAUpsN,MAElEtL,KAAKo1N,WAAW,CAACjuJ,IACbnnE,KAAKu6N,gBACLv6N,KAAKk1N,YAAc,KACnBl1N,KAAKw6N,oBAETx6N,KAAKq1N,qBACLr1N,KAAK01N,cACL11N,KAAK61N,yBACD71N,KAAKi7D,cACL,IAAK,IAAIj6D,EAAI,EAAGA,EAAImmE,EAAKra,iBAAiB,aAAansD,OAAQK,IAAK,CAChE,IAAI23F,EAAmC,SAAtB,OAAQ3xE,KAAKhX,KAAmB,wBAA0B,YAC3E,OAAalE,IAAIq7D,EAAKra,iBAAiB,aAAa9rD,GAAI23F,EAAW34F,KAAK43N,kBAAmB53N,MACjE,SAAtB,OAAQgnB,KAAKhX,MACb,OAAalE,IAAIq7D,EAAKra,iBAAiB,aAAa9rD,GAAI,aAAchB,KAAK63N,uBAAwB73N,MAI/GA,KAAKy6N,iBAAgB,EAAO,CAAC/C,KAUjCpG,EAAgBpxN,UAAUmlO,YAAc,SAAU97H,GAE9C,GADAvpG,KAAKmyN,YAAc,EACd5oH,EAAMj+F,GAAX,CAGA,IAAI84N,EAAgBpkO,KAAK+4N,gBAAgBxvH,EAAMj+F,IAC/C,GAAK84N,EAAL,CAGApkO,KAAKy0N,SACLlrH,EAAMnzE,IAAOmzE,EAAMnzE,IAAM,EAAK,EAAMmzE,EAAMnzE,IAAMp2B,KAAK0iB,QAAY1iB,KAAK0iB,QAAU,EAAI6mF,EAAMnzE,IACtF,eAAkBmzE,EAAMnzE,OACxBmzE,EAAMnzE,IAAMguM,EAAchuM,KAE9Bp2B,KAAKwzN,oBAAoB4Q,EAAe76H,GACxCvpG,KAAK00N,gBAAgB0P,GACrB,IAAIj9J,EAAOv5D,SAASyd,eAAek+E,EAAMj+F,IACzCtL,KAAKk1N,YAAc/tJ,EACnB,IAAI18D,EAAW25N,EAAc35N,SAAW25N,EAAc35N,SAASxG,MAAM,KAAO,KAK5E,GAJAjE,KAAKixN,aAAe9pJ,EAAKj7D,cAAc,sBACnCi7D,EAAKj7D,cAAc,sBACnBlM,KAAKq2N,iBAAiB5rN,EAAU08D,EAAK77D,GAAK,WAAY4lN,IAC1D/pJ,EAAKziE,YAAY1E,KAAKixN,cAClBmT,EAAc34M,OAAQ,CACtB,IAAIwrM,EAAwB9vJ,EAAKj7D,cAAc,mBAC3Ci7D,EAAKj7D,cAAc,mBAAqBlM,KAAKq2N,iBAAiB,GAAIlvJ,EAAK77D,GAAK,WAAY,IAC5F,eAAS,CAAC2rN,GAAwB,CAACxrM,KACnCwrM,EAAsBnsN,UAAY,GAClC,IAAIQ,EAAKtL,KAAKoD,QAAQkI,GAAK,iBAAmB84N,EAAc94N,GAC5DtL,KAAKw2N,eAAe4N,EAAc34M,OAAQwrM,EAAuB3rN,GAAI,EAAM,UAC3EtL,KAAKixN,aAAavsN,YAAYuyN,GAC9Bj3N,KAAK0L,4BAGDy7D,EAAKj7D,cAAc,oBACnB,eAAOi7D,EAAKj7D,cAAc,oBAGlC,GAAIk4N,EAAcv5N,QAAS,CACvB,IAAIy6N,EAAalB,EAAc35N,SAAW25N,EAAc35N,SAASxG,MAAM,KAAO,KAC9EjE,KAAKm3N,UAAYhwJ,EAAKj7D,cAAc,oBAAsBi7D,EAAKj7D,cAAc,oBACzElM,KAAKq2N,iBAAiBiP,EAAYn+J,EAAK77D,GAAK,QAAS2lN,IACzDjxN,KAAKm3N,UAAUrsN,UAAY,GAC3B,IAAIssN,EAAep3N,KAAKixN,aAAa/kN,cAAc,mBAC/C3F,OAAOC,iBAAiBxG,KAAKixN,aAAa/kN,cAAc,oBAAoB7G,OAAS,MACrFgyN,EAAqB,gBAAkBD,EAAe,IAC1D,gBAASp3N,KAAKm3N,UAAW,CAAE9xN,OAAQgyN,IAC/B/rN,EAAKtL,KAAKoD,QAAQkI,GAAK,kBAAoB84N,EAAc94N,GAC7DtL,KAAKw2N,eAAe4N,EAAcv5N,QAAS7K,KAAKm3N,UAAW7rN,GAAI,EAAM,WACrEtL,KAAKixN,aAAavsN,YAAY1E,KAAKm3N,WACnCn3N,KAAK0L,4BAGDy7D,EAAKj7D,cAAc,qBACnB,eAAOi7D,EAAKj7D,cAAc,qBAGlClM,KAAK60N,gBAAgB1tJ,EAAMi9J,GAC3BpkO,KAAKo0N,kBAAkBjtJ,EAAMi9J,GAC7BpkO,KAAKm0N,iBAAiBhtJ,EAAMi9J,EAAcziN,IAAKyiN,EAAchuM,KAC7Dp2B,KAAKm1N,kBAAkBhuJ,EAAMi9J,GACzBpkO,KAAK6zN,mBACL7zN,KAAKs1N,wBAETt1N,KAAKk1N,YAAc,KACnBl1N,KAAK41N,eACL51N,KAAK61N,4BAETvE,EAAgBpxN,UAAU21N,uBAAyB,WAC/C71N,KAAK0/N,WAAa1/N,KAAKwyN,YACvBxyN,KAAKy/N,YAAc/iM,KAAKpiB,MAAMoiB,KAAKkkF,UAAU5gH,KAAKkzN,aAOtD5B,EAAgBpxN,UAAUqlO,UAAY,WAGlC,IAFA,IAAIC,EAAaxlO,KAAKy4N,YAAYz4N,KAAKuzN,QACnCkS,EAAe,GACVzkO,EAAI,EAAGA,EAAIwkO,EAAW7kO,OAAQK,IACnCykO,EAAap5N,KAAK,CACdf,GAAIk6N,EAAWxkO,GAAGsK,GAAIqW,IAAK6jN,EAAWxkO,GAAG2gB,IAAKyU,IAAKovM,EAAWxkO,GAAGo1B,IACjE69L,MAAOuR,EAAWxkO,GAAGizN,MAAOC,MAAOsR,EAAWxkO,GAAGkzN,MAAOoD,SAAUkO,EAAWxkO,GAAGs2N,SAChFC,SAAUiO,EAAWxkO,GAAGu2N,SAAUC,SAAUgO,EAAWxkO,GAAGw2N,SAC1DC,SAAU+N,EAAWxkO,GAAGy2N,WAGhC,OAAO,GAKXnG,EAAgBpxN,UAAUwlO,UAAY,WAClC1lO,KAAKiyN,iBAAkB,EACvB,IAAK,IAAIjxN,EAAI,EAAGA,EAAIhB,KAAKuyN,gBAAgB5xN,OAAQK,IAC7C,eAAOhB,KAAKuyN,gBAAgBvxN,IAC5BhB,KAAKqI,gBAETrI,KAAK2lO,iBACL3lO,KAAK4iB,KAAO,EACZ5iB,KAAKyyN,oBAAsB,GAC3BzyN,KAAKi8N,iBACLj8N,KAAK01N,cACL11N,KAAKwyN,YAAc,GACnBxyN,KAAK2yN,oBAAsB,GAC3B3yN,KAAK0yN,eAAiB,GACtB1yN,KAAK4yN,uBAAyB,GAC9B5yN,KAAKuyN,gBAAkB,GACvBvyN,KAAKkzN,UAAY,GACjBlzN,KAAKy/N,YAAc,GACnB,IAAImG,EAAe5lO,KAAKy4N,YAAYz4N,KAAKuzN,QACzCvzN,KAAKiL,cAAc,CAAEsoN,OAAQ,KAAM,GACnCvzN,KAAK41N,eACL51N,KAAK61N,yBACL71N,KAAKy6N,iBAAgB,EAAO,KAAMmL,GAClC5lO,KAAKiyN,iBAAkB,GAS3BX,EAAgBpxN,UAAU2lO,YAAc,SAAUv6N,GAC9C,IAGIw6N,EAHAziO,EAAQrD,KACZA,KAAKmyN,YAAc,EACnBnyN,KAAKw4N,mBAAqBx4N,KAAKy4N,YAAYz4N,KAAKuzN,QAEhD,IAAK,IAAIvyN,EAAI,EAAGA,EAAIhB,KAAKuyN,gBAAgB5xN,OAAQK,IACzChB,KAAKuyN,gBAAgBvxN,GAAGsK,KAAOA,IAC/B,eAAOtL,KAAKuyN,gBAAgBvxN,IAC5BhB,KAAKuyN,gBAAgB7lN,OAAO1L,EAAG,IAE/BhB,KAAKuzN,OAAOvyN,GAAGsK,KAAOA,IACtBw6N,EAAe9lO,KAAKuzN,OAAOvyN,GAC3BhB,KAAKuzN,OAAO7mN,OAAO1L,EAAG,GACtBhB,KAAKw4N,mBAAmB9rN,OAAO1L,EAAG,GAClChB,KAAKq1N,qBACLr1N,KAAK01N,eAGb11N,KAAK41N,eACD51N,KAAK6zN,oBACL7zN,KAAKkyN,gBAAiB,EACtBlyN,KAAKs1N,wBACLt1N,KAAKkyN,gBAAiB,GAE1BlyN,KAAKyyN,oBAAoBxjI,SAAQ,SAAU1tE,GACnCA,EAAKjW,KAAOA,GACZjI,EAAMovN,oBAAoB/lN,OAAOrJ,EAAMovN,oBAAoBzuN,QAAQud,GAAO,MAGlFvhB,KAAK61N,yBACL71N,KAAKy6N,iBAAgB,EAAO,KAAM,CAACqL,KAavCxU,EAAgBpxN,UAAU6lO,UAAY,SAAUz6N,EAAIqW,EAAKyU,GACrDp2B,KAAKwxN,iBAAkB,EACvBxxN,KAAKw4N,mBAAqBx4N,KAAKy4N,YAAYz4N,KAAKuzN,QAChD,IAAI6Q,EAAgBpkO,KAAK+4N,gBAAgBztN,GACzC,IAAKsS,MAAM+D,IAAgB,OAARA,IAAkB/D,MAAMwY,IAAgB,OAARA,GAAkBguM,EAArE,CAGIhuM,EAAM,EACNA,EAAM,EAEDA,EAAMp2B,KAAK0iB,UAChB0T,EAAMp2B,KAAK0iB,QAAU0hN,EAAcnQ,OAEvCj0N,KAAKwzN,oBAAoB4Q,EAAe,CAAEziN,IAAKA,EAAKyU,IAAKA,IACzD,IAAIkJ,EAAM1xB,SAASyd,eAAe/f,GAClCtL,KAAKk1N,YAAc51L,EACnBt/B,KAAKm+N,SAAWxsN,SAAS2tB,EAAI50B,aAAa,YAAa,IACvD1K,KAAK4kO,SAAWjzN,SAAS2tB,EAAI50B,aAAa,YAAa,IACvD1K,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAEoZ,IAAKA,EAAIxkB,WAAY+P,IAAKA,EAAI/P,aAAgB0tB,GAC5Et/B,KAAKq1N,qBACLr1N,KAAKm0N,iBAAiB70L,EAAK3d,EAAKyU,GAChCp2B,KAAKm1N,kBAAkB71L,EAAK8kM,GAC5BpkO,KAAKq0N,kBACLr0N,KAAK41N,eACL51N,KAAK61N,yBACL71N,KAAKk1N,YAAc,KACfl1N,KAAKu6N,eACLv6N,KAAKw6N,mBAETx6N,KAAKwxN,iBAAkB,EACvBxxN,KAAKy6N,iBAAgB,KAEzBnJ,EAAgBpxN,UAAUs5E,cAAgB,SAAUx8D,EAAOsiB,GACvD,IAAK,IAAIt+B,EAAI,EAAGA,EAAIvB,OAAO2V,KAAK4H,GAAOrc,OAAQK,IACvCvB,OAAO2V,KAAK4H,KACRA,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIo1B,KAC7BkJ,EAAI30B,aAAa,WAAYqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIo1B,IAAIxkB,YAE9DoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAI2gB,KAC7B2d,EAAI30B,aAAa,WAAYqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAI2gB,IAAI/P,YAE9DoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIizN,OAC7B30L,EAAI30B,aAAa,aAAcqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIizN,MAAMriN,YAElEoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIkzN,OAC7B50L,EAAI30B,aAAa,aAAcqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIkzN,MAAMtiN,YAElEoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIs2N,UAC7Bh4L,EAAI30B,aAAa,gBAAiBqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIs2N,SAAS1lN,YAExEoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIu2N,UAC7Bj4L,EAAI30B,aAAa,gBAAiBqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIu2N,SAAS3lN,YAExEoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIw2N,UAC7Bl4L,EAAI30B,aAAa,gBAAiBqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIw2N,SAAS5lN,YAExEoL,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIy2N,UAC7Bn4L,EAAI30B,aAAa,gBAAiBqS,EAAMvd,OAAO2V,KAAK4H,GAAOhc,IAAIy2N,SAAS7lN,cAcxF0/M,EAAgBpxN,UAAU8lO,YAAc,SAAU16N,EAAI2oN,EAAOC,GACzDl0N,KAAKw4N,mBAAqBx4N,KAAKy4N,YAAYz4N,KAAKuzN,QAChD,IAAI6Q,EAAgBpkO,KAAK+4N,gBAAgBztN,GACzCtL,KAAKyxN,cAAe,EACpB,IAAInyL,EAAM1xB,SAASyd,eAAe/f,GAC9B+oB,EAAO,CAAE3lB,MAAO,KAAMtL,QAASk8B,EAAK3wB,cAAc,GACtD3O,KAAKiI,QAAQ,cAAeosB,GAC5Br0B,KAAKwzN,oBAAoB4Q,EAAe,CAAEnQ,MAAOA,EAAOC,MAAOA,IAC/Dl0N,KAAK00N,gBAAgB0P,GACrBpkO,KAAKu8N,kBAAkB6H,GACvBpkO,KAAKk1N,YAAc51L,EACnBt/B,KAAKw5E,cAAc,CAAEx8D,MAAO,CAAEi3M,MAAOmQ,EAAcnQ,MAAMriN,WAAYsiN,MAAOkQ,EAAclQ,MAAMtiN,aAAgB0tB,GAChHt/B,KAAKo0N,kBAAkB90L,EAAK8kM,GAC5BpkO,KAAKm1N,kBAAkB71L,EAAK8kM,GAC5BpkO,KAAK41N,eACL51N,KAAKq0N,kBACLr0N,KAAKyxN,cAAe,EACpBzxN,KAAKiI,QAAQ,aAAcosB,GAC3Br0B,KAAKy6N,iBAAgB,IAOzBnJ,EAAgBpxN,UAAUsS,QAAU,WAEhC,OAAarN,OAAOoB,OAAQ,SAAUvG,KAAK83N,iBAC3C,gBAAY,CAAC93N,KAAKoD,SAAU,CAAC,oBAAqB,QAAS,eAAgB,cAC3EpD,KAAKoD,QAAQwH,gBAAgB,SAC7B,IAAK,IAAI5J,EAAI,EAAGA,EAAIhB,KAAK8yN,eAAenyN,OAAQK,IAC5ChB,KAAK8yN,eAAe9xN,GAAGwR,UAE3BxS,KAAK2lO,iBACL3lO,KAAKuyN,gBAAkB,KACvBvyN,KAAKuQ,eAAiB,KACtBvQ,KAAKk1N,YAAc,KACnBl1N,KAAK6jO,QAAU,KACf7jO,KAAKimO,cAAgB,KACrBjmO,KAAKqkO,kBAAoB,KACzBrkO,KAAKskO,iBAAmB,KACxBtkO,KAAKwyN,YAAc,KACnBxyN,KAAK0/N,WAAa,KAClB1/N,KAAK0yN,eAAiB,KACtB1yN,KAAK2yN,oBAAsB,KAC3B3yN,KAAK8yN,eAAiB,GACtB9yN,KAAKizN,SAAW,KAChBjzN,KAAKo5N,WAAa,KAClBp5N,KAAKs6N,SAAW,KAChBt6N,KAAK04N,WAAa,KAClB14N,KAAKi9N,gBAAkB,KACvBj9N,KAAKkmO,mBAAqB,KAC1BlmO,KAAKixN,aAAe,KACpBjxN,KAAKm3N,UAAY,KACjBn3N,KAAKq3D,MAAQ,KACbx0D,EAAO3C,UAAUsS,QAAQlP,KAAKtD,MAC9BA,KAAKqI,gBACLrI,KAAK0L,wBAET4lN,EAAgBpxN,UAAUylO,eAAiB,WACvC,MAAO3lO,KAAKoD,QAAQ4iD,kBAChB,eAAOhmD,KAAKoD,QAAQ4iD,mBACpBhmD,KAAKqI,iBAGbipN,EAAgBpxN,UAAU81N,aAAe,YACd,IAAnBh2N,KAAKyF,UACL,eAAS,CAACzF,KAAKoD,SAAU,SAGzB,gBAAY,CAACpD,KAAKoD,SAAU,UASpCkuN,EAAgBpxN,UAAUimO,yBAA2B,WACjDnmO,KAAK+1N,wBACL/1N,KAAKi8N,iBACLj8N,KAAKg8N,eACL,IAAK,IAAIh7N,EAAI,EAAGA,EAAIhB,KAAKoD,QAAQ0pD,iBAAiB,YAAYnsD,OAAQK,IAAK,CACvE,IAAIs+B,EAAMt/B,KAAKoD,QAAQ0pD,iBAAiB,YAAY9rD,GAChD81N,EAAa92N,KAAK+4N,gBAAgBz5L,EAAIh0B,IAC1CtL,KAAKo0N,kBAAkB90L,EAAKw3L,GAC5B92N,KAAKm0N,iBAAiB70L,EAAKw3L,EAAWn1M,IAAKm1M,EAAW1gM,OAG9Dk7L,EAAgBpxN,UAAUkmO,wBAA0B,SAAU7S,GAC1DvzN,KAAK0lO,YACL1lO,KAAKiL,cAAc,CAAEsoN,OAAQA,IAAU,GACvCvzN,KAAKozN,eACDpzN,KAAKq3D,OACLr3D,KAAKq3D,MAAMlyD,SAEfnF,KAAK2D,aACD3D,KAAK6zN,mBACL7zN,KAAKsV,UAELtV,KAAK4zN,eACL5zN,KAAK8zN,iBAGbxC,EAAgBpxN,UAAUmmO,iBAAmB,SAAU9S,GACnD,IAAIlwN,EAAQrD,MACP,eAAkBuzN,IAAWA,EAAO5yN,OAAS,GAC9CX,KAAKuxN,QAAU,EACfgC,EAAOtkI,SAAQ,SAAUsa,GAChBA,EAAMj+F,KACPjI,EAAMmwN,oBAAoBjqH,EAAO,CAAEj+F,GAAI,UAAYjI,EAAMkuN,QAAQ3/M,aACjEvO,EAAMkuN,QAAUluN,EAAMkuN,QAAU,OAKxCvxN,KAAKsmO,uBAAwB,GAWrChV,EAAgBpxN,UAAU+U,kBAAoB,SAAUC,EAASC,GAC7D,IAAI9R,EAAQrD,KACRkV,EAAQq+M,QAAUr+M,EAAQq+M,OAAO5yN,OAAS,GAAKuU,EAAQq+M,OAAO,aAAc,IAC5EvzN,KAAKqmO,iBAAiBnxN,EAAQq+M,QAElC,IAAK,IAAI1lN,EAAK,EAAGhK,EAAKpE,OAAO2V,KAAKF,GAAUrH,EAAKhK,EAAGlD,OAAQkN,IAAM,CAC9D,IAAIwH,EAAOxR,EAAGgK,GACd,OAAQwH,GACJ,IAAK,YACDrV,KAAKiL,cAAc,CAAExF,UAAWyP,EAAQzP,YAAa,GACrDzF,KAAKg2N,eACL,MACJ,IAAK,aACDh2N,KAAKiL,cAAc,CAAEgqN,WAAY//M,EAAQ+/M,aAAc,GACnDj1N,KAAK6zN,mBACL7zN,KAAKs1N,wBAET,MACJ,IAAK,gBACDt1N,KAAKiL,cAAc,CAAEuqN,cAAetgN,EAAQsgN,gBAAiB,GAC7Dx1N,KAAKyiO,aACL,MACJ,IAAK,gBAED,GADAziO,KAAKiL,cAAc,CAAEgwD,cAAe/lD,EAAQ+lD,gBAAiB,GACzDj7D,KAAKi7D,cACLj7D,KAAKo1N,WAAWp1N,KAAKuyN,iBACrBvyN,KAAK23N,mBAEJ,CAED,IADA,IAAIrD,EAAgBt0N,KAAKoD,QAAQ0pD,iBAAiB,yCACzC9rD,EAAI,EAAGA,EAAIszN,EAAc3zN,OAAQK,IAAK,CAC3C,IAAI23F,EAAmC,SAAtB,OAAQ3xE,KAAKhX,KAAmB,wBAA0B,YACvE5M,EAAUkxN,EAActzN,GAC5B,OAAamE,OAAO/B,EAASu1F,EAAW34F,KAAK43N,mBACnB,SAAtB,OAAQ5wM,KAAKhX,MACb,OAAa7K,OAAO/B,EAAS,aAAcpD,KAAK63N,wBAGxD73N,KAAK07N,oBAAoB17N,KAAKuyN,iBAElC,MACJ,IAAK,cACDvyN,KAAKiL,cAAc,CAAEkrN,YAAajhN,EAAQihN,cAAe,GACzDn2N,KAAKmmO,2BACLnmO,KAAKi6H,kBACL,MACJ,IAAK,kBACDj6H,KAAKiL,cAAc,CAAE23N,gBAAiB1tN,EAAQ0tN,kBAAmB,GACjE5iO,KAAKyiO,aACL,MACJ,IAAK,gBACDziO,KAAKiL,cAAc,CAAEsvN,cAAerlN,EAAQqlN,gBAAiB,GAC7Dv6N,KAAKw6N,mBACL,MACJ,IAAK,gBACGx6N,KAAK4zN,eACL5zN,KAAKiL,cAAc,CAAE2oN,cAAe1+M,EAAQ0+M,gBAAiB,GAC7D5zN,KAAK8zN,iBAGD9zN,KAAKq3D,OACL,eAAOr3D,KAAKq3D,OAGpB,MACJ,IAAK,eACDr3D,KAAKiL,cAAc,CAAE6vN,aAAc5lN,EAAQ4lN,eAAgB,GAC3D,MACJ,IAAK,UACI5lN,EAAQwN,UAAY1iB,KAAKsmO,uBAA0BpxN,EAAQq+M,OAAO,IAAMr+M,EAAQq+M,OAAO5yN,OAAS,GACjGX,KAAK2zN,kBAAmB,EACxB3zN,KAAKomO,wBAAwBlxN,EAAQq+M,QACrCvzN,KAAK2zN,kBAAmB,GAEjBz+M,EAAQq+M,OAAO,IAAMr+M,EAAQq+M,OAAO5yN,OAM3CX,KAAKsmO,uBAAwB,GAL7BtmO,KAAK2zN,kBAAmB,EACxB3zN,KAAKomO,wBAAwBpmO,KAAKuzN,QAClCvzN,KAAK2zN,kBAAmB,GAK5B,MACJ,IAAK,UACD3zN,KAAK2zN,kBAAmB,EACpBz+M,EAAQq+M,QACRvzN,KAAKomO,wBAAwBlxN,EAAQq+M,QAEzCvzN,KAAKiL,cAAc,CAAEyX,QAASxN,EAAQwN,UAAW,GACjD1iB,KAAKuyN,gBAAkB,GACvBvyN,KAAK20N,eAAiB30N,KAAK0iB,QAC3B1iB,KAAKqzN,oBACLrzN,KAAKuzN,OAAOtkI,SAAQ,SAAUsa,GAE1B,GADAlmG,EAAMqxN,gBAAgBnrH,GAClBlmG,EAAMsxN,eAAiBprH,EAAMnzE,KAAO/yB,EAAMsxN,eAAkBprH,EAAMnzE,IAAMmzE,EAAM0qH,MAAQ,CACtF,IAAIW,EAAWvxN,EAAMsxN,eAAiBprH,EAAM0qH,MAC5C5wN,EAAMmwN,oBAAoBjqH,EAAO,CAAEnzE,IAAKw+L,EAAW,EAAI,EAAIA,IAC3DvxN,EAAMwxN,gBAAgBjnN,SAASyd,eAAek+E,EAAMj+F,IAAKi+F,GAE7DlmG,EAAM+wN,kBAAkBxmN,SAASyd,eAAek+E,EAAMj+F,IAAKi+F,GAC3DlmG,EAAMkvN,gBAAgBlmN,KAAKuB,SAASyd,eAAek+E,EAAMj+F,KACzDjI,EAAM8wN,iBAAiBvmN,SAASyd,eAAek+E,EAAMj+F,IAAKi+F,EAAM5nF,IAAK4nF,EAAMnzE,KAC3E/yB,EAAM6xN,YAActnN,SAASyd,eAAek+E,EAAMj+F,IAClDjI,EAAM8xN,kBAAkBvnN,SAASyd,eAAek+E,EAAMj+F,IAAKi+F,GAC3DlmG,EAAM6xN,YAAc,QAExBl1N,KAAK41N,eACL51N,KAAK61N,yBACL71N,KAAK2zN,kBAAmB,EACxB3zN,KAAKi6H,kBACL,SAUhBq3F,EAAgBpxN,UAAU6U,eAAiB,WACvC,IAAI8sC,EAAY,CAAC,UACjB,OAAO7hD,KAAKgV,aAAa6sC,IAG7ByvK,EAAgBpxN,UAAUoyN,sBAAwB,SAAU3lF,GACxD,IAAIrvH,EAAO/W,OAAOsxC,aAAaC,QAAQ93C,KAAK8U,gBAAkB9U,KAAKoD,QAAQkI,IAC3E,IAAM,eAAkBgS,IAAmB,KAATA,IAAkB,eAAkBqvH,GAAgB,CAClF,IAAI50F,EAAW,eAAkB40F,GAAiCjwG,KAAKpiB,MAAMgD,GAA3BqvH,EAC9Cv3H,EAAO3V,OAAO2V,KAAK2iC,GACvB/3C,KAAKg4C,qBAAsB,EAC3B,IAAK,IAAInqC,EAAK,EAAGoqC,EAAS7iC,EAAMvH,EAAKoqC,EAAOt3C,OAAQkN,IAAM,CACtD,IAAItN,EAAM03C,EAAOpqC,GACmB,kBAAxB,eAAStN,EAAKP,OAAuB,eAAkB,eAASO,EAAKP,QACzEJ,MAAMqhB,QAAQ,eAAS1gB,EAAKP,QAAkB,WAARO,GAEtCP,KAAKumO,YAAYxuL,EAAQx3C,GAAMP,KAAKO,IAIhDP,KAAKg4C,qBAAsB,IAInCs5K,EAAgBpxN,UAAUqmO,YAAc,SAAUC,EAAcjT,GAU5D,IATA,IAAIxmF,EAAgBy5F,EAChBC,EAAU,SAAUzlO,GACpBkzI,EAAOmyF,iBAAiB9S,GACxB,IAAImT,EAAanT,EAAOn1M,QAAO,SAAUo7J,GAAO,OAAOA,EAAIluK,KAAOyhI,EAAc/rI,GAAGsK,MAAO,GACrF,eAAkBo7N,KACnB35F,EAAc/rI,GAAK,eAAO0lO,EAAY35F,EAAc/rI,GAAI,IAAI,KAGhEkzI,EAASl0I,KACJgB,EAAI,EAAGA,EAAI+rI,EAAcpsI,OAAQK,IACtCylO,EAAQzlO,IAUhBswN,EAAgBpxN,UAAU4U,cAAgB,WACtC,MAAO,mBAEX,GAAW,CACP,gBAAS,IACVw8M,EAAgBpxN,UAAW,qBAAiB,GAC/C,GAAW,CACP,gBAAS,IACVoxN,EAAgBpxN,UAAW,qBAAiB,GAC/C,GAAW,CACP,gBAAS,IACVoxN,EAAgBpxN,UAAW,oBAAgB,GAC9C,GAAW,CACP,gBAAS,IACVoxN,EAAgBpxN,UAAW,2BAAuB,GACrD,GAAW,CACP,gBAAS,IACVoxN,EAAgBpxN,UAAW,qBAAiB,GAC/C,GAAW,CACP,eAAS,IACVoxN,EAAgBpxN,UAAW,uBAAmB,GACjD,GAAW,CACP,eAAS,CAAC,EAAG,KACdoxN,EAAgBpxN,UAAW,mBAAe,GAC7C,GAAW,CACP,eAAS,IACVoxN,EAAgBpxN,UAAW,eAAW,GACzC,GAAW,CACP,gBAAS,IACVoxN,EAAgBpxN,UAAW,qBAAiB,GAC/C,GAAW,CACP,eAAS,OACVoxN,EAAgBpxN,UAAW,uBAAmB,GACjD,GAAW,CACP,eAAS,UACVoxN,EAAgBpxN,UAAW,cAAU,GACxC,GAAW,CACP,eAAS,qBACVoxN,EAAgBpxN,UAAW,kBAAc,GAC5C,GAAW,CACP,eAAW,GAAI,KAChBoxN,EAAgBpxN,UAAW,cAAU,GACxC,GAAW,CACP,eAAS,CAAC,kBACXoxN,EAAgBpxN,UAAW,wBAAoB,GAClD,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,cAAU,GACxC,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,iBAAa,GAC3C,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,YAAQ,GACtC,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,gBAAY,GAC1C,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,mBAAe,GAC7C,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,cAAU,GACxC,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,kBAAc,GAC5C,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,eAAW,GACzC,GAAW,CACP,kBACDoxN,EAAgBpxN,UAAW,iBAAa,GAC3CoxN,EAAkB,GAAW,CACzB,QACDA,GACIA,EAz2FyB,CA02FlC,QC19FSqV,GAAkB,eAAmB,CAC5Ch0I,OAAQ,CAAEC,OAAQ,CAAEC,QAAS,OAC7Bl/E,OAAQ,SAAUpP,GACd,IAAK,OAAW,CACZ,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAO,CAAE9rB,MAAO,eAAiB+rB,KAIlDE,QAAS,YACA,QAAajzF,KAAK4yF,QACnB5yF,KAAK4yF,UAGbM,QAAS,CACLC,OAAQ,WACJ,MAAO,eAIRyzI,GAAe,CACtB52N,KAAM,WACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUqzI,GAAa52N,KAAM22N,MAe9BE,GAAiB,eAAmB,CAC3ClzN,OAAQ,aAGRu/E,QAAS,CACLC,OAAQ,WACJ,MAAO,cAIR2zI,GAAc,CACrB92N,KAAM,UACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUuzI,GAAY92N,KAAM62N,MCrD7B,GAAa,CAAC,eAAgB,UAAW,gBAAiB,gBAAiB,eAAgB,gBAAiB,kBAAmB,cAAe,UAAW,kBAAmB,sBAAuB,oBAAqB,YAAa,SAAU,aAAc,SAAU,mBAAoB,gBAAiB,SAAU,UAAW,YAAa,OAAQ,YAAa,WAAY,SAAU,cAAe,cACxY,GAAa,GACb,GAAW,eAAS,CAAEh+J,MAAO,KAC7B,GAAQ,GAAS,GAAI,GAAQ,GAAS,GAAI,GAAYppE,OAAO2V,KAAK,IAC7E,GAAU/I,KAAK,eAAgB,qBAC/B,IAAK,IAAI,GAAK,EAAG,GAAe,GAAY,GAAK,GAAa1L,OAAQ,KAAM,CACxE,IAAI,GAAU,GAAa,IAC3B,GAAU0L,KAAK,UAAY,IAQxB,IAAI06N,GAA2B,eAAmB,CACrD/2N,KAAM,2BACNinF,OAAQ,CAAC,QACTpuB,MAAO,GACP+tB,MAAO,GACPM,MAAO,GACPC,QAAS,WAAc,MAAO,CAAEvE,OAAQ5yF,KAAK4yF,SAC7Ct1E,KAAM,WACF,MAAO,CACH85E,aAAc,IAAI,GAAgB,IAClCC,SAAU,GACVC,OAAQ,GACRC,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,WAAY,WACzBC,cAAe,GACf5G,QAAS,OACT6G,mBAAoB,KAG5BC,QAAS,WACL53F,KAAK83F,iBACL93F,KAAKo3F,aAAaW,eAAiB/3F,KAAKo3F,aAAansF,cACrDjL,KAAKo3F,aAAansF,cAAgBjL,KAAKiL,cACvCjL,KAAKo3F,aAAa/uF,cAAgBrI,KAAKqI,cACvCrI,KAAKizF,QAAUjzF,KAAKizF,SAExBt/E,OAAQ,SAAUpP,GACd,IAAIuuF,EAAK,OAAiBvuF,EAAL,OACjBwuF,EAAQ,KAIZ,OAHK,eAAkB/yF,KAAKgzF,OAAOH,WAC/BE,EAAS,OAAoC/yF,KAAKgzF,OAAOH,QAApC7yF,KAAKgzF,OAAOH,WAE9BC,EAAE,MAAOC,IAEpBG,QAAS,CACL7qF,cAAe,SAAU2vF,GAIrB,GAHKA,IACDA,EAAgBv4F,OAAO2V,KAAKpV,KAAK23F,oBAAsB,KAEvDK,EAAcr3F,QAAUX,KAAK23F,mBAC7B,IAAK,IAAI9pF,EAAK,EAAGoqF,EAAkBD,EAAenqF,EAAKoqF,EAAgBt3F,OAAQkN,IAAM,CACjF,IAAIqqF,EAAWD,EAAgBpqF,GAC3BsqF,EAAoBn4F,KAAK23F,mBAAmBO,GAChD,GAAIC,GAAqBA,EAAkBx3F,OAAQ,CAC/C,IAAK,IAAIkD,EAAK,EAAGu0F,EAAsBD,EAAmBt0F,EAAKu0F,EAAoBz3F,OAAQkD,IAAM,CAC7F,IAAIy7B,EAAM84D,EAAoBv0F,GAC1B2O,EAAU,eAAS,mBAAoB8sB,GACvC9sB,GACA8sB,EAAI+4D,QAAQC,WAEZh5D,EAAIx0B,YACJw0B,EAAIx0B,UAAY,WAGjB9K,KAAK23F,mBAAmBO,MAK/CjtF,cAAe,SAAUoK,EAAMkjF,GAC3B,IAAIl1F,EAAQrD,KACRA,KAAK8wF,SACL9wF,KAAKs3F,OAAUt3F,KAAKs3F,OAAyCt3F,KAAKs3F,OAArCt3F,KAAKo3F,aAAaoB,aAE/Cx4F,KAAKo3F,cAAgBp3F,KAAKo3F,aAAaW,gBACvC/3F,KAAKo3F,aAAaW,eAAe1iF,EAAMkjF,GAEvCljF,GAAQrV,KAAKs3F,QAAUt3F,KAAKs3F,OAAO32F,QACnClB,OAAO2V,KAAKC,GAAMxO,KAAI,SAAUtG,GAC5B8C,EAAMi0F,OAAOzwF,KAAI,SAAUi/E,GAClBvlF,IAAQulF,GAAY,cAAcxtC,KAAK/3C,KACpC8C,EAAMytF,OACNztF,EAAM+zF,aAAaqB,YAAYC,MAAM,UAAYn4F,EAAK8U,EAAK9U,KAG3D8C,EAAMq1F,MAAM,UAAYn4F,EAAK8U,EAAK9U,IAClC8C,EAAMq1F,MAAM,eAAgBrjF,EAAK9U,aAOzDqyF,OAAQ,WACJ5yF,KAAKizF,WAETmyI,SAAU,SAAU77H,GAChB,OAAOvpG,KAAKo3F,aAAaguI,SAAS77H,IAEtCw8H,UAAW,SAAUz6N,EAAIqW,EAAKyU,GAC1B,OAAOp2B,KAAKo3F,aAAa2uI,UAAUz6N,EAAIqW,EAAKyU,IAEhD9gB,QAAS,WACL,OAAOtV,KAAKo3F,aAAa9hF,WAE7BowN,UAAW,WACP,OAAO1lO,KAAKo3F,aAAasuI,aAE7BG,YAAa,SAAUv6N,GACnB,OAAOtL,KAAKo3F,aAAayuI,YAAYv6N,IAEzC06N,YAAa,SAAU16N,EAAI2oN,EAAOC,GAC9B,OAAOl0N,KAAKo3F,aAAa4uI,YAAY16N,EAAI2oN,EAAOC,IAEpDqR,UAAW,WACP,OAAOvlO,KAAKo3F,aAAamuI,aAE7BF,YAAa,SAAU97H,GACnB,OAAOvpG,KAAKo3F,aAAaiuI,YAAY97H,OAItCy9H,GAAwB,CAC/Bh3N,KAAM,sBACNqjF,QAAS,SAAUC,GACfA,EAAIC,UAAUyzI,GAAsBh3N,KAAM+2N,IAC1CzzI,EAAIC,UAAUuzI,GAAY92N,KAAM62N,IAChCvzI,EAAIC,UAAUqzI,GAAa52N,KAAM22N,M,aCzIrC,GAAS,WAAa,IAAIjwD,EAAI12K,KAAS22K,EAAGD,EAAIE,eAAmBp1J,EAAGk1J,EAAIG,MAAMr1J,IAAIm1J,EAAG,OAAOn1J,EAAG,MAAM,CAACk2J,YAAY,CAAC,QAAU,SAAS1oK,MAAM,CAAC,GAAK,wBAAwB,CAACwS,EAAG,YAAY,CAACy1J,IAAI,eAAeE,YAAY,+BAA+BO,YAAY,CAAC,QAAU,SAAS1oK,MAAM,CAAC,eAAiB0nK,EAAIl4I,eAAe,MAAQk4I,EAAIx9H,MAAM,MAAQw9H,EAAI1mJ,MAAM,qBAAuB,OAAO,QAAU0mJ,EAAIrmK,QAAQ,aAAeqmK,EAAIj0I,aAAa,aAAei0I,EAAIh0I,aAAa,UAAYg0I,EAAIh5I,UAAU,SAAWg5I,EAAIh3H,WAAW,CAACl+B,EAAG,sBAAsB,CAACA,EAAG,WAAW,CAACxS,MAAM,CAAC,WAAa0nK,EAAIuwD,UAAU,KAAO,SAAS,MAAQ,OAAO,MAAQ,QAAQ,KAAO,QAAQ,MAAQ,IAAI,OAASvwD,EAAIhgK,UAAU8K,EAAG,WAAW,CAACxS,MAAM,CAAC,WAAa0nK,EAAIwwD,QAAQ,KAAO,SAAS,MAAQ,OAAO,MAAQ,QAAQ,KAAO,MAAM,MAAQ,IAAI,OAASxwD,EAAIhgK,WAAW,IAAI,IAAI,IACp1B,GAAkB,G,8ECYtB,0BAEA,mCACA,kBACA,yEAEA,IACA,gBACA,OACA,SACA,+BACA,iDACA,qDACA,oBACA,UACA,cACA,qBACA,WACA,yBACA,+HAGA,gBACA,8HAEA,WACA,kBAEA,aACA,CACA,yBACA,yBACA,oBACA,iBACA,YACA,8HACA,+HAIA,OACA,CACA,UACA,CACA,sEAMA,SACA,iDAEA,mBAEA,yCCpEoW,MCQhW,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,65CCsEf,0BACA,qBAEA,4BACA,qBAEA,gBACA,OACA,YACA,mBACA,oBACA,wBACA,UAEA,kBACA,gBACA,iBAEA,wCACA,kBACA,gBACA,uBACA,qBAEA,mBACA,oBAEA,sBACA,qBAEA,yBACA,qBAEA,uBACA,qBAEA,0BACA,qBAEA,wBACA,qBAEA,kBACA,OACA,aAGA,kBACA,OACA,aAGA,kBACA,OACA,eAKA,YACA,eACA,UACA,YACA,WACA,WACA,mBACA,cACA,YACA,YACA,cAEA,mBACA,wBACA,oCACA,mCAEA,SACA,sBACA,SAQA,OAPA,uBACA,WACA,cACA,SAEA,gBAEA,GAEA,iDACA,kEACA,yBACA,mBAEA,kEAMA,mCACA,sBACA,kEAIA,sCACA,UACA,gBAEA,uCACA,kFACA,SACA,KACA,mIACA,qBAEA,+GACA,mBAEA,2EACA,uEAEA,oDACA,kCACA,yDACA,qDACA,mBACA,iBACA,MACA,8IACA,SAEA,qDACA,OACA,iBACA,MACA,gKACA,SAKA,OAFA,oCAEA,CACA,yBACA,4BACA,wCACA,QACA,oBAGA,oCACA,cAEA,IAqBA,EArBA,oDACA,kCACA,yDACA,qDACA,MACA,iBACA,MACA,2IACA,SAKA,OAFA,mBAEA,CACA,yBACA,4BACA,wCACA,QACA,oBAEA,KACA,iDACA,iFACA,GACA,YACA,kBACA,mCACA,eACA,cACA,YACA,iBAEA,WACA,kCAEA,EAFA,KAEA,WAoBA,EApBA,2BAEA,gDACA,qFAEA,KACA,mCACA,kBACA,CACA,OACA,YACA,kBACA,iBACA,iCACA,cACA,YACA,iBAEA,YAlBA,+BAoBA,8BACA,gCACA,YAEA,oBACA,uCACA,cACA,+FACA,8FAEA,iBACA,yGACA,gFAEA,SASA,qDAKA,kCAOA,mDAOA,gDAEA,uBAGA,kCAEA,mDACA,8JACA,IASA,EATA,yDAEA,kCACA,OACA,QACA,oBAEA,KAEA,WA8CA,IA9CA,2BACA,2BACA,IASA,EATA,uDAEA,kCACA,OACA,OACA,oBAEA,KAEA,sCACA,2BAEA,0CACA,sCAEA,GACA,WACA,kBACA,uGACA,sBACA,wCAEA,uEACA,qEACA,gCACA,mCAGA,wBACA,0DACA,yBAEA,gDACA,oBACA,oBACA,wDACA,uBAEA,uCACA,oBA9BA,+BAiCA,iCA5CA,+BA8CA,8BAEA,sDACA,kDACA,cAEA,4FACA,2EAEA,cAEA,wFACA,4EAEA,SAIA,uCACA,0CACA,kBACA,qBACA,2BCza6U,MCQzU,I,UAAY,eACd,GACA,EACA0gK,GACA,EACA,KACA,WACA,OAIa,gB,qHCjBJ+vD,EAA0B,eAAmB,CACpDx0I,OAAQ,CAAEC,OAAQ,CAAEC,Q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","file":"js/chunk-539e21b5.4413ec28.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./refinitiv.vue?vue&type=style&index=0&id=6b50078e&prod&lang=css\"","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * <div id=\"tooltip\">Show Tooltip</div>\n * ```\n * ```typescript\n * <script>\n * var tooltipObj = new Tooltip({ content: 'Tooltip text' });\n * tooltipObj.appendTo(\"#tooltip\");\n * </script>\n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset);\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Property, ChildProperty, Complex, Collection, getValue, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { StackValues, RectOption, appendChildElement, appendClipElement } from '../../common/utils/helper';\nimport { firstToLowerCase, CircleOption, getColorByValue } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Border, Font, Margin, Animation, EmptyPointSettings, CornerRadius, Connector, DragSettings } from '../../common/model/base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Offset } from '../../common/model/base';\nimport { seriesRender } from '../../common/model/constants';\nimport { getVisiblePoints, setRange } from '../../common/utils/helper';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Configures the data label in the series.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], DataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"format\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Hide')\n ], DataLabelSettings.prototype, \"labelIntersectAction\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Configures the marker in the series.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"isFilled\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(true)\n ], MarkerSettings.prototype, \"allowHighlight\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * Configures the pareto in the series.\n */\nvar ParetoOptions = /** @class */ (function (_super) {\n __extends(ParetoOptions, _super);\n function ParetoOptions() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ParetoOptions.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], ParetoOptions.prototype, \"width\", void 0);\n __decorate([\n Property('0')\n ], ParetoOptions.prototype, \"dashArray\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], ParetoOptions.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], ParetoOptions.prototype, \"showAxis\", void 0);\n return ParetoOptions;\n}(ChildProperty));\nexport { ParetoOptions };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar Points = /** @class */ (function () {\n function Points() {\n /** point symbol location. */\n this.symbolLocations = null;\n /** point region. */\n this.regions = null;\n /** point percentage value. */\n this.percentage = null;\n /** point region data. */\n this.regionData = null;\n /** To know the point is selected. */\n this.isSelect = false;\n /** point marker. */\n this.marker = {\n visible: false\n };\n /**\n * To identify point y value with in the range.\n *\n * @private\n */\n this.isPointInRange = true;\n /** vertical error value for the point. */\n this.verticalError = null;\n /** vertical negative error value for the point. */\n this.verticalNegativeError = null;\n /** horizontal error value for the point. */\n this.horizontalError = null;\n /** horizontal negative error value for the point. */\n this.horizontalNegativeError = null;\n /** vertical positive error value for the point. */\n this.verticalPositiveError = null;\n /** horizontal positive error value for the point. */\n this.horizontalPositiveError = null;\n }\n return Points;\n}());\nexport { Points };\n/**\n * Defines the behavior of the Trendlines\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n Trendline.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.points = series.points;\n }\n chart.trendLineModule.initDataSource(this);\n chart.visibleSeriesCount++;\n };\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * Configures Error bar in series.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * Error bar settings\n *\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n __decorate([\n Property('')\n ], ErrorBarSettings.prototype, \"errorBarColorMapping\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Defines the common behavior of Series and Technical Indicators\n */\nvar SeriesBase = /** @class */ (function (_super) {\n __extends(SeriesBase, _super);\n function SeriesBase() {\n /**\n * The DataSource field that contains the x value.\n * It is applicable for series and technical indicators\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rangeColorPoints = [];\n _this.isAdvancedColor = undefined;\n /** @private */\n _this.currentViewData = [];\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.seriesType = 'XY';\n _this.isRectTypeSeries = false;\n return _this;\n }\n /**\n * Process data for the series.\n *\n * @hidden\n */\n SeriesBase.prototype.processJsonData = function () {\n var i = 0;\n var point = new Points();\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n if (this instanceof Series) {\n if ((this.type === 'Waterfall' || this.type === 'Histogram')) {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.currentViewData, null, true), this);\n }\n if (this.category === 'Pareto') {\n if (this.type === 'Line') {\n this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.currentViewData, this);\n }\n }\n this.isRectTypeSeries = this.type.indexOf('Column') > -1 || this.type.indexOf('Bar') > -1\n || this.type.indexOf('Histogram') > -1;\n }\n var len = (this.currentViewData || []).length;\n this.points = [];\n this.xMin = Infinity;\n this.xMax = -Infinity;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n this.sizeMax = -Infinity;\n this.getSeriesType();\n if (this.xAxis.valueType === 'Category') {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n this.pushCategoryData(point, i, point.x);\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n this.rangeColorsInterior(point);\n i++;\n }\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n if (!isNullOrUndefined(point.x) && point.x !== '') {\n point.x = new Date(DataUtil.parse.parseJson({ val: point.x }).val);\n if (this.xAxis.valueType === 'DateTime') {\n point.xValue = Date.parse(point.x.toString());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.chart.isBlazor ? this.pushCategoryData(point, i, Date.parse(point.x.toString()).toString()) :\n this.pushCategoryData(point, i, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n //this.rangeColorsInterior(point);\n }\n else {\n point.visible = false;\n }\n i++;\n }\n }\n else {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n point.xValue = point.x;\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n if (this instanceof Series && !(this.chart.stockChart && this.xAxis.valueType === 'DateTimeCategory')) {\n if (this.type.indexOf('Spline') > -1 || (this.drawType.indexOf('Spline') > -1 && this.chart.chartAreaType === 'PolarRadar')) {\n var isArea = (this.type.indexOf('Area') > -1 || this.drawType.indexOf('Area') > -1);\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n else if (this.type.indexOf('Histogram') > -1 && (this.xAxis.maximum || this.xAxis.minimum)) {\n this.chart['histogramSeriesModule'].calculateBinValues(this);\n }\n if (this.type.indexOf('Histogram') > -1 && this.points.length === 1) {\n this.xMin = this.xMin - this.histogramValues.binWidth;\n this.xMax = this.xMax + this.histogramValues.binWidth;\n }\n }\n };\n SeriesBase.prototype.rangeColorsInterior = function (point) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.chart.visibleSeries.length === 1 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n if (!this.rangeColorPoints[point.interior]) {\n this.rangeColorPoints[point.interior] = [];\n }\n else if (this.rangeColorPoints[point.interior] !== undefined) {\n this.rangeColorPoints[point.interior].push(point);\n }\n }\n };\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\n point.series = this;\n // To find the min, max for the axis range.\n this.xMin = Math.min(this.xMin, point.xValue);\n this.xMax = Math.max(this.xMax, point.xValue);\n this.xData.push(point.xValue);\n };\n /** @private */\n SeriesBase.prototype.dataPoint = function (i, textMappingName, xName) {\n this.points[i] = new Points();\n var point = this.points[i];\n var currentViewData = this.currentViewData[i];\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData);\n point.high = getObjectValueByMappingString(this.high, currentViewData);\n point.low = getObjectValueByMappingString(this.low, currentViewData);\n point.open = getObjectValueByMappingString(this.open, currentViewData);\n point.close = getObjectValueByMappingString(this.close, currentViewData);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData);\n if (this instanceof Series) {\n if (this.errorBar.visible) {\n point.errorBarColor = getObjectValueByMappingString(this.errorBar.errorBarColorMapping, currentViewData);\n point.verticalError = typeof this.errorBar.verticalError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalError, currentViewData) : this.errorBar.verticalError;\n point.horizontalError = typeof this.errorBar.horizontalError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalError, currentViewData) : this.errorBar.horizontalError;\n point.verticalNegativeError = typeof this.errorBar.verticalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalNegativeError, currentViewData) : this.errorBar.verticalNegativeError;\n point.verticalPositiveError = typeof this.errorBar.verticalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalPositiveError, currentViewData) : this.errorBar.verticalPositiveError;\n point.horizontalNegativeError = typeof this.errorBar.horizontalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalNegativeError, currentViewData) : this.errorBar.horizontalNegativeError;\n point.horizontalPositiveError = typeof this.errorBar.horizontalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalPositiveError, currentViewData) : this.errorBar.horizontalPositiveError;\n }\n point.y = getObjectValueByMappingString(this.yName, currentViewData);\n point.size = getObjectValueByMappingString(this.size, currentViewData);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData);\n if (this.isAdvancedColorSupported()) {\n this.rangeColorName = this.colorName.length > 0 ? this.colorName : this.yName;\n point.colorValue = getObjectValueByMappingString(this.rangeColorName, currentViewData);\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (isNullOrUndefined(this.isAdvancedColor)) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n this.isAdvancedColor = true;\n }\n else {\n this.isAdvancedColor = false;\n }\n }\n return this.isAdvancedColor;\n };\n SeriesBase.prototype.getPointFillColor = function (pointFill, value) {\n var color = pointFill;\n if (value && this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0) {\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var rangeMap = _a[_i];\n if (value >= rangeMap.start && value <= rangeMap.end) {\n if (rangeMap.colors.length > 1) {\n color = getColorByValue(rangeMap, value);\n }\n else {\n color = rangeMap.colors[0];\n }\n }\n }\n }\n return color;\n };\n SeriesBase.prototype.getObjectValue = function (mappingName, data) {\n return data[mappingName];\n };\n /**\n * To set empty point value based on empty point mode\n *\n * @private\n */\n SeriesBase.prototype.setEmptyPoint = function (point, i) {\n if (!this.findVisibility(point)) {\n point.visible = true;\n return null;\n }\n point.isEmpty = true;\n var mode = this instanceof Series && point.isPointInRange ? this.emptyPointSettings.mode : 'Drop';\n switch (mode) {\n case 'Zero':\n point.visible = true;\n if (this instanceof Series && this.seriesType.indexOf('HighLow') > -1) {\n point.high = point.low = 0;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = point.close = 0;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = 0;\n }\n break;\n case 'Average':\n if (this instanceof Series) {\n if (this.seriesType.indexOf('HighLow') > -1) {\n point.high = (isNullOrUndefined(point.high) || isNaN(+point.high)) ? this.getAverage(this.high, i) : point.high;\n point.low = (isNullOrUndefined(point.low) || isNaN(+point.low)) ? this.getAverage(this.low, i) : point.low;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = (isNullOrUndefined(point.open) || isNaN(+point.open)) ? this.getAverage(this.open, i) : point.open;\n point.close = (isNullOrUndefined(point.close) || isNaN(+point.close)) ? this.getAverage(this.close, i) :\n point.close;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = this.getAverage(this.yName, i);\n }\n }\n point.visible = true;\n break;\n case 'Drop':\n case 'Gap':\n this.yData[i] = null;\n point.visible = false;\n break;\n }\n };\n SeriesBase.prototype.findVisibility = function (point) {\n var type = this instanceof Series ? this.seriesType : 'HighLowOpenClose';\n var yValues;\n var yAxisMin = this.yAxis.minimum;\n var yAxisMax = this.yAxis.maximum;\n switch (type) {\n case 'XY':\n if (this.chart.chartAreaType === 'PolarRadar' && ((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax))) {\n point.isPointInRange = false;\n return true;\n }\n this.setXYMinMax(point.yValue);\n this.yData.push(point.yValue);\n if (this instanceof Series && this.type === 'Bubble') {\n this.sizeMax = Math.max(this.sizeMax, (isNullOrUndefined(point.size) || isNaN(+point.size)) ? this.sizeMax\n : point.size);\n }\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.y) || isNaN(+point.y));\n case 'HighLow':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'HighLowOpenClose':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.open) || isNaN(+point.open)) || (isNullOrUndefined(point.close) || isNaN(+point.close))\n || (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'BoxPlot':\n yValues = (point.y || [null]).filter(function (value) {\n return !isNullOrUndefined(value) && !isNaN(value);\n }).sort(function (a, b) {\n return a - b;\n });\n point.y = yValues;\n this.yMin = Math.min(this.yMin, Math.min.apply(Math, yValues));\n this.yMax = Math.max(this.yMax, Math.max.apply(Math, yValues));\n return !yValues.length;\n }\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setXYMinMax = function (yValue) {\n var isLogAxis = (this.yAxis.valueType === 'Logarithmic' || this.xAxis.valueType === 'Logarithmic');\n var isNegativeValue = yValue < 0 || this.yAxis.rangePadding === 'None';\n var seriesMinY;\n if (this.isRectTypeSeries && !setRange(this.yAxis)) {\n seriesMinY = ((isLogAxis ? (yValue) : isNegativeValue ? yValue : 0));\n }\n else {\n seriesMinY = yValue;\n }\n this.yMin = isLogAxis ?\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY) || (seriesMinY === 0) ||\n (seriesMinY.toString() === '0') || (seriesMinY.toString() === '')) ? this.yMin : seriesMinY) :\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY)) ? this.yMin : seriesMinY);\n this.yMax = Math.max(this.yMax, (isNullOrUndefined(yValue) || isNaN(yValue)) ? this.yMax : yValue);\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setHiloMinMax = function (high, low) {\n this.yMin = Math.min(this.yMin, Math.min((isNullOrUndefined(low) || isNaN(low)) ? this.yMin : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMin : high));\n this.yMax = Math.max(this.yMax, Math.max((isNullOrUndefined(low) || isNaN(low)) ? this.yMax : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMax : high));\n };\n /**\n * Finds the type of the series\n *\n * @private\n */\n SeriesBase.prototype.getSeriesType = function () {\n var type;\n if (this instanceof Series) {\n var seriesType = this.chart.chartAreaType === 'PolarRadar' ? this.drawType : this.type;\n if (seriesType) {\n switch (seriesType) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n type = 'HighLow';\n break;\n case 'HiloOpenClose':\n case 'Candle':\n type = 'HighLowOpenClose';\n break;\n case 'BoxAndWhisker':\n type = 'BoxPlot';\n break;\n default:\n type = 'XY';\n }\n }\n }\n this.seriesType = type;\n };\n /** @private */\n SeriesBase.prototype.pushCategoryData = function (point, index, pointX) {\n if (!this.chart.tooltip.shared) {\n if (!this.visible) {\n return null;\n }\n }\n if (!this.xAxis.isIndexed) {\n if (this.xAxis.indexLabels[pointX] === undefined) {\n this.xAxis.indexLabels[pointX] = this.xAxis.labels.length;\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.indexLabels[pointX];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.xAxis.labels[index] ? this.xAxis.labels[index] += ', ' + pointX :\n this.xAxis.labels.push(pointX);\n point.xValue = index;\n }\n };\n /**\n * To find average of given property\n */\n SeriesBase.prototype.getAverage = function (member, i, data) {\n if (data === void 0) { data = this.currentViewData; }\n var previous = data[i - 1] ? (data[i - 1][member] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][member] || 0) : 0;\n return (previous + next) / 2;\n };\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.refreshDataManager = function (chart) {\n var _this = this;\n this.chart = chart;\n var dataSource;\n var isAngular = 'isAngular';\n if (chart[isAngular]) {\n dataSource = Object.keys(this.dataSource).length ? this.dataSource : chart.dataSource;\n }\n else {\n dataSource = this.dataSource || chart.dataSource;\n }\n if (!(dataSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dataSource, count: dataSource.length }, false);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); });\n };\n SeriesBase.prototype.dataManagerSuccess = function (e, isRemoteData) {\n if (isRemoteData === void 0) { isRemoteData = true; }\n this.currentViewData = e.count ? e.result : [];\n this.chart.allowServerDataBinding = false;\n if (this instanceof Series) {\n if (this.chart.stockChart) {\n this.chart.stockChart.series[this.index].localData = this.currentViewData;\n }\n var argsData = {\n name: seriesRender, series: this, data: this.currentViewData, fill: this.interior\n };\n this.chart.trigger(seriesRender, argsData);\n this.interior = argsData.fill;\n this.currentViewData = argsData.data;\n }\n if (this.chart.stockChart && !(this instanceof Series)) {\n this.currentViewData = this.chart.stockChart.findCurrentData(this.chart.stockChart.series[0].localData, this.chart.stockChart.series[0].xName);\n }\n this.processJsonData();\n this.recordsCount = e.count;\n this.refreshChart(isRemoteData);\n this.currentViewData = null;\n };\n SeriesBase.prototype.refreshChart = function (isRemoteData) {\n var chart = this.chart;\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 1 : 0;\n }\n chart.refreshTechnicalIndicator(this);\n if (this instanceof Series && this.category !== 'TrendLine') {\n for (var _i = 0, _a = this.trendlines; _i < _a.length; _i++) {\n var trendline = _a[_i];\n trendline.setDataSource(this, chart);\n }\n }\n //if (chart.visibleSeries.length === (chart.visibleSeriesCount - chart.indicators.length)) {\n if (chart.visibleSeries.length === (chart.visibleSeriesCount)) {\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart.isBlazor ? {} : chart });\n if (this.chart.stockChart && this.chart.stockChart.initialRender) {\n this.chart.stockChart.initialRender = false;\n this.chart.stockChart.stockChartDataManagerSuccess();\n }\n }\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 0 : 1;\n }\n };\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"colorName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"high\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"low\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"open\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"close\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"volume\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(true)\n ], SeriesBase.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"yAxisName\", void 0);\n __decorate([\n Complex(null, Animation)\n ], SeriesBase.prototype, \"animation\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SeriesBase.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], SeriesBase.prototype, \"query\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], SeriesBase.prototype, \"segments\", void 0);\n __decorate([\n Property('X')\n ], SeriesBase.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property(false)\n ], SeriesBase.prototype, \"enableComplexProperty\", void 0);\n return SeriesBase;\n}(ChildProperty));\nexport { SeriesBase };\n/**\n * Configures the series in charts.\n *\n * @public\n */\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Series(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n _this.visibleSeriesCount = 0;\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.isRectSeries = false;\n /** @private */\n _this.drawPoints = [];\n /** @private */\n _this.lowDrawPoints = [];\n /** @private */\n _this.delayedAnimation = false;\n /** @private */\n _this.rangeColorName = _this.colorName.length > 0 ? _this.colorName : _this.yName;\n return _this;\n }\n /**\n * Refresh the axis label.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.refreshAxisLabel = function () {\n if (this.xAxis.valueType !== 'Category') {\n return null;\n }\n this.xAxis.labels = [];\n this.xAxis.indexLabels = {};\n for (var _i = 0, _a = this.xAxis.series; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.visible && item.category !== 'TrendLine') {\n item.xMin = Infinity;\n item.xMax = -Infinity;\n for (var _b = 0, _c = item.points; _b < _c.length; _b++) {\n var point = _c[_b];\n item.pushCategoryData(point, point.index, point.x);\n item.xMin = Math.min(item.xMin, point.xValue);\n item.xMax = Math.max(item.xMax, point.xValue);\n }\n }\n }\n };\n /**\n * To get the series collection.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.findSeriesCollection = function (column, row, isStack) {\n var seriesCollection = [];\n for (var _i = 0, _a = row.axes; _i < _a.length; _i++) {\n var rowAxis = _a[_i];\n for (var _b = 0, _c = rowAxis.series; _b < _c.length; _b++) {\n var rowSeries = _c[_b];\n for (var _d = 0, _e = column.axes; _d < _e.length; _d++) {\n var axis = _e[_d];\n for (var _f = 0, _g = axis.series; _f < _g.length; _f++) {\n var series = _g[_f];\n if (series === rowSeries && series.visible && this.rectSeriesInChart(series, isStack)) {\n seriesCollection.push(series);\n }\n }\n }\n }\n }\n return seriesCollection;\n };\n /**\n * To get the column type series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.rectSeriesInChart = function (series, isStack) {\n var type = (series.type).toLowerCase();\n return (type.indexOf('column') !== -1 || type.indexOf('bar') !== -1 || type.indexOf('histogram') !== -1 ||\n type.indexOf('hiloopenclose') !== -1 || type.indexOf('candle') !== -1 || type.indexOf('pareto') !== -1 ||\n type.indexOf('hilo') !== -1 || series.drawType.indexOf('Column') !== -1 ||\n type.indexOf('waterfall') !== -1 || type.indexOf('boxandwhisker') !== -1 || isStack);\n };\n /**\n * To calculate the stacked values.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.calculateStackedValue = function (isStacking100, chart) {\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.calculateStackingValues(this.findSeriesCollection(columnItem, item, true), isStacking100);\n }\n }\n };\n Series.prototype.calculateStackingValues = function (seriesCollection, isStacking100) {\n var startValues;\n var endValues;\n var yValues = [];\n var lastPositive = [];\n var lastNegative = [];\n var stackingGroup;\n var lastValue;\n var value;\n var frequencies = [];\n if (isStacking100) {\n frequencies = this.findFrequencies(seriesCollection);\n }\n var groupingValues = [];\n var visiblePoints = [];\n for (var i = 0; i < seriesCollection.length; i++) {\n var series = seriesCollection[i];\n if (!groupingValues[series.stackingGroup]) {\n groupingValues[series.stackingGroup] = [];\n groupingValues[series.stackingGroup].push(series);\n }\n else if (groupingValues[series.stackingGroup] !== undefined) {\n groupingValues[series.stackingGroup].push(series);\n }\n }\n var keys = Object.keys(groupingValues);\n for (var k = 0; k < keys.length; k++) {\n var stackingSeies = [];\n var stackedValues = [];\n var seriesCollection_2 = groupingValues[keys[k]];\n for (var _i = 0, seriesCollection_1 = seriesCollection_2; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Stacking') !== -1 || (series.drawType.indexOf('Stacking') !== -1 &&\n (series.chart.chartAreaType === 'PolarRadar'))) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!lastPositive[stackingGroup]) {\n lastPositive[stackingGroup] = [];\n lastNegative[stackingGroup] = [];\n }\n yValues = series.yData;\n startValues = [];\n endValues = [];\n stackingSeies.push(series);\n visiblePoints = getVisiblePoints(series);\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n lastValue = 0;\n value = +yValues[j]; // Fix for chart not rendering while y value is given as string issue\n if (lastPositive[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastPositive[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (lastNegative[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastNegative[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (isStacking100) {\n value = value / frequencies[stackingGroup][visiblePoints[j].xValue] * 100;\n value = !isNaN(value) ? value : 0;\n visiblePoints[j].percentage = +(value.toFixed(2));\n }\n else {\n stackedValues[j] = stackedValues[j] ? stackedValues[j] + Math.abs(value) : Math.abs(value);\n }\n if (value >= 0) {\n lastValue = lastPositive[stackingGroup][visiblePoints[j].xValue];\n lastPositive[stackingGroup][visiblePoints[j].xValue] += value;\n }\n else {\n lastValue = lastNegative[stackingGroup][visiblePoints[j].xValue];\n lastNegative[stackingGroup][visiblePoints[j].xValue] += value;\n }\n startValues.push(lastValue);\n endValues.push(value + lastValue);\n if (isStacking100 && (endValues[j] > 100)) {\n endValues[j] = 100;\n }\n }\n series.stackedValues = new StackValues(startValues, endValues);\n var isLogAxis = series.yAxis.valueType === 'Logarithmic';\n var isColumnBarType = (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1);\n series.yMin = isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : (series.yAxis.startFromZero && series.yAxis.rangePadding === 'Auto' && series.yMin >= 0) ? 0 : parseFloat((Math.min.apply(0, isStacking100 ? startValues : endValues)).toFixed(10));\n series.yMax = Math.max.apply(0, endValues);\n if (series.yMin > Math.min.apply(0, endValues)) {\n series.yMin = (isStacking100) ? -100 :\n isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, endValues);\n }\n if (series.yMax < Math.max.apply(0, startValues)) {\n series.yMax = 0;\n }\n }\n }\n this.findPercentageOfStacking(stackingSeies, stackedValues, isStacking100);\n }\n };\n Series.prototype.findPercentageOfStacking = function (stackingSeies, values, isStacking100) {\n for (var _i = 0, stackingSeies_1 = stackingSeies; _i < stackingSeies_1.length; _i++) {\n var item = stackingSeies_1[_i];\n if (isStacking100) {\n return null;\n }\n for (var _a = 0, _b = getVisiblePoints(item); _a < _b.length; _a++) {\n var point = _b[_a];\n point.percentage = Math.abs(+(point.y / values[point.index] * 100).toFixed(2));\n }\n }\n };\n Series.prototype.findFrequencies = function (seriesCollection) {\n var frequencies = [];\n var stackingGroup;\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_3 = seriesCollection; _i < seriesCollection_3.length; _i++) {\n var series = seriesCollection_3[_i];\n series.yAxis.isStack100 = series.type.indexOf('100') !== -1 ? true : false;\n visiblePoints = getVisiblePoints(series);\n if (series.type.indexOf('Stacking') !== -1) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!frequencies[stackingGroup]) {\n frequencies[stackingGroup] = [];\n }\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n if (frequencies[stackingGroup][visiblePoints[j].xValue] === undefined) {\n frequencies[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (series.yData[j] > 0) {\n frequencies[stackingGroup][visiblePoints[j].xValue] += series.yData[j];\n }\n else {\n frequencies[stackingGroup][visiblePoints[j].xValue] -= series.yData[j];\n }\n }\n }\n }\n return frequencies;\n };\n /* private dataManagerFailure(e: { result: Object[] }): void {\n this.currentViewData = [];\n this.refreshChart();\n }*/\n /** @private */\n Series.prototype.renderSeries = function (chart) {\n if (this.chart.stockChart && this.xAxis.valueType === 'DateTimeCategory') {\n for (var i = 0; i < this.points.length; i++) {\n var index = this.xAxis.labels.indexOf(Date.parse(this.points[i].x.toString()).toString());\n this.points[i].xValue = index;\n if (chart.series.length > 1) {\n this.xData[i] = index;\n this.xMin = (this.xMin > index) ? index : this.xMin;\n this.xMax = (this.xMax < index) ? index : this.xMax;\n }\n }\n if (this instanceof Series && this.type.indexOf('Spline') > -1) {\n var isArea = this.type.indexOf('Area') > -1;\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n }\n var seriesType = firstToLowerCase(this.type);\n seriesType = seriesType.replace('100', '');\n if (chart[seriesType + 'SeriesModule']) {\n if (this.category !== 'Indicator' && this.category !== 'TrendLine') {\n this.createSeriesElements(chart);\n }\n this.visiblePoints = getVisiblePoints(this);\n chart[seriesType + 'SeriesModule'].render(this, this.xAxis, this.yAxis, chart.requireInvertedAxis);\n if (this.category !== 'Indicator') {\n if (this.errorBar.visible) {\n this.chart.errorBarModule.render(this);\n }\n if (this.marker.dataLabel.visible) {\n chart.dataLabelModule.render(this, this.chart, this.marker.dataLabel);\n }\n this.appendSeriesElement(chart.seriesElements, chart);\n }\n if (!this.chart.enableCanvas) {\n this.performAnimation(chart, seriesType, this.errorBar, this.marker, this.marker.dataLabel);\n }\n }\n };\n /**\n * To create seris element.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.createSeriesElements = function (chart) {\n if (this.category !== 'Indicator') {\n var elementId = chart.element.id;\n // 8 for extend border value 5 for extend size value\n var explodeValue = this.marker.border.width + 8 + 5;\n var render = (this.type === 'Bubble') || (!this.marker.visible && chart.tooltip.shared && chart.enableCanvas) ?\n chart.svgRenderer : chart.renderer;\n var index = this.index === undefined ? this.category : this.index;\n var markerHeight = void 0;\n var markerWidth = void 0;\n var options = void 0;\n if (this.type === 'Scatter' || this.drawType === 'Scatter') {\n markerHeight = (this.marker.height + explodeValue) / 2;\n markerWidth = (this.marker.width + explodeValue) / 2;\n }\n else {\n markerHeight = 0;\n markerWidth = 0;\n }\n if (chart.chartAreaType === 'PolarRadar') {\n var markerMaxValue = (this.drawType === 'Scatter') ? Math.max(this.marker.width, this.marker.height) : 0;\n options = new CircleOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, this.clipRect.width / 2 + this.clipRect.x, this.clipRect.height / 2 + this.clipRect.y, chart.radius + markerMaxValue);\n this.clipRectElement = appendClipElement(chart.redraw, options, render, 'drawCircularClipPath');\n }\n else {\n options = new RectOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: (this.xAxis.columnIndex === 0) ? -markerWidth : 0, y: (this.yAxis.rowIndex === chart.rows.length - 1) ? -markerHeight : 0,\n width: this.clipRect.width + (this.xAxis.columnIndex === chart.columns.length - 1 ? markerWidth * 2 : markerWidth),\n height: this.clipRect.height + (this.yAxis.rowIndex === 0 ? markerHeight * 2 : markerHeight)\n });\n this.clipRectElement = appendClipElement(chart.redraw, options, render);\n }\n var transform = chart.chartAreaType === 'Cartesian' ? 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')' : '';\n this.symbolElement = null;\n this.seriesElement = render.createGroup({\n 'id': elementId + 'SeriesGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + elementId + '_ChartSeriesClipRect_' + index + ')'\n });\n if (this.seriesElement) {\n this.seriesElement.setAttribute('role', 'region');\n this.seriesElement.setAttribute('aria-label', (this.name + ',' + this.type + ' series with ' + this.points.length + ' data points'));\n this.seriesElement.setAttribute('aria-hidden', 'false');\n }\n if (!this.chart.enableCanvas || this.type === 'Bubble') {\n this.seriesElement.setAttribute('tabindex', index === 0 ? '0' : !this.checkTabindex(chart.visibleSeries, index) ? '0' : '');\n this.seriesElement.setAttribute('style', 'outline: none');\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\n };\n Series.prototype.checkTabindex = function (visibleSeries, index) {\n for (var i = 0; i < index; i++) {\n if (visibleSeries[i].visible)\n return true;\n }\n return false;\n };\n /**\n * To append the series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.appendSeriesElement = function (element, chart) {\n var marker = this.marker;\n var dataLabel = marker.dataLabel;\n var redraw = chart.redraw;\n if (this.category !== 'TrendLine') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n var errorBar = this.errorBar;\n if (errorBar.visible) {\n if (chart.chartAreaType === 'PolarRadar') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.errorBarElement, redraw);\n }\n }\n }\n if (marker.visible && (chart.chartAreaType === 'Cartesian' ||\n ((this.drawType !== 'Scatter') && chart.chartAreaType === 'PolarRadar')) && this.type !== 'Scatter' &&\n this.type !== 'Bubble' && this.type !== 'Candle' && this.type !== 'Hilo' && this.type !== 'HiloOpenClose' && this.symbolElement) {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.symbolElement, redraw);\n }\n if (dataLabel.visible && this.textElement) {\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.shapeElement, redraw);\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.textElement, redraw);\n }\n if (!chart.enableCanvas && chart.dataLabelElements.hasChildNodes()) {\n chart.seriesElements.appendChild(chart.dataLabelElements);\n }\n };\n /**\n * To perform animation for chart series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.performAnimation = function (chart, type, errorBar, marker, dataLabel) {\n if (((this.animation.enable && animationMode != 'Disable') || animationMode === 'Enable') && chart.animateSeries && (!chart.stockChart || !chart.stockChart.isStockChartRendered)) {\n chart[type + 'SeriesModule'].doAnimation(this);\n if (errorBar.visible) {\n chart.errorBarModule.doErrorBarAnimation(this);\n }\n if (marker.visible) {\n chart.markerRender.doMarkerAnimation(this);\n }\n //to datalabel animation disabled for edge and IE\n if (dataLabel.visible && Browser.info.name !== 'edge' && !Browser.isIE) {\n chart.dataLabelModule.doDataLabelAnimation(this);\n }\n }\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setPointColor = function (point, color) {\n color = point.interior || color;\n return point.isEmpty ? (this.emptyPointSettings.fill || color) : color;\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setBorderColor = function (point, border) {\n border.width = point.isEmpty ? (this.emptyPointSettings.border.width || border.width) : border.width;\n border.color = point.isEmpty ? (this.emptyPointSettings.border.color || border.color) : border.color;\n return border;\n };\n __decorate([\n Property('')\n ], Series.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"yName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"isClosed\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bullFillColor\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"enableSolidCandles\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"binInterval\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"showNormalDistribution\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], Series.prototype, \"border\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"zOrder\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"groupName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"type\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], Series.prototype, \"errorBar\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], Series.prototype, \"marker\", void 0);\n __decorate([\n Complex(null, ParetoOptions)\n ], Series.prototype, \"paretoOptions\", void 0);\n __decorate([\n Complex({}, DragSettings)\n ], Series.prototype, \"dragSettings\", void 0);\n __decorate([\n Collection([], Trendline)\n ], Series.prototype, \"trendlines\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipFormat\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], Series.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"unSelectedStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"nonHighlightStyle\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"minRadius\", void 0);\n __decorate([\n Property(3)\n ], Series.prototype, \"maxRadius\", void 0);\n __decorate([\n Property('Natural')\n ], Series.prototype, \"splineType\", void 0);\n __decorate([\n Property(0.5)\n ], Series.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], Series.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"showMean\", void 0);\n __decorate([\n Property('Normal')\n ], Series.prototype, \"boxPlotMode\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidth\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidthInPixel\", void 0);\n __decorate([\n Property('Rectangle')\n ], Series.prototype, \"columnFacet\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"columnSpacing\", void 0);\n __decorate([\n Property('#C64E4A')\n ], Series.prototype, \"negativeFillColor\", void 0);\n __decorate([\n Property('#4E81BC')\n ], Series.prototype, \"summaryFillColor\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"intermediateSumIndexes\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"sumIndexes\", void 0);\n __decorate([\n Property('Left')\n ], Series.prototype, \"step\", void 0);\n __decorate([\n Complex({ color: 'black', width: 2 }, Connector)\n ], Series.prototype, \"connector\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], Series.prototype, \"cornerRadius\", void 0);\n return Series;\n}(SeriesBase));\nexport { Series };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the Annotation for chart.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * label border properties.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * categories for multi level labels\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * Strip line properties\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"imageUrl\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * MultiLevelLabels properties\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * Specifies range for scrollbarSettings property\n *\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Scrollbar Settings Properties for Lazy Loading\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"trackColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"scrollbarRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"scrollbarColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"trackRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"gripColor\", void 0);\n __decorate([\n Property(16)\n ], ScrollbarSettings.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ScrollbarSettings.prototype, \"enableZoom\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n *\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval.\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n *\n * @returns {string} skeleton format\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'MMMd' : 'yMd') : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Find label format for axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis, currentValue, previousValue) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? 'MMM yyyy' : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, Browser, remove } from '@syncfusion/ej2-base';\nimport { PointData, ChartLocation } from '../../common/utils/helper';\nimport { getElement, measureText, Rect } from '@syncfusion/ej2-svg-base';\nimport { valueToCoefficient, removeElement, valueToPolarCoefficient, withInBounds } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender, sharedTooltipRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Tooltip` module is used to render the tooltip for chart series.\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function Tooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.commonXvalues = [];\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n Tooltip.prototype.mouseUpHandler = function () {\n var chart = this.control;\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n if (chart.isTouch && !this.isSelected(chart) &&\n ((withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect) && chart.tooltip.shared)\n || !chart.tooltip.shared)) {\n if (!chart.crosshair.enable) {\n this.tooltip();\n if (chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(chart.tooltip.fadeOutDuration);\n }\n }\n else if (chart.startMove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(2000);\n }\n }\n else if (!this.findData(data, this.previousPoints[0]) && chart.tooltip.fadeOutMode === 'Click') {\n this.removeTooltip(0);\n }\n };\n Tooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n };\n Tooltip.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n chart.mouseX = chart.mouseX / chart.scaleX;\n chart.mouseY = chart.mouseY / chart.scaleY;\n if (chart.stockChart && chart.stockChart.onPanning) {\n if (chart.mouseY < chart.chartAxisLayoutPanel.seriesClipRect.y) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y;\n }\n else if (chart.mouseY > chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height;\n }\n }\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip && !this.isSelected(chart)) {\n if (!chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n }\n else {\n if (chart.tooltip.shared && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n }\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Tooltip.prototype.longPress = function () {\n var chart = this.chart;\n if (chart.crosshair.enable && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.tooltip();\n chart.markerRender.markerMove(false);\n }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n */\n Tooltip.prototype.tooltip = function () {\n var elementId = this.chart.enableCanvas ? this.element.id + '_tooltip_group' : this.element.id + '_tooltip_svg';\n var svgElement = this.getElement(elementId);\n // To prevent the disappearance of the tooltip, while resize the stock chart.\n var isStockSvg = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);\n var tooltipDiv = this.getTooltipElement(isTooltip);\n if (this.chart.enableCanvas && tooltipDiv) {\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));\n }\n if (!this.chart.tooltip.shared) {\n this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n else {\n this.renderGroupedTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n };\n Tooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header, data.series.xAxis, data.series.yAxis);\n if (this.header.replace(/<b>/g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n Tooltip.prototype.findShapes = function () {\n if (!this.chart.tooltip.enableMarker) {\n return [];\n }\n var marker = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n marker.push(data.point.marker.shape || data.series.marker.shape || 'Circle');\n }\n return marker;\n };\n Tooltip.prototype.renderSeriesTooltip = function (chart, isFirst, tooltipDiv) {\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n this.currentPoints = [];\n if (this.findData(data, this.previousPoints[0])) {\n if (!(chart.dataEditingModule && chart.dataEditingModule.isPointDragging) && (this.previousPoints[0] &&\n data.point.index === this.previousPoints[0].point.index && data.series.index === this.previousPoints[0].series.index)) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, true)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n else {\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && !(series.category === 'TrendLine')) {\n data = this.getClosestX(chart, series, commonXvalues) || data;\n }\n }\n }\n }\n if (data && data.point) {\n this.findMouseValue(data, chart);\n }\n };\n Tooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: tooltipTemplate,\n series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle, point: point.point,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var tooltip = this.chart.tooltip;\n var chartTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.headerText = argsData.headerText;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n var location_1 = _this.getSymbolLocation(point);\n location_1 = location_1 ? location_1 : new ChartLocation(null, null);\n location_1.x = tooltip.location.x !== null ? tooltip.location.x : location_1.x;\n location_1.y = tooltip.location.y !== null ? tooltip.location.y : location_1.y;\n location_1 = (location_1.x === null && location_1.y === null) ? null : location_1;\n _this.createTooltip(_this.chart, isFirst, location_1, point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, borderWidth, _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, null, _this.getTemplateText(point), _this.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n chartTooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, chartTooltipSuccess);\n };\n Tooltip.prototype.findMarkerHeight = function (pointData) {\n var markerHeight = 0;\n var series = pointData.series;\n markerHeight = ((series.marker.visible || (this.chart.tooltip.shared &&\n (!series.isRectSeries || series.marker.visible)) || series.type === 'Scatter' || series.drawType === 'Scatter')\n && !(series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) ?\n ((series.marker.height + 2) / 2 + (2 * series.marker.border.width)) : 0;\n return markerHeight;\n };\n Tooltip.prototype.findData = function (data, previous) {\n return data.point && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex) || (previous.point === data.point));\n };\n Tooltip.prototype.getSymbolLocation = function (data) {\n var location;\n if (data.series.type !== 'BoxAndWhisker') {\n if (!data.point.symbolLocations[0]) {\n return null;\n }\n location = new ChartLocation(data.point.symbolLocations[0].x, data.point.symbolLocations[0].y);\n }\n switch (data.series.type) {\n case 'BoxAndWhisker':\n return this.getBoxLocation(data);\n case 'Waterfall':\n return this.getWaterfallRegion(data, location);\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'RangeColumn':\n return this.getRangeArea(data, location);\n default:\n return location;\n }\n };\n Tooltip.prototype.getRangeArea = function (data, location) {\n if (data.point.regions[0]) {\n if (!this.inverted) {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2;\n }\n else {\n location.x = data.point.regions[0].x + data.point.regions[0].width / 2;\n }\n if (data.series.type === 'RangeStepArea') {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2 + data.point.regions[0].width;\n }\n }\n return location;\n };\n Tooltip.prototype.getWaterfallRegion = function (data, location) {\n if (!this.inverted) {\n location.y = (data.point.y < 0) ?\n location.y - data.point.regions[0].height : location.y;\n }\n else {\n location.x = (data.point.y < 0) ?\n location.x + data.point.regions[0].width : location.x;\n }\n return location;\n };\n Tooltip.prototype.getTooltipText = function (pointData) {\n var series = pointData.series;\n return this.parseTemplate(pointData.point, series, this.getFormat(this.chart, series), series.xAxis, series.yAxis);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Tooltip.prototype.getTemplateText = function (data) {\n if (this.template && this.chart.tooltip.shared) {\n var point = [];\n for (var i = 0; i < data.length; i++) {\n point[i] = extend({}, data[i].point);\n point[i].x = this.formatPointValue(data[i].point, data[i].series.xAxis, 'x', true, false);\n if ((data[i].series.seriesType === 'XY')) {\n point[i].y = this.formatPointValue(data[i].point, data[i].series.yAxis, 'y', false, true);\n }\n else {\n point[i].low = this.formatPointValue(data[i].point, data[i].series.yAxis, 'low', false, true);\n point[i].high = this.formatPointValue(data[i].point, data[i].series.yAxis, 'high', false, true);\n }\n }\n return point;\n }\n else if (this.template) {\n var point = extend({}, data.point);\n point.x = this.formatPointValue(data.point, data.series.xAxis, 'x', true, false);\n if ((data.series.seriesType === 'XY')) {\n point.y = this.formatPointValue(data.point, data.series.yAxis, 'y', false, true);\n }\n else {\n point.low = this.formatPointValue(data.point, data.series.yAxis, 'low', false, true);\n point.high = this.formatPointValue(data.point, data.series.yAxis, 'high', false, true);\n }\n return point;\n }\n else {\n return data.point;\n }\n };\n Tooltip.prototype.findMouseValue = function (data, chart) {\n if (!chart.requireInvertedAxis) {\n if (chart.chartAreaType === 'PolarRadar') {\n this.valueX = valueToPolarCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n else {\n this.valueX = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? this.valueX :\n valueToCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n this.valueY = chart.mouseY;\n }\n else {\n this.valueY = (1 - valueToCoefficient(data.point.xValue, data.series.xAxis)) * data.series.xAxis.rect.height\n + data.series.xAxis.rect.y;\n this.valueX = chart.mouseX;\n }\n };\n Tooltip.prototype.renderGroupedTooltip = function (chart, isFirst, tooltipDiv) {\n var data;\n var dataCollection = [];\n var lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\n var closestXValue = Number.MAX_VALUE;\n var closetYValue = Number.MAX_VALUE;\n var pointXValue;\n var pointYValue;\n var tempData;\n //let headerContent : string = '';\n if (isFirst) {\n if (!chart.stockChart) {\n if (tooltipDiv) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n else {\n if (tooltipDiv && !getElement(tooltipDiv.id)) {\n document.getElementById(chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n }\n this.removeText();\n var argument = {\n text: [], cancel: false, name: sharedTooltipRender, data: [], point: [], series: [], headerText: '', textStyle: this.textStyle, template: ''\n };\n var i = 0;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && series.visible && pointData.point !== null) {\n data = new PointData(series.points[pointData.point.index], series);\n }\n // if (data && this.header !== '' && this.currentPoints.length === 0) {\n // headerContent = this.findHeader(data);\n // }\n if (chart.tooltip.showNearestPoint && !data) {\n data = this.getClosestX(chart, series, this.commonXValue([series]));\n }\n if (data) {\n argument.data.push({ pointX: data.point.x, pointY: data.point.y, seriesIndex: data.series.index,\n seriesName: data.series.name, pointIndex: data.point.index, pointText: data.point.text });\n argument.series[i] = data.series;\n argument.point[i] = data.point;\n argument.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n argument.text.push(this.getTooltipText(data));\n pointXValue = (!chart.requireInvertedAxis) ? chart.mouseX - data.series.clipRect.x : chart.mouseY - data.series.clipRect.y;\n pointYValue = chart.mouseY - data.series.clipRect.y;\n if (data.point.symbolLocations && data.point.symbolLocations.length && Math.abs(pointXValue - data.point.symbolLocations[0].x) <= closestXValue &&\n Math.abs(data.point.symbolLocations[0].y - pointYValue) < Math.abs(closetYValue - pointYValue)) {\n closestXValue = Math.abs(pointXValue - data.point.symbolLocations[0].x);\n closetYValue = data.point.symbolLocations[0].y;\n tempData = data;\n }\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : tempData || data;\n dataCollection.push(data);\n }\n // if (data && this.triggerEvent(data, isFirst, this.getTooltipText(data)), this.findHeader(data)) {\n // this.findMouseValue(data, chart);\n // (<PointData[]>this.currentPoints).push(data);\n // data = null;\n // } else if (data) {\n // extraPoints.push(data);\n // }\n i++;\n }\n if (!chart.tooltip.showNearestPoint) {\n var collection = [];\n this.currentPoints = [];\n argument.point = [];\n argument.series = [];\n argument.data = [];\n argument.text = [];\n for (var _b = 0, dataCollection_1 = dataCollection; _b < dataCollection_1.length; _b++) {\n var data_1 = dataCollection_1[_b];\n if (data_1.point.symbolLocations[0].x === lastData.point.symbolLocations[0].x || ((data_1.series.type.indexOf('Column') !== -1 || lastData.series.type.indexOf('Column') !== -1) && (data_1.point.xValue === lastData.point.xValue))) {\n argument.point.push(data_1.point);\n argument.series.push(data_1.series);\n argument.text.push(this.getTooltipText(data_1));\n argument.headerText = this.findHeader(data_1);\n collection.push(data_1);\n argument.data.push({\n pointX: data_1.point.x, pointY: data_1.point.y, seriesIndex: data_1.series.index,\n seriesName: data_1.series.name, pointIndex: data_1.point.index, pointText: data_1.point.text\n });\n }\n }\n dataCollection = collection;\n this.currentPoints = collection;\n }\n if (dataCollection.length > 0 && this.currentPoints.length > 0) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerSharedTooltip(argument, lastData, extraPoints, chart, isFirst, dataCollection);\n }\n else if (this.getElement(this.element.id + '_tooltip_path')) {\n this.getElement(this.element.id + '_tooltip_path').setAttribute('d', '');\n }\n };\n Tooltip.prototype.triggerSharedTooltip = function (argument, point, extraPoints, chart, isFirst, dataCollection) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle, template: tooltipTemplate,\n point: argument.point, series: argument.series,\n data: argument.data\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var toolbarHeight;\n var titleHeight;\n var currentPoints = [];\n if (chart.stockChart) {\n toolbarHeight = chart.stockChart.enablePeriodSelector ? chart.stockChart.toolbarHeight : 0;\n titleHeight = measureText(this.chart.stockChart.title, this.chart.stockChart.titleStyle, this.chart.themeStyle.tooltipLabelFont).height + 10;\n }\n var sharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n for (var i = 0; i < argsData.text.length; i++) {\n if (argsData.text[i]) {\n currentPoints.push(_this.currentPoints[i]);\n }\n }\n _this.currentPoints = currentPoints;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n var tooltip = _this.chart.tooltip;\n _this.findMouseValue(point, _this.chart);\n var location_2 = _this.findSharedLocation();\n location_2 = location_2 ? location_2 : new ChartLocation(null, null);\n location_2.x = tooltip.location.x !== null ? tooltip.location.x : location_2.x;\n location_2.y = tooltip.location.y !== null ? tooltip.location.y : location_2.y;\n location_2 = (location_2.x === null && location_2.y === null) ? null : location_2;\n _this.createTooltip(chart, isFirst, location_2, _this.currentPoints.length === 1 ? _this.currentPoints[0].series.clipRect : null, dataCollection.length === 1 ? dataCollection[0].point : null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, (chart.stockChart ? (toolbarHeight + titleHeight + borderWidth) : borderWidth), _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, extraPoints, _this.template ? _this.getTemplateText(dataCollection) : null, _this.template ? argsData.template : '');\n point = null;\n }\n else {\n extraPoints.push(point);\n }\n };\n sharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, sharedTooltip);\n };\n Tooltip.prototype.findSharedLocation = function () {\n var stockChart = this.chart.stockChart;\n if (stockChart) {\n if (this.text.length === 1) {\n this.text.push('');\n }\n var toolbarHeight = stockChart.enablePeriodSelector ? stockChart.toolbarHeight : 0;\n var element = document.getElementById(stockChart.element.id + '_ChartTitle');\n var titleHeight = stockChart.title !== '' ? element.getBoundingClientRect().height + 10 : 0;\n if (stockChart.tooltip.position === 'Nearest') {\n return new ChartLocation(this.valueX, this.valueY + toolbarHeight + titleHeight);\n }\n return new ChartLocation(this.chart.chartAxisLayoutPanel.seriesClipRect.x + 5, this.chart.chartAxisLayoutPanel.seriesClipRect.y + toolbarHeight + 5 + titleHeight);\n }\n else {\n if (this.currentPoints.length > 1) {\n return new ChartLocation(this.valueX, this.valueY);\n }\n else {\n return this.getSymbolLocation(this.currentPoints[0]);\n }\n }\n };\n Tooltip.prototype.getBoxLocation = function (data) {\n var location = this.lierIndex > 3 ? (data.point.outliers.length > 0 ? data.point.symbolLocations[this.lierIndex - 4] : null) :\n {\n x: data.point.regions[0].x + (data.point.regions[0].width / 2),\n y: data.point.regions[0].y + (data.point.regions[0].height / 2)\n };\n return location;\n };\n Tooltip.prototype.parseTemplate = function (point, series, format, xAxis, yAxis) {\n var val;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n val = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(val.source, this.formatPointValue(point, val.source === '${point.x}' ? xAxis : yAxis, dataValue, val.source === '${point.x}', (val.source === '${point.high}' ||\n val.source === '${point.open}' ||\n val.source === '${point.close}' ||\n val.source === '${point.low}' ||\n val.source === '${point.y}' ||\n val.source === '${point.minimum}' ||\n val.source === '${point.maximum}' ||\n val.source === '${point.outliers}' ||\n val.source === '${point.upperQuartile}' ||\n val.source === '${point.lowerQuartile}' ||\n val.source === '${point.median}')));\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n val = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(val.source, textValue);\n }\n return format;\n };\n Tooltip.prototype.formatPointValue = function (point, axis, dataValue, isXPoint, isYPoint) {\n var textValue;\n var customLabelFormat;\n var value;\n if (axis.valueType !== 'Category' && isXPoint) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(point[dataValue])) :\n axis.format(point[dataValue]);\n }\n else if (isYPoint && !isNullOrUndefined(point[dataValue])) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n value = dataValue === 'outliers' ? axis.format(point[dataValue][this.lierIndex - 4]) :\n axis.format(point[dataValue]);\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', value) : value;\n }\n else if (dataValue === 'size') {\n var format = this.chart.intl.getNumberFormat({ format: '', useGrouping: this.chart.useGroupingSeparator });\n textValue = typeof point[dataValue] === 'number' ? format(point[dataValue]) : point[dataValue];\n }\n else {\n textValue = point[dataValue];\n }\n return textValue;\n };\n Tooltip.prototype.getFormat = function (chart, series) {\n if (series.tooltipFormat) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return series.tooltipFormat;\n }\n if (!series.tooltipFormat && chart.tooltip.format) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return chart.tooltip.format;\n }\n var textX = (series.type === 'Histogram') ? '${point.minimum}' + '-' + '${point.maximum}' : '${point.x}';\n var format = !chart.tooltip.shared ? textX : '${series.name}';\n switch (series.seriesType) {\n case 'XY':\n if (series.category === 'Indicator') {\n this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return format + ' : ' + ((series.type === 'Bubble') ? '<b>${point.y}</b> Size : <b>${point.size}</b>' :\n '<b>${point.y}</b>');\n case 'HighLow':\n return format + ('<br/>High : <b>${point.high}</b><br/>Low : <b>${point.low}</b>');\n case 'HighLowOpenClose':\n return format + ('<br/>High : <b>${point.high}</b><br/>Low : <b>${point.low}</b><br/>' +\n 'Open : <b>${point.open}</b><br/>Close : <b>${point.close}</b>');\n case 'BoxPlot': {\n return format + '<br/>' + (this.lierIndex > 3 ? 'Outliers : <b>${point.outliers}</b>' :\n 'Maximum : <b>${point.maximum}</b><br/>Q3 : <b>${point.upperQuartile}</b><br/>' +\n 'Median : <b>${point.median}</b><br/>Q1 : <b>${point.lowerQuartile}</b><br/>Minimum : <b>${point.minimum}</b>');\n }\n default: return '';\n }\n };\n Tooltip.prototype.getIndicatorTooltipFormat = function (series, chart, format) {\n var toolTip;\n if (series.seriesType === 'XY') {\n toolTip = series.name + ' : <b>${point.y}</b>';\n }\n else {\n toolTip = format;\n }\n return toolTip;\n };\n /*\n * @hidden\n */\n Tooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {\n var item = data_2[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n /**\n * Get module name.\n */\n Tooltip.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Tooltip;\n}(BaseTooltip));\nexport { Tooltip };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (gObj.isVue) {\n gObj.setProperties({ query: gObj.query instanceof Query ? gObj.query : new Query() }, true);\n }\n else {\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise<Object>} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise<Object>} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation, withInBounds, rotateTextSize } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement, stringToNumber } from '../../common/utils/helper';\nimport { Thickness, logBase, createZoomingLabels, getElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText, TextOption, PathOption } from '@syncfusion/ej2-svg-base';\nimport { textElement, textTrim, getRotatedRectangleCoordinates, isRotatedRectIntersect, isZoomSet } from '../../common/utils/helper';\n/**\n * Specifies the Cartesian Axis Layout.\n */\nvar axisPadding = 10;\nvar CartesianAxisLayoutPanel = /** @class */ (function () {\n /** @private */\n function CartesianAxisLayoutPanel(chartModule) {\n this.chart = chartModule;\n this.padding = 5;\n }\n /**\n * Measure the axis size.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n var chartAreaWidth = chart.chartArea.width ? stringToNumber(chart.chartArea.width, chart.availableSize.width) : null;\n this.crossAt(chart);\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n this.initialClipRect = rect;\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with initial Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n this.calculateAxisSize(this.initialClipRect);\n }\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with series Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (chartAreaWidth) {\n this.calculateFixedChartArea(chart, chartAreaWidth);\n }\n if (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateFixedChartArea = function (chart, chartAreaWidth) {\n this.seriesClipRect.width = chartAreaWidth;\n this.seriesClipRect.x = chart.availableSize.width - chart.margin.right - chartAreaWidth -\n (chart.legendSettings.position === 'Right' ? chart.legendModule.legendBounds.width : 0);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n this.seriesClipRect.x -= sum(item.farSizes);\n }\n };\n CartesianAxisLayoutPanel.prototype.measureRowAxis = function (chart, rect) {\n var row;\n this.calculateRowSize(rect);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n row = item;\n row.nearSizes = [];\n row.farSizes = [];\n row.insideNearSizes = [];\n row.insideFarSizes = [];\n this.arrangeAxis(row);\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n if (this.leftSize < sum(row.nearSizes)) {\n this.leftSize = sum(row.nearSizes);\n }\n if (this.rightSize < sum(row.farSizes)) {\n this.rightSize = sum(row.farSizes);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.measureColumnAxis = function (chart, rect) {\n var column;\n this.calculateColumnSize(rect);\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var item = _a[_i];\n column = item;\n column.farSizes = [];\n column.nearSizes = [];\n column.insideNearSizes = [];\n column.insideFarSizes = [];\n this.arrangeAxis(column);\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n if (this.bottomSize < sum(column.nearSizes)) {\n this.bottomSize = sum(column.nearSizes);\n }\n if (this.topSize < sum(column.farSizes)) {\n this.topSize = sum(column.farSizes);\n }\n }\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureDefinition = function (definition, chart, size) {\n var ele;\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n ele = axis.scrollbarSettings.height;\n axis.scrollBarHeight = chart.scrollBarModule && chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0) ? ele : 0;\n axis.scrollBarHeight = chart.scrollBarModule && (chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)\n || axis.scrollbarSettings.enable) ? ele : 0;\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n definition.computeSize(axis, axis.scrollBarHeight, definition, chart);\n }\n if (definition.farSizes.length > 0) {\n definition.farSizes[definition.farSizes.length - 1] -= axisPadding;\n }\n if (definition.nearSizes.length > 0) {\n definition.nearSizes[definition.nearSizes.length - 1] -= axisPadding;\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.calculateAxisSize = function (rect) {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var axis;\n var nearCount = 0;\n var farCount = 0;\n var size = 0;\n var x;\n var y;\n var axisOffset;\n this.calculateRowSize(rect);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_1 = row.axes.length; j < len_1; j++) {\n axis = row.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.height === 0) {\n axis.rect.height = row.computedHeight;\n size = 0;\n for (var k = i + 1, len_2 = i + axis.span; k < len_2; k++) {\n definition = chart.rows[k];\n size += definition.computedHeight;\n }\n axis.rect.y = (row.computedTop - size) + (axis.plotOffsetTop ? axis.plotOffsetTop : axisOffset);\n axis.rect.height = (axis.rect.height + size) -\n (this.getAxisOffsetValue(axis.plotOffsetTop, axis.plotOffsetBottom, axis.plotOffset));\n axis.rect.width = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + rect.width - sum(subArray(row.insideFarSizes, farCount));\n }\n else {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n }\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + sum(subArray(row.insideNearSizes, nearCount));\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\n }\n axis.rect.x = axis.rect.x <= x ? axis.rect.x : x;\n nearCount++;\n }\n }\n }\n this.calculateColumnSize(rect);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_3 = column.axes.length; j < len_3; j++) {\n axis = column.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.width === 0) {\n for (var k = i, len_4 = (i + axis.span); k < len_4; k++) {\n definition = chart.columns[k];\n axis.rect.width += definition.computedWidth;\n }\n axis.rect.x = column.computedLeft + (axis.plotOffsetLeft ? axis.plotOffsetLeft : axisOffset);\n axis.rect.width -= (this.getAxisOffsetValue(axis.plotOffsetLeft, axis.plotOffsetRight, axis.plotOffset));\n axis.rect.height = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + sum(subArray(column.insideFarSizes, farCount));\n }\n else {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n }\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + rect.height - sum(subArray(column.insideNearSizes, nearCount));\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\n }\n axis.rect.y = axis.rect.y >= y ? axis.rect.y : y;\n nearCount++;\n }\n }\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measure = function () {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var actualIndex;\n var span;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n //definition.Axes = axis;\n if (axis.orientation === 'Vertical') {\n chart.verticalAxes.push(axis);\n actualIndex = this.getActualRow(axis);\n row = chart.rows[actualIndex];\n this.pushAxis(row, axis);\n span = ((actualIndex + axis.span) > chart.rows.length ? chart.rows.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.rows[j];\n definition.axes[row.axes.length - 1] = axis;\n chart.rows[j] = definition;\n }\n chart.rows[actualIndex] = row;\n }\n else {\n chart.horizontalAxes.push(axis);\n actualIndex = this.getActualColumn(axis);\n column = chart.columns[actualIndex];\n this.pushAxis(column, axis);\n span = ((actualIndex + axis.span) > chart.columns.length ? chart.columns.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.columns[j];\n definition.axes[column.axes.length - 1] = axis;\n chart.columns[j] = definition;\n }\n chart.columns[actualIndex] = column;\n }\n axis.isRTLEnabled = chart.enableRtl;\n axis.setIsInversedAndOpposedPosition();\n }\n };\n CartesianAxisLayoutPanel.prototype.getAxisOffsetValue = function (position1, position2, plotOffset) {\n var rangeOffset = position1 ? (position1 + (position2 ? position2 :\n plotOffset)) : (position2 ? position2 + plotOffset : 2 * plotOffset);\n return rangeOffset;\n };\n CartesianAxisLayoutPanel.prototype.crossAt = function (chart) {\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (axis.crossesAt === null) {\n continue;\n }\n if (!axis.crossesInAxis) {\n if (chart.requireInvertedAxis) {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryXAxis : chart.primaryYAxis;\n }\n else {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryYAxis : chart.primaryXAxis;\n }\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n else {\n for (var i = 2, len = chart.axisCollections.length; i < len; i++) {\n if (axis.crossesInAxis === chart.axisCollections[i].name) {\n axis.crossInAxis = chart.axisCollections[i];\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.updateCrossAt = function (axis, crossAt) {\n switch (axis.valueType) {\n case 'DateTime':\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n return Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: crossAt }).val))));\n case 'Category':\n return parseFloat(crossAt) ? parseFloat(crossAt) : axis.labels.indexOf(crossAt);\n case 'Logarithmic':\n return logBase(crossAt, axis.logBase);\n default:\n return crossAt;\n }\n };\n CartesianAxisLayoutPanel.prototype.pushAxis = function (definition, axis) {\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (!definition.axes[i]) {\n definition.axes[i] = axis;\n break;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.arrangeAxis = function (definition) {\n var axisCollection = [];\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (definition.axes[i]) {\n axisCollection.push(definition.axes[i]);\n }\n }\n definition.axes = axisCollection;\n };\n CartesianAxisLayoutPanel.prototype.getActualColumn = function (axis) {\n var actualLength = this.chart.columns.length;\n var pos = axis.columnIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n CartesianAxisLayoutPanel.prototype.getActualRow = function (axis) {\n var actualLength = this.chart.rows.length;\n var pos = axis.rowIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateRowSize = function (rect) {\n /*! Calculate row size */\n var chart = this.chart;\n var row;\n var rowTop = rect.y + rect.height;\n var height = 0;\n var remainingHeight = Math.max(0, rect.height);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n if (row.height.indexOf('%') !== -1) {\n height = Math.min(remainingHeight, (rect.height * parseInt(row.height, 10) / 100));\n }\n else {\n height = Math.min(remainingHeight, parseInt(row.height, 10));\n }\n height = (i !== (len - 1)) ? height : remainingHeight;\n row.computedHeight = height;\n rowTop -= height;\n row.computedTop = rowTop;\n remainingHeight -= height;\n }\n };\n /**\n * Measure the row size.\n *\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateColumnSize = function (rect) {\n /*! Calculate column size */\n var chart = this.chart;\n var column;\n var columnLeft = rect.x;\n var width = 0;\n var remainingWidth = Math.max(0, rect.width);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n if (column.width.indexOf('%') !== -1) {\n width = Math.min(remainingWidth, (rect.width * parseInt(column.width, 10) / 100));\n }\n else {\n width = Math.min(remainingWidth, parseInt(column.width, 10));\n }\n width = (i !== (len - 1)) ? width : remainingWidth;\n column.computedWidth = width;\n column.computedLeft = columnLeft;\n columnLeft += width;\n remainingWidth -= width;\n }\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n CartesianAxisLayoutPanel.prototype.renderAxes = function () {\n var chart = this.chart;\n var axis;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisInsideCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n if (axisLineElement) {\n axisLineElement.setAttribute('aria-hidden', 'true');\n }\n var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n var axisVisibility = true;\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n if (this.element) {\n this.element.setAttribute('aria-hidden', 'true');\n }\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\n if (outsideElement) {\n outsideElement.setAttribute('aria-hidden', 'true');\n }\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (axis.name === series.yAxisName || axis.name === series.xAxisName) {\n axisVisibility = series.visible;\n if (series.category === 'Pareto' && !series.paretoOptions.showAxis && series.type === 'Line') {\n axisVisibility = false;\n }\n if (!axisVisibility) {\n continue;\n }\n else {\n break;\n }\n }\n }\n if (!axisVisibility) {\n continue;\n }\n isInside = this.findAxisPosition(axis);\n if (axis.orientation === 'Horizontal') {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, axis.plotOffset, 0, 0, 0, axis.plotOffsetLeft, axis.plotOffsetRight, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 || axis.minorGridLines.width > 0) {\n this.drawXAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawXAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n else {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, 0, axis.plotOffset, axis.plotOffsetBottom, axis.plotOffsetTop, 0, 0, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 || axis.minorGridLines.width > 0) {\n this.drawYAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawYAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n if (outsideElement && outsideElement.childNodes.length > 0) {\n axisLineElement.appendChild(outsideElement);\n }\n }\n if (chart.scrollBarModule && ((chart.zoomSettings.enableScrollbar && axis.enableScrollbarOnZooming) ||\n axis.scrollbarSettings.enable)) {\n this.renderScrollbar(chart, axis);\n }\n }\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'DefinitionLine' });\n for (var j = 0, len = chart.rows.length; j < len; j++) {\n var row = chart.rows[j];\n if (row.border.color) {\n this.drawBottomLine(row, j, true);\n }\n }\n for (var j = 0, len = chart.columns.length; j < len; j++) {\n var column = chart.columns[j];\n if (column.border.color) {\n this.drawBottomLine(column, j, false);\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n /**\n * To render the axis scrollbar\n *\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderScrollbar = function (chart, axis) {\n var isZoomed = isNullOrUndefined(chart.zoomModule) ? false : chart.zoomModule.isZoomed;\n if (((isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) || (axis.scrollbarSettings.enable &&\n (axis.zoomFactor <= 1 || axis.zoomPosition >= 0))) &&\n (!axis.zoomingScrollBar.isScrollUI)) {\n if (!chart.scrollElement) {\n chart.scrollElement = redrawElement(chart.redraw, chart.element.id + '_scrollElement') || createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n appendChildElement(false, chart.scrollElement, axis.zoomingScrollBar.render(true), true);\n }\n else if (axis.zoomFactor === 1 && axis.zoomPosition === 0 && axis.zoomingScrollBar.svgObject && !axis.scrollbarSettings.enable) {\n axis.zoomingScrollBar.destroy();\n }\n else if (axis.zoomingScrollBar.svgObject) {\n axis.zoomingScrollBar.svgObject.style.top = (axis.isAxisOpposedPosition && axis.orientation === 'Horizontal' ? -16 : 0)\n + axis.rect.y + Math.max(0.5, axis.lineStyle.width / 2) + 'px';\n axis.zoomingScrollBar.svgObject.style.left = (axis.isAxisOpposedPosition && axis.orientation !== 'Horizontal' ? 16 : 0)\n + axis.rect.x - (axis.orientation === 'Vertical' ? axis.scrollbarSettings.height : 0) + 'px';\n }\n if (axis.zoomingScrollBar.isScrollUI) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n };\n /**\n * To find the axis position\n *\n * @param {Axis} axis axis\n * @returns {boolean} axis position\n */\n CartesianAxisLayoutPanel.prototype.findAxisPosition = function (axis) {\n return axis.crossAt !== null && axis.isInside(axis.crossInAxis.visibleRange);\n };\n /**\n * To render the bootom line of the columns and rows\n *\n * @param {Row | Column} definition definition\n * @param {number} index index\n * @param {boolean} isRow isRow\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawBottomLine = function (definition, index, isRow) {\n var chart = this.chart;\n var optionsLine = {};\n var x1;\n var x2;\n var y1;\n var y2;\n var definitionName;\n if (isRow) {\n definition = definition;\n y1 = y2 = definition.computedTop + definition.computedHeight;\n x1 = this.seriesClipRect.x;\n x2 = x1 + this.seriesClipRect.width;\n definitionName = 'Row';\n }\n else {\n definition = definition;\n x1 = x2 = definition.computedLeft;\n y1 = this.seriesClipRect.y;\n y2 = y1 + this.seriesClipRect.height;\n definitionName = 'Column';\n }\n optionsLine = {\n 'id': chart.element.id + '_AxisBottom_' + definitionName + index,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n 'stroke-width': definition.border.width,\n 'stroke': definition.border.color\n };\n this.htmlObject = chart.renderer.drawLine(optionsLine);\n this.element.appendChild(this.htmlObject);\n };\n /**\n * To render the axis line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} plotX plotX\n * @param {number} plotY plotY\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxisLine = function (axis, index, plotX, plotY, plotBottom, plotTop, plotLeft, plotRight, parent, rect) {\n var chart = this.chart;\n var optionsLine = {};\n var element = getElement(chart.element.id + 'AxisLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n element = null;\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': 'M ' + (rect.x - plotX - plotLeft) + ' ' + (rect.y - plotY - plotTop) +\n ' L ' + (rect.x + rect.width + plotX + plotRight) + ' ' + (rect.y + rect.height + plotY + plotBottom),\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n this.htmlObject = chart.renderer.drawPath(optionsLine);\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction);\n };\n /**\n * To render the yAxis grid line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointY = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorGridDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = isOpposed ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? axis.lineStyle.width * 0.5 : -axis.lineStyle.width * 0.5;\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? axis.scrollBarHeight :\n -axis.scrollBarHeight : 0;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.x - tickSize - axisLineSize) : (rect.x + tickSize + axisLineSize + scrollBarHeight);\n var length = axis.visibleLabels.length;\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && length > 0 && !this.chart.stockChart) {\n length += 1;\n }\n var minorGridLines = axis.minorGridLines;\n var minorTickLines = axis.minorTickLines;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = !axis.visibleLabels[i] ? (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel\n : axis.visibleLabels[i].value - ticksbwtLabel;\n pointY = valueToCoefficient(tempInterval, axis) * rect.height;\n pointY = (pointY * -1) + (rect.y + rect.height);\n if (pointY >= rect.y && (rect.y + rect.height) >= pointY) {\n if ((inside(tempInterval, axis.visibleRange)) || this.isBorder(axis, i, pointY)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (pointY) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointY;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (rect.x + axisLineSize + (isTickInside ? scrollBarHeight : 0)) + ' ' + pointY +\n ' L ' + (ticks) + ' ' + pointY;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if ((minorGridLines.width > 0 || minorTickLines.width > 0) && axis.minorTicksPerInterval > 0) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorGridDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorGridDirection[0], minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorGridDirection[1], minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To check the border of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} value value\n * @returns {boolean} check the border of the axis\n */\n CartesianAxisLayoutPanel.prototype.isBorder = function (axis, index, value) {\n var border = this.chart.chartArea.border;\n var rect = this.seriesClipRect;\n var orientation = axis.orientation;\n var start = (orientation === 'Horizontal') ? rect.x : rect.y;\n var size = (orientation === 'Horizontal') ? rect.width : rect.height;\n var startIndex = (orientation === 'Horizontal') ? 0 : axis.visibleLabels.length - 1;\n var endIndex = (orientation === 'Horizontal') ? axis.visibleLabels.length - 1 : 0;\n if (axis.plotOffset > 0) {\n return true;\n }\n else if ((value === start || value === (start + size)) && (border.width <= 0 || border.color === 'transparent')) {\n return true;\n }\n else if ((value !== start && index === startIndex) || (value !== (start + size) && index === endIndex)) {\n return true;\n }\n return false;\n };\n /**\n * To render the yAxis label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var label;\n var pointX = 0;\n var pointY = 0;\n var elementSize;\n var labelSpace = axis.labelPadding;\n var options;\n var isAxisBreakLabel;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var RotatedWidth;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isVerticalAngle = (angle === -90 || angle === 90 || angle === 270 || angle === -270);\n padding += (isVerticalAngle) ? (isLabelInside ? 5 : -5) : 0;\n padding = (isOpposed) ? padding : -padding;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight * (isOpposed ? 1 : -1) : 0;\n var textHeight;\n var textPadding;\n var maxLineWidth;\n var pixel = 10;\n var isInverse = axis.isAxisInverse;\n var previousEnd = isInverse ? rect.y : (rect.y + rect.height);\n var labelPadding;\n var intervalLength;\n var labelHeight;\n var yAxisLabelX;\n var isLabelOnAxisLineLeft = ((!isOpposed && !isLabelInside) || (isOpposed && isLabelInside));\n if (isLabelInside) {\n labelPadding = !isLabelOnAxisLineLeft ? -padding : padding;\n }\n else {\n labelPadding = !isLabelOnAxisLineLeft ? -padding + (chart.enableRtl ? -scrollBarHeight : scrollBarHeight) : padding + (chart.enableRtl ? -scrollBarHeight : scrollBarHeight);\n }\n var sizeWidth = [];\n var breakLabelSizeWidth = [];\n axis.visibleLabels.map(function (item) {\n sizeWidth.push(item.size['width']);\n breakLabelSizeWidth.push(item.breakLabelSize['width']);\n });\n var LabelMaxWidth = Math.max.apply(Math, sizeWidth);\n var breakLabelMaxWidth = Math.max.apply(Math, breakLabelSizeWidth);\n RotatedWidth = LabelMaxWidth;\n if (angle >= -45 && angle <= 45 && angle !== 0) {\n RotatedWidth = LabelMaxWidth * Math.cos(angle * Math.PI / 180);\n if (RotatedWidth < 0) {\n RotatedWidth = -RotatedWidth;\n }\n }\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n elementSize = isAxisBreakLabel ? axis.visibleLabels[i].breakLabelSize : axis.visibleLabels[i].size;\n pointY = (valueToCoefficient(axis.visibleLabels[i].value, axis) * rect.height) + (chart.stockChart ? 7 : 0);\n pointY = Math.floor((pointY * -1) + (rect.y + rect.height));\n textHeight = ((elementSize.height / 8) * axis.visibleLabels[i].text.length / 2);\n textPadding = (chart.requireInvertedAxis && axis.labelPosition === 'Inside') ? 0 : ((elementSize.height / 4) * 3) + 3;\n intervalLength = rect.height / axis.visibleLabels.length;\n labelHeight = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle !== 0 &&\n elementSize.width > intervalLength) ? intervalLength : elementSize.width;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? pointY + textPadding : pointY));\n if (axis.labelPosition === 'Inside' && ((i === 0 && !axis.isInversed) || (i === len - 1 && axis.isInversed))) {\n if (chart.stockChart) {\n pointY -= (textPadding);\n }\n else {\n pointY -= (textPadding - ((chart.requireInvertedAxis && axis.labelPosition === 'Inside') ? 0 : (axis.opposedPosition ? -padding : padding)));\n }\n }\n if (axis.majorGridLines.width > axis.majorTickLines.width) {\n maxLineWidth = axis.majorGridLines.width;\n }\n else {\n maxLineWidth = axis.majorTickLines.width;\n }\n if (axis.labelStyle.textAlignment === 'Far') {\n pointY = pointY - maxLineWidth - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointY = pointY + maxLineWidth + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointY = pointY;\n }\n // label X value adjustment (Start)\n if (isLabelInside) {\n yAxisLabelX = labelPadding + ((angle === 0 ? elementSize.width : (isAxisBreakLabel ? breakLabelMaxWidth : LabelMaxWidth)) / 2);\n }\n else {\n yAxisLabelX = labelPadding - ((angle === 0 ? elementSize.width : (isAxisBreakLabel ? breakLabelMaxWidth : RotatedWidth)) / 2);\n }\n pointX = isOpposed ? (rect.x - yAxisLabelX) : (rect.x + yAxisLabelX);\n if (isVerticalAngle) {\n pointX += (isOpposed) ? -10 : 10;\n }\n yAxisLabelX = labelPadding;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, 'middle', label.text, '', 'middle', angle);\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y) ||\n (((i === len - 1) || (isInverse && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (isInverse && i === 0)) && (options.y < rect.y)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n // ------- Hide Calculation (Start) -------------\n var previousYValue = options.y;\n var currentYValue = options.y - labelHeight;\n if (isAxisBreakLabel) {\n previousYValue = (options.y - (labelHeight / 2));\n currentYValue = options.y + (labelHeight / 2);\n }\n if ((angle === 90 || angle === 270) && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? previousYValue >= previousEnd : currentYValue <= previousEnd)) {\n continue;\n }\n previousEnd = isInverse ? previousYValue : currentYValue;\n // ------- Hide Calculation (End) -------------\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n appendChildElement(chart.enableCanvas, parent, labelElement, chart.redraw);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get X value based on lineBreakAlignment for Y axis line break labels only.\n *\n * @param {number} x text x position\n * @param {Axis} axis y axis values\n * @param {number} textWidth axis label width\n * @returns {number} returns suitable axis label x position\n */\n CartesianAxisLayoutPanel.prototype.getAxisLabelXvalue = function (x, axis, textWidth) {\n var anchor = axis.lineBreakAlignment;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n if ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) {\n return (anchor === 'Right' ? x : (anchor === 'Center' ? (x - textWidth / 2) : (x - textWidth)));\n }\n else {\n return (anchor === 'Left' ? x : (anchor === 'Center' ? (x + textWidth / 2) : (x + textWidth)));\n }\n };\n /**\n * To render the yAxis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisBorder = function (axis, index, parent, rect) {\n if (axis.border.width > 0) {\n var startY = void 0;\n var pointY = void 0;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n scrollBarHeight = (isOpposed ? 1 : -1) * scrollBarHeight;\n var gap = (rect.height / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endY = void 0;\n var length_1 = axis.maxLabelSize.width + 10 + ((axis.tickPosition === axis.labelPosition) ?\n axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endX = ((isOpposed && axis.labelPosition === 'Inside') || (!isOpposed\n && axis.labelPosition === 'Outside')) ? rect.x - length_1 + scrollBarHeight : rect.x + length_1 + scrollBarHeight;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointY = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointY = (axis.isAxisInverse ? (1 - pointY) : pointY) * rect.height;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startY = (pointY * -1) + (rect.y + rect.height);\n endY = (pointY * -1) - (gap) + (rect.y + rect.height);\n }\n else {\n startY = (pointY * -1) + gap / 2 + (rect.y + rect.height);\n endY = (pointY * -1) - gap / 2 + (rect.y + rect.height);\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startY > (rect.y + rect.height)) {\n labelBorder += ('M' + ' ' + endX + ' ' + (rect.y + rect.height) + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(rect.y) > (endY)) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX\n + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + (rect.y) + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY + ' ' + 'L' + ' ' +\n endX + ' ' + endY + ' ');\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startY > rect.y + rect.height) && !((endY) < Math.floor(rect.y))) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'M' + ' ' + endX + ' ' + endY + ' ' +\n 'L' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle') ? ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + rect.y + ' ' + 'L' + ' ' +\n (rect.x + scrollBarHeight) + ' ' + (rect.y + rect.height) + ' ') : '';\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n for (var i = 0; i < this.chart.visibleSeries.length; i++) {\n if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule && this.chart.visibleSeries[i].visible) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\n break;\n }\n }\n };\n /**\n * To render the yAxis title\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var isRotated = false;\n var isOpposed = axis.isAxisOpposedPosition;\n var labelRotation = (axis.titleRotation == null ? (isOpposed ? 90 : -90) : axis.titleRotation) % 360;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n (axis.maxLabelSize.width + axis.multiLevelLabelHeight + this.padding));\n padding = isOpposed ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n if ((labelRotation !== -90 && !isOpposed) || (labelRotation !== 90 && isOpposed)) {\n padding += axis.isAxisOpposedPosition ? axis.titleSize.width / 2 + axis.labelPadding : -axis.titleSize.width / 2 - axis.labelPadding;\n isRotated = true;\n }\n var x = rect.x + padding;\n var y = void 0;\n var anchor = void 0;\n if (axis.titleStyle.textAlignment === 'Center') {\n anchor = 'middle';\n y = rect.y + rect.height * 0.5;\n }\n else if (axis.titleStyle.textAlignment === 'Near') {\n anchor = axis.opposedPosition ? 'end' : 'start';\n y = rect.height + rect.y;\n }\n else {\n anchor = axis.opposedPosition ? 'start' : 'end';\n y = rect.y;\n }\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y + (isRotated ? -titleSize : -axis.labelPadding - titleSize), anchor, axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont);\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * xAxis grid line calculation performed here\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointX = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = (isOpposed) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && !this.chart.stockChart) ?\n 0.5 : 0;\n var length = axis.visibleLabels.length;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.y - tickSize - axisLineSize) : (rect.y + tickSize + axisLineSize + scrollBarHeight);\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && length > 0 && axis.labelPlacement === 'BetweenTicks' && !this.chart.stockChart) {\n length += 1;\n }\n //Gridlines\n for (var i = 0; i < length; i++) {\n if (axis.valueType !== 'DateTimeCategory') {\n tempInterval = axis.visibleLabels[i] ? axis.visibleLabels[i].value - ticksbwtLabel\n : (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel;\n }\n else {\n tempInterval = axis.visibleLabels[i] ?\n axis.visibleLabels[i].value - ticksbwtLabel : axis.visibleRange.max;\n }\n pointX = (valueToCoefficient(tempInterval, axis) * rect.width) + rect.x;\n if (pointX >= rect.x && (rect.x + rect.width) >= pointX) {\n if (inside(tempInterval, axis.visibleRange) || this.isBorder(axis, i, pointX)) {\n majorGrid = 'M ' + pointX + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointX + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (pointX) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointX) + ' ' + ticks;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To render missing minor grid lines while zooming\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} i i\n * @param {number} index index\n * @param {IThemeStyle} chartThemeStyle chartThemeStyle\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderMinorGridOnZooming = function (axis, tempInterval, rect, i, index, chartThemeStyle, parent) {\n var minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i, true);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', -1, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', -1, parent, chartThemeStyle.minorTickLine);\n };\n /**\n * To calcualte the axis minor line\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {string[]} axis minor line path\n */\n CartesianAxisLayoutPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, rect, labelIndex, isFirstLabel) {\n var value = tempInterval;\n var coor = 0;\n var position = 0;\n var range = axis.visibleRange;\n var isTickInside = axis.tickPosition === 'Inside';\n var direction = [];\n var tickSize = axis.isAxisOpposedPosition ? -axis.minorTickLines.height : axis.minorTickLines.height;\n var logStart;\n var logEnd;\n var logInterval = 1;\n var logPosition = 1;\n var ticksX = isTickInside ? (rect.y - tickSize) : (rect.y + tickSize);\n var ticksY = isTickInside ? (rect.x + tickSize) : (rect.x - tickSize);\n var minorGird = '';\n var minorTick = '';\n var isInverse = axis.isAxisInverse;\n if (axis.valueType === 'Logarithmic') {\n logStart = Math.pow(axis.logBase, value - range.interval);\n logEnd = Math.pow(axis.logBase, value);\n logInterval = (logEnd - logStart) / (axis.minorTicksPerInterval + 1);\n logPosition = logStart + logInterval;\n }\n if (axis.orientation === 'Horizontal') {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n logPosition += logInterval;\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil((isInverse ? (1 - position) : position) * rect.width);\n coor = (Math.floor(position + rect.x));\n minorGird = minorGird.concat('M' + ' ' + coor + ' ' + (this.seriesClipRect.y)\n + 'L ' + coor + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height));\n coor = (Math.floor(position + rect.x));\n minorTick = minorTick.concat('M' + ' ' + coor + ' ' + (rect.y)\n + 'L ' + coor + ' ' + (ticksX + axis.scrollBarHeight));\n }\n }\n }\n else {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil(((isInverse ? (1 - position) : position)) * rect.height) * -1; // For inversed axis\n coor = (Math.floor(position + rect.y + rect.height));\n minorGird = minorGird.concat('M' + ' ' + (this.seriesClipRect.x) + ' ' + coor\n + 'L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + coor + ' ');\n coor = (Math.floor(position + rect.y + rect.height));\n minorTick = minorTick.concat('M' + ' ' + rect.x + ' ' + coor + 'L ' + (ticksY - axis.scrollBarHeight) +\n ' ' + coor + ' ');\n }\n logPosition += logInterval;\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To find the numeric value of the log\n *\n * @param {Axis} axis axis\n * @param {number} logPosition logPosition\n * @param {number} value value\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {number} value\n */\n CartesianAxisLayoutPanel.prototype.findLogNumeric = function (axis, logPosition, value, labelIndex, isFirstLabel) {\n var range = axis.visibleRange;\n var tempValue;\n if (axis.valueType === 'Logarithmic') {\n value = logBase(logPosition, axis.logBase);\n }\n else if (axis.valueType === 'DateTime') {\n tempValue = axis.dateTimeInterval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n else if (axis.valueType === 'DateTimeCategory') {\n var padding = axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n value += ((axis.visibleLabels[labelIndex + 1] ?\n axis.visibleLabels[labelIndex + 1].value - padding : axis.visibleRange.max) -\n (axis.visibleLabels[labelIndex] ?\n axis.visibleLabels[labelIndex].value - padding : axis.visibleRange.min)) /\n (axis.minorTicksPerInterval + 1);\n }\n else {\n tempValue = range.interval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n return value;\n };\n /**\n * To render the xAxis Labels\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelSpace = axis.labelPadding;\n var labelHeight;\n var elementSize;\n var labelPadding;\n var anchor;\n var pixel = 10;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var islabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isHorizontalAngle = (angle === 0 || angle === -180 || angle === 180);\n var options;\n var labelWidth;\n var isInverse = axis.isAxisInverse;\n var isLeft;\n var previousEnd = isInverse ? (rect.x + rect.width) : rect.x;\n var width = 0;\n var length = axis.visibleLabels.length;\n var intervalLength;\n var label;\n var isAxisBreakLabel;\n var scrollBarHeight = axis.scrollbarSettings.enable || (!islabelInside && isNullOrUndefined(axis.crossesAt)\n && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) ? axis.scrollBarHeight : 0;\n var newPoints = [];\n var isRotatedLabelIntersect = false;\n var textPoints = [];\n var rotatedLabelSize = new Size(0, 0);\n padding += (angle === 90 || angle === 270 || angle === -90 || angle === -270) ? (islabelInside ? 5 : -5) : 0;\n var isLabelUnderAxisLine = ((!isOpposed && !islabelInside) || (isOpposed && islabelInside));\n var isEndAnchor = isLabelUnderAxisLine ?\n ((360 >= angle && angle >= 180) || (-1 >= angle && angle >= -180)) :\n ((1 <= angle && angle <= 180) || (-181 >= angle && angle >= -360));\n for (var i = 0, len = length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(label.originalText) || (axis.labelIntersectAction === 'Wrap' && label.text.length > 1);\n pointX = (valueToCoefficient(label.value, axis) * rect.width) + rect.x;\n elementSize = label.size;\n intervalLength = rect.width / length;\n labelWidth = isAxisBreakLabel ? label.breakLabelSize.width : elementSize.width;\n width = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle === 0 &&\n labelWidth > intervalLength) ? intervalLength : labelWidth;\n labelHeight = elementSize.height / 4;\n pointX -= (isAxisBreakLabel || angle !== 0) ? 0 : (width / 2);\n // label X value adjustment for label rotation (Start)\n if (angle !== 0) {\n if (isAxisBreakLabel) {\n pointX -= axis.lineBreakAlignment === 'Left' ? (label.breakLabelSize.width / 2) : axis.lineBreakAlignment === 'Right' ?\n -(label.breakLabelSize.width / 2) : 0;\n }\n else {\n pointX -= (angle === -90 || angle === 270 ? -labelHeight : (angle === 90 || angle === -270) ? labelHeight : 0);\n }\n }\n // label X value adjustment for label rotation (End)\n if (axis.labelStyle.textAlignment === 'Far') {\n pointX = pointX + width - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointX = pointX - width + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointX = pointX;\n }\n // For line break label alignment like left, right & center in angle 0\n if (isAxisBreakLabel && axis.lineBreakAlignment !== 'Center' && angle === 0) {\n pointX += axis.lineBreakAlignment === 'Left' ? -(width / 2) : (width / 2);\n }\n var paddingForBreakLabel = isAxisBreakLabel ?\n (isHorizontalAngle ? (axis.opposedPosition || islabelInside ? 0 : elementSize.height) : (label.breakLabelSize.width / 2)) : 0;\n padding = isAxisBreakLabel ? (tickSpace + labelSpace + axis.lineStyle.width * 0.5) : padding;\n // label Y value adjustment (Start)\n if (islabelInside && angle) {\n if (isAxisBreakLabel) {\n pointY = isOpposed ? (rect.y + padding + (paddingForBreakLabel)) : (rect.y - padding - (paddingForBreakLabel));\n }\n else {\n pointY = isOpposed ? (rect.y + padding + labelHeight) : (rect.y - padding - labelHeight);\n }\n }\n else {\n if (isAxisBreakLabel) {\n labelPadding = !isLabelUnderAxisLine ? -(padding + scrollBarHeight + (paddingForBreakLabel)) :\n padding + scrollBarHeight + (angle ? paddingForBreakLabel : (3 * labelHeight));\n }\n else {\n labelPadding = !isLabelUnderAxisLine ?\n -(padding + scrollBarHeight + (angle ? labelHeight : (label.index > 1 ? (2 * labelHeight) : 0))) :\n padding + scrollBarHeight + ((angle ? 1 : 3) * labelHeight);\n }\n pointY = (rect.y + (labelPadding * label.index));\n }\n // label Y value adjustment (End)\n if (isAxisBreakLabel) {\n anchor = this.getAnchor(axis); // for break label self alignment\n }\n else {\n anchor = (chart.enableRtl) ? ((isEndAnchor) ? '' : 'end') : (chart.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n if (angle !== 0) {\n rotatedLabelSize = rotateTextSize(label.labelStyle, label.originalText, angle, chart);\n isLeft = ((angle < 0 && angle > -90) || (angle < -180 && angle > -270) || (angle > 90 && angle < 180) || (angle > 270 && angle < 360));\n }\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (isInverse && i === 0)) && (options.x + (angle === 0 ? width : rotatedLabelSize.width) > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && (options.x < rect.x || (angle !== 0 && isLeft && options.x - rotatedLabelSize.width <= rect.x) || (axis.lineBreakAlignment === 'Center' && options.x - (label.size.width / label.text.length) / 2 < rect.x && angle === 0))) {\n intervalLength -= (rect.x - options.x);\n if (anchor === '' && !isInverse && angle === 0) {\n if (options.x <= 0) {\n pointX = options.x = 0;\n }\n else {\n pointX = options.x;\n }\n intervalLength = rect.width / length;\n }\n else if (isLeft && angle !== 0) {\n intervalLength = rect.width / length;\n if (intervalLength > rect.x + rotatedLabelSize.width) {\n options.x = pointX = rect.x + rotatedLabelSize.width;\n }\n else {\n options.x = pointX = rect.x + intervalLength - padding;\n }\n }\n else if (isAxisBreakLabel && axis.lineBreakAlignment === 'Center' && axis.labelPlacement === 'OnTicks' && angle === 0) {\n var maxWidth = 0;\n for (var i_1 = 0; i_1 < label.text.length; i_1++) {\n var breakLabelWidth = measureText(label.text[i_1], axis.labelStyle, chart.themeStyle.axisLabelFont).width;\n if (breakLabelWidth > maxWidth) {\n maxWidth = breakLabelWidth;\n }\n }\n options.x = pointX = rect.x + maxWidth / 2;\n }\n else if (!(anchor === 'start' && options.x > 0)) {\n options.x = pointX = !isHorizontalAngle ? rect.x + padding : rect.x;\n }\n }\n else if ((i === len - 1 || (isInverse && i === 0)) && (((options.x + width) > rect.x + rect.width && anchor !== 'end' && angle === 0) || (angle !== 0 && !isLeft && (options.x + rotatedLabelSize.width) > rect.x + rect.width) || (anchor === 'end' && options.x > rect.x + rect.width))) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim' && angle === 0) {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else if (angle !== 0) {\n if (rotatedLabelSize.width < intervalLength) {\n intervalLength = rotatedLabelSize.width;\n }\n }\n else {\n intervalLength = width;\n }\n if (angle !== 0) {\n options.x = pointX = rect.x + rect.width - intervalLength + padding;\n }\n else {\n options.x = pointX = !isHorizontalAngle ? rect.x + rect.width - intervalLength / 2 : rect.x + rect.width - intervalLength;\n }\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\n options.labelRotation = angle;\n // ------- Hide Calculation (Start) -------------\n // Currect label actual start value (Start)\n var xValue = void 0;\n var xValue2 = void 0;\n if (isAxisBreakLabel && angle === 0) {\n if (axis.lineBreakAlignment === 'Right') {\n xValue = (options.x - width);\n xValue2 = options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n xValue = (options.x - (width / 2));\n xValue2 = options.x + (width / 2);\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n // Currect label actual start value (End)\n if (angle === 0 && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = isInverse ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = isInverse ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n // Previous label actual end value (End)\n // ------- Hide Calculation (End) -------------\n // label Rotataion calculation (Start)\n if (angle !== 0) {\n var height = void 0;\n var rect_1 = void 0;\n if (isAxisBreakLabel) {\n var xAdjustment = 0;\n var yAdjustment = 0;\n height = (label.breakLabelSize.height);\n yAdjustment = (label.breakLabelSize.height) - 4; // 4 for label bound correction\n // xAdjustment (Start)\n if (axis.lineBreakAlignment === 'Center') {\n xAdjustment = -(label.breakLabelSize.width / 2);\n }\n else if (axis.lineBreakAlignment === 'Right') {\n xAdjustment = -label.breakLabelSize.width;\n }\n // xAdjustment (End)\n if (isLabelUnderAxisLine) {\n yAdjustment = (label.breakLabelSize.height) / (options.text.length + 1);\n }\n rect_1 = new Rect(options.x + xAdjustment, options.y - (yAdjustment), label.breakLabelSize.width, height);\n }\n else {\n height = (pointY) - (options.y - ((label.size.height / 2)));\n rect_1 = new Rect(options.x, options.y - ((label.size.height / 2) - 5), label.size.width, height);\n }\n var rectCoordinates = this.getRectanglePoints(rect_1);\n var rectCenterX = isAxisBreakLabel ? rect_1.x + (rect_1.width / 2) : pointX;\n var rectCenterY = isAxisBreakLabel ? rect_1.y + (rect_1.height / 2) : (pointY - (height / 2));\n if (isAxisBreakLabel) {\n options.transform = 'rotate(' + angle + ',' + rectCenterX + ',' + rectCenterY + ')';\n }\n else {\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n }\n newPoints.push(getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle));\n isRotatedLabelIntersect = false;\n if (axis.labelIntersectAction !== 'None') {\n for (var index_1 = i; index_1 > 0; index_1--) {\n if (newPoints[i] && newPoints[index_1 - 1] && isRotatedRectIntersect(newPoints[i], newPoints[index_1 - 1])) {\n isRotatedLabelIntersect = true;\n newPoints[i] = null;\n break;\n }\n }\n }\n var rotateAngle = ((angle > 0 && angle < 90) || (angle > 180 && angle < 270) || (angle < -90 && angle > -180) || (angle < -270 && angle > -360));\n var textRect = new Rect(options.x, options.y - (elementSize.height / 2 + padding / 2), label.size.width, height);\n var textRectCoordinates = this.getRectanglePoints(textRect);\n var rectPoints = [];\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y));\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y + axis.maxLabelSize.height));\n textPoints.push(getRotatedRectangleCoordinates(textRectCoordinates, rectCenterX, rectCenterY, angle));\n var newRect = new Rect(0, axis.rect.y, this.chart.availableSize.width, axis.maxLabelSize.height * 2);\n for (var k = 0; k < textPoints[i].length; k++) {\n if (!axis.opposedPosition && !withInBounds(textPoints[i][k].x, textPoints[i][k].y, newRect) && typeof options.text === 'string') {\n var interSectPoint = this.calculateIntersection(textPoints[i][0], textPoints[i][1], rectPoints[0], rectPoints[1]);\n var rectPoint1 = rotateAngle ? this.chart.availableSize.width - pointX : pointX;\n var rectPoint2 = interSectPoint.y - axis.rect.y;\n var trimValue = Math.sqrt((rectPoint1 * rectPoint1) + (rectPoint2 * rectPoint2));\n options.text = textTrim(trimValue, label.text, label.labelStyle, chart.enableRtl, chart.themeStyle.axisLabelFont);\n }\n }\n }\n // label Rotataion calculation (End)\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, (axis.isAxisOpposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, null, null, label.size, isRotatedLabelIntersect, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n parent.appendChild(labelElement);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateIntersection = function (p1, p2, p3, p4) {\n var c2x = p3.x - p4.x;\n var c3x = p1.x - p2.x;\n var c2y = p3.y - p4.y;\n var c3y = p1.y - p2.y;\n var d = c3x * c2y - c3y * c2x;\n var u1 = p1.x * p2.y - p1.y * p2.x;\n var u4 = p3.x * p4.y - p3.y * p4.x;\n var px = (u1 * c2x - c3x * u4) / d;\n var py = (u1 * c2y - c3y * u4) / d;\n var p = { x: px, y: py };\n return p;\n };\n /**\n * To get text anchor value for line break labels.\n *\n * @param {Axis} axis axis model\n * @returns {string} returns text anchor\n */\n CartesianAxisLayoutPanel.prototype.getAnchor = function (axis) {\n return (axis.lineBreakAlignment === 'Center' ? 'middle' : (this.chart.enableRtl) ? (axis.lineBreakAlignment === 'Left' ? 'end' : 'start') : (axis.lineBreakAlignment === 'Left' ? 'start' : 'end'));\n };\n /**\n * Get rect coordinates\n *\n * @param {Rect} rect rect\n * @returns {ChartLocation[]} rectangle points\n */\n CartesianAxisLayoutPanel.prototype.getRectanglePoints = function (rect) {\n var point1 = new ChartLocation(rect.x, rect.y);\n var point2 = new ChartLocation(rect.x + rect.width, rect.y);\n var point3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var point4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [point1, point2, point3, point4];\n };\n /**\n * To get axis label text\n *\n * @param {VisibleLabels} label label\n * @param {Axis} axis axis\n * @param {number} intervalLength intervalLength\n * @returns {string | string[]} label or label collection\n */\n CartesianAxisLayoutPanel.prototype.getLabelText = function (label, axis, intervalLength) {\n if (isBreakLabel(label.originalText)) {\n var result = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n str = this.findAxisLabel(axis, label.text[index], intervalLength);\n result.push(str);\n }\n return result;\n }\n else {\n return this.findAxisLabel(axis, label.text, intervalLength);\n }\n };\n /**\n * To render the x-axis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} axisRect axisRect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisBorder = function (axis, index, parent, axisRect) {\n if (axis.border.width > 0) {\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n var startX = void 0;\n var startY = axisRect.y + ((isOpposed ? -1 : 1) * scrollBarHeight);\n var padding = 10;\n var pointX = void 0;\n var gap = (axisRect.width / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endX = void 0;\n var length_2 = axis.maxLabelSize.height +\n ((axis.tickPosition === axis.labelPosition) ? axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endY = ((isOpposed && axis.labelPosition === 'Inside') ||\n (!isOpposed && axis.labelPosition === 'Outside')) ?\n (axisRect.y + length_2 + padding + scrollBarHeight) : (axisRect.y - length_2 - padding - scrollBarHeight);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointX = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointX = (axis.isAxisInverse ? (1 - pointX) : pointX) * axisRect.width;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startX = pointX + axisRect.x;\n endX = pointX + (gap) + axisRect.x;\n }\n else {\n startX = pointX - gap * 0.5 + axisRect.x;\n endX = pointX + gap * 0.5 + axisRect.x;\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startX < axisRect.x && axis.labelPlacement !== 'OnTicks') {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1) && !(i === axis.visibleLabels.length - 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\n startX = (i === 0 && axis.labelPlacement === 'OnTicks') ? axisRect.x : startX;\n endX = ((i === axis.visibleLabels.length - 1) && axis.labelPlacement === 'OnTicks') ? endX - gap * 0.5 : endX;\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' +\n endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === 0) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + startX + ' ' + endY + ' L ' + (axisRect.x) + ' ' + endY);\n }\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + endX + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + endY + ' L ' + (axisRect.width + axisRect.x) + ' ' + endY);\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startX < axisRect.x) && !(Math.floor(endX) > axisRect.width + axisRect.x)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + startY + ' L ' + endX + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle' ? ('M ' + ' ' + axisRect.x + ' ' + startY + 'L' + ' ' +\n (axisRect.x + axisRect.width) + ' ' + startY) : '');\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n for (var i = 0; i < this.chart.visibleSeries.length; i++) {\n if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0 && this.chart.visibleSeries[i].visible) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\n break;\n }\n }\n };\n /**\n * To create border element of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} labelBorder labelBorder\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createAxisBorderElement = function (axis, index, labelBorder, parent) {\n var element = getElement(this.chart.element.id + '_BorderLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + '_BorderLine_' + index, 'transparent', axis.border.width, axis.border.color || this.chart.themeStyle.axisLine, 1, '', labelBorder));\n borderElement.style.pointerEvents = 'none';\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, false, 'x', 'y', null, direction, true);\n };\n /**\n * To find the axis label of the intersect action\n *\n * @param {Axis} axis axis\n * @param {string} label label\n * @param {number} width width\n * @returns {string} label\n */\n CartesianAxisLayoutPanel.prototype.findAxisLabel = function (axis, label, width) {\n return (axis.labelIntersectAction === 'Trim' ?\n ((axis.angle % 360 === 0 && !axis.enableTrim) ? textTrim(width, label, axis.labelStyle, this.chart.enableRtl, this.chart.themeStyle.axisLabelFont) : label) : label);\n };\n /**\n * X-Axis Title function performed\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var elementSize = measureText(axis.title, axis.titleStyle, this.chart.themeStyle.axisTitleFont);\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n axis.maxLabelSize.height + axis.multiLevelLabelHeight + axis.labelPadding);\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n padding = axis.isAxisOpposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var labelRotation = axis.titleRotation ? axis.titleRotation : 0;\n var x = void 0;\n var y = rect.y + padding;\n var anchor = void 0;\n if (axis.titleStyle.textAlignment === 'Center') {\n anchor = 'middle';\n x = rect.x + rect.width * 0.5;\n }\n else if (axis.titleStyle.textAlignment === 'Near') {\n anchor = 'start';\n x = rect.x;\n }\n else {\n anchor = 'end';\n x = rect.x + rect.width;\n }\n if (labelRotation !== 0) {\n y += axis.opposedPosition ? -(axis.titleSize.height / 2 + elementSize.height / 4) :\n axis.titleSize.height / 2 - elementSize.height / 4;\n }\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y, anchor, axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont);\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * To render the axis grid and tick lines(Both Major and Minor)\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {MajorTickLinesModel | MinorTickLinesModel | MajorGridLinesModel | MinorGridLinesModel} gridModel gridModel\n * @param {string} gridId gridId\n * @param {number} gridIndex gridIndex\n * @param {Element} parent parent\n * @param {string} themeColor themeColor\n * @param {string} dashArray dashArray\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderGridLine = function (axis, index, gridDirection, gridModel, gridId, gridIndex, parent, themeColor, dashArray) {\n if (dashArray === void 0) { dashArray = null; }\n var chart = this.chart;\n var direction;\n var element;\n if (gridModel.width > 0 && axis.visible && axis.internalVisibility && gridDirection) {\n element = getElement(chart.element.id + gridId + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n element = null;\n this.htmlObject = chart.renderer.drawPath(new PathOption(chart.element.id + gridId + index + '_' + gridIndex, 'transparent', gridModel.width, gridModel.color || themeColor, null, dashArray, gridDirection));\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, true);\n }\n };\n /**\n * To Find the parent node of the axis\n *\n * @param {string} elementId elementId\n * @param {Element} label label\n * @param {number} index index\n * @returns {Element} parent node of the axis\n */\n CartesianAxisLayoutPanel.prototype.findParentNode = function (elementId, label, index) {\n if (document.getElementById(elementId + 'AxisGroup' + index + 'Inside').contains(document.getElementById(label.id))) {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Inside');\n }\n else {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Outside');\n }\n };\n /**\n * Create Zooming Labels Function Called here\n *\n * @param {Chart} chart chart\n * @param {Element} labelElement labelElement\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createZoomingLabel = function (chart, labelElement, axis, index, rect) {\n var parentNode = this.findParentNode(chart.element.id, labelElement, index);\n labelElement.setAttribute('opacity', '0.3');\n var zoomElement = chart.renderer.createGroup({\n id: chart.element.id + 'AxisLabels_Zoom' + index\n });\n zoomElement = createZoomingLabels(chart, axis, zoomElement, index, axis.orientation === 'Vertical', rect);\n parentNode.replaceChild(labelElement, document.getElementById(labelElement.id));\n if (getElement(chart.element.id + 'AxisLabels_Zoom' + index)) {\n parentNode.replaceChild(zoomElement, document.getElementById(zoomElement.id));\n }\n else {\n parentNode.appendChild(zoomElement);\n }\n };\n return CartesianAxisLayoutPanel;\n}());\nexport { CartesianAxisLayoutPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/check-param-names */\n/* eslint-disable jsdoc/require-param-type */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-param-description */\n/* eslint-disable valid-jsdoc */\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { withInBounds, PointData, stopTimer } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor } from '../../common/utils/helper';\n/**\n * Marker Module used to render the marker for line type series.\n */\nvar MarkerExplode = /** @class */ (function (_super) {\n __extends(MarkerExplode, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function MarkerExplode(chart) {\n var _this = _super.call(this, chart) || this;\n _this.elementId = chart.element.id;\n _this.commonXvalues = [];\n return _this;\n }\n /**\n * @hidden\n */\n MarkerExplode.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseUpHandler = function () {\n var chart = this.chart;\n if (chart.isTouch && !chart.crosshair.enable && !this.isSelected(chart)) {\n this.markerMove(true);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if ((chart.highlightMode !== 'None' || (chart.tooltip.enable)) && (!chart.isTouch || chart.startMove) && !this.isSelected(chart)) {\n this.markerMove(false);\n }\n };\n MarkerExplode.prototype.markerMove = function (remove) {\n var _this = this;\n var chart = this.chart;\n this.currentPoints = [];\n var data;\n var previous;\n var explodeSeries;\n var series;\n if (!chart.tooltip.shared || !chart.tooltip.enable) {\n data = this.getData();\n series = data.series;\n previous = this.previousPoints[0];\n explodeSeries = series && ((series.type === 'Bubble' || series.drawType === 'Scatter' || series.type === 'Scatter') ||\n (((series.type !== 'Candle') && (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose')) &&\n (series.marker.visible && series.marker.width !== 0 && series.marker.height !== 0)));\n data.lierIndex = this.lierIndex;\n if (data.point && explodeSeries && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex))) {\n this.currentPoints.push(data);\n }\n if (data.point && explodeSeries && chart.isPointMouseDown) {\n this.currentPoints.push(data);\n }\n }\n else {\n if (!withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n return null;\n }\n if (chart.tooltip.enable) {\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n if (!this.chart.tooltip.showNearestPoint) {\n this.currentPoints = this.chart.tooltipModule.currentPoints;\n }\n else {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var chartSeries = _a[_i];\n if (!chartSeries.enableTooltip || chartSeries.category === 'Indicator') {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && chartSeries.visible) {\n data = this.getClosestX(chart, chartSeries, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && chartSeries.visible && pointData.point !== null) {\n data = new PointData(chartSeries.points[pointData.point.index], chartSeries);\n }\n if (data) {\n this.currentPoints.push(data);\n data = null;\n }\n }\n }\n }\n }\n var length = this.previousPoints.length;\n if (this.currentPoints.length > 0 || (length > 0 && chart.tooltip.shared)) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && (this.currentPoints.length == 0 || (this.previousPoints[0].point !== this.currentPoints[0].point)))) {\n if (length > 0) {\n for (var _b = 0, _c = this.previousPoints; _b < _c.length; _b++) {\n var previousPoint = _c[_b];\n if (!isNullOrUndefined(previousPoint)) {\n this.removeHighlightedMarker(previousPoint.series, previousPoint.point);\n }\n }\n }\n var _loop_1 = function (data_1) {\n if ((data_1 && data_1.point) || ((series.type !== 'Candle') &&\n (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose'))) {\n stopTimer(this_1.markerExplode);\n this_1.isRemove = true;\n data_1.point.symbolLocations.map(function (location, index) {\n if (data_1.series.marker.allowHighlight && (!data_1.series.isRectSeries || data_1.point.marker.visible)) {\n _this.drawTrackBall(data_1.series, data_1.point, location, index);\n }\n });\n }\n };\n var this_1 = this;\n for (var _d = 0, _e = this.currentPoints; _d < _e.length; _d++) {\n var data_1 = _e[_d];\n _loop_1(data_1);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n }\n }\n if (!chart.tooltip.enable && ((this.currentPoints.length === 0 && this.isRemove) || (remove && this.isRemove) ||\n !withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect))) {\n this.isRemove = false;\n if (!isNullOrUndefined(this.previousPoints[0])) {\n this.markerExplode = +setTimeout(function () {\n if (_this.previousPoints[0]) {\n _this.removeHighlightedMarker(_this.previousPoints[0].series, _this.previousPoints[0].point);\n }\n }, 2000);\n }\n }\n this.currentPoints = [];\n };\n MarkerExplode.prototype.animationDuration = function () {\n var duration = 200;\n if (this.chart.maxPointCount > 100) {\n duration = 10;\n }\n else if (this.chart.maxPointCount > 50) {\n duration = 100;\n }\n return duration;\n };\n MarkerExplode.prototype.drawTrackBall = function (series, point, location, index) {\n var marker = point.marker;\n var seriesMarker = series.marker;\n var shape = marker.shape || seriesMarker.shape || 'Circle';\n var svg;\n if (shape === 'None' || shape === 'Image') {\n return null;\n }\n var element = series.symbolElement || series.seriesElement;\n var className;\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n className = this.chart.highlightModule.generateStyle(series);\n }\n if (this.chart.selectionModule && this.chart.selectionMode !== 'None') {\n className = this.chart.selectionModule.generateStyle(series);\n }\n var symbolId = this.elementId + '_Series_' + series.index + '_Point_' + point.index + '_Trackball' +\n (index ? index : '');\n var size = new Size((marker.width || seriesMarker.width) + 3, (marker.height || seriesMarker.height) + 3);\n var border = (marker.border || series.border);\n var explodeSeries = (series.type === 'BoxAndWhisker' || series.type === 'Bubble' || series.type === 'Scatter');\n var borderColor = (border.color && border.color !== 'transparent') ? border.color :\n marker.fill || point.interior || (explodeSeries ? point.color : series.interior);\n var colorValue = convertHexToColor(colorNameToHex(borderColor));\n var borderWidth = marker.border ? marker.border.width : seriesMarker.border.width;\n var markerShadow = series.chart.themeStyle.markerShadow ||\n 'rgba(' + colorValue.r + ',' + colorValue.g + ',' + colorValue.b + ',0.2)';\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'hidden');\n }\n if (this.chart.enableCanvas) {\n var trackElement = document.getElementById(this.chart.element.id + '_Secondary_Element');\n svg = this.chart.svgRenderer.createSvg({\n id: this.chart.element.id + '_trackball_svg',\n width: this.chart.availableSize.width,\n height: this.chart.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n trackElement.appendChild(svg);\n }\n for (var i = 0; i < 2; i++) {\n var options = new PathOption(symbolId + '_' + i, i ? (marker.fill || point.color || (explodeSeries ? series.interior : '#ffffff')) : 'transparent', borderWidth + (i ? 0 : 8), i ? borderColor : markerShadow, (marker.opacity || seriesMarker.opacity), null, null);\n var symbol = drawSymbol(location, shape, size, marker.imageUrl, options, '', this.chart.svgRenderer, series.clipRect);\n // incident: 252450 point click selection not working while maker explode\n //symbol.setAttribute('style', 'pointer-events:none');\n symbol.setAttribute('class', this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n var selectionId = element.id.indexOf('Symbol') !== -1 ? '_Symbol' : '';\n var seletionElem = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + selectionId);\n if (className !== '' && !isNullOrUndefined(className) && !isNullOrUndefined(seletionElem) &&\n seletionElem.hasAttribute('class') && (className === seletionElem.getAttribute('class'))) {\n symbol.classList.add(className);\n }\n symbol.setAttribute('clip-path', element.getAttribute('clip-path'));\n symbol.setAttribute('transform', element.getAttribute('transform'));\n if (this.chart.enableCanvas) {\n svg.appendChild(symbol);\n }\n else {\n this.chart.svgObject.appendChild(symbol);\n }\n }\n this.doAnimation(series, point, false);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n MarkerExplode.prototype.doAnimation = function (series, point, endAnimate) {\n if (endAnimate === void 0) { endAnimate = false; }\n var duration = this.animationDuration();\n var delay = series.animation.delay;\n var rectElements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = rectElements.length; i < len; i++) {\n this.trackballAnimate(rectElements[i], delay, duration, series, point.index, point.symbolLocations[0], false, endAnimate);\n }\n };\n /**\n * Animation Effect Calculation End\n *\n * @private\n */\n MarkerExplode.prototype.trackballAnimate = function (elements, delays, durations, series, pointIndex, point, isLabel, endAnimate) {\n var centerX = point.x;\n var centerY = point.y;\n var clipX = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.x : 0;\n var clipY = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.y : 0;\n var height = 0;\n //(<HTMLElement>elements).style.visibility = 'hidden';\n var reducedHeight = endAnimate ? -8 : 1;\n var transform = elements.getAttribute('transform');\n new Animation({}).animate(elements, {\n duration: durations,\n delay: delays,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n elements.setAttribute('transform', 'translate(' + (centerX + clipX)\n + ' ' + (centerY + clipY) + ') scale(1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n elements.style.visibility = '';\n elements.setAttribute('transform', transform);\n if (!isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n if (endAnimate) {\n remove(elements);\n }\n }\n });\n };\n /**\n * @param series\n * @param point\n * @param fadeOut\n * @param series\n * @param point\n * @param fadeOut\n * @param series\n * @param point\n * @param fadeOut\n * @hidden\n */\n MarkerExplode.prototype.removeHighlightedMarker = function (series, point, fadeOut) {\n if (series === void 0) { series = null; }\n if (point === void 0) { point = null; }\n if (fadeOut === void 0) { fadeOut = false; }\n if (!isNullOrUndefined(series) && !isNullOrUndefined(point)) {\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n var trackballElements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = trackballElements.length; i < len; i++) {\n remove(trackballElements[0]);\n }\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n }\n else {\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point_1 = _a[_i];\n var elements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point_1.index);\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point_1.index + '_Symbol');\n for (var i = 0, len = elements.length; i < len; i++) {\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n remove(elements[0]);\n }\n }\n }\n if (fadeOut) {\n this.previousPoints = [];\n }\n };\n return MarkerExplode;\n}(ChartData));\nexport { MarkerExplode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { RectOption, appendChildElement, getElement, appendClipElement } from '../../common/utils/helper';\nimport { findlElement, drawSymbol, markerAnimate, CircleOption } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\nexport var markerShapes = [\"Circle\", \"Triangle\", \"Diamond\", \"Rectangle\", \"Pentagon\", \"InvertedTriangle\", \"VerticalLine\", \"Cross\", \"Plus\", \"HorizontalLine\"];\n/**\n * Marker module used to render the marker for line type series.\n */\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function Marker(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Render the marker for series.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.render = function (series) {\n var _this = this;\n var redraw = series.chart.redraw;\n this.createElement(series, redraw);\n var _loop_1 = function (point) {\n if (point.visible && point.symbolLocations && point.symbolLocations.length) {\n point.symbolLocations.map(function (location, index) {\n if (series.marker.shape !== 'None') {\n _this.renderMarker(series, point, location, index, redraw);\n }\n });\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n };\n Marker.prototype.renderMarker = function (series, point, location, index, redraw) {\n var seriesIndex = series.index === undefined ? series.category : series.index;\n var marker = series.marker;\n series.marker.shape = series.marker.shape ? series.marker.shape : markerShapes[seriesIndex % 10];\n var border = {\n color: marker.border.color,\n width: marker.border.width\n };\n var borderColor = marker.border.color;\n var previousLocation;\n var previousPath;\n var circlePath;\n var shapeOption;\n location.x = location.x + marker.offset.x;\n location.y = location.y - marker.offset.y;\n var isBoxPlot = series.type === 'BoxAndWhisker';\n var fill = marker.fill || ((isBoxPlot || series.marker.isFilled) ? point.interior || series.interior : '#ffffff');\n var markerElement;\n var parentElement = isBoxPlot ?\n findlElement(series.seriesElement.childNodes, 'Series_' + series.index + '_Point_' + point.index)\n : series.symbolElement;\n border.color = borderColor || series.setPointColor(point, series.interior);\n var symbolId = this.elementId + '_Series_' + seriesIndex + '_Point_' + point.index + '_Symbol' +\n (index ? index : '');\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: point.isEmpty ? (series.emptyPointSettings.fill || fill) : fill,\n border: {\n color: series.type === 'BoxAndWhisker' ?\n (!isNullOrUndefined(borderColor) && borderColor !== 'transparent') ? borderColor :\n getSaturationColor(fill, -0.6)\n : border.color,\n width: border.width\n },\n height: marker.height, width: marker.width, shape: marker.shape\n };\n argsData.border = series.setBorderColor(point, { width: argsData.border.width, color: argsData.border.color });\n if (!series.isRectSeries || series.type === 'BoxAndWhisker') {\n this.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n }\n point.color = argsData.fill;\n if (!argsData.cancel) {\n var y = void 0;\n if (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.drawType === 'RangeColumn'\n || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') {\n y = index ? point.low : point.high;\n }\n else if (isBoxPlot) {\n y = point.outliers[index];\n }\n else {\n y = point.y;\n }\n var markerFill = argsData.point.marker.fill || argsData.fill;\n var markerBorder = void 0;\n if (!isNullOrUndefined(argsData.point.marker.border)) {\n markerBorder = {\n color: argsData.point.marker.border.color || argsData.border.color,\n width: argsData.point.marker.border.width || argsData.border.width\n };\n }\n else {\n markerBorder = { color: argsData.border.color, width: argsData.border.width };\n }\n var markerWidth = argsData.point.marker.width || argsData.width;\n var markerHeight = argsData.point.marker.height || argsData.height;\n var markerOpacity = argsData.point.marker.opacity || marker.opacity;\n var markerShape = argsData.point.marker.shape || argsData.shape;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n shapeOption = new PathOption(symbolId, markerFill, markerBorder.width, markerBorder.color, markerOpacity, null);\n if ((parentElement !== undefined && parentElement !== null) || this.chart.enableCanvas) {\n if (redraw && getElement(shapeOption.id)) {\n markerElement = getElement(shapeOption.id);\n circlePath = markerShape === 'Circle' ? 'c' : '';\n previousLocation = {\n x: +markerElement.getAttribute(circlePath + 'x'), y: +markerElement.getAttribute(circlePath + 'y')\n };\n previousPath = markerElement.getAttribute('d');\n }\n markerElement = drawSymbol(location, markerShape, new Size(markerWidth, markerHeight), imageURL, shapeOption, point.x.toString() + ':' + y.toString(), this.chart.renderer, series.clipRect);\n if (markerElement) {\n markerElement.setAttribute('role', 'img');\n markerElement.setAttribute('aria-label', (point.x + ': ' + point.y + ', ' + series.name));\n }\n appendChildElement(this.chart.enableCanvas, parentElement, markerElement, redraw, true, circlePath + 'x', circlePath + 'y', previousLocation, previousPath, false, false, null, series.chart.duration);\n }\n point.marker = {\n border: markerBorder, fill: markerFill, height: markerHeight,\n visible: true, shape: markerShape, width: markerWidth, imageUrl: imageURL\n };\n }\n else {\n location = null;\n point.marker = {\n visible: false\n };\n }\n };\n Marker.prototype.createElement = function (series, redraw) {\n var markerClipRect;\n var marker = series.marker;\n // 8 for extend border value 5 for extend size value\n var explodeValue = marker.border.width + 8 + 5;\n var render = series.chart.svgRenderer;\n var index = series.index === undefined ? series.category : series.index;\n var options;\n var transform = series.chart.chartAreaType === 'Cartesian' ? 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')' : '';\n if (marker.visible) {\n var markerHeight = (marker.height + explodeValue) / 2;\n var markerWidth = (marker.width + explodeValue) / 2;\n if (series.chart.chartAreaType === 'Cartesian') {\n var isZoomed = series.xAxis.zoomFactor < 1 || series.xAxis.zoomPosition > 0;\n options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: isZoomed ? 0 : -markerWidth, y: -markerHeight,\n width: series.clipRect.width + (isZoomed ? 0 : markerWidth * 2),\n height: series.clipRect.height + markerHeight * 2\n });\n markerClipRect = appendClipElement(redraw, options, render);\n }\n else {\n options = new CircleOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, series.clipRect.width / 2 + series.clipRect.x, series.clipRect.height / 2 + series.clipRect.y, series.chart.radius + Math.max(markerHeight, markerWidth));\n markerClipRect = appendClipElement(redraw, options, render, 'drawCircularClipPath');\n }\n options = {\n 'id': this.elementId + 'SymbolGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.elementId + '_ChartMarkerClipRect_' + index + ')'\n };\n series.symbolElement = render.createGroup(options);\n series.symbolElement.appendChild(markerClipRect);\n if (this.chart.enableCanvas) {\n var element = document.getElementById(this.chart.element.id + '_tooltip_svg');\n element.appendChild(series.symbolElement);\n }\n }\n };\n Marker.prototype.getRangeLowPoint = function (region, series) {\n var x = region.x;\n var y = region.y;\n if (series.chart.requireInvertedAxis) {\n y += region.height / 2;\n x += series.yAxis.isAxisInverse ? region.width : 0;\n }\n else {\n y += series.yAxis.isAxisInverse ? 0 : region.height;\n x += region.width / 2;\n }\n return { x: x, y: y };\n };\n /**\n * Animates the marker.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.doMarkerAnimation = function (series) {\n if (!(series.type === 'Scatter' || series.type === 'Bubble' || series.type === 'Candle' || series.type === 'Hilo' ||\n series.type === 'HiloOpenClose' || (series.chart.chartAreaType === 'PolarRadar' && (series.drawType === 'Scatter')))) {\n var markerElements = series.symbolElement.childNodes;\n var delay = series.animation.delay + (series.animation.duration === 0 && animationMode === 'Enable' ? 1000 : series.animation.duration);\n var duration = series.chart.animated ? series.chart.duration : 200;\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') ? 2 : 1;\n for (var i = 0; i < series.points.length; i++) {\n if (series.points[i].symbolLocations) {\n if (!series.points[i].symbolLocations.length || !markerElements[j]) {\n continue;\n }\n markerAnimate(markerElements[j], delay, duration, series, i, series.points[i].symbolLocations[0], false);\n if (incFactor === 2) {\n var lowPoint = this.getRangeLowPoint(series.points[i].regions[0], series);\n markerAnimate(markerElements[j + 1], delay, duration, series, i, lowPoint, false);\n }\n j += incFactor;\n }\n }\n }\n };\n return Marker;\n}(MarkerExplode));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../series/chart-series-model.d.ts' />\nimport { Property, Complex } from '@syncfusion/ej2-base';\nimport { Connector } from '../../common/model/base';\nimport { SeriesBase } from '../series/chart-series';\nimport { firstToLowerCase } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Defines how to represent the market trend using technical indicators\n */\nvar TechnicalIndicator = /** @class */ (function (_super) {\n __extends(TechnicalIndicator, _super);\n function TechnicalIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n TechnicalIndicator.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.xData = series.xData;\n this.yData = series.yData;\n this.points = series.points;\n }\n var type = firstToLowerCase(this.type);\n if (this.visible) {\n chart[type + 'IndicatorModule'].initDataSource(this, chart);\n }\n chart.visibleSeriesCount += this.targetSeries.length;\n };\n __decorate([\n Property('Sma')\n ], TechnicalIndicator.prototype, \"type\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"period\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"kPeriod\", void 0);\n __decorate([\n Property(3)\n ], TechnicalIndicator.prototype, \"dPeriod\", void 0);\n __decorate([\n Property(80)\n ], TechnicalIndicator.prototype, \"overBought\", void 0);\n __decorate([\n Property(20)\n ], TechnicalIndicator.prototype, \"overSold\", void 0);\n __decorate([\n Property(2)\n ], TechnicalIndicator.prototype, \"standardDeviation\", void 0);\n __decorate([\n Property('Close')\n ], TechnicalIndicator.prototype, \"field\", void 0);\n __decorate([\n Property(12)\n ], TechnicalIndicator.prototype, \"slowPeriod\", void 0);\n __decorate([\n Property(26)\n ], TechnicalIndicator.prototype, \"fastPeriod\", void 0);\n __decorate([\n Property(true)\n ], TechnicalIndicator.prototype, \"showZones\", void 0);\n __decorate([\n Complex({ color: '#ff9933', width: 2 }, Connector)\n ], TechnicalIndicator.prototype, \"macdLine\", void 0);\n __decorate([\n Property('Both')\n ], TechnicalIndicator.prototype, \"macdType\", void 0);\n __decorate([\n Property('#2ecd71')\n ], TechnicalIndicator.prototype, \"macdPositiveColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], TechnicalIndicator.prototype, \"macdNegativeColor\", void 0);\n __decorate([\n Property('rgba(211,211,211,0.25)')\n ], TechnicalIndicator.prototype, \"bandColor\", void 0);\n __decorate([\n Complex({ color: '#ffb735', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"upperLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"lowerLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"periodLine\", void 0);\n __decorate([\n Property('')\n ], TechnicalIndicator.prototype, \"seriesName\", void 0);\n return TechnicalIndicator;\n}(SeriesBase));\nexport { TechnicalIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable jsdoc/valid-types */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable jsdoc/require-param-type */\n/* eslint-disable jsdoc/require-returns-description */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable curly */\n/* eslint-disable @typescript-eslint/tslint/config */\n/* eslint-disable no-case-declarations */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\nimport { Component, Property, NotifyPropertyChanges, Internationalization } from '@syncfusion/ej2-base';\nimport { L10n, setValue, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ChildProperty } from '@syncfusion/ej2-base';\nimport { remove, extend } from '@syncfusion/ej2-base';\nimport { Browser, Touch } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Complex, Collection } from '@syncfusion/ej2-base';\nimport { findClipRect, showTooltip, ImageOption, removeElement, appendChildElement, blazorTemplatesReset, withInBounds } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement, getTextAnchor } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, ChartArea, Indexes, TooltipSettings, titleSettings } from '../common/model/base';\nimport { Row, Column, Axis } from './axis/axis';\nimport { CartesianAxisLayoutPanel } from './axis/cartesian-panel';\nimport { Rect, measureText, TextOption, Size, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { ChartData } from './utils/get-data';\nimport { Series } from './series/chart-series';\nimport { Data } from '../common/model/data';\nimport { Marker, markerShapes } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, chartDoubleClick, pointClick, pointDoubleClick, axisLabelClick, beforeResize } from '../common/model/constants';\nimport { chartMouseDown, chartMouseMove, chartMouseUp, load, pointMove, chartMouseLeave, resized } from '../common/model/constants';\nimport { ChartAnnotationSettings } from './model/chart-base';\nimport { getElement, getTitle } from '../common/utils/helper';\nimport { PrintUtils } from '../common/utils/print';\n/**\n * Configures the RangeColorSetting in the chart.\n */\nvar RangeColorSetting = /** @class */ (function (_super) {\n __extends(RangeColorSetting, _super);\n function RangeColorSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"end\", void 0);\n __decorate([\n Property([])\n ], RangeColorSetting.prototype, \"colors\", void 0);\n __decorate([\n Property('')\n ], RangeColorSetting.prototype, \"label\", void 0);\n return RangeColorSetting;\n}(ChildProperty));\nexport { RangeColorSetting };\n/**\n * Configures the crosshair in the chart.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"verticalLineColor\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"horizontalLineColor\", void 0);\n __decorate([\n Property(1)\n ], CrosshairSettings.prototype, \"opacity\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Configures the zooming behavior for the chart.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"showToolbar\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property('XY')\n ], ZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], ZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePan\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableScrollbar\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\n/**\n * Represents the Chart control.\n * ```html\n * <div id=\"chart\"/>\n * <script>\n * var chartObj = new Chart({ isResponsive : true });\n * chartObj.appendTo(\"#chart\");\n * </script>\n * ```\n *\n * @public\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Chart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.rotatedDataLabelCollections = [];\n /** @public */\n _this.animated = false;\n /** @private */\n _this.isPointMouseDown = false;\n /** @private */\n _this.isScrolling = false;\n /** @private */\n _this.checkResize = 0;\n /** @private */\n _this.visible = 0;\n /** @private */\n _this.clickCount = 0;\n /** @private */\n _this.maxPointCount = 0;\n /** @private */\n _this.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n /** @private */\n _this.scaleX = 1;\n /** @private */\n _this.scaleY = 1;\n _this.isCrosshair = true;\n _this.chartid = 57723;\n /** @private */\n _this.isLegendClicked = false;\n _this.isZoomed = false;\n _this.previousTargetId = '';\n _this.currentPointIndex = 0;\n _this.currentSeriesIndex = 0;\n _this.currentLegendIndex = 0;\n _this.previousPageX = null;\n _this.previousPageY = null;\n _this.allowPan = false;\n setValue('mergePersistData', _this.mergePersistChartData, _this);\n return _this;\n }\n /**\n * To manage persist chart data\n */\n Chart.prototype.mergePersistChartData = function () {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n *\n * @param elementId\n * Return the proper ID when the special character exist in the ID\n */\n Chart.prototype.isIdHasSpecialCharacter = function (elementId) {\n var regex = /^[A-Za-z ]+$/;\n var numberRegex = /^[0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n var start = 0;\n if (numberRegex.test(elementId[0])) {\n childElementId += ('\\\\3' + elementId[0]);\n start = 1;\n }\n for (var i = start; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1 && !numberRegex.test(elementId[i])) {\n childElementId += ('\\\\' + elementId[i]);\n }\n else {\n childElementId += elementId[i];\n }\n }\n return childElementId;\n }\n else {\n return elementId;\n }\n };\n /**\n * Initialize the event handler.\n */\n Chart.prototype.preRender = function () {\n this.element.id = this.isIdHasSpecialCharacter(this.element.id);\n // It is used for checking blazor framework or not.\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.markerIndex = 0;\n this.unWireEvents();\n this.initPrivateVariable();\n this.setCulture();\n this.wireEvents();\n if (this.stockChart) {\n if (this.stockChart.tooltip.header === null) {\n this.tooltip.header = '<b>${point.x}</b>';\n }\n if (this.stockChart.tooltip.format === null) {\n this.tooltip.format = 'High : <b>${point.high}</b><br/>Low :' +\n ' <b>${point.low}</b><br/>Open : <b>${point.open}</b><br/>Close : <b>${point.close}</b>';\n }\n }\n this.element.setAttribute('dir', this.enableRtl ? 'rtl' : '');\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\n this.dragY = null;\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.refreshAxis();\n this.refreshDefinition(this.rows);\n this.refreshDefinition(this.columns);\n if (this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.description || this.title + '. Syncfusion interactive chart.');\n if (!(this.element.classList.contains(\"e-chart-focused\"))) {\n this.element.setAttribute('class', this.element.getAttribute('class') + ' e-chart-focused');\n }\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\n var elementid = 'chart_' + this.chartid + '_' + collection;\n while (document.getElementById(elementid)) {\n collection++;\n elementid = 'chart_' + this.chartid + '_' + collection;\n }\n this.element.id = 'chart_' + this.chartid + '_' + collection;\n }\n //seperate ID to differentiate chart and stock chart\n this.svgId = this.stockChart ? this.stockChart.element.id + '_stockChart_chart' :\n this.element.id + (this.enableCanvas ? '_canvas' : '_svg');\n };\n /**\n * To Initialize the control rendering.\n */\n Chart.prototype.render = function () {\n var _this = this;\n this.svgRenderer = new SvgRenderer(this.element.id);\n var loadEventData = {\n chart: this.isBlazor ? {} : this, theme: this.theme, name: load, cancel: false\n };\n if (!this.stockChart) {\n /**\n * Load event for the chart will be triggered only chart componet, if this is stock chart, load event did not triggered.\n */\n this.trigger(load, loadEventData, function () {\n if (!loadEventData.cancel) {\n _this.cartesianChartRendering(loadEventData);\n }\n });\n }\n else {\n // The fix is specific for nextjs app, as window is set as not defined for server side application like nextjs.\n this.isRtlEnabled = (window.getComputedStyle(document.querySelector('body')).direction === 'rtl');\n this.cartesianChartRendering(loadEventData);\n }\n this.applyZoomkit();\n };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.setTheme();\n this.createChartSvg();\n this.markerRender = new Marker(this);\n this.calculateAreaType();\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.calculateVisibleAxis();\n this.processData();\n this.renderComplete();\n this.mouseMoveEvent();\n this.allowServerDataBinding = true;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key key\n * @returns {string} localized label\n */\n Chart.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Animate the series bounds.\n *\n * @private\n */\n Chart.prototype.animate = function (duration) {\n this.redraw = true;\n this.animated = true; //used to set duration as 1000 for animation at default 300\n this.duration = duration ? duration : 1000;\n if (this.tooltipModule) {\n this.tooltipModule.removeHighlightedMarker(this.tooltipModule.previousPoints, true);\n }\n else if (this.markerRender.previousPoints) {\n for (var previousPoint = 0; previousPoint < this.markerRender.previousPoints.length; previousPoint++)\n this.markerRender.removeHighlightedMarker(this.markerRender.previousPoints[previousPoint].series, this.markerRender.previousPoints[previousPoint].point);\n }\n };\n /**\n * Refresh the chart bounds.\n *\n * @private\n */\n Chart.prototype.refreshBound = function () {\n this.rotatedDataLabelCollections = [];\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.visibleSeries, this);\n }\n /**\n * I264230, EJ2-36761\n * Issue: Tooltip doesnot appears after zooming and hovering on same point\n * Root cause: While performing zoom, previous points in tooltip restore.\n * Fix: previous points set to empty array\n */\n if (this.tooltip.enable && this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.calculateStackValues();\n this.calculateBounds();\n //this prevents the initial rendering of stock chart\n if (this.stockChart && !this.stockChart.rangeFound) {\n if (this.stockChart.enablePeriodSelector || this.stockChart.enableSelector) {\n return null;\n }\n }\n this.renderElements();\n removeElement('chartmeasuretext');\n this.removeSelection();\n if (this.markerRender) {\n this.markerRender.mergeXvalues(this.visibleSeries);\n }\n };\n /**\n * To calcualte the stack values\n */\n Chart.prototype.calculateStackValues = function () {\n var series;\n var isCalculateStacking = false;\n for (var i = 0, len = this.visibleSeries.length; i < len; i++) {\n series = this.visibleSeries[i];\n series.position = series.rectCount = undefined;\n if (((series.type.indexOf('Stacking') !== -1) || (series.drawType.indexOf('Stacking') !== -1\n && this.chartAreaType === 'PolarRadar')) && !isCalculateStacking) {\n series.calculateStackedValue(series.type.indexOf('100') > -1, this);\n isCalculateStacking = true;\n }\n }\n };\n Chart.prototype.removeSelection = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n point.isSelect = false;\n }\n }\n }\n if (getElement(this.element.id + '_ej2_drag_multi_group')) {\n if (this.selectionMode.indexOf('Drag') > -1) {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_multi_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n else if (getElement(this.element.id + '_ej2_drag_group')) {\n if (this.selectionMode !== 'Lasso') {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n };\n Chart.prototype.renderElements = function () {\n this.renderBorder();\n this.renderTitle();\n this.renderAreaBorder();\n this.renderSeriesElements(this.renderAxes());\n this.renderLegend();\n this.applyZoomkit();\n this.performSelection();\n this.setSecondaryElementPosition();\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', value.marker.dataLabel);\n }\n this.renderAnnotation();\n };\n /**\n * To render the legend\n *\n * @private\n */\n Chart.prototype.renderAxes = function () {\n this.yAxisElements = this.renderer.createGroup({ id: this.element.id + 'yAxisCollection' });\n var axisElement;\n if (this.rows.length > 0 && this.columns.length > 0) {\n axisElement = this.chartAxisLayoutPanel.renderAxes();\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Behind', this.axisCollections);\n }\n return axisElement;\n };\n /**\n * To render the legend\n */\n Chart.prototype.renderLegend = function () {\n if (this.legendModule && this.legendModule.legendCollections.length && this.legendSettings.visible) {\n this.legendModule.calTotalPage = true;\n var borderWidth = this.legendSettings.border.width;\n var bounds = this.legendModule.legendBounds;\n var rect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (this.enableCanvas) {\n rect = new Rect(rect.x - borderWidth / 2, rect.y - borderWidth / 2, rect.width + borderWidth, rect.height + borderWidth);\n this.renderer.canvasClip(rect);\n }\n this.legendModule.renderLegend(this, this.legendSettings, bounds);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n if (!this.redraw) {\n if (!this.stockChart) {\n this.element.appendChild(this.svgObject);\n }\n else {\n if (!getElement(this.stockChart.chartObject.id)) {\n this.stockChart.mainObject.appendChild(this.svgObject);\n }\n }\n }\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n */\n Chart.prototype.setSecondaryElementPosition = function () {\n var element = getElement(this.element.id + '_Secondary_Element');\n if (!element) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n element.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n element.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n Chart.prototype.initializeModuleElements = function () {\n this.dataLabelCollections = [];\n var elementId = this.element.id;\n if (this.series.length) {\n this.seriesElements = this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' });\n }\n if (this.indicators.length) {\n this.indicatorElements = this.renderer.createGroup({ id: elementId + 'IndicatorCollection' });\n }\n if (this.hasTrendlines()) {\n this.trendLineElements = this.renderer.createGroup({ id: elementId + 'TrendLineCollection' });\n }\n this.dataLabelElements = this.renderer.createGroup({ id: elementId + 'DataLabelCollection' });\n };\n Chart.prototype.hasTrendlines = function () {\n var isTrendline;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n isTrendline = series.trendlines.length ? true : false;\n if (isTrendline) {\n break;\n }\n }\n return isTrendline;\n };\n Chart.prototype.renderSeriesElements = function (axisElement) {\n // Initialize the series elements values\n this.initializeModuleElements();\n var elementId = this.element.id;\n if (this.element.tagName !== 'g') {\n var tooltipDiv = redrawElement(this.redraw, elementId + '_Secondary_Element') ||\n this.createElement('div');\n tooltipDiv.id = elementId + '_Secondary_Element';\n tooltipDiv.style.cssText = 'position: relative';\n appendChildElement(false, this.element, tooltipDiv, this.redraw);\n }\n // For canvas\n if (this.enableCanvas) {\n var tooltipdiv = document.getElementById(elementId + '_Secondary_Element');\n tooltipdiv = !tooltipdiv ? this.createElement('div', { id: elementId + '_Secondary_Element',\n attrs: { 'style': 'position: relative; left:0px; top:0px' } }) : tooltipdiv;\n var svg = this.svgRenderer.createSvg({\n id: elementId + '_tooltip_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n tooltipdiv.appendChild(svg);\n }\n // For userInteraction\n if (this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: elementId + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.initializeIndicator();\n this.initializeTrendLine();\n this.renderSeries();\n // Trendline is append to DOM after the series\n if (this.trendLineElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.trendLineElements, this.redraw);\n }\n this.appendElementsAfterSeries(axisElement);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderSeries = function () {\n var visibility;\n if (this.enableCanvas) {\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.category === 'TrendLine') {\n visibility = this.series[item.sourceIndex].trendlines[item.index].visible;\n }\n else {\n visibility = item.visible;\n }\n if (visibility) {\n this.visible++;\n findClipRect(item, this.enableCanvas);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries(item);\n }\n item.renderSeries(this);\n }\n }\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n this.visible = 0;\n var options = {\n 'id': this.element.id + '_ChartAreaClipRect_',\n 'x': this.chartAxisLayoutPanel.seriesClipRect.x,\n 'y': this.chartAxisLayoutPanel.seriesClipRect.y,\n 'width': this.chartAxisLayoutPanel.seriesClipRect.width,\n 'height': this.chartAxisLayoutPanel.seriesClipRect.height,\n 'fill': 'transparent',\n 'stroke-width': 1,\n 'stroke': 'Gray'\n };\n if (!this.seriesElements) {\n return;\n }\n var clipRectElement;\n if (this.chartAreaType === 'PolarRadar') {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer, 'drawCircularClipPath');\n }\n else {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer);\n }\n if (!this.enableCanvas) {\n this.seriesElements.appendChild(clipRectElement);\n }\n var seriesSvg = document.getElementById(this.element.id + '_series_svg');\n if (seriesSvg) {\n appendChildElement(false, seriesSvg, this.seriesElements, this.redraw);\n }\n else {\n appendChildElement(this.enableCanvas, this.svgObject, this.seriesElements, this.redraw);\n }\n };\n Chart.prototype.renderCanvasSeries = function (item) {\n var svgElement;\n // eslint-disable-next-line prefer-const\n svgElement = (this.enableCanvas) ?\n svgElement : this.svgObject;\n var canvas = (this.enableCanvas) ?\n false : this.enableCanvas;\n };\n Chart.prototype.initializeIndicator = function () {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (this[firstToLowerCase(indicator.type) + 'IndicatorModule']) {\n this[firstToLowerCase(indicator.type) + 'IndicatorModule'].createIndicatorElements(this, indicator, indicator.index);\n }\n }\n if (this.indicatorElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.indicatorElements, this.redraw);\n }\n };\n Chart.prototype.initializeTrendLine = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.trendlines.length) {\n this.trendLineModule.getTrendLineElements(series, this);\n }\n }\n };\n Chart.prototype.appendElementsAfterSeries = function (axisElement) {\n if (this.chartAreaType === 'PolarRadar') {\n appendChildElement(this.enableCanvas, this.svgObject, this.yAxisElements, this.redraw);\n }\n appendChildElement(this.enableCanvas, this.svgObject, axisElement, this.redraw);\n if ((this.zoomModule && this.zoomSettings.enableScrollbar && this.scrollElement.childElementCount) ||\n (this.scrollElement && this.scrollElement.childElementCount)) {\n appendChildElement(false, getElement(this.element.id + '_Secondary_Element'), this.scrollElement, this.redraw);\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Over', this.axisCollections);\n }\n if (!this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: this.element.id + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.stockChart) {\n this.stockChart.calculateStockEvents();\n }\n };\n Chart.prototype.applyZoomkit = function () {\n /**\n * Issue: Zoomkit not visible after performing refresh()\n * Fix: this method called without checking `zoomModule.isZoomed`\n */\n if (this.chartAreaType === 'PolarRadar') {\n return;\n }\n if (!this.redraw && this.zoomModule && (!this.zoomSettings.enablePan || this.zoomModule.performedUI || this.zoomSettings.showToolbar)) {\n this.zoomModule.applyZoomToolkit(this, this.axisCollections);\n }\n };\n /**\n * Render annotation perform here\n *\n * @private\n */\n Chart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n //for stock chart, stock chart's id is added to render the annotations\n this.annotationModule.renderAnnotations(getElement((this.stockChart ? this.stockChart.element.id : this.element.id) + '_Secondary_Element'));\n }\n };\n Chart.prototype.performSelection = function () {\n var selectedDataIndexes = [];\n if (this.selectionModule) {\n selectedDataIndexes = extend([], this.selectionModule.selectedDataIndexes, null, true);\n this.selectionModule.invokeSelection(this);\n }\n if (this.highlightModule) {\n this.highlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.selectionModule.selectedDataIndexes = selectedDataIndexes;\n this.selectionModule.redrawSelection(this, this.selectionMode);\n }\n };\n Chart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.visibleSeriesCount = 0;\n var check = true;\n var prevPointCount = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible && !this.legendSettings.visible) {\n this.visibleSeriesCount++;\n continue;\n }\n if (series.category !== 'Indicator' && series.category !== 'TrendLine') {\n this.initializeDataModule(series);\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n if (indicator.dataSource) {\n var techIndicator = indicator;\n this.initializeDataModule(techIndicator);\n check = false;\n }\n }\n if (render && (!this.visibleSeries.length || this.visibleSeriesCount === this.visibleSeries.length && check)) {\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (!this.stockChart && this.visibleSeries.length > 0) {\n for (var _d = 0, _e = this.visibleSeries; _d < _e.length; _d++) {\n var series = _e[_d];\n if (!isNullOrUndefined(series.points)) {\n this.maxPointCount = Math.max(prevPointCount, series.points.length);\n prevPointCount = series.points.length;\n }\n }\n }\n };\n Chart.prototype.initializeDataModule = function (series) {\n series.xData = [];\n series.yData = [];\n var dataSource;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n dataSource = Object.keys(series.dataSource).length ? series.dataSource : this.dataSource;\n }\n else {\n dataSource = series.dataSource || this.dataSource;\n }\n series.dataModule = new Data(dataSource, series.query);\n series.points = [];\n series.refreshDataManager(this);\n };\n Chart.prototype.calculateBounds = function () {\n var margin = this.margin;\n // Title Height;\n var titleHeight = 0;\n var subTitleHeight = 0;\n var titleWidth = 0;\n var padding = this.titleStyle.position === 'Top' || (this.titleStyle.position === 'Bottom' && !this.legendSettings.visible) ? 15 : 5;\n var left = margin.left + this.border.width;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n var elementSpacing = 0;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width, this.enableRtl, this.themeStyle.chartTitleFont);\n titleHeight = (measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont).height * this.titleCollection.length) + padding;\n if (this.subTitle) {\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, width, this.enableRtl, this.themeStyle.chartSubTitleFont);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont).height * this.subTitleCollection.length) +\n padding;\n }\n }\n else if (this.legendSettings.position !== 'Top' && this.border.width) {\n elementSpacing = 10;\n }\n var top = margin.top + elementSpacing + this.border.width + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n var marginTotal = subTitleHeight + titleHeight + this.titleStyle.border.width + this.subTitleStyle.border.width;\n switch (this.titleStyle.position) {\n case 'Top':\n top += marginTotal;\n height -= marginTotal;\n break;\n case 'Bottom':\n height -= marginTotal;\n break;\n case 'Left':\n left += marginTotal;\n width -= marginTotal;\n break;\n case 'Right':\n left -= (this.titleStyle.border.width + this.subTitleStyle.border.width);\n width -= marginTotal;\n break;\n }\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n top += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n left += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n this.initialClipRect = new Rect(left, top, width, height);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n }\n this.chartAxisLayoutPanel.measureAxis(this.initialClipRect);\n };\n /**\n * Handles the print method for chart control.\n */\n Chart.prototype.print = function (id) {\n var exportChart = new PrintUtils(this);\n var width = this.width;\n if (this.getModuleName() == 'chart' && parseInt(this.width) >= 80 && this.width.indexOf('%') > -1) {\n this.width = '80%';\n this.dataBind();\n }\n exportChart.print(id);\n if (this.getModuleName() == 'chart' && parseInt(this.width) >= 80 && this.width.indexOf('%') > -1) {\n this.width = width;\n this.dataBind();\n }\n };\n /**\n * Defines the trendline initialization\n */\n Chart.prototype.initTrendLines = function () {\n this.isProtectedOnChange = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var trendIndex = 0;\n for (var _b = 0, _c = series.trendlines; _b < _c.length; _b++) {\n var trendline = _c[_b];\n var trendLine = trendline;\n if (this.trendLineModule) {\n trendLine.index = trendIndex;\n trendLine.sourceIndex = series.index;\n this.trendLineModule.initSeriesCollection(trendLine, this);\n if (trendLine.targetSeries) {\n trendLine.targetSeries.xAxisName = series.xAxisName;\n trendLine.targetSeries.yAxisName = series.yAxisName;\n this.visibleSeries.push(trendLine.targetSeries);\n }\n }\n trendIndex++;\n }\n }\n this.isProtectedOnChange = false;\n };\n Chart.prototype.calculateAreaType = function () {\n var series = this.series[0];\n this.chartArea.border.width = this.stockChart ? 0 : this.chartArea.border.width;\n if (series) {\n this.requireInvertedAxis = ((series.type.indexOf('Bar') !== -1) && !this.isTransposed) ||\n ((series.type.indexOf('Bar') === -1) && this.isTransposed && this.chartAreaType !== 'PolarRadar');\n }\n this.chartAxisLayoutPanel = this.chartAreaType === 'PolarRadar' ? (this.polarSeriesModule || this.radarSeriesModule)\n : new CartesianAxisLayoutPanel(this);\n };\n /**\n * Calculate the visible axis\n *\n * @private\n */\n Chart.prototype.calculateVisibleAxis = function () {\n var axis;\n var axes = [this.primaryXAxis, this.primaryYAxis];\n axes = this.chartAreaType === 'Cartesian' ? axes.concat(this.axes) : axes;\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n axes = axes.concat(this.paretoSeriesModule.paretoAxes);\n }\n this.axisCollections = [];\n if (this.zoomModule) {\n this.zoomModule.isPanning = this.zoomModule.isAxisZoomed(axes) && this.zoomSettings.enablePan;\n this.svgObject.setAttribute('cursor', this.zoomModule.isPanning ? 'pointer' : 'auto');\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n if (this.scrollSettingEnabled) {\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n for (var i = 0, len = axes.length; i < len; i++) {\n axis = axes[i];\n axis.series = [];\n axis.labels = [];\n axis.indexLabels = {};\n axis.orientation = (i == 0) ? (this.requireInvertedAxis ? 'Vertical' : 'Horizontal') :\n (i == 1) ? (this.requireInvertedAxis ? 'Horizontal' : 'Vertical') : axis.orientation;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\n if (series.category == 'Pareto' && series.type == 'Line' && series.yAxis) {\n series.yAxis.internalVisibility = series.paretoOptions.showAxis;\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n this.initAxis(indicator, axis, false);\n }\n if (this.scrollBarModule && !axis.zoomingScrollBar) {\n this.scrollBarModule.injectTo(axis, this);\n }\n if (axis.orientation != null) {\n this.axisCollections.push(axis);\n }\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.chartAxisLayoutPanel.measure();\n }\n };\n Chart.prototype.initAxis = function (series, axis, isSeries) {\n if (series.xAxisName === axis.name || (series.xAxisName == null && axis.name === 'primaryXAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Vertical' : 'Horizontal';\n series.xAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n else if (series.yAxisName === axis.name || (series.yAxisName == null && axis.name === 'primaryYAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Horizontal' : 'Vertical';\n series.yAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n };\n Chart.prototype.initTechnicalIndicators = function () {\n var i = 0;\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n var techIndicator = indicator;\n var type = firstToLowerCase(techIndicator.type);\n if (this[type + 'IndicatorModule']) {\n techIndicator.index = i;\n this[type + 'IndicatorModule'].initSeriesCollection(techIndicator, this);\n for (var _b = 0, _c = techIndicator.targetSeries; _b < _c.length; _b++) {\n var targetSeries = _c[_b];\n if (indicator.seriesName || indicator.dataSource) {\n this.visibleSeries.push(targetSeries);\n }\n }\n }\n i++;\n }\n };\n /** @private */\n Chart.prototype.refreshTechnicalIndicator = function (series) {\n if (this.indicators.length) {\n var targetIndicator = null;\n if (series instanceof Series && series.category !== 'Indicator') {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (indicator.seriesName === series.name && !indicator.dataSource) {\n targetIndicator = indicator;\n targetIndicator.setDataSource(series, this);\n }\n }\n }\n else if (series instanceof TechnicalIndicator) {\n targetIndicator = series;\n targetIndicator.setDataSource(series instanceof Series ? series : null, this);\n }\n }\n };\n Chart.prototype.calculateVisibleSeries = function () {\n var series;\n this.visibleSeries = [];\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.theme);\n var count = colors.length;\n var seriesCollection = this.series.sort(function (a, b) { return a.zOrder - b.zOrder; });\n for (var i = 0, len = seriesCollection.length; i < len; i++) {\n series = seriesCollection[i];\n // for y axis label issue during chart navigation\n series.category = seriesCollection[0].type === 'Pareto' ? 'Pareto' : 'Series';\n series.index = i;\n series.interior = series.fill || colors[i % count];\n if (!series.marker.shape && (series.marker.visible || series.type === 'Scatter' || series.drawType === 'Scatter')) {\n series.marker.shape = markerShapes[this.markerIndex % 10];\n this.markerIndex++;\n }\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n switch (series.type) {\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n if (seriesCollection[0].type.indexOf('Bar') === -1) {\n continue;\n }\n break;\n case 'Polar':\n case 'Radar':\n if (this.chartAreaType !== 'PolarRadar') {\n continue;\n }\n if (this.chartAreaType === 'PolarRadar' && ((series.xAxisName !== null && (this.primaryXAxis.name !== series.xAxisName)) ||\n (series.yAxisName !== null && (this.primaryYAxis.name !== series.yAxisName)))) {\n continue;\n }\n break;\n case 'Pareto':\n this.visibleSeries.push(series);\n this.paretoSeriesModule.initSeries(series, this);\n continue;\n default:\n if (this.chartAreaType === 'PolarRadar' || seriesCollection[0].type.indexOf('Bar') > -1) {\n continue;\n }\n break;\n }\n this.visibleSeries.push(series);\n seriesCollection[i] = series;\n }\n };\n Chart.prototype.isSecondaryAxis = function (axis) {\n return (this.axes.indexOf(axis) > -1);\n };\n Chart.prototype.renderTitle = function () {\n var rect;\n var margin = this.margin;\n var elementSpacing = 5;\n if (this.title) {\n var getAnchor = getTextAnchor(this.titleStyle.textAlignment, this.enableRtl);\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var borderWidth = this.titleStyle.border.width;\n var positionY = this.margin.top + ((elementSize.height) * 3 / 4);\n var positionX = titlePositionX(rect, this.titleStyle || this.themeStyle.chartTitleFont) + borderWidth;\n var rotation = void 0;\n var alignment = this.titleStyle.textAlignment;\n var subtitleSize = measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n switch (this.titleStyle.position) {\n case 'Top':\n positionY += borderWidth * 0.5;\n positionX += getAnchor === 'start' ? borderWidth * 0.5 + this.border.width :\n getAnchor === 'end' ? ((-borderWidth * 2) - this.border.width) : 0;\n break;\n case 'Bottom':\n positionX += getAnchor === 'start' ? (borderWidth * 0.5) + this.border.width :\n getAnchor === 'end' ? (-borderWidth * 2) - this.border.width : 0;\n positionY = this.availableSize.height - this.margin.bottom - subtitleSize.height - (elementSize.height / 2) -\n (borderWidth * 0.5) - (this.subTitleStyle.border.width * 0.5);\n break;\n case 'Left':\n positionX = this.margin.left + ((elementSize.height) * 3 / 4) + (borderWidth * 0.5);\n positionY = alignment == 'Near' ? margin.bottom + (borderWidth * 0.5) + this.border.width :\n alignment == 'Far' ? this.availableSize.height - margin.bottom - (borderWidth * 0.5) - this.border.width : this.availableSize.height / 2;\n getAnchor = alignment == 'Near' ? 'end' : alignment == 'Far' ? 'start' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + -90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Right':\n positionX = this.availableSize.width - this.margin.right - ((elementSize.height) * 3 / 4) - (borderWidth * 0.5);\n positionY = alignment == 'Near' ? margin.bottom + (borderWidth * 0.5) + this.border.width :\n alignment == 'Far' ? this.availableSize.height - margin.bottom - (borderWidth * 0.5) - this.border.width : this.availableSize.height / 2;\n getAnchor = alignment == 'Near' ? 'start' : alignment == 'Far' ? 'end' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + 90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Custom':\n positionX = this.titleStyle.x;\n positionY = this.titleStyle.y;\n getAnchor = 'middle';\n break;\n }\n var borderOptions = {\n 'id': this.element.id + '_ChartTitleBorder',\n 'x': positionX - (getAnchor === 'middle' ? (elementSize.width / 2) + elementSpacing : getAnchor === 'end' ? elementSize.width + elementSpacing : elementSpacing),\n 'y': positionY - elementSize.height + (elementSize.height / 4),\n 'rx': this.titleStyle.border.cornerRadius,\n 'ry': this.titleStyle.border.cornerRadius,\n 'width': elementSize.width + (elementSpacing * 2),\n 'height': elementSize.height * this.titleCollection.length,\n 'fill': this.titleStyle.background,\n 'stroke-width': borderWidth,\n 'stroke': this.titleStyle.border.color,\n 'transform': rotation ? rotation : '',\n 'd': ''\n };\n var htmlObject = redrawElement(this.redraw, this.element.id + '_ChartTitleBorder', borderOptions, this.renderer)\n || this.renderer.drawRectangle(borderOptions);\n appendChildElement(this.enableCanvas, this.svgObject, htmlObject, this.redraw);\n var options = new TextOption(this.element.id + '_ChartTitle', positionX, positionY, getAnchor, this.titleCollection, rotation, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartTitle', options, this.renderer) ||\n textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartTitleFont);\n if (element) {\n element.setAttribute('tabindex', '0');\n element.setAttribute('class', 'e-chart-focused');\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n }\n };\n Chart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartSubTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitleCollection.reduce(function (a, b) { return (a.length > b.length ? a : b); }), this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n var getAnchor = getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n if (this.titleStyle.position === 'Left') {\n rect.x = alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment == 'Far' ? this.margin.left + ((subTitleElementSize.height) * 3 / 4) : (options.x - maxWidth);\n }\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n var positionY = options.y * options.text.length + subTitleElementSize.height + (padding / 2) + this.titleStyle.border.width + (this.subTitleStyle.border.width * 0.5);\n if (this.titleStyle.position === 'Bottom') {\n positionY = options.y * options.text.length + (padding / 2) + (elementSize.height / 2) + (subTitleElementSize.height / 2);\n }\n var borderOptions = {\n 'id': this.element.id + '_ChartSubTitleBorder',\n 'x': titlePositionX(rect, this.subTitleStyle) - (getAnchor === 'middle' ? (subTitleElementSize.width / 2) + padding / 2 : getAnchor === 'end' ? subTitleElementSize.width + padding / 2 : padding / 2),\n 'y': positionY - subTitleElementSize.height + (subTitleElementSize.height / 4),\n 'rx': this.subTitleStyle.border.cornerRadius,\n 'ry': this.subTitleStyle.border.cornerRadius,\n 'width': subTitleElementSize.width + padding,\n 'height': subTitleElementSize.height * this.subTitleCollection.length,\n 'fill': this.subTitleStyle.background,\n 'stroke-width': this.subTitleStyle.border.width,\n 'stroke': this.subTitleStyle.border.color,\n 'transform': options.transform,\n 'd': ''\n };\n var htmlObject = redrawElement(this.redraw, this.element.id + '_ChartSubTitleBorder', borderOptions, this.renderer)\n || this.renderer.drawRectangle(borderOptions);\n appendChildElement(this.enableCanvas, this.svgObject, htmlObject, this.redraw);\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), positionY, getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl), this.subTitleCollection, options.transform, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartSubTitle', subTitleOptions, this.renderer) ||\n textElement(this.renderer, subTitleOptions, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartSubTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartSubTitleFont);\n };\n Chart.prototype.renderBorder = function () {\n var x = 0;\n var y = 0;\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n y += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n x += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5 + x, width * 0.5 + y, this.availableSize.width - width, this.availableSize.height - width));\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBorder', rect, this.renderer)\n || this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n // to draw back ground image for chart\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - width, this.availableSize.width - width, backGroundImage, 0, 0, this.element.id + '_ChartBackground', 'visible', 'none');\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBackground', image, this.renderer)\n || this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderAreaBorder = function () {\n if (this.chartAreaType === 'PolarRadar') {\n return null;\n }\n else {\n var element = getElement(this.element.id + '_ChartAreaBorder');\n var previousRect = element ?\n new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n var rect = new RectOption(this.element.id + '_ChartAreaBorder', this.chartArea.background, { width: this.chartArea.border.width, color: this.chartArea.border.color || this.themeStyle.areaBorder }, this.chartArea.opacity, this.chartAxisLayoutPanel.seriesClipRect);\n this.htmlObject = this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n this.htmlObject = null;\n }\n // to draw back ground image for chart area\n var backGroundImage = this.chartArea.backgroundImage;\n if (backGroundImage) {\n var width = this.chartArea.border.width;\n var image = new ImageOption(this.initialClipRect.height - width, this.initialClipRect.width - width, backGroundImage, this.initialClipRect.x, this.initialClipRect.y, this.element.id + '_ChartAreaBackground', 'visible', 'none');\n this.htmlObject = this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true);\n }\n };\n /**\n * To add series for the chart\n *\n * @param {SeriesModel[]} seriesCollection - Defines the series collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series = new Series(this, 'series', series);\n this.series.push(series);\n }\n this.refresh();\n };\n /**\n * To Remove series for the chart\n *\n * @param {number} index - Defines the series index to be remove in chart series\n * @returns {void}\n */\n Chart.prototype.removeSeries = function (index) {\n this.redraw = false; //fix for remove svg not working when use animatemethod.\n if (this.visibleSeries[index]) {\n this.visibleSeries[index].xAxis.orientation = null;\n this.visibleSeries[index].yAxis.orientation = null;\n }\n for (var i = 0; i < this.axes.length; i++) {\n if (this.axes[i].orientation === null) {\n this.axes.splice(i, 1);\n }\n }\n this.series.splice(index, 1);\n this.refresh();\n };\n /**\n * To Clear all series for the chart\n *\n * @returns {void}.\n */\n Chart.prototype.clearSeries = function () {\n this.series = [];\n this.refresh();\n };\n /**\n * To add secondary axis for the chart\n *\n * @param {AxisModel[]} axisCollection - Defines the axis collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addAxes = function (axisCollection) {\n for (var _i = 0, axisCollection_1 = axisCollection; _i < axisCollection_1.length; _i++) {\n var axis = axisCollection_1[_i];\n axis = new Axis(this, 'axes', axis);\n if (this.isBlazor) {\n axis.interval = isNaN(axis.interval) ? null : axis.interval;\n axis.desiredIntervals = isNaN(axis.desiredIntervals) ? null : axis.desiredIntervals;\n }\n this.axes.push(axis);\n }\n this.refresh();\n };\n /**\n * To remove secondary axis for the chart\n *\n * @param {number} index - Defines the axis collection to be removed in chart.\n * @returns {void}\n */\n Chart.prototype.removeAxis = function (index) {\n this.redraw = false;\n this.axes.splice(index, 1);\n this.refresh();\n };\n /**\n * To destroy the widget\n *\n * @function destroy\n * @returns {void}.\n * @member of Chart\n */\n Chart.prototype.destroy = function () {\n if (this.scrollBarModule) {\n this.scrollBarModule.destroy();\n }\n if (this.markerRender) {\n this.markerRender.removeEventListener();\n this.markerRender = null;\n }\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.visibleSeries = [];\n this.axisCollections = [];\n this.rotatedDataLabelCollections = [];\n this.seriesElements = null;\n this.chartAxisLayoutPanel = null;\n this.dataLabelCollections = null;\n this.dataLabelElements = null;\n this.yAxisElements = null;\n var element = document.getElementById(this.element.id + 'Keyboard_chart_focus');\n if (element) {\n element.remove();\n }\n var highlightElement = document.getElementById(this.element.id + '_ej2_chart_highlight');\n if (highlightElement) {\n highlightElement.remove();\n }\n removeElement('chartmeasuretext');\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n if (!this.enableCanvas) {\n this.removeSvg();\n this.svgObject = null;\n }\n }\n };\n /**\n * Get component name\n */\n Chart.prototype.getModuleName = function () {\n return 'chart';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Chart.prototype.getPersistData = function () {\n var keyEntity = ['loaded', 'animationComplete', 'primaryXAxis', 'primaryYAxis'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Method to create SVG element.\n */\n Chart.prototype.createChartSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * Method to bind events for chart\n */\n Chart.prototype.unWireEvents = function () {\n var startEvent = Browser.touchStartEvent;\n var moveEvent = Browser.touchMoveEvent;\n var stopEvent = Browser.touchEndEvent;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, startEvent, this.chartOnMouseDown);\n EventHandler.remove(this.element, moveEvent, this.mouseMove);\n EventHandler.remove(this.element, stopEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.chartOnMouseClick);\n EventHandler.remove(this.element, 'dblclick', this.chartOnDoubleClick);\n EventHandler.remove(this.element, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\n EventHandler.remove(this.element, 'keydown', this.chartKeyDown);\n EventHandler.remove(document.body, 'keydown', this.documentKeyHandler);\n EventHandler.remove(this.element, 'keyup', this.chartKeyUp);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n /**\n * To fix memory issue\n */\n if (this.touchObject) {\n this.touchObject.destroy();\n this.touchObject = null;\n }\n };\n Chart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /*! Find the Events type */\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.chartOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.chartOnMouseClick, this);\n EventHandler.add(this.element, 'dblclick', this.chartOnDoubleClick, this);\n EventHandler.add(this.element, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, this);\n EventHandler.add(this.element, 'keydown', this.chartKeyDown, this);\n EventHandler.add(document.body, 'keydown', this.documentKeyHandler, this);\n EventHandler.add(this.element, 'keyup', this.chartKeyUp, this);\n this.resizeBound = this.chartResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n this.longPressBound = this.longPress.bind(this);\n this.touchObject = new Touch(this.element, { tapHold: this.longPressBound, tapHoldThreshold: 500 });\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n Chart.prototype.chartRightClick = function (event) {\n if (this.crosshair.enable && this.crosshairModule &&\n (event.buttons === 2 || event.which === 0 || event.pointerType === 'touch')) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n Chart.prototype.setStyle = function (element) {\n var zooming = this.zoomSettings;\n var disableScroll = zooming.enableSelectionZooming || zooming.enablePinchZooming ||\n this.selectionMode !== 'None' || this.crosshair.enable || this.highlightMode !== 'None';\n element.style.touchAction = disableScroll ? 'none' : 'element';\n element.style.msTouchAction = disableScroll ? 'none' : 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n // To fix angular and react tooltip div scrollbar issue\n element.style.overflow = 'hidden';\n element.style.height = (element.style.height || (this.height && this.height.indexOf('%') === -1)) ? element.style.height : 'inherit';\n };\n /**\n * Finds the orientation.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.isOrientation = function () {\n return ('orientation' in window && 'onorientationchange' in window);\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.longPress = function (e) {\n this.mouseX = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientX) : 0;\n this.mouseY = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientY) : 0;\n this.startMove = true;\n this.allowPan = this.stockChart ? false : this.allowPan;\n this.setMouseXY(this.mouseX, this.mouseY);\n this.notify('tapHold', e);\n return false;\n };\n /**\n * To find mouse x, y for aligned chart element svg position\n */\n Chart.prototype.setMouseXY = function (pageX, pageY) {\n if (getElement(this.svgId)) {\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n this.mouseY = ((pageY - rect.top) - Math.max(svgRect.top - rect.top, 0) / this.scaleX);\n this.mouseX = ((pageX - rect.left) - Math.max(svgRect.left - rect.left, 0) / this.scaleY);\n if (this.stockChart) {\n this.mouseX += this.stockChart.legendSettings.position === 'Left' ? this.stockChart.stockLegendModule.legendBounds.width : 0;\n this.mouseY += this.stockChart.legendSettings.position === 'Top' ? this.stockChart.stockLegendModule.legendBounds.height : 0;\n }\n }\n };\n /**\n * Export method for the chart.\n */\n Chart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Handles the chart resize.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartResize = function () {\n var _this = this;\n this.animateSeries = false;\n var arg = {\n chart: this,\n name: resized,\n currentSize: new Size(0, 0),\n previousSize: new Size(this.availableSize.width, this.availableSize.height)\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed || _this.stockChart) {\n clearTimeout(_this.resizeTo);\n return;\n }\n _this.createChartSvg();\n arg.currentSize = _this.availableSize;\n _this.trigger(resized, arg);\n _this.refreshAxis();\n _this.refreshBound();\n _this.trigger('loaded', { chart: _this.isBlazor ? {} : _this });\n }, 500);\n }\n return false;\n };\n /**\n * Handles the mouse move.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseMove = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.allowPan) {\n return false;\n }\n if (e.type === 'touchmove') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || this.isTouch;\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = pageX;\n this.previousPageY = pageY;\n if (getElement(this.svgId)) {\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseMove(e);\n }\n return false;\n };\n /**\n * Handles the mouse leave.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseLeave = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.stockChart && this.stockChart.onPanning) {\n return false;\n }\n if (e.type === 'touchleave') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = null;\n this.previousPageY = null;\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseLeave(e);\n return false;\n };\n /**\n * Handles the mouse leave on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseLeave = function (e) {\n var element = e.target;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.trigger(chartMouseLeave, { target: element.id, x: this.mouseX, y: this.mouseY });\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n this.isChartDrag = this.isPointMouseDown = false;\n this.notify(cancelEvent, e);\n return false;\n };\n /**\n * Handles the mouse double click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnDoubleClick = function (e) {\n var element = e.target;\n this.trigger(chartDoubleClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartKeyDown = function (e) {\n var actionKey = '';\n if ((this.isZoomed && e.code === 'Tab') || e.code === 'Space') {\n e.preventDefault();\n }\n if (this.tooltip.enable && ((e.code === 'Tab' && this.previousTargetId.indexOf('Series') > -1) || e.code === 'Escape')) {\n actionKey = 'ESC';\n }\n if (this.highlightMode !== 'None' && e.code === 'Tab' && this.previousTargetId.indexOf('_chart_legend_') > -1) {\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n }\n if (e.ctrlKey && (e.key === '+' || e.code === 'Equal' || e.key === '-' || e.code === 'Minus')) {\n e.preventDefault();\n this.isZoomed = this.zoomModule && (this.zoomSettings.enableDeferredZooming || this.zoomSettings.enableSelectionZooming ||\n this.zoomSettings.enablePinchZooming || this.zoomSettings.enableMouseWheelZooming);\n //this.tooltipModule.fadeOut(this.element);\n actionKey = this.isZoomed ? e.code : '';\n }\n else if (e['keyCode'] === 82 && this.isZoomed) { // KeyCode 82 (R) for reseting\n e.preventDefault();\n this.isZoomed = false;\n actionKey = 'R';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n actionKey = this.isZoomed ? e.code : '';\n }\n if (e.ctrlKey && (e.key === 'p')) {\n e.preventDefault();\n actionKey = 'CtrlP';\n }\n if (actionKey !== '')\n this.chartKeyboardNavigations(e, e.target.id, actionKey);\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartKeyUp = function (e) {\n var actionKey = '';\n var targetId = e.target['id'];\n var groupElement;\n var markerGroup;\n var targetElement = e.target;\n var titleElement = getElement(this.element.id + '_ChartTitle');\n var seriesElement = getElement(this.element.id + 'SeriesCollection');\n var legendElement = getElement(this.element.id + '_chart_legend_translate_g');\n var pagingElement = getElement(this.element.id + '_chart_legend_pageup');\n if (titleElement) {\n titleElement.setAttribute('class', 'e-chart-focused');\n }\n if (seriesElement && seriesElement.firstElementChild && seriesElement.firstElementChild.children[1]) {\n var firstChild = seriesElement.firstElementChild.children[1];\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (legendElement) {\n var firstChild = legendElement.firstElementChild;\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (pagingElement) {\n pagingElement.setAttribute('class', 'e-chart-focused');\n }\n if (e.code === 'Tab') {\n if (this.previousTargetId !== '') {\n if ((this.previousTargetId.indexOf('_Series_') > -1 && targetId.indexOf('_Series_') === -1)) {\n groupElement = getElement(this.element.id + 'SeriesCollection');\n var previousElement = this.previousTargetId.indexOf('_Symbol') > -1 ?\n getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).children[this.currentPointIndex + 1] :\n (this.previousTargetId.indexOf('_Point_') > -1 ?\n groupElement.children[this.currentSeriesIndex].children[this.currentPointIndex + 1] :\n groupElement.children[this.currentSeriesIndex]);\n this.setTabIndex(previousElement, groupElement.firstElementChild);\n this.currentPointIndex = 0;\n this.currentSeriesIndex = 0;\n }\n else if (this.previousTargetId.indexOf('_chart_legend_page') > -1 && targetId.indexOf('_chart_legend_page') === -1\n && targetId.indexOf('_chart_legend_g_') === -1) {\n this.setTabIndex(e.target, getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (this.previousTargetId.indexOf('_chart_legend_g_') > -1 && targetId.indexOf('_chart_legend_g_') === -1) {\n groupElement = getElement(this.element.id + '_chart_legend_translate_g');\n this.setTabIndex(groupElement.children[this.currentLegendIndex], groupElement.firstElementChild);\n }\n }\n this.previousTargetId = targetId;\n if (targetId.indexOf('SeriesGroup') > -1) {\n this.currentSeriesIndex = +targetId.split('SeriesGroup')[1];\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (targetElement.children[1].id.indexOf('_Point_') === -1) {\n markerGroup = getElement(this.element.id + 'SymbolGroup' + targetId.split('SeriesGroup')[1]);\n }\n targetId = this.focusChild((markerGroup != null ? markerGroup.children[1] : targetElement.children[1]));\n }\n actionKey = this.highlightMode !== 'None' || this.tooltip.enable ? 'Tab' : '';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n this.previousTargetId = targetId;\n if (targetId.indexOf('_chart_legend_page') > -1) {\n if (e.code === 'ArrowLeft') {\n getElement(this.element.id + '_chart_legend_pagedown').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (e.code === 'ArrowRight') {\n getElement(this.element.id + '_chart_legend_pageup').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pagedown'));\n }\n }\n else if ((targetId.indexOf('_chart_legend_') > -1)) {\n var legendElement_1 = targetElement.parentElement.children;\n legendElement_1[this.currentLegendIndex].removeAttribute('tabindex');\n this.currentLegendIndex += (e.code === 'ArrowUp' || e.code === 'ArrowRight') ? +1 : -1;\n this.currentLegendIndex = this.getActualIndex(this.currentLegendIndex, legendElement_1.length);\n var currentLegend = legendElement_1[this.currentLegendIndex];\n this.focusChild(currentLegend);\n targetId = currentLegend.children[1].id;\n actionKey = this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n else if (targetId.indexOf('_Series_') > -1) {\n groupElement = targetElement.parentElement.parentElement;\n var currentPoint = e.target;\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n var seriesIndexes = [];\n for (var i = 0; i < groupElement.children.length; i++) {\n if (groupElement.children[i].id.indexOf('SeriesGroup') > -1) {\n seriesIndexes.push(+groupElement.children[i].id.split('SeriesGroup')[1]);\n }\n }\n this.currentSeriesIndex = seriesIndexes.indexOf(this.currentSeriesIndex) + (e.code === 'ArrowRight' ? 1 : -1);\n this.currentSeriesIndex = seriesIndexes[this.getActualIndex(this.currentSeriesIndex, seriesIndexes.length)];\n }\n else {\n this.currentPointIndex += e.code === 'ArrowUp' ? 1 : -1;\n }\n if (targetId.indexOf('_Symbol') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex + '_Symbol');\n }\n else if (targetId.indexOf('_Point_') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SeriesGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex);\n }\n targetId = this.focusChild(currentPoint);\n actionKey = this.tooltip.enable || this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n }\n else if ((e.code === 'Enter' || e.code === 'Space') && ((targetId.indexOf('_chart_legend_') > -1) ||\n (targetId.indexOf('_Point_') > -1))) {\n targetId = (targetId.indexOf('_chart_legend_page') > -1) ? targetId : ((targetId.indexOf('_chart_legend_') > -1) ?\n targetElement.children[1].id : targetId);\n actionKey = 'Enter';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, targetId, actionKey);\n }\n return false;\n };\n Chart.prototype.setTabIndex = function (previousElement, currentElement) {\n if (previousElement) {\n previousElement.removeAttribute('tabindex');\n }\n if (currentElement) {\n currentElement.setAttribute('tabindex', '0');\n }\n };\n Chart.prototype.getActualIndex = function (index, totalLength) {\n return index > totalLength - 1 ? 0 : (index < 0 ? totalLength - 1 : index);\n };\n Chart.prototype.focusChild = function (element) {\n element.setAttribute('tabindex', '0');\n var className = element.getAttribute('class');\n element.setAttribute('tabindex', '0');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = 'e-chart-focused ' + className;\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n element.setAttribute('class', className);\n element.focus();\n return element.id;\n };\n /**\n * Handles the document onkey.\n *\n * @private\n */\n Chart.prototype.documentKeyHandler = function (e) {\n // 74 - J\n if (e.altKey && e.keyCode === 74 && !isNullOrUndefined(this.element)) {\n this.element.focus();\n }\n };\n Chart.prototype.chartKeyboardNavigations = function (e, targetId, actionKey) {\n this.isLegendClicked = false;\n switch (actionKey) {\n case 'Tab':\n case 'ArrowMove':\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n if (targetId.indexOf('_Point_') > -1) {\n var seriesIndex = +(targetId.split('_Series_')[1].split('_Point_')[0]);\n var pointIndex = +(targetId.split('_Series_')[1].replace('_Symbol', '').split('_Point_')[1]);\n var pointRegion = this.visibleSeries[seriesIndex].points[pointIndex].symbolLocations[0];\n this.mouseX = pointRegion.x + this.initialClipRect.x;\n this.mouseY = pointRegion.y + this.initialClipRect.y;\n if (this.highlightModule) {\n this.highlightModule.highlightChart(document.getElementById(targetId), 'mousemove');\n this.highlightModule.completeSelection(document.getElementById(targetId), 'mousemove');\n }\n if (this.tooltipModule) {\n this.tooltipModule.tooltip();\n }\n }\n if (this.highlightModule && this.highlightMode !== 'None') {\n targetId = targetId.indexOf('_chart_legend_g_') > -1 ? document.getElementById(targetId).firstChild['id'] : targetId;\n var legendID = this.element.id + '_chart_legend';\n var legendItemsId = [legendID + '_text_', legendID + '_shape_marker_',\n legendID + '_shape_'];\n for (var i = 0; i < legendItemsId.length; i++) {\n var id = legendItemsId[i];\n if (targetId.indexOf(id) > -1) {\n document.getElementById(targetId).setAttribute('class', '');\n this.highlightModule.legendSelection(this, parseInt(targetId.split(id)[1], 10), document.getElementById(targetId), 'mousemove');\n break;\n }\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (targetId.indexOf('_chart_legend_') > -1) {\n this.isLegendClicked = true;\n this.legendModule.click(e);\n this.focusChild(document.getElementById(targetId).parentElement);\n }\n else {\n this.selectionModule.calculateSelectedElements(document.getElementById(targetId), 'click');\n }\n break;\n case 'CtrlP':\n this.print();\n break;\n case 'ESC':\n this.tooltipModule.removeTooltip(1);\n break;\n case 'Equal':\n case 'Minus':\n this.zoomModule.isZoomed = this.zoomModule.performedUI = true;\n this.zoomModule.isPanning = this.isChartDrag = false;\n if (actionKey === 'Equal') {\n this.zoomModule.toolkit.zoomInOutCalculation(1, this, this.axisCollections, this.zoomSettings.mode);\n }\n else {\n this.zoomModule.toolkit.zoomInOutCalculation(-1, this, this.axisCollections, this.zoomSettings.mode);\n }\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n var yArrowPadding = actionKey === 'ArrowUp' ? 10 : (actionKey === 'ArrowDown' ? -10 : 0);\n var xArrowPadding = actionKey === 'ArrowLeft' ? -10 : (actionKey === 'ArrowRight' ? 10 : 0);\n this.zoomModule.isPanning = this.isChartDrag = true;\n this.zoomModule.doPan(this, this.axisCollections, xArrowPadding, yArrowPadding);\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'R':\n this.zoomModule.toolkit.reset(e);\n break;\n }\n };\n /**\n * Handles the mouse click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseClick = function (e) {\n var _this = this;\n var element = e.target;\n var chart = this;\n this.clickCount++;\n var timeInterval = 400;\n if (this.clickCount === 1) {\n this.singleClickTimer = +setTimeout(function () {\n chart.clickCount = 0;\n chart.trigger(chartMouseClick, { target: element.id, x: chart.mouseX, y: chart.mouseY });\n }, timeInterval);\n }\n else if (this.clickCount === 2 && !this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n }\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n var observers = 'observers';\n timeInterval = this.pointDoubleClick[observers].length > 0 ? 400 : 0;\n }\n else {\n timeInterval = this.pointDoubleClick ? 400 : 0;\n }\n if (this.clickCount === 1 && this.pointClick) {\n this.singleClickTimer = +setTimeout(function () {\n _this.clickCount = 0;\n _this.triggerPointEvent(pointClick, e);\n }, timeInterval);\n }\n else if (this.clickCount === 2 && this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n this.triggerPointEvent(pointDoubleClick, e);\n }\n if (this.axisLabelClick) {\n this.triggerAxisLabelClickEvent(axisLabelClick, e);\n }\n this.notify('click', e);\n return false;\n };\n Chart.prototype.triggerPointEvent = function (event, e) {\n var evt = e;\n var data = new ChartData(this);\n var pointData = data.getData();\n if (pointData.series && pointData.point) {\n this.trigger(event, {\n series: this.isBlazor ? {} : pointData.series,\n point: pointData.point,\n seriesIndex: pointData.series.index, pointIndex: pointData.point.index,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n Chart.prototype.triggerAxisLabelClickEvent = function (event, e) {\n var targetElement = e.target;\n var clickEvt = e;\n if (targetElement.id.indexOf('_AxisLabel_') !== -1) {\n var index = targetElement.id.split('_AxisLabel_');\n var axisIndex = +index[0].slice(-1);\n var labelIndex = +index[1];\n var currentAxis = this.axisCollections[axisIndex];\n if (currentAxis.visible && (axisIndex === 0 || axisIndex === 1)) {\n this.trigger(event, {\n chart: this,\n axis: currentAxis,\n text: currentAxis.visibleLabels[labelIndex].text,\n labelID: targetElement.id,\n index: labelIndex,\n location: new ChartLocation(clickEvt.pageX, clickEvt.pageY),\n value: currentAxis.visibleLabels[labelIndex].value\n });\n }\n }\n };\n /**\n * Handles the mouse move on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseMove = function (e) {\n var element = e.target;\n this.trigger(chartMouseMove, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e);\n }\n // Tooltip for chart series.\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n this.axisTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseMove(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n this.isTouch = false;\n return false;\n };\n Chart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_ChartTitle') || targetId === (this.element.id + '_ChartSubTitle') ||\n targetId.indexOf('_AxisTitle') > -1 || targetId.indexOf('_legend_title') > -1);\n var index = 0;\n if (targetId.indexOf('_AxisTitle') > -1) {\n index = parseInt(((targetId.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_')[2], 10);\n }\n if (id && (event.target.textContent.indexOf('...') > -1)) {\n var title = (targetId === (this.element.id + '_ChartTitle')) ? this.title :\n targetId.indexOf('_AxisTitle') > -1 ? this.axisCollections[index].title :\n targetId.indexOf('_ChartSubTitle') > -1 ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n Chart.prototype.axisTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (((targetId.indexOf('AxisLabel') > -1) || targetId.indexOf('Axis_MultiLevelLabel') > -1) &&\n (event.target.textContent.indexOf('...') > -1)) {\n var isTitleOrLegendEnabled = (this.legendSettings.visible || this.primaryXAxis.title === '');\n showTooltip(this.findAxisLabel(targetId), x, y, this.element.offsetWidth, this.element.id + '_EJ2_AxisLabel_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch, isTitleOrLegendEnabled);\n }\n else {\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n }\n };\n Chart.prototype.findAxisLabel = function (text) {\n var texts;\n if (text.indexOf('AxisLabel') > -1) {\n texts = ((text.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_');\n return this.axisCollections[parseInt(texts[0], 10)].visibleLabels[parseInt(texts[1], 10)].originalText;\n }\n else {\n texts = ((text.replace(this.element.id, '')).replace('Axis_MultiLevelLabel_Level_', '').replace('Text_', '')).split('_');\n return (this.axisCollections[parseInt(texts[0], 10)].multiLevelLabels[parseInt(texts[1], 10)]\n .categories[parseInt(texts[2], 10)].text);\n }\n };\n /**\n * Handles the mouse down on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseDown = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var offset = Browser.isDevice ? 20 : 30;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n if (this.stockChart && this.stockChart.zoomSettings.enablePan) {\n this.allowPan = true;\n }\n this.trigger(chartMouseDown, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.clientX;\n pageY = e.clientY;\n target = e.target;\n }\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n this.mouseDownX = this.previousMouseMoveX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n this.mouseDownY = this.previousMouseMoveY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n if (this.isTouch) {\n this.isDoubleTap = (new Date().getTime() < this.threshold && target.id.indexOf(this.element.id + '_Zooming_') === -1 &&\n (this.mouseDownX - offset >= this.mouseX || this.mouseDownX + offset >= this.mouseX) &&\n (this.mouseDownY - offset >= this.mouseY || this.mouseDownY + offset >= this.mouseY) &&\n (this.mouseX - offset >= this.mouseDownX || this.mouseX + offset >= this.mouseDownX) &&\n (this.mouseY - offset >= this.mouseDownY || this.mouseY + offset >= this.mouseDownY));\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseDown();\n }\n this.notify(Browser.touchStartEvent, e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseEnd = function (e) {\n var pageY;\n var pageX;\n var touchArg;\n if (e.type === 'touchend') {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n this.isTouch = true;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageY = e.clientY;\n pageX = e.clientX;\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseUp(e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.chartOnMouseUp = function (e) {\n var element = e.target;\n this.trigger(chartMouseUp, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.isChartDrag = false;\n this.allowPan = false;\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.axisTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.threshold = new Date().getTime() + 300;\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseUp();\n }\n if (!this.enableCanvas && this.seriesElements) {\n this.seriesElements.removeAttribute('clip-path');\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /**\n * Method to set culture for chart\n */\n Chart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * Method to set the annotation content dynamically for chart.\n */\n Chart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n var annotation = this.annotations[annotationIndex];\n var element;\n if (content !== null) {\n annotation.content = content;\n if (parentNode) {\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n element = this.createElement('div');\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Method to set locale constants\n */\n Chart.prototype.setLocaleConstants = function () {\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ResetZoom: 'Reset Zoom'\n };\n };\n /**\n * Theming for chart\n */\n Chart.prototype.setTheme = function () {\n /*! Set theme */\n this.themeStyle = getThemeColor(this.theme, this.enableCanvas);\n if (!(document.getElementById(this.element.id + 'Keyboard_chart_focus'))) {\n var style = document.createElement('style');\n style.setAttribute('id', this.element.id + 'Keyboard_chart_focus');\n style.innerText = '.e-chart-focused:focus, path[class*=_ej2_chart_selection_series]:focus,' +\n 'path[id*=_Point_]:focus, text[id*=_ChartTitle]:focus {outline: none } .e-chart-focused:focus-visible, path[class*=_ej2_chart_selection_series]:focus-visible,' +\n 'path[id*=_Point_]:focus-visible, text[id*=_ChartTitle]:focus-visible {outline: 1.5px ' + this.themeStyle.tabColor + ' solid}';\n document.body.appendChild(style);\n }\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]}\n * @private\n */\n /* eslint-disable */\n Chart.prototype.requiredModules = function () {\n var _this = this;\n var modules = [];\n var series = this.series;\n var enableAnnotation = false;\n var moduleName;\n var errorBarVisible = false;\n var isPointDrag = false;\n var dataLabelEnable = false;\n var zooming = this.zoomSettings;\n this.chartAreaType = (series.length > 0 && (series[0].type === 'Polar' || series[0].type === 'Radar')) ? 'PolarRadar' : 'Cartesian';\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this]\n });\n }\n series.map(function (value) {\n _this.isLegend = (_this.legendSettings.visible && ((value.name !== '') || !!_this.isLegend));\n moduleName = value.type.indexOf('100') !== -1 ? value.type.replace('100', '') + 'Series' : value.type + 'Series';\n errorBarVisible = value.errorBar.visible || errorBarVisible;\n dataLabelEnable = value.marker.dataLabel.visible || dataLabelEnable || (value.type == 'Pareto' && value.paretoOptions.marker.dataLabel.visible);\n isPointDrag = value.dragSettings.enable || isPointDrag;\n if (!modules.some(function (currentModule) {\n return currentModule.member === moduleName;\n })) {\n modules.push({\n member: moduleName,\n args: [_this, series]\n });\n }\n if (_this.chartAreaType === 'PolarRadar') {\n modules.push({\n member: value.drawType + 'Series',\n args: [_this, series]\n });\n }\n if (value.type === 'Pareto') {\n modules.push({\n member: 'ColumnSeries',\n args: [_this, series]\n });\n modules.push({\n member: 'LineSeries',\n args: [_this, series]\n });\n }\n });\n this.findIndicatorModules(modules);\n this.findTrendLineModules(modules);\n modules = this.findAxisModule(modules);\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (errorBarVisible) {\n modules.push({\n member: 'ErrorBar',\n args: [this, series]\n });\n }\n if (this.isLegend) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && !this.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan || zooming.enableScrollbar || zooming.showToolbar)) {\n modules.push({\n member: 'Zoom',\n args: [this, this.zoomSettings]\n });\n if (zooming.enableScrollbar) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n }\n if (this.selectionMode !== 'None' && !(this.chartAreaType === 'PolarRadar' &&\n this.selectionMode.indexOf('Drag') > -1)) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None' || this.legendSettings.enableHighlight) {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (dataLabelEnable) {\n modules.push({\n member: 'DataLabel',\n args: [this, series]\n });\n }\n if (isPointDrag) {\n modules.push({\n member: 'DataEditing',\n args: [this]\n });\n }\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findAxisModule = function (modules) {\n var axisCollections = [];\n axisCollections.push(this.primaryXAxis);\n axisCollections.push(this.primaryYAxis);\n axisCollections = axisCollections.concat(this.axes);\n var datetimeEnabled = false;\n var categoryEnabled = false;\n var logarithmicEnabled = false;\n var striplineEnabled = false;\n var dateTimeCategoryEnabled = false;\n var multiLevelEnabled = false;\n for (var _i = 0, axisCollections_1 = axisCollections; _i < axisCollections_1.length; _i++) {\n var axis = axisCollections_1[_i];\n datetimeEnabled = axis.valueType === 'DateTime' || datetimeEnabled;\n categoryEnabled = axis.valueType === 'Category' || categoryEnabled;\n logarithmicEnabled = axis.valueType === 'Logarithmic' || logarithmicEnabled;\n dateTimeCategoryEnabled = axis.valueType === 'DateTimeCategory' || dateTimeCategoryEnabled;\n striplineEnabled = this.findStriplineVisibility(axis.stripLines) || striplineEnabled;\n multiLevelEnabled = axis.multiLevelLabels.length > 0 || multiLevelEnabled;\n this.scrollSettingEnabled = axis.scrollbarSettings.enable ? true : this.scrollSettingEnabled;\n }\n if (datetimeEnabled) {\n modules.push({\n member: 'DateTime',\n args: [this]\n });\n }\n if (categoryEnabled) {\n modules.push({\n member: 'Category',\n args: [this]\n });\n }\n if (logarithmicEnabled) {\n modules.push({\n member: 'Logarithmic',\n args: [this]\n });\n }\n if (striplineEnabled) {\n modules.push({\n member: 'StripLine',\n args: [this]\n });\n }\n if (multiLevelEnabled) {\n modules.push({\n member: 'MultiLevelLabel',\n args: [this]\n });\n }\n if (dateTimeCategoryEnabled) {\n modules.push({\n member: 'DateTimeCategory',\n args: [this]\n });\n }\n if (this.scrollSettingEnabled) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findIndicatorModules = function (modules) {\n var macdEnable;\n var bandEnable;\n var indicators = this.indicators;\n if (this.indicators.length) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n indicators.map(function (indicator) {\n macdEnable = macdEnable || indicator.type === 'Macd';\n bandEnable = bandEnable || indicator.type === 'BollingerBands';\n });\n if (macdEnable) {\n modules.push({\n member: 'ColumnSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'RangeAreaSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'SplineRangeAreaSeries',\n args: [this]\n });\n }\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n modules.push({\n member: indicator.type + 'Indicator',\n args: [this]\n });\n }\n }\n };\n Chart.prototype.findTrendLineModules = function (modules) {\n var isLine;\n var isSpline;\n var _loop_1 = function (series) {\n var markerEnable;\n series.trendlines.map(function (trendline) {\n markerEnable = markerEnable || trendline.marker.visible;\n isLine = isLine || (trendline.type === 'Linear' || trendline.type === 'MovingAverage') ? true : false;\n isSpline = isSpline || (!isLine || (trendline.type === 'Exponential' || trendline.type === 'Logarithmic' || trendline.type === 'Power' || trendline.type === 'Polynomial')) ? true : false;\n });\n if (markerEnable) {\n modules.push({\n member: 'Marker',\n args: [this_1, series]\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n if (isLine || isSpline) {\n modules.push({\n member: 'TrendLine',\n args: [this]\n });\n }\n if (isLine) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n }\n if (isSpline) {\n modules.push({\n member: 'SplineSeries',\n args: [this]\n });\n }\n };\n Chart.prototype.findStriplineVisibility = function (striplines) {\n var visible = false;\n for (var _i = 0, striplines_1 = striplines; _i < striplines_1.length; _i++) {\n var stripline = striplines_1[_i];\n if (stripline.visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To Remove the SVG.\n * @return {boolean}\n * @private\n */\n Chart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n if (this.enableCanvas && this.svgObject && this.svgObject.tagName === 'CANVAS') {\n this.renderer.clearRect(new Rect(0, 0, this.availableSize.width, this.availableSize.height));\n if (this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n return null;\n }\n removeElement(this.element.id + '_Secondary_Element');\n if (this.isReact) {\n this.clearTemplate();\n }\n var removeLength = 0;\n if (this.zoomModule && this.zoomModule.pinchTarget) {\n this.zoomModule.pinchTarget.id = '';\n this.zoomModule.pinchTarget.setAttribute('opacity', '0');\n this.svgObject.appendChild(this.zoomModule.pinchTarget);\n removeLength = 1;\n }\n // Fix for blazor resize issue\n if (!isNullOrUndefined(this.resizeTo)) {\n if (this.resizeTo !== this.checkResize && this.isBlazor && this.element.childElementCount) {\n var containerCollection = document.querySelectorAll('.e-chart');\n for (var index = 0; index < containerCollection.length; index++) {\n var container = containerCollection[index];\n while (container.firstChild) {\n remove(container.firstChild);\n }\n }\n }\n this.checkResize = this.resizeTo;\n }\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > removeLength) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode && !(this.stockChart)) {\n remove(this.svgObject);\n }\n }\n };\n Chart.prototype.refreshDefinition = function (definitions) {\n for (var _i = 0, definitions_1 = definitions; _i < definitions_1.length; _i++) {\n var item = definitions_1[_i];\n item.axes = [];\n }\n };\n /**\n * Refresh the axis default value.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.refreshAxis = function () {\n var axis = this.primaryXAxis;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis = this.primaryYAxis;\n axis.isStack100 = false;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n for (var _i = 0, _a = this.axes; _i < _a.length; _i++) {\n var item = _a[_i];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n for (var _b = 0, _c = this.paretoSeriesModule.paretoAxes; _b < _c.length; _b++) {\n var item = _c[_b];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n }\n };\n Chart.prototype.axisChange = function (axis) {\n if (!axis.name && !axis.valueType) {\n return false;\n }\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData();\n return true;\n };\n /**\n * Get visible series by index\n */\n Chart.prototype.getVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Fix for live data update flicker issue\n */\n Chart.prototype.refreshLiveData = function () {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n if (!this.isBlazor) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n /**\n * To remove style element\n */\n Chart.prototype.removeStyles = function () {\n removeElement(this.element.id + '_ej2_chart_selection');\n removeElement(this.element.id + '_ej2_chart_highlight');\n };\n /**\n * To trigger the manual mouse move event for live chart tooltip\n */\n Chart.prototype.mouseMoveEvent = function () {\n if (this.tooltip.enable && this.previousPageX !== null && this.previousPageY !== null) {\n var mousemove = document.createEvent('MouseEvent');\n mousemove.initMouseEvent('mousemove', true, false, window, 1, 100, 100, this.previousPageX, this.previousPageY, false, false, false, false, 0, null);\n this.element.dispatchEvent(mousemove);\n }\n };\n /**\n * Displays a tooltip for the data points.\n *\n * @param {object} x - Specifies the x value of the point or x coordinate.\n * @param {number} y - Specifies the x value of the point or y coordinate.\n * @param {boolean} isPoint - Specifies whether x and y are data point or chart coordinates.\n * @returns {void}\n */\n Chart.prototype.showTooltip = function (x, y, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n if (isPoint) {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n var pointX = series.xAxis.valueType == 'DateTime' ? point.xValue : point.x;\n var xValue = x;\n if (series.xAxis.valueType == 'DateTime') {\n xValue = new Date(xValue).getTime();\n }\n if (x == pointX && y === point.yValue) {\n this.mouseX = point.regions[0].x + this.chartAxisLayoutPanel.seriesClipRect.x;\n this.mouseY = point.regions[0].y + this.chartAxisLayoutPanel.seriesClipRect.y;\n this.tooltipModule.tooltip();\n this.markerRender.mouseMoveHandler();\n break;\n }\n }\n }\n }\n else {\n if (this.isTouch) {\n this.startMove = true;\n }\n this.mouseX = x;\n this.mouseY = y;\n this.tooltipModule.mouseMoveHandler();\n this.markerRender.mouseMoveHandler();\n }\n };\n /**\n * Hides a tooltip in the chart.\n *\n * @returns {void}\n */\n Chart.prototype.hideTooltip = function () {\n this.tooltipModule.removeTooltip(Browser.isDevice ? 2000 : 1000);\n };\n /**\n * Displays a crosshair for the chart.\n *\n * @param {object} x - Specifies the x value of the point or x coordinate.\n * @param {number} y - Specifies the x value of the point or y coordinate.\n * @returns {void}\n */\n Chart.prototype.showCrosshair = function (x, y) {\n this.mouseX = x;\n this.mouseY = y;\n this.isCrosshair = false;\n if (withInBounds(this.mouseX, this.mouseY, this.chartAxisLayoutPanel.seriesClipRect)) {\n this.crosshairModule.crosshair();\n }\n else {\n this.hideCrosshair();\n }\n this.isCrosshair = true;\n };\n /**\n * Hides a tooltip in the chart.\n *\n * @returns {void}\n */\n Chart.prototype.hideCrosshair = function () {\n this.crosshairModule.removeCrosshair(Browser.isDevice ? 2000 : 1000);\n };\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\n var axis;\n if (!this.delayRedraw) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'primaryXAxis':\n axis = newProp.primaryXAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryXAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'primaryYAxis':\n axis = newProp.primaryYAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryYAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'axes':\n for (var _b = 0, _c = Object.keys(newProp.axes); _b < _c.length; _b++) {\n var index = _c[_b];\n axis = newProp.axes[index];\n refreshBounds = refreshBounds || this.axisChange(axis);\n if (!axis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.axes[index].setIsInversedAndOpposedPosition();\n }\n }\n break;\n case 'height':\n case 'width':\n this.createChartSvg();\n refreshBounds = true;\n break;\n case 'subTitle':\n case 'title':\n refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'dataSource':\n this.processData(false);\n refreshBounds = true;\n break;\n case 'enableCanvas':\n this.refresh();\n break;\n case 'series':\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n // I264774 blazor series visible property binding not working issue fixed.\n if (this.isBlazor && series && ((series.visible !== oldProp.series[i].visible) || series.isClosed ||\n series.marker || series.emptyPointSettings || series.type || series.boxPlotMode || series.showMean)) {\n blazorProp = true;\n }\n if (!isNullOrUndefined(series) && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close || series.trendlines ||\n series.fill || series.name || series.marker || series.width || series.binInterval || series.type || (series.visible !== oldProp.series[i].visible) || blazorProp)) {\n extend(this.getVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n }\n if (seriesRefresh) {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n refreshBounds = true;\n }\n break;\n case 'indicators':\n refreshBounds = true;\n break;\n case 'zoomSettings':\n if (newProp.zoomSettings.enableScrollbar || oldProp.zoomSettings.enableScrollbar) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'chartArea':\n if (newProp.chartArea.border && newProp.chartArea.border.width) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'legendSettings':\n if (!newProp.legendSettings.background || !newProp.legendSettings.opacity) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'palettes':\n this.calculateVisibleSeries();\n renderer = true;\n break;\n case 'selectedDataIndexes':\n if (this.selectionModule) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.selectedDataIndexes = this.selectedDataIndexes;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n else if (this.highlightModule) {\n this.highlightModule.currentMode = this.highlightMode;\n this.highlightModule.highlightDataIndexes = this.selectedDataIndexes;\n this.highlightModule.styleId = this.element.id + '_ej2_chart_highlight';\n this.highlightModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'selectionMode':\n if (this.selectionModule && newProp.selectionMode && newProp.selectionMode.indexOf('Drag') === -1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'isMultiSelect':\n if (this.selectionModule && !newProp.isMultiSelect && this.selectionModule.selectedDataIndexes.length > 1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'highlightMode':\n case 'selectionPattern':\n case 'highlightPattern':\n this.removeStyles();\n renderer = true;\n break;\n case 'theme':\n this.animateSeries = true;\n break;\n case 'enableRtl':\n case 'locale':\n case 'currencyCode':\n if (this.isBlazor) {\n this.setCulture();\n renderer = true;\n }\n else {\n this.refresh();\n }\n break;\n case 'tooltip':\n if (this.tooltipModule) { // To check the tooltip enable is true.\n this.tooltipModule.previousPoints = [];\n if (this.tooltip.template) {\n this.tooltipModule.template = this.tooltip.template;\n }\n }\n break;\n }\n }\n if (!refreshBounds && renderer) {\n this.rotatedDataLabelCollections = [];\n this.removeSvg();\n this.renderElements();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (refreshBounds) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n if (this.isReact) {\n this.clearTemplate();\n }\n this.dragY = null;\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n this.redraw = false;\n this.animated = false;\n }\n }\n };\n __decorate([\n Property(null)\n ], Chart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"16px\", fontStyle: 'Normal', fontWeight: '600', color: null }, titleSettings)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '400', color: null }, titleSettings)\n ], Chart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Chart.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Chart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"background\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], Chart.prototype, \"chartArea\", void 0);\n __decorate([\n Complex({ name: 'primaryXAxis' }, Axis)\n ], Chart.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({ name: 'primaryYAxis' }, Axis)\n ], Chart.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Collection([{}], Row)\n ], Chart.prototype, \"rows\", void 0);\n __decorate([\n Collection([{}], Column)\n ], Chart.prototype, \"columns\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], Chart.prototype, \"axes\", void 0);\n __decorate([\n Collection([{}], Series)\n ], Chart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], ChartAnnotationSettings)\n ], Chart.prototype, \"annotations\", void 0);\n __decorate([\n Property([])\n ], Chart.prototype, \"palettes\", void 0);\n __decorate([\n Property('Material')\n ], Chart.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Chart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], Chart.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Chart.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([{}], RangeColorSetting)\n ], Chart.prototype, \"rangeColorSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Chart.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"highlightColor\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowExport\", void 0);\n __decorate([\n Collection([], Indexes)\n ], Chart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableAutoIntervalOnBothAxis\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Collection([], TechnicalIndicator)\n ], Chart.prototype, \"indicators\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], Chart.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisRangeCalculated\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"sharedTooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"onZooming\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollEnd\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragEnd\", void 0);\n __decorate([\n Property('USD')\n ], Chart.prototype, \"currencyCode\", void 0);\n Chart = __decorate([\n NotifyPropertyChanges\n ], Chart);\n return Chart;\n}(Component));\nexport { Chart };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<span class=\"e-highlight\">$1</span>');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * <input id=\"list\" type=\"text\"/>\n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else if ((!this.enableVirtualization) || (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource)))) {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n filterQuery.skip(this.virtualItemStartIndex);\n filterQuery.take(takeValue);\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n var isHtmlElement = /<[^>]*>/g.test(e.item.innerText);\n if (isHtmlElement) {\n e.item.innerText = e.item.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { Property, Complex, ChildProperty, Collection, extend, Browser } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accept input both as '100px' and '100%'.\n * If specified as '100%, row renders to the full height of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n return _this;\n }\n /**\n * Measure the row size\n *\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var width = 0;\n var innerPadding = (axis.labelPosition === 'Inside' && (chart.axes.indexOf(axis) > -1)) ? -5 : 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as like '100px' or '100%'.\n * If specified as '100%, column renders to the full width of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n *\n * @returns {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair ToolTip.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Configures the axes in the chart.\n *\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n *\n * @private\n */\n _this.internalVisibility = true;\n /**\n * This property is used to place the vertical axis in opposed position and horizontal axis in inversed\n * when RTL is enabled in chart\n *\n * @private */\n _this.isRTLEnabled = false;\n _this.angle = _this.labelRotation;\n return _this;\n }\n /**\n * The function used to find tick size.\n *\n * @returns {number} tick line size\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.isAxisOpposedPosition && this.crossAt >= range.max) || (this.isAxisOpposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n *\n * @returns {number} labelSize\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding, definition, chart) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n var angle = this.titleRotation;\n if ((isNullOrUndefined(angle))) {\n this.titleSize = measureText(this.title, this.titleStyle, chart.themeStyle.axisTitleFont);\n titleSize = this.titleSize.height + innerPadding;\n }\n else {\n this.titleSize = rotateTextSize(this.titleStyle, this.title, angle, chart);\n titleSize = (this.orientation === 'Vertical' ? this.titleSize.width : this.titleSize.height) + innerPadding;\n }\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1, chart.enableRtl, chart.themeStyle.legendLabelFont);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n if (this.isAxisOpposedPosition) {\n definition.insideFarSizes.push(labelSize);\n }\n else {\n definition.insideNearSizes.push(labelSize);\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateCrossValue = function () {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.isAxisOpposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.isAxisOpposedPosition) {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate visible range for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function (size) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isAxisInverse) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n *\n * @returns {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/<br>/g, ' '), this.labelStyle, chart.themeStyle.axisLabelFont);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('<br>') : label.originalText, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n else {\n label.size = measureText(label.text, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('<br>');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isAxisInverse ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default:\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle, chart.enableRtl, null, null, chart.themeStyle.axisLabelFont);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle, chart.enableRtl, null, null, chart.themeStyle.axisLabelFont);\n }\n // eslint-disable-next-line no-case-declarations\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n previousEnd = this.isAxisInverse ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n else if (this.angle !== 0 && this.orientation === 'Vertical') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n *\n * @returns {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isAxisInverse ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n /**\n * Set the axis `opposedPosition` and `isInversed` properties.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.setIsInversedAndOpposedPosition = function (isPolar) {\n if (isPolar === void 0) { isPolar = false; }\n this.isAxisOpposedPosition = this.opposedPosition || (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical');\n if (this.opposedPosition && (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical')) {\n this.isAxisOpposedPosition = false;\n }\n this.isAxisInverse = this.isInversed || (this.isRTLEnabled && this.orientation === 'Horizontal');\n if (this.isInversed && (!isPolar && this.isRTLEnabled && this.orientation === 'Horizontal')) {\n this.isAxisInverse = false;\n }\n };\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"titleRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property(Browser.isDevice ? 'Rotate45' : 'Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = index;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth - target.scrollLeft) +\n (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","module.exports = __webpack_public_path__ + \"img/Logo Refinitiv.82789228.jpg\";","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable max-len */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding, Location } from '../model/base';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim, getTextAnchor } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Series')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"itemPadding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"enableHighlight\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property('Normal')\n ], LegendSettings.prototype, \"textWrap\", void 0);\n __decorate([\n Property('Ellipsis')\n ], LegendSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"isInversed\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"reverse\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n *\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function BaseLegend(chart) {\n this.maxItemHeight = 0;\n this.rowHeights = [];\n this.pageHeights = [];\n this.columnHeights = [];\n this.pageXCollections = []; // pages of x locations\n this.chartRowCount = 1;\n this.legendTitleCollections = [];\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart' || chart.getModuleName() === 'chart3d');\n this.isAccChartControl = (chart.getModuleName() === 'accumulationchart');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.isStockChartControl = (chart.getModuleName() === 'stockChart');\n this.bulletChart = this.chart;\n this.fivePixel = 5;\n this.rowCount = 0;\n this.pageButtonSize = 8;\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n }\n ;\n /**\n * Calculate the bounds for the legends.\n *\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize) {\n var legend = this.legend;\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n this.itemPadding = this.legend.itemPadding ? this.legend.itemPadding : this.isVertical ? this.legend.padding : 20;\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n if (this.chart.getModuleName() === 'chart3d') {\n this.library.get3DLegendBounds(availableSize, this.legendBounds, legend);\n }\n else {\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n }\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n *\n * @param position\n * @param availableSize\n * @param position\n * @param availableSize\n * @returns {void}\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl || this.isStockChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @returns {void}\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n if (legend.mode === 'Gradient') {\n legendBounds.width = legend.width ? legendBounds.width : this.isVertical ? computedWidth : 0.75 * legendBounds.width;\n legendBounds.height = legend.height ? legendBounds.height : this.isVertical ? 0.75 * legendBounds.height : computedHeight;\n }\n else {\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n }\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ?\n maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var marginBottom = this.chart.margin.bottom;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n else if (position === 'Top') {\n var axisTextSize = void 0;\n if (this.isChartControl) {\n axisTextSize = measureText('100', this.chart.verticalAxes[0].labelStyle, this.chart.themeStyle.legendLabelFont);\n }\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : (this.isChartControl ? -padding * 2 - axisTextSize.height / 2 : 0);\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n else if (position === 'Left') {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw) {\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n this.itemPadding = this.isBulletChartControl ? legend.padding : this.itemPadding;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n this.legendRegions = [];\n this.chartRowCount = 1;\n var maxHeight = 0;\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n if (this.isChartControl || (this.isAccChartControl && !this.isVertical)) {\n var pageCount = 1;\n var rowHeights = this.rowHeights[0] + padding;\n for (var i = 1; i < this.rowHeights.length; i++) {\n if ((rowHeights + this.rowHeights[i] + padding) > (this.legendBounds.height - this.pageButtonSize - this.maxItemHeight / 2)) {\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n pageCount++;\n rowHeights = 0;\n }\n rowHeights += (this.rowHeights[i] + (this.isVertical ? this.itemPadding : padding));\n }\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n this.totalPages = pageCount;\n }\n for (var i = 0; i < this.legendCollections.length; i++) {\n if (this.legendCollections[i].text !== '') {\n maxHeight = Math.max(this.legendCollections[i].textSize.height, maxHeight);\n break;\n }\n else {\n continue;\n }\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\n }\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (this.isTitle && !this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = titlePosition === ((!this.isRtlEnable) ? 'Left' : 'Right') ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n if (chart.legendSettings.mode === 'Gradient' && this.legendCollections.length > 1) {\n this.getLinearLegend(legendBounds, chart, legend, legendTranslateGroup);\n this.totalPages = 1;\n }\n else if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var count = 0;\n var previousLegend = this.legendCollections[firstLegend];\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var startPadding = this.isBulletChartControl ? 0 : titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left;\n var xLocation = this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n (!this.isRtlEnable) ? legendBounds.x + startPadding : legendBounds.x + ((this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width) - startPadding;\n var start = new ChartLocation(xLocation, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled || chart.enableRtl ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + this.itemPadding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isAccChartControl || this.isChartControl || this.isBulletChartControl || this.isStockChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n var legendIndex = void 0;\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n var legendOption = void 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n legendIndex = !this.isReverse ? count : (this.legendCollections.length - 1) - count;\n if (this.chart.getModuleName() === 'accumulationchart') {\n legendOption.fill = (this.chart || this.chart || this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n if (this.chart.getModuleName() === 'stockChart') {\n legendOption.type = this.chart.visibleSeries[count].type;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', legendIndex)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', i === 0 ? '0' : '');\n legendSeriesGroup.setAttribute('aria-label', legend.description || (legendOption.text + ' series is ' + (legendOption.visible ? 'showing, press enter to hide the ' : 'hidden, press enter to show the ') + legendOption.text + ' series'));\n legendSeriesGroup.setAttribute('role', 'button');\n legendSeriesGroup.setAttribute('aria-pressed', legendOption.visible ? 'true' : 'false');\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, legendIndex);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count, legendIndex);\n if (legendSeriesGroup) {\n legendSeriesGroup.style.cssText =\n 'pointer-events: bounding-box; cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer');\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n this.totalPages = (this.isPaging && !this.isBulletChartControl && !this.legend.enablePages && !this.isVertical &&\n this.totalPages > this.chartRowCount) ? this.chartRowCount : this.totalPages;\n if (this.isPaging && this.totalPages > 1) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n };\n /** @private */\n BaseLegend.prototype.getLinearLegend = function (legendBounds, chart, legend, legendTranslateGroup) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var previousLegend = this.legendCollections[0];\n var nextLegend = this.legendCollections[1];\n var defElement = this.chart.renderer.createDefs();\n var gradientLegendCount = 0;\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var fillColors = [];\n var numberItems = [];\n if (legend.title) {\n if (!this.isVertical) {\n if (legend.titlePosition === 'Left') {\n legendBounds.x += this.legendTitleSize.width;\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Right') {\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Top') {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n else {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var colorMap = _a[_i];\n if (numberItems.indexOf(colorMap.start) < 0) {\n numberItems.push(colorMap.start);\n }\n if (colorMap.colors.length > 2) {\n var diffValue = (colorMap.end - colorMap.start);\n var colorsLength = colorMap.colors.length - 1;\n if (diffValue > 0) {\n diffValue = diffValue / colorsLength;\n for (var index = 1; index < colorsLength; index++) {\n var calculatedValue = colorMap.start + (diffValue * index);\n numberItems.push(calculatedValue);\n }\n }\n else {\n for (var index = 1; index < colorsLength; index++) {\n numberItems.push(colorMap.start);\n }\n }\n }\n if (numberItems.indexOf(colorMap.end) < 0) {\n numberItems.push(colorMap.end);\n }\n for (var _b = 0, _c = colorMap.colors; _b < _c.length; _b++) {\n var fillColor = _c[_b];\n if (fillColors.indexOf(fillColor) < 0) {\n fillColors.push(fillColor);\n }\n }\n if (colorMap.colors.length > 0 && colorMap.colors.length < 2) {\n fillColors.push(colorMap.colors[0]);\n }\n }\n var x1 = this.isRtlEnable && !this.isVertical ? '100%' : '0%';\n var x2 = this.isVertical || this.isRtlEnable ? '0%' : '100%';\n var y2 = this.isVertical ? '100%' : '0%';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', x1);\n linerGradientEle.setAttribute('y1', '0%');\n linerGradientEle.setAttribute('x2', x2);\n linerGradientEle.setAttribute('y2', y2);\n var full = numberItems[numberItems.length - 1] - numberItems[0];\n for (var b = 0; b < fillColors.length; b++) {\n var offsetValue = numberItems[b] - numberItems[0];\n offsetValue = offsetValue / full;\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', offsetValue.toString());\n stopEle.setAttribute('stop-color', fillColors[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n var startLabel = previousLegend.text.toString();\n var endLabel = nextLegend.text.toString();\n var startTextSize = measureText(startLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var endTextSize = measureText(endLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var textWidth = startTextSize.width > endTextSize.width ? startTextSize.width : endTextSize.width;\n var textHeight = startTextSize.height > endTextSize.height ? startTextSize.height : endTextSize.height;\n var otherSpaces = (2 * textWidth) + (4 * legend.padding);\n var linearBarWidth = legendBounds.width;\n var linearBarHeight = legendBounds.height;\n var xValue = legendBounds.x + textWidth + (2 * legend.padding);\n var yValue = legendBounds.y + legend.padding;\n var startLabelY;\n var endLabelY;\n var startLabelX;\n var endLabelX;\n if (this.isVertical) {\n otherSpaces = (2 * textHeight) + (4 * legend.padding);\n linearBarWidth = legendBounds.width - (2 * legend.padding);\n linearBarHeight = legendBounds.height - otherSpaces;\n xValue = legendBounds.x + legend.padding;\n yValue = legendBounds.y + textHeight + (2 * legend.padding);\n startLabelY = legendBounds.y + legend.padding + textHeight;\n endLabelY = yValue + linearBarHeight + textHeight;\n startLabelX = (legendBounds.x + (legendBounds.width * 0.5)) - (textWidth * 0.5);\n endLabelX = startLabelX;\n if (linearBarWidth > 30) {\n var diffWidth = linearBarWidth - 30;\n linearBarWidth = 30;\n xValue = xValue + (diffWidth / 2);\n }\n }\n else {\n linearBarWidth = legendBounds.width - otherSpaces;\n linearBarHeight = legendBounds.height - (2 * legend.padding);\n startLabelX = legendBounds.x + ((!this.isRtlEnable) ? legend.padding + (textWidth - startTextSize.width) :\n linearBarWidth + (3 * legend.padding) + textWidth);\n endLabelX = legendBounds.x + ((!this.isRtlEnable) ? linearBarWidth + (3 * legend.padding) + textWidth :\n legend.padding + (textWidth - endTextSize.width));\n startLabelY = legendBounds.y + (legendBounds.height * 0.5) + (textHeight * 0.25);\n endLabelY = startLabelY;\n if (linearBarHeight > 30) {\n var diffHeight = linearBarHeight - 30;\n linearBarHeight = 30;\n yValue = yValue + (diffHeight / 2);\n }\n }\n var anchor = chart.enableRtl ? 'end' : '';\n var textOptions = new TextOption('', startLabelX, startLabelY, anchor, startLabel);\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 1);\n var fontcolor = previousLegend.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n textOptions = new TextOption('', endLabelX, endLabelY, anchor, endLabel);\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 2);\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n var gradientLegend = chart.renderer.drawRectangle({\n width: linearBarWidth,\n height: linearBarHeight,\n x: xValue,\n y: yValue,\n fill: 'url(#' + this.generateId(previousLegend, 'linearGradient', gradientLegendCount) + ')'\n });\n defElement.appendChild(linerGradientEle);\n legendTranslateGroup.appendChild(defElement);\n legendTranslateGroup.appendChild(gradientLegend);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param legendCollection\n * @returns {number}\n * @private\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n *\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding), this.chart.enableRtl, this.chart.themeStyle.legendTitleFont);\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle, this.chart.enableRtl, this.chart.themeStyle.legendTitleFont);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle, this.chart.themeStyle.legendTitleFont);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n var alignment = legend.titleStyle.textAlignment;\n this.isTop = legend.titlePosition === 'Top';\n var anchor = getTextAnchor(legend.titleStyle.textAlignment, chart.enableRtl);\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : (chart.enableRtl) ? 'end' : '';\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color || this.chart.themeStyle.legendTitleFont.color, legendGroup, null, null, null, null, null, null, null, null, null, null, this.chart.themeStyle.legendTitleFont);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds);\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n options.width = (this.isRtlEnable && this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width;\n if (legendGroup) {\n legendGroup.appendChild(chart.renderer.drawRectangle(options));\n }\n else {\n chart.renderer.drawRectangle(options);\n }\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n options.y += (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart' && !this.isStockChartControl) && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.style.cssText = 'clip-path:url(#' + clippath.id + ')';\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, legendIndex) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') && (((legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1)) ||\n ((legendOption.shape === 'HorizontalLine') || (legendOption.shape === 'VerticalLine') || (legendOption.shape === 'Cross')));\n var isCustomBorder = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var borderColor;\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n var strokewidth = isStrokeWidth ? (this.legend.mode === 'Series' ?\n this.chart.visibleSeries[legendIndex].width : this.chart.visibleSeries[0].width) :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var regionPadding;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n if (isCustomBorder && legendIndex < this.chart.visibleSeries.length) {\n var series = this.chart.visibleSeries[legendIndex];\n var seriesBorder = series.border;\n var isLineShapemarker = shape === 'HorizontalLine' || shape === 'VerticalLine';\n borderColor = isLineShapemarker ? symbolColor : seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = isLineShapemarker ? series.width : seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', legendIndex), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), this.legend.opacity, legendOption.dashArray, '');\n var textSize = measureText(legendOption.text, this.legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var x = this.legend.isInversed && !this.isRtlEnable ? legendOption.location.x + textSize.width + this.legend.shapePadding\n : legendOption.location.x;\n var y = legendOption.location.y;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x, legendOption.location.y, this.legend.shapeWidth, this.legend.shapeHeight + regionPadding), index: legendIndex\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n (legendOption.type === 'Doughnut' && shape === 'Doughnut')) {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', legendIndex);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i, legendIndex) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', legendIndex);\n textOptions.text = legendOption.textCollection.length > 0 ? legendOption.textCollection : legendOption.text;\n if (legend.isInversed && !this.isRtlEnable) {\n textOptions.x = legendOption.location.x - (legend.shapeWidth / 2);\n }\n else if (this.isRtlEnable) {\n var textWidth = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont).width;\n textOptions.x = legendOption.location.x - ((legendOption.textCollection.length > 1 ? textWidth / legendOption.textCollection.length : textWidth) + legend.shapeWidth / 2 + legend.shapePadding);\n }\n else {\n textOptions.x = legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n }\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var element = textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n if (isCanvas) {\n var textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n this.legendRegions[i].rect.y = textOptions.y < this.legendRegions[i].rect.y ? textOptions.y : this.legendRegions[i].rect.y;\n this.legendRegions[i].rect.width += textSize.width;\n this.legendRegions[i].rect.height = textSize.height;\n this.legendRegions[i].rect.y -= textSize.height * 0.5;\n this.legendRegions[i].rect.x -= (this.isRtlEnable) ? this.legendRegions[i].rect.width : 0;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n */\n // tslint:disable-next-line:max-func-body-length\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n var pageUp = this.legendID + (!this.isRtlEnable ? '_pageup' : '_pagedown');\n var pageDown = this.legendID + (!this.isRtlEnable ? '_pagedown' : '_pageup');\n var symbolOption = new PathOption(pageUp, 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n this.pagingRegions = [];\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n if (this.isBulletChartControl || this.isStockChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n }\n if (paginggroup) {\n paginggroup.style.cursor = 'pointer';\n }\n if ((this.isChartControl || this.isAccChartControl) && !(!legend.enablePages && this.isPaging)) {\n this.clipPathHeight = this.pageHeights[0];\n }\n else {\n this.clipPathHeight = (rowCount * (this.maxItemHeight + legend.padding));\n }\n //this.clipPathHeight = !(this.isChartControl) ? (rowCount * (this.maxItemHeight + legend.padding)) : this.columnHeights[0];\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var pageTextElement;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var translateX = (this.isRtlEnable) ? legend.border.width + (iconSize / 2) : bounds.width - (2 * (iconSize + padding) + padding + size.width);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + (padding / 2) + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : !this.isRtlEnable ? this.backwardArrowOpacity : this.forwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5 : x, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = !this.isRtlEnable ? '1/' + this.totalPages : this.totalPages + '/1';\n var color = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : legend.textStyle.color || this.chart.themeStyle.legendLabelFont.color;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = !this.isRtlEnable ? this.currentPageNumber + '/' + this.totalNoOfPages : this.totalNoOfPages + '/' + this.currentPageNumber;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, color, paginggroup, false, false, false, false, null, new Rect(translateX, 0, 0, 0), null, null, null, null, this.chart.themeStyle.legendLabelFont);\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - (this.isBulletChartControl ? this.fivePixel : 0) - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = pageDown;\n symbolOption.opacity = !legend.enablePages ? !this.isRtlEnable ? this.forwardArrowOpacity : this.backwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5) : x, y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + translateX + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(isCanvas, null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(isCanvas, pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n BaseLegend.prototype.getPageHeight = function (pageHeights, pageCount) {\n var sum = 0;\n for (var i = 0; i < pageCount; i++) {\n sum += pageHeights[i];\n }\n return sum;\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n */\n BaseLegend.prototype.translatePage = function (isCanvas, pagingText, page, pageNumber, legend) {\n var size = (this.isChartControl || this.isAccChartControl) ? (page ? this.getPageHeight(this.pageHeights, page) : 0) : ((this.clipPathHeight) * page);\n if (!isCanvas && (this.isChartControl || this.isAccChartControl)) {\n this.clipRect.setAttribute('height', this.pageHeights[page].toString());\n if (this.isAccChartControl && this.isPaging && !legend.enablePages && this.isVertical) {\n this.clipRect.setAttribute('height', this.legendBounds.height.toString());\n }\n }\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && !this.isStockChartControl && this.isVertical) {\n var pageX = this.pageXCollections[page * this.maxColumns];\n size = (!this.isRtlEnable) ? pageX - this.legendBounds.x : (this.legendBounds.x + this.maxWidth) - pageX;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = ((!this.isRtlEnable) ? 'translate(-' : 'translate(') + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = (pageNumber) + '/' + this.totalPages;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param event\n * @param pageUp\n * @param event\n * @param pageUp\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[0], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(isCanvas, pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(isCanvas, pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n *\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl || this.isStockChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n *\n * @param event\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex, dashArray) {\n this.location = { x: 0, y: 0 };\n this.textCollection = [];\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n this.dashArray = dashArray;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","const dates = {\r\n addDays: function (date, days) {\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n },\r\n\r\n getTradePeriodName: function (startDate, endDate) {\r\n if (Date.parse(startDate) >= Date.parse(endDate)) {\r\n throw new Error(\"'startDate' must be earlier than the 'endDate'. Please correct the dates.\");\r\n }\r\n\r\n startDate = new Date(startDate);\r\n endDate = new Date(endDate)\r\n\r\n var yearSuffix = startDate.getFullYear().ToString().Substring(2);\r\n var numOfDays = this.getDateDiffInDays(startDate, endDate);\r\n var tradeablePeriod = null;\r\n\r\n // potential M, Q, or CAL periods\r\n if (startDate.getFullYear() === endDate.getFullYear()) {\r\n // month\r\n if (numOfDays <= 31 && numOfDays >= 28) {\r\n startDate = this.addDays(startDate, 1);\r\n tradeablePeriod = startDate.toLocaleString('default', { month: 'short' }) + \"-\" + yearSuffix;\r\n }\r\n\r\n //quarter\r\n if (numOfDays <= 92 && numOfDays >= 90) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (this.getQuarter(startDate) === 1) {\r\n tradeablePeriod = \"Q1-\" + yearSuffix;\r\n } else if (this.getQuarter(startDate) === 2) {\r\n tradeablePeriod = \"Q2-\" + yearSuffix;\r\n } else if (this.getQuarter(startDate) === 3) {\r\n tradeablePeriod = \"Q3-\" + yearSuffix;\r\n } else {\r\n tradeablePeriod = \"Q4-\" + yearSuffix;\r\n }\r\n }\r\n\r\n // summer season\r\n if (numOfDays >= 182 && numOfDays <= 183) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (startDate.toLocaleString('default', { month: 'short' }) === \"Apr\") {\r\n tradeablePeriod = \"Sum-\" + yearSuffix;\r\n }\r\n }\r\n\r\n // calendar\r\n if (numOfDays >= 364 && numOfDays <= 366) {\r\n tradeablePeriod = \"Cal-\" + yearSuffix;\r\n }\r\n } else if (startDate.getFullYear() + 1 === endDate.getFullYear()) {\r\n if (numOfDays >= 182 && numOfDays <= 183) {\r\n startDate = this.addDays(startDate, 1);\r\n\r\n if (startDate.toLocaleString('default', { month: 'short' }) === \"Oct\") {\r\n tradeablePeriod = \"Win-\" + yearSuffix;\r\n }\r\n }\r\n }\r\n\r\n return tradeablePeriod;\r\n },\r\n\r\n getDateDiffInDays: function (startDate, endDate) {\r\n var result = Math.round(Math.abs((startDate - endDate) / (24 * 60 * 60 * 1000))) + 1;\r\n return result;\r\n },\r\n getBusinessDatesCount: function (startDate, endDate) {\r\n if (startDate == undefined || endDate == undefined)\r\n return 0;\r\n\r\n let count = 0;\r\n //set dates to have 0 hours,minutes... as otherwise for october it does the matching and due to daylight saving change it doesnt match the last day and we dont calculate it.\r\n startDate.setHours(0, 0, 0, 0);\r\n endDate.setHours(0, 0, 0, 0);\r\n\r\n const curDate = new Date(startDate.getTime());\r\n while (curDate <= endDate) {\r\n const dayOfWeek = curDate.getDay();\r\n if (dayOfWeek !== 0 && dayOfWeek !== 6) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n return count;\r\n },\r\n getQuarter: function (date) {\r\n date = new Date(date);\r\n\r\n return Math.floor((date.getMonth() + 3) / 3);\r\n }\r\n}\r\n\r\nexport default dates;","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.style.cssText = colors[i].style;\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'style') {\n element.style.cssText = options[keys[i]];\n }\n else {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * To render a Circular clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawCircularClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n textStyle: { fontFamily: 'Segoe UI', color: '#000000' }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n tooltipBoldLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipLightLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipHeaderLine: '#9A9A9A',\n textStyle: theme === 'MaterialDark' ? { fontFamily: 'Roboto', color: 'rgba(18, 18, 18, 1)' } : theme === 'FabricDark' ? { fontFamily: 'Segoe UI', color: '#DADADA' } : { fontFamily: 'Helvetica', color: '#1A1A1A' }\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n textStyle: { fontFamily: 'Inter', color: '#F9FAFB' }\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#1F2937',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Inter', color: '#1F2937' }\n };\n break;\n case 'Bootstrap5':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n textStyle: { fontFamily: 'Helvetica', color: '#212529' }\n };\n break;\n case 'Fluent':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#323130' }\n };\n break;\n case 'FluentDark':\n style = {\n tooltipFill: '#323130',\n tooltipBoldLabel: '#F3F2F2',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#F3F2F1' }\n };\n break;\n case 'Material3':\n style = {\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n textStyle: { fontFamily: 'Roboto', color: '#F4EFF4' }\n };\n break;\n case 'Material3Dark':\n style = {\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n textStyle: { fontFamily: 'Roboto', color: '#313033' }\n };\n break;\n default:\n style = {\n tooltipFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n tooltipBoldLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipLightLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipHeaderLine: theme === 'Fabric' ? '#D2D0CE' : '#ffffff',\n textStyle: theme === 'Material' ? { fontFamily: 'Roboto', color: 'rgba(249, 250, 251, 1)' } : theme === 'Fabric' ? { fontFamily: 'Segoe UI', color: '#333333' } : { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n }\n return style;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font, themeFontStyle) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('<br/>') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('<br>') > -1 || breakText.indexOf('<br/>') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily || themeFontStyle.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function withInAreaBounds(x, y, areaBounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= areaBounds.x - width && x <= areaBounds.x + areaBounds.width + width && y >= areaBounds.y - height\n && y <= areaBounds.y + areaBounds.height + height);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, controlName) {\n if (controlName === void 0) { controlName = ''; }\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n if (controlName === 'RangeNavigator') {\n if ((arrowLocation.x - arrowPadding) > width / 2) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x) + ' ' + height);\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX - arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n if ((arrowLocation.x - arrowPadding) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (width) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (startX) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Plus':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent, themeStyle) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n if (parent) {\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable security/detect-object-injection */\n/* eslint-disable no-useless-escape */\n/* eslint-disable security/detect-non-literal-regexp */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation, animationMode } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption, withInAreaBounds } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"dashArray\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n * <div id=\"tooltip\"/>\n * <script>\n * var tooltipObj = new Tooltip({ isResponsive : true });\n * tooltipObj.appendTo(\"#tooltip\");\n * </script>\n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.highlightPadding = 3;\n this.areaMargin = 10;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n if (this.enableRTL) {\n this.element.setAttribute('dir', 'ltr');\n }\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.width) ? 1 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind' || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color || (this.theme === 'Fabric' || this.theme === 'Fluent' ? '#D2D0CE' : this.border.color)\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n if (!groupElement) {\n return null;\n }\n var x = ((this.enableRTL) ? this.elementSize.width - (size / 2) :\n (this.marginX * 2) + (size / 2)) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n var padding = 0;\n if (this.header.indexOf('<br') > -1) {\n padding = this.header.split(/<br.*?>/g).length + count;\n }\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : padding)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n if (!isNullOrUndefined(groupElement)) {\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.isFixed) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n rect = new Rect(location.x, location.y, width, height);\n }\n else if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n if (this.allowHighlight) {\n rect.x += isLeft ? this.highlightPadding : -(2 * this.highlightPadding);\n }\n }\n }\n if (this.header !== '') {\n var wrapPadding = 2;\n var padding = 0;\n var wrapHeader = this.isWrap ? this.wrappedText : this.header;\n if (this.isWrap && typeof (wrapHeader) === 'string' && (wrapHeader.indexOf('<') > -1 || wrapHeader.indexOf('>') > -1)) {\n var textArray = wrapHeader.split('<br>');\n wrapPadding = textArray.length;\n }\n if (this.header.indexOf('<br') > -1) {\n padding = 5 * (this.header.split(/<br.*?>/g).length - 1);\n }\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, font, this.themeStyle.textStyle).height +\n (this.marginY * wrapPadding) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : padding); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': this.theme === ('Material3' || 'Material3Dark') ? 0.2 : 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.controlName));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark'\n || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '<filter id=\"' + shadowId + '\" height=\"130%\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"3\"/>';\n shadow += '<feOffset dx=\"3\" dy=\"3\" result=\"offsetblur\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"0.5\"/>';\n shadow += '</feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge></filter>';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n var borderColor = ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.color) ? '#D2D0CE' : this.border.color;\n pathElement.setAttribute('stroke', borderColor);\n if (!isNullOrUndefined(this.border.dashArray)) {\n pathElement.setAttribute('stroke-dasharray', this.border.dashArray);\n }\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n if (this.revert) {\n this.inverted = !this.inverted;\n this.revert = false;\n }\n }\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(/<b>/g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n this.isWrap = false;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled && !this.enableRTL ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(/<b>/g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('<b>') > -1 && this.header.indexOf('</b>') > -1;\n var headerWidth = measureText(this.formattedText[0], font, this.themeStyle.textStyle).width\n + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '12px';\n var fontWeight = '400';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n var contentWidth = [];\n var textHeight = 0;\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n // Condition to resolve the text size issue only in chart.\n if (this.controlName === 'Chart' && parseFloat(fontSize) < parseFloat(font.size)) {\n textHeight = (parseFloat(font.size) - parseFloat(fontSize));\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (textHeight + this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? this.controlName === 'RangeNavigator' ? 5 : 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, font.color || this.themeStyle.tooltipBoldLabel, groupElement, this.themeStyle.textStyle);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : <b>') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '<b>')\n .replace(/<\\/(b|strong)>/g, '</b>')\n .split(/<br.*?>/g);\n if (this.isTextWrap && this.header !== this.formattedText[k] && this.formattedText[k].indexOf('<br') === -1) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n textCollection = this.formattedText[k].match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n }\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '<b>' + textCollection.join('<br>') + '</b>' : textCollection.join('<br>');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height - (textHeight !== 0 ? ((textHeight / this.markerSize) * (parseFloat(font.size) / this.markerSize)) : 0));\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(/<b>/g, '<br><b>').replace(/<\\/b>/g, '</b><br>').replace(/:/g, (this.enableRTL) ? '<br>\\u200E: <br>' : '<br>\\u200E:<br>')\n .split('<br>');\n if (this.enableRTL && lines.length > 0 && textCollection[i].match(/:/g)) {\n lines[0] = lines[0].trim();\n lines.reverse();\n }\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (this.enableRTL && line !== '' && this.isRTLText(line)) {\n line = line.concat('\\u200E');\n }\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(/<b>/g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n if (this.header.indexOf('<br') > -1 && k !== 0) {\n headerSpace += this.header.split(/<br.*?>/g).length;\n }\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('<b>') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = '600';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === '600' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('</b>') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = (this.header === this.formattedText[k]) ? font.size : this.textStyle.size;\n tspanElement.style.fontWeight = (this.header === this.formattedText[k] && (this.header.indexOf('<b>') || this.header.indexOf('</b>')) === -1) ? (this.textStyle.fontWeight || '600') : line.indexOf('<b>') > -1 || line.indexOf('</b>') > -1 ? 'bold' : (this.textStyle.fontWeight || font.fontWeight);\n var textFont = extend({}, this.textStyle, null, true)[key];\n textFont.fontWeight = tspanElement.style.fontWeight;\n isRow = false;\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, textFont, this.themeStyle.textStyle).width;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n contentWidth.push(subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = '600';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font, this.themeStyle.textStyle).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n this.renderContentRTL(parentElement, isHeader, markerSize + markerPadding, contentWidth);\n };\n Tooltip.prototype.renderContentRTL = function (textElement, isHeader, markerSize, contentWidth) {\n if (this.enableRTL) {\n var tspanElement = void 0;\n var contentWidthIndex = isHeader ? 1 : 0;\n for (var i = 0; i < textElement.childNodes.length; i++) {\n tspanElement = (textElement.childNodes[i]);\n if ((!isHeader || i > 0) && !isNullOrUndefined(tspanElement.getAttribute('x'))) {\n tspanElement.setAttribute('x', (this.elementSize.width - (markerSize + contentWidth[contentWidthIndex])).toString());\n contentWidthIndex++;\n }\n }\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = this.isRTLText(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() !== '[object HTMLUnknownElement]';\n };\n Tooltip.prototype.isRTLText = function (tooltipContent) {\n return /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipContent);\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = void 0;\n if (this.controlName === 'Chart' && this.shared) {\n for (var i = 0; i < this.data.length; i++) {\n var sharedTemplateElement = this.templateFn(this.data[i], this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n if (i === 0) {\n templateElement = sharedTemplateElement;\n }\n else {\n templateElement[templateElement.length - 1].outerHTML += sharedTemplateElement[0].outerHTML;\n }\n }\n }\n else {\n templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n }\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.y + tooltipRect.height > bounds.y + bounds.height) {\n tooltipRect.y = Math.max((bounds.y + bounds.height) - (tooltipRect.height + 2 * this.padding), bounds.y);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x = (bounds.x + this.location.x) - (tooltipRect.width + 4 * this.padding);\n }\n if (tooltipRect.x < bounds.x) {\n tooltipRect.x = bounds.x;\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n this.outOfBounds = false;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * (this.allowHighlight ? this.highlightPadding : this.padding)) -\n this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if ((location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n if (((location.x + width > boundsX + bounds.width) && location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width && !(this.controlName === 'Progressbar')) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (arrowLocation.x + this.arrowPadding > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding;\n tipLocation.x = width - this.rx - this.arrowPadding;\n }\n if (arrowLocation.x - this.arrowPadding < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if (((bounds.x + bounds.width) - (location.x + arrowLocation.x)) < this.areaMargin + this.arrowPadding ||\n (location.x + arrowLocation.x) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n this.revert = true;\n location = new TooltipLocation(symbolLocation.x + markerHeight + clipX, symbolLocation.y + clipY - this.elementSize.height / 2 - (this.padding));\n tipLocation.x = arrowLocation.x = 0;\n tipLocation.y = arrowLocation.y = height / 2;\n if ((location.x + this.arrowPadding + width > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > boundsX + bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (this.arrowPadding + width);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + markerHeight + clipX;\n }\n if (location.y <= boundsY) {\n tipLocation.y -= (boundsY - location.y);\n arrowLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= bounds.height + boundsY) {\n arrowLocation.y += ((location.y + height) - (bounds.height + boundsY));\n tipLocation.y += ((location.y + height) - (bounds.height + boundsY));\n location.y -= ((location.y + height) - (bounds.height + boundsY));\n }\n if ((this.arrowPadding) + arrowLocation.y > height - this.ry) {\n arrowLocation.y = height - this.arrowPadding - this.ry;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = (this.arrowPadding) + this.ry;\n tipLocation.y = 0;\n }\n }\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = tipLocation.y = this.ry + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if ((location.y + arrowLocation.y) < this.areaMargin + this.arrowPadding ||\n ((bounds.y + bounds.height) - (location.y + arrowLocation.y)) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n location = new TooltipLocation(symbolLocation.x + clipX - this.padding - this.elementSize.width / 2, symbolLocation.y + clipY - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding);\n this.revert = true;\n tipLocation.x = arrowLocation.x = width / 2;\n tipLocation.y = arrowLocation.y = 0;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + markerHeight + clipY;\n }\n if (location.y + this.arrowPadding + height > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n tipLocation.x -= (boundsX - location.x);\n arrowLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > bounds.width + boundsX) {\n arrowLocation.x += ((location.x + width) - (bounds.width + boundsX));\n tipLocation.x += ((location.x + width) - (bounds.width + boundsX));\n location.x -= ((location.x + width) - (bounds.width + boundsX));\n }\n if ((this.arrowPadding) + arrowLocation.x > width - this.rx) {\n tipLocation.x = width - this.rx - (this.arrowPadding);\n arrowLocation.x = width - this.rx - (this.arrowPadding);\n }\n if (arrowLocation.x - (this.arrowPadding) < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + (this.arrowPadding);\n }\n }\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: (this.duration === 0 && animationMode === 'Enable') ? 300 : this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n if ((_this.controlName === 'Chart' && _this.shared) && !_this.enableRTL) {\n tooltipDiv.style.transition = isBlazor() ? 'transform 0.3s' : 'transform 0.1s';\n tooltipDiv.style.transform = 'translate(' + (x + currenDiff * (rect.x - x)) + 'px,' + (y + currenDiff * (rect.y - y)) + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n tooltipDiv.style.transform = _this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n if ((this.controlName === 'Chart' && this.shared && !this.crosshair) && !this.enableRTL) {\n tooltipDiv.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n tooltipDiv.style.transform = this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n else {\n this.templateFn = templateComplier(this.template);\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n var tooltipDiv = getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (tooltipGroup_1.nodeType !== Node.ELEMENT_NODE) {\n tooltipGroup_1 = tooltipElement.firstElementChild;\n }\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity'));\n opacity_1 = !isNullOrUndefined(opacity_1) ? opacity_1 : 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n tooltipDiv.style.transition = '';\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"crosshair\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '12px', fontWeight: null, color: null, fontStyle: 'Normal', fontFamily: null }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: null, width: null }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(7)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isFixed\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"controlName\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableRTL\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"allowHighlight\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/* eslint-disable @typescript-eslint/tslint/config */\n/* eslint-disable max-len */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Animation, animationMode, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { appendChildElement, redrawElement, pathAnimation, valueToCoefficient, getVisiblePoints, colorNameToHex, checkColorFormat, applyZLight } from '../../common/utils/helper';\nimport { getAnimationFunction, getPoint, getMinPointsDelta } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\n/**\n * Column Series Base\n */\nvar ColumnBase = /** @class */ (function () {\n function ColumnBase() {\n }\n ColumnBase.prototype.getSideBySideInfo = function (series) {\n if (series.chart.enableSideBySidePlacement && !series.position) {\n this.getSideBySidePositions(series);\n }\n if (series.columnWidthInPixel) {\n return new DoubleRange(0, 0);\n }\n var position = series.type === 'Histogram' || !series.chart.enableSideBySidePlacement ? 0 : series.position;\n var rectCount = series.type === 'Histogram' || !series.chart.enableSideBySidePlacement ? 1 : series.rectCount;\n series.isRectSeries = true;\n var visibleSeries = series.chart.visibleSeries;\n var seriesSpacing = series.chart.enableSideBySidePlacement ? series.columnSpacing : 0; // Column Spacing\n var pointSpacing = (series.columnWidth === null || isNaN(+series.columnWidth)) ? ((series.type === 'Histogram') ? 1 : 0.7) :\n Math.min(series.columnWidth, 1); // Column width\n var minimumPointDelta = getMinPointsDelta(series.xAxis, visibleSeries);\n var width = minimumPointDelta * pointSpacing;\n var radius;\n var location = (position) / rectCount - 0.5;\n var doubleRange = new DoubleRange(location, location + (1 / rectCount));\n if (!(isNaN(doubleRange.start) || isNaN(doubleRange.end))) {\n if (series.groupName && series.type.indexOf('Stacking') === -1) {\n var mainColumnWidth_1 = 0.7;\n series.chart.series.filter(function (series) { if (series.columnWidth > mainColumnWidth_1) {\n mainColumnWidth_1 = series.columnWidth;\n } });\n var mainWidth = minimumPointDelta * mainColumnWidth_1;\n var mainDoubleRange = new DoubleRange(doubleRange.start * mainWidth, doubleRange.end * mainWidth);\n var difference = ((mainDoubleRange.delta) - (doubleRange.end * width - doubleRange.start * width)) / 2;\n doubleRange = new DoubleRange(mainDoubleRange.start + difference, mainDoubleRange.end - difference);\n }\n else {\n doubleRange = new DoubleRange(doubleRange.start * width, doubleRange.end * width);\n }\n radius = seriesSpacing * doubleRange.delta;\n doubleRange = new DoubleRange(doubleRange.start + radius / 2, doubleRange.end - radius / 2);\n }\n return doubleRange;\n };\n /**\n * To get the rect values.\n *\n * @returns {Rect} rect region values\n * @private\n */\n ColumnBase.prototype.getRectangle = function (x1, y1, x2, y2, series) {\n var point1 = getPoint(x1, y1, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n var point2 = getPoint(x2, y2, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n return new Rect(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.abs(point2.x - point1.x), Math.abs(point2.y - point1.y));\n };\n /**\n * To draw the cylindrical shape for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawCylinder = function (options, element, cylinderSeriesOption, rect, series) {\n var width = rect.width;\n var height = rect.height;\n if (series.chart.enableCanvas) {\n var ctx = series.chart.canvasRender.ctx;\n var canvasCtx = ctx;\n ctx.save();\n var gradientColor = colorNameToHex(options.fill);\n var x = rect.x + series.clipRect.x;\n var y = rect.y + series.clipRect.y;\n var arc = 2 * Math.PI + 0.1;\n var rx = void 0, ry = void 0, cx1 = void 0, cx2 = void 0, cy1 = void 0, cy2 = void 0, x1 = void 0, x2 = void 0, y1 = void 0, y2 = void 0, cx = void 0, cy = void 0, xl = void 0, yl = void 0, xPos = void 0, yPos = void 0, step = void 0, rxt = void 0, ryt = void 0;\n var gx1 = 0;\n var gx2 = 0;\n var gy1 = 0;\n var gy2 = 0;\n var ini = 0;\n ctx.fillStyle = applyZLight(gradientColor, 0.9);\n ctx.lineWidth = 0;\n ctx.strokeStyle = applyZLight(gradientColor, 0.9);\n ctx.globalAlpha = options.opacity;\n if (cylinderSeriesOption.isColumn) {\n gx1 = x;\n gx2 = width + x;\n rx = width / 2;\n ry = rx / 4;\n cx2 = cx1 = x + rx;\n y2 = cy1 = y - ry;\n x2 = x;\n x1 = x + width;\n cy2 = y1 = y + height - ry;\n step = Math.PI;\n rxt = -rx;\n ryt = ry;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n y2 = cy1 = y + ry;\n }\n }\n }\n else {\n gy2 = height + y;\n gy1 = y;\n ry = height / 2;\n rx = ry / 4;\n x2 = cx1 = x + rx;\n x1 = cx2 = x + width + rx;\n y1 = y + height;\n y2 = y;\n cy2 = cy1 = y + ry;\n ini = Math.PI / 2;\n step = Math.PI * 1.5;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n x1 = cx2 = x + width - rx;\n }\n }\n ry = -ry;\n rx = -rx;\n rxt = rx;\n ryt = -ry;\n }\n var color = applyZLight(gradientColor, 0.7);\n var gradient = ctx.createLinearGradient(gx1, gy1, gx2, gy2);\n gradient.addColorStop(0, gradientColor);\n gradient.addColorStop(0.3, color);\n gradient.addColorStop(0.7, color);\n gradient.addColorStop(1, gradientColor);\n for (var j = 1; j <= 4; j++) {\n var i = 0;\n if (j < 4) {\n ctx.beginPath();\n }\n if (j % 2 === 0) {\n cx = cx2;\n cy = cy2;\n xl = x2;\n yl = y2;\n }\n else {\n cx = cx1;\n cy = cy1;\n xl = x1;\n yl = y1;\n }\n if (j === 4) {\n rx = rxt;\n ry = ryt;\n ctx.fillStyle = gradient;\n }\n if (j > 2) {\n i = ini;\n arc = step;\n }\n for (; i <= arc; i += 0.1) {\n xPos = cx - (rx * Math.cos(i));\n yPos = cy + (ry * Math.sin(i));\n if (i === 0) {\n ctx.moveTo(xPos, yPos);\n }\n else {\n ctx.lineTo(xPos, yPos);\n }\n }\n if (j > 2) {\n ctx.lineTo(xl, yl);\n }\n if (j !== 3) {\n ctx.stroke();\n ctx.fill();\n }\n }\n if (options.id.indexOf('Series') >= 0) {\n ctx.clip();\n ctx.restore();\n ctx = canvasCtx;\n }\n }\n else {\n var chart = series.chart;\n var x = rect.x;\n var y = rect.y;\n var id = options.id;\n var gradientColor = options.fill;\n var fillColor = gradientColor;\n var format = checkColorFormat(gradientColor);\n if (!format) {\n gradientColor = colorNameToHex(gradientColor);\n }\n var AEx = 0;\n var AEy = 0;\n var LX = 0;\n var LY = 0;\n var GX = 0;\n var GY = 0;\n var X = void 0, Y = void 0, X1 = void 0, Y1 = void 0, X2 = void 0, Y2 = void 0, rx = void 0, ry = void 0;\n var i = 2;\n if (cylinderSeriesOption.isColumn) {\n rx = width / 2;\n ry = rx / 4;\n X = X1 = x;\n Y = ry < y ? y - ry : cylinderSeriesOption.stacking ? y + ry : (y - ry);\n Y1 = Y;\n AEx = 2 * rx;\n LY = ry < y ? height : (height < 2 * ry ? height : cylinderSeriesOption.stacking ? height - (2 * ry) : height);\n X2 = X;\n Y2 = ry < y ? Y + height : (height < Y ? height + Y : cylinderSeriesOption.stacking ? height + (y - ry) : height + Y);\n GX = 100;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n Y = Y1 = y + ry;\n LY = height < rx / 2 ? height : height - rx / 2;\n }\n }\n }\n else {\n ry = height / 2;\n rx = ry / 4;\n Y = Y1 = y;\n X = X1 = Math.abs(x - rx);\n AEy = 2 * ry;\n LX = width;\n X2 = X + width;\n Y2 = Y;\n GY = 100;\n if (cylinderSeriesOption.stacking) {\n if (!cylinderSeriesOption.isLastSeries) {\n X2 = (X + width - rx * 2);\n LX = width - rx * 2;\n }\n }\n }\n remove(this.element);\n while (i--) {\n options.d = 'M' + X.toString() + ',' + Y.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,0 ' + AEx.toString() + ',' + AEy.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,0 ' + (-1 * AEx).toString() + ',' + (-1 * AEy).toString();\n options.id = id + '_' + 'Region_' + i;\n options.fill = applyZLight(gradientColor, 0.9);\n if (i % 2 === 0 && series.type !== 'StackingBar100' && series.type !== 'StackingBar' && series.type !== 'Bar') {\n options.fill = options.fill + '10';\n }\n this.element = chart.renderer.drawPath(this.options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n appendChildElement(series.chart.enableCanvas, series.seriesElement, this.element, chart.redraw);\n X = X2;\n Y = Y2;\n }\n options.d = 'M' + X1.toString() + ',' + Y1.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,0 ' + AEx.toString() + ',' + AEy.toString() + 'l' + LX.toString() + ' ' + LY.toString() + 'a' + rx.toString() + ',' + ry.toString() + ' 0 1,1 ' + (-1 * AEx).toString() + ',' + (-1 * AEy).toString() + ' z';\n options.id = id + '_' + 'Region_2';\n options.fill = applyZLight(gradientColor, 0.7);\n var optiong = void 0;\n if (fillColor.indexOf('url') === -1) {\n if (!document.getElementById(id)) {\n optiong = { 'id': id, x1: '0%', y1: '0%', x2: GX.toString() + '%', y2: GY.toString() + '%' };\n var gradientElement = [{ colorStop: '0%', color: gradientColor }, { colorStop: '30%', color: applyZLight(gradientColor, 0.7) }, { colorStop: '70%', color: applyZLight(gradientColor, 0.7) }, { colorStop: '100%', color: gradientColor }];\n this.drawGradient(optiong, gradientElement, series);\n }\n options.fill = 'url(#' + optiong.id + ')';\n }\n this.element = chart.renderer.drawPath(this.options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n appendChildElement(series.chart.enableCanvas, series.seriesElement, this.element, chart.redraw);\n }\n };\n /**\n * To get the gradient of each points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawGradient = function (optiong, gradientElement, series) {\n var chart = series.chart;\n var defElement = chart.renderer.createDefs();\n var xmlns = 'http://www.w3.org/2000/svg';\n var linearGradientElement = document.createElementNS(xmlns, 'linearGradient');\n linearGradientElement.setAttribute('id', optiong.id);\n linearGradientElement.setAttribute('x1', optiong.x1);\n linearGradientElement.setAttribute('y1', optiong.y1);\n linearGradientElement.setAttribute('x2', optiong.x2);\n linearGradientElement.setAttribute('y2', optiong.y2);\n for (var i = 0; i < gradientElement.length; i++) {\n var stopElement = document.createElementNS(xmlns, 'stop');\n stopElement.setAttribute('offset', gradientElement[i].colorStop);\n stopElement.setAttribute('stop-color', gradientElement[i].color);\n stopElement.setAttribute('stop-opacity', '1');\n linearGradientElement.appendChild(stopElement);\n }\n series.seriesElement.appendChild(defElement);\n defElement.appendChild(linearGradientElement);\n };\n /**\n * To get the position of each series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.getSideBySidePositions = function (series) {\n var chart = series.chart;\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.findRectPosition(series.findSeriesCollection(columnItem, item, false));\n }\n }\n };\n ColumnBase.prototype.findRectPosition = function (seriesCollection) {\n var groupingValues = [];\n var vSeries = { rectCount: 0, position: null };\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n if (value.type.indexOf('Stacking') !== -1 || value.groupName !== '') {\n var groupName = value.type.indexOf('Stacking') !== -1 ? value.stackingGroup : value.type + value.groupName;\n if (groupName) {\n if (groupingValues[groupName] === undefined) {\n value.position = vSeries.rectCount;\n groupingValues[groupName] = vSeries.rectCount++;\n }\n else {\n value.position = groupingValues[groupName];\n }\n }\n else {\n if (vSeries.position === null) {\n value.position = vSeries.rectCount;\n vSeries.position = vSeries.rectCount++;\n }\n else {\n value.position = vSeries.position;\n }\n }\n }\n else {\n value.position = vSeries.rectCount++;\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n value.rectCount = vSeries.rectCount;\n }\n };\n /**\n * Updates the symbollocation for points\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateSymbolLocation = function (point, rect, series) {\n if (!series.chart.requireInvertedAxis) {\n this.updateXRegion(point, rect, series);\n }\n else {\n this.updateYRegion(point, rect, series);\n }\n if (series.type === 'Histogram') {\n point.minimum = +point.x - series.histogramValues.binWidth / 2;\n point.maximum = +point.x + series.histogramValues.binWidth / 2;\n }\n };\n /**\n * Update the region for the point.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateXRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isAxisInverse)) ? rect.y : (rect.y + rect.height)\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: rect.y + rect.height\n });\n }\n };\n /**\n * Update the region for the point in bar series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateYRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isAxisInverse)) ? rect.x + rect.width : rect.x,\n y: rect.y + rect.height / 2\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x,\n y: rect.y + rect.height / 2\n });\n }\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To get the marker region when Y value is 0\n *\n * @param {Points} point point\n * @param {rect} rect rect\n * @param {Series} series series\n */\n ColumnBase.prototype.getRegion = function (point, rect, series) {\n if (point.y === 0) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n }\n else {\n point.regions.push(rect);\n }\n };\n /**\n * To trigger the point rendering event.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.triggerEvent = function (series, point, fill, border) {\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, fill),\n border: series.setBorderColor(point, border)\n };\n series.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n return argsData;\n };\n /**\n * To draw the rectangle for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawRectangle = function (series, point, rect, argsData) {\n var chart = series.chart;\n var check = chart.requireInvertedAxis ? rect.height : rect.width;\n if (check <= 0) {\n return null;\n }\n var direction;\n if (point.y === 0) {\n // For 0 values corner radius will not calculate\n direction = this.calculateRoundedRectPath(rect, 0, 0, 0, 0);\n }\n else {\n direction = this.calculateRoundedRectPath(rect, series.cornerRadius.topLeft, series.cornerRadius.topRight, series.cornerRadius.bottomLeft, series.cornerRadius.bottomRight, chart.requireInvertedAxis);\n }\n var name = series.category === 'Indicator' ? chart.element.id + '_Indicator_' + series.index + '_' + series.name +\n '_Point_' + point.index : chart.element.id + '_Series_' + series.index + '_Point_' + point.index;\n var previousElement = redrawElement(chart.redraw, name);\n var previousDirection = previousElement ? previousElement.getAttribute('d') : '';\n this.options = new PathOption(name, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, (series.columnFacet === 'Cylinder') ? '' : direction);\n this.element = chart.renderer.drawPath(this.options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n switch (series.seriesType) {\n case 'XY':\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', point.x + ':' + point.yValue + ', ' + series.name);\n break;\n case 'HighLow':\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', point.x + ':' + point.high + ', ' + point.low + ', ' + series.name);\n break;\n }\n appendChildElement(series.chart.enableCanvas, series.seriesElement, this.element, chart.redraw);\n if (!series.chart.enableCanvas) {\n pathAnimation(this.element, (series.columnFacet === 'Cylinder') ? '' : direction, chart.redraw, previousDirection, chart.duration);\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animate = function (series) {\n var rectElements = series.seriesElement.childNodes;\n var count = series.category === 'Indicator' ? 0 : 1;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n if (!point.symbolLocations.length && !(series.type === 'BoxAndWhisker' && point.regions.length)) {\n continue;\n }\n if ((series.type === 'Column' || series.type === 'Bar' || series.type === 'StackingColumn' || series.type === 'StackingColumn100' || series.type === 'StackingBar' || series.type === 'StackingBar100') && series.columnFacet === 'Cylinder') {\n for (var j = 0; j < rectElements.length; j++) {\n this.animateRect(rectElements[j], series, point);\n }\n }\n else {\n this.animateRect(rectElements[count], series, point);\n count++;\n }\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animateRect = function (element, series, point) {\n var option = series.animation;\n var duration = series.chart.animated ? series.chart.duration : option.duration;\n var effect = getAnimationFunction('Linear');\n var isPlot = point.yValue < 0;\n var x;\n var y;\n var elementHeight = +point.regions[0].height;\n var elementWidth = +point.regions[0].width;\n var centerX;\n var centerY;\n if (!series.chart.requireInvertedAxis) {\n x = +point.regions[0].x;\n if (series.type.indexOf('Stacking') > -1) {\n y = (1 - valueToCoefficient(0, series.yAxis)) * (series.yAxis.rect.height);\n centerX = x;\n centerY = y;\n }\n else {\n y = +point.regions[0].y;\n centerY = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? y + elementHeight / 2 :\n (isPlot !== series.yAxis.isAxisInverse) ? y : y + elementHeight;\n centerX = isPlot ? x : x + elementWidth;\n }\n }\n else {\n y = +point.regions[0].y;\n if (series.type.indexOf('Stacking') > -1) {\n x = (valueToCoefficient(0, series.yAxis)) * series.yAxis.rect.width;\n centerX = x;\n centerY = y;\n }\n else {\n x = +point.regions[0].x;\n centerY = isPlot ? y : y + elementHeight;\n centerX = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? x + elementWidth / 2 :\n (isPlot !== series.yAxis.isAxisInverse) ? x + elementWidth : x;\n }\n }\n var value;\n if (!isNullOrUndefined(element)) {\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: (duration === 0 && animationMode === 'Enable') ? 1000 : duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n element.style.visibility = 'visible';\n if (!series.chart.requireInvertedAxis) {\n elementHeight = elementHeight ? elementHeight : 1;\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n else {\n elementWidth = elementWidth ? elementWidth : 1;\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n }\n },\n end: function () {\n element.setAttribute('transform', 'translate(0,0)');\n var seriesElement = series.seriesElement;\n if (element === seriesElement.lastElementChild || point.index === series.points.length - 1 ||\n (series.type === 'Waterfall' && element === seriesElement.children[seriesElement.childElementCount - 2])) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n if (series.type === 'Waterfall') {\n var rectElements = seriesElement.childNodes;\n for (var i = 0; i < rectElements.length; i++) {\n if (rectElements[i].id.indexOf('Connector') !== -1) {\n rectElements[i].style.visibility = 'visible';\n rectElements[i].setAttribute('transform', 'translate(0,0)');\n }\n }\n }\n }\n }\n });\n }\n };\n /**\n * To get rounded rect path direction.\n */\n ColumnBase.prototype.calculateRoundedRectPath = function (rect, topLeft, topRight, bottomLeft, bottomRight, inverted) {\n if (inverted === void 0) { inverted = false; }\n var halfValue = inverted ? rect.width / 2 : rect.height / 2;\n topLeft = Math.min(topLeft, halfValue);\n topRight = Math.min(topRight, halfValue);\n bottomLeft = Math.min(bottomLeft, halfValue);\n bottomRight = Math.min(bottomRight, halfValue);\n return 'M' + ' ' + rect.x + ' ' + (topLeft + rect.y) +\n ' Q ' + rect.x + ' ' + rect.y + ' ' + (rect.x + topLeft) + ' ' +\n rect.y + ' ' + 'L' + ' ' + (rect.x + rect.width - topRight) + ' ' + rect.y +\n ' Q ' + (rect.x + rect.width) + ' ' + rect.y + ' ' +\n (rect.x + rect.width) + ' ' + (rect.y + topRight) + ' ' + 'L ' +\n (rect.x + rect.width) + ' ' + (rect.y + rect.height - bottomRight)\n + ' Q ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' ' + (rect.x + rect.width - bottomRight) + ' ' +\n (rect.y + rect.height) + ' ' + 'L ' + (rect.x + bottomLeft) + ' ' + (rect.y + rect.height) + ' Q ' + rect.x + ' ' +\n (rect.y + rect.height) + ' ' + rect.x + ' ' + (rect.y + rect.height - bottomLeft) + ' ' + 'L' + ' ' + rect.x + ' ' +\n (topLeft + rect.y) + ' ' + 'Z';\n };\n return ColumnBase;\n}());\nexport { ColumnBase };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fxRates.vue?vue&type=style&index=0&id=2ec95404&prod&lang=css\"","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint, sort } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * To get the data on mouse move.\n *\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n *\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.commonXvalues = [];\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n *\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isAxisInverse ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isAxisInverse ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible)) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks whether the region contains a point\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * To check the point in threshold region for column and bar series\n *\n * @param {number} x X coordinate\n * @param {number} y Y coodinate\n * @param {Points} point point\n * @param {Rect} rect point rect region\n * @param {Series} series series\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isAxisInverse;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * @private\n */\n ChartData.prototype.getClosest = function (series, value, xvalues) {\n var closest;\n var data;\n var xData = xvalues ? xvalues : series.xData;\n var xLength = xData.length;\n var leftSideNearest = 0.5;\n var rightSideNearest = 0.5;\n if (series.xAxis.valueType === 'DateTime' && series.points.length === 1) {\n leftSideNearest = series.xAxis.visibleRange.min;\n rightSideNearest = series.xAxis.visibleRange.max;\n for (var index = 0; index < series.chart.visibleSeries.length; index++) {\n var visibleSeries = series.chart.visibleSeries[index];\n if (visibleSeries.xMin >= leftSideNearest && visibleSeries.xMin < series.xMin) {\n leftSideNearest = visibleSeries.xMin + 0.1;\n }\n if (visibleSeries.xMax <= rightSideNearest && visibleSeries.xMax > series.xMax) {\n rightSideNearest = visibleSeries.xMax - 0.1;\n }\n if (visibleSeries.points.length > 1) {\n if (visibleSeries.xMax >= leftSideNearest && visibleSeries.xMax < series.xMin) {\n leftSideNearest = visibleSeries.xMax + 0.1;\n }\n if (visibleSeries.xMin <= rightSideNearest && visibleSeries.xMin > series.xMax) {\n rightSideNearest = visibleSeries.xMin - 0.1;\n }\n }\n }\n if (leftSideNearest !== series.xAxis.visibleRange.min) {\n leftSideNearest = Math.abs(series.xMin - leftSideNearest) / 2;\n }\n if (rightSideNearest !== series.xAxis.visibleRange.max) {\n rightSideNearest = Math.abs(series.xMax - rightSideNearest) / 2;\n }\n }\n if (value >= series.xMin - leftSideNearest && value <= series.xMax + rightSideNearest) {\n for (var i = 0; i < xLength; i++) {\n data = xData[i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n var isDataExist = series.xData.indexOf(closest) !== -1;\n if (isDataExist) {\n return closest;\n }\n else {\n return null;\n }\n };\n ChartData.prototype.binarySearch = function (target, list) {\n var first = 0;\n var last = list.length;\n var position = -1;\n var found = false;\n var middle;\n while (found === false && first <= last) {\n middle = Math.floor((first + last) / 2);\n if (list[middle].xValue === target) {\n found = true;\n position = middle;\n }\n else if (list[middle].xValue > target) {\n last = middle - 1;\n }\n else {\n first = middle + 1;\n }\n }\n return position !== -1 ? list[position] : null;\n };\n ChartData.prototype.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\n if (chart.mouseX <= rect.x + rect.width && chart.mouseX >= rect.x) {\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n }\n var closest = this.getClosest(series, value, xvalues);\n var point = ((closest || closest === 0) && series.points.length > 0) ? this.binarySearch(closest, sort(series.points, ['xValue'])) : null;\n if (point && point.visible) {\n if (!(this.chart.chartAreaType === 'Cartesian' && ((series.category == 'Indicator' && series.name == 'Histogram') ||\n (point.symbolLocations && point.symbolLocations.length > 0 && point.symbolLocations[0].x >= 0 && point.symbolLocations[0].x <= rect.width)))) {\n return null;\n }\n return new PointData(point, series);\n }\n return null;\n };\n /**\n * Merge all visible series X values for shared tooltip (EJ2-47072)\n *\n * @param visibleSeries\n * @private\n */\n ChartData.prototype.mergeXvalues = function (visibleSeries) {\n if (visibleSeries.length && (!this.commonXvalues.length || (this.commonXvalues.length !== visibleSeries[0].xData.length))) {\n this.commonXvalues = visibleSeries[0].xData;\n for (var index = 1; index < visibleSeries.length; index++) {\n this.commonXvalues = this.getDistinctValues(this.commonXvalues, visibleSeries[index].xData);\n }\n }\n return this.commonXvalues;\n };\n ChartData.prototype.commonXValue = function (visibleSeries) {\n var commonXValues = [];\n for (var j = 0; j < visibleSeries.length; j++) {\n for (var i = 0; (visibleSeries[j].points && i < visibleSeries[j].points.length); i++) {\n var point = visibleSeries[j].points[i];\n if (point && (point.index === 0 || point.index === visibleSeries[j].points.length - 1 ||\n (point.symbolLocations && point.symbolLocations.length > 0))) {\n commonXValues.push(point.xValue);\n }\n }\n }\n return commonXValues;\n };\n ChartData.prototype.getDistinctValues = function (first, second) {\n if (first === void 0) { first = []; }\n if (second === void 0) { second = []; }\n var intial = {};\n var result = [];\n var index;\n for (index = 0; index < first.length; index++) {\n var temp = first[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n for (index = 0; index < second.length; index++) {\n var temp = second[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n return result;\n };\n return ChartData;\n}());\nexport { ChartData };\n","/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var chartDoubleClick = 'chartDoubleClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'bulletChartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getActualDesiredIntervalsCount, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn } from '../../common/utils/helper';\nimport { extend, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NiceInterval } from '../axis/axis-helper';\n/**\n * `Category` module is used to render category axis.\n */\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n /**\n * Constructor for the category module.\n *\n * @private\n */\n function Category(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n */\n Category.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Category.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n // axis.doubleRange = new DoubleRange(<number>this.min, <number>this.max);\n axis.actualRange = {};\n if (!axis.interval) {\n axis.actualRange.interval = Math.max(1, Math.floor(axis.doubleRange.delta / getActualDesiredIntervalsCount(size, axis)));\n }\n else {\n axis.actualRange.interval = Math.ceil(axis.interval);\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n axis.actualRange.delta = axis.doubleRange.delta;\n };\n /**\n * Padding for the axis.\n *\n * @private\n */\n Category.prototype.applyRangePadding = function (axis, size) {\n var isColumn;\n axis.series.forEach(function (element) {\n if (!isColumn) {\n isColumn = element.type.indexOf('Column') > -1 && !(axis.zoomFactor < 1 || axis.zoomPosition > 0) && isNullOrUndefined(axis.minimum) && isNullOrUndefined(axis.maximum);\n }\n });\n var ticks = ((axis.labelPlacement === 'BetweenTicks' || isColumn) && !this.chart.stockChart && this.chart.chartAreaType !== 'PolarRadar') ? 0.5 : 0;\n if (ticks > 0) {\n axis.actualRange.min -= ticks;\n axis.actualRange.max += ticks;\n }\n else {\n axis.actualRange.max += axis.actualRange.max ? 0 : 0.5;\n }\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n axis.actualRange.delta = axis.doubleRange.delta;\n this.calculateVisibleRange(size, axis);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Category.prototype.calculateVisibleLabels = function (axis) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n axis.visibleRange.interval = axis.visibleRange.interval < 1 ? 1 : axis.visibleRange.interval;\n var tempInterval = Math.ceil(axis.visibleRange.min);\n var labelStyle;\n if (axis.zoomFactor < 1 || axis.zoomPosition > 0) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var position;\n axis.startLabel = axis.labels[Math.round(axis.visibleRange.min)];\n axis.endLabel = axis.labels[Math.floor(axis.visibleRange.max)];\n for (; tempInterval <= axis.visibleRange.max; tempInterval += axis.visibleRange.interval) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange) && axis.labels.length > 0) {\n position = Math.round(tempInterval);\n triggerLabelRender(this.chart, position, axis.labels[position] ? axis.labels[position].toString() : '', labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Get module name\n */\n Category.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Category';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n Category.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Category;\n}(NiceInterval));\nexport { Category };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./homeRegionalMap.vue?vue&type=style&index=0&id=0076514f&prod&lang=css\"","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","import { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n *\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (dataQuery) {\n var _this = this;\n if (this.dataManager.ready) {\n var dataManagerDeferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(dataQuery).then(function (result) {\n dataManagerDeferred_1.resolve(result);\n });\n }).catch(function (e) { dataManagerDeferred_1.reject(e); });\n return dataManagerDeferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(dataQuery);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var TrendlinesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-trendlines';\n }\n }\n});\nexport var TrendlinesPlugin = {\n name: 'e-trendlines',\n install: function (Vue) {\n Vue.component(TrendlinesPlugin.name, TrendlinesDirective);\n }\n};\nexport var TrendlineDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-trendline';\n }\n }\n});\nexport var TrendlinePlugin = {\n name: 'e-trendline',\n install: function (Vue) {\n Vue.component(TrendlinePlugin.name, TrendlineDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var SegmentsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-segments';\n }\n }\n});\nexport var SegmentsPlugin = {\n name: 'e-segments',\n install: function (Vue) {\n Vue.component(SegmentsPlugin.name, SegmentsDirective);\n }\n};\nexport var SegmentDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-segment';\n }\n }\n});\nexport var SegmentPlugin = {\n name: 'e-segment',\n install: function (Vue) {\n Vue.component(SegmentPlugin.name, SegmentDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var SeriesCollectionDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-series-collection';\n }\n }\n});\nexport var SeriesCollectionPlugin = {\n name: 'e-series-collection',\n install: function (Vue) {\n Vue.component(SeriesCollectionPlugin.name, SeriesCollectionDirective);\n }\n};\nexport var SeriesDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-series';\n }\n }\n});\nexport var SeriesPlugin = {\n name: 'e-series',\n install: function (Vue) {\n Vue.component(SeriesPlugin.name, SeriesDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StripLinesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-striplines';\n }\n }\n});\nexport var StripLinesPlugin = {\n name: 'e-striplines',\n install: function (Vue) {\n Vue.component(StripLinesPlugin.name, StripLinesDirective);\n }\n};\nexport var StripLineDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stripline';\n }\n }\n});\nexport var StripLinePlugin = {\n name: 'e-stripline',\n install: function (Vue) {\n Vue.component(StripLinePlugin.name, StripLineDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var CategoriesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-categories';\n }\n }\n});\nexport var CategoriesPlugin = {\n name: 'e-categories',\n install: function (Vue) {\n Vue.component(CategoriesPlugin.name, CategoriesDirective);\n }\n};\nexport var CategoryDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-category';\n }\n }\n});\nexport var CategoryPlugin = {\n name: 'e-category',\n install: function (Vue) {\n Vue.component(CategoryPlugin.name, CategoryDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var MultiLevelLabelsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-multilevellabels';\n }\n }\n});\nexport var MultiLevelLabelsPlugin = {\n name: 'e-multilevellabels',\n install: function (Vue) {\n Vue.component(MultiLevelLabelsPlugin.name, MultiLevelLabelsDirective);\n }\n};\nexport var MultiLevelLabelDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-multilevellabel';\n }\n }\n});\nexport var MultiLevelLabelPlugin = {\n name: 'e-multilevellabel',\n install: function (Vue) {\n Vue.component(MultiLevelLabelPlugin.name, MultiLevelLabelDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AxesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-axes';\n }\n }\n});\nexport var AxesPlugin = {\n name: 'e-axes',\n install: function (Vue) {\n Vue.component(AxesPlugin.name, AxesDirective);\n }\n};\nexport var AxisDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-axis';\n }\n }\n});\nexport var AxisPlugin = {\n name: 'e-axis',\n install: function (Vue) {\n Vue.component(AxisPlugin.name, AxisDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var RowsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-rows';\n }\n }\n});\nexport var RowsPlugin = {\n name: 'e-rows',\n install: function (Vue) {\n Vue.component(RowsPlugin.name, RowsDirective);\n }\n};\nexport var RowDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-row';\n }\n }\n});\nexport var RowPlugin = {\n name: 'e-row',\n install: function (Vue) {\n Vue.component(RowPlugin.name, RowDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var RangeColorSettingsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-rangecolorsettings';\n }\n }\n});\nexport var RangeColorSettingsPlugin = {\n name: 'e-rangecolorsettings',\n install: function (Vue) {\n Vue.component(RangeColorSettingsPlugin.name, RangeColorSettingsDirective);\n }\n};\nexport var RangeColorSettingDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-rangecolorsetting';\n }\n }\n});\nexport var RangeColorSettingPlugin = {\n name: 'e-rangecolorsetting',\n install: function (Vue) {\n Vue.component(RangeColorSettingPlugin.name, RangeColorSettingDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AnnotationsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-annotations';\n }\n }\n});\nexport var AnnotationsPlugin = {\n name: 'e-annotations',\n install: function (Vue) {\n Vue.component(AnnotationsPlugin.name, AnnotationsDirective);\n }\n};\n/**\n * `e-annotation` directive represent a annotation of the VueJS Chart.\n * It must be contained in a Chart component(`ejs-chart`).\n * ```vue\n * <ejs-chart>\n * <e-annotations>\n * <e-annotation content='ID' />\n * <e-annotation content='ID' />\n * </e-annotations>\n * </ejs-chart>\n * ```\n */\nexport var AnnotationDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-annotation';\n }\n }\n});\nexport var AnnotationPlugin = {\n name: 'e-annotation',\n install: function (Vue) {\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var SelectedDataIndexesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-selecteddataindexes';\n }\n }\n});\nexport var SelectedDataIndexesPlugin = {\n name: 'e-selecteddataindexes',\n install: function (Vue) {\n Vue.component(SelectedDataIndexesPlugin.name, SelectedDataIndexesDirective);\n }\n};\nexport var SelectedDataIndexDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-selecteddataindex';\n }\n }\n});\nexport var SelectedDataIndexPlugin = {\n name: 'e-selecteddataindex',\n install: function (Vue) {\n Vue.component(SelectedDataIndexPlugin.name, SelectedDataIndexDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var IndicatorsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-indicators';\n }\n }\n});\nexport var IndicatorsPlugin = {\n name: 'e-indicators',\n install: function (Vue) {\n Vue.component(IndicatorsPlugin.name, IndicatorsDirective);\n }\n};\nexport var IndicatorDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-indicator';\n }\n }\n});\nexport var IndicatorPlugin = {\n name: 'e-indicator',\n install: function (Vue) {\n Vue.component(IndicatorPlugin.name, IndicatorDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Chart } from '@syncfusion/ej2-charts';\nimport { TrendlinesDirective, TrendlineDirective, TrendlinesPlugin, TrendlinePlugin } from './trendlines.directive';\nimport { SegmentsDirective, SegmentDirective, SegmentsPlugin, SegmentPlugin } from './segments.directive';\nimport { SeriesCollectionDirective, SeriesDirective, SeriesCollectionPlugin, SeriesPlugin } from './series.directive';\nimport { StripLinesDirective, StripLineDirective, StripLinesPlugin, StripLinePlugin } from './striplines.directive';\nimport { CategoriesDirective, CategoryDirective, CategoriesPlugin, CategoryPlugin } from './categories.directive';\nimport { MultiLevelLabelsDirective, MultiLevelLabelDirective, MultiLevelLabelsPlugin, MultiLevelLabelPlugin } from './multilevellabels.directive';\nimport { AxesDirective, AxisDirective, AxesPlugin, AxisPlugin } from './axes.directive';\nimport { RowsDirective, RowDirective, RowsPlugin, RowPlugin } from './rows.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { RangeColorSettingsDirective, RangeColorSettingDirective, RangeColorSettingsPlugin, RangeColorSettingPlugin } from './rangecolorsettings.directive';\nimport { AnnotationsDirective, AnnotationDirective, AnnotationsPlugin, AnnotationPlugin } from './annotations.directive';\nimport { SelectedDataIndexesDirective, SelectedDataIndexDirective, SelectedDataIndexesPlugin, SelectedDataIndexPlugin } from './selecteddataindexes.directive';\nimport { IndicatorsDirective, IndicatorDirective, IndicatorsPlugin, IndicatorPlugin } from './indicators.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowExport', 'allowMultiSelection', 'annotations', 'axes', 'background', 'backgroundImage', 'border', 'chartArea', 'columns', 'crosshair', 'currencyCode', 'dataSource', 'description', 'enableAnimation', 'enableAutoIntervalOnBothAxis', 'enableCanvas', 'enableExport', 'enablePersistence', 'enableRtl', 'enableSideBySidePlacement', 'height', 'highlightColor', 'highlightMode', 'highlightPattern', 'indicators', 'isMultiSelect', 'isTransposed', 'legendSettings', 'locale', 'margin', 'palettes', 'primaryXAxis', 'primaryYAxis', 'rangeColorSettings', 'rows', 'selectedDataIndexes', 'selectionMode', 'selectionPattern', 'series', 'subTitle', 'subTitleStyle', 'tabIndex', 'theme', 'title', 'titleStyle', 'tooltip', 'useGroupingSeparator', 'width', 'zoomSettings', 'afterExport', 'animationComplete', 'annotationRender', 'axisLabelClick', 'axisLabelRender', 'axisMultiLabelRender', 'axisRangeCalculated', 'beforeExport', 'beforePrint', 'beforeResize', 'chartDoubleClick', 'chartMouseClick', 'chartMouseDown', 'chartMouseLeave', 'chartMouseMove', 'chartMouseUp', 'drag', 'dragComplete', 'dragEnd', 'dragStart', 'legendClick', 'legendRender', 'load', 'loaded', 'multiLevelLabelClick', 'onZooming', 'pointClick', 'pointDoubleClick', 'pointMove', 'pointRender', 'resized', 'scrollChanged', 'scrollEnd', 'scrollStart', 'selectionComplete', 'seriesRender', 'sharedTooltipRender', 'textRender', 'tooltipRender', 'zoomComplete'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents Vuejs chart Component\n * ```vue\n * <ejs-chart></ejs-chart>\n * ```\n */\nexport var ChartComponent = vueDefineComponent({\n name: 'ChartComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Chart({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-series-collection\": { \"e-series\": { \"e-trendlines\": \"e-trendline\", \"e-segments\": \"e-segment\" } }, \"e-axes\": { \"e-axis\": { \"e-striplines\": \"e-stripline\", \"e-multilevellabels\": { \"e-multilevellabel\": { \"e-categories\": \"e-category\" } } } }, \"e-rows\": \"e-row\", \"e-columns\": \"e-column\", \"e-rangecolorsettings\": \"e-rangecolorsetting\", \"e-annotations\": \"e-annotation\", \"e-selecteddataindexes\": \"e-selecteddataindex\", \"e-indicators\": \"e-indicator\" },\n tagNameMapper: { \"e-series-collection\": \"e-series\", \"e-striplines\": \"e-stripLines\", \"e-multilevellabels\": \"e-multiLevelLabels\", \"e-rangecolorsettings\": \"e-rangeColorSettings\", \"e-selecteddataindexes\": \"e-selectedDataIndexes\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addAxes: function (axisCollection) {\n return this.ej2Instances.addAxes(axisCollection);\n },\n addSeries: function (seriesCollection) {\n return this.ej2Instances.addSeries(seriesCollection);\n },\n clearSeries: function () {\n return this.ej2Instances.clearSeries();\n },\n createChartSvg: function () {\n return this.ej2Instances.createChartSvg();\n },\n export: function (type, fileName) {\n return this.ej2Instances.export(type, fileName);\n },\n getLocalizedLabel: function (key) {\n return this.ej2Instances.getLocalizedLabel(key);\n },\n hideCrosshair: function () {\n return this.ej2Instances.hideCrosshair();\n },\n hideTooltip: function () {\n return this.ej2Instances.hideTooltip();\n },\n isSecondaryAxis: function (axis) {\n return this.ej2Instances.isSecondaryAxis(axis);\n },\n print: function (id) {\n return this.ej2Instances.print(id);\n },\n processData: function (render) {\n return this.ej2Instances.processData(render);\n },\n refreshLiveData: function () {\n return this.ej2Instances.refreshLiveData();\n },\n removeAxis: function (index) {\n return this.ej2Instances.removeAxis(index);\n },\n removeSeries: function (index) {\n return this.ej2Instances.removeSeries(index);\n },\n setAnnotationValue: function (annotationIndex, content) {\n return this.ej2Instances.setAnnotationValue(annotationIndex, content);\n },\n showCrosshair: function (x, y) {\n return this.ej2Instances.showCrosshair(x, y);\n },\n showTooltip: function (x, y, isPoint) {\n return this.ej2Instances.showTooltip(x, y, isPoint);\n },\n }\n});\nexport var ChartPlugin = {\n name: 'ejs-chart',\n install: function (Vue) {\n Vue.component(ChartPlugin.name, ChartComponent);\n Vue.component(SeriesPlugin.name, SeriesDirective);\n Vue.component(SeriesCollectionPlugin.name, SeriesCollectionDirective);\n Vue.component(TrendlinePlugin.name, TrendlineDirective);\n Vue.component(TrendlinesPlugin.name, TrendlinesDirective);\n Vue.component(SegmentPlugin.name, SegmentDirective);\n Vue.component(SegmentsPlugin.name, SegmentsDirective);\n Vue.component(AxisPlugin.name, AxisDirective);\n Vue.component(AxesPlugin.name, AxesDirective);\n Vue.component(StripLinePlugin.name, StripLineDirective);\n Vue.component(StripLinesPlugin.name, StripLinesDirective);\n Vue.component(MultiLevelLabelPlugin.name, MultiLevelLabelDirective);\n Vue.component(MultiLevelLabelsPlugin.name, MultiLevelLabelsDirective);\n Vue.component(CategoryPlugin.name, CategoryDirective);\n Vue.component(CategoriesPlugin.name, CategoriesDirective);\n Vue.component(RowPlugin.name, RowDirective);\n Vue.component(RowsPlugin.name, RowsDirective);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(RangeColorSettingPlugin.name, RangeColorSettingDirective);\n Vue.component(RangeColorSettingsPlugin.name, RangeColorSettingsDirective);\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\n Vue.component(AnnotationsPlugin.name, AnnotationsDirective);\n Vue.component(SelectedDataIndexPlugin.name, SelectedDataIndexDirective);\n Vue.component(SelectedDataIndexesPlugin.name, SelectedDataIndexesDirective);\n Vue.component(IndicatorPlugin.name, IndicatorDirective);\n Vue.component(IndicatorsPlugin.name, IndicatorsDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-list/drop-down-list-model.d.ts'/>\nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n var isExistItem = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n isExistItem = true;\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !isExistItem)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row<T>} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row<T>} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n ;\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row<T>} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `ColumnSeries` Module used to render the column series.\n */\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnSeries.prototype.render = function (series) {\n var sideBySideInfo = this.getSideBySideInfo(series);\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointColumn = _a[_i];\n pointColumn.symbolLocations = [];\n pointColumn.regions = [];\n if (pointColumn.visible && withInRange(series.points[pointColumn.index - 1], pointColumn, series.points[pointColumn.index + 1], series)) {\n this.rect = this.getRectangle(pointColumn.xValue + sideBySideInfo.start, pointColumn.yValue, pointColumn.xValue + sideBySideInfo.end, origin, series);\n this.rect.width = series.columnWidthInPixel ? (series.columnWidthInPixel - (series.chart.enableSideBySidePlacement ? series.columnWidthInPixel * series.columnSpacing : 0)) : this.rect.width;\n this.rect.x = series.columnWidthInPixel ? this.rect.x - (((series.columnWidthInPixel / 2) * series.rectCount) -\n (series.columnWidthInPixel * series.index)) : this.rect.x;\n var color = series.category === 'Indicator' ? pointColumn.color : series.interior;\n argsData = this.triggerEvent(series, pointColumn, color, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointColumn, this.rect, series);\n this.drawRectangle(series, pointColumn, this.rect, argsData);\n if (series.columnFacet === 'Cylinder') {\n var cylinderSeriesOption = {\n 'isColumn': true,\n 'stacking': false,\n 'isLastSeries': true\n };\n this.drawCylinder(this.options, this.element, cylinderSeriesOption, this.rect, series);\n }\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n ColumnSeries.prototype.getModuleName = function () {\n return 'ColumnSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return ColumnSeries;\n}(ColumnBase));\nexport { ColumnSeries };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell<Column>} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contractData.vue?vue&type=style&index=0&id=08835a69&prod&scoped=true&lang=css\"","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=8aa357f8&prod&scoped=true&lang=css\"","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell<Column>} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell<Column>} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell<Column>} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true \n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow', attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise<Object>} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is decimal or integer and parseFloat to remove trailing zeros\n /* eslint-disable-next-line */\n gObj.searchSettings.key = /^\\d+(\\.\\d+)?$/.test(searchString) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n * <div id=\"grid\"></div>\n * <script>\n * var gridObj = new Grid({ allowPaging: true });\n * gridObj.appendTo(\"#grid\");\n * </script>\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this_1.enableLogger = true;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) &&\n !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '<div class=\"e-ftrchk e-mask-ftrchk\" style=\"width: 100%;\">'\n + '<div class=\"e-checkbox-wrapper\" style=\"width: 100%;\"><input class=\"e-chk-hidden\">'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '</div></div>';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '<span class=\"e-mask e-skeleton e-skeleton-text\"></span>';\n }\n return '<span class=\"e-mask e-skeleton e-skeleton-text e-shimmer-wave\"></span>';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = 0;\n if (this.isRowDragable()) {\n left++;\n }\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf<Element>} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) { return col.field === cell.column.field; });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row<Column>} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row<Column>[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row<Column>[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row<Column>[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto' && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * <button id=\"btn\">change dataSource </button>\n * <div id=\"Grid\"></div>\n * <script>\n * let gridObj: Grid = new Grid({\n * dataSource: employeeData, // you can define the datamanager here if you are binding a data through datamanager\n * columns: [\n * { field: 'OrderID', headerText: 'Order ID', width:100 },\n * { field: 'EmployeeID', headerText: 'Employee ID' }],\n * });\n * gridObj.appendTo('#Grid');\n * document.getElementById('btn').addEventListener(\"click\", function(){\n * let newColumn: [\n * { field: 'CustomerID', headerText: 'Customer ID', width:100 },\n * { field: 'FirstName', headerText: 'Name' }];\n * gridObj.changeDataSource(customerData, newColumn);\n * });\n * </script>\n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n * <div id=\"Grid\"></div>\n * <script>\n * let gridObj: Grid = new Grid({\n * dataSource: employeeData,\n * columns: [\n * { field: 'OrderID', headerText: 'Order ID', width:100 },\n * { field: 'EmployeeID', headerText: 'Employee ID' }],\n * dataBound: () => gridObj.autoFitColumns('EmployeeID')\n * });\n * gridObj.appendTo('#Grid');\n * </script>\n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-multi-select-list-wrapper')) && parentsUntil(relatedTarget, 'e-input-group'))\n && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise<any>} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise<Object>} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n else {\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n }\n else if (this.infiniteRenderMod) {\n this.infiniteFltrBtnHandler(coll);\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n this.options.parentTotalDataCount = this.options.parentTotalDataCount;\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '<div class=\"e-checkbox-wrapper\"><span class=\"e-label e-checkboxfiltertext\">A</div></span>';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '<span class=\"e-mask e-skeleton e-skeleton-text e-shimmer-wave\"></span>';\n };\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height) :\n Math.floor(parseInt(computedStyle.height.split('px')[0])) - 5;\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n var liHeight = this.getListHeight(wrapperElem);\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '<div class=\"e-ftrchk e-mask-ftrchk\" style=\"width: 100%; height:' + maskItemHeight + ';\">'\n + '<div class=\"e-checkbox-wrapper\" style=\"width: 100%;\"><input class=\"e-chk-hidden\">'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '</div></div>';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount + this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n if (value === pred.value && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","const orderGrid = {\r\n orderGridEletricity: function (data) {\r\n var germany = [];\r\n var netherlands = [];\r\n var france = [];\r\n var italy = [];\r\n var belgium = [];\r\n var austria = [];\r\n var spain = [];\r\n var czechRep = [];\r\n var slovakia = [];\r\n var hungary = [];\r\n var nordics = [];\r\n var switzerland = [];\r\n var uk = [];\r\n var poland = [];\r\n var restOfWorld = [];\r\n const restOfWorldMap = new Map();\r\n let states = [\"Germany\", \"Netherlands\", \"France\", \"Italy\", \"Belgium\", \"Austria\", \"Spain\", \"Czech Rep.\", \"Slovakia\", \"Hungary\", \"Switzerland\", \"Poland\", \"United-Kingdom\"];\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].state == \"Germany\") {\r\n germany = data[i];\r\n }\r\n if (data[i].state == \"Netherlands\") {\r\n netherlands = data[i];\r\n }\r\n\r\n if (data[i].state == \"France\") {\r\n france = data[i];\r\n }\r\n\r\n if (data[i].state == \"Italy\") {\r\n italy = data[i];\r\n }\r\n if (data[i].state == \"Belgium\") {\r\n belgium = data[i];\r\n }\r\n if (data[i].state == \"Austria\") {\r\n austria = data[i];\r\n }\r\n if (data[i].state == \"Spain\") {\r\n spain = data[i];\r\n }\r\n if (data[i].state == \"Czech Rep.\") {\r\n czechRep = data[i];\r\n }\r\n if (data[i].state == \"Slovakia\") {\r\n slovakia = data[i];\r\n }\r\n if (data[i].state == \"Hungary\") {\r\n hungary = data[i];\r\n }\r\n if (data[i].state == \"Switzerland\") {\r\n switzerland = data[i];\r\n }\r\n if (data[i].state == \"Poland\") {\r\n poland = data[i];\r\n }\r\n if (data[i].state == \"United-Kingdom\") {\r\n uk = data[i];\r\n }\r\n else {\r\n if (!states.includes(data[i].state)) {\r\n if (restOfWorldMap.has(data[i].priceAreaName)) {\r\n restOfWorldMap.delete(data[i].priceAreaName);\r\n restOfWorldMap.set(data[i].priceAreaName, data[i]);\r\n } else {\r\n restOfWorldMap.set(data[i].priceAreaName, data[i]);\r\n }\r\n }\r\n }\r\n }\r\n restOfWorld = Array.from(restOfWorldMap.values());\r\n restOfWorld.sort(function (a, b) {\r\n let x = a.state.toLowerCase();\r\n let y = b.state.toLowerCase();\r\n if (x < y) { return -1; }\r\n if (x > y) { return 1; }\r\n return 0; });\r\n var list = [uk, germany, netherlands, france, italy, belgium, austria, spain, czechRep, slovakia, hungary, switzerland, poland, ...restOfWorld];\r\n let output = list.filter(obj => Object.keys(obj).includes(\"state\"));\r\n return output;\r\n\r\n }\r\n}\r\n\r\nexport default orderGrid;","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell<Column>} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell<Column>} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell<Column>} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","const orderGrid = {\r\n orderGridGas: function (data) {\r\n var germany = [];\r\n var netherlands = [];\r\n var france = [];\r\n var italy = [];\r\n var belgium = [];\r\n var austria = [];\r\n var spain = [];\r\n var czechRep = [];\r\n var slovakia = [];\r\n var hungary = [];\r\n var nordics = [];\r\n var switzerland = [];\r\n var uk = [];\r\n var poland = [];\r\n var restOfWorld = [];\r\n let states = [\"Germany\", \"Netherlands\", \"France\", \"Italy\", \"Belgium\", \"Austria\", \"Spain\", \"Czech Rep.\", \"Slovakia\", \"Hungary\", \"Switzerland\", \"Poland\", \"United-Kingdom\"];\r\n const restOfWorldMap = new Map();\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].state == \"Germany\") {\r\n germany = data[i];\r\n }\r\n if (data[i].state == \"Netherlands\") {\r\n netherlands = data[i];\r\n }\r\n\r\n if (data[i].state == \"France\") {\r\n france = data[i];\r\n }\r\n\r\n if (data[i].state == \"Italy\") {\r\n italy = data[i];\r\n }\r\n if (data[i].state == \"Belgium\") {\r\n belgium = data[i];\r\n }\r\n if (data[i].state == \"Austria\") {\r\n austria = data[i];\r\n }\r\n if (data[i].state == \"Spain\") {\r\n spain = data[i];\r\n }\r\n if (data[i].state == \"Czech Rep.\") {\r\n czechRep = data[i];\r\n }\r\n if (data[i].state == \"Slovakia\") {\r\n slovakia = data[i];\r\n }\r\n if (data[i].state == \"Hungary\") {\r\n hungary = data[i];\r\n }\r\n if (data[i].state == \"Nordics\") {\r\n nordics = data[i];\r\n }\r\n if (data[i].state == \"Switzerland\") {\r\n switzerland = data[i];\r\n }\r\n if (data[i].state == \"United-Kingdom\") {\r\n uk = data[i];\r\n }\r\n if (data[i].state == \"Poland\") {\r\n poland = data[i];\r\n }\r\n else {\r\n if (!states.includes(data[i].state)) {\r\n if (restOfWorldMap.has(data[i].priceAreaName)) {\r\n restOfWorldMap.delete(data[i].priceAreaName);\r\n restOfWorldMap.set(data[i].priceAreaName, data[i]);\r\n } else {\r\n restOfWorldMap.set(data[i].priceAreaName, data[i]);\r\n }\r\n }\r\n }\r\n }\r\n restOfWorld = Array.from(restOfWorldMap.values());\r\n restOfWorld.sort(function (a, b) {\r\n let x = a.state.toLowerCase();\r\n let y = b.state.toLowerCase();\r\n if (x < y) { return -1; }\r\n if (x > y) { return 1; }\r\n return 0;\r\n });\r\n var list = [uk, germany, netherlands, france, italy, belgium, austria, spain, czechRep, slovakia, hungary, nordics, switzerland, poland, ...restOfWorld];\r\n let output = list.filter(obj => Object.keys(obj).includes(\"state\"));\r\n return output;\r\n\r\n }\r\n}\r\n\r\nexport default orderGrid;","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartLocation } from '../../common/utils/helper';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * Tooltip Module used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n _this.template = chart.tooltip.template;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.style.pointerEvents = 'none';\n tooltipDiv.style.position = 'absolute';\n tooltipDiv.style.zIndex = '1';\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart, enable3D) {\n if (data.series.enableTooltip) {\n if (enable3D) {\n this.currentPoints.push(data);\n }\n else if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function () {\n var item;\n var series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n series = item.series;\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n if (this.chart.highlightColor !== '' && !isNullOrUndefined(this.chart.highlightColor)) {\n element.setAttribute('fill', (highlight && this.chart.highlightColor !== 'transparent' ? this.chart.highlightColor : series.pointColorMapping !== '' ? (series.points[0]).color : series.points[pointIndex].color || series.interior));\n }\n else {\n element.setAttribute('opacity', (highlight && this.chart.highlightColor !== 'transparent' ? series.opacity / 2 : series.opacity).toString());\n }\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, crosshairEnabled, extraPoints, templatePoint, customTemplate) {\n if (crosshairEnabled === void 0) { crosshairEnabled = false; }\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var module = chart.tooltipModule || chart.tooltip3DModule ||\n chart.accumulationTooltipModule;\n if (!module || location === null) { // For the tooltip enable is false.\n removeElement(this.chart.element.id + '_tooltip');\n return;\n }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity ? chart.tooltip.opacity : ((this.chart.theme === 'Material3' || this.chart.theme === 'Material3Dark') ? 1 : 0.75),\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: this.control.tooltip.shared,\n crosshair: crosshairEnabled,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || this.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0),\n inverted: this.chart.requireInvertedAxis && series.isRectSeries,\n arrowPadding: this.text.length > 1 || this.chart.stockChart || (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null) ? 0 : 7,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isFixed: (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null),\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n enableRTL: chart.enableRtl,\n controlName: 'Chart',\n allowHighlight: chart.getModuleName() === 'chart' && !series.marker.allowHighlight,\n tooltipRender: function () {\n module.removeHighlight();\n module.highlightPoints();\n module.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n module.fadeOut(module.previousPoints);\n }\n }\n });\n this.svgTooltip.appendTo(this.getElement(this.element.id + '_tooltip'));\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = this.template;\n this.svgTooltip.controlName = 'Chart';\n this.svgTooltip.crosshair = crosshairEnabled;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart || (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null) ? 0 : 7;\n this.svgTooltip.allowHighlight = chart.getModuleName() === 'chart' && !series.marker.allowHighlight;\n this.svgTooltip.dataBind();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight();\n this.removeHighlightedMarker(data, true);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n var tooltipTemplate = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n var isTemplateRendered = tooltipTemplate && tooltipTemplate.innerText !== '<div></div>';\n this.stopAnimation();\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = +setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @returns {string}\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n * <div id=\"pager\"/>\n * ```\n * ```typescript\n * <script>\n * var pagerObj = new Pager({ totalRecordsCount: 50, pageSize:10 });\n * pagerObj.appendTo(\"#pager\");\n * </script>\n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n gObj.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (e, position, scrollElem) {\n var _this = this;\n var cliRect = scrollElem.getBoundingClientRect();\n if (cliRect.left >= position.x - 20) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'left', e); }, 200);\n }\n else if (cliRect.left + scrollElem.clientWidth - 20 -\n (this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'right', e); }, 200);\n }\n if (cliRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'up', e); }, 200);\n }\n else if (cliRect.top + scrollElem.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElem.firstElementChild.scrollWidth > scrollElem.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElem.firstElementChild, 'down', e); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElem, direction, e) {\n var rowIndex = -1;\n var colIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index')) : this.prevECIdxs.rowIndex;\n colIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex')) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (e && closest(e.target, '.e-headercontent'))\n return;\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n rowIndex -= 1;\n if (this.parent.frozenRows)\n rowIndex += this.parent.frozenRows + 1;\n rowIndex < 1 ? scrollElem.scrollTop = 0 : scrollElem.scrollTop -= this.parent.getRowByIndex(rowIndex).offsetHeight;\n break;\n case 'down':\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n scrollElem.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollHeight;\n }\n break;\n case 'left':\n if (colIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().left > 0))) {\n colIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < 1 ? scrollElem.scrollLeft = 0 : scrollElem.scrollLeft -= nextEle.offsetWidth;\n }\n break;\n case 'right':\n if (colIndex < this.parent.columns.length - 1) {\n var nextEle = this.findNextCell(scrollElem, direction, colIndex, rowIndex);\n colIndex = nextEle ? parseInt(nextEle.getAttribute('data-colindex')) : -1;\n colIndex < this.parent.columns.length - 1 ? scrollElem.scrollLeft += nextEle.offsetWidth : scrollElem.scrollLeft = scrollElem.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && colIndex > -1) {\n var e_1 = { target: this.parent.getCellFromIndex(rowIndex, colIndex) };\n this.endAFCell = e_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(e_1, rowIndex, colIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElem, direction, colInd, rowInd) {\n var nextEle = this.parent.getCellFromIndex(rowInd, direction === 'left' ? colInd - 1 : colInd + 1);\n if (nextEle && nextEle.classList.contains('e-hide')) {\n var siblingEles = nextEle.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextEle.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextEle = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextEle;\n }\n else {\n scrollElem.scrollLeft = 0;\n return null;\n }\n }\n return nextEle;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl && parseInt(width[3], 10) === 2)) ||\n (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl && parseInt(width[1], 10) === 2)) ||\n (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.isAutoFillSel = false;\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.isSelectAllRowCount(checkedLen)\n || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./homeBarChart.vue?vue&type=style&index=0&id=f7a2376c&prod&lang=css\"","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize')) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"home-container\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.pricesWarning),expression:\"pricesWarning\"}],ref:\"pricesNotLatestWarningMessage\",attrs:{\"id\":\"pricesNotLatestWarningMessage\"}},[_vm._v(\"Some of the EOD prices from the last trading day are not available. The system is pulling the most recent available EOD prices instead.\")]),_c('div',{staticClass:\"form-row form-row-first\"},[_c('div',{staticClass:\"col-md-2\"},[_c('myClients')],1),_c('div',{staticClass:\"col-md-2\"},[_c('gasData')],1),_c('div',{staticClass:\"col-md-2\"},[_c('contractData')],1),_c('div',{staticClass:\"col-md-6 col-md-6-banner\"},[_c('div',[_c('div',{staticClass:\"col-md-12\"},[_c('triggers')],1)])])]),_c('div',{staticClass:\"form-row form-row-second\"},[_c('div',{ref:\"regmap\",staticClass:\"col-md-6\"},[_c('h6',[_vm._v(\"Power & Gas\")]),_c('homeRegionalMap')],1),_c('div',{ref:\"hbc\",staticClass:\"col-md-6\"},[_c('h6',[_vm._v(\"Power & Gas Volume\")]),_c('barChart')],1)]),_c('div',{staticClass:\"form-row form-row-third\"},[_c('div',{staticClass:\"col-md-4\"},[_c('div',{ref:\"hpr\",staticClass:\"col-md-12 col-md-12-PRates\"},[_c('h6',[_vm._v(\"POWER BASELOAD - Front Year\")]),_c('powerRates')],1)]),_c('div',{staticClass:\"col-md-4\"},[_c('div',{ref:\"hgr\",staticClass:\"col-md-12 col-md-12-GRates\"},[_c('h6',[_vm._v(\"GAS - Front Year\")]),_c('gasRates')],1)]),_c('div',{staticClass:\"col-md-4\"},[_c('div',{staticClass:\"col-md-12 col-md-12-FRates\"},[_c('h6',[_vm._v(\"FOREX\")]),_c('fxRates')],1)])]),_c('div',{staticClass:\"form-row form-row-four\"},[_c('refinitiv')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contract-data\",on:{\"click\":_vm.toContracts}},[_c('CRow',[_c('CCol',[_c('CWidgetBrand',{staticClass:\"w-100\",attrs:{\"color\":\"primary\",\"right-header\":_vm.powerContractCounts,\"right-footer\":\"contracts\",\"left-header\":_vm.volumeInGigs,\"left-footer\":\"Volume GWh\"}},[_c('CIcon',{staticClass:\"my-4\",attrs:{\"name\":\"cil-bolt\",\"height\":\"48\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"contract-data\" v-on:click=\"toContracts\">\r\n <CRow>\r\n <CCol>\r\n <CWidgetBrand color=\"primary\"\r\n :right-header=\"powerContractCounts\"\r\n right-footer=\"contracts\"\r\n :left-header=\"volumeInGigs\"\r\n left-footer=\"Volume GWh\"\r\n class=\"w-100\">\r\n <CIcon name=\"cil-bolt\"\r\n height=\"48\"\r\n class=\"my-4\" />\r\n </CWidgetBrand>\r\n </CCol>\r\n </CRow>\r\n </div>\r\n\r\n</template>\r\n\r\n<script>\r\n import Vue from 'vue';\r\n import apis from '@/common/network';\r\n\r\n export default Vue.extend({\r\n created() {\r\n this.fetchContractData()\r\n },\r\n data() {\r\n return {\r\n powerContractCounts: \"-\"\r\n }\r\n },\r\n methods: { \r\n fetchContractData: function () {\r\n apis.protectedApi(`contract/contractEletrictyCount/${this.$store.state.loggedInUserId}`)\r\n .then(response => {\r\n this.powerContractCounts = response.data.count;\r\n }).catch(e => {\r\n\r\n }); \r\n },\r\n toContracts(args) {\r\n this.$router.push({ name: \"Contracts\", params: { utilityType: \"power\" } });\r\n },\r\n },\r\n computed: {\r\n //powerContractCounts() { \r\n // return this.$store.state.homeVolumeData.powerContractIds ?\r\n // this.$store.state.homeVolumeData.powerContractIds.length.toLocaleString() : \"-\";\r\n \r\n \r\n //},\r\n volumeInGigs() {\r\n return this.$store.state.homeVolumeData.powerVolumeGigs ?\r\n Math.round(this.$store.state.homeVolumeData.powerVolumeGigs).toLocaleString() : \"-\"; \r\n\r\n }\r\n }\r\n })\r\n</script>\r\n\r\n<style scoped>\r\n .dashboard-seo .dashboard-dynamic .contract-data {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contractData.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contractData.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./contractData.vue?vue&type=template&id=08835a69&scoped=true\"\nimport script from \"./contractData.vue?vue&type=script&lang=js\"\nexport * from \"./contractData.vue?vue&type=script&lang=js\"\nimport style0 from \"./contractData.vue?vue&type=style&index=0&id=08835a69&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"08835a69\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contract-data\",on:{\"click\":_vm.toContracts}},[_c('CRow',[_c('CCol',[_c('CWidgetBrand',{staticClass:\"w-100\",attrs:{\"color\":\"primary\",\"right-header\":_vm.gasContractCounts,\"right-footer\":\"contracts\",\"left-header\":_vm.volumeInGigs,\"left-footer\":\"Volume GWh\"}},[_c('CIcon',{staticClass:\"my-4\",attrs:{\"name\":\"cil-fire\",\"height\":\"48\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"contract-data\" v-on:click=\"toContracts\">\r\n <CRow>\r\n <CCol>\r\n <CWidgetBrand color=\"primary\"\r\n :right-header=\"gasContractCounts\"\r\n right-footer=\"contracts\"\r\n :left-header=\"volumeInGigs\"\r\n left-footer=\"Volume GWh\"\r\n class=\"w-100\">\r\n <CIcon name=\"cil-fire\"\r\n height=\"48\"\r\n class=\"my-4\" />\r\n </CWidgetBrand>\r\n </CCol>\r\n </CRow>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import Vue from 'vue';\r\n import apis from '@/common/network';\r\n\r\n export default Vue.extend({\r\n created() {\r\n this.fetchContractDataGas()\r\n },\r\n data() {\r\n return {\r\n gasContractCounts: \"-\"\r\n }\r\n },\r\n //mounted() {\r\n //},\r\n methods: {\r\n fetchContractDataGas: function () {\r\n apis.protectedApi(`contract/contractGasCount/${this.$store.state.loggedInUserId}`)\r\n .then(response => {\r\n this.gasContractCounts = response.data.count;\r\n }).catch(e => {\r\n\r\n });\r\n },\r\n toContracts(args) {\r\n this.$router.push({ name: \"Contracts\", params: { utilityType: \"gas\" }});\r\n },\r\n },\r\n computed: {\r\n //gasContractCounts() {\r\n // return this.$store.state.homeVolumeData.gasContractIds ?\r\n // this.$store.state.homeVolumeData.gasContractIds.length.toLocaleString() : \"-\";\r\n //},\r\n volumeInGigs() {\r\n return this.$store.state.homeVolumeData.gasVolumeGigs ?\r\n Math.round(this.$store.state.homeVolumeData.gasVolumeGigs).toLocaleString() : \"-\";\r\n }\r\n }\r\n })\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gasData.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gasData.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./gasData.vue?vue&type=template&id=6aac3964&scoped=true\"\nimport script from \"./gasData.vue?vue&type=script&lang=js\"\nexport * from \"./gasData.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6aac3964\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"click\":_vm.toClients}},[_c('CRow',[_c('CCol',[_c('CWidgetProgressIcon',{staticStyle:{\"height\":\"188px\"},attrs:{\"header\":_vm.clientsCount,\"text\":\"My Clients\",\"color\":\"primary\",\"value\":100}},[_c('CIcon',{attrs:{\"name\":\"cil-people\",\"height\":\"36\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div v-on:click=\"toClients\">\r\n <CRow>\r\n <CCol>\r\n <CWidgetProgressIcon :header=\"clientsCount\"\r\n text=\"My Clients\"\r\n color=\"primary\"\r\n :value=\"100\"\r\n style=\"height:188px\">\r\n <CIcon name=\"cil-people\" height=\"36\" />\r\n </CWidgetProgressIcon>\r\n </CCol>\r\n </CRow>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import Vue from 'vue';\r\n import apis from '@/common/network';\r\n\r\n export default Vue.extend({\r\n created() {\r\n this.fetchClientsData()\r\n },\r\n data() {\r\n return {\r\n clientsCount: \"-\"\r\n }\r\n },\r\n methods: {\r\n fetchClientsData: function () {\r\n apis.protectedApi('utils/activeClients')\r\n .then(response => {\r\n this.clientsCount = response.data.length.toLocaleString();\r\n }).catch(e => {\r\n\r\n });\r\n },\r\n toClients(args) {\r\n this.$router.push({ name: 'Clients' });\r\n }\r\n }\r\n })\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./clientCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./clientCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./clientCard.vue?vue&type=template&id=1d25dab2&scoped=true\"\nimport script from \"./clientCard.vue?vue&type=script&lang=js\"\nexport * from \"./clientCard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d25dab2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"align-items-center\",attrs:{\"id\":\"triggerContainer\"}},[_c('CRow',{on:{\"click\":_vm.toTriggerHitAlerts}},[_c('CCol',{staticClass:\"nopadding\",attrs:{\"col\":\"3\"}},[_c('CWidgetIcon',{staticClass:\"nomargin1\",attrs:{\"header\":_vm.totalAlerts,\"height\":20,\"text\":\"Alerts\",\"color\":\"primary\"}},[_c('CIcon',{attrs:{\"name\":\"cil-bell\"}})],1)],1),_c('CCol',{staticClass:\"nopadding\",attrs:{\"col\":\"3\"}},[_c('CWidgetIcon',{staticClass:\"nomargin2\",attrs:{\"header\":_vm.defaultDeadlineAlerts,\"text\":\"Deadline\",\"color\":\"primary\"}},[_c('CIcon',{attrs:{\"name\":\"cil-warning\"}})],1)],1),_c('CCol',{staticClass:\"nopadding\",attrs:{\"col\":\"3\"}},[_c('CWidgetIcon',{staticClass:\"nomargin3\",attrs:{\"header\":_vm.hitTriggerAlerts,\"text\":\"Hit Triggers\",\"color\":\"primary\"}},[_c('CIcon',{attrs:{\"name\":\"cil-warning\"}})],1)],1),_c('CCol',{staticClass:\"nopadding\",attrs:{\"col\":\"3\"}},[_c('CWidgetIcon',{staticClass:\"nomargin4\",attrs:{\"header\":_vm.triggerStatusAlerts,\"text\":\"Trigger status\",\"color\":\"primary\"}},[_c('CIcon',{attrs:{\"name\":\"cil-warning\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"triggerContainer\" class=\"align-items-center\">\r\n <CRow v-on:click=\"toTriggerHitAlerts\">\r\n <CCol col=\"3\" class=\"nopadding\">\r\n <CWidgetIcon :header=\"totalAlerts\" :height=\"20\"\r\n text=\"Alerts\"\r\n color=\"primary\" class=\"nomargin1\">\r\n <CIcon name=\"cil-bell\" />\r\n </CWidgetIcon>\r\n </CCol>\r\n <CCol col=\"3\" class=\"nopadding\">\r\n <CWidgetIcon :header=\"defaultDeadlineAlerts\" \r\n text=\"Deadline\"\r\n color=\"primary\" class=\"nomargin2\">\r\n <CIcon name=\"cil-warning\" />\r\n </CWidgetIcon>\r\n </CCol>\r\n\r\n <CCol col=\"3\" class=\"nopadding\" >\r\n <CWidgetIcon :header=\"hitTriggerAlerts\" \r\n text=\"Hit Triggers\"\r\n color=\"primary\" class=\"nomargin3\">\r\n <CIcon name=\"cil-warning\" />\r\n </CWidgetIcon>\r\n </CCol>\r\n <CCol col=\"3\" class=\"nopadding\">\r\n <CWidgetIcon :header=\"triggerStatusAlerts\" \r\n text=\"Trigger status\"\r\n color=\"primary\" class=\"nomargin4\">\r\n <CIcon name=\"cil-warning\" />\r\n </CWidgetIcon>\r\n </CCol>\r\n </CRow>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import Vue from 'vue';\r\n import apis from '@/common/network';\r\n\r\n export default Vue.extend({\r\n created() {\r\n this.fetchAlertsData()\r\n },\r\n data() {\r\n return {\r\n totalAlerts: \"-\",\r\n hitTriggerAlerts: \"-\",\r\n triggerStatusAlerts: \"-\",\r\n defaultDeadlineAlerts: \"-\",\r\n }\r\n },\r\n methods: {\r\n fetchAlertsData() {\r\n apis.protectedApi(\"TriggerAlert/GroupCounts\").then(gc => {\r\n this.hitTriggerAlerts = gc.data.hit.toString();\r\n this.triggerStatusAlerts = gc.data.status.toString();\r\n this.defaultDeadlineAlerts = gc.data.deadline.toString();\r\n this.totalAlerts = (gc.data.hit + gc.data.status + gc.data.deadline).toString();\r\n }\r\n ).catch(\r\n //response => { this.handleError(response); }\r\n );\r\n },\r\n toTriggerHitAlerts(args) {\r\n this.$router.push({ name: 'Hit Triggers' });\r\n },\r\n toStatusAlerts(args) {\r\n this.$router.push({ name: 'Trigger Status' });\r\n },\r\n toDeadlineAlerts(args) {\r\n this.$router.push({ name: 'Default Deadlines' });\r\n },\r\n toAlerts(args) {\r\n this.$router.push({ name: 'Alerts' });\r\n },\r\n }\r\n })\r\n</script>\r\n\r\n<style scoped>\r\n .nopadding {\r\n padding: 0px 0px 0px 0px !important;\r\n }\r\n .nomargin2, .nomargin3 {\r\n margin: 0px 0px 0px 0px !important;\r\n padding: 9px !important;\r\n border: 0px solid !important;\r\n border-radius: 0rem;\r\n height: 185px;\r\n }\r\n .nomargin1 {\r\n margin: 0px 0px 0px 0px !important;\r\n padding: 9px !important;\r\n border: 0px solid !important;\r\n border-top-left-radius: 0.25rem;\r\n border-bottom-left-radius: 0.25rem;\r\n border-top-right-radius: 0rem;\r\n border-bottom-right-radius: 0rem;\r\n height: 185px;\r\n }\r\n .nomargin4 {\r\n margin: 0px 0px 0px 0px !important;\r\n padding: 8px !important;\r\n border: 0px solid !important;\r\n border-top-right-radius: 0.25rem;\r\n border-bottom-right-radius: 0.25rem;\r\n border-top-left-radius: 0rem;\r\n border-bottom-left-radius: 0rem;\r\n height: 185px;\r\n }\r\n\r\n\r\n #triggerContainer {\r\n width: 100%;\r\n padding: 0px 33px 0px 0px;\r\n }\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./triggersCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./triggersCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./triggersCard.vue?vue&type=template&id=4edd8818&scoped=true\"\nimport script from \"./triggersCard.vue?vue&type=script&lang=js\"\nexport * from \"./triggersCard.vue?vue&type=script&lang=js\"\nimport style0 from \"./triggersCard.vue?vue&type=style&index=0&id=4edd8818&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4edd8818\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"maps-container\"},[_c('ejs-maps',{ref:\"mapPowerInstance\",staticClass:\"map-container home-region-map\",staticStyle:{\"display\":\"block\"},attrs:{\"id\":\"containerPower\",\"fill\":\"#ccc5b9\",\"align\":\"center\",\"load\":_vm.load,\"tooltipRender\":_vm.tooltipRender,\"zoomSettings\":_vm.zoomSettings,\"legendSettings\":_vm.legendSettings}},[_c('e-layers',[_c('e-layer',{attrs:{\"shapeData\":_vm.shapeData,\"shapePropertyPath\":_vm.shapePropertyPath,\"shapeDataPath\":_vm.shapeDataPath,\"dataSource\":_vm.dataSource,\"shapeSettings\":_vm.shapeSettings,\"tooltipSettings\":_vm.tooltipSettings}})],1)],1),_c('div',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"template\"}},[_c('div',{staticClass:\"toolback\"},[_c('div',{staticClass:\"listing2\"},[_c('center',[_vm._v(\" ${country} \")])],1),_c('hr',{staticStyle:{\"margin-top\":\"2px\",\"margin-bottom\":\"5px\",\"border\":\"0.5px solid #DDDDDD\"}}),_vm._m(0),_vm._m(1),_vm._m(2),_vm._m(3)])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('span',{staticClass:\"listing1\"},[_vm._v(\"Power Contracts : \")]),_c('span',{staticClass:\"listing2\"},[_vm._v(\"${powerContracts}\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"align-content\":\"center\"}},[_c('span',{staticClass:\"listing1\"},[_vm._v(\"Power Volume : \")]),_c('span',{staticClass:\"listing2\"},[_vm._v(\"${powerVolume} GWh\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"align-content\":\"center\"}},[_c('span',{staticClass:\"listing1\"},[_vm._v(\"Gas Contracts : \")]),_c('span',{staticClass:\"listing2\"},[_vm._v(\"${gasContracts}\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"align-content\":\"center\"}},[_c('span',{staticClass:\"listing1\"},[_vm._v(\"Gas Volume : \")]),_c('span',{staticClass:\"listing2\"},[_vm._v(\"${gasVolume} GWh\")])])}]\n\nexport { render, staticRenderFns }","/**\n * Maps constants doc\n */\n/**\n * Specifies the maps load event name.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Specifies the maps loaded event name.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Specifies the maps click event name.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Specifies the maps onclick event name.\n *\n * @private\n */\nexport var onclick = 'onclick';\n/**\n * Specifies the maps right click event name.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Specifies the maps double click event name.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Specifies the maps resize event name.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Specifies the maps tooltip event name.\n *\n */\nexport var tooltipRender = 'tooltipRender';\n/**\n * Specifies the map shape selected event.\n *\n */\nexport var shapeSelected = 'shapeSelected';\n/**\n * Specifies the maps shape highlight event.\n *\n */\nexport var shapeHighlight = 'shapeHighlight';\n/**\n * Specifies the maps mouse move event name.\n *\n * @private\n */\nexport var mousemove = 'mousemove';\n/**\n * Specifies the maps mouse up event name.\n *\n * @private\n */\nexport var mouseup = 'mouseup';\n/**\n * Specifies the maps mouse down event name.\n *\n * @private\n */\nexport var mousedown = 'mousedown';\n/**\n * Specifies the maps layer rendering event name.\n *\n * @private\n */\nexport var layerRendering = 'layerRendering';\n/**\n * Specifies the maps shape rendering event name.\n *\n * @private\n */\nexport var shapeRendering = 'shapeRendering';\n/**\n * Specifies the maps marker rendering event name.\n *\n * @private\n */\nexport var markerRendering = 'markerRendering';\n/**\n * Specifies the maps cluster rendering event name.\n *\n * @private\n */\nexport var markerClusterRendering = 'markerClusterRendering';\n/**\n * Specifies the maps marker click event name.\n *\n * @private\n */\nexport var markerClick = 'markerClick';\n/**\n * Specifies the maps marker drag start event name.\n *\n * @private\n */\nexport var markerDragStart = 'markerDragStart';\n/**\n * Specifies the maps marker drag end event name.\n *\n * @private\n */\nexport var markerDragEnd = 'markerDragEnd';\n/**\n * Specifies the maps cluster click event name.\n *\n * @private\n */\nexport var markerClusterClick = 'markerClusterClick';\n/**\n * Specifies the maps marker mouse move event name.\n *\n * @private\n */\nexport var markerMouseMove = 'markerMouseMove';\n/**\n * Specifies the maps cluster mouse move event name.\n *\n * @private\n */\nexport var markerClusterMouseMove = 'markerClusterMouseMove';\n/**\n * Specifies the maps data label rendering event name.\n *\n * @private\n */\nexport var dataLabelRendering = 'dataLabelRendering';\n/**\n * Specifies the maps bubbleRendering event name.\n *\n * @private\n */\nexport var bubbleRendering = 'bubbleRendering';\n/**\n * Specifies the maps bubble click event name.\n *\n * @private\n */\nexport var bubbleClick = 'bubbleClick';\n/**\n * Specifies the maps bubble mouse move event name.\n *\n * @private\n */\nexport var bubbleMouseMove = 'bubbleMouseMove';\n/**\n * Specifies the maps animation complete event name.\n *\n * @private\n */\nexport var animationComplete = 'animationComplete';\n/**\n * Specifies the maps legend rendering event name.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Specifies the maps annotation rendering event name.\n *\n * @private\n */\nexport var annotationRendering = 'annotationRendering';\n/**\n * Specifies the maps item selection event name.\n *\n * @private\n */\nexport var itemSelection = 'itemSelection';\n/**\n * Specifies the maps item highlight event name.\n *\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Specifies the maps before print event name.\n *\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Specifies the maps zoom in event name.\n *\n */\nexport var zoomIn = 'zoomIn';\n/**\n * Specifies the maps zoom out event name.\n *\n */\nexport var zoomOut = 'zoomOut';\n/**\n * Specifies the maps pan event name.\n *\n */\nexport var pan = 'pan';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable max-len */\n/**\n * Helper functions for maps control\n */\nimport { createElement, isNullOrUndefined, remove, compile as templateComplier, merge, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, animationMode } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { itemSelection } from '../../index';\nimport { animationComplete } from '../index';\nimport { markerClusterRendering } from '../index';\n/**\n * Specifies the size information of an element.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n * To find number from string\n *\n * @param {string} value Specifies the value\n * @param {number} containerSize Specifies the container size\n * @returns {number} Returns the number\n * @private\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Method to calculate the width and height of the maps\n *\n * @param {Maps} maps Specifies the maps instance\n * @returns {void}\n * @private\n */\nexport function calculateSize(maps) {\n maps.element.style.height = !isNullOrUndefined(maps.height) ? maps.height : 'auto';\n maps.element.style.width = !isNullOrUndefined(maps.width) ? maps.width : 'auto';\n maps.element.style.setProperty(\"display\", \"block\");\n var containerWidth = maps.element.clientWidth;\n var containerHeight = maps.element.clientHeight;\n var containerElementWidth = stringToNumber(maps.element.style.width, containerWidth);\n var containerElementHeight = stringToNumber(maps.element.style.height, containerHeight);\n var availableSize = new Size(0, 0);\n if (maps.width === '0px' || maps.width === '0%' || maps.height === '0%' || maps.height === '0px') {\n availableSize = new Size(0, 0);\n }\n else {\n availableSize = new Size(stringToNumber(maps.width, containerWidth) || containerWidth || containerElementWidth || 600, stringToNumber(maps.height, containerHeight) || containerHeight || containerElementHeight || (maps.isDevice ?\n Math.min(window.innerWidth, window.innerHeight) : 450));\n }\n return availableSize;\n}\n/**\n * Method to create svg for maps.\n *\n * @param {Maps} maps Specifies the map instance\n * @returns {void}\n * @private\n */\nexport function createSvg(maps) {\n maps.renderer = new SvgRenderer(maps.element.id);\n maps.availableSize = calculateSize(maps);\n maps.svgObject = maps.renderer.createSvg({\n id: maps.element.id + '_svg',\n width: maps.availableSize.width,\n height: maps.availableSize.height\n });\n if (maps.width === '0px' || maps.width === '0%' || maps.height === '0%' || maps.height === '0px') {\n maps.svgObject.setAttribute('height', '0');\n maps.svgObject.setAttribute('width', '0');\n }\n}\n/**\n * Method to get the mouse position\n *\n * @param {number} pageX - Specifies the pageX.\n * @param {number} pageY - Specifies the pageY.\n * @param {Element} element - Specifies the element.\n * @returns {MapLocation} - Returns the location.\n * @private\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new MapLocation((pageX - positionX), (pageY - positionY));\n}\n/**\n * Method to convert degrees to radians\n *\n * @param {number} deg Specifies the degree value\n * @returns {number} Returns the number\n * @private\n */\nexport function degreesToRadians(deg) {\n return deg * (Math.PI / 180);\n}\n/**\n * Convert radians to degrees method\n *\n * @param {number} radian Specifies the radian value\n * @returns {number} Returns the number\n * @private\n */\nexport function radiansToDegrees(radian) {\n return radian * (180 / Math.PI);\n}\n/**\n * Method for converting from latitude and longitude values to points\n *\n * @param {number} latitude - Specifies the latitude.\n * @param {number} longitude - Specifies the longitude.\n * @param {number} factor - Specifies the factor.\n * @param {LayerSettings} layer - Specifies the layer settings.\n * @param {Maps} mapModel - Specifies the maps.\n * @returns {Point} - Returns the point values.\n * @private\n */\nexport function convertGeoToPoint(latitude, longitude, factor, layer, mapModel) {\n var mapSize = new Size(mapModel.mapAreaRect.width, mapModel.mapAreaRect.height);\n var x;\n var y;\n var value;\n var lat;\n var lng;\n var temp;\n var longitudeMinMax = mapModel.baseMapBounds.longitude;\n var latitudeMinMax = mapModel.baseMapBounds.latitude;\n var latRadian = degreesToRadians(latitude);\n var lngRadian = degreesToRadians(longitude);\n var type = mapModel.projectionType;\n var size = (mapModel.isTileMap) ? Math.pow(2, 1) * 256 : (isNullOrUndefined(factor)) ?\n Math.min(mapSize.width, mapSize.height) : (Math.min(mapSize.width, mapSize.height) * factor);\n if (layer.geometryType === 'Normal') {\n x = isNullOrUndefined(factor) ? longitude : Math.abs((longitude - longitudeMinMax.min) * factor);\n y = isNullOrUndefined(factor) ? latitude : Math.abs((latitudeMinMax.max - latitude) * factor);\n }\n else if (layer.geometryType === 'Geographic') {\n switch (type) {\n case 'Mercator': {\n var pixelOrigin = new Point(size / 2, size / 2);\n x = pixelOrigin.x + longitude * (size / 360);\n var sinY = calculateBound(Math.sin(degreesToRadians(latitude)), -0.9999, 0.9999);\n y = pixelOrigin.y + 0.5 * (Math.log((1 + sinY) / (1 - sinY))) * (-(size / (2 * Math.PI)));\n break;\n }\n case 'Winkel3':\n value = aitoff(lngRadian, latRadian);\n lng = (value.x + lngRadian / (Math.PI / 2)) / 2;\n lat = (value.y + latRadian) / 2;\n break;\n case 'Miller':\n lng = lngRadian;\n lat = (1.25 * Math.log(Math.tan((Math.PI / 4) + (.4 * latRadian))));\n break;\n case 'Eckert3':\n temp = Math.sqrt(Math.PI * (4 + Math.PI));\n lng = 2 / temp * lngRadian * (1 + Math.sqrt(1 - 4 * latRadian * latRadian / (Math.PI * Math.PI)));\n lat = 4 / temp * latRadian;\n break;\n case 'AitOff':\n value = aitoff(lngRadian, latRadian);\n lng = value.x;\n lat = value.y;\n break;\n case 'Eckert5':\n lng = lngRadian * (1 + Math.cos(latRadian)) / Math.sqrt(2 + Math.PI);\n lat = 2 * latRadian / Math.sqrt(2 + Math.PI);\n break;\n case 'Equirectangular':\n lng = lngRadian;\n lat = latRadian;\n break;\n case 'Eckert6': {\n var epsilon = 1e-6;\n temp = (1 + (Math.PI / 2)) * Math.sin(latRadian);\n var delta = Infinity;\n for (var i = 0; i < 10 && Math.abs(delta) > epsilon; i++) {\n delta = (latRadian + (Math.sin(latRadian)) - temp) / (1 + Math.cos(latRadian));\n latRadian = latRadian - delta;\n }\n temp = Math.sqrt(2 + Math.PI);\n lng = lngRadian * (1 + Math.cos(latRadian)) / temp;\n lat = 2 * latRadian / temp;\n break;\n }\n }\n x = (type === 'Mercator') ? x : roundTo(xToCoordinate(mapModel, radiansToDegrees(lng)), 3);\n y = (type === 'Mercator') ? y : (-(roundTo(yToCoordinate(mapModel, radiansToDegrees(lat)), 3)));\n }\n return new Point(x, y);\n}\n/**\n * @private\n */\nexport function calculatePolygonPath(maps, factor, currentLayer, markerData) {\n var path = '';\n Array.prototype.forEach.call(markerData, function (data, dataIndex) {\n var lat = data.latitude;\n var lng = data.longitude;\n var location = (maps.isTileMap) ? convertTileLatLongToPoint(new MapLocation(lng, lat), factor, maps.tileTranslatePoint, true) : convertGeoToPoint(lat, lng, factor, currentLayer, maps);\n if (dataIndex === 0) {\n path += 'M ' + location.x + ' ' + location.y;\n }\n else {\n path += ' L ' + location.x + ' ' + location.y;\n }\n });\n path += ' z ';\n return path;\n}\n/**\n * Converting tile latitude and longitude to point\n *\n * @param {MapLocation} center Specifies the map center location\n * @param {number} zoomLevel Specifies the zoom level\n * @param {MapLocation} tileTranslatePoint Specifies the tile translate point\n * @param {boolean} isMapCoordinates Specifies the boolean value\n * @returns {MapLocation} Returns the location value\n * @private\n */\nexport function convertTileLatLongToPoint(center, zoomLevel, tileTranslatePoint, isMapCoordinates) {\n var size = Math.pow(2, zoomLevel) * 256;\n var x = (center.x + 180) / 360;\n var sinLatitude = Math.sin(center.y * Math.PI / 180);\n var y = 0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI);\n var pixelX = center.x;\n var pixelY = center.y;\n if (isMapCoordinates) {\n pixelX = (x * size + 0.5) + tileTranslatePoint.x;\n pixelY = (y * size + 0.5) + tileTranslatePoint.y;\n }\n return { x: pixelX, y: pixelY };\n}\n/**\n * Method for calculate x point\n *\n * @param {Maps} mapObject - Specifies the maps.\n * @param {number} val - Specifies the value.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function xToCoordinate(mapObject, val) {\n var longitudeMinMax = mapObject.baseMapBounds.longitude;\n var totalSize = isNullOrUndefined(mapObject.baseSize) ? mapObject.mapAreaRect.width : mapObject.mapAreaRect.width +\n (Math.abs(mapObject.baseSize.width - mapObject.mapAreaRect.width) / 2);\n return Math.round(totalSize * (val - longitudeMinMax.min) / (longitudeMinMax.max - longitudeMinMax.min) * 100) / 100;\n}\n/**\n * Method for calculate y point\n *\n * @param {Maps} mapObject - Specifies the maps.\n * @param {number} val - Specifies the value.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function yToCoordinate(mapObject, val) {\n var latitudeMinMax = mapObject.baseMapBounds.latitude;\n return Math.round(mapObject.mapAreaRect.height * (val - latitudeMinMax.min) / (latitudeMinMax.max - latitudeMinMax.min) * 100) / 100;\n}\n/**\n * Method for calculate aitoff projection\n *\n * @param {number} x - Specifies the x value.\n * @param {number} y - Specifies the y value.\n * @returns {Point} - Returns the point value.\n * @private\n */\nexport function aitoff(x, y) {\n var cosy = Math.cos(y);\n var sincia = sinci(acos(cosy * Math.cos(x /= 2)));\n return new Point(2 * cosy * Math.sin(x) * sincia, Math.sin(y) * sincia);\n}\n/**\n * Method to round the number\n *\n * @param {number} a - Specifies the a value\n * @param {number} b - Specifies the b value\n * @returns {number} - Returns the number\n * @private\n */\nexport function roundTo(a, b) {\n var c = Math.pow(10, b);\n return (Math.round(a * c) / c);\n}\n/**\n *\n * @param {number} x - Specifies the x value\n * @returns {number} - Returns the number\n * @private\n */\nexport function sinci(x) {\n return x / Math.sin(x);\n}\n/**\n *\n * @param {number} a - Specifies the a value\n * @returns {number} - Returns the number\n * @private\n */\nexport function acos(a) {\n return Math.acos(a);\n}\n/**\n * Method to calculate bound\n *\n * @param {number} value Specifies the value\n * @param {number} min Specifies the minimum value\n * @param {number} max Specifies the maximum value\n * @returns {number} Returns the value\n * @private\n */\nexport function calculateBound(value, min, max) {\n if (!isNullOrUndefined(min)) {\n value = Math.max(value, min);\n }\n if (!(isNullOrUndefined(max))) {\n value = Math.min(value, max);\n }\n return value;\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName Specifies the file name\n * @param {ExportType} type Specifies the type\n * @param {string} url Specifies the url\n * @param {boolean} isDownload Specifies whether download a file.\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n * Specifies the information of the position of the point in maps.\n */\nvar Point = /** @class */ (function () {\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n return Point;\n}());\nexport { Point };\n/**\n * Defines the latitude and longitude values that define a map location.\n */\nvar Coordinate = /** @class */ (function () {\n function Coordinate(latitude, longitude) {\n this.latitude = latitude;\n this.longitude = longitude;\n }\n return Coordinate;\n}());\nexport { Coordinate };\n/**\n * Map internal class for min and max\n *\n */\nvar MinMax = /** @class */ (function () {\n function MinMax(min, max) {\n this.min = min;\n this.max = max;\n }\n return MinMax;\n}());\nexport { MinMax };\n/**\n * Map internal class locations\n */\nvar GeoLocation = /** @class */ (function () {\n function GeoLocation(latitude, longitude) {\n this.latitude = new MinMax(latitude.min, latitude.max);\n this.longitude = new MinMax(longitude.min, longitude.max);\n }\n return GeoLocation;\n}());\nexport { GeoLocation };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text Specifies the text\n * @param {FontModel} font Specifies the font\n * @returns {Size} Returns the size\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('mapsmeasuretext');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'mapsmeasuretext' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerText = text;\n measureObject.style.position = 'absolute';\n if (typeof (font.size) === 'number') {\n measureObject.style.fontSize = (font.size) + 'px';\n }\n else {\n measureObject.style.fontSize = font.size;\n }\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Internal use of path options\n *\n * @private\n */\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, fillOpacity, strokeOpacity, dashArray, d) {\n this.id = id;\n this['fill-opacity'] = fillOpacity;\n this['stroke-opacity'] = strokeOpacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, fillOpacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, fillOpacity, border.opacity) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this['stroke-dasharray'] = dashArray;\n _this['fill-opacity'] = fillOpacity;\n _this['stroke-opacity'] = border.opacity;\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/**\n * Internal use of circle options\n *\n * @private\n */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, fillOpacity, cx, cy, r, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, fillOpacity, border.opacity, dashArray) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n _this['stroke-dasharray'] = dashArray;\n _this['fill-opacity'] = fillOpacity;\n _this['stroke-opacity'] = border.opacity;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/**\n * Internal use of polygon options\n *\n * @private\n */\nvar PolygonOption = /** @class */ (function (_super) {\n __extends(PolygonOption, _super);\n function PolygonOption(id, points, fill, width, color, fillOpacity, strokeOpacity, dashArray) {\n if (fillOpacity === void 0) { fillOpacity = 1; }\n if (strokeOpacity === void 0) { strokeOpacity = 1; }\n if (dashArray === void 0) { dashArray = ''; }\n var _this = _super.call(this, id, fill, width, color, fillOpacity, strokeOpacity, dashArray) || this;\n _this.points = points;\n return _this;\n }\n return PolygonOption;\n}(PathOption));\nexport { PolygonOption };\n/**\n * Internal use of polyline options\n *\n * @private\n */\nvar PolylineOption = /** @class */ (function (_super) {\n __extends(PolylineOption, _super);\n function PolylineOption(id, points, fill, width, color, fillOpacity, strokeOpacity, dashArray) {\n if (fillOpacity === void 0) { fillOpacity = 1; }\n if (strokeOpacity === void 0) { strokeOpacity = 1; }\n if (dashArray === void 0) { dashArray = ''; }\n return _super.call(this, id, points, fill, width, color, fillOpacity, strokeOpacity, dashArray) || this;\n }\n return PolylineOption;\n}(PolygonOption));\nexport { PolylineOption };\n/**\n * Internal use of line options\n *\n * @private\n */\nvar LineOption = /** @class */ (function (_super) {\n __extends(LineOption, _super);\n function LineOption(id, line, fill, width, color, fillOpacity, strokeOpacity, dashArray) {\n if (fillOpacity === void 0) { fillOpacity = 1; }\n if (strokeOpacity === void 0) { strokeOpacity = 1; }\n if (dashArray === void 0) { dashArray = ''; }\n var _this = _super.call(this, id, fill, width, color, fillOpacity, strokeOpacity, dashArray) || this;\n _this.x1 = line.x1;\n _this.y1 = line.y1;\n _this.x2 = line.x2;\n _this.y2 = line.y2;\n return _this;\n }\n return LineOption;\n}(PathOption));\nexport { LineOption };\n/**\n * Internal use of line\n *\n * @property {number} Line - Specifies the line class\n * @private\n */\nvar Line = /** @class */ (function () {\n function Line(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n return Line;\n}());\nexport { Line };\n/**\n * Internal use of map location type\n *\n * @private\n */\nvar MapLocation = /** @class */ (function () {\n function MapLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return MapLocation;\n}());\nexport { MapLocation };\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use for pattern creation.\n *\n * @property {PatternOptions} PatternOptions - Specifies the pattern option class.\n * @private\n */\nvar PatternOptions = /** @class */ (function () {\n function PatternOptions(id, x, y, width, height, patternUnits, patternContentUnits, patternTransform, href) {\n if (patternUnits === void 0) { patternUnits = 'userSpaceOnUse'; }\n if (patternContentUnits === void 0) { patternContentUnits = 'userSpaceOnUse'; }\n if (patternTransform === void 0) { patternTransform = ''; }\n if (href === void 0) { href = ''; }\n this.id = id;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.patternUnits = patternUnits;\n this.patternContentUnits = patternContentUnits;\n this.patternTransform = patternTransform;\n this.href = href;\n }\n return PatternOptions;\n}());\nexport { PatternOptions };\n/**\n * Internal rendering of text\n *\n * @param {TextOption} option Specifies the text option\n * @param {FontModel} style Specifies the style\n * @param {string} color Specifies the color\n * @param {HTMLElement | Element} parent Specifies the parent element\n * @param {boolean} isMinus Specifies the boolean value\n * @returns {Element} Returns the html object\n * @private\n */\nexport function renderTextElement(option, style, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderOptions = {\n 'id': option.id,\n 'x': option.x,\n 'y': option.y,\n 'fill': color,\n 'font-size': style.size,\n 'font-style': style.fontStyle,\n 'font-family': style.fontFamily,\n 'font-weight': style.fontWeight,\n 'text-anchor': option.anchor,\n 'transform': option.transform,\n 'opacity': style.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' || typeof option.text === 'number' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['font-family'] = style.fontFamily;\n htmlObject.style['font-size'] = style.size;\n htmlObject.style['font-weight'] = style.fontWeight;\n htmlObject.style['font-color'] = style.color;\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], style).height);\n tspanElement = renderer.createTSpan({\n 'x': option.x, 'id': option.id,\n 'y': (option.y) + ((isMinus) ? -(i * height) : (i * height))\n }, isMinus ? option.text[option.text.length - (i + 1)] : option.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n }\n parent.appendChild(htmlObject);\n return htmlObject;\n}\n/**\n * @param {HTMLCollection} element Specifies the html collection\n * @param {string} markerId Specifies the marker id\n * @param {any} data Specifies the data\n * @param {number} index Specifies the index\n * @param {Maps} mapObj Specifies the map object\n * @returns {HTMLCollection} Returns the html collection\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, markerId, data, index, mapObj, templateType) {\n var childElement = createElement('div', {\n id: markerId, className: mapObj.element.id + '_marker_template_element'\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n if (!mapObj.isReact || templateType !== 'function') {\n var templateHtml = childElement.innerHTML;\n var properties = Object.keys(data);\n var regExp = RegExp;\n for (var i = 0; i < properties.length; i++) {\n if (typeof data[properties[i]] === 'object') {\n templateHtml = convertStringToValue(templateHtml, '', data, mapObj);\n // eslint-disable-next-line @typescript-eslint/ban-types\n }\n else if (properties[i].toLowerCase() !== 'latitude' && properties[i].toLowerCase() !== 'longitude') {\n templateHtml = templateHtml.replace(new regExp('{{:' + properties[i] + '}}', 'g'), data[properties[i].toString()]);\n }\n }\n childElement.innerHTML = templateHtml;\n }\n return childElement;\n}\n/**\n *\n * @param {string} value - Specifies the value\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {string} - Returns the string value\n * @private\n */\nexport function formatValue(value, maps) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formatValue;\n var formatFunction;\n if (maps.format && !isNaN(Number(value))) {\n formatFunction = maps.intl.getNumberFormat({ format: maps.format, useGrouping: maps.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue;\n}\n/**\n *\n * @param {string} stringTemplate - Specifies the template\n * @param {string} format - Specifies the format\n * @param {any} data - Specifies the data\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {string} - Returns the string value\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertStringToValue(stringTemplate, format, data, maps) {\n var templateHtml = (stringTemplate === '') ? format : stringTemplate;\n var templateValue = (stringTemplate === '') ? templateHtml.split('${') : templateHtml.split('{{:');\n var regExp = RegExp;\n for (var i = 0; i < templateValue.length; i++) {\n if ((templateValue[i].indexOf('}}') > -1 && templateValue[i].indexOf('.') > -1) ||\n (templateValue[i].indexOf('}') > -1 && templateValue[i].search('.') > -1)) {\n var split = (stringTemplate === '') ? templateValue[i].split('}') : templateValue[i].split('}}');\n for (var j = 0; j < split.length; j++) {\n if (split[j].indexOf('.') > -1) {\n var templateSplitValue = (getValueFromObject(data, split[j])).toString();\n templateHtml = (stringTemplate === '') ?\n templateHtml.split('${' + split[j] + '}').join(formatValue(templateSplitValue, maps)) :\n templateHtml.replace(new regExp('{{:' + split[j] + '}}', 'g'), templateSplitValue);\n }\n }\n }\n }\n return templateHtml;\n}\n/**\n *\n * @param {Element} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {any} data - Specifies the data\n * @param {number} index - Specifies the index\n * @param {Maps} mapObj - Specifies the map object\n * @returns {HTMLElement} - Returns the html element\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElementFromLabel(element, labelId, data, index, mapObj) {\n var labelEle = isNullOrUndefined(element.childElementCount) ? element[0] : element;\n var templateHtml = labelEle.outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var properties = Object.keys(data);\n var regExp = RegExp;\n for (var i = 0; i < properties.length; i++) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n templateHtml = templateHtml.replace(new regExp('{{:' + properties[i] + '}}', 'g'), data[properties[i].toString()]);\n }\n var templateEle = createElement('div', {\n id: labelId,\n innerHTML: templateHtml\n });\n templateEle.style.position = 'absolute';\n return templateEle;\n}\n/**\n *\n * @param {MarkerType} shape - Specifies the shape\n * @param {string} imageUrl - Specifies the image url\n * @param {Point} location - Specifies the location\n * @param {string} markerID - Specifies the marker id\n * @param {any} shapeCustom - Specifies the shape custom\n * @param {Element} markerCollection - Specifies the marker collection\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {Element} - Returns the element\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function drawSymbols(shape, imageUrl, location, markerID, shapeCustom, markerCollection, maps) {\n var markerEle;\n var x;\n var y;\n var size = shapeCustom['size'];\n var borderColor = shapeCustom['borderColor'];\n var borderWidth = parseFloat(shapeCustom['borderWidth']);\n var borderOpacity = parseFloat(shapeCustom['borderOpacity']);\n var fill = shapeCustom['fill'];\n var dashArray = shapeCustom['dashArray'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var border = { color: borderColor, width: borderWidth, opacity: borderOpacity };\n var opacity = shapeCustom['opacity'];\n var padding = 5;\n var rectOptions;\n var pathOptions = new PathOption(markerID, fill, borderWidth, borderColor, opacity, borderOpacity, dashArray, '');\n size.width = typeof (size.width) === 'string' ? parseInt(size.width, 10) : size.width;\n size.height = typeof (size.height) === 'string' ? parseInt(size.height, 10) : size.height;\n if (shape === 'Circle') {\n var radius = (size.width + size.height) / 4;\n var circleOptions = new CircleOption(markerID, fill, border, opacity, location.x, location.y, radius, dashArray);\n markerEle = maps.renderer.drawCircle(circleOptions);\n }\n else if (shape === 'Rectangle') {\n x = location.x - (size.width / 2);\n y = location.y - (size.height / 2);\n rectOptions = new RectOption(markerID, fill, border, opacity, new Rect(x, y, size.width, size.height), null, null, '', dashArray);\n markerEle = maps.renderer.drawRectangle(rectOptions);\n }\n else if (shape === 'Image') {\n x = location.x - (size.width / 2);\n y = location.y - (markerID.indexOf('cluster') > -1 ? (size.height / 2) : size.height);\n merge(pathOptions, { 'href': imageUrl, 'height': size.height, 'width': size.width, x: x, y: y });\n markerEle = maps.renderer.drawImage(pathOptions);\n }\n else {\n markerEle = calculateShapes(maps, shape, pathOptions, size, location, markerCollection);\n }\n return markerEle;\n}\n/**\n *\n * @param {any} data - Specifies the data\n * @param {string} value - Specifies the value\n * @returns {any} - Returns the data\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getValueFromObject(data, value) {\n if (!isNullOrUndefined(data) && !isNullOrUndefined(value)) {\n var splits = value.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n if (splits.length === 1) {\n data = data[splits[0]];\n }\n else {\n for (var i = 0; i < splits.length && !isNullOrUndefined(data); i++) {\n data = data[splits[i]];\n }\n }\n }\n return data;\n}\n/**\n *\n * @param {IMarkerRenderingEventArgs} eventArgs - Specifies the event arguments\n * @param {any} data - Specifies the data\n * @returns {IMarkerRenderingEventArgs} - Returns the arguments\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function markerColorChoose(eventArgs, data) {\n var color = (!isNullOrUndefined(eventArgs.colorValuePath)) ? ((eventArgs.colorValuePath.indexOf('.') > -1) ? (getValueFromObject(data, eventArgs.colorValuePath)).toString() :\n data[eventArgs.colorValuePath]) : data[eventArgs.colorValuePath];\n eventArgs.fill = (!isNullOrUndefined(eventArgs.colorValuePath) &&\n !isNullOrUndefined(color)) ?\n ((eventArgs.colorValuePath.indexOf('.') > -1) ? (getValueFromObject(data, eventArgs.colorValuePath)).toString() :\n data[eventArgs.colorValuePath]) : eventArgs.fill;\n return eventArgs;\n}\n/**\n *\n * @param {IMarkerRenderingEventArgs} eventArgs - Specifies the event arguments\n * @param {any} data - Specifies the data\n * @returns {IMarkerRenderingEventArgs} - Returns the arguments\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function markerShapeChoose(eventArgs, data) {\n if (!isNullOrUndefined(eventArgs.shapeValuePath) && !isNullOrUndefined(data[eventArgs.shapeValuePath])) {\n var shape = ((eventArgs.shapeValuePath.indexOf('.') > -1) ?\n (getValueFromObject(data, eventArgs.shapeValuePath).toString()) :\n data[eventArgs.shapeValuePath]);\n eventArgs.shape = (shape.toString() !== '') ? shape : eventArgs.shape;\n if (data[eventArgs.shapeValuePath] === 'Image') {\n eventArgs.imageUrl = (!isNullOrUndefined(eventArgs.imageUrlValuePath)) ?\n ((eventArgs.imageUrlValuePath.indexOf('.') > -1) ? getValueFromObject(data, eventArgs.imageUrlValuePath).toString() : (!isNullOrUndefined(data[eventArgs.imageUrlValuePath]) ?\n data[eventArgs.imageUrlValuePath] : eventArgs.imageUrl)) : eventArgs.imageUrl;\n }\n }\n else {\n var shapes = (!isNullOrUndefined(eventArgs.shapeValuePath)) ? ((eventArgs.shapeValuePath.indexOf('.') > -1) ? getValueFromObject(data, eventArgs.shapeValuePath).toString() : eventArgs.shape) : eventArgs.shape;\n eventArgs.shape = (shapes.toString() !== '') ? shapes : eventArgs.shape;\n var shapeImage = (!isNullOrUndefined(eventArgs.imageUrlValuePath)) ?\n ((eventArgs.imageUrlValuePath.indexOf('.') > -1) ? getValueFromObject(data, eventArgs.imageUrlValuePath).toString() : (!isNullOrUndefined(data[eventArgs.imageUrlValuePath]) ?\n data[eventArgs.imageUrlValuePath] : eventArgs.imageUrl)) : eventArgs.imageUrl;\n eventArgs.imageUrl = shapeImage;\n }\n return eventArgs;\n}\n/**\n *\n * @param {LayerSettings} currentLayer - Specifies the current layer\n * @param {HTMLElement | Element} markerTemplate - Specifies the marker template\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {number} layerIndex - Specifies the layer index\n * @param {Element} markerCollection - Specifies the marker collection\n * @param {Element} layerElement - Specifies the layer element\n * @param {boolean} check - Specifies the boolean value\n * @param {boolean} zoomCheck - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function clusterTemplate(currentLayer, markerTemplate, maps, layerIndex, markerCollection, layerElement, check, zoomCheck) {\n var bounds1;\n var bounds2;\n var colloideBounds = [];\n var clusterColloideBounds = [];\n var tempX = 0;\n var tempY = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var style = currentLayer.markerClusterSettings.labelStyle;\n var options;\n var textElement;\n var tempElement1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeCustom;\n var tempElement;\n var postionY = (15 / 4);\n var m = 0;\n var indexCollection = [];\n var clusters = currentLayer.markerClusterSettings;\n var clusterGroup = maps.renderer.createGroup({ id: maps.element.id + '_LayerIndex_' + layerIndex + '_markerCluster' });\n var eventArg = {\n cancel: false, name: markerClusterRendering, fill: clusters.fill, height: clusters.height,\n width: clusters.width, imageUrl: clusters.imageUrl, shape: clusters.shape,\n data: data, maps: maps, cluster: clusters, border: clusters.border\n };\n var containerRect = maps.element.getBoundingClientRect();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var translatePoint = (maps.isTileMap) ? new Object() : getTranslate(maps, currentLayer, false);\n var factor;\n if (!maps.isTileMap) {\n factor = maps.mapLayerPanel.calculateFactor(currentLayer);\n }\n var isClusteringCompleted = false;\n maps.trigger('markerClusterRendering', eventArg, function (clusterargs) {\n Array.prototype.forEach.call(markerTemplate.childNodes, function (markerElement, o) {\n indexCollection = [];\n if (markerElement['style']['visibility'] !== 'hidden') {\n tempElement = markerElement;\n bounds1 = tempElement.getBoundingClientRect();\n indexCollection.push(o);\n if (!isNullOrUndefined(bounds1)) {\n Array.prototype.forEach.call(markerTemplate.childNodes, function (otherMarkerElement, p) {\n if (p >= o + 1 && otherMarkerElement['style']['visibility'] !== 'hidden') {\n tempElement = otherMarkerElement;\n bounds2 = tempElement.getBoundingClientRect();\n if (!isNullOrUndefined(bounds2)) {\n if (!(bounds1.left > bounds2.right || bounds1.right < bounds2.left\n || bounds1.top > bounds2.bottom || bounds1.bottom < bounds2.top)) {\n colloideBounds.push(bounds2);\n otherMarkerElement['style']['visibility'] = 'hidden';\n indexCollection.push(p);\n }\n }\n }\n });\n tempX = bounds1.left + bounds1.width / 2;\n tempY = bounds1.top + bounds1.height;\n if (colloideBounds.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n indexCollection = indexCollection.filter(function (item, index, value) { return value.indexOf(item) === index; });\n tempX = tempX - containerRect['left'];\n tempY = (tempY - ((maps.availableSize.height <= containerRect['height']) ?\n containerRect['top'] : (containerRect['bottom'] - containerRect['top'])));\n var dataIndex = parseInt(markerElement['id'].split('_dataIndex_')[1].split('_')[0], 10);\n var markerIndex = parseInt(markerElement['id'].split('_MarkerIndex_')[1].split('_')[0], 10);\n var markerSetting = currentLayer.markerSettings[markerIndex];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markerData = markerSetting.dataSource[dataIndex];\n var location_1;\n var longitude = (!isNullOrUndefined(markerSetting.longitudeValuePath)) ?\n Number(getValueFromObject(markerData, markerSetting.longitudeValuePath)) :\n !isNullOrUndefined(markerData['longitude']) ? parseFloat(markerData['longitude']) :\n !isNullOrUndefined(markerData['Latitude']) ? parseFloat(markerData['Latitude']) : 0;\n var latitude = (!isNullOrUndefined(markerSetting.latitudeValuePath)) ?\n Number(getValueFromObject(markerData, markerSetting.latitudeValuePath)) :\n !isNullOrUndefined(markerData['latitude']) ? parseFloat(markerData['latitude']) :\n !isNullOrUndefined(markerData['Latitude']) ? parseFloat(markerData['Latitude']) : 0;\n if (!maps.isTileMap) {\n location_1 = convertGeoToPoint(latitude, longitude, factor, currentLayer, maps);\n }\n else if (maps.isTileMap && !maps.zoomSettings.enable) {\n location_1 = convertTileLatLongToPoint(new Point(longitude, latitude), maps.tileZoomLevel, maps.tileTranslatePoint, true);\n }\n markerElement['style']['visibility'] = 'hidden';\n if (eventArg.cancel) {\n shapeCustom = {\n size: new Size(clusters.width, clusters.height),\n fill: clusters.fill, borderColor: clusters.border.color,\n borderWidth: clusters.border.width, opacity: clusters.opacity,\n dashArray: clusters.dashArray, imageUrl: clusters.imageUrl, shape: clusters.shape\n };\n shapeCustom['borderOpacity'] = isNullOrUndefined(clusters.border.opacity) ? clusters.opacity : clusters.border.opacity;\n }\n else {\n shapeCustom = {\n size: new Size(eventArg.width, eventArg.height),\n fill: eventArg.fill, borderColor: eventArg.border.color,\n borderWidth: eventArg.border.width, opacity: clusters.opacity,\n dashArray: clusters.dashArray, imageUrl: eventArg.imageUrl,\n shape: eventArg.shape\n };\n shapeCustom['borderOpacity'] = isNullOrUndefined(eventArg.border.opacity) ? clusters.opacity : eventArg.border.opacity;\n }\n tempX = (maps.isTileMap) ? tempX : (markerTemplate.id.indexOf('_Markers_Group') > -1) ? tempX : tempX + postionY - (eventArg.width / 2);\n tempY = (maps.isTileMap) ? tempY : (markerTemplate.id.indexOf('_Markers_Group') > -1) ? tempY : tempY - (eventArg.height / 2);\n if (maps.isTileMap && !maps.zoomSettings.enable) {\n tempX = location_1.x;\n tempY = location_1.y;\n }\n var clusterID = maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex + '_dataIndex_' + dataIndex + '_cluster_' + (m);\n var labelID = maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex + '_dataIndex_' + dataIndex + '_cluster_' + (m) + '_datalabel_' + m;\n m++;\n var ele = drawSymbols(shapeCustom['shape'], shapeCustom['imageUrl'], { x: 0, y: 0 }, clusterID, shapeCustom, markerCollection, maps);\n ele.setAttribute('transform', 'translate( ' + tempX + ' ' + tempY + ' )');\n if (eventArg.shape === 'Balloon') {\n ele.children[0].textContent = indexCollection.toString();\n }\n else {\n ele.textContent = indexCollection.toString();\n }\n options = new TextOption(labelID, (0), postionY, 'middle', (colloideBounds.length + 1).toString(), '', '');\n textElement = renderTextElement(options, style, style.color, markerCollection);\n textElement.setAttribute('transform', 'translate( ' + tempX + ' ' + tempY + ' )');\n clusterGroup.appendChild(textElement);\n clusterGroup.appendChild(ele);\n }\n }\n colloideBounds = [];\n }\n isClusteringCompleted = true;\n });\n layerElement.appendChild(clusterGroup);\n maps.svgObject.appendChild(layerElement);\n maps.element.appendChild(maps.svgObject);\n if (clusters.allowDeepClustering) {\n Array.prototype.forEach.call(clusterGroup.childNodes, function (clusterElement, o) {\n if (clusterElement['style']['visibility'] !== 'hidden') {\n tempElement = clusterElement;\n bounds1 = tempElement.getBoundingClientRect();\n if (!isNullOrUndefined(bounds1) && !(tempElement.id.indexOf('_datalabel_') > -1)) {\n for (var p = o + 1; p < clusterGroup.childElementCount; p++) {\n if (clusterGroup.childNodes[p]['style']['visibility'] !== 'hidden') {\n tempElement1 = clusterGroup.childNodes[p];\n bounds2 = tempElement1.getBoundingClientRect();\n if (!isNullOrUndefined(bounds2) && !(tempElement1.id.indexOf('_datalabel_') > -1)) {\n if (!(bounds1.left > bounds2.right || bounds1.right < bounds2.left\n || bounds1.top > bounds2.bottom || bounds1.bottom < bounds2.top)) {\n clusterColloideBounds.push(tempElement1);\n clusterColloideBounds.push(clusterGroup.childNodes[p - 1]);\n clusterGroup.childNodes[p]['style']['visibility'] = 'hidden';\n clusterGroup.childNodes[p - 1]['style']['visibility'] = 'hidden';\n indexCollection.push(p);\n }\n }\n }\n }\n if (clusterColloideBounds.length > 0) {\n tempElement = clusterElement;\n for (var i = 0; i < clusterColloideBounds.length; i++) {\n if (tempElement.tagName === 'g') {\n tempElement.childNodes[0].textContent = tempElement.childNodes[0].textContent + ',' +\n clusterColloideBounds[i].textContent;\n }\n else {\n tempElement.textContent = tempElement.textContent + ',' + clusterColloideBounds[i].textContent;\n }\n clusterGroup.childNodes[o - 1].textContent = ((+(clusterGroup.childNodes[o - 1].textContent)) + (+(clusterColloideBounds[i + 1].textContent))).toString();\n i++;\n }\n }\n clusterColloideBounds = [];\n }\n }\n });\n }\n while (0 < clusterGroup.childNodes.length) {\n markerCollection.insertBefore(clusterGroup.childNodes[0], markerCollection.firstChild);\n }\n if (!check) {\n getElementByID(maps.element.id + '_Secondary_Element').appendChild(markerCollection);\n }\n var element = document.getElementById(maps.element.id + '_LayerIndex_' + layerIndex + '_Polygon_Group');\n var polygonElement = document.getElementById(maps.element.id + '_LayerIndex_' + layerIndex + '_Polygons_Group');\n if (isNullOrUndefined(element) && !maps.isTileMap) {\n layerElement.insertBefore(markerCollection, layerElement.firstChild);\n }\n else if (!maps.isTileMap) {\n layerElement.appendChild(markerCollection);\n }\n else {\n if (!isNullOrUndefined(polygonElement)) {\n polygonElement.insertAdjacentElement('afterend', markerCollection);\n }\n else if (!isNullOrUndefined(element)) {\n element.insertAdjacentElement('afterend', markerCollection);\n }\n else {\n layerElement.insertBefore(markerCollection, layerElement.firstChild);\n }\n }\n var markerCluster = document.getElementById(maps.element.id + '_LayerIndex_' + layerIndex + '_markerCluster');\n if (!isNullOrUndefined(markerCluster)) {\n markerCluster.remove();\n }\n if (zoomCheck) {\n var layerGroupElement = document.getElementById(maps.element.id + '_Layer_Collections');\n var element_1 = document.getElementById(maps.element.id + '_LayerIndex_' + (layerIndex + 1));\n if (!isNullOrUndefined(layerGroupElement) && !isNullOrUndefined(element_1)) {\n layerGroupElement.insertBefore(layerElement, element_1);\n }\n else if (!isNullOrUndefined(layerGroupElement)) {\n layerGroupElement.appendChild(layerElement);\n }\n }\n });\n return isClusteringCompleted;\n}\n/**\n *\n * @param {MarkerClusterData[]} sameMarkerData - Specifies the marker data\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {Element | HTMLElement} markerElement - Specifies the marker element\n * @returns {void}\n * @private\n */\nexport function mergeSeparateCluster(sameMarkerData, maps, markerElement) {\n var layerIndex = sameMarkerData[0].layerIndex;\n var clusterIndex = sameMarkerData[0].targetClusterIndex;\n var markerIndex = sameMarkerData[0].markerIndex;\n var dataIndex = sameMarkerData[0].dataIndex;\n var markerId = maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex;\n var marker = maps.layers[layerIndex].markerSettings[markerIndex];\n var clusterId = markerId + '_dataIndex_' + dataIndex + '_cluster_' + clusterIndex;\n var clusterEle = maps.layers[layerIndex].markerClusterSettings.shape === 'Balloon' ? getElement(clusterId + '_Group') : getElement(clusterId);\n var clusterEleLabel = getElement(clusterId + '_datalabel_' + clusterIndex);\n clusterEle.setAttribute('visibility', 'visible');\n clusterEleLabel.setAttribute('visibility', 'visible');\n var markerEle;\n var markerDataLength = sameMarkerData[0].data.length;\n for (var i = 0; i < markerDataLength; i++) {\n markerEle = marker.shape === 'Balloon' && isNullOrUndefined(marker.template) ? getElement(markerId + '_dataIndex_' + sameMarkerData[0].data[i]['index'] + '_Group') : getElement(markerId + '_dataIndex_' + sameMarkerData[0].data[i]['index']);\n markerEle['style']['visibility'] = 'hidden';\n }\n removeElement(maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex + '_markerClusterConnectorLine');\n}\n/**\n *\n * @param {MarkerClusterData[]} sameMarkerData - Specifies the marker data\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {Element | HTMLElement} markerElement - Specifies the marker element\n * @param {boolean} isDom - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function clusterSeparate(sameMarkerData, maps, markerElement, isDom) {\n var layerIndex = sameMarkerData[0].layerIndex;\n var markerIndex = sameMarkerData[0].markerIndex;\n var clusterIndex = sameMarkerData[0].targetClusterIndex;\n var dataIndex = sameMarkerData[0].dataIndex;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var getElementFunction = isDom ? getElement : markerElement.querySelector.bind(markerElement);\n var getQueryConnect = isDom ? '' : '#';\n var markerId = maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex;\n var marker = maps.layers[layerIndex].markerSettings[markerIndex];\n var clusterId = markerId + '_dataIndex_' + dataIndex + '_cluster_' + clusterIndex;\n var clusterEle = maps.layers[layerIndex].markerClusterSettings.shape === 'Balloon' ? getElementFunction(getQueryConnect + '' + clusterId + '_Group') : getElementFunction(getQueryConnect + '' + clusterId);\n var clusterEleLabel = getElementFunction(getQueryConnect + '' + clusterId + '_datalabel_' + clusterIndex);\n clusterEle.setAttribute('visibility', 'hidden');\n clusterEleLabel.setAttribute('visibility', 'hidden');\n var markerEle = marker.shape === 'Balloon' && isNullOrUndefined(marker.template) ? getElementFunction(getQueryConnect + '' + markerId + '_dataIndex_' + dataIndex + '_Group') : getElementFunction(getQueryConnect + '' + markerId + '_dataIndex_' + dataIndex);\n var height = markerEle.parentElement.id.indexOf('Template_Group') > -1 ? markerEle.getBoundingClientRect().height : marker.height;\n var width = markerEle.parentElement.id.indexOf('Template_Group') > -1 ? markerEle.getBoundingClientRect().width : marker.width;\n var centerX = +clusterEle.getAttribute('transform').split('translate(')[1].trim().split(' ')[0];\n var centerY = +clusterEle.getAttribute('transform').split('translate(')[1].trim().split(' ')[1].split(')')[0].trim();\n var radius = width + 5;\n var area = 2 * 3.14 * radius;\n var totalMarker = 0;\n var numberOfMarker = Math.round(area / width);\n totalMarker += numberOfMarker;\n var markerDataLength = sameMarkerData[0].data.length;\n var percent = Math.round((height / area) * 100);\n percent = markerDataLength < numberOfMarker ? 100 / markerDataLength : percent;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var angle = (percent / 100) * 360;\n var newAngle = markerDataLength < numberOfMarker ? 45 : 0;\n var count = 1;\n var start = 'M ' + centerX + ' ' + centerY + ' ';\n var path = '';\n for (var i = 0; i < markerDataLength; i++) {\n if (totalMarker === i || Math.round(newAngle) >= 360) {\n count++;\n radius = (width + 5) * count;\n newAngle = 0;\n area = 2 * 3.14 * radius;\n numberOfMarker = Math.round(area / height);\n percent = Math.round((height / area) * 100);\n while (percent * numberOfMarker < 100) {\n numberOfMarker++;\n }\n angle = ((percent / 100) * 360);\n totalMarker += numberOfMarker;\n }\n var x1 = centerX + radius * Math.sin((Math.PI * 2 * newAngle) / 360);\n var y1 = centerY + radius * Math.cos((Math.PI * 2 * newAngle) / 360);\n path += start + 'L ' + (x1) + ' ' + y1 + ' ';\n markerEle = marker.shape === 'Balloon' && isNullOrUndefined(marker.template) ? getElementFunction(getQueryConnect + '' + markerId + '_dataIndex_' + sameMarkerData[0].data[i]['index'] + '_Group') : getElementFunction(getQueryConnect + '' + markerId + '_dataIndex_' + sameMarkerData[0].data[i]['index']);\n if (markerEle.parentElement.id.indexOf('Template_Group') > -1) {\n markerEle['style']['transform'] = '';\n markerEle['style']['left'] = maps.isTileMap ? x1 - (width / 2) + 'px' : (x1 - (width / 2) - 10) + 'px';\n markerEle['style']['top'] = maps.isTileMap ? y1 - (height / 2) + 'px' : (y1 - (height / 2) - 10) + 'px';\n markerEle.setAttribute('transform', 'translate( ' + x1 + ' ' + y1 + ')');\n }\n else {\n markerEle.setAttribute('transform', 'translate( ' + x1 + ' ' + y1 + ')');\n }\n markerEle['style']['visibility'] = 'visible';\n newAngle += angle;\n }\n var connectorLine = maps.layers[layerIndex].markerClusterSettings.connectorLineSettings;\n var options = {\n d: path, id: maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex + '_dataIndex_' + dataIndex + '_markerClusterConnectorLine', stroke: connectorLine.color,\n 'fill-opacity': connectorLine.opacity, 'stroke-opacity': connectorLine.opacity, 'stroke-width': connectorLine.width\n };\n markerElement = isDom ? getElementFunction(maps.element.id + '_Markers_Group') : markerElement;\n var groupEle = maps.renderer.createGroup({ id: maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex + '_markerClusterConnectorLine' });\n groupEle.appendChild(maps.renderer.drawPath(options));\n if (marker.shape === 'Balloon') {\n markerElement.insertBefore(groupEle, markerElement.querySelector('#' + markerId + '_dataIndex_0_Group'));\n }\n else {\n markerElement.insertBefore(groupEle, markerElement.querySelector('#' + markerId + '_dataIndex_0'));\n }\n}\n/**\n *\n * @param {IMarkerRenderingEventArgs} eventArgs - Specifies the arguments\n * @param {MarkerSettings} markerSettings - Specifies the marker settings\n * @param {any[]} markerData - Specifies the marker data\n * @param {number} dataIndex - Specifies the data index\n * @param {Point} location - Specifies the location\n * @param {Point} transPoint - Specifies the translate point\n * @param {string} markerID - Specifies the marker id\n * @param {Point} offset - Specifies the offset value\n * @param {number} scale - Specifies the scale value\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {Element} markerCollection - Specifies the marker collection\n * @returns {Element} - Returns the element\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function marker(eventArgs, markerSettings, markerData, dataIndex, location, transPoint, markerID, offset, scale, maps, markerCollection) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeCustom = {\n size: new Size(eventArgs.width, eventArgs.height),\n fill: eventArgs.fill, borderColor: eventArgs.border.color,\n borderWidth: eventArgs.border.width, opacity: markerSettings.opacity,\n dashArray: markerSettings.dashArray, borderOpacity: isNullOrUndefined(eventArgs.border.opacity) ? markerSettings.opacity :\n eventArgs.border.opacity\n };\n removeElement(markerID);\n var ele = drawSymbols(eventArgs.shape, eventArgs.imageUrl, { x: 0, y: 0 }, markerID, shapeCustom, markerCollection, maps);\n var x = (maps.isTileMap ? location.x : (location.x + transPoint.x) * scale) + offset.x;\n var y = (maps.isTileMap ? location.y : (location.y + transPoint.y) * scale) + offset.y;\n ele.setAttribute('transform', 'translate( ' + x + ' ' + y + ' )');\n maintainSelection(maps.selectedMarkerElementId, maps.markerSelectionClass, ele, 'MarkerselectionMapStyle');\n markerCollection.appendChild(ele);\n var element = (markerData.length - 1) === dataIndex ? 'marker' : null;\n var markerPoint = new Point(x, y);\n if (markerSettings.animationDuration > 0 || animationMode === 'Enable') {\n elementAnimate(ele, markerSettings.animationDelay, markerSettings.animationDuration, markerPoint, maps, element);\n }\n return markerCollection;\n}\n/**\n *\n * @param {IMarkerRenderingEventArgs} eventArgs - Specifies the arguments\n * @param {any} templateFn - Specifies the template function\n * @param {string} markerID - Specifies the marker id\n * @param {any} data - Specifies the data\n * @param {number} markerIndex - Specifies the marker index\n * @param {HTMLElement} markerTemplate - Specifies the marker template element\n * @param {Point} location - Specifies the location\n * @param {Point} transPoint - Specifies the translate point.\n * @param {number} scale - Specifies the scale value\n * @param {Point} offset - Specifies the offset value\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {HTMLElement} - Returns the html element\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function markerTemplate(eventArgs, templateFn, markerID, data, markerIndex, markerTemplate, location, transPoint, scale, offset, maps) {\n templateFn = getTemplateFunction(eventArgs.template, maps);\n if (templateFn && (templateFn(data, maps, eventArgs.template, maps.element.id + '_MarkerTemplate' + markerIndex, false).length)) {\n var templateElement = templateFn(data, maps, eventArgs.template, maps.element.id + '_MarkerTemplate' + markerIndex, false);\n var markerElement = convertElement(templateElement, markerID, data, markerIndex, maps, typeof eventArgs.template);\n for (var i = 0; i < markerElement.children.length; i++) {\n markerElement.children[i].style.pointerEvents = 'auto';\n }\n markerElement.style.left = (maps.isTileMap ? location.x : (location.x + transPoint.x) * scale) + offset.x - maps.mapAreaRect.x + 'px';\n markerElement.style.top = (maps.isTileMap ? location.y : (location.y + transPoint.y) * scale) + offset.y - maps.mapAreaRect.y + 'px';\n markerTemplate.appendChild(markerElement);\n if (maps.layers[maps.baseLayerIndex].layerType === 'GoogleStaticMap') {\n var staticMapOffset = getElementByID(maps.element.id + '_StaticGoogleMap').getBoundingClientRect();\n var markerElementOffset = markerElement.getBoundingClientRect();\n var staticMapOffsetWidth = 640;\n if ((staticMapOffset['x'] > markerElementOffset['x'] || staticMapOffset['x'] + staticMapOffsetWidth < markerElementOffset['x'] + markerElementOffset['width'])\n && (staticMapOffset['y'] > markerElementOffset['y'] || staticMapOffset['y'] + staticMapOffset['height'] < markerElementOffset['y'] + markerElementOffset['height'])) {\n markerElement.style.display = 'none';\n }\n }\n }\n return markerTemplate;\n}\n/**\n * To maintain selection during page resize\n *\n * @param {string[]} elementId - Specifies the element id\n * @param {Element} elementClass - Specifies the element class\n * @param {Element} element - Specifies the element\n * @param {string} className - Specifies the class name\n * @returns {void}\n * @private\n */\nexport function maintainSelection(elementId, elementClass, element, className) {\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (index === 0 || element.tagName === 'g') {\n if (!isNullOrUndefined(elementClass) && !isNullOrUndefined(elementClass.id)) {\n document.body.appendChild(elementClass);\n }\n if (element.id.indexOf('_MarkerIndex_') > -1 && element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n }\n }\n element.setAttribute('class', className);\n }\n }\n }\n}\n/**\n * To maintain selection style class\n *\n * @param {string} id - Specifies the id\n * @param {string} idClass - Specifies the class id\n * @param {string} fill - Specifies the fill\n * @param {string} opacity - Specifies the opactiy\n * @param {string} borderColor - Specifies the border color\n * @param {string} borderWidth - Specifies the border width\n * @param {Maps} maps - Specifies the maps\n * @returns {void}\n * @private\n */\nexport function maintainStyleClass(id, idClass, fill, opacity, borderColor, borderWidth, maps) {\n if (!getElement(id)) {\n var styleClass = createElement('style', {\n id: id\n });\n styleClass.innerText = '.' + idClass + '{fill:'\n + fill + ';' + 'opacity:' + opacity + ';' +\n 'stroke-width:' + borderWidth + ';' +\n 'stroke:' + borderColor + ';' + '}';\n maps.shapeSelectionClass = styleClass;\n document.body.appendChild(styleClass);\n }\n}\n/**\n * Internal use of append shape element\n *\n * @param {Element} shape - Specifies the shape\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function appendShape(shape, element) {\n if (element) {\n element.appendChild(shape);\n }\n return shape;\n}\n/**\n * Internal rendering of Circle\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {CircleOption} options - Specifies the circle options\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawCircle(maps, options, element) {\n return appendShape(maps.renderer.drawCircle(options), element);\n}\n/**\n * Internal rendering of Rectangle\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {RectOption} options - Specifies the rect options\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawRectangle(maps, options, element) {\n return appendShape(maps.renderer.drawRectangle(options), element);\n}\n/**\n * Internal rendering of Path\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the polygon options\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawPath(maps, options, element) {\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of Polygon\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PolygonOption} options - Specifies the polygon options\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawPolygon(maps, options, element) {\n return appendShape(maps.renderer.drawPolygon(options), element);\n}\n/**\n * Internal rendering of Polyline\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PolylineOption} options - Specifies the poly line options\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawPolyline(maps, options, element) {\n return appendShape(maps.renderer.drawPolyline(options), element);\n}\n/**\n * Internal rendering of Line\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {LineOption} options - Specifies the line options\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawLine(maps, options, element) {\n return appendShape(maps.renderer.drawLine(options), element);\n}\n/**\n * Calculate marker shapes\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {MarkerType} shape - Specifies the marker type\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} markerEle - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function calculateShapes(maps, shape, options, size, location, markerEle) {\n var tempGroup;\n switch (shape) {\n case 'Balloon':\n tempGroup = drawBalloon(maps, options, size, location, 'Marker', markerEle);\n break;\n case 'Cross':\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' + (location.y + size.height\n / 2) + ' M ' + (location.x - size.width / 2) + ' ' + location.y + ' L ' + (location.x + size.width / 2) + ' ' + location.y;\n break;\n case 'Diamond':\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + (location.x + size.width / 2) + ' '\n + location.y + ' L ' + location.x + ' ' + (location.y + size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + location.y + ' Z';\n break;\n case 'Star':\n options.d = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n break;\n case 'Triangle':\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + (location.x + size.width / 2) + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x - size.width / 2) + ' ' + (location.y + size.height / 2) + ' Z';\n break;\n case 'HorizontalLine':\n options.d = ' M ' + (location.x - size.width / 2) + ' ' + location.y + ' L ' + (location.x + size.width / 2) + ' '\n + location.y;\n break;\n case 'VerticalLine':\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2);\n break;\n case 'InvertedTriangle':\n options.d = 'M ' + (location.x - size.width / 2) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x + size.width / 2) + ' ' +\n (location.y - size.height / 2) + ' L ' + (location.x) + ' ' + (location.y + size.height / 2) + ' Z';\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i < 5; i++) {\n xValue = (size.width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (size.height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n options.d += (i === 0 ? 'M ' : 'L ') + (location.x + xValue) + ' ' + (location.y + yValue);\n }\n options.d += ' Z';\n break;\n }\n if (shape === 'Cross' || shape === 'HorizontalLine' || shape === 'VerticalLine') {\n options['stroke'] = (options['stroke'] === 'transparent') ? options['fill'] : options['stroke'];\n }\n return shape === 'Balloon' ? tempGroup : maps.renderer.drawPath(options);\n}\n/**\n * Internal rendering of Diamond\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawDiamond(maps, options, size, location, element) {\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + (location.x + size.width / 2) + ' ' + location.y +\n ' L ' + location.x + ' ' + (location.y + size.height / 2) + ' L ' + (location.x - size.width / 2) + ' ' + location.y + ' Z';\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of Triangle\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawTriangle(maps, options, size, location, element) {\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + (location.x + size.width / 2) + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x - size.width / 2) + ' ' + (location.y + size.height / 2) + ' Z';\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of Cross\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawCross(maps, options, size, location, element) {\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' + (location.y + size.height / 2) +\n ' M ' + (location.x - size.width / 2) + ' ' + location.y + ' L ' + (location.x + size.width / 2) + ' ' + location.y;\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of HorizontalLine\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawHorizontalLine(maps, options, size, location, element) {\n options.d = ' M ' + (location.x - size.width / 2) + ' ' + location.y + ' L ' + (location.x + size.width / 2) + ' ' + location.y;\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of VerticalLine\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawVerticalLine(maps, options, size, location, element) {\n options.d = 'M ' + location.x + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' + (location.y + size.height / 2);\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of Star\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawStar(maps, options, size, location, element) {\n options.d = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6) + ' L '\n + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' + (location.y + size.height / 2)\n + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n return appendShape(maps.renderer.drawPath(options), element);\n}\n/**\n * Internal rendering of Balloon\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PathOption} options - Specifies the path options\n * @param {Size} size - Specifies the size\n * @param {MapLocation} location - Specifies the map location\n * @param {string} type - Specifies the type.\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawBalloon(maps, options, size, location, type, element) {\n var width = size.width;\n var height = size.height;\n var pathElement;\n location.x -= width / 2;\n location.y -= ((options.id.indexOf('cluster') > -1) ? (height / 2) : options.id.indexOf('Legend') > -1 ? height / 1.25 : height);\n options.d = 'M15,0C8.8,0,3.8,5,3.8,11.2C3.8,17.5,9.4,24.4,15,30c5.6-5.6,11.2-12.5,11.2-18.8C26.2,5,21.2,0,15,0z M15,16' +\n 'c-2.8,0-5-2.2-5-5s2.2-5,5-5s5,2.2,5,5S17.8,16,15,16z';\n var balloon = maps.renderer.drawPath(options);\n var x = size.width / 30;\n var y = size.height / 30;\n balloon.setAttribute('transform', 'translate(' + location.x + ', ' + location.y + ') scale(' + x + ', ' + y + ')');\n if (type === 'Marker') {\n var g = maps.renderer.createGroup({ id: options.id + '_Group' });\n appendShape(balloon, g);\n pathElement = appendShape(g, element);\n }\n else {\n pathElement = balloon;\n }\n return pathElement;\n}\n/**\n * Internal rendering of Pattern\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {PatternOptions} options - Specifies the pattern options\n * @param {Element[]} elements - Specifies the elements\n * @param {Element} element - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawPattern(maps, options, elements, element) {\n var pattern = maps.renderer.createPattern(options, 'pattern');\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n appendShape(ele, pattern);\n }\n return appendShape(pattern, element);\n}\n/**\n * Method to get specific field and vaues from data.\n *\n * @param {any[]} dataSource - Specifies the data source\n * @param {string[]} fields - Specifies the fields\n * @returns {any[]} - Returns the object\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getFieldData(dataSource, fields) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var temp = dataSource_1[_i];\n data = {};\n for (var _a = 0, fields_1 = fields; _a < fields_1.length; _a++) {\n var field = fields_1[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (temp[field]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data[field] = temp[field];\n }\n }\n newData.push(data);\n }\n return newData;\n}\n/**\n * To find the index of dataSource from shape properties\n *\n * @param {any[]} dataSource - Specifies the data source\n * @param {any} properties - Specifies the properties\n * @param {string} dataPath - Specifies the data path\n * @param {string | string[]} propertyPath - Specifies the property path\n * @param {LayerSettingsModel} layer - Specifies the layer settings\n * @returns {number} - Returns the number\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function checkShapeDataFields(dataSource, properties, dataPath, propertyPath, layer) {\n if (!(isNullOrUndefined(properties))) {\n for (var i = 0; i < dataSource.length; i++) {\n var shapeDataPath = ((dataPath.indexOf('.') > -1) ? getValueFromObject(dataSource[i], dataPath) :\n dataSource[i][dataPath]);\n var shapePath = checkPropertyPath(shapeDataPath, propertyPath, properties);\n var shapeDataPathValue = !isNullOrUndefined(shapeDataPath) && isNaN(properties[shapePath])\n ? (typeof shapeDataPath === 'string' ? shapeDataPath.toLowerCase() : shapeDataPath) : shapeDataPath;\n var propertiesShapePathValue = !isNullOrUndefined(properties[shapePath]) && isNaN(properties[shapePath])\n ? properties[shapePath].toLowerCase() : properties[shapePath];\n if (shapeDataPathValue === propertiesShapePathValue) {\n return i;\n }\n }\n }\n return null;\n}\n/**\n *\n * @param {string} shapeData - Specifies the shape data\n * @param {string | string[]} shapePropertyPath - Specifies the shape property path\n * @param {any} shape - Specifies the shape\n * @returns {string} - Returns the string value\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function checkPropertyPath(shapeData, shapePropertyPath, shape) {\n if (!isNullOrUndefined(shapeData) && !isNullOrUndefined(shape)) {\n if (!isNullOrUndefined(shapePropertyPath)) {\n var properties = (Object.prototype.toString.call(shapePropertyPath) === '[object Array]' ?\n shapePropertyPath : [shapePropertyPath]);\n for (var i = 0; i < properties.length; i++) {\n var shapeDataValue = !isNullOrUndefined(shapeData) && typeof shapeData === 'string' ?\n shapeData.toLowerCase() : shapeData;\n var shapePropertiesValue = !isNullOrUndefined(shape[properties[i]])\n && isNaN(shape[properties[i]])\n ? shape[properties[i]].toLowerCase() : shape[properties[i]];\n if (shapeDataValue === shapePropertiesValue) {\n return properties[i];\n }\n }\n }\n }\n return null;\n}\n/**\n *\n * @param {MapLocation[]} points - Specifies the location\n * @param {number} start - Specifies the start value\n * @param {number} end - Specifies the end value\n * @returns {MapLocation[]} - Returns the location\n * @private\n */\nexport function filter(points, start, end) {\n var pointObject = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (start <= point.y && end >= point.y) {\n pointObject.push(point);\n }\n }\n return pointObject;\n}\n/**\n *\n * @param {number} min - Specifies the min value\n * @param {number} max - Specifies the max value\n * @param {number} value - Specifies the value\n * @param {number} minValue - Specifies the minValue\n * @param {number} maxValue -Specifies the maxValue\n * @returns {number} - Returns the number\n * @private\n */\nexport function getRatioOfBubble(min, max, value, minValue, maxValue) {\n var percent = (100 / (maxValue - minValue)) * (value - minValue);\n var bubbleRadius = (((max - min) / 100) * percent) + min;\n if (maxValue === minValue) {\n bubbleRadius = (((max - min) / 100)) + min;\n }\n return bubbleRadius;\n}\n/**\n * To find the midpoint of the polygon from points\n *\n * @param {MapLocation[]} points - Specifies the points\n * @param {string} type - Specifies the type\n * @param {string} geometryType - Specified the type of the geometry\n * @returns {any} - Specifies the object\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findMidPointOfPolygon(points, type, geometryType) {\n if (!points.length) {\n return null;\n }\n var min = 0;\n var max = points.length;\n var startX;\n var startY;\n var startX1;\n var startY1;\n var sum = 0;\n var xSum = 0;\n var ySum = 0;\n for (var i = min; i <= max - 1; i++) {\n startX = points[i].x;\n startY = type === 'Mercator' || geometryType === 'Normal' ? points[i].y : -(points[i].y);\n if (i === max - 1) {\n startX1 = points[0].x;\n startY1 = type === 'Mercator' || geometryType === 'Normal' ? points[0].y : -(points[0].y);\n }\n else {\n startX1 = points[i + 1].x;\n startY1 = type === 'Mercator' || geometryType === 'Normal' ? points[i + 1].y : -(points[i + 1].y);\n }\n sum = sum + Math.abs(((startX * startY1)) - (startX1 * startY));\n xSum = xSum + Math.abs(((startX + startX1) * (((startX * startY1) - (startX1 * startY)))));\n ySum = ySum + Math.abs(((startY + startY1) * (((startX * startY1) - (startX1 * startY)))));\n }\n sum = 0.5 * sum;\n var pointValue = points.some(function (point) { return point.x < 5 && point.y < 5; }) && geometryType === 'Normal' ? 6 : 4;\n xSum = (1 / (pointValue * sum)) * xSum;\n ySum = (1 / (pointValue * sum)) * ySum;\n /* Code for finding nearest points in polygon related to midPoint*/\n var rightMinPoint = { x: 0, y: 0 };\n var rightMaxPoint = { x: 0, y: 0 };\n var leftMinPoint = { x: 0, y: 0 };\n var leftMaxPoint = { x: 0, y: 0 };\n var bottomMinPoint = { x: 0, y: 0 };\n var bottomMaxPoint = { x: 0, y: 0 };\n var topMinPoint = { x: 0, y: 0 };\n var topMaxPoint = { x: 0, y: 0 };\n var height = 0;\n for (var i = min; i <= max - 1; i++) {\n var point = points[i];\n point.y = type === 'Mercator' || geometryType === 'Normal' ? point.y : -(point.y);\n if (point.y > ySum) {\n if (point.x < xSum && xSum - point.x < xSum - bottomMinPoint.x) {\n bottomMinPoint = { x: point.x, y: point.y };\n }\n else if (point.x > xSum && (bottomMaxPoint.x === 0 || point.x - xSum < bottomMaxPoint.x - xSum)) {\n bottomMaxPoint = { x: point.x, y: point.y };\n }\n }\n else {\n if (point.x < xSum && xSum - point.x < xSum - topMinPoint.x) {\n topMinPoint = { x: point.x, y: point.y };\n }\n else if (point.x > xSum && (topMaxPoint.x === 0 || point.x - xSum < topMaxPoint.x - xSum)) {\n topMaxPoint = { x: point.x, y: point.y };\n }\n }\n height = (bottomMaxPoint.y - topMaxPoint.y) + ((bottomMaxPoint.y - topMaxPoint.y) / 4);\n if (point.x > xSum) {\n if (point.y < ySum && ySum - point.y < ySum - rightMinPoint.y) {\n rightMinPoint = { x: point.x, y: point.y };\n }\n else if (point.y > ySum && (rightMaxPoint.y === 0 || point.y - ySum < rightMaxPoint.y - ySum)) {\n rightMaxPoint = { x: point.x, y: point.y };\n }\n }\n else {\n if (point.y < ySum && ySum - point.y < ySum - leftMinPoint.y) {\n leftMinPoint = { x: point.x, y: point.y };\n }\n else if (point.y > ySum && (leftMaxPoint.y === 0 || point.y - ySum < leftMaxPoint.y - ySum)) {\n leftMaxPoint = { x: point.x, y: point.y };\n }\n }\n }\n return {\n x: xSum, y: ySum, rightMin: rightMinPoint, rightMax: rightMaxPoint,\n leftMin: leftMinPoint, leftMax: leftMaxPoint, points: points, topMax: topMaxPoint, topMin: topMinPoint,\n bottomMax: bottomMaxPoint, bottomMin: bottomMinPoint, height: height\n };\n}\n/**\n * Check custom path\n *\n * @param {any[]} layerData - Specifies the layer data\n * @returns {boolean} - Returns the boolean vlue\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isCustomPath(layerData) {\n var customPath = false;\n if (Object.prototype.toString.call(layerData) === '[object Array]') {\n Array.prototype.forEach.call(layerData, function (layer, index) {\n if (!isNullOrUndefined(layer['geometry']) && layer['geometry']['type'] === 'Path') {\n customPath = true;\n }\n });\n }\n return customPath;\n}\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location\n * @param {Alignment} alignment - Specifies the alignment\n * @param {Size} textSize - Specifies the text size\n * @param {string} type - Specifies the type\n * @returns {Point} - Returns the point values\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Point(x, y);\n}\n/**\n * To remove element by id\n *\n * @param {string} id - Specifies the id\n * @returns {void}\n * @private\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n/**\n * To calculate map center position from pixel values\n *\n * @param {Maps} mapObject - Specifies the map object\n * @param {LayerSettings} layer - Specifies the layer settings\n * @returns {Point} - Returns the x and y points\n * @private\n */\nexport function calculateCenterFromPixel(mapObject, layer) {\n var point1 = convertGeoToPoint(mapObject.minLatOfGivenLocation, mapObject.minLongOfGivenLocation, mapObject.mapLayerPanel.calculateFactor(layer), layer, mapObject);\n var point2 = convertGeoToPoint(mapObject.maxLatOfGivenLocation, mapObject.maxLongOfGivenLocation, mapObject.mapLayerPanel.calculateFactor(layer), layer, mapObject);\n var x = (point1.x + point2.x) / 2;\n var y = (point1.y + point2.y) / 2;\n return new Point(x, y);\n}\n/**\n * @param {Maps} mapObject - Specifies the map object\n * @param {LayerSettings} layer - Specifies the layer settings\n * @param {boolean} animate - Specifies the boolean value\n * @returns {any} - Returns the object\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTranslate(mapObject, layer, animate) {\n var zoomFactorValue = mapObject.zoomSettings.zoomFactor;\n var scaleFactor;\n var center = mapObject.centerPosition;\n var centerLatitude = center.latitude;\n var centerLongitude = center.longitude;\n var checkMethodeZoom = !isNullOrUndefined(mapObject.centerLatOfGivenLocation) &&\n !isNullOrUndefined(mapObject.centerLongOfGivenLocation) && mapObject.zoomNotApplied;\n if (isNullOrUndefined(mapObject.mapScaleValue)) {\n mapObject.mapScaleValue = zoomFactorValue;\n }\n if (mapObject.zoomSettings.shouldZoomInitially && mapObject.zoomSettings.enable) {\n mapObject.mapScaleValue = scaleFactor = zoomFactorValue = ((mapObject.zoomSettings.shouldZoomInitially || mapObject.enablePersistence) && mapObject.scale === 1)\n ? mapObject.scale : (isNullOrUndefined(mapObject.markerZoomFactor)) ? 1 : mapObject.markerZoomFactor;\n if (mapObject.mapScaleValue !== mapObject.markerZoomFactor && !mapObject.enablePersistence) {\n mapObject.mapScaleValue = zoomFactorValue = mapObject.markerZoomFactor;\n }\n if (!isNullOrUndefined(mapObject.markerCenterLatitude) && !isNullOrUndefined(mapObject.markerCenterLongitude)) {\n centerLatitude = mapObject.markerCenterLatitude;\n centerLongitude = mapObject.markerCenterLongitude;\n }\n }\n if (checkMethodeZoom) {\n mapObject.mapScaleValue = scaleFactor = zoomFactorValue = mapObject.scaleOfGivenLocation;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var min = !isNullOrUndefined(mapObject.baseMapRectBounds) ? mapObject.baseMapRectBounds['min'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var max = !isNullOrUndefined(mapObject.baseMapRectBounds) ? mapObject.baseMapRectBounds['max'] : null;\n var zoomFactor = animate ? 1 : mapObject.mapScaleValue;\n if (isNullOrUndefined(mapObject.currentShapeDataLength)) {\n mapObject.currentShapeDataLength = !isNullOrUndefined(layer.shapeData['features'])\n ? layer.shapeData['features'].length : layer.shapeData['geometries'].length;\n }\n var size = (mapObject.totalRect && mapObject.legendSettings.visible) ? mapObject.totalRect : mapObject.mapAreaRect;\n var availSize = mapObject.availableSize;\n var x;\n var y;\n if (!isNullOrUndefined(min) && !isNullOrUndefined(max)) {\n var mapWidth = Math.abs(max['x'] - min['x']);\n var mapHeight = Math.abs(min['y'] - max['y']);\n var factor = animate ? 1 : mapObject.markerZoomFactor === 1 ? mapObject.mapScaleValue : zoomFactorValue;\n center = mapObject.zoomSettings.shouldZoomInitially\n && mapObject.markerZoomedState && !mapObject.zoomPersistence ? mapObject.markerZoomCenterPoint :\n mapObject.centerPosition;\n if (((!isNullOrUndefined(centerLongitude) && centerLongitude !== 0) && (!isNullOrUndefined(centerLatitude) && centerLatitude !== 0)) || checkMethodeZoom) {\n var leftPosition = (((mapWidth + Math.abs(mapObject.mapAreaRect.width - mapWidth)) / 2) + mapObject.mapAreaRect.x) / factor;\n var topPosition = (((mapHeight + Math.abs(mapObject.mapAreaRect.height - mapHeight)) / 2) + mapObject.mapAreaRect.y) / factor;\n var point = checkMethodeZoom ? calculateCenterFromPixel(mapObject, layer) :\n convertGeoToPoint(centerLatitude, centerLongitude, mapObject.mapLayerPanel.calculateFactor(layer), layer, mapObject);\n if (isNullOrUndefined(mapObject.previousProjection) || mapObject.previousProjection !== mapObject.projectionType\n || mapObject.isMarkerZoomCompleted) {\n x = -point.x + leftPosition;\n y = -point.y + topPosition;\n scaleFactor = zoomFactor;\n }\n else {\n if (Math.floor(mapObject.scale) !== 1 && mapObject.zoomSettings.shouldZoomInitially || (mapObject.zoomNotApplied)) {\n x = -point.x + leftPosition;\n y = -point.y + topPosition;\n }\n else {\n if (mapObject.zoomSettings.shouldZoomInitially || mapObject.zoomNotApplied) {\n x = -point.x + leftPosition;\n y = -point.y + topPosition;\n scaleFactor = zoomFactor;\n }\n else {\n x = mapObject.zoomTranslatePoint.x;\n y = mapObject.zoomTranslatePoint.y;\n }\n }\n scaleFactor = mapObject.mapScaleValue;\n }\n }\n else {\n if (isNullOrUndefined(mapObject.previousProjection) || mapObject.previousProjection !== mapObject.projectionType) {\n if (mapHeight === 0 || mapWidth === 0 || mapHeight === mapWidth) {\n mapWidth = size.width / 2;\n mapHeight = size.height;\n }\n scaleFactor = parseFloat(Math.min(size.width / mapWidth, size.height / mapHeight).toFixed(2));\n scaleFactor = scaleFactor > 1.05 ? 1 : scaleFactor;\n mapWidth *= scaleFactor;\n mapHeight *= scaleFactor;\n var widthDiff = min['x'] !== 0 && mapObject.translateType === 'layers' ? availSize.width - size.width : 0;\n x = size.x + ((-(min['x'])) + ((size.width / 2) - (mapWidth / 2))) - widthDiff;\n y = size.y + ((-(min['y'])) + ((size.height / 2) - (mapHeight / 2)));\n mapObject.previousTranslate = new Point(x, y);\n }\n else {\n if (!mapObject.zoomSettings.shouldZoomInitially && mapObject.markerZoomFactor === 1 && mapObject.mapScaleValue === 1) {\n scaleFactor = parseFloat(Math.min(size.width / mapWidth, size.height / mapHeight).toFixed(2));\n mapHeight *= scaleFactor;\n mapWidth *= scaleFactor;\n y = size.y + ((-(min['y'])) + ((size.height / 2) - (mapHeight / 2)));\n x = size.x + ((-(min['x'])) + ((size.width / 2) - (mapWidth / 2)));\n }\n else {\n scaleFactor = mapObject.mapScaleValue < 1 ? mapObject.mapScaleValue + 1 : mapObject.mapScaleValue;\n mapObject.mapScaleValue = mapObject.zoomSettings.enable && mapObject.mapScaleValue !== 1 ? mapObject.mapScaleValue : 1;\n if ((mapObject.currentShapeDataLength !== (!isNullOrUndefined(layer.shapeData['features'])\n ? layer.shapeData['features'].length : layer.shapeData['geometries'].length)) && layer.type !== 'SubLayer') {\n var scale = parseFloat(Math.min(size.height / mapHeight, size.width / mapWidth).toFixed(2));\n mapHeight *= scale;\n mapWidth *= scale;\n y = size.y + ((-(min['y'])) + ((size.height / 2)\n - (mapHeight / 2)));\n scaleFactor = scale;\n x = size.x + ((-(min['x']))\n + ((size.width / 2) - (mapWidth / 2)));\n }\n else if (mapObject.availableSize.height !== mapObject.heightBeforeRefresh || mapObject.widthBeforeRefresh !== mapObject.availableSize.width) {\n var cscaleFactor = parseFloat(Math.min(size.width / mapWidth, size.height / mapHeight).toFixed(2));\n var cmapWidth = mapWidth;\n cmapWidth *= cscaleFactor;\n var cmapHeight = mapHeight;\n cmapHeight *= cscaleFactor;\n var x1 = size.x + ((-(min['x'])) + ((size.width / 2) - (cmapWidth / 2)));\n var y1 = size.y + ((-(min['y'])) + ((size.height / 2) - (cmapHeight / 2)));\n var xdiff = (mapObject.translatePoint.x - mapObject.previousTranslate.x) / (mapObject.widthBeforeRefresh);\n var ydiff = (mapObject.translatePoint.y - mapObject.previousTranslate.y) / (mapObject.heightBeforeRefresh);\n var actxdiff = xdiff * (mapObject.availableSize.width);\n var actydiff = ydiff * (mapObject.availableSize.height);\n x = x1 + actxdiff;\n y = y1 + actydiff;\n mapObject.previousTranslate = new Point(x1, y1);\n mapObject.zoomTranslatePoint.x = x;\n mapObject.zoomTranslatePoint.y = y;\n }\n else {\n if (!isNullOrUndefined(mapObject.previousProjection) && (mapObject.mapScaleValue === 1\n || mapObject.mapScaleValue <= 1.05) && !mapObject.zoomModule.isDragZoom) {\n scaleFactor = parseFloat(Math.min(size.width / mapWidth, size.height / mapHeight).toFixed(2));\n scaleFactor = scaleFactor > 1.05 ? 1 : scaleFactor;\n mapWidth *= scaleFactor;\n x = size.x + ((-(min['x'])) + ((size.width / 2) - (mapWidth / 2)));\n mapHeight *= scaleFactor;\n y = size.y + ((-(min['y'])) + ((size.height / 2) - (mapHeight / 2)));\n }\n else {\n x = mapObject.zoomTranslatePoint.x;\n y = mapObject.zoomTranslatePoint.y;\n scaleFactor = mapObject.scale;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(mapObject.translatePoint)) {\n x = (mapObject.enablePersistence && mapObject.translatePoint.x !== 0 && !mapObject.zoomNotApplied) ?\n mapObject.translatePoint.x : x;\n y = (mapObject.enablePersistence && mapObject.translatePoint.y !== 0 && !mapObject.zoomNotApplied) ?\n mapObject.translatePoint.y : y;\n }\n }\n scaleFactor = (mapObject.enablePersistence) ? ((mapObject.mapScaleValue >= 1) ? mapObject.mapScaleValue : 1) : scaleFactor;\n mapObject.widthBeforeRefresh = mapObject.availableSize.width;\n mapObject.heightBeforeRefresh = mapObject.availableSize.height;\n return { scale: scaleFactor, location: new Point(x, y) };\n}\n/**\n * @param {Maps} mapObject - Specifies the map object\n * @param {LayerSettings} layer - Specifies the layer\n * @param {boolean} animate - Specifies the boolean value\n * @returns {any} - Returns the object.\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getZoomTranslate(mapObject, layer, animate) {\n var zoomFactorValue = mapObject.zoomSettings.zoomFactor;\n var scaleFactor;\n var center = mapObject.centerPosition;\n var latitude = center.latitude;\n var longitude = center.longitude;\n var checkZoomMethod = !isNullOrUndefined(mapObject.centerLongOfGivenLocation) &&\n !isNullOrUndefined(mapObject.centerLatOfGivenLocation) && mapObject.zoomNotApplied;\n if (isNullOrUndefined(mapObject.previousCenterLatitude) &&\n isNullOrUndefined(mapObject.previousCenterLongitude)) {\n mapObject.previousCenterLatitude = mapObject.centerPosition.latitude;\n mapObject.previousCenterLongitude = mapObject.centerPosition.longitude;\n }\n else if (mapObject.previousCenterLatitude !==\n mapObject.centerPosition.latitude && mapObject.previousCenterLongitude !==\n mapObject.centerPosition.longitude) {\n mapObject.centerPositionChanged = true;\n mapObject.previousCenterLatitude = mapObject.centerPosition.latitude;\n mapObject.previousCenterLongitude = mapObject.centerPosition.longitude;\n }\n else {\n mapObject.centerPositionChanged = false;\n }\n if (isNullOrUndefined(mapObject.mapScaleValue) || (zoomFactorValue > mapObject.mapScaleValue)) {\n if (mapObject.isReset && mapObject.mapScaleValue === 1) {\n // eslint-disable-next-line no-self-assign\n mapObject.mapScaleValue = mapObject.mapScaleValue;\n }\n else if (!isNullOrUndefined(mapObject.mapScaleValue) && mapObject.mapScaleValue <= mapObject.scale) {\n mapObject.mapScaleValue = mapObject.scale;\n }\n else {\n mapObject.mapScaleValue = zoomFactorValue;\n }\n }\n mapObject.mapScaleValue = mapObject.zoomSettings.zoomFactor !== 1 &&\n mapObject.zoomSettings.zoomFactor ===\n mapObject.mapScaleValue ? mapObject.zoomSettings.zoomFactor :\n mapObject.zoomSettings.zoomFactor !== mapObject.mapScaleValue && !mapObject.centerPositionChanged ?\n mapObject.mapScaleValue : mapObject.zoomSettings.zoomFactor;\n if (mapObject.zoomSettings.shouldZoomInitially && !mapObject.isZoomByPosition) {\n mapObject.mapScaleValue = zoomFactorValue = scaleFactor = ((mapObject.enablePersistence\n || mapObject.zoomSettings.shouldZoomInitially) && mapObject.scale === 1)\n ? mapObject.scale : (isNullOrUndefined(mapObject.markerZoomFactor)) ? mapObject.mapScaleValue : mapObject.markerZoomFactor;\n zoomFactorValue = mapObject.mapScaleValue;\n if (!isNullOrUndefined(mapObject.markerCenterLatitude) && !isNullOrUndefined(mapObject.markerCenterLongitude)) {\n latitude = mapObject.markerCenterLatitude;\n longitude = mapObject.markerCenterLongitude;\n }\n }\n if (checkZoomMethod) {\n mapObject.mapScaleValue = scaleFactor = zoomFactorValue = mapObject.scaleOfGivenLocation;\n }\n var zoomFactor = animate ? 1 : mapObject.mapScaleValue;\n var size = mapObject.mapAreaRect;\n var x;\n var y;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var min = mapObject.baseMapRectBounds['min'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var max = mapObject.baseMapRectBounds['max'];\n var factor = animate ? 1 : mapObject.mapScaleValue;\n var mapWidth = Math.abs(max['x'] - min['x']);\n var mapHeight = Math.abs(min['y'] - max['y']);\n if (((!isNullOrUndefined(longitude) && longitude !== 0) && (!isNullOrUndefined(latitude) && latitude !== 0)) || checkZoomMethod) {\n var topPosition = ((mapHeight + Math.abs(mapObject.mapAreaRect.height - mapHeight)) / 2) / factor;\n var leftPosition = ((mapWidth + Math.abs(mapObject.mapAreaRect.width - mapWidth)) / 2) / factor;\n var point = checkZoomMethod ? calculateCenterFromPixel(mapObject, layer) :\n convertGeoToPoint(latitude, longitude, mapObject.mapLayerPanel.calculateFactor(layer), layer, mapObject);\n if ((!isNullOrUndefined(mapObject.zoomTranslatePoint) || !isNullOrUndefined(mapObject.previousProjection)) &&\n !mapObject.zoomNotApplied) {\n if (mapObject.previousProjection !== mapObject.projectionType) {\n x = -point.x + leftPosition;\n y = -point.y + topPosition;\n }\n else {\n if (mapObject.isZoomByPosition) {\n mapObject.zoomTranslatePoint.x = -point.x + leftPosition;\n mapObject.zoomTranslatePoint.y = -point.y + topPosition;\n }\n x = mapObject.zoomTranslatePoint.x;\n y = mapObject.zoomTranslatePoint.y;\n zoomFactorValue = zoomFactor;\n }\n }\n else {\n x = -point.x + leftPosition + mapObject.mapAreaRect.x / zoomFactor;\n y = -point.y + topPosition + mapObject.mapAreaRect.y / zoomFactor;\n }\n if (!isNullOrUndefined(mapObject.translatePoint)) {\n y = (mapObject.enablePersistence && mapObject.translatePoint.y !== 0 && !mapObject.zoomNotApplied) ?\n mapObject.translatePoint.y : y;\n x = (mapObject.enablePersistence && mapObject.translatePoint.x !== 0 && !mapObject.zoomNotApplied) ?\n mapObject.translatePoint.x : x;\n }\n scaleFactor = zoomFactorValue !== 0 ? zoomFactorValue : 1;\n }\n else {\n var zoomFact = mapObject.zoomSettings.zoomFactor === 0 ? 1 : mapObject.zoomSettings.zoomFactor;\n var maxZoomFact = mapObject.zoomSettings.maxZoom;\n zoomFact = zoomFact > maxZoomFact ? maxZoomFact : zoomFact;\n scaleFactor = zoomFact;\n var mapScale = mapObject.mapScaleValue === 0 ? 1 : mapObject.mapScaleValue > maxZoomFact\n ? maxZoomFact : mapObject.mapScaleValue;\n var leftPosition = (size.x + ((-(min['x'])) + ((size.width / 2) - (mapWidth / 2))));\n var topPosition = (size.y + ((-(min['y'])) + ((size.height / 2) - (mapHeight / 2))));\n if (!isNullOrUndefined(mapObject.zoomTranslatePoint) || !isNullOrUndefined(mapObject.previousProjection)) {\n if (mapObject.previousProjection !== mapObject.projectionType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousPositions = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousPoints = { x: leftPosition, y: topPosition };\n previousPositions.push(previousPoints);\n for (var i = 1; i < maxZoomFact; i++) {\n var translatePointX = previousPositions[i - 1]['x'] - (((size.width / (i)) - (size.width / (i + 1))) / 2);\n var translatePointY = previousPositions[i - 1]['y'] - (((size.height / (i)) - (size.height / (i + 1))) / 2);\n previousPoints = { x: translatePointX, y: translatePointY };\n previousPositions.push(previousPoints);\n }\n leftPosition = previousPositions[zoomFact - 1]['x'];\n topPosition = previousPositions[zoomFact - 1]['y'];\n }\n else {\n leftPosition = mapObject.zoomTranslatePoint.x;\n topPosition = mapObject.zoomTranslatePoint.y;\n if (zoomFact !== mapScale) {\n scaleFactor = mapScale;\n }\n }\n }\n if (!isNullOrUndefined(mapObject.translatePoint)) {\n x = (mapObject.enablePersistence && mapObject.translatePoint.x !== 0 && !mapObject.zoomNotApplied) ?\n mapObject.translatePoint.x : leftPosition;\n y = (mapObject.enablePersistence && mapObject.translatePoint.y !== 0 && !mapObject.zoomNotApplied) ?\n mapObject.translatePoint.y : topPosition;\n }\n }\n scaleFactor = (mapObject.enablePersistence) ? (mapObject.mapScaleValue === 0 ? 1 : mapObject.mapScaleValue) : scaleFactor;\n mapObject.widthBeforeRefresh = mapObject.availableSize.width;\n mapObject.heightBeforeRefresh = mapObject.availableSize.height;\n return { scale: animate ? 1 : scaleFactor, location: new Point(x, y) };\n}\n/**\n * To get the html element by specified id\n *\n * @param {Maps} map - Specifies the instance of the maps\n * @returns {void}\n * @private\n */\nexport function fixInitialScaleForTile(map) {\n map.tileZoomScale = map.tileZoomLevel = Math.floor(map.availableSize.height / 512) + 1;\n var padding = map.layers[map.baseLayerIndex].layerType !== 'GoogleStaticMap' ?\n 20 : 0;\n var totalSize = Math.pow(2, map.tileZoomLevel) * 256;\n map.tileTranslatePoint.x = (map.availableSize.width / 2) - (totalSize / 2);\n map.tileTranslatePoint.y = (map.availableSize.height / 2) - (totalSize / 2) + padding;\n map.previousTileWidth = map.availableSize.width;\n map.previousTileHeight = map.availableSize.height;\n}\n/**\n * To get the html element by specified id\n *\n * @param {string} id - Specifies the id\n * @returns {Element} - Returns the element\n * @private\n */\nexport function getElementByID(id) {\n return document.getElementById(id);\n}\n/**\n * Function to get clientElement from id.\n *\n * @param {string} id - Specifies the id\n * @returns {Element} - Returns the element\n * @private\n */\nexport function getClientElement(id) {\n var element = document.getElementById(id);\n if (!isNullOrUndefined(element)) {\n return element.getClientRects()[0];\n }\n else {\n return null;\n }\n}\n/**\n * To apply internalization\n *\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private\n */\nexport function Internalize(maps, value) {\n maps.formatFunction =\n maps.intl.getNumberFormat({ format: maps.format, useGrouping: maps.useGroupingSeparator });\n return maps.formatFunction(value);\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @param {Maps} maps - Specifies the Maps instance.\n * @returns {Function} - Returns the function\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template, maps) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (maps.isVue || maps.isVue3) {\n templateFn = templateComplier(template);\n }\n else if (typeof template === 'function') {\n templateFn = templateComplier(template);\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/**\n * Function to get element from id.\n *\n * @param {string} id - Specifies the id\n * @returns {Element} - Returns the element\n * @private\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n * Function to get shape data using target id\n *\n * @param {string} targetId - Specifies the target id\n * @param {Maps} map - Specifies the instance of the maps\n * @returns {any} - Returns the object\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getShapeData(targetId, map) {\n var layerIndex = parseInt(targetId.split('_LayerIndex_')[1].split('_')[0], 10);\n var shapeIndex = parseInt(targetId.split('_shapeIndex_')[1].split('_')[0], 10);\n var layer = map.layersCollection[layerIndex];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeData = layer.layerData[shapeIndex]['property'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n if (layer.dataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = layer.dataSource[checkShapeDataFields(layer.dataSource, shapeData, layer.shapeDataPath, layer.shapePropertyPath, layer)];\n }\n return { shapeData: shapeData, data: data };\n}\n/**\n * Function to trigger shapeSelected event\n *\n * @param {string} targetId - Specifies the target id\n * @param {SelectionSettingsModel} selection - Specifies the selection\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {string} eventName - Specifies the event name\n * @returns {IShapeSelectedEventArgs} - Returns the event args\n * @private\n */\nexport function triggerShapeEvent(targetId, selection, maps, eventName) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shape = getShapeData(targetId, maps);\n var border = {\n color: selection.border.color, opacity: selection.border.opacity,\n width: selection.border.width\n };\n var eventArgs = (selection.enableMultiSelect) ? {\n cancel: false,\n name: eventName,\n fill: selection.fill,\n opacity: selection.opacity,\n border: border,\n shapeData: shape.shapeData,\n data: shape.data,\n target: targetId,\n maps: maps,\n shapeDataCollection: maps.shapeSelectionItem\n } : {\n cancel: false,\n name: eventName,\n fill: selection.fill,\n opacity: selection.opacity,\n border: border,\n shapeData: shape.shapeData,\n data: shape.data,\n target: targetId,\n maps: maps\n };\n maps.trigger(eventName, eventArgs, function () {\n eventArgs.border.opacity = isNullOrUndefined(eventArgs.border.opacity) ? eventArgs.opacity : eventArgs.border.opacity;\n });\n return eventArgs;\n}\n/**\n * Function to get elements using class name\n *\n * @param {string} className - Specifies the class name\n * @returns {HTMLCollectionOf<Element>} - Returns the collection\n * @private\n */\nexport function getElementsByClassName(className) {\n return document.getElementsByClassName(className);\n}\n/**\n * Function to get elements using querySelectorAll\n */\n// export function querySelectorAll(args: string, element: Element): ArrayOf<Element> {\n// return element.querySelectorAll('.' + args);\n// }\n/**\n * Function to get elements using querySelector\n *\n * @param {string} args - Specifies the args\n * @param {string} elementSelector - Specifies the element selector\n * @returns {Element} - Returns the element\n * @private\n */\nexport function querySelector(args, elementSelector) {\n var targetEle = null;\n if (document.getElementById(elementSelector)) {\n targetEle = document.getElementById(elementSelector).querySelector('#' + args);\n }\n return targetEle;\n}\n/**\n * Function to get the element for selection and highlight using public method\n *\n * @param {number} layerIndex - Specifies the layer index\n * @param {string} name - Specifies the layer name\n * @param {boolean} enable - Specifies the boolean value\n * @param {Maps} map - Specifies the instance of the maps\n * @returns {Element} - Returns the element\n * @private\n */\nexport function getTargetElement(layerIndex, name, enable, map) {\n var targetId;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeData = map.layers[layerIndex].shapeData['features'];\n for (var i = 0; i < shapeData.length; i++) {\n if (shapeData[i]['properties'].name === name) {\n targetId = map.element.id + '_' + 'LayerIndex_' + layerIndex + '_shapeIndex_' + i + '_dataIndex_undefined';\n break;\n }\n }\n var targetEle = getElement(targetId);\n return targetEle;\n}\n/**\n * Function to create style element for highlight and selection\n *\n * @param {string} id - Specifies the id\n * @param {string} className - Specifies the class name\n * @param {IShapeSelectedEventArgs | any} eventArgs - Specifies the event args\n * @returns {Element} - Returns the element\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createStyle(id, className, eventArgs) {\n var styleEle = createElement('style', {\n id: id\n });\n styleEle.innerText = '.' + className + '{fill:'\n + eventArgs['fill'] + ';' + 'fill-opacity:' + (eventArgs['opacity']).toString() + ';' +\n 'stroke-opacity:' + (eventArgs['border']['opacity']).toString() + ';' +\n 'stroke-width:' + (eventArgs['border']['width']).toString() + ';' +\n 'stroke:' + eventArgs['border']['color'] + ';' + '}';\n return styleEle;\n}\n/**\n * Function to customize the style for highlight and selection\n *\n * @param {string} id - Specifies the id\n * @param {string} className - Specifies the class name\n * @param {IShapeSelectedEventArgs | any} eventArgs - Specifies the event args\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function customizeStyle(id, className, eventArgs) {\n var styleEle = getElement(id);\n if (!isNullOrUndefined(styleEle)) {\n styleEle.innerText = '.' + className + '{fill:'\n + eventArgs['fill'] + ';' + 'fill-opacity:' + (eventArgs['opacity']).toString() + ';' +\n 'stroke-width:' + (eventArgs['border']['width']).toString() + ';' +\n 'stroke-opacity:' + (eventArgs['border']['opacity']).toString() + ';' +\n 'stroke:' + eventArgs['border']['color'] + '}';\n }\n}\n/**\n * Function to trigger itemSelection event for legend selection and public method\n *\n * @param {SelectionSettingsModel} selectionSettings - Specifies the selection settings\n * @param {Maps} map - Specifies the instance of the maps\n * @param {Element} targetElement - Specifies the target element\n * @param {any} shapeData - Specifies the shape data\n * @param {any} data - Specifies the data\n * @returns {void}\n * @private\n */\nexport function triggerItemSelectionEvent(selectionSettings, map, targetElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nshapeData, data) {\n var border = {\n color: selectionSettings.border.color,\n width: selectionSettings.border.width / map.scale,\n opacity: selectionSettings.border.opacity\n };\n var eventArgs = {\n opacity: selectionSettings.opacity,\n fill: selectionSettings.fill,\n border: border,\n name: itemSelection,\n target: targetElement.id,\n cancel: false,\n shapeData: shapeData,\n data: data,\n maps: map\n };\n map.trigger('itemSelection', eventArgs, function (observedArgs) {\n eventArgs.border.opacity = isNullOrUndefined(selectionSettings.border.opacity) ? selectionSettings.opacity :\n selectionSettings.border.opacity;\n map.shapeSelectionItem.push(eventArgs.shapeData);\n if (!getElement('ShapeselectionMap')) {\n document.body.appendChild(createStyle('ShapeselectionMap', 'ShapeselectionMapStyle', eventArgs));\n }\n else {\n customizeStyle('ShapeselectionMap', 'ShapeselectionMapStyle', eventArgs);\n }\n });\n}\n/**\n * Function to remove class from element\n *\n * @param {Element} element - Specifies the element\n * @returns {void}\n * @private\n */\nexport function removeClass(element) {\n element.removeAttribute('class');\n}\n/**\n * Animation Effect Calculation End\n *\n * @param {Element} element - Specifies the element\n * @param {number} delay - Specifies the delay\n * @param {number} duration - Specifies the duration\n * @param {MapLocation} point - Specifies the location\n * @param {Maps} maps - Specifies the instance of the maps\n * @param {string} ele - Specifies the element\n * @param {number} radius - Specifies the radius\n * @returns {void}\n * @private\n */\nexport function elementAnimate(element, delay, duration, point, maps, ele, radius) {\n if (radius === void 0) { radius = 0; }\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n var transform = element.getAttribute('transform') || '';\n new Animation({}).animate(element, {\n duration: (duration === 0 && animationMode === 'Enable') ? 1000 : duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n if (maps.isTileMap && height === 0) {\n var layerGroupElement = document.querySelector('.GroupElement');\n if (!isNullOrUndefined(layerGroupElement)) {\n layerGroupElement.style.display = 'block';\n }\n }\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate( ' + (centerX - (radius * height)) + ' ' + (centerY - (radius * height)) +\n ' ) scale(' + height + ')');\n }\n },\n end: function (model) {\n element.setAttribute('transform', transform);\n if (!ele) {\n return;\n }\n var event = {\n cancel: false, name: animationComplete, element: ele, maps: maps\n };\n maps.trigger(animationComplete, event);\n }\n });\n}\n/**\n * @param {string} id - Specifies the id\n * @returns {void}\n * @private\n */\nexport function timeout(id) {\n removeElement(id);\n}\n/**\n * @param {string} text - Specifies the text\n * @param {string} size - Specifies the size\n * @param {number} x - Specifies the x value\n * @param {number} y - Specifies the y value\n * @param {number} areaWidth - Specifies the area width\n * @param {number} areaHeight - Specifies the area height\n * @param {string} id - Specifies the id\n * @param {Element} element - Specifies the element\n * @param {boolean} isTouch - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function showTooltip(text, size, x, y, areaWidth, areaHeight, id, element, isTouch) {\n var location = getMousePosition(x, y, element);\n if (!isNullOrUndefined(location)) {\n x = location.x;\n y = location.y;\n }\n var tooltip = document.getElementById(id);\n var width = measureText(text, {\n fontFamily: 'Segoe UI', size: '8px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n }).width;\n var str = text.split(' ');\n var demo = str[0].length;\n for (var i = 1; i < str.length; i++) {\n if (demo < str[i].length) {\n demo = (str[i]).length;\n }\n }\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id\n });\n tooltip.style.cssText = 'background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(0, 0, 0); padding-left:5px;' +\n 'font-size:12px; font-family: \"Segoe UI\"; text-align:center';\n }\n if (x < (areaWidth - width)) {\n // eslint-disable-next-line no-self-assign\n x = x;\n }\n else if (x > (areaWidth - width) && x < areaWidth - (demo * 8)) {\n width = (areaWidth - x);\n }\n else if (x >= areaWidth - demo * 8) {\n if (x > width) {\n x = x - width;\n }\n else {\n width = x;\n x = 0;\n }\n }\n var size1 = size.split('px');\n wordWrap(tooltip, text, x, y, size1, width, areaWidth, element);\n var height = tooltip.clientHeight;\n if ((height + parseInt(size1[0], 10) * 2) > areaHeight) {\n width = x;\n x = 0;\n }\n wordWrap(tooltip, text, x, y, size1, width, areaWidth, element);\n if (isTouch) {\n setTimeout(timeout, 5000, id);\n }\n}\n/**\n * @param {HTMLElement} tooltip - Specifies the tooltip element\n * @param {string} text - Specifies the text\n * @param {number} x - Specifies the x value\n * @param {number} y - Specifies the y value\n * @param {string[]} size1 - Specifies the size\n * @param {number} width - Specifies the width\n * @param {number} areaWidth - Specifies the area width\n * @param {Element} element - Specifies the element\n * @returns {void}\n * @private\n */\nexport function wordWrap(tooltip, text, x, y, size1, width, areaWidth, element) {\n tooltip.innerText = text;\n tooltip.style.top = tooltip.id.indexOf('_Legend') !== -1 ?\n (parseInt(size1[0], 10) + y).toString() + 'px' : (parseInt(size1[0], 10) * 2).toString() + 'px';\n tooltip.style.left = (x).toString() + 'px';\n tooltip.style.width = width.toString() + 'px';\n tooltip.style.maxWidth = (areaWidth).toString() + 'px';\n tooltip.style.wordWrap = 'break-word';\n element.appendChild(tooltip);\n}\n// /**\n// *\n// * @param touchList\n// * @param e\n// * @param touches\n// */\n// export function addTouchPointer(touchList: ITouches[], e: PointerEvent, touches: TouchList): ITouches[] {\n// if (touches) {\n// touchList = [];\n// for (let i: number = 0, length: number = touches.length; i < length; i++) {\n// touchList.push({ pageX: touches[i as number].clientX, pageY: touches[i as number].clientY, pointerId: null });\n// }\n// } else {\n// touchList = touchList ? touchList : [];\n// if (touchList.length === 0) {\n// touchList.push({ pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId });\n// } else {\n// for (let i: number = 0, length: number = touchList.length; i < length; i++) {\n// if (touchList[i as number].pointerId === e.pointerId) {\n// touchList[i as number] = { pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId };\n// } else {\n// touchList.push({ pageX: e.clientX, pageY: e.clientY, pointerId: e.pointerId });\n// }\n// }\n// }\n// }\n// return touchList;\n// }\n/**\n * @param {string} id - Specifies the id\n * @param {string} text - Specifies the text\n * @param {string} top - Specifies the top\n * @param {string} left - Specifies the left\n * @param {ZoomToolbarTooltipSettingsModel} settings - Specifies the tooltip settings.\n * @returns {void}\n * @private\n */\nexport function createTooltip(id, text, top, left, settings) {\n var tooltip = getElement(id);\n var borderColor = getHexColor(settings.borderColor);\n var fontColor = getHexColor(settings.fontColor);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:' + (fontColor ? 'rgba(' + fontColor.r + ',' + fontColor.g + ',' + fontColor.b + ',' + settings.fontOpacity + ')'\n : settings.fontColor) + ';' +\n 'background:' + settings.fill + ';' +\n 'z-index: 2;' +\n 'position:absolute;border:' + settings.borderWidth + 'px solid ' +\n (borderColor ? 'rgba(' + borderColor.r + ',' + borderColor.g + ',' + borderColor.b + ',' + settings.borderOpacity + ')'\n : settings.borderColor) + ';font-family:' + settings.fontFamily +\n ';font-style:' + settings.fontStyle + ';font-weight:' + settings.fontWeight +\n ';font-size:' + settings.fontSize + ';border-radius:' + settings.borderWidth + 'px;';\n if (!tooltip && settings.visible) {\n tooltip = createElement('div', {\n id: id\n });\n tooltip.innerHTML = SanitizeHtmlHelper.sanitize(' ' + text + ' ');\n tooltip.style.cssText = style;\n document.body.appendChild(tooltip);\n }\n else if (settings.visible) {\n tooltip.innerHTML = SanitizeHtmlHelper.sanitize(' ' + text + ' ');\n tooltip.style.cssText = style;\n }\n}\n/**\n * @private\n */\nexport function getHexColor(color) {\n if (color.indexOf('#') !== -1 && color.toLowerCase().indexOf('rgb') === -1) {\n var colorArray = (/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i).exec(color);\n return colorArray ? { r: parseInt(colorArray[1], 16), g: parseInt(colorArray[2], 16), b: parseInt(colorArray[3], 16) } : null;\n }\n else if (color.toLowerCase().indexOf('rgb') !== -1) {\n var colorArray = color.match(/\\d+/g).map(function (a) { return parseInt(a, 10); });\n return colorArray ? { r: colorArray[0], g: colorArray[1], b: colorArray[2] } : null;\n }\n else {\n var divElment = document.createElement('div');\n divElment.style.color = color;\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var colorArray = window.getComputedStyle(document.body.appendChild(divElment)).color.match(/\\d+/g).map(function (a) { return parseInt(a, 10); });\n document.body.removeChild(divElment);\n return colorArray ? { r: colorArray[0], g: colorArray[1], b: colorArray[2] } : null;\n }\n}\n/**\n * @param {Point} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n var renderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n return htmlObject;\n}\n/**\n * @param {MapLocation} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path options\n * @param {string} url - Specifies the url\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n options['stroke'] = (shape === 'HorizontalLine' || shape === 'VerticalLine' || shape === 'Cross') ? options['fill'] : options['stroke'];\n options['stroke-width'] = (options['stroke-width'] === 0 && (shape === 'HorizontalLine' || shape === 'VerticalLine' || shape === 'Cross')) ? 1 : options['stroke-width'];\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'HorizontalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' '\n + shapeY;\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n * Animation Effect Calculation End\n *\n * @private\n */\n// export function markerTemplateAnimate(element: Element, delay: number, duration: number, point: MapLocation): void {\n// let delta: number = 0;\n// let top: string = (element as HTMLElement).style.top;\n// let y: number = parseInt(top, 10);\n// new Animation({}).animate(<HTMLElement>element, {\n// duration: duration,\n// delay: delay,\n// progress: (args: AnimationOptions): void => {\n// if (args.timeStamp > args.delay) {\n// delta = ((args.timeStamp - args.delay) / args.duration);\n// (element as HTMLElement).style.top = y - 100 + (delta * 100) + 'px';\n// }\n// },\n// end: (model: AnimationOptions) => {\n// (element as HTMLElement).style.top = top;\n// }\n// });\n// }\n/**\n * @param {HTMLElement} childElement - Specifies the child element\n * @param {HTMLElement} parentElement - Specifies the parent element\n * @returns {Size} - Returns the size\n * @private\n */\nexport function getElementOffset(childElement, parentElement) {\n parentElement.appendChild(childElement);\n var width = childElement.offsetWidth;\n var height = childElement.offsetHeight;\n parentElement.removeChild(childElement);\n return new Size(width, height);\n}\n/**\n * @param {Element} element - Specifies the element\n * @param {number} index - Specifies the element\n * @param {number} scale - Specifies the scale\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {void}\n * @private\n */\nexport function changeBorderWidth(element, index, scale, maps) {\n var childNode;\n for (var l = 0; l < element.childElementCount; l++) {\n childNode = element.childNodes[l];\n if (childNode.id.indexOf('_NavigationGroup') > -1) {\n changeNavaigationLineWidth(childNode, index, scale, maps);\n }\n else if (childNode.id.indexOf('_Polygons_Group') > -1) {\n for (var i = 0; i < childNode.childElementCount; i++) {\n // eslint-disable-next-line\n var width = maps.layersCollection[index].polygonSettings.polygons[parseInt(childNode.children[i].id.split('_PolygonIndex_')[1])].borderWidth;\n childNode.children[i].setAttribute('stroke-width', (width / scale).toString());\n }\n }\n else {\n var currentStroke = void 0;\n var value = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var borderWidthValue = maps.layersCollection[index].shapeSettings.borderWidthValuePath;\n var borderWidth = maps.layersCollection[index].shapeSettings.border.width;\n var circleRadius = maps.layersCollection[index].shapeSettings.circleRadius;\n if (maps.layersCollection[index].shapeSettings.borderWidthValuePath) {\n value = checkShapeDataFields(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n maps.layersCollection[index].dataSource, maps.layersCollection[index].layerData[l]['property'], maps.layersCollection[index].shapeDataPath, maps.layersCollection[index].shapePropertyPath, maps.layersCollection[index]);\n if (value !== null) {\n if (maps.layersCollection[index].dataSource[value][borderWidthValue]) {\n currentStroke = maps.layersCollection[index].dataSource[value][borderWidthValue];\n }\n else {\n currentStroke = (isNullOrUndefined(borderWidth) ? 0 : borderWidth);\n }\n }\n else {\n currentStroke = (isNullOrUndefined(borderWidth) ? 0 : borderWidth);\n }\n }\n else {\n currentStroke = (isNullOrUndefined(borderWidth) ? 0 : borderWidth);\n }\n childNode.setAttribute('stroke-width', (currentStroke / scale).toString());\n if (element.id.indexOf('_Point') > -1 || element.id.indexOf('_MultiPoint') > -1) {\n childNode.setAttribute('r', (circleRadius / scale).toString());\n }\n }\n }\n}\n/**\n * @param {Element} element - Specifies the element\n * @param {number} index - Specifies the element\n * @param {number} scale - Specifies the scale\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {void}\n * @private\n */\nexport function changeNavaigationLineWidth(element, index, scale, maps) {\n var node;\n for (var m = 0; m < element.childElementCount; m++) {\n node = element.childNodes[m];\n if (node.tagName === 'path') {\n var currentStroke = (maps.layersCollection[index]\n .navigationLineSettings[parseFloat(node.id.split('_NavigationIndex_')[1].split('_')[0])].width);\n node.setAttribute('stroke-width', (currentStroke / scale).toString());\n }\n }\n}\n// /** Pinch zoom helper methods */\n/**\n * @param {PointerEvent | TouchEvent} event - Specifies the pointer or touch event\n * @returns {ITouches[]} - Returns the target\n * @private */\nexport function targetTouches(event) {\n var targetTouches = [];\n var touches = event.touches;\n for (var i = 0; i < touches.length; i++) {\n targetTouches.push({ pageX: touches[i].pageX, pageY: touches[i].pageY });\n }\n return targetTouches;\n}\n/**\n * @param {ITouches[]} startTouches - Specifies the start touches\n * @param {ITouches[]} endTouches - Specifies the end touches\n * @returns {number} - Returns the number\n * @private\n */\nexport function calculateScale(startTouches, endTouches) {\n var startDistance = getDistance(startTouches[0], startTouches[1]);\n var endDistance = getDistance(endTouches[0], endTouches[1]);\n return (endDistance / startDistance);\n}\n/**\n * @param {ITouches} a - Specifies the a value\n * @param {ITouches} b - Specifies the b value\n * @returns {number} - Returns the number\n * @private */\nexport function getDistance(a, b) {\n var x = a.pageX - b.pageX;\n var y = a.pageY - b.pageY;\n return Math.sqrt(x * x + y * y);\n}\n/**\n * @param {ITouches[]} touches - Specifies the touches\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {any[]} - Returns the object\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTouches(touches, maps) {\n var rect = maps.element.getBoundingClientRect();\n var posTop = rect.top + document.defaultView.pageXOffset;\n var posLeft = rect.left + document.defaultView.pageYOffset;\n return Array.prototype.slice.call(touches).map(function (touch) {\n return {\n x: touch.pageX - posLeft,\n y: touch.pageY - posTop\n };\n });\n}\n/**\n * @param {any[]} touches - Specifies the touches\n * @returns {Point} - Returns the point\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTouchCenter(touches) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n x: touches.map(function (e) { return e['x']; }).reduce(sum) / touches.length,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n y: touches.map(function (e) { return e['y']; }).reduce(sum) / touches.length\n };\n}\n/**\n * @param {number} a - Specifies a value\n * @param {number} b - Specifies b value\n * @returns {number} - Returns the sum of a and b\n * @private\n */\nexport function sum(a, b) {\n return a + b;\n}\n/**\n * Animation Effect Calculation End\n *\n * @param {Element} element - Specifies the element.\n * @param {number} delay - Specifies the delay.\n * @param {number} duration - Specifies the duration.\n * @param {MapLocation} point - Specifies the location.\n * @param {number} scale - Specifies the scale value.\n * @param {Size} size - Specifies the size.\n * @param {Maps} maps - Specifies the maps.\n * @returns {void}\n * @private\n */\nexport function zoomAnimate(element, delay, duration, point, scale, size, maps) {\n var delta = 0;\n var previousLocation = maps.previousPoint;\n var preScale = maps.previousScale;\n var diffScale = scale - preScale;\n var currentLocation = new MapLocation(0, 0);\n var currentScale = 1;\n if (scale === preScale) {\n element.setAttribute('transform', 'scale( ' + (scale) + ' ) translate( ' + point.x + ' ' + point.y + ' )');\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var slope = function (previousLocation, point) {\n if (previousLocation.x === point.x) {\n return null;\n }\n return (point.y - previousLocation.y) / (point.x - previousLocation.x);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var intercept = function (point, slopeValue) {\n if (slopeValue === null) {\n return point.x;\n }\n return point.y - slopeValue * point.x;\n };\n var slopeFactor = slope(previousLocation, point);\n var slopeIntersection = intercept(previousLocation, slopeFactor);\n var horizontalDifference = point.x - previousLocation.x;\n var verticalDifference = point.y - previousLocation.y;\n animate(element, delay, duration, function (args) {\n if (args.timeStamp > args.delay) {\n delta = ((args.timeStamp - args.delay) / args.duration);\n currentScale = preScale + (delta * diffScale);\n currentLocation.x = previousLocation.x + (delta * horizontalDifference) / (currentScale / scale);\n if (slopeFactor == null) {\n currentLocation.y = previousLocation.y + (delta * verticalDifference);\n }\n else {\n currentLocation.y = ((slopeFactor * currentLocation.x) + slopeIntersection);\n }\n args.element.setAttribute('transform', 'scale( ' + currentScale + ' ) ' +\n 'translate( ' + currentLocation.x + ' ' + currentLocation.y + ' )');\n maps.translatePoint = currentLocation;\n maps.scale = currentScale;\n maps.zoomModule.processTemplate(point.x, point.y, currentScale, maps);\n }\n }, function () {\n maps.translatePoint = point;\n maps.scale = scale;\n element.setAttribute('transform', 'scale( ' + (scale) + ' ) translate( ' + point.x + ' ' + point.y + ' )');\n maps.zoomModule.processTemplate(point.x, point.y, scale, maps);\n });\n}\n/**\n * To process custom animation\n *\n * @param {Element} element - Specifies the element\n * @param {number} delay - Specifies the delay\n * @param {number} duration - Specifies the duration\n * @param {Function} process - Specifies the process\n * @param {Function} end - Specifies the end\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function animate(element, delay, duration, process, end) {\n var _this = this;\n var start = null;\n // eslint-disable-next-line prefer-const\n var clearAnimation;\n var markerStyle = 'visibility:visible';\n duration = animationMode === \"Disable\" ? 0 : duration;\n var startAnimation = function (timestamp) {\n if (!start) {\n start = timestamp;\n }\n var progress = timestamp - start;\n if (progress < duration) {\n process.call(_this, { element: element, delay: 0, timeStamp: progress, duration: duration });\n window.requestAnimationFrame(startAnimation);\n }\n else {\n window.cancelAnimationFrame(clearAnimation);\n end.call(_this, { element: element });\n if (element.id.indexOf('Marker') > -1) {\n var markerElement = getElementByID(element.id.split('_Layer')[0] + '_Markers_Group');\n markerElement.style.cssText = markerStyle;\n }\n }\n };\n clearAnimation = window.requestAnimationFrame(startAnimation);\n}\n/**\n * Defines the options to get shape data file using Ajax request.\n */\nvar MapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function MapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return MapAjax;\n}());\nexport { MapAjax };\n/**\n * Animation Translate\n *\n * @param {Element} element - Specifies the element\n * @param {number} delay - Specifies the delay\n * @param {number} duration - Specifies the duration\n * @param {MapLocation} point - Specifies the location\n * @returns {void}\n * @private\n */\nexport function smoothTranslate(element, delay, duration, point) {\n var delta = 0;\n var transform = element.getAttribute('transform').split(' ');\n if (transform.length === 2) {\n transform[2] = transform[1].split(')')[0];\n transform[1] = transform[0].split('(')[1];\n }\n var previousLocation = new MapLocation(parseInt(transform[1], 10), parseInt(transform[2], 10));\n var diffx = point.x - previousLocation.x;\n var diffy = point.y - previousLocation.y;\n var currentLocation = new MapLocation(0, 0);\n animate(element, delay, duration, function (args) {\n if (args.timeStamp > args.delay) {\n delta = ((args.timeStamp - args.delay) / args.duration);\n currentLocation.x = previousLocation.x + (delta * diffx);\n currentLocation.y = previousLocation.y + (delta * diffy);\n args.element.setAttribute('transform', 'translate( ' + currentLocation.x + ' ' + currentLocation.y + ' )');\n }\n }, function () {\n element.setAttribute('transform', 'translate( ' + point.x + ' ' + point.y + ' )');\n });\n}\n/**\n * To find compare should zoom factor with previous factor and current factor\n *\n * @param {number} scaleFactor - Specifies the scale factor\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {void}\n * @private\n */\nexport function compareZoomFactor(scaleFactor, maps) {\n var previous = isNullOrUndefined(maps.shouldZoomPreviousFactor) ?\n null : maps.shouldZoomPreviousFactor;\n var current = isNullOrUndefined(maps.shouldZoomCurrentFactor) ?\n null : maps.shouldZoomCurrentFactor;\n if (!isNullOrUndefined(current)) {\n maps.shouldZoomCurrentFactor = null;\n maps.shouldZoomPreviousFactor = null;\n }\n else if (!isNullOrUndefined(previous)\n && isNullOrUndefined(current)\n && maps.shouldZoomPreviousFactor !== scaleFactor) {\n maps.shouldZoomCurrentFactor = scaleFactor;\n }\n else {\n maps.shouldZoomPreviousFactor = scaleFactor;\n }\n}\n/**\n * To find zoom level for the min and max latitude values\n *\n * @param {number} minLat - Specifies the minimum latitude\n * @param {number} maxLat - Specifies the maximum latitude\n * @param {number} minLong - Specifies the minimum longitude\n * @param {number} maxLong - Specifies the maximum longitude\n * @param {number} mapWidth - Specifies the width of the maps\n * @param {number} mapHeight - Specifies the height of the maps\n * @param {Maps} maps - Specifies the instance of the maps\n * @returns {number} - Returns the scale factor\n * @private\n */\nexport function calculateZoomLevel(minLat, maxLat, minLong, maxLong, mapWidth, mapHeight, maps, isZoomToCoordinates) {\n var scaleFactor;\n var maxZoomFact = maps.zoomSettings.maxZoom;\n var applyMethodeZoom;\n var maxLatSin = Math.sin(maxLat * Math.PI / 180);\n var maxLatRad = Math.log((1 + maxLatSin) / (1 - maxLatSin)) / 2;\n var maxLatValue = Math.max(Math.min(maxLatRad, Math.PI), -Math.PI) / 2;\n var minLatSin = Math.sin(minLat * Math.PI / 180);\n var minLatRad = Math.log((1 + minLatSin) / (1 - minLatSin)) / 2;\n var minLatValue = Math.max(Math.min(minLatRad, Math.PI), -Math.PI) / 2;\n if (maps.zoomNotApplied && !maps.isTileMap) {\n var latiRatio = Math.abs((maps.baseMapBounds.latitude.max - maps.baseMapBounds.latitude.min) / (maxLat - minLat));\n var longiRatio = Math.abs((maps.baseMapBounds.longitude.max - maps.baseMapBounds.longitude.min) / (maxLong - minLong));\n applyMethodeZoom = isZoomToCoordinates ? (latiRatio + longiRatio) / 2 : Math.min(latiRatio, longiRatio);\n }\n var latRatio = (maxLatValue - minLatValue) / Math.PI;\n var lngDiff = maxLong - minLong;\n var lngRatio = ((lngDiff < 0) ? (lngDiff + 360) : lngDiff) / 360;\n var WORLD_PX_HEIGHT = 256;\n var WORLD_PX_WIDTH = 256;\n var latZoom = (Math.log(mapHeight / WORLD_PX_HEIGHT / latRatio) / Math.LN2);\n var lngZoom = (Math.log(mapWidth / WORLD_PX_WIDTH / lngRatio) / Math.LN2);\n var result = (maps.zoomNotApplied && !maps.isTileMap) ? applyMethodeZoom :\n isZoomToCoordinates && !maps.isTileMap ? (latZoom + lngZoom) / 2 : Math.min(latZoom, lngZoom);\n scaleFactor = Math.min(result, maxZoomFact);\n scaleFactor = maps.isTileMap || !maps.zoomNotApplied ? Math.floor(scaleFactor) : scaleFactor;\n if (!maps.isTileMap) {\n compareZoomFactor(scaleFactor, maps);\n }\n return scaleFactor;\n}\n/**\n * Method to get the result\n *\n * @param {any} e - Specifies the any type value\n * @returns {any} - Returns the data value\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function processResult(e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var resultValue = !isNullOrUndefined(e['result']) ? e['result'] : e['actual'];\n if (isNullOrUndefined(resultValue.length)) {\n if (!isNullOrUndefined(resultValue['Items'])) {\n dataValue = resultValue['Items'];\n }\n }\n else {\n dataValue = resultValue;\n }\n return dataValue;\n}\n","/**\n * Specifies Maps Themes\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: null,\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n Theme.mapsSubTitleFont = {\n size: '13px',\n fontWeight: null,\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n Theme.tooltipLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: null,\n fontStyle: 'Regular',\n fontFamily: null\n };\n /** @private */\n Theme.legendTitleFont = {\n size: '12px',\n fontWeight: 'Medium',\n color: null,\n fontStyle: 'Medium',\n fontFamily: null\n };\n /** @private */\n Theme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Medium',\n color: null,\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n Theme.dataLabelFont = {\n size: '12px',\n fontWeight: 'Medium',\n color: '#000000',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var FabricTheme;\n(function (FabricTheme) {\n /** @private */\n FabricTheme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Semibold',\n color: '#424242',\n fontStyle: 'Semibold',\n fontFamily: 'SegoeUI, Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n FabricTheme.mapsSubTitleFont = {\n size: '13px',\n fontWeight: 'Regular',\n color: '#424242',\n fontStyle: 'Regular',\n fontFamily: 'SegoeUI, Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n FabricTheme.tooltipLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#FFFFFF',\n fontStyle: 'Regular',\n fontFamily: 'Roboto'\n };\n /** @private */\n FabricTheme.legendTitleFont = {\n size: '14px',\n fontWeight: 'Regular',\n color: '#757575',\n fontStyle: 'Regular',\n fontFamily: 'SegoeUI, Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n FabricTheme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Medium',\n color: '#757575',\n fontStyle: 'Medium',\n fontFamily: 'SegoeUI, Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n FabricTheme.dataLabelFont = {\n size: '12px',\n fontWeight: 'Medium',\n color: '#000000',\n fontStyle: 'Medium',\n fontFamily: 'SegoeUI, Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n})(FabricTheme || (FabricTheme = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var BootstrapTheme;\n(function (BootstrapTheme) {\n /** @private */\n BootstrapTheme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Semibold',\n color: '#424242',\n fontStyle: 'Semibold',\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n BootstrapTheme.mapsSubTitleFont = {\n size: '13px',\n fontWeight: 'Regular',\n color: '#424242',\n fontStyle: 'Regular',\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n BootstrapTheme.tooltipLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#FFFFFF',\n fontStyle: 'Regular',\n fontFamily: 'Roboto'\n };\n /** @private */\n BootstrapTheme.legendTitleFont = {\n size: '14px',\n fontWeight: 'Regular',\n color: '#757575',\n fontStyle: 'Regular',\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n BootstrapTheme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Medium',\n color: '#757575',\n fontStyle: 'Medium',\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n /** @private */\n BootstrapTheme.dataLabelFont = {\n size: '12px',\n fontWeight: 'Medium',\n color: '#000000',\n fontStyle: 'Medium',\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif'\n };\n})(BootstrapTheme || (BootstrapTheme = {}));\n/**\n * Internal use of Method to getting colors based on themes.\n *\n * @private\n * @param {MapsTheme} theme Specifies the theme of the maps\n * @returns {string[]} Returns the shape color\n */\nexport function getShapeColor(theme) {\n var themePalette;\n switch (theme.toLowerCase()) {\n case 'tailwind':\n themePalette = ['#0369A1', '#14B8A6', '#15803D', '#334155', '#5A61F6',\n '#65A30D', '#8B5CF6', '#9333EA', '#F59E0B', '#F97316'];\n break;\n case 'tailwinddark':\n themePalette = ['#10B981', '#22D3EE', '#2DD4BF', '#4ADE80', '#8B5CF6',\n '#E879F9', '#F472B6', '#F87171', '#F97316', '#FCD34D'];\n break;\n case 'bootstrap5':\n themePalette = ['#262E0B', '#668E1F', '#AF6E10', '#862C0B', '#1F2D50',\n '#64680B', '#311508', '#4C4C81', '#0C7DA0', '#862C0B'];\n break;\n case 'bootstrap5dark':\n themePalette = ['#5ECB9B', '#A860F1', '#EBA844', '#557EF7', '#E9599B',\n '#BFC529', '#3BC6CF', '#7A68EC', '#74B706', '#EA6266'];\n break;\n case 'fluent':\n themePalette = ['#614570', '#4C6FB1', '#CC6952', '#3F579A', '#4EA09B',\n '#6E7A89', '#D4515C', '#E6AF5D', '#639751', '#9D4D69'];\n break;\n case 'fluentdark':\n themePalette = ['#8AB113', '#2A72D5', '#43B786', '#584EC6', '#E85F9C',\n '#6E7A89', '#EA6266', '#EBA844', '#26BC7A', '#BC4870'];\n break;\n case 'material3':\n themePalette = ['#6200EE', '#E77A16', '#82C100', '#7107DC', '#05BB3D',\n '#D21020', '#FAD200', '#0085FF', '#9204EA', '#08EE9B'];\n break;\n case 'material3dark':\n themePalette = ['#4EAAFF', '#FA4EAB', '#FFF500', '#17EA58', '#38FFE7',\n '#FF9E45', '#B3F32F', '#B93CE4', '#FC5664', '#9B55FF'];\n break;\n default:\n themePalette = ['#B5E485', '#7BC1E8', '#DF819C', '#EC9B79', '#78D0D3',\n '#D6D572', '#9178E3', '#A1E5B4', '#87A4B4', '#E4C16C'];\n break;\n }\n return themePalette;\n}\n/**\n * HighContrast Theme configuration\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HighContrastTheme;\n(function (HighContrastTheme) {\n /** @private */\n HighContrastTheme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#FFFFFF',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n HighContrastTheme.mapsSubTitleFont = {\n size: '13px',\n fontWeight: 'Medium',\n color: '#FFFFFF',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n HighContrastTheme.tooltipLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#000000',\n fontStyle: 'Regular',\n fontFamily: 'Roboto'\n };\n /** @private */\n HighContrastTheme.legendTitleFont = {\n size: '14px',\n fontWeight: 'Regular',\n color: '#FFFFFF',\n fontStyle: 'Regular',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n HighContrastTheme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Medium',\n color: '#FFFFFF',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n HighContrastTheme.dataLabelFont = {\n size: '12px',\n fontWeight: 'Medium',\n color: '#000000',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(HighContrastTheme || (HighContrastTheme = {}));\n/**\n * Dark Theme configuration\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var DarkTheme;\n(function (DarkTheme) {\n /** @private */\n DarkTheme.mapsTitleFont = {\n fontFamily: 'Roboto, Noto, Sans-serif',\n fontWeight: 'Medium',\n size: '14px',\n fontStyle: 'Medium',\n color: '#FFFFFF'\n };\n /** @private */\n DarkTheme.mapsSubTitleFont = {\n size: '13px',\n color: '#FFFFFF',\n fontWeight: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif',\n fontStyle: 'Medium'\n };\n /** @private */\n DarkTheme.tooltipLabelFont = {\n size: '12px',\n color: '#282727',\n fontWeight: 'Regular',\n fontFamily: 'Roboto',\n fontStyle: 'Regular'\n };\n /** @private */\n DarkTheme.legendTitleFont = {\n size: '14px',\n fontWeight: 'Regular',\n color: '#FFFFFF',\n fontStyle: 'Regular',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n /** @private */\n DarkTheme.legendLabelFont = {\n size: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n fontWeight: 'Medium',\n color: '#DADADA',\n fontStyle: 'Medium'\n };\n})(DarkTheme || (DarkTheme = {}));\n/**\n * Method to get the theme style\n *\n * @param {MapsTheme} theme - Specifies the theme.\n * @returns {IThemeStyle} - Returns the theme style.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'materialdark':\n case 'fabricdark':\n case 'bootstrapdark':\n style = {\n backgroundColor: color,\n areaBackgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontSize: '14px',\n subTitleFontColor: '#FFFFFF',\n legendTitleFontColor: '#DADADA',\n legendTextColor: '#DADADA',\n dataLabelFontColor: '#DADADA',\n tooltipFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n zoomFillColor: '#FFFFFF',\n labelFontFamily: 'Roboto, Noto, Sans-serif',\n fontFamily: 'Roboto, Noto, Sans-serif',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontWeight: 'Medium',\n zoomSelectionColor: '#e61576',\n shapeFill: '#A6A6A6',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n areaBackgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontSize: '14px',\n subTitleFontColor: '#FFFFFF',\n legendTitleFontColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n dataLabelFontColor: '#000000',\n tooltipFontColor: '#000000',\n tooltipFillColor: '#ffffff',\n zoomFillColor: '#FFFFFF',\n fontFamily: 'Roboto, Noto, Sans-serif',\n fontSize: '12px',\n fontWeight: 'Medium',\n labelFontFamily: 'Roboto, Noto, Sans-serif',\n titleFontWeight: 'Medium',\n zoomSelectionColor: '#e61576',\n shapeFill: '#A6A6A6',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n areaBackgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n legendTitleFontColor: '#212529',\n legendTextColor: '#212529',\n dataLabelFontColor: '#212529',\n tooltipFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n zoomFillColor: '#5B6269',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '16px',\n legendFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n labelFontFamily: 'HelveticaNeue-Medium',\n titleFontWeight: 'Medium',\n zoomSelectionColor: '#e61576',\n shapeFill: '#A6A6A6',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n areaBackgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n legendTitleFontColor: '#374151',\n legendTextColor: '#6B7280',\n dataLabelFontColor: '#505967',\n tooltipFontColor: '#F9FAFB',\n tooltipFillColor: '#111827',\n zoomFillColor: '#6b7280',\n fontFamily: 'Inter',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n labelFontFamily: 'Inter',\n titleFontWeight: '500',\n zoomSelectionColor: '#374151',\n shapeFill: '#E5E7EB',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n areaBackgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n legendTitleFontColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n dataLabelFontColor: '#D1D5DB',\n tooltipFontColor: '#1F2937',\n tooltipFillColor: '#F9FAFB',\n zoomFillColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n labelFontFamily: 'Inter',\n titleFontWeight: '500',\n zoomSelectionColor: '#F3F4F6',\n shapeFill: '#374151',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n areaBackgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n legendTitleFontColor: '#212529',\n legendTextColor: '#212529',\n dataLabelFontColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillColor: '#212529',\n zoomFillColor: '#6C757D',\n fontFamily: 'Helvetica Neue',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n labelFontFamily: 'Helvetica Neue',\n titleFontWeight: 'normal',\n zoomSelectionColor: '#343A40',\n shapeFill: '#E9ECEF',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n areaBackgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n legendTitleFontColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n dataLabelFontColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFillColor: '#E9ECEF',\n zoomFillColor: '#B5BABE',\n fontFamily: 'Helvetica Neue',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n labelFontFamily: 'Helvetica Neue',\n titleFontWeight: 'normal',\n zoomSelectionColor: '#DEE2E6',\n shapeFill: '#495057',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n areaBackgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n legendTitleFontColor: '#201F1E',\n legendTextColor: '#201F1E',\n dataLabelFontColor: '#201F1E',\n tooltipFontColor: '#323130',\n tooltipFillColor: '#FFFFFF',\n zoomFillColor: '#A19F9D',\n fontFamily: 'Segoe UI',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n labelFontFamily: 'Segoe UI',\n titleFontWeight: '600',\n zoomSelectionColor: '#323130',\n shapeFill: '#F3F2F1',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n areaBackgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n legendTitleFontColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n dataLabelFontColor: '#F3F2F1',\n tooltipFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n zoomFillColor: '#484644',\n fontFamily: 'Segoe UI',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n labelFontFamily: 'Segoe UI',\n titleFontWeight: '600',\n zoomSelectionColor: '#F3F2F1',\n shapeFill: '#252423',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n areaBackgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n subTitleFontColor: '#1C1B1F',\n legendTitleFontColor: '#1C1B1F',\n legendTextColor: '#49454E',\n dataLabelFontColor: '#1C1B1F',\n tooltipFontColor: '#F4EFF4',\n tooltipFillColor: '#313033',\n zoomFillColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '14px',\n titleFontSize: '16px',\n subTitleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n labelFontFamily: 'Roboto',\n titleFontWeight: '500',\n fontWeight: '400',\n zoomSelectionColor: '#49454E',\n shapeFill: '#E7E0EC',\n rectangleZoomFillColor: '#6750A4',\n rectangleZoomFillOpacity: 0.24,\n rectangleZoomBorderColor: \"#6750A4\"\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n areaBackgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n subTitleFontColor: '#E6E1E5',\n legendTitleFontColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n dataLabelFontColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFillColor: '#E6E1E5',\n zoomFillColor: '#E6E1E5',\n fontFamily: 'Roboto',\n fontSize: '14px',\n titleFontSize: '16px',\n subTitleFontSize: '14px',\n legendFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n labelFontFamily: 'Roboto',\n titleFontWeight: '500',\n fontWeight: '400',\n zoomSelectionColor: '#E6E1E5',\n shapeFill: '#49454F',\n rectangleZoomFillColor: '#D0BCFF',\n rectangleZoomFillOpacity: 0.24,\n rectangleZoomBorderColor: \"#D0BCFF\"\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n areaBackgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontSize: '14px',\n subTitleFontColor: '#424242',\n legendTitleFontColor: '#757575',\n legendTextColor: '#757575',\n dataLabelFontColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n zoomFillColor: '#737373',\n labelFontFamily: 'Roboto, Noto, Sans-serif',\n fontFamily: 'Roboto, Noto, Sans-serif',\n fontSize: '12px',\n fontWeight: 'Medium',\n titleFontWeight: 'Medium',\n zoomSelectionColor: '#e61576',\n shapeFill: '#A6A6A6',\n rectangleZoomFillColor: '#d3d3d3',\n rectangleZoomFillOpacity: 0.5,\n rectangleZoomBorderColor: \"#009900\"\n };\n break;\n }\n return style;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable max-len */\n/**\n * Maps base document\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from './theme';\nimport { Point } from '../utils/helper';\n/**\n * Gets or sets the options for customizing the annotation element in maps.\n */\nvar Annotation = /** @class */ (function (_super) {\n __extends(Annotation, _super);\n function Annotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Annotation.prototype, \"content\", void 0);\n __decorate([\n Property('0px')\n ], Annotation.prototype, \"x\", void 0);\n __decorate([\n Property('0px')\n ], Annotation.prototype, \"y\", void 0);\n __decorate([\n Property('None')\n ], Annotation.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property('None')\n ], Annotation.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('-1')\n ], Annotation.prototype, \"zIndex\", void 0);\n return Annotation;\n}(ChildProperty));\nexport { Annotation };\n/**\n * Gets or sets the options to customize the arrow in the navigation line.\n */\nvar Arrow = /** @class */ (function (_super) {\n __extends(Arrow, _super);\n function Arrow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Start')\n ], Arrow.prototype, \"position\", void 0);\n __decorate([\n Property('false')\n ], Arrow.prototype, \"showArrow\", void 0);\n __decorate([\n Property(2)\n ], Arrow.prototype, \"size\", void 0);\n __decorate([\n Property('black')\n ], Arrow.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Arrow.prototype, \"offSet\", void 0);\n return Arrow;\n}(ChildProperty));\nexport { Arrow };\n/**\n * Gets or sets the options to customize the style of the text in data label, legend and other texts in maps.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('12px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Roboto, Noto, Sans-serif')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Medium')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Medium')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Specifies the options to customize the buttons in the zoom toolbar.\n */\nvar ZoomToolbarButtonSettings = /** @class */ (function (_super) {\n __extends(ZoomToolbarButtonSettings, _super);\n function ZoomToolbarButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], ZoomToolbarButtonSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], ZoomToolbarButtonSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarButtonSettings.prototype, \"borderOpacity\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarButtonSettings.prototype, \"borderWidth\", void 0);\n __decorate([\n Property(null)\n ], ZoomToolbarButtonSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property(30)\n ], ZoomToolbarButtonSettings.prototype, \"radius\", void 0);\n __decorate([\n Property(null)\n ], ZoomToolbarButtonSettings.prototype, \"selectionColor\", void 0);\n __decorate([\n Property(null)\n ], ZoomToolbarButtonSettings.prototype, \"highlightColor\", void 0);\n __decorate([\n Property(5)\n ], ZoomToolbarButtonSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarButtonSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['ZoomIn', 'ZoomOut', 'Reset'])\n ], ZoomToolbarButtonSettings.prototype, \"toolbarItems\", void 0);\n return ZoomToolbarButtonSettings;\n}(ChildProperty));\nexport { ZoomToolbarButtonSettings };\n/**\n * Specifies the options to customize the tooltip of the zoom toolbar.\n */\nvar ZoomToolbarTooltipSettings = /** @class */ (function (_super) {\n __extends(ZoomToolbarTooltipSettings, _super);\n function ZoomToolbarTooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ZoomToolbarTooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('white')\n ], ZoomToolbarTooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarTooltipSettings.prototype, \"borderOpacity\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarTooltipSettings.prototype, \"borderWidth\", void 0);\n __decorate([\n Property('#707070')\n ], ZoomToolbarTooltipSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property('black')\n ], ZoomToolbarTooltipSettings.prototype, \"fontColor\", void 0);\n __decorate([\n Property('')\n ], ZoomToolbarTooltipSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], ZoomToolbarTooltipSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('')\n ], ZoomToolbarTooltipSettings.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], ZoomToolbarTooltipSettings.prototype, \"fontSize\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarTooltipSettings.prototype, \"fontOpacity\", void 0);\n return ZoomToolbarTooltipSettings;\n}(ChildProperty));\nexport { ZoomToolbarTooltipSettings };\n/**\n * Sets and gets the options to customize the border of the zoom toolbar.\n */\nvar ZoomToolbarSettings = /** @class */ (function (_super) {\n __extends(ZoomToolbarSettings, _super);\n function ZoomToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], ZoomToolbarSettings.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarSettings.prototype, \"borderOpacity\", void 0);\n __decorate([\n Property(1)\n ], ZoomToolbarSettings.prototype, \"borderWidth\", void 0);\n __decorate([\n Property('transparent')\n ], ZoomToolbarSettings.prototype, \"borderColor\", void 0);\n __decorate([\n Property('Far')\n ], ZoomToolbarSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Near')\n ], ZoomToolbarSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property('Horizontal')\n ], ZoomToolbarSettings.prototype, \"orientation\", void 0);\n __decorate([\n Complex({}, ZoomToolbarButtonSettings)\n ], ZoomToolbarSettings.prototype, \"buttonSettings\", void 0);\n __decorate([\n Complex({}, ZoomToolbarTooltipSettings)\n ], ZoomToolbarSettings.prototype, \"tooltipSettings\", void 0);\n return ZoomToolbarSettings;\n}(ChildProperty));\nexport { ZoomToolbarSettings };\n/**\n * Gets or sets the options to customize the border of the maps.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Border.prototype, \"opacity\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Gets or sets the values to change the center position of the maps.\n */\nvar CenterPosition = /** @class */ (function (_super) {\n __extends(CenterPosition, _super);\n function CenterPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], CenterPosition.prototype, \"latitude\", void 0);\n __decorate([\n Property(null)\n ], CenterPosition.prototype, \"longitude\", void 0);\n return CenterPosition;\n}(ChildProperty));\nexport { CenterPosition };\n/**\n * Gets or sets the options to customize the tooltip of layers, markers, and bubble in maps.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"valuePath\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Gets or sets the options to customize the margin of the maps.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Gets or sets the options to customize the lines that connect the markers in marker cluster of the maps.\n */\nvar ConnectorLineSettings = /** @class */ (function (_super) {\n __extends(ConnectorLineSettings, _super);\n function ConnectorLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#000000')\n ], ConnectorLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ConnectorLineSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ConnectorLineSettings.prototype, \"opacity\", void 0);\n return ConnectorLineSettings;\n}(ChildProperty));\nexport { ConnectorLineSettings };\n/**\n * Gets or sets the options to customize the cluster of markers in maps.\n */\nvar MarkerClusterSettings = /** @class */ (function (_super) {\n __extends(MarkerClusterSettings, _super);\n function MarkerClusterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerClusterSettings.prototype, \"allowClustering\", void 0);\n __decorate([\n Property(true)\n ], MarkerClusterSettings.prototype, \"allowDeepClustering\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], MarkerClusterSettings.prototype, \"border\", void 0);\n __decorate([\n Property('#D2691E')\n ], MarkerClusterSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], MarkerClusterSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Rectangle')\n ], MarkerClusterSettings.prototype, \"shape\", void 0);\n __decorate([\n Property(12)\n ], MarkerClusterSettings.prototype, \"width\", void 0);\n __decorate([\n Property(12)\n ], MarkerClusterSettings.prototype, \"height\", void 0);\n __decorate([\n Property(new Point(0, 0))\n ], MarkerClusterSettings.prototype, \"offset\", void 0);\n __decorate([\n Property('')\n ], MarkerClusterSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('')\n ], MarkerClusterSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({}, Font)\n ], MarkerClusterSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(false)\n ], MarkerClusterSettings.prototype, \"allowClusterExpand\", void 0);\n __decorate([\n Complex({}, ConnectorLineSettings)\n ], MarkerClusterSettings.prototype, \"connectorLineSettings\", void 0);\n return MarkerClusterSettings;\n}(ChildProperty));\nexport { MarkerClusterSettings };\n/**\n * Gets or sets the data in the marker cluster.\n */\nvar MarkerClusterData = /** @class */ (function (_super) {\n __extends(MarkerClusterData, _super);\n function MarkerClusterData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return MarkerClusterData;\n}(ChildProperty));\nexport { MarkerClusterData };\n/**\n * Gets or sets the options to customize the color-mapping in maps.\n */\nvar ColorMappingSettings = /** @class */ (function (_super) {\n __extends(ColorMappingSettings, _super);\n function ColorMappingSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMappingSettings.prototype, \"label\", void 0);\n __decorate([\n Property(true)\n ], ColorMappingSettings.prototype, \"showLegend\", void 0);\n return ColorMappingSettings;\n}(ChildProperty));\nexport { ColorMappingSettings };\n/**\n * Gets or sets the options to select the marker shape when the maps is loaded initially.\n * The initial selection of the markers will work only when the selection settings of marker is enabled.\n */\nvar InitialMarkerSelectionSettings = /** @class */ (function (_super) {\n __extends(InitialMarkerSelectionSettings, _super);\n function InitialMarkerSelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialMarkerSelectionSettings.prototype, \"latitude\", void 0);\n __decorate([\n Property(null)\n ], InitialMarkerSelectionSettings.prototype, \"longitude\", void 0);\n return InitialMarkerSelectionSettings;\n}(ChildProperty));\nexport { InitialMarkerSelectionSettings };\n/**\n * Gets or sets the options to select the shapes when the maps is loaded initially.\n * The initial selection of the shapes will work only when the selection settings of layer is enabled.\n */\nvar InitialShapeSelectionSettings = /** @class */ (function (_super) {\n __extends(InitialShapeSelectionSettings, _super);\n function InitialShapeSelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialShapeSelectionSettings.prototype, \"shapePath\", void 0);\n __decorate([\n Property(null)\n ], InitialShapeSelectionSettings.prototype, \"shapeValue\", void 0);\n return InitialShapeSelectionSettings;\n}(ChildProperty));\nexport { InitialShapeSelectionSettings };\n/**\n * Gets or sets the options to customize the maps on selecting the shapes.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableMultiSelect\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Gets or sets the options to customize the shapes on which the mouse has hovered in maps.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(1)\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Defines the properties for a single polygon shape to render over the Maps, such as coordinates, fill, border, and opacity.\n */\nvar PolygonSetting = /** @class */ (function (_super) {\n __extends(PolygonSetting, _super);\n function PolygonSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], PolygonSetting.prototype, \"borderWidth\", void 0);\n __decorate([\n Property(1)\n ], PolygonSetting.prototype, \"borderOpacity\", void 0);\n __decorate([\n Property(1)\n ], PolygonSetting.prototype, \"opacity\", void 0);\n __decorate([\n Property('#FF471A')\n ], PolygonSetting.prototype, \"borderColor\", void 0);\n __decorate([\n Property('#FF471A')\n ], PolygonSetting.prototype, \"fill\", void 0);\n __decorate([\n Property([])\n ], PolygonSetting.prototype, \"points\", void 0);\n return PolygonSetting;\n}(ChildProperty));\nexport { PolygonSetting };\n/**\n * Defines the properties of the polygon shapes that will be rendered on a map layer.\n * The selection and highlight settings for polygon shapes can also be defined.\n */\nvar PolygonSettings = /** @class */ (function (_super) {\n __extends(PolygonSettings, _super);\n function PolygonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], PolygonSetting)\n ], PolygonSettings.prototype, \"polygons\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], PolygonSettings.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], PolygonSettings.prototype, \"highlightSettings\", void 0);\n return PolygonSettings;\n}(ChildProperty));\nexport { PolygonSettings };\n/**\n * Gets or sets the options to customize the navigation lines in maps which is used to connect different locations.\n */\nvar NavigationLineSettings = /** @class */ (function (_super) {\n __extends(NavigationLineSettings, _super);\n function NavigationLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], NavigationLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(1)\n ], NavigationLineSettings.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NavigationLineSettings.prototype, \"longitude\", void 0);\n __decorate([\n Property(null)\n ], NavigationLineSettings.prototype, \"latitude\", void 0);\n __decorate([\n Property('')\n ], NavigationLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('black')\n ], NavigationLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], NavigationLineSettings.prototype, \"angle\", void 0);\n __decorate([\n Complex({ showArrow: false, position: 'Start', size: 5, color: 'black' }, Arrow)\n ], NavigationLineSettings.prototype, \"arrowSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], NavigationLineSettings.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], NavigationLineSettings.prototype, \"highlightSettings\", void 0);\n return NavigationLineSettings;\n}(ChildProperty));\nexport { NavigationLineSettings };\n/**\n * Gets or sets the options to customize the bubble elements in the maps.\n */\nvar BubbleSettings = /** @class */ (function (_super) {\n __extends(BubbleSettings, _super);\n function BubbleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], BubbleSettings.prototype, \"border\", void 0);\n __decorate([\n Property(false)\n ], BubbleSettings.prototype, \"visible\", void 0);\n __decorate([\n Property([])\n ], BubbleSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], BubbleSettings.prototype, \"query\", void 0);\n __decorate([\n Property(1000)\n ], BubbleSettings.prototype, \"animationDuration\", void 0);\n __decorate([\n Property(0)\n ], BubbleSettings.prototype, \"animationDelay\", void 0);\n __decorate([\n Property('')\n ], BubbleSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(10)\n ], BubbleSettings.prototype, \"minRadius\", void 0);\n __decorate([\n Property(20)\n ], BubbleSettings.prototype, \"maxRadius\", void 0);\n __decorate([\n Property(1)\n ], BubbleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], BubbleSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property('Circle')\n ], BubbleSettings.prototype, \"bubbleType\", void 0);\n __decorate([\n Property(null)\n ], BubbleSettings.prototype, \"colorValuePath\", void 0);\n __decorate([\n Collection([], ColorMappingSettings)\n ], BubbleSettings.prototype, \"colorMapping\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], BubbleSettings.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], BubbleSettings.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], BubbleSettings.prototype, \"highlightSettings\", void 0);\n return BubbleSettings;\n}(ChildProperty));\nexport { BubbleSettings };\n/**\n * Gets or sets the options to customize the title of the maps.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Gets or sets the options to customize the subtitle of the maps.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ size: null, fontWeight: null, fontFamily: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Gets or sets the options to customize the title of the maps.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ size: null, fontWeight: null, fontFamily: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Gets or sets the options to configure maps zooming operations.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enablePanning\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property('Horizontal')\n ], ZoomSettings.prototype, \"toolBarOrientation\", void 0);\n __decorate([\n Property(null)\n ], ZoomSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ZoomSettings.prototype, \"highlightColor\", void 0);\n __decorate([\n Property(null)\n ], ZoomSettings.prototype, \"selectionColor\", void 0);\n __decorate([\n Property('Far')\n ], ZoomSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Near')\n ], ZoomSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(['ZoomIn', 'ZoomOut', 'Reset'])\n ], ZoomSettings.prototype, \"toolbars\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"mouseWheelZoom\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"doubleClickZoom\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"pinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"zoomOnClick\", void 0);\n __decorate([\n Property(1)\n ], ZoomSettings.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(10)\n ], ZoomSettings.prototype, \"maxZoom\", void 0);\n __decorate([\n Property(1)\n ], ZoomSettings.prototype, \"minZoom\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"shouldZoomInitially\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"resetToInitial\", void 0);\n __decorate([\n Complex({}, ZoomToolbarSettings)\n ], ZoomSettings.prototype, \"toolbarSettings\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\n/**\n * Gets or sets the settings to customize the color-mapping visibility based on the legend visibility.\n */\nvar ToggleLegendSettings = /** @class */ (function (_super) {\n __extends(ToggleLegendSettings, _super);\n function ToggleLegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ToggleLegendSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ToggleLegendSettings.prototype, \"applyShapeSettings\", void 0);\n __decorate([\n Property(1)\n ], ToggleLegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], ToggleLegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: '', width: 0 }, Border)\n ], ToggleLegendSettings.prototype, \"border\", void 0);\n return ToggleLegendSettings;\n}(ChildProperty));\nexport { ToggleLegendSettings };\n/**\n * Gets or sets the options to customize the legend of the maps.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"useMarkerShape\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Layers')\n ], LegendSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: null, color: Theme.legendTitleFont.color, fontStyle: Theme.legendTitleFont.fontStyle, fontWeight: null, fontFamily: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n __decorate([\n Complex({}, ToggleLegendSettings)\n ], LegendSettings.prototype, \"toggleLegendSettings\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Gets or sets the options to customize the data labels in maps.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Complex({ width: 0, color: 'transparent' }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Property('black')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Complex({ fontWeight: null }, Font)\n ], DataLabelSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('')\n ], DataLabelSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property('None')\n ], DataLabelSettings.prototype, \"smartLabelMode\", void 0);\n __decorate([\n Property('None')\n ], DataLabelSettings.prototype, \"intersectionAction\", void 0);\n __decorate([\n Property('')\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"animationDuration\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Gets or sets the options to customize the shapes in the maps.\n */\nvar ShapeSettings = /** @class */ (function (_super) {\n __extends(ShapeSettings, _super);\n function ShapeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ShapeSettings.prototype, \"fill\", void 0);\n __decorate([\n Property([])\n ], ShapeSettings.prototype, \"palette\", void 0);\n __decorate([\n Property(5)\n ], ShapeSettings.prototype, \"circleRadius\", void 0);\n __decorate([\n Complex({ width: null, color: '#000000' }, Border)\n ], ShapeSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], ShapeSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property(1)\n ], ShapeSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ShapeSettings.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property(null)\n ], ShapeSettings.prototype, \"borderColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], ShapeSettings.prototype, \"borderWidthValuePath\", void 0);\n __decorate([\n Property(null)\n ], ShapeSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Collection([], ColorMappingSettings)\n ], ShapeSettings.prototype, \"colorMapping\", void 0);\n __decorate([\n Property(false)\n ], ShapeSettings.prototype, \"autofill\", void 0);\n return ShapeSettings;\n}(ChildProperty));\nexport { ShapeSettings };\n/**\n * Gets or sets the options to customize the markers in the maps.\n */\nvar MarkerBase = /** @class */ (function (_super) {\n __extends(MarkerBase, _super);\n function MarkerBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], MarkerBase.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property(false)\n ], MarkerBase.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], MarkerBase.prototype, \"enableDrag\", void 0);\n __decorate([\n Property('#FF471A')\n ], MarkerBase.prototype, \"fill\", void 0);\n __decorate([\n Property(10)\n ], MarkerBase.prototype, \"height\", void 0);\n __decorate([\n Property(10)\n ], MarkerBase.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], MarkerBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"shapeValuePath\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"imageUrlValuePath\", void 0);\n __decorate([\n Property('Balloon')\n ], MarkerBase.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerBase.prototype, \"legendText\", void 0);\n __decorate([\n Property(new Point(0, 0))\n ], MarkerBase.prototype, \"offset\", void 0);\n __decorate([\n Property('')\n ], MarkerBase.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"template\", void 0);\n __decorate([\n Property([])\n ], MarkerBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], MarkerBase.prototype, \"query\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], MarkerBase.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Property(1000)\n ], MarkerBase.prototype, \"animationDuration\", void 0);\n __decorate([\n Property(0)\n ], MarkerBase.prototype, \"animationDelay\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], MarkerBase.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], MarkerBase.prototype, \"highlightSettings\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"latitudeValuePath\", void 0);\n __decorate([\n Property(null)\n ], MarkerBase.prototype, \"longitudeValuePath\", void 0);\n __decorate([\n Collection([], InitialMarkerSelectionSettings)\n ], MarkerBase.prototype, \"initialMarkerSelection\", void 0);\n return MarkerBase;\n}(ChildProperty));\nexport { MarkerBase };\n/**\n * Gets or sets the options to customize the markers in the maps.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function MarkerSettings(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n return MarkerSettings;\n}(MarkerBase));\nexport { MarkerSettings };\n/**\n * Gets or sets the options to customize the layers of the maps.\n */\nvar LayerSettings = /** @class */ (function (_super) {\n __extends(LayerSettings, _super);\n function LayerSettings() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @private\n */\n _this.isBaseLayer = false;\n return _this;\n }\n __decorate([\n Property(null)\n ], LayerSettings.prototype, \"shapeData\", void 0);\n __decorate([\n Property()\n ], LayerSettings.prototype, \"query\", void 0);\n __decorate([\n Complex({}, ShapeSettings)\n ], LayerSettings.prototype, \"shapeSettings\", void 0);\n __decorate([\n Property([])\n ], LayerSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('Layer')\n ], LayerSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Geographic')\n ], LayerSettings.prototype, \"geometryType\", void 0);\n __decorate([\n Property('Aerial')\n ], LayerSettings.prototype, \"bingMapType\", void 0);\n __decorate([\n Property('RoadMap')\n ], LayerSettings.prototype, \"staticMapType\", void 0);\n __decorate([\n Property('')\n ], LayerSettings.prototype, \"key\", void 0);\n __decorate([\n Property('Geometry')\n ], LayerSettings.prototype, \"layerType\", void 0);\n __decorate([\n Property('')\n ], LayerSettings.prototype, \"urlTemplate\", void 0);\n __decorate([\n Property(true)\n ], LayerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('name')\n ], LayerSettings.prototype, \"shapeDataPath\", void 0);\n __decorate([\n Property('name')\n ], LayerSettings.prototype, \"shapePropertyPath\", void 0);\n __decorate([\n Property(0)\n ], LayerSettings.prototype, \"animationDuration\", void 0);\n __decorate([\n Collection([], MarkerSettings)\n ], LayerSettings.prototype, \"markerSettings\", void 0);\n __decorate([\n Complex({}, MarkerClusterSettings)\n ], LayerSettings.prototype, \"markerClusterSettings\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], LayerSettings.prototype, \"dataLabelSettings\", void 0);\n __decorate([\n Collection([], BubbleSettings)\n ], LayerSettings.prototype, \"bubbleSettings\", void 0);\n __decorate([\n Collection([], NavigationLineSettings)\n ], LayerSettings.prototype, \"navigationLineSettings\", void 0);\n __decorate([\n Complex({}, PolygonSettings)\n ], LayerSettings.prototype, \"polygonSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], LayerSettings.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], LayerSettings.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], LayerSettings.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, ToggleLegendSettings)\n ], LayerSettings.prototype, \"toggleLegendSettings\", void 0);\n __decorate([\n Collection([], InitialShapeSelectionSettings)\n ], LayerSettings.prototype, \"initialShapeSelection\", void 0);\n return LayerSettings;\n}(ChildProperty));\nexport { LayerSettings };\n/**\n * Internal use for bing type layer rendering\n */\nvar Tile = /** @class */ (function () {\n function Tile(x, y, height, width, top, left, src) {\n if (height === void 0) { height = 256; }\n if (width === void 0) { width = 256; }\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (src === void 0) { src = null; }\n this.x = x;\n this.y = y;\n this.top = top;\n this.left = left;\n this.height = height;\n this.width = width;\n this.src = src;\n }\n return Tile;\n}());\nexport { Tile };\n/**\n * Gets or sets the options to customize the area around the shapes in the map layer.\n */\nvar MapsAreaSettings = /** @class */ (function (_super) {\n __extends(MapsAreaSettings, _super);\n function MapsAreaSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MapsAreaSettings.prototype, \"background\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], MapsAreaSettings.prototype, \"border\", void 0);\n return MapsAreaSettings;\n}(ChildProperty));\nexport { MapsAreaSettings };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Bing map src doc\n */\nvar BingMap = /** @class */ (function () {\n function BingMap(maps) {\n this.maps = maps;\n }\n BingMap.prototype.getBingMap = function (tile, key, type, language, imageUrl, subDomains) {\n var quadKey = '';\n var maxZoom = Math.min(this.maps.tileZoomLevel, parseInt(this.maxZoom, 10));\n for (var i = maxZoom; i > 0; i--) {\n var digit = 0;\n var mask = 1 << (i - 1);\n if ((tile.x & mask) !== 0) {\n digit++;\n }\n if ((tile.y & mask) !== 0) {\n digit += 2;\n }\n quadKey = quadKey + '' + digit;\n }\n if (!isNullOrUndefined(subDomains)) {\n var subDomain = subDomains[Math.min(parseInt(quadKey.substr(quadKey.length - 1, 1), 10), subDomains.length)];\n imageUrl = imageUrl.replace('{quadkey}', quadKey).replace('{subdomain}', subDomain);\n return imageUrl += '&mkt=' + language + '&ur=IN&Key=' + key;\n }\n else {\n return '';\n }\n };\n /**\n * @returns {void}\n * @private\n */\n BingMap.prototype.destroy = function () {\n this.maps = null;\n this.subDomains = [];\n };\n return BingMap;\n}());\nexport { BingMap };\n","import { ColorValue } from '../index';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getValueFromObject } from '../utils/helper';\n/**\n * ColorMapping class\n */\nvar ColorMapping = /** @class */ (function () {\n function ColorMapping(maps) {\n this.maps = maps;\n }\n /**\n * To get color based on shape settings.\n *\n * @param { ShapeSettingsModel } shapeSettings - Specifies the shape settings.\n * @param { object } layerData - Specifies the layer data.\n * @param { string } color - Specifies the color.\n * @returns {Object} - Returns the object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ColorMapping.prototype.getShapeColorMapping = function (shapeSettings, layerData, color) {\n var colorValuePath = shapeSettings.colorValuePath ? shapeSettings.colorValuePath : shapeSettings.valuePath;\n var equalValue = (!isNullOrUndefined(colorValuePath)) ? ((colorValuePath.indexOf('.') > -1) ?\n getValueFromObject(layerData, colorValuePath) : layerData[colorValuePath]) : layerData[colorValuePath];\n var colorValue = Number(equalValue);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeColor = this.getColorByValue(shapeSettings.colorMapping, colorValue, equalValue);\n return !isNullOrUndefined(shapeColor) ? shapeColor : color;\n };\n /**\n * To color by value and color mapping\n *\n * @param {ColorMappingSettingsModel[]} colorMapping - Specifies the color mapping instance.\n * @param {number} colorValue - Specifies the color value\n * @param {string} equalValue - Specifies the equal value.\n * @returns {any} - Returns the color mapping values.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ColorMapping.prototype.getColorByValue = function (colorMapping, colorValue, equalValue) {\n if (isNaN(colorValue) && isNullOrUndefined(equalValue)) {\n return null;\n }\n var fill = '';\n var opacity;\n var gradientFill;\n for (var _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\n if ((!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to)\n && (colorValue >= colorMap.from && colorValue <= colorMap.to)) ||\n (colorMap.value === equalValue)) {\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n if (!isNullOrUndefined(colorMap.value)) {\n fill = colorMap.color[0];\n }\n else {\n gradientFill = this.getColor(colorMap, colorValue);\n fill = gradientFill;\n }\n }\n else {\n fill = colorMap.color;\n }\n }\n if (((colorValue >= colorMap.from && colorValue <= colorMap.to) || (colorMap.value === equalValue))\n && (!isNullOrUndefined(colorMap.minOpacity) && !isNullOrUndefined(colorMap.maxOpacity) && fill)) {\n opacity = this.deSaturationColor(colorMap, fill, colorValue, equalValue);\n }\n if ((fill === '' || isNullOrUndefined(fill)) && isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) && isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value)) {\n fill = Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n }\n }\n return { fill: fill || ((!colorMapping.length) ? equalValue : null), opacity: opacity };\n };\n ColorMapping.prototype.deSaturationColor = function (colorMapping, color, rangeValue, equalValue) {\n var opacity = 1;\n if (((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to) || colorMapping.value === equalValue)) {\n var ratio = !isNaN(rangeValue) ? (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from) :\n colorMapping.from / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity;\n };\n ColorMapping.prototype.rgbToHex = function (r, g, b) {\n return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\n };\n ColorMapping.prototype.componentToHex = function (value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n ColorMapping.prototype.getColor = function (colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = this.getGradientColor(Number(value), colorMap);\n color = this.rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n };\n ColorMapping.prototype.getGradientColor = function (value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : this._colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : this._colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : this._colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : this._colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : this._colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : this._colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : this._colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : this._colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return this.getPercentageColor(percent, previousColor, nextColor);\n };\n ColorMapping.prototype.getPercentageColor = function (percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = this.getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = this.getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = this.getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n };\n ColorMapping.prototype.getPercentage = function (percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n };\n ColorMapping.prototype._colorNameToHex = function (color) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var colors = {\n 'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff', 'aquamarine': '#7fffd4', 'azure': '#f0ffff',\n 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000', 'blanchedalmond': '#ffebcd', 'blue': '#0000ff',\n 'blueviolet': '#8a2be2', 'brown': '#a52a2a', 'burlywood': '#deb887',\n 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e', 'coral': '#ff7f50',\n 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc', 'crimson': '#dc143c', 'cyan': '#00ffff',\n 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b', 'darkgray': '#a9a9a9', 'darkgreen': '#006400',\n 'darkkhaki': '#bdb76b', 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f',\n 'darkorange': '#ff8c00', 'darkorchid': '#9932cc', 'darkred': '#8b0000', 'darksalmon': '#e9967a', 'darkseagreen': '#8fbc8f',\n 'darkslateblue': '#483d8b', 'darkslategray': '#2f4f4f', 'darkturquoise': '#00ced1',\n 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff', 'dimgray': '#696969', 'dodgerblue': '#1e90ff',\n 'firebrick': '#b22222', 'floralwhite': '#fffaf0', 'forestgreen': '#228b22', 'fuchsia': '#ff00ff',\n 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff', 'gold': '#ffd700', 'goldenrod': '#daa520', 'gray': '#808080',\n 'green': '#008000', 'greenyellow': '#adff2f',\n 'honeydew': '#f0fff0', 'hotpink': '#ff69b4',\n 'indianred ': '#cd5c5c', 'indigo ': '#4b0082', 'ivory': '#fffff0', 'khaki': '#f0e68c',\n 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00', 'lemonchiffon': '#fffacd', 'lightblue': '#add8e6',\n 'lightcoral': '#f08080', 'lightcyan': '#e0ffff', 'lightgoldenrodyellow': '#fafad2',\n 'lightgrey': '#d3d3d3', 'lightgreen': '#90ee90', 'lightpink': '#ffb6c1', 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa',\n 'lightskyblue': '#87cefa', 'lightslategray': '#778899', 'lightsteelblue': '#b0c4de',\n 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32', 'linen': '#faf0e6',\n 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa', 'mediumblue': '#0000cd', 'mediumorchid': '#ba55d3',\n 'mediumpurple': '#9370d8', 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee',\n 'mediumspringgreen': '#00fa9a', 'mediumturquoise': '#48d1cc', 'mediumvioletred': '#c71585', 'midnightblue': '#191970',\n 'mintcream': '#f5fffa', 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5',\n 'navajowhite': '#ffdead', 'navy': '#000080', 'orchid': '#da70d6', 'papayawhip': '#ffefd5',\n 'oldlace': '#fdf5e6', 'olive': '#808000', 'olivedrab': '#6b8e23', 'orange': '#ffa500', 'orangered': '#ff4500',\n 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee', 'palevioletred': '#d87093',\n 'peachpuff': '#ffdab9', 'peru': '#cd853f', 'pink': '#ffc0cb', 'plum': '#dda0dd', 'powderblue': '#b0e0e6', 'purple': '#800080',\n 'red': '#ff0000', 'rosybrown': '#bc8f8f', 'royalblue': '#4169e1',\n 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460', 'seagreen': '#2e8b57', 'seashell': '#fff5ee',\n 'sienna': '#a0522d', 'silver': '#c0c0c0', 'skyblue': '#87ceeb', 'slateblue': '#6a5acd',\n 'slategray': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f', 'steelblue': '#4682b4',\n 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347', 'turquoise': '#40e0d0',\n 'violet': '#ee82ee',\n 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5',\n 'yellow': '#ffff00', 'yellowgreen': '#9acd32'\n };\n if (Object.prototype.toString.call(color) === '[object Array]') {\n return color;\n }\n if (typeof colors[color.toLowerCase()] !== 'undefined') {\n return colors[color.toLowerCase()];\n }\n return color;\n };\n return ColorMapping;\n}());\nexport { ColorMapping };\n","/* eslint-disable no-case-declarations */\nimport { isNullOrUndefined, extend, createElement, Fetch, animationMode } from '@syncfusion/ej2-base';\nimport { getShapeColor } from '../model/theme';\nimport { GeoLocation, isCustomPath, convertGeoToPoint, Point, PathOption, Size, removeElement } from '../utils/helper';\nimport { getElementByID, maintainSelection, getValueFromObject } from '../utils/helper';\nimport { RectOption, getTranslate, convertTileLatLongToPoint, checkShapeDataFields, CircleOption } from '../utils/helper';\nimport { getZoomTranslate, fixInitialScaleForTile } from '../utils/helper';\nimport { Tile } from '../model/base';\nimport { BingMap } from './bing-map';\nimport { ColorMapping } from './color-mapping';\nimport { layerRendering, shapeRendering } from '../index';\n/**\n * To calculate and render the shape layer\n */\nvar LayerPanel = /** @class */ (function () {\n function LayerPanel(map) {\n this.isMapCoordinates = true;\n this.horizontalPan = false;\n this.horizontalPanXCount = 0;\n this.mapObject = map;\n this.ajaxModule = new Fetch();\n this.ajaxResponse = [];\n }\n LayerPanel.prototype.measureLayerPanel = function () {\n var _this = this;\n var layerCollection = this.mapObject.layersCollection;\n var areaRect = this.mapObject.mapAreaRect;\n var secondaryEle = getElementByID(this.mapObject.element.id + '_Secondary_Element');\n if (this.mapObject.isTileMap && secondaryEle) {\n this.tileSvgObject = this.mapObject.renderer.createSvg({\n id: this.mapObject.element.id + '_Tile_SVG', width: areaRect.width,\n height: areaRect.height\n });\n var parentElement = createElement('div', {\n id: this.mapObject.element.id + '_Tile_SVG_Parent'\n });\n parentElement.style.cssText = 'position: absolute; height: ' + (areaRect.height) + 'px; width: ' +\n (areaRect.width) + 'px;';\n parentElement.appendChild(this.tileSvgObject);\n secondaryEle.appendChild(parentElement);\n }\n this.layerGroup = (this.mapObject.renderer.createGroup({\n id: this.mapObject.element.id + '_Layer_Collections',\n 'clip-path': 'url(#' + this.mapObject.element.id + '_MapArea_ClipRect)'\n }));\n if (this.mapObject.layers[this.mapObject.baseLayerIndex].layerType === 'GoogleStaticMap') {\n var staticMapSize = 640;\n this.clipRectElement = this.mapObject.renderer.drawClipPath(new RectOption(this.mapObject.element.id + '_MapArea_ClipRect', 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: ((areaRect.width - staticMapSize) / 2), y: 0,\n width: staticMapSize, height: areaRect.height\n }));\n }\n else {\n this.clipRectElement = this.mapObject.renderer.drawClipPath(new RectOption(this.mapObject.element.id + '_MapArea_ClipRect', 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: this.mapObject.isTileMap ? 0 : areaRect.x, y: this.mapObject.isTileMap ? 0 : areaRect.y,\n width: areaRect.width, height: areaRect.height\n }));\n }\n this.layerGroup.appendChild(this.clipRectElement);\n this.mapObject.baseMapBounds = null;\n this.mapObject.baseMapRectBounds = null;\n this.mapObject.baseSize = null;\n Array.prototype.forEach.call(layerCollection, function (layer, index) {\n _this.currentLayer = layer;\n _this.processLayers(layer, index);\n });\n if (!isNullOrUndefined(this.mapObject.legendModule) && this.mapObject.legendSettings.position === 'Float') {\n if (this.mapObject.isTileMap) {\n this.layerGroup.appendChild(this.mapObject.legendModule.legendGroup);\n }\n else {\n this.mapObject.svgObject.appendChild(this.mapObject.legendModule.legendGroup);\n }\n }\n };\n /**\n * Tile rendering\n *\n * @param {LayerPanel} panel - Specifies the layer panel.\n * @param {LayerSettings} layer - Specifies the layer settings.\n * @param {number} layerIndex - Specifies the layer index.\n * @param {BingMap} bing - Specifies the bing map.\n * @returns {void}\n * @private\n */\n LayerPanel.prototype.renderTileLayer = function (panel, layer, layerIndex, bing) {\n panel.currentFactor = panel.calculateFactor(layer);\n panel.mapObject.defaultState = ((panel.mapObject.zoomSettings.zoomFactor !== 1) &&\n (!isNullOrUndefined(panel.mapObject.tileZoomLevel) && panel.mapObject.tileZoomLevel !== 1)) ?\n false : true;\n if (isNullOrUndefined(panel.mapObject.previousCenterLatitude) &&\n isNullOrUndefined(panel.mapObject.previousCenterLongitude) && !panel.mapObject.isZoomByPosition) {\n panel.mapObject.previousCenterLatitude = panel.mapObject.centerPosition.latitude;\n panel.mapObject.previousCenterLongitude = panel.mapObject.centerPosition.longitude;\n }\n else if ((panel.mapObject.previousCenterLatitude !==\n panel.mapObject.centerPosition.latitude && panel.mapObject.previousCenterLongitude !==\n panel.mapObject.centerPosition.longitude) || panel.mapObject.isZoomByPosition) {\n panel.mapObject.centerPositionChanged = true;\n panel.mapObject.previousCenterLatitude = panel.mapObject.centerPosition.latitude;\n panel.mapObject.previousCenterLongitude = panel.mapObject.centerPosition.longitude;\n }\n else {\n panel.mapObject.centerPositionChanged = false;\n }\n var center = new Point(panel.mapObject.centerPosition.longitude, panel.mapObject.centerPosition.latitude);\n var centerTileMap = center;\n if ((this.mapObject.isTileMap && panel.mapObject.markerModule) && panel.mapObject.zoomSettings.enable) {\n panel.mapObject.markerModule.calculateZoomCenterPositionAndFactor(this.mapObject.layersCollection);\n if (!isNullOrUndefined(this.mapObject.markerCenterLatitude) && !isNullOrUndefined(this.mapObject.markerCenterLongitude)\n && !panel.mapObject.isZoomByPosition) {\n centerTileMap = new Point(panel.mapObject.markerCenterLongitude, panel.mapObject.markerCenterLatitude);\n }\n }\n if (!panel.mapObject.zoomSettings.shouldZoomInitially && panel.mapObject.centerPosition.longitude\n && panel.mapObject.centerPosition.latitude && !panel.mapObject.zoomPersistence && panel.mapObject.defaultState) {\n center = new Point(panel.mapObject.centerPosition.longitude, panel.mapObject.centerPosition.latitude);\n }\n else if (panel.mapObject.zoomSettings.shouldZoomInitially\n && panel.mapObject.markerZoomedState && !panel.mapObject.zoomPersistence\n && !isNullOrUndefined(panel.mapObject.markerZoomCenterPoint)) {\n center = new Point(panel.mapObject.markerZoomCenterPoint.longitude, panel.mapObject.markerZoomCenterPoint.latitude);\n }\n else {\n center = { x: null, y: null };\n }\n var zoomFactorValue = (panel.mapObject.zoomSettings.shouldZoomInitially && !panel.mapObject.isZoomByPosition) ?\n isNullOrUndefined(panel.mapObject.markerZoomFactor) ? 1 :\n panel.mapObject.markerZoomFactor : panel.mapObject.zoomSettings.zoomFactor;\n zoomFactorValue = (panel.mapObject.enablePersistence) ? ((isNullOrUndefined(panel.mapObject.mapScaleValue))\n ? (isNullOrUndefined(panel.mapObject.markerZoomFactor) ? panel.mapObject.zoomSettings.zoomFactor :\n panel.mapObject.markerZoomFactor) : panel.mapObject.mapScaleValue) : zoomFactorValue;\n zoomFactorValue = panel.mapObject.zoomSettings.enable ? zoomFactorValue : panel.mapObject.zoomSettings.zoomFactor;\n zoomFactorValue = zoomFactorValue > 0 ? zoomFactorValue : 1;\n panel.mapObject.defaultState = zoomFactorValue !== 1 ? false : true;\n if (!panel.mapObject.markerZoomedState && panel.mapObject.zoomSettings.shouldZoomInitially &&\n panel.mapObject.zoomSettings.zoomFactor === 1) {\n panel.mapObject.defaultState = true;\n }\n if (isNullOrUndefined(panel.mapObject.tileZoomLevel)) {\n panel.mapObject.tileZoomLevel = zoomFactorValue;\n panel.mapObject.previousZoomFactor = zoomFactorValue;\n }\n else if (this.mapObject.isReset && panel.mapObject.tileZoomLevel === 1 && !panel.mapObject.zoomSettings.shouldZoomInitially) {\n var zoomLevel = panel.mapObject.tileZoomLevel;\n panel.mapObject.tileZoomLevel = zoomLevel;\n }\n else if (panel.mapObject.zoomSettings.zoomFactor !== 1 || panel.mapObject.zoomSettings.shouldZoomInitially) {\n panel.mapObject.previousZoomFactor = panel.mapObject.tileZoomLevel;\n panel.mapObject.tileZoomLevel = panel.mapObject.defaultState && panel.mapObject.zoomSettings.enable ?\n panel.mapObject.tileZoomLevel : !panel.mapObject.zoomSettings.shouldZoomInitially\n && !panel.mapObject.centerPositionChanged ?\n panel.mapObject.previousZoomFactor !== panel.mapObject.zoomSettings.zoomFactor ?\n panel.mapObject.zoomSettings.zoomFactor : panel.mapObject.tileZoomLevel : zoomFactorValue;\n panel.mapObject.tileZoomLevel = zoomFactorValue === 1 && panel.mapObject.zoomSettings.zoomFactor === 0 ?\n zoomFactorValue : panel.mapObject.tileZoomLevel;\n if (!isNullOrUndefined(panel.mapObject.tileTranslatePoint) &&\n (panel.mapObject.markerZoomFactor !== panel.mapObject.mapScaleValue\n || (isNullOrUndefined(panel.mapObject.markerZoomFactor)\n && isNullOrUndefined(panel.mapObject.mapScaleValue)))\n && (panel.mapObject.zoomSettings.zoomFactor <= 1 || panel.mapObject.previousZoomFactor !==\n panel.mapObject.zoomSettings.zoomFactor)) {\n panel.mapObject.tileTranslatePoint.x = 0;\n panel.mapObject.tileTranslatePoint.y = 0;\n }\n }\n else if (panel.mapObject.defaultState) {\n panel.mapObject.previousZoomFactor = panel.mapObject.tileZoomLevel;\n panel.mapObject.tileZoomLevel = zoomFactorValue;\n panel.mapObject.tileTranslatePoint.x = 0;\n panel.mapObject.tileTranslatePoint.y = 0;\n }\n if (zoomFactorValue <= 1 && !isNullOrUndefined(panel.mapObject.height) && !panel.mapObject.zoomSettings.shouldZoomInitially\n && (panel.mapObject.tileZoomLevel === panel.mapObject.tileZoomScale) && this.mapObject.initialCheck) {\n fixInitialScaleForTile(this.mapObject);\n }\n if (!isNullOrUndefined(panel.mapObject.centerLatOfGivenLocation) && !isNullOrUndefined(panel.mapObject.centerLongOfGivenLocation) &&\n panel.mapObject.zoomNotApplied) {\n centerTileMap.y = panel.mapObject.centerLatOfGivenLocation;\n centerTileMap.x = panel.mapObject.centerLongOfGivenLocation;\n panel.mapObject.tileZoomLevel = panel.mapObject.mapScaleValue = panel.mapObject.scaleOfGivenLocation;\n }\n panel.mapObject.tileTranslatePoint = panel.panTileMap(panel.mapObject.availableSize.width, panel.mapObject.availableSize.height, centerTileMap);\n if (this.mapObject.zoomSettings.resetToInitial && this.mapObject.initialCheck && !isNullOrUndefined(panel.mapObject.height)\n && this.mapObject.availableSize.height > 512) {\n this.mapObject.applyZoomReset = true;\n this.mapObject.initialZoomLevel = Math.floor(this.mapObject.availableSize.height / 512);\n var padding = this.mapObject.layers[this.mapObject.baseLayerIndex].layerType !== 'GoogleStaticMap' ?\n 20 : 0;\n var totalSize = Math.pow(2, this.mapObject.initialZoomLevel) * 256;\n this.mapObject.initialTileTranslate.x = (this.mapObject.availableSize.width / 2) - (totalSize / 2);\n this.mapObject.initialTileTranslate.y = (this.mapObject.availableSize.height / 2) - (totalSize / 2) + padding;\n }\n panel.generateTiles(panel.mapObject.tileZoomLevel, panel.mapObject.tileTranslatePoint, null, bing);\n if (!isNullOrUndefined(panel.mapObject.previousZoomFactor)\n && panel.mapObject.previousZoomFactor !== panel.mapObject.zoomSettings.zoomFactor) {\n panel.mapObject.previousZoomFactor = panel.mapObject.zoomSettings.zoomFactor;\n }\n if (panel.mapObject.polygonModule) {\n var polygonElement = panel.mapObject.polygonModule.polygonRender(this.mapObject, layerIndex, panel.mapObject.tileZoomLevel);\n if (!isNullOrUndefined(polygonElement)) {\n panel.layerObject.appendChild(polygonElement);\n }\n }\n if (panel.mapObject.navigationLineModule) {\n var navigationLineElement = panel.mapObject.navigationLineModule.renderNavigation(panel.currentLayer, panel.mapObject.tileZoomLevel, layerIndex);\n if (!isNullOrUndefined(navigationLineElement)) {\n panel.layerObject.appendChild(navigationLineElement);\n }\n }\n if (panel.mapObject.markerModule) {\n panel.mapObject.markerModule.markerRender(this.mapObject, panel.layerObject, layerIndex, panel.mapObject.tileZoomLevel, null);\n }\n panel.translateLayerElements(panel.layerObject, layerIndex);\n panel.layerGroup.appendChild(panel.layerObject);\n };\n LayerPanel.prototype.processLayers = function (layer, layerIndex) {\n var _this = this;\n this.layerObject = (this.mapObject.renderer.createGroup({\n id: this.mapObject.element.id + '_LayerIndex_' + layerIndex\n }));\n if (!this.mapObject.enablePersistence) {\n var itemName = this.mapObject.getModuleName() + this.mapObject.element.id;\n if (navigator.userAgent.indexOf('Edge') === -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n try {\n data = window.localStorage;\n }\n catch (e) {\n data = null;\n }\n if (!isNullOrUndefined(data) && window.localStorage.getItem(itemName)) {\n window.localStorage.removeItem(itemName);\n }\n }\n }\n var eventArgs = {\n cancel: false, name: layerRendering, index: layerIndex,\n layer: layer, maps: this.mapObject, visible: layer.visible\n };\n this.mapObject.trigger('layerRendering', eventArgs, function (observedArgs) {\n if (!eventArgs.cancel && eventArgs.visible) {\n if (layer.layerType === 'OSM') {\n layer.urlTemplate = 'https://a.tile.openstreetmap.org/level/tileX/tileY.png';\n }\n if (layer.layerType === 'Google') {\n layer.urlTemplate = 'https://mt1.google.com/vt/lyrs=m@129&hl=en&x=tileX&y=tileY&z=level';\n }\n if (layer.layerType !== 'Geometry' || (isNullOrUndefined(layer.shapeData) && !isNullOrUndefined(layer.urlTemplate) && layer.urlTemplate !== '')) {\n if (layer.layerType !== 'Bing' || _this.bing) {\n if (!isNullOrUndefined(layer.urlTemplate) && layer.urlTemplate.indexOf('quadkey') > -1) {\n var bing = new BingMap(_this.mapObject);\n _this.bingMapCalculation(layer, layerIndex, _this, bing);\n }\n else {\n _this.renderTileLayer(_this, layer, layerIndex);\n }\n }\n else if (layer.key && layer.key.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = _this;\n var bing_1 = new BingMap(_this.mapObject);\n var bingType = layer.bingMapType === 'AerialWithLabel' ? 'AerialWithLabelsOnDemand' : layer.bingMapType;\n var url = 'https://dev.virtualearth.net/REST/V1/Imagery/Metadata/' + bingType;\n var ajax = new Fetch({\n url: url + '?output=json&include=ImageryProviders&urischeme=https&key=' + layer.key\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ajax.onSuccess = function (json) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var resource = json['resourceSets'][0]['resources'][0];\n var imageUrl = resource['imageUrl'];\n var subDomains = resource['imageUrlSubdomains'];\n var maxZoom = resource['zoomMax'];\n if (imageUrl !== null && imageUrl !== undefined && imageUrl !== bing_1.imageUrl) {\n bing_1.imageUrl = imageUrl;\n }\n if (subDomains !== null && subDomains !== undefined && subDomains !== bing_1.subDomains) {\n bing_1.subDomains = subDomains;\n }\n if (maxZoom !== null && maxZoom !== undefined && maxZoom !== bing_1.maxZoom) {\n bing_1.maxZoom = maxZoom;\n }\n proxy_1.mapObject['bingMap'] = bing_1;\n proxy_1.renderTileLayer(proxy_1, layer, layerIndex, bing_1);\n _this.mapObject.arrangeTemplate();\n if (_this.mapObject.zoomModule && (_this.mapObject.previousScale !== _this.mapObject.scale)) {\n _this.mapObject.zoomModule.applyTransform(_this.mapObject, true);\n }\n };\n ajax.send();\n }\n }\n else {\n if (!isNullOrUndefined(layer.shapeData) && (!isNullOrUndefined(layer.shapeData['geometries']) ||\n !isNullOrUndefined(layer.shapeData['features']))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var featureData = (!isNullOrUndefined(layer.shapeData['geometries']) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.shapeData['geometries'].length > 0 ? layer.shapeData['geometries'] :\n layer.shapeData['features']);\n layer.layerData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var bbox = layer.shapeData['bbox'];\n if (!isNullOrUndefined(bbox) && layer.isBaseLayer) {\n _this.mapObject.baseMapBounds = new GeoLocation({ min: bbox[0][1], max: bbox[1][1] }, { min: bbox[0][0], max: bbox[1][0] });\n }\n else if (isNullOrUndefined(_this.mapObject.baseMapBounds) && !isCustomPath(featureData)) {\n _this.calculateRectBounds(featureData);\n }\n _this.calculatePathCollection(layerIndex, featureData);\n }\n }\n }\n });\n if (!this.mapObject.isTileMap) {\n this.mapObject.svgObject.appendChild(this.layerGroup);\n }\n else if (this.tileSvgObject) {\n this.tileSvgObject.appendChild(this.layerGroup);\n this.mapObject.baseMapBounds = null;\n }\n };\n LayerPanel.prototype.bingMapCalculation = function (layer, layerIndex, proxy, bing) {\n bing.imageUrl = layer.urlTemplate;\n bing.subDomains = ['t0', 't1', 't2', 't3'];\n bing.maxZoom = '21';\n proxy.mapObject['bingMap'] = bing;\n proxy.renderTileLayer(proxy, layer, layerIndex, bing);\n this.mapObject.arrangeTemplate();\n if (this.mapObject.zoomModule && (this.mapObject.previousScale !== this.mapObject.scale)) {\n this.mapObject.zoomModule.applyTransform(this.mapObject, true);\n }\n };\n LayerPanel.prototype.bubbleCalculation = function (bubbleSettings, range) {\n if (bubbleSettings.dataSource != null && bubbleSettings != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var bubbleDataSource = bubbleSettings.dataSource;\n for (var i = 0; i < bubbleDataSource.length; i++) {\n var bubbledata = (!isNullOrUndefined(bubbleSettings.valuePath)) ? ((bubbleSettings.valuePath.indexOf('.') > -1) ?\n Number(getValueFromObject(bubbleSettings.dataSource[i], bubbleSettings.valuePath)) :\n parseFloat(bubbleSettings.dataSource[i][bubbleSettings.valuePath])) :\n parseFloat(bubbleSettings.dataSource[i][bubbleSettings.valuePath]);\n if (i !== 0) {\n if (bubbledata > range.max) {\n range.max = bubbledata;\n }\n else if (bubbledata < range.min) {\n range.min = bubbledata;\n }\n }\n else {\n range.max = range.min = bubbledata;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.calculatePathCollection = function (layerIndex, renderData) {\n var _this = this;\n this.groupElements = [];\n if ((!isCustomPath(renderData))) {\n this.currentFactor = this.calculateFactor(this.currentLayer);\n }\n this.rectBounds = null;\n var shapeSettings = this.currentLayer.shapeSettings;\n var bubbleSettings = this.currentLayer.bubbleSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(renderData, function (geometryData, index) {\n if (!isNullOrUndefined(geometryData['geometry']) || !isNullOrUndefined(geometryData['coordinates'])) {\n var type = !isNullOrUndefined(geometryData['geometry']) ? geometryData['geometry']['type'] : geometryData['type'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coords = !isNullOrUndefined(geometryData['geometry']) ? geometryData['geometry']['coordinates'] :\n geometryData['coordinates'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = geometryData['geometry'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var properties = geometryData['properties'];\n _this.generatePoints(type, coords, data, properties);\n }\n });\n this.currentLayer.rectBounds = this.rectBounds;\n if (isNullOrUndefined(this.mapObject.baseMapRectBounds) && this.currentLayer.isBaseLayer) {\n this.mapObject.baseMapRectBounds = this.rectBounds;\n }\n var colors = shapeSettings.palette.length > 1 ? shapeSettings.palette : getShapeColor(this.mapObject.theme);\n var labelTemplateEle = createElement('div', {\n id: this.mapObject.element.id + '_LayerIndex_' + layerIndex + '_Label_Template_Group',\n className: this.mapObject.element.id + '_template'\n });\n labelTemplateEle.style.cssText = 'pointer-events: none; overflow: hidden; position: absolute;' +\n 'top:' + this.mapObject.mapAreaRect.y + 'px;' +\n 'left:' + this.mapObject.mapAreaRect.x + 'px;' +\n 'height:' + this.mapObject.mapAreaRect.height + 'px;' +\n 'width:' + this.mapObject.mapAreaRect.width + 'px;';\n if (this.currentLayer.layerData.length !== 0) {\n var _loop_1 = function (i) {\n var k = void 0;\n var borderValue = {\n color: shapeSettings.border.color,\n width: shapeSettings.border.width,\n opacity: shapeSettings.border.opacity\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentShapeData = this_1.currentLayer.layerData[i];\n var pathOptions;\n var polyLineOptions = void 0;\n var circleOptions;\n var groupElement;\n var drawObject = void 0;\n var path = '';\n var points = '';\n var fill = (shapeSettings.autofill) ? colors[i % colors.length] :\n (shapeSettings.fill || this_1.mapObject.themeStyle.shapeFill);\n if (shapeSettings.colorValuePath !== null && !isNullOrUndefined(currentShapeData['property'])) {\n k = checkShapeDataFields(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.currentLayer.dataSource, currentShapeData['property'], this_1.currentLayer.shapeDataPath, this_1.currentLayer.shapePropertyPath, this_1.currentLayer);\n if (k !== null && shapeSettings.colorMapping.length === 0) {\n fill = ((this_1.currentLayer.shapeSettings.colorValuePath.indexOf('.') > -1) ?\n (getValueFromObject(this_1.currentLayer.dataSource[k], shapeSettings.colorValuePath)) :\n this_1.currentLayer.dataSource[k][shapeSettings.colorValuePath]);\n }\n else if (currentShapeData['property'][shapeSettings.colorValuePath] &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.currentLayer.dataSource.length === 0 && shapeSettings.colorMapping.length === 0) {\n fill = ((this_1.currentLayer.shapeSettings.colorValuePath.indexOf('.') > -1) ?\n (getValueFromObject(currentShapeData['property'], shapeSettings.colorValuePath)) :\n currentShapeData['property'][shapeSettings.colorValuePath]);\n }\n fill = !isNullOrUndefined(fill) ? fill : (shapeSettings.fill || this_1.mapObject.themeStyle.shapeFill);\n }\n var shapeID = this_1.mapObject.element.id + '_LayerIndex_' + layerIndex + '_shapeIndex_' + i + '_dataIndex_' + k;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var getShapeColor_1 = this_1.getShapeColorMapping(this_1.currentLayer, currentShapeData['property'], fill);\n fill = Object.prototype.toString.call(getShapeColor_1) === '[object Object]' && !isNullOrUndefined(getShapeColor_1['fill'])\n ? getShapeColor_1['fill'] : fill;\n if (this_1.currentLayer.shapeSettings.borderColorValuePath || this_1.currentLayer.shapeSettings.borderWidthValuePath) {\n k = checkShapeDataFields(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.currentLayer.dataSource, currentShapeData['property'], this_1.currentLayer.shapeDataPath, this_1.currentLayer.shapePropertyPath, this_1.currentLayer);\n if (k !== null) {\n if (this_1.currentLayer.dataSource[k][shapeSettings.borderColorValuePath]) {\n borderValue.color = this_1.currentLayer.dataSource[k][shapeSettings.borderColorValuePath];\n }\n if (this_1.currentLayer.dataSource[k][shapeSettings.borderWidthValuePath]) {\n borderValue.width = this_1.currentLayer.dataSource[k][shapeSettings.borderWidthValuePath];\n }\n }\n }\n var opacity = (Object.prototype.toString.call(getShapeColor_1) === '[object Object]'\n && !isNullOrUndefined(getShapeColor_1['opacity'])) ? getShapeColor_1['opacity'] : shapeSettings.opacity;\n var eventArgs = {\n cancel: false, name: shapeRendering, index: i,\n data: this_1.currentLayer.dataSource ? this_1.currentLayer.dataSource[k] : null,\n maps: this_1.mapObject,\n shape: shapeSettings, fill: fill,\n border: { width: borderValue.width, color: borderValue.color, opacity: borderValue.opacity }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeRenderingSuccess = function (eventArgs) {\n var drawingType = !isNullOrUndefined(currentShapeData['_isMultiPolygon'])\n ? 'MultiPolygon' : isNullOrUndefined(currentShapeData['type']) ? currentShapeData[0]['type'] : currentShapeData['type'];\n drawingType = (drawingType === 'Polygon' || drawingType === 'MultiPolygon') ? 'Polygon' : drawingType;\n if (!eventArgs.cancel) {\n eventArgs.fill = eventArgs.fill === '#A6A6A6' ? eventArgs.shape.fill ||\n _this.mapObject.themeStyle.shapeFill : eventArgs.fill;\n eventArgs.border.color = eventArgs.border.color === '#000000' ?\n eventArgs.shape.border.color : eventArgs.border.color;\n eventArgs.border.width = eventArgs.border.width === 0 ? eventArgs.shape.border.width : eventArgs.border.width;\n if (isNullOrUndefined(shapeSettings.borderColorValuePath)) {\n _this.mapObject.layers[layerIndex].shapeSettings.border.color = eventArgs.border.color;\n }\n if (isNullOrUndefined(shapeSettings.borderWidthValuePath)) {\n _this.mapObject.layers[layerIndex].shapeSettings.border.width = eventArgs.border.width;\n }\n }\n else {\n eventArgs.fill = fill;\n eventArgs.border.color = shapeSettings.border.color;\n eventArgs.border.width = shapeSettings.border.width;\n _this.mapObject.layers[layerIndex].shapeSettings.border = shapeSettings.border;\n }\n eventArgs.border.opacity = isNullOrUndefined(eventArgs.border.opacity) ? opacity : eventArgs.border.opacity;\n if (_this.groupElements.length < 1) {\n groupElement = _this.mapObject.renderer.createGroup({\n id: _this.mapObject.element.id + '_LayerIndex_' + layerIndex + '_' + drawingType + '_Group', transform: ''\n });\n _this.groupElements.push(groupElement);\n }\n else {\n for (var i_1 = 0; i_1 < _this.groupElements.length; i_1++) {\n var ele = _this.groupElements[i_1];\n if (ele.id.indexOf(drawingType) > -1) {\n groupElement = ele;\n break;\n }\n else if (i_1 >= _this.groupElements.length - 1) {\n groupElement = _this.mapObject.renderer.createGroup({\n id: _this.mapObject.element.id + '_LayerIndex_' + layerIndex + '_' + drawingType + '_Group'\n });\n _this.groupElements.push(groupElement);\n break;\n }\n }\n }\n var pathEle;\n switch (drawingType) {\n case 'Polygon':\n if (!currentShapeData['_isMultiPolygon']) {\n path += 'M' + (currentShapeData[0]['point']['x']) + ' ' + (currentShapeData[0]['point']['y']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentShapeData.map(function (shapeData) {\n path += ' L ' + (shapeData['point']['x']) + ' ' + (shapeData['point']['y']);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n path = _this.generateMultiPolygonPath(currentShapeData);\n }\n path += ' z ';\n if (path.length > 3) {\n pathOptions = new PathOption(shapeID, eventArgs.fill, eventArgs.border.width, eventArgs.border.color, opacity, eventArgs.border.opacity, shapeSettings.dashArray, path);\n pathEle = _this.mapObject.renderer.drawPath(pathOptions);\n }\n break;\n case 'LineString':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentShapeData.map(function (lineData, index) {\n if (index === 0) {\n path += 'M ' + (lineData['point']['x']) + ' ' + (lineData['point']['y']);\n }\n else {\n path += 'L' + (lineData['point']['x']) + ' , ' + (lineData['point']['y']) + ' ';\n }\n });\n if (path.length > 3) {\n pathOptions = new PathOption(shapeID, 'transparent', !isNullOrUndefined(eventArgs.border.width) ? eventArgs.border.width : 1, !isNullOrUndefined(eventArgs.fill) ? eventArgs.fill :\n eventArgs.border.color, opacity, eventArgs.border.opacity, shapeSettings.dashArray, path);\n pathEle = _this.mapObject.renderer.drawPath(pathOptions);\n }\n break;\n case 'MultiLineString':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentShapeData.map(function (multilineData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n multilineData.map(function (lineData, index) {\n if (index === 0) {\n path += 'M ' + (lineData['point']['x']) + ' ' + (lineData['point']['y']);\n }\n else {\n path += 'L' + (lineData['point']['x']) + ' , ' + (lineData['point']['y']) + ' ';\n }\n });\n });\n if (path.length > 3) {\n pathOptions = new PathOption(shapeID, 'transparent', !isNullOrUndefined(eventArgs.border.width) ? eventArgs.border.width : 1, !isNullOrUndefined(eventArgs.fill) ? eventArgs.fill :\n eventArgs.border.color, opacity, eventArgs.border.opacity, shapeSettings.dashArray, path);\n pathEle = _this.mapObject.renderer.drawPath(pathOptions);\n }\n break;\n case 'Point':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pointData = currentShapeData['point'];\n var circleRadius = (_this.mapObject.layers[layerIndex].type !== 'SubLayer') ?\n shapeSettings.circleRadius : shapeSettings.circleRadius / (_this.mapObject.isTileMap ?\n _this.mapObject.scale : _this.currentFactor);\n circleOptions = new CircleOption(shapeID, eventArgs.fill, eventArgs.border, opacity, pointData['x'], pointData['y'], circleRadius, shapeSettings.dashArray);\n pathEle = _this.mapObject.renderer.drawCircle(circleOptions);\n break;\n case 'MultiPoint':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentShapeData.map(function (multiPointData, index) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pointData = multiPointData['point'];\n var circleRadius = (_this.mapObject.layers[layerIndex].type !== 'SubLayer') ? shapeSettings.circleRadius : shapeSettings.circleRadius / (_this.mapObject.isTileMap ? _this.mapObject.scale : _this.currentFactor);\n circleOptions = new CircleOption((shapeID + '_multiLine_' + index), eventArgs.fill, eventArgs.border, opacity, pointData['x'], pointData['y'], circleRadius, shapeSettings.dashArray);\n pathEle = _this.mapObject.renderer.drawCircle(circleOptions);\n _this.pathAttributeCalculate(groupElement, pathEle, drawingType, currentShapeData, i);\n });\n break;\n case 'Path':\n path = currentShapeData['point'];\n pathOptions = new PathOption(shapeID, eventArgs.fill, eventArgs.border.width, eventArgs.border.color, opacity, eventArgs.border.opacity, shapeSettings.dashArray, path);\n pathEle = _this.mapObject.renderer.drawPath(pathOptions);\n break;\n }\n if (!isNullOrUndefined(pathEle) && drawingType !== 'MultiPoint') {\n _this.pathAttributeCalculate(groupElement, pathEle, drawingType, currentShapeData, i);\n }\n if (i === _this.currentLayer.layerData.length - 1) {\n _this.layerFeatures(layerIndex, colors, renderData, labelTemplateEle);\n }\n };\n shapeRenderingSuccess.bind(this_1);\n this_1.mapObject.trigger('shapeRendering', eventArgs, shapeRenderingSuccess);\n };\n var this_1 = this;\n for (var i = 0; i < this.currentLayer.layerData.length; i++) {\n _loop_1(i);\n }\n }\n else {\n this.layerFeatures(layerIndex, colors, renderData, labelTemplateEle);\n }\n };\n /**\n * layer features as bubble, marker, datalabel, navigation line.\n *\n * @param {Element} groupElement - Specifies the element to append the group.\n * @param {Element} pathEle - Specifies the svg element.\n * @param {string} drawingType - Specifies the data type.\n * @param {any} currentShapeData - Specifies the layer of shapedata.\n * @param {number} index - Specifies the tab index.\n * @returns {void}\n */\n LayerPanel.prototype.pathAttributeCalculate = function (groupElement, pathEle, drawingType, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentShapeData, index) {\n var property = (Object.prototype.toString.call(this.currentLayer.shapePropertyPath) === '[object Array]' ?\n this.currentLayer.shapePropertyPath : [this.currentLayer.shapePropertyPath]);\n var properties;\n for (var j = 0; j < property.length; j++) {\n if (!isNullOrUndefined(currentShapeData['property'])) {\n properties = property[j];\n break;\n }\n }\n pathEle.setAttribute('aria-label', ((!isNullOrUndefined(currentShapeData['property'])) ?\n (currentShapeData['property'][properties]) : ''));\n if (this.currentLayer.selectionSettings.enable || this.currentLayer.highlightSettings.enable) {\n pathEle.tabIndex = this.mapObject.tabIndex;\n pathEle.setAttribute('role', 'button');\n pathEle.style.cursor = this.currentLayer.highlightSettings.enable && !this.currentLayer.selectionSettings.enable ? 'default' : 'pointer';\n }\n else {\n pathEle.setAttribute('role', 'region');\n }\n if (drawingType === 'LineString' || drawingType === 'MultiLineString') {\n pathEle.style.cssText = 'outline:none';\n }\n maintainSelection(this.mapObject.selectedElementId, this.mapObject.shapeSelectionClass, pathEle, 'ShapeselectionMapStyle');\n if (this.mapObject.toggledShapeElementId) {\n for (var j = 0; j < this.mapObject.toggledShapeElementId.length; j++) {\n var styleProperty = this.mapObject.legendSettings.toggleLegendSettings.applyShapeSettings ?\n this.currentLayer.shapeSettings : this.mapObject.legendSettings.toggleLegendSettings;\n if (this.mapObject.toggledShapeElementId[j] === pathEle.id) {\n pathEle.setAttribute('fill', styleProperty.fill);\n pathEle.setAttribute('stroke', styleProperty.border.color);\n pathEle.setAttribute('fill-opacity', (styleProperty.opacity).toString());\n pathEle.setAttribute('stroke-opacity', (isNullOrUndefined(styleProperty.border.opacity) ? styleProperty.opacity : styleProperty.border.opacity).toString());\n pathEle.setAttribute('stroke-width', (isNullOrUndefined(styleProperty.border.width) ? 0 : styleProperty.border.width).toString());\n }\n }\n }\n groupElement.appendChild(pathEle);\n };\n /**\n * layer features as bubble, marker, datalabel, navigation line.\n *\n * @param {number} layerIndex - Specifies the layer index\n * @param {string[]} colors - Specifies the colors\n * @param {Object[]} renderData - Specifies the render data\n * @param {HTMLElement} labelTemplateEle - Specifies the label template element\n * @returns {void}\n */\n LayerPanel.prototype.layerFeatures = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerIndex, colors, renderData, labelTemplateEle) {\n var _this = this;\n var bubbleG;\n if (this.mapObject.polygonModule) {\n this.groupElements.push(this.mapObject.polygonModule.polygonRender(this.mapObject, layerIndex, (this.mapObject.isTileMap ? Math.floor(this.currentFactor) : this.currentFactor)));\n }\n if (this.currentLayer.bubbleSettings.length && this.mapObject.bubbleModule) {\n var length_1 = this.currentLayer.bubbleSettings.length;\n var bubble_1;\n var _loop_2 = function (j) {\n bubble_1 = this_2.currentLayer.bubbleSettings[j];\n bubbleG = this_2.mapObject.renderer.createGroup({\n id: this_2.mapObject.element.id + '_LayerIndex_' + layerIndex + '_bubble_Group_' + j\n });\n var range = { min: 0, max: 0 };\n this_2.bubbleCalculation(bubble_1, range);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var bubbleDataSource = bubble_1.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_2.mapObject.bubbleModule.bubbleCollection = [];\n bubbleDataSource.map(function (bubbleData, i) {\n _this.renderBubble(_this.currentLayer, bubbleData, colors[i % colors.length], range, j, i, bubbleG, layerIndex, bubble_1);\n });\n this_2.groupElements.push(bubbleG);\n };\n var this_2 = this;\n for (var j = 0; j < length_1; j++) {\n _loop_2(j);\n }\n }\n if ((this.mapObject.markerModule && !this.mapObject.isTileMap) && this.mapObject.zoomSettings.enable) {\n this.mapObject.markerModule.calculateZoomCenterPositionAndFactor(this.mapObject.layersCollection);\n }\n var group = (this.mapObject.renderer.createGroup({\n id: this.mapObject.element.id + '_LayerIndex_' + layerIndex + '_dataLableIndex_Group'\n }));\n group.style.pointerEvents = 'none';\n if (this.mapObject.dataLabelModule && this.currentLayer.dataLabelSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var intersect_1 = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderData.map(function (currentShapeData, i) {\n _this.renderLabel(_this.currentLayer, layerIndex, currentShapeData, group, i, labelTemplateEle, intersect_1);\n });\n this.groupElements.push(group);\n }\n if (this.mapObject.navigationLineModule) {\n this.groupElements.push(this.mapObject.navigationLineModule.renderNavigation(this.currentLayer, this.currentFactor, layerIndex));\n }\n this.groupElements.map(function (element) {\n _this.layerObject.appendChild(element);\n });\n if (this.mapObject.markerModule) {\n this.mapObject.markerModule.markerRender(this.mapObject, this.layerObject, layerIndex, (this.mapObject.isTileMap ? Math.floor(this.currentFactor) :\n this.currentFactor), null);\n }\n this.translateLayerElements(this.layerObject, layerIndex);\n this.layerGroup.appendChild(this.layerObject);\n };\n /**\n * render datalabel\n *\n * @param {LayerSettings} layer - Specifies the layer\n * @param {number} layerIndex - Specifies the layer index\n * @param {any[]} shape - Specifies the shape\n * @param {Element} group - Specifies the group\n * @param {number} shapeIndex - Specifies the shape index\n * @param {HTMLElement} labelTemplateEle - Specifies the label template element\n * @param {any[]} intersect - Specifies the intersect\n * @returns {void}\n */\n LayerPanel.prototype.renderLabel = function (layer, layerIndex, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shape, group, shapeIndex, labelTemplateEle, intersect) {\n this.mapObject.dataLabelModule.renderLabel(layer, layerIndex, shape, layer.layerData, group, labelTemplateEle, shapeIndex, intersect);\n };\n /**\n * To render path for multipolygon\n *\n * @param {any[]} currentShapeData Specifies the current shape data\n * @returns {string} Returns the path\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.generateMultiPolygonPath = function (currentShapeData) {\n var path = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shape;\n for (var j = 0; j < currentShapeData.length; j++) {\n path += 'M' + (currentShapeData[j][0]['point']['x']) + ' ' + (currentShapeData[j][0]['point']['y']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shape = currentShapeData[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shape.map(function (shapeData) {\n path += ' L ' + (shapeData['point']['x']) + ' ' + (shapeData['point']['y']);\n });\n }\n return path;\n };\n /**\n * To render bubble\n *\n * @param {LayerSettings} layer - Specifies the layer\n * @param {object} bubbleData - Specifies the bubble data\n * @param {string} color - Specifies the color\n * @param {number} range - Specifies the range\n * @param {number} bubbleIndex - Specifies the bubble index\n * @param {number} dataIndex - Specifies the data index\n * @param {number} group - Specifies the group\n * @param {number} layerIndex - Specifies the layer index\n * @param {BubbleSettingsModel} bubbleSettings - Specifies the bubble settings\n * @returns {void}\n */\n LayerPanel.prototype.renderBubble = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer, bubbleData, color, range, bubbleIndex, dataIndex, group, layerIndex, bubbleSettings) {\n if (isNullOrUndefined(this.mapObject.bubbleModule) || !bubbleSettings.visible) {\n return null;\n }\n color = bubbleSettings.fill ? bubbleSettings.fill : color;\n this.mapObject.bubbleModule.id = this.mapObject.element.id + '_LayerIndex_' + layerIndex + '_BubbleIndex_' +\n bubbleIndex + '_dataIndex_' + dataIndex;\n this.mapObject.bubbleModule.renderBubble(bubbleSettings, bubbleData, color, range, bubbleIndex, dataIndex, layerIndex, layer, group, this.mapObject.bubbleModule.id);\n };\n /**\n * To get the shape color from color mapping module\n *\n * @param {LayerSettingsModel} layer - Specifies the layer\n * @param {object} shape - Specifies the shape\n * @param {string} color - Specifies the color\n * @returns {Object} - Returns the object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.getShapeColorMapping = function (layer, shape, color) {\n color = color ? color : layer.shapeSettings.fill;\n if (layer.shapeSettings.colorMapping.length === 0 && isNullOrUndefined(layer.dataSource)) {\n return color;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index = checkShapeDataFields(layer.dataSource, shape, layer.shapeDataPath, layer.shapePropertyPath, layer);\n var colorMapping = new ColorMapping(this.mapObject);\n if (isNullOrUndefined(layer.dataSource[index])) {\n return color;\n }\n return colorMapping.getShapeColorMapping(layer.shapeSettings, layer.dataSource[index], color);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.generatePoints = function (type, coordinates, data, properties) {\n var _this = this;\n var latitude;\n var longitude;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = [];\n switch (type.toLowerCase()) {\n case 'polygon':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newData = this.calculatePolygonBox(coordinates[0], data, properties);\n if (newData.length > 0) {\n newData['property'] = properties;\n newData['type'] = type;\n newData['_isMultiPolygon'] = false;\n this.currentLayer.layerData.push(newData);\n }\n break;\n case 'multipolygon':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var multiPolygonDatas = [];\n for (var i = 0; i < coordinates.length; i++) {\n for (var j = 0; j < coordinates[i].length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newData = this.calculatePolygonBox(coordinates[i][j], data, properties);\n if (newData.length > 0) {\n multiPolygonDatas.push(newData);\n }\n }\n }\n multiPolygonDatas['property'] = properties;\n multiPolygonDatas['type'] = type;\n multiPolygonDatas['_isMultiPolygon'] = true;\n this.currentLayer.layerData.push(multiPolygonDatas);\n break;\n case 'linestring':\n var lineExtraSpace_1 = !isNullOrUndefined(this.currentLayer.shapeSettings.border.width) ?\n (typeof (this.currentLayer.shapeSettings.border.width) === 'string' ?\n parseInt(this.currentLayer.shapeSettings.border.width, 10) : this.currentLayer.shapeSettings.border.width) : 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (points) {\n latitude = points[1];\n longitude = points[0];\n var point = convertGeoToPoint(latitude, longitude, _this.currentFactor, _this.currentLayer, _this.mapObject);\n _this.calculateBox(point, lineExtraSpace_1);\n newData.push({\n point: point, lat: latitude, lng: longitude\n });\n });\n newData['property'] = properties;\n newData['type'] = type;\n this.currentLayer.layerData.push(newData);\n break;\n case 'multilinestring':\n var extraSpaces_1 = !isNullOrUndefined(this.currentLayer.shapeSettings.border.width) ?\n (typeof (this.currentLayer.shapeSettings.border.width) === 'string' ?\n parseInt(this.currentLayer.shapeSettings.border.width, 10) : this.currentLayer.shapeSettings.border.width) : 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var multiLineData_1 = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (multiPoints) {\n newData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n multiPoints.map(function (points) {\n latitude = points[1];\n longitude = points[0];\n var point = convertGeoToPoint(latitude, longitude, _this.currentFactor, _this.currentLayer, _this.mapObject);\n _this.calculateBox(point, extraSpaces_1);\n newData.push({\n point: point, lat: latitude, lng: longitude\n });\n });\n multiLineData_1.push(newData);\n });\n multiLineData_1['property'] = properties;\n multiLineData_1['type'] = type;\n this.currentLayer.layerData.push(multiLineData_1);\n break;\n case 'point':\n var pointExtraSpace = (!isNullOrUndefined(this.currentLayer.shapeSettings.border.width) ?\n (typeof (this.currentLayer.shapeSettings.border.width) === 'string' ?\n parseInt(this.currentLayer.shapeSettings.border.width, 10) : this.currentLayer.shapeSettings.border.width) : 1) +\n (this.currentLayer.shapeSettings.circleRadius * 2);\n latitude = coordinates[1];\n longitude = coordinates[0];\n var point = convertGeoToPoint(latitude, longitude, this.currentFactor, this.currentLayer, this.mapObject);\n this.calculateBox(point, pointExtraSpace);\n this.currentLayer.layerData.push({\n point: point, type: type, lat: latitude, lng: longitude, property: properties\n });\n break;\n case 'multipoint':\n var extraSpace_1 = (!isNullOrUndefined(this.currentLayer.shapeSettings.border.width) ?\n (typeof (this.currentLayer.shapeSettings.border.width) === 'string' ?\n parseInt(this.currentLayer.shapeSettings.border.width, 10) : this.currentLayer.shapeSettings.border.width) : 1) +\n (this.currentLayer.shapeSettings.circleRadius * 2);\n newData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (points) {\n latitude = points[1];\n longitude = points[0];\n var point = convertGeoToPoint(latitude, longitude, _this.currentFactor, _this.currentLayer, _this.mapObject);\n _this.calculateBox(point, extraSpace_1);\n newData.push({\n point: point, lat: latitude, lng: longitude\n });\n });\n newData['property'] = properties;\n newData['type'] = type;\n this.currentLayer.layerData.push(newData);\n break;\n case 'path':\n this.currentLayer.layerData.push({\n point: data['d'], type: type, property: properties\n });\n break;\n }\n };\n LayerPanel.prototype.calculateBox = function (point, extraSpace) {\n if (isNullOrUndefined(this.rectBounds)) {\n this.rectBounds = { min: { x: point.x - extraSpace, y: point.y - extraSpace }, max: { x: point.x + extraSpace,\n y: point.y + extraSpace } };\n }\n else {\n this.rectBounds['min']['x'] = Math.min(this.rectBounds['min']['x'], point.x - extraSpace);\n this.rectBounds['min']['y'] = Math.min(this.rectBounds['min']['y'], point.y - extraSpace);\n this.rectBounds['max']['x'] = Math.max(this.rectBounds['max']['x'], point.x + extraSpace);\n this.rectBounds['max']['y'] = Math.max(this.rectBounds['max']['y'], point.y + extraSpace);\n }\n };\n LayerPanel.prototype.calculateFactor = function (layer) {\n var horFactor;\n var verFactor = 1;\n var divide = 10;\n var exp = 'e+1';\n var bounds = this.mapObject.baseMapBounds;\n var mapSize = new Size(this.mapObject.mapAreaRect.width, this.mapObject.mapAreaRect.height - 5);\n var mapHeight;\n var mapWidth;\n if (bounds) {\n var start = convertGeoToPoint(bounds.latitude.min, bounds.longitude.min, null, layer, this.mapObject);\n var end = convertGeoToPoint(bounds.latitude.max, bounds.longitude.max, null, layer, this.mapObject);\n mapHeight = end.y - start.y;\n mapWidth = end.x - start.x;\n if (mapHeight === 0 || mapWidth === 0) {\n mapWidth = mapSize.width / 2;\n mapHeight = mapSize.height;\n }\n }\n else {\n mapHeight = mapWidth = 500;\n }\n if (mapHeight < mapSize.height) {\n horFactor = parseFloat(Math.abs(Number(mapSize.height / Number(mapHeight.toString() + exp)) * 100).toString().split('.')[0])\n / divide;\n }\n else {\n horFactor = mapSize.height / mapHeight;\n }\n if (mapWidth < mapSize.width) {\n verFactor = parseFloat(Math.abs(Number(mapSize.width / Number(mapWidth.toString() + exp)) * 100).toString().split('.')[0])\n / divide;\n }\n else {\n verFactor = mapSize.width / mapWidth;\n }\n return (Math.min(verFactor, horFactor));\n };\n LayerPanel.prototype.translateLayerElements = function (layerElement, index) {\n var childNode;\n this.mapObject.translateType = 'layer';\n if (!isNullOrUndefined(this.mapObject.baseMapRectBounds)) {\n var duration = animationMode === 'Disable' ? 0 : (this.currentLayer.animationDuration === 0 && animationMode === 'Enable') ?\n 1000 : this.currentLayer.animationDuration;\n var animate = duration !== 0 || isNullOrUndefined(this.mapObject.zoomModule);\n this.mapObject.baseTranslatePoint = this.mapObject.zoomTranslatePoint;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var translate = void 0;\n if (this.mapObject.zoomSettings.zoomFactor > 1 && !isNullOrUndefined(this.mapObject.zoomModule)) {\n translate = getZoomTranslate(this.mapObject, this.currentLayer, animate);\n }\n else {\n translate = getTranslate(this.mapObject, this.currentLayer, animate);\n }\n var scale = this.mapObject.previousScale = translate['scale'];\n var location_1 = this.mapObject.previousPoint = translate['location'];\n this.mapObject.baseTranslatePoint = this.mapObject.translatePoint = location_1;\n this.mapObject.baseScale = this.mapObject.scale = scale;\n for (var i = 0; i < layerElement.childElementCount; i++) {\n childNode = layerElement.childNodes[i];\n if (!(childNode.id.indexOf('_Markers_Group') > -1) &&\n (!(childNode.id.indexOf('_bubble_Group') > -1)) &&\n (!(childNode.id.indexOf('_dataLableIndex_Group') > -1))) {\n var transform = 'scale( ' + scale + ' ) '\n + 'translate( ' + location_1.x + ' ' + location_1.y + ' ) ';\n childNode.setAttribute('transform', transform);\n if (duration > 0 && !isNullOrUndefined(this.mapObject.zoomModule)) {\n if (this.mapObject.zoomSettings.zoomFactor > 1) {\n translate = getZoomTranslate(this.mapObject, this.currentLayer);\n }\n else {\n translate = getTranslate(this.mapObject, this.currentLayer);\n }\n this.mapObject.scale = translate['scale'];\n this.mapObject.zoomTranslatePoint = this.mapObject.translatePoint = translate['location'];\n }\n }\n }\n }\n else if (this.mapObject.isTileMap && !isNullOrUndefined(this.mapObject.scale)) {\n for (var j = 0; j < layerElement.childElementCount; j++) {\n childNode = layerElement.childNodes[j];\n if (!(childNode.id.indexOf('_Markers_Group') > -1) &&\n (!(childNode.id.indexOf('_bubble_Group') > -1)) &&\n (!(childNode.id.indexOf('_dataLableIndex_Group') > -1)) &&\n (!(childNode.id.indexOf('_line_Group') > -1))) {\n if (childNode.id.indexOf('_Polygons_Group') === -1) {\n var transform = 'scale( ' + this.mapObject.scale + ' ) ' + 'translate( ' + this.mapObject.translatePoint.x\n + ' ' + this.mapObject.translatePoint.y + ' ) ';\n childNode.setAttribute('transform', transform);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.calculateRectBounds = function (layerData) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(layerData, function (obj, index) {\n if (!isNullOrUndefined(obj['geometry']) || !isNullOrUndefined(obj['coordinates'])) {\n var type = !isNullOrUndefined(obj['geometry']) ? obj['geometry']['type'] : obj['type'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = !isNullOrUndefined(obj['geometry']) ? obj['geometry']['coordinates'] : obj['coordinates'];\n switch (type.toLowerCase()) {\n case 'polygon':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.calculateRectBox(coordinates[0]);\n break;\n case 'multipolygon':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (point, index) {\n _this.calculateRectBox(point[0]);\n });\n break;\n case 'multilinestring':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (multiPoint, index) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n multiPoint.map(function (point, index) {\n _this.calculateRectBox(point, 'multilinestring', index === 0 ? true : false);\n });\n });\n break;\n case 'linestring':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (point, index) {\n _this.calculateRectBox(point, 'linestring', index === 0 ? true : false);\n });\n break;\n case 'point':\n _this.calculateRectBox(coordinates, 'point');\n break;\n case 'multipoint':\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (point, index) {\n _this.calculateRectBox(point, 'multipoint', index === 0 ? true : false);\n });\n break;\n }\n }\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.calculatePolygonBox = function (coordinates, data, properties) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = [];\n var bounds = this.mapObject.baseMapBounds;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n coordinates.map(function (currentPoint) {\n var latitude = currentPoint[1];\n var longitude = currentPoint[0];\n if ((longitude >= bounds.longitude.min && longitude <= bounds.longitude.max)\n && (latitude >= bounds.latitude.min && latitude <= bounds.latitude.max)) {\n var point = convertGeoToPoint(latitude, longitude, _this.currentFactor, _this.currentLayer, _this.mapObject);\n if (isNullOrUndefined(_this.rectBounds)) {\n _this.rectBounds = { min: { x: point.x, y: point.y }, max: { x: point.x, y: point.y } };\n }\n else {\n _this.rectBounds['min']['x'] = Math.min(_this.rectBounds['min']['x'], point.x);\n _this.rectBounds['min']['y'] = Math.min(_this.rectBounds['min']['y'], point.y);\n _this.rectBounds['max']['x'] = Math.max(_this.rectBounds['max']['x'], point.x);\n _this.rectBounds['max']['y'] = Math.max(_this.rectBounds['max']['y'], point.y);\n }\n newData.push({\n point: point,\n lat: latitude,\n lng: longitude\n });\n }\n });\n return newData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayerPanel.prototype.calculateRectBox = function (coordinates, type, isFirstItem) {\n var _this = this;\n if ((type !== 'linestring' && type !== 'multilinestring') && (type !== 'point' && type !== 'multipoint')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(coordinates, function (currentCoords) {\n if (isNullOrUndefined(_this.mapObject.baseMapBounds)) {\n _this.mapObject.baseMapBounds = new GeoLocation({ min: currentCoords[1], max: currentCoords[1] }, { min: currentCoords[0], max: currentCoords[0] });\n }\n else {\n _this.mapObject.baseMapBounds.latitude.min = Math.min(_this.mapObject.baseMapBounds.latitude.min, currentCoords[1]);\n _this.mapObject.baseMapBounds.latitude.max = Math.max(_this.mapObject.baseMapBounds.latitude.max, currentCoords[1]);\n _this.mapObject.baseMapBounds.longitude.min = Math.min(_this.mapObject.baseMapBounds.longitude.min, currentCoords[0]);\n _this.mapObject.baseMapBounds.longitude.max = Math.max(_this.mapObject.baseMapBounds.longitude.max, currentCoords[0]);\n }\n });\n }\n else {\n if ((isFirstItem || type === 'point') && isNullOrUndefined(this.mapObject.baseMapBounds)) {\n this.mapObject.baseMapBounds = new GeoLocation({ min: coordinates[1], max: coordinates[1] }, { min: coordinates[0], max: coordinates[0] });\n }\n else {\n this.mapObject.baseMapBounds.latitude.min = Math.min(this.mapObject.baseMapBounds.latitude.min, coordinates[1]);\n this.mapObject.baseMapBounds.latitude.max = Math.max(this.mapObject.baseMapBounds.latitude.max, coordinates[1]);\n this.mapObject.baseMapBounds.longitude.min = Math.min(this.mapObject.baseMapBounds.longitude.min, coordinates[0]);\n this.mapObject.baseMapBounds.longitude.max = Math.max(this.mapObject.baseMapBounds.longitude.max, coordinates[0]);\n }\n }\n };\n LayerPanel.prototype.generateTiles = function (zoomLevel, tileTranslatePoint, zoomType, bing, position) {\n var userLang = this.mapObject.locale;\n var size = this.mapObject.availableSize;\n this.tiles = [];\n var xcount;\n var ycount;\n xcount = ycount = Math.pow(2, zoomLevel);\n var xLeft = 0;\n var xRight = 0;\n if ((tileTranslatePoint.x + (xcount * 256)) < size.width) {\n xLeft = tileTranslatePoint.x > 0 ? Math.ceil(tileTranslatePoint.x / 256) : 0;\n xRight = ((tileTranslatePoint.x + xcount * 256) < size.width) ?\n Math.ceil((size.width - (tileTranslatePoint.x + xcount * 256)) / 256) : 0;\n }\n xcount += xLeft + xRight;\n if (zoomType === 'Pan') {\n xcount = (this.horizontalPanXCount >= xcount) ? this.horizontalPanXCount : xcount;\n this.horizontalPan = false;\n }\n else {\n this.horizontalPanXCount = xcount;\n this.horizontalPan = true;\n }\n var baseLayer = this.mapObject.layers[this.mapObject.baseLayerIndex];\n this.urlTemplate = baseLayer.urlTemplate;\n var endY = Math.min(ycount, ((-tileTranslatePoint.y + size.height) / 256) + 1);\n var endX = Math.min(xcount, ((-tileTranslatePoint.x + size.width + (xRight * 256)) / 256) + 1);\n var startX = (-((tileTranslatePoint.x + (xLeft * 256)) + 256) / 256);\n var startY = (-(tileTranslatePoint.y + 256) / 256);\n bing = bing || this.bing || this.mapObject['bingMap'];\n for (var i = Math.round(startX); i < Math.round(endX); i++) {\n for (var j = Math.round(startY); j < Math.round(endY); j++) {\n var x = 256 * i + tileTranslatePoint.x;\n var y = 256 * j + tileTranslatePoint.y;\n if (x > -256 && x <= size.width && y > -256 && y < size.height) {\n if (j >= 0) {\n var tileI = i;\n if (i < 0) {\n tileI = (tileI % ycount) + ycount;\n }\n var tile = new Tile(tileI % ycount, j);\n tile.left = Math.round(x);\n tile.top = Math.round(y);\n if (baseLayer.layerType === 'Bing' || (bing && !isNullOrUndefined(baseLayer.urlTemplate) && baseLayer.urlTemplate !== '')) {\n var key = baseLayer.key;\n tile.src = bing.getBingMap(tile, key, baseLayer.bingMapType, userLang, bing.imageUrl, bing.subDomains);\n }\n else {\n tile.src = this.urlTemplate.replace('level', zoomLevel.toString()).replace('tileX', tile.x.toString())\n .replace('tileY', tile.y.toString());\n }\n this.tiles.push(tile);\n }\n }\n }\n }\n if (!isNullOrUndefined(zoomType)) {\n if (zoomType.indexOf('wheel') > 1) {\n this.animateToZoomX = (this.mapObject.availableSize.width / 2) - position.x - 10;\n this.animateToZoomY = -position.y;\n }\n else {\n this.animateToZoomX = -10;\n this.animateToZoomY = -(this.mapObject.availableSize.height / 2 + 11.5) + 10;\n }\n }\n var proxTiles = extend([], this.tiles, [], true);\n for (var _i = 0, _a = this.mapObject.layers; _i < _a.length; _i++) {\n var layer = _a[_i];\n if (!(layer.type === 'SubLayer' && layer.visible)) {\n continue;\n }\n if ((layer.layerType !== 'Geometry' && layer.layerType !== 'GoogleStaticMap') || (layer.layerType === 'Geometry' &&\n isNullOrUndefined(layer.shapeData) && !isNullOrUndefined(layer.urlTemplate) && layer.urlTemplate !== '')) {\n for (var _b = 0, proxTiles_1 = proxTiles; _b < proxTiles_1.length; _b++) {\n var baseTile = proxTiles_1[_b];\n var subtile = extend({}, baseTile, {}, true);\n if (layer.layerType === 'Bing') {\n bing = new BingMap(this.mapObject);\n subtile.src = bing.getBingMap(subtile, layer.key, layer.bingMapType, userLang, bing.imageUrl, bing.subDomains);\n }\n else {\n subtile.src = layer.urlTemplate.replace('level', zoomLevel.toString()).replace('tileX', baseTile.x.toString())\n .replace('tileY', baseTile.y.toString());\n }\n this.tiles.push(subtile);\n }\n }\n }\n if (this.mapObject.previousScale !== this.mapObject.scale || this.mapObject.isReset || this.mapObject.isZoomByPosition\n || this.mapObject.zoomNotApplied) {\n this.arrangeTiles(zoomType, this.animateToZoomX, this.animateToZoomY);\n }\n };\n LayerPanel.prototype.arrangeTiles = function (type, x, y) {\n var _this = this;\n var element = document.getElementById(this.mapObject.element.id + '_tile_parent');\n var element1 = document.getElementById(this.mapObject.element.id + '_tiles');\n var timeOut;\n if (!isNullOrUndefined(type) && type !== 'Pan') {\n this.tileAnimation(type, x, y);\n timeOut = animationMode === 'Disable' ? 0 : (this.mapObject.layersCollection[0].animationDuration === 0 &&\n animationMode === 'Enable') ? 1000 : this.mapObject.layersCollection[0].animationDuration;\n }\n else {\n timeOut = 0;\n }\n if (this.mapObject.layers[this.mapObject.baseLayerIndex].layerType === 'GoogleStaticMap') {\n this.renderGoogleMap(this.mapObject.layers[0].key, this.mapObject.staticMapZoom);\n }\n else {\n setTimeout(function () {\n if (element) {\n element.style.zIndex = '1';\n }\n if (element1) {\n element1.style.zIndex = '0';\n }\n var animateElement;\n if (!document.getElementById(_this.mapObject.element.id + '_animated_tiles') && element) {\n animateElement = createElement('div', { id: _this.mapObject.element.id + '_animated_tiles' });\n element.appendChild(animateElement);\n }\n else {\n if (type !== 'Pan' && element1 && element) {\n element1.appendChild(element.children[0]);\n if (!_this.mapObject.isAddLayer && !isNullOrUndefined(document.getElementById(_this.mapObject.element.id + '_animated_tiles'))) {\n document.getElementById(_this.mapObject.element.id + '_animated_tiles').id =\n _this.mapObject.element.id + '_animated_tiles_old';\n }\n animateElement = createElement('div', { id: _this.mapObject.element.id + '_animated_tiles' });\n element.appendChild(animateElement);\n }\n else {\n animateElement = element ? element.children[0] : null;\n }\n }\n for (var id = 0; id < _this.tiles.length; id++) {\n var tile = _this.tiles[id];\n var imgElement = null;\n var mapId = _this.mapObject.element.id;\n if (type === 'Pan') {\n var child = document.getElementById(mapId + '_tile_' + id);\n var isNewTile = false;\n if (isNullOrUndefined(child)) {\n isNewTile = true;\n child = createElement('div', { id: mapId + '_tile_' + id });\n imgElement = createElement('img');\n }\n else {\n child.style.removeProperty('display');\n imgElement = child.children[0];\n }\n if (!isNewTile && imgElement && imgElement.src !== tile.src) {\n imgElement.src = tile.src;\n }\n child.style.position = 'absolute';\n child.style.left = tile.left + 'px';\n child.style.top = tile.top + 'px';\n child.style.height = tile.height + 'px';\n child.style.width = tile.width + 'px';\n if (isNewTile) {\n imgElement.setAttribute('height', '256px');\n imgElement.setAttribute('width', '256px');\n imgElement.setAttribute('src', tile.src);\n imgElement.setAttribute('alt', _this.mapObject.getLocalizedLabel('ImageNotFound'));\n imgElement.style.setProperty('user-select', 'none');\n child.appendChild(imgElement);\n animateElement.appendChild(child);\n }\n }\n else {\n imgElement = createElement('img');\n imgElement.setAttribute('height', '256px');\n imgElement.setAttribute('width', '256px');\n imgElement.setAttribute('src', tile.src);\n imgElement.style.setProperty('user-select', 'none');\n imgElement.setAttribute('alt', _this.mapObject.getLocalizedLabel('ImageNotFound'));\n var child = createElement('div', { id: mapId + '_tile_' + id });\n child.style.position = 'absolute';\n child.style.left = tile.left + 'px';\n child.style.top = tile.top + 'px';\n child.style.height = tile.height + 'px';\n child.style.width = tile.width + 'px';\n child.appendChild(imgElement);\n if (animateElement) {\n animateElement.appendChild(child);\n }\n }\n if (id === (_this.tiles.length - 1) && document.getElementById(_this.mapObject.element.id + '_animated_tiles_old')) {\n removeElement(_this.mapObject.element.id + '_animated_tiles_old');\n }\n }\n if (!isNullOrUndefined(_this.mapObject.currentTiles)) {\n for (var l = _this.tiles.length; l < animateElement.childElementCount; l++) {\n var isExistingElement = false;\n for (var a = 0; a < _this.mapObject.currentTiles.childElementCount; a++) {\n if (!isExistingElement &&\n _this.mapObject.currentTiles.children[a].id === animateElement.children[l].id) {\n isExistingElement = true;\n }\n }\n if (isExistingElement) {\n animateElement.children[l].style.display = 'none';\n }\n else {\n animateElement.removeChild(animateElement.children[l]);\n }\n }\n }\n }, timeOut);\n }\n };\n /**\n * Animation for tile layers and hide the group element until the tile layer rendering\n *\n * @param {string} zoomType - Specifies the zoom type\n * @param {number} translateX - Specifies the x translate point\n * @param {number} translateY - Specifies the y translate point\n * @returns {void}\n */\n LayerPanel.prototype.tileAnimation = function (zoomType, translateX, translateY) {\n var tileParent = document.getElementById(this.mapObject.element.id + '_tile_parent');\n var animatedTiles = document.getElementById(this.mapObject.element.id + '_animated_tiles');\n var tileElement = document.getElementById(this.mapObject.element.id + '_tiles');\n var scaleValue = '2';\n if (zoomType.indexOf('ZoomOut') === 0 || zoomType === 'Reset') {\n tileElement.style.zIndex = '1';\n tileParent.style.zIndex = '0';\n while (tileElement.childElementCount >= 1) {\n tileElement.removeChild(tileElement.children[0]);\n }\n translateX = 0;\n translateY = document.getElementById(this.mapObject.element.id + '_tile_parent').getClientRects()[0].height / 4;\n scaleValue = zoomType.indexOf('ZoomOut') === 0 ? '0.5' : '0.2';\n }\n if (!isNullOrUndefined(animatedTiles)) {\n animatedTiles.style.transition = animationMode === 'Disable' ? '0ms' : (this.mapObject.layersCollection[0].animationDuration === 0\n && animationMode === 'Enable') ? '1000ms' : this.mapObject.layersCollection[0].animationDuration + 'ms';\n animatedTiles.style.transform = 'translate(' + translateX + 'px, ' + translateY + 'px) scale(' + scaleValue + ')';\n }\n };\n /**\n * Static map rendering\n *\n * @param {string} apikey - Specifies the api key\n * @param {number} zoom - Specifies the zoom value\n * @returns {void}\n * @private\n */\n LayerPanel.prototype.renderGoogleMap = function (apikey, zoom) {\n var map = this.mapObject;\n // zoom = this.mapObject.zoomSettings.shouldZoomInitially ? this.mapObject.markerZoomFactor : zoom;\n zoom = this.mapObject.tileZoomLevel;\n var totalSize = Math.pow(2, zoom) * 256;\n var x = (map.mapAreaRect.width / 2) - (totalSize / 2);\n var y = (map.mapAreaRect.height / 2) - (totalSize / 2);\n var centerPoint = new Point(null, null);\n var diffX = 0;\n var diffY = 0;\n var position = convertTileLatLongToPoint(centerPoint, zoom, { x: x, y: y }, this.isMapCoordinates);\n if (map.zoomModule && map.zoomSettings.enable) {\n diffX = map.zoomModule.mouseDownLatLong['x'] - map.zoomModule.mouseMoveLatLong['x'];\n diffY = map.zoomModule.mouseDownLatLong['y'] - map.zoomModule.mouseMoveLatLong['y'];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var panLatLng = map.pointToLatLong(position.x - diffX, position.y - diffY);\n map.centerPosition.latitude = panLatLng['latitude'];\n map.centerPosition.longitude = panLatLng['longitude'];\n var mapWidth;\n var mapHeight;\n if (isNullOrUndefined(parseInt(map.width, 10))) {\n mapWidth = parseInt(map.width, 10) - 22;\n }\n else {\n mapWidth = Math.round(map.mapAreaRect.width);\n }\n if (isNullOrUndefined(parseInt(map.height, 10))) {\n mapHeight = parseInt(map.height, 10) - 22;\n }\n else {\n mapHeight = Math.round(map.mapAreaRect.height);\n }\n var eleWidth = mapWidth > 640 ? (mapWidth - 640) / 2 : 0;\n var eleHeight = mapHeight > 640 ? (mapHeight - 640) / 2 : 0;\n var center;\n var mapType = (map.layers[map.layers.length - 1].staticMapType).toString().toLowerCase();\n if (map.centerPosition.latitude && map.centerPosition.longitude) {\n center = map.centerPosition.latitude.toString() + ',' + map.centerPosition.longitude.toString();\n }\n else {\n center = '0,0';\n }\n var staticMapString = 'https://maps.googleapis.com/maps/api/staticmap?size=' + mapWidth + 'x' + mapHeight +\n '&zoom=' + zoom + '¢er=' + center + '&maptype=' + mapType + '&key=' + apikey;\n document.getElementById(this.mapObject.element.id + '_tile_parent').innerHTML\n = '<div id=\"' + this.mapObject.element.id + '_StaticGoogleMap\"' + 'style=\"position:absolute; left:' + eleWidth + 'px; top:'\n + eleHeight + 'px\"><img src=\"' + staticMapString + '\"' + 'alt=\"' + this.mapObject.getLocalizedLabel('ImageNotFound') + '\"></div>';\n };\n /**\n * To find the tile translate point\n *\n * @param {number} factorX - Specifies the x factor\n * @param {number} factorY - Specifies the x factor\n * @param {MapLocation} centerPosition - Specifies the map location\n * @returns {Point} - Returns point values\n */\n LayerPanel.prototype.panTileMap = function (factorX, factorY, centerPosition) {\n if (this.mapObject.tileZoomLevel <= this.mapObject.tileZoomScale && this.mapObject.initialCheck) {\n this.mapObject.tileZoomLevel = this.mapObject.tileZoomScale;\n }\n var level = this.mapObject.tileZoomLevel;\n var padding = this.mapObject.layers[this.mapObject.layers.length - 1].layerType !== 'GoogleStaticMap' ?\n 20 : 0;\n var x;\n var y;\n var totalSize = Math.pow(2, level) * 256;\n x = (factorX / 2) - (totalSize / 2);\n y = (factorY / 2) - (totalSize / 2);\n var position = convertTileLatLongToPoint(centerPosition, level, { x: x, y: y }, this.isMapCoordinates);\n padding = this.mapObject.zoomNotApplied ? 0 : padding;\n x -= position.x - (factorX / 2);\n y = (y - (position.y - (factorY / 2))) + padding;\n this.mapObject.scale = Math.pow(2, level - 1);\n if ((isNullOrUndefined(this.mapObject.tileTranslatePoint) || (this.mapObject.tileTranslatePoint.y === 0 &&\n this.mapObject.tileTranslatePoint.x === 0)) || (isNullOrUndefined(this.mapObject.previousTileWidth) ||\n isNullOrUndefined(this.mapObject.previousTileHeight))) {\n this.mapObject.previousTileWidth = factorX;\n this.mapObject.previousTileHeight = factorY;\n }\n if (!isNullOrUndefined(this.mapObject.tileTranslatePoint) && (isNullOrUndefined(centerPosition.x)) &&\n (this.mapObject.zoomSettings.zoomFactor === 1 ||\n this.mapObject.zoomSettings.zoomFactor !== level || !this.mapObject.defaultState)) {\n if ((factorX !== this.mapObject.previousTileWidth || factorY !== this.mapObject.previousTileHeight)) {\n var xdiff = x - ((this.mapObject.previousTileWidth / 2) - (totalSize / 2));\n var ydiff = y - ((this.mapObject.previousTileHeight / 2) - (totalSize / 2) + padding);\n this.mapObject.tileTranslatePoint.x = this.mapObject.tileTranslatePoint.x + xdiff;\n this.mapObject.tileTranslatePoint.y = this.mapObject.tileTranslatePoint.y + ydiff;\n }\n }\n if (!isNullOrUndefined(this.mapObject.tileTranslatePoint) && !this.mapObject.zoomNotApplied) {\n if (this.mapObject.tileTranslatePoint.x !== 0 && this.mapObject.tileTranslatePoint.x !== x\n && !this.mapObject.centerPositionChanged) {\n x = this.mapObject.tileTranslatePoint.x;\n }\n if (this.mapObject.tileTranslatePoint.y !== 0 && this.mapObject.tileTranslatePoint.y !== y\n && !this.mapObject.centerPositionChanged) {\n y = this.mapObject.tileTranslatePoint.y;\n }\n }\n this.mapObject.translatePoint = new Point((x - (0.01 * this.mapObject.zoomSettings.zoomFactor)) / this.mapObject.scale, (y - (0.01 * this.mapObject.zoomSettings.zoomFactor)) / this.mapObject.scale);\n this.mapObject.previousTileWidth = factorX;\n this.mapObject.previousTileHeight = factorY;\n return new Point(x, y);\n };\n /**\n * @returns {void}\n * @private\n */\n LayerPanel.prototype.destroy = function () {\n this.mapObject = null;\n this.groupElements = [];\n this.layerObject = null;\n this.currentLayer = null;\n this.rectBounds = null;\n this.tiles = [];\n this.clipRectElement = null;\n this.tileSvgObject = null;\n this.ajaxModule = null;\n this.ajaxResponse = [];\n this.layerGroup = null;\n if (!isNullOrUndefined(this.bing)) {\n this.bing.destroy();\n }\n this.bing = null;\n };\n return LayerPanel;\n}());\nexport { LayerPanel };\n","import { annotationRendering } from '../index';\nimport { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getTemplateFunction, getElementOffset, getElementByID } from '../utils/helper';\n/**\n * Represents the annotation elements for map.\n */\nvar Annotations = /** @class */ (function () {\n function Annotations(map) {\n this.map = map;\n }\n Annotations.prototype.renderAnnotationElements = function () {\n var _this = this;\n var secondaryID = this.map.element.id + '_Secondary_Element';\n var annotationGroup = createElement('div', { id: this.map.element.id + '_Annotations_Group' });\n annotationGroup.style.position = 'absolute';\n annotationGroup.style.top = '0px';\n annotationGroup.style.left = '0px';\n this.map.annotations.map(function (annotation, index) {\n if (annotation.content !== null) {\n _this.createAnnotationTemplate(annotationGroup, annotation, index);\n }\n });\n if (annotationGroup.childElementCount > 0 && !(isNullOrUndefined(getElementByID(secondaryID)))) {\n getElementByID(secondaryID).appendChild(annotationGroup);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.map.renderReactTemplates();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To create annotation elements\n *\n * @private\n */\n Annotations.prototype.createAnnotationTemplate = function (parentElement, annotation, annotationIndex) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var left;\n var top;\n var templateFn;\n var map = this.map;\n var templateElement;\n var availSize = map.availableSize;\n var id = map.element.id + '_Annotation_' + annotationIndex;\n var childElement = createElement('div', {\n id: map.element.id + '_Annotation_' + annotationIndex\n });\n childElement.style.cssText = 'position: absolute; z-index:' + annotation.zIndex + ';';\n var argsData = {\n cancel: false, name: annotationRendering, content: annotation.content,\n annotation: annotation\n };\n this.map.trigger(annotationRendering, argsData, function (annotationArgs) {\n if (argsData.cancel) {\n return;\n }\n templateFn = getTemplateFunction(argsData.content, _this.map);\n if (templateFn && templateFn(_this.map, _this.map, argsData.content, _this.map.element.id + '_ContentTemplate_' + annotationIndex).length) {\n templateElement = Array.prototype.slice.call(templateFn(_this.map, _this.map, argsData.content, _this.map.element.id + '_ContentTemplate_' + annotationIndex));\n var length_1 = templateElement.length;\n for (var i = 0; i < length_1; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n else {\n childElement.appendChild(createElement('div', {\n innerHTML: argsData.content\n }));\n }\n });\n var offset = getElementOffset(childElement.cloneNode(true), map.element);\n var elementRect = map.element.getBoundingClientRect();\n var bounds = map.svgObject.getBoundingClientRect();\n left = Math.abs(bounds.left - elementRect.left);\n top = Math.abs(bounds.top - elementRect.top);\n var annotationXValue = (annotation.x.indexOf('%') > -1) ? (availSize.width / 100) * parseFloat(annotation.x) :\n parseFloat(annotation.x);\n var annotationYValue = (annotation.y.indexOf('%') > -1) ? (availSize.height / 100) * parseFloat(annotation.y) :\n parseFloat(annotation.y);\n left = (annotation.horizontalAlignment === 'None') ? (left + annotationXValue) : left;\n top = (annotation.verticalAlignment === 'None') ? (top + annotationYValue) : top;\n switch (annotation.verticalAlignment) {\n case 'Near':\n top = (top + annotationYValue);\n break;\n case 'Center':\n top = (top + annotationYValue) + ((bounds.height / 2) - (offset.height / 2));\n break;\n case 'Far':\n top = (top + bounds.height + annotationYValue) - offset.height;\n break;\n }\n switch (annotation.horizontalAlignment) {\n case 'Near':\n left = (left + annotationXValue);\n break;\n case 'Center':\n left = (left + annotationXValue) + ((bounds.width / 2) - (offset.width / 2));\n break;\n case 'Far':\n left = (left + bounds.width + annotationXValue) - offset.width;\n break;\n }\n childElement.style.left = left + 'px';\n childElement.style.top = top + 'px';\n parentElement.appendChild(childElement);\n };\n /*\n * Get module name.\n */\n Annotations.prototype.getModuleName = function () {\n return 'Annotations';\n };\n /**\n * To destroy the annotation.\n *\n * @returns {void}\n * @private\n */\n Annotations.prototype.destroy = function () {\n this.map = null;\n };\n return Annotations;\n}());\nexport { Annotations };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps Component file\n */\nimport { Component, NotifyPropertyChanges, Property, Fetch } from '@syncfusion/ej2-base';\nimport { EventHandler, Browser, isNullOrUndefined, createElement, setValue, extend } from '@syncfusion/ej2-base';\nimport { Event, remove, L10n, Collection, Internationalization, Complex } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { Size, createSvg, Point, removeElement, triggerShapeEvent, showTooltip, checkShapeDataFields, MapLocation, getMousePosition, calculateSize } from './utils/helper';\nimport { getElement, removeClass, getTranslate, triggerItemSelectionEvent, mergeSeparateCluster, customizeStyle, querySelector } from './utils/helper';\nimport { createStyle } from './utils/helper';\nimport { ZoomSettings, LegendSettings } from './model/base';\nimport { LayerSettings, TitleSettings, Border, Margin, MapsAreaSettings, Annotation, CenterPosition } from './model/base';\nimport { load, click, onclick, rightClick, doubleClick, resize, shapeSelected, zoomIn } from './model/constants';\nimport { getThemeStyle, Theme } from './model/theme';\nimport { LayerPanel } from './layers/layer-panel';\nimport { Rect, RectOption, measureText, getElementByID, MapAjax, processResult, getElementsByClassName } from '../maps/utils/helper';\nimport { findPosition, textTrim, TextOption, renderTextElement, calculateZoomLevel, convertTileLatLongToPoint, convertGeoToPoint } from '../maps/utils/helper';\nimport { Annotations } from '../maps/user-interaction/annotation';\nimport { MarkerSettings } from './index';\nimport { changeBorderWidth } from './index';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/**\n * Represents the maps control. It is ideal for rendering maps from GeoJSON data or other map providers like OpenStreetMap, Google Maps, Bing Maps, etc that\n * has rich feature set that includes markers, labels, bubbles and much more.\n * ```html\n * <div id=\"maps\"/>\n * <script>\n * var maps = new Maps();\n * maps.appendTo(\"#maps\");\n * </script>\n * ```\n */\nvar Maps = /** @class */ (function (_super) {\n __extends(Maps, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {MapsModel} options Specifies the options\n * @param {string | HTMLElement} element Specifies the element\n */\n function Maps(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Check layer whether is geometry or tile\n *\n * @private\n */\n _this.isTileMap = false;\n /**\n * Resize the map\n */\n _this.isResize = false;\n /**\n * @private\n */\n _this.isReset = false;\n /** @private */\n _this.baseSize = new Size(0, 0);\n /** @public */\n _this.translatePoint = new Point(0, 0);\n /** @private */\n _this.baseTranslatePoint = new Point(0, 0);\n /** @public */\n _this.zoomTranslatePoint = new Point(0, 0);\n /** @private */\n _this.markerZoomedState = true;\n /** @private */\n _this.zoomPersistence = false;\n /** @private */\n _this.defaultState = true;\n /** @private */\n _this.centerPositionChanged = false;\n /** @private */\n _this.isTileMapSubLayer = false;\n /** @private */\n _this.markerNullCount = 0;\n /** @private */\n _this.tileTranslatePoint = new Point(0, 0);\n /** @private */\n _this.baseTileTranslatePoint = new Point(0, 0);\n /** @private */\n // eslint-disable-next-line @typescript-eslint/ban-types\n _this.isDevice = false;\n /** @private */\n _this.staticMapZoom = _this.zoomSettings.enable ? _this.zoomSettings.zoomFactor : 0;\n /** @private */\n _this.zoomNotApplied = false;\n /** @public */\n _this.dataLabelShape = [];\n _this.zoomShapeCollection = [];\n _this.zoomLabelPositions = [];\n _this.mouseDownEvent = { x: null, y: null };\n _this.mouseClickEvent = { x: null, y: null };\n /** @private */\n _this.selectedElementId = [];\n /** @private */\n _this.selectedMarkerElementId = [];\n /** @private */\n _this.selectedBubbleElementId = [];\n /** @private */\n _this.selectedNavigationElementId = [];\n /** @private */\n _this.selectedPolygonElementId = [];\n /** @private */\n _this.selectedLegendElementId = [];\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.legendSelectionCollection = [];\n /** @private */\n _this.shapeSelections = true;\n /** @private */\n _this.legendSelection = true;\n /** @private */\n _this.toggledLegendId = [];\n /** @private */\n _this.toggledShapeElementId = [];\n /** @private */\n _this.checkInitialRender = true;\n /** @private */\n _this.initialTileTranslate = new Point(0, 0);\n /** @private */\n _this.isMarkerZoomCompleted = false;\n /** @private */\n _this.markerDragId = '';\n /** @private */\n _this.initialCheck = true;\n /** @private */\n _this.applyZoomReset = false;\n /** @private */\n _this.markerClusterExpandCheck = false;\n /** @private */\n _this.markerClusterExpand = false;\n /** @private */\n _this.mouseMoveId = '';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.shapeSelectionItem = [];\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.markerDragArgument = null;\n setValue('mergePersistData', _this.mergePersistMapsData, _this);\n return _this;\n }\n Object.defineProperty(Maps.prototype, \"isShapeSelected\", {\n /**\n *\n * Specifies whether the shape is selected in the maps or not.\n *\n * @returns {boolean} - Returns a boolean value to specify whether the shape is selected in the maps or not.\n */\n get: function () {\n return this.mapSelect;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * To manage persist maps data\n *\n * @returns {void}\n */\n Maps.prototype.mergePersistMapsData = function () {\n var data;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var windowData;\n try {\n windowData = window.localStorage;\n }\n catch (e) {\n windowData = null;\n }\n if (!isNullOrUndefined(windowData)) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Specifies the key\n * @returns {string} - Returns the string value\n * @private\n */\n Maps.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Initializing pre-required values.\n *\n * @returns {void}\n */\n Maps.prototype.preRender = function () {\n this.isDevice = Browser.isDevice;\n this.initPrivateVariable();\n this.allowServerDataBinding = false;\n this.unWireEVents();\n this.wireEVents();\n this.setCulture();\n };\n Maps.prototype.renderElements = function () {\n if (!this.isDestroyed) {\n this.trigger(load, { maps: this });\n this.createSVG();\n this.findBaseAndSubLayers();\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n this.renderArea();\n this.processRequestJsonData();\n this.renderComplete();\n this.isAddLayer = !this.isTileMap ? false : this.isAddLayer;\n }\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n */\n Maps.prototype.render = function () {\n this.renderElements();\n };\n Maps.prototype.processRequestJsonData = function () {\n var _this = this;\n var length = this.layersCollection.length - 1;\n this.serverProcess = { request: 0, response: 0 };\n var queryModule;\n var dataModule;\n Array.prototype.forEach.call(this.layersCollection, function (layer, layerIndex) {\n if (layer.shapeData instanceof DataManager) {\n _this.serverProcess['request']++;\n dataModule = layer.shapeData;\n queryModule = layer.query instanceof Query ? layer.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.processResponseJsonData('DataManager', e, layer, 'ShapeData');\n });\n }\n else if (layer.shapeData instanceof MapAjax || layer.shapeData) {\n if (!isNullOrUndefined(layer.shapeData['dataOptions'])) {\n _this.processAjaxRequest(layer, layer.shapeData, 'ShapeData');\n }\n }\n if (layer.dataSource instanceof DataManager) {\n _this.serverProcess['request']++;\n dataModule = layer.dataSource;\n queryModule = layer.query instanceof Query ? layer.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.dataSource = processResult(e);\n });\n }\n if (layer.markerSettings.length > 0) {\n var _loop_1 = function (i) {\n if (layer.markerSettings[i].dataSource instanceof DataManager) {\n _this.serverProcess['request']++;\n dataModule = layer.markerSettings[i].dataSource;\n queryModule = layer.markerSettings[i].query instanceof Query ?\n layer.markerSettings[i].query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.markerSettings[i].dataSource = processResult(e);\n });\n }\n };\n for (var i = 0; i < layer.markerSettings.length; i++) {\n _loop_1(i);\n }\n }\n if (layer.bubbleSettings.length > 0) {\n var _loop_2 = function (i) {\n if (layer.bubbleSettings[i].dataSource instanceof DataManager) {\n _this.serverProcess['request']++;\n dataModule = layer.bubbleSettings[i].dataSource;\n queryModule = layer.bubbleSettings[i].query instanceof Query ?\n layer.bubbleSettings[i].query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.bubbleSettings[i].dataSource = processResult(e);\n });\n }\n };\n for (var i = 0; i < layer.bubbleSettings.length; i++) {\n _loop_2(i);\n }\n }\n if (layer.dataSource instanceof MapAjax || !isNullOrUndefined(layer.dataSource['dataOptions'])) {\n _this.processAjaxRequest(layer, layer.dataSource, 'DataSource');\n }\n if (_this.serverProcess['request'] === _this.serverProcess['response'] && length === layerIndex) {\n _this.processResponseJsonData(null);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n Maps.prototype.processAjaxRequest = function (layer, localAjax, type) {\n var _this = this;\n this.serverProcess['request']++;\n var fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n var map_1 = _this;\n reader_1.onload = function (data) {\n args = JSON.parse(reader_1.result.toString());\n map_1.processResponseJsonData('Fetch', args, layer, type);\n };\n reader_1.readAsText(args);\n }\n else {\n _this.processResponseJsonData('Fetch', args, layer, type);\n }\n };\n fetchApiModule.send(localAjax.sendData);\n };\n /**\n * This method is used to process the JSON data to render the maps.\n *\n * @param {string} processType - Specifies the process type in maps.\n * @param {any | string} data - Specifies the data for maps.\n * @param {LayerSettings} layer - Specifies the layer for the maps.\n * @param {string} dataType - Specifies the data type for maps.\n * @returns {void}\n * @private\n */\n Maps.prototype.processResponseJsonData = function (processType, data, layer, dataType) {\n this.serverProcess['response']++;\n if (processType) {\n if (dataType === 'ShapeData') {\n layer.shapeData = (processType === 'DataManager') ? processResult(data) : data;\n }\n else {\n layer.dataSource = (processType === 'DataManager') ? processResult(data) : data;\n }\n }\n if (!isNullOrUndefined(processType) && this.serverProcess['request'] === this.serverProcess['response']) {\n var collection = this.layersCollection;\n this.layersCollection = [];\n for (var i = 0; i < collection.length; i++) {\n if (collection[i].isBaseLayer) {\n this.layersCollection.push(collection[i]);\n }\n }\n for (var j = 0; j < collection.length; j++) {\n if (!collection[j].isBaseLayer) {\n this.layersCollection.push(collection[j]);\n }\n }\n this.renderMap();\n }\n else if (isNullOrUndefined(processType)) {\n this.renderMap();\n }\n };\n Maps.prototype.renderMap = function () {\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.renderLegend();\n }\n this.createTile();\n if (this.zoomSettings.enable && this.zoomModule) {\n this.zoomModule.createZoomingToolbars();\n }\n if (!isNullOrUndefined(this.dataLabelModule)) {\n this.dataLabelModule.dataLabelCollections = [];\n }\n this.mapLayerPanel.measureLayerPanel();\n if (!isNullOrUndefined(this.svgObject)) {\n this.element.appendChild(this.svgObject);\n }\n this.setSecondaryElementPosition();\n for (var i = 0; i < this.layers.length; i++) {\n if (this.layers[i].selectionSettings && this.layers[i].selectionSettings.enable &&\n this.layers[i].initialShapeSelection.length > 0 && this.checkInitialRender) {\n var checkSelection = this.layers[i].selectionSettings.enableMultiSelect;\n this.layers[i].selectionSettings.enableMultiSelect = checkSelection ? checkSelection : true;\n var shapeSelection = this.layers[i].initialShapeSelection;\n for (var j = 0; j < this.layers[i].initialShapeSelection.length; j++) {\n this.shapeSelection(i, shapeSelection[j].shapePath, shapeSelection[j].shapeValue, true);\n }\n this.layers[i].selectionSettings.enableMultiSelect = checkSelection;\n if (i === this.layers.length - 1) {\n this.checkInitialRender = false;\n }\n }\n if (!this.isResize) {\n for (var k = 0; k < this.layers[i].markerSettings.length; k++) {\n // eslint-disable-next-line max-len\n if (this.layers[i].markerSettings[k].selectionSettings && this.layers[i].markerSettings[k].selectionSettings.enable\n && this.layers[i].markerSettings[k].initialMarkerSelection.length > 0) {\n var markerSelectionValues = this.layers[i].markerSettings[k].initialMarkerSelection;\n for (var j = 0; j < markerSelectionValues.length; j++) {\n this.markerInitialSelection(i, k, this.layers[i].markerSettings[k], markerSelectionValues[j].latitude, markerSelectionValues[j].longitude);\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(document.getElementById(this.element.id + '_tile_parent'))) {\n var svg = this.svgObject.getBoundingClientRect();\n var element = document.getElementById(this.element.id);\n var tileElement = document.getElementById(this.element.id + '_tile_parent');\n var tileElement1 = document.getElementById(this.element.id + '_tiles');\n var tile = tileElement.getBoundingClientRect();\n var bottom = void 0;\n var top_1;\n var left = void 0;\n left = parseFloat(tileElement.style.left);\n var titleTextSize = measureText(this.titleSettings.text, this.titleSettings.textStyle);\n var subTitleTextSize = measureText(this.titleSettings.subtitleSettings.text, this.titleSettings.subtitleSettings.textStyle);\n if (this.isTileMap && this.isTileMapSubLayer && this.legendSettings.position === 'Bottom' && this.legendSettings.visible) {\n if (this.legendSettings.mode !== 'Default') {\n if (titleTextSize.width !== 0 && titleTextSize.height !== 0) {\n top_1 = parseFloat(tileElement.style.top) + (subTitleTextSize.height / 2)\n - (this.legendModule.legendBorderRect.height / 2);\n }\n else {\n top_1 = parseFloat(tileElement.style.top) - this.mapAreaRect.y;\n }\n }\n else {\n left = this.legendModule.legendBorderRect.x;\n if (titleTextSize.width !== 0 && titleTextSize.height !== 0) {\n top_1 = parseFloat(tileElement.style.top) + (subTitleTextSize['height'] / 2)\n - this.legendModule.legendBorderRect.y;\n }\n else {\n top_1 = parseFloat(tileElement.style.top) + (subTitleTextSize['height'] / 2);\n }\n }\n }\n else {\n bottom = svg.bottom - tile.bottom - element.offsetTop;\n top_1 = parseFloat(tileElement.style.top);\n }\n top_1 = (bottom <= 11) ? top_1 : (!isNullOrUndefined(this.legendModule) && this.legendSettings.position === 'Bottom') ? this.mapAreaRect.y : (top_1 * 2);\n left = (bottom <= 11) ? left : !isNullOrUndefined(this.legendModule) ? left : (left * 2);\n tileElement.style.top = top_1 + 'px';\n tileElement.style.left = left + 'px';\n tileElement1.style.top = top_1 + 'px';\n tileElement1.style.left = left + 'px';\n if (!isNullOrUndefined(this.legendModule) && this.legendModule.totalPages.length > 0) {\n tileElement.style.height = tileElement1.style.height = this.legendModule.legendTotalRect.height + 'px';\n tileElement.style.width = tileElement1.style.width = this.legendModule.legendTotalRect.width + 'px';\n }\n }\n this.arrangeTemplate();\n if (this.annotationsModule) {\n if (this.width !== '0px' && this.height !== '0px' && this.width !== '0%' && this.height !== '0%') {\n this.annotationsModule.renderAnnotationElements();\n }\n }\n this.element.style.outline = 'none';\n this.element.style.position = 'relative';\n for (var i = 0; i < document.getElementsByTagName('path').length - 1; i++) {\n if (document.getElementsByTagName('path')[i].id.indexOf('shapeIndex') > -1) {\n document.getElementsByTagName('path')[i].style.outline = 'none';\n }\n }\n this.zoomingChange();\n if (this.zoomModule && this.isDevice) {\n this.zoomModule.removeToolbarOpacity(this.isTileMap ? Math.round(this.tileZoomLevel) : this.mapScaleValue, this.element.id + '_Zooming_');\n }\n if (!this.isZoomByPosition && !this.zoomNotApplied) {\n this.triggerZoomEvent();\n }\n this.isResize = false;\n };\n Maps.prototype.triggerZoomEvent = function () {\n var loadedArgs;\n var minMaxLatitudeLongitude = this.getMinMaxLatitudeLongitude();\n loadedArgs = {\n maps: this, isResized: this.isResize, minLatitude: minMaxLatitudeLongitude.minLatitude,\n maxLatitude: minMaxLatitudeLongitude.maxLatitude, minLongitude: minMaxLatitudeLongitude.minLongitude,\n maxLongitude: minMaxLatitudeLongitude.maxLongitude, cancel: false, name: 'Loaded'\n };\n this.trigger('loaded', loadedArgs);\n };\n /**\n * To apply color to the initial selected marker\n *\n * @param {SelectionSettingsModel} selectionSettings - Specifies the selection settings\n * @param {Maps} map - Specifies the instance of the maps\n * @param {Element} targetElement - Specifies the target element\n * @param {any} data - Specifies the data\n * @returns {void}\n * @private\n */\n Maps.prototype.markerSelection = function (selectionSettings, map, targetElement, data) {\n var border = {\n color: selectionSettings.border.color,\n width: selectionSettings.border.width / map.scale,\n opacity: selectionSettings.border.opacity\n };\n var markerSelectionProperties = {\n opacity: selectionSettings.opacity,\n fill: selectionSettings.fill,\n border: border,\n target: targetElement.id,\n cancel: false,\n data: data,\n maps: map\n };\n if (!getElement('MarkerselectionMap')) {\n document.body.appendChild(createStyle('MarkerselectionMap', 'MarkerselectionMapStyle', markerSelectionProperties));\n }\n else {\n customizeStyle('MarkerselectionMap', 'MarkerselectionMapStyle', markerSelectionProperties);\n }\n if (this.selectedMarkerElementId.length === 0 || selectionSettings.enableMultiSelect) {\n if (targetElement.tagName === 'g') {\n targetElement.children[0].setAttribute('class', 'MarkerselectionMapStyle');\n this.selectedMarkerElementId.push(targetElement.children[0].id);\n }\n else {\n targetElement.setAttribute('class', 'MarkerselectionMapStyle');\n this.selectedMarkerElementId.push(targetElement.id);\n }\n }\n };\n /**\n * initial selection of marker\n *\n * @param {number} layerIndex - Specifies the layer index\n * @param {number} markerIndex - Specifies the marker index\n * @param {MarkerSettingsModel} markerSettings - Specifies the marker settings\n * @param {number} latitude - Specifies hte latitude\n * @param {number} longitude - Specifies the longitude\n * @returns {void}\n * @private\n */\n Maps.prototype.markerInitialSelection = function (layerIndex, markerIndex, markerSettings, latitude, longitude) {\n var selectionSettings = markerSettings.selectionSettings;\n if (selectionSettings.enable) {\n for (var i = 0; i < markerSettings.dataSource['length']; i++) {\n var data = markerSettings.dataSource[i];\n if (data['latitude'] === latitude && data['longitude'] === longitude) {\n var targetId = this.element.id + '_' + 'LayerIndex_' + layerIndex + '_MarkerIndex_' + markerIndex +\n '_dataIndex_' + i;\n this.markerSelection(selectionSettings, this, getElement(targetId), data);\n }\n }\n }\n };\n /**\n * Render the map area border\n *\n * @returns {void}\n */\n Maps.prototype.renderArea = function () {\n var width = this.mapsArea.border.width;\n var background = this.mapsArea.background;\n if (width > 0 || (background || this.themeStyle.areaBackgroundColor)) {\n var mapBorder = {\n opacity: isNullOrUndefined(this.mapsArea.border.opacity) ? 1 : this.mapsArea.border.opacity,\n color: this.mapsArea.border.color, width: this.mapsArea.border.width\n };\n var rect = new RectOption(this.element.id + '_MapAreaBorder', background || this.themeStyle.areaBackgroundColor, mapBorder, 1, this.mapAreaRect);\n this.svgObject.appendChild(this.renderer.drawRectangle(rect));\n }\n };\n /**\n * To add tab index for map element\n *\n * @returns {void}\n */\n Maps.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'Maps Element');\n this.element.setAttribute('role', 'region');\n this.element.tabIndex = this.tabIndex;\n };\n Maps.prototype.setSecondaryElementPosition = function () {\n var element = getElementByID(this.element.id + '_Secondary_Element');\n var rect = this.element.getBoundingClientRect();\n var svgElement = getElementByID(this.element.id + '_svg');\n if (!isNullOrUndefined(svgElement)) {\n var svgRect = svgElement.getBoundingClientRect();\n element.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n element.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n }\n };\n Maps.prototype.zoomingChange = function () {\n var left;\n var top;\n if (getElementByID(this.element.id + '_Layer_Collections') && this.zoomModule) {\n this.zoomModule.layerCollectionEle = getElementByID(this.element.id + '_Layer_Collections');\n }\n if (this.isTileMap && getElementByID(this.element.id + '_Tile_SVG') && getElementByID(this.element.id + '_tile_parent')) {\n var tileElement = getElementByID(this.element.id + '_tile_parent');\n var tileSvgElement = getElementByID(this.element.id + '_Tile_SVG');\n var tileSvgParentElement = getElementByID(this.element.id + '_Tile_SVG_Parent');\n var tileRect = tileElement.getBoundingClientRect();\n var tileSvgRect = tileSvgElement.getBoundingClientRect();\n left = (tileRect.left - tileSvgRect.left);\n top = (tileRect.top - tileSvgRect.top);\n tileSvgParentElement.style.left = left + 'px';\n tileSvgParentElement.style.top = top + 'px';\n if (!isNullOrUndefined(this.legendModule) && this.legendModule.totalPages.length > 0) {\n tileElement.style.width = tileSvgElement.style.width =\n this.legendModule.legendTotalRect.width.toString();\n tileElement.style.height = tileSvgElement.style.height =\n this.legendModule.legendTotalRect.height.toString();\n tileSvgParentElement.style.width = this.legendModule.legendTotalRect.width + 'px';\n tileSvgParentElement.style.height = this.legendModule.legendTotalRect.height + 'px';\n }\n var markerTemplateElements = document.getElementsByClassName('template');\n if (!isNullOrUndefined(markerTemplateElements) && markerTemplateElements.length > 0) {\n for (var i = 0; i < markerTemplateElements.length; i++) {\n var templateGroupEle = markerTemplateElements[i];\n templateGroupEle.style.left = left + 'px';\n templateGroupEle.style.top = top + 'px';\n }\n }\n }\n if (this.zoomSettings.zoomFactor >= 0) {\n if (this.zoomModule && this.zoomModule.toolBarGroup && this.zoomSettings.enable) {\n this.zoomModule.alignToolBar();\n }\n var elements = document.getElementById(this.element.id + '_Layer_Collections');\n if (!isNullOrUndefined(elements) && elements.childElementCount > 0) {\n for (var i = 0; i < elements.childNodes.length; i++) {\n var childElement = elements.childNodes[i];\n if (childElement.tagName === 'g' && childElement.id.indexOf('_Legend_Group') === -1) {\n var layerIndex = parseFloat(childElement.id.split('_LayerIndex_')[1].split('_')[0]);\n for (var j = 0; j < childElement.childNodes.length; j++) {\n var childNode = childElement.childNodes[j];\n if (!(childNode.id.indexOf('_Markers_Group') > -1) &&\n (!(childNode.id.indexOf('_bubble_Group') > -1)) &&\n (!(childNode.id.indexOf('_dataLableIndex_Group') > -1))) {\n changeBorderWidth(childNode, layerIndex, this.scale, this);\n }\n }\n }\n }\n }\n if (this.zoomModule && ((this.previousScale !== this.scale) || this.zoomNotApplied || this.isZoomByPosition)) {\n this.zoomModule.applyTransform(this, true);\n }\n }\n };\n Maps.prototype.createSecondaryElement = function () {\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: relative;z-index:2;';\n this.element.appendChild(secondaryElement);\n }\n };\n /**\n * @returns {void}\n */\n Maps.prototype.getMinMaxLatitudeLongitude = function () {\n var element = document.getElementById(this.element.id).getBoundingClientRect();\n var minPosition = this.isTileMap ? this.pointToLatLong((this.mapAreaRect.x - this.margin.left), -this.mapAreaRect.y) : this.getGeoLocation(0, (this.mapAreaRect.x + element.left), this.mapAreaRect.y);\n var maxPosition = this.isTileMap ? this.pointToLatLong(this.mapAreaRect.width, (this.mapAreaRect.height - this.mapAreaRect.y)) :\n this.getGeoLocation(0, (this.mapAreaRect.x + element.left + this.mapAreaRect.width), (this.mapAreaRect.y + this.mapAreaRect.height));\n var MinMaxLatitudeLongitude = {\n minLatitude: minPosition.latitude, maxLatitude: maxPosition.latitude, minLongitude: minPosition.longitude,\n maxLongitude: maxPosition.longitude\n };\n return MinMaxLatitudeLongitude;\n };\n /**\n * @returns {void}\n * @private\n */\n Maps.prototype.arrangeTemplate = function () {\n if (document.getElementById(this.element.id + '_Legend_Border')) {\n document.getElementById(this.element.id + '_Legend_Border').style.pointerEvents = 'none';\n }\n var templateElements = document.getElementsByClassName(this.element.id + '_template');\n if (!isNullOrUndefined(templateElements) && templateElements.length > 0 &&\n getElementByID(this.element.id + '_Layer_Collections') && !this.isTileMap) {\n for (var i = 0; i < templateElements.length; i++) {\n var offSetLetValue = 0;\n var offSetTopValue = 0;\n var templateGroupEle = templateElements[i];\n if (!isNullOrUndefined(templateGroupEle) && templateGroupEle.childElementCount > 0) {\n var layerOffset = getElementByID(this.element.id + '_Layer_Collections').getBoundingClientRect();\n var elementOffset = getElementByID(templateGroupEle.id).getBoundingClientRect();\n if (templateGroupEle.id.indexOf('Marker') === -1) {\n offSetLetValue = this.isTileMap ? 0 : (layerOffset.left < elementOffset.left) ?\n -(Math.abs(elementOffset.left - layerOffset.left)) : (Math.abs(elementOffset.left - layerOffset.left));\n offSetTopValue = this.isTileMap ? 0 : (layerOffset.top < elementOffset.top) ?\n -(Math.abs(elementOffset.top - layerOffset.top)) : Math.abs(elementOffset.top - layerOffset.top);\n }\n for (var j = 0; j < templateGroupEle.childElementCount; j++) {\n var currentTemplate = templateGroupEle.childNodes[j];\n if (currentTemplate.id.indexOf('Marker') !== -1) {\n var elementOffset_1 = getElementByID(currentTemplate.id).getBoundingClientRect();\n currentTemplate.style.left = parseFloat(currentTemplate.style.left) - (this.isTileMap ? 0 : elementOffset_1.width / 2) + 'px';\n currentTemplate.style.top = parseFloat(currentTemplate.style.top) - (this.isTileMap ? 0 : elementOffset_1.height / 2) + 'px';\n }\n else {\n currentTemplate.style.left = parseFloat(currentTemplate.style.left) + offSetLetValue + 'px';\n currentTemplate.style.top = parseFloat(currentTemplate.style.top) + offSetTopValue + 'px';\n currentTemplate.style.transform = 'translate(-50%, -50%)';\n }\n }\n }\n }\n }\n };\n Maps.prototype.createTile = function () {\n var mainLayer = this.layersCollection[0];\n var padding = 0;\n if (mainLayer.isBaseLayer && (mainLayer.layerType === 'OSM' || mainLayer.layerType === 'Bing' ||\n mainLayer.layerType === 'GoogleStaticMap' || mainLayer.layerType === 'Google' || (!isNullOrUndefined(mainLayer.urlTemplate) && mainLayer.urlTemplate !== ''))) {\n removeElement(this.element.id + '_tile_parent');\n removeElement(this.element.id + '_tiles');\n removeElement('animated_tiles');\n var ele = createElement('div', {\n id: this.element.id + '_tile_parent'\n });\n ele.style.cssText = 'position: absolute; left: ' +\n (this.mapAreaRect.x) + 'px; right: ' + (this.margin.right) + 'px; top: '\n + (this.mapAreaRect.y + padding) + 'px; height: ' +\n (this.mapAreaRect.height) + 'px; width: '\n + (this.mapAreaRect.width) + 'px; overflow: hidden;';\n var ele1 = createElement('div', {\n id: this.element.id + '_tiles'\n });\n ele1.style.cssText = 'position: absolute; left: ' +\n (this.mapAreaRect.x) + 'px; right: ' + (this.margin.right) + 'px; top: '\n + (this.mapAreaRect.y + padding) + 'px; height: ' + (this.mapAreaRect.height) + 'px; width: '\n + (this.mapAreaRect.width) + 'px; overflow: hidden;';\n this.element.appendChild(ele);\n this.element.appendChild(ele1);\n }\n };\n /**\n * To initilize the private varibales of maps.\n *\n * @returns {void}\n */\n Maps.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-maps').length;\n this.element.id = 'maps_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.mapLayerPanel = new LayerPanel(this);\n };\n Maps.prototype.findBaseAndSubLayers = function () {\n var _this = this;\n var baseIndex = this.baseLayerIndex;\n var mainLayers = [];\n var subLayers = [];\n this.layersCollection = [];\n Array.prototype.forEach.call(this.layers, function (layer) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n (layer.type === 'Layer') ? mainLayers.push(layer) : subLayers.push(layer);\n });\n for (var i = 0; i < mainLayers.length; i++) {\n var baseLayer = mainLayers[i];\n if (baseLayer.visible && baseIndex === i) {\n baseLayer.isBaseLayer = true;\n this.isTileMap = (baseLayer.layerType === 'Geometry' && !isNullOrUndefined(baseLayer.shapeData)) ? false : true;\n this.layersCollection.push(baseLayer);\n break;\n }\n else if (i === mainLayers.length - 1) {\n this.layersCollection.push(mainLayers[0]);\n break;\n }\n }\n subLayers.map(function (subLayer) {\n if (subLayer.visible) {\n _this.layersCollection.push(subLayer);\n }\n });\n };\n /**\n * Render the map border\n *\n * @private\n * @returns {void}\n */\n Maps.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_MapBorder');\n if ((width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var border = {\n opacity: isNullOrUndefined(this.border.opacity) ? 1 : this.border.opacity,\n color: this.border.color, width: this.border.width\n };\n var borderRect = new RectOption(this.element.id + '_MapBorder', this.background || this.themeStyle.backgroundColor, border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n /**\n * Render the title and subtitle\n *\n * @param {TitleSettingsModel} title - Specifies the title\n * @param {string} type - Specifies the type\n * @param {Rect} bounds - Specifies the bounds\n * @param {Element} groupEle - Specifies the group element\n * @returns {void}\n * @private\n */\n Maps.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n size: title.textStyle.size,\n color: title.textStyle.color,\n fontFamily: title.textStyle.fontFamily,\n fontWeight: title.textStyle.fontWeight,\n fontStyle: title.textStyle.fontStyle,\n opacity: title.textStyle.opacity\n };\n var height;\n var width = Math.abs((this.margin.left + this.margin.right) - this.availableSize.width);\n style.fontFamily = !isNullOrUndefined(style.fontFamily) ? style.fontFamily : this.themeStyle.fontFamily;\n style.fontWeight = type === 'title' ? style.fontWeight || this.themeStyle.titleFontWeight : style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = type === 'title' ? (style.size || this.themeStyle.titleFontSize) : (style.size || this.themeStyle.subTitleFontSize || Theme.mapsSubTitleFont.size);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_Map_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', this.description || title.text);\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = Math.abs((titleBounds.y + this.margin.bottom) - this.availableSize.height);\n this.mapAreaRect = new Rect(this.margin.left, titleBounds.y + 10, width, height - 10);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = Math.abs((this.margin.top + this.margin.bottom) - this.availableSize.height);\n this.mapAreaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n /**\n * To create svg element for maps\n *\n * @returns {void}\n */\n Maps.prototype.createSVG = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * To Remove the SVG\n *\n * @returns {void}\n */\n Maps.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n removeElement(this.element.id + '_tile_parent');\n removeElement(this.element.id + '_tiles');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n this.clearTemplate();\n };\n /**\n * To bind event handlers for maps.\n *\n * @returns {void}\n */\n Maps.prototype.wireEVents = function () {\n //let cancelEvent: string = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n EventHandler.add(this.element, 'click', this.mapsOnClick, this);\n EventHandler.add(this.element, 'contextmenu', this.mapsOnRightClick, this);\n EventHandler.add(this.element, 'dblclick', this.mapsOnDoubleClick, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnMap, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n // EventHandler.add(this.element, cancelEvent, this.mouseLeaveOnMap, this);\n this.resizeEvent = this.mapsOnResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeEvent);\n };\n /**\n * To unbind event handlers from maps.\n *\n * @returns {void}\n */\n Maps.prototype.unWireEVents = function () {\n //let cancelEvent: string = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n EventHandler.remove(this.element, 'click', this.mapsOnClick);\n EventHandler.remove(this.element, 'contextmenu', this.mapsOnRightClick);\n EventHandler.remove(this.element, 'dblclick', this.mapsOnDoubleClick);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnMap);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n //EventHandler.remove(this.element, cancelEvent, this.mouseLeaveOnMap);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeEvent);\n };\n /**\n * This method is used to perform operations when mouse pointer leave from maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event on maps.\n * @returns {void}\n * @private\n */\n Maps.prototype.mouseLeaveOnMap = function (e) {\n if (document.getElementsByClassName('highlightMapStyle').length > 0 && this.legendModule) {\n this.legendModule.removeShapeHighlightCollection();\n removeClass(document.getElementsByClassName('highlightMapStyle')[0]);\n }\n };\n Maps.prototype.keyUpHandler = function (event) {\n var id = event.target['id'];\n if (this.isTileMap) {\n this.removeTileMap();\n }\n if (event.code === 'Tab' && id.indexOf('_LayerIndex_') > -1 && id.indexOf('shapeIndex') > -1) {\n this.keyboardHighlightSelection(id, event.type);\n }\n else if (id.indexOf('_LayerIndex_') === -1 && id.indexOf('shapeIndex') === -1 &&\n getElementsByClassName('highlightMapStyle').length > 0) {\n removeClass(getElementsByClassName('highlightMapStyle')[0]);\n if (this.legendSettings.visible && this.legendModule) {\n this.legendModule.removeShapeHighlightCollection();\n }\n }\n };\n Maps.prototype.keyboardHighlightSelection = function (id, key) {\n var layerIndex = parseInt(id.split('_LayerIndex_')[1].split('_')[0], 10);\n var shapeIndex = parseInt(id.split('_shapeIndex_')[1].split('_')[0], 10);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeData = this.layers[layerIndex].shapeData['features']['length'] > shapeIndex ?\n this.layers[layerIndex].shapeData['features'][shapeIndex]['properties'] : null;\n var dataIndex = parseInt(id.split('_dataIndex_')[1].split('_')[0], 10);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = isNullOrUndefined(dataIndex) ? null : this.layers[layerIndex].dataSource[dataIndex];\n if (this.layers[layerIndex].selectionSettings.enable && key === 'keydown' && this.selectionModule) {\n this.selectionModule.selectionsettings = this.layers[layerIndex].selectionSettings;\n this.selectionModule.selectionType = 'Shape';\n this.selectionModule.selectElement(event.target, layerIndex, data, shapeData);\n }\n else if (this.highlightModule && (this.layers[layerIndex].highlightSettings.enable && key === 'keyup' &&\n !event.target.classList.contains('ShapeselectionMapStyle'))) {\n this.highlightModule.highlightSettings = this.layers[layerIndex].highlightSettings;\n this.highlightModule.handleHighlight(event.target, layerIndex, data, shapeData);\n }\n };\n Maps.prototype.keyDownHandler = function (event) {\n var zoom = this.zoomModule;\n var id = event.target['id'];\n if ((event.code === 'ArrowUp' || event.code === 'ArrowDown' || event.code === 'ArrowLeft'\n || event.code === 'ArrowRight') && zoom) {\n var animatedTiles = document.getElementById(this.element.id + '_animated_tiles');\n if (this.isTileMap && !isNullOrUndefined(animatedTiles)) {\n this.currentTiles = animatedTiles.cloneNode(true);\n }\n }\n if (this.zoomSettings.enable && zoom && (event.key === '+' || event.code === 'Equal')) {\n zoom.performZoomingByToolBar('zoomin');\n }\n else if (this.zoomSettings.enable && zoom && (event.key === '-' || event.code === 'Minus')) {\n zoom.performZoomingByToolBar('zoomout');\n }\n else if (this.zoomSettings.enable && zoom && event['keyCode'] === 82) {\n zoom.performZoomingByToolBar('reset');\n zoom.isPanning = false;\n }\n else if (this.zoomSettings.enable && this.zoomSettings.enablePanning && zoom\n && (event.code === 'ArrowUp' || event.code === 'ArrowDown')) {\n event.preventDefault();\n zoom.mouseDownLatLong['x'] = 0;\n zoom.mouseMoveLatLong['y'] = this.mapAreaRect.height / 7;\n zoom.panning('None', zoom.mouseDownLatLong['x'], event.code === 'ArrowUp' ? -(zoom.mouseMoveLatLong['y']) :\n zoom.mouseMoveLatLong['y'], event);\n zoom.mouseDownLatLong['y'] = zoom.mouseMoveLatLong['y'];\n }\n else if (this.zoomSettings.enable && this.zoomSettings.enablePanning && zoom\n && (event.code === 'ArrowLeft' || event.code === 'ArrowRight')) {\n event.preventDefault();\n zoom.mouseDownLatLong['y'] = 0;\n zoom.mouseMoveLatLong['x'] = this.mapAreaRect.width / 7;\n zoom.panning('None', event.code === 'ArrowLeft' ? -(zoom.mouseMoveLatLong['x']) : zoom.mouseMoveLatLong['x'], zoom.mouseDownLatLong['y'], event);\n zoom.mouseDownLatLong['x'] = zoom.mouseMoveLatLong['x'];\n }\n else if (event.code === 'Enter') {\n id = event.target['id'];\n event.preventDefault();\n if (this.legendModule && (id.indexOf('_Left_Page_Rect') > -1 || id.indexOf('_Right_Page_Rect') > -1)) {\n this.mapAreaRect = this.legendModule.initialMapAreaRect;\n this.legendModule.currentPage = (id.indexOf('_Left_Page_') > -1) ? (this.legendModule.currentPage - 1) :\n (this.legendModule.currentPage + 1);\n this.legendModule.legendGroup = this.renderer.createGroup({ id: this.element.id + '_Legend_Group' });\n this.legendModule.drawLegendItem(this.legendModule.currentPage);\n var textContent = (document.getElementById(this.element.id + '_Paging_Text')).textContent;\n var text = textContent.split('/').map(Number);\n if (id.indexOf('_Left_Page_Rect') > -1) {\n if (text[0] !== 1) {\n event.target.focus();\n }\n event.target.style.outlineColor = text[0] - 1 !== text[1] ? '' : 'transparent';\n }\n else if (id.indexOf('_Right_Page_Rect') > -1) {\n if (text[0] !== text[1]) {\n event.target.focus();\n }\n event.target.style.outlineColor = text[0] !== text[1] + 1 ? '' : 'transparent';\n }\n if (querySelector(this.element.id + '_Legend_Border', this.element.id)) {\n querySelector(this.element.id + '_Legend_Border', this.element.id).style.pointerEvents = 'none';\n }\n }\n if (id.indexOf('shapeIndex') > -1) {\n this.keyboardHighlightSelection(id, event.type);\n }\n }\n if (this.zoomModule) {\n this.zoomModule.removeToolbarOpacity(this.isTileMap ? Math.round(this.tileZoomLevel) : this.mapScaleValue, this.mouseMoveId);\n }\n };\n /**\n * Gets the selected element to be maintained or not.\n *\n * @param {Element} targetEle - Specifies the target element\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n Maps.prototype.SelectedElement = function (targetEle) {\n var isSelect = false;\n if (targetEle.getAttribute('class') === 'ShapeselectionMapStyle') {\n isSelect = true;\n }\n return isSelect;\n };\n /**\n * This method is used to perform the operations when a click operation is performed on maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event on maps.\n * @returns {void}\n * @private\n */\n Maps.prototype.mapsOnClick = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var latitude = null;\n var longitude = null;\n this.mouseClickEvent = { x: e.x, y: e.y };\n if (targetEle.id.indexOf('_ToolBar') === -1) {\n var latLongValue = this.getClickLocation(targetId, e.pageX, e.pageY, targetEle, e['layerX'], e['layerY']);\n if (!isNullOrUndefined(latLongValue)) {\n latitude = latLongValue.latitude;\n longitude = latLongValue.longitude;\n }\n var eventArgs_1 = {\n cancel: false, name: click, target: targetId, x: e.clientX, y: e.clientY,\n latitude: latitude, longitude: longitude,\n isShapeSelected: this.SelectedElement(targetEle)\n };\n if (this.onclick) {\n eventArgs_1.name = onclick;\n this.trigger('onclick', eventArgs_1, function (mouseArgs) {\n _this.clickHandler(e, eventArgs_1, targetEle);\n });\n }\n else {\n this.trigger('click', eventArgs_1, function (mouseArgs) {\n _this.clickHandler(e, eventArgs_1, targetEle);\n });\n }\n }\n if (this.zoomModule) {\n this.zoomModule.removeToolbarOpacity(this.isTileMap ? Math.round(this.tileZoomLevel) : this.mapScaleValue, targetId);\n if (this.isDevice) {\n this.zoomModule.removeToolbarClass('', '', '', '', '');\n }\n }\n };\n Maps.prototype.clickHandler = function (e, eventArgs, targetEle) {\n if (targetEle.id.indexOf('shapeIndex') > -1) {\n this.mergeCluster();\n if (getElement(this.element.id + '_mapsTooltip') &&\n this.mapsTooltipModule.tooltipTargetID.indexOf('_MarkerIndex_') > -1) {\n removeElement(this.element.id + '_mapsTooltip');\n }\n }\n if (this.markerModule) {\n this.markerModule.markerClusterClick(e);\n }\n if (!eventArgs.cancel) {\n this.notify(click, targetEle);\n }\n if (!eventArgs.cancel && targetEle.id.indexOf('shapeIndex') !== -1) {\n this.triggerShapeSelection(targetEle);\n }\n };\n Maps.prototype.triggerShapeSelection = function (targetEle) {\n var layerIndex = parseInt(targetEle.id.split('_LayerIndex_')[1].split('_')[0], 10);\n var shapeSelectedEventArgs = triggerShapeEvent(targetEle.id, this.layers[layerIndex].selectionSettings, this, shapeSelected);\n if (!shapeSelectedEventArgs.cancel && this.selectionModule && !isNullOrUndefined(this.shapeSelected)) {\n customizeStyle(this.selectionModule.selectionType + 'selectionMap', this.selectionModule.selectionType + 'selectionMapStyle', shapeSelectedEventArgs);\n }\n else if (shapeSelectedEventArgs.cancel && this.selectionModule\n && isNullOrUndefined(shapeSelectedEventArgs['data'])) {\n removeClass(targetEle);\n this.selectionModule.removedSelectionList(targetEle);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Maps.prototype.getMarkerClickLocation = function (pageX, pageY, x, y, marker, isDragEnd) {\n document.getElementById(this.element.id + \"_svg\").style.cursor = 'grabbing';\n var targetElement = getElement(marker.targetId);\n var latLongValue = this.getClickLocation(marker.targetId, pageX, pageY, targetElement, x, y);\n var location = (this.isTileMap) ? convertTileLatLongToPoint(new MapLocation(latLongValue.longitude, latLongValue.latitude), this.tileZoomLevel, this.tileTranslatePoint, true) : convertGeoToPoint(latLongValue.latitude, latLongValue.longitude, this.mapLayerPanel.currentFactor, this.layersCollection[marker.layerIndex], this);\n var transPoint = this.translatePoint;\n var translateX = (this.isTileMap ? location.x : (location.x + transPoint.x) * this.scale);\n var translateY = (this.isTileMap ? location.y : (location.y + transPoint.y) * this.scale);\n if (this.markerDragArgument.shape !== 'Balloon') {\n targetElement.setAttribute('transform', 'translate( ' + translateX + ' ' + translateY + ' )');\n }\n else {\n targetElement.parentElement.setAttribute('transform', 'translate( ' + translateX + ' ' + translateY + ' )');\n }\n if (isDragEnd) {\n var markerSettings = this.layers[marker.layerIndex].markerSettings[marker.markerIndex];\n latLongValue = this.getClickLocation(marker.targetId, (pageX - markerSettings.offset.x), (pageY - markerSettings.offset.y), targetElement, (x - markerSettings.offset.x), (y - markerSettings.offset.y));\n }\n return latLongValue;\n };\n /** @private */\n Maps.prototype.getClickLocation = function (targetId, pageX, pageY, targetElement, x, y) {\n var layerIndex = 0;\n var latLongValue;\n if (targetId.indexOf('_LayerIndex_') !== -1 && !this.isTileMap &&\n (parseInt(this.mouseDownEvent['x'], 10) === parseInt(this.mouseClickEvent['x'], 10)) &&\n (parseInt(this.mouseDownEvent['y'], 10) === parseInt(this.mouseClickEvent['y'], 10))) {\n layerIndex = parseFloat(targetId.split('_LayerIndex_')[1].split('_')[0]);\n if (this.layers[layerIndex].geometryType === 'Normal') {\n if (targetId.indexOf('_shapeIndex_') > -1) {\n var immediateParent = targetElement.parentElement;\n var parentElement = immediateParent.id.indexOf('_Point_Group') > -1 || immediateParent.id.indexOf('_LineString_Group') > -1\n || immediateParent.id.indexOf('_MultiLineString_Group') > -1 || immediateParent.id.indexOf('_Polygon_Group') > -1 ?\n immediateParent.parentElement : immediateParent;\n var location_2 = getMousePosition(pageX, pageY, parentElement);\n var zoomScaleValue = this.mapLayerPanel.currentFactor * this.mapScaleValue;\n var minLongitude = Math.abs((-this.baseMapBounds.longitude.min) * zoomScaleValue);\n var minLatitude = Math.abs(this.baseMapBounds.latitude.max * zoomScaleValue);\n latLongValue = {\n latitude: Math.abs(this.baseMapBounds.latitude.max - (location_2.y / zoomScaleValue)),\n longitude: Math.abs((location_2.x / zoomScaleValue) + this.baseMapBounds.longitude.min)\n };\n if (this.baseMapBounds.longitude.min < 0 && minLongitude > location_2.x) {\n latLongValue.longitude = -latLongValue.longitude;\n }\n if (this.baseMapBounds.latitude.min < 0 && minLatitude > location_2.y) {\n latLongValue.latitude = -latLongValue.latitude;\n }\n }\n else if (targetId.indexOf('_MarkerIndex_') > -1 && this.markerModule && !this.markerDragArgument) {\n var markerIndex = parseInt(targetId.split('_MarkerIndex_')[1].split('_')[0], 10);\n var dataIndex = parseInt(targetId.split('_dataIndex_')[1].split('_')[0], 10);\n if (!isNaN(markerIndex) && !isNaN(dataIndex)) {\n var dataObject = this.layers[layerIndex].markerSettings[markerIndex].dataSource[dataIndex];\n latLongValue = { latitude: dataObject['latitude'], longitude: dataObject.longitude };\n }\n else {\n latLongValue = { latitude: null, longitude: null };\n }\n }\n else if (targetId.indexOf('_MarkerIndex_') > -1 && this.markerModule && this.markerDragArgument) {\n var element = document.getElementById(this.element.id + '_LayerIndex_' + this.markerDragArgument.layerIndex);\n var elementRect = element.getBoundingClientRect();\n var location_3 = new MapLocation(pageX > elementRect.left ? Math.abs(elementRect.left - pageX) : 0, pageY > elementRect.top ? Math.abs(elementRect.top - pageY) : 0);\n var minLongitude = Math.abs((-this.baseMapBounds.longitude.min) * this.mapLayerPanel.currentFactor);\n var minLatitude = Math.abs(this.baseMapBounds.latitude.max * this.mapLayerPanel.currentFactor);\n latLongValue = {\n latitude: Math.abs(this.baseMapBounds.latitude.max - (location_3.y / (this.mapLayerPanel.currentFactor * this.scale))),\n longitude: Math.abs((location_3.x / (this.mapLayerPanel.currentFactor * this.scale)) + this.baseMapBounds.longitude.min)\n };\n if (this.baseMapBounds.longitude.min < 0 && minLongitude > location_3.x) {\n latLongValue.longitude = -latLongValue.longitude;\n }\n if (this.baseMapBounds.latitude.min < 0 && minLatitude > location_3.y) {\n latLongValue.latitude = -latLongValue.latitude;\n }\n }\n else {\n latLongValue = { latitude: null, longitude: null };\n }\n }\n else {\n latLongValue = this.getGeoLocation(layerIndex, x, y);\n }\n }\n else if (this.isTileMap && (parseInt(this.mouseDownEvent['x'], 10) === parseInt(this.mouseClickEvent['x'], 10)) &&\n (parseInt(this.mouseDownEvent['y'], 10) === parseInt(this.mouseClickEvent['y'], 10))) {\n latLongValue = this.getTileGeoLocation(x, y);\n }\n return latLongValue;\n };\n Maps.prototype.removeTileMap = function () {\n var animateElement = document.getElementById(this.element.id + '_animated_tiles');\n if (!isNullOrUndefined(this.currentTiles) && animateElement.childElementCount < this.currentTiles.childElementCount) {\n for (var l = animateElement.childElementCount - 1; l >= this.currentTiles.childElementCount; l--) {\n animateElement.removeChild(animateElement.children[l]);\n }\n }\n this.currentTiles = null;\n };\n /**\n * This method is used to perform operations when mouse click on maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event on maps.\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n Maps.prototype.mouseEndOnMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var pageX;\n var latitude = null;\n var longitude = null;\n var pageY;\n var target;\n var touchArg;\n var layerX = 0;\n var layerY = 0;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n layerX = pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n layerY = pageY - (this.isTileMap ? 10 : 0);\n target = touchArg.target;\n this.mouseClickEvent = { x: pageX, y: pageY };\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n layerX = e['layerX'];\n layerY = e['layerY'] - (this.isTileMap ? 10 : 0);\n target = e.target;\n }\n if (this.isTileMap) {\n this.removeTileMap();\n }\n if (this.isTouch) {\n if (targetEle.id.indexOf('_ToolBar') === -1) {\n var latLongValue = this.getClickLocation(targetId, pageX, pageY, targetEle, pageX, pageY);\n if (!isNullOrUndefined(latLongValue)) {\n latitude = latLongValue.latitude;\n longitude = latLongValue.longitude;\n }\n }\n this.titleTooltip(e, pageX, pageY, true);\n if (!isNullOrUndefined(this.legendModule)) {\n this.legendTooltip(e, e.pageX, e.pageY, true);\n }\n }\n this.notify(Browser.touchEndEvent, e);\n if (e.cancelable && !this.isTouch) {\n e.preventDefault();\n }\n if (!isNullOrUndefined(this.markerDragArgument)) {\n var marker = this.markerDragArgument;\n this.mouseClickEvent['x'] = this.mouseDownEvent['x'];\n this.mouseClickEvent['y'] = this.mouseDownEvent['y'];\n var latLongValue = this.getMarkerClickLocation(pageX, pageY, layerX, layerY, this.markerDragArgument, true);\n var markerObject = this.layers[marker.layerIndex].markerSettings[marker.markerIndex];\n document.getElementById(this.element.id + \"_svg\").style.cursor = markerObject.enableDrag ? 'pointer' : 'grabbing';\n var dragEventArgs = {\n name: 'markerDragEnd', x: pageX, y: pageY,\n latitude: latLongValue.latitude, longitude: latLongValue.longitude,\n layerIndex: marker.layerIndex, markerIndex: marker.markerIndex,\n dataIndex: marker.dataIndex\n };\n if (isNullOrUndefined(markerObject.latitudeValuePath) && isNullOrUndefined(markerObject.longitudeValuePath)) {\n var data = markerObject.dataSource[marker.dataIndex];\n if (!isNullOrUndefined(data['Longitude']) && !isNullOrUndefined(data['Latitude'])) {\n markerObject.dataSource[marker.dataIndex].Latitude = dragEventArgs.latitude;\n markerObject.dataSource[marker.dataIndex].Longitude = dragEventArgs.longitude;\n }\n else {\n markerObject.dataSource[marker.dataIndex].latitude = dragEventArgs.latitude;\n markerObject.dataSource[marker.dataIndex].longitude = dragEventArgs.longitude;\n }\n }\n else {\n markerObject.dataSource[marker.dataIndex][markerObject.latitudeValuePath] = dragEventArgs.latitude;\n markerObject.dataSource[marker.dataIndex][markerObject.longitudeValuePath] = dragEventArgs.longitude;\n }\n this.markerDragId = '';\n this.markerDragArgument = null;\n this.trigger('markerDragEnd', dragEventArgs);\n }\n else {\n document.getElementById(this.element.id + \"_svg\").style.cursor = 'auto';\n }\n if (this.zoomModule && this.isDevice) {\n this.zoomModule.removeToolbarOpacity(this.isTileMap ? Math.round(this.tileZoomLevel) : this.scale, this.element.id + '_Zooming_');\n this.zoomModule.removeToolbarClass('', '', '', '', '');\n }\n return false;\n };\n /**\n * This method is used to perform operations when mouse is clicked down on maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event on maps\n * @returns {void}\n * @private\n */\n Maps.prototype.mouseDownOnMap = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n this.mouseDownEvent = { x: e.x, y: e.y };\n if (e.type.indexOf('touch') !== -1 && e.changedTouches) {\n this.mouseDownEvent = { x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY };\n }\n if (this.isDevice && !isNullOrUndefined(this.mapsTooltipModule)) {\n this.mapsTooltipModule.renderTooltip(e);\n }\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n this.markerDragId = element.id;\n var animatedTiles = document.getElementById(this.element.id + '_animated_tiles');\n if (this.isTileMap && !isNullOrUndefined(animatedTiles)) {\n this.currentTiles = animatedTiles.cloneNode(true);\n }\n if (element.id.indexOf('_ToolBar') === -1) {\n var markerModule = this.markerModule;\n if (element.id.indexOf('shapeIndex') > -1 || element.id.indexOf('Tile') > -1) {\n this.mergeCluster();\n }\n if (markerModule) {\n markerModule.markerClick(e);\n markerModule.markerClusterClick(e);\n }\n if (this.bubbleModule) {\n this.bubbleModule.bubbleClick(e);\n }\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * Merges the marker clusters.\n *\n * @returns {void}\n * @private\n */\n Maps.prototype.mergeCluster = function () {\n if (this.markerModule && (this.markerModule.sameMarkerData.length > 0) &&\n (this.zoomModule ? this.zoomModule.isSingleClick : true)) {\n mergeSeparateCluster(this.markerModule.sameMarkerData, this, getElement(this.element.id + '_Markers_Group'));\n this.markerModule.sameMarkerData = [];\n }\n };\n /**\n * @param {PointerEvent} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n Maps.prototype.mapsOnRightClick = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var latitude = null;\n var longitude = null;\n this.mouseClickEvent = this.mouseDownEvent = { x: e.x, y: e.y };\n if (targetEle.id.indexOf('_ToolBar') === -1) {\n var latLongValue = this.getClickLocation(targetId, e.pageX, e.pageY, targetEle, e['layerX'], e['layerY']);\n if (!isNullOrUndefined(latLongValue)) {\n latitude = latLongValue.latitude;\n longitude = latLongValue.longitude;\n }\n var eventArgs = {\n cancel: false, name: rightClick, target: targetId, x: e.clientX, y: e.clientY,\n latitude: latitude, longitude: longitude,\n isShapeSelected: false\n };\n this.trigger('rightClick', eventArgs);\n }\n };\n /**\n * This method is used to perform operations when performing the double click operation on maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n Maps.prototype.mapsOnDoubleClick = function (e) {\n this.notify('dblclick', e);\n var targetElement = e.target;\n var targetId = targetElement.id;\n var layerIndex = 0;\n var latLongValue;\n var latitude = null;\n var longitude = null;\n if (targetElement.id.indexOf('_ToolBar') === -1) {\n if (targetElement.id.indexOf('_LayerIndex_') !== -1 && !this.isTileMap && (this.mouseDownEvent['x'] === e.clientX)\n && (this.mouseDownEvent['y'] === e.clientY)) {\n layerIndex = parseFloat(targetElement.id.split('_LayerIndex_')[1].split('_')[0]);\n latLongValue = this.getGeoLocation(layerIndex, e['layerX'], e['layerY']);\n latitude = latLongValue['latitude'];\n longitude = latLongValue['longitude'];\n }\n else if (this.isTileMap && (this.mouseDownEvent['x'] === e.clientX)\n && (this.mouseDownEvent['y'] === e.clientY)) {\n latLongValue = this.getTileGeoLocation(e['layerX'], e['layerY']);\n latitude = latLongValue['latitude'];\n longitude = latLongValue['longitude'];\n }\n var doubleClickArgs = {\n cancel: false, name: doubleClick, x: e.clientX, y: e.clientY,\n target: targetId, latitude: latitude, longitude: longitude, isShapeSelected: null\n };\n this.trigger('doubleClick', doubleClickArgs);\n }\n };\n /**\n * This method is used to perform operations while performing mouse over on maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event on maps.\n * @returns {void}\n * @private\n */\n Maps.prototype.mouseMoveOnMap = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n var target;\n var touches = null;\n target = (e.type === 'touchmove') ? e.target :\n target = e.target;\n // if (target.id.indexOf('shapeIndex') !== -1 && !this.highlightSettings.enable) {\n // triggerShapeEvent(target.id, this.highlightSettings, this, shapeHighlight);\n // }\n if (this.markerModule) {\n this.markerModule.markerMove(e);\n this.markerModule.markerClusterMouseMove(e);\n }\n if (this.bubbleModule) {\n this.bubbleModule.bubbleMove(e);\n }\n if (target.id.indexOf('MarkerIndex') == -1) {\n document.getElementById(this.element.id + \"_svg\").style.cursor = 'auto';\n }\n this.onMouseMove(e);\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method is used to perform operations when mouse move event is performed on maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event on maps.\n * @returns {void}\n * @private\n */\n Maps.prototype.onMouseMove = function (e) {\n var element = e.target;\n this.mouseMoveId = element['id'];\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var touches = null;\n var layerX = 0;\n var layerY = 0;\n if (e.type.indexOf('touch') == -1) {\n pageX = e.pageX;\n pageY = e.pageY;\n layerX = e['layerX'];\n layerY = e['layerY'] - (this.isTileMap ? 10 : 0);\n this.titleTooltip(e, e.pageX, e.pageY);\n if (!isNullOrUndefined(this.legendModule)) {\n this.legendTooltip(e, e.pageX, e.pageY, true);\n }\n }\n else {\n touches = e.touches;\n layerX = pageX = touches[0].clientX;\n layerY = pageY = touches[0].clientY - (this.isTileMap ? 10 : 0);\n }\n if (!isNullOrUndefined(this.markerDragArgument)) {\n var marker = this.markerDragArgument;\n this.mouseClickEvent['x'] = this.mouseDownEvent['x'];\n this.mouseClickEvent['y'] = this.mouseDownEvent['y'];\n this.getMarkerClickLocation(pageX, pageY, layerX, layerY, marker, false);\n }\n if (this.zoomModule) {\n this.zoomModule.removeToolbarOpacity(this.isTileMap ? Math.round(this.tileZoomLevel) : this.scale, e.target.id);\n }\n return false;\n };\n Maps.prototype.legendTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var legendText;\n var page = this.legendModule.currentPage;\n var legendIndex = event.target.id.split('_Index_')[1];\n var collection;\n page = this.legendModule.totalPages.length <= this.legendModule.currentPage\n ? this.legendModule.totalPages.length - 1 : this.legendModule.currentPage < 0 ?\n 0 : this.legendModule.currentPage;\n var count = this.legendModule.totalPages.length !== 0 ?\n this.legendModule.totalPages[page]['Collection'].length : this.legendModule.totalPages.length;\n for (var i = 0; i < count; i++) {\n collection = this.legendModule.totalPages[page]['Collection'][i];\n legendText = collection['DisplayText'];\n targetId = event.target['id'];\n legendIndex = event.target['id'].split('_Index_')[1];\n if ((targetId === (this.element.id + '_Legend_Text_Index_' + legendIndex)) &&\n (event.target.textContent.indexOf('...') > -1) && collection['idIndex'] === parseInt(legendIndex, 10)) {\n showTooltip(legendText, this.legendSettings.textStyle.size, x, y, this.element.offsetWidth, this.element.offsetHeight, this.element.id + '_EJ2_Legend_Text_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n }\n if ((targetId !== (this.element.id + '_Legend_Text_Index_' + legendIndex))) {\n removeElement(this.element.id + '_EJ2_Legend_Text_Tooltip');\n }\n };\n Maps.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (targetId === (this.element.id + '_LegendTitle') && (event.target.textContent.indexOf('...') > -1)) {\n showTooltip(this.legendSettings.title.text, this.legendSettings.titleStyle.size, x, y, this.element.offsetWidth, this.element.offsetHeight, this.element.id + '_EJ2_LegendTitle_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_LegendTitle_Tooltip');\n }\n if ((targetId === (this.element.id + '_Map_title')) && (event.target.textContent.indexOf('...') > -1)) {\n showTooltip(this.titleSettings.text, this.titleSettings.textStyle.size || this.themeStyle.titleFontSize, x, y, this.element.offsetWidth, this.element.offsetHeight, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n /*\n\n /**\n * This method is used to perform operations while resizing the window.\n *\n * @param e - Specifies the arguments of window resize event.\n */\n Maps.prototype.mapsOnResize = function (e) {\n var _this = this;\n if (!this.isDestroyed && !this.isExportInitialTileMap) {\n this.isResize = this.isReset = true;\n var args = {\n cancel: false,\n name: resize,\n previousSize: this.availableSize,\n currentSize: calculateSize(this),\n maps: this\n };\n this.trigger(resize, args);\n if (!args.cancel) {\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-maps')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSVG();\n _this.refreshing = true;\n _this.wireEVents();\n _this.render();\n _this.refreshing = false;\n }, 500);\n }\n }\n }\n return false;\n };\n /**\n * This method is used to zoom the map by specifying the center position.\n *\n * @param {number} centerPosition - Specifies the location of the maps to be zoomed as geographical coordinates.\n * @param {number} zoomFactor - Specifies the zoom factor for the maps.\n * @returns {void}\n */\n Maps.prototype.zoomByPosition = function (centerPosition, zoomFactor) {\n if (!this.isDestroyed) {\n this.zoomNotApplied = this.isMarkerZoomCompleted = false;\n var isRefresh = this.zoomSettings.zoomFactor === zoomFactor;\n this.previousProjection = null;\n if (!this.isTileMap && this.zoomModule) {\n if (!isNullOrUndefined(centerPosition)) {\n this.zoomSettings.zoomFactor = zoomFactor;\n isRefresh = this.centerPosition.latitude === centerPosition.latitude &&\n this.centerPosition.longitude === centerPosition.longitude ? true : isRefresh;\n this.centerPosition = centerPosition;\n this.isZoomByPosition = true;\n this.mapScaleValue = null;\n }\n else {\n this.zoomSettings.zoomFactor = zoomFactor;\n this.isZoomByPosition = true;\n this.mapScaleValue = null;\n }\n }\n else if (this.zoomModule) {\n this.tileZoomLevel = this.zoomSettings.zoomFactor = zoomFactor;\n isRefresh = this.centerPosition.latitude === centerPosition.latitude &&\n this.centerPosition.longitude === centerPosition.longitude ? true : isRefresh;\n this.centerPosition = centerPosition;\n this.isZoomByPosition = true;\n }\n if (isRefresh) {\n this.refresh();\n }\n }\n };\n /**\n * This method is used to perform panning by specifying the direction.\n *\n * @param {PanDirection} direction - Specifies the direction in which the panning must be performed.\n * @param {PointerEvent | TouchEvent} mouseLocation - Specifies the location of the mouse pointer in maps in pixels.\n * @returns {void}\n */\n Maps.prototype.panByDirection = function (direction, mouseLocation) {\n if (!this.isDestroyed) {\n var xDiff = 0;\n var yDiff = 0;\n switch (direction) {\n case 'Left':\n xDiff = -(this.mapAreaRect.width / 7);\n break;\n case 'Right':\n xDiff = (this.mapAreaRect.width / 7);\n break;\n case 'Top':\n yDiff = -(this.mapAreaRect.height / 7);\n break;\n case 'Bottom':\n yDiff = (this.mapAreaRect.height / 7);\n break;\n }\n if (this.zoomModule) {\n this.zoomModule.panning(direction, xDiff, yDiff, mouseLocation);\n }\n }\n };\n /**\n * This method is used to add the layers dynamically to the maps.\n *\n * @param {Object} layer - Specifies the layer to be added in the maps.\n * @returns {void}\n */\n Maps.prototype.addLayer = function (layer) {\n if (!this.isDestroyed) {\n var mapsLayer = this.layers;\n mapsLayer.push(layer);\n this.isAddLayer = true;\n this.layers = mapsLayer;\n }\n };\n /**\n * This method is used to remove a layer from the maps.\n *\n * @param {number} index - Specifies the index number of the layer to be removed.\n * @returns {void}\n */\n Maps.prototype.removeLayer = function (index) {\n if (!this.isDestroyed) {\n var mapsLayer = this.layers;\n mapsLayer.splice(index, 1);\n this.layers = mapsLayer;\n }\n };\n /**\n * This method is used to add markers dynamically in the maps.\n * If we provide the index value of the layer in which the marker to be added and the settings\n * of the marker as parameters, the marker will be added in the location.\n *\n * @param {number} layerIndex - Specifies the index number of the layer.\n * @param {MarkerSettingsModel[]} markerCollection - Specifies the settings of the marker to be added.\n * @returns {void}\n */\n Maps.prototype.addMarker = function (layerIndex, markerCollection) {\n if (!this.isDestroyed && !isNullOrUndefined(this.markerModule)) {\n var layerEle = document.getElementById(this.element.id + '_LayerIndex_' + layerIndex);\n if (markerCollection.length > 0 && layerEle) {\n for (var _i = 0, markerCollection_1 = markerCollection; _i < markerCollection_1.length; _i++) {\n var newMarker = markerCollection_1[_i];\n this.layersCollection[layerIndex].markerSettings.push(new MarkerSettings(this, 'markerSettings', newMarker));\n }\n this.markerModule.markerRender(this, layerEle, layerIndex, this.mapLayerPanel['currentFactor'], 'AddMarker');\n this.arrangeTemplate();\n }\n }\n };\n /**\n * This method is used to select the geometric shape element in the maps.\n *\n * @param {number} layerIndex - Specifies the index of the layer in maps.\n * @param {string | string[]} propertyName - Specifies the property name from the data source.\n * @param {string} name - Specifies the name of the shape, which is mapped from the data source, that is selected.\n * @param {boolean} enable - Specifies whether the shape should be selected or the selection should be removed.\n * @returns {void}\n */\n Maps.prototype.shapeSelection = function (layerIndex, propertyName, name, enable) {\n if (!this.isDestroyed) {\n var targetEle = void 0;\n var subLayerIndex = void 0;\n var popertyNameArray = Array.isArray(propertyName) ? propertyName : Array(propertyName);\n if (isNullOrUndefined(enable)) {\n enable = true;\n }\n var selectionsettings = this.layers[layerIndex].selectionSettings;\n if (!selectionsettings.enableMultiSelect && this.legendSelection && enable) {\n this.removeShapeSelection();\n }\n if (this.layers[layerIndex].type === 'SubLayer') {\n for (var i = 0; i < this.layersCollection.length; i++) {\n if ((this.layersCollection[i].shapeData === this.layers[layerIndex].shapeData)) {\n subLayerIndex = i;\n break;\n }\n }\n }\n if (selectionsettings.enable) {\n var targetId = void 0;\n var dataIndex = void 0;\n var shapeIndex = void 0;\n var indexValue = void 0;\n var shapeDataValue = void 0;\n var data = void 0;\n var shapeData = this.layers[layerIndex].shapeData['features'];\n for (var i = 0; i < shapeData.length; i++) {\n for (var j = 0; j < popertyNameArray.length; j++) {\n var propertyName_1 = !isNullOrUndefined(shapeData[i]['properties'][popertyNameArray[j]])\n && isNaN(shapeData[i]['properties'][popertyNameArray[j]]) ?\n shapeData[i]['properties'][popertyNameArray[j]].toLowerCase() : shapeData[i]['properties'][popertyNameArray[j]];\n var shapeName = !isNullOrUndefined(name) && typeof name === 'string' ? name.toLowerCase() : name;\n var k = void 0;\n if (propertyName_1 === shapeName) {\n if (!isNullOrUndefined(this.layers[layerIndex].shapeSettings.colorValuePath)) {\n k = checkShapeDataFields(this.layers[layerIndex].dataSource, shapeData[i]['properties'], this.layers[layerIndex].shapeDataPath, this.layers[layerIndex].shapePropertyPath, this.layers[layerIndex]);\n }\n var baseLayer = this.layers[layerIndex];\n if (this.baseLayerIndex >= 0 && baseLayer.isBaseLayer) {\n indexValue = 0;\n }\n else if (this.layers[layerIndex].type === 'SubLayer') {\n indexValue = subLayerIndex;\n }\n targetId = this.element.id + '_' + 'LayerIndex_' + indexValue + '_shapeIndex_' + i + '_dataIndex_' + k;\n targetEle = getElement(targetId);\n if (isNullOrUndefined(k) && isNullOrUndefined(targetEle)) {\n targetId = this.element.id + '_' + 'LayerIndex_' + layerIndex + '_shapeIndex_' + i + '_dataIndex_null';\n targetEle = getElement(targetId);\n }\n shapeIndex = parseInt(targetEle.id.split('_shapeIndex_')[1].split('_')[0], 10);\n shapeDataValue = this.layers[layerIndex].shapeData['features']['length'] > shapeIndex ?\n this.layers[layerIndex].shapeData['features'][shapeIndex]['properties'] : null;\n dataIndex = parseInt(targetEle.id.split('_dataIndex_')[1].split('_')[0], 10);\n data = isNullOrUndefined(dataIndex) ? null : this.layers[layerIndex].dataSource[dataIndex];\n if (enable) {\n triggerItemSelectionEvent(selectionsettings, this, targetEle, shapeDataValue, data);\n this.shapeSelectionClass = getElement('ShapeselectionMap');\n if (this.legendSettings.visible && targetEle.id.indexOf('_MarkerIndex_') === -1) {\n this.legendModule.shapeHighLightAndSelection(targetEle, data, selectionsettings, 'selection', layerIndex);\n }\n var shapeToggled = this.legendSettings.visible ? this.legendModule.shapeToggled : true;\n if (shapeToggled) {\n targetEle.setAttribute('class', 'ShapeselectionMapStyle');\n if (this.selectedElementId.indexOf(targetEle.getAttribute('id')) === -1) {\n this.selectedElementId.push(targetEle.getAttribute('id'));\n }\n if (!selectionsettings.enableMultiSelect) {\n return;\n }\n }\n }\n else {\n this.legendSelection = (!selectionsettings.enableMultiSelect && !this.legendSelection) ?\n true : this.legendSelection;\n if (this.legendSettings.visible && targetEle.id.indexOf('_MarkerIndex_') === -1 &&\n targetEle.getAttribute('class') === 'ShapeselectionMapStyle') {\n this.legendModule.shapeHighLightAndSelection(targetEle, data, selectionsettings, 'selection', layerIndex);\n }\n var shapeToggled = this.legendSettings.visible ? this.legendModule.shapeToggled : true;\n if (shapeToggled) {\n removeClass(targetEle);\n var selectedElementIdIndex = this.selectedElementId.indexOf(targetEle.getAttribute('id'));\n if (selectedElementIdIndex !== -1) {\n this.selectedElementId.splice(selectedElementIdIndex, 1);\n if (!selectionsettings.enableMultiSelect && this.legendSelection\n && this.selectedElementId.length > 0) {\n this.removeShapeSelection();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to zoom the maps based on the provided coordinates.\n *\n * @param {number} minLatitude - Specifies the minimum latitude of the location to be zoomed.\n * @param {number} minLongitude - Specifies the minimum latitude of the location to be zoomed.\n * @param {number} maxLatitude - Specifies the maximum latitude of the location to be zoomed.\n * @param {number} maxLongitude - Specifies the maximum longitude of the location to be zoomed.\n * @returns {void}\n */\n Maps.prototype.zoomToCoordinates = function (minLatitude, minLongitude, maxLatitude, maxLongitude) {\n var _a, _b;\n if (!this.isDestroyed) {\n this.isMarkerZoomCompleted = false;\n var centerLatitude = void 0;\n var centerLongtitude = void 0;\n var isTwoCoordinates = false;\n this.centerPosition = {\n latitude: null,\n longitude: null\n };\n this.isZoomByPosition = false;\n if (isNullOrUndefined(maxLatitude) && isNullOrUndefined(maxLongitude)\n || isNullOrUndefined(minLatitude) && isNullOrUndefined(minLongitude)) {\n minLatitude = isNullOrUndefined(minLatitude) ? 0 : minLatitude;\n minLongitude = isNullOrUndefined(minLatitude) ? 0 : minLongitude;\n maxLatitude = isNullOrUndefined(maxLatitude) ? minLatitude : maxLatitude;\n maxLongitude = isNullOrUndefined(maxLongitude) ? minLongitude : maxLongitude;\n isTwoCoordinates = true;\n }\n if (minLatitude > maxLatitude) {\n _a = [maxLatitude, minLatitude], minLatitude = _a[0], maxLatitude = _a[1];\n }\n if (minLongitude > maxLongitude) {\n _b = [maxLongitude, minLongitude], minLongitude = _b[0], maxLongitude = _b[1];\n }\n if (!isTwoCoordinates) {\n centerLatitude = (minLatitude + maxLatitude) / 2;\n centerLongtitude = (minLongitude + maxLongitude) / 2;\n }\n else {\n centerLatitude = (minLatitude + maxLatitude);\n centerLongtitude = (minLongitude + maxLongitude);\n }\n this.centerLatOfGivenLocation = centerLatitude;\n this.centerLongOfGivenLocation = centerLongtitude;\n this.minLatOfGivenLocation = minLatitude;\n this.minLongOfGivenLocation = minLongitude;\n this.maxLatOfGivenLocation = maxLatitude;\n this.maxLongOfGivenLocation = maxLongitude;\n this.zoomNotApplied = true;\n this.scaleOfGivenLocation = calculateZoomLevel(minLatitude, maxLatitude, minLongitude, maxLongitude, this.mapAreaRect.width, this.mapAreaRect.height, this, true);\n var minMaxLatitudeLongitude = this.getMinMaxLatitudeLongitude();\n var zoomArgs = {\n cancel: false, name: 'zoom', type: zoomIn, maps: this,\n tileTranslatePoint: {}, translatePoint: {},\n tileZoomLevel: this.isTileMap ? { previous: this.tileZoomLevel, current: this.scaleOfGivenLocation } : {},\n scale: !this.isTileMap ? { previous: this.scale, current: this.scaleOfGivenLocation } :\n { previous: this.tileZoomLevel, current: this.scaleOfGivenLocation },\n minLatitude: minMaxLatitudeLongitude.minLatitude, maxLatitude: minMaxLatitudeLongitude.maxLatitude,\n minLongitude: minMaxLatitudeLongitude.minLongitude, maxLongitude: minMaxLatitudeLongitude.maxLongitude\n };\n this.trigger('zoom', zoomArgs);\n this.refresh();\n }\n };\n /**\n * This method is used to remove multiple selected shapes in the maps.\n *\n * @returns {void}\n */\n Maps.prototype.removeShapeSelection = function () {\n var selectedElements = this.selectedElementId.length;\n for (var i = 0; i < selectedElements; i++) {\n removeClass(getElementByID(this.selectedElementId[0]));\n this.selectedElementId.splice(0, 1);\n }\n if (this.legendSettings.visible) {\n var legendSelectedElements = this.legendSelectionCollection.length;\n for (var i = 0; i < legendSelectedElements; i++) {\n removeClass(getElementByID(this.legendSelectionCollection[i]['legendElement']['id']));\n this.selectedLegendElementId.splice(0, 1);\n }\n }\n this.shapeSelectionItem = [];\n this.legendSelectionCollection = [];\n };\n /**\n * This method is used to set culture for maps.\n *\n * @returns {void}\n */\n Maps.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * This method to set locale constants to the maps.\n *\n * @returns {void}\n */\n Maps.prototype.setLocaleConstants = function () {\n // Need to modify after the api confirm\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ImageNotFound: 'Image Not Found'\n };\n };\n /**\n * This method destroys the maps. This method removes the events associated with the maps and disposes the objects created for rendering and updating the maps.\n *\n * @returns {void}\n */\n Maps.prototype.destroy = function () {\n this.unWireEVents();\n if (!isNullOrUndefined(this.mapsTooltipModule)) {\n this.mapsTooltipModule.removeEventListener();\n }\n _super.prototype.destroy.call(this);\n this.shapeSelectionItem = [];\n this.toggledShapeElementId = [];\n this.toggledLegendId = [];\n this.legendSelectionCollection = [];\n this.selectedLegendElementId = [];\n this.selectedNavigationElementId = [];\n this.selectedBubbleElementId = [];\n this.selectedMarkerElementId = [];\n this.selectedElementId = [];\n this.dataLabelShape = [];\n this.zoomShapeCollection = [];\n this.zoomLabelPositions = [];\n this.mouseDownEvent = { x: null, y: null };\n this.mouseClickEvent = { x: null, y: null };\n this.formatFunction = null;\n //TODO: Calling the below code throws spec issue.\n //this.renderer = null;\n this.availableSize = new Size(0, 0);\n if (document.getElementById('mapsmeasuretext')) {\n document.getElementById('mapsmeasuretext').remove();\n }\n this.removeSvg();\n };\n /**\n * Gets component name\n *\n * @returns {string} - Returns the string value\n * @private\n */\n Maps.prototype.getModuleName = function () {\n return 'maps';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value\n * @private\n */\n Maps.prototype.getPersistData = function () {\n var keyEntity = ['translatePoint', 'zoomSettings', 'mapScaleValue', 'tileTranslatePoint', 'baseTranslatePoint',\n 'scale', 'zoomPersistence', 'defaultState', 'markerZoomedState', 'initialCheck', 'initialZoomLevel', 'initialTileTranslate',\n 'applyZoomReset', 'markerZoomFactor'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {MapsModel} newProp - Specifies the new property\n * @param {MapsModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n Maps.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n var isMarker = false;\n var isLayer = false;\n var isStaticMapType = false;\n var layerEle = void 0;\n if (newProp['layers']) {\n var newLayerLength = Object.keys(newProp['layers']).length;\n layerEle = document.getElementById(this.element.id + '_LayerIndex_' + (newLayerLength - 1));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layers':\n case 'projectionType':\n case 'centerPosition':\n case 'legendSettings':\n case 'baseLayerIndex':\n if (prop === 'layers') {\n isLayer = true;\n var layerPropLength = Object.keys(newProp.layers).length;\n for (var x = 0; x < layerPropLength; x++) {\n if (!isNullOrUndefined(newProp.layers[x])) {\n var collection = Object.keys(newProp.layers[x]);\n for (var _b = 0, collection_1 = collection; _b < collection_1.length; _b++) {\n var collectionProp = collection_1[_b];\n if ((collectionProp === 'layerType' && newProp.layers[x].layerType !== 'Geometry') ||\n (isNullOrUndefined(this.layers[x].shapeData)\n && !isNullOrUndefined(this.layers[x].urlTemplate) && this.layers[x].urlTemplate !== '')) {\n this.isReset = true;\n }\n else if (collectionProp === 'markerSettings') {\n isMarker = true;\n }\n else if (collectionProp === 'staticMapType') {\n isStaticMapType = true;\n }\n }\n }\n }\n }\n render = true;\n break;\n case 'zoomSettings':\n if (!isNullOrUndefined(oldProp.zoomSettings)) {\n if (newProp.zoomSettings.zoomFactor !== oldProp.zoomSettings.zoomFactor && !isLayer) {\n render = false;\n }\n else if (newProp.zoomSettings.shouldZoomInitially !== oldProp.zoomSettings.shouldZoomInitially) {\n this.zoomSettings.zoomFactor = 1;\n this.previousProjection = null;\n this.scale = this.isMarkerZoomCompleted ? null : this.scale;\n this.isMarkerZoomCompleted = !newProp.zoomSettings.shouldZoomInitially;\n render = true;\n }\n else if (newProp.zoomSettings.enable !== oldProp.zoomSettings.enable) {\n this.zoomSettings.zoomFactor = 1;\n render = true;\n }\n else {\n render = true;\n }\n }\n break;\n case 'locale':\n case 'currencyCode':\n _super.prototype.refresh.call(this);\n break;\n }\n }\n if (render) {\n if (newProp.layers && isMarker) {\n removeElement(this.element.id + '_Markers_Group');\n if (this.isTileMap) {\n this.mapLayerPanel.renderTileLayer(this.mapLayerPanel, this.layers['currentFactor'], (this.layers.length - 1));\n }\n else {\n this.render();\n }\n }\n else if (newProp.layers && isStaticMapType) {\n this.mapLayerPanel.renderGoogleMap(this.layers[this.layers.length - 1].key, this.staticMapZoom);\n }\n else {\n this.createSVG();\n this.renderElements();\n }\n }\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} - Returns the modules\n * @private\n */\n Maps.prototype.requiredModules = function () {\n var modules = [];\n var isVisible = this.findVisibleLayers(this.layers);\n var annotationEnable = false;\n this.annotations.map(function (annotation) {\n annotationEnable = annotation.content != null;\n });\n if (this.isBubbleVisible()) {\n modules.push({\n member: 'Bubble',\n args: [this]\n });\n }\n if (isVisible.highlight) {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (isVisible.selection) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.zoomSettings.enable || this.zoomSettings.zoomFactor > this.zoomSettings.minZoom) {\n modules.push({\n member: 'Zoom',\n args: [this]\n });\n }\n if (this.isMarkersVisible()) {\n modules.push({\n member: 'Marker',\n args: [this]\n });\n }\n if (this.isDataLabelVisible()) {\n modules.push({\n member: 'DataLabel',\n args: [this]\n });\n }\n if (this.isNavigationVisible()) {\n modules.push({\n member: 'NavigationLine',\n args: [this]\n });\n }\n if (this.isPolygonVisible()) {\n modules.push({\n member: 'Polygon',\n args: [this]\n });\n }\n if (isVisible.tooltip) {\n modules.push({\n member: 'MapsTooltip',\n args: [this]\n });\n }\n if (annotationEnable) {\n modules.push({\n member: 'Annotations',\n args: [this, Annotations]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To find marker visibility\n *\n * @returns {boolean} - Returns whether the markers are visible or not.\n */\n Maps.prototype.isMarkersVisible = function () {\n var isVisible = false;\n Array.prototype.forEach.call(this.layers, function (layer) {\n for (var i = 0; i < layer.markerSettings.length; i++) {\n if (layer.markerSettings[i].visible) {\n isVisible = true;\n break;\n }\n }\n });\n return isVisible;\n };\n /**\n * To find DataLabel visibility\n *\n * @returns {boolean} - Returns whether the data labels are visible or not.\n */\n Maps.prototype.isDataLabelVisible = function () {\n var isVisible = false;\n for (var i = 0; i < this.layers.length; i++) {\n if (this.layers[i].dataLabelSettings.visible) {\n isVisible = true;\n break;\n }\n }\n return isVisible;\n };\n /**\n * To find navigation line visibility\n *\n * @returns {boolean} - Returns whether the navigation lines are visible or not.\n */\n Maps.prototype.isNavigationVisible = function () {\n var isVisible = false;\n Array.prototype.forEach.call(this.layers, function (layer) {\n for (var i = 0; i < layer.navigationLineSettings.length; i++) {\n if (layer.navigationLineSettings[i].visible) {\n isVisible = true;\n break;\n }\n }\n });\n return isVisible;\n };\n /**\n * To find navigation line visibility\n *\n * @returns {boolean} - Returns whether the navigation lines are visible or not.\n */\n Maps.prototype.isPolygonVisible = function () {\n var isVisible = false;\n Array.prototype.forEach.call(this.layers, function (layer) {\n for (var i = 0; i < layer.polygonSettings.polygons.length; i++) {\n if (layer.polygonSettings.polygons.length > 0) {\n isVisible = true;\n break;\n }\n }\n });\n return isVisible;\n };\n /**\n * To find marker visibility\n */\n Maps.prototype.isBubbleVisible = function () {\n var isVisible = false;\n for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n var layer = _a[_i];\n if (this.getBubbleVisible(layer)) {\n isVisible = true;\n break;\n }\n }\n return isVisible;\n };\n /**\n * To find the bubble visibility from layer\n *\n * @param {LayerSettingsModel} layer - Spcifies the layer settings model\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n Maps.prototype.getBubbleVisible = function (layer) {\n var isVisible = false;\n for (var _i = 0, _a = layer.bubbleSettings; _i < _a.length; _i++) {\n var bubble = _a[_i];\n if (bubble.visible) {\n isVisible = true;\n break;\n }\n }\n return isVisible;\n };\n /**\n * This method handles the printing functionality for the maps.\n *\n * @param {string[] | string | Element} id - Specifies the element to be printed.\n * @returns {void}\n */\n Maps.prototype.print = function (id) {\n if ((this.allowPrint) && (this.printModule) && !this.isDestroyed) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method handles the export functionality for the maps.\n *\n * @param {ExportType} type - Specifies the type of the exported file.\n * @param {string} fileName - Specifies the name of the file with which the rendered maps need to be exported.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document while exporting.\n * @param {boolean} allowDownload - Specifies whether to download as a file or get as base64 string for the file.\n * @returns {Promise<string>} - Specifies the base64 string of the exported image which is returned when the `allowDownload` is set to false.\n */\n Maps.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (!this.isDestroyed) {\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if ((type !== 'PDF') && (this.allowImageExport) && (this.imageExportModule)) {\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n else if ((this.allowPdfExport) && (this.pdfExportModule)) {\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, allowDownload, orientation));\n });\n }\n }\n return null;\n };\n /**\n * This method is used to get the Bing maps URL.\n *\n * @param {string} url - Specifies the URL of the Bing maps along with the API key.\n * @returns {Promise<string>} - Returns the processed Bing URL as `Promise`.\n */\n Maps.prototype.getBingUrlTemplate = function (url) {\n var promise;\n if (!this.isDestroyed) {\n promise = new Promise(function (resolve, reject) {\n var fetchApi = new Fetch({\n url: url\n });\n fetchApi.onSuccess = function (json) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var resource = json['resourceSets'][0]['resources'][0];\n resolve(resource['imageUrl']);\n };\n fetchApi.send();\n });\n }\n return promise;\n };\n /**\n * To find visibility of layers and markers for required modules load.\n *\n * @param {LayerSettingsModel[]} layers - Specifies the layers.\n * @param {boolean} isLayerVisible - Specifies whether the layer is visible or not.\n * @param {boolean} isBubblevisible - Specifies whether the bubble is visible or not.\n * @param {boolean} istooltipVisible - Specifies whether the tooltip is visible or not.\n * @param {boolean} isSelection - Specifies whether the shape is selectd or not.\n * @param {boolean} isHighlight - Specfies whether the shape is highlighted or not.\n * @returns {boolean} - Returns the boolean value\n */\n Maps.prototype.findVisibleLayers = function (layers, isLayerVisible, isBubblevisible, istooltipVisible, isSelection, isHighlight) {\n if (isLayerVisible === void 0) { isLayerVisible = false; }\n if (isBubblevisible === void 0) { isBubblevisible = false; }\n if (istooltipVisible === void 0) { istooltipVisible = false; }\n if (isSelection === void 0) { isSelection = false; }\n if (isHighlight === void 0) { isHighlight = false; }\n var bubbles;\n var markers;\n var polygonSetting;\n for (var _i = 0, layers_1 = layers; _i < layers_1.length; _i++) {\n var layer = layers_1[_i];\n isLayerVisible = layer.visible || isLayerVisible;\n if (layer.visible) {\n bubbles = layer.bubbleSettings;\n markers = layer.markerSettings;\n polygonSetting = layer.polygonSettings;\n var navigationLine = layer.navigationLineSettings;\n for (var _a = 0, navigationLine_1 = navigationLine; _a < navigationLine_1.length; _a++) {\n var navigation = navigationLine_1[_a];\n if (navigation.visible) {\n isSelection = (!isNullOrUndefined(navigation.highlightSettings) && navigation.highlightSettings.enable) || isSelection;\n isHighlight = (!isNullOrUndefined(navigation.selectionSettings) && navigation.selectionSettings.enable) || isHighlight;\n }\n }\n for (var _b = 0, _c = polygonSetting.polygons; _b < _c.length; _b++) {\n var polygon = _c[_b];\n if (polygon.points.length > 0) {\n isSelection = layer.polygonSettings.highlightSettings.enable || isSelection;\n isHighlight = layer.polygonSettings.selectionSettings.enable || isHighlight;\n }\n }\n for (var _d = 0, markers_1 = markers; _d < markers_1.length; _d++) {\n var marker = markers_1[_d];\n if (marker.visible) {\n istooltipVisible = marker.tooltipSettings.visible || istooltipVisible;\n isSelection = marker.selectionSettings.enable || isSelection;\n isHighlight = marker.highlightSettings.enable || isHighlight;\n }\n if (istooltipVisible) {\n break;\n }\n }\n for (var _e = 0, bubbles_1 = bubbles; _e < bubbles_1.length; _e++) {\n var bubble = bubbles_1[_e];\n if (bubble.visible) {\n istooltipVisible = bubble.tooltipSettings.visible || istooltipVisible;\n isSelection = bubble.selectionSettings.enable || isSelection;\n isHighlight = bubble.highlightSettings.enable || isHighlight;\n }\n if (istooltipVisible) {\n break;\n }\n }\n istooltipVisible = layer.tooltipSettings.visible || istooltipVisible;\n isSelection = layer.selectionSettings.enable || isSelection;\n isHighlight = layer.highlightSettings.enable || isHighlight;\n }\n if (isLayerVisible && isBubblevisible && istooltipVisible) {\n break;\n }\n }\n return {\n layer: isLayerVisible, bubble: isBubblevisible, tooltip: istooltipVisible,\n selection: isSelection, highlight: isHighlight\n };\n };\n /**\n * This method is used to get the geographical coordinates for location points in pixels when shape maps are rendered in the maps.\n *\n * @param {number} layerIndex - Specifies the index number of the layer of the maps.\n * @param {number} x - Specifies the x value in pixel.\n * @param {number} y - Specifies the y value in pixel.\n * @returns {GeoPosition}- Returns the geographical coordinates.\n */\n Maps.prototype.getGeoLocation = function (layerIndex, x, y) {\n var latitude = 0;\n var longitude = 0;\n if (!this.isDestroyed) {\n var container = document.getElementById(this.element.id);\n var pageX = x - (isNullOrUndefined(this.markerDragArgument) ? container.offsetLeft : 0);\n var pageY = y - (isNullOrUndefined(this.markerDragArgument) ? container.offsetTop : 0);\n var currentLayer = this.layersCollection[layerIndex];\n var translate = getTranslate(this, currentLayer, false);\n var translatePoint = translate['location'];\n var translatePointX = translatePoint.x * this.scale;\n var translatePointY = translatePoint.y * this.scale;\n var mapSize = (Math.min(this.mapAreaRect.height, this.mapAreaRect.width)\n * this.mapLayerPanel['currentFactor']) * this.scale;\n var xx = (this.clip(pageX - translatePointX, 0, mapSize - 1) / mapSize) - 0.5;\n var yy = 0.5 - (this.clip(pageY - translatePointY, 0, mapSize - 1) / mapSize);\n latitude = 90 - 360 * Math.atan(Math.exp(-yy * 2 * Math.PI)) / Math.PI;\n longitude = 360 * xx;\n }\n return { latitude: latitude, longitude: longitude };\n };\n Maps.prototype.clip = function (value, minVal, maxVal) {\n return Math.min(Math.max(value, minVal), maxVal);\n };\n /**\n * This method is used to get the geographical coordinates for location points in pixels when an online map provider is rendered in the maps.\n *\n * @param {number} x - Specifies the x value in pixel.\n * @param {number} y - Specifies the y value in pixel.\n * @returns {GeoPosition} - Returns the geographical coordinates.\n */\n Maps.prototype.getTileGeoLocation = function (x, y) {\n var latitude = 0;\n var longitude = 0;\n if (!this.isDestroyed) {\n var container = document.getElementById(this.element.id);\n var ele = document.getElementById(this.element.id + '_tile_parent');\n var latLong = this.pointToLatLong(x + this.mapAreaRect.x - (ele.offsetLeft - (isNullOrUndefined(this.markerDragArgument) ? container.offsetLeft : 0)), y + this.mapAreaRect.y - (ele.offsetTop - (isNullOrUndefined(this.markerDragArgument) ? container.offsetTop : 0)));\n latitude = latLong['latitude'];\n longitude = latLong['longitude'];\n }\n return { latitude: latitude, longitude: longitude };\n };\n /**\n * This method is used to convert the point in pixels to latitude and longitude in maps.\n *\n * @param {number} pageX - Specifies the x position value in pixels.\n * @param {number} pageY - Specifies the y position value in pixels.\n * @returns {Object} - Returns the latitude and longitude values.\n */\n Maps.prototype.pointToLatLong = function (pageX, pageY) {\n var latitude = 0;\n var longitude = 0;\n if (!this.isDestroyed && !isNullOrUndefined(this.translatePoint)) {\n var padding = this.layers[this.layers.length - 1].layerType === 'GoogleStaticMap' ? 0 : 10;\n pageY = pageY + padding;\n var mapSize = 256 * Math.pow(2, this.tileZoomLevel);\n var x1 = (this.clip(pageX - (this.translatePoint.x * this.scale), 0, mapSize - 1) / mapSize) - 0.5;\n var y1 = 0.5 - (this.clip(pageY - (this.translatePoint.y * this.scale), 0, mapSize - 1) / mapSize);\n latitude = 90 - 360 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\n longitude = 360 * x1;\n }\n return { latitude: latitude, longitude: longitude };\n };\n __decorate([\n Property(null)\n ], Maps.prototype, \"background\", void 0);\n __decorate([\n Property(false)\n ], Maps.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], Maps.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Maps.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Maps.prototype, \"height\", void 0);\n __decorate([\n Property('MouseMove')\n ], Maps.prototype, \"tooltipDisplayMode\", void 0);\n __decorate([\n Property(false)\n ], Maps.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], Maps.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], Maps.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], Maps.prototype, \"titleSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Maps.prototype, \"zoomSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Maps.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([], LayerSettings)\n ], Maps.prototype, \"layers\", void 0);\n __decorate([\n Collection([], Annotation)\n ], Maps.prototype, \"annotations\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Maps.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Maps.prototype, \"border\", void 0);\n __decorate([\n Property('Material')\n ], Maps.prototype, \"theme\", void 0);\n __decorate([\n Property('Mercator')\n ], Maps.prototype, \"projectionType\", void 0);\n __decorate([\n Property(0)\n ], Maps.prototype, \"baseLayerIndex\", void 0);\n __decorate([\n Property(null)\n ], Maps.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], Maps.prototype, \"tabIndex\", void 0);\n __decorate([\n Complex({ latitude: null, longitude: null }, CenterPosition)\n ], Maps.prototype, \"centerPosition\", void 0);\n __decorate([\n Complex({}, MapsAreaSettings)\n ], Maps.prototype, \"mapsArea\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"onclick\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"legendRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"tooltipRenderComplete\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"shapeSelected\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"itemSelection\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"shapeHighlight\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"layerRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"shapeRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerClusterRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerClick\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerDragStart\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerDragEnd\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerClusterClick\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerClusterMouseMove\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"markerMouseMove\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"dataLabelRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"bubbleRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"bubbleClick\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"bubbleMouseMove\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"annotationRendering\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"zoom\", void 0);\n __decorate([\n Event()\n ], Maps.prototype, \"pan\", void 0);\n Maps = __decorate([\n NotifyPropertyChanges\n ], Maps);\n return Maps;\n}(Component));\nexport { Maps };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var InitialShapeSelectionsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-initialShapeSelections';\n }\n }\n});\nexport var InitialShapeSelectionsPlugin = {\n name: 'e-initialShapeSelections',\n install: function (Vue) {\n Vue.component(InitialShapeSelectionsPlugin.name, InitialShapeSelectionsDirective);\n }\n};\n/**\n * Represents the directive to configure the selection of the shapes when the maps is initially rendered.\n * ```vue\n * <ejs-maps>\n * <e-layers>\n * <e-layer>\n * <e-initialShapeSelections>\n * <e-initialShapeSelection>\n * </e-initialShapeSelection>\n * </e-initialShapeSelections>\n * </e-layer>\n * </e-layers>\n * </ejs-maps>\n * ```\n */\nexport var InitialShapeSelectionDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-initialShapeSelection';\n }\n }\n});\nexport var InitialShapeSelectionPlugin = {\n name: 'e-initialShapeSelection',\n install: function (Vue) {\n Vue.component(InitialShapeSelectionPlugin.name, InitialShapeSelectionDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var MarkersDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-markerSettings';\n }\n }\n});\nexport var MarkersPlugin = {\n name: 'e-markerSettings',\n install: function (Vue) {\n Vue.component(MarkersPlugin.name, MarkersDirective);\n }\n};\n/**\n * Represents the directive to define the markers in the maps.\n * ```vue\n * <ejs-maps>\n * <e-layers>\n * <e-layer>\n * <e-markerSettings>\n * <e-markerSetting>\n * </e-markerSetting>\n * </e-markerSettings>\n * </e-layer>\n * </e-layers>\n * </ejs-maps>\n * ```\n */\nexport var MarkerDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-markerSetting';\n }\n }\n});\nexport var MarkerPlugin = {\n name: 'e-markerSetting',\n install: function (Vue) {\n Vue.component(MarkerPlugin.name, MarkerDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColorMappingsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-colorMappings';\n }\n }\n});\nexport var ColorMappingsPlugin = {\n name: 'e-colorMappings',\n install: function (Vue) {\n Vue.component(ColorMappingsPlugin.name, ColorMappingsDirective);\n }\n};\n/**\n * Represents the directive to define the bubble color mapping in the maps.\n * ```vue\n * <ejs-maps>\n * <e-layers>\n * <e-layer>\n * <e-bubbleSettings>\n * <e-bubbleSetting>\n * </e-bubbleSetting>\n * </e-bubbleSettings>\n * </e-layer>\n * </e-layers>\n * </ejs-maps>\n * ```\n */\nexport var ColorMappingDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-colorMapping';\n }\n }\n});\nexport var ColorMappingPlugin = {\n name: 'e-colorMapping',\n install: function (Vue) {\n Vue.component(ColorMappingPlugin.name, ColorMappingDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var BubblesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-bubbleSettings';\n }\n }\n});\nexport var BubblesPlugin = {\n name: 'e-bubbleSettings',\n install: function (Vue) {\n Vue.component(BubblesPlugin.name, BubblesDirective);\n }\n};\n/**\n * Represents the directive to define the bubbles in the maps.\n * ```vue\n * <ejs-maps>\n * <e-layers>\n * <e-layer>\n * <e-bubbleSettings>\n * <e-bubbleSetting>\n * </e-bubbleSetting>\n * </e-bubbleSettings>\n * </e-layer>\n * </e-layers>\n * </ejs-maps>\n * ```\n */\nexport var BubbleDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-bubbleSetting';\n }\n }\n});\nexport var BubblePlugin = {\n name: 'e-bubbleSetting',\n install: function (Vue) {\n Vue.component(BubblePlugin.name, BubbleDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var NavigationLinesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-navigationLineSettings';\n }\n }\n});\nexport var NavigationLinesPlugin = {\n name: 'e-navigationLineSettings',\n install: function (Vue) {\n Vue.component(NavigationLinesPlugin.name, NavigationLinesDirective);\n }\n};\n/**\n * Represents the directive to define the navigation lines in the maps.\n * ```vue\n * <ejs-maps>\n * <e-layers>\n * <e-layer>\n * <e-navigationLineSettings>\n * <e-navigationLineSetting>\n * </e-navigationLineSetting>\n * </e-navigationLineSettings>\n * </e-layer>\n * </e-layers>\n * </ejs-maps>\n * ```\n */\nexport var NavigationLineDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-navigationLineSetting';\n }\n }\n});\nexport var NavigationLinePlugin = {\n name: 'e-navigationLineSetting',\n install: function (Vue) {\n Vue.component(NavigationLinePlugin.name, NavigationLineDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var LayersDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-layers';\n }\n }\n});\nexport var LayersPlugin = {\n name: 'e-layers',\n install: function (Vue) {\n Vue.component(LayersPlugin.name, LayersDirective);\n }\n};\n/**\n * Represents the directive to define the layer of the maps.\n * ```vue\n * <ejs-maps>\n * <e-layers>\n * <e-layer></e-layer>\n * </e-layers>\n * </ejs-maps>\n * ```\n */\nexport var LayerDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-layer';\n }\n }\n});\nexport var LayerPlugin = {\n name: 'e-layer',\n install: function (Vue) {\n Vue.component(LayerPlugin.name, LayerDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AnnotationsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-maps-annotations';\n }\n }\n});\nexport var AnnotationsPlugin = {\n name: 'e-maps-annotations',\n install: function (Vue) {\n Vue.component(AnnotationsPlugin.name, AnnotationsDirective);\n }\n};\n/**\n * Represents the directive to define the annotations in the maps.\n * ```vue\n * <ejs-maps>\n * <e-maps-annotations>\n * <e-maps-annotation></e-maps-annotation>\n * </e-maps-annotations>\n * </ejs-maps>\n * ```\n */\nexport var AnnotationDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-maps-annotation';\n }\n }\n});\nexport var AnnotationPlugin = {\n name: 'e-maps-annotation',\n install: function (Vue) {\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Maps } from '@syncfusion/ej2-maps';\nimport { InitialShapeSelectionsDirective, InitialShapeSelectionDirective, InitialShapeSelectionsPlugin, InitialShapeSelectionPlugin } from './initialshapeselection.directive';\nimport { MarkersDirective, MarkerDirective, MarkersPlugin, MarkerPlugin } from './markersettings.directive';\nimport { ColorMappingsDirective, ColorMappingDirective, ColorMappingsPlugin, ColorMappingPlugin } from './colormapping.directive';\nimport { BubblesDirective, BubbleDirective, BubblesPlugin, BubblePlugin } from './bubblesettings.directive';\nimport { NavigationLinesDirective, NavigationLineDirective, NavigationLinesPlugin, NavigationLinePlugin } from './navigationlinesettings.directive';\nimport { LayersDirective, LayerDirective, LayersPlugin, LayerPlugin } from './layers.directive';\nimport { AnnotationsDirective, AnnotationDirective, AnnotationsPlugin, AnnotationPlugin } from './annotations.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowImageExport', 'allowPdfExport', 'allowPrint', 'annotations', 'background', 'baseLayerIndex', 'border', 'centerPosition', 'description', 'enablePersistence', 'enableRtl', 'format', 'height', 'layers', 'legendSettings', 'locale', 'mapsArea', 'margin', 'projectionType', 'tabIndex', 'theme', 'titleSettings', 'tooltipDisplayMode', 'useGroupingSeparator', 'width', 'zoomSettings', 'animationComplete', 'annotationRendering', 'beforePrint', 'bubbleClick', 'bubbleMouseMove', 'bubbleRendering', 'click', 'dataLabelRendering', 'doubleClick', 'itemHighlight', 'itemSelection', 'layerRendering', 'legendRendering', 'load', 'loaded', 'markerClick', 'markerClusterClick', 'markerClusterMouseMove', 'markerClusterRendering', 'markerDragEnd', 'markerDragStart', 'markerMouseMove', 'markerRendering', 'onclick', 'pan', 'resize', 'rightClick', 'shapeHighlight', 'shapeRendering', 'shapeSelected', 'tooltipRender', 'tooltipRenderComplete', 'zoom'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Vue Maps component.\n * It is ideal for rendering maps from GeoJSON data or other map providers like OpenStreetMap, Google Maps, Bing Maps, etc that has rich feature set that includes markers, labels, bubbles and much more.\n * ```vue\n * <ejs-maps></ejs-maps>\n * ```\n */\nexport var MapsComponent = vueDefineComponent({\n name: 'MapsComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Maps({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-layers\": { \"e-layer\": { \"e-initialShapeSelections\": \"e-initialShapeSelection\", \"e-markerSettings\": \"e-markerSetting\", \"e-bubbleSettings\": { \"e-bubbleSetting\": { \"e-colorMappings\": \"e-colorMapping\" } }, \"e-navigationLineSettings\": \"e-navigationLineSetting\" } }, \"e-maps-annotations\": \"e-maps-annotation\" },\n tagNameMapper: { \"e-initialShapeSelections\": \"e-initialShapeSelection\", \"e-colorMappings\": \"e-colorMapping\", \"e-maps-annotations\": \"e-annotations\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addLayer: function (layer) {\n return this.ej2Instances.addLayer(layer);\n },\n addMarker: function (layerIndex, markerCollection) {\n return this.ej2Instances.addMarker(layerIndex, markerCollection);\n },\n export: function (type, fileName, orientation, allowDownload) {\n return this.ej2Instances.export(type, fileName, orientation, allowDownload);\n },\n getBingUrlTemplate: function (url) {\n return this.ej2Instances.getBingUrlTemplate(url);\n },\n getGeoLocation: function (layerIndex, x, y) {\n return this.ej2Instances.getGeoLocation(layerIndex, x, y);\n },\n getMinMaxLatitudeLongitude: function () {\n return this.ej2Instances.getMinMaxLatitudeLongitude();\n },\n getTileGeoLocation: function (x, y) {\n return this.ej2Instances.getTileGeoLocation(x, y);\n },\n mapsOnResize: function (e) {\n return this.ej2Instances.mapsOnResize(e);\n },\n panByDirection: function (direction, mouseLocation) {\n return this.ej2Instances.panByDirection(direction, mouseLocation);\n },\n pointToLatLong: function (pageX, pageY) {\n return this.ej2Instances.pointToLatLong(pageX, pageY);\n },\n print: function (id) {\n return this.ej2Instances.print(id);\n },\n removeLayer: function (index) {\n return this.ej2Instances.removeLayer(index);\n },\n shapeSelection: function (layerIndex, propertyName, name, enable) {\n return this.ej2Instances.shapeSelection(layerIndex, propertyName, name, enable);\n },\n zoomByPosition: function (centerPosition, zoomFactor) {\n return this.ej2Instances.zoomByPosition(centerPosition, zoomFactor);\n },\n zoomToCoordinates: function (minLatitude, minLongitude, maxLatitude, maxLongitude) {\n return this.ej2Instances.zoomToCoordinates(minLatitude, minLongitude, maxLatitude, maxLongitude);\n },\n }\n});\nexport var MapsPlugin = {\n name: 'ejs-maps',\n install: function (Vue) {\n Vue.component(MapsPlugin.name, MapsComponent);\n Vue.component(LayerPlugin.name, LayerDirective);\n Vue.component(LayersPlugin.name, LayersDirective);\n Vue.component(InitialShapeSelectionPlugin.name, InitialShapeSelectionDirective);\n Vue.component(InitialShapeSelectionsPlugin.name, InitialShapeSelectionsDirective);\n Vue.component(MarkerPlugin.name, MarkerDirective);\n Vue.component(MarkersPlugin.name, MarkersDirective);\n Vue.component(BubblePlugin.name, BubbleDirective);\n Vue.component(BubblesPlugin.name, BubblesDirective);\n Vue.component(ColorMappingPlugin.name, ColorMappingDirective);\n Vue.component(ColorMappingsPlugin.name, ColorMappingsDirective);\n Vue.component(NavigationLinePlugin.name, NavigationLineDirective);\n Vue.component(NavigationLinesPlugin.name, NavigationLinesDirective);\n Vue.component(AnnotationPlugin.name, AnnotationDirective);\n Vue.component(AnnotationsPlugin.name, AnnotationsDirective);\n }\n};\n","import { click, legendRendering } from '../index';\nimport { Rect, measureText, PathOption, textTrim, drawBalloon, removeClass, querySelector, getTemplateFunction, maintainStyleClass, getValueFromObject } from '../utils/helper';\nimport { RectOption, Size, TextOption, Point, renderTextElement, drawSymbol, checkPropertyPath, getElement } from '../utils/helper';\nimport { isNullOrUndefined, Browser, EventHandler, remove, extend } from '@syncfusion/ej2-base';\nimport { Theme } from '../model/theme';\n/**\n * Legend module is used to render legend for the maps\n */\nvar Legend = /** @class */ (function () {\n function Legend(maps) {\n /**\n * @private\n */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n /**\n * @private\n */\n this.initialMapAreaRect = new Rect(0, 0, 0, 0);\n /**\n * @private\n */\n this.legendTotalRect = new Rect(0, 0, 0, 0);\n /**\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages = [];\n this.page = 0;\n /**\n * @private\n */\n this.currentPage = 0;\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n /**\n * @private\n */\n this.shapePreviousColor = [];\n /**\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.selectedNonLegendShapes = [];\n /**\n * @private\n */\n this.shapeToggled = true;\n /**\n * @private\n */\n this.legendElement = null;\n this.maps = maps;\n this.addEventListener();\n }\n /**\n * To calculate legend bounds and draw the legend shape and text.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.renderLegend = function () {\n this.legendRenderingCollections = [];\n this.legendCollection = [];\n this.totalPages = [];\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.maps.renderer.createDefs();\n this.maps.svgObject.appendChild(this.defsElement);\n this.initialMapAreaRect = this.maps.mapAreaRect;\n this.calculateLegendBounds();\n this.drawLegend();\n };\n Legend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var map = this.maps;\n var legend = map.legendSettings;\n this.legendCollection = [];\n var spacing = 10;\n var leftPadding = 10;\n var topPadding = map.mapAreaRect.y;\n this.legendRenderingCollections = [];\n Array.prototype.forEach.call(map.layersCollection, function (layer, layerIndex) {\n if (!isNullOrUndefined(layer.shapeData)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var layerData = layer.shapeData['features'];\n var dataPath = layer.shapeDataPath;\n var propertyPath = layer.shapePropertyPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataSource = layer.dataSource;\n var colorValuePath = void 0;\n var colorMapping = void 0;\n if (legend.type === 'Layers' && layer.visible) {\n colorValuePath = layer.shapeSettings.colorValuePath;\n colorMapping = layer.shapeSettings.colorMapping;\n _this.getLegends(layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath);\n }\n else if (legend.type === 'Bubbles') {\n for (var _i = 0, _a = layer.bubbleSettings; _i < _a.length; _i++) {\n var bubble = _a[_i];\n if (bubble.visible) {\n colorValuePath = bubble.colorValuePath;\n colorMapping = bubble.colorMapping;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSource = bubble.dataSource;\n _this.getLegends(layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath);\n }\n }\n }\n }\n if (legend.type === 'Markers') {\n _this.getMarkersLegendCollections(layerIndex, layer.markerSettings);\n }\n });\n if (this.legendCollection.length > 0) {\n for (var i = 0; i < this.legendCollection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollection[i];\n var eventArgs = {\n name: legendRendering, cancel: false, fill: legendItem['fill'], shape: legend.shape,\n shapeBorder: legend.shapeBorder,\n text: typeof legendItem['text'] === 'number' ? legendItem['text'].toString() : legendItem['text']\n };\n map.trigger('legendRendering', eventArgs);\n legendItem['fill'] = eventArgs.fill;\n legendItem['shape'] = eventArgs.shape;\n legendItem['shapeBorder'] = eventArgs.shapeBorder;\n legendItem['text'] = eventArgs.text;\n if (eventArgs.cancel) {\n this.legendCollection.splice(i, 1);\n i--;\n }\n }\n }\n var defaultSize = 25;\n var legendTitle = map.legendSettings.title.text;\n var titleTextStyle = map.legendSettings.titleStyle;\n if (this.legendCollection.length > 0) {\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapePadding = legend.shapePadding;\n var textPadding = 10;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var legendRectCollection = [];\n var position = legend.position;\n var labelAction = legend.labelDisplayMode;\n var arrangement = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom')\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (map.availableSize.width / 100)\n * parseInt(legend.width, 10) : parseInt(legend.width, 10) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ? (map.availableSize.height / 100) *\n parseInt(legend.height, 10) : parseInt(legend.height, 10) : null;\n var legendItemStartX_1;\n var legendItemStartY_1;\n var startX = 0;\n var startY = 0;\n var legendtitleSize = measureText(legendTitle, titleTextStyle);\n if (legendMode === 'Interactive') {\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollection.length;\n var rectWidth = (arrangement === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (map.mapAreaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (arrangement === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (map.mapAreaRect.height / legendLength) : (legendHeight / legendLength);\n startX = 0;\n startY = legendtitleSize.height + spacing;\n var position_1 = legend.labelPosition;\n var textX_1 = 0;\n var textY_1 = 0;\n var textPadding_1 = 10;\n var itemStartX = 0;\n var itemStartY = 0;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollection.length; i++) {\n startX = (arrangement === 'Horizontal') ? (startX + rectWidth) : startX;\n startY = (arrangement === 'Horizontal') ? startY : (startY + rectHeight);\n var legendText = this.legendCollection[i]['text'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((arrangement === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (arrangement === 'Horizontal') {\n textX_1 = startX + (rectWidth / 2);\n textY_1 = (position_1 === 'After') ? (startY + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY - textPadding_1);\n }\n else {\n textX_1 = (position_1 === 'After') ? startX - (itemTextSize.width / 2) - textPadding_1\n : (startX + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY_1 = startY + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (arrangement === 'Horizontal') ? startX : (position_1 === 'After') ?\n textX_1 - (itemTextSize.width / 2) : startX;\n itemStartY = (arrangement === 'Horizontal') ? (position_1 === 'After') ? startY :\n textY_1 - (itemTextSize.height / 2) : startY;\n if (this.legendCollection.length === 1) {\n legendWidth = (arrangement === 'Horizontal') ? Math.abs((startX + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (arrangement === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY + rectHeight) - itemStartY);\n }\n }\n else if (i === this.legendCollection.length - 1) {\n legendWidth = (arrangement === 'Horizontal') ? Math.abs((startX + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (arrangement === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollection[i]['fill'], x: startX, y: startY,\n width: rectWidth, height: rectHeight,\n text: legendText, textX: textX_1, textY: textY_1,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n shapeBorder: this.legendCollection[i]['shapeBorder']\n });\n }\n if (this.legendCollection.length === 1) {\n legendHeight = rectHeight;\n legendWidth = rectWidth;\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n else {\n legendWidth = (isNullOrUndefined(legendWidth)) ? map.mapAreaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? map.mapAreaRect.height : legendHeight;\n var j = 0;\n this.page = 0;\n for (var i = 0; i < this.legendCollection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollection[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['text'], legend.textStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX = shapeX = (leftPadding + (shapeWidth / 2));\n startY = shapeY = topPadding + legendtitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (arrangement === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n legendRectCollection = [];\n shapeX = startX;\n shapeY = startY;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX;\n shapeY = startY;\n legendRectCollection = [];\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n var padding = 10;\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + padding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['text'],\n ImageSrc: legendItem['imageSrc'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['fill'],\n legendShape: legendItem['shape'],\n shapeBorder: legendItem['shapeBorder'],\n idIndex: i,\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(collection, function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n legendItemStartX_1 = legendRect.x;\n legendItemStartY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(legendItemStartX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(legendItemStartY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n }\n };\n /**\n * Get the legend collections\n *\n * @param {number} layerIndex - Specifies the layer index\n * @param {object[]} layerData - Specifies the layer data\n * @param {ColorMappingSettings[]} colorMapping - Specifies the color mapping\n * @param {object[]} dataSource - Specifies the data source\n * @param {string} dataPath - Specifies the data path\n * @param {string} colorValuePath - Specifies the color value path\n * @param {string | string[]} propertyPath - Specifies the property path\n * @returns {void}\n */\n Legend.prototype.getLegends = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath) {\n this.getRangeLegendCollection(layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath);\n this.getEqualLegendCollection(layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath);\n this.getDataLegendCollection(layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath);\n };\n Legend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n Legend.prototype.legendTextTrim = function (maxWidth, text, font, legendRectSize) {\n var label = text;\n var size = measureText(text, font).width;\n var legendWithoutTextSize = legendRectSize - size;\n if (legendRectSize > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n var totalSize = legendWithoutTextSize + size;\n if (totalSize <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend shape and text.\n * @private\n */\n Legend.prototype.drawLegend = function () {\n var map = this.maps;\n var legend = map.legendSettings;\n var render = map.renderer;\n var textOptions;\n var textFont = {\n size: legend.textStyle.size,\n color: legend.textStyle.color,\n fontFamily: legend.textStyle.fontFamily,\n fontWeight: legend.textStyle.fontWeight,\n fontStyle: legend.textStyle.fontStyle,\n opacity: legend.textStyle.opacity\n };\n this.legendGroup = render.createGroup({ id: map.element.id + '_Legend_Group' });\n if (legend.mode === 'Interactive') {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = map.element.id + '_Legend_Index_' + i;\n var textId = map.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n if (i === 0) {\n this.renderLegendBorder();\n }\n var textLocation = new Point(item['textX'], item['textY']);\n textFont.color = (textFont.color !== null) ? textFont.color : this.maps.themeStyle.legendTextColor;\n var rectOptions = new RectOption(itemId, item['fill'], item['shapeBorder'], legend.opacity, bounds);\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n textFont.fontFamily = !isNullOrUndefined(textFont.fontFamily) ? textFont.fontFamily : this.maps.themeStyle.fontFamily;\n textFont.size = map.themeStyle.legendFontSize || textFont.size;\n renderTextElement(textOptions, textFont, textFont.color, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n this.legendToggle();\n }\n }\n else {\n this.drawLegendItem(this.currentPage);\n }\n };\n /**\n * @param {string} page - Specifies the legend page.\n * @returns {void}\n * @private\n */\n Legend.prototype.drawLegendItem = function (page) {\n var map = this.maps;\n var legend = map.legendSettings;\n var spacing = 10;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n var textOptions;\n var render = map.renderer;\n var legendShape = legend.shape;\n if (page >= 0 && page < this.totalPages.length) {\n if (querySelector(this.legendGroup.id, this.maps.element.id)) {\n remove(querySelector(this.legendGroup.id, this.maps.element.id));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[page]['Collection'][i];\n var shapeBorder = collection['shapeBorder'];\n var legendElement = render.createGroup({ id: map.element.id + '_Legend_Index_' + collection['idIndex'] });\n var legendText = collection['DisplayText'];\n var pagingArrowPadding = 4;\n var shape = ((legend.type === 'Markers') ? ((isNullOrUndefined(collection['ImageSrc'])) ?\n legend.shape : 'Image') : collection['legendShape']);\n var strokeColor = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine'\n || legend.shape === 'Cross') ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine'\n || legend.shape === 'Cross') ? (shapeBorder.width === 0) ?\n 1 : shapeBorder.width : shapeBorder.width;\n var shapeId = map.element.id + '_Legend_Shape_Index_' + collection['idIndex'];\n var textId = map.element.id + '_Legend_Text_Index_' + collection['idIndex'];\n var shapeLocation = new Point(collection['Shape']['x'], (collection['Shape']['y'] - pagingArrowPadding));\n var textLocation = new Point(collection['Text']['x'], (collection['Text']['y'] - pagingArrowPadding));\n var renderOptions = new PathOption(shapeId, collection['Fill'], strokeWidth, strokeColor, legend.opacity, isNullOrUndefined(shapeBorder.opacity) ? legend.opacity : shapeBorder.opacity, '');\n var legendTextStyle = {\n fontFamily: legend.textStyle.fontFamily, fontStyle: legend.textStyle.fontStyle,\n fontWeight: legend.textStyle.fontWeight, size: legend.textStyle.size, color: legend.textStyle.color,\n opacity: legend.textStyle.opacity\n };\n legendTextStyle.color = (legendTextStyle.color !== null) ? legendTextStyle.color :\n this.maps.themeStyle.legendTextColor;\n legendTextStyle.fontFamily = !isNullOrUndefined(legendTextStyle.fontFamily) ? legendTextStyle.fontFamily :\n this.maps.themeStyle.fontFamily;\n legendTextStyle.size = map.themeStyle.legendFontSize || legendTextStyle.size;\n legendTextStyle.fontWeight = legendTextStyle.fontWeight || map.themeStyle.fontWeight;\n if (i === 0) {\n this.renderLegendBorder();\n }\n if (legend.type === 'Markers' && legend.useMarkerShape) {\n var legendShapeData = this.legendCollection[collection['idIndex']].data[0];\n var marker = map.layers[legendShapeData['layerIndex']].markerSettings[legendShapeData['markerIndex']];\n legendShape = !isNullOrUndefined(marker.dataSource[legendShapeData['dataIndex']][marker['shapeValuePath']]) && marker.dataSource[legendShapeData['dataIndex']][marker['shapeValuePath']] !== '' ? marker.dataSource[legendShapeData['dataIndex']][marker['shapeValuePath']] : marker.shape;\n }\n if (legendShape === 'Balloon') {\n legendElement.appendChild(drawBalloon(map, renderOptions, shapeSize, { x: shapeLocation.x, y: (shapeLocation.y + 5) }, 'Legend'));\n }\n else {\n legendElement.appendChild(drawSymbol(shapeLocation, legendShape, shapeSize, collection['ImageSrc'], renderOptions));\n }\n var legendRectSize = collection['Rect']['x'] + collection['Rect']['width'];\n if (legendRectSize > this.legendBorderRect.width) {\n var trimmedText = this.legendTextTrim(this.legendBorderRect.width, legendText, legendTextStyle, legendRectSize);\n legendText = trimmedText;\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legendTextStyle, legendTextStyle.color, legendElement);\n this.legendGroup.appendChild(legendElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (i === (this.totalPages[page]['Collection'].length - 1)) {\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - (spacing * 2) + (pagingArrowPadding / 2);\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2) - pagingArrowPadding;\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n pagingGroup = render.createGroup({ id: map.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: map.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: map.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(map.element.id + '_Left_Page', this.maps.themeStyle.legendTextColor, 0, this.maps.themeStyle.legendTextColor, ((page + 1) === 1 ? 0.5 : 1), 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(map.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), null, null, '', '');\n var pathEle = render.drawRectangle(leftRectPageOptions);\n pathEle.setAttribute('aria-label', 'Navigate to the previous legend items');\n pathEle.setAttribute('role', 'button');\n pathEle.tabIndex = (page + 1) === 1 ? -1 : map.tabIndex;\n if ((page + 1) === 1) {\n pathEle.style.cursor = 'default';\n pathEle.style.setProperty('outline', 'none');\n }\n else {\n pathEle.style.cursor = 'pointer';\n pathEle.style.removeProperty('outline');\n }\n leftPageElement.appendChild(pathEle);\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(map.element.id + '_Right_Page', this.maps.themeStyle.legendTextColor, 0, this.maps.themeStyle.legendTextColor, ((page + 1) === this.totalPages.length ? 0.5 : 1), 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(map.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect(rightPageX - spacing - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), null, null, '', '');\n pathEle = render.drawRectangle(rightRectPageOptions);\n pathEle.setAttribute('aria-label', 'Navigate to the next legend items');\n pathEle.setAttribute('role', 'button');\n pathEle.tabIndex = (page + 1) === this.totalPages.length ? -1 : map.tabIndex;\n if ((page + 1) === this.totalPages.length) {\n pathEle.style.cursor = 'default';\n pathEle.style.setProperty('outline', 'none');\n }\n else {\n pathEle.style.cursor = 'pointer';\n pathEle.style.removeProperty('outline');\n }\n rightPageElement.appendChild(pathEle);\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': map.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': this.maps.themeStyle.legendTextColor,\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n var pagingTextElement = render.createText(pageTextOptions, pagingText);\n pagingTextElement.style.cssText = 'user-select: none;';\n pagingGroup.appendChild(pagingTextElement);\n this.legendGroup.appendChild(pagingGroup);\n }\n this.legendToggle();\n }\n }\n }\n };\n Legend.prototype.legendHighLightAndSelection = function (targetElement, value) {\n var shapeIndex;\n var layerIndex;\n var dataIndex;\n var pointIndex;\n var legend = this.maps.legendSettings;\n var textEle = legend.mode === 'Default' ? document.getElementById(targetElement.id.replace('Shape', 'Text')) :\n document.getElementById(targetElement.id + '_Text');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.maps.legendModule.legendCollection;\n var length;\n var multiSelectEnable = !isNullOrUndefined(collection[0]['data'][0]['layerIndex']) ? this.maps.layers[collection[0]['data'][0]['layerIndex']].selectionSettings.enableMultiSelect : false;\n var selectLength = 0;\n var interactProcess = true;\n var idIndex = parseFloat(targetElement.id.charAt(targetElement.id.length - 1));\n this.updateLegendElement();\n var toggleLegendCheck = this.maps.toggledLegendId.indexOf(idIndex);\n if (this.maps.legendSettings.toggleLegendSettings.enable && value === 'highlight' && toggleLegendCheck !== -1) {\n var collectionIndex = this.getIndexofLegend(this.legendHighlightCollection, targetElement);\n if (collectionIndex !== -1) {\n this.legendHighlightCollection.splice(collectionIndex, 1);\n }\n this.removeLegendHighlightCollection();\n return null;\n }\n if (value === 'selection') {\n this.shapeHighlightCollection = [];\n if (!this.maps.shapeSelections && !multiSelectEnable) {\n this.removeAllSelections();\n this.maps.shapeSelections = true;\n }\n if (this.maps.legendSelectionCollection.length > 0 && (!multiSelectEnable ? this.maps.shapeSelections : true)) {\n for (var k = 0; k < this.maps.legendSelectionCollection.length; k++) {\n if (targetElement === this.maps.legendSelectionCollection[k]['legendElement']) {\n this.maps.legendSelectionCollection[k]['legendElement'] = targetElement;\n interactProcess = false;\n this.removeLegendSelectionCollection(this.maps.legendSelectionCollection[k]['legendElement']);\n this.maps.selectedLegendElementId.splice(this.maps.selectedLegendElementId.indexOf(idIndex), 1);\n this.maps.legendSelectionCollection.splice(k, 1);\n this.maps.legendSelection = this.maps.legendSelectionCollection.length > 0 ? false : true;\n break;\n }\n else if (!multiSelectEnable) {\n if (this.maps.legendSelectionCollection.length > 1) {\n for (var z = 0; z < this.maps.legendSelectionCollection.length; z++) {\n this.removeLegendSelectionCollection(this.maps.legendSelectionCollection[z]['legendElement']);\n }\n this.maps.legendSelectionCollection = [];\n }\n else {\n this.removeLegendSelectionCollection(this.maps.legendSelectionCollection[k]['legendElement']);\n this.maps.legendSelectionCollection.splice(k, 1);\n }\n }\n }\n }\n }\n else {\n if (this.maps.legendSelectionCollection.length > 0) {\n for (var k = 0; k < this.maps.legendSelectionCollection.length; k++) {\n if ((targetElement.id.indexOf('_Legend_Shape') > -1 || targetElement.id.indexOf('_Legend_Index')) &&\n targetElement === this.maps.legendSelectionCollection[k]['legendElement']) {\n interactProcess = false;\n break;\n }\n else {\n this.removeLegendHighlightCollection();\n }\n }\n }\n this.removeLegendHighlightCollection();\n }\n if (interactProcess) {\n for (var i = 0; i < collection.length; i++) {\n var idIndex_1 = this.maps.legendSettings.mode === 'Interactive' ?\n parseFloat(targetElement.id.split('_Legend_Index_')[1]) :\n parseFloat(targetElement.id.split('_Legend_Shape_Index_')[1]);\n if (textEle.textContent === collection[i]['text'] && collection[i]['data'].length > 0\n && idIndex_1 === i) {\n var layer = this.maps.layers[collection[i]['data'][0]['layerIndex']];\n var enable = void 0;\n var module = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n if (!isNullOrUndefined(layer)) {\n enable = (value === 'selection') ? layer.selectionSettings.enable : layer.highlightSettings.enable;\n module = void 0;\n module = (value === 'selection') ? layer.selectionSettings : layer.highlightSettings;\n data = collection[i]['data'];\n }\n if (enable) {\n for (var j = 0; j < data.length; j++) {\n var shapeElement = void 0;\n shapeIndex = data[j]['shapeIndex'];\n layerIndex = data[j]['layerIndex'];\n dataIndex = data[j]['dataIndex'];\n pointIndex = data[j]['pointIndex'];\n if (pointIndex === -1) {\n shapeElement = document.getElementById(this.maps.element.id + '_LayerIndex_' +\n layerIndex + '_shapeIndex_' + shapeIndex + '_dataIndex_' + dataIndex);\n }\n else {\n shapeElement = document.getElementById(this.maps.element.id + '_LayerIndex_' +\n layerIndex + '_shapeIndex_' + shapeIndex + '_dataIndex_' + dataIndex + '_multiLine_' + pointIndex);\n }\n if (shapeElement !== null) {\n var shapeMatch = true;\n if (this.maps.legendSelectionCollection !== null) {\n for (var i_1 = 0; i_1 < this.maps.legendSelectionCollection.length; i_1++) {\n if (this.maps.legendSelectionCollection[i_1]['legendElement'] === targetElement) {\n shapeMatch = false;\n break;\n }\n }\n }\n if (value === 'highlight' && shapeMatch) {\n if (j === 0) {\n this.legendHighlightCollection = [];\n this.pushCollection(targetElement, this.legendHighlightCollection, collection[i], layer.shapeSettings);\n }\n length = this.legendHighlightCollection.length;\n var legendHighlightColor = this.legendHighlightCollection[length - 1]['legendOldFill'];\n this.legendHighlightCollection[length - 1]['MapShapeCollection']['Elements'].push(shapeElement);\n var shapeItemCount = this.legendHighlightCollection[length - 1]['MapShapeCollection']['Elements'].length - 1;\n var shapeOldFillColor = shapeElement.getAttribute('fill');\n var shapeOldOpacity = shapeElement.getAttribute('fill-opacity');\n this.legendHighlightCollection[length - 1]['shapeOldFillColor'].push(shapeOldFillColor);\n this.legendHighlightCollection[length - 1]['shapeOldOpacity'] = shapeOldOpacity;\n var shapeOldColor = this.legendHighlightCollection[length - 1]['shapeOldFillColor'][shapeItemCount];\n var shapeOldFillOpacity = this.legendHighlightCollection[length - 1]['shapeOldOpacity'];\n this.shapePreviousColor = this.legendHighlightCollection[length - 1]['shapeOldFillColor'];\n this.setColor(shapeElement, !isNullOrUndefined(module.fill) ? module.fill : shapeOldColor, isNullOrUndefined(module.opacity) ? shapeOldFillOpacity : module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');\n this.setColor(targetElement, !isNullOrUndefined(module.fill) ? module.fill : legendHighlightColor, isNullOrUndefined(module.opacity) ? shapeOldFillOpacity : module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');\n }\n else if (value === 'selection') {\n this.legendHighlightCollection = [];\n this.maps.legendSelectionClass = module;\n if (j === 0) {\n this.pushCollection(targetElement, this.maps.legendSelectionCollection, collection[i], layer.shapeSettings);\n if (multiSelectEnable) {\n this.maps.selectedLegendElementId.push(i);\n }\n else {\n if (this.maps.selectedLegendElementId.length === 0) {\n this.maps.selectedLegendElementId.push(i);\n }\n else {\n this.maps.selectedLegendElementId = [];\n this.maps.selectedLegendElementId.push(i);\n }\n }\n }\n selectLength = this.maps.legendSelectionCollection.length;\n var legendSelectionColor = this.maps.legendSelectionCollection[selectLength - 1]['legendOldFill'];\n this.maps.legendSelectionCollection[selectLength - 1]['MapShapeCollection']['Elements'].push(shapeElement);\n this.maps.legendSelectionCollection[selectLength - 1]['shapeOldFillColor'] = this.shapePreviousColor;\n this.setColor(targetElement, !isNullOrUndefined(module.fill) ? module.fill : legendSelectionColor, module.opacity.toString(), module.border.color, module.border.width.toString(), 'selection');\n this.setColor(shapeElement, !isNullOrUndefined(module.fill) ? module.fill : legendSelectionColor, module.opacity.toString(), module.border.color, module.border.width.toString(), 'selection');\n if (this.maps.selectedElementId.indexOf(shapeElement.getAttribute('id')) === -1) {\n this.maps.selectedElementId.push(shapeElement.getAttribute('id'));\n }\n if (j === data.length - 1) {\n this.maps.legendSelection = false;\n this.removeLegend(this.maps.legendSelectionCollection);\n }\n }\n }\n }\n }\n }\n }\n }\n };\n Legend.prototype.setColor = function (element, fill, opacity, borderColor, borderWidth, type) {\n var isLineStringShape = (element.parentElement.id.indexOf('LineString') > -1);\n if (type === 'selection') {\n maintainStyleClass((isLineStringShape ? 'LineselectionMap' : 'ShapeselectionMap'), (isLineStringShape ? 'LineselectionMapStyle' : 'ShapeselectionMapStyle'), (isLineStringShape ? 'transparent' : fill), opacity, (isLineStringShape ? fill : borderColor), borderWidth, this.maps);\n element.setAttribute('class', isLineStringShape ? 'LineselectionMapStyle' : 'ShapeselectionMapStyle');\n }\n else {\n element.setAttribute('fill', isLineStringShape ? 'transparent' : fill);\n element.setAttribute('fill-opacity', opacity);\n element.setAttribute('stroke', isLineStringShape ? fill : borderColor);\n element.setAttribute('stroke-width', (Number(borderWidth) / this.maps.scale).toString());\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.pushCollection = function (targetElement, collection, oldElement, shapeSettings) {\n collection.push({\n legendElement: targetElement, legendOldFill: oldElement['fill'], legendOldOpacity: oldElement['opacity'],\n legendOldBorderColor: oldElement['borderColor'], legendOldBorderWidth: oldElement['borderWidth'],\n shapeOpacity: shapeSettings.opacity, shapeOldBorderColor: shapeSettings.border.color,\n shapeOldBorderWidth: shapeSettings.border.width\n });\n var length = collection.length;\n collection[length - 1]['MapShapeCollection'] = { Elements: [] };\n collection[length - 1]['shapeOldFillColor'] = [];\n collection[length - 1]['shapeOldOpacity'] = null;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.removeLegend = function (collection) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n this.setColor(item['legendElement'], item['legendOldFill'], item['legendOldOpacity'], item['legendOldBorderColor'], item['legendOldBorderWidth'], 'highlight');\n var dataCount = item['MapShapeCollection']['Elements'].length;\n for (var j = 0; j < dataCount; j++) {\n var shapeFillColor = item['legendOldFill'].indexOf('url') !== -1\n ? item['shapeOldFillColor'][j] : item['legendOldFill'];\n var shapeOpacity = !isNullOrUndefined(item['shapeOldOpacity']) ? item['shapeOldOpacity'] : item['shapeOpacity'];\n this.setColor(item['MapShapeCollection']['Elements'][j], shapeFillColor, shapeOpacity, item['shapeOldBorderColor'], item['shapeOldBorderWidth'], 'highlight');\n }\n }\n };\n Legend.prototype.removeLegendHighlightCollection = function () {\n if (this.legendHighlightCollection.length > 0) {\n this.removeLegend(this.legendHighlightCollection);\n this.legendHighlightCollection = [];\n }\n };\n Legend.prototype.removeLegendSelectionCollection = function (targetElement) {\n if (this.maps.legendSelectionCollection.length > 0) {\n removeClass(targetElement);\n var shapeElements = this.shapesOfLegend(targetElement);\n var dataCount = shapeElements.length;\n for (var j = 0; j < dataCount; j++) {\n var shapeElement = getElement(shapeElements[j]);\n if (shapeElement.getAttribute('class') === 'ShapeselectionMapStyle' ||\n shapeElement.getAttribute('class') === 'LineselectionMapStyle') {\n removeClass(shapeElement);\n var selectedElementIdIndex = this.maps.selectedElementId.indexOf(shapeElement.id);\n if (selectedElementIdIndex !== -1) {\n this.maps.selectedElementId.splice(selectedElementIdIndex, 1);\n }\n }\n }\n }\n };\n Legend.prototype.removeShapeHighlightCollection = function () {\n if (this.shapeHighlightCollection.length > 0) {\n for (var i = 0; i < this.shapeHighlightCollection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.shapeHighlightCollection[i];\n var removeFill = true;\n for (var j = 0; j < this.maps.legendSelectionCollection.length; j++) {\n if (this.maps.legendSelectionCollection[j]['legendElement'] === item['legendElement']) {\n removeFill = false;\n }\n }\n if (removeFill) {\n this.setColor(item['legendElement'], item['legendOldFill'], item['legendOldOpacity'], item['legendOldBorderColor'], item['legendOldBorderWidth'], 'highlight');\n }\n }\n }\n };\n Legend.prototype.shapeHighLightAndSelection = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n targetElement, data, module, getValue, layerIndex) {\n if (data !== undefined) {\n this.updateLegendElement();\n this.shapeToggled = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.maps.legendModule.legendCollection;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var indexes = this.legendIndexOnShape(data, layerIndex);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeElement = this.shapeDataOnLegend(targetElement);\n var toggleLegendCheck = this.maps.toggledLegendId.indexOf(indexes['actualIndex']);\n if (this.maps.legendSettings.toggleLegendSettings.enable && toggleLegendCheck !== -1) {\n this.shapeToggled = false;\n this.legendHighlightCollection = [];\n var collectionIndex = this.getIndexofLegend(this.shapeHighlightCollection, shapeElement['LegendEle']);\n if (collectionIndex !== -1) {\n this.shapeHighlightCollection.splice(collectionIndex, 1);\n }\n this.removeShapeHighlightCollection();\n return null;\n }\n if (indexes['currentIndex'] === undefined && indexes['actualIndex'] === undefined) {\n this.removeShapeHighlightCollection();\n return null;\n }\n if (indexes['currentIndex'] === undefined && getValue === 'selection'\n && !this.maps.layers[layerIndex].selectionSettings.enableMultiSelect &&\n targetElement.getAttribute('class') !== 'ShapeselectionMapStyle') {\n this.maps.legendSelection = false;\n }\n if (getValue === 'selection' && !this.maps.layers[layerIndex].selectionSettings.enableMultiSelect &&\n !this.maps.legendSelection) {\n this.removeAllSelections();\n this.maps.legendSelection = true;\n }\n if (indexes['currentIndex'] === undefined) {\n if (getValue === 'selection' && indexes['actualIndex'] !== undefined) {\n var checkSelection = 0;\n for (var i = 0; i < shapeElement['Elements'].length; i++) {\n if (shapeElement['Elements'][i].getAttribute('class') === 'ShapeselectionMapStyle') {\n checkSelection++;\n }\n }\n var selectionIndex = this.maps.selectedLegendElementId.indexOf(indexes['actualIndex']);\n if (selectionIndex === -1) {\n this.maps.selectedLegendElementId.push(indexes['actualIndex']);\n this.maps.legendSelectionClass = module;\n }\n else {\n if ((checkSelection <= 1) && (targetElement.getAttribute('class') === 'ShapeselectionMapStyle'\n || targetElement.getAttribute('class') === 'LineselectionMapStyle')) {\n if (!this.maps.layers[layerIndex].selectionSettings.enableMultiSelect) {\n this.maps.selectedLegendElementId.splice(selectionIndex, 1);\n }\n else {\n if (checkSelection <= 1 && (targetElement.getAttribute('class') === 'ShapeselectionMapStyle'\n || targetElement.getAttribute('class') === 'LineselectionMapStyle')) {\n this.maps.selectedLegendElementId.splice(selectionIndex, 1);\n }\n }\n }\n }\n }\n this.removeShapeHighlightCollection();\n return null;\n }\n var text = collection[indexes['actualIndex']]['text'];\n var content = void 0;\n var legendShape = void 0;\n if (this.maps.legendSettings.mode === 'Default') {\n if (indexes['currentIndex'] !== undefined) {\n content = document.getElementById(this.maps.element.id + '_Legend_Text_Index_' + indexes['actualIndex']).textContent;\n legendShape = document.getElementById(this.maps.element.id + '_Legend_Shape_Index_' + indexes['actualIndex']);\n }\n }\n else {\n content = document.getElementById(this.maps.element.id + '_Legend_Index_' + indexes['actualIndex']\n + '_Text').textContent;\n legendShape = document.getElementById(this.maps.element.id + '_Legend_Index_' + indexes['actualIndex']);\n }\n this.oldShapeElement = shapeElement['LegendEle'];\n var length_1 = this.maps.legendSelectionCollection.length;\n if (text === content) {\n var shapeMatched = true;\n if (this.maps.legendSelectionCollection) {\n for (var i = 0; i < this.maps.legendSelectionCollection.length; i++) {\n if (this.maps.legendSelectionCollection[i]['legendElement'] === shapeElement['LegendEle']) {\n shapeMatched = false;\n break;\n }\n }\n }\n if (getValue === 'highlight' && shapeMatched) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var selectionEle = this.isTargetSelected(shapeElement, this.shapeHighlightCollection);\n if (selectionEle === undefined || (selectionEle && !selectionEle['IsSelected'])) {\n this.pushCollection(legendShape, this.shapeHighlightCollection, collection[indexes['actualIndex']], this.maps.layers[layerIndex].shapeSettings);\n }\n for (var j = 0; j < this.shapeHighlightCollection.length; j++) {\n if (shapeElement['LegendEle'].id === this.shapeHighlightCollection[j]['legendElement'].id) {\n this.shapeHighlightCollection[j]['legendElement'] = shapeElement['LegendEle'];\n }\n }\n if (length_1 > 0) {\n for (var j = 0; j < length_1; j++) {\n if (shapeElement['LegendEle'] === this.maps.legendSelectionCollection[j]['legendElement']) {\n this.maps.legendSelectionCollection[j]['legendElement'] = shapeElement['LegendEle'];\n this.removeShapeHighlightCollection();\n break;\n }\n else if (j === length_1 - 1) {\n this.removeShapeHighlightCollection();\n this.setColor(legendShape, !isNullOrUndefined(module.fill) ? module.fill : legendShape.getAttribute('fill'), module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');\n }\n }\n }\n else {\n this.removeShapeHighlightCollection();\n this.setColor(legendShape, !isNullOrUndefined(module.fill) ? module.fill : legendShape.getAttribute('fill'), module.opacity.toString(), module.border.color, module.border.width.toString(), 'highlight');\n }\n }\n else if (getValue === 'selection') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var selectionEle = this.isTargetSelected(shapeElement, this.maps.legendSelectionCollection);\n if (length_1 > 0) {\n var j = 0;\n while (j < this.maps.legendSelectionCollection.length) {\n if (shapeElement['LegendEle'] !== this.maps.legendSelectionCollection[j]['legendElement'] &&\n !module.enableMultiSelect) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = this.maps.legendSelectionCollection[j];\n var selectedLegendIndex = this.maps.selectedLegendElementId.indexOf(indexes['actualIndex']);\n this.maps.selectedLegendElementId.splice(selectedLegendIndex, 1);\n this.maps.legendSelectionCollection.splice(j, 1);\n removeClass(element['legendElement']);\n this.maps.shapeSelections = true;\n j = 0;\n }\n else {\n j++;\n }\n }\n }\n if (selectionEle && (selectionEle['IsSelected'] && (targetElement.getAttribute('class') === 'ShapeselectionMapStyle'\n || targetElement.getAttribute('class') === 'LineselectionMapStyle'))) {\n var multiSelection = 0;\n if (module.enableMultiSelect) {\n for (var i = 0; i < shapeElement['Elements'].length; i++) {\n if (targetElement.getAttribute('class') === shapeElement['Elements'][i].getAttribute('class')) {\n multiSelection++;\n }\n }\n }\n if (multiSelection <= 1 && (!module.enableMultiSelect ?\n this.maps.legendSelection : true)) {\n this.maps.selectedLegendElementId.splice(this.maps.selectedLegendElementId.indexOf(indexes['actualIndex']), 1);\n if (!isNullOrUndefined(shapeElement['LegendEle'])) {\n removeClass(shapeElement['LegendEle']);\n }\n this.maps.legendSelectionCollection.splice(selectionEle['SelectionIndex'], 1);\n this.maps.shapeSelections = true;\n }\n }\n else {\n if ((selectionEle === undefined || (selectionEle && !selectionEle['IsSelected'])) &&\n !isNullOrUndefined(legendShape)) {\n var legendSelectionIndex = this.getIndexofLegend(this.maps.legendSelectionCollection, legendShape);\n if (legendSelectionIndex === -1) {\n this.pushCollection(legendShape, this.maps.legendSelectionCollection, collection[indexes['actualIndex']], this.maps.layers[layerIndex].shapeSettings);\n }\n }\n var addId = true;\n for (var i = 0; i < this.maps.selectedLegendElementId.length; i++) {\n if (indexes['actualIndex'] === this.maps.selectedLegendElementId[i]) {\n addId = false;\n }\n }\n if (addId) {\n this.maps.selectedLegendElementId.push(indexes['actualIndex']);\n }\n this.maps.legendSelectionClass = module;\n this.removeLegend(this.shapeHighlightCollection);\n if (!isNullOrUndefined(legendShape)) {\n this.setColor(legendShape, !isNullOrUndefined(module.fill) ? module.fill : legendShape.getAttribute('fill'), module.opacity.toString(), module.border.color, module.border.width.toString(), 'selection');\n var legendSelectionIndex = this.getIndexofLegend(this.maps.legendSelectionCollection, legendShape);\n this.maps.legendSelectionCollection[legendSelectionIndex]['MapShapeCollection']['Elements'].push(targetElement);\n }\n this.maps.shapeSelections = false;\n }\n }\n else if (document.getElementsByClassName('highlightMapStyle').length > 0) {\n this.removeShapeHighlightCollection();\n removeClass(document.getElementsByClassName('highlightMapStyle')[0]);\n }\n }\n }\n else {\n this.removeShapeHighlightCollection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.isTargetSelected = function (target, collection) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var selectEle;\n for (var i = 0; i < collection.length; i++) {\n if (!isNullOrUndefined(target['LegendEle'].getAttribute('id')) &&\n (target['LegendEle'].getAttribute('id') === collection[i]['legendElement'].getAttribute('id'))) {\n selectEle = { IsSelected: true, SelectionIndex: i };\n }\n }\n return selectEle;\n };\n Legend.prototype.updateLegendElement = function () {\n for (var i = 0; i < this.maps.legendSelectionCollection.length; i++) {\n if (document.getElementById(this.maps.legendSelectionCollection[i]['legendElement'].id)) {\n this.maps.legendSelectionCollection[i]['legendElement'] =\n document.getElementById(this.maps.legendSelectionCollection[i]['legendElement'].id);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.getIndexofLegend = function (targetCollection, targetElement) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendIndex = targetCollection.map(function (e) { return e['legendElement']; }).indexOf(targetElement);\n return legendIndex;\n };\n Legend.prototype.removeAllSelections = function () {\n for (var i = 0; i < this.maps.selectedElementId.length; i++) {\n var selectedElement = document.getElementById(this.maps.selectedElementId[i]);\n removeClass(selectedElement);\n }\n for (var j = 0; j < this.maps.selectedLegendElementId.length; j++) {\n var idIndex = this.maps.legendSettings.mode === 'Interactive' ?\n this.maps.element.id + '_Legend_Index_' : this.maps.element.id + '_Legend_Shape_Index_';\n var selectedElement = idIndex + this.maps.selectedLegendElementId[j];\n var legendElement = document.getElementById(selectedElement);\n if (!isNullOrUndefined(legendElement)) {\n removeClass(document.getElementById(selectedElement));\n }\n }\n this.maps.legendSelectionCollection = [];\n this.maps.selectedLegendElementId = [];\n this.maps.selectedElementId = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.legendIndexOnShape = function (data, index) {\n var legendIndex;\n var actualIndex;\n var path = this.maps.layers[index].shapeDataPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = data[path];\n var legendType = this.maps.legendSettings.mode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.maps.legendModule.legendCollection;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentCollection;\n if (legendType === 'Default' && !isNullOrUndefined(this.maps.legendModule.totalPages)) {\n currentCollection = this.maps.legendModule.totalPages[this.maps.legendModule.currentPage]['Collection'];\n }\n var currentCollectionLength = legendType === 'Default' ? currentCollection['length'] : 1;\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataValue = collection[i]['data'];\n for (var k = 0; k < currentCollectionLength; k++) {\n if (legendType !== 'Default' || collection[i]['text'] === currentCollection[k]['DisplayText']) {\n for (var j = 0; j < dataValue.length; j++) {\n if (value === dataValue[j]['name']) {\n legendIndex = k;\n }\n }\n }\n }\n for (var j = 0; j < dataValue.length; j++) {\n if (value === dataValue[j]['name']) {\n actualIndex = i;\n }\n }\n }\n return { currentIndex: legendIndex, actualIndex: actualIndex };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.shapeDataOnLegend = function (targetElement) {\n var shapeIndex;\n var layerIndex;\n var dataIndex;\n var pointIndex;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.maps.legendModule.legendCollection;\n var legend = this.maps.legendSettings;\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = collection[i]['data'];\n var process = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var elements = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentElement = { Elements: [] };\n for (var j = 0; j < data.length; j++) {\n var shapeElement = void 0;\n shapeIndex = data[j]['shapeIndex'];\n layerIndex = data[j]['layerIndex'];\n dataIndex = data[j]['dataIndex'];\n pointIndex = data[j]['pointIndex'];\n if (pointIndex === -1) {\n shapeElement = document.getElementById(this.maps.element.id + '_LayerIndex_' +\n layerIndex + '_shapeIndex_' + shapeIndex + '_dataIndex_' + dataIndex);\n }\n else {\n shapeElement = document.getElementById(this.maps.element.id + '_LayerIndex_' +\n layerIndex + '_shapeIndex_' + shapeIndex + '_dataIndex_' + dataIndex + '_multiLine_' + pointIndex);\n }\n if (targetElement === shapeElement) {\n process = true;\n }\n elements.push(shapeElement);\n }\n if (process) {\n if (isNullOrUndefined(currentElement['LegendEle'])) {\n currentElement['LegendEle'] = legend.mode === 'Default' ?\n document.getElementById(this.maps.element.id + '_Legend_Shape_Index_' + i) :\n document.getElementById(this.maps.element.id + '_Legend_Index_' + i);\n }\n currentElement['Elements'] = elements;\n return currentElement;\n }\n }\n return null;\n };\n Legend.prototype.shapesOfLegend = function (targetElement) {\n var shapeIndex;\n var layerIndex;\n var dataIndex;\n var pointIndex;\n var idIndex = parseFloat(targetElement.id.charAt(targetElement.id.length - 1));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = this.maps.legendModule.legendCollection[idIndex]['data'];\n var legendShapeElements = [];\n for (var i = 0; i < data.length; i++) {\n var shapeElement = void 0;\n shapeIndex = data[i]['shapeIndex'];\n layerIndex = data[i]['layerIndex'];\n dataIndex = data[i]['dataIndex'];\n pointIndex = data[i]['pointIndex'];\n if (pointIndex === -1) {\n shapeElement = document.getElementById(this.maps.element.id + '_LayerIndex_' +\n layerIndex + '_shapeIndex_' + shapeIndex + '_dataIndex_' + dataIndex);\n }\n else {\n shapeElement = document.getElementById(this.maps.element.id + '_LayerIndex_' +\n layerIndex + '_shapeIndex_' + shapeIndex + '_dataIndex_' + dataIndex + '_multiLine_' + pointIndex);\n }\n if (!isNullOrUndefined(shapeElement)) {\n legendShapeElements.push(shapeElement.id);\n }\n }\n return legendShapeElements;\n };\n Legend.prototype.legendToggle = function () {\n var map = this.maps;\n var legend = map.legendSettings;\n if (this.maps.selectedLegendElementId) {\n // To maintain the state of legend selection during page resize.\n for (var j = 0; j < this.maps.selectedLegendElementId.length; j++) {\n var idIndex = legend.mode === 'Interactive' ? this.maps.element.id + '_Legend_Index_' : this.maps.element.id + '_Legend_Shape_Index_';\n var selectedElement = map.svgObject.querySelector('#' + idIndex + this.maps.selectedLegendElementId[j]);\n if (!isNullOrUndefined(selectedElement)) {\n var fill = !isNullOrUndefined(this.maps.legendSelectionClass.fill) ?\n this.maps.legendSelectionClass.fill : selectedElement.getAttribute('fill');\n this.setColor(selectedElement, fill, this.maps.legendSelectionClass.opacity.toString(), this.maps.legendSelectionClass.border.color, this.maps.legendSelectionClass.border.width.toString(), 'selection');\n for (var i = 0; i < this.maps.legendSelectionCollection.length; i++) {\n if (this.maps.legendSelectionCollection[i]['legendElement'].id === selectedElement.id) {\n this.maps.legendSelectionCollection[i]['legendElement'] = selectedElement;\n }\n }\n var legendSelectionIndex = this.getIndexofLegend(this.maps.legendSelectionCollection, selectedElement);\n if (legendSelectionIndex === -1) {\n var layerIndex = this.maps.legendModule.legendCollection[this.maps.selectedLegendElementId[j]]['data'][j]['layerIndex'];\n this.pushCollection(selectedElement, this.maps.legendSelectionCollection, this.maps.legendModule.legendCollection[this.maps.selectedLegendElementId[j]], this.maps.layers[layerIndex].shapeSettings);\n }\n }\n }\n }\n if (this.maps.toggledLegendId) {\n for (var j = 0; j < this.maps.toggledLegendId.length; j++) {\n var legendTextId = legend.mode === 'Interactive' ? ('#' + this.maps.element.id + '_Legend_Index_' + this.maps.toggledLegendId[j] + '_Text') : ('#' + this.maps.element.id + '_Legend_Text_Index_' + this.maps.toggledLegendId[j]);\n var textElement = map.svgObject.querySelector(legendTextId);\n if (!isNullOrUndefined(textElement)) {\n textElement.setAttribute('fill', '#E5E5E5');\n }\n var legendShapeId = legend.mode === 'Interactive' ? ('#' + this.maps.element.id + '_Legend_Index_' + this.maps.toggledLegendId[j]) : ('#' + this.maps.element.id + '_Legend_Shape_Index_' + this.maps.toggledLegendId[j]);\n var legendElement = map.svgObject.querySelector(legendShapeId);\n if (!isNullOrUndefined(legendElement)) {\n legendElement.setAttribute('fill', '#E5E5E5');\n }\n }\n }\n };\n Legend.prototype.renderLegendBorder = function () {\n var map = this.maps;\n var legend = map.legendSettings;\n var legendTitle = legend.title.text;\n var textStyle = {\n fontFamily: legend.titleStyle.fontFamily, fontStyle: legend.titleStyle.fontStyle,\n fontWeight: legend.titleStyle.fontWeight, size: legend.titleStyle.size, color: legend.titleStyle.color,\n opacity: legend.titleStyle.opacity\n };\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var legendBorder = {\n color: legend.border.color, width: legend.border.width, opacity: legend.border.opacity\n };\n legendBorder.opacity = isNullOrUndefined(legendBorder.opacity) ? 1 : legendBorder.opacity;\n var renderOptions = new RectOption(map.element.id + '_Legend_Border', legend.background, legendBorder, 1, this.legendBorderRect, null, null, '', '');\n this.legendGroup.appendChild(map.renderer.drawRectangle(renderOptions));\n this.getLegendAlignment(map, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-this.legendBorderRect.x)) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n if (legend.position !== 'Float') {\n map.svgObject.appendChild(this.legendGroup);\n }\n if (legendTitle) {\n textStyle.color = (textStyle.color !== null) ? textStyle.color : this.maps.themeStyle.legendTitleFontColor;\n textStyle.fontFamily = !isNullOrUndefined(textStyle.fontFamily) ? textStyle.fontFamily : this.maps.themeStyle.fontFamily;\n textStyle.size = !isNullOrUndefined(textStyle.size) ? textStyle.size : this.maps.themeStyle.subTitleFontSize || Theme.legendTitleFont.size;\n textStyle.fontWeight = !isNullOrUndefined(textStyle.fontWeight) ? textStyle.fontWeight : this.maps.themeStyle.titleFontWeight || Theme.legendTitleFont.fontWeight;\n textOptions = new TextOption(map.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - spacing / 2, 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color, this.legendGroup);\n }\n };\n Legend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.legendGroup = this.maps.renderer.createGroup({ id: this.maps.element.id + '_Legend_Group' });\n this.maps.mapAreaRect = this.initialMapAreaRect;\n this.drawLegendItem(this.currentPage);\n if (!isNullOrUndefined(this.maps.legendModule) && this.maps.legendSettings.position === 'Float') {\n if (this.maps.isTileMap) {\n this.maps.mapLayerPanel.layerGroup.appendChild(this.maps.legendModule.legendGroup);\n }\n else {\n this.maps.svgObject.appendChild(this.maps.legendModule.legendGroup);\n }\n }\n if (querySelector(this.maps.element.id + '_Legend_Border', this.maps.element.id)) {\n querySelector(this.maps.element.id + '_Legend_Border', this.maps.element.id).style.pointerEvents = 'none';\n }\n };\n Legend.prototype.getLegendAlignment = function (map, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, map.mapAreaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = map.availableSize.width;\n var totalHeight = map.availableSize.height;\n var locationX = !isNullOrUndefined(legend.location.x) ? legend.location.x : 0;\n var locationY = !isNullOrUndefined(legend.location.y) ? legend.location.y : 0;\n if (legend.position === 'Float') {\n this.translate = map.isTileMap ? new Point(locationX, locationY + (spacing / 4)) :\n new Point(locationX + map.mapAreaRect.x, locationY + map.mapAreaRect.y);\n this.legendTotalRect = map.mapAreaRect;\n }\n else {\n switch (legend.position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (legend.position === 'Top') ? (areaHeight - height) : (areaHeight - height - (spacing * 2));\n x = (totalWidth / 2) - (width / 2);\n y = (legend.position === 'Top') ? areaY : (areaY + totalRect.height);\n totalRect.y = (legend.position === 'Top') ? areaY + height + (map.isTileMap ? (spacing / 2) : spacing) : areaY - (spacing / 2);\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width - map.mapAreaRect.x);\n x = (legend.position === 'Left') ? areaX + (spacing / 2) : (areaX + totalRect.width + spacing);\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (legend.position === 'Left') ? areaX + width + spacing : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (legend.position === 'Top' || legend.position === 'Bottom') {\n x = totalRect.x - (legend.mode === 'Interactive' ? spacing : 0);\n }\n else {\n y = totalRect.y - (!(legend.height && legend.width) && legend.mode === 'Interactive' ? map.mapAreaRect.x : 0);\n }\n break;\n case 'Far':\n if (legend.position === 'Top' || legend.position === 'Bottom') {\n x = (totalWidth - width) - (legend.mode === 'Interactive' ? 0 : spacing);\n }\n else {\n y = totalHeight - height - (legend.mode === 'Default' ? spacing : 0);\n }\n break;\n }\n if ((legend.height || legend.width) && legend.mode !== 'Interactive') {\n this.legendTotalRect = map.mapAreaRect = map.totalRect = totalRect;\n }\n else {\n map.totalRect = null;\n if ((legend.height || legend.width) && legend.mode === 'Interactive') {\n map.totalRect = totalRect;\n }\n this.legendTotalRect = map.mapAreaRect = totalRect;\n }\n if (legend.position === 'Left') {\n map.mapAreaRect.width = totalRect.width;\n }\n this.translate = new Point(x, y);\n }\n };\n Legend.prototype.getMarkersLegendCollections = function (layerIndex, markers) {\n var _this = this;\n Array.prototype.forEach.call(markers, function (marker, markerIndex) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataSource = marker.dataSource;\n var field = marker.legendText;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn;\n var isDuplicate;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(dataSource, function (data, dataIndex) {\n var imageSrc = null;\n var showLegend = isNullOrUndefined(data[_this.maps.legendSettings.showLegendPath]) ? true :\n data[_this.maps.legendSettings.showLegendPath];\n if (marker.visible && showLegend && (!isNullOrUndefined(data['latitude'])) && (!isNullOrUndefined(data['longitude']))) {\n if (marker.template) {\n templateFn = getTemplateFunction(marker.template, _this.maps);\n var templateElement = templateFn(_this.maps);\n var markerEle = isNullOrUndefined(templateElement.childElementCount) ? templateElement[0] :\n templateElement;\n imageSrc = markerEle.querySelector('img').src;\n }\n var text = isNullOrUndefined(data[field]) ? '' : data[field];\n var legendFill = !isNullOrUndefined(marker.colorValuePath) ? data[marker.colorValuePath] : marker.fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = [];\n if (_this.maps.legendSettings.removeDuplicateLegend) {\n newData.push(_this.getMarkerLegendData(layerIndex, text, legendFill));\n _this.getOverallLegendItemsCollection(text, legendFill, newData, showLegend);\n }\n else {\n newData.push({ layerIndex: layerIndex, markerIndex: markerIndex, dataIndex: dataIndex, value: legendFill,\n name: text,\n shape: (!isNullOrUndefined(marker.shapeValuePath) && !isNullOrUndefined(data[marker.shapeValuePath]) && data[marker.shapeValuePath] !== '') ? data[marker.shapeValuePath] : (_this.maps.legendSettings.useMarkerShape ? marker.shape : _this.maps.legendSettings.shape) });\n _this.getOverallLegendItemsCollection(text, legendFill, newData, showLegend);\n }\n }\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.getMarkerLegendData = function (layerIndex, text, legendFill) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendData = [];\n this.maps.layers[layerIndex].markerSettings.map(function (markerSettings, markerIndex) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markerData = markerSettings.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(markerData, function (data, dataIndex) {\n var marker = _this.maps.layers[layerIndex].markerSettings[markerIndex];\n if ((text === data[marker.legendText] || text === '') && legendFill === data[marker.colorValuePath]) {\n legendData.push({ layerIndex: layerIndex, markerIndex: markerIndex, dataIndex: dataIndex, value: legendFill, name: text,\n shape: !isNullOrUndefined(marker.shapeValuePath) ? data[marker.shapeValuePath] : marker.shape });\n }\n });\n });\n return legendData;\n };\n Legend.prototype.getRangeLegendCollection = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath) {\n var _this = this;\n var legendText;\n var legendIndex = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill = this.maps.legendSettings.fill;\n var rangeData = [];\n var _loop_1 = function (colorMap) {\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to)) {\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n rangeData = [];\n var colorMapProcess_1 = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(dataSource, function (data, dataIndex) {\n var colorValue = (colorValuePath.indexOf('.') > -1) ? Number(getValueFromObject(data, colorValuePath)) :\n parseFloat(data[colorValuePath]);\n if (colorValue >= colorMap.from && colorValue <= colorMap.to) {\n colorMapProcess_1 = true;\n rangeData.push(_this.getLegendData(layerIndex, dataIndex, data, dataPath, layerData, propertyPath, colorValue));\n }\n });\n if (!colorMapProcess_1) {\n rangeData.push({\n layerIndex: layerIndex, shapeIndex: null, dataIndex: null,\n name: null, value: null\n });\n }\n var legendFill = (isNullOrUndefined(fill)) ? Object.prototype.toString.call(colorMap.color) === '[object Array]' ?\n !isNullOrUndefined(colorMap.value) ? colorMap.color[0] : this_1.legendGradientColor(colorMap, legendIndex) :\n colorMap.color : fill;\n legendIndex++;\n this_1.getOverallLegendItemsCollection(legendText, legendFill, rangeData, colorMap.showLegend);\n }\n };\n var this_1 = this;\n for (var _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\n _loop_1(colorMap);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.getOverallLegendItemsCollection = function (legendText, legendFill, legendData, showLegend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newColllection = [];\n var legend = this.maps.legendSettings;\n if (legendData.length > 0 && showLegend) {\n for (var i = 0; i < legendData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = legendData[i];\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n newColllection.push(collection[j]);\n }\n }\n else {\n newColllection.push(legendData[i]);\n }\n newColllection['_isVisible'] = true;\n }\n var isDuplicate = this.maps.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollection, legendText, legendFill) : false;\n if (!isDuplicate) {\n this.legendCollection.push({\n text: legendText, fill: legendFill, data: newColllection, opacity: legend.opacity,\n borderColor: legend.shapeBorder.color, borderWidth: legend.shapeBorder.width\n });\n }\n else {\n for (var i = 0; i < this.legendCollection.length; i++) {\n if (this.legendCollection[i]['text'] === legendText && this.legendCollection[i]['fill'] === legendFill) {\n this.legendCollection[i].data.push(newColllection[0]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Legend.prototype.removeDuplicates = function (legendCollection, text, legendFill) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if ((legendCollection[i]['text'] === text || legendCollection[i]['text'] === '') && legendCollection[i]['fill'] === legendFill) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n Legend.prototype.getEqualLegendCollection = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill = this.maps.legendSettings.fill;\n var equalValues = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendText;\n var legendIndex = 0;\n var equalData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var outOfRangeValues = [];\n var outOfRange = [];\n var _loop_2 = function (colorMap) {\n if (!isNullOrUndefined(colorMap.value)) {\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value;\n equalData = [];\n var eqaulColorProcess_1 = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(dataSource, function (data, dataIndex) {\n var equalValue = ((colorValuePath.indexOf('.') > -1) ? (getValueFromObject(data, colorValuePath)) :\n (data[colorValuePath]));\n if (equalValue === colorMap.value) {\n eqaulColorProcess_1 = true;\n if (equalValues.indexOf(equalValue) === -1) {\n equalValues.push(equalValue);\n }\n equalData.push(_this.getLegendData(layerIndex, dataIndex, data, dataPath, layerData, propertyPath, equalValue));\n }\n else {\n if (outOfRangeValues.indexOf(equalValue) === -1) {\n outOfRangeValues.push(equalValue);\n }\n }\n });\n for (var x = 0; x < equalValues.length; x++) {\n for (var y = 0; y < outOfRangeValues.length; y++) {\n if (equalValues[x] === outOfRangeValues[y]) {\n var equalIndex = outOfRangeValues.indexOf(equalValues[x]);\n outOfRangeValues.splice(equalIndex, 1);\n }\n }\n }\n if (!eqaulColorProcess_1) {\n equalData.push({\n layerIndex: layerIndex, shapeIndex: null, dataIndex: null,\n name: null, value: null\n });\n }\n var legendFill = (isNullOrUndefined(fill)) ? Object.prototype.toString.call(colorMap.color) === '[object Array]'\n ? colorMap.color[0] : colorMap.color : fill;\n legendIndex++;\n this_2.getOverallLegendItemsCollection(legendText, legendFill, equalData, colorMap.showLegend);\n }\n else if (isNullOrUndefined(colorMap.minOpacity) && isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value)\n && isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to) && !isNullOrUndefined(colorMap.color)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(dataSource, function (data, dataIndex) {\n var equalValue = ((colorValuePath.indexOf('.') > -1) ? (getValueFromObject(data, colorValuePath)) :\n (data[colorValuePath]));\n for (var k = 0; k < outOfRangeValues.length; k++) {\n if (equalValue === outOfRangeValues[k]) {\n outOfRange.push(_this.getLegendData(layerIndex, dataIndex, data, dataPath, layerData, propertyPath, equalValue));\n }\n }\n });\n if (outOfRangeValues.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var range_1 = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(dataSource, function (data, dataIndex) {\n range_1 = false;\n var rangeValue = data[colorValuePath];\n for (var z = 0; z < colorMapping.length; z++) {\n if (!isNullOrUndefined(rangeValue) && !isNaN(rangeValue)) {\n if (rangeValue >= colorMapping[z].from && rangeValue <= colorMapping[z].to) {\n range_1 = true;\n }\n }\n else if (!range_1) {\n range_1 = false;\n }\n }\n if (!range_1) {\n outOfRange.push(_this.getLegendData(layerIndex, dataIndex, data, dataPath, layerData, propertyPath, rangeValue));\n }\n });\n }\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n var outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n var legendOutFill = outfill;\n legendIndex++;\n this_2.getOverallLegendItemsCollection(legendText, legendOutFill, outOfRange, colorMap.showLegend);\n }\n };\n var this_2 = this;\n for (var _i = 0, colorMapping_2 = colorMapping; _i < colorMapping_2.length; _i++) {\n var colorMap = colorMapping_2[_i];\n _loop_2(colorMap);\n }\n };\n Legend.prototype.getDataLegendCollection = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerIndex, layerData, colorMapping, dataSource, dataPath, colorValuePath, propertyPath) {\n var _this = this;\n var legendText;\n var fill = this.maps.legendSettings.fill;\n var valuePath = this.maps.legendSettings.valuePath;\n if (!isNullOrUndefined(colorValuePath) && !isNullOrUndefined(dataSource)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(dataSource, function (data, dataIndex) {\n var showLegend = isNullOrUndefined(_this.maps.legendSettings.showLegendPath) ?\n true : isNullOrUndefined(data[_this.maps.legendSettings.showLegendPath]) ?\n false : data[_this.maps.legendSettings.showLegendPath];\n var dataValue = ((colorValuePath.indexOf('.') > -1) ? (getValueFromObject(data, colorValuePath)) :\n (data[colorValuePath]));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = [];\n var legendFill = (isNullOrUndefined(fill)) ? dataValue : fill;\n if (!isNullOrUndefined(dataValue) && colorMapping.length === 0) {\n legendText = !isNullOrUndefined(data[valuePath]) ? ((valuePath.indexOf('.') > -1) ?\n getValueFromObject(data, valuePath) : data[valuePath]) : ((dataPath.indexOf('.') > -1) ?\n getValueFromObject(data, dataPath) : data[dataPath]);\n newData.push(_this.getLegendData(layerIndex, dataIndex, data, dataPath, layerData, propertyPath, dataValue));\n }\n _this.getOverallLegendItemsCollection(legendText, legendFill, newData, showLegend);\n });\n }\n };\n Legend.prototype.interactiveHandler = function (e) {\n var target = e.target;\n var legend = this.maps.legendSettings;\n var id = this.maps.element.id + '_Interactive_Legend';\n var hoverId = legend.type === 'Layers' ? '_shapeIndex_' : (legend.type === 'Markers') ? '_MarkerIndex_' :\n '_BubbleIndex_';\n if (target.id.indexOf(hoverId) > 1) {\n var layerIndex = parseFloat(target.id.split('_LayerIndex_')[1].split('_')[0]);\n var dataIndex = parseFloat(target.id.split(/_dataIndex_/i)[1].split('_')[0]);\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n if (!(isNullOrUndefined(querySelector(id, this.maps.element.id)))) {\n remove(querySelector(id, this.maps.element.id));\n }\n var layer = this.maps.layersCollection[layerIndex];\n var markerVisible = (legend.type === 'Layers' ? layer.visible :\n legend.type === 'Markers' ? layer.markerSettings[parseFloat(target.id.split('_MarkerIndex_')[1].split('_')[0])].visible :\n (this.maps.getBubbleVisible(this.maps.layersCollection[layerIndex])));\n if (legend.visible && this.legendRenderingCollections.length > 0\n && legend.mode === 'Interactive' && markerVisible) {\n var svgRect = this.maps.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.legendCollection[i];\n var legendElement = querySelector(this.maps.element.id + '_Legend_Index_' + i, this.maps.element.id);\n var legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['data'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = currentData['data'];\n for (var j = 0; j < data.length; j++) {\n if (dataIndex === data[j]['dataIndex'] && layerIndex === data[j]['layerIndex']) {\n this.renderInteractivePointer(legend, fill, stroke, id, strokeWidth, rect);\n break;\n }\n }\n }\n }\n }\n }\n else {\n if (!(isNullOrUndefined(querySelector(id, this.maps.element.id)))) {\n remove(querySelector(id, this.maps.element.id));\n }\n }\n };\n Legend.prototype.renderInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n rect.y = legend.position === 'Float' && this.maps.isTileMap ? rect.y - this.maps.mapAreaRect.y : rect.y;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2) - (legend.position === 'Float' && this.maps.isTileMap ? this.maps.mapAreaRect.x : 0);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2) - (legend.position === 'Float' && this.maps.isTileMap ? this.maps.mapAreaRect.x : 0);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + rect.width - (legend.position === 'Float' && this.maps.isTileMap ? this.maps.mapAreaRect.x : 0);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x - (legend.position === 'Float' && this.maps.isTileMap ? this.maps.mapAreaRect.x : 0);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, 1, '', path);\n if (legend.position === 'Float' && this.maps.isTileMap) {\n this.maps.mapLayerPanel.layerGroup.appendChild(this.maps.renderer.drawPath(pathOptions));\n }\n else {\n this.maps.svgObject.appendChild(this.maps.renderer.drawPath(pathOptions));\n }\n };\n Legend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n Legend.prototype.addEventListener = function () {\n if (this.maps.isDestroyed) {\n return;\n }\n this.maps.on(Browser.touchMoveEvent, this.interactiveHandler, this);\n this.maps.on(Browser.touchEndEvent, this.interactiveHandler, this);\n this.maps.on(click, this.legendClick, this);\n };\n Legend.prototype.markerToggleSelection = function (mapElement, layerIndex, markerIndex, legendIndex) {\n mapElement.setAttribute('fill', this.legendCollection[legendIndex]['fill']);\n mapElement.setAttribute('stroke', this.maps.layers[layerIndex].markerSettings[markerIndex].border.color);\n mapElement.setAttribute('fill-opacity', (this.maps.layers[layerIndex].markerSettings[markerIndex].opacity).toString());\n mapElement.setAttribute('stroke-width', (this.maps.layers[layerIndex].markerSettings[markerIndex].border.width).toString());\n mapElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[layerIndex].markerSettings[markerIndex].border.opacity) ?\n this.maps.layers[layerIndex].markerSettings[markerIndex].opacity :\n this.maps.layers[layerIndex].markerSettings[markerIndex].border.opacity).toString());\n };\n Legend.prototype.bubbleToggleSelection = function (mapElement, layerIndex, bubbleIndex, legendIndex) {\n mapElement.setAttribute('fill', this.legendCollection[legendIndex]['fill']);\n mapElement.setAttribute('stroke', this.maps.layers[layerIndex].bubbleSettings[bubbleIndex].border.color);\n mapElement.setAttribute('fill-opacity', (this.maps.layers[layerIndex].bubbleSettings[bubbleIndex].opacity).toString());\n mapElement.setAttribute('stroke-width', (this.maps.layers[layerIndex].bubbleSettings[bubbleIndex].border.width).toString());\n mapElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[layerIndex].bubbleSettings[bubbleIndex].border.opacity) ?\n this.maps.layers[layerIndex].bubbleSettings[bubbleIndex].opacity :\n this.maps.layers[layerIndex].bubbleSettings[bubbleIndex].border.opacity).toString());\n };\n Legend.prototype.legendClick = function (targetEle) {\n var legendShapeId;\n var legendTextId;\n var legendToggleFill = this.maps.legendSettings.toggleLegendSettings.fill;\n var legendToggleOpacity = this.maps.legendSettings.toggleLegendSettings.opacity;\n var legendToggleBorderColor = this.maps.legendSettings.toggleLegendSettings.border.color;\n var legendToggleBorderWidth = this.maps.legendSettings.toggleLegendSettings.border.width;\n var legendToggleBorderOpacity = isNullOrUndefined(this.maps.legendSettings.toggleLegendSettings.border.opacity) ?\n this.maps.legendSettings.toggleLegendSettings.opacity : this.maps.legendSettings.toggleLegendSettings.border.opacity;\n if (!isNullOrUndefined(targetEle.parentNode) && targetEle.parentNode['id'].indexOf(this.maps.element.id + '_Legend_Index_') > -1) {\n var mapElement = void 0;\n var legendIndex = parseFloat(targetEle.parentElement.id.substr((this.maps.element.id + '_Legend_Index_').length));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var selectedItem = this.legendCollection[legendIndex]['data'];\n var isVisible = selectedItem['_isVisible'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shape = void 0;\n if (this.maps.legendSettings.toggleLegendSettings.enable && (this.maps.legendSettings.type === 'Bubbles' || this.maps.legendSettings.type === 'Markers')) {\n for (var k = 0; k < this.maps.layers.length; k++) {\n for (var j = 0; j < (this.maps.legendSettings.type === 'Bubbles' ? this.maps.layers[k].bubbleSettings.length : this.maps.layers[k].markerSettings.length); j++) {\n for (var i = 0; i < selectedItem.length; i++) {\n shape = this.legendCollection[legendIndex]['data'][i];\n mapElement = this.maps.legendSettings.type === 'Bubbles' ? querySelector(this.maps.element.id + '_LayerIndex_' + shape['layerIndex'] +\n '_BubbleIndex_' + j + '_dataIndex_' + shape['dataIndex'], this.maps.element.id) : querySelector(this.maps.element.id + '_LayerIndex_' + shape['layerIndex'] +\n '_MarkerIndex_' + shape['markerIndex'] + '_dataIndex_' + shape['dataIndex'], this.maps.element.id);\n if (!isNullOrUndefined(shape['shape']) && shape['shape'] === 'Balloon') {\n mapElement = this.maps.legendSettings.type === 'Bubbles' ? querySelector(this.maps.element.id + '_LayerIndex_' + shape['layerIndex'] +\n '_BubbleIndex_' + j + '_dataIndex_' + shape['dataIndex'] + '_Group', this.maps.element.id) : querySelector(this.maps.element.id + '_LayerIndex_' + shape['layerIndex'] +\n '_MarkerIndex_' + shape['markerIndex'] + '_dataIndex_' + shape['dataIndex'] + '_Group', this.maps.element.id);\n mapElement = mapElement.children[0];\n }\n if (isVisible && mapElement !== null) {\n if (this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n mapElement.setAttribute('fill', this.maps.layers[k].shapeSettings.fill);\n mapElement.setAttribute('stroke', this.maps.layers[k].shapeSettings.border.color);\n mapElement.setAttribute('fill-opacity', (this.maps.layers[k].shapeSettings.opacity).toString());\n mapElement.setAttribute('stroke-width', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 : this.maps.layers[k].shapeSettings.border.width).toString());\n mapElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ?\n this.maps.layers[k].shapeSettings.opacity :\n this.maps.layers[k].shapeSettings.border.opacity).toString());\n }\n else {\n mapElement.setAttribute('fill', legendToggleFill);\n mapElement.setAttribute('fill-opacity', (legendToggleOpacity).toString());\n mapElement.setAttribute('stroke', legendToggleBorderColor);\n mapElement.setAttribute('stroke-width', (legendToggleBorderWidth).toString());\n mapElement.setAttribute('stroke-opacity', (legendToggleBorderOpacity).toString());\n }\n if (targetEle !== null) {\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Shape_Index_' + legendIndex, this.maps.element.id);\n legendTextId = querySelector(this.maps.element.id + '_Legend_Text_Index_' + legendIndex, this.maps.element.id);\n if (!this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n this.setToggleAttributes(legendTextId, legendShapeId, legendToggleFill, legendToggleOpacity, legendToggleBorderColor, legendToggleBorderWidth, legendToggleBorderOpacity, legendToggleFill);\n }\n else {\n this.setToggleAttributes(legendTextId, legendShapeId, this.maps.layers[k].shapeSettings.fill, this.maps.layers[k].shapeSettings.opacity, this.maps.layers[k].shapeSettings.border.color, isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 : this.maps.layers[k].shapeSettings.border.width, isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ? this.maps.layers[k].shapeSettings.opacity : this.maps.layers[k].shapeSettings.border.opacity, this.maps.layers[k].shapeSettings.fill);\n }\n }\n }\n else {\n if (this.maps.legendSettings.type === 'Markers') {\n this.markerToggleSelection(mapElement, k, j, legendIndex);\n }\n else {\n this.bubbleToggleSelection(mapElement, k, j, legendIndex);\n }\n if (targetEle !== null) {\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Shape_Index_' + legendIndex, this.maps.element.id);\n legendTextId = querySelector(this.maps.element.id + '_Legend_Text_Index_' + legendIndex, this.maps.element.id);\n this.setToggleAttributes(legendTextId, legendShapeId, this.legendCollection[legendIndex]['fill'], this.legendCollection[legendIndex]['opacity'], this.legendCollection[legendIndex]['shapeBorder']['color'], this.legendCollection[legendIndex]['shapeBorder']['width'], this.legendCollection[legendIndex]['shapeBorder']['opacity'], '#757575');\n if (this.maps.legendSettings.shape === 'HorizontalLine' || this.maps.legendSettings.shape === 'VerticalLine' || this.maps.legendSettings.shape === 'Cross') {\n legendShapeId.setAttribute('stroke', this.legendCollection[legendIndex]['fill']);\n }\n }\n }\n }\n selectedItem['_isVisible'] = isVisible ? false : true;\n }\n }\n }\n if (this.maps.legendSettings.type === 'Layers' && this.maps.legendSettings.toggleLegendSettings.enable) {\n var layerElement = void 0;\n this.removeCollections(targetEle, legendIndex);\n var toggledLegendIdIndex = this.maps.toggledLegendId.indexOf(legendIndex);\n if (toggledLegendIdIndex !== -1) {\n isVisible = false;\n }\n for (var j = 0; j < this.maps.layers.length; j++) {\n for (var i = 0; i < selectedItem.length; i++) {\n shape = this.legendCollection[legendIndex]['data'][i];\n layerElement = querySelector(this.maps.element.id + '_LayerIndex_' + shape['layerIndex'] +\n '_shapeIndex_' + shape['shapeIndex'] + '_dataIndex_' + shape['dataIndex'], this.maps.element.id);\n if (layerElement !== null) {\n var toggledShapeIdIndex = this.maps.toggledShapeElementId.indexOf(layerElement.id);\n if (isVisible) {\n if (i === 0) {\n this.maps.toggledLegendId.push(legendIndex);\n }\n if (toggledShapeIdIndex === -1) {\n this.maps.toggledShapeElementId.push(layerElement.id);\n }\n if (this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n layerElement.setAttribute('fill', this.maps.layers[j].shapeSettings.fill);\n layerElement.setAttribute('fill-opacity', (this.maps.layers[j].shapeSettings.opacity).toString());\n layerElement.setAttribute('stroke', this.maps.layers[j].shapeSettings.border.color);\n layerElement.setAttribute('stroke-width', (isNullOrUndefined(this.maps.layers[j].shapeSettings.border.width) ? 0 : this.maps.layers[j].shapeSettings.border.width).toString());\n layerElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[j].shapeSettings.border.opacity) ?\n this.maps.layers[j].shapeSettings.opacity :\n this.maps.layers[j].shapeSettings.border.opacity).toString());\n }\n else {\n layerElement.setAttribute('fill', legendToggleFill);\n layerElement.setAttribute('fill-opacity', (legendToggleOpacity).toString());\n layerElement.setAttribute('stroke', legendToggleBorderColor);\n layerElement.setAttribute('stroke-width', (legendToggleBorderWidth).toString());\n layerElement.setAttribute('stroke-opacity', (legendToggleBorderOpacity).toString());\n }\n if (targetEle !== null) {\n legendTextId = querySelector(this.maps.element.id + '_Legend_Text_Index_' + legendIndex, this.maps.element.id);\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Shape_Index_' + legendIndex, this.maps.element.id);\n if (!this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n this.setToggleAttributes(legendTextId, legendShapeId, legendToggleFill, legendToggleOpacity, legendToggleBorderColor, legendToggleBorderWidth, legendToggleBorderOpacity, legendToggleFill);\n }\n else {\n this.setToggleAttributes(legendTextId, legendShapeId, this.maps.layers[j].shapeSettings.fill, this.maps.layers[j].shapeSettings.opacity, this.maps.layers[j].shapeSettings.border.color, isNullOrUndefined(this.maps.layers[j].shapeSettings.border.width) ? 0 : this.maps.layers[j].shapeSettings.border.width, isNullOrUndefined(this.maps.layers[j].shapeSettings.border.opacity) ? this.maps.layers[j].shapeSettings.opacity : this.maps.layers[j].shapeSettings.border.opacity, this.maps.layers[j].shapeSettings.fill);\n }\n }\n }\n else {\n if (toggledLegendIdIndex !== -1 && i === 0) {\n this.maps.toggledLegendId.splice(toggledLegendIdIndex, 1);\n }\n if (toggledShapeIdIndex !== -1) {\n this.maps.toggledShapeElementId.splice(toggledShapeIdIndex, 1);\n }\n layerElement.setAttribute('fill', this.legendCollection[legendIndex]['fill']);\n layerElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[j].shapeSettings.border.opacity) ?\n this.maps.layers[j].shapeSettings.opacity :\n this.maps.layers[j].shapeSettings.border.opacity).toString());\n layerElement.setAttribute('stroke-width', (isNullOrUndefined(this.maps.layers[j].shapeSettings.border.width) ? 0 : this.maps.layers[j].shapeSettings.border.width).toString());\n layerElement.setAttribute('fill-opacity', (this.maps.layers[j].shapeSettings.opacity).toString());\n layerElement.setAttribute('stroke', this.maps.layers[j].shapeSettings.border.color);\n if (targetEle !== null) {\n legendTextId = querySelector(this.maps.element.id + '_Legend_Text_Index_' + legendIndex, this.maps.element.id);\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Shape_Index_' + legendIndex, this.maps.element.id);\n this.setToggleAttributes(legendTextId, legendShapeId, this.legendCollection[legendIndex]['fill'], this.legendCollection[legendIndex]['opacity'], this.legendCollection[legendIndex]['shapeBorder']['color'], this.legendCollection[legendIndex]['shapeBorder']['width'], this.legendCollection[legendIndex]['shapeBorder']['opacity'], '#757575');\n }\n }\n }\n }\n }\n selectedItem['_isVisible'] = isVisible ? false : true;\n }\n }\n else if (!isNullOrUndefined(targetEle.id) && (targetEle.id.indexOf(this.maps.element.id + '_Legend_Shape_Index') > -1 ||\n targetEle.id.indexOf(this.maps.element.id + '_Legend_Index') !== -1) && this.maps.legendSettings.visible &&\n targetEle.id.indexOf('_Text') === -1) {\n var LegendInteractive = void 0;\n var legendIndex = parseFloat(targetEle.id.split(this.maps.element.id + '_Legend_Index_')[1]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mapdata = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var selectedItem = this.legendCollection[legendIndex]['data'];\n var isVisible = selectedItem['_isVisible'];\n if ((this.maps.legendSettings.type === 'Bubbles' || this.maps.legendSettings.type === 'Markers') && this.maps.legendSettings.toggleLegendSettings.enable) {\n for (var k = 0; k < this.maps.layers.length; k++) {\n for (var j = 0; j < (this.maps.legendSettings.type === 'Bubbles' ? this.maps.layers[k].bubbleSettings.length : this.maps.layers[k].markerSettings.length); j++) {\n for (var i = 0; i < selectedItem.length; i++) {\n mapdata = this.legendCollection[legendIndex]['data'][i];\n LegendInteractive = this.maps.legendSettings.type === 'Bubbles' ? querySelector(this.maps.element.id + '_LayerIndex_' + mapdata['layerIndex'] +\n '_BubbleIndex_' + j + '_dataIndex_' + mapdata['dataIndex'], this.maps.element.id) : querySelector(this.maps.element.id + '_LayerIndex_' + mapdata['layerIndex'] +\n '_MarkerIndex_' + j + '_dataIndex_' + mapdata['dataIndex'], this.maps.element.id);\n if (!isNullOrUndefined(mapdata['shape']) && mapdata['shape'] === 'Balloon') {\n LegendInteractive = this.maps.legendSettings.type === 'Bubbles' ? querySelector(this.maps.element.id + '_LayerIndex_' + mapdata['layerIndex'] +\n '_BubbleIndex_' + j + '_dataIndex_' + mapdata['dataIndex'] + '_Group', this.maps.element.id) : querySelector(this.maps.element.id + '_LayerIndex_' + mapdata['layerIndex'] +\n '_MarkerIndex_' + j + '_dataIndex_' + mapdata['dataIndex'] + '_Group', this.maps.element.id);\n LegendInteractive = LegendInteractive.children[0];\n }\n if (isVisible && LegendInteractive !== null) {\n if (this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n LegendInteractive.setAttribute('fill', this.maps.layers[k].shapeSettings.fill);\n LegendInteractive.setAttribute('stroke', this.maps.layers[k].shapeSettings.border.color);\n LegendInteractive.setAttribute('stroke-width', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 : this.maps.layers[k].shapeSettings.border.width).toString());\n LegendInteractive.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ?\n this.maps.layers[k].shapeSettings.opacity :\n this.maps.layers[k].shapeSettings.border.opacity).toString());\n LegendInteractive.setAttribute('fill-opacity', (this.maps.layers[k].shapeSettings.opacity).toString());\n }\n else {\n LegendInteractive.setAttribute('fill', legendToggleFill);\n LegendInteractive.setAttribute('fill-opacity', (legendToggleOpacity).toString());\n LegendInteractive.setAttribute('stroke', legendToggleBorderColor);\n LegendInteractive.setAttribute('stroke-width', (legendToggleBorderWidth).toString());\n LegendInteractive.setAttribute('stroke-opacity', (legendToggleBorderOpacity).toString());\n }\n if (targetEle !== null) {\n legendTextId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex + '_Text', this.maps.element.id);\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex, this.maps.element.id);\n if (!this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n this.setToggleAttributes(legendTextId, legendShapeId, legendToggleFill, legendToggleOpacity, legendToggleBorderColor, legendToggleBorderWidth, legendToggleBorderOpacity, legendToggleFill);\n }\n else {\n this.setToggleAttributes(legendTextId, legendShapeId, this.maps.layers[k].shapeSettings.fill, this.maps.layers[k].shapeSettings.opacity, this.maps.layers[k].shapeSettings.border.color, (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 : this.maps.layers[k].shapeSettings.border.width), (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ? this.maps.layers[k].shapeSettings.opacity : this.maps.layers[k].shapeSettings.border.opacity), this.maps.layers[k].shapeSettings.fill);\n }\n }\n }\n else {\n if (this.maps.legendSettings.type === 'Markers') {\n this.markerToggleSelection(LegendInteractive, k, j, legendIndex);\n }\n else {\n this.bubbleToggleSelection(LegendInteractive, k, j, legendIndex);\n }\n if (targetEle !== null) {\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex, this.maps.element.id);\n legendShapeId.setAttribute('fill', this.legendCollection[legendIndex]['fill']);\n legendShapeId.setAttribute('fill-opacity', this.legendCollection[legendIndex]['opacity']);\n legendShapeId.setAttribute('stroke', this.legendCollection[legendIndex]['shapeBorder']['color']);\n legendShapeId.setAttribute('stroke-width', this.legendCollection[legendIndex]['shapeBorder']['width']);\n legendShapeId.setAttribute('stroke-opacity', this.legendCollection[legendIndex]['shapeBorder']['opacity']);\n legendTextId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex + '_Text', this.maps.element.id);\n legendTextId.setAttribute('fill', '#757575');\n }\n }\n }\n selectedItem['_isVisible'] = isVisible ? false : true;\n }\n }\n }\n if (this.maps.legendSettings.type === 'Layers' && this.maps.legendSettings.toggleLegendSettings.enable) {\n var mapLegendElement = void 0;\n this.removeCollections(targetEle, legendIndex);\n var toggleLegendIdIndex = this.maps.toggledLegendId.indexOf(legendIndex);\n if (toggleLegendIdIndex !== -1) {\n isVisible = false;\n }\n for (var k = 0; k < this.maps.layers.length; k++) {\n for (var i = 0; i < selectedItem.length; i++) {\n mapdata = this.legendCollection[legendIndex]['data'][i];\n mapLegendElement = querySelector(this.maps.element.id + '_LayerIndex_' + mapdata['layerIndex'] +\n '_shapeIndex_' + mapdata['shapeIndex'] + '_dataIndex_' + mapdata['dataIndex'], this.maps.element.id);\n if (mapLegendElement !== null) {\n var toggledShapeIdIndex = this.maps.toggledShapeElementId.indexOf(mapLegendElement.id);\n if (isVisible) {\n if (i === 0) {\n this.maps.toggledLegendId.push(legendIndex);\n }\n if (toggledShapeIdIndex === -1) {\n this.maps.toggledShapeElementId.push(mapLegendElement.id);\n }\n if (this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n mapLegendElement.setAttribute('fill', this.maps.layers[0].shapeSettings.fill);\n mapLegendElement.setAttribute('stroke', this.maps.layers[0].shapeSettings.border.color);\n mapLegendElement.setAttribute('fill-opacity', (this.maps.layers[k].shapeSettings.opacity).toString());\n mapLegendElement.setAttribute('stroke-width', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 : this.maps.layers[k].shapeSettings.border.width).toString());\n mapLegendElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ?\n this.maps.layers[k].shapeSettings.opacity :\n this.maps.layers[k].shapeSettings.border.opacity).toString());\n }\n else {\n mapLegendElement.setAttribute('fill', legendToggleFill);\n mapLegendElement.setAttribute('fill-opacity', (legendToggleOpacity).toString());\n mapLegendElement.setAttribute('stroke', legendToggleBorderColor);\n mapLegendElement.setAttribute('stroke-width', (legendToggleBorderWidth).toString());\n mapLegendElement.setAttribute('stroke-opacity', (legendToggleBorderOpacity).toString());\n }\n if (targetEle !== null) {\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex, this.maps.element.id);\n legendTextId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex + '_Text', this.maps.element.id);\n if (!this.maps.legendSettings.toggleLegendSettings.applyShapeSettings) {\n this.setToggleAttributes(legendTextId, legendShapeId, legendToggleFill, legendToggleOpacity, legendToggleBorderColor, legendToggleBorderWidth, legendToggleBorderOpacity, legendToggleFill);\n }\n else {\n this.setToggleAttributes(legendTextId, legendShapeId, this.maps.layers[0].shapeSettings.fill, this.maps.layers[k].shapeSettings.opacity, this.maps.layers[0].shapeSettings.border.color, isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 : this.maps.layers[k].shapeSettings.border.width, isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ? this.maps.layers[k].shapeSettings.opacity : this.maps.layers[k].shapeSettings.border.opacity, this.maps.layers[0].shapeSettings.fill);\n }\n }\n }\n else {\n if (toggleLegendIdIndex !== -1 && i === 0) {\n this.maps.toggledLegendId.splice(toggleLegendIdIndex, 1);\n }\n if (toggledShapeIdIndex !== -1) {\n this.maps.toggledShapeElementId.splice(toggledShapeIdIndex, 1);\n }\n mapLegendElement.setAttribute('fill-opacity', (this.maps.layers[k].shapeSettings.opacity).toString());\n mapLegendElement.setAttribute('stroke-width', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.width) ? 0 :\n this.maps.layers[k].shapeSettings.border.width).toString());\n mapLegendElement.setAttribute('stroke', this.maps.layers[0].shapeSettings.border.color);\n mapLegendElement.setAttribute('stroke-opacity', (isNullOrUndefined(this.maps.layers[k].shapeSettings.border.opacity) ?\n this.maps.layers[k].shapeSettings.opacity :\n this.maps.layers[k].shapeSettings.border.opacity).toString());\n mapLegendElement.setAttribute('fill', this.legendCollection[legendIndex]['fill']);\n if (targetEle !== null) {\n legendTextId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex + '_Text', this.maps.element.id);\n legendShapeId = querySelector(this.maps.element.id + '_Legend_Index_' + legendIndex, this.maps.element.id);\n this.setToggleAttributes(legendTextId, legendShapeId, this.legendCollection[legendIndex]['fill'], this.legendCollection[legendIndex]['opacity'], this.legendCollection[legendIndex]['shapeBorder']['color'], this.legendCollection[legendIndex]['shapeBorder']['width'], this.legendCollection[legendIndex]['shapeBorder']['opacity'], '#757575');\n }\n }\n }\n }\n }\n selectedItem['_isVisible'] = isVisible ? false : true;\n }\n }\n };\n Legend.prototype.removeCollections = function (targetEle, legendIndex) {\n this.removeLegendSelectionCollection(targetEle);\n var legendSelectionIndex = this.getIndexofLegend(this.maps.legendSelectionCollection, targetEle);\n if (legendSelectionIndex !== -1) {\n this.maps.legendSelectionCollection.splice(legendSelectionIndex, 1);\n }\n var legendHighlightIndex = this.getIndexofLegend(this.legendHighlightCollection, targetEle);\n if (legendHighlightIndex !== -1) {\n this.legendHighlightCollection.splice(legendSelectionIndex, 1);\n }\n var shapeHighlightIndex = this.getIndexofLegend(this.shapeHighlightCollection, targetEle);\n if (shapeHighlightIndex !== -1) {\n this.shapeHighlightCollection.splice(shapeHighlightIndex, 1);\n }\n var selectedIndex = this.maps.selectedLegendElementId.indexOf(legendIndex);\n if (selectedIndex !== -1) {\n this.maps.selectedLegendElementId.splice(selectedIndex, 1);\n }\n };\n Legend.prototype.removeEventListener = function () {\n if (this.maps.isDestroyed) {\n return;\n }\n this.maps.off(Browser.touchMoveEvent, this.interactiveHandler);\n this.maps.off(Browser.touchEndEvent, this.interactiveHandler);\n this.maps.off(click, this.legendClick);\n };\n Legend.prototype.getLegendData = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerIndex, dataIndex, data, dataPath, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layerData, shapePropertyPath, value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendData = [];\n if (Object.prototype.toString.call(layerData) === '[object Array]') {\n for (var i = 0; i < layerData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var shapeData = layerData[i];\n var dataPathValue = (dataPath.indexOf('.') > -1) ? getValueFromObject(data, dataPath) : data[dataPath];\n var shapePath = checkPropertyPath(data[dataPath], shapePropertyPath, shapeData['properties']);\n var dataPathValueCase = !isNullOrUndefined(dataPathValue) &&\n typeof dataPathValue === 'string' ? dataPathValue.toLowerCase() : dataPathValue;\n var shapeDataValueCase = !isNullOrUndefined(shapeData['properties'][shapePath])\n && isNaN(shapeData['properties'][shapePath]) ?\n shapeData['properties'][shapePath].toLowerCase() : shapeData['properties'][shapePath];\n if (shapeDataValueCase === dataPathValueCase) {\n if (shapeData['geometry']['type'] !== 'MultiPoint') {\n legendData.push({\n layerIndex: layerIndex, shapeIndex: i, dataIndex: dataIndex,\n name: data[dataPath], value: value, pointIndex: -1\n });\n }\n else {\n for (var j = 0; j < shapeData['geometry'].coordinates.length; j++) {\n legendData.push({\n layerIndex: layerIndex, shapeIndex: i, dataIndex: dataIndex,\n name: data[dataPath], value: value, pointIndex: j\n });\n }\n }\n }\n }\n }\n return legendData;\n };\n Legend.prototype.setToggleAttributes = function (textElement, shapeElement, fillColor, fillOpacity, borderColor, borderWidth, borderOpacity, textColor) {\n textElement.setAttribute('fill', textColor);\n shapeElement.setAttribute('fill', fillColor);\n shapeElement.setAttribute('fill-opacity', (fillOpacity).toString());\n shapeElement.setAttribute('stroke', borderColor);\n shapeElement.setAttribute('stroke-width', (borderWidth).toString());\n if (!isNullOrUndefined(borderOpacity)) {\n shapeElement.setAttribute('stroke-opacity', (borderOpacity).toString());\n }\n };\n Legend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && typeof (colorMap.color) === 'object') {\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.maps.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex + '_' + this.maps.element.id);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + '_' + this.maps.element.id + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.legendCollection = [];\n this.legendRenderingCollections = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.initialMapAreaRect = null;\n this.legendTotalRect = null;\n this.totalPages = [];\n this.legendItemRect = null;\n this.legendGroup = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.shapePreviousColor = [];\n this.selectedNonLegendShapes = [];\n this.legendLinearGradient = null;\n this.currentLayer = null;\n this.defsElement = null;\n this.legendElement = [];\n this.oldShapeElement = null;\n this.removeEventListener();\n this.maps = null;\n };\n return Legend;\n}());\nexport { Legend };\n","import { markerRendering, convertTileLatLongToPoint, MapLocation, markerDragStart } from '../index';\nimport { markerClick, markerMouseMove, markerClusterClick, markerClusterMouseMove } from '../index';\nimport { isNullOrUndefined, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { getTranslate, convertGeoToPoint, clusterTemplate, marker, markerTemplate, getZoomTranslate } from '../utils/helper';\nimport { getElementByID, mergeSeparateCluster, clusterSeparate, removeElement, getElement, markerColorChoose, markerShapeChoose, calculateZoomLevel, compareZoomFactor, getValueFromObject } from '../utils/helper';\n/**\n * Marker class\n */\nvar Marker = /** @class */ (function () {\n function Marker(maps) {\n this.maps = maps;\n this.trackElements = [];\n this.sameMarkerData = [];\n }\n Marker.prototype.markerRender = function (maps, layerElement, layerIndex, factor, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn;\n var markerCount = 0;\n var nullCount = 0;\n var markerTemplateCount = 0;\n maps.translateType = 'marker';\n var currentLayer = maps.layersCollection[layerIndex];\n this.markerSVGObject = maps.renderer.createGroup({\n id: maps.element.id + '_Markers_Group',\n class: 'GroupElement'\n });\n this.markerSVGObject.style.pointerEvents = 'auto';\n var markerTemplateEle = createElement('div', {\n id: maps.element.id + '_LayerIndex_' + layerIndex + '_Markers_Template_Group',\n className: maps.element.id + '_template'\n });\n markerTemplateEle.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + maps.mapAreaRect.y + 'px;' +\n 'left:' + maps.mapAreaRect.x + 'px;' +\n 'height:' + maps.mapAreaRect.height + 'px;' +\n 'width:' + maps.mapAreaRect.width + 'px;';\n var allowAnimation = (currentLayer.animationDuration !== 0 || animationMode === 'Enable') || isNullOrUndefined(maps.zoomModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var translatePoint;\n if (!maps.isTileMap) {\n translatePoint = !isNullOrUndefined(maps.zoomModule) && maps.zoomSettings.zoomFactor > 1 ?\n getZoomTranslate(maps, currentLayer, allowAnimation) :\n getTranslate(maps, currentLayer, allowAnimation);\n }\n var _loop_1 = function (markerIndex) {\n var markerSettings = currentLayer.markerSettings[markerIndex];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markerData = markerSettings.dataSource;\n var _loop_2 = function (dataIndex) {\n var data = markerData[dataIndex];\n maps.markerNullCount = markerIndex > 0 && dataIndex === 0 ? 0 : maps.markerNullCount;\n var eventArgs = {\n cancel: false, name: markerRendering, fill: markerSettings.fill, height: markerSettings.height,\n width: markerSettings.width, imageUrl: markerSettings.imageUrl, shape: markerSettings.shape,\n template: markerSettings.template, data: data, maps: maps, marker: markerSettings,\n border: markerSettings.border, colorValuePath: markerSettings.colorValuePath,\n shapeValuePath: markerSettings.shapeValuePath, imageUrlValuePath: markerSettings.imageUrlValuePath\n };\n maps.trigger('markerRendering', eventArgs, function (MarkerArgs) {\n eventArgs = markerColorChoose(eventArgs, data);\n eventArgs = markerShapeChoose(eventArgs, data);\n var lng = (!isNullOrUndefined(markerSettings.longitudeValuePath)) ?\n Number(getValueFromObject(data, markerSettings.longitudeValuePath)) : !isNullOrUndefined(data['longitude']) ?\n parseFloat(data['longitude']) : !isNullOrUndefined(data['Longitude']) ? parseFloat(data['Longitude']) : null;\n var lat = (!isNullOrUndefined(markerSettings.latitudeValuePath)) ?\n Number(getValueFromObject(data, markerSettings.latitudeValuePath)) : !isNullOrUndefined(data['latitude']) ?\n parseFloat(data['latitude']) : !isNullOrUndefined(data['Latitude']) ? parseFloat(data['Latitude']) : null;\n var offset = markerSettings.offset;\n if (!eventArgs.cancel && markerSettings.visible && !isNullOrUndefined(lng) && !isNullOrUndefined(lat)) {\n var markerID = maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_'\n + markerIndex + '_dataIndex_' + dataIndex;\n var location_1 = (maps.isTileMap) ? convertTileLatLongToPoint(new MapLocation(lng, lat), factor, maps.tileTranslatePoint, true) : convertGeoToPoint(lat, lng, factor, currentLayer, maps);\n if (maps.isTileMap) {\n translatePoint = (currentLayer.type === 'SubLayer' && isNullOrUndefined(maps.zoomModule)) ? location_1 = convertTileLatLongToPoint(new MapLocation(lng, lat), maps.tileZoomLevel, maps.tileTranslatePoint, true) : new Object();\n }\n var scale = type === 'AddMarker' ? maps.scale : translatePoint['scale'];\n var transPoint = type === 'AddMarker' ? maps.translatePoint : translatePoint['location'];\n if (eventArgs.template && (!isNaN(location_1.x) && !isNaN(location_1.y))) {\n markerTemplateCount++;\n markerTemplate(eventArgs, templateFn, markerID, data, markerIndex, markerTemplateEle, location_1, transPoint, scale, offset, maps);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n maps.renderReactTemplates();\n }\n else if (!eventArgs.template && (!isNaN(location_1.x) && !isNaN(location_1.y))) {\n markerCount++;\n marker(eventArgs, markerSettings, markerData, dataIndex, location_1, transPoint, markerID, offset, scale, maps, _this.markerSVGObject);\n }\n }\n nullCount += (!isNaN(lat) && !isNaN(lng)) ? 0 : 1;\n markerTemplateCount += (eventArgs.cancel) ? 1 : 0;\n markerCount += (eventArgs.cancel) ? 1 : 0;\n maps.markerNullCount = (isNullOrUndefined(lng) || isNullOrUndefined(lat)) ?\n maps.markerNullCount + 1 : maps.markerNullCount;\n var markerDataLength = markerData.length - maps.markerNullCount;\n var isMarkersClustered = false;\n if (_this.markerSVGObject.childElementCount === (markerDataLength - markerTemplateCount - nullCount) && (type !== 'Template')) {\n layerElement.appendChild(_this.markerSVGObject);\n if (currentLayer.markerClusterSettings.allowClustering) {\n maps.svgObject.appendChild(_this.markerSVGObject);\n maps.element.appendChild(maps.svgObject);\n if ((currentLayer.layerType === 'OSM' || (currentLayer.urlTemplate.indexOf('openstreetmap') !== -1 && isNullOrUndefined(currentLayer.shapeData)))\n && maps.zoomSettings.enable) {\n isMarkersClustered = clusterTemplate(currentLayer, _this.markerSVGObject, maps, layerIndex, _this.markerSVGObject, layerElement, true, false);\n layerElement.appendChild(_this.markerSVGObject);\n }\n else {\n isMarkersClustered = clusterTemplate(currentLayer, _this.markerSVGObject, maps, layerIndex, _this.markerSVGObject, layerElement, true, false);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n maps.renderReactTemplates();\n }\n }\n if (markerTemplateEle.childElementCount === (markerDataLength - markerCount - nullCount) && getElementByID(maps.element.id + '_Secondary_Element')) {\n getElementByID(maps.element.id + '_Secondary_Element').appendChild(markerTemplateEle);\n if (maps.checkInitialRender) {\n if (currentLayer.markerClusterSettings.allowClustering && !isMarkersClustered) {\n clusterTemplate(currentLayer, markerTemplateEle, maps, layerIndex, _this.markerSVGObject, layerElement, false, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n maps.renderReactTemplates();\n }\n }\n }\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var dataIndex = 0; dataIndex < markerData.length; dataIndex++) {\n _loop_2(dataIndex);\n }\n };\n for (var markerIndex = 0; markerIndex < currentLayer.markerSettings.length; markerIndex++) {\n _loop_1(markerIndex);\n }\n };\n /**\n * To find zoom level for individual layers like India, USA.\n *\n * @param {number} mapWidth - Specifies the width of the maps\n * @param {number} mapHeight - Specifies the height of the maps\n * @param {number} maxZoomFact - Specifies the maximum zoom factor\n * @returns {number} - Returns the scale factor\n */\n Marker.prototype.calculateIndividualLayerMarkerZoomLevel = function (mapWidth, mapHeight, maxZoomFact) {\n var latZoom;\n var lngZoom;\n var height = Math.abs(this.maps.baseMapBounds.latitude.max - this.maps.baseMapBounds.latitude.min);\n var width = Math.abs(this.maps.baseMapBounds.longitude.max - this.maps.baseMapBounds.longitude.min);\n latZoom = Math.floor(Math.log(mapHeight / height));\n latZoom = (latZoom > maxZoomFact) ? maxZoomFact : latZoom;\n lngZoom = Math.floor(Math.log(mapWidth / width));\n lngZoom = (lngZoom > maxZoomFact) ? maxZoomFact : lngZoom;\n var result = Math.min(latZoom, lngZoom);\n var scaleFactor = Math.min(result, maxZoomFact - 1);\n if (!this.maps.isTileMap) {\n compareZoomFactor(scaleFactor, this.maps);\n }\n return scaleFactor;\n };\n /**\n * To calculate center position and factor value dynamically\n *\n * @param {LayerSettings[]} layersCollection - Specifies the layer settings instance.\n * @returns {void}\n * @private\n */\n Marker.prototype.calculateZoomCenterPositionAndFactor = function (layersCollection) {\n if (!isNullOrUndefined(this.maps)) {\n if (this.maps.zoomSettings.shouldZoomInitially && this.maps.markerModule) {\n var minLong_1;\n var maxLat_1;\n var minLat_1;\n var maxLong_1;\n var latZoom = void 0;\n var lngZoom = void 0;\n var result = void 0;\n var zoomLevel = void 0;\n var centerLat = void 0;\n var centerLong = void 0;\n var maxZoomFact = this.maps.zoomSettings.maxZoom;\n var mapWidth = this.maps.mapAreaRect.width;\n var mapHeight = this.maps.mapAreaRect.height;\n this.maps.markerZoomedState = this.maps.markerZoomedState ? this.maps.markerZoomedState :\n isNullOrUndefined(this.maps.markerZoomFactor) ? !this.maps.markerZoomedState :\n this.maps.markerZoomFactor > 1 ? this.maps.markerZoomedState : !this.maps.markerZoomedState;\n this.maps.defaultState = this.maps.markerZoomedState ? !this.maps.markerZoomedState : this.maps.defaultState;\n Array.prototype.forEach.call(layersCollection, function (currentLayer) {\n var isMarker = currentLayer.markerSettings.length !== 0;\n if (isMarker) {\n Array.prototype.forEach.call(currentLayer.markerSettings, function (markerSetting) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markerData = markerSetting.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(markerData, function (data, dataIndex) {\n var latitude = !isNullOrUndefined(data['latitude']) ? parseFloat(data['latitude']) :\n !isNullOrUndefined(data['Latitude']) ? parseFloat(data['Latitude']) : null;\n var longitude = !isNullOrUndefined(data['longitude']) ? parseFloat(data['longitude']) :\n !isNullOrUndefined(data['Longitude']) ? parseFloat(data['Longitude']) : null;\n if (!isNullOrUndefined(latitude) && !isNullOrUndefined(longitude)) {\n minLong_1 = isNullOrUndefined(minLong_1) && dataIndex === 0 ?\n longitude : minLong_1;\n maxLat_1 = isNullOrUndefined(maxLat_1) && dataIndex === 0 ?\n latitude : maxLat_1;\n minLat_1 = isNullOrUndefined(minLat_1) && dataIndex === 0 ?\n latitude : minLat_1;\n maxLong_1 = isNullOrUndefined(maxLong_1) && dataIndex === 0 ?\n longitude : maxLong_1;\n if (minLong_1 > longitude) {\n minLong_1 = longitude;\n }\n if (minLat_1 > latitude) {\n minLat_1 = latitude;\n }\n if (maxLong_1 < longitude) {\n maxLong_1 = longitude;\n }\n if (maxLat_1 < latitude) {\n maxLat_1 = latitude;\n }\n }\n });\n });\n }\n });\n if (!isNullOrUndefined(minLat_1) && !isNullOrUndefined(minLong_1) &&\n !isNullOrUndefined(maxLong_1) && !isNullOrUndefined(maxLat_1)) {\n // To find the center position\n centerLat = (minLat_1 + maxLat_1) / 2;\n centerLong = (minLong_1 + maxLong_1) / 2;\n this.maps.markerCenterLatitude = centerLat;\n this.maps.markerCenterLongitude = centerLong;\n if (isNullOrUndefined(this.maps.markerZoomCenterPoint) || this.maps.markerZoomedState) {\n this.maps.markerZoomCenterPoint = {\n latitude: centerLat,\n longitude: centerLong\n };\n }\n var markerFactor = void 0;\n if (this.maps.isTileMap || this.maps.baseMapRectBounds['min']['x'] === 0) {\n zoomLevel = calculateZoomLevel(minLat_1, maxLat_1, minLong_1, maxLong_1, mapWidth, mapHeight, this.maps, false);\n if (this.maps.isTileMap) {\n markerFactor = isNullOrUndefined(this.maps.markerZoomFactor) ?\n zoomLevel : isNullOrUndefined(this.maps.mapScaleValue) ?\n zoomLevel : this.maps.mapScaleValue > 1 && this.maps.markerZoomFactor !== 1 ?\n this.maps.mapScaleValue : zoomLevel;\n }\n else {\n markerFactor = isNullOrUndefined(this.maps.mapScaleValue) ? zoomLevel :\n (Math.floor(this.maps.scale) !== 1 &&\n this.maps.mapScaleValue !== zoomLevel)\n &&\n (isNullOrUndefined(this.maps.shouldZoomCurrentFactor))\n ? this.maps.mapScaleValue : zoomLevel;\n if (((markerFactor === this.maps.mapScaleValue &&\n (this.maps.markerZoomFactor === 1 || this.maps.mapScaleValue === 1))\n && (!this.maps.enablePersistence))) {\n markerFactor = zoomLevel;\n }\n }\n }\n else {\n zoomLevel = this.calculateIndividualLayerMarkerZoomLevel(mapWidth, mapHeight, maxZoomFact);\n markerFactor = isNullOrUndefined(this.maps.mapScaleValue) ? zoomLevel :\n (this.maps.mapScaleValue !== zoomLevel)\n ? this.maps.mapScaleValue : zoomLevel;\n }\n this.maps.markerZoomFactor = markerFactor;\n }\n }\n else {\n this.maps.markerZoomedState = false;\n if (this.maps.markerZoomFactor > 1) {\n this.maps.markerCenterLatitude = null;\n this.maps.markerCenterLongitude = null;\n this.maps.markerZoomFactor = 1;\n if (!this.maps.enablePersistence) {\n this.maps.mapScaleValue = 1;\n }\n }\n if (this.maps.isTileMap && !this.maps.enablePersistence\n && this.maps.mapScaleValue <= 1) {\n this.maps.tileZoomLevel = this.maps.mapScaleValue === 0 ? (this.maps.isZoomByPosition ? this.maps.tileZoomLevel : 1)\n : this.maps.mapScaleValue;\n if (this.maps.mapScaleValue === 1 && this.maps.markerZoomFactor === 1) {\n this.maps.tileTranslatePoint.x = 0;\n this.maps.tileTranslatePoint.y = 0;\n }\n }\n }\n }\n };\n /**\n * To check and trigger marker click event\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n Marker.prototype.markerClick = function (e) {\n var target = e.target.id;\n if (target.indexOf(this.maps.element.id) === -1) {\n var ancestor = e.target.closest('.' + this.maps.element.id + '_marker_template_element');\n if (!isNullOrUndefined(ancestor) && ancestor.id.indexOf('_MarkerIndex_') > -1) {\n target = ancestor.id;\n }\n }\n if (target.indexOf('_LayerIndex_') === -1 || target.indexOf('_cluster_') > 0) {\n return;\n }\n var options = this.getMarker(target);\n if (isNullOrUndefined(options)) {\n return;\n }\n if (options.marker.enableDrag) {\n document.getElementById(this.maps.element.id + \"_svg\").style.cursor = 'grabbing';\n }\n var eventArgs = {\n cancel: false, name: markerClick, data: options.data, maps: this.maps,\n marker: options.marker, target: target, x: e.clientX, y: e.clientY,\n latitude: options.data['latitude'] || options.data['Latitude'],\n longitude: options.data['longitude'] || options.data['Longitude'],\n value: options.data['name']\n };\n this.maps.trigger(markerClick, eventArgs);\n if (options.marker.enableDrag) {\n var isCluster = false;\n var layerIndex = parseInt(target.split('_LayerIndex_')[1].split('_')[0], 10);\n var markerIndex = parseInt(target.split('_MarkerIndex_')[1].split('_')[0], 10);\n var dataIndex_1 = parseInt(target.split('_dataIndex_')[1].split('_')[0], 10);\n var marker_1 = this.maps.layers[layerIndex].markerSettings[markerIndex];\n if (this.sameMarkerData.length > 0) {\n isCluster = (this.sameMarkerData[0].data.filter(function (el) { return (el['index'] == dataIndex_1); })).length > 0 &&\n this.sameMarkerData[0].layerIndex === layerIndex && this.sameMarkerData[0].markerIndex === markerIndex;\n }\n if (!isCluster) {\n var dragEventArgs = {\n name: markerDragStart, x: e.clientX, y: e.clientY,\n latitude: options.data['latitude'] || options.data['Latitude'],\n longitude: options.data['longitude'] || options.data['Longitude'],\n layerIndex: layerIndex, markerIndex: markerIndex, dataIndex: dataIndex_1\n };\n this.maps.trigger(markerDragStart, dragEventArgs);\n this.maps.markerDragArgument = {\n targetId: target, x: e.clientX, y: e.clientY,\n latitude: options.data['latitude'] || options.data['Latitude'],\n longitude: options.data['longitude'] || options.data['Longitude'],\n shape: isNullOrUndefined(marker_1.shapeValuePath) ? marker_1.shape : marker_1.dataSource[dataIndex_1][marker_1.shapeValuePath],\n layerIndex: layerIndex, markerIndex: markerIndex, dataIndex: dataIndex_1\n };\n }\n }\n };\n /**\n * To check and trigger Cluster click event\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n Marker.prototype.markerClusterClick = function (e) {\n var target = e.target.id;\n if (target.indexOf('_LayerIndex_') === -1 || target.indexOf('_cluster_') === -1) {\n return;\n }\n var options = this.getMarker(target);\n if (isNullOrUndefined(options)) {\n return;\n }\n if ((options.clusterCollection.length > 0 && this.maps.markerClusterExpand)) {\n if (getElement(this.maps.element.id + '_mapsTooltip') &&\n this.maps.mapsTooltipModule.tooltipTargetID.indexOf('_MarkerIndex_') > -1) {\n removeElement(this.maps.element.id + '_mapsTooltip');\n }\n if (this.sameMarkerData.length > 0 && !this.maps.markerClusterExpandCheck) {\n this.maps.markerClusterExpandCheck = true;\n mergeSeparateCluster(this.sameMarkerData, this.maps, this.markerSVGObject);\n }\n else {\n this.sameMarkerData = options.clusterCollection;\n this.maps.markerClusterExpandCheck = false;\n clusterSeparate(this.sameMarkerData, this.maps, this.markerSVGObject, true);\n }\n }\n var eventArgs = {\n cancel: false, name: markerClusterClick, data: options, maps: this.maps,\n target: target, x: e.clientX, y: e.clientY,\n latitude: options.data['latitude'] || options.data['Latitude'], longitude: options.data['longitude'] || options.data['Longitude'],\n markerClusterCollection: options['markCollection']\n };\n this.maps.trigger(markerClusterClick, eventArgs);\n };\n /**\n * To get marker from target id\n *\n * @param {string} target - Specifies the target\n * @returns {string} - Returns the string\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Marker.prototype.getMarker = function (target) {\n var id = target.split('_LayerIndex_');\n var index = parseInt(id[1].split('_')[0], 10);\n var layer = this.maps.layers[index];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markCollection = [];\n var clusterCollection = [];\n var marker;\n this.maps.markerClusterExpand = layer.markerClusterSettings.allowClusterExpand;\n if (target.indexOf('_MarkerIndex_') > -1) {\n var markerIndex = parseInt(id[1].split('_MarkerIndex_')[1].split('_')[0], 10);\n var dataIndex = parseInt(id[1].split('_dataIndex_')[1].split('_')[0], 10);\n marker = layer.markerSettings[markerIndex];\n if (!isNaN(markerIndex)) {\n data = marker.dataSource[dataIndex];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection_1 = [];\n if (!marker.template && (target.indexOf('_cluster_') > -1) && (this.maps.layers[index].markerClusterSettings.allowClusterExpand)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(marker.dataSource, function (location, index) {\n if (location['latitude'] === data['latitude'] && location['longitude'] === data['longitude']) {\n collection_1.push({ data: data, index: index });\n }\n });\n }\n if ((target.indexOf('_cluster_') > -1)) {\n var isClusterSame = false;\n var clusterElement = document.getElementById(target.indexOf('_datalabel_') > -1 ? layer.markerClusterSettings.shape === 'Balloon' ? target.split('_datalabel_')[0] + '_Group' : target.split('_datalabel_')[0] : layer.markerClusterSettings.shape === 'Balloon' ? target + '_Group' : target);\n var indexes = layer.markerClusterSettings.shape === 'Balloon' ? clusterElement.children[0].textContent.split(',').map(Number) : clusterElement.textContent.split(',').map(Number);\n collection_1 = [];\n for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) {\n var i = indexes_1[_i];\n collection_1.push({ data: marker.dataSource[i], index: i });\n markCollection.push(marker.dataSource[i]);\n }\n isClusterSame = false;\n clusterCollection.push({\n data: collection_1, layerIndex: index, markerIndex: markerIndex, dataIndex: dataIndex,\n targetClusterIndex: +(target.split('_cluster_')[1].indexOf('_datalabel_') > -1 ? target.split('_cluster_')[1].split('_datalabel_')[0] : target.split('_cluster_')[1]),\n isClusterSame: isClusterSame\n });\n }\n return { marker: marker, data: data, clusterCollection: clusterCollection, markCollection: markCollection };\n }\n }\n return null;\n };\n /**\n * To check and trigger marker move event\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n Marker.prototype.markerMove = function (e) {\n var targetId = e.target.id;\n if (targetId.indexOf('_LayerIndex_') === -1 || targetId.indexOf('_cluster_') > 0) {\n return;\n }\n var options = this.getMarker(targetId);\n if (isNullOrUndefined(options)) {\n return;\n }\n if (options.marker.enableDrag) {\n document.getElementById(this.maps.element.id + \"_svg\").style.cursor = isNullOrUndefined(this.maps.markerDragArgument) ?\n 'pointer' : 'grabbing';\n }\n var eventArgs = {\n cancel: false, name: markerMouseMove, data: options.data,\n maps: this.maps, target: targetId, x: e.clientX, y: e.clientY\n };\n this.maps.trigger(markerMouseMove, eventArgs);\n };\n /**\n * To check and trigger cluster move event\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n Marker.prototype.markerClusterMouseMove = function (e) {\n var targetId = e.target.id;\n if (targetId.indexOf('_LayerIndex_') === -1 || targetId.indexOf('_cluster_') === -1) {\n return;\n }\n var options = this.getMarker(targetId);\n if (this.maps.markerClusterExpand) {\n e.target.style.cursor = 'pointer';\n }\n if (isNullOrUndefined(options)) {\n return;\n }\n var eventArgs = {\n cancel: false, name: markerClusterMouseMove, data: options.data, maps: this.maps,\n target: targetId, x: e.clientX, y: e.clientY\n };\n this.maps.trigger(markerClusterMouseMove, eventArgs);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n Marker.prototype.getModuleName = function () {\n return 'Marker';\n };\n /**\n * To destroy the layers.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.destroy = function () {\n this.maps = null;\n this.trackElements = [];\n this.markerSVGObject = null;\n this.sameMarkerData = [];\n };\n return Marker;\n}());\nexport { Marker };\n","import { tooltipRender } from '../index';\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { createElement, Browser, isNullOrUndefined, extend, remove } from '@syncfusion/ej2-base';\nimport { getMousePosition, Internalize, checkPropertyPath, getValueFromObject, formatValue, convertStringToValue } from '../utils/helper';\n/**\n * Map Tooltip\n */\nvar MapsTooltip = /** @class */ (function () {\n function MapsTooltip(maps) {\n this.maps = maps;\n this.tooltipId = this.maps.element.id + '_mapsTooltip';\n this.addEventListener();\n }\n /**\n * @private\n */\n MapsTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tooltipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n if (this.maps.isDevice) {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n }\n if (target.id.indexOf(this.maps.element.id) === -1) {\n var ancestor = target.closest('.' + this.maps.element.id + '_marker_template_element');\n if (!isNullOrUndefined(ancestor) && ancestor.id.indexOf('_MarkerIndex_') > -1) {\n target = ancestor;\n }\n }\n var option;\n var currentData = '';\n var targetId = target.id;\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateData = [];\n var keyString;\n var index = targetId.indexOf('_LayerIndex_') > -1 && parseFloat(targetId.split('_LayerIndex_')[1].split('_')[0]);\n var layer = this.maps.layersCollection[index];\n var tooltipContent = [];\n var markerFill;\n var location = getMousePosition(pageX, pageY, this.maps.svgObject);\n this.tooltipTargetID = targetId;\n var istooltipRender = (targetId.indexOf('_shapeIndex_') > -1)\n || (targetId.indexOf('_MarkerIndex_') > -1) || (targetId.indexOf('_BubbleIndex_') > -1);\n if (istooltipRender && this.maps.markerDragArgument === null) {\n if (targetId.indexOf('_shapeIndex_') > -1) {\n option = layer.tooltipSettings;\n var shape = parseInt(targetId.split('_shapeIndex_')[1].split('_')[0], 10);\n if (isNullOrUndefined(layer.layerData) || isNullOrUndefined(layer.layerData[shape])) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = layer.layerData[shape]['property'];\n var isShape = false;\n var properties = (Object.prototype.toString.call(layer.shapePropertyPath) === '[object Array]' ?\n layer.shapePropertyPath : [layer.shapePropertyPath]);\n if (!isNullOrUndefined(properties)) {\n for (var k = 0; k < properties.length; k++) {\n for (var i = 0; i < layer['dataSource']['length']; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = layer.dataSource[i];\n var dataPath = (layer.shapeDataPath.indexOf('.') > -1) ?\n (getValueFromObject(data, layer.shapeDataPath)) : data[layer.shapeDataPath];\n var dataPathValue = !isNullOrUndefined(dataPath) && isNaN(data[layer.shapeDataPath])\n ? dataPath.toLowerCase() : dataPath;\n var propertyValue = !isNullOrUndefined(value[properties[k]])\n && isNaN(value[properties[k]]) ? value[properties[k]].toLowerCase() :\n value[properties[k]];\n if (dataPathValue === propertyValue) {\n isShape = true;\n index = i;\n k = properties.length;\n break;\n }\n }\n }\n index = isShape ? index : null;\n if (!isNullOrUndefined(layer.dataSource[index])) {\n templateData = JSON.parse(JSON.stringify(layer.dataSource[index]));\n for (keyString in value) {\n // eslint-disable-next-line no-prototype-builtins\n if (!templateData.hasOwnProperty(keyString)) {\n templateData[keyString] = value[keyString];\n }\n }\n }\n }\n if (option.visible && ((!isNullOrUndefined(index) && !isNaN(index)) || (!isNullOrUndefined(value)))) {\n if (layer.tooltipSettings.format) {\n currentData = this.formatter(layer.tooltipSettings.format, templateData);\n }\n else {\n var shapePath = checkPropertyPath(layer.shapeDataPath, layer.shapePropertyPath, value);\n currentData = (!isNullOrUndefined(layer.dataSource) && !isNullOrUndefined(index)) ?\n formatValue(((option.valuePath.indexOf('.') > -1) ?\n (getValueFromObject(layer.dataSource[index], option.valuePath)) :\n layer.dataSource[index][option.valuePath]), this.maps) : value[shapePath];\n if (isNullOrUndefined(currentData)) {\n currentData = (option.valuePath.indexOf('.') > -1) ?\n (getValueFromObject(value, option.valuePath)) : value[option.valuePath];\n }\n }\n }\n //location.y = this.template(option, location);\n }\n else if (targetId.indexOf('_MarkerIndex_') > -1) {\n var markerIdex = parseInt(targetId.split('_MarkerIndex_')[1].split('_')[0], 10);\n var dataIndex = parseInt(targetId.split('_MarkerIndex_')[1].split('_')[2], 10);\n var marker = layer.markerSettings[markerIdex];\n option = marker.tooltipSettings;\n templateData = marker.dataSource[dataIndex];\n if (option.visible && !isNaN(markerIdex)) {\n if (marker.tooltipSettings.format) {\n currentData = this.formatter(marker.tooltipSettings.format, marker.dataSource[dataIndex]);\n }\n else {\n if (typeof marker.template !== 'function' && marker.template && !marker.tooltipSettings.valuePath) {\n currentData = marker.template.split('>')[1].split('<')[0];\n }\n else {\n currentData =\n formatValue(((marker.tooltipSettings.valuePath.indexOf('.') > -1) ?\n (getValueFromObject(marker.dataSource[dataIndex], marker.tooltipSettings.valuePath)) :\n marker.dataSource[dataIndex][marker.tooltipSettings.valuePath]), this.maps);\n }\n }\n }\n //location.y = this.template(option, location);\n }\n else if (targetId.indexOf('_BubbleIndex_') > -1) {\n var bubbleIndex = parseInt(targetId.split('_BubbleIndex_')[1].split('_')[0], 10);\n var dataIndex = parseInt(targetId.split('_BubbleIndex_')[1].split('_')[2], 10);\n var bubble = layer.bubbleSettings[bubbleIndex];\n option = bubble.tooltipSettings;\n templateData = bubble.dataSource[dataIndex];\n if (option.visible && !isNaN(dataIndex)) {\n if (bubble.tooltipSettings.format) {\n currentData = this.formatter(bubble.tooltipSettings.format, bubble.dataSource[dataIndex]);\n }\n else {\n currentData =\n formatValue(((bubble.tooltipSettings.valuePath.indexOf('.') > -1) ?\n (getValueFromObject(bubble.dataSource[dataIndex], bubble.tooltipSettings.valuePath)) :\n bubble.dataSource[dataIndex][bubble.tooltipSettings.valuePath]), this.maps);\n }\n }\n //location.y = this.template(option, location);\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.maps.element.id + '_mapsTooltip',\n className: 'EJ2-maps-Tooltip'\n });\n if (isNullOrUndefined(option.template) || option.template === '' || this.maps.tooltipDisplayMode === 'MouseMove') {\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n }\n else {\n tooltipEle.style.position = 'absolute';\n }\n document.getElementById(this.maps.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n if (typeof option.template !== 'function' && option.template !== null && Object.keys(typeof option.template === 'object' ? option.template : {}).length === 1) {\n option.template = option.template[Object.keys(option.template)[0]];\n }\n templateData = this.setTooltipContent(option, templateData);\n var tooltipTextStyle = {\n color: option.textStyle.color, fontFamily: option.textStyle.fontFamily, fontStyle: option.textStyle.fontStyle,\n fontWeight: option.textStyle.fontWeight, opacity: option.textStyle.opacity, size: option.textStyle.size\n };\n var tooltipOption = {\n location: location, text: tooltipContent, data: templateData,\n textStyle: tooltipTextStyle,\n template: option.template\n };\n tooltipArgs = {\n cancel: false, name: tooltipRender,\n options: tooltipOption,\n fill: option.fill,\n maps: this.maps,\n element: target, eventArgs: e, content: !isNullOrUndefined(currentData) ? currentData.toString() : ''\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.maps.trigger(tooltipRender, tooltipArgs, function (args) {\n if (!tooltipArgs.cancel && option.visible && !isNullOrUndefined(currentData) &&\n (targetId.indexOf('_cluster_') === -1 && targetId.indexOf('_dataLabel_') === -1)) {\n _this.maps['isProtectedOnChange'] = true;\n tooltipArgs.options['textStyle']['size'] = tooltipArgs.options['textStyle']['size']\n || _this.maps.themeStyle.fontSize;\n tooltipArgs.options['textStyle']['color'] = tooltipArgs.options['textStyle']['color']\n || _this.maps.themeStyle.tooltipFontColor;\n tooltipArgs.options['textStyle']['fontFamily'] = tooltipArgs.options['textStyle']['fontFamily']\n || _this.maps.themeStyle.fontFamily;\n tooltipArgs.options['textStyle']['fontWeight'] = tooltipArgs.options['textStyle']['fontWeight']\n || _this.maps.themeStyle.fontWeight;\n tooltipArgs.options['textStyle']['opacity'] = tooltipArgs.options['textStyle']['opacity']\n || _this.maps.themeStyle.tooltipTextOpacity;\n if (tooltipArgs.cancel) {\n _this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: option['data'],\n template: option['template'],\n content: tooltipArgs.content.toString() !== currentData.toString() ? [tooltipArgs.content.toString()] :\n [currentData.toString()],\n shapes: [],\n location: option['location'],\n palette: [markerFill],\n areaBounds: _this.maps.mapAreaRect,\n textStyle: option['textStyle'],\n availableSize: _this.maps.availableSize,\n fill: option.fill || _this.maps.themeStyle.tooltipFillColor,\n enableShadow: true\n });\n }\n else {\n _this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: tooltipArgs.options['data'],\n template: tooltipArgs.options['template'],\n content: tooltipArgs.content.toString() !== currentData.toString() ? [tooltipArgs.content.toString()] :\n [currentData.toString()],\n shapes: [],\n location: tooltipArgs.options['location'],\n palette: [markerFill],\n areaBounds: _this.maps.mapAreaRect,\n textStyle: tooltipArgs.options['textStyle'],\n availableSize: _this.maps.availableSize,\n fill: tooltipArgs.fill || _this.maps.themeStyle.tooltipFillColor,\n enableShadow: true\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.maps.isVue || _this.maps.isVue3) {\n _this.svgTooltip.controlInstance = _this.maps;\n }\n _this.svgTooltip.opacity = _this.maps.themeStyle.tooltipFillOpacity || _this.svgTooltip.opacity;\n _this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.maps.renderReactTemplates();\n }\n else {\n _this.clearTooltip(e.target);\n }\n });\n if (this.svgTooltip) {\n this.maps.trigger('tooltipRenderComplete', {\n cancel: false, name: 'tooltipRenderComplete', maps: this.maps, options: tooltipOption,\n element: this.svgTooltip.element\n });\n }\n if (this.svgTooltip) {\n this.maps.trigger('tooltipRenderComplete', {\n cancel: false, name: 'tooltipRenderComplete', maps: this.maps, options: tooltipOption, element: this.svgTooltip.element\n });\n }\n else {\n this.clearTooltip(e.target);\n }\n }\n else {\n var tooltipElement = e.target.closest('#' + this.maps.element.id + '_mapsTooltipparent_template');\n if (isNullOrUndefined(tooltipElement)) {\n this.clearTooltip(e.target);\n }\n }\n };\n /**\n * To get content for the current toolitp\n *\n * @param {TooltipSettingsModel} options - Specifies the options for rendering tooltip\n * @param {any} templateData - Specifies the template data\n * @returns {any} - Returns the local data\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MapsTooltip.prototype.setTooltipContent = function (options, templateData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var localData = extend({}, templateData, null, true);\n if (this.maps.format && !isNaN(Number(localData[options.valuePath]))) {\n localData[options.valuePath] = Internalize(this.maps, Number(localData[options.valuePath]));\n }\n else {\n localData = Object.keys(localData).length ? localData : undefined;\n }\n return localData;\n };\n /*private template(tooltip: TooltipSettingsModel, location: MapLocation): number {\n location.y = (tooltip.template) ? location.y + 10 : location.y;\n return location.y;\n }*/\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MapsTooltip.prototype.formatter = function (format, data) {\n if (data === void 0) { data = {}; }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = (typeof data[key] === 'object') ? convertStringToValue('', format, data, this.maps) :\n format.split('${' + key + '}').join(formatValue(data[key], this.maps));\n }\n return format;\n };\n /**\n * @private\n */\n MapsTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n if (this.maps.tooltipDisplayMode === 'MouseMove') {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n }\n };\n /**\n * @private\n */\n MapsTooltip.prototype.removeTooltip = function () {\n var isTooltipRemoved = false;\n if (document.getElementsByClassName('EJ2-maps-Tooltip').length > 0) {\n remove(document.getElementsByClassName('EJ2-maps-Tooltip')[0]);\n isTooltipRemoved = true;\n }\n return isTooltipRemoved;\n };\n MapsTooltip.prototype.clearTooltip = function (element) {\n var tooltipElement = element.closest('#' + this.maps.element.id + '_mapsTooltipparent_template');\n if (isNullOrUndefined(tooltipElement)) {\n var isTooltipRemoved = this.removeTooltip();\n if (isTooltipRemoved) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.maps.clearTemplate();\n }\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n * @private\n */\n MapsTooltip.prototype.addEventListener = function () {\n if (this.maps.isDestroyed) {\n return;\n }\n if (this.maps.tooltipDisplayMode === 'DoubleClick') {\n this.maps.on('dblclick', this.renderTooltip, this);\n }\n else if (this.maps.tooltipDisplayMode === 'Click') {\n this.maps.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n }\n else {\n this.maps.on(Browser.touchMoveEvent, this.renderTooltip, this);\n }\n this.maps.on(Browser.touchCancelEvent, this.removeTooltip, this);\n this.maps.element.addEventListener('contextmenu', this.removeTooltip);\n };\n /**\n * @private\n */\n MapsTooltip.prototype.removeEventListener = function () {\n if (this.maps) {\n if (this.maps.isDestroyed) {\n return;\n }\n if (this.maps.tooltipDisplayMode === 'DoubleClick') {\n this.maps.off('dblclick', this.removeTooltip);\n }\n else if (this.maps.tooltipDisplayMode === 'Click') {\n this.maps.off(Browser.touchEndEvent, this.mouseUpHandler);\n }\n else {\n this.maps.off(Browser.touchMoveEvent, this.renderTooltip);\n }\n this.maps.off(Browser.touchCancelEvent, this.removeTooltip);\n this.maps.element.removeEventListener('contextmenu', this.removeTooltip);\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name\n */\n MapsTooltip.prototype.getModuleName = function () {\n return 'MapsTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n MapsTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n //TODO: Calling the below code throws spec issue.\n //this.maps = null;\n };\n return MapsTooltip;\n}());\nexport { MapsTooltip };\n","import { Point, getElementByID, PathOption, Rect, convertGeoToPoint, CircleOption, convertTileLatLongToPoint } from '../utils/helper';\nimport { RectOption, createTooltip, calculateScale, getTouchCenter, getTouches, targetTouches } from '../utils/helper';\nimport { MapLocation, zoomAnimate, smoothTranslate, measureText, textTrim, clusterTemplate, marker } from '../utils/helper';\nimport { markerTemplate, removeElement, getElement, clusterSeparate, markerColorChoose, calculatePolygonPath } from '../utils/helper';\nimport { markerShapeChoose } from '../utils/helper';\nimport { isNullOrUndefined, EventHandler, Browser, remove, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { changeBorderWidth, markerRendering } from '../index';\nimport { pan } from '../model/constants';\nimport { getValueFromObject } from '../utils/helper';\n/**\n * Zoom module used to process the zoom for maps\n */\nvar Zoom = /** @class */ (function () {\n function Zoom(maps) {\n /** @private */\n this.isPanning = false;\n /** @private */\n this.mouseEnter = false;\n /** @private */\n this.isTouch = false;\n /** @private */\n this.rectZoomingStart = false;\n /** @private */\n this.browserName = Browser.info.name;\n // eslint-disable-next-line @typescript-eslint/ban-types\n /** @private */\n this.isPointer = Browser.isPointer;\n this.handled = false;\n this.isPan = false;\n this.isZoomFinal = false;\n this.isZoomSelection = false;\n this.pinchFactor = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.startTouches = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n /** @private */\n this.intersect = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n /** @private */\n this.mouseDownLatLong = { x: 0, y: 0 };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n /** @private */\n this.mouseMoveLatLong = { x: 0, y: 0 };\n /** @private */\n this.isSingleClick = false;\n this.maps = maps;\n this.wheelEvent = this.browserName === 'mozilla' ? (this.isPointer ? 'mousewheel' : 'DOMMouseScroll') : 'mousewheel';\n this.cancelEvent = this.isPointer ? 'pointerleave' : 'mouseleave';\n this.selectionColor = this.maps.zoomSettings.toolbarSettings.buttonSettings.selectionColor == null ?\n this.maps.zoomSettings.selectionColor : this.maps.zoomSettings.toolbarSettings.buttonSettings.selectionColor;\n this.fillColor = this.maps.zoomSettings.toolbarSettings.buttonSettings.color == null ? this.maps.zoomSettings.color :\n this.maps.zoomSettings.toolbarSettings.buttonSettings.color;\n this.addEventListener();\n }\n /**\n * To perform zooming for maps\n *\n * @param {Point} position - Specifies the position.\n * @param {number} newZoomFactor - Specifies the zoom factor.\n * @param {string} type - Specifies the type.\n * @returns {void}\n * @private\n */\n Zoom.prototype.performZooming = function (position, newZoomFactor, type) {\n var _this = this;\n var map = this.maps;\n map.previousProjection = newZoomFactor <= 1.5 ? undefined : map.projectionType;\n map.defaultState = false;\n map.initialCheck = false;\n map.markerZoomedState = map.isMarkerZoomCompleted = false;\n map.zoomPersistence = map.enablePersistence;\n var prevLevel = map.tileZoomLevel;\n var scale = map.previousScale = map.scale;\n var maxZoom = map.zoomSettings.maxZoom;\n var minZoom = map.zoomSettings.minZoom;\n newZoomFactor = maxZoom >= newZoomFactor ? newZoomFactor : maxZoom;\n var isToolbarPerform = true;\n switch (type.toLowerCase()) {\n case 'zoomin':\n isToolbarPerform = newZoomFactor <= this.maps.zoomSettings.maxZoom;\n break;\n case 'zoomout':\n isToolbarPerform = newZoomFactor >= this.maps.zoomSettings.minZoom;\n break;\n }\n if (isToolbarPerform) {\n var prevTilePoint = map.tileTranslatePoint;\n if ((!map.isTileMap) && ((type === 'ZoomIn' ? newZoomFactor >= minZoom && newZoomFactor <= maxZoom : newZoomFactor >= minZoom)\n || map.isReset)) {\n var availSize = map.mapAreaRect;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var minBounds = map.baseMapRectBounds['min'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var maxBounds = map.baseMapRectBounds['max'];\n var mapTotalWidth = Math.abs(minBounds['x'] - maxBounds['x']);\n var mapTotalHeight = Math.abs(minBounds['y'] - maxBounds['y']);\n var translatePointX = void 0;\n var translatePointY = void 0;\n if (newZoomFactor < 1.2 && map.projectionType !== 'Eckert5') {\n if (mapTotalWidth === 0 || mapTotalHeight === 0 || mapTotalWidth === mapTotalHeight) {\n mapTotalWidth = availSize.width / 2;\n mapTotalHeight = availSize.height;\n }\n newZoomFactor = parseFloat(Math.min(availSize.width / mapTotalWidth, availSize.height / mapTotalHeight).toFixed(2));\n newZoomFactor = newZoomFactor > 1.05 ? 1 : newZoomFactor;\n map.translatePoint = this.calculateInitalZoomTranslatePoint(newZoomFactor, mapTotalWidth, mapTotalHeight, availSize, minBounds, map);\n }\n else {\n var point = map.translatePoint;\n translatePointX = point.x - (((availSize.width / scale) - (availSize.width / newZoomFactor)) / (availSize.width / position.x));\n translatePointY = point.y - (((availSize.height / scale) - (availSize.height / newZoomFactor)) / (availSize.height / position.y));\n var currentHeight = Math.abs(map.baseMapRectBounds['max']['y'] - map.baseMapRectBounds['min']['y']) * newZoomFactor;\n translatePointX = (currentHeight < map.mapAreaRect.height) ? (availSize.x + ((-(minBounds['x'])) + ((availSize.width / 2) - (mapTotalWidth / 2)))) : translatePointX;\n translatePointY = (currentHeight < map.mapAreaRect.height) ? (availSize.y + ((-(minBounds['y'])) + ((availSize.height / 2) - (mapTotalHeight / 2)))) : translatePointY;\n map.translatePoint = new Point(translatePointX, translatePointY);\n }\n map.scale = newZoomFactor;\n map.zoomTranslatePoint = map.translatePoint;\n if (this.triggerZoomEvent(prevTilePoint, prevLevel, type)) {\n map.translatePoint = map.previousPoint;\n map.scale = map.mapScaleValue = map.previousScale;\n }\n else {\n this.applyTransform(map);\n }\n }\n else if ((map.isTileMap) && (newZoomFactor >= minZoom && newZoomFactor <= maxZoom)) {\n this.getTileTranslatePosition(prevLevel, newZoomFactor, position, type);\n map.tileZoomLevel = newZoomFactor;\n map.zoomSettings.zoomFactor = newZoomFactor;\n map.scale = Math.pow(2, newZoomFactor - 1);\n if (type === 'ZoomOut' && map.zoomSettings.resetToInitial && map.applyZoomReset && newZoomFactor <= map.initialZoomLevel) {\n map.initialCheck = true;\n map.zoomPersistence = false;\n map.tileTranslatePoint.x = map.initialTileTranslate.x;\n map.tileTranslatePoint.y = map.initialTileTranslate.y;\n newZoomFactor = map.tileZoomLevel = map.mapScaleValue = map.initialZoomLevel;\n map.scale = Math.pow(2, newZoomFactor - 1);\n }\n map.mapScaleValue = isNaN(map.mapScaleValue) ? 1 : map.mapScaleValue;\n map.translatePoint.y = (map.tileTranslatePoint.y - (0.01 * map.mapScaleValue)) / map.scale;\n map.translatePoint.x = (map.tileTranslatePoint.x - (0.01 * map.mapScaleValue)) / map.scale;\n if (this.triggerZoomEvent(prevTilePoint, prevLevel, type)) {\n map.translatePoint = map.tileTranslatePoint = new Point(0, 0);\n map.scale = map.previousScale;\n map.tileZoomLevel = prevLevel;\n map.zoomSettings.zoomFactor = map.previousScale;\n }\n else {\n if (document.querySelector('.GroupElement')) {\n document.querySelector('.GroupElement').style.display = 'none';\n }\n if (document.getElementById(this.maps.element.id + '_LayerIndex_1')) {\n document.getElementById(this.maps.element.id + '_LayerIndex_1').style.display = 'none';\n }\n this.markerLineAnimation(map);\n map.mapLayerPanel.generateTiles(newZoomFactor, map.tileTranslatePoint, type + 'wheel', null, position);\n var element1 = document.getElementById(this.maps.element.id + '_tiles');\n var animationDuration = this.maps.layersCollection[0].animationDuration === 0 && animationMode === 'Enable' ? 1000 : this.maps.layersCollection[0].animationDuration;\n setTimeout(function () {\n // if (type === 'ZoomOut') {\n // element1.removeChild(element1.children[element1.childElementCount - 1]);\n // if (element1.childElementCount) {\n // element1.removeChild(element1.children[element1.childElementCount - 1]);\n // } else {\n // element1 = element1;\n // }\n // }\n _this.applyTransform(_this.maps);\n if (document.getElementById(_this.maps.element.id + '_LayerIndex_1')) {\n document.getElementById(_this.maps.element.id + '_LayerIndex_1').style.display = 'block';\n }\n }, animationDuration);\n }\n }\n }\n this.maps.zoomNotApplied = false;\n if (this.maps.isDevice) {\n this.removeToolbarOpacity(map.isTileMap ? Math.round(map.tileZoomLevel) : map.scale, map.element.id + '_Zooming_');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Zoom.prototype.calculateInitalZoomTranslatePoint = function (newZoomFactor, mapTotalWidth, mapTotalHeight, availSize, minBounds, map) {\n mapTotalWidth *= newZoomFactor;\n mapTotalHeight *= newZoomFactor;\n var widthDiff = minBounds['x'] !== 0 && map.translateType === 'layers' ? map.availableSize.width - availSize.width : 0;\n var translatePointX = availSize.x + ((-(minBounds['x'])) + ((availSize.width / 2) - (mapTotalWidth / 2))) - widthDiff;\n var translatePointY = availSize.y + ((-(minBounds['y'])) + ((availSize.height / 2) - (mapTotalHeight / 2)));\n return new Point(translatePointX, translatePointY);\n };\n Zoom.prototype.triggerZoomEvent = function (prevTilePoint, prevLevel, type) {\n var map = this.maps;\n var zoomArgs;\n if (map.isTileMap) {\n map.mapScaleValue = isNullOrUndefined(map.mapScaleValue) ? 1 : map.mapScaleValue;\n map.translatePoint.y = (map.tileTranslatePoint.y - (0.01 * map.mapScaleValue)) / map.scale;\n map.translatePoint.x = (map.tileTranslatePoint.x - (0.01 * map.mapScaleValue)) / map.scale;\n }\n var minMaxLatitudeLongitude = this.maps.getMinMaxLatitudeLongitude();\n if (!map.isTileMap) {\n zoomArgs = {\n cancel: false, name: 'zoom', type: type, maps: map,\n tileTranslatePoint: {}, translatePoint: { previous: map.previousPoint, current: map.translatePoint },\n tileZoomLevel: {}, scale: { previous: map.previousScale, current: map.scale },\n minLatitude: minMaxLatitudeLongitude.minLatitude, maxLatitude: minMaxLatitudeLongitude.maxLatitude,\n minLongitude: minMaxLatitudeLongitude.minLongitude, maxLongitude: minMaxLatitudeLongitude.maxLongitude\n };\n }\n else {\n zoomArgs = {\n cancel: false, name: 'zoom', type: type, maps: map,\n tileTranslatePoint: { previous: prevTilePoint, current: map.tileTranslatePoint }, translatePoint: { previous: map.previousPoint, current: map.translatePoint },\n tileZoomLevel: { previous: prevLevel, current: map.tileZoomLevel }, scale: { previous: map.previousScale, current: map.scale },\n minLatitude: minMaxLatitudeLongitude.minLatitude, maxLatitude: minMaxLatitudeLongitude.maxLatitude,\n minLongitude: minMaxLatitudeLongitude.minLongitude, maxLongitude: minMaxLatitudeLongitude.maxLongitude\n };\n }\n map.trigger('zoom', zoomArgs);\n return zoomArgs.cancel;\n };\n Zoom.prototype.getTileTranslatePosition = function (prevLevel, currentLevel, position, type) {\n var map = this.maps;\n var tileDefaultSize = 256;\n var padding = type === 'ZoomOut' ? 10 : (type === 'Reset' && currentLevel > 1) ? 0 : 10;\n var bounds = map.availableSize;\n var prevSize = Math.pow(2, prevLevel) * 256;\n var totalSize = Math.pow(2, currentLevel) * 256;\n var x = ((position.x - map.tileTranslatePoint.x) / prevSize) * 100;\n var y = ((position.y - map.tileTranslatePoint.y) / prevSize) * 100;\n map.tileTranslatePoint.x = (currentLevel === 1) ? (bounds.width / 2) - ((tileDefaultSize * 2) / 2) :\n position.x - ((x * totalSize) / 100);\n map.tileTranslatePoint.y = (currentLevel === 1) ? ((bounds.height / 2) - ((tileDefaultSize * 2) / 2) + (padding * 2)) :\n position.y - ((y * totalSize) / 100);\n };\n /**\n * @private\n */\n Zoom.prototype.performRectZooming = function () {\n this.isDragZoom = true;\n var map = this.maps;\n var size = map.availableSize;\n map.previousProjection = map.projectionType;\n var prevLevel = map.tileZoomLevel;\n var prevTilePoint = map.tileTranslatePoint;\n var zoomRect = this.zoomingRect;\n var maxZoom = map.zoomSettings.maxZoom;\n var minZoom = map.zoomSettings.minZoom;\n var isZoomCancelled;\n if (zoomRect.height > 0 && zoomRect.width > 0) {\n var x = this.zoomingRect.x + (this.zoomingRect.width / 2);\n var y = this.zoomingRect.y + (this.zoomingRect.height / 2);\n var zoomCalculationFactor = void 0;\n if (!map.isTileMap) {\n var scale = map.previousScale = map.scale;\n zoomCalculationFactor = scale + Math.round((((size.width / zoomRect.width) + (size.height / zoomRect.height)) / 2));\n zoomCalculationFactor = zoomCalculationFactor < this.maps.zoomSettings.maxZoom ? zoomCalculationFactor : this.maps.zoomSettings.maxZoom;\n var translatePoint = map.previousPoint = map.translatePoint;\n if (zoomCalculationFactor <= maxZoom) {\n var translatePointX = translatePoint.x - (((size.width / scale) - (size.width / zoomCalculationFactor)) / (size.width / x));\n var translatePointY = translatePoint.y - (((size.height / scale) - (size.height / zoomCalculationFactor)) / (size.height / y));\n map.translatePoint = new Point(translatePointX, translatePointY);\n }\n map.scale = zoomCalculationFactor < this.maps.zoomSettings.maxZoom ? zoomCalculationFactor : this.maps.zoomSettings.maxZoom;\n map.zoomTranslatePoint = map.translatePoint;\n isZoomCancelled = this.triggerZoomEvent(prevTilePoint, prevLevel, '');\n if (isZoomCancelled) {\n map.translatePoint = map.previousPoint;\n map.scale = map.previousScale;\n }\n }\n else {\n zoomCalculationFactor = prevLevel + (Math.round(prevLevel + (((size.width / zoomRect.width) + (size.height / zoomRect.height)) / 2)));\n zoomCalculationFactor = (zoomCalculationFactor >= minZoom && zoomCalculationFactor <= maxZoom) ? zoomCalculationFactor : maxZoom;\n map.zoomSettings.zoomFactor = zoomCalculationFactor;\n this.getTileTranslatePosition(prevLevel, zoomCalculationFactor, { x: x, y: y });\n map.tileZoomLevel = zoomCalculationFactor;\n map.translatePoint.x = (map.tileTranslatePoint.x - (0.5 * Math.pow(2, zoomCalculationFactor))) /\n (Math.pow(2, zoomCalculationFactor));\n map.translatePoint.y = (map.tileTranslatePoint.y - (0.5 * Math.pow(2, zoomCalculationFactor))) /\n (Math.pow(2, zoomCalculationFactor));\n map.scale = (Math.pow(2, zoomCalculationFactor));\n isZoomCancelled = this.triggerZoomEvent(prevTilePoint, prevLevel, '');\n if (isZoomCancelled) {\n map.translatePoint = map.tileTranslatePoint = new Point(0, 0);\n map.scale = map.tileZoomLevel = map.zoomSettings.zoomFactor = prevLevel;\n }\n else {\n map.mapLayerPanel.generateTiles(zoomCalculationFactor, map.tileTranslatePoint);\n }\n }\n if (!isZoomCancelled) {\n map.mapScaleValue = zoomCalculationFactor;\n this.applyTransform(map, true);\n this.maps.zoomNotApplied = false;\n this.zoomingRect = null;\n }\n }\n this.isZoomFinal = this.isZoomSelection && Math.round(map.scale) === this.maps.zoomSettings.maxZoom;\n this.removeToolbarOpacity(map.scale, this.maps.element.id + '_Zooming_');\n };\n Zoom.prototype.setInteraction = function (newInteraction) {\n this.lastScale = 1;\n this.interaction = newInteraction;\n };\n Zoom.prototype.updateInteraction = function () {\n if (this.fingers === 2) {\n this.setInteraction('zoom');\n }\n else {\n this.setInteraction(null);\n }\n };\n /**\n * @private\n */\n Zoom.prototype.performPinchZooming = function (e) {\n var map = this.maps;\n var prevLevel = map.tileZoomLevel;\n var availSize = map.mapAreaRect;\n map.isMarkerZoomCompleted = false;\n map.previousScale = map.scale;\n map.previousPoint = map.translatePoint;\n map.previousProjection = map.projectionType;\n var prevTilePoint = map.tileTranslatePoint;\n var scale = calculateScale(this.touchStartList, this.touchMoveList);\n var touchCenter = getTouchCenter(getTouches(this.touchMoveList, this.maps));\n var newScale = scale / this.lastScale;\n this.lastScale = scale;\n this.pinchFactor *= newScale;\n this.pinchFactor = Math.min(this.maps.zoomSettings.maxZoom, Math.max(this.pinchFactor, this.maps.zoomSettings.minZoom));\n var zoomCalculationFactor = this.pinchFactor;\n var zoomArgs;\n var isZoomCancelled;\n if (!map.isTileMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var minBounds = map.baseMapRectBounds['min'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var maxBounds = map.baseMapRectBounds['max'];\n var mapTotalHeight = Math.abs(minBounds['y'] - maxBounds['y']);\n var mapTotalWidth = Math.abs(minBounds['x'] - maxBounds['x']);\n var translatePoint = map.translatePoint;\n var translatePointX = void 0;\n var translatePointY = void 0;\n if (zoomCalculationFactor < 1.2 && map.projectionType !== 'Eckert5') {\n if (mapTotalWidth === 0 || mapTotalHeight === 0 || mapTotalWidth === mapTotalHeight) {\n mapTotalWidth = availSize.width / 2;\n mapTotalHeight = availSize.height;\n }\n zoomCalculationFactor = parseFloat(Math.min(availSize.width / mapTotalWidth, availSize.height / mapTotalHeight).toFixed(2));\n zoomCalculationFactor = zoomCalculationFactor > 1.05 ? 1 : zoomCalculationFactor;\n map.translatePoint = this.calculateInitalZoomTranslatePoint(zoomCalculationFactor, mapTotalWidth, mapTotalHeight, availSize, minBounds, map);\n }\n else {\n var currentHeight = Math.abs(map.baseMapRectBounds['max']['y'] - map.baseMapRectBounds['min']['y']) * zoomCalculationFactor;\n translatePointX = translatePoint.x - (((availSize.width / map.scale) - (availSize.width / zoomCalculationFactor)) / (availSize.width / touchCenter.x));\n translatePointY = translatePoint.y - (((availSize.height / map.scale) - (availSize.height / zoomCalculationFactor)) / (availSize.height / touchCenter.y));\n translatePointX = (currentHeight < map.mapAreaRect.height) ? (availSize.x + ((-(minBounds['x'])) + ((availSize.width / 2) - (mapTotalWidth / 2)))) : translatePointX;\n translatePointY = (currentHeight < map.mapAreaRect.height) ? (availSize.y + ((-(minBounds['y'])) + ((availSize.height / 2) - (mapTotalHeight / 2)))) : translatePointY;\n map.translatePoint = new Point(translatePointX, translatePointY);\n }\n map.scale = zoomCalculationFactor;\n isZoomCancelled = this.triggerZoomEvent(prevTilePoint, prevLevel, '');\n if (isZoomCancelled) {\n map.translatePoint = map.previousPoint;\n map.scale = map.previousScale;\n }\n }\n else {\n var newTileFactor = zoomCalculationFactor;\n this.getTileTranslatePosition(prevLevel, newTileFactor, { x: touchCenter.x, y: touchCenter.y });\n map.tileZoomLevel = newTileFactor;\n map.translatePoint.x = (map.tileTranslatePoint.x - (0.5 * Math.pow(2, newTileFactor))) /\n (Math.pow(2, newTileFactor));\n map.translatePoint.y = (map.tileTranslatePoint.y - (0.5 * Math.pow(2, newTileFactor))) /\n (Math.pow(2, newTileFactor));\n map.scale = (Math.pow(2, newTileFactor));\n isZoomCancelled = this.triggerZoomEvent(prevTilePoint, prevLevel, '');\n if (isZoomCancelled) {\n map.translatePoint = map.tileTranslatePoint = new Point(0, 0);\n map.scale = map.previousScale;\n map.tileZoomLevel = prevLevel;\n map.zoomSettings.zoomFactor = map.previousScale;\n }\n else {\n map.mapLayerPanel.generateTiles(newTileFactor, map.tileTranslatePoint);\n }\n }\n map.mapScaleValue = zoomCalculationFactor;\n if (!isZoomCancelled) {\n this.applyTransform(map);\n }\n if (Browser.isDevice) {\n this.removeToolbarOpacity(map.isTileMap ? Math.round(map.tileZoomLevel) : map.scale, map.element.id + '_Zooming_');\n }\n };\n /**\n * @private\n */\n Zoom.prototype.drawZoomRectangle = function () {\n var map = this.maps;\n var down = this.mouseDownPoints;\n var move = this.mouseMovePoints;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var border = { width: 1, color: this.maps.themeStyle.rectangleZoomBorderColor };\n var width = Math.abs(move.x - down.x);\n var height = Math.abs(move.y - down.y);\n var x = ((move.x > down.x) ? down.x : down.x - width);\n var y = ((move.y > down.y) ? down.y : down.y - height);\n var elementRect = getElementByID(map.element.id).getBoundingClientRect();\n if ((x > map.mapAreaRect.x && x < (map.mapAreaRect.x + map.mapAreaRect.width)) &&\n (y > map.mapAreaRect.y) && (y < map.mapAreaRect.y + map.mapAreaRect.height)) {\n this.zoomingRect = new Rect(x, y, width, height);\n var rectSVGObject = map.renderer.createSvg({\n id: map.element.id + '_Selection_Rect_Zooming',\n width: map.availableSize.width,\n height: map.availableSize.height,\n style: 'position: absolute;'\n });\n var rectOption = new RectOption(map.element.id + '_ZoomRect', this.maps.themeStyle.rectangleZoomFillColor, border, this.maps.themeStyle.rectangleZoomFillOpacity, this.zoomingRect, 0, 0, '', '3');\n rectSVGObject.appendChild(map.renderer.drawRectangle(rectOption));\n getElementByID(map.element.id + '_Secondary_Element').appendChild(rectSVGObject);\n }\n };\n /**\n * To animate the zooming process\n *\n * @param {Element} element - Specifies the element\n * @param {boolean} animate - Specifies the boolean value\n * @param {number} x - Specifies the x value\n * @param {number} y - Specifies the y value\n * @param {number} scale - Specifies the scale value\n * @returns {void}\n */\n Zoom.prototype.animateTransform = function (element, animate, x, y, scale) {\n var duration = this.currentLayer.animationDuration === 0 && animationMode === 'Enable' ? 1000 : this.currentLayer.animationDuration;\n if (!animate || duration === 0 || this.maps.isTileMap) {\n if (!(this.maps.isTileMap && element.id.indexOf('_Polygons_Group') > -1)) {\n element.setAttribute('transform', 'scale(' + (scale) + ') translate( ' + x + ' ' + y + ' )');\n }\n return;\n }\n if (!this.maps.isTileMap) {\n zoomAnimate(element, 0, duration, new MapLocation(x, y), scale, this.maps.mapAreaRect, this.maps);\n }\n };\n /**\n * @private\n */\n Zoom.prototype.applyTransform = function (maps, animate) {\n var _this = this;\n var layerIndex;\n this.templateCount = 0;\n var layer;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var zoomshapelocation;\n var i;\n var markerStyle;\n var scale = maps.scale;\n var x = maps.translatePoint.x;\n var y = maps.translatePoint.y;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = [];\n maps.zoomShapeCollection = [];\n if (document.getElementById(maps.element.id + '_mapsTooltip')) {\n removeElement(maps.element.id + '_mapsTooltip');\n }\n if (this.layerCollectionEle) {\n var _loop_1 = function (i_1) {\n var layerElement = this_1.layerCollectionEle.childNodes[i_1];\n if (layerElement.tagName === 'g') {\n this_1.templateCount++;\n this_1.index = layerElement.id.indexOf('_LayerIndex_') > -1 && parseFloat(layerElement.id.split('_LayerIndex_')[1].split('_')[0]);\n this_1.currentLayer = maps.layersCollection[this_1.index];\n var factor_1 = maps.mapLayerPanel.calculateFactor(this_1.currentLayer);\n var elementCount = layerElement.childElementCount;\n var _loop_2 = function (j) {\n var currentEle = layerElement.childNodes[j];\n if (!(currentEle.id.indexOf('_Markers_Group') > -1) && (!(currentEle.id.indexOf('_bubble_Group') > -1))\n && (!(currentEle.id.indexOf('_dataLableIndex_Group') > -1))) {\n if (maps.isTileMap && (currentEle.id.indexOf('_line_Group') > -1)) {\n currentEle.remove();\n if (layerElement.children.length > 0 && layerElement.children[0]) {\n layerElement.insertBefore(maps.navigationLineModule.renderNavigation(this_1.currentLayer, maps.tileZoomLevel, this_1.index), layerElement.children[1]);\n }\n else {\n layerElement.appendChild(maps.navigationLineModule.renderNavigation(this_1.currentLayer, maps.tileZoomLevel, this_1.index));\n }\n }\n else if (maps.isTileMap && (currentEle.id.indexOf('_Polygons_Group') > -1)) {\n if (this_1.currentLayer.polygonSettings.polygons.length > 0) {\n this_1.currentLayer.polygonSettings.polygons.map(function (polygonSettings, polygonIndex) {\n var markerData = polygonSettings.points;\n var path = calculatePolygonPath(maps, maps.tileZoomLevel, _this.currentLayer, markerData);\n var element = document.getElementById(maps.element.id + '_LayerIndex_' + _this.index + '_PolygonIndex_' + polygonIndex);\n element.setAttribute('d', path);\n });\n document.getElementById(maps.element.id + '_LayerIndex_' + this_1.index + '_Polygons_Group').style.visibility = '';\n }\n }\n else if (currentEle.id.indexOf('Legend') === -1) {\n changeBorderWidth(currentEle, this_1.index, scale, maps);\n maps.zoomTranslatePoint = maps.translatePoint;\n this_1.animateTransform(currentEle, animate, x, y, scale);\n }\n }\n else if (currentEle.id.indexOf('_Markers_Group') > -1) {\n if ((!this_1.isPanning) && !isNullOrUndefined(currentEle.childNodes[0])) {\n this_1.markerTranslates(currentEle.childNodes[0], factor_1, x, y, scale, 'Marker', layerElement, animate);\n }\n currentEle = layerElement.childNodes[j];\n var markerAnimation_1;\n if (!isNullOrUndefined(currentEle) && currentEle.id.indexOf('Markers') !== -1) {\n Array.prototype.forEach.call(currentEle.childNodes, function (childNode, k) {\n _this.markerTranslate(childNode, factor_1, x, y, scale, 'Marker', animate);\n var layerIndex = parseInt(childNode['id'].split('_LayerIndex_')[1].split('_')[0], 10);\n var dataIndex = parseInt(childNode['id'].split('_dataIndex_')[1].split('_')[0], 10);\n var markerIndex = parseInt(childNode['id'].split('_MarkerIndex_')[1].split('_')[0], 10);\n markerAnimation_1 = _this.currentLayer.markerSettings[markerIndex].animationDuration > 0 || animationMode === 'Enable';\n if (_this.currentLayer.markerSettings[markerIndex].initialMarkerSelection.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markerSelectionValues = _this.currentLayer.markerSettings[markerIndex].dataSource[dataIndex];\n for (var x_1 = 0; x_1 < _this.currentLayer.markerSettings[markerIndex].initialMarkerSelection.length; x_1++) {\n if (_this.currentLayer.markerSettings[markerIndex].initialMarkerSelection[x_1]['latitude'] ===\n markerSelectionValues['latitude'] ||\n _this.currentLayer.markerSettings[markerIndex].initialMarkerSelection[x_1]['longitude'] ===\n markerSelectionValues['longitude']) {\n maps.markerSelection(_this.currentLayer.markerSettings[markerIndex].selectionSettings, maps, currentEle.children[k], _this.currentLayer.markerSettings[markerIndex].dataSource[dataIndex]);\n }\n }\n }\n if (((_this.currentLayer.animationDuration > 0 || animationMode === 'Enable') || ((maps.layersCollection[0].animationDuration > 0 || animationMode === 'Enable') && _this.currentLayer.type === 'SubLayer')) && !_this.isPanning) {\n if (maps.isTileMap) {\n var groupElement = document.querySelector('.GroupElement');\n if (groupElement && !(document.querySelector('.ClusterGroupElement')) && markerAnimation_1) {\n groupElement.style.display = 'none';\n }\n }\n else {\n markerStyle = 'visibility:hidden';\n currentEle.style.cssText = markerStyle;\n }\n }\n });\n if (this_1.isPanning && maps.markerModule.sameMarkerData.length > 0) {\n clusterSeparate(maps.markerModule.sameMarkerData, maps, currentEle, true);\n }\n else if (maps.markerModule.sameMarkerData.length > 0) {\n maps.markerModule.sameMarkerData = [];\n if (document.getElementById(maps.element.id + '_mapsTooltip')) {\n removeElement(maps.element.id + '_mapsTooltip');\n }\n }\n if (document.getElementById(maps.element.id + '_mapsTooltip') && maps.mapsTooltipModule.tooltipTargetID.indexOf('_MarkerIndex_')\n && !this_1.isPanning) {\n var mapsTooltip = maps.mapsTooltipModule;\n var tooltipElement = currentEle.querySelector('#' + mapsTooltip.tooltipTargetID);\n if (!isNullOrUndefined(tooltipElement)) {\n if (tooltipElement['style']['visibility'] === 'hidden') {\n removeElement(maps.element.id + '_mapsTooltip');\n }\n else {\n var x_2 = parseFloat(tooltipElement.getAttribute('transform').split('(')[1].split(')')[0].split(' ')[1]);\n var y_1 = parseFloat(tooltipElement.getAttribute('transform').split('(')[1].split(')')[0].split(' ')[2]);\n if (maps.isTileMap) {\n x_2 += +getElement(maps.element.id + '_tile_parent')['style']['left'].split('px')[0];\n y_1 += +getElement(maps.element.id + '_tile_parent')['style']['top'].split('px')[0];\n }\n mapsTooltip.svgTooltip.location.x = x_2;\n mapsTooltip.svgTooltip.location.y = y_1;\n mapsTooltip.svgTooltip.enableAnimation = false;\n }\n }\n }\n }\n }\n else if (currentEle.id.indexOf('_bubble_Group') > -1) {\n var childElement = void 0;\n for (var k = 0; k < currentEle.childElementCount; k++) {\n childElement = currentEle.childNodes[k];\n layerIndex = parseFloat(childElement.id.split('_LayerIndex_')[1].split('_')[0]);\n var bubleIndex = parseFloat(childElement.id.split('_BubbleIndex_')[1].split('_')[0]);\n var dataIndex = parseFloat(childElement.id.split('_BubbleIndex_')[1].split('_')[2]);\n for (var l = 0; l < maps.bubbleModule.bubbleCollection.length; l++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var bubbleCollection = maps.bubbleModule.bubbleCollection[l];\n if (bubbleCollection['LayerIndex'] === layerIndex && bubbleCollection['BubbleIndex'] === bubleIndex &&\n bubbleCollection['DataIndex'] === dataIndex) {\n var centerX = bubbleCollection['center']['x'];\n var centerY = bubbleCollection['center']['y'];\n var currentX = ((centerX + x) * scale);\n var currentY = ((centerY + y) * scale);\n var duration = this_1.currentLayer.animationDuration === 0 && animationMode === 'Enable' ? 1000 : this_1.currentLayer.animationDuration;\n if (!animate || duration === 0) {\n childElement.setAttribute('transform', 'translate( ' + currentX + ' ' + currentY + ' )');\n }\n else {\n smoothTranslate(childElement, 0, duration, new MapLocation(currentX, currentY));\n }\n break;\n }\n }\n }\n }\n else if (currentEle.id.indexOf('_dataLableIndex_Group') > -1 && !isNullOrUndefined(maps.layers[this_1.index])) {\n this_1.intersect = [];\n maps.zoomLabelPositions = [];\n maps.zoomLabelPositions = maps.dataLabelModule.dataLabelCollections;\n var labelAnimate = !maps.isTileMap && animate;\n for (var k = 0; k < currentEle.childElementCount; k++) {\n if (currentEle.childNodes[k]['id'].indexOf('_LabelIndex_') > -1) {\n var labelIndex = parseFloat(currentEle.childNodes[k]['id'].split('_LabelIndex_')[1].split('_')[0]);\n this_1.zoomshapewidth = currentEle.childNodes[k].getBoundingClientRect();\n maps.zoomShapeCollection.push(this_1.zoomshapewidth);\n this_1.dataLabelTranslate(currentEle.childNodes[k], factor_1, x, y, scale, 'DataLabel', labelAnimate);\n var dataLabel = maps.layers[this_1.index].dataLabelSettings;\n var border = dataLabel.border;\n if (k > 0 && border['width'] > 1) {\n if (currentEle.childNodes[k - 1]['id'].indexOf('_rectIndex_') > -1 && !isNullOrUndefined(maps.zoomLabelPositions[labelIndex])) {\n var labelX = ((maps.zoomLabelPositions[labelIndex]['location']['x'] + x) * scale);\n var labelY = ((maps.zoomLabelPositions[labelIndex]['location']['y'] + y) * scale);\n var zoomtext = currentEle.childNodes[k]['textContent'];\n var style = maps.layers[this_1.index].dataLabelSettings.textStyle;\n var zoomtextSize = measureText(zoomtext, style);\n var padding = 5;\n var rectElement = currentEle.childNodes[k - 1];\n var rectX = labelX - zoomtextSize['width'] / 2;\n var rectY = labelY - zoomtextSize['height'] / 2 - padding;\n rectElement['setAttribute']('x', rectX);\n rectElement['setAttribute']('y', rectY);\n }\n }\n }\n }\n }\n };\n for (var j = 0; j < elementCount; j++) {\n _loop_2(j);\n }\n }\n maps.arrangeTemplate();\n };\n var this_1 = this;\n for (var i_1 = 0; i_1 < this.layerCollectionEle.childElementCount; i_1++) {\n _loop_1(i_1);\n }\n if (!isNullOrUndefined(this.currentLayer)) {\n if (!animate || this.currentLayer.animationDuration === 0 || maps.isTileMap) {\n this.processTemplate(x, y, scale, maps);\n }\n }\n }\n };\n Zoom.prototype.markerTranslates = function (element, factor, x, y, scale, type, layerElement, animate) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn;\n var nullCount = 0;\n var markerCounts = 0;\n var markerTemplateCounts = 0;\n var layerIndex = parseInt((element ? element : layerElement).id.split('_LayerIndex_')[1].split('_')[0], 10);\n var markerSVGObject = this.maps.renderer.createGroup({\n id: this.maps.element.id + '_Markers_Group',\n class: 'GroupElement'\n });\n markerSVGObject.style.pointerEvents = 'auto';\n if (document.getElementById(markerSVGObject.id)) {\n removeElement(markerSVGObject.id);\n }\n var mapsAreaRect = this.maps.mapAreaRect;\n var markerTemplateElements = createElement('div', {\n id: this.maps.element.id + '_LayerIndex_' + layerIndex + '_Markers_Template_Group',\n className: 'template'\n });\n markerTemplateElements.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + mapsAreaRect.y + 'px;' +\n 'left:' + mapsAreaRect.x + 'px;' +\n 'height:' + mapsAreaRect.height + 'px;' +\n 'width:' + mapsAreaRect.width + 'px;';\n if (document.getElementById(markerTemplateElements.id)) {\n removeElement(markerTemplateElements.id);\n }\n var currentLayers = this.maps.layersCollection[layerIndex];\n Array.prototype.forEach.call(currentLayers.markerSettings, function (markerSettings, markerIndex) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var markerDatas = markerSettings.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Array.prototype.forEach.call(markerDatas, function (data, dataIndex) {\n _this.maps.markerNullCount = markerIndex >= 0 && dataIndex === 0 ? 0 : _this.maps.markerNullCount;\n var eventArgs = {\n template: markerSettings.template, data: data, maps: _this.maps, marker: markerSettings,\n cancel: false, name: markerRendering, fill: markerSettings.fill, colorValuePath: markerSettings.colorValuePath,\n shapeValuePath: markerSettings.shapeValuePath, height: markerSettings.height,\n width: markerSettings.width, imageUrl: markerSettings.imageUrl, imageUrlValuePath: markerSettings.imageUrlValuePath, shape: markerSettings.shape,\n border: markerSettings.border\n };\n eventArgs = markerShapeChoose(eventArgs, data);\n eventArgs = markerColorChoose(eventArgs, data);\n _this.maps.trigger('markerRendering', eventArgs, function (MarkerArgs) {\n if (markerSettings.shapeValuePath !== eventArgs.shapeValuePath) {\n eventArgs = markerShapeChoose(eventArgs, data);\n }\n if (markerSettings.colorValuePath !== eventArgs.colorValuePath) {\n eventArgs = markerColorChoose(eventArgs, data);\n }\n var lati = (!isNullOrUndefined(markerSettings.latitudeValuePath)) ?\n Number(getValueFromObject(data, markerSettings.latitudeValuePath)) : !isNullOrUndefined(data['latitude']) ?\n parseFloat(data['latitude']) : !isNullOrUndefined(data['Latitude']) ? data['Latitude'] : null;\n var long = (!isNullOrUndefined(markerSettings.longitudeValuePath)) ?\n Number(getValueFromObject(data, markerSettings.longitudeValuePath)) : !isNullOrUndefined(data['longitude']) ?\n parseFloat(data['longitude']) : !isNullOrUndefined(data['Longitude']) ? data['Longitude'] : null;\n var offset = markerSettings.offset;\n if (!eventArgs.cancel && markerSettings.visible && !isNullOrUndefined(long) && !isNullOrUndefined(lati)) {\n var markerID = _this.maps.element.id + '_LayerIndex_' + layerIndex + '_MarkerIndex_'\n + markerIndex + '_dataIndex_' + dataIndex;\n var location_1 = (_this.maps.isTileMap) ? convertTileLatLongToPoint(new MapLocation(long, lati), _this.maps.tileZoomLevel, _this.maps.tileTranslatePoint, true) : convertGeoToPoint(lati, long, factor, currentLayers, _this.maps);\n var transPoint = { x: x, y: y };\n if (eventArgs.template && (!isNaN(location_1.x) && !isNaN(location_1.y))) {\n markerTemplateCounts++;\n markerTemplate(eventArgs, templateFn, markerID, data, markerIndex, markerTemplateElements, location_1, transPoint, scale, offset, _this.maps);\n }\n else if (!eventArgs.template && (!isNaN(location_1.x) && !isNaN(location_1.y))) {\n markerCounts++;\n marker(eventArgs, markerSettings, markerDatas, dataIndex, location_1, transPoint, markerID, offset, scale, _this.maps, markerSVGObject);\n }\n }\n nullCount += (!isNaN(lati) && !isNaN(long)) ? 0 : 1;\n markerTemplateCounts += (eventArgs.cancel) ? 1 : 0;\n markerCounts += (eventArgs.cancel) ? 1 : 0;\n _this.maps.markerNullCount = (isNullOrUndefined(lati) || isNullOrUndefined(long))\n ? _this.maps.markerNullCount + 1 : _this.maps.markerNullCount;\n var markerDataLength = markerDatas.length - _this.maps.markerNullCount;\n var isMarkersClustered = false;\n if (markerSVGObject.childElementCount === (markerDataLength - markerTemplateCounts - nullCount) && (type !== 'Template')) {\n if (_this.maps.isTileMap) {\n var polygonsElement = document.getElementById(_this.maps.element.id + '_LayerIndex_' + layerIndex + '_Polygons_Group');\n var polygonElement = document.getElementById(_this.maps.element.id + '_LayerIndex_' + layerIndex + '_Polygon_Group');\n if (!isNullOrUndefined(polygonsElement)) {\n polygonsElement.insertAdjacentElement('afterend', markerSVGObject);\n }\n else {\n if (!isNullOrUndefined(polygonElement)) {\n polygonElement.insertAdjacentElement('afterend', markerSVGObject);\n }\n else {\n layerElement.insertBefore(markerSVGObject, layerElement.firstElementChild);\n }\n }\n }\n else {\n layerElement.appendChild(markerSVGObject);\n }\n if (currentLayers.markerClusterSettings.allowClustering) {\n _this.maps.svgObject.appendChild(markerSVGObject);\n _this.maps.element.appendChild(_this.maps.svgObject);\n isMarkersClustered = clusterTemplate(currentLayers, markerSVGObject, _this.maps, layerIndex, markerSVGObject, layerElement, true, true);\n }\n }\n if (markerTemplateElements.childElementCount === (markerDataLength - markerCounts - nullCount) && getElementByID(_this.maps.element.id + '_Secondary_Element')) {\n getElementByID(_this.maps.element.id + '_Secondary_Element').appendChild(markerTemplateElements);\n if (scale >= 1) {\n if (currentLayers.markerClusterSettings.allowClustering && !isMarkersClustered) {\n clusterTemplate(currentLayers, markerTemplateElements, _this.maps, layerIndex, markerSVGObject, layerElement, false, true);\n }\n }\n }\n });\n });\n });\n };\n /**\n * To translate the layer template elements\n *\n * @param {number} x - Specifies the x value\n * @param {number} y - Specifies the y value\n * @param {number} scale - Specifies the scale value\n * @param {Maps} maps - Specifies the maps value\n * @returns {void}\n * @private\n */\n Zoom.prototype.processTemplate = function (x, y, scale, maps) {\n for (var i = 0; i < this.templateCount; i++) {\n var factor = maps.mapLayerPanel.calculateFactor(this.currentLayer);\n var markerTemplateElement = getElementByID(maps.element.id + '_LayerIndex_' +\n i + '_Markers_Template_Group');\n var datalabelTemplateElemement = getElementByID(maps.element.id + '_LayerIndex_'\n + i + '_Label_Template_Group');\n var polygonElement = getElementByID(maps.element.id + '_LayerIndex_'\n + i + '_Polygons_Group');\n if ((!isNullOrUndefined(markerTemplateElement)) && markerTemplateElement.childElementCount > 0) {\n markerTemplateElement.style.visibility = 'visible';\n for (var k = 0; k < markerTemplateElement.childElementCount; k++) {\n this.markerTranslate(markerTemplateElement.childNodes[k], factor, x, y, scale, 'Template');\n }\n }\n if ((!isNullOrUndefined(datalabelTemplateElemement)) && datalabelTemplateElemement.childElementCount > 0) {\n for (var k = 0; k < datalabelTemplateElemement.childElementCount; k++) {\n this.dataLabelTranslate(datalabelTemplateElemement.childNodes[k], factor, x, y, scale, 'Template');\n }\n }\n if (!isNullOrUndefined(polygonElement)) {\n for (var k = 0; k < polygonElement.childElementCount; k++) {\n var width = maps.layersCollection[i].polygonSettings.polygons[k].borderWidth;\n polygonElement.childNodes[k].childNodes[0].setAttribute('stroke-width', (width / scale).toString());\n }\n }\n }\n };\n Zoom.prototype.dataLabelTranslate = function (element, factor, x, y, scale, type, animate) {\n if (animate === void 0) { animate = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var labelCollection = this.maps.dataLabelModule.dataLabelCollections;\n var text;\n var trimmedLable;\n var style = this.maps.layers[this.index].dataLabelSettings.textStyle;\n var zoomtext;\n var zoomtextSize;\n var zoomtrimLabel;\n var layerIndex = parseFloat(element.id.split('_LayerIndex_')[1].split('_')[0]);\n var shapeIndex = parseFloat(element.id.split('_shapeIndex_')[1].split('_')[0]);\n var labelIndex;\n if (element.id.indexOf('_LabelIndex_') > -1) {\n labelIndex = parseFloat(element.id.split('_LabelIndex_')[1].split('_')[0]);\n }\n var duration = this.currentLayer.animationDuration === 0 && animationMode === 'Enable' ? 1000 : this.currentLayer.animationDuration;\n for (var l = 0; l < labelCollection.length; l++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var label = labelCollection[l];\n if (label['layerIndex'] === layerIndex && label['shapeIndex'] === shapeIndex\n && label['labelIndex'] === labelIndex) {\n var labelX = label['location']['x'];\n var labelY = label['location']['y'];\n if (type === 'Template') {\n var locationX = 0;\n var locationY = 0;\n if (this.maps.isTileMap) {\n zoomtext = label['dataLabelText'];\n zoomtextSize = measureText(zoomtext, style);\n locationX = ((labelX + x) * scale) - (zoomtextSize['width'] / 2);\n locationY = ((labelY + y) * scale) - (zoomtextSize['height']);\n }\n else {\n var layerEle = getElementByID(this.maps.element.id + '_Layer_Collections');\n labelX = ((Math.abs(this.maps.baseMapRectBounds['min']['x'] - labelX)) * scale);\n labelY = ((Math.abs(this.maps.baseMapRectBounds['min']['y'] - labelY)) * scale);\n var layerOffset = layerEle.getBoundingClientRect();\n var elementOffset = element.parentElement.getBoundingClientRect();\n locationX = ((labelX) + (layerOffset.left - elementOffset.left));\n locationY = ((labelY) + (layerOffset.top - elementOffset.top));\n }\n element.style.left = locationX + 'px';\n element.style.top = locationY + 'px';\n }\n else {\n labelX = ((labelX + x) * scale);\n labelY = ((labelY + y) * scale);\n zoomtext = label['dataLabelText'];\n zoomtextSize = measureText(zoomtext, style);\n var start = labelY - zoomtextSize['height'] / 4;\n var end = labelY + zoomtextSize['height'] / 4;\n var xpositionEnds = labelX + zoomtextSize['width'] / 2;\n var xpositionStart = labelX - zoomtextSize['width'] / 2;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textLocations = { rightWidth: xpositionEnds, leftWidth: xpositionStart, heightTop: start, heightBottom: end };\n if (!animate || duration === 0) {\n element.setAttribute('transform', 'translate( ' + labelX + ' ' + labelY + ' )');\n }\n if (this.maps.layers[this.index].dataLabelSettings.smartLabelMode === 'Hide') {\n if (scale > 1) {\n text = ((this.maps.dataLabelShape[l] * scale) >= zoomtextSize['width']) ? zoomtext : '';\n element.textContent = text;\n }\n else {\n text = (this.maps.dataLabelShape[l] >= zoomtextSize['width']) ? zoomtext : '';\n element.textContent = text;\n }\n }\n if (this.maps.layers[this.index].dataLabelSettings.smartLabelMode === 'Trim') {\n if (scale > 1) {\n zoomtrimLabel = textTrim((this.maps.dataLabelShape[l] * scale), zoomtext, style);\n text = zoomtrimLabel;\n element.textContent = text;\n }\n else {\n zoomtrimLabel = textTrim(this.maps.dataLabelShape[l], zoomtext, style);\n text = zoomtrimLabel;\n element.textContent = text;\n }\n }\n if (this.maps.layers[this.index].dataLabelSettings.intersectionAction === 'Hide') {\n for (var m = 0; m < this.intersect.length; m++) {\n if (!isNullOrUndefined(this.intersect[m])) {\n if (textLocations['leftWidth'] > this.intersect[m]['rightWidth']\n || textLocations['rightWidth'] < this.intersect[m]['leftWidth']\n || textLocations['heightTop'] > this.intersect[m]['heightBottom']\n || textLocations['heightBottom'] < this.intersect[m]['heightTop']) {\n text = !isNullOrUndefined(text) ? text : zoomtext;\n element.textContent = text;\n }\n else {\n text = '';\n element.textContent = text;\n break;\n }\n }\n }\n this.intersect.push(textLocations);\n }\n if (this.maps.layers[this.index].dataLabelSettings.intersectionAction === 'Trim') {\n for (var j = 0; j < this.intersect.length; j++) {\n if (!isNullOrUndefined(this.intersect[j])) {\n if (textLocations['rightWidth'] < this.intersect[j]['leftWidth']\n || textLocations['leftWidth'] > this.intersect[j]['rightWidth']\n || textLocations['heightBottom'] < this.intersect[j]['heightTop']\n || textLocations['heightTop'] > this.intersect[j]['heightBottom']) {\n trimmedLable = !isNullOrUndefined(text) ? text : zoomtext;\n if (scale > 1) {\n trimmedLable = textTrim((this.maps.dataLabelShape[l] * scale), trimmedLable, style);\n }\n element.textContent = trimmedLable;\n }\n else {\n if (textLocations['leftWidth'] > this.intersect[j]['leftWidth']) {\n var width = this.intersect[j]['rightWidth'] - textLocations['leftWidth'];\n var difference = width - (textLocations['rightWidth'] - textLocations['leftWidth']);\n text = !isNullOrUndefined(text) ? text : zoomtext;\n trimmedLable = textTrim(difference, text, style);\n element.textContent = trimmedLable;\n break;\n }\n if (textLocations['leftWidth'] < this.intersect[j]['leftWidth']) {\n var width = textLocations['rightWidth'] - this.intersect[j]['leftWidth'];\n var difference = Math.abs(width - (textLocations['rightWidth'] - textLocations['leftWidth']));\n text = !isNullOrUndefined(text) ? text : zoomtext;\n trimmedLable = textTrim(difference, text, style);\n element.textContent = trimmedLable;\n break;\n }\n }\n }\n }\n this.intersect.push(textLocations);\n if (isNullOrUndefined(trimmedLable)) {\n trimmedLable = textTrim((this.maps.dataLabelShape[l] * scale), zoomtext, style);\n element.textContent = trimmedLable;\n }\n }\n if (animate || duration > 0) {\n smoothTranslate(element, 0, duration, new MapLocation(labelX, labelY));\n }\n }\n }\n }\n };\n Zoom.prototype.markerTranslate = function (element, factor, x, y, scale, type, animate) {\n if (animate === void 0) { animate = false; }\n var layerIndex = parseInt(element.id.split('_LayerIndex_')[1].split('_')[0], 10);\n var markerIndex = parseInt(element.id.split('_MarkerIndex_')[1].split('_')[0], 10);\n var dataIndex = parseInt(element.id.split('_dataIndex_')[1].split('_')[0], 10);\n var layer = this.maps.layersCollection[layerIndex];\n var marker = layer.markerSettings[markerIndex];\n if (!isNullOrUndefined(marker) && !isNullOrUndefined(marker.dataSource) && !isNullOrUndefined(marker.dataSource[dataIndex])) {\n var lng = (!isNullOrUndefined(marker.longitudeValuePath)) ?\n Number(getValueFromObject(marker.dataSource[dataIndex], marker.longitudeValuePath)) :\n !isNullOrUndefined(marker.dataSource[dataIndex]['longitude']) ? parseFloat(marker.dataSource[dataIndex]['longitude']) :\n !isNullOrUndefined(marker.dataSource[dataIndex]['Longitude']) ? parseFloat(marker.dataSource[dataIndex]['Longitude']) : 0;\n var lat = (!isNullOrUndefined(marker.latitudeValuePath)) ?\n Number(getValueFromObject(marker.dataSource[dataIndex], marker.latitudeValuePath)) :\n !isNullOrUndefined(marker.dataSource[dataIndex]['latitude']) ? parseFloat(marker.dataSource[dataIndex]['latitude']) :\n !isNullOrUndefined(marker.dataSource[dataIndex]['Latitude']) ? parseFloat(marker.dataSource[dataIndex]['Latitude']) : 0;\n var duration = this.currentLayer.animationDuration === 0 && animationMode === 'Enable' ? 1000 : this.currentLayer.animationDuration;\n var location_2 = (this.maps.isTileMap) ? convertTileLatLongToPoint(new Point(lng, lat), this.maps.tileZoomLevel, this.maps.tileTranslatePoint, true) : convertGeoToPoint(lat, lng, factor, layer, this.maps);\n if (this.maps.isTileMap) {\n if (type === 'Template') {\n var templateOffset = element.getBoundingClientRect();\n element.style.left = ((location_2.x - (templateOffset.width / 2)) + marker.offset.x) + 'px';\n element.style.top = ((location_2.y - (templateOffset.height / 2)) + marker.offset.y) + 'px';\n if (this.maps.layers[this.maps.baseLayerIndex].layerType === 'GoogleStaticMap') {\n var staticMapOffset = getElementByID(this.maps.element.id + '_StaticGoogleMap').getBoundingClientRect();\n var staticMapOffsetWidth = 640;\n if (element['style']['display'] !== 'none') {\n if ((staticMapOffset['x'] > templateOffset['x'] || staticMapOffset['x'] + staticMapOffsetWidth < templateOffset['x'] + templateOffset['width'])\n && (staticMapOffset['y'] > templateOffset['y'] || staticMapOffset['y'] + staticMapOffset['height'] < templateOffset['y'] + templateOffset['height'])) {\n element.style.display = 'none';\n }\n else if ((staticMapOffset['x'] > templateOffset['x'] || staticMapOffset['x'] + staticMapOffsetWidth < templateOffset['x'] + templateOffset['width'])) {\n element.style.display = 'none';\n }\n }\n }\n }\n else {\n location_2.x += marker.offset.x;\n location_2.y += marker.offset.y;\n element.setAttribute('transform', 'translate( ' + location_2.x + ' ' + location_2.y + ' )');\n }\n }\n else {\n if (type === 'Template') {\n if (duration > 0) {\n location_2.x = ((Math.abs(this.maps.baseMapRectBounds['min']['x'] - location_2.x)) * scale);\n location_2.y = ((Math.abs(this.maps.baseMapRectBounds['min']['y'] - location_2.y)) * scale);\n var layerOffset = getElementByID(this.maps.element.id + '_Layer_Collections').getBoundingClientRect();\n var elementOffset = element.parentElement.getBoundingClientRect();\n element.style.left = (((location_2.x) + (layerOffset.left - elementOffset.left)) + marker.offset.x) + 'px';\n element.style.top = (((location_2.y) + (layerOffset.top - elementOffset.top)) + marker.offset.y) + 'px';\n element.style.transform = 'translate(-50%, -50%)';\n }\n else {\n var elementOffset = element.getBoundingClientRect();\n element.style.left = ((location_2.x + x) * scale) + marker.offset.x - this.maps.mapAreaRect.x - (elementOffset.width / 2) + 'px';\n element.style.top = ((location_2.y + y) * scale) + marker.offset.y - this.maps.mapAreaRect.y - (elementOffset.height / 2) + 'px';\n }\n }\n else {\n location_2.x = (((location_2.x + x) * scale) + marker.offset.x);\n location_2.y = (((location_2.y + y) * scale) + marker.offset.y);\n if (!animate || duration === 0) {\n element.setAttribute('transform', 'translate( ' + location_2.x + ' ' + location_2.y + ' )');\n }\n else {\n smoothTranslate(element, 0, duration, location_2);\n }\n }\n }\n }\n };\n Zoom.prototype.markerLineAnimation = function (map) {\n if (map.isTileMap) {\n for (var i = 0; i < map.layersCollection.length; i++) {\n var markerTemplateElement = getElementByID(this.maps.element.id + '_LayerIndex_' + i + '_Markers_Template_Group');\n var lineElement = getElementByID(this.maps.element.id + '_LayerIndex_' + i + '_line_Group');\n var polygonElement = getElementByID(this.maps.element.id + '_LayerIndex_' + i + '_Polygons_Group');\n if (!isNullOrUndefined(markerTemplateElement)) {\n markerTemplateElement.style.visibility = 'hidden';\n }\n if (!isNullOrUndefined(lineElement)) {\n lineElement.style.visibility = 'hidden';\n }\n if (!isNullOrUndefined(polygonElement)) {\n polygonElement.style.visibility = 'hidden';\n }\n }\n }\n };\n /**\n * @param {PanDirection} direction - Specifies the direction of the panning.\n * @param {number} xDifference - Specifies the distance moved in the horizontal direction.\n * @param {number} yDifference - Specifies the distance moved in the vertical direction.\n * @param {PointerEvent | TouchEvent | KeyboardEvent} mouseLocation - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n Zoom.prototype.panning = function (direction, xDifference, yDifference, mouseLocation) {\n var map = this.maps;\n var panArgs;\n var down = this.mouseDownPoints;\n var move = this.mouseMovePoints;\n var scale = map.scale;\n map.markerZoomedState = false;\n map.zoomPersistence = map.enablePersistence;\n map.defaultState = false;\n map.initialCheck = false;\n var translatePoint = map.translatePoint;\n var prevTilePoint = map.tileTranslatePoint;\n var x;\n var y;\n xDifference = !isNullOrUndefined(xDifference) ? xDifference : (down.x - move.x);\n yDifference = !isNullOrUndefined(yDifference) ? yDifference : (down.y - move.y);\n this.maps.mergeCluster();\n if (!map.isTileMap) {\n var legendElement = document.getElementById(map.element.id + '_Legend_Group');\n var legendHeight = !isNullOrUndefined(legendElement) ? legendElement.getClientRects()[0].height : 0;\n x = translatePoint.x - xDifference / scale;\n y = translatePoint.y - yDifference / scale;\n var layerRect = getElementByID(map.element.id + '_Layer_Collections').getBoundingClientRect();\n var elementRect = getElementByID(map.element.id + '_svg').getBoundingClientRect();\n var panningXDirection = ((xDifference < 0 ? layerRect.left <= (elementRect.left + map.mapAreaRect.x) :\n ((layerRect.left + layerRect.width + map.mapAreaRect.x) >= (elementRect.width))));\n var panningYDirection = ((yDifference < 0 ? layerRect.top <= (elementRect.top + map.mapAreaRect.y) :\n ((layerRect.top + layerRect.height + legendHeight + map.margin.top) >= (elementRect.top + elementRect.height))));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location_3 = this.maps.getGeoLocation(this.maps.layersCollection.length - 1, mouseLocation['layerX'], mouseLocation['layerY']);\n var minMaxLatitudeLongitude = this.maps.getMinMaxLatitudeLongitude();\n panArgs = {\n cancel: false, name: pan, maps: map,\n tileTranslatePoint: {}, translatePoint: { previous: translatePoint, current: new Point(x, y) },\n scale: map.scale, tileZoomLevel: map.tileZoomLevel, latitude: location_3['latitude'], longitude: location_3['longitude'],\n minLatitude: minMaxLatitudeLongitude.minLatitude, maxLatitude: minMaxLatitudeLongitude.maxLatitude,\n minLongitude: minMaxLatitudeLongitude.minLongitude, maxLongitude: minMaxLatitudeLongitude.maxLongitude\n };\n map.trigger(pan, panArgs);\n if (!panArgs.cancel) {\n if (panningXDirection && panningYDirection) {\n map.translatePoint = new Point(x, y);\n this.applyTransform(map);\n }\n else if (panningXDirection) {\n map.translatePoint = new Point(x, map.translatePoint.y);\n this.applyTransform(map);\n }\n else if (panningYDirection) {\n map.translatePoint = new Point(map.translatePoint.x, y);\n this.applyTransform(map);\n }\n }\n this.maps.zoomNotApplied = false;\n }\n else if (this.maps.tileZoomLevel > 1) {\n x = map.tileTranslatePoint.x - xDifference;\n y = map.tileTranslatePoint.y - yDifference;\n this.distanceX = x - map.tileTranslatePoint.x;\n this.distanceY = y - map.tileTranslatePoint.y;\n map.tileTranslatePoint.x = x;\n map.tileTranslatePoint.y = y;\n if ((map.tileTranslatePoint.y > -10 && yDifference < 0) || ((map.tileTranslatePoint.y < -((Math.pow(2, this.maps.tileZoomLevel) - 2) * 256) && yDifference > 0))) {\n map.tileTranslatePoint.x = x + xDifference;\n map.tileTranslatePoint.y = y + yDifference;\n }\n map.translatePoint.x = (map.tileTranslatePoint.x - xDifference) / map.scale;\n map.translatePoint.y = (map.tileTranslatePoint.y - yDifference) / map.scale;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location_4 = this.maps.getTileGeoLocation(mouseLocation['layerX'], mouseLocation['layerY']);\n var minMaxLatitudeLongitude = this.maps.getMinMaxLatitudeLongitude();\n panArgs = {\n cancel: false, name: pan, maps: map,\n tileTranslatePoint: { previous: prevTilePoint, current: map.tileTranslatePoint },\n translatePoint: { previous: translatePoint, current: map.translatePoint }, scale: map.scale,\n tileZoomLevel: map.tileZoomLevel, latitude: location_4['latitude'], longitude: location_4['longitude'],\n minLatitude: minMaxLatitudeLongitude.minLatitude, maxLatitude: minMaxLatitudeLongitude.maxLatitude,\n minLongitude: minMaxLatitudeLongitude.minLongitude, maxLongitude: minMaxLatitudeLongitude.maxLongitude\n };\n map.trigger(pan, panArgs);\n map.mapLayerPanel.generateTiles(map.tileZoomLevel, map.tileTranslatePoint, 'Pan');\n this.applyTransform(map);\n }\n map.zoomTranslatePoint = map.translatePoint;\n this.mouseDownPoints = this.mouseMovePoints;\n this.isSingleClick = false;\n };\n Zoom.prototype.toAlignSublayer = function () {\n this.maps.translatePoint.x = !isNullOrUndefined(this.distanceX) ? (this.maps.translatePoint.x -\n (this.distanceX / this.maps.scale)) : this.maps.translatePoint.x;\n this.maps.translatePoint.y = !isNullOrUndefined(this.distanceY) ? this.maps.translatePoint.y -\n (this.distanceY / this.maps.scale) : this.maps.translatePoint.y;\n this.applyTransform(this.maps, false);\n };\n /**\n * @private\n */\n Zoom.prototype.toolBarZooming = function (zoomFactor, type) {\n var _this = this;\n var map = this.maps;\n map.initialCheck = map.isMarkerZoomCompleted = false;\n map.defaultState = ((type === 'Reset' && zoomFactor === 1 && !(map.zoomSettings.resetToInitial && map.applyZoomReset))\n || (type === 'ZoomOut' && zoomFactor === 1));\n var prevLevel = map.tileZoomLevel;\n var scale = map.previousScale = map.scale;\n map.markerZoomedState = false;\n map.zoomPersistence = map.enablePersistence;\n map.mapScaleValue = zoomFactor;\n var maxZoom = map.zoomSettings.maxZoom;\n var minZoom = map.zoomSettings.minZoom;\n var size = map.mapAreaRect;\n var translatePoint = map.previousPoint = map.translatePoint;\n var prevTilePoint = map.tileTranslatePoint;\n map.previousProjection = type === 'Reset' ? undefined : map.projectionType;\n zoomFactor = (type === 'ZoomOut') ? (Math.round(zoomFactor) === 1 ? 1 : zoomFactor) : zoomFactor;\n zoomFactor = (type === 'Reset') ? minZoom : (Math.round(zoomFactor) === 0) ? 1 : zoomFactor;\n zoomFactor = (minZoom > zoomFactor && type === 'ZoomIn') ? minZoom + 1 : zoomFactor;\n var zoomArgs;\n if ((!map.isTileMap) && (type === 'ZoomIn' ? zoomFactor >= minZoom && Math.round(zoomFactor) <= maxZoom : zoomFactor >= minZoom\n || map.isReset)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var min = map.baseMapRectBounds['min'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var max = map.baseMapRectBounds['max'];\n var mapWidth = Math.abs(max['x'] - min['x']);\n var mapHeight = Math.abs(min['y'] - max['y']);\n var translatePointX = void 0;\n var translatePointY = void 0;\n if (zoomFactor < 1.2 && map.projectionType !== 'Eckert5') {\n if (mapHeight === 0 || mapWidth === 0 || mapHeight === mapWidth) {\n mapWidth = size.width / 2;\n mapHeight = size.height;\n }\n zoomFactor = parseFloat(Math.min(size.width / mapWidth, size.height / mapHeight).toFixed(2));\n zoomFactor = zoomFactor > 1.05 ? 1 : zoomFactor;\n map.translatePoint = this.calculateInitalZoomTranslatePoint(zoomFactor, mapWidth, mapHeight, size, min, map);\n }\n else {\n translatePointX = translatePoint.x - (((size.width / scale) - (size.width / zoomFactor)) / 2);\n translatePointY = translatePoint.y - (((size.height / scale) - (size.height / zoomFactor)) / 2);\n var currentHeight = Math.abs(map.baseMapRectBounds['max']['y'] - map.baseMapRectBounds['min']['y']) * zoomFactor;\n translatePointX = (currentHeight < map.mapAreaRect.height) ? (size.x + ((-(min['x'])) + ((size.width / 2) - (mapWidth / 2))))\n : translatePointX;\n translatePointY = (currentHeight < map.mapAreaRect.height) ? (size.y + ((-(min['y'])) + ((size.height / 2) - (mapHeight / 2))))\n : translatePointY;\n map.translatePoint = new Point(translatePointX, translatePointY);\n }\n map.zoomTranslatePoint = map.translatePoint;\n map.scale = zoomFactor;\n if (this.triggerZoomEvent(prevTilePoint, prevLevel, type)) {\n map.translatePoint = map.zoomTranslatePoint = map.previousPoint;\n map.scale = map.previousScale;\n }\n else {\n this.applyTransform(map, true);\n }\n }\n else if ((map.isTileMap) && ((zoomFactor >= minZoom && zoomFactor <= maxZoom) || map.isReset)) {\n var tileZoomFactor = prevLevel < minZoom && !map.isReset ? minZoom : zoomFactor;\n map.scale = Math.pow(2, tileZoomFactor - 1);\n map.tileZoomLevel = tileZoomFactor;\n if (map.previousScale !== map.scale || map.isReset) {\n map.zoomSettings.zoomFactor = zoomFactor;\n var position = { x: map.availableSize.width / 2, y: map.availableSize.height / 2 };\n this.getTileTranslatePosition(prevLevel, tileZoomFactor, position, type);\n if (map.zoomSettings.resetToInitial && map.applyZoomReset && type === 'Reset' || (type === 'ZoomOut' && map.zoomSettings.resetToInitial && map.applyZoomReset && tileZoomFactor <= map.initialZoomLevel)) {\n map.initialCheck = true;\n map.zoomPersistence = false;\n map.tileTranslatePoint.x = map.initialTileTranslate.x;\n map.tileTranslatePoint.y = map.initialTileTranslate.y;\n tileZoomFactor = map.tileZoomLevel = map.mapScaleValue = map.initialZoomLevel;\n }\n if (this.triggerZoomEvent(prevTilePoint, prevLevel, type)) {\n map.translatePoint = map.tileTranslatePoint = new Point(0, 0);\n map.scale = map.previousScale;\n map.tileZoomLevel = prevLevel;\n map.zoomSettings.zoomFactor = map.previousScale;\n }\n else {\n map.translatePoint.y = (map.tileTranslatePoint.y - (0.01 * map.mapScaleValue)) / map.scale;\n map.translatePoint.x = (map.tileTranslatePoint.x - (0.01 * map.mapScaleValue)) / map.scale;\n if (document.getElementById(this.maps.element.id + '_LayerIndex_1')) {\n document.getElementById(this.maps.element.id + '_LayerIndex_1').style.display = 'none';\n }\n if (document.querySelector('.GroupElement')) {\n document.querySelector('.GroupElement').style.display = 'none';\n }\n this.markerLineAnimation(map);\n map.mapLayerPanel.generateTiles(tileZoomFactor, map.tileTranslatePoint, type);\n var element1 = document.getElementById(this.maps.element.id + '_tiles');\n var animationDuration = this.maps.layersCollection[0].animationDuration === 0 && animationMode === 'Enable' ? 1000 : this.maps.layersCollection[0].animationDuration;\n setTimeout(function () {\n if (type === 'ZoomOut' || type === 'Reset') {\n // element1.removeChild(element1.children[element1.childElementCount - 1]);\n // element1.childElementCount ? element1.removeChild(element1.children[element1.childElementCount - 1]) : element1;\n }\n _this.applyTransform(_this.maps, true);\n if (document.getElementById(_this.maps.element.id + '_LayerIndex_1')) {\n document.getElementById(_this.maps.element.id + '_LayerIndex_1').style.display = 'block';\n }\n _this.maps.isAddLayer = false;\n }, animationDuration);\n }\n }\n this.maps.zoomNotApplied = false;\n }\n };\n /**\n * @private\n */\n Zoom.prototype.createZoomingToolbars = function () {\n var map = this.maps;\n var zoomInElements;\n var zoomOutElements;\n this.toolBarGroup = map.renderer.createGroup({\n id: map.element.id + '_Zooming_KitCollection',\n opacity: map.theme.toLowerCase() === 'fluentdark' ? 0.6 : 0.3\n });\n var xSpacing = 15;\n var ySpacing = 15;\n var toolbar = map.zoomSettings.toolbarSettings;\n var button = map.zoomSettings.toolbarSettings.buttonSettings;\n this.maps.toolbarProperties = {\n toolBarOrientation: toolbar.orientation === 'Horizontal' ? map.zoomSettings.toolBarOrientation : toolbar.orientation,\n highlightColor: button.highlightColor == null ? map.zoomSettings.highlightColor : button.highlightColor,\n selectionColor: button.selectionColor == null ? map.zoomSettings.selectionColor : button.selectionColor,\n horizontalAlignment: toolbar.horizontalAlignment === 'Far' ? map.zoomSettings.horizontalAlignment : toolbar.horizontalAlignment,\n verticalAlignment: toolbar.verticalAlignment === 'Near' ? map.zoomSettings.verticalAlignment : toolbar.verticalAlignment,\n color: button.color == null ? map.zoomSettings.color : button.color,\n shapeOpacity: button.opacity !== 1 ? button.opacity : 1,\n borderOpacity: button.borderOpacity !== 1 ? button.borderOpacity : 1\n };\n var cx = button.radius / 4;\n var cy = button.radius / 4;\n var radius = button.radius / 2;\n var padding = button.padding;\n var orientation = this.maps.toolbarProperties.toolBarOrientation;\n var toolbarCollection = map.zoomSettings.toolbarSettings.buttonSettings.toolbarItems.map(function (value) { return value; });\n var toolbarsCollection = toolbarCollection.length === 3 ? map.zoomSettings.toolbars : toolbarCollection;\n xSpacing = (button.radius / 4) + (button.borderWidth / 2) + padding;\n ySpacing = (button.radius / 4) + (button.borderWidth / 2) + padding;\n var shadowElement = '<filter id=\"chart_shadow\" height=\"130%\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"5\"/>';\n shadowElement += '<feOffset dx=\"-3\" dy=\"4\" result=\"offsetblur\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"1\"/>';\n shadowElement += '</feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge></filter>';\n var toolBarLength = toolbarCollection.length;\n var toolWidth = (orientation === 'Horizontal') ? ((toolBarLength * button.radius) + (toolBarLength * padding) + padding + (toolBarLength * button.borderWidth)) : (button.radius + button.borderWidth + (2 * padding));\n var toolHeight = (orientation === 'Horizontal') ? (button.radius + button.borderWidth + (2 * padding)) : ((toolBarLength * button.radius) + (toolBarLength * padding) + padding + (toolBarLength * button.borderWidth));\n var defElement = map.renderer.createDefs();\n defElement.innerHTML = shadowElement;\n this.toolBarGroup.appendChild(defElement);\n var outerElement = map.renderer.drawRectangle(new RectOption(map.element.id + '_Zooming_Rect', toolbar.backgroundColor, { color: toolbar.borderColor, width: toolbar.borderWidth, opacity: toolbar.borderOpacity }, toolbar.borderOpacity, new Rect((toolbar.borderWidth / 2), (toolbar.borderWidth / 2), (toolWidth - toolbar.borderWidth), (toolHeight - toolbar.borderWidth)), 0, 0));\n this.toolBarGroup.appendChild(outerElement);\n var scaleX = (button.radius - (button.borderWidth / 2)) / 30;\n for (var i = 0; i < toolbarsCollection.length; i++) {\n if (i !== 0) {\n xSpacing = (map.toolbarProperties.toolBarOrientation === 'Horizontal') ? (xSpacing + (button.radius + padding) + button.borderWidth) : xSpacing;\n ySpacing = (map.toolbarProperties.toolBarOrientation === 'Horizontal') ? ySpacing : (ySpacing + (button.radius + padding) + button.borderWidth);\n }\n var toolbar_1 = toolbarsCollection[i];\n var pathStroke = !isNullOrUndefined(this.maps.toolbarProperties.color) ? this.maps.toolbarProperties.color : this.maps.themeStyle.zoomFillColor;\n var borderColor = button.borderColor || this.maps.themeStyle.zoomFillColor;\n this.currentToolbarEle = map.renderer.createGroup({\n id: map.element.id + '_Zooming_ToolBar_' + toolbar_1 + '_Group',\n transform: 'translate( ' + xSpacing + ' ' + ySpacing + ' ) '\n });\n this.currentToolbarEle.setAttribute('class', 'e-maps-toolbar');\n this.currentToolbarEle.appendChild(map.renderer.drawCircle(new CircleOption(map.element.id + '_Zooming_ToolBar_' + toolbar_1 + '_Rect', button.fill, { color: borderColor, width: button.borderWidth, opacity: button.borderOpacity }, button.opacity, cx, cy, radius, '')));\n var fillColor = '';\n var opacity = 1;\n var direction = '';\n var polygonDirection = '';\n var fill = button.fill;\n this.selectionColor = this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor;\n switch (toolbar_1.toLowerCase()) {\n case 'zoom': {\n var fillColor_1 = void 0;\n var strokeColor = void 0;\n direction = 'M0.001,14.629L1.372,16l4.571-4.571v-0.685l0.228-0.274c1.051,0.868,2.423,1.417,3.885,1.417c3.291,0,';\n direction += '5.943-2.651,5.943-5.943S13.395,0,10.103,0S4.16,2.651,4.16,5.943c0,1.508,0.503,2.834,1.417,3.885l-0.274,0.228H4.571';\n direction = direction + 'L0.001,14.629L0.001,14.629z M5.943,5.943c0-2.285,1.828-4.114,4.114-4.114s4.114,1.828,4.114,';\n this.currentToolbarEle.setAttribute('class', (this.maps.zoomSettings.enableSelectionZooming ? 'e-maps-toolbar' : ''));\n if (this.maps.zoomSettings.enablePanning && !this.maps.zoomSettings.enableSelectionZooming) {\n fillColor_1 = fill;\n strokeColor = pathStroke;\n }\n else if (this.maps.zoomSettings.enablePanning && this.maps.zoomSettings.enableSelectionZooming) {\n fillColor_1 = fill;\n strokeColor = pathStroke;\n }\n else if (!this.maps.zoomSettings.enablePanning && !this.maps.zoomSettings.enableSelectionZooming) {\n fillColor_1 = fill;\n strokeColor = pathStroke;\n }\n else if (!this.maps.zoomSettings.enablePanning && this.maps.zoomSettings.enableSelectionZooming) {\n fillColor_1 = this.maps.themeStyle.zoomFillColor;\n strokeColor = pathStroke;\n }\n else if (!this.maps.zoomSettings.enablePanning && !this.maps.zoomSettings.enableSelectionZooming) {\n fillColor_1 = fill;\n strokeColor = pathStroke;\n }\n else {\n fillColor_1 = this.selectionColor;\n strokeColor = this.selectionColor;\n }\n var zoomPath = map.renderer.drawPath(new PathOption(map.element.id + '_Zooming_ToolBar_' + toolbar_1, fillColor_1, 1, strokeColor, opacity, opacity, null, direction + '4.114s-1.828,4.114-4.114,4.114S5.943,8.229,5.943,5.943z'));\n zoomPath.setAttribute('transform', 'scale( ' + scaleX + ',' + scaleX + ' )');\n this.currentToolbarEle.appendChild(zoomPath);\n this.zoomElements = this.currentToolbarEle;\n this.wireEvents(this.currentToolbarEle, this.performToolBarAction);\n break;\n }\n case 'zoomin':\n direction = 'M 8, 0 L 8, 16 M 0, 8 L 16, 8';\n var zoomInPath = map.renderer.drawPath(new PathOption(map.element.id + '_Zooming_ToolBar_' + toolbar_1 + '_Path', fill, 3, pathStroke, 1, 1, null, direction));\n zoomInPath.setAttribute('transform', 'scale( ' + scaleX + ',' + scaleX + ' )');\n this.currentToolbarEle.appendChild(zoomInPath);\n zoomInElements = this.currentToolbarEle;\n this.wireEvents(this.currentToolbarEle, this.performToolBarAction);\n break;\n case 'zoomout':\n direction = 'M 0, 8 L 16, 8';\n var zoomOutPath = map.renderer.drawPath(new PathOption(map.element.id + '_Zooming_ToolBar_' + toolbar_1, fill, 3, pathStroke, 1, 1, null, direction));\n zoomOutPath.setAttribute('transform', 'scale( ' + scaleX + ',' + scaleX + ' )');\n this.currentToolbarEle.appendChild(zoomOutPath);\n zoomOutElements = this.currentToolbarEle;\n this.wireEvents(this.currentToolbarEle, this.performToolBarAction);\n break;\n case 'pan': {\n var color = void 0;\n direction = 'M5,3h2.3L7.275,5.875h1.4L8.65,3H11L8,0L5,3z M3,11V8.7l2.875,0.025v-1.4L3,7.35V5L0,8L3,';\n direction += '11z M11,13H8.7l0.025-2.875h-1.4L7.35,13H5l3,3L11,13z M13,5v2.3l-2.875-0.025v1.4L13,8.65V11l3-3L13,5z';\n this.currentToolbarEle.setAttribute('class', (this.maps.zoomSettings.enablePanning ? 'e-maps-toolbar' : ''));\n if (this.maps.zoomSettings.enablePanning && this.maps.zoomModule.isDragZoom) {\n color = this.selectionColor || this.maps.themeStyle.zoomFillColor;\n }\n else if (!this.maps.zoomSettings.enablePanning) {\n color = this.selectionColor || this.maps.themeStyle.zoomFillColor;\n this.currentToolbarEle.setAttribute('class', '');\n }\n else {\n color = fill || this.maps.themeStyle.zoomFillColor;\n }\n var panPath = map.renderer.drawPath(new PathOption(map.element.id + '_Zooming_ToolBar_' + toolbar_1, color, 1, pathStroke, opacity, opacity, null, direction));\n panPath.setAttribute('transform', 'scale( ' + scaleX + ',' + scaleX + ' )');\n this.currentToolbarEle.appendChild(panPath);\n this.panColor = color;\n this.panElements = this.currentToolbarEle;\n this.wireEvents(this.currentToolbarEle, this.performToolBarAction);\n break;\n }\n case 'reset':\n direction = 'M12.364,8h-2.182l2.909,3.25L16,8h-2.182c0-3.575-2.618-6.5-5.818-6.5c-1.128,0-2.218,0.366-3.091,';\n direction += '1.016l1.055,1.178C6.581,3.328,7.272,3.125,8,3.125C10.4,3.125,12.363,5.319,12.364,8L12.364,8z M11.091,';\n direction += '13.484l-1.055-1.178C9.419,12.672,8.728,12.875,8,12.875c-2.4,0-4.364-2.194-4.364-4.875h2.182L2.909,4.75L0,8h2.182c0,';\n var resetPath = map.renderer.drawPath(new PathOption(map.element.id + '_Zooming_ToolBar_' + toolbar_1, fill, null, pathStroke, 1, 1, null, direction + '3.575,2.618,6.5,5.818,6.5C9.128,14.5,10.219,14.134,11.091,13.484L11.091,13.484z'));\n resetPath.setAttribute('transform', 'scale( ' + scaleX + ',' + scaleX + ' )');\n this.currentToolbarEle.appendChild(resetPath);\n this.wireEvents(this.currentToolbarEle, this.performToolBarAction);\n break;\n }\n this.toolBarGroup.appendChild(this.currentToolbarEle);\n }\n };\n /**\n * @private\n */\n Zoom.prototype.performToolBarAction = function (e) {\n var target = e.target;\n e.stopImmediatePropagation();\n var isTouch = e.pointerType === 'touch' || e.pointerType === '2' || (e.type.indexOf('touch') > -1);\n var toolbar = target.id.split('_Zooming_ToolBar_')[1].split('_')[0];\n var isToolbarPerform = true;\n switch (toolbar.toLowerCase()) {\n case 'zoomin':\n isToolbarPerform = (this.maps.isTileMap ? this.maps.tileZoomLevel : this.maps.scale) + 1 <= this.maps.zoomSettings.maxZoom;\n break;\n case 'zoomout':\n var scaleValue = this.maps.isTileMap ? this.maps.tileZoomLevel : this.maps.scale;\n isToolbarPerform = (this.maps.projectionType === 'Miller' || this.maps.projectionType === 'Winkel3' ||\n this.maps.projectionType === 'AitOff') ? Math.round(scaleValue) - 1 >= this.maps.zoomSettings.minZoom :\n (scaleValue) - 1 >= this.maps.zoomSettings.minZoom;\n break;\n case 'reset':\n isToolbarPerform = Math.round(this.maps.isTileMap ? this.maps.tileZoomLevel : this.maps.scale) != this.maps.zoomSettings.minZoom;\n break;\n }\n if (isTouch && isToolbarPerform) {\n this.handled = true;\n this.performZoomingByToolBar(toolbar);\n }\n else if ((e.type === 'mousedown' || e.type === 'pointerdown') && !this.handled && isToolbarPerform) {\n this.handled = false;\n this.performZoomingByToolBar(toolbar);\n }\n else {\n this.handled = false;\n }\n };\n /**\n * @param {string} type - Specifies the type.\n * @returns {void}\n * @private\n */\n Zoom.prototype.performZoomingByToolBar = function (type) {\n var map = this.maps;\n map.isReset = false;\n var scale = 0;\n var stateColor = this.fillColor || this.maps.themeStyle.zoomFillColor;\n switch (type.toLowerCase()) {\n case 'zoom':\n this.panColor = stateColor;\n this.zoomColor = this.maps.zoomSettings.enableSelectionZooming ? this.selectionColor : stateColor;\n this.applySelection(this.zoomElements, this.zoomColor);\n this.applySelection(this.panElements, this.panColor);\n this.isPan = false;\n this.isZoomSelection = this.maps.zoomSettings.enableSelectionZooming;\n break;\n case 'pan':\n this.panColor = this.maps.zoomSettings.enablePanning ? this.selectionColor : stateColor;\n this.zoomColor = stateColor;\n if (!this.maps.zoomSettings.enablePanning) {\n this.applySelection(this.zoomElements, this.selectionColor);\n this.applySelection(this.panElements, this.panColor);\n }\n else {\n this.applySelection(this.zoomElements, (this.fillColor || stateColor));\n this.applySelection(this.panElements, this.panColor);\n }\n this.isPan = this.maps.zoomSettings.enablePanning;\n this.isZoomSelection = false;\n break;\n case 'zoomin':\n map.staticMapZoom = map.tileZoomLevel;\n if (map.staticMapZoom > 0 && map.staticMapZoom < 22) {\n map.staticMapZoom += 1;\n }\n this.toolBarZooming((map.isTileMap ? map.tileZoomLevel : map.scale) + 1, 'ZoomIn');\n scale = this.maps.isTileMap ? Math.round(this.maps.tileZoomLevel) : Math.round(this.maps.mapScaleValue);\n if (!this.isZoomSelection) {\n if (scale === map.zoomSettings.maxZoom || scale > 1 || (scale === 1 && this.maps.isTileMap)) {\n this.applySelection(this.zoomElements, stateColor);\n this.applySelection(this.panElements, map.zoomSettings.enablePanning ? this.selectionColor : stateColor);\n }\n else if (scale === 1 && !this.maps.isTileMap) {\n this.applySelection(this.zoomElements, stateColor);\n this.applySelection(this.panElements, stateColor);\n }\n }\n break;\n case 'zoomout':\n map.staticMapZoom = map.tileZoomLevel;\n map.markerCenterLatitude = null;\n map.markerCenterLongitude = null;\n this.toolBarZooming((map.isTileMap ? map.tileZoomLevel : map.scale) - 1, 'ZoomOut');\n scale = this.maps.isTileMap ? Math.round(this.maps.tileZoomLevel) : Math.round(this.maps.mapScaleValue);\n if (!this.isPan && this.isZoomSelection) {\n this.panColor = stateColor;\n this.zoomColor = this.selectionColor;\n this.applySelection(this.zoomElements, this.selectionColor);\n this.applySelection(this.panElements, this.panColor);\n }\n else {\n if (scale <= 1 && !map.isTileMap) {\n this.applySelection(this.panElements, stateColor);\n }\n else {\n this.applySelection(this.panElements, map.zoomSettings.enablePanning ? this.selectionColor : stateColor);\n }\n }\n break;\n case 'reset':\n map.staticMapZoom = map.zoomSettings.enable ? map.zoomSettings.zoomFactor : 0;\n map.markerCenterLatitude = null;\n map.markerCenterLongitude = null;\n this.isZoomSelection = false;\n this.isPan = map.zoomSettings.enablePanning;\n this.toolBarZooming(map.zoomSettings.minZoom, 'Reset');\n if ((this.isPan && !this.isZoomSelection) || (!this.isPan && this.isZoomSelection)) {\n if (!this.maps.zoomSettings.enablePanning) {\n this.applySelection(this.zoomElements, this.selectionColor);\n this.applySelection(this.panElements, stateColor);\n }\n else {\n this.applySelection(this.zoomElements, stateColor);\n this.applySelection(this.panElements, this.selectionColor);\n }\n }\n else if (!this.isPan && !this.isZoomSelection) {\n this.applySelection(this.zoomElements, stateColor);\n this.applySelection(this.panElements, stateColor);\n }\n }\n this.panningStyle(type.toLowerCase());\n };\n Zoom.prototype.panningStyle = function (toolbar) {\n var svg = getElementByID(this.maps.element.id + '_svg');\n if (toolbar === 'pan' || (this.isPanning && toolbar !== 'reset')) {\n svg.setAttribute('class', 'e-maps-panning');\n }\n else {\n svg.setAttribute('class', '');\n }\n };\n Zoom.prototype.applySelection = function (elements, color) {\n if (!elements) {\n return;\n }\n var childElement;\n for (var i = 0; i < elements.childElementCount; i++) {\n childElement = elements.childNodes[i];\n if (childElement.tagName !== 'circle') {\n childElement.setAttribute('fill', (elements.id.indexOf('Pan') > -1 ? color : 'transparent'));\n childElement.setAttribute('stroke', color);\n }\n }\n };\n /**\n * @private\n */\n Zoom.prototype.showTooltip = function (e) {\n var text = e.target.id.split('_Zooming_ToolBar_')[1].split('_')[0];\n var tooltip = this.maps.zoomSettings.toolbarSettings.tooltipSettings;\n var tooltipSettings = {\n visible: tooltip.visible,\n fill: tooltip.fill,\n borderOpacity: tooltip.borderOpacity,\n borderWidth: tooltip.borderWidth,\n borderColor: tooltip.borderColor,\n fontColor: tooltip.fontColor,\n fontFamily: tooltip.fontFamily,\n fontStyle: tooltip.fontStyle,\n fontWeight: tooltip.fontWeight,\n fontSize: tooltip.fontSize || '10px',\n fontOpacity: tooltip.fontOpacity\n };\n tooltipSettings.fontFamily = this.maps.themeStyle.fontFamily;\n if (!this.isTouch) {\n createTooltip('EJ2_Map_Toolbar_Tip', this.maps.getLocalizedLabel(text), (e.pageY + 10), (e.pageX + 10), tooltipSettings);\n if (this.maps.isDevice) {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n }\n }\n };\n /**\n * @private\n */\n Zoom.prototype.removeTooltip = function () {\n if (getElementByID('EJ2_Map_Toolbar_Tip')) {\n remove(getElementByID('EJ2_Map_Toolbar_Tip'));\n }\n };\n /**\n * @private\n */\n Zoom.prototype.alignToolBar = function () {\n var map = this.maps;\n var padding = 10;\n var element = createElement('div', { id: map.element.id + '_ToolBar' });\n element.style.cssText = 'position:absolute;z-index:2';\n var rectSVGObject = map.renderer.createSvg({\n id: map.element.id + '_Zooming_ToolBar', width: 10, height: 10\n });\n rectSVGObject.appendChild(this.toolBarGroup);\n element.appendChild(rectSVGObject);\n if (getElementByID(map.element.id + '_Secondary_Element')) {\n getElementByID(map.element.id + '_Secondary_Element').appendChild(element);\n }\n var toolBarSize = this.toolBarGroup.getBoundingClientRect();\n rectSVGObject.setAttribute('height', (toolBarSize.height + map.zoomSettings.toolbarSettings.borderWidth).toString());\n rectSVGObject.setAttribute('width', (toolBarSize.width + map.zoomSettings.toolbarSettings.borderWidth).toString());\n var size = !isNullOrUndefined(map.totalRect) ? map.totalRect : map.mapAreaRect;\n var x = 0;\n var y = 0;\n switch (map.toolbarProperties.verticalAlignment) {\n case 'Near':\n y = size.y;\n break;\n case 'Center':\n y = (size.height / 2) - (toolBarSize.height / 2);\n break;\n case 'Far':\n y = (size.height - toolBarSize.height) - padding;\n break;\n }\n switch (map.toolbarProperties.horizontalAlignment) {\n case 'Near':\n x = size.x;\n break;\n case 'Center':\n x = (size.width / 2) - (toolBarSize.width / 2);\n break;\n case 'Far':\n if (!isNullOrUndefined(map.legendModule) && map.legendSettings.position === 'Left') {\n x = size.width + size.x - toolBarSize.width - padding;\n }\n else {\n x = (size.width - toolBarSize.width) - padding;\n }\n break;\n }\n element.style.left = x + 'px';\n element.style.top = y + 'px';\n var color = this.maps.toolbarProperties.highlightColor || this.maps.themeStyle.zoomSelectionColor;\n var css = ' .e-maps-toolbar:hover > circle { stroke:' + color + '; } .e-maps-toolbar:hover > path { fill: ' + color + ' ; stroke: ' + color + '; }' +\n '.e-maps-toolbar:hover { cursor: pointer; } .e-maps-cursor-disable:hover { cursor: not-allowed; } .e-maps-panning:hover { cursor: pointer; } ' +\n '.e-maps-popup-close { display: block; opacity: 0; }';\n var style = document.createElement('style');\n style.appendChild(document.createTextNode(css));\n element.appendChild(style);\n };\n /**\n * @private\n */\n Zoom.prototype.removeToolbarOpacity = function (factor, id) {\n if (this.maps.zoomModule && this.maps.zoomSettings.enable) {\n if (getElementByID(this.maps.element.id + '_Zooming_KitCollection') && id.indexOf(this.maps.element.id + '_Zooming_') > -1) {\n if (this.maps.isDevice) {\n getElementByID(this.maps.element.id + '_Zooming_KitCollection').setAttribute('opacity', '1');\n this.removeToolbarClass('', '', '', '', '');\n }\n else {\n this.removeToolbarClass(this.maps.zoomSettings.enableSelectionZooming ? 'e-maps-toolbar' : '', 'e-maps-toolbar', 'e-maps-toolbar', this.maps.zoomSettings.enablePanning ? 'e-maps-toolbar' : '', 'e-maps-toolbar');\n }\n var toolbarShapeOpacity = this.maps.toolbarProperties.shapeOpacity;\n var toolbarButtonOpacity = this.maps.toolbarProperties.borderOpacity;\n if (this.maps.isTileMap && (factor <= 1.1 || this.maps.zoomSettings.minZoom === factor)) {\n if (!this.maps.isDevice) {\n this.removeToolbarClass(this.maps.zoomSettings.enableSelectionZooming ? 'e-maps-toolbar' : '', 'e-maps-toolbar', '', this.maps.zoomSettings.enablePanning ? 'e-maps-toolbar' : '', '');\n }\n if (this.maps.zoomSettings.enablePanning) {\n this.removePanColor(this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor);\n }\n if (this.isZoomSelection && this.maps.zoomSettings.enableSelectionZooming && !this.maps.isReset) {\n this.removeZoomColor(this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor);\n this.removePanColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n }\n this.removeZoomOpacity((this.maps.zoomSettings.enableSelectionZooming ? toolbarShapeOpacity : 0.3), (this.maps.zoomSettings.enableSelectionZooming ? toolbarButtonOpacity : 0.3), toolbarShapeOpacity, toolbarButtonOpacity, 0.3, 0.3, (this.maps.zoomSettings.enablePanning ? toolbarShapeOpacity : 0.3), (this.maps.zoomSettings.enablePanning ? toolbarButtonOpacity : 0.3), 0.3, 0.3);\n }\n else if ((factor <= 1.1 || this.maps.zoomSettings.minZoom === factor)) {\n if (!this.maps.isDevice) {\n this.removeToolbarClass(this.maps.zoomSettings.enableSelectionZooming ? 'e-maps-toolbar' : '', 'e-maps-toolbar', '', '', '');\n }\n if (!this.isZoomSelection && this.maps.zoomSettings.enablePanning) {\n this.removePanColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n }\n if (this.isZoomSelection && this.maps.zoomSettings.enableSelectionZooming && !this.maps.isReset) {\n this.removeZoomColor(this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor);\n this.removePanColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n }\n this.removeZoomOpacity((this.maps.zoomSettings.enableSelectionZooming ? toolbarShapeOpacity : 0.3), (this.maps.zoomSettings.enableSelectionZooming ? toolbarButtonOpacity : 0.3), toolbarShapeOpacity, toolbarButtonOpacity, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3);\n }\n else if (factor < this.maps.zoomSettings.maxZoom) {\n if (!this.maps.isDevice) {\n this.removeToolbarClass(this.maps.zoomSettings.enableSelectionZooming ? 'e-maps-toolbar' : '', 'e-maps-toolbar', 'e-maps-toolbar', this.maps.zoomSettings.enablePanning ? 'e-maps-toolbar' : '', 'e-maps-toolbar');\n }\n if (!this.maps.zoomModule.isZoomFinal) {\n this.removeZoomOpacity((this.maps.zoomSettings.enableSelectionZooming ? toolbarShapeOpacity : 0.3), (this.maps.zoomSettings.enableSelectionZooming ? toolbarButtonOpacity : 0.3), toolbarShapeOpacity, toolbarButtonOpacity, toolbarShapeOpacity, toolbarButtonOpacity, (this.maps.zoomSettings.enablePanning ? toolbarShapeOpacity : 0.3), (this.maps.zoomSettings.enablePanning ? toolbarButtonOpacity : 0.3), toolbarShapeOpacity, toolbarButtonOpacity);\n }\n else {\n this.maps.zoomModule.isZoomFinal = false;\n }\n if (this.isZoomSelection && this.maps.zoomSettings.enableSelectionZooming) {\n this.removeZoomColor(this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor);\n if (this.maps.zoomModule.isPan && this.maps.zoomSettings.enablePanning) {\n this.removePanColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n }\n }\n else if (!this.isZoomSelection && this.maps.zoomSettings.enablePanning) {\n this.removePanColor(this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor);\n if (this.maps.zoomSettings.enableSelectionZooming) {\n this.removeZoomColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n }\n }\n }\n else {\n if (!this.maps.isDevice) {\n this.removeToolbarClass('', '', 'e-maps-toolbar', this.maps.zoomSettings.enablePanning ? 'e-maps-toolbar' : '', 'e-maps-toolbar');\n }\n this.removeZoomOpacity(0.3, 0.3, 0.3, 0.3, toolbarShapeOpacity, toolbarButtonOpacity, (this.maps.zoomSettings.enablePanning ? toolbarShapeOpacity : 0.3), (this.maps.zoomSettings.enablePanning ? toolbarButtonOpacity : 0.3), toolbarShapeOpacity, toolbarButtonOpacity);\n if (this.maps.zoomSettings.enableSelectionZooming) {\n this.removeZoomColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n }\n if (!this.isZoomSelection && this.maps.zoomSettings.enablePanning) {\n this.removePanColor(this.maps.toolbarProperties.selectionColor || this.maps.themeStyle.zoomSelectionColor);\n }\n }\n }\n else {\n if (!this.maps.isDevice) {\n this.removePanColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n this.removeZoomColor(this.maps.toolbarProperties.color || this.maps.themeStyle.zoomFillColor);\n this.removeZoomOpacity(1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\n }\n }\n }\n };\n Zoom.prototype.setOpacity = function (circleId, pathId, circleOpacity, pathOpacity) {\n if (getElementByID(this.maps.element.id + circleId)) {\n getElementByID(this.maps.element.id + circleId).setAttribute('stroke-opacity', circleOpacity.toString());\n getElementByID(this.maps.element.id + circleId).setAttribute('fill-opacity', circleOpacity.toString());\n getElementByID(this.maps.element.id + pathId).setAttribute('stroke-opacity', pathOpacity.toString());\n getElementByID(this.maps.element.id + pathId).setAttribute('fill-opacity', pathOpacity.toString());\n }\n };\n Zoom.prototype.removeZoomOpacity = function (zoomOpacity, zoomStrokeOpacity, zoomInOpacity, zoomInStrokeOpacity, zoomOutOpacity, zoomOutStrokeOpacity, panOpacity, panStrokeOpacity, resetOpacity, resetStrokeOpacity) {\n this.setOpacity('_Zooming_ToolBar_Zoom_Rect', '_Zooming_ToolBar_Zoom', zoomStrokeOpacity, zoomOpacity);\n this.setOpacity('_Zooming_ToolBar_ZoomIn_Rect', '_Zooming_ToolBar_ZoomIn_Path', zoomInStrokeOpacity, zoomInOpacity);\n this.setOpacity('_Zooming_ToolBar_ZoomOut_Rect', '_Zooming_ToolBar_ZoomOut', zoomOutStrokeOpacity, zoomOutOpacity);\n this.setOpacity('_Zooming_ToolBar_Pan_Rect', '_Zooming_ToolBar_Pan', panStrokeOpacity, panOpacity);\n this.setOpacity('_Zooming_ToolBar_Reset_Rect', '_Zooming_ToolBar_Reset', resetStrokeOpacity, resetOpacity);\n };\n /**\n * @private\n */\n Zoom.prototype.removeToolbarClass = function (zoomClassStyle, zoomInClassStyle, zoomOutClassStyle, panClassStyle, resetClassStyle) {\n if (getElementByID(this.maps.element.id + '_Zooming_KitCollection')) {\n if (document.getElementById(this.maps.element.id + '_Zooming_ToolBar_ZoomIn_Group')) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_ZoomIn_Group').setAttribute('class', zoomInClassStyle);\n }\n if (document.getElementById(this.maps.element.id + '_Zooming_ToolBar_ZoomOut_Group')) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_ZoomOut_Group').setAttribute('class', zoomOutClassStyle);\n }\n if (document.getElementById(this.maps.element.id + '_Zooming_ToolBar_Reset_Group')) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Reset_Group').setAttribute('class', resetClassStyle);\n }\n if (document.getElementById(this.maps.element.id + '_Zooming_ToolBar_Zoom_Group') && this.maps.zoomSettings.enableSelectionZooming) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Zoom_Group').setAttribute('class', zoomClassStyle);\n }\n if (document.getElementById(this.maps.element.id + '_Zooming_ToolBar_Pan_Group') && this.maps.zoomSettings.enablePanning) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Pan_Group').setAttribute('class', panClassStyle);\n }\n }\n };\n Zoom.prototype.removePanColor = function (selectionColor) {\n if (getElementByID(this.maps.element.id + '_Zooming_ToolBar_Pan_Rect') && this.maps.zoomSettings.enablePanning) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Pan').setAttribute('fill', selectionColor);\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Pan').setAttribute('stroke', selectionColor);\n }\n };\n Zoom.prototype.removeZoomColor = function (selectionColor) {\n if (getElementByID(this.maps.element.id + '_Zooming_ToolBar_Zoom_Rect') && this.maps.zoomSettings.enableSelectionZooming) {\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Zoom').setAttribute('fill', 'transparent');\n getElementByID(this.maps.element.id + '_Zooming_ToolBar_Zoom').setAttribute('stroke', selectionColor);\n }\n };\n /**\n * To bind events.\n *\n * @param {Element} element - Specifies the element.\n * @param {any} process - Specifies the process.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Zoom.prototype.wireEvents = function (element, process) {\n EventHandler.add(element, Browser.touchStartEvent, process, this);\n EventHandler.add(element, 'mouseover', this.showTooltip, this);\n EventHandler.add(element, 'mouseout', this.removeTooltip, this);\n };\n /**\n * @private\n */\n Zoom.prototype.mapMouseWheel = function (e) {\n if (this.maps.zoomSettings.enable && this.maps.zoomSettings.mouseWheelZoom) {\n var map = this.maps;\n var size = map.availableSize;\n map.markerZoomedState = false;\n map.zoomPersistence = map.enablePersistence;\n var position = this.getMousePosition(e.pageX, e.pageY);\n var prevLevel = map.tileZoomLevel;\n var prevScale = map.scale;\n var delta = 1;\n var staticMaxZoomLevel = 22; // google map maximum zoom level value\n var value = (map.isTileMap) ? prevLevel : prevScale;\n if (((position.x > map.mapAreaRect.x) && (position.x < (map.mapAreaRect.x + map.mapAreaRect.width))) &&\n (position.y > map.mapAreaRect.y) && position.y < (map.mapAreaRect.y + map.mapAreaRect.height)) {\n e.preventDefault();\n var direction = (this.browserName === 'mozilla' && !this.isPointer) ?\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n -(e.detail) / 3 > 0 ? 'ZoomIn' : 'ZoomOut' : (e.wheelDelta / 120) > 0 ? 'ZoomIn' : 'ZoomOut';\n if (direction === 'ZoomIn') {\n map.mapScaleValue = value + delta;\n map.staticMapZoom = map.tileZoomLevel;\n if (map.staticMapZoom > 0 && map.staticMapZoom < staticMaxZoomLevel) {\n map.staticMapZoom += 1;\n }\n this.performZooming(position, (value + delta), direction);\n }\n else {\n map.mapScaleValue = value - delta;\n map.isReset = (map.mapScaleValue < 1) ? true : false;\n map.staticMapZoom = map.tileZoomLevel;\n if (map.mapScaleValue === 1) {\n map.markerCenterLatitude = null;\n map.markerCenterLongitude = null;\n }\n if (map.staticMapZoom > 1 && map.staticMapZoom < staticMaxZoomLevel) {\n map.staticMapZoom -= 1;\n }\n this.performZooming(position, (value - delta), direction);\n }\n }\n this.removeToolbarOpacity(map.mapScaleValue, (!this.maps.isDevice ? (!isNullOrUndefined(e.target) ? e.target['id'] :\n this.maps.element.id) : this.maps.element.id + '_Zooming_'));\n }\n };\n /**\n * @private\n */\n Zoom.prototype.doubleClick = function (e) {\n var pageX = e.pageX;\n var pageY = e.pageY;\n var target = e.target;\n var tooltipElement = e.target.closest('#' + this.maps.element.id + '_mapsTooltipparent_template');\n if (this.maps.zoomSettings.enable && this.maps.zoomSettings.doubleClickZoom\n && !(e.target['id'].indexOf('_Zooming_') > -1) && isNullOrUndefined(tooltipElement)) {\n var position = this.getMousePosition(pageX, pageY);\n var map = this.maps;\n var size = map.availableSize;\n var prevLevel = map.tileZoomLevel;\n var prevScale = map.scale;\n map.mapScaleValue = map.mapScaleValue + 1;\n var value = (map.isTileMap) ? prevLevel : prevScale;\n if (((position.x > map.mapAreaRect.x) && (position.x < (map.mapAreaRect.x + map.mapAreaRect.width))) &&\n (position.y > map.mapAreaRect.y) && position.y < (map.mapAreaRect.y + map.mapAreaRect.height)) {\n this.performZooming(position, (value + 1), 'ZoomIn');\n }\n }\n };\n /**\n * @private\n */\n Zoom.prototype.mouseDownHandler = function (e) {\n var pageX;\n var pageY;\n var target;\n var touches = null;\n var element = e.target;\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touches = e.touches;\n target = e.target;\n pageX = touches[0].clientX;\n pageY = touches[0].clientY;\n }\n else {\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n if (!this.maps.zoomSettings.enablePanning) {\n this.isPan = this.isPanning = this.panColor !== this.selectionColor ? this.maps.zoomSettings.enablePanning\n : this.zoomColor === this.selectionColor;\n }\n else {\n this.isPan = this.isPanning = !this.isZoomSelection;\n }\n this.mouseDownLatLong = { x: pageX, y: pageY };\n var scale = this.maps.isTileMap ? Math.round(this.maps.tileZoomLevel) : Math.round(this.maps.mapScaleValue);\n this.rectZoomingStart = ((this.isZoomSelection && scale < this.maps.zoomSettings.maxZoom) && this.maps.zoomSettings.enable);\n this.mouseDownPoints = this.getMousePosition(pageX, pageY);\n if (this.isTouch) {\n this.firstMove = true;\n this.pinchFactor = this.maps.scale;\n this.fingers = touches.length;\n }\n this.isSingleClick = true;\n };\n /**\n * @private\n */\n Zoom.prototype.mouseMoveHandler = function (e) {\n var pageX;\n var pageY;\n var map = this.maps;\n var touchArg;\n var target;\n var touches = null;\n var zoom = this.maps.zoomSettings;\n if (e.type === 'touchmove') {\n this.isTouch = true;\n target = e.target;\n touches = e.touches;\n pageX = touches[0].clientX;\n pageY = touches[0].clientY;\n }\n else {\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n if (getElementByID(map.element.id + '_Zooming_KitCollection')) {\n if (target.id.indexOf('_Zooming_') > -1) {\n getElementByID(map.element.id + '_Zooming_KitCollection').setAttribute('opacity', '1');\n }\n else if (!map.isDevice) {\n getElementByID(map.element.id + '_Zooming_KitCollection').setAttribute('opacity', map.theme.toLowerCase() === 'fluentdark' ? '0.6' : '0.3');\n }\n }\n if (this.isTouch) {\n if (this.maps.zoomSettings.pinchZooming) {\n if (this.firstMove && touches.length === 2) {\n this.rectZoomingStart = false;\n this.updateInteraction();\n this.touchStartList = targetTouches(e);\n }\n else if (touches.length === 2 && this.touchStartList.length === 2) {\n this.touchMoveList = targetTouches(e);\n e.preventDefault();\n this.rectZoomingStart = false;\n this.performPinchZooming(e);\n }\n this.firstMove = false;\n }\n }\n this.mouseMovePoints = this.getMousePosition(pageX, pageY);\n var targetId = e.target['id'];\n var targetEle = e.target;\n if (zoom.enable && this.isPanning && this.maps.markerDragId.indexOf('_MarkerIndex_') == -1 && ((Browser.isDevice && touches.length >= 1) || !Browser.isDevice)) {\n e.preventDefault();\n this.maps.element.style.cursor = 'pointer';\n this.mouseMoveLatLong = { x: pageX, y: pageY };\n if ((this.mouseDownLatLong['x'] !== this.mouseMoveLatLong['x']) && (this.mouseDownLatLong['y'] !== this.mouseMoveLatLong['y'])) {\n if (this.maps.zoomSettings.enablePanning) {\n this.panning('None', null, null, e);\n }\n this.mouseDownLatLong['x'] = pageX;\n this.mouseDownLatLong['y'] = pageY;\n }\n }\n if (this.isTouch ? (touches.length === 1 && this.rectZoomingStart) : this.rectZoomingStart) {\n e.preventDefault();\n var scale = this.maps.isTileMap ? Math.round(this.maps.tileZoomLevel) : Math.round(this.maps.mapScaleValue);\n if (this.maps.zoomSettings.enableSelectionZooming && scale < this.maps.zoomSettings.maxZoom) {\n this.drawZoomRectangle();\n }\n else {\n this.rectZoomingStart = false;\n this.isPan = true;\n }\n }\n };\n /**\n * @private\n */\n Zoom.prototype.mouseUpHandler = function (e) {\n var isDragZoom;\n var map = this.maps;\n this.rectZoomingStart = false;\n this.isPanning = false;\n this.isSingleClick = this.isSingleClick ? true : false;\n this.isTouch = false;\n this.touchStartList = [];\n this.touchMoveList = [];\n this.lastScale = 1;\n this.maps.element.style.cursor = 'auto';\n if ((!isNullOrUndefined(this.distanceX) || !isNullOrUndefined(this.distanceY)) && (!isNullOrUndefined(this.currentLayer) && this.currentLayer.type === 'SubLayer')) {\n this.toAlignSublayer();\n this.distanceX = this.distanceY = null;\n }\n var zoomRectElement = getElementByID(this.maps.element.id + '_Selection_Rect_Zooming');\n if (zoomRectElement && this.maps.zoomSettings.enable && this.maps.zoomSettings.enableSelectionZooming) {\n isDragZoom = true;\n remove(zoomRectElement);\n this.performRectZooming();\n }\n this.mouseMoveLatLong = { x: 0, y: 0 };\n this.mouseDownLatLong = { x: 0, y: 0 };\n };\n /**\n * @private\n */\n Zoom.prototype.mouseCancelHandler = function (e) {\n this.isPanning = false;\n this.isTouch = false;\n this.rectZoomingStart = false;\n var zoomRectElement = getElementByID(this.maps.element.id + '_Selection_Rect_Zooming');\n if (zoomRectElement && this.maps.zoomSettings.enable) {\n remove(zoomRectElement);\n this.performRectZooming();\n }\n };\n /**\n * To handle the click event for maps.\n *\n * @param {PointerEvent} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n Zoom.prototype.click = function (e) {\n var map = this.maps;\n var tooltipElement = e.target.closest('#' + this.maps.element.id + '_mapsTooltipparent_template');\n if ((map.markerModule && map.markerModule.sameMarkerData.length > 0) ||\n (e.target['id'].indexOf('MarkerIndex') > -1 && e.target['id'].indexOf('cluster') === -1) || !isNullOrUndefined(tooltipElement)) {\n return null;\n }\n if (this.isSingleClick && map.zoomSettings.zoomOnClick && !(e.target['id'].indexOf('_Zooming_') > -1) && !map.zoomSettings.doubleClickZoom\n && (this.zoomColor !== this.selectionColor)) {\n var pageX = e.pageX;\n var pageY = e.pageY;\n var position = this.getMousePosition(pageX, pageY);\n var prevLevel = map.tileZoomLevel;\n var prevScale = map.scale;\n map.mapScaleValue = map.mapScaleValue + 1;\n var value = (map.isTileMap) ? prevLevel : prevScale;\n if (((position.x > map.mapAreaRect.x) && (position.x < (map.mapAreaRect.x + map.mapAreaRect.width))) &&\n (position.y > map.mapAreaRect.y) && position.y < (map.mapAreaRect.y + map.mapAreaRect.height)) {\n this.performZooming(position, (value + 1), 'ZoomIn');\n }\n }\n };\n /**\n * @private\n */\n Zoom.prototype.getMousePosition = function (pageX, pageY) {\n var map = this.maps;\n var elementRect = map.element.getBoundingClientRect();\n var pageXOffset = map.element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = map.element.ownerDocument.defaultView.pageYOffset;\n var clientTop = map.element.ownerDocument.documentElement.clientTop;\n var clientLeft = map.element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Point(Math.abs(pageX - positionX), Math.abs(pageY - positionY));\n };\n /**\n * @private\n */\n Zoom.prototype.addEventListener = function () {\n if (this.maps.isDestroyed) {\n return;\n }\n EventHandler.add(this.maps.element, this.wheelEvent, this.mapMouseWheel, this);\n EventHandler.add(this.maps.element, 'click', this.click, this);\n EventHandler.add(this.maps.element, 'dblclick', this.doubleClick, this);\n this.maps.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.maps.on(Browser.touchStartEvent, this.mouseDownHandler, this);\n this.maps.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n EventHandler.add(this.maps.element, this.cancelEvent, this.mouseCancelHandler, this);\n };\n /**\n * @private\n */\n Zoom.prototype.removeEventListener = function () {\n if (this.maps.isDestroyed) {\n return;\n }\n EventHandler.remove(this.maps.element, this.wheelEvent, this.mapMouseWheel);\n EventHandler.remove(this.maps.element, 'click', this.click);\n EventHandler.remove(this.maps.element, 'dblclick', this.doubleClick);\n this.maps.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.maps.off(Browser.touchStartEvent, this.mouseDownHandler);\n this.maps.off(Browser.touchEndEvent, this.mouseUpHandler);\n this.maps.off(this.cancelEvent, this.mouseCancelHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Zoom.prototype.getModuleName = function () {\n return 'Zoom';\n };\n /**\n * To destroy the zoom.\n *\n * @returns {void}\n * @private\n */\n Zoom.prototype.destroy = function () {\n this.toolBarGroup = null;\n this.currentToolbarEle = null;\n this.zoomingRect = null;\n this.zoomElements = null;\n this.panElements = null;\n this.baseTranslatePoint = null;\n this.touchStartList = null;\n this.touchMoveList = null;\n this.previousTouchMoveList = null;\n this.mouseDownPoints = null;\n this.mouseMovePoints = null;\n this.startTouches = [];\n this.zoomshapewidth = null;\n this.intersect = [];\n this.mouseDownLatLong = null;\n this.mouseMoveLatLong = null;\n this.removeEventListener();\n //TODO: Calling the below code throws spec issue.\n //this.maps = null;\n this.currentLayer = null;\n };\n return Zoom;\n}());\nexport { Zoom };\n","<template>\r\n <div class=\"maps-container\">\r\n <ejs-maps id='containerPower' class=\"map-container home-region-map\" ref=\"mapPowerInstance\" fill=\"#ccc5b9\" align=\"center\" :load='load' :tooltipRender='tooltipRender' style='display:block' :zoomSettings='zoomSettings' :legendSettings='legendSettings'>\r\n <e-layers>\r\n <e-layer :shapeData='shapeData' :shapePropertyPath='shapePropertyPath' :shapeDataPath='shapeDataPath' :dataSource='dataSource' :shapeSettings='shapeSettings' :tooltipSettings='tooltipSettings'></e-layer>\r\n </e-layers>\r\n </ejs-maps>\r\n\r\n <div id=\"template\" style=\"display:none\">\r\n <div class=\"toolback\">\r\n <div class=\"listing2\">\r\n <center>\r\n ${country}\r\n </center>\r\n </div>\r\n <hr style=\"margin-top: 2px;margin-bottom:5px;border:0.5px solid #DDDDDD\">\r\n <div>\r\n <span class=\"listing1\">Power Contracts : </span><span class=\"listing2\">${powerContracts}</span>\r\n </div>\r\n <div style=\"align-content:center\">\r\n <span class=\"listing1\">Power Volume : </span><span class=\"listing2\">${powerVolume} GWh</span>\r\n </div>\r\n <div style=\"align-content:center\">\r\n <span class=\"listing1\">Gas Contracts : </span><span class=\"listing2\">${gasContracts}</span>\r\n </div>\r\n <div style=\"align-content:center\">\r\n <span class=\"listing1\">Gas Volume : </span><span class=\"listing2\">${gasVolume} GWh</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\n import Vue from 'vue';\r\n import { MapsPlugin, Legend, Marker, MapsTooltip, MapAjax, Zoom } from '@syncfusion/ej2-vue-maps';\r\n\r\n Vue.use(MapsPlugin);\r\n\r\n export default Vue.extend({\r\n data: function () {\r\n return {\r\n legendSettings: {\r\n visible: false\r\n },\r\n zoomSettings: {\r\n enable: true,\r\n mouseWheelZoom: false,\r\n pinchZooming: false,\r\n zoomFactor: 6\r\n },\r\n shapeData: new MapAjax('https://cdn.syncfusion.com/maps/map-data/world-map.json'),\r\n shapePropertyPath: 'name',\r\n shapeDataPath: 'name',\r\n dataSource: this.$store.state.homeVolumeData.homeRegionalMap,\r\n tooltipSettings: {\r\n visible: true,\r\n valuePath: 'name',\r\n template: '#template'\r\n },\r\n shapeSettings: {\r\n fill: \"#Dae0f2\",\r\n colorValuePath: 'color',\r\n colorMapping: [\r\n {\r\n color: '#485696'\r\n\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n provide: {\r\n maps: [Legend, Marker, MapsTooltip, Zoom]\r\n },\r\n methods: {\r\n load: function (args) {\r\n let selectedTheme = location.hash.split(\"/\")[1];\r\n selectedTheme = selectedTheme ? selectedTheme : \"Material\";\r\n args.maps.theme = selectedTheme.charAt(0).toUpperCase() + selectedTheme.slice(1);\r\n },\r\n tooltipRender: function (args) {\r\n if (!args.options.data) {\r\n args.cancel = true;\r\n }\r\n }\r\n },\r\n mounted() {\r\n //Comment by Haris error console mutation problem, vue wants property like it allready is in ejs-chart\r\n this.$refs.mapPowerInstance.height = \"500px\";\r\n this.$store.commit('setHomeRegionMap', this.$refs.mapPowerInstance);\r\n //this.$refs.mapPowerInstance.width = \"100%\";\r\n }\r\n\r\n })\r\n</script>\r\n<style>\r\n .dashboard-seo .map-container, .dashboard-seo .maps-container {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n #containerPower {\r\n width: 100%;\r\n }\r\n .dashboard-seo .markerTemplate {\r\n font-size: 12px;\r\n color: white;\r\n text-shadow: 0px 1px 1px black;\r\n font-weight: 500\r\n }\r\n\r\n .toolback {\r\n width: 200px;\r\n border-radius: 4px;\r\n border: 1px #abb9c6;\r\n background: rgba(53, 63, 76, 0.90);\r\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.40);\r\n padding-bottom: 5px;\r\n padding-top: 10px;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n }\r\n\r\n .listing1 {\r\n font-size: 13px;\r\n color: #ccc5b9;\r\n }\r\n\r\n .listing2 {\r\n font-size: 13px;\r\n color: #ffffff;\r\n font-weight: 500;\r\n }\r\n .maps-container{\r\n max-width: 100%;\r\n max-height: 500px;\r\n }\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./homeRegionalMap.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./homeRegionalMap.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./homeRegionalMap.vue?vue&type=template&id=0076514f\"\nimport script from \"./homeRegionalMap.vue?vue&type=script&lang=js\"\nexport * from \"./homeRegionalMap.vue?vue&type=script&lang=js\"\nimport style0 from \"./homeRegionalMap.vue?vue&type=style&index=0&id=0076514f&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fx-rates\",attrs:{\"id\":\"homefxRates\"}},[_c('ejs-grid',{ref:\"fxRatesGrid\",attrs:{\"dataSource\":_vm.fxRates,\"allowPaging\":true,\"pageSettings\":_vm.pageSettings,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"disableHtmlEncode\":false,\"headerText\":\"Id\",\"width\":100,\"visible\":false,\"textAlign\":\"Left\"}}),_c('e-column',{attrs:{\"field\":\"flag\",\"disableHtmlEncode\":false,\"headerText\":\"\",\"textAlign\":\"Left\",\"valueAccessor\":_vm.valueAccessCurrency,\"width\":\"40px\"}}),_c('e-column',{attrs:{\"field\":\"name\",\"disableHtmlEncode\":false,\"headerText\":\"Name\",\"textAlign\":\"Left\"}}),_c('e-column',{attrs:{\"field\":\"newRate\",\"disableHtmlEncode\":false,\"headerText\":\"Rate\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"difference\",\"disableHtmlEncode\":false,\"headerText\":\"Difference\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"percentageDiff\",\"headerText\":\"Percentage\",\"disableHtmlEncode\":false,\"textAlign\":\"Center\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"homefxRates\" class=\"fx-rates\">\r\n <ejs-grid :dataSource=\"fxRates\" ref=\"fxRatesGrid\" :allowPaging=\"true\" :pageSettings='pageSettings' :queryCellInfo='customiseCell'>\r\n <e-columns>\r\n <e-column field='id' :disableHtmlEncode='false' headerText='Id' :width=\"100\" :visible=\"false\" textAlign='Left'></e-column>\r\n <e-column field='flag' :disableHtmlEncode='false' headerText='' textAlign='Left' :valueAccessor=\"valueAccessCurrency\" width=\"40px\"></e-column>\r\n <e-column field='name' :disableHtmlEncode='false' headerText='Name' textAlign='Left'></e-column>\r\n <e-column field='newRate' :disableHtmlEncode='false' headerText='Rate' textAlign='Center'></e-column>\r\n <e-column field='difference' :disableHtmlEncode='false' headerText='Difference' textAlign='Center'></e-column>\r\n <e-column field='percentageDiff' headerText='Percentage' :disableHtmlEncode='false' textAlign='Center'></e-column>\r\n </e-columns>\r\n </ejs-grid>\r\n </div>\r\n</template>\r\n<script>\r\n import Vue from \"vue\";\r\n import {\r\n GridPlugin,\r\n Page \r\n } from \"@syncfusion/ej2-vue-grids\";\r\n Vue.use(GridPlugin);\r\n import apis from '@/common/network';\r\n import urls from '@/common/urls';\r\n import dates from '@/common/dates';\r\n\r\n export default {\r\n created() {\r\n this.fetchFxRatesData();\r\n },\r\n data() {\r\n return {\r\n fxDateVal: dates.addDays(new Date(), -7),\r\n fxRates:[],\r\n pageSettings: { pageSize: 9 }\r\n };\r\n },\r\n mounted() {\r\n //this.$refs.fxRatesGrid.height = \"100%\";\r\n //this.$refs.fxRatesGrid.width = \"100%\";\r\n },\r\n methods: {\r\n valueAccessCurrency: function (field, data, column) {\r\n //flags.getFlagState(field, data, column);\r\n\r\n if (data.name == \"EUR-GBP\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/GBP.svg\"/></div>`;\r\n }\r\n if (data.name == \"GBP-EUR\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/GBP.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/></div>`;\r\n }\r\n if (data.name == \"EUR-USD\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/US.svg\"/></div>`;\r\n }\r\n if (data.name == \"GBP-USD\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/GBP.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/US.svg\"/></div>`;\r\n }\r\n if (data.name == \"USD-CZK\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/US.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/Czechia.svg\"/></div>`;\r\n }\r\n if (data.name == \"EUR-PLN\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/PLN.svg\"/></div>`;\r\n }\r\n if (data.name == \"USD-PLN\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/US.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/PLN.svg\"/></div>`;\r\n }\r\n if (data.name == \"DKK-USD\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/DKK.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/US.svg\"/></div>`;\r\n }\r\n if (data.name == \"SEK-USD\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/SEK.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/US.svg\"/></div>`;\r\n }\r\n if (data.name == \"EUR-CZK\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/Czechia.svg\"/></div>`;\r\n }\r\n if (data.name == \"EUR-DKK\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/DKK.svg\"/></div>`;\r\n }\r\n if (data.name == \"EUR-CHF\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/CHF.svg\"/></div>`;\r\n }\r\n if (data.name == \"EUR-SEK\") {\r\n return `<div class=\"imageCur\"><img class=\"border-flagCur\" src=\"/img/flagsCurrency/EU.svg\"/><img class=\"border-flagCur\" src=\"/img/flagsCurrency/SEK.svg\"/></div>`;\r\n }\r\n },\r\n customiseCell: function (args) {\r\n\r\n if (args.data.difference > 0) {\r\n if (!args.data.difference.includes(\"+\") && !args.data.percentageDiff.includes(\"+\")) {\r\n args.data.difference = \"+\" + args.data.difference;\r\n args.data.percentageDiff = \"+\" + args.data.percentageDiff + \"%\";\r\n }\r\n args.cell.classList.add(\"above-0\");\r\n\r\n } else if (args.data.difference < 0) {\r\n args.cell.classList.add(\"below-0\");\r\n\r\n if (!args.data.difference.includes(\"%\") && !args.data.percentageDiff.includes(\"%\")) {\r\n var item = args.data.percentageDiff + \"%\";\r\n args.data.percentageDiff = item;\r\n }\r\n\r\n\r\n } else {\r\n\r\n args.cell.classList.add('same-0');\r\n if (!args.data.difference.includes(\"%\") && !args.data.percentageDiff.includes(\"%\")) {\r\n var item = args.data.percentageDiff + \"%\";\r\n args.data.percentageDiff = item;\r\n }\r\n\r\n }\r\n },\r\n getFieldName: function (fieldName, data) {\r\n if (fieldName === \"name\") {\r\n return data.name\r\n } else if (fieldName === \"difference\") {\r\n return data.difference;\r\n } else if (fieldName === \"percentageDiff\") {\r\n return data.percentageDiff + \" \" + \"%\";\r\n } else if (fieldName === \"id\") {\r\n return data.id;\r\n } else if (fieldName === \"newRate\") {\r\n return data.newRate;\r\n }\r\n },\r\n groupBy(arr, keyFunction) {\r\n const groups = {};\r\n arr.forEach(function (el) {\r\n const key = keyFunction(el);\r\n if (key in groups === false) {\r\n groups[key] = [];\r\n }\r\n groups[key].push(el);\r\n });\r\n return groups;\r\n },\r\n // if diff is a positive number, it's an increase, otherwise it's a decrease\r\n calculatePercentageDiff(oldValue, newValue) {\r\n var diff = newValue - oldValue;\r\n return (diff / oldValue) * 100;\r\n },\r\n fetchFxRatesData() {\r\n apis.protectedApi(`${urls.apiBaseUrl}FXRate/FromDate?date=${this.fxDateVal.toISOString().split('T')[0]}`).then(fxr => {\r\n let temp = [];\r\n let fxrGrouped = this.groupBy(fxr.data.result, fx => fx.currencyConversionId);\r\n const fxrArray = Object.keys(fxrGrouped).map(id => {\r\n return {\r\n id,\r\n fxrGroups: fxrGrouped[id]\r\n }\r\n });\r\n for (const fxrObj of fxrArray) {\r\n if (fxrObj.fxrGroups.length >= 2) {\r\n let oldFxRate = fxrObj.fxrGroups[fxrObj.fxrGroups.length - 2];\r\n let newFxRate = fxrObj.fxrGroups[fxrObj.fxrGroups.length - 1];\r\n let fxRate = {\r\n id: newFxRate.currencyConversionId,\r\n name: newFxRate.currencyConversionFrom + '-' + newFxRate.currencyConversionTo,\r\n difference: (newFxRate.rate - oldFxRate.rate).toFixed(4),\r\n newRate: newFxRate.rate.toFixed(4),\r\n percentageDiff: (this.calculatePercentageDiff(oldFxRate.rate, newFxRate.rate)).toFixed(2)\r\n }\r\n temp.push(fxRate);\r\n }\r\n } \r\n this.fxRates = temp;\r\n //this.$refs.fxRatesGrid.ej2Instances.dataSource = this.fxRates;\r\n //this.$refs.fxRatesGrid.ej2Instances.refresh();\r\n //this.resizePanel();\r\n }).catch(\r\n //response => { this.handleError(response); }\r\n );\r\n },\r\n\r\n //resizePanel() {\r\n // debugger;\r\n // let panelContent = document.getElementsByClassName(\"fx-rates\");\r\n // let panelHeight = panelContent.offsetHeight;\r\n // let panelWidth = panelContent.offsetWidth;\r\n // let diff = Math.round(panelHeight / panelWidth);\r\n // let instance = document.querySelector(\"#analysisLayout\").ej2_instances[0];\r\n // instance.resizePanel('panel0', 1, diff);\r\n //}\r\n },\r\n provide: {\r\n grid: [Page]\r\n }\r\n };\r\n</script>\r\n\r\n<style>\r\n .fx-rates .e-grid .e-gridheader {\r\n display: none;\r\n }\r\n\r\n .fx-rates .e-up:before {\r\n content: \"\\e56d\";\r\n }\r\n\r\n .fx-rates .e-normal:before {\r\n content: \"\\e56f\";\r\n }\r\n\r\n .fx-rates .e-down:before {\r\n content: \"\\e56e\";\r\n }\r\n\r\n /*.fx-rates .e-icons {\r\n color: #00ffff;\r\n font-size: 16px;\r\n }*/\r\n\r\n .fx-rates .e-grid {\r\n border-style: none;\r\n border-radius: 0px;\r\n /* margin-left: 5px;*/\r\n }\r\n .below-0 {\r\n color: #1a9470 !important;\r\n }\r\n\r\n .above-0 {\r\n color: #f25c54 !important;\r\n }\r\n\r\n .same-0 {\r\n color: #001c55 !important;\r\n }\r\n\r\n .border-flag {\r\n border-radius: 8px;\r\n height: 16px;\r\n width: 16px;\r\n }\r\n .border-flagCur {\r\n height: 15px;\r\n width: 15px;\r\n border-radius: 8px;\r\n }\r\n\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fxRates.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fxRates.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./fxRates.vue?vue&type=template&id=2ec95404\"\nimport script from \"./fxRates.vue?vue&type=script&lang=js\"\nexport * from \"./fxRates.vue?vue&type=script&lang=js\"\nimport style0 from \"./fxRates.vue?vue&type=style&index=0&id=2ec95404&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"power-rates\",attrs:{\"id\":\"homePowerRates\"}},[_c('ejs-grid',{ref:\"powerRatesGrid\",staticClass:\"home-power-rates\",attrs:{\"dataSource\":_vm.powerRates,\"allowPaging\":true,\"pageSettings\":_vm.pageSettings,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{staticClass:\"home-power-rates\",attrs:{\"field\":\"id\",\"disableHtmlEncode\":false,\"headerText\":\"Id\",\"visible\":false,\"textAlign\":\"Left\"}}),_c('e-column',{attrs:{\"field\":\"flag\",\"disableHtmlEncode\":false,\"headerText\":\"\",\"textAlign\":\"Left\",\"valueAccessor\":_vm.valueAccessPower,\"width\":\"25px\"}}),_c('e-column',{attrs:{\"field\":\"priceAreaName\",\"disableHtmlEncode\":false,\"headerText\":\"Price Area\",\"width\":\"120px\",\"textAlign\":\"Left\"}}),_c('e-column',{attrs:{\"field\":\"newPrice\",\"disableHtmlEncode\":false,\"headerText\":\"Difference\",\"textAlign\":\"Center\",\"width\":\"115px\"}}),_c('e-column',{attrs:{\"field\":\"difference\",\"disableHtmlEncode\":false,\"headerText\":\"Difference\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"percentageDiff\",\"headerText\":\"Percentage\",\"disableHtmlEncode\":false,\"textAlign\":\"Right\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"homePowerRates\" class=\"power-rates\">\r\n <ejs-grid :dataSource=\"powerRates\" ref=\"powerRatesGrid\" class=\"home-power-rates\" :allowPaging=\"true\" :pageSettings='pageSettings' :queryCellInfo='customiseCell'>\r\n <e-columns>\r\n <e-column field='id' :disableHtmlEncode='false' headerText='Id' class=\"home-power-rates\" :visible=\"false\" textAlign='Left'></e-column>\r\n <e-column field='flag' :disableHtmlEncode='false' headerText='' textAlign='Left' :valueAccessor=\"valueAccessPower\" width=\"25px\"></e-column>\r\n <e-column field='priceAreaName' :disableHtmlEncode='false' headerText='Price Area' width=\"120px\" textAlign='Left'></e-column>\r\n <e-column field='newPrice' :disableHtmlEncode='false' headerText='Difference' textAlign='Center' width=\"115px\"></e-column>\r\n <e-column field='difference' :disableHtmlEncode='false' headerText='Difference' textAlign='Center'></e-column>\r\n <e-column field='percentageDiff' headerText='Percentage' :disableHtmlEncode='false' textAlign='Right'></e-column>\r\n </e-columns>\r\n </ejs-grid>\r\n </div>\r\n</template>\r\n<script>\r\n import Vue from \"vue\";\r\n import {\r\n GridPlugin,\r\n Page,\r\n } from \"@syncfusion/ej2-vue-grids\";\r\n Vue.use(GridPlugin);\r\n\r\n export default {\r\n created() {\r\n },\r\n data() {\r\n return {\r\n powerRates: this.$store.state.homePowerRates,\r\n pageSettings: { pageSize: 9 }\r\n };\r\n },\r\n mounted() {\r\n //this.$refs.fxRatesGrid.height = \"100%\";\r\n //this.$refs.fxRatesGrid.width = \"100%\";\r\n },\r\n methods: {\r\n valueAccessPower: function (field, data, column) {\r\n if (data.state == \"Germany\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Germany.svg\"/></div>`;\r\n }\r\n if (data.state == \"Austria\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Austria.svg\"/></div>`;\r\n }\r\n if (data.state == \"Italy\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Italy.svg\"/></div>`;\r\n }\r\n if (data.state == \"Belgium\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Belgium.svg\"/></div>`;\r\n }\r\n if (data.state == \"France\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/France.svg\"/></div>`;\r\n }\r\n if (data.state == \"United Kingdom\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/GBP.svg\"/></div>`;\r\n }\r\n if (data.state == \"Spain\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Spain.svg\"/></div>`;\r\n }\r\n if (data.state == \"Czech Rep.\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Czech Rep.svg\"/></div>`;\r\n }\r\n if (data.state == \"Netherlands\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Netherlands.svg\"/></div>`;\r\n }\r\n if (data.state == \"Hungary\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Hungary.svg\"/></div>`;\r\n }\r\n if (data.state == \"Slovakia\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Slovakia.svg\"/></div>`;\r\n }\r\n if (data.state == \"Switzerland\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Switzerland.svg\"/></div>`;\r\n }\r\n if (data.state == \"Poland\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/PL.svg\"/></div>`;\r\n }\r\n if (data.state == \"Denmark\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/DK.svg\"/></div>`;\r\n }\r\n if (data.state == \"Sweden\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Sweden.svg\"/></div>`;\r\n }\r\n if (data.state == \"Norway\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Norway.svg\"/></div>`;\r\n }\r\n if (data.state == \"Finland\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Finland.svg\"/></div>`;\r\n }\r\n\r\n },\r\n customiseCell: function (args) {\r\n\r\n if (args.data.difference > 0) {\r\n if (!args.data.difference.includes(\"+\") && !args.data.percentageDiff.includes(\"+\")) {\r\n args.data.difference = \"+\" + args.data.difference;\r\n args.data.percentageDiff = \"+\" + args.data.percentageDiff + \"%\";\r\n }\r\n args.cell.classList.add(\"above-0\");\r\n\r\n } else if (args.data.difference < 0) {\r\n args.cell.classList.add(\"below-0\");\r\n\r\n if (!args.data.difference.includes(\"%\") && !args.data.percentageDiff.includes(\"%\")) {\r\n var item = args.data.percentageDiff + \"%\";\r\n args.data.percentageDiff = item;\r\n }\r\n\r\n\r\n } else {\r\n\r\n args.cell.classList.add('same-0');\r\n if (!args.data.difference.includes(\"%\") && !args.data.percentageDiff.includes(\"%\")) {\r\n var item = args.data.percentageDiff + \"%\";\r\n args.data.percentageDiff = item;\r\n }\r\n\r\n }\r\n },\r\n getFieldName: function (fieldName, data) {\r\n if (fieldName === \"state\") {\r\n return data.state\r\n } else if (fieldName === \"difference\") {\r\n return data.difference + \" \" + data.currencySymbol + \"/\" + data.tradingUnitName;\r\n } else if (fieldName === \"percentageDiff\") {\r\n return data.percentageDiff + \" \" + \"%\";\r\n } else if (fieldName === \"id\") {\r\n return data.id;\r\n } else if (fieldName === \"newPrice\") {\r\n return data.newPrice + \" \" + data.currencySymbol + \"/\" + data.tradingUnitName;\r\n }\r\n }\r\n },\r\n provide: {\r\n grid: [Page]\r\n }\r\n };\r\n</script>\r\n\r\n<style>\r\n .power-rates .e-grid .e-gridheader {\r\n display: none;\r\n }\r\n\r\n .power-rates .e-up:before {\r\n content: \"\\e56d\";\r\n }\r\n\r\n .power-rates .e-normal:before {\r\n content: \"\\e56f\";\r\n }\r\n\r\n .power-rates .e-down:before {\r\n content: \"\\e56e\";\r\n }\r\n\r\n /*.power-rates .e-icons.e-icons-grid {\r\n color: #00ffff;\r\n font-size: 16px;\r\n \r\n }*/\r\n\r\n .power-rates {\r\n padding: 0px 0px 17px 0px;\r\n\r\n }\r\n .power-rates .e-grid {\r\n border-style: none;\r\n border-radius: 0px;\r\n }\r\n\r\n .below-0 {\r\n color: #1a9470 !important;\r\n }\r\n\r\n .above-0 {\r\n color: #f25c54 !important;\r\n }\r\n\r\n .same-0 {\r\n color: #001c55 !important;\r\n }\r\n .border-flag {\r\n border-radius: 8px;\r\n }\r\n \r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./powerRates.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./powerRates.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./powerRates.vue?vue&type=template&id=7c080420\"\nimport script from \"./powerRates.vue?vue&type=script&lang=js\"\nexport * from \"./powerRates.vue?vue&type=script&lang=js\"\nimport style0 from \"./powerRates.vue?vue&type=style&index=0&id=7c080420&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gas-rates\",attrs:{\"id\":\"homeGasRates\"}},[_c('ejs-grid',{ref:\"gasRatesGrid\",staticClass:\"home-gas-rates\",attrs:{\"dataSource\":_vm.gasRates,\"allowPaging\":true,\"pageSettings\":_vm.pageSettings,\"queryCellInfo\":_vm.customiseCell}},[_c('e-columns',[_c('e-column',{attrs:{\"field\":\"id\",\"disableHtmlEncode\":false,\"headerText\":\"Id\",\"visible\":false,\"textAlign\":\"Left\"}}),_c('e-column',{attrs:{\"field\":\"flag\",\"disableHtmlEncode\":false,\"headerText\":\"\",\"textAlign\":\"Left\",\"valueAccessor\":_vm.valueAccessPower,\"width\":\"25px\"}}),_c('e-column',{attrs:{\"field\":\"priceAreaName\",\"disableHtmlEncode\":false,\"headerText\":\"Price Area\",\"textAlign\":\"Left\",\"width\":\"150px\"}}),_c('e-column',{attrs:{\"field\":\"newPrice\",\"disableHtmlEncode\":false,\"headerText\":\"Difference\",\"textAlign\":\"Center\",\"width\":\"115px\"}}),_c('e-column',{attrs:{\"field\":\"difference\",\"disableHtmlEncode\":false,\"headerText\":\"Difference\",\"textAlign\":\"Center\"}}),_c('e-column',{attrs:{\"field\":\"percentageDiff\",\"headerText\":\"Percentage\",\"disableHtmlEncode\":false,\"textAlign\":\"Right\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"homeGasRates\" class=\"gas-rates\">\r\n <ejs-grid :dataSource=\"gasRates\" ref=\"gasRatesGrid\" class=\"home-gas-rates\" :allowPaging=\"true\" :pageSettings='pageSettings':queryCellInfo='customiseCell'>\r\n <e-columns>\r\n <e-column field='id' :disableHtmlEncode='false' headerText='Id' :visible=\"false\" textAlign='Left'></e-column>\r\n <e-column field='flag' :disableHtmlEncode='false' headerText='' textAlign='Left' :valueAccessor=\"valueAccessPower\" width=\"25px\"></e-column>\r\n <e-column field='priceAreaName' :disableHtmlEncode='false' headerText='Price Area' textAlign='Left' width=\"150px\"></e-column>\r\n <e-column field='newPrice' :disableHtmlEncode='false' headerText='Difference' textAlign='Center' width=\"115px\"></e-column>\r\n <e-column field='difference' :disableHtmlEncode='false' headerText='Difference' textAlign='Center'></e-column>\r\n <e-column field='percentageDiff' headerText='Percentage' :disableHtmlEncode='false' textAlign='Right'></e-column>\r\n </e-columns>\r\n </ejs-grid>\r\n </div>\r\n</template>\r\n<script>\r\n import Vue from \"vue\";\r\n import {\r\n GridPlugin,\r\n Page\r\n } from \"@syncfusion/ej2-vue-grids\";\r\n Vue.use(GridPlugin);\r\n import apis from '@/common/network';\r\n import urls from '@/common/urls';\r\n import dates from '@/common/dates';\r\n\r\n export default {\r\n created() {\r\n },\r\n data() {\r\n return {\r\n gasRates: this.$store.state.homeGasRates,\r\n pageSettings: { pageSize: 9 }\r\n };\r\n },\r\n mounted() {\r\n //this.$refs.fxRatesGrid.height = \"100%\";\r\n //this.$refs.fxRatesGrid.width = \"100%\";\r\n },\r\n methods: {\r\n valueAccessPower: function (field, data, column) {\r\n if (data.state == \"Germany\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Germany.svg\"/></div>`;\r\n }\r\n if (data.state == \"Austria\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Austria.svg\"/></div>`;\r\n }\r\n if (data.state == \"Italy\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Italy.svg\"/></div>`;\r\n }\r\n if (data.state == \"Belgium\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Belgium.svg\"/></div>`;\r\n }\r\n if (data.state == \"France\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/France.svg\"/></div>`;\r\n }\r\n if (data.state == \"United Kingdom\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/GBP.svg\"/></div>`;\r\n }\r\n if (data.state == \"Spain\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Spain.svg\"/></div>`;\r\n }\r\n if (data.state == \"Czech Rep.\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Czech Rep.svg\"/></div>`;\r\n }\r\n if (data.state == \"Netherlands\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Netherlands.svg\"/></div>`;\r\n }\r\n if (data.state == \"Hungary\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Hungary.svg\"/></div>`;\r\n }\r\n if (data.state == \"Slovakia\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Slovakia.svg\"/></div>`;\r\n }\r\n if (data.state == \"Switzerland\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Switzerland.svg\"/></div>`;\r\n }\r\n if (data.state == \"Poland\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/PL.svg\"/></div>`;\r\n }\r\n if (data.state == \"Denmark\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/DK.svg\"/></div>`;\r\n }\r\n if (data.state == \"Sweden\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Sweden.svg\"/></div>`;\r\n }\r\n if (data.state == \"Norway\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Norway.svg\"/></div>`;\r\n }\r\n if (data.state == \"Finland\") {\r\n return `<div class=\"image\"><img class=\"border-flag\" src=\"/img/flag/Finland.svg\"/></div>`;\r\n }\r\n },\r\n customiseCell: function (args) {\r\n\r\n if (args.data.difference > 0) {\r\n if (!args.data.difference.includes(\"+\") && !args.data.percentageDiff.includes(\"+\")) {\r\n args.data.difference = \"+\" + args.data.difference;\r\n args.data.percentageDiff = \"+\" + args.data.percentageDiff + \"%\";\r\n }\r\n args.cell.classList.add(\"above-0\");\r\n\r\n } else if (args.data.difference < 0) {\r\n args.cell.classList.add(\"below-0\");\r\n\r\n if (!args.data.difference.includes(\"%\") && !args.data.percentageDiff.includes(\"%\")) {\r\n var item = args.data.percentageDiff + \"%\";\r\n args.data.percentageDiff = item;\r\n }\r\n\r\n\r\n } else {\r\n\r\n args.cell.classList.add('same-0');\r\n if (!args.data.difference.includes(\"%\") && !args.data.percentageDiff.includes(\"%\")) {\r\n var item = args.data.percentageDiff + \"%\";\r\n args.data.percentageDiff = item;\r\n }\r\n\r\n }\r\n },\r\n\r\n getFieldName: function (fieldName, data) {\r\n if (fieldName === \"state\") {\r\n return data.state;\r\n } else if (fieldName === \"difference\") {\r\n return data.difference + \" \" + data.currencySymbol + \"/\" + data.tradingUnitName;\r\n } else if (fieldName === \"percentageDiff\") {\r\n return data.percentageDiff + \" \" + \"%\";\r\n } else if (fieldName === \"id\") {\r\n return data.id;\r\n } else if (fieldName === \"newPrice\") {\r\n return data.newPrice + \" \" + data.currencySymbol + \"/\" + data.tradingUnitName;\r\n }\r\n }\r\n },\r\n provide: {\r\n grid: [Page]\r\n }\r\n };\r\n</script>\r\n\r\n<style>\r\n .gas-rates .e-grid .e-gridheader {\r\n display: none;\r\n }\r\n\r\n .gas-rates .e-up:before {\r\n content: \"\\e56d\";\r\n }\r\n\r\n .gas-rates .e-normal:before {\r\n content: \"\\e56f\";\r\n }\r\n\r\n .gas-rates .e-down:before {\r\n content: \"\\e56e\";\r\n }\r\n\r\n /*.fx-rates .e-icons {\r\n color: #00ffff;\r\n font-size: 16px;\r\n }*/\r\n\r\n .gas-rates .e-grid {\r\n border-style: none;\r\n border-radius: 0px;\r\n }\r\n .below-0 {\r\n color: #1a9470 !important;\r\n }\r\n\r\n .above-0 {\r\n color: #f25c54 !important;\r\n }\r\n\r\n .same-0 {\r\n color: #001c55 !important;\r\n }\r\n\r\n .border-flag {\r\n border-radius: 8px;\r\n }\r\n .gas-rates {\r\n border-radius:0.25rem;\r\n }\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gasRates.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gasRates.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./gasRates.vue?vue&type=template&id=61b07527\"\nimport script from \"./gasRates.vue?vue&type=script&lang=js\"\nexport * from \"./gasRates.vue?vue&type=script&lang=js\"\nimport style0 from \"./gasRates.vue?vue&type=style&index=0&id=61b07527&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"refinitiv\"},[_c('div',{staticClass:\"col-md-3\"},[_c('img',{staticClass:\"refinitivLogo\",attrs:{\"src\":require(\"../../../public/img/Logo Refinitiv.jpg\")}})]),_c('div',{staticClass:\"col-md-9\"},[_c('p',{staticClass:\"p-refinitiv\"},[_vm._v(\"The Refinitiv Logo and Refinitiv are trademarks of Refinitiv and its affiliated companies in the United States and other countries and used herein under license.\")]),_c('p',{staticClass:\"p-refinitiv2\"},[_vm._v(\"Copyright © Refinitiv, 2021. All Rights Reserved. Use, duplication, or sale of this service, or data contained herein, except as described in the Trio or Alfa Energy Limited InControl, \"),_c('br'),_vm._v(\" risk management software solution subscription agreement, is strictly prohibited.\")]),_c('a',{staticClass:\"refinitivLink\",attrs:{\"href\":\"https://www.refinitiv.com/benchmarkdisclaimer\"}},[_vm._v(\"www.refinitiv.com/benchmarkdisclaimer\")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"refinitiv\">\r\n <div class=\"col-md-3\">\r\n <img class=\"refinitivLogo\" src=\"../../../public/img/Logo Refinitiv.jpg\" />\r\n </div>\r\n <div class=\"col-md-9\">\r\n <p class=\"p-refinitiv\">The Refinitiv Logo and Refinitiv are trademarks of Refinitiv and its affiliated companies in the United States and other countries and used herein under license.</p>\r\n <p class=\"p-refinitiv2\">Copyright © Refinitiv, 2021. All Rights Reserved. Use, duplication, or sale of this service, or data contained herein, except as described in the Trio or Alfa Energy Limited InControl, <br> risk management software solution subscription agreement, is strictly prohibited.</p>\r\n <a class=\"refinitivLink\" href=\"https://www.refinitiv.com/benchmarkdisclaimer\">www.refinitiv.com/benchmarkdisclaimer</a>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import Vue from 'vue';\r\n import apis from '@/common/network';\r\n\r\n export default Vue.extend({\r\n created() {\r\n \r\n },\r\n data() {\r\n return {\r\n \r\n }\r\n },\r\n methods: {\r\n \r\n }\r\n })\r\n</script>\r\n\r\n<style>\r\n .refinitivLogo {\r\n width: 300px;\r\n height: 150px;\r\n \r\n }\r\n .refinitiv{\r\n display:flex;\r\n background-color: white;\r\n width:100%;\r\n \r\n }\r\n .p-refinitiv {\r\n margin: 0px 0px 0px 0px;\r\n padding-top: 25px;\r\n \r\n }\r\n .p-refinitiv2 {\r\n margin: 3px 0px 10px 0px;\r\n }\r\n .refinitivLink {\r\n color:#001eff;\r\n }\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./refinitiv.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./refinitiv.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./refinitiv.vue?vue&type=template&id=6b50078e\"\nimport script from \"./refinitiv.vue?vue&type=script&lang=js\"\nexport * from \"./refinitiv.vue?vue&type=script&lang=js\"\nimport style0 from \"./refinitiv.vue?vue&type=style&index=0&id=6b50078e&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector(\"[id='\" + id + \"']\")) {\n var row = parseInt(this.element.querySelector(\"[id='\" + id + \"']\").getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector(\"[id='\" + id + \"']\").getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n // eslint-disable-next-line\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector(\"[id='\" + item.id + \"']\")) === -1) &&\n items.indexOf(this.element.querySelector(\"[id='\" + item.id + \"']\")) === -1) {\n items.push(this.element.querySelector(\"[id='\" + item.id + \"']\"));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector(\"[id='\" + this.panels[i].id + \"']\");\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_6 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_4.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_4.element,\n isDragScroll: true,\n handle: this_4.draggableHandle ? this_4.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_4.onDraggingStart.bind(this_4),\n dragStop: function (args) {\n _this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_4.dragCollection.indexOf(this_4.dragobj) === -1) {\n this_4.dragCollection.push(this_4.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_4 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n // eslint-disable-next-line\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n // eslint-disable-next-line\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_7 = function (i) {\n this_5.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_5 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_7(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var PanelsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-panels';\n }\n }\n});\nexport var PanelsPlugin = {\n name: 'e-panels',\n install: function (Vue) {\n Vue.component(PanelsPlugin.name, PanelsDirective);\n }\n};\n/**\n * 'e-panels' directive represent a presets of VueJS dashboardlayout component\n * It must be contained in a dashboardlayout component(`ejs-dashboardlayout`).\n * ```html\n * <ejs-dashboardlayout>\n * <e-panels>\n * <e-panel></e-panel>\n * <e-panel></e-panel>\n * </e-panels>\n * </ejs-dashboardlayout>\n * ```\n */\nexport var PanelDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-panel';\n }\n }\n});\nexport var PanelPlugin = {\n name: 'e-panel',\n install: function (Vue) {\n Vue.component(PanelPlugin.name, PanelDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DashboardLayout } from '@syncfusion/ej2-layouts';\nimport { PanelsDirective, PanelDirective, PanelsPlugin, PanelPlugin } from './panels.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowDragging', 'allowFloating', 'allowPushing', 'allowResizing', 'cellAspectRatio', 'cellSpacing', 'columns', 'draggableHandle', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'locale', 'mediaQuery', 'panels', 'resizableHandles', 'showGridLines', 'change', 'created', 'destroyed', 'drag', 'dragStart', 'dragStop', 'resize', 'resizeStart', 'resizeStop'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DashboardLayout Component.\n * ```html\n * <ejs-dashboardlayout></ejs-dashboardlayout>\n * ```\n */\nexport var DashboardLayoutComponent = vueDefineComponent({\n name: 'DashboardLayoutComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DashboardLayout({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-panels\": \"e-panel\" },\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n addPanel: function (panel) {\n return this.ej2Instances.addPanel(panel);\n },\n movePanel: function (id, row, col) {\n return this.ej2Instances.movePanel(id, row, col);\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n removeAll: function () {\n return this.ej2Instances.removeAll();\n },\n removePanel: function (id) {\n return this.ej2Instances.removePanel(id);\n },\n resizePanel: function (id, sizeX, sizeY) {\n return this.ej2Instances.resizePanel(id, sizeX, sizeY);\n },\n serialize: function () {\n return this.ej2Instances.serialize();\n },\n updatePanel: function (panel) {\n return this.ej2Instances.updatePanel(panel);\n },\n }\n});\nexport var DashboardLayoutPlugin = {\n name: 'ejs-dashboardlayout',\n install: function (Vue) {\n Vue.component(DashboardLayoutPlugin.name, DashboardLayoutComponent);\n Vue.component(PanelPlugin.name, PanelDirective);\n Vue.component(PanelsPlugin.name, PanelsDirective);\n }\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"display\":\"block\"},attrs:{\"id\":\"bar-chart-container\"}},[_c('ejs-chart',{ref:\"lineInstance\",staticClass:\"chart-content home-bar-chart\",staticStyle:{\"display\":\"block\"},attrs:{\"legendSettings\":_vm.legendSettings,\"theme\":_vm.theme,\"title\":_vm.title,\"useGroupingSeparator\":\"true\",\"tooltip\":_vm.tooltip,\"primaryXAxis\":_vm.primaryXAxis,\"primaryYAxis\":_vm.primaryYAxis,\"chartArea\":_vm.chartArea,\"palettes\":_vm.palettes}},[_c('e-series-collection',[_c('e-series',{attrs:{\"dataSource\":_vm.powerData,\"type\":\"Column\",\"xName\":\"name\",\"yName\":\"value\",\"name\":\"Power\",\"width\":\"2\",\"marker\":_vm.marker}}),_c('e-series',{attrs:{\"dataSource\":_vm.gasData,\"type\":\"Column\",\"xName\":\"name\",\"yName\":\"value\",\"name\":\"Gas\",\"width\":\"2\",\"marker\":_vm.marker}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"bar-chart-container\" style='display:block'>\r\n <ejs-chart class=\"chart-content home-bar-chart\" :legendSettings=\"legendSettings\" :theme='theme' ref=\"lineInstance\" :title=\"title\" useGroupingSeparator='true' :tooltip=\"tooltip\" style='display:block;' :primaryXAxis='primaryXAxis' :primaryYAxis='primaryYAxis' :chartArea='chartArea' :palettes='palettes'>\r\n <e-series-collection>\r\n <e-series :dataSource='powerData' type='Column' xName='name' yName='value' name='Power' width=2 :marker='marker'> </e-series>\r\n <e-series :dataSource='gasData' type='Column' xName='name' yName='value' name='Gas' width=2 :marker='marker' > </e-series>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </div>\r\n</template>\r\n<script>\r\n import Vue from \"vue\";\r\n import { ChartPlugin, ColumnSeries, Category, DataLabel, Tooltip, Legend } from \"@syncfusion/ej2-vue-charts\";\r\n Vue.use(ChartPlugin);\r\n\r\n let selectedTheme = location.hash.split(\"/\")[1];\r\n selectedTheme = selectedTheme ? selectedTheme : \"Material\";\r\n let theme = (selectedTheme.charAt(0).toUpperCase() + selectedTheme.slice(1)).replace(/-dark/i, \"Dark\");\r\n\r\n export default {\r\n data() {\r\n return {\r\n theme: theme,\r\n palettes: [\"#7FB7BE\", \"#Dae0f2\"],\r\n gasData: this.$store.state.homeVolumeData.gasData,\r\n powerData: this.$store.state.homeVolumeData.powerData,\r\n tooltip: {enable: true},\r\n title: \" \",\r\n primaryXAxis: {\r\n valueType: 'Category',\r\n interval: 1,\r\n majorGridLines: { width: 0 }, \r\n labelStyle: { fontFamily: 'Segoe UI', fontStyle: 'normal', fontSize: '14px', fontWeight: 'normal', textAnchor: 'middle', color: '#8a93a2' }\r\n \r\n },\r\n legendSettings: {\r\n textStyle: { fontFamily: 'Segoe UI', fontStyle: 'normal', fontSize: '14px', fontWeight: 'normal', textAnchor: 'middle', color: '#8a93a2' }\r\n },\r\n chartArea: {\r\n border: { width: 0 }\r\n },\r\n primaryYAxis:\r\n {\r\n majorGridLines: { width: 0 },\r\n majorTickLines: { width: 1 },\r\n lineStyle: { width: 1 },\r\n labelFormat: 'n2',\r\n title: 'GWh',\r\n titleStyle: { fontFamily: 'Segoe UI', fontStyle: 'normal', fontSize: '14px', fontWeight: 'normal', textAnchor: 'middle', color: '#8a93a2' },\r\n labelStyle: { fontFamily: 'Segoe UI', fontStyle: 'normal', fontSize: '14px', fontWeight: 'normal', textAnchor: 'middle', color: '#8a93a2' }\r\n \r\n \r\n },\r\n marker:\r\n {\r\n dataLabel:\r\n {\r\n visible: false, position: 'Top', font: { fontWeight: '600', color: '#ffffff' }\r\n }\r\n\r\n },\r\n };\r\n },\r\n provide: {\r\n chart: [ColumnSeries, Category, DataLabel, Tooltip, Legend]\r\n },\r\n mounted() {\r\n //Comment by Haris error console mutation problem, vue wants property like it allready is in ejs-chart\r\n this.$refs.lineInstance.height = \"500px\";\r\n //this.$refs.lineInstance.width = \"100%\";\r\n }\r\n };\r\n</script>\r\n\r\n<style>\r\n .dashboard-dynamic .chart-content, .dashboard-dynamic #bar-chart-container {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n #bar-chart-container{\r\n background: white!important;\r\n }\r\n\r\n text[id$=\"_tooltip_text\"] tspan {\r\n font-size: 10.5px !important;\r\n font-weight: normal !important;\r\n }\r\n\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./homeBarChart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./homeBarChart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./homeBarChart.vue?vue&type=template&id=f7a2376c\"\nimport script from \"./homeBarChart.vue?vue&type=script&lang=js\"\nexport * from \"./homeBarChart.vue?vue&type=script&lang=js\"\nimport style0 from \"./homeBarChart.vue?vue&type=style&index=0&id=f7a2376c&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"home-container\">\r\n <div id=\"pricesNotLatestWarningMessage\" ref=\"pricesNotLatestWarningMessage\" v-show=\"pricesWarning\">Some of the EOD prices from the last trading day are not available. The system is pulling the most recent available EOD prices instead.</div>\r\n <div class=\"form-row form-row-first\">\r\n <div class=\"col-md-2\">\r\n <myClients></myClients>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <gasData></gasData>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <contractData></contractData>\r\n </div>\r\n <div class=\"col-md-6 col-md-6-banner\">\r\n <div>\r\n <div class=\"col-md-12\">\r\n <triggers></triggers>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-row form-row-second\">\r\n <div class=\"col-md-6\" ref=\"regmap\">\r\n <h6>Power & Gas</h6>\r\n <homeRegionalMap></homeRegionalMap>\r\n </div>\r\n <div class=\"col-md-6\" ref=\"hbc\">\r\n <h6>Power & Gas Volume</h6>\r\n <barChart></barChart>\r\n </div>\r\n\r\n </div>\r\n <div class=\"form-row form-row-third\">\r\n <div class=\"col-md-4\">\r\n\r\n <div class=\"col-md-12 col-md-12-PRates\" ref=\"hpr\">\r\n <h6>POWER BASELOAD - Front Year</h6>\r\n <powerRates></powerRates>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"col-md-12 col-md-12-GRates\" ref=\"hgr\">\r\n <h6>GAS - Front Year</h6>\r\n <gasRates></gasRates>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"col-md-12 col-md-12-FRates\">\r\n <h6>FOREX</h6>\r\n <fxRates></fxRates>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"form-row form-row-four\">\r\n <refinitiv></refinitiv>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import Vue from \"vue\";\r\n import contractData from './homeComponents/contractData.vue'\r\n import gasData from './homeComponents/gasData.vue'\r\n import myClients from './homeComponents/clientCard.vue'\r\n import apis from '@/common/network';\r\n import urls from '@/common/urls';\r\n import dates from '@/common/dates';\r\n import unitConversions from '@/common/unitConversions';\r\n import triggers from './homeComponents/triggersCard.vue';\r\n import homeRegionalMap from './homeComponents/homeRegionalMap.vue'\r\n import fxRates from './homeComponents/fxRates.vue'\r\n import powerRates from './homeComponents/powerRates.vue'\r\n import gasRates from './homeComponents/gasRates.vue'\r\n import refinitiv from './homeComponents/refinitiv.vue'\r\n import { DashboardLayoutPlugin } from \"@syncfusion/ej2-vue-layouts\";\r\n import { AutoCompletePlugin } from '@syncfusion/ej2-vue-dropdowns';\r\n import barChart from './homeComponents/homeBarChart.vue'\r\n import orderGrid from '@/common/orderGridFutureEletricity';\r\n import orderGridGas from '@/common/orderGridFutureGas';\r\n\r\n\r\n\r\n Vue.use(AutoCompletePlugin);\r\n Vue.use(DashboardLayoutPlugin);\r\n\r\n export default Vue.extend({\r\n created: function () {\r\n },\r\n data() {\r\n return {\r\n type: 'Over',\r\n aspectRatio: 100 / 85,\r\n cellSpacing: [10, 10],\r\n closeOnDocumentClick: true,\r\n trades: [],\r\n //volumes\r\n powerVolumeGigs: 0,\r\n gasVolumeGigs: 0,\r\n pricesWarning: false,\r\n // market pricing per day\r\n mppdDateVal: dates.addDays(new Date(), -7),\r\n mppdPowerRates: [],\r\n mppdGasRates: [],\r\n barChartTmp: function () {\r\n return { template: barChart }\r\n },\r\n visitor: function () {\r\n return { template: triggers }\r\n },\r\n fxRatesTmp: function () {\r\n return { template: fxRates }\r\n },\r\n powerRatesTmp: function () {\r\n return { template: powerRates }\r\n },\r\n gasRatesTmp: function () {\r\n return { template: gasRates }\r\n },\r\n regionalMapTmp: function () {\r\n return { template: homeRegionalMap }\r\n },\r\n refinitivTmp: function () {\r\n return { template: refinitiv }\r\n },\r\n card1: function (e) {\r\n return {\r\n template: contractData\r\n }\r\n },\r\n card2: function (e) {\r\n return {\r\n template: gasData\r\n }\r\n },\r\n card3: function (e) {\r\n return {\r\n template: myClients\r\n }\r\n }\r\n };\r\n },\r\n components: {\r\n contractData,\r\n gasData,\r\n myClients,\r\n triggers,\r\n fxRates,\r\n homeRegionalMap,\r\n powerRates,\r\n gasRates,\r\n barChart,\r\n refinitiv\r\n },\r\n mounted() {\r\n this.fetchVolumesData();\r\n this.fetchMarketPricingPerDayData();\r\n this.checkLatestAvailablePrices();\r\n },\r\n methods: {\r\n groupBy(arr, keyFunction) {\r\n const groups = {};\r\n arr.forEach(function (el) {\r\n const key = keyFunction(el);\r\n if (key in groups === false) {\r\n groups[key] = [];\r\n }\r\n groups[key].push(el);\r\n });\r\n return groups;\r\n },\r\n checkLatestAvailablePrices() {\r\n apis.protectedApi('utils/LatestPricesStatus').then(v => {\r\n if (!v.data.areAllAvailable) {\r\n this.pricesWarning = true;\r\n \r\n this.SetTitleOnWarningLabel(v.data.notAvailbleForyesterdayRics);\r\n \r\n }\r\n });\r\n \r\n },\r\n SetTitleOnWarningLabel(text) {\r\n this.pricesWarning = true;\r\n this.$refs.pricesNotLatestWarningMessage.setAttribute('title', text);\r\n \r\n },\r\n // if diff is a positive number, it's an increase, otherwise it's a decrease\r\n calculatePercentageDiff(oldValue, newValue) {\r\n var diff = newValue - oldValue;\r\n return (diff / oldValue) * 100;\r\n },\r\n fetchVolumesData() {\r\n apis.protectedApi(`${urls.apiBaseUrl}Volume/User`).then(v => {\r\n let homeVolumeData = {};\r\n let homeRegionalMap = [];\r\n let powerContractIds = [...new Set(v.data.result.filter(obj => obj.base > 0 || obj.peak > 0 || obj.offPeak > 0).map(obj => obj.contractId))];\r\n homeVolumeData.powerContractIds = powerContractIds;\r\n\r\n let gasContractIds = [...new Set(v.data.result.filter(obj => obj.gas > 0).map(obj => obj.contractId))];\r\n homeVolumeData.gasContractIds = gasContractIds;\r\n\r\n let powerVolumes = v.data.result.filter(obj => powerContractIds.includes(obj.contractId));\r\n let gasVolumes = v.data.result.filter(obj => gasContractIds.includes(obj.contractId));\r\n\r\n const powerByCountry = this.groupBy(powerVolumes, pv => pv['stateName']);\r\n let powerData = Object.keys(powerByCountry).map(country => {\r\n const byContractId = this.groupBy(powerByCountry[country], pbc => pbc.contractId);\r\n const sum = powerByCountry[country].reduce((acc, obj) => acc + unitConversions.convert(\r\n obj.totalBaseOffPeak,\r\n obj.volumeUnitName,\r\n 'MWh',\r\n this.datediff(this.getStartDateByTradePeriodSpanIdAndYear(obj.periodSpanId, obj.year), this.getEndDateByTradePeriodSpanIdAndYear(obj.periodSpanId, obj.year)), false\r\n ) / 1000, 0);\r\n\r\n const sumPeak = powerByCountry[country].reduce((acc, obj) => acc + unitConversions.convert(\r\n obj.peak,\r\n obj.volumeUnitName,\r\n 'MWh',\r\n dates.getBusinessDatesCount(this.getStartDateByTradePeriodSpanIdAndYear(obj.periodSpanId, obj.year), this.getEndDateByTradePeriodSpanIdAndYear(obj.periodSpanId, obj.year)), true\r\n ) / 1000, 0);\r\n\r\n // TODO: apply unit transformation once the transformation functionality is completed\r\n this.powerVolumeGigs += sum + (isNaN(sumPeak) ? 0 : sumPeak);\r\n\r\n return {\r\n name: country.replace(/-/g, \" \"),\r\n country: country.replace(/-/g, \" \"),\r\n numberOfContracts: Object.keys(byContractId).length,\r\n value: sum,\r\n color: \"#A35FA1\"\r\n }\r\n });\r\n homeVolumeData.powerVolumeGigs = this.powerVolumeGigs;\r\n homeVolumeData.powerData = powerData;\r\n\r\n const gasByCountry = this.groupBy(gasVolumes, pv => pv['stateName']);\r\n let gasData = Object.keys(gasByCountry).map(country => {\r\n const byContractId = this.groupBy(gasByCountry[country], pbc => pbc.contractId);\r\n const sum = gasByCountry[country].reduce((acc, obj) => acc + unitConversions.convert(\r\n obj.gas,\r\n obj.volumeUnitName,\r\n 'MWh',\r\n this.datediff(this.getStartDateByTradePeriodSpanIdAndYear(obj.periodSpanId, obj.year), this.getEndDateByTradePeriodSpanIdAndYear(obj.periodSpanId, obj.year))\r\n ) / 1000, 0);\r\n\r\n // TODO: apply unit transformation once the transformation functionality is completed\r\n this.gasVolumeGigs += sum;\r\n\r\n return {\r\n name: country.replace(/-/g, \" \"),\r\n country: country.replace(/-/g, \" \"),\r\n numberOfContracts: Object.keys(byContractId).length,\r\n value: sum,\r\n color: \"#4875B4\"\r\n }\r\n });\r\n for (const data of powerData) {\r\n let powerVolume = data.value.toLocaleString('en', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n let s = {\r\n name: data.name,\r\n country: data.country,\r\n powerContracts: data.numberOfContracts,\r\n gasContracts: 0,\r\n powerVolume: powerVolume,\r\n gasVolume: 0,\r\n color: \"#4875B4\"\r\n }\r\n homeRegionalMap.push(s);\r\n }\r\n\r\n for (const data of gasData) {\r\n\r\n var foundValue = homeRegionalMap.find(obj => obj.name === data.name);\r\n let gasVolume = data.value.toLocaleString('en', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n\r\n if (foundValue) {\r\n foundValue.gasContracts = data.numberOfContracts;\r\n foundValue.gasVolume = gasVolume;\r\n } else {\r\n let s = {\r\n name: data.name,\r\n country: data.country,\r\n powerContracts: 0,\r\n gasContracts: data.numberOfContracts,\r\n powerVolume: 0,\r\n gasVolume: gasVolume,\r\n color: \"#4875B4\"\r\n }\r\n homeRegionalMap.push(s);\r\n }\r\n }\r\n homeVolumeData.gasVolumeGigs = this.gasVolumeGigs;\r\n homeVolumeData.gasData = gasData;\r\n\r\n homeVolumeData.homeRegionalMap = homeRegionalMap\r\n this.$store.commit('setHomeVolumeData', homeVolumeData);\r\n if (this.$refs.hbc) {\r\n this.$refs.hbc.querySelector(\".home-bar-chart\").ej2_instances[0].series[0].dataSource = homeVolumeData.powerData;\r\n this.$refs.hbc.querySelector(\".home-bar-chart\").ej2_instances[0].series[1].dataSource = homeVolumeData.gasData;\r\n }\r\n if (this.$refs.regmap) {\r\n this.$refs.regmap.querySelector(\".home-region-map\").ej2_instances[0].layers[0].dataSource = homeVolumeData.homeRegionalMap;\r\n this.$refs.regmap.querySelector(\".home-region-map\").ej2_instances[0].refresh();\r\n }\r\n }).catch(\r\n //response => { this.handleError(response); }\r\n );\r\n },\r\n /**\r\n * Returns the start date as a Date object\r\n * @param tradePeriodSpanId\r\n * @param year\r\n */\r\n getStartDateByTradePeriodSpanIdAndYear: function (tradePeriodSpanId, year) {\r\n // Months (January to December) have Ids 1 to 12 respectively.\r\n // Javascript references the dates starting with 0 (to 11 respectively)\r\n // Cal trade period have no spanIds, so their value will be set to 0\r\n // which correctly sets the Cal start date to January 1st\r\n return new Date(year, tradePeriodSpanId === 0 ? tradePeriodSpanId : tradePeriodSpanId - 1, 1);\r\n },\r\n /**\r\n * Returns the end date as a Date object\r\n * @param tradePeriodSpanId\r\n * @param year\r\n */\r\n getEndDateByTradePeriodSpanIdAndYear: function (tradePeriodSpanId, year) {\r\n // Months (January to December) have Ids 1 to 12 respectively.\r\n // Javascript references the dates starting with 0 (to 11 respectively).\r\n // Javascript dates range from 1 to 31. Passing 0 to the constructor will\r\n // create the last date of the previous month.\r\n // Cal trade period have no spanIds, so their year value will be increased by 1,\r\n // which will correctly set the Cal end date to December 31st\r\n return tradePeriodSpanId === 0 ? new Date(year + 1, tradePeriodSpanId, 0) : new Date(year, tradePeriodSpanId, 0);\r\n },\r\n datediff: function (first, second) {\r\n // Take the difference between the dates and divide by milliseconds per day.\r\n // Round to nearest whole number to deal with DST.\r\n return Math.round((second - first) / (1000 * 60 * 60 * 24)) + 1;\r\n },\r\n fetchMarketPricingPerDayData() {\r\n apis.protectedApi(`${urls.apiBaseUrl}MarketPricingPerDay/FromDate?date=${this.mppdDateVal.toISOString().split('T')[0]}`).then(mppd => {\r\n let mppdGrouped = this.groupBy(mppd.data.result, mp => mp.ricId);\r\n\r\n const mppdArray = Object.keys(mppdGrouped).map(ricId => {\r\n return {\r\n ricId,\r\n mppdGroups: mppdGrouped[ricId]\r\n }\r\n });\r\n\r\n for (const mppdObj of mppdArray) {\r\n if (mppdObj.mppdGroups.length >= 2) {\r\n let mppdGroupedByYear = this.groupBy(mppdObj.mppdGroups, mp => mp.year);\r\n\r\n const mppdGroupedByYearArray = Object.keys(mppdGroupedByYear).map(year => {\r\n return {\r\n year,\r\n mppdGroups: mppdGroupedByYear[year]\r\n }\r\n });\r\n\r\n for (let mppdGroupedByYearObj of mppdGroupedByYearArray) {\r\n if (mppdGroupedByYearObj.mppdGroups.length >= 2) {\r\n // todo: should check for current year and the next year, if available\r\n let oldMppdRate = mppdGroupedByYearObj.mppdGroups[mppdGroupedByYearObj.mppdGroups.length - 2];\r\n let newMppdRate = mppdGroupedByYearObj.mppdGroups[mppdGroupedByYearObj.mppdGroups.length - 1];\r\n\r\n let mppdRate = {\r\n id: newMppdRate.ricId,\r\n state: newMppdRate.stateName,\r\n priceAreaName: (newMppdRate.priceAreaName != null && newMppdRate.priceAreaName != \"\") ? newMppdRate.stateName + \" - \" + newMppdRate.priceAreaName : newMppdRate.stateName,\r\n product: newMppdRate.productName,\r\n difference: (newMppdRate.price - oldMppdRate.price).toFixed(3),\r\n //newPrice: newMppdRate.price.toFixed(3),\r\n newPrice: newMppdRate.price.toFixed(3) + \" \" + newMppdRate.currencySymbol + \"/\" + newMppdRate.tradingUnitName,\r\n percentageDiff: (this.calculatePercentageDiff(oldMppdRate.price, newMppdRate.price)).toFixed(2),\r\n currencySymbol: newMppdRate.currencySymbol,\r\n tradingUnitName: newMppdRate.tradingUnitName\r\n }\r\n\r\n if (mppdRate.product === 'Baseload') {\r\n if (!this.mppdPowerRates.some(r => r.id === mppdRate.id)) {\r\n this.mppdPowerRates.push(mppdRate);\r\n }\r\n var orderEletricity = orderGrid.orderGridEletricity(this.mppdPowerRates);\r\n this.mppdPowerRates = orderEletricity;\r\n } else if (mppdRate.product === 'Gas') {\r\n if (!this.mppdGasRates.some(r => r.id === mppdRate.id)) {\r\n this.mppdGasRates.push(mppdRate);\r\n }\r\n var orderGas = orderGridGas.orderGridGas(this.mppdGasRates);\r\n this.mppdGasRates = orderGas;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.$store.commit('setHomePowerRates', this.mppdPowerRates);\r\n this.$store.commit('setHomeGasRates', this.mppdGasRates);\r\n if (this.$refs.hpr) {\r\n\r\n this.$refs.hpr.querySelector(\".home-power-rates\").ej2_instances[0].dataSource = this.mppdPowerRates;\r\n this.$refs.hpr.querySelector(\".home-power-rates\").ej2_instances[0].refresh();\r\n }\r\n if (this.$refs.hgr) {\r\n\r\n this.$refs.hgr.querySelector(\".home-gas-rates\").ej2_instances[0].dataSource = this.mppdGasRates;\r\n this.$refs.hgr.querySelector(\".home-gas-rates\").ej2_instances[0].refresh();\r\n }\r\n }).catch(\r\n //response => { this.handleError(response); }\r\n );\r\n },\r\n populateTriggers: function () {\r\n apis.protectedApi('utils/userTriggers')\r\n .then(response => {\r\n this.triggers = response.data;\r\n }).catch(e => {\r\n //if (e.response.data.message) {\r\n // this.showErrorDialog(e.response.data.message);\r\n //}\r\n });\r\n }\r\n }\r\n });\r\n</script>\r\n\r\n<style scoped>\r\n /*.dashboard-seo .sidebar-content {\r\n padding: 10px;\r\n width: calc(100% - 60px);\r\n }*/\r\n\r\n .dashboard-seo #analysisLayout.e-dashboardlayout.e-control .e-panel .e-panel-container .e-panel-header {\r\n border-bottom: 2px solid #e6e9ed !important;\r\n padding: 10px;\r\n height: 35px;\r\n margin: 0 15px 0 15px;\r\n }\r\n\r\n .dashboard-seo #analysisLayout.e-dashboardlayout .e-panel-content {\r\n height: calc(100% - 35px) !important;\r\n overflow: hidden;\r\n width: 100%;\r\n }\r\n\r\n /*.dashboard-seo #sidebar-section {\r\n padding: 0px !important;\r\n border: 1px solid rgba(0, 0, 0, 0.12);\r\n }*/\r\n @font-face {\r\n font-family: \"e-sb-icons\";\r\n src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMj0gSUUAAAEoAAAAVmNtYXDRXdGbAAACWAAAAKZnbHlmCQKdZwAAA3AAACHQaGVhZBOv+PoAAADQAAAANmhoZWEHmQObAAAArAAAACRobXR40wj//AAAAYAAAADYbG9jYf0q9SoAAAMAAAAAbm1heHABTwCLAAABCAAAACBuYW1lTGtTDAAAJUAAAAJJcG9zdD2sY9cAACeMAAADBAABAAADUv9qAFoEAP/8//oD7gABAAAAAAAAAAAAAAAAAAAANgABAAAAAQAAiM9lsl8PPPUACwPoAAAAANhT2hUAAAAA2FPaFf/8AAAD7gPrAAAACAACAAAAAAAAAAEAAAA2AH8ADwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQPoAZAABQAAAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA5wDnNQNS/2oAWgPrAJYAAAABAAAAAAAABAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6P/8A+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAAAAAgAAAAMAAAAUAAMAAQAAABQABACSAAAABgAEAAEAAucS5zX//wAA5wDnFP//AAAAAAABAAYAKgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQAAAAAAAAA+APYBTgHQAhwCegMiA7wEcgSOBLIFIAWKBhAGKAZCBpoHCgd0B8wH+gg8CFgIegigCQAJmAn2CmALAgs8C2ALjgvQDC4MVgyEDMINKg1kDaIN7A44DpIOrA7GDuAPDg9aEAYQRBCmEOgAAAACAAAAAANBA+oAGAAmAAATFR4BFxUjFTM1IzU+ATc1IxUOAQcuASc1ExEeARc+ATcRLgEnDgGrA6B9L7g4f6QDVQKLammLAnABTDk6TAEBTDo5TAITHYGzEIEvL30RtoEaGmmLAgKLaR0BUf6AOksCAks6AYA6SwEBSwAACQAAAAAD6gPRAAsAFwAjAC8AOwBHAFMAXwBrAAAlHgEXPgE3LgEnDgEFHgEXPgE3LgEnDgEFHgEXPgE3LgEnDgEBHgEXPgE3LgEnDgEFHgEXPgE3LgEnDgEFHgEXPgE3LgEnDgEBHgEXPgE3LgEnDgEFHgEXPgE3LgEnDgEFHgEXPgE3LgEnDgEC9AFGNDVFAQFFNTRG/oYCRTQ1RQICRTU0Rf6FAkU1NEYBAUY0NUUC8AFGNDVFAQFFNTRG/oYCRTQ1RQICRTU0Rf6FAkU1NEYBAUY0NUUC8AFGNDVFAQFFNTRG/oYCRTQ1RQICRTU0Rf6FAkU1NEYBAUY0NUWWNEUCAkU0NUUCAkU1NEUCAkU0NUUCAkU1NEUCAkU0NUUCAkUBKzRFAgJFNDVFAgJFNTRFAgJFNDVFAgJFNTRFAgJFNDVFAgJFASw1RQICRTU0RgEBRjQ1RQICRTU0RgEBRjQ1RQICRTU0RgEBRgAAAAAGAAAAAAPqA8EAAwAPABMAHwAjAC8AACUhNSEFHgEXPgE3LgEnDgEBITUhBR4BFz4BNy4BJw4BASE1IQUeARc+ATcuAScOAQEoAsL9Pv7aAjstLjsBATsuLTsBJALC/T7+2gI7LS47AQE7Li07ASQCwv0+/toCOy0uOwEBOy4tO4UgEC08AQE8LS08AQE8ASUfEC07AgI7LS47AQE7ASQgEC08AQE8LS08AQE8AAAAAAUAAAAAA+oD6wAIABEAKAA5AFEAAAEUFjI2NCYiBjczFSMuATQ2NwEWJSEVIw4BBx4BFzMXIS4BJzY1Ax4BJQcFIiMmJyY3PgEzPgE7ARYnIgYHDgEHBhcTFgceARcFAyM/ASc2JiMCtQ4UDQ0UDgTy8h8qKh/98EUBGQGj8S07AQE7LfIB/NsOMQICARkzArUe/nzOLkMWEQEGXiI72XWRQtZv3jtaZgIBBgEBAgJMIQNzAn4fCAYCS6YBdQoODhQNDUCVASo/KgEBBQEB5gE8LSw8AcoELS9ItwE2CwfmpwEBGBEjNyICAgFAAgMETkMbF/7k+WdITQoBAwCwBRgSCQAAAwAAAAAD6gPqAAMAIAAsAAABFSM1ExYVFA8BBhUjNDc2NzY1NCcmIyIHBhUjNDc2MzIBFgAXNgA3JgAnBgACHFKuMCxHIUMaEzQdGhYpIRYlVT8sSlL9tgYBGtTVARoFBf7m1dT+5gEPWFgB+zBKPyxHIUJRKR00Hig0GhYWJUpgPyz+wNT+5gYGARrU1QEaBQX+5gAAAAAEAAAAAAPqA+oAAwAgACwAOAAAARUzNQMGFTM0NzYzMhcWFRQHBgcGFTM0PwE2NTQnJiMiAQ4BBy4BJz4BNx4BBRYAFzYANyYAJwYAAcBRlz9VJRYhKRYaHjQSGkMhRi0wLVFKAeMF46uq4wUF46qr4/x+BgEa1NUBGgUF/ubV1P7mAQ9YWAH7P2BKJRYWGjQoHjQdKVFCIkYsP0owLP7Aq+IFBeOqq+MFBeOr1P7mBgYBGtTVARoFBf7mAAcAAAAAA20D6gAMABkAJgBiAGUAawB5AAABFBY7ATI2NCYnIw4BNRQWFzM+ATQmKwEiBjUUFjsBMjY0JisBIgYnBwYHDgEVFB4CHwEeAhUUBiMiLgInFR4CFzMVMzU3PgI1NC4GND4CMzIXNSYnIzUjJSM1JxUzESERIxEUFhchPgE3ESchIgYCNRINnQ0SEg2dDRISDZ0NEhINnQ0SEg2dDRISDZ0NEt4EEQ0SFw0XHxEgDhYMJCUKGRkWCQgYGw0DPgYYJBYPGCEkGxMKDRQaDS8eFi0GPgHMcT67/Y8+IxsCcRsjAa/9/xsjARsNEhIbEQEBEY8OEQEBERsSEo8NEhIaEhIqAQYJDCQZFB0YFAkPBw8SDBgYBAgMBzsFBwUCR0oBBRclGhQfGRUSDQ4RGBILBRU5CwFGVnENvP1RA2v8lRsjAQEjGwL7riMAAAYAAAAAA20D6gAMABkAVQBYAF4AbAAAJRQWMyEyNjQmJyEOATUUFjMhMjY0JichDgETBwYHDgEVFB4CHwEeAhUUBiMiLgInFR4CFzMVMzU3PgI1NC4GND4CMzIXNSYnIzUjBSM1JxUzESERIxEUFhchPgE3ESchIgYBOxINATkNEhIN/scNEhINATkNEhIN/scNEpkEEQ0SFw0XHxIfDhYLIyUKGRkWCQgYGwwDPwYYJBYPGCEkGxMKDRQaDS8dFiwGPgFPcT67/Y8+IxsCcRsjAa/9/xsjng0SEhsRAQERbw0SEhsRAQERAd8CBQkMJBkUHRgUCQ8HDxIMGBgECAwIPAUHBQJHSgEFFyUaFB8ZFRINDhEYEgsFFTkLAUYncQ28/VEDa/yVGyMBASMbAvuuIwAACAAAAAADbQPqAAwAGQAlAC4AZwBqAHAAfgAAJRQWMyEyNjQmJyEOATUUFjMhMjY0JichDgETFhceARUUBwYPATUvAi4BNDY/ATUVBw4CFRQeAh8BFSMiLgInFR4CHwEVFBYyNj0BNz4CNTQuAi8BNTMyFzUmKwE1NCYiBgUjNScVMxEhESMRFBYXIT4BNxEnISIGATsSDQE5DRISDf7HDRISDQE5DRISDf7HDRLOBgUKCxEGCQMfAgoJCQwKCAoWIhUMFhwRCAIKFxcVCAcXGQwUCQ0JEBYiFA0XHxEIBiwcFzQDCQ0JATxxPrv9jz4jGwJxGyMBr/3/GyOeDRISGxEBARFvDRISGxEBAREBDQMEBxEMFQwEAwFWSwEHBhAXEQUEXS0CBhYiFxMcFhMJA2gECAsGOAQHBQEBGgYJCQYcAwQWIhkTHRgTCQRkFTYMKgYJCQdxDbz9UQNr/JUbIwEBIxsC+64jAAAAAAIAAAAAA+oDQwADAAsAADchEyEDMxMhNSEnIUkC6bj9A+oOuAJp/i06/t6qAb7+QgHyJ4AAAAAAAgAAAAAD6gPLAAkADwAANyERBxEhESE3IQEDBwkBJwIDbD/9EgKQIv0PAdn9cAFyAgpzIgIxXf5qAw47/gYBDHb+dQKuYwAADAAAAAAD6gOMAAMABwANABMAFwAbAB8AJQArAC8AMwBIAAAlMzUjBzM1IwczNSM1IwUjFTM1IzUzNSMFMzUjNTM1IyUzFTM1IwUzNTM1IwUzNSMHMzUjJQEjFQEnJiIOAR8BARUzNTc2LgEiAbJwcOFwcM9eHz8CsB9dPj4+/VA/Pz8/ApEfPl39bz8fXgGwcHDhcHAC5P8AA/7swAkZEwEJ7QEUPvIJARMZYD8/Pz8/Hx8/XnBxcXFxcJAgXl4gPj4+Pj42/vwD/ujFChIZCvMBGBRT9QkZEwAAAAwAAAAAA+4D6gADAAcADQATABcAGwAfACMAJwArADEAQgAAJTM1IwczNSMhIxUzNSMFMzUjNSMlMzUjBTM1IyUzNSMFMzUjJTM1IwczNSMHMzUzNSMlAScuAQ4BFwkBNiYnJgciBgH2fn76fn4CMz9+P/zTfj8/Ay0/P/zTPz8DLT8//NM/PwH0fn76fn76Pz9+A1b+aIgWQDYIFQEMAhYTChsWGhMiAj8/Pz9+fj8/fH5+fnx+fn67Pz8/fj8/Xv34oBgHJzwZ/sUCpxs7Ew8BDwAACgAAAAAD6gPpAAUACwARABcAIAApAC8ANQA7AEsAACUXMjcnBiUWFzcmJyUXNjcnBiUWFzcmJyUOAQcXPgE9AQUVNyY2NycOATcXNjcnBiUWFzcmJwUXNjMnBhMnBx8BNwEXFhc3Ji8BNycBvwFKRRQ8/q88RhQ8NAHWJzwrNiX9JhcsNiYUAxoBEQpFDBX8XToBAgk6CgFBNiUzKDsByD0zJzxH/uEVO0ABSj/WSN8zNgFDBQ4LPhEdAqJKRkIXPxQWLBY/EyYBNiw7JzOMRjwoMzx9ID4dFSNIJQYFAwIfPR0VI0brJzMmNiwyEyU2KxYCPxRDAf4G1o/4QT8BngkcHhU0LwPRRwAAAAEAAAAAA4wD6gAIAAATFwERMxEBNwFgLQFFPgFQLP5rAlQtAUb8lQN2/rAsAZYAAAEAAAAAA40D6gAIAAABEQEHCQEnAREBzP7ALQGXAZgt/qkD6vycAUAs/mkBmCz+qAN7AAANAAAAAAOuA+oAAwAHAAsADwATABcAGwAfACMAJwAzADcAOwAAJRUjNSMVIzUjFSM1JRUjNSMVIzUjFSM1JRUjNSMVIzUjFSM1AyERITUhNSMVIzUhFSM1IwUzNSMFMzUjA2C8RtFFvALUvEbRRbwC1LxG0UW8TQNv/JEDb56F/tmFoAJzODj+VDc3zHx8fHx8fMJ9fX19fX3Be3t7e3t7/bMCm0arb29vb0ikpKQAAA8AAAAAA+oD2gADAAcACwAPABMAFwAbAB8AIwAnACsALwAzAD8ASwAAARUjNSMVIzUjFSM1BTM1IwUzNSMFMzUjJRUjNSMVIzUjFSM1BTM1IwUzNSMFMzUjJREhETUzFTM1IRUzNTMVITcjESERIzUjFSE1IwMvP9o/2z4B9Ly8/ue7u/7nu7sCrz/aP9s+AfS8vP7nu7v+57u7Ayz8lbs/AXc+vPyVu/oD6Po+/ok/AQw+Pj4+Pj59vLy8vLzaPj4+Pj4+fby8vLy8Pv2vAlG8Pz8/P327/HYDij8/PwAACAAAAAAD6gPqAAMABwArAC8AOwA/AEMAUQAAARUjNSMVIzUnFSMVMxUjFTMVMzUzFTM1MxUzNTM1IzUzNSM1IxUjNSMVIzUlESERJRUzNTMVITUzFTM1JRUjNSEVIzUnFSMRIREjNSMVITUjMQKynD+7P15eXl4/uz+cPl5eXl4+nD+7ApD8lQJSu178lV67AbY//ks/Pp0D6Jy7/se7AZl9fX19u30+fT9dXV1dXV0/fT59fX19fSD9zQIz2j4+nJw+Pl5eXl5ePl38dQOLXl5eAAAGAAAAAAPQA+oAAwAPABMAHwAjAC8AACUhNSEFHgEXPgE3LgEnDgEBITUhBR4BFz4BNy4BJw4BASE1IQUeARc+ATcuAScOAQFmAmv9lf62AkMzM0MBAUMzM0MBSAJr/ZX+tgJDMzNDAQFDMzNDAUgCa/2V/rYCQzMzQwEBQzMzQzmCQTNDAQFDMzNDAgJDAQmCQTNEAQFEMzJEAQFEAQmCQTNDAQFDMzNDAgJDAAAAAAYAAAAAA+kD6gADAAcACwAPABMAFwAAJSE1IQUzNSMlITUhBTM1IyUhNSEFMzUjAWACif13/qTp6QFcAon9d/6k6ekBXAKJ/Xf+pOnpOnqx6c56sunOerLqAAAABgAAAAADbAPpAAMADAAQABkAHQAmAAAlITUhBx4BMjY0JiIGEyE1ISMeATI2NCYiBhMhNSEHHgEyNjQmIgYBeAH0/gz6ATVQNTVQNfkB9P4M+gE1UDU1UDX5AfT+DPoBNVA1NVA1QD4fKDU1UDU1AS8/KDU1UDU1AU8+Hyg0NFA1NQAAAgAAAAAD6QOSAAQACgAAExEhESUFFQkBNQGBAuj+lP4EAfsB7f4TAcf+kQFv9YZwAV3+rXABUgACAAAAAAPqA94ACAAOAAATESERMxEhEQEFFQkBNQGAASWdASj+k/4FAfsB7f4TAbj+VwEs/tQBrAEdkIQBmv5zgwGKAAIAAAAAA+QD6gAIABEAAAERIxEjESMRCQEVNxEhERc1AQM8zNfrAVL+CVcDLVf+GQJF/iEBZf6bAdIBJv7UjU7+DwH+TowBrAAAAAACAAAAAAPXA+kACwA5AAABDgEHLgEnPgE3HgEBBwYHJw4BBxcOARcHHgEXNxYfAR4BPwE2Nxc+ATcnNjcxNCc3LgEnByYvAS4BAsQDdVhYdAIDdVhYdf64Ej0yZy1AElYFAQZXET8raDE9ETyCPBI9MmctQBJWBQEFVhE+LGgxPRE8ggH0WXQBA3VYWHQCA3UBjW0XKCgsbT9GH0EfRT9uLScpF24QARBtFygpLW0+Rx8gIR9FP24tJykXbhABAAACAAAAAAPqA+oACwBnAAABDgEHLgEnPgE3HgEBFQYHJyYiDwEGFB8BDgEHIyIGHQEeATsBFhcHBhQfARYyPwEeARcVHgE7AT4BPQE2NxcWMj8BNjQvAT4BNzMyNj0BNCYrASYnNzY0LwEmIg8BLgEnNS4BJyMOAQK+AnFVVHEDA3FUVXH+6Tk0WwUUBlEGBloQGAd9Cw4BDwl9DiFaBwdRBRUFWxk2HgEOCnELDjk0WwUUBlEGBloQFwd+Cw0PCX4OIFoHB1EFFQVbGTYeAQ4KcQkPAfZUcQMDcVRVcQICcQGHfg4gWgYGUQUVBVgZNh4PCnELDjk0WwcUB1EGBloQGAd9Cw4BDwl9DiFaBgZOBRUFWxk2Hg8KcQsNOjRaCBMIUQYGWhAYB30LDQEBDQAAAgAAAAAD6gPqAAsAOwAAAQ4BBy4BJz4BNx4BJQ4BBycHFw4BByMVMx4BFwcXNx4BFxUzNT4BNxc3Jz4BNzM1Iy4BJzcnBy4BJzUjAuEDhWNihQMDhWJjhf7dKEkfbVRtFR8HmpoHHRdtVG0fSSh3KEkfbVRtFR8HmZkHHRdtVG0fSSh3AfZihQMDhWJjhQMDhfgHHRdtVG0fSSh3KEkfbVRtFR8HmpoHHRdtVG0fSSh3KEkfbVRtFR8HmQACAAAAAAPqA+oACwA/AAABDgEHLgEnPgE3HgEBBw4BBycGBxcGBxQfAQceARc3HgEfARYXNj8BPgE3Fz4BNyc2NzQvATcuAScHLgEvASYGAs4CelxbdwICelxbef6vEyE5GmpeJVcFAQIEXhFDLWoaOx4QQkFHPRMgORpqL0ISVwUBAgRXEEMtaho7HhA+hQHzWHQCBHVYWXQCAncBj20MHhUiWX5FHSIQDx9CP28sKBUhC24SAQEPbgseFSIsbj1FHSERDx9CP28sKBUhC24TAQAAAAUAAAAAA6cD6gAEAC0APQBGAGYAAAEHJjY3JwYHBgcOARQWFxYXFhcWFzc2NzY3Njc2Nz4BNCYnJicmJyYnJicmIwYBDgEHLgEnNDY3Njc2Nx4BJRQXNjcmJw4BNxQWOwEVBgcGBw4BFR4BFz4BNy4BJzUzPgE0JicjDgEB9ucciHuSDQ0YFSowMCoVGA0NQlAUMSwSEA0MGRUqLy8qFRkMDRASLDEKClABuATLmZjLBDgwJS5OXpnL/TUJP1gaJSo24Q0KJTcxWUAwNgT1t7j1BAPInCUKDQ0K3QoNAcJZfL4FGgcJEBUrb4BvKhUQCQckAQEDEgYJBwgRFSpvgG8rFRAJBwkGEgMBAf7NmMsEBMuYS4ExJRorAQTLxRYTSCoXAQI2kw0RUQoWKUo5jlG49AUF9Lik6h1RARAZEQEBEQAAAAUAAAAAA+oDfAADAAcACwAPACAAACUhNSE3ITUhNzM1IzczNSMFDgEWMj8BETMRFxYyNiYnAQI1AbX+S14BV/6pXfr6Xpyc/L4JARMZCsQ/xQoZEwEJ/vBwP10/Xj5ePg4KGRMJv/1pApjACRMZCgEIAAAAAQAAAAAD6gPqABEAADchNSEBFwEVMxEhFTMBJwERIwID6PyDASt/AXY+/sjO/rV//qo/Aj8BK3sBdq8BGT7+tXv+qgN9AAAAAgAAAAADswPqAAsAFwAANyERIwczESERITchJRcBJwcnFzcXARcROQN7dzVL/UoBkzX91AJSbf6fTjtxdDVOAalIAgKtZP4YAehkhg/90IBEfL41hgJhSAEyAAAEAAAAAAPqA+oACgAXABwAIwAAASEOAQcuASc+ATcBHgEXPgE3NSERIw4BBSERHgEFITUuAScjAZkBlRDPl5/UBAPBlP5pBfe6uvcF/mkfuvcDpP6pjLz+egHVBfe6HwGZlMEDBNSfl88Q/oq69wUF97ofAZcF9x4BVw+8yh+69wQAAAACAAAAAAPqA8sANAA7AAABFBYXDwEGByc0NjUuASIGBxQWFwcOAQceATI2NzQmJzcXFAYVHgEyNjc0Jic3PgE3LgIGATMhNSERIwL9DApnAgICvwMBL0gwAREPRR0hAQEwSC8BEQ5IvgMBMEgvARAMZB8rAQEvSS/9BA0D2/yiigL0DxsM+gEBAcgFDQckMDAkFSAMqQgsHSQwMCQVIQusyAcLByQvLyQTIAzzBi0iJC8BMv0GiQMgAAAAAAIAAAAAA+oDrAALABIAAAEHFwcnARcBFzcXNwEVITUhESMDgGo7lqX+n0sBFqXhNhj8GAOO/Ox6A1EMO5ai/pxLARmm4TXV/WB6dwL0AAAAAwAAAAADVgPqAAIACwAXAAA3LQE/AR8EEyU3BwU3NiYvASYHIgahASj+0SZIGlkQWxLv/slaGgE+Gg4HFdwMDRAgAoKhXwg/AzoJNQGgs54uti4aMg1+BwEUAAAFAAAAAAPqA50ADAARABUAGQAeAAA3HgEXIT4BNCYjISIGJQ8BPwElAScBNwcnNwEHNwEnAgERDgOpDhERDvxXDhEBkQN6GgQBrv7eYAEi3VFfUP34MekCCLhvDhEBAREbEhKjBBp6BOv+4WABHxxQYFD+VOoyAgO5AAAACQAAAAAD6gOKAAIACwAPABMAHAAgACkALQA/AAAlNyclFBYyNjQmIgYFFzcnNxc3JwUUFjI2NCYiBiUVITU3FBYyNjQmIgYlFSE1JxEeARchNyE1ITcRNCYjISIGAj9rSP4REhoSEhoSAhNHs0gkR0dH/NASGhISGhICWf11MhIaEhIaEgJZ/XU/ARcRAYA+/lgCYmcZEv02CAppJEc0DRISGhISHUiySCNHR0cUDRERGhISR7u7pQ0RERsREUW6uiz9FBEXAT67ZgGcExkLAAIAAAAAA+oD6gALAB8AAAEOAQcuASc+ATceAQUeARcyNj8BATcBMT4BNy4BJw4BAn4Donl6ogMDonp5ov2HBMWVQXUuAwF3LP6IIycBBMWUlcUCjnqiAwOienmiAwOieZXFAy0oAv56LAGILW0+lMUDA8UAAv/8AAAD4QPqAA8AIQAAAR4BFxYGBwYmJyY2Nz4BNycGAhceATcBNwE2JicuASMiBgGMMVkhORVKTLI9ORZJHkUj5nwkYFXzdwEmof7ZSAJQOZxWPncDXgEoJUWiNzQUQkWiNxUWAUNe/u91XjYt/qxzAVVe4F9BQiQAAAUAAAAAA7gD6gAHAAoAFQAeACkAAAERFxE3BzchBTcnJRUUFjMhPwEhIgYFHwIVHwE3JzcHFzc+AS8BJiMGAXGe29QV/igB64hp/dkKCAHxATX92QgKAkEfAyQkAZFrOBBsEAkDB0sHCQwBiv7TWgGA/zR5RRNlQhUHCgI1CicFHQsaDhiPbTYQbxAJFQhNBgEAAAADAAAAAAPqA+UACQAYACcAABMeASA2Ny4BIAYFBgcBIxEhEQEmJzYkIAQFFhcBESERATY1JiQHJgSTBM4BNs0EBM3+ys4DNgET/sQB/vT+xRQBCAEcAWUBHPw9ARwBNAFHATQcF/56V1b+egMWJjMzJiYzMxkcFv6L/rIBTgF0FxxQTExQKCH+lP6fAWABbSEogkEGBkEAAAQAAAAAA6wD6gADAA0AGQAxAAABESc1Ax4BMjY/AQcjJyUOAQcuASc+ATceAQUWHwEBERYfARYyNzY3EQE/ATY3JiQgBAI1fc47io+KOwPBncICiAPJrKvJAgLJq6zJ/NYBIAMBFAERvAYQCA4BARABASUBB/78/qz++wGK/so8+gEyEBEREAH09IYiRQICRSIiRAMDRCInHgL+ov7fEwlbBAUKEQF8AVkCASApU1RUAAAAAAMAAAAAA+kDoQADAAcACwAANyE1ITUhNSE1ITUhAQPo/BgD6PwYA+j8GEiP147XjwAAAAADAAAAAAPqA4wAAwAHAAsAADchNSERITUhESE1IQID6PwYA+j8GAPo/BhgPwE4PwE4PwAAAwAAAAAD6gOMAAMABwALAAA3ITUhESE1IREhNSECA+j8GAPo/BgD6PwYYD8BOD8BOD8AAAIAAAAAA90D6gANABkAADcVITUuAScOASImJw4BEx4BFz4BNy4BJw4BEAPOA5JxL3N/cy9xktQDmnN0mgMDmnRzmoSCgnWjESQoKCQRowHhdJoDA5p0dJoCApoAAgAAAAAD6gPqAAsAKgAAAQ4BBy4BJz4BNx4BBR4BHwEHBgIHFTc+ATceARc3JgIvATc+ATcuAScOAQLCA3JXVnIDA3JWV3L+LgE+NggIm8IDPwX3ubr3BT4CwpsICDY+AQOWcXCWAtlZdwMDd1ladwICd1pHdiUFAzT++LABAcD/BQX/wQGwAQg0AgYldkd0mwMDmwAAAAAFAAAAAAPqA+oAGwAnADsASQBwAAABFSMOARQWFzMVFBYyNj0BMz4BNCYnIzU0JiIGFw4BBy4BJz4BNx4BJTsBMhYfAQcOAQcUFyEuASc+AT8BDgEHBicuATU+ATceAQUUFh8BBw4BBx4BFyEXHgEXPgE3LgEnIgcjJyYvATc+ATcuAScOAQLRWg0SEg1aEhoSWg0SEg1aEhoS2wJqUFBqAgJqUFBq/aRLSypOIgkDQE0BCP6RISwBA5hy+AFEOS8wOEUBYkpJYv5pKiYFB22JAwJPPAGIAyJvRWqOAgKOahAQAghBVAIGJSoBA4VkZIUBdVkBERsRAVkOEREOWQERGxEBWQ4REYdPagICak9QagICasoZFwcBH3dLIR4BKyFxlwPqOloRDQ0RWjpJYQICYUk0WiIEAh6sdTtPAQU3QQEDjWprjQICBzwUAQUhWjRkhAMDhAAAAAIAAAAAA+oDBgAVACEAAAEeARc+ATc0Jx4BFw4BBy4BJz4BNwYFFgQXNiQ3JiQnBgQBLAJyVlZzAgk2WCA7wXRzwTsgWDYJ/tYGARrU1QEaBQX+5tXU/uYCP0tkAgJkSxoZHEIeOXEEBHE5HkIcGWMQ7hER7hAR7hER7gADAAAAAAPqA+oAIQAtADkAAAEOAR8BFQYUFxUHBhYXFjMyPwEXFjM+ATQmIyIjBycmByIBDgEHLgEnPgE3HgEFFgAXNgA3JgAnBgABEwsEB6sJCYUHBAoJCg8KhQIGBh8qKh8GBgKrChAJApEF97q59wUF97m69/xbBgEa1NUBGgUF/ubV1P7mAzcIGQvwARAnEAG7CxgIBg27AQEBKj8qAfAOAf66ufcFBfe5uvcFBfe61P7mBgYBGtTVARoFBf7mAAAAAgAAAAAD6gPqAAsAJQAAExcVFBYyNjQmJwcnNx4BFw4BBy4BJzQ2NycOAQcWABc2ADcmACf+3B0rHBwWCNrMuvcFBfe6ufcFOjYuP0EBBgEa1NUBGgUF/ubVArPfBBUdHSscAQHdzQX3urn3BQX3uVKWPSpGq17U/uYGBgEa1NUBGgUAAAASAN4AAQAAAAAAAAABAAAAAQAAAAAAAQAKAAEAAQAAAAAAAgAHAAsAAQAAAAAAAwAKABIAAQAAAAAABAAKABwAAQAAAAAABQALACYAAQAAAAAABgAKADEAAQAAAAAACgAsADsAAQAAAAAACwASAGcAAwABBAkAAAACAHkAAwABBAkAAQAUAHsAAwABBAkAAgAOAI8AAwABBAkAAwAUAJ0AAwABBAkABAAUALEAAwABBAkABQAWAMUAAwABBAkABgAUANsAAwABBAkACgBYAO8AAwABBAkACwAkAUcgZS1zYi1pY29uc1JlZ3VsYXJlLXNiLWljb25zZS1zYi1pY29uc1ZlcnNpb24gMS4wZS1zYi1pY29uc0ZvbnQgZ2VuZXJhdGVkIHVzaW5nIFN5bmNmdXNpb24gTWV0cm8gU3R1ZGlvd3d3LnN5bmNmdXNpb24uY29tACAAZQAtAHMAYgAtAGkAYwBvAG4AcwBSAGUAZwB1AGwAYQByAGUALQBzAGIALQBpAGMAbwBuAHMAZQAtAHMAYgAtAGkAYwBvAG4AcwBWAGUAcgBzAGkAbwBuACAAMQAuADAAZQAtAHMAYgAtAGkAYwBvAG4AcwBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIAB1AHMAaQBuAGcAIABTAHkAbgBjAGYAdQBzAGkAbwBuACAATQBlAHQAcgBvACAAUwB0AHUAZABpAG8AdwB3AHcALgBzAHkAbgBjAGYAdQBzAGkAbwBuAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3AAZtaWMtMDMMYnVsbGV0cy0tLTA1CmJ1bGxldHMtd2YJd2FsbGV0LXdmCWhlbHAtLS0wMgloZWxwLS0tMDEQcGFpZC1pbnZvaWNlMy13ZhBwYWlkLWludm9pY2UyLXdmEHBhaWQtaW52b2ljZTEtd2YOZm9sZGVyLW9wZW4tMDEFdGFza3MKdGFzay0wMi13Zgd0YXNrLTAyB3Rhc2stMDEKYXJyb3d1cC13Zg1hcnJvdy1kb3duLXdmDWNhbGVuZGFyLS0wMS0OY2FsZW5kYXItMDItd2YOY2FsZW5kYXItMDMtd2YMYnVsbGV0cy0tLTAyDGJ1bGxldHMtLS0wMQpidWxsZXRzXzAxB2hvbWVfMDEIaG91c2UtMDcIaG91c2UtMDkIc2V0dGluZ3MNc2V0dGluZ3MtLS0xMQ1zZXR0aW5ncy0tLTEwC3NldHRpbmdzLTAyBXRpbWVyFXNob3J0LWFzY2VuZGluZy0wMS13Zgxwcm9maXQtMDEtd2YOc3RvY2staW5kZXgtdXAIY2hhcnQtd2YFZ3JhcGgIZ3JhcGgtMDEJZGF0YS1lZGl0EXRleHQtaGlnaGxpZ2h0LXdmDGRhdGEtZWRpdC13ZglzZWFyY2gtd2YLc2VhcmNoLWZpbmQLZmlsdGVyLWVkaXQOZmlsdGVyLS0tMDItd2YMZmlsdGVyLTEwLXdmB21lbnVfMDEKbWVudS0wMS13ZhFtZW51LWludGVyZmFjZS13Zgx1c2VyLXByb2ZpbGURdXNlci1wcm9maWxlLTEtd2YLdXNlci1hZGQtd2YEc2hvdwhjbG9jay13Zgh0aW1lci13ZgAA) format(\"truetype\");\r\n font-weight: normal;\r\n font-style: normal;\r\n }\r\n\r\n [class^=\"sf-icon-\"],\r\n [class*=\" sf-icon-\"] {\r\n font-family: \"e-sb-icons\" !important;\r\n speak: none;\r\n font-size: 55px;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-variant: normal;\r\n text-transform: none;\r\n line-height: 1;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n }\r\n\r\n /* dockbar icon Style */\r\n\r\n .dashboard-seo .filter::before {\r\n content: \"\\e72a\";\r\n font-family: \"e-sb-icons\";\r\n }\r\n\r\n .dashboard-seo .analyticsChart::before {\r\n content: \"\\e722\";\r\n font-family: \"e-sb-icons\";\r\n }\r\n\r\n .dashboard-seo .session::before {\r\n content: \"\\e735\";\r\n font-family: \"e-sb-icons\";\r\n }\r\n\r\n .dashboard-seo .profile::before {\r\n content: \"\\e730\";\r\n font-family: \"e-sb-icons\";\r\n }\r\n\r\n .dashboard-seo .views::before {\r\n content: \"\\e733\";\r\n font-family: \"e-sb-icons\";\r\n }\r\n\r\n span.e-input-group.e-control-wrapper.e-ddl {\r\n left: 12%;\r\n }\r\n\r\n .dashboard-seo .expand::before {\r\n content: \"\\e72d\";\r\n margin-left: 18px;\r\n font-family: \"e-sb-icons\";\r\n position: absolute;\r\n top: 12%;\r\n }\r\n\r\n #right-sidebar {\r\n display: none;\r\n }\r\n\r\n .dashboard-seo .e-dock.e-close span.e-text {\r\n display: none;\r\n }\r\n\r\n .dashboard-seo .e-dock.e-open span.e-text {\r\n display: inline-block;\r\n }\r\n\r\n .dashboard-seo span.e-icons {\r\n line-height: 2;\r\n }\r\n\r\n .dashboard-seo .e-open .e-icons {\r\n margin-right: 16px;\r\n }\r\n\r\n\r\n .dashboard-seo .card-content.text {\r\n font-size: 15px;\r\n text-align: right;\r\n color: #66696b;\r\n }\r\n\r\n .dashboard-seo .card {\r\n margin-right: 5%;\r\n margin-top: 10%;\r\n }\r\n\r\n .dashboard-seo .card-content.number {\r\n font-size: 16px;\r\n text-align: right;\r\n padding-top: 10px;\r\n }\r\n\r\n .dashboard-seo .markerTemplate {\r\n font-size: 12px;\r\n color: white;\r\n text-shadow: 0px 1px 1px black;\r\n font-weight: 500;\r\n }\r\n\r\n .dashboard-seo .e-dock {\r\n padding-top: 8px;\r\n }\r\n\r\n .dashboard-seo .card .e-icons {\r\n position: absolute;\r\n top: 20%;\r\n left: 12%;\r\n width: 60px;\r\n height: 60px;\r\n text-align: center;\r\n border: 1px solid;\r\n line-height: 60px;\r\n color: #25c3cb;\r\n background: #eef5f7;\r\n border-radius: 60px;\r\n }\r\n\r\n .dashboard-seo .dashboardParent {\r\n width: 100%;\r\n }\r\n\r\n .dashboard-seo .chart-content, .dashboard-seo .map-content, .dashboard-seo .maps-content {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n\r\n /* styles for highcontrast theme */\r\n\r\n body.highcontrast .dashboard-seo #sidebar-section {\r\n border: 1px solid #969696;\r\n }\r\n\r\n body.highcontrast .dashboard-seo #analysisLayout.e-dashboardlayout.e-control .e-panel {\r\n background: #000;\r\n }\r\n\r\n body.highcontrast .dashboard-seo #analysisLayout.e-dashboardlayout.e-control .e-panel .e-panel-container .e-panel-header {\r\n color: rgba(255, 255, 255, 0.54);\r\n }\r\n\r\n .col-md-6-banner{\r\n padding: 0px 0px 0px 10px;\r\n }\r\n .col-md-12-PRates {\r\n padding: 0px 0px 0px 0px !important;\r\n margin-top: 15px;\r\n }\r\n .col-md-12-GRates {\r\n padding: 0px 0px 0px 0px !important;\r\n margin-top: 15px;\r\n }\r\n .col-md-12-FRates {\r\n padding: 0px 0px 0px 0px !important;\r\n margin-top: 15px;\r\n }\r\n .form-row-second {\r\n padding: 0px 30px 0px 0px;\r\n /*height: 685px;*/\r\n }\r\n .col-md-6-firstChart{\r\n display: flex;\r\n padding: 0px;\r\n }\r\n .col-md-6-secondChart {\r\n display: flex;\r\n padding: 0px;\r\n }\r\n .col-md-8-last {\r\n background-color: white;\r\n display: flex\r\n }\r\n .form-row-third {\r\n padding: 0px 30px 5px 0px;\r\n }\r\n .card nomargin {\r\n border: 0px solid!important;\r\n }\r\n .form-row-first{\r\n height: 200px;\r\n }\r\n .text-center {\r\n padding-bottom: 23px!important;\r\n }\r\n .p-t-first {\r\n padding-right: 10px;\r\n }\r\n .p-t-second {\r\n padding-top: 25px;\r\n padding-right: 10px;\r\n }\r\n .p-t-third {\r\n padding-top: 12px;\r\n }\r\n #pricesNotLatestWarningMessage {\r\n color: #f78764;\r\n background-color: white;\r\n text-align: center;\r\n margin-bottom: 10px;\r\n margin-right: 29px;\r\n border-radius: 0.25rem;\r\n }\r\n .form-row-four {\r\n padding: 0px 36px 5px 5px;\r\n }\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=8aa357f8&scoped=true\"\nimport script from \"./Home.vue?vue&type=script&lang=js\"\nexport * from \"./Home.vue?vue&type=script&lang=js\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=8aa357f8&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8aa357f8\",\n null\n \n)\n\nexport default component.exports","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StackedColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-stacked-columns';\n }\n }\n});\nexport var StackedColumnsPlugin = {\n name: 'e-stacked-columns',\n install: function (Vue) {\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n }\n};\nexport var StackedColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stacked-column';\n }\n }\n});\nexport var StackedColumnPlugin = {\n name: 'e-stacked-column',\n install: function (Vue) {\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * <ejs-grid :dataSource='data' allowPaging='true' allowSorting='true'>\n * <e-columns>\n * <e-column field='ID' width='100'/>\n * <e-column field='name' headerText='Name' width='100'/>\n * </e-columns>\n * </ejs-grid>\n * ```\n */\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregateColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS Grid.\n * ```vue\n * <ejs-grid :dataSource='data' allowPaging='true' allowSorting='true'>\n * <e-columns>\n * <e-column field='ID' width='100'/>\n * <e-column field='name' headerText='Name' width='100'/>\n * </e-columns>\n * <e-aggregates>\n * <e-aggregate>\n * <e-columns>\n * <e-column field='ID' type='Min'/>\n * </e-columns>\n * </e-aggregate>\n * </e-aggregates>\n * </ejs-grid>\n * ```\n */\nexport var AggregateColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregatesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-aggregates';\n }\n }\n});\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * <ejs-grid :dataSource]='data' allowPaging='true' allowSorting='true'>\n * <e-columns>\n * <e-column field='ID' width='100'/>\n * <e-column field='name' headerText='Name' width='100'/>\n * </e-columns>\n * <e-aggregates>\n * <e-aggregate>\n * <e-columns>\n * <e-column field='ID' type='Min'/>\n * </e-columns>\n * </e-aggregate>\n * </e-aggregates>\n * </ejs-grid>\n * ```\n */\nexport var AggregateDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-aggregate';\n }\n }\n});\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { StackedColumnsDirective, StackedColumnDirective, StackedColumnsPlugin, StackedColumnPlugin } from './stacked-column.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'autoFit', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'cssClass', 'currencyCode', 'currentAction', 'currentViewData', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'emptyRecordTemplate', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableStickyHeader', 'enableVirtualMaskRow', 'enableVirtualization', 'exportGrids', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'loadingIndicator', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'showHider', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenAdaptiveDialog', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportDetailTemplate', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * <ejs-grid :dataSource='data' allowPaging='true' allowSorting='true'></ejs-grid>\n * ```\n */\nexport var GridComponent = vueDefineComponent({\n name: 'GridComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Grid({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-columns\": { \"e-column\": { \"e-stacked-columns\": \"e-stacked-column\" } }, \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } },\n tagNameMapper: { \"e-stacked-columns\": \"e-columns\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addRecord: function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n },\n addShimmerEffect: function () {\n return this.ej2Instances.addShimmerEffect();\n },\n autoFitColumns: function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n },\n batchAsyncUpdate: function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n },\n batchUpdate: function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n },\n calculatePageSizeByParentHeight: function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n },\n changeDataSource: function (dataSource, columns) {\n return this.ej2Instances.changeDataSource(dataSource, columns);\n },\n clearCellSelection: function () {\n return this.ej2Instances.clearCellSelection();\n },\n clearFiltering: function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n },\n clearGrouping: function () {\n return this.ej2Instances.clearGrouping();\n },\n clearRowSelection: function () {\n return this.ej2Instances.clearRowSelection();\n },\n clearSelection: function () {\n return this.ej2Instances.clearSelection();\n },\n clearSorting: function () {\n return this.ej2Instances.clearSorting();\n },\n closeEdit: function () {\n return this.ej2Instances.closeEdit();\n },\n copy: function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n },\n csvExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n dataReady: function () {\n return this.ej2Instances.dataReady();\n },\n deleteRecord: function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n },\n deleteRow: function (tr) {\n return this.ej2Instances.deleteRow(tr);\n },\n destroyTemplate: function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n },\n detailCollapseAll: function () {\n return this.ej2Instances.detailCollapseAll();\n },\n detailExpandAll: function () {\n return this.ej2Instances.detailExpandAll();\n },\n editCell: function (index, field) {\n return this.ej2Instances.editCell(index, field);\n },\n enableToolbarItems: function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n },\n endEdit: function () {\n return this.ej2Instances.endEdit();\n },\n excelExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n extendRequiredModules: function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n },\n filterByColumn: function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n },\n getBatchChanges: function () {\n return this.ej2Instances.getBatchChanges();\n },\n getCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n },\n getColumnByField: function (field) {\n return this.ej2Instances.getColumnByField(field);\n },\n getColumnByUid: function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n },\n getColumnFieldNames: function () {\n return this.ej2Instances.getColumnFieldNames();\n },\n getColumnHeaderByField: function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n },\n getColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n },\n getColumnHeaderByUid: function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n },\n getColumnIndexByField: function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n },\n getColumnIndexByUid: function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n },\n getColumns: function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n },\n getContent: function () {\n return this.ej2Instances.getContent();\n },\n getContentTable: function () {\n return this.ej2Instances.getContentTable();\n },\n getCurrentViewRecords: function () {\n return this.ej2Instances.getCurrentViewRecords();\n },\n getDataModule: function () {\n return this.ej2Instances.getDataModule();\n },\n getDataRows: function () {\n return this.ej2Instances.getDataRows();\n },\n getFilterUIInfo: function () {\n return this.ej2Instances.getFilterUIInfo();\n },\n getFilteredRecords: function () {\n return this.ej2Instances.getFilteredRecords();\n },\n getFooterContent: function () {\n return this.ej2Instances.getFooterContent();\n },\n getFooterContentTable: function () {\n return this.ej2Instances.getFooterContentTable();\n },\n getForeignKeyColumns: function () {\n return this.ej2Instances.getForeignKeyColumns();\n },\n getFrozenDataRows: function () {\n return this.ej2Instances.getFrozenDataRows();\n },\n getFrozenLeftColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n },\n getFrozenLeftCount: function () {\n return this.ej2Instances.getFrozenLeftCount();\n },\n getFrozenMode: function () {\n return this.ej2Instances.getFrozenMode();\n },\n getFrozenRightCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n },\n getFrozenRightColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n },\n getFrozenRightDataRows: function () {\n return this.ej2Instances.getFrozenRightDataRows();\n },\n getFrozenRightRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n },\n getFrozenRightRows: function () {\n return this.ej2Instances.getFrozenRightRows();\n },\n getFrozenRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n },\n getHeaderContent: function () {\n return this.ej2Instances.getHeaderContent();\n },\n getHeaderTable: function () {\n return this.ej2Instances.getHeaderTable();\n },\n getHiddenColumns: function () {\n return this.ej2Instances.getHiddenColumns();\n },\n getMediaColumns: function () {\n return this.ej2Instances.getMediaColumns();\n },\n getMovableCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n },\n getMovableColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n },\n getMovableDataRows: function () {\n return this.ej2Instances.getMovableDataRows();\n },\n getMovableRowByIndex: function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n },\n getMovableRows: function () {\n return this.ej2Instances.getMovableRows();\n },\n getPager: function () {\n return this.ej2Instances.getPager();\n },\n getPrimaryKeyFieldNames: function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n },\n getRowByIndex: function (index) {\n return this.ej2Instances.getRowByIndex(index);\n },\n getRowIndexByPrimaryKey: function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n },\n getRowInfo: function (target) {\n return this.ej2Instances.getRowInfo(target);\n },\n getRows: function () {\n return this.ej2Instances.getRows();\n },\n getSelectedColumnsUid: function () {\n return this.ej2Instances.getSelectedColumnsUid();\n },\n getSelectedRecords: function () {\n return this.ej2Instances.getSelectedRecords();\n },\n getSelectedRowCellIndexes: function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n },\n getSelectedRowIndexes: function () {\n return this.ej2Instances.getSelectedRowIndexes();\n },\n getSelectedRows: function () {\n return this.ej2Instances.getSelectedRows();\n },\n getSummaryValues: function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n },\n getUidByColumnField: function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n },\n getVisibleColumns: function () {\n return this.ej2Instances.getVisibleColumns();\n },\n goToPage: function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n },\n groupCollapseAll: function () {\n return this.ej2Instances.groupCollapseAll();\n },\n groupColumn: function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n },\n groupExpandAll: function () {\n return this.ej2Instances.groupExpandAll();\n },\n hideColumns: function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n },\n hideScroll: function () {\n return this.ej2Instances.hideScroll();\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n isFrozenGrid: function () {\n return this.ej2Instances.isFrozenGrid();\n },\n openColumnChooser: function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n },\n pdfExport: function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n },\n print: function () {\n return this.ej2Instances.print();\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshColumns: function () {\n return this.ej2Instances.refreshColumns();\n },\n refreshHeader: function () {\n return this.ej2Instances.refreshHeader();\n },\n removeMaskRow: function () {\n return this.ej2Instances.removeMaskRow();\n },\n reorderColumnByIndex: function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n },\n reorderColumnByTargetIndex: function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n },\n reorderColumns: function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n },\n reorderRows: function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n },\n saveCell: function () {\n return this.ej2Instances.saveCell();\n },\n search: function (searchString) {\n return this.ej2Instances.search(searchString);\n },\n selectCell: function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n },\n selectCells: function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n },\n selectCellsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n },\n selectRow: function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n },\n selectRows: function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n },\n selectRowsByRange: function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n },\n serverCsvExport: function (url) {\n return this.ej2Instances.serverCsvExport(url);\n },\n serverExcelExport: function (url) {\n return this.ej2Instances.serverExcelExport(url);\n },\n serverPdfExport: function (url) {\n return this.ej2Instances.serverPdfExport(url);\n },\n setCellValue: function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n },\n setGridContent: function (element) {\n return this.ej2Instances.setGridContent(element);\n },\n setGridContentTable: function (element) {\n return this.ej2Instances.setGridContentTable(element);\n },\n setGridHeaderContent: function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n },\n setGridHeaderTable: function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n },\n setGridPager: function (element) {\n return this.ej2Instances.setGridPager(element);\n },\n setRowData: function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n },\n showAdaptiveFilterDialog: function () {\n return this.ej2Instances.showAdaptiveFilterDialog();\n },\n showAdaptiveSortDialog: function () {\n return this.ej2Instances.showAdaptiveSortDialog();\n },\n showColumns: function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n },\n showMaskRow: function (axisDirection, dialogElement) {\n return this.ej2Instances.showMaskRow(axisDirection, dialogElement);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n sortColumn: function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n },\n startEdit: function () {\n return this.ej2Instances.startEdit();\n },\n ungroupColumn: function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n },\n updateCell: function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n },\n updateExternalMessage: function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n },\n updateRow: function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n },\n updateRowValue: function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n },\n }\n});\nexport var GridPlugin = {\n name: 'ejs-grid',\n install: function (Vue) {\n Vue.component(GridPlugin.name, GridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (_this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-row');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('ClearButton'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\n","import { print as printWindow, createElement } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\nvar PrintUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function PrintUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements.\n *\n * @param elements\n */\n PrintUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n *\n * @param elements\n * @private\n */\n PrintUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n for (var index = 0; index < div.children.length; index++) {\n var backgroundColor = (this.control.theme.indexOf('Dark') > -1 || this.control.theme === 'HighContrast') ? 'rgba(0, 0, 0, 1)' : 'rgba(255, 255, 255, 1)';\n var svg = div.children[index];\n for (var childIndex = 0; childIndex < svg.children.length; childIndex++) {\n var actualBackgroundColor = void 0;\n var isSVG = false;\n if (svg.id.indexOf('_stockChart_svg') > -1) {\n actualBackgroundColor = svg.children[0].getAttribute('fill');\n isSVG = true;\n }\n else if (svg.children[childIndex].id.indexOf('_svg') > -1) {\n actualBackgroundColor = svg.children[childIndex].children[0].getAttribute('fill');\n isSVG = true;\n }\n if (isSVG) {\n actualBackgroundColor = actualBackgroundColor === 'transparent' ? backgroundColor : actualBackgroundColor;\n svg.children[childIndex].children[0].setAttribute('fill', actualBackgroundColor);\n }\n }\n div[index] = svg;\n }\n return div;\n };\n return PrintUtils;\n}());\nexport { PrintUtils };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection, Browser } from '@syncfusion/ej2-base';\n/**\n * Defines the appearance of the connectors\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the borders in the chart title.\n */\nvar titleBorder = /** @class */ (function (_super) {\n __extends(titleBorder, _super);\n function titleBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], titleBorder.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], titleBorder.prototype, \"width\", void 0);\n __decorate([\n Property(0.8)\n ], titleBorder.prototype, \"cornerRadius\", void 0);\n return titleBorder;\n}(ChildProperty));\nexport { titleBorder };\n/**\n * Configures the title settings in chart and 3D chart.\n */\nvar titleSettings = /** @class */ (function (_super) {\n __extends(titleSettings, _super);\n function titleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], titleSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('15px')\n ], titleSettings.prototype, \"size\", void 0);\n __decorate([\n Property('500')\n ], titleSettings.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], titleSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], titleSettings.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], titleSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], titleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], titleSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('Top')\n ], titleSettings.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"y\", void 0);\n __decorate([\n Property('transparent')\n ], titleSettings.prototype, \"background\", void 0);\n __decorate([\n Complex({}, titleBorder)\n ], titleSettings.prototype, \"border\", void 0);\n return titleSettings;\n}(ChildProperty));\nexport { titleSettings };\n/**\n * Configures the location for the legend.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Configures the fonts in charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Configures the borders in the chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Configures the marker position in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Configures the chart area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"width\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the chart margins.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the chart Legend Container Padding.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the animation behavior for chart series.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Series and point index\n *\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Column series rounded corner options\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Configures the Empty Points of series\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Configures the drag settings of series\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Options to customize the center label of the pie and doughnut chart.\n *\n * @default {}\n */\nvar CenterLabel = /** @class */ (function (_super) {\n __extends(CenterLabel, _super);\n function CenterLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"text\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"16px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], CenterLabel.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"hoverTextFormat\", void 0);\n return CenterLabel;\n}(ChildProperty));\nexport { CenterLabel };\n/**\n * Configures the ToolTips in the chart.\n *\n * @public\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: null, color: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], TooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: null, y: null }, Location)\n ], TooltipSettings.prototype, \"location\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\nvar StockTooltipSettings = /** @class */ (function (_super) {\n __extends(StockTooltipSettings, _super);\n function StockTooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], StockTooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: null, color: null }, Font)\n ], StockTooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], StockTooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], StockTooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], StockTooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], StockTooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Fixed')\n ], StockTooltipSettings.prototype, \"position\", void 0);\n return StockTooltipSettings;\n}(ChildProperty));\nexport { StockTooltipSettings };\n/**\n * button settings in period selector\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Period Selector Settings\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\n","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * Numeric module is used to render numeric axis.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function Double(chart) {\n this.isColumn = 0;\n this.isStacking = false;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n *\n * @private\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n if (this.isAutoIntervalOnBothAxis(axis)) {\n return niceInterval;\n }\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Double.prototype.isAutoIntervalOnBothAxis = function (axis) {\n if (((axis.zoomFactor < 1 || axis.zoomPosition > 0) && axis.enableAutoIntervalOnZooming)) {\n return false;\n }\n else {\n return true;\n }\n };\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - (this.isStacking ? 0 : axis.actualRange.interval);\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n *\n * @private\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n *\n * @private\n */\n Double.prototype.calculateRange = function (axis) {\n /*! Generate axis range */\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible) {\n continue;\n }\n this.paddingInterval = 0;\n if (!isNullOrUndefined(series.points)) {\n axis.maxPointLength = series.points.length;\n }\n axis.maxPointLength = series.points.length;\n if (((series.type.indexOf('Column') > -1 || series.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series.xAxis.valueType === 'Double' || series.xAxis.valueType === 'DateTime')\n && series.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series);\n }\n else {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1 || series.drawType === 'Column') ? 1 : 0;\n this.isStacking = series.type.indexOf('Stacking') !== -1;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n this.findMinMax(series.yMin, series.yMax);\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n *\n * @private\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval, size);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval, size) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n var delta = maximum - minimum;\n interval = this.calculateNumericNiceInterval(axis, delta, size);\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0 || (minimum < 0 && maximum < 0)) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(size);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming) ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n if (axis.maximum && axis.orientation === 'Vertical' && axis.rangePadding === 'Auto') {\n var duplicateTempInterval = void 0;\n var tempInterval = axis.visibleRange.min;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n }\n if (duplicateTempInterval < axis.visibleRange.max) {\n axis.visibleRange.max = duplicateTempInterval + axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n *\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n *\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n /*The toLocaleString method is used to adjust the decimal points for this ticket, specifically for ticket numbers I481747 and I541484.*/\n var labelValue = !(tempInterval % 1) ? tempInterval : Number(tempInterval.toLocaleString('en-US').split(',').join(''));\n return isCustom ? format.replace('{value}', axis.format(labelValue))\n : format ? axis.format(tempInterval) : axis.format(labelValue);\n };\n return Double;\n}());\nexport { Double };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableColumnVirtualization && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf<HTMLTableRowElement>} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row<Column>} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords() : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { AutoComplete } from '@syncfusion/ej2-dropdowns';\nexport var properties = ['isLazyUpdate', 'plugins', 'actionFailureTemplate', 'allowCustom', 'allowFiltering', 'autofill', 'cssClass', 'dataSource', 'enablePersistence', 'enableRtl', 'enableVirtualization', 'enabled', 'fields', 'filterBarPlaceholder', 'filterType', 'floatLabelType', 'footerTemplate', 'groupTemplate', 'headerTemplate', 'highlight', 'htmlAttributes', 'ignoreAccent', 'ignoreCase', 'index', 'itemTemplate', 'locale', 'minLength', 'noRecordsTemplate', 'placeholder', 'popupHeight', 'popupWidth', 'query', 'readonly', 'showClearButton', 'showPopupButton', 'sortOrder', 'suggestionCount', 'text', 'value', 'valueTemplate', 'width', 'zIndex', 'actionBegin', 'actionComplete', 'actionFailure', 'beforeOpen', 'blur', 'change', 'close', 'created', 'customValueSpecifier', 'dataBound', 'destroyed', 'filtering', 'focus', 'open', 'select'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * The AutoComplete component provides all the matched suggestion list on typing the input from which the user can select one.\n * ```html\n * <ejs-autocomplete :dataSource='data'></ejs-autocomplete>\n * ```\n */\nexport var AutoCompleteComponent = vueDefineComponent({\n name: 'AutoCompleteComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new AutoComplete({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addItem: function (items, itemIndex) {\n return this.ej2Instances.addItem(items, itemIndex);\n },\n clear: function () {\n return this.ej2Instances.clear();\n },\n filter: function (dataSource, query, fields) {\n return this.ej2Instances.filter(dataSource, query, fields);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function (e) {\n return this.ej2Instances.focusOut(e);\n },\n getDataByValue: function (value) {\n return this.ej2Instances.getDataByValue(value);\n },\n getItems: function () {\n return this.ej2Instances.getItems();\n },\n hidePopup: function (e) {\n return this.ej2Instances.hidePopup(e);\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n showPopup: function (e) {\n return this.ej2Instances.showPopup(e);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n }\n});\nexport var AutoCompletePlugin = {\n name: 'ejs-autocomplete',\n install: function (Vue) {\n Vue.component(AutoCompletePlugin.name, AutoCompleteComponent);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row<Column>} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row<Column>[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies Chart Themes\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: '400',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n})(Theme || (Theme = {}));\n/** @private */\nexport function getSeriesColor(theme) {\n var palette;\n switch (theme) {\n case 'Fabric':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'Bootstrap4':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Bootstrap':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'HighContrastLight':\n case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#9ECB08', '#56AEFF', '#C57AFF', '#61EAA9', '#EBBB3E',\n '#F45C5C', '#8A77FF', '#63C7FF', '#FF84B0', '#F7C928'];\n break;\n case 'FabricDark':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'BootstrapDark':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Tailwind':\n palette = ['#5A61F6', '#65A30D', '#334155', '#14B8A6', '#8B5CF6',\n '#0369A1', '#F97316', '#9333EA', '#F59E0B', '#15803D'];\n break;\n case 'TailwindDark':\n palette = ['#8B5CF6', '#22D3EE', '#F87171', '#4ADE80', '#E879F9',\n '#FCD34D', '#F97316', '#2DD4BF', '#F472B6', '#10B981'];\n break;\n case 'Bootstrap5':\n palette = ['#6355C7', '#FFB400', '#2196F5', '#F7523F', '#963C70',\n '#4BE0BC', '#FD7400', '#C9E422', '#DE3D8A', '#162F88'];\n break;\n case 'Bootstrap5Dark':\n palette = ['#8F80F4', '#FFD46D', '#6CBDFF', '#FF7F71', '#FF6DB3',\n '#63F5D2', '#FCAA65', '#ECFF77', '#EF8EFF', '#5F82FD'];\n break;\n case 'FluentDark':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Fluent':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Material3':\n palette = ['#6355C7', '#00AEE0', '#FFB400', '#F7523F', '#963C70',\n '#FD7400', '#4BE0BC', '#2196F5', '#DE3D8A', '#162F88'];\n break;\n case 'Material3Dark':\n palette = ['#4EAAFF', '#FA4EAB', '#FFF500', '#17EA58', '#38FFE7',\n '#FF9E45', '#B3F32F', '#B93CE4', '#FC5664', '#9B55FF'];\n break;\n default:\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n }\n return palette;\n}\n/** @private */\n// tslint:disable-next-line:max-func-body-length\nexport function getThemeColor(theme, canvas) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#383838' : (theme === 'FabricDark' ? '#242424' : '#1b1b1b');\n switch (theme) {\n case 'HighContrastLight':\n case 'HighContrast':\n style = {\n axisLabel: '#ffffff',\n axisTitle: '#ffffff',\n axisLine: '#ffffff',\n majorGridLine: '#BFBFBF',\n minorGridLine: '#969696',\n majorTickLine: '#BFBFBF',\n minorTickLine: '#969696',\n chartTitle: '#ffffff',\n legendLabel: '#ffffff',\n background: canvas ? '#000000' : 'transparent',\n areaBorder: '#ffffff',\n errorBar: '#ffffff',\n crosshairLine: '#ffffff',\n crosshairFill: '#ffffff',\n crosshairLabel: '#000000',\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n markerShadow: '#BFBFBF',\n selectionRectFill: 'rgba(255, 217, 57, 0.3)',\n selectionRectStroke: '#ffffff',\n selectionCircleStroke: '#FFD939',\n tabColor: '#FFD939',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#FFD939',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n axisLabel: '#DADADA', axisTitle: '#ffffff',\n axisLine: ' #6F6C6C',\n majorGridLine: '#414040',\n minorGridLine: '#514F4F',\n majorTickLine: '#414040',\n minorTickLine: ' #4A4848',\n chartTitle: '#ffffff',\n legendLabel: '#DADADA',\n background: canvas ? darkBackground : 'transparent',\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n crosshairLabel: '#282727',\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A',\n markerShadow: null,\n selectionRectFill: 'rgba(56,169,255, 0.1)',\n selectionRectStroke: '#38A9FF',\n selectionCircleStroke: '#282727',\n tabColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n axisLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#CED4DA', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n legendTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n legendLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n tooltipLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n axisTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n datalabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n chartSubTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n crosshairLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n stripLineLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.24)' : theme === 'FabricDark' ? '#6F6C6C' : '#414141', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n }\n };\n break;\n case 'Bootstrap4':\n style = {\n axisLabel: '#212529', axisTitle: '#212529', axisLine: '#CED4DA', majorGridLine: '#CED4DA',\n minorGridLine: '#DEE2E6', majorTickLine: '#ADB5BD', minorTickLine: '#CED4DA', chartTitle: '#212529', legendLabel: '#212529',\n background: canvas ? '#FFFFFF' : 'transparent', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#212529',\n crosshairLabel: '#FFFFFF', tooltipFill: '#020202', tooltipBoldLabel: 'rgba(255,255,255)',\n tooltipLightLabel: 'rgba(255,255,255, 0.9)', tooltipHeaderLine: 'rgba(255,255,255, 0.2)', markerShadow: null,\n selectionRectFill: 'rgba(255,255,255, 0.1)', selectionRectStroke: 'rgba(0, 123, 255)', selectionCircleStroke: '#495057', tabColor: '#007BFF', bearFillColor: '#2ecd71', bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#007BFF',\n toolkitFill: '#495057',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(-5, -5, 26, 26),\n chartTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#666666', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Tailwind':\n style = {\n axisLabel: '#6B728', axisTitle: '#374151',\n axisLine: ' #D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#374151',\n legendLabel: '#374151',\n background: canvas ? 'rgba(255,255,255, 0.0)' : 'transparent',\n areaBorder: ' #E5E7EB',\n errorBar: '#374151',\n crosshairLine: '#1F2937',\n crosshairFill: '#111827',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#111827',\n tooltipBoldLabel: '#D1D5DB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#4F46E5',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#4F46E5',\n toolkitFill: '#6B7280',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n axisLabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n },\n legendTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n legendLabelFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter'\n },\n axisTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n datalabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n },\n chartSubTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter'\n },\n stripLineLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n }\n };\n break;\n case 'TailwindDark':\n style = {\n axisLabel: '#9CA3AF', axisTitle: '#9CA3AF',\n axisLine: ' #4B5563',\n majorGridLine: '#374151',\n minorGridLine: '#374151',\n majorTickLine: '#4B5563',\n minorTickLine: ' #4B5563',\n chartTitle: '#D1D5DB',\n legendLabel: '#D1D5DB',\n background: canvas ? '#1f2937' : 'transparent',\n areaBorder: ' #374151',\n errorBar: '#ffffff',\n crosshairLine: '#9CA3AF',\n crosshairFill: '#F9FAFB',\n crosshairLabel: '#1F2937',\n tooltipFill: '#F9FAFB',\n tooltipBoldLabel: '#6B7280',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(34,211,238, 0.1)',\n selectionRectStroke: '#22D3EE',\n selectionCircleStroke: '#282727',\n tabColor: '#22D3EE',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#22D3EE',\n toolkitFill: '#D1D5DB',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n axisLabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter'\n },\n legendTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n legendLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n tooltipLabelFont: {\n color: '#1F2937', fontFamily: 'Inter'\n },\n axisTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n datalabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter'\n },\n chartSubTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n crosshairLabelFont: {\n color: '#1F2937', fontFamily: 'Inter'\n },\n stripLineLabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n }\n };\n break;\n case 'Bootstrap5':\n style = {\n axisLabel: '#495057',\n axisTitle: '#343A40',\n axisLine: '#D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#343A40',\n legendLabel: '#343A40',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: ' #DEE2E6',\n errorBar: '#1F2937',\n crosshairLine: '#1F2937',\n crosshairFill: '#212529',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0D6EFD',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0D6EFD',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#ADB5BD', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n axisLabel: '#CED4DA',\n axisTitle: '#E9ECEF',\n axisLine: '#495057',\n majorGridLine: '#343A40',\n minorGridLine: '#343A40',\n majorTickLine: '#495057',\n minorTickLine: ' #495057',\n chartTitle: '#E9ECEF',\n legendLabel: '#E9ECEF',\n background: canvas ? '#212529' : 'transparent',\n areaBorder: ' #444C54',\n errorBar: '#ADB5BD',\n crosshairLine: '#ADB5BD',\n crosshairFill: '#E9ECEF',\n crosshairLabel: '#212529',\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0D6EFD',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0D6EFD',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#CED4DA', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Fluent':\n style = {\n axisLabel: '#3B3A39',\n axisTitle: '#201F1E',\n axisLine: '#D2D0CE',\n majorGridLine: '#EDEBE9',\n minorGridLine: '#EDEBE9',\n majorTickLine: '#D2D0CE',\n minorTickLine: ' #D2D0CE',\n chartTitle: '#201F1E',\n legendLabel: '#323130',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#EDEBE9',\n errorBar: '#A19F9D',\n crosshairLine: '#A19F9D',\n crosshairFill: '#FFFFFF',\n crosshairLabel: '#323130',\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078D4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#A19F9D',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#323129', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#A19F9D', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'FluentDark':\n style = {\n axisLabel: '#C8C6C4',\n axisTitle: '#F3F2F1',\n axisLine: '#3B3A39',\n majorGridLine: '#414040',\n minorGridLine: '#414040',\n majorTickLine: '#3B3A39',\n minorTickLine: '#3B3A39',\n chartTitle: '#F3F2F1',\n legendLabel: '#D2D0CE',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#414040',\n errorBar: '#D2D0CE',\n crosshairLine: '#D2D0CE',\n crosshairFill: '#323130',\n crosshairLabel: '#F3F2F1',\n tooltipFill: '#252423',\n tooltipBoldLabel: '#F3F2F1',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078D4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#484644',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#F3F2F2', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#484644', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'Material3':\n style = {\n axisLabel: '#1E192B',\n axisTitle: '#1C1B1F',\n axisLine: '#C4C7C5',\n majorGridLine: '#C4C7C5',\n minorGridLine: '#C4C7C5',\n majorTickLine: '#C4C7C5',\n minorTickLine: ' #C4C7C5',\n chartTitle: '#1C1B1F',\n legendLabel: '#49454E',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#E7E0EC',\n errorBar: '#79747E',\n crosshairLine: '#49454E',\n crosshairFill: '#313033',\n crosshairLabel: '#F4EFF4',\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n markerShadow: null,\n selectionRectFill: 'rgb(98, 0, 238, 0.06)',\n selectionRectStroke: '#6200EE',\n selectionCircleStroke: '#79747E',\n tabColor: '#49454E',\n bearFillColor: '#5887FF',\n bullFillColor: '#F7523F',\n toolkitSelectionColor: '#49454E',\n toolkitFill: '#49454E',\n toolkitIconRectOverFill: '#EADDFF',\n toolkitIconRectSelectionFill: '#EADDFF',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#D21020',\n chartTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n axisLabelFont: {\n color: '#1E192B', fontFamily: 'Roboto'\n },\n legendTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n tooltipLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto'\n },\n axisTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n datalabelFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n chartSubTitleFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n crosshairLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto'\n },\n stripLineLabelFont: {\n color: '#79747E', fontFamily: 'Roboto'\n }\n };\n break;\n case 'Material3Dark':\n style = {\n axisLabel: '#E6E1E5',\n axisTitle: '#E6E1E5',\n axisLine: '#49454F',\n majorGridLine: '#444746',\n minorGridLine: '#444746',\n majorTickLine: '#444746',\n minorTickLine: ' #444746',\n chartTitle: '#E6E1E5',\n legendLabel: '#CAC4D0',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#49454F',\n errorBar: '#938F99',\n crosshairLine: '#CAC4D0',\n crosshairFill: '#E6E1E5',\n crosshairLabel: '#313033',\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n markerShadow: null,\n selectionRectFill: 'rgba(78, 170, 255, 0.06)',\n selectionRectStroke: '#4EAAFF',\n selectionCircleStroke: '#938F99',\n tabColor: '#CAC4D0',\n bearFillColor: '#B3F32F',\n bullFillColor: '#FF9E45',\n toolkitSelectionColor: '#CAC4D0',\n toolkitFill: '#CAC4D0',\n toolkitIconRectOverFill: '#4F378B',\n toolkitIconRectSelectionFill: '#4F378B',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#FF9E45',\n chartTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n axisLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n legendTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n legendLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n tooltipLabelFont: {\n color: '#313033', fontFamily: 'Roboto'\n },\n axisTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n datalabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n chartSubTitleFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n crosshairLabelFont: {\n color: '#313033', fontFamily: 'Roboto'\n },\n stripLineLabelFont: {\n color: '#938F99', fontFamily: 'Roboto'\n }\n };\n break;\n default:\n style = {\n axisLabel: '#686868',\n axisTitle: '#424242',\n axisLine: '#b5b5b5',\n majorGridLine: '#dbdbdb',\n minorGridLine: '#eaeaea',\n majorTickLine: '#b5b5b5',\n minorTickLine: '#d6d6d6',\n chartTitle: '#424242',\n legendLabel: '#353535',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n crosshairLabel: '#e5e5e5',\n tooltipFill: '#000816',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff',\n markerShadow: null,\n selectionRectFill: 'rgba(41, 171, 226, 0.1)',\n selectionRectStroke: '#29abe2',\n selectionCircleStroke: '#29abe2',\n tabColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n axisLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n legendTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n legendLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#666666', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n tooltipLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n axisTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n datalabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n chartSubTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n crosshairLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n stripLineLabelFont: {\n color: theme === 'Material' ? 'rgba(158, 158, 158, 1)' : theme === 'Fabric' ? '#A6A6A6' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n }\n };\n break;\n }\n return style;\n}\n/** @private */\nexport function getScrollbarThemeColor(theme) {\n var scrollStyle;\n switch (theme) {\n case 'HighContrastLight':\n scrollStyle = {\n backRect: '#333',\n thumb: '#bfbfbf',\n circle: '#fff',\n circleHover: '#685708',\n arrow: '#333',\n grip: '#333',\n arrowHover: '#fff',\n backRectBorder: '#969696'\n };\n break;\n case 'Bootstrap':\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e6e6e6',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#8c8c8c',\n grip: '#8c8c8c'\n };\n break;\n case 'Fabric':\n scrollStyle = {\n backRect: '#f8f8f8',\n thumb: '#eaeaea',\n circle: '#fff',\n circleHover: '#eaeaea',\n arrow: '#a6a6a6',\n grip: '#a6a6a6'\n };\n break;\n case 'MaterialDark':\n scrollStyle = {\n backRect: '#424242',\n thumb: '#616161',\n circle: '#757575',\n circleHover: '#616161',\n arrow: '#BDBDBD',\n grip: '#BDBDBD'\n };\n break;\n case 'FabricDark':\n scrollStyle = {\n backRect: '#282727',\n thumb: '#333232',\n circle: '#4A4848',\n circleHover: '#514F4F',\n arrow: '#ADB5BD',\n grip: '#DADADA'\n };\n break;\n case 'BootstrapDark':\n scrollStyle = {\n backRect: '#2A2A2A',\n thumb: '#313131',\n circle: '#414141',\n circleHover: '#484848',\n arrow: '#DADADA',\n grip: '#FFFFFF'\n };\n break;\n case 'Bootstrap5Dark':\n scrollStyle = {\n backRect: '#282D31',\n thumb: '#3B4248',\n circle: '#495057',\n circleHover: '#6C757D',\n arrow: '#A19F9D',\n grip: '#ADB5BD'\n };\n break;\n case 'HighContrast':\n scrollStyle = {\n backRect: '#757575',\n thumb: '#BFBFBF',\n circle: '#FFFFFF',\n circleHover: '#FFFFFF',\n arrow: '#ADB5BD',\n grip: '#969696'\n };\n break;\n case 'TailwindDark':\n scrollStyle = {\n backRect: '#6B7280',\n thumb: '#374151',\n circle: '#4B5563',\n circleHover: '#4B5563',\n arrow: '#ADB5BD',\n grip: '#D1D5DB'\n };\n break;\n case 'Fluent':\n scrollStyle = {\n backRect: '#F3F2F1',\n thumb: '#E1DFDD',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#605E5C',\n grip: '#605E5C'\n };\n break;\n case 'FluentDark':\n scrollStyle = {\n backRect: '#252423',\n thumb: '#323130',\n circle: '#3B3A39',\n circleHover: '#3B3A39',\n arrow: '#ADB5BD',\n grip: '#A19F9D'\n };\n break;\n case 'Material3':\n scrollStyle = {\n backRect: 'rgba(103, 80, 164, 0.05)',\n thumb: ' rgba(103, 80, 164, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#49454E',\n grip: '#49454E'\n };\n break;\n case 'Material3Dark':\n scrollStyle = {\n backRect: 'rgba(208, 188, 255, 0.05)',\n thumb: 'rgba(208, 188, 255, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#CAC4D0',\n grip: '#CAC4D0'\n };\n break;\n default:\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e0e0e0',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#9e9e9e',\n grip: '#9e9e9e'\n };\n break;\n }\n return scrollStyle;\n}\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row<Column>} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = '<tr><td class=\"e-rowcell\">A<td></tr>';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = '<tr><td class=\"e-rowcell\">A<td></tr>';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow<Column>} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row<Column>[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row<Column>} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row<Column>[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n *\n * @param {Object} data chart data\n * @param {string} fields date fields\n * @param {boolean} isDescending boolean values of descending\n * @returns {Object[]} It returns chart data which be sorted.\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n for (var i = 0; i < sortData.length; i++) {\n for (var j = 0; j < fields.length; j++) {\n if (sortData[i][fields[j]] instanceof Date) {\n sortData[i][fields[j]] = sortData[i][fields[j]].getTime();\n }\n }\n }\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/** @private */\nexport function isBreakLabel(label) {\n return label.indexOf('<br>') !== -1;\n}\n/** @private */\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x)) {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/** @private */\nexport function rotateTextSize(font, text, angle, chart) {\n var transformValue = chart.element.style.transform;\n if (transformValue) {\n chart.element.style.transform = '';\n }\n var renderer = new SvgRenderer(chart.element.id);\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n var options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('<br>');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n var htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw && !chart.stockChart) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font, chart.themeStyle.axisLabelFont).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n chart.svgObject.appendChild(htmlObject);\n var box = htmlObject.getBoundingClientRect();\n if (transformValue) {\n chart.element.style.transform = transformValue;\n }\n remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw && !chart.stockChart) {\n remove(chart.svgObject);\n }\n if (chart.enableCanvas) {\n var textWidth = measureText(text, font, chart.themeStyle.axisLabelFont).width;\n var textHeight = measureText(text, font, chart.themeStyle.axisLabelFont).height;\n var angleInRadians = (angle * Math.PI) / 180; // Convert the rotation angle to radians\n var rotatedTextWidth = Math.abs(Math.cos(angleInRadians) * textWidth) + Math.abs(Math.sin(angleInRadians) * textHeight);\n var rotatedTextHeight = Math.abs(Math.sin(angleInRadians) * textWidth) + Math.abs(Math.cos(angleInRadians) * textHeight);\n return new Size(rotatedTextWidth, rotatedTextHeight);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/** @private */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/** @private */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n tooltip.innerText = text;\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerText = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/** @private */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/** @private */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/** @private */\nexport function logWithIn(value, axis) {\n return axis.valueType === 'Logarithmic' ? logBase(value, axis.logBase) : value;\n}\n/** @private */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/** @private */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/** @private */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/** @private */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/** @private */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/** @private */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/** @private */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/** @private */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem\n *\n * @param {ChartLocation[]} a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @param {ChartLocation[]} b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @returns {boolean} if there is any intersection between the 2 polygons, false otherwise\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\n/** @private */\nfunction getAccumulationLegend(locX, locY, r, height, width, mode) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/** @private */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/** @private */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/** @private */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n var isInverse = axis.isChart ? axis.isAxisInverse : axis.isInversed;\n return isInverse ? (1 - result) : result;\n}\n/** @private */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * method to find series, point index by element id\n *\n * @private\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/** @private */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/** @private */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isAxisInverse ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/** @private */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/** @private */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.isAxisOpposedPosition;\n var anchor = chart.enableRtl ? 'end' : isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var pathElement;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n var isRtlEnabled = (chart.enableRtl && !isVertical && !axis.isInversed) || (axis.isInversed && !(chart.enableRtl && !isVertical));\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? (isRtlEnabled ? axis.startLabel : axis.endLabel) : (isRtlEnabled ? axis.endLabel : axis.startLabel), axis.labelStyle, chart.themeStyle.axisLabelFont);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n pathElement = chart.renderer.drawPath({\n 'id': chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i,\n 'fill': chart.themeStyle.crosshairFill, 'width': 2, 'color': chart.themeStyle.crosshairFill,\n 'opacity': 1, 'stroke-dasharray': null, 'd': direction\n }, null);\n parent.appendChild(pathElement);\n if (chart.theme === 'Fluent' || chart.theme === 'FluentDark') {\n var shadowId = chart.element.id + '_shadow';\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n var shadow = '<filter id=\"' + shadowId + '\" height=\"130%\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"3\"/>';\n shadow += '<feOffset dx=\"3\" dy=\"3\" result=\"offsetblur\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"0.5\"/>';\n shadow += '</feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge></filter>';\n var defElement = chart.renderer.createDefs();\n defElement.setAttribute('id', chart.element.id + 'SVG_tooltip_definition');\n parent.appendChild(defElement);\n defElement.innerHTML = shadow;\n pathElement.setAttribute('stroke', '#cccccc');\n pathElement.setAttribute('stroke-width', '0.5');\n }\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? (isRtlEnabled ? axis.startLabel : axis.endLabel) : (isRtlEnabled ? axis.endLabel : axis.startLabel)), { color: chart.themeStyle.crosshairLabelFont.color, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabelFont.color, parent, null, null, null, null, null, null, null, null, null, null, chart.themeStyle.crosshairLabelFont);\n }\n return parent;\n}\n/** @private */\nexport function findCrosshairDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY) {\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY);\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n//Within bounds\n/** @private */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/** @private */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series, isCanvas) {\n if (isCanvas === void 0) { isCanvas = false; }\n var rect = series.clipRect;\n if (isCanvas && (series.type === 'Polar' || series.type === 'Radar')) {\n if (series.drawType === 'Scatter') {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x / 2;\n rect.y = series.yAxis.rect.y / 2;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n else {\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n}\n/** @private */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/** @private */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/** @private */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n var stackingGroups = [];\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n if (series.type.indexOf('Stacking') > -1 && stackingGroups.indexOf(series.stackingGroup) === -1) {\n stackingGroups.push(series.stackingGroup);\n }\n xValues = series.points.map(function (point) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - 25920000) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = series.type.indexOf('Stacking') > -1 && axis.valueType == \"Category\" ? stackingGroups.length : value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/** @private */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Animation Effect Calculation Started Here\n *\n * @param {number} currentTime currentTime\n * @param {number} startValue startValue of the animation\n * @param {number} endValue endValue of the animation\n * @param {number} duration duration of the animation\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animation Effect Calculation End\n *\n * @private\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n element.style.visibility = 'hidden';\n var transform = element.getAttribute('transform');\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate(' + centerX\n + ' ' + centerY + ') scale(' + height + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n element.style.visibility = '';\n element.setAttribute('transform', transform ? transform : '');\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animate the rect element.\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n //name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n }\n });\n}\n/**\n * Animation after legend click a path.\n *\n * @param {Element} element element to be animated\n * @param {string} direction current direction of the path\n * @param {boolean} redraw chart redraw\n * @param {string} previousDirection previous direction of the path\n * @param {number} animateDuration animateDuration of the path\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (animateDuration) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else if (startPath[0] === '') {\n currentDireciton = '';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * To append the clip rect element.\n *\n * @param {boolean} redraw chart redraw value\n * @param {BaseAttibutes} options element options\n * @param {SvgRenderer} renderer svg renderer values\n * @param {string} clipPath clipPath of the element\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('<br>') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.themeStyle.axisLabelFont) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.enableRtl, chart.themeStyle.axisLabelFont)) : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n *\n * @returns {boolean} It returns true if the axis range is set otherwise false.\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * To check whether the axis is zoomed or not.\n *\n * @param {Axis} axis axis model\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculate desired interval for the axis.\n *\n * @returns {void} It returns desired interval count.\n * @private\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animation for template\n *\n * @private\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n }\n });\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n var eq = 72;\n var xVal;\n var yVal;\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Plus':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'RangeStepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n var y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/** @private */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = templateComplier(template);\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/** @private */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/** @private */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n if (point.index === 0) {\n chart.dataLabelCollections = []; // clear old datalabel bounds for react callback\n }\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/** @private */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn = getTemplateFunction(content);\n var templateElement;\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) :\n { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = (point && series) ? chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw) : reactCallback;\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/** @private */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/** @private */\nexport function measureElementRect(element, redraw, isReactCallback) {\n if (redraw === void 0) { redraw = false; }\n if (!isReactCallback) { // If the element is already in DOM, no need to append in the body.\n document.body.appendChild(element);\n }\n var bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else if (!isReactCallback) { // for react chart data label template - (callback function)\n removeElement(element.id);\n }\n return bounds;\n}\n/** @private */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/** @private */\nexport function getPoint(x, y, xAxis, yAxis, isInverted) {\n x = ((xAxis.valueType === 'Logarithmic') ?\n logBase(((x > 0) ? x : Math.pow(xAxis.logBase, xAxis.visibleRange.min)), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ?\n logBase(((y > 0) ? y : Math.pow(yAxis.logBase, yAxis.visibleRange.min)), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/** @private */\nexport function appendElement(child, parent, redraw, animate, x, y) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element.\n *\n * @param {boolean} isCanvas canvas mode value\n * @param {Element} parent parent element\n * @param {Element} childElement childElement element\n * @param {boolean} redraw chart redraw value\n * @param {boolean} isAnimate animation value\n * @param {string} x x position\n * @param {string} y y position\n * @param {ChartLocation} start start location value\n * @param {string} direction direction of the element\n * @param {boolean} forceAnimate forceAnimate\n * @param {boolean} isRect isRect\n * @param {Rect} previousRect previousRect\n * @param {number} animateDuration duration of the animation\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration, scatterElement) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (scatterElement === void 0) { scatterElement = false; }\n if (isCanvas) {\n return null;\n }\n var existChild = scatterElement ? null : parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = animateDuration ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n animateRedrawElement(child, duration, start, end, x, y);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/** @private */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/** @private */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/** @private */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.marker.dataLabel.format ? series.marker.dataLabel.format : series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if ((labelFormat || chart.useGroupingSeparator) && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/** @private */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/** @private */\nexport function isCollide(rect, collections, clipRect) {\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n var isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/** @private */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/** @private */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/** @private */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/** @private */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/** @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/** @private */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/** @private */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n var element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n // eslint-disable-next-line security/detect-unsafe-regex\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/** @private */\nexport function checkColorFormat(color) {\n // eslint-disable-next-line security/detect-unsafe-regex\n return /(rgba?\\((?:\\d{1,3}[,)]){3}(?:\\d+\\.\\d+\\))?)|(^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$)/gmi.test(color);\n}\n/** @private */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/** @private */\nexport function applyZLight(color, value) {\n var RGB = convertHexToColor(color);\n RGB.r = parseInt(Math.floor(RGB.r * value).toString(), 10);\n RGB.g = parseInt(Math.floor(RGB.g * value).toString(), 10);\n RGB.b = parseInt(Math.floor(RGB.b * value).toString(), 10);\n return '#' + componentToHex(RGB.r).toUpperCase() + componentToHex(RGB.g).toUpperCase() + componentToHex(RGB.b).toUpperCase();\n}\n/** @private */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/** @private */\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width * (3 / 4))) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width * (3 / 4))) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n case 'SplineRangeArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut':\n options.stroke = 'transparent';\n // eslint-disable-next-line no-case-declarations\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width, shape);\n merge(options, { 'd': dir });\n break;\n }\n return { renderOption: options };\n}\n/** @private */\nexport function textTrim(maxWidth, text, font, isRtlEnabled, themeFontStyle) {\n var label = text;\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = isRtlEnabled ? '...' + text.substring(0, i) : text.substring(0, i) + '...';\n size = measureText(label, font, themeFontStyle).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/** @private */\nexport function lineBreakLabelTrim(maxWidth, text, font, themeFontStyle) {\n var labelCollection = [];\n var breakLabels = text.split('<br>');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font, themeFontStyle).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/** @private */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/** @private */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/** @private */\nexport function animateRedrawElement(element, duration, start, end, x, y) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n }\n };\n setStyle(start.x, start.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y);\n }\n });\n}\n/** @private */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas, isDataLabelWrap, themeFontStyle) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var height;\n var dy;\n var label;\n var width = 0;\n var dx;\n var maxWidth = 0;\n if (option.text.length > 1 && isDataLabelWrap) {\n for (var i = 0, len = option.text.length; i < len; i++) {\n maxWidth = Math.max(maxWidth, measureText(option.text[i], font, themeFontStyle).width);\n }\n width = measureText(option.text[0], font, themeFontStyle).width;\n }\n dx = (option.text.length > 1 && isDataLabelWrap) ? (option.x + maxWidth / 2 - width / 2) : option.x;\n renderOptions = {\n 'id': option.id,\n 'x': dx,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeFontStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n var htmlObject = renderer.createText(renderOptions, text, transX, transY);\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font, themeFontStyle).height);\n width = measureText(option.text[i], font, themeFontStyle).width;\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n dx = isDataLabelWrap ? (option.x + maxWidth / 2 - width / 2) : option.x;\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': dx, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration);\n }\n return htmlObject;\n}\n/**\n * Method to calculate the width and height of the chart.\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.availableSize.width;\n containerHeight = chart.stockChart.availableSize.height;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle, range.themeStyle.axisLabelFont).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n if (chart.getModuleName() === 'chart') {\n var scaleX = 1;\n var scaleY = 1;\n if (chart.width === '' || chart.width === null || chart.width === '100%') {\n scaleX = chart.element.getBoundingClientRect().width > 0 ?\n chart.element.getBoundingClientRect().width / chart.availableSize.width : 1;\n scaleY = chart.element.getBoundingClientRect().height > 0 ?\n chart.element.getBoundingClientRect().height / chart.availableSize.height : 1;\n var transformValue = chart.element.style.transform;\n if (transformValue) {\n var scaleValue = parseFloat(transformValue.match(/scale\\((.*?)\\)/)[1]);\n scaleX = scaleValue ? scaleX / scaleValue : scaleX;\n scaleY = scaleValue ? scaleY / scaleValue : scaleY;\n }\n chart.availableSize.width = chart.availableSize.width * scaleX;\n chart.availableSize.height = chart.availableSize.height * scaleY;\n chart.scaleX = scaleX;\n chart.scaleY = scaleY;\n }\n }\n}\n/**\n * To create svg element.\n *\n * @param {Chart} chart chart instance\n */\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n if (chart.enableCanvas) {\n chart.renderer.ctx.direction = chart.enableRtl ? 'rtl' : 'ltr';\n }\n}\n/**\n * To calculate chart title and height.\n *\n * @param {string} title text of the title\n * @param {FontModel} style style of the title\n * @param {number} width width of the title\n */\nexport function getTitle(title, style, width, isRtlEnabled, themeFontStyle) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style, isRtlEnabled, null, null, themeFontStyle);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style, isRtlEnabled, themeFontStyle));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Method to calculate x position of title.\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Method to find new text and element size based on textOverflow.\n */\nexport function textWrap(currentLabel, maximumWidth, font, isRtlEnabled, wrapAnyWhere, clip, themeFontStyle) {\n if (wrapAnyWhere) {\n return (textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle));\n }\n else {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text = void 0;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(label === '' ? '' : ' ' + text), font, themeFontStyle).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, isRtlEnabled, themeFontStyle));\n label = text;\n }\n else {\n labelCollection.push(clip ? text : textTrim(maximumWidth, text, font, isRtlEnabled, themeFontStyle));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, isRtlEnabled, themeFontStyle));\n }\n }\n return labelCollection;\n }\n}\n/**\n * Method to find new text and element size based on textWrap.\n */\nexport function textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle) {\n var size = measureText(currentLabel, font, themeFontStyle).width;\n var labelCollection = [];\n if (size > maximumWidth) {\n var label = '';\n var startIndex = 0;\n var labelIndex = 1;\n while (labelIndex < currentLabel.length) {\n label = currentLabel.substring(startIndex, labelIndex);\n size = measureText(label, font, themeFontStyle).width;\n if (size < maximumWidth) {\n labelIndex++;\n }\n else if (size === maximumWidth) {\n startIndex = labelIndex;\n labelCollection.push(label);\n labelIndex++;\n label = '';\n }\n else if (size > maximumWidth) {\n label = label.slice(0, -1);\n startIndex = labelIndex - 1;\n labelCollection.push(label);\n label = '';\n }\n }\n if (label.length > 0) {\n labelCollection.push(label);\n }\n }\n else {\n labelCollection.push(currentLabel);\n }\n return labelCollection;\n}\n/**\n * Method to support the subscript and superscript value to text.\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Method to reset the blazor templates.\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color === null ? '' : border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.index = index;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar Point3D = /** @class */ (function () {\n /** @private */\n function Point3D(point, series) {\n this.point = point;\n this.series = series;\n }\n return Point3D;\n}());\nexport { Point3D };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n/** @private */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbgColorValue;\n if (Number(value) === colorMap.start) {\n color = colorMap.colors[0];\n }\n else if (Number(value) === colorMap.end) {\n color = colorMap.colors[colorMap.colors.length - 1];\n }\n else {\n rbgColorValue = getGradientColor(Number(value), colorMap);\n color = convertToHexCode(rbgColorValue);\n }\n return color;\n}\n/** @private */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.start;\n var nextOffset = colorMap.end;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.colors.length <= 2) {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n }\n else {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n var a = full / (colorMap.colors.length - 1);\n var b = void 0;\n var c = void 0;\n var length_2 = colorMap.colors.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_2; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.colors[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value <= splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/** @private */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/** @private */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/** @private */\nexport function getTextAnchor(alignment, enableRTL) {\n switch (alignment) {\n case 'Near':\n return enableRTL ? 'end' : 'start';\n case 'Far':\n return enableRTL ? 'start' : 'end';\n default:\n return 'middle';\n }\n}\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","/* eslint-disable jsdoc/require-returns */\n/**\n * Numeric Range.\n *\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /** @private */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /** @private */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /** @private */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /** @private */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n"," //For m3 conversion fixed fileds\r\nconst _calorificValue = 38;\r\nconst _correctionFactor = 1.02264;\r\nconst _kWhConversionFactor = 3.6;\r\n\r\nconst unitConversions = {\r\n // kWh base\r\n kWhToMWh: function (kWh) {\r\n return kWh / 1000;\r\n },\r\n kWhToMW: function (kWh, numberOfDays, isPeakload) {\r\n return kWh / numberOfDays / (!isPeakload? 24:12) / 1000;\r\n },\r\n kWhToTherms: function (kWh) {\r\n return kWh / 29.3071;\r\n },\r\n kWhToThermsPerDay: function (kWh, numberOfDays) {\r\n return kWh / numberOfDays / 29.3071;\r\n },\r\n kWhToMmbtu: function (kWh) {\r\n return kWh / 293.071;\r\n }, \r\n kWhToM3: function (kWh ) {\r\n return kWh * _calorificValue / _correctionFactor * _kWhConversionFactor;\r\n },\r\n \r\n // MWh base\r\n MWhTokWh: function (MWh) {\r\n return MWh * 1000;\r\n },\r\n MWhToMW: function (MWh, numberOfDays, isPeakload) {\r\n return MWh / numberOfDays / (!isPeakload ? 24 : 12);\r\n },\r\n MWhToTherms: function (MWh) {\r\n return MWh / 0.0293071;\r\n },\r\n MWhToThermsPerDay: function (MWh, numberOfDays) {\r\n return MWh / numberOfDays / 0.2931;\r\n },\r\n MWhToMmbtu: function (MWh) {\r\n return MWh / 0.293071;\r\n }, \r\n MWhToM3: function (MWh ) {\r\n return MWh / calorificValue / correctionFactor * kWhConversionFactor * 1000;\r\n },\r\n \r\n\r\n // MW base\r\n MWTokWh: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12) * 1000;\r\n },\r\n MWToMWh: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12);\r\n },\r\n MWToTherms: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12) * 34.12142;\r\n },\r\n MWToThermsPerDay: function (MW) {\r\n return MW / 0.04167 / 0.0293071;\r\n },\r\n MWToMmbtu: function (MW, numberOfDays, isPeakload) {\r\n return MW * numberOfDays * (!isPeakload ? 24 : 12) * 3.412142;\r\n }, \r\n MWToM3: function (MW, numberOfDays) {\r\n return MW / _calorificValue / _correctionFactor * _kWhConversionFactor * 1000 * numberOfDays * 24;\r\n },\r\n \r\n // therms base\r\n thermsTokWh: function (therms) {\r\n return therms * 29.3071;\r\n },\r\n thermsToMWh: function (therms) {\r\n return therms * 0.0293071;\r\n },\r\n thermsToMW: function (therms, numberOfDays, isPeakload) {\r\n return therms / numberOfDays / (!isPeakload ? 24 : 12) / 34.12124;\r\n },\r\n thermsToThermsPerDay: function (therms, numberOfDays) {\r\n return therms / numberOfDays;\r\n },\r\n thermsToMmbtu: function (therms) {\r\n return therms / 10;\r\n }, \r\n thermsToM3: function (therm) {\r\n return therm / _calorificValue / _correctionFactor * _kWhConversionFactor * 29.3071;\r\n },\r\n \r\n\r\n // th/d base\r\n thermsPerDayTokWh: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays * 29.3071;\r\n },\r\n thermsPerDayToMWh: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays * 0.0293071;\r\n },\r\n thermsPerDayToMW: function (thermsPerDay) {\r\n return thermsPerDay * 0.0293071 * 0.04167;\r\n },\r\n thermsPerDayToTherms: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays;\r\n },\r\n thermsPerDayToMmbtu: function (thermsPerDay, numberOfDays) {\r\n return thermsPerDay * numberOfDays * 0.1;\r\n }, \r\n thermsPerDayToM3: function (thermsPerDay, numberOfDays ) {\r\n return thermsPerDay / _calorificValue / _correctionFactor * _kWhConversionFactor * numberOfDays * 29.3071;\r\n },\r\n \r\n\r\n // mmbtu base\r\n mmbtuTokWh: function (mmbtu) {\r\n return mmbtu * 293.071;\r\n },\r\n mmbtuToMWh: function (mmbtu) {\r\n return mmbtu * 0.293071;\r\n },\r\n mmbtuToMW: function (mmbtu, numberOfDays, isPeakload) {\r\n return mmbtu / numberOfDays / (!isPeakload ? 24 : 12) / 3.412124;\r\n },\r\n mmbtuToTherms: function (mmbtu) {\r\n return mmbtu * 10;\r\n },\r\n mmbtuToThermsPerDay: function (mmbtu, numberOfDays) {\r\n return mmbtu / numberOfDays / 0.1;\r\n },\r\n mmbtuToM3: function (mmbtu) {\r\n return mmbtu / _calorificValue / _correctionFactor * _kWhConversionFactor * 293.071;\r\n },\r\n\r\n\r\n m3TokWh: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor;\r\n },\r\n m3ToMWh: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 1000;\r\n },\r\n m3ToMW: function (m3b, numberOfDays ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 1000 / numberOfDays / 24;\r\n },\r\n m3ToTherms: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 29.3071;\r\n },\r\n m3ToThermsPerDay: function (m3b, numberOfDays) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / numberOfDays / 29.3071;\r\n },\r\n m3ToMmbtu: function (m3b ) {\r\n return m3b * _calorificValue * _correctionFactor / _kWhConversionFactor / 293.071;\r\n },\r\n\r\n \r\n\r\n\r\n\r\n\r\n // percentage\r\n percentageToUnit: function (percentage, total) {\r\n return (percentage / 100) * total;\r\n },\r\n unitToPercentage: function (part, total) {\r\n if (total === 0) {\r\n return 0;\r\n }\r\n return (part / total) * 100;\r\n },\r\n\r\n /**\r\n * Converts values from one unit to another\r\n * @param {any} inputValue - the input value in the original unit\r\n * @param {any} inputUnit - the original unit from which the value is being converted to\r\n * @param {any} outputUnit - the unit to which the value is being converted to\r\n * @param {any} numberOfDays - default: 30\r\n * @param {any} totalAvailableValue - default: 0, used for calculating percentages\r\n */\r\n convert: function (inputValue, inputUnit, outputUnit, numberOfDays = 30, isPeakload = false) {\r\n if (inputUnit == \"m\\u00B3\") {\r\n inputUnit = \"m3\";\r\n } \r\n if (outputUnit == \"m\\u00B3\") {\r\n outputUnit = \"m3\";\r\n }\r\n \r\n switch (inputUnit) {\r\n case 'therm':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.thermsTokWh(inputValue);\r\n break;\r\n case 'MWh':\r\n return this.thermsToMWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.thermsToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'th/d':\r\n return this.thermsToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.thermsToMmbtu(inputValue)\r\n break;\r\n case 'm3':\r\n return this.thermsTom3(inputValue);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'kWh':\r\n switch (outputUnit) {\r\n case 'MWh':\r\n return this.kWhToMWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.kWhToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'therm':\r\n return this.kWhToTherms(inputValue);\r\n break;\r\n case 'th/d':\r\n return this.kWhToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.kWhToMmbtu(inputValue);\r\n break;\r\n case 'm3':\r\n return this.kWhTom3(inputValue);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'MWh':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.MWhTokWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.MWhToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'therm':\r\n return this.MWhToTherms(inputValue);\r\n break;\r\n case 'th/d':\r\n return this.MWhToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.MWhToMmbtu(inputValue);\r\n break;\r\n case 'm3':\r\n return this.MWhTom3(inputValue);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'MW':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.MWTokWh(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'MWh':\r\n return this.MWToMWh(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'therm':\r\n return this.MWToTherms(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'th/d':\r\n return this.MWToThermsPerDay(inputValue);\r\n break;\r\n case 'mmbtu':\r\n return this.MWToMmbtu(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'm3':\r\n return this.MWTom3(inputValue, numberOfDays);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'mmbtu':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.mmbtuTokWh(inputValue);\r\n break;\r\n case 'MWh':\r\n return this.mmbtuToMWh(inputValue);\r\n break;\r\n case 'MW':\r\n return this.mmbtuToMW(inputValue, numberOfDays, isPeakload);\r\n break;\r\n case 'th/d':\r\n return this.mmbtuToThermsPerDay(inputValue, numberOfDays);\r\n break;\r\n case 'therm':\r\n return this.mmbtuToTherms(inputValue)\r\n break;\r\n case 'm3':\r\n return this.mmbtuToM3(inputValue)\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'th/d':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.thermsPerDayTokWh(inputValue, numberOfDays);\r\n break;\r\n case 'MWh':\r\n return this.thermsPerDayToMWh(inputValue, numberOfDays);\r\n break;\r\n case 'MW':\r\n return this.thermsPerDayToMW(inputValue);\r\n break;\r\n case 'therm':\r\n return this.thermsPerDayToTherms(inputValue, numberOfDays);\r\n break;\r\n case 'mmbtu':\r\n return this.thermsPerDayToMmbtu(inputValue, numberOfDays);\r\n break;\r\n case 'm3':\r\n return this.thermsPerDayTom3(inputValue, numberOfDays);\r\n break;\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n case 'm3':\r\n switch (outputUnit) {\r\n case 'kWh':\r\n return this.m3TokWh(inputValue );\r\n case 'MWh':\r\n return this.m3ToMWh(inputValue );\r\n case 'MW':\r\n return this.m3ToMW(inputValue, numberOfDays );\r\n case 'therm':\r\n return this.m3ToTherms(inputValue );\r\n case 'th/d':\r\n return this.m3ToThermsPerDay(inputValue, numberOfDays );\r\n case 'mmbtu':\r\n return this.m3ToMmbtu(inputValue );\r\n default:\r\n return inputValue;\r\n }\r\n default:\r\n return inputValue;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport default unitConversions;","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./triggersCard.vue?vue&type=style&index=0&id=4edd8818&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gasRates.vue?vue&type=style&index=0&id=61b07527&prod&lang=css\"","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { ChartLocation, RectOption, isCollide, isOverlap } from '../../common/utils/helper';\nimport { markerAnimate, appendChildElement, getVisiblePoints } from '../../common/utils/helper';\nimport { getLabelText, convertHexToColor, calculateRect, textElement, colorNameToHex } from '../../common/utils/helper';\nimport { measureText, TextOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { textRender } from '../../common/model/constants';\nimport { createTemplate, getFontStyle, getElement, measureElementRect, templateAnimate, withIn, withInBounds } from '../../common/utils/helper';\nimport { createElement, getValue, extend } from '@syncfusion/ej2-base';\nimport { getPoint, getRotatedRectangleCoordinates, isRotatedRectIntersect } from '../../common/utils/helper';\n/**\n * `DataLabel` module is used to render data label for the data point.\n */\nvar DataLabel = /** @class */ (function () {\n /**\n * Constructor for the data label module.\n *\n * @private\n */\n function DataLabel(chart) {\n this.errorHeight = 0;\n this.chart = chart;\n }\n DataLabel.prototype.initPrivateVariables = function (series, marker) {\n var transform = '';\n var clipPath = '';\n var render = series.chart.renderer;\n var index = (series.index === undefined) ? series.category : series.index;\n if (series.chart.chartAreaType === 'Cartesian') {\n transform = 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')';\n clipPath = 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')';\n }\n if (marker.dataLabel.visible && !this.chart.enableCanvas) {\n series.shapeElement = render.createGroup({\n 'id': this.chart.element.id + 'ShapeGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')'\n });\n series.textElement = render.createGroup({\n 'id': this.chart.element.id + 'TextGroup' + index,\n 'transform': transform,\n 'clip-path': clipPath\n });\n series.textElement.setAttribute('aria-hidden', 'true');\n }\n this.markerHeight = ((series.type === 'Scatter' || marker.visible)) ? (marker.height / 2) : 0;\n this.commonId = this.chart.element.id + '_Series_' + index + '_Point_';\n this.calculateErrorHeight(series, series.marker.dataLabel.position);\n this.chartBackground = this.chart.chartArea.background === 'transparent' ?\n this.chart.background || this.chart.themeStyle.background : this.chart.chartArea.background;\n };\n DataLabel.prototype.calculateErrorHeight = function (series, position) {\n if (!series.errorBar.visible) {\n return null;\n }\n else if (series.errorBar.visible && this.chart.chartAreaType !== 'PolarRadar') {\n var direction = series.errorBar.direction;\n var positiveHeight = this.chart.errorBarModule.positiveHeight;\n var negativeHeight = this.chart.errorBarModule.negativeHeight;\n if (this.isRectSeries(series)) {\n if (position === 'Top' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Outer' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Plus') {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n else {\n if (position === 'Top' || position === 'Outer' || position === 'Auto') {\n if ((direction === 'Both' || direction === 'Plus') && (!series.chart.isTransposed)) {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Bottom' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n }\n else {\n this.errorHeight = 0;\n }\n };\n DataLabel.prototype.isRectSeries = function (series) {\n return series.isRectSeries || series.type === 'RangeArea' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea';\n };\n /**\n * Render the data label for series.\n *\n * @returns {void}\n */\n DataLabel.prototype.render = function (series, chart, dataLabel) {\n // initialize the private variable\n this.initPrivateVariables(series, series.marker);\n var rect;\n var labelLocation = { x: 0, y: 0 };\n var rgbValue;\n var contrast;\n var argsData;\n var border;\n var textSize;\n var angle;\n var degree;\n this.inverted = chart.requireInvertedAxis;\n this.yAxisInversed = series.yAxis.isAxisInverse;\n var redraw = chart.redraw;\n var isDataLabelOverlap = false;\n var coordinatesAfterRotation = [];\n var templateId = chart.element.id + '_Series_' +\n (series.index === undefined ? series.category : series.index) + '_DataLabelCollections';\n var element = createElement('div', {\n id: templateId\n });\n var visiblePoints = getVisiblePoints(series);\n var point;\n var rectCenterX;\n var rectCenterY;\n // Data label point iteration started\n for (var i = 0; i < visiblePoints.length; i++) {\n point = visiblePoints[i];\n if (!dataLabel.showZero && ((point.y !== 0) || (point.y === 0 && series.emptyPointSettings.mode === 'Zero'))) {\n return null;\n }\n this.margin = dataLabel.margin;\n var labelText = [];\n var labelLength = void 0;\n var xPos = void 0;\n var yPos = void 0;\n var xValue = void 0;\n var yValue = void 0;\n var isRender = true;\n var clip = series.clipRect;\n var shapeRect = void 0;\n isDataLabelOverlap = false;\n dataLabel.angle = dataLabel.labelIntersectAction === 'Rotate90' ? 90 : dataLabel.angle;\n dataLabel.enableRotation = dataLabel.labelIntersectAction === 'Rotate90' ? true : dataLabel.enableRotation;\n angle = degree = dataLabel.angle;\n border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n if ((point.symbolLocations.length && point.symbolLocations[0]) ||\n (series.type === 'BoxAndWhisker' && point.regions.length)) {\n labelText = getLabelText(point, series, chart);\n labelLength = labelText.length;\n for (var i_1 = 0; i_1 < labelLength; i_1++) {\n argsData = {\n cancel: false, name: textRender, series: series,\n point: point, text: labelText[i_1], border: border,\n color: dataLabel.fill, template: dataLabel.template, font: argsFont, location: labelLocation,\n textSize: measureText(labelText[i_1], dataLabel.font, this.chart.themeStyle.datalabelFont)\n };\n chart.trigger(textRender, argsData);\n if (!argsData.cancel) {\n this.fontBackground = argsData.color;\n this.isDataLabelShape(argsData);\n this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;\n if (argsData.template !== null) {\n this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i_1, redraw);\n }\n else {\n textSize = measureText(argsData.text, dataLabel.font, this.chart.themeStyle.datalabelFont);\n rect = this.calculateTextPosition(point, series, textSize, dataLabel, i_1);\n // To check whether the polar radar chart datalabel intersects the axis label or not\n if (chart.chartAreaType === 'PolarRadar') {\n for (var _i = 0, _a = chart.chartAxisLayoutPanel.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rectRegion = _a[_i];\n if (isOverlap(new Rect(rect.x, rect.y, rect.width, rect.height), rectRegion)) {\n isRender = false;\n break;\n }\n }\n }\n var actualRect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);\n //let notOverlapping: boolean;\n if (dataLabel.enableRotation) {\n var rectCoordinates = this.getRectanglePoints(rect);\n rectCenterX = rect.x + (rect.width / 2);\n rectCenterY = (rect.y + (rect.height / 2));\n coordinatesAfterRotation = getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle);\n isDataLabelOverlap = (dataLabel.labelIntersectAction === 'Rotate90' || angle == -90) ? false : this.isDataLabelOverlapWithChartBound(coordinatesAfterRotation, chart, clip);\n if (!isDataLabelOverlap) {\n this.chart.rotatedDataLabelCollections.push(coordinatesAfterRotation);\n var currentPointIndex = this.chart.rotatedDataLabelCollections.length - 1;\n for (var index = currentPointIndex; index >= 0; index--) {\n if (this.chart.rotatedDataLabelCollections[currentPointIndex] &&\n this.chart.rotatedDataLabelCollections[index - 1] &&\n isRotatedRectIntersect(this.chart.rotatedDataLabelCollections[currentPointIndex], this.chart.rotatedDataLabelCollections[index - 1])) {\n isDataLabelOverlap = true;\n this.chart.rotatedDataLabelCollections[currentPointIndex] = null;\n break;\n }\n }\n }\n }\n else {\n isDataLabelOverlap = isCollide(rect, chart.dataLabelCollections, clip);\n }\n if ((!isDataLabelOverlap || dataLabel.labelIntersectAction === 'None') && isRender) {\n chart.dataLabelCollections.push(actualRect);\n if (this.isShape) {\n shapeRect = chart.renderer.drawRectangle(new RectOption(this.commonId + point.index + '_TextShape_' + i_1, argsData.color, argsData.border, dataLabel.opacity, rect, dataLabel.rx, dataLabel.ry), new Int32Array([clip.x, clip.y]));\n if (series.shapeElement) {\n series.shapeElement.appendChild(shapeRect);\n }\n }\n // Checking the font color\n var backgroundColor = this.fontBackground === 'transparent' ? ((this.chart.theme.indexOf('Dark') > -1 || this.chart.theme === 'HighContrast') ? 'black' : 'white') : this.fontBackground;\n rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n xPos = (rect.x + this.margin.left + textSize.width / 2) + labelLocation.x;\n yPos = (rect.y + this.margin.top + textSize.height * 3 / 4) + labelLocation.y;\n labelLocation = { x: 0, y: 0 };\n if (angle !== 0 && dataLabel.enableRotation) {\n // xValue = xPos - (dataLabel.margin.left) / 2 + (dataLabel.margin.right / 2);\n xValue = rectCenterX;\n //yValue = yPos - (dataLabel.margin.top) / 2 - (textSize.height / dataLabel.margin.top) +\n // (dataLabel.margin.bottom) / 2;\n yValue = rectCenterY;\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n xValue = rect.x;\n yValue = rect.y;\n xPos -= chart.chartAreaType == 'Cartesian' && xPos + (textSize.width / 2) > clip.width ? (xPos + textSize.width / 2) - clip.width : 0;\n yPos -= (yPos + textSize.height > clip.y + clip.height && !(series.type.indexOf('Bar') > -1)) ? (yPos + textSize.height) - (clip.y + clip.height) : 0;\n }\n var textAnchor = dataLabel.labelIntersectAction === 'Rotate90' ? (dataLabel.position == 'Top' ? 'start' : (dataLabel.position == 'Middle' ? 'middle' : 'end')) :\n ((angle == -90 && dataLabel.enableRotation) ? (dataLabel.position == 'Top' ? 'end' : (dataLabel.position == 'Middle' ? 'middle' : 'start')) : 'middle');\n textElement(chart.renderer, new TextOption(this.commonId + point.index + '_Text_' + i_1, xPos, yPos, textAnchor, argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color ||\n ((contrast >= 128 || series.type === 'Hilo' || series.type === 'HiloOpenClose') ? 'black' : 'white'), series.textElement, false, redraw, true, false, series.chart.duration, series.clipRect, null, null, chart.enableCanvas, null, this.chart.themeStyle.datalabelFont);\n }\n }\n }\n }\n }\n }\n if (element.childElementCount) {\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, getElement(chart.element.id + '_Secondary_Element'), element, chart.redraw, \n // eslint-disable-next-line @typescript-eslint/indent\n false, 'x', 'y', null, '', false, false, null, chart.duration);\n }\n else {\n getElement(chart.element.id + '_Secondary_Element').appendChild(element);\n }\n }\n };\n /**\n * Get rect coordinates\n */\n DataLabel.prototype.getRectanglePoints = function (rect) {\n var loc1 = new ChartLocation(rect.x, rect.y);\n var loc2 = new ChartLocation(rect.x + rect.width, rect.y);\n var loc3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var loc4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [loc1, loc2, loc3, loc4];\n };\n DataLabel.prototype.isDataLabelOverlapWithChartBound = function (rectCoordinates, chart, clip) {\n for (var index = 0; index < rectCoordinates.length; index++) {\n if (!withInBounds(rectCoordinates[index].x + clip.x, rectCoordinates[index].y + clip.y, chart.initialClipRect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Render the data label template.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.createDataLabelTemplate = function (parentElement, series, dataLabel, point, data, labelIndex, redraw) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n var clip = series.clipRect;\n var childElement = createTemplate(createElement('div', {\n id: this.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabel_'\n + point.index + (labelIndex ? ('_' + labelIndex) : ''),\n styles: 'position: absolute;background-color:' + data.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'\n }), point.index, data.template, this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);\n this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);\n };\n DataLabel.prototype.calculateTemplateLabelSize = function (parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, isReactCallback) {\n var elementRect = measureElementRect(childElement, redraw, isReactCallback);\n var rect = this.calculateTextPosition(point, series, { width: elementRect.width, height: elementRect.height }, dataLabel, labelIndex);\n var clipWidth = 0;\n var clipHeight = 0;\n var isOverlap = false;\n if (isReactCallback) {\n isOverlap = (elementRect.width === 0 || elementRect.height === 0); // To check the data label already overlap before react callback call\n // clipWidth = ((series.clipRect.x + rect.x) + elementRect.width) > parentElement.clientWidth ?\n // (parentElement.clientWidth - (series.clipRect.x + rect.x)) : 0;\n // clipHeight = (series.points.length - 1 === point.index) ? elementRect.height / 2 : 0;\n }\n childElement.style.left = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.x) + rect.x - clipWidth) + 'px';\n childElement.style.top = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.y) + rect.y + clipHeight) + 'px';\n var backgroundColor = this.fontBackground === 'transparent' ? (this.chart.theme.indexOf('Dark') > -1 ? 'black' : 'white') : this.fontBackground;\n var rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n var vAxis = series.chart.requireInvertedAxis ? series.xAxis : series.yAxis;\n var hAxis = series.chart.requireInvertedAxis ? series.yAxis : series.xAxis;\n childElement.style.color = dataLabel.font.color ||\n ((Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000)) >= 128 ? 'black' : 'white');\n if (childElement.childElementCount && !isOverlap && (!isCollide(rect, this.chart.dataLabelCollections, clip) ||\n dataLabel.labelIntersectAction === 'None') && (series.seriesType !== 'XY' || point.yValue === undefined ||\n withIn(point.yValue, series.yAxis.visibleRange) || (series.type.indexOf('Stacking') > -1) ||\n (series.type.indexOf('100') > -1 && withIn(series.stackedValues.endValues[point.index], series.yAxis.visibleRange))) &&\n withIn(point.xValue, series.xAxis.visibleRange) && parseFloat(childElement.style.top) >= vAxis.rect.y &&\n parseFloat(childElement.style.left) >= hAxis.rect.x &&\n parseFloat(childElement.style.top) <= vAxis.rect.y + vAxis.rect.height &&\n parseFloat(childElement.style.left) <= hAxis.rect.x + hAxis.rect.width) {\n this.chart.dataLabelCollections.push(new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height));\n appendChildElement(this.chart.enableCanvas, parentElement, childElement, redraw, true, 'left', 'top');\n if (series.animation.enable && this.chart.animateSeries && !this.chart.enableCanvas) {\n this.doDataLabelAnimation(series, childElement);\n }\n else if (this.chart.enableCanvas) {\n parentElement.appendChild(childElement);\n }\n }\n };\n DataLabel.prototype.calculateTextPosition = function (point, series, textSize, dataLabel, labelIndex) {\n var labelRegion = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var location;\n location = this.getLabelLocation(point, series, textSize, labelIndex);\n var padding = 5;\n var clipRect = series.clipRect;\n // calculating alignment\n if (!this.chart.requireInvertedAxis || !this.isRectSeries(series) || series.type === 'BoxAndWhisker') {\n this.locationX = location.x;\n var alignmentValue = textSize.height + (this.borderWidth * 2) + this.markerHeight +\n this.margin.bottom + this.margin.top + padding;\n location.x = (dataLabel.position === 'Auto') ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, this.isRectSeries(series) ? point.yValue < 0 : false);\n // calculating position\n location.y = (!this.isRectSeries(series) || series.type === 'BoxAndWhisker') ?\n this.calculatePathPosition(location.y, dataLabel.position, series, point, textSize, labelIndex) :\n this.calculateRectPosition(location.y, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n if (this.isRectSeries(series) && this.chart.chartAreaType === 'PolarRadar') {\n location = this.calculatePolarRectPosition(location, dataLabel.position, series, point, textSize, labelIndex, dataLabel.alignment, alignmentValue);\n }\n }\n else {\n this.locationY = location.y;\n var alignmentValue = textSize.width + this.borderWidth + this.margin.left + this.margin.right - padding;\n location.x = dataLabel.position === 'Auto' ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, point.yValue < 0);\n location.x = this.calculateRectPosition(location.x, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n }\n var rect = calculateRect(location, textSize, this.margin);\n // Checking the condition whether data Label has been exist the clip rect\n if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&\n !((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||\n (rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {\n rect.x = rect.x < 0 ? padding : rect.x;\n rect.y = (rect.y < 0) && !(dataLabel.labelIntersectAction === 'None') ? padding : rect.y;\n rect.x -= (rect.x + rect.width) > (clipRect.x + clipRect.width) ? (rect.x + rect.width)\n - (clipRect.x + clipRect.width) + padding : 0;\n rect.y -= (rect.y + rect.height) > (clipRect.y + clipRect.height) ? (rect.y + rect.height)\n - (clipRect.y + clipRect.height) + padding : 0;\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n }\n var dataLabelOutRegion;\n if (this.inverted && series.isRectSeries && (rect.x + rect.width > labelRegion.x + labelRegion.width)) {\n dataLabelOutRegion = true;\n }\n this.fontBackground = dataLabelOutRegion ? this.chartBackground : this.fontBackground;\n return rect;\n };\n // Calculation label location for polar column draw types\n DataLabel.prototype.calculatePolarRectPosition = function (location, position, series, point, size, labelIndex, alignment, alignmentValue) {\n var padding = 5;\n var columnRadius;\n var chartWidth = this.chart.availableSize.width;\n var alignmentSign = (alignment === 'Center') ? 0 : (alignment === 'Far' ? 1 : -1);\n var angle = (point.regionData.startAngle - 0.5 * Math.PI) + (point.regionData.endAngle - point.regionData.startAngle) / 2;\n if (labelIndex === 0) {\n columnRadius = point.regionData.radius < point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n else {\n columnRadius = point.regionData.radius > point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n if (series.drawType.indexOf('Stacking') > -1) {\n position = position === 'Outer' ? 'Top' : position;\n }\n else if (series.drawType.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n if (position === 'Outer') {\n columnRadius = labelIndex === 0 ? columnRadius + 2 * padding + this.markerHeight :\n columnRadius - 2 * padding - this.markerHeight;\n }\n else if (position === 'Middle') {\n columnRadius = columnRadius / 2 + padding;\n if (series.drawType === 'StackingColumn') {\n columnRadius = point.regionData.innerRadius + ((point.regionData.radius - point.regionData.innerRadius) / 2)\n + padding - (size.height / 2);\n }\n }\n else if (position === 'Top') {\n columnRadius = labelIndex === 0 ? columnRadius - 2 * padding - this.markerHeight :\n columnRadius + 2 * padding + this.markerHeight;\n }\n else if (position === 'Bottom') {\n columnRadius = 2 * padding;\n columnRadius += (series.drawType === 'StackingColumn') ? (point.regionData.innerRadius + this.markerHeight) : 0;\n }\n else {\n if (labelIndex === 0) {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius - padding :\n series.drawType === 'StackingColumn' ? columnRadius - 2 * padding : columnRadius + 2 * padding;\n }\n else {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius + padding : columnRadius - 2 * padding;\n }\n }\n columnRadius += (alignmentValue * alignmentSign);\n location.x = series.clipRect.width / 2 + series.clipRect.x + columnRadius * Math.cos(angle);\n // To change x location based on text anchor for column and stackingcolumn chart\n if (series.drawType === 'StackingColumn') {\n location.x = location.x < chartWidth / 2 ? location.x + size.width / 2 :\n (location.x > chartWidth / 2 ? location.x - size.width / 2 : location.x);\n }\n else if (series.drawType === 'Column') {\n location.x = location.x < chartWidth / 2 ? location.x - size.width / 2 :\n (location.x > chartWidth / 2 ? location.x + size.width / 2 : location.x);\n }\n location.y = series.clipRect.height / 2 + series.clipRect.y + columnRadius * Math.sin(angle);\n return location;\n };\n /**\n * Get the label location\n */\n DataLabel.prototype.getLabelLocation = function (point, series, textSize, labelIndex) {\n var location = new ChartLocation(0, 0);\n var labelRegion = (series.type === 'Candle' && labelIndex > 1) ? point.regions[1] : point.regions[0];\n if (series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n var isInverted = series.chart.requireInvertedAxis;\n if (series.type === 'BoxAndWhisker') {\n this.markerHeight = 0;\n switch (labelIndex) {\n case 0:\n location = getPoint(point.xValue, point.median, xAxis, yAxis, isInverted);\n break;\n case 1:\n location = getPoint(point.xValue, point.maximum, xAxis, yAxis, isInverted);\n break;\n case 2:\n location = getPoint(point.xValue, point.minimum, xAxis, yAxis, isInverted);\n break;\n case 3:\n location = getPoint(point.xValue, point.upperQuartile, xAxis, yAxis, isInverted);\n break;\n case 4:\n location = getPoint(point.xValue, point.lowerQuartile, xAxis, yAxis, isInverted);\n break;\n default: {\n location = getPoint(point.xValue, point.outliers[labelIndex - 5], xAxis, yAxis, isInverted);\n this.markerHeight = series.marker.height / 2;\n break;\n }\n }\n if (isInverted) {\n location.y = point.regions[0].y + (point.regions[0].height / 2);\n }\n else {\n location.x = point.regions[0].x + (point.regions[0].width / 2);\n }\n }\n else if (labelIndex === 0 || labelIndex === 1) {\n location = new ChartLocation(point.symbolLocations[0].x, point.symbolLocations[0].y);\n }\n else if ((labelIndex === 2 || labelIndex === 3) && series.type === 'Candle') {\n location = new ChartLocation(point.symbolLocations[1].x, point.symbolLocations[1].y);\n }\n else if (isInverted) {\n location = { x: labelRegion.x + (labelRegion.width) / 2, y: labelRegion.y };\n }\n else {\n location = { x: labelRegion.x + labelRegion.width, y: labelRegion.y + (labelRegion.height) / 2 };\n }\n //Aligning the label at the beginning of the tick, when tick size is less than text size\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n if (series.chart.requireInvertedAxis) {\n var height = labelRegion.height;\n location.y = labelRegion.y + height / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n else {\n var width = labelRegion.width;\n location.x = labelRegion.x + width / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n }\n return location;\n };\n DataLabel.prototype.calculateRectPosition = function (labelLocation, rect, isMinus, position, series, textSize, labelIndex, point) {\n if (series.chart.chartAreaType === 'PolarRadar') {\n return null;\n }\n var padding = 5;\n var margin = this.margin;\n var textLength = !this.inverted ? textSize.height : textSize.width;\n var extraSpace = this.borderWidth + textLength / 2 + (position !== 'Outer' && series.type.indexOf('Column') > -1 &&\n (Math.abs(rect.height - textSize.height) < padding) ? 0 : padding);\n if (series.type === 'StackingColumn100' || series.type === 'StackingBar100') {\n position = (position === 'Outer') ? 'Top' : position;\n }\n else if (series.type.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n else if (series.type === 'Waterfall') {\n position = position === 'Auto' ? 'Middle' : position;\n }\n switch (position) {\n case 'Bottom':\n labelLocation = !this.inverted ?\n isMinus ? (labelLocation + (series.type === 'Waterfall' ? (-extraSpace - margin.top - this.markerHeight) : (-rect.height + extraSpace + margin.top))) :\n (labelLocation + rect.height - extraSpace - margin.bottom) :\n isMinus ? (labelLocation + (series.type === 'Waterfall' ? (+extraSpace + margin.left + this.markerHeight) : (+rect.width - extraSpace - margin.left))) :\n (labelLocation - rect.width + extraSpace + margin.right);\n break;\n case 'Middle':\n labelLocation = labelLocation = !this.inverted ?\n (isMinus ? labelLocation - (rect.height / 2) : labelLocation + (rect.height / 2)) :\n (isMinus ? labelLocation + (rect.width / 2) : labelLocation - (rect.width / 2));\n break;\n case 'Auto':\n labelLocation = this.calculateRectActualPosition(labelLocation, rect, isMinus, series, textSize, labelIndex, point);\n break;\n default:\n extraSpace += this.errorHeight;\n labelLocation = this.calculateTopAndOuterPosition(labelLocation, rect, position, series, labelIndex, extraSpace, isMinus);\n break;\n }\n var check = !this.inverted ? (labelLocation < rect.y || labelLocation > rect.y + rect.height) :\n (labelLocation < rect.x || labelLocation > rect.x + rect.width);\n this.fontBackground = check ?\n (this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground)\n : this.fontBackground === 'transparent' ? (point.color || series.interior) : this.fontBackground;\n var seriesLength = series.chart.series.length;\n if (position === 'Outer' && (series.type.indexOf('Stacking') > -1) && ((seriesLength - 1) > series.index)) {\n var nextSeries = void 0;\n var nextSeriesPoint = void 0;\n for (var i = series.index + 1; i < seriesLength; i++) {\n nextSeries = series.chart.series[i];\n nextSeriesPoint = nextSeries.points[point.index];\n if ((nextSeries.type.indexOf('Stacking') > -1) && (nextSeries.type.indexOf('100') === -1)) {\n this.fontBackground = (nextSeriesPoint && ((nextSeriesPoint.yValue < 0 && point.yValue < 0) ||\n (nextSeriesPoint.yValue > 0 && point.yValue > 0))) ? (nextSeriesPoint ? nextSeriesPoint.color :\n nextSeries.interior) : this.fontBackground;\n break;\n }\n }\n }\n return labelLocation;\n };\n DataLabel.prototype.calculatePathPosition = function (labelLocation, position, series, point, size, labelIndex) {\n var padding = 5;\n if ((series.type.indexOf('Area') > -1 && series.type !== 'RangeArea' && series.type !== 'SplineRangeArea' && series.type !== 'RangeStepArea')\n && this.yAxisInversed && series.marker.dataLabel.position !== 'Auto') {\n position = position === 'Top' ? 'Bottom' : position === 'Bottom' ? 'Top' : position;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n switch (position) {\n case 'Top':\n case 'Outer':\n labelLocation = labelLocation - this.markerHeight - this.borderWidth - size.height / 2 - this.margin.bottom - padding -\n this.errorHeight;\n break;\n case 'Bottom':\n labelLocation = labelLocation + this.markerHeight + this.borderWidth + size.height / 2 + this.margin.top + padding +\n this.errorHeight;\n break;\n case 'Auto':\n labelLocation = this.calculatePathActualPosition(labelLocation, this.markerHeight, series, point, size, labelIndex);\n break;\n }\n return labelLocation;\n };\n DataLabel.prototype.isDataLabelShape = function (style) {\n this.isShape = (style.color !== 'transparent' || style.border.width > 0);\n this.borderWidth = style.border.width;\n if (!this.isShape) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n }\n };\n DataLabel.prototype.calculateRectActualPosition = function (labelLocation, rect, isMinus, series, size, labelIndex, point) {\n var location;\n var labelRect;\n var isOverLap = true;\n var position = 0;\n var collection = this.chart.dataLabelCollections;\n var finalPosition = series.type.indexOf('Range') !== -1 || series.type === 'Hilo' ? 2 : 4;\n while (isOverLap && position < finalPosition) {\n var actualPosition = this.getPosition(position);\n if (series.type.indexOf('Stacking') > -1 && actualPosition === 'Outer') {\n actualPosition = 'Top';\n position++;\n }\n location = this.calculateRectPosition(labelLocation, rect, isMinus, actualPosition, series, size, labelIndex, point);\n if (!this.inverted) {\n labelRect = calculateRect(new ChartLocation(this.locationX, location), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect) || labelRect.y > series.clipRect.height;\n }\n else {\n labelRect = calculateRect(new ChartLocation(location, this.locationY), size, this.margin);\n isOverLap = labelRect.x < 0 || isCollide(labelRect, collection, series.clipRect) ||\n labelRect.x + labelRect.width > series.clipRect.width;\n }\n position++;\n }\n return location;\n };\n // alignment calculation assigned here\n DataLabel.prototype.calculateAlignment = function (value, labelLocation, alignment, isMinus) {\n switch (alignment) {\n case 'Far':\n labelLocation = !this.inverted ? (isMinus ? labelLocation + value : labelLocation - value) :\n (isMinus ? labelLocation - value : labelLocation + value);\n break;\n case 'Near':\n labelLocation = !this.inverted ? (isMinus ? labelLocation - value : labelLocation + value) :\n (isMinus ? labelLocation + value : labelLocation - value);\n break;\n // eslint-disable-next-line no-self-assign\n case 'Center':\n labelLocation = labelLocation;\n break;\n }\n return labelLocation;\n };\n //calculation for top and outer position of datalabel for rect series\n DataLabel.prototype.calculateTopAndOuterPosition = function (location, rect, position, series, index, extraSpace, isMinus) {\n var margin = this.margin;\n var top;\n switch (series.type) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n break;\n case 'Candle':\n top = (index === 0 || index === 2) && !this.yAxisInversed\n || (index === 1 || index === 3) && this.yAxisInversed;\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top, index > 1);\n break;\n case 'HiloOpenClose':\n if (index <= 1) {\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n }\n else {\n if (this.yAxisInversed) {\n location = !this.inverted ? location + extraSpace + margin.top : location - extraSpace - margin.right;\n }\n else {\n location = !this.inverted ? location - extraSpace - margin.bottom : location + extraSpace + margin.left;\n }\n }\n break;\n default:\n if ((isMinus && position === 'Top') || (!isMinus && position === 'Outer')) {\n location = !this.inverted ? location + (isMinus && series.type === 'Waterfall' ? (-rect.height + extraSpace + margin.bottom) : (-extraSpace - margin.bottom - this.markerHeight)) :\n location + (isMinus && series.type === 'Waterfall' ? (+rect.width - extraSpace - margin.left) : (+extraSpace + margin.left + this.markerHeight));\n }\n else {\n location = !this.inverted ? location + (isMinus && series.type === 'Waterfall' ? (-rect.height - extraSpace - margin.top) : (+extraSpace + margin.top + this.markerHeight)) :\n location + (isMinus && series.type === 'Waterfall' ? (+rect.width + extraSpace + margin.top) : (-extraSpace - margin.right - this.markerHeight));\n }\n break;\n }\n return location;\n };\n /**\n * Updates the label location\n */\n DataLabel.prototype.updateLabelLocation = function (position, location, extraSpace, margin, rect, top, inside) {\n if (inside === void 0) { inside = false; }\n if (!this.inverted) {\n if (top) {\n location = (position === 'Outer' && !inside) ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.top + this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location + rect.height + extraSpace + margin.top + this.markerHeight :\n location + rect.height - extraSpace - margin.bottom - this.markerHeight;\n }\n }\n else {\n if (top) {\n location = (position === 'Outer' && !inside) ? location + extraSpace + margin.left + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location - rect.width - extraSpace - margin.right - this.markerHeight :\n location - rect.width + extraSpace + margin.left + this.markerHeight;\n }\n }\n return location;\n };\n DataLabel.prototype.calculatePathActualPosition = function (y, markerSize, series, point, size, labelIndex) {\n var points = series.points;\n var index = point.index;\n var yValue = points[index].yValue;\n var position;\n var nextPoint = points.length - 1 > index ? points[index + 1] : null;\n var previousPoint = index > 0 ? points[index - 1] : null;\n var yLocation;\n var isOverLap = true;\n var labelRect;\n var isBottom;\n var positionIndex;\n var collection = this.chart.dataLabelCollections;\n if (series.type === 'Bubble') {\n position = 'Top';\n }\n else if (series.type.indexOf('Step') > -1) {\n position = 'Top';\n if (index) {\n position = (!previousPoint || !previousPoint.visible || (yValue > previousPoint.yValue !== this.yAxisInversed)\n || yValue === previousPoint.yValue) ? 'Top' : 'Bottom';\n }\n }\n else if (series.type === 'BoxAndWhisker') {\n if (labelIndex === 1 || labelIndex === 3 || labelIndex > 4) {\n position = series.yAxis.isAxisInverse ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isAxisInverse ? 'Top' : 'Bottom';\n }\n else {\n isOverLap = false;\n position = 'Middle';\n yLocation = this.calculatePathPosition(y, position, series, point, size, labelIndex);\n }\n }\n else {\n if (index === 0) {\n position = (!nextPoint || !nextPoint.visible || yValue > nextPoint.yValue ||\n (yValue < nextPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else if (index === points.length - 1) {\n position = (!previousPoint || !previousPoint.visible || yValue > previousPoint.yValue ||\n (yValue < previousPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else {\n if (!nextPoint.visible && !(previousPoint && previousPoint.visible)) {\n position = 'Top';\n }\n else if (!nextPoint.visible || !previousPoint) {\n position = (nextPoint.yValue > yValue || (previousPoint && previousPoint.yValue > yValue)) ?\n 'Bottom' : 'Top';\n }\n else {\n var slope = (nextPoint.yValue - previousPoint.yValue) / 2;\n var intersectY = (slope * index) + (nextPoint.yValue - (slope * (index + 1)));\n position = !this.yAxisInversed ? intersectY < yValue ? 'Top' : 'Bottom' :\n intersectY < yValue ? 'Bottom' : 'Top';\n }\n }\n }\n isBottom = position === 'Bottom';\n positionIndex = ['Outer', 'Top', 'Bottom', 'Middle', 'Auto'].indexOf(position);\n while (isOverLap && positionIndex < 4) {\n yLocation = this.calculatePathPosition(y, this.getPosition(positionIndex), series, point, size, labelIndex);\n labelRect = calculateRect(new ChartLocation(this.locationX, yLocation), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect)\n || (labelRect.y + labelRect.height) > series.clipRect.height;\n positionIndex = isBottom ? positionIndex - 1 : positionIndex + 1;\n isBottom = false;\n }\n return yLocation;\n };\n /**\n * Animates the data label.\n *\n * @param {Series} series - Data label of the series gets animated.\n * @returns {void}\n */\n DataLabel.prototype.doDataLabelAnimation = function (series, element) {\n var shapeElements = series.shapeElement.childNodes;\n var textNode = series.textElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var location;\n var length = element ? 1 : textNode.length;\n var tempElement;\n for (var i = 0; i < length; i++) {\n tempElement = textNode[i];\n if (element) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, duration, 'ZoomIn');\n }\n else {\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n if (shapeElements[i]) {\n tempElement = shapeElements[i];\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n }\n }\n }\n };\n DataLabel.prototype.getPosition = function (index) {\n return (['Outer', 'Top', 'Bottom', 'Middle', 'Auto'][index]);\n };\n /**\n * Get module name.\n */\n DataLabel.prototype.getModuleName = function () {\n // Returns the module name\n return 'DataLabel';\n };\n /**\n * To destroy the dataLabel for series.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.destroy = function () {\n // Destroy method performed here\n };\n return DataLabel;\n}());\nexport { DataLabel };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./powerRates.vue?vue&type=style&index=0&id=7c080420&prod&lang=css\"","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable curly */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Chart legend\n */\nimport { remove, Browser, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { LegendOptions, BaseLegend } from '../../common/legend/legend';\nimport { textTrim, removeElement, RectOption, withInBounds, blazorTemplatesReset } from '../../common/utils/helper';\nimport { getUnicodeText } from '../../common/utils/helper';\nimport { measureText, Rect, getElement } from '@syncfusion/ej2-svg-base';\nimport { legendRender, legendClick, regSub, regSup } from '../../common/model/constants';\nimport { textWrap } from '../../common/utils/helper';\n/**\n * `Legend` module is used to render legend for the chart.\n */\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n */\n Legend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on('click', this.click, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n */\n Legend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module\n */\n Legend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n this.move(e);\n if (this.chart.highlightModule && (this.chart.highlightMode !== 'None' || this.chart.legendSettings.enableHighlight)) {\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_', this.legendID + '_g_'];\n var targetId = e.target.id;\n var index = void 0;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n index = parseInt(targetId.split(id)[1], 10);\n this.chart.highlightModule.legendSelection(this.chart, index, e.target, e.type);\n break;\n }\n }\n // this.click(e);\n }\n }\n };\n /**\n * To handle mosue end for legend module\n */\n Legend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Get the legend options.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (visibleSeriesCollection, chart) {\n this.legendCollections = [];\n var seriesType;\n var fill;\n var dashArray;\n var colors = [];\n this.isRtlEnable = chart.enableRtl;\n this.isReverse = !this.isRtlEnable && chart.legendSettings.reverse;\n if (visibleSeriesCollection.length > 1) {\n this.legend.mode = 'Series';\n }\n for (var _i = 0, visibleSeriesCollection_1 = visibleSeriesCollection; _i < visibleSeriesCollection_1.length; _i++) {\n var series = visibleSeriesCollection_1[_i];\n if (this.legend.mode === 'Series') {\n if (series.category !== 'Indicator') {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n dashArray = !series.marker.visible && (seriesType.indexOf('Line') > -1 && seriesType.indexOf('Area') === -1) ? series.dashArray : '';\n // To set legend color when use pointColorMapping\n fill = (series.pointColorMapping && series.points.length > 0) ?\n (series.points[0].interior ? series.points[0].interior : series.interior) : series.interior;\n this.legendCollections.push(new LegendOptions(series.name, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : series.visible), seriesType, series.legendImageUrl ? series.legendImageUrl : (series.type === 'Scatter' && series.marker.shape === 'Image' ?\n series.marker.imageUrl : ''), series.marker.shape, series.marker.visible, null, null, dashArray));\n }\n }\n else if (this.legend.mode === 'Point') {\n var _loop_1 = function (points) {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n if (this_1.legendCollections.filter(function (i) { return i.text === points.x.toString(); }).length === 0) {\n this_1.legendCollections.push(new LegendOptions(points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?\n this_1.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n };\n var this_1 = this;\n for (var _a = 0, _b = series.points; _a < _b.length; _a++) {\n var points = _b[_a];\n _loop_1(points);\n }\n }\n else if (this.legend.mode === 'Range') {\n for (var _c = 0, _d = series.points; _c < _d.length; _c++) {\n var points = _d[_c];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n var legendLabel = 'Others';\n if (colors.indexOf(fill) < 0) {\n colors.push(fill);\n if (chart.rangeColorSettings.length >= 1 && chart.rangeColorSettings[0].colors.length === 1) {\n for (var _e = 0, _f = chart.rangeColorSettings; _e < _f.length; _e++) {\n var rangeMap = _f[_e];\n if (rangeMap.colors[0] === fill) {\n legendLabel = rangeMap.label;\n }\n }\n this.legendCollections.push(new LegendOptions(legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n }\n }\n }\n else {\n if (this.legendCollections.length === 0 && chart.rangeColorSettings.length > 0) {\n var startLabel = chart.rangeColorSettings[0].start.toString();\n var endLabel = chart.rangeColorSettings[chart.rangeColorSettings.length - 1].end.toString();\n this.legendCollections.push(new LegendOptions(startLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n this.legendCollections.push(new LegendOptions(endLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n if (this.isReverse && chart.legendSettings.mode !== 'Gradient') {\n this.legendCollections.reverse();\n }\n };\n /** @private */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n this.chartRowCount = 1;\n this.rowHeights = [];\n this.columnHeights = [];\n this.pageHeights = [];\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\n var legendOption;\n var extraWidth = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = this.arrowHeight;\n var verticalArrowSpace = this.isVertical && !legend.enablePages ? arrowHeight : 0;\n var titleSpace = this.isTitle && titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleSpace = this.isTitle && this.isVertical && titlePosition !== 'Top' ? this.legendTitleSize.height + this.fivePixel : titleSpace;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.height += (extraHeight);\n legendBounds.width += extraWidth;\n var shapeWidth = legend.shapeWidth;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var rowWidth = 0;\n var legendWidth = 0;\n var columnHeight = 0;\n var columnCount = 0;\n var rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n var render = false;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle, this.chart.themeStyle.legendLabelFont).height, legend.shapeHeight);\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n if (regSub.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSub);\n }\n if (regSup.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSup);\n }\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n markerShape: legendOption.markerShape, name: legendRender, cancel: false\n };\n this.chart.trigger(legendRender, legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.markerShape = legendEventArgs.markerShape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n shapeWidth = legendOption.text ? legend.shapeWidth : 0;\n shapePadding = legendOption.text ? legend.shapePadding : 0;\n if (legendOption.render && legendOption.text) {\n render = true;\n legendWidth = shapeWidth + shapePadding + (legend.maximumLabelWidth ? legend.maximumLabelWidth : legendOption.textSize.width) + (!this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n rowWidth = rowWidth + legendWidth;\n if (!legend.enablePages && !this.isVertical) {\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n this.getLegendHeight(legendOption, legend, legendBounds, rowWidth, this.maxItemHeight, padding);\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace) || this.isVertical) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - (this.isVertical ? 0 : legendWidth)));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = this.isVertical ? 0 : legendWidth;\n rowCount++;\n columnCount = 0;\n columnHeight = verticalArrowSpace;\n //columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n var len = (rowCount > 0 ? (rowCount - 1) : 0);\n this.rowHeights[len] = Math.max((this.rowHeights[len] ? this.rowHeights[len] : 0), legendOption.textSize.height);\n // this.maxItemHeight = Math.max(this.maxItemHeight, legendOption.textSize.height);\n this.columnHeights[columnCount] = (this.columnHeights[columnCount] ? this.columnHeights[columnCount] : 0) + legendOption.textSize.height + (this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n columnCount++;\n }\n }\n columnHeight = Math.max.apply(null, this.columnHeights) + padding + titleSpace;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleSpace);\n this.isPaging = legendBounds.height < columnHeight;\n if (this.isPaging && !legend.enablePages) {\n if (this.isVertical) {\n // eslint-disable-next-line no-self-assign\n columnHeight = columnHeight;\n }\n else {\n columnHeight = (this.maxItemHeight + padding) + padding + (titlePosition === 'Top' ? titleSpace : 0);\n }\n }\n this.totalPages = rowCount;\n if (!this.isPaging && !this.isVertical) {\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n if (render) {\n this.setBounds(Math.max((rowWidth + padding), maximumWidth), columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /** @private */\n Legend.prototype.getLegendHeight = function (legendOption, legend, legendBounds, rowWidth, legendHeight, padding) {\n var legendWidth = legendOption.textSize.width;\n var textPadding = legend.shapePadding + (padding * 2) + legend.shapeWidth;\n switch (legend.textWrap) {\n case 'Wrap':\n case 'AnyWhere':\n if (legendWidth > legend.maximumLabelWidth || legendWidth + rowWidth > legendBounds.width) {\n legendOption.textCollection = textWrap(legendOption.text, (legend.maximumLabelWidth ? Math.min(legend.maximumLabelWidth, (legendBounds.width - textPadding)) : (legendBounds.width - textPadding)), legend.textStyle, this.chart.enableRtl, null, null, this.chart.themeStyle.legendLabelFont);\n }\n else {\n legendOption.textCollection.push(legendOption.text);\n }\n legendOption.textSize.height = (legendHeight * legendOption.textCollection.length);\n break;\n }\n };\n /** @private */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend, rowCount) {\n var padding = this.legend.padding;\n var textWidth = textPadding + (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth : prevLegend.textSize.width);\n var previousBound = prevLegend.location.x + ((!this.isRtlEnable) ? textWidth : -textWidth);\n if (this.isWithinBounds(previousBound, (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth : legendOption.textSize.width) + textPadding - this.itemPadding, rect) || this.isVertical) {\n legendOption.location.x = start.x;\n if (count !== firstLegend)\n this.chartRowCount++;\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + (this.isVertical ? prevLegend.textSize.height : this.rowHeights[(this.chartRowCount - 2)]) + (this.isVertical ? this.itemPadding : padding);\n }\n else {\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n legendOption.location.y = prevLegend.location.y;\n }\n var availwidth = (!this.isRtlEnable) ? (this.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.itemPadding - this.legend.shapeWidth / 2) : (legendOption.location.x - textPadding + this.itemPadding + (this.legend.shapeWidth / 2)) - this.legendBounds.x;\n if (!this.isVertical && this.isPaging && !this.legend.enablePages) {\n availwidth = this.legendBounds.width - legendOption.location.x - this.fivePixel;\n }\n availwidth = this.legend.maximumLabelWidth ? Math.min(this.legend.maximumLabelWidth, availwidth) : availwidth;\n if (this.legend.textOverflow === 'Ellipsis' && this.legend.textWrap === 'Normal') {\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle, this.chart.enableRtl, this.chart.themeStyle.legendLabelFont);\n }\n };\n Legend.prototype.isWithinBounds = function (previousBound, textWidth, rect) {\n if (!this.isRtlEnable) {\n return (previousBound + textWidth) > (rect.x + rect.width + (this.legend.shapeWidth / 2));\n }\n else {\n return (previousBound - textWidth) < (rect.x - (this.legend.shapeWidth / 2));\n }\n };\n /** @private */\n Legend.prototype.LegendClick = function (index, event) {\n var chart = this.chart;\n var seriesIndex = chart.legendSettings.mode === 'Series' ? index : 0;\n var legendIndex = !this.isReverse ? index : (this.legendCollections.length - 1) - index;\n var series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[legendIndex];\n var changeDetection = 'isProtectedOnChange';\n if (chart.legendSettings.mode === 'Series') {\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: series.points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n series.legendShape = legendClickArgs.legendShape;\n if (!legendClickArgs.cancel) {\n if (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n series.chart[changeDetection] = true;\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].visible && chart.series[series.sourceIndex].visible) {\n chart.series[series.sourceIndex].trendlines[series.index].visible = true;\n }\n else {\n chart.series[series.sourceIndex].trendlines[series.index].visible = false;\n }\n }\n else {\n this.changeSeriesVisiblity(series, series.visible);\n }\n legend.visible = series.category === 'TrendLine' ? chart.series[series.sourceIndex].trendlines[series.index].visible :\n (series.visible);\n this.refreshLegendToggle(chart, series);\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event.target, event.type);\n }\n else if (chart.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event.target, event.type);\n }\n series.chart[changeDetection] = false;\n }\n }\n else if (chart.legendSettings.mode === 'Point') {\n var point = series.points[index];\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: [point], name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n point.visible = !point.visible;\n var legendOption = this.legendCollections[index];\n legendOption.visible = point.visible;\n this.refreshLegendToggle(chart, series);\n }\n }\n else if (chart.legendSettings.mode === 'Range') {\n var points = [];\n var legendOption = this.legendCollections[index];\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (legendOption.fill === (point.interior || series.interior)) {\n points.push(point);\n }\n }\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n legendOption.visible = !legendOption.visible;\n for (var _b = 0, points_1 = points; _b < points_1.length; _b++) {\n var point = points_1[_b];\n point.visible = !point.visible;\n }\n this.refreshLegendToggle(chart, series);\n }\n }\n };\n Legend.prototype.refreshLegendToggle = function (chart, series) {\n var selectedDataIndexes = [];\n if (chart.selectionModule) {\n selectedDataIndexes = extend([], chart.selectionModule.selectedDataIndexes, null, true);\n }\n if ((chart.svgObject.childNodes.length > 0) && !chart.enableAnimation && !chart.enableCanvas) {\n while (chart.svgObject.lastChild) {\n chart.svgObject.removeChild(chart.svgObject.lastChild);\n }\n remove(chart.svgObject);\n }\n chart.animateSeries = false;\n chart.redraw = chart.enableAnimation;\n chart.rotatedDataLabelCollections = [];\n removeElement(getElement(chart.element.id + '_Secondary_Element').querySelectorAll('.ejSVGTooltip')[0]);\n blazorTemplatesReset(chart);\n this.redrawSeriesElements(series, chart);\n chart.removeSvg();\n chart.refreshAxis();\n series.refreshAxisLabel();\n this.refreshSeries(chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series_1 = _a[_i];\n if (!isNullOrUndefined(series_1)) {\n chart.markerRender.removeHighlightedMarker(series_1, null, true);\n }\n }\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart });\n if (selectedDataIndexes.length > 0) {\n chart.selectionModule.selectedDataIndexes = selectedDataIndexes;\n chart.selectionModule.redrawSelection(chart, chart.selectionMode);\n }\n if (chart.highlightModule && chart.highlightMode !== 'None' || chart.legendSettings.enableHighlight) {\n chart.highlightModule.redrawSelection(chart, chart.highlightMode);\n }\n chart.redraw = false;\n };\n Legend.prototype.changeSeriesVisiblity = function (series, visibility) {\n series.visible = !visibility;\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis) || (series.category == 'Pareto' && series.type == 'Line')) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n if (series.trendlines.length && series.visible) {\n series.trendlines.forEach(function (trendline) {\n trendline.visible = true;\n });\n }\n };\n Legend.prototype.isSecondaryAxis = function (axis) {\n return (this.chart.axes.indexOf(axis) > -1);\n };\n Legend.prototype.redrawSeriesElements = function (series, chart) {\n if (!chart.redraw) {\n return null;\n }\n removeElement(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) +\n '_DataLabelCollections');\n };\n Legend.prototype.refreshSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Spline') > -1) {\n var isArea = (series.type.indexOf('Area') > -1 || series.drawType.indexOf('Area') > -1);\n var isRange = series.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(series);\n }\n series.position = undefined;\n }\n };\n /**\n * To show the tooltip for the trimmed text in legend.\n *\n * @returns {void}\n */\n Legend.prototype.click = function (event) {\n var _this = this;\n if (!this.chart.legendSettings.visible) {\n return;\n }\n var pageX = this.chart.mouseX;\n var pageY = this.chart.mouseY;\n var legendRegion = [];\n var targetId = event.target.id.indexOf('_chart_legend_g_') > -1 ?\n event.target.firstChild['id'] : event.target.id;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\n for (var _i = 0, legendItemsId_2 = legendItemsId; _i < legendItemsId_2.length; _i++) {\n var id = legendItemsId_2[_i];\n if (targetId.indexOf(id) > -1) {\n seriesIndex = parseInt(targetId.split(id)[1], 10);\n this.LegendClick(seriesIndex, event);\n break;\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n if (this.chart.enableCanvas && this.pagingRegions.length) {\n this.checkWithinBounds(pageX, pageY);\n }\n legendRegion = this.legendRegions.filter(function (region) {\n return (withInBounds(pageX, (pageY + (_this.isPaging ? (_this.currentPageNumber - 1) * _this.translatePage(_this.chart.enableCanvas, null, 1, 2) : 0)), region.rect));\n });\n if (legendRegion.length && this.chart.enableCanvas) {\n this.LegendClick(legendRegion[0].index, event);\n }\n };\n /**\n * To check click position is within legend bounds\n */\n Legend.prototype.checkWithinBounds = function (pageX, pageY) {\n var cRender = this.chart.renderer;\n var bounds = this.legendBounds;\n var borderWidth = this.chart.legendSettings.border.width;\n var canvasRect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n canvasRect.x = canvasRect.x - borderWidth / 2;\n canvasRect.y = canvasRect.y - borderWidth / 2;\n canvasRect.width = canvasRect.width + borderWidth;\n canvasRect.height = canvasRect.height + borderWidth;\n if (withInBounds(pageX, pageY, this.pagingRegions[0])) {\n // pageDown calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n return null;\n }\n };\n Legend.prototype.canvasPageDown = function (cRender, canvasRect, bounds) {\n if (--this.currentPageNumber > 0) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transparent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n ++this.currentPageNumber;\n }\n };\n Legend.prototype.canvasPageUp = function (cRender, canvasRect, bounds) {\n if (++this.currentPageNumber > 0 && this.currentPageNumber <= this.totalNoOfPages) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transpaent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n --this.currentPageNumber;\n }\n };\n /**\n * Get module name\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Legend;\n}(BaseLegend));\nexport { Legend };\n"],"sourceRoot":""}